commit 09a4d385124673b5b9e5714fade818379796e38f Author: hyungi Date: Mon Jul 28 09:53:31 2025 +0900 feat: 초기 프로젝트 설정 및 룰.md 파일 추가 diff --git a/api.hyungi.net/.dockerignore b/api.hyungi.net/.dockerignore new file mode 100644 index 0000000..edd83c0 --- /dev/null +++ b/api.hyungi.net/.dockerignore @@ -0,0 +1,4 @@ +node_modules +npm-debug.log +Dockerfile +.dockerignore \ No newline at end of file diff --git a/api.hyungi.net/.env b/api.hyungi.net/.env new file mode 100644 index 0000000..81ae4f5 --- /dev/null +++ b/api.hyungi.net/.env @@ -0,0 +1,59 @@ +# .env +PORT=3005 + +# MariaDB 컨테이너 초기화용 루트 패스워드 +DB_ROOT_PASSWORD=matxAc-jutty1-ruhsoc + +# MariaDB 접속 정보 +DB_HOST=db_hyungi_net +DB_PORT=3306 +DB_USER=hyungi +DB_PASSWORD=tycdoq-Kawcug-8wesfa +DB_NAME=hyungi + +# ===================================================== +# JWT 설정 (보안 강화) +# ===================================================== +JWT_SECRET=uHlUfU0nWEhkRFfOJSSr468lJzss9uC7 +JWT_REFRESH_SECRET=kL9mN3pQ5rT7vX1zA3dF5hJ7kM9nP2qR4sV6wY8 # 새로 추가 +JWT_EXPIRES_IN=15m +JWT_REFRESH_EXPIRES_IN=7d + +# ===================================================== +# 보안 설정 +# ===================================================== +# 비밀번호 해싱 라운드 +BCRYPT_ROUNDS=10 + +# 로그인 실패 제한 +MAX_LOGIN_ATTEMPTS=5 +LOCK_TIME=15 # 분 단위 + +# ===================================================== +# CORS 설정 +# ===================================================== +ALLOWED_ORIGINS=http://192.168.0.3:3001,http://192.168.0.3,http://192.168.0.3:3000,http://192.168.0.3:25000 + +# ===================================================== +# API 속도 제한 +# ===================================================== +RATE_LIMIT_WINDOW=15 # 분 단위 +RATE_LIMIT_MAX_REQUESTS=100 +LOGIN_RATE_LIMIT_MAX_REQUESTS=5 + +# ===================================================== +# 파일 업로드 설정 +# ===================================================== +MAX_FILE_SIZE=50 # MB 단위 +UPLOAD_PATH=./uploads + +# ===================================================== +# 로깅 설정 +# ===================================================== +LOG_LEVEL=info +LOG_FILE_PATH=./logs + +# ===================================================== +# 환경 설정 +# ===================================================== +NODE_ENV=production \ No newline at end of file diff --git a/api.hyungi.net/Dockerfile b/api.hyungi.net/Dockerfile new file mode 100644 index 0000000..5ce8317 --- /dev/null +++ b/api.hyungi.net/Dockerfile @@ -0,0 +1,33 @@ +# Node.js 공식 이미지 사용 +FROM node:18-alpine + +# 작업 디렉토리 설정 +WORKDIR /usr/src/app + +# 패키지 파일 복사 (캐싱 최적화) +COPY package*.json ./ + +# 프로덕션 의존성만 설치 +RUN npm ci --only=production + +# 앱 소스 복사 +COPY . . + +# 로그 디렉토리 생성 +RUN mkdir -p logs uploads + +# 실행 권한 설정 +RUN chown -R node:node /usr/src/app + +# 보안을 위해 non-root 사용자로 실행 +USER node + +# 포트 노출 +EXPOSE 3005 + +# 헬스체크 추가 +HEALTHCHECK --interval=30s --timeout=3s --start-period=40s --retries=3 \ + CMD node -e "require('http').get('http://localhost:3005/api/health', (res) => { process.exit(res.statusCode === 200 ? 0 : 1); })" + +# 앱 시작 +CMD ["node", "index.js"] \ No newline at end of file diff --git a/api.hyungi.net/controllers/authController.js b/api.hyungi.net/controllers/authController.js new file mode 100644 index 0000000..da020c3 --- /dev/null +++ b/api.hyungi.net/controllers/authController.js @@ -0,0 +1,178 @@ +const { getDb } = require('../dbPool'); +const bcrypt = require('bcryptjs'); +const jwt = require('jsonwebtoken'); + +exports.login = async (req, res) => { + try { + const { username, password } = req.body; + const db = await getDb(); + + const [rows] = await db.query( + 'SELECT * FROM Users WHERE username = ?', + [username] + ); + + if (rows.length === 0) { + return res.status(401).json({ error: '존재하지 않는 사용자입니다.' }); + } + + const user = rows[0]; + const isMatch = await bcrypt.compare(password, user.password); + if (!isMatch) { + return res.status(401).json({ error: '비밀번호가 일치하지 않습니다.' }); + } + + // JWT 토큰 생성 + const token = jwt.sign( + { + user_id: user.user_id, + username: user.username, + name: user.name, + role: user.role, + access_level: user.access_level, + worker_id: user.worker_id + }, + process.env.JWT_SECRET, + { expiresIn: '1d' } + ); + + // 토큰 포함 응답 + return res.status(200).json({ + success: true, + token, + user_id: user.user_id, + username: user.username, + role: user.role + }); + + } catch (err) { + console.error('[로그인 오류]', err); + return res.status(500).json({ + error: '서버 내부 오류', + detail: err.message || String(err) + }); + } +}; + +// ✅ 사용자 등록 기능 추가 +exports.register = async (req, res) => { + try { + const { username, password, name, access_level, worker_id } = req.body; + const db = await getDb(); + + // 필수 필드 검증 + if (!username || !password || !name || !access_level) { + return res.status(400).json({ + success: false, + error: '필수 정보가 누락되었습니다.' + }); + } + + // 중복 아이디 확인 + const [existing] = await db.query( + 'SELECT user_id FROM Users WHERE username = ?', + [username] + ); + + if (existing.length > 0) { + return res.status(409).json({ + success: false, + error: '이미 존재하는 아이디입니다.' + }); + } + + // 비밀번호 해시화 + const hashedPassword = await bcrypt.hash(password, 10); + + // role 설정 (access_level에 따라) + const roleMap = { + 'admin': 'admin', + 'system': 'admin', + 'group_leader': 'leader', + 'support_team': 'support', + 'worker': 'user' + }; + const role = roleMap[access_level] || 'user'; + + // 사용자 등록 + const [result] = await db.query( + `INSERT INTO Users (username, password, name, role, access_level, worker_id) + VALUES (?, ?, ?, ?, ?, ?)`, + [username, hashedPassword, name, role, access_level, worker_id] + ); + + console.log('[사용자 등록 성공]', username); + + return res.status(201).json({ + success: true, + message: '사용자 등록이 완료되었습니다.', + user_id: result.insertId + }); + + } catch (err) { + console.error('[사용자 등록 오류]', err); + return res.status(500).json({ + success: false, + error: '서버 오류가 발생했습니다.', + detail: err.message + }); + } +}; + +// ✅ 사용자 삭제 기능 추가 +exports.deleteUser = async (req, res) => { + try { + const { id } = req.params; + const db = await getDb(); + + // 사용자 존재 확인 + const [user] = await db.query( + 'SELECT user_id FROM Users WHERE user_id = ?', + [id] + ); + + if (user.length === 0) { + return res.status(404).json({ + success: false, + error: '해당 사용자를 찾을 수 없습니다.' + }); + } + + // 사용자 삭제 + await db.query('DELETE FROM Users WHERE user_id = ?', [id]); + + console.log('[사용자 삭제 성공] ID:', id); + + return res.status(200).json({ + success: true, + message: '사용자가 삭제되었습니다.' + }); + + } catch (err) { + console.error('[사용자 삭제 오류]', err); + return res.status(500).json({ + success: false, + error: '서버 오류가 발생했습니다.', + detail: err.message + }); + } +}; + +// 모든 사용자 목록 조회 +exports.getAllUsers = async (req, res) => { + try { + const db = await getDb(); + + // 비밀번호 제외하고 조회 + const [rows] = await db.query( + `SELECT user_id, username, name, role, access_level, worker_id, created_at + FROM Users + ORDER BY created_at DESC` + ); + + res.status(200).json(rows); + } catch (err) { + console.error('[사용자 목록 조회 실패]', err); + res.status(500).json({ error: '서버 오류' }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/cuttingPlanController.js b/api.hyungi.net/controllers/cuttingPlanController.js new file mode 100644 index 0000000..3f55f94 --- /dev/null +++ b/api.hyungi.net/controllers/cuttingPlanController.js @@ -0,0 +1,85 @@ +// controllers/cuttingPlanController.js +const cuttingPlanModel = require('../models/cuttingPlanModel'); + +// 1. 생성 +exports.createCuttingPlan = async (req, res) => { + try { + const planData = req.body; + const lastID = await new Promise((resolve, reject) => { + cuttingPlanModel.create(planData, (err, id) => { + if (err) return reject(err); + resolve(id); + }); + }); + res.json({ success: true, cutting_plan_id: lastID }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 2. 전체 조회 +exports.getAllCuttingPlans = async (req, res) => { + try { + const rows = await new Promise((resolve, reject) => { + cuttingPlanModel.getAll((err, data) => { + if (err) return reject(err); + resolve(data); + }); + }); + res.json(rows); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 3. 단일 조회 +exports.getCuttingPlanById = async (req, res) => { + try { + const cutting_plan_id = parseInt(req.params.cutting_plan_id, 10); + const row = await new Promise((resolve, reject) => { + cuttingPlanModel.getById(cutting_plan_id, (err, data) => { + if (err) return reject(err); + resolve(data); + }); + }); + if (!row) return res.status(404).json({ error: 'CuttingPlan not found' }); + res.json(row); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 4. 수정 +exports.updateCuttingPlan = async (req, res) => { + try { + const cutting_plan_id = parseInt(req.params.cutting_plan_id, 10); + const planData = { ...req.body, cutting_plan_id }; + const changes = await new Promise((resolve, reject) => { + cuttingPlanModel.update(planData, (err, count) => { + if (err) return reject(err); + resolve(count); + }); + }); + if (changes === 0) return res.status(404).json({ error: 'No changes or not found' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 5. 삭제 +exports.removeCuttingPlan = async (req, res) => { + try { + const cutting_plan_id = parseInt(req.params.cutting_plan_id, 10); + const changes = await new Promise((resolve, reject) => { + cuttingPlanModel.remove(cutting_plan_id, (err, count) => { + if (err) return reject(err); + resolve(count); + }); + }); + if (changes === 0) return res.status(404).json({ error: 'CuttingPlan not found' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/dailyIssueReportController.js b/api.hyungi.net/controllers/dailyIssueReportController.js new file mode 100644 index 0000000..281c834 --- /dev/null +++ b/api.hyungi.net/controllers/dailyIssueReportController.js @@ -0,0 +1,110 @@ +const dailyIssueReportModel = require('../models/dailyIssueReportModel'); + +// 1. CREATE: 단일 또는 다중 등록 (worker_id 배열 지원) +exports.createDailyIssueReport = async (req, res) => { + try { + const body = req.body; + + // 기본 필드 + const base = { + date: body.date, + project_id: body.project_id, + start_time: body.start_time, + end_time: body.end_time, + issue_type_id: body.issue_type_id + }; + + if (!base.date || !base.project_id || !base.start_time || !base.end_time || !base.issue_type_id || !body.worker_id) { + return res.status(400).json({ error: '필수 필드 누락' }); + } + + // worker_id 배열화 + const workers = Array.isArray(body.worker_id) ? body.worker_id : [body.worker_id]; + const insertedIds = []; + + for (const wid of workers) { + const payload = { ...base, worker_id: wid }; + + const insertId = await new Promise((resolve, reject) => { + dailyIssueReportModel.create(payload, (err, id) => { + if (err) reject(err); + else resolve(id); + }); + }); + + insertedIds.push(insertId); + } + + res.json({ success: true, issue_report_ids: insertedIds }); + } catch (err) { + console.error('🔥 createDailyIssueReport error:', err); + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 2. READ BY DATE +exports.getDailyIssuesByDate = async (req, res) => { + try { + const { date } = req.query; + const rows = await new Promise((resolve, reject) => { + dailyIssueReportModel.getAllByDate(date, (err, data) => { + if (err) reject(err); + else resolve(data); + }); + }); + res.json(rows); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 3. READ ONE +exports.getDailyIssueById = async (req, res) => { + try { + const { id } = req.params; + const row = await new Promise((resolve, reject) => { + dailyIssueReportModel.getById(id, (err, data) => { + if (err) reject(err); + else resolve(data); + }); + }); + if (!row) return res.status(404).json({ error: 'DailyIssueReport not found' }); + res.json(row); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 4. UPDATE +exports.updateDailyIssue = async (req, res) => { + try { + const { id } = req.params; + const changes = await new Promise((resolve, reject) => { + dailyIssueReportModel.update(id, req.body, (err, affectedRows) => { + if (err) reject(err); + else resolve(affectedRows); + }); + }); + if (changes === 0) return res.status(404).json({ error: 'No changes or not found' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 5. DELETE +exports.removeDailyIssue = async (req, res) => { + try { + const { id } = req.params; + const changes = await new Promise((resolve, reject) => { + dailyIssueReportModel.remove(id, (err, affectedRows) => { + if (err) reject(err); + else resolve(affectedRows); + }); + }); + if (changes === 0) return res.status(404).json({ error: 'DailyIssueReport not found' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/dailyWorkReportController 이전.js b/api.hyungi.net/controllers/dailyWorkReportController 이전.js new file mode 100644 index 0000000..9722f6d --- /dev/null +++ b/api.hyungi.net/controllers/dailyWorkReportController 이전.js @@ -0,0 +1,750 @@ +// controllers/dailyWorkReportController.js - 누적입력 방식 + 모든 기존 기능 포함 +const dailyWorkReportModel = require('../models/dailyWorkReportModel'); + +/** + * 📝 작업보고서 생성 (누적 방식 - 덮어쓰기 없음!) + */ +const createDailyWorkReport = (req, res) => { + const { report_date, worker_id, work_entries } = req.body; + const created_by = req.user?.user_id || req.user?.id; + const created_by_name = req.user?.name || req.user?.username || '알 수 없는 사용자'; + + // 1. 기본 유효성 검사 + if (!report_date || !worker_id || !work_entries) { + return res.status(400).json({ + error: '필수 필드가 누락되었습니다.', + required: ['report_date', 'worker_id', 'work_entries'], + received: { + report_date: !!report_date, + worker_id: !!worker_id, + work_entries: !!work_entries + } + }); + } + + if (!Array.isArray(work_entries) || work_entries.length === 0) { + return res.status(400).json({ + error: '최소 하나의 작업 항목이 필요합니다.', + received_entries: work_entries?.length || 0 + }); + } + + if (!created_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + // 2. 작업 항목 유효성 검사 + for (let i = 0; i < work_entries.length; i++) { + const entry = work_entries[i]; + const requiredFields = ['project_id', 'work_type_id', 'work_status_id', 'work_hours']; + + for (const field of requiredFields) { + if (entry[field] === undefined || entry[field] === null || entry[field] === '') { + return res.status(400).json({ + error: `작업 항목 ${i + 1}의 ${field}가 누락되었습니다.`, + entry_index: i, + missing_field: field + }); + } + } + + // 에러 상태인 경우 에러 타입 필수 + if (entry.work_status_id === 2 && (!entry.error_type_id)) { + return res.status(400).json({ + error: `작업 항목 ${i + 1}이 에러 상태인 경우 error_type_id가 필요합니다.`, + entry_index: i + }); + } + + // 시간 유효성 검사 + const hours = parseFloat(entry.work_hours); + if (isNaN(hours) || hours < 0 || hours > 24) { + return res.status(400).json({ + error: `작업 항목 ${i + 1}의 작업시간이 유효하지 않습니다. (0-24시간)`, + entry_index: i, + received_hours: entry.work_hours + }); + } + } + + // 3. 총 시간 계산 + const total_hours = work_entries.reduce((sum, entry) => sum + (parseFloat(entry.work_hours) || 0), 0); + + // 4. 요청 데이터 구성 + const reportData = { + report_date, + worker_id: parseInt(worker_id), + work_entries, + created_by, + created_by_name, + total_hours, + is_update: false + }; + + console.log('📝 작업보고서 누적 추가 요청:', { + date: report_date, + worker: worker_id, + creator: created_by_name, + creator_id: created_by, + entries: work_entries.length, + total_hours + }); + + // 5. 누적 추가 실행 (덮어쓰기 없음!) + dailyWorkReportModel.createDailyReport(reportData, (err, result) => { + if (err) { + console.error('작업보고서 생성 오류:', err); + return res.status(500).json({ + error: '작업보고서 생성 중 오류가 발생했습니다.', + details: err.message, + timestamp: new Date().toISOString() + }); + } + + console.log('✅ 작업보고서 누적 추가 성공:', result); + res.status(201).json({ + message: '작업보고서가 성공적으로 누적 추가되었습니다.', + report_date, + worker_id, + created_by: created_by_name, + timestamp: new Date().toISOString(), + ...result + }); + }); +}; + +/** + * 📊 누적 현황 조회 (새로운 기능) + */ +const getAccumulatedReports = (req, res) => { + const { date, worker_id } = req.query; + + if (!date || !worker_id) { + return res.status(400).json({ + error: 'date와 worker_id가 필요합니다.', + example: 'date=2024-06-16&worker_id=1' + }); + } + + console.log(`📊 누적 현황 조회: date=${date}, worker_id=${worker_id}`); + + dailyWorkReportModel.getAccumulatedReportsByDate(date, worker_id, (err, data) => { + if (err) { + console.error('누적 현황 조회 오류:', err); + return res.status(500).json({ + error: '누적 현황 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + console.log(`📊 누적 현황 조회 결과: ${data.length}개`); + res.json({ + date, + worker_id, + total_entries: data.length, + accumulated_data: data, + timestamp: new Date().toISOString() + }); + }); +}; + +/** + * 📊 기여자별 요약 조회 (새로운 기능) + */ +const getContributorsSummary = (req, res) => { + const { date, worker_id } = req.query; + + if (!date || !worker_id) { + return res.status(400).json({ + error: 'date와 worker_id가 필요합니다.', + example: 'date=2024-06-16&worker_id=1' + }); + } + + console.log(`📊 기여자별 요약 조회: date=${date}, worker_id=${worker_id}`); + + dailyWorkReportModel.getContributorsByDate(date, worker_id, (err, data) => { + if (err) { + console.error('기여자별 요약 조회 오류:', err); + return res.status(500).json({ + error: '기여자별 요약 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + const totalHours = data.reduce((sum, contributor) => sum + parseFloat(contributor.total_hours || 0), 0); + + console.log(`📊 기여자별 요약: ${data.length}명, 총 ${totalHours}시간`); + res.json({ + date, + worker_id, + contributors: data, + total_contributors: data.length, + grand_total_hours: totalHours, + timestamp: new Date().toISOString() + }); + }); +}; + +/** + * 📊 개인 누적 현황 조회 (새로운 기능) + */ +const getMyAccumulatedData = (req, res) => { + const { date, worker_id } = req.query; + const created_by = req.user?.user_id || req.user?.id; + + if (!date || !worker_id) { + return res.status(400).json({ + error: 'date와 worker_id가 필요합니다.', + example: 'date=2024-06-16&worker_id=1' + }); + } + + if (!created_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + console.log(`📊 개인 누적 현황 조회: date=${date}, worker_id=${worker_id}, created_by=${created_by}`); + + dailyWorkReportModel.getMyAccumulatedHours(date, worker_id, created_by, (err, data) => { + if (err) { + console.error('개인 누적 현황 조회 오류:', err); + return res.status(500).json({ + error: '개인 누적 현황 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + console.log(`📊 개인 누적: ${data.my_entry_count}개 항목, ${data.my_total_hours}시간`); + res.json({ + date, + worker_id, + created_by, + my_data: data, + timestamp: new Date().toISOString() + }); + }); +}; + +/** + * 🗑️ 개별 항목 삭제 (본인 작성분만 - 새로운 기능) + */ +const removeMyEntry = (req, res) => { + const { id } = req.params; + const deleted_by = req.user?.user_id || req.user?.id; + + if (!deleted_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + console.log(`🗑️ 개별 항목 삭제 요청: id=${id}, 삭제자=${deleted_by}`); + + dailyWorkReportModel.removeSpecificEntry(id, deleted_by, (err, result) => { + if (err) { + console.error('개별 항목 삭제 오류:', err); + return res.status(500).json({ + error: '항목 삭제 중 오류가 발생했습니다.', + details: err.message + }); + } + + console.log(`✅ 개별 항목 삭제 완료: id=${id}`); + res.json({ + message: '항목이 성공적으로 삭제되었습니다.', + id: id, + deleted_by, + timestamp: new Date().toISOString(), + ...result + }); + }); +}; + +/** + * 📊 작업보고서 조회 (쿼리 파라미터 기반 - 작성자별 필터링 강화) + */ +const getDailyWorkReports = (req, res) => { + const { date, worker_id, created_by: requested_created_by } = req.query; + const current_user_id = req.user?.user_id || req.user?.id; + + if (!current_user_id) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + // 일반 사용자는 자신이 작성한 것만 볼 수 있음 + const created_by = requested_created_by || current_user_id; + + console.log('📊 작업보고서 조회 요청:', { + date, + worker_id, + requested_created_by, + current_user_id, + final_created_by: created_by + }); + + if (date && created_by) { + // 날짜 + 작성자별 조회 + dailyWorkReportModel.getByDateAndCreator(date, created_by, (err, data) => { + if (err) { + console.error('작업보고서 조회 오류:', err); + return res.status(500).json({ + error: '작업보고서 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + console.log(`📊 날짜+작성자별 조회 결과: ${data.length}개`); + res.json(data); + }); + } else if (date && worker_id) { + // 기존 방식: 날짜 + 작업자별 (하지만 작성자 필터링 추가) + dailyWorkReportModel.getByDateAndWorker(date, worker_id, (err, data) => { + if (err) { + console.error('작업보고서 조회 오류:', err); + return res.status(500).json({ + error: '작업보고서 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + // 본인이 작성한 것만 필터링 + const filteredData = data.filter(report => report.created_by === current_user_id); + console.log(`📊 날짜+작업자별 조회 결과: 전체 ${data.length}개 → 필터링 후 ${filteredData.length}개`); + res.json(filteredData); + }); + } else if (date) { + // 날짜별 조회 (작성자 필터링) + dailyWorkReportModel.getByDate(date, (err, data) => { + if (err) { + console.error('작업보고서 조회 오류:', err); + return res.status(500).json({ + error: '작업보고서 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + // 본인이 작성한 것만 필터링 + const filteredData = data.filter(report => report.created_by === current_user_id); + console.log(`📊 날짜별 조회 결과: 전체 ${data.length}개 → 필터링 후 ${filteredData.length}개`); + res.json(filteredData); + }); + } else { + res.status(400).json({ + error: '날짜(date) 파라미터가 필요합니다.', + example: 'date=2024-06-16', + optional: ['worker_id', 'created_by'] + }); + } +}; + +/** + * 📊 날짜별 작업보고서 조회 (경로 파라미터) + */ +const getDailyWorkReportsByDate = (req, res) => { + const { date } = req.params; + const created_by = req.user?.user_id || req.user?.id; + + if (!created_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + console.log(`📊 날짜별 조회 (경로): date=${date}, created_by=${created_by}`); + + dailyWorkReportModel.getByDate(date, (err, data) => { + if (err) { + console.error('날짜별 작업보고서 조회 오류:', err); + return res.status(500).json({ + error: '작업보고서 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + // 본인이 작성한 것만 필터링 + const filteredData = data.filter(report => report.created_by === created_by); + console.log(`📊 날짜별 조회 결과: 전체 ${data.length}개 → 필터링 후 ${filteredData.length}개`); + res.json(filteredData); + }); +}; + +/** + * 🔍 작업보고서 검색 (페이지네이션 포함) + */ +const searchWorkReports = (req, res) => { + const { start_date, end_date, worker_id, project_id, work_status_id, page = 1, limit = 20 } = req.query; + const created_by = req.user?.user_id || req.user?.id; + + if (!start_date || !end_date) { + return res.status(400).json({ + error: 'start_date와 end_date가 필요합니다.', + example: 'start_date=2024-01-01&end_date=2024-01-31', + optional: ['worker_id', 'project_id', 'work_status_id', 'page', 'limit'] + }); + } + + if (!created_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + const searchParams = { + start_date, + end_date, + worker_id: worker_id ? parseInt(worker_id) : null, + project_id: project_id ? parseInt(project_id) : null, + work_status_id: work_status_id ? parseInt(work_status_id) : null, + created_by, // 작성자 필터링 추가 + page: parseInt(page), + limit: parseInt(limit) + }; + + console.log('🔍 작업보고서 검색 요청:', searchParams); + + dailyWorkReportModel.searchWithDetails(searchParams, (err, data) => { + if (err) { + console.error('작업보고서 검색 오류:', err); + return res.status(500).json({ + error: '작업보고서 검색 중 오류가 발생했습니다.', + details: err.message + }); + } + + console.log(`🔍 검색 결과: ${data.reports?.length || 0}개 (전체: ${data.total || 0}개)`); + res.json(data); + }); +}; + +/** + * 📈 통계 조회 (작성자별 필터링) + */ +const getWorkReportStats = (req, res) => { + const { start_date, end_date } = req.query; + const created_by = req.user?.user_id || req.user?.id; + + if (!start_date || !end_date) { + return res.status(400).json({ + error: 'start_date와 end_date가 필요합니다.', + example: 'start_date=2024-01-01&end_date=2024-01-31' + }); + } + + if (!created_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + console.log(`📈 통계 조회: ${start_date} ~ ${end_date}, 요청자: ${created_by}`); + + dailyWorkReportModel.getStatistics(start_date, end_date, (err, data) => { + if (err) { + console.error('통계 조회 오류:', err); + return res.status(500).json({ + error: '통계 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + res.json({ + ...data, + metadata: { + note: '현재는 전체 통계입니다. 개인별 통계는 추후 구현 예정', + requested_by: created_by, + period: `${start_date} ~ ${end_date}`, + timestamp: new Date().toISOString() + } + }); + }); +}; + +/** + * 📊 일일 근무 요약 조회 + */ +const getDailySummary = (req, res) => { + const { date, worker_id } = req.query; + + if (date) { + console.log(`📊 일일 요약 조회: date=${date}`); + dailyWorkReportModel.getSummaryByDate(date, (err, data) => { + if (err) { + console.error('일일 요약 조회 오류:', err); + return res.status(500).json({ + error: '일일 요약 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + res.json(data); + }); + } else if (worker_id) { + console.log(`📊 작업자별 요약 조회: worker_id=${worker_id}`); + dailyWorkReportModel.getSummaryByWorker(worker_id, (err, data) => { + if (err) { + console.error('작업자별 요약 조회 오류:', err); + return res.status(500).json({ + error: '작업자별 요약 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + res.json(data); + }); + } else { + res.status(400).json({ + error: 'date 또는 worker_id 파라미터가 필요합니다.', + examples: [ + 'date=2024-06-16', + 'worker_id=1' + ] + }); + } +}; + +/** + * 📅 월간 요약 조회 + */ +const getMonthlySummary = (req, res) => { + const { year, month } = req.query; + + if (!year || !month) { + return res.status(400).json({ + error: 'year와 month가 필요합니다.', + example: 'year=2024&month=01', + note: 'month는 01, 02, ..., 12 형식으로 입력하세요.' + }); + } + + console.log(`📅 월간 요약 조회: ${year}-${month}`); + + dailyWorkReportModel.getMonthlySummary(year, month, (err, data) => { + if (err) { + console.error('월간 요약 조회 오류:', err); + return res.status(500).json({ + error: '월간 요약 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + res.json({ + year: parseInt(year), + month: parseInt(month), + summary: data, + total_entries: data.length, + timestamp: new Date().toISOString() + }); + }); +}; + +/** + * ✏️ 작업보고서 수정 + */ +const updateWorkReport = (req, res) => { + const { id } = req.params; + const updateData = req.body; + const updated_by = req.user?.user_id || req.user?.id; + + if (!updated_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + updateData.updated_by = updated_by; + + console.log(`✏️ 작업보고서 수정 요청: id=${id}, 수정자=${updated_by}`); + + dailyWorkReportModel.updateById(id, updateData, (err, affectedRows) => { + if (err) { + console.error('작업보고서 수정 오류:', err); + return res.status(500).json({ + error: '작업보고서 수정 중 오류가 발생했습니다.', + details: err.message + }); + } + + if (affectedRows === 0) { + return res.status(404).json({ + error: '수정할 작업보고서를 찾을 수 없습니다.', + id: id + }); + } + + console.log(`✅ 작업보고서 수정 완료: id=${id}`); + res.json({ + message: '작업보고서가 성공적으로 수정되었습니다.', + id: id, + affected_rows: affectedRows, + updated_by, + timestamp: new Date().toISOString() + }); + }); +}; + +/** + * 🗑️ 특정 작업보고서 삭제 + */ +const removeDailyWorkReport = (req, res) => { + const { id } = req.params; + const deleted_by = req.user?.user_id || req.user?.id; + + if (!deleted_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + console.log(`🗑️ 작업보고서 삭제 요청: id=${id}, 삭제자=${deleted_by}`); + + dailyWorkReportModel.removeById(id, deleted_by, (err, affectedRows) => { + if (err) { + console.error('작업보고서 삭제 오류:', err); + return res.status(500).json({ + error: '작업보고서 삭제 중 오류가 발생했습니다.', + details: err.message + }); + } + + if (affectedRows === 0) { + return res.status(404).json({ + error: '삭제할 작업보고서를 찾을 수 없습니다.', + id: id + }); + } + + console.log(`✅ 작업보고서 삭제 완료: id=${id}`); + res.json({ + message: '작업보고서가 성공적으로 삭제되었습니다.', + id: id, + affected_rows: affectedRows, + deleted_by, + timestamp: new Date().toISOString() + }); + }); +}; + +/** + * 🗑️ 작업자의 특정 날짜 전체 삭제 + */ +const removeDailyWorkReportByDateAndWorker = (req, res) => { + const { date, worker_id } = req.params; + const deleted_by = req.user?.user_id || req.user?.id; + + if (!deleted_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + console.log(`🗑️ 날짜+작업자별 전체 삭제 요청: date=${date}, worker_id=${worker_id}, 삭제자=${deleted_by}`); + + dailyWorkReportModel.removeByDateAndWorker(date, worker_id, deleted_by, (err, affectedRows) => { + if (err) { + console.error('작업보고서 전체 삭제 오류:', err); + return res.status(500).json({ + error: '작업보고서 삭제 중 오류가 발생했습니다.', + details: err.message + }); + } + + if (affectedRows === 0) { + return res.status(404).json({ + error: '삭제할 작업보고서를 찾을 수 없습니다.', + date: date, + worker_id: worker_id + }); + } + + console.log(`✅ 날짜+작업자별 전체 삭제 완료: ${affectedRows}개`); + res.json({ + message: `${date} 날짜의 작업자 ${worker_id} 작업보고서 ${affectedRows}개가 삭제되었습니다.`, + date, + worker_id, + affected_rows: affectedRows, + deleted_by, + timestamp: new Date().toISOString() + }); + }); +}; + +/** + * 📋 마스터 데이터 조회 함수들 + */ +const getWorkTypes = (req, res) => { + console.log('📋 작업 유형 조회 요청'); + dailyWorkReportModel.getAllWorkTypes((err, data) => { + if (err) { + console.error('작업 유형 조회 오류:', err); + return res.status(500).json({ + error: '작업 유형 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + console.log(`📋 작업 유형 조회 결과: ${data.length}개`); + res.json(data); + }); +}; + +const getWorkStatusTypes = (req, res) => { + console.log('📋 업무 상태 유형 조회 요청'); + dailyWorkReportModel.getAllWorkStatusTypes((err, data) => { + if (err) { + console.error('업무 상태 유형 조회 오류:', err); + return res.status(500).json({ + error: '업무 상태 유형 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + console.log(`📋 업무 상태 유형 조회 결과: ${data.length}개`); + res.json(data); + }); +}; + +const getErrorTypes = (req, res) => { + console.log('📋 에러 유형 조회 요청'); + dailyWorkReportModel.getAllErrorTypes((err, data) => { + if (err) { + console.error('에러 유형 조회 오류:', err); + return res.status(500).json({ + error: '에러 유형 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + console.log(`📋 에러 유형 조회 결과: ${data.length}개`); + res.json(data); + }); +}; + +// 모든 컨트롤러 함수 내보내기 (기존 기능 + 누적 기능) +module.exports = { + // 📝 핵심 CRUD 함수들 + createDailyWorkReport, // 누적 추가 (덮어쓰기 없음) + getDailyWorkReports, // 조회 (작성자별 필터링) + getDailyWorkReportsByDate, // 날짜별 조회 + searchWorkReports, // 검색 (페이지네이션) + updateWorkReport, // 수정 + removeDailyWorkReport, // 개별 삭제 + removeDailyWorkReportByDateAndWorker, // 전체 삭제 + + // 🔄 누적 관련 새로운 함수들 + getAccumulatedReports, // 누적 현황 조회 + getContributorsSummary, // 기여자별 요약 + getMyAccumulatedData, // 개인 누적 현황 + removeMyEntry, // 개별 항목 삭제 (본인 것만) + + // 📊 요약 및 통계 함수들 + getDailySummary, // 일일 요약 + getMonthlySummary, // 월간 요약 + getWorkReportStats, // 통계 + + // 📋 마스터 데이터 함수들 + getWorkTypes, // 작업 유형 목록 + getWorkStatusTypes, // 업무 상태 유형 목록 + getErrorTypes // 에러 유형 목록 +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/dailyWorkReportController.js b/api.hyungi.net/controllers/dailyWorkReportController.js new file mode 100644 index 0000000..3d49134 --- /dev/null +++ b/api.hyungi.net/controllers/dailyWorkReportController.js @@ -0,0 +1,789 @@ +// controllers/dailyWorkReportController.js - 권한별 전체 조회 지원 버전 +const dailyWorkReportModel = require('../models/dailyWorkReportModel'); + +/** + * 📝 작업보고서 생성 (누적 방식 - 덮어쓰기 없음!) + */ +const createDailyWorkReport = (req, res) => { + const { report_date, worker_id, work_entries } = req.body; + const created_by = req.user?.user_id || req.user?.id; + const created_by_name = req.user?.name || req.user?.username || '알 수 없는 사용자'; + + // 1. 기본 유효성 검사 + if (!report_date || !worker_id || !work_entries) { + return res.status(400).json({ + error: '필수 필드가 누락되었습니다.', + required: ['report_date', 'worker_id', 'work_entries'], + received: { + report_date: !!report_date, + worker_id: !!worker_id, + work_entries: !!work_entries + } + }); + } + + if (!Array.isArray(work_entries) || work_entries.length === 0) { + return res.status(400).json({ + error: '최소 하나의 작업 항목이 필요합니다.', + received_entries: work_entries?.length || 0 + }); + } + + if (!created_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + // 2. 작업 항목 유효성 검사 + for (let i = 0; i < work_entries.length; i++) { + const entry = work_entries[i]; + const requiredFields = ['project_id', 'work_type_id', 'work_status_id', 'work_hours']; + + for (const field of requiredFields) { + if (entry[field] === undefined || entry[field] === null || entry[field] === '') { + return res.status(400).json({ + error: `작업 항목 ${i + 1}의 ${field}가 누락되었습니다.`, + entry_index: i, + missing_field: field + }); + } + } + + // 에러 상태인 경우 에러 타입 필수 + if (entry.work_status_id === 2 && (!entry.error_type_id)) { + return res.status(400).json({ + error: `작업 항목 ${i + 1}이 에러 상태인 경우 error_type_id가 필요합니다.`, + entry_index: i + }); + } + + // 시간 유효성 검사 + const hours = parseFloat(entry.work_hours); + if (isNaN(hours) || hours < 0 || hours > 24) { + return res.status(400).json({ + error: `작업 항목 ${i + 1}의 작업시간이 유효하지 않습니다. (0-24시간)`, + entry_index: i, + received_hours: entry.work_hours + }); + } + } + + // 3. 총 시간 계산 + const total_hours = work_entries.reduce((sum, entry) => sum + (parseFloat(entry.work_hours) || 0), 0); + + // 4. 요청 데이터 구성 + const reportData = { + report_date, + worker_id: parseInt(worker_id), + work_entries, + created_by, + created_by_name, + total_hours, + is_update: false + }; + + console.log('📝 작업보고서 누적 추가 요청:', { + date: report_date, + worker: worker_id, + creator: created_by_name, + creator_id: created_by, + entries: work_entries.length, + total_hours + }); + + // 5. 누적 추가 실행 (덮어쓰기 없음!) + dailyWorkReportModel.createDailyReport(reportData, (err, result) => { + if (err) { + console.error('작업보고서 생성 오류:', err); + return res.status(500).json({ + error: '작업보고서 생성 중 오류가 발생했습니다.', + details: err.message, + timestamp: new Date().toISOString() + }); + } + + console.log('✅ 작업보고서 누적 추가 성공:', result); + res.status(201).json({ + message: '작업보고서가 성공적으로 누적 추가되었습니다.', + report_date, + worker_id, + created_by: created_by_name, + timestamp: new Date().toISOString(), + ...result + }); + }); +}; + +/** + * 📊 누적 현황 조회 (새로운 기능) + */ +const getAccumulatedReports = (req, res) => { + const { date, worker_id } = req.query; + + if (!date || !worker_id) { + return res.status(400).json({ + error: 'date와 worker_id가 필요합니다.', + example: 'date=2024-06-16&worker_id=1' + }); + } + + console.log(`📊 누적 현황 조회: date=${date}, worker_id=${worker_id}`); + + dailyWorkReportModel.getAccumulatedReportsByDate(date, worker_id, (err, data) => { + if (err) { + console.error('누적 현황 조회 오류:', err); + return res.status(500).json({ + error: '누적 현황 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + console.log(`📊 누적 현황 조회 결과: ${data.length}개`); + res.json({ + date, + worker_id, + total_entries: data.length, + accumulated_data: data, + timestamp: new Date().toISOString() + }); + }); +}; + +/** + * 📊 기여자별 요약 조회 (새로운 기능) + */ +const getContributorsSummary = (req, res) => { + const { date, worker_id } = req.query; + + if (!date || !worker_id) { + return res.status(400).json({ + error: 'date와 worker_id가 필요합니다.', + example: 'date=2024-06-16&worker_id=1' + }); + } + + console.log(`📊 기여자별 요약 조회: date=${date}, worker_id=${worker_id}`); + + dailyWorkReportModel.getContributorsByDate(date, worker_id, (err, data) => { + if (err) { + console.error('기여자별 요약 조회 오류:', err); + return res.status(500).json({ + error: '기여자별 요약 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + const totalHours = data.reduce((sum, contributor) => sum + parseFloat(contributor.total_hours || 0), 0); + + console.log(`📊 기여자별 요약: ${data.length}명, 총 ${totalHours}시간`); + res.json({ + date, + worker_id, + contributors: data, + total_contributors: data.length, + grand_total_hours: totalHours, + timestamp: new Date().toISOString() + }); + }); +}; + +/** + * 📊 개인 누적 현황 조회 (새로운 기능) + */ +const getMyAccumulatedData = (req, res) => { + const { date, worker_id } = req.query; + const created_by = req.user?.user_id || req.user?.id; + + if (!date || !worker_id) { + return res.status(400).json({ + error: 'date와 worker_id가 필요합니다.', + example: 'date=2024-06-16&worker_id=1' + }); + } + + if (!created_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + console.log(`📊 개인 누적 현황 조회: date=${date}, worker_id=${worker_id}, created_by=${created_by}`); + + dailyWorkReportModel.getMyAccumulatedHours(date, worker_id, created_by, (err, data) => { + if (err) { + console.error('개인 누적 현황 조회 오류:', err); + return res.status(500).json({ + error: '개인 누적 현황 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + console.log(`📊 개인 누적: ${data.my_entry_count}개 항목, ${data.my_total_hours}시간`); + res.json({ + date, + worker_id, + created_by, + my_data: data, + timestamp: new Date().toISOString() + }); + }); +}; + +/** + * 🗑️ 개별 항목 삭제 (본인 작성분만 - 새로운 기능) + */ +const removeMyEntry = (req, res) => { + const { id } = req.params; + const deleted_by = req.user?.user_id || req.user?.id; + + if (!deleted_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + console.log(`🗑️ 개별 항목 삭제 요청: id=${id}, 삭제자=${deleted_by}`); + + dailyWorkReportModel.removeSpecificEntry(id, deleted_by, (err, result) => { + if (err) { + console.error('개별 항목 삭제 오류:', err); + return res.status(500).json({ + error: '항목 삭제 중 오류가 발생했습니다.', + details: err.message + }); + } + + console.log(`✅ 개별 항목 삭제 완료: id=${id}`); + res.json({ + message: '항목이 성공적으로 삭제되었습니다.', + id: id, + deleted_by, + timestamp: new Date().toISOString(), + ...result + }); + }); +}; + +/** + * 📊 작업보고서 조회 (권한별 전체 조회 지원 - 핵심 수정!) + */ +const getDailyWorkReports = (req, res) => { + const { date, worker_id, created_by: requested_created_by, view_all, admin, all, no_filter, ignore_created_by } = req.query; + const current_user_id = req.user?.user_id || req.user?.id; + const user_access_level = req.user?.access_level; + + if (!current_user_id) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + // 🎯 권한별 필터링 로직 개선 + const isAdmin = user_access_level === 'system' || user_access_level === 'admin'; + const hasViewAllFlag = view_all === 'true' || admin === 'true' || all === 'true' || + no_filter === 'true' || ignore_created_by === 'true' || + requested_created_by === 'all' || requested_created_by === ''; + + const canViewAll = isAdmin || hasViewAllFlag; + + // 관리자가 아니고 전체 조회 플래그도 없으면 본인 작성분으로 제한 + let final_created_by = null; + if (!canViewAll) { + final_created_by = requested_created_by || current_user_id; + } else if (requested_created_by && requested_created_by !== 'all' && requested_created_by !== '') { + final_created_by = requested_created_by; + } + + console.log('📊 작업보고서 조회 요청:', { + date, + worker_id, + requested_created_by, + current_user_id, + user_access_level, + isAdmin, + hasViewAllFlag, + canViewAll, + final_created_by + }); + + if (date && final_created_by) { + // 날짜 + 작성자별 조회 + dailyWorkReportModel.getByDateAndCreator(date, final_created_by, (err, data) => { + if (err) { + console.error('작업보고서 조회 오류:', err); + return res.status(500).json({ + error: '작업보고서 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + console.log(`📊 날짜+작성자별 조회 결과: ${data.length}개`); + res.json(data); + }); + } else if (date && worker_id) { + // 날짜 + 작업자별 조회 + dailyWorkReportModel.getByDateAndWorker(date, worker_id, (err, data) => { + if (err) { + console.error('작업보고서 조회 오류:', err); + return res.status(500).json({ + error: '작업보고서 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + // 🎯 권한별 필터링 + let finalData = data; + if (!canViewAll) { + finalData = data.filter(report => report.created_by === current_user_id); + console.log(`📊 권한 필터링: 전체 ${data.length}개 → ${finalData.length}개`); + } else { + console.log(`📊 관리자/전체 조회 권한: ${data.length}개 전체 반환`); + } + + res.json(finalData); + }); + } else if (date) { + // 날짜별 조회 + dailyWorkReportModel.getByDate(date, (err, data) => { + if (err) { + console.error('작업보고서 조회 오류:', err); + return res.status(500).json({ + error: '작업보고서 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + // 🎯 권한별 필터링 + let finalData = data; + if (!canViewAll) { + finalData = data.filter(report => report.created_by === current_user_id); + console.log(`📊 권한 필터링: 전체 ${data.length}개 → ${finalData.length}개`); + } else { + console.log(`📊 관리자/전체 조회 권한: ${data.length}개 전체 반환`); + } + + res.json(finalData); + }); + } else { + res.status(400).json({ + error: '날짜(date) 파라미터가 필요합니다.', + example: 'date=2024-06-16', + optional: ['worker_id', 'created_by', 'view_all', 'admin', 'all'] + }); + } +}; + +/** + * 📊 날짜별 작업보고서 조회 (경로 파라미터 - 권한별 전체 조회 지원) + */ +const getDailyWorkReportsByDate = (req, res) => { + const { date } = req.params; + const current_user_id = req.user?.user_id || req.user?.id; + const user_access_level = req.user?.access_level; + + if (!current_user_id) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + const isAdmin = user_access_level === 'system' || user_access_level === 'admin'; + + console.log(`📊 날짜별 조회 (경로): date=${date}, user=${current_user_id}, 권한=${user_access_level}, 관리자=${isAdmin}`); + + dailyWorkReportModel.getByDate(date, (err, data) => { + if (err) { + console.error('날짜별 작업보고서 조회 오류:', err); + return res.status(500).json({ + error: '작업보고서 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + // 🎯 권한별 필터링 + let finalData = data; + if (!isAdmin) { + finalData = data.filter(report => report.created_by === current_user_id); + console.log(`📊 권한 필터링: 전체 ${data.length}개 → ${finalData.length}개`); + } else { + console.log(`📊 관리자 권한으로 전체 조회: ${data.length}개`); + } + + res.json(finalData); + }); +}; + +/** + * 🔍 작업보고서 검색 (페이지네이션 포함) + */ +const searchWorkReports = (req, res) => { + const { start_date, end_date, worker_id, project_id, work_status_id, page = 1, limit = 20 } = req.query; + const created_by = req.user?.user_id || req.user?.id; + + if (!start_date || !end_date) { + return res.status(400).json({ + error: 'start_date와 end_date가 필요합니다.', + example: 'start_date=2024-01-01&end_date=2024-01-31', + optional: ['worker_id', 'project_id', 'work_status_id', 'page', 'limit'] + }); + } + + if (!created_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + const searchParams = { + start_date, + end_date, + worker_id: worker_id ? parseInt(worker_id) : null, + project_id: project_id ? parseInt(project_id) : null, + work_status_id: work_status_id ? parseInt(work_status_id) : null, + created_by, // 작성자 필터링 추가 + page: parseInt(page), + limit: parseInt(limit) + }; + + console.log('🔍 작업보고서 검색 요청:', searchParams); + + dailyWorkReportModel.searchWithDetails(searchParams, (err, data) => { + if (err) { + console.error('작업보고서 검색 오류:', err); + return res.status(500).json({ + error: '작업보고서 검색 중 오류가 발생했습니다.', + details: err.message + }); + } + + console.log(`🔍 검색 결과: ${data.reports?.length || 0}개 (전체: ${data.total || 0}개)`); + res.json(data); + }); +}; + +/** + * 📈 통계 조회 (작성자별 필터링) + */ +const getWorkReportStats = (req, res) => { + const { start_date, end_date } = req.query; + const created_by = req.user?.user_id || req.user?.id; + + if (!start_date || !end_date) { + return res.status(400).json({ + error: 'start_date와 end_date가 필요합니다.', + example: 'start_date=2024-01-01&end_date=2024-01-31' + }); + } + + if (!created_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + console.log(`📈 통계 조회: ${start_date} ~ ${end_date}, 요청자: ${created_by}`); + + dailyWorkReportModel.getStatistics(start_date, end_date, (err, data) => { + if (err) { + console.error('통계 조회 오류:', err); + return res.status(500).json({ + error: '통계 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + res.json({ + ...data, + metadata: { + note: '현재는 전체 통계입니다. 개인별 통계는 추후 구현 예정', + requested_by: created_by, + period: `${start_date} ~ ${end_date}`, + timestamp: new Date().toISOString() + } + }); + }); +}; + +/** + * 📊 일일 근무 요약 조회 + */ +const getDailySummary = (req, res) => { + const { date, worker_id } = req.query; + + if (date) { + console.log(`📊 일일 요약 조회: date=${date}`); + dailyWorkReportModel.getSummaryByDate(date, (err, data) => { + if (err) { + console.error('일일 요약 조회 오류:', err); + return res.status(500).json({ + error: '일일 요약 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + res.json(data); + }); + } else if (worker_id) { + console.log(`📊 작업자별 요약 조회: worker_id=${worker_id}`); + dailyWorkReportModel.getSummaryByWorker(worker_id, (err, data) => { + if (err) { + console.error('작업자별 요약 조회 오류:', err); + return res.status(500).json({ + error: '작업자별 요약 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + res.json(data); + }); + } else { + res.status(400).json({ + error: 'date 또는 worker_id 파라미터가 필요합니다.', + examples: [ + 'date=2024-06-16', + 'worker_id=1' + ] + }); + } +}; + +/** + * 📅 월간 요약 조회 + */ +const getMonthlySummary = (req, res) => { + const { year, month } = req.query; + + if (!year || !month) { + return res.status(400).json({ + error: 'year와 month가 필요합니다.', + example: 'year=2024&month=01', + note: 'month는 01, 02, ..., 12 형식으로 입력하세요.' + }); + } + + console.log(`📅 월간 요약 조회: ${year}-${month}`); + + dailyWorkReportModel.getMonthlySummary(year, month, (err, data) => { + if (err) { + console.error('월간 요약 조회 오류:', err); + return res.status(500).json({ + error: '월간 요약 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + + res.json({ + year: parseInt(year), + month: parseInt(month), + summary: data, + total_entries: data.length, + timestamp: new Date().toISOString() + }); + }); +}; + +/** + * ✏️ 작업보고서 수정 + */ +const updateWorkReport = (req, res) => { + const { id } = req.params; + const updateData = req.body; + const updated_by = req.user?.user_id || req.user?.id; + + if (!updated_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + updateData.updated_by = updated_by; + + console.log(`✏️ 작업보고서 수정 요청: id=${id}, 수정자=${updated_by}`); + + dailyWorkReportModel.updateById(id, updateData, (err, affectedRows) => { + if (err) { + console.error('작업보고서 수정 오류:', err); + return res.status(500).json({ + error: '작업보고서 수정 중 오류가 발생했습니다.', + details: err.message + }); + } + + if (affectedRows === 0) { + return res.status(404).json({ + error: '수정할 작업보고서를 찾을 수 없습니다.', + id: id + }); + } + + console.log(`✅ 작업보고서 수정 완료: id=${id}`); + res.json({ + message: '작업보고서가 성공적으로 수정되었습니다.', + id: id, + affected_rows: affectedRows, + updated_by, + timestamp: new Date().toISOString() + }); + }); +}; + +/** + * 🗑️ 특정 작업보고서 삭제 + */ +const removeDailyWorkReport = (req, res) => { + const { id } = req.params; + const deleted_by = req.user?.user_id || req.user?.id; + + if (!deleted_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + console.log(`🗑️ 작업보고서 삭제 요청: id=${id}, 삭제자=${deleted_by}`); + + dailyWorkReportModel.removeById(id, deleted_by, (err, affectedRows) => { + if (err) { + console.error('작업보고서 삭제 오류:', err); + return res.status(500).json({ + error: '작업보고서 삭제 중 오류가 발생했습니다.', + details: err.message + }); + } + + if (affectedRows === 0) { + return res.status(404).json({ + error: '삭제할 작업보고서를 찾을 수 없습니다.', + id: id + }); + } + + console.log(`✅ 작업보고서 삭제 완료: id=${id}`); + res.json({ + message: '작업보고서가 성공적으로 삭제되었습니다.', + id: id, + affected_rows: affectedRows, + deleted_by, + timestamp: new Date().toISOString() + }); + }); +}; + +/** + * 🗑️ 작업자의 특정 날짜 전체 삭제 + */ +const removeDailyWorkReportByDateAndWorker = (req, res) => { + const { date, worker_id } = req.params; + const deleted_by = req.user?.user_id || req.user?.id; + + if (!deleted_by) { + return res.status(401).json({ + error: '사용자 인증 정보가 없습니다.' + }); + } + + console.log(`🗑️ 날짜+작업자별 전체 삭제 요청: date=${date}, worker_id=${worker_id}, 삭제자=${deleted_by}`); + + dailyWorkReportModel.removeByDateAndWorker(date, worker_id, deleted_by, (err, affectedRows) => { + if (err) { + console.error('작업보고서 전체 삭제 오류:', err); + return res.status(500).json({ + error: '작업보고서 삭제 중 오류가 발생했습니다.', + details: err.message + }); + } + + if (affectedRows === 0) { + return res.status(404).json({ + error: '삭제할 작업보고서를 찾을 수 없습니다.', + date: date, + worker_id: worker_id + }); + } + + console.log(`✅ 날짜+작업자별 전체 삭제 완료: ${affectedRows}개`); + res.json({ + message: `${date} 날짜의 작업자 ${worker_id} 작업보고서 ${affectedRows}개가 삭제되었습니다.`, + date, + worker_id, + affected_rows: affectedRows, + deleted_by, + timestamp: new Date().toISOString() + }); + }); +}; + +/** + * 📋 마스터 데이터 조회 함수들 + */ +const getWorkTypes = (req, res) => { + console.log('📋 작업 유형 조회 요청'); + dailyWorkReportModel.getAllWorkTypes((err, data) => { + if (err) { + console.error('작업 유형 조회 오류:', err); + return res.status(500).json({ + error: '작업 유형 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + console.log(`📋 작업 유형 조회 결과: ${data.length}개`); + res.json(data); + }); +}; + +const getWorkStatusTypes = (req, res) => { + console.log('📋 업무 상태 유형 조회 요청'); + dailyWorkReportModel.getAllWorkStatusTypes((err, data) => { + if (err) { + console.error('업무 상태 유형 조회 오류:', err); + return res.status(500).json({ + error: '업무 상태 유형 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + console.log(`📋 업무 상태 유형 조회 결과: ${data.length}개`); + res.json(data); + }); +}; + +const getErrorTypes = (req, res) => { + console.log('📋 에러 유형 조회 요청'); + dailyWorkReportModel.getAllErrorTypes((err, data) => { + if (err) { + console.error('에러 유형 조회 오류:', err); + return res.status(500).json({ + error: '에러 유형 조회 중 오류가 발생했습니다.', + details: err.message + }); + } + console.log(`📋 에러 유형 조회 결과: ${data.length}개`); + res.json(data); + }); +}; + +// 모든 컨트롤러 함수 내보내기 (권한별 조회 지원) +module.exports = { + // 📝 핵심 CRUD 함수들 (권한별 전체 조회 지원) + createDailyWorkReport, // 누적 추가 (덮어쓰기 없음) + getDailyWorkReports, // 조회 (권한별 필터링 개선) + getDailyWorkReportsByDate, // 날짜별 조회 (권한별 필터링 개선) + searchWorkReports, // 검색 (페이지네이션) + updateWorkReport, // 수정 + removeDailyWorkReport, // 개별 삭제 + removeDailyWorkReportByDateAndWorker, // 전체 삭제 + + // 🔄 누적 관련 새로운 함수들 + getAccumulatedReports, // 누적 현황 조회 + getContributorsSummary, // 기여자별 요약 + getMyAccumulatedData, // 개인 누적 현황 + removeMyEntry, // 개별 항목 삭제 (본인 것만) + + // 📊 요약 및 통계 함수들 + getDailySummary, // 일일 요약 + getMonthlySummary, // 월간 요약 + getWorkReportStats, // 통계 + + // 📋 마스터 데이터 함수들 + getWorkTypes, // 작업 유형 목록 + getWorkStatusTypes, // 업무 상태 유형 목록 + getErrorTypes // 에러 유형 목록 +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/equipmentListController.js b/api.hyungi.net/controllers/equipmentListController.js new file mode 100644 index 0000000..2951a1d --- /dev/null +++ b/api.hyungi.net/controllers/equipmentListController.js @@ -0,0 +1,80 @@ +// controllers/equipmentListController.js +const equipmentListModel = require('../models/equipmentListModel'); + +// 1. 등록 +exports.createEquipment = async (req, res) => { + try { + const equipmentData = req.body; + const id = await new Promise((resolve, reject) => { + equipmentListModel.create(equipmentData, (err, insertId) => + err ? reject(err) : resolve(insertId) + ); + }); + res.json({ success: true, equipment_id: id }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 2. 전체 조회 +exports.getAllEquipment = async (req, res) => { + try { + const rows = await new Promise((resolve, reject) => { + equipmentListModel.getAll((err, data) => + err ? reject(err) : resolve(data) + ); + }); + res.json(rows); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 3. 단일 조회 +exports.getEquipmentById = async (req, res) => { + try { + const id = parseInt(req.params.equipment_id, 10); + const row = await new Promise((resolve, reject) => { + equipmentListModel.getById(id, (err, data) => + err ? reject(err) : resolve(data) + ); + }); + if (!row) return res.status(404).json({ error: 'Equipment not found' }); + res.json(row); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 4. 수정 +exports.updateEquipment = async (req, res) => { + try { + const id = parseInt(req.params.equipment_id, 10); + const data = { ...req.body, equipment_id: id }; + const changes = await new Promise((resolve, reject) => { + equipmentListModel.update(data, (err, affectedRows) => + err ? reject(err) : resolve(affectedRows) + ); + }); + if (changes === 0) return res.status(404).json({ error: 'No changes or not found' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 5. 삭제 +exports.removeEquipment = async (req, res) => { + try { + const id = parseInt(req.params.equipment_id, 10); + const changes = await new Promise((resolve, reject) => { + equipmentListModel.remove(id, (err, affectedRows) => + err ? reject(err) : resolve(affectedRows) + ); + }); + if (changes === 0) return res.status(404).json({ error: 'Equipment not found' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/factoryInfoController.js b/api.hyungi.net/controllers/factoryInfoController.js new file mode 100644 index 0000000..6a5d103 --- /dev/null +++ b/api.hyungi.net/controllers/factoryInfoController.js @@ -0,0 +1,80 @@ +// controllers/factoryInfoController.js +const factoryInfoModel = require('../models/factoryInfoModel'); + +// 1. 공장 정보 생성 +exports.createFactoryInfo = async (req, res) => { + try { + const factoryData = req.body; + const id = await new Promise((resolve, reject) => { + factoryInfoModel.create(factoryData, (err, insertId) => + err ? reject(err) : resolve(insertId) + ); + }); + res.json({ success: true, factory_id: id }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 2. 전체 공장 정보 조회 +exports.getAllFactoryInfo = async (req, res) => { + try { + const rows = await new Promise((resolve, reject) => { + factoryInfoModel.getAll((err, data) => + err ? reject(err) : resolve(data) + ); + }); + res.json(rows); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 3. 단일 조회 +exports.getFactoryInfoById = async (req, res) => { + try { + const id = parseInt(req.params.factory_id, 10); + const row = await new Promise((resolve, reject) => { + factoryInfoModel.getById(id, (err, data) => + err ? reject(err) : resolve(data) + ); + }); + if (!row) return res.status(404).json({ error: 'FactoryInfo not found' }); + res.json(row); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 4. 수정 +exports.updateFactoryInfo = async (req, res) => { + try { + const id = parseInt(req.params.factory_id, 10); + const data = { ...req.body, factory_id: id }; + const changes = await new Promise((resolve, reject) => { + factoryInfoModel.update(data, (err, affectedRows) => + err ? reject(err) : resolve(affectedRows) + ); + }); + if (changes === 0) return res.status(404).json({ error: 'No changes or not found' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 5. 삭제 +exports.removeFactoryInfo = async (req, res) => { + try { + const id = parseInt(req.params.factory_id, 10); + const changes = await new Promise((resolve, reject) => { + factoryInfoModel.remove(id, (err, affectedRows) => + err ? reject(err) : resolve(affectedRows) + ); + }); + if (changes === 0) return res.status(404).json({ error: 'FactoryInfo not found' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/issueTypeController.js b/api.hyungi.net/controllers/issueTypeController.js new file mode 100644 index 0000000..49ed0d3 --- /dev/null +++ b/api.hyungi.net/controllers/issueTypeController.js @@ -0,0 +1,55 @@ +const issueTypeModel = require('../models/issueTypeModel'); + +exports.createIssueType = async (req, res) => { + try { + const id = await new Promise((resolve, reject) => { + issueTypeModel.create(req.body, (err, insertId) => + err ? reject(err) : resolve(insertId) + ); + }); + res.json({ success: true, issue_type_id: id }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +exports.getAllIssueTypes = async (_req, res) => { + try { + const rows = await new Promise((resolve, reject) => { + issueTypeModel.getAll((err, data) => err ? reject(err) : resolve(data)); + }); + res.json(rows); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +exports.updateIssueType = async (req, res) => { + try { + const id = parseInt(req.params.id, 10); + const changes = await new Promise((resolve, reject) => { + issueTypeModel.update(id, req.body, (err, affectedRows) => + err ? reject(err) : resolve(affectedRows) + ); + }); + if (changes === 0) return res.status(404).json({ error: 'Not found or no changes' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +exports.removeIssueType = async (req, res) => { + try { + const id = parseInt(req.params.id, 10); + const changes = await new Promise((resolve, reject) => { + issueTypeModel.remove(id, (err, affectedRows) => + err ? reject(err) : resolve(affectedRows) + ); + }); + if (changes === 0) return res.status(404).json({ error: 'Not found' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/pingController.js b/api.hyungi.net/controllers/pingController.js new file mode 100644 index 0000000..5197cc9 --- /dev/null +++ b/api.hyungi.net/controllers/pingController.js @@ -0,0 +1,25 @@ +// controllers/pingController.js +const { getDb } = require('../dbPool'); +const pingModel = require('../models/pingModel'); + +exports.ping = async (req, res) => { + const data = pingModel.ping(); + try { + // DB 연결 테스트 + const db = await getDb(); + await db.query('SELECT 1'); + return res.json({ + success: true, + ...data, + db: 'ok' + }); + } catch (err) { + console.error('[PING ERROR]', err); + return res.status(500).json({ + success: false, + message: 'db error', + timestamp: data.timestamp, + error: err.message + }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/pipeSpecController.js b/api.hyungi.net/controllers/pipeSpecController.js new file mode 100644 index 0000000..18cb131 --- /dev/null +++ b/api.hyungi.net/controllers/pipeSpecController.js @@ -0,0 +1,127 @@ +const { getDb } = require('../dbPool'); + +// ✅ 전체 스펙 목록 (프론트 드롭다운용 label 포함) +exports.getAll = async (req, res) => { + try { + const db = await getDb(); + const [rows] = await db.query(` + SELECT spec_id, material, diameter_in, schedule + FROM PipeSpecs + ORDER BY material, diameter_in + `); + + const result = rows.map(row => ({ + spec_id: row.spec_id, + label: `${row.material} / ${row.diameter_in} / ${row.schedule}` + })); + + res.json(result); + } catch (err) { + console.error('[getAll 오류]', err); + res.status(500).json({ error: '파이프 스펙 전체 조회 실패' }); + } +}; + +// ✅ 등록 +exports.create = async (req, res) => { + try { + const { material, diameter_in, schedule } = req.body; + if (!material || !diameter_in || !schedule) { + return res.status(400).json({ error: '모든 항목이 필요합니다.' }); + } + + const db = await getDb(); + + // 중복 체크 + const [existing] = await db.query( + `SELECT * FROM PipeSpecs WHERE material = ? AND diameter_in = ? AND schedule = ?`, + [material.trim(), diameter_in.trim(), schedule.trim()] + ); + + if (existing.length > 0) { + return res.status(409).json({ error: '이미 등록된 스펙입니다.' }); + } + + await db.query( + `INSERT INTO PipeSpecs (material, diameter_in, schedule) VALUES (?, ?, ?)`, + [material.trim(), diameter_in.trim(), schedule.trim()] + ); + + res.json({ success: true }); + } catch (err) { + console.error('[create 오류]', err); + res.status(500).json({ error: '파이프 스펙 등록 실패' }); + } +}; + +// ✅ 삭제 +exports.remove = async (req, res) => { + const { spec_id } = req.params; + try { + const db = await getDb(); + const [result] = await db.query( + `DELETE FROM PipeSpecs WHERE spec_id = ?`, + [spec_id] + ); + if (result.affectedRows === 0) { + return res.status(404).json({ error: '해당 스펙이 존재하지 않습니다.' }); + } + res.json({ success: true }); + } catch (err) { + console.error('[remove 오류]', err); + res.status(500).json({ error: '파이프 스펙 삭제 실패' }); + } +}; + +// ✅ 재질 목록 +exports.getMaterials = async (req, res) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT DISTINCT material FROM PipeSpecs ORDER BY material` + ); + res.json(rows.map(row => row.material)); + } catch (err) { + res.status(500).json({ error: '재질 목록 조회 실패' }); + } +}; + +// ✅ 직경 목록 (material 기준) +exports.getDiameters = async (req, res) => { + const { material } = req.query; + if (!material) { + return res.status(400).json({ error: 'material 파라미터가 필요합니다.' }); + } + + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT DISTINCT diameter_in FROM PipeSpecs WHERE material = ? ORDER BY diameter_in`, + [material] + ); + res.json(rows.map(row => row.diameter_in)); + } catch (err) { + res.status(500).json({ error: '직경 목록 조회 실패' }); + } +}; + +// ✅ 스케줄 목록 (material + 직경 기준) +exports.getSchedules = async (req, res) => { + const { material, diameter_in } = req.query; + if (!material || !diameter_in) { + return res.status(400).json({ error: 'material과 diameter_in이 필요합니다.' }); + } + + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT DISTINCT schedule FROM PipeSpecs + WHERE material = ? AND diameter_in = ? + ORDER BY schedule`, + [material, diameter_in] + ); + res.json(rows.map(row => row.schedule)); + } catch (err) { + res.status(500).json({ error: '스케줄 목록 조회 실패' }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/processController.js b/api.hyungi.net/controllers/processController.js new file mode 100644 index 0000000..71b9ef9 --- /dev/null +++ b/api.hyungi.net/controllers/processController.js @@ -0,0 +1,100 @@ +const processModel = require('../models/processModel'); +const projectModel = require('../models/projectModel'); + +// 1. 공정 등록 +exports.createProcess = async (req, res) => { + try { + const processData = req.body; + + if (!processData.process_end) { + const project = await new Promise((resolve, reject) => { + projectModel.getById(processData.project_id, (err, row) => { + if (err) return reject(err); + if (!row) return reject({ status: 404, message: 'Project not found' }); + resolve(row); + }); + }); + + processData.process_end = project.due_date; + } + + const lastID = await new Promise((resolve, reject) => { + processModel.create(processData, (err, id) => (err ? reject(err) : resolve(id))); + }); + + res.json({ success: true, process_id: lastID }); + } catch (err) { + const status = err.status || 500; + res.status(status).json({ error: err.message || String(err) }); + } +}; + +// 2. 전체 조회 +exports.getAllProcesses = async (req, res) => { + try { + const rows = await new Promise((resolve, reject) => { + processModel.getAll((err, data) => (err ? reject(err) : resolve(data))); + }); + res.json(rows); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 3. 단일 조회 +exports.getProcessById = async (req, res) => { + try { + const id = parseInt(req.params.process_id, 10); + const row = await new Promise((resolve, reject) => { + processModel.getById(id, (err, data) => (err ? reject(err) : resolve(data))); + }); + if (!row) return res.status(404).json({ error: 'Process not found' }); + res.json(row); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 4. 수정 +exports.updateProcess = async (req, res) => { + try { + const id = parseInt(req.params.process_id, 10); + const processData = { ...req.body, process_id: id }; + + if (!processData.process_end) { + const project = await new Promise((resolve, reject) => { + projectModel.getById(processData.project_id, (err, row) => { + if (err) return reject(err); + if (!row) return reject({ status: 404, message: 'Project not found' }); + resolve(row); + }); + }); + + processData.process_end = project.due_date; + } + + const changes = await new Promise((resolve, reject) => { + processModel.update(processData, (err, ch) => (err ? reject(err) : resolve(ch))); + }); + + if (changes === 0) return res.status(404).json({ error: 'No changes or not found' }); + res.json({ success: true, changes }); + } catch (err) { + const status = err.status || 500; + res.status(status).json({ error: err.message || String(err) }); + } +}; + +// 5. 삭제 +exports.removeProcess = async (req, res) => { + try { + const id = parseInt(req.params.process_id, 10); + const changes = await new Promise((resolve, reject) => { + processModel.remove(id, (err, ch) => (err ? reject(err) : resolve(ch))); + }); + if (changes === 0) return res.status(404).json({ error: 'Process not found' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/projectController.js b/api.hyungi.net/controllers/projectController.js new file mode 100644 index 0000000..cc96ebd --- /dev/null +++ b/api.hyungi.net/controllers/projectController.js @@ -0,0 +1,69 @@ +const projectModel = require('../models/projectModel'); + +// 1. 프로젝트 생성 +exports.createProject = async (req, res) => { + try { + const projectData = req.body; + const id = await new Promise((resolve, reject) => { + projectModel.create(projectData, (err, lastID) => (err ? reject(err) : resolve(lastID))); + }); + res.json({ success: true, project_id: id }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 2. 전체 조회 +exports.getAllProjects = async (req, res) => { + try { + const rows = await new Promise((resolve, reject) => { + projectModel.getAll((err, data) => (err ? reject(err) : resolve(data))); + }); + res.json(rows); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 3. 단일 조회 +exports.getProjectById = async (req, res) => { + try { + const id = parseInt(req.params.project_id, 10); + const row = await new Promise((resolve, reject) => { + projectModel.getById(id, (err, data) => (err ? reject(err) : resolve(data))); + }); + if (!row) return res.status(404).json({ error: 'Project not found' }); + res.json(row); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 4. 수정 +exports.updateProject = async (req, res) => { + try { + const id = parseInt(req.params.project_id, 10); + const data = { ...req.body, project_id: id }; + const changes = await new Promise((resolve, reject) => { + projectModel.update(data, (err, ch) => (err ? reject(err) : resolve(ch))); + }); + if (changes === 0) return res.status(404).json({ error: 'Project not found or no changes' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 5. 삭제 +exports.removeProject = async (req, res) => { + try { + const id = parseInt(req.params.project_id, 10); + const changes = await new Promise((resolve, reject) => { + projectModel.remove(id, (err, ch) => (err ? reject(err) : resolve(ch))); + }); + if (changes === 0) return res.status(404).json({ error: 'Project not found' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/taskController.js b/api.hyungi.net/controllers/taskController.js new file mode 100644 index 0000000..9ac6142 --- /dev/null +++ b/api.hyungi.net/controllers/taskController.js @@ -0,0 +1,69 @@ +const taskModel = require('../models/taskModel'); + +// 1. 생성 +exports.createTask = async (req, res) => { + try { + const taskData = req.body; + const lastID = await new Promise((resolve, reject) => { + taskModel.create(taskData, (err, id) => (err ? reject(err) : resolve(id))); + }); + res.json({ success: true, task_id: lastID }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 2. 전체 조회 +exports.getAllTasks = async (req, res) => { + try { + const rows = await new Promise((resolve, reject) => { + taskModel.getAll((err, data) => (err ? reject(err) : resolve(data))); + }); + res.json(rows); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 3. 단일 조회 +exports.getTaskById = async (req, res) => { + try { + const id = parseInt(req.params.task_id, 10); + const row = await new Promise((resolve, reject) => { + taskModel.getById(id, (err, data) => (err ? reject(err) : resolve(data))); + }); + if (!row) return res.status(404).json({ error: 'Task not found' }); + res.json(row); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 4. 수정 +exports.updateTask = async (req, res) => { + try { + const id = parseInt(req.params.task_id, 10); + const taskData = { ...req.body, task_id: id }; + const changes = await new Promise((resolve, reject) => { + taskModel.update(taskData, (err, ch) => (err ? reject(err) : resolve(ch))); + }); + if (changes === 0) return res.status(404).json({ error: 'Task not found or no change' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 5. 삭제 +exports.removeTask = async (req, res) => { + try { + const id = parseInt(req.params.task_id, 10); + const changes = await new Promise((resolve, reject) => { + taskModel.remove(id, (err, ch) => (err ? reject(err) : resolve(ch))); + }); + if (changes === 0) return res.status(404).json({ error: 'Task not found' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/toolsController.js b/api.hyungi.net/controllers/toolsController.js new file mode 100644 index 0000000..ef6875f --- /dev/null +++ b/api.hyungi.net/controllers/toolsController.js @@ -0,0 +1,76 @@ +const Tools = require('../models/toolsModel'); + +// 1. 전체 도구 조회 +exports.getAll = async (req, res) => { + try { + const rows = await new Promise((resolve, reject) => { + Tools.getAllTools((err, data) => err ? reject(err) : resolve(data)); + }); + res.json(rows); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 2. 단일 도구 조회 +exports.getById = async (req, res) => { + try { + const id = parseInt(req.params.id, 10); + const row = await new Promise((resolve, reject) => { + Tools.getToolById(id, (err, data) => err ? reject(err) : resolve(data)); + }); + if (!row) return res.status(404).json({ error: 'Tool not found' }); + res.json(row); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 3. 도구 생성 +exports.create = async (req, res) => { + try { + const insertId = await new Promise((resolve, reject) => { + Tools.createTool(req.body, (err, resultId) => { + if (err) return reject(err); + resolve(resultId); + }); + }); + res.status(201).json({ success: true, id: insertId }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 4. 도구 수정 +exports.update = async (req, res) => { + try { + const id = parseInt(req.params.id, 10); + const changedRows = await new Promise((resolve, reject) => { + Tools.updateTool(id, req.body, (err, affectedRows) => { + if (err) return reject(err); + resolve(affectedRows); + }); + }); + if (changedRows === 0) return res.status(404).json({ error: 'Tool not found or no change' }); + res.json({ success: true, changes: changedRows }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 5. 도구 삭제 +exports.delete = async (req, res) => { + try { + const id = parseInt(req.params.id, 10); + const deletedRows = await new Promise((resolve, reject) => { + Tools.deleteTool(id, (err, affectedRows) => { + if (err) return reject(err); + resolve(affectedRows); + }); + }); + if (deletedRows === 0) return res.status(404).json({ error: 'Tool not found' }); + res.status(204).send(); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/uploadController.js b/api.hyungi.net/controllers/uploadController.js new file mode 100644 index 0000000..0a28af6 --- /dev/null +++ b/api.hyungi.net/controllers/uploadController.js @@ -0,0 +1,26 @@ +const uploadModel = require('../models/uploadModel'); + +// 1. 문서 업로드 +exports.createUpload = async (req, res) => { + try { + const doc = req.body; + const id = await new Promise((resolve, reject) => { + uploadModel.create(doc, (err, insertId) => (err ? reject(err) : resolve(insertId))); + }); + res.status(201).json({ success: true, id }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 2. 전체 업로드 문서 조회 +exports.getUploads = async (req, res) => { + try { + const rows = await new Promise((resolve, reject) => { + uploadModel.getAll((err, data) => (err ? reject(err) : resolve(data))); + }); + res.json(rows); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/workAnalysisController.js b/api.hyungi.net/controllers/workAnalysisController.js new file mode 100644 index 0000000..03030b2 --- /dev/null +++ b/api.hyungi.net/controllers/workAnalysisController.js @@ -0,0 +1,372 @@ +// controllers/workAnalysisController.js + +const WorkAnalysis = require('../models/WorkAnalysis'); +const { getDb } = require('../dbPool'); // 기존 프로젝트의 DB 연결 방식 사용 + +class WorkAnalysisController { + constructor() { + // 메서드 바인딩 + this.getStats = this.getStats.bind(this); + this.getDailyTrend = this.getDailyTrend.bind(this); + this.getWorkerStats = this.getWorkerStats.bind(this); + this.getProjectStats = this.getProjectStats.bind(this); + this.getWorkTypeStats = this.getWorkTypeStats.bind(this); + this.getRecentWork = this.getRecentWork.bind(this); + this.getWeekdayPattern = this.getWeekdayPattern.bind(this); + this.getErrorAnalysis = this.getErrorAnalysis.bind(this); + this.getMonthlyComparison = this.getMonthlyComparison.bind(this); + this.getWorkerSpecialization = this.getWorkerSpecialization.bind(this); + } + + // 날짜 유효성 검사 + validateDateRange(startDate, endDate) { + if (!startDate || !endDate) { + throw new Error('시작일과 종료일을 입력해주세요.'); + } + + const start = new Date(startDate); + const end = new Date(endDate); + + if (isNaN(start.getTime()) || isNaN(end.getTime())) { + throw new Error('올바른 날짜 형식을 입력해주세요. (YYYY-MM-DD)'); + } + + if (start > end) { + throw new Error('시작일이 종료일보다 늦을 수 없습니다.'); + } + + // 너무 긴 기간 방지 (1년 제한) + const diffTime = Math.abs(end - start); + const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); + if (diffDays > 365) { + throw new Error('조회 기간은 1년을 초과할 수 없습니다.'); + } + + return { start, end }; + } + + // 기본 통계 조회 + async getStats(req, res) { + try { + const { start, end } = req.query; + this.validateDateRange(start, end); + + const db = await getDb(); + const workAnalysis = new WorkAnalysis(db); + const stats = await workAnalysis.getBasicStats(start, end); + + res.status(200).json({ + success: true, + data: stats, + message: '기본 통계 조회 완료' + }); + + } catch (error) { + console.error('기본 통계 조회 오류:', error); + res.status(400).json({ + success: false, + error: error.message + }); + } + } + + // 일별 작업시간 추이 + async getDailyTrend(req, res) { + try { + const { start, end } = req.query; + this.validateDateRange(start, end); + + const db = await getDb(); + const workAnalysis = new WorkAnalysis(db); + const trendData = await workAnalysis.getDailyTrend(start, end); + + res.status(200).json({ + success: true, + data: trendData, + message: '일별 추이 조회 완료' + }); + + } catch (error) { + console.error('일별 추이 조회 오류:', error); + res.status(400).json({ + success: false, + error: error.message + }); + } + } + + // 작업자별 통계 + async getWorkerStats(req, res) { + try { + const { start, end } = req.query; + this.validateDateRange(start, end); + + const db = await getDb(); + const workAnalysis = new WorkAnalysis(db); + const workerStats = await workAnalysis.getWorkerStats(start, end); + + res.status(200).json({ + success: true, + data: workerStats, + message: '작업자별 통계 조회 완료' + }); + + } catch (error) { + console.error('작업자별 통계 조회 오류:', error); + res.status(400).json({ + success: false, + error: error.message + }); + } + } + + // 프로젝트별 통계 + async getProjectStats(req, res) { + try { + const { start, end } = req.query; + this.validateDateRange(start, end); + + const db = await getDb(); + const workAnalysis = new WorkAnalysis(db); + const projectStats = await workAnalysis.getProjectStats(start, end); + + res.status(200).json({ + success: true, + data: projectStats, + message: '프로젝트별 통계 조회 완료' + }); + + } catch (error) { + console.error('프로젝트별 통계 조회 오류:', error); + res.status(400).json({ + success: false, + error: error.message + }); + } + } + + // 작업유형별 통계 + async getWorkTypeStats(req, res) { + try { + const { start, end } = req.query; + this.validateDateRange(start, end); + + const db = await getDb(); + const workAnalysis = new WorkAnalysis(db); + const workTypeStats = await workAnalysis.getWorkTypeStats(start, end); + + res.status(200).json({ + success: true, + data: workTypeStats, + message: '작업유형별 통계 조회 완료' + }); + + } catch (error) { + console.error('작업유형별 통계 조회 오류:', error); + res.status(400).json({ + success: false, + error: error.message + }); + } + } + + // 최근 작업 현황 + async getRecentWork(req, res) { + try { + const { start, end, limit = 10 } = req.query; + this.validateDateRange(start, end); + + // limit 유효성 검사 + const limitNum = parseInt(limit); + if (isNaN(limitNum) || limitNum < 1 || limitNum > 100) { + throw new Error('limit은 1~100 사이의 숫자여야 합니다.'); + } + + const db = await getDb(); + const workAnalysis = new WorkAnalysis(db); + const recentWork = await workAnalysis.getRecentWork(start, end, limitNum); + + res.status(200).json({ + success: true, + data: recentWork, + message: '최근 작업 현황 조회 완료' + }); + + } catch (error) { + console.error('최근 작업 현황 조회 오류:', error); + res.status(400).json({ + success: false, + error: error.message + }); + } + } + + // 요일별 패턴 분석 + async getWeekdayPattern(req, res) { + try { + const { start, end } = req.query; + this.validateDateRange(start, end); + + const db = await getDb(); + const workAnalysis = new WorkAnalysis(db); + const weekdayPattern = await workAnalysis.getWeekdayPattern(start, end); + + res.status(200).json({ + success: true, + data: weekdayPattern, + message: '요일별 패턴 분석 완료' + }); + + } catch (error) { + console.error('요일별 패턴 분석 오류:', error); + res.status(400).json({ + success: false, + error: error.message + }); + } + } + + // 에러 분석 + async getErrorAnalysis(req, res) { + try { + const { start, end } = req.query; + this.validateDateRange(start, end); + + const db = await getDb(); + const workAnalysis = new WorkAnalysis(db); + const errorAnalysis = await workAnalysis.getErrorAnalysis(start, end); + + res.status(200).json({ + success: true, + data: errorAnalysis, + message: '에러 분석 완료' + }); + + } catch (error) { + console.error('에러 분석 오류:', error); + res.status(400).json({ + success: false, + error: error.message + }); + } + } + + // 월별 비교 분석 + async getMonthlyComparison(req, res) { + try { + const { year = new Date().getFullYear() } = req.query; + + const yearNum = parseInt(year); + if (isNaN(yearNum) || yearNum < 2000 || yearNum > 2050) { + throw new Error('올바른 연도를 입력해주세요. (2000-2050)'); + } + + const db = await getDb(); + const workAnalysis = new WorkAnalysis(db); + const monthlyData = await workAnalysis.getMonthlyComparison(yearNum); + + res.status(200).json({ + success: true, + data: monthlyData, + message: '월별 비교 분석 완료' + }); + + } catch (error) { + console.error('월별 비교 분석 오류:', error); + res.status(400).json({ + success: false, + error: error.message + }); + } + } + + // 작업자별 전문분야 분석 + async getWorkerSpecialization(req, res) { + try { + const { start, end } = req.query; + this.validateDateRange(start, end); + + const db = await getDb(); + const workAnalysis = new WorkAnalysis(db); + const specializationData = await workAnalysis.getWorkerSpecialization(start, end); + + // 작업자별로 그룹화하여 정리 + const groupedData = specializationData.reduce((acc, item) => { + if (!acc[item.worker_id]) { + acc[item.worker_id] = []; + } + acc[item.worker_id].push({ + work_type_id: item.work_type_id, + project_id: item.project_id, + totalHours: item.totalHours, + totalReports: item.totalReports, + percentage: item.percentage + }); + return acc; + }, {}); + + res.status(200).json({ + success: true, + data: groupedData, + message: '작업자별 전문분야 분석 완료' + }); + + } catch (error) { + console.error('작업자별 전문분야 분석 오류:', error); + res.status(400).json({ + success: false, + error: error.message + }); + } + } + + // 대시보드용 종합 데이터 + async getDashboardData(req, res) { + try { + const { start, end } = req.query; + this.validateDateRange(start, end); + + const db = await getDb(); + const workAnalysis = new WorkAnalysis(db); + + // 병렬로 여러 데이터 조회 + const [ + stats, + dailyTrend, + workerStats, + projectStats, + workTypeStats, + recentWork + ] = await Promise.all([ + workAnalysis.getBasicStats(start, end), + workAnalysis.getDailyTrend(start, end), + workAnalysis.getWorkerStats(start, end), + workAnalysis.getProjectStats(start, end), + workAnalysis.getWorkTypeStats(start, end), + workAnalysis.getRecentWork(start, end, 10) + ]); + + res.status(200).json({ + success: true, + data: { + stats, + dailyTrend, + workerStats, + projectStats, + workTypeStats, + recentWork + }, + message: '대시보드 데이터 조회 완료' + }); + + } catch (error) { + console.error('대시보드 데이터 조회 오류:', error); + res.status(400).json({ + success: false, + error: error.message + }); + } + } +} + +module.exports = new WorkAnalysisController(); \ No newline at end of file diff --git a/api.hyungi.net/controllers/workReportController.js b/api.hyungi.net/controllers/workReportController.js new file mode 100644 index 0000000..2b7caf6 --- /dev/null +++ b/api.hyungi.net/controllers/workReportController.js @@ -0,0 +1,134 @@ +// controllers/workReportController.js +const workReportModel = require('../models/workReportModel'); + +// 1. CREATE: 단일 또는 다중 보고서 등록 +exports.createWorkReport = async (req, res) => { + try { + const reports = Array.isArray(req.body) ? req.body : [req.body]; + const workReport_ids = []; + + for (const report of reports) { + const id = await new Promise((resolve, reject) => { + workReportModel.create(report, (err, insertId) => { + if (err) reject(err); + else resolve(insertId); + }); + }); + workReport_ids.push(id); + } + + res.json({ success: true, workReport_ids }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 2. READ BY DATE +exports.getWorkReportsByDate = async (req, res) => { + try { + const { date } = req.params; + const rows = await new Promise((resolve, reject) => { + workReportModel.getAllByDate(date, (err, data) => { + if (err) reject(err); + else resolve(data); + }); + }); + res.json(rows); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 3. READ BY RANGE +exports.getWorkReportsInRange = async (req, res) => { + try { + const { start, end } = req.query; + const rows = await new Promise((resolve, reject) => { + workReportModel.getByRange(start, end, (err, data) => { + if (err) reject(err); + else resolve(data); + }); + }); + res.json(rows); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 4. READ ONE +exports.getWorkReportById = async (req, res) => { + try { + const { id } = req.params; + const row = await new Promise((resolve, reject) => { + workReportModel.getById(id, (err, data) => { + if (err) reject(err); + else resolve(data); + }); + }); + if (!row) return res.status(404).json({ error: 'WorkReport not found' }); + res.json(row); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 5. UPDATE +exports.updateWorkReport = async (req, res) => { + try { + const { id } = req.params; + const changes = await new Promise((resolve, reject) => { + workReportModel.update(id, req.body, (err, affectedRows) => { + if (err) reject(err); + else resolve(affectedRows); + }); + }); + if (changes === 0) return res.status(404).json({ error: 'No changes or not found' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 6. DELETE +exports.removeWorkReport = async (req, res) => { + try { + const { id } = req.params; + const changes = await new Promise((resolve, reject) => { + workReportModel.remove(id, (err, affectedRows) => { + if (err) reject(err); + else resolve(affectedRows); + }); + }); + if (changes === 0) return res.status(404).json({ error: 'WorkReport not found' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 7. SUMMARY (월간) +exports.getSummary = async (req, res) => { + try { + const { year, month } = req.query; + if (!year || !month) { + return res.status(400).json({ error: '연도와 월이 필요합니다 (year, month)' }); + } + + const start = `${year.padStart(4, '0')}-${month.padStart(2, '0')}-01`; + const end = `${year.padStart(4, '0')}-${month.padStart(2, '0')}-31`; + + const rows = await new Promise((resolve, reject) => { + workReportModel.getByRange(start, end, (err, data) => { + if (err) reject(err); + else resolve(data); + }); + }); + if (!rows || rows.length === 0) { + return res.status(404).json({ error: 'WorkReport not found' }); + } + + res.json(rows); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/controllers/workerController.js b/api.hyungi.net/controllers/workerController.js new file mode 100644 index 0000000..98f7d6f --- /dev/null +++ b/api.hyungi.net/controllers/workerController.js @@ -0,0 +1,85 @@ +// controllers/workerController.js +const workerModel = require('../models/workerModel'); + +// 1. 작업자 생성 +exports.createWorker = async (req, res) => { + try { + const workerData = req.body; + const lastID = await new Promise((resolve, reject) => { + workerModel.create(workerData, (err, id) => { + if (err) reject(err); + else resolve(id); + }); + }); + res.json({ success: true, worker_id: lastID }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 2. 전체 작업자 조회 +exports.getAllWorkers = async (req, res) => { + try { + const rows = await new Promise((resolve, reject) => { + workerModel.getAll((err, data) => { + if (err) reject(err); + else resolve(data); + }); + }); + res.json(rows); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 3. 단일 작업자 조회 +exports.getWorkerById = async (req, res) => { + try { + const id = parseInt(req.params.worker_id, 10); + const row = await new Promise((resolve, reject) => { + workerModel.getById(id, (err, data) => { + if (err) reject(err); + else resolve(data); + }); + }); + if (!row) return res.status(404).json({ error: 'Worker not found' }); + res.json(row); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 4. 작업자 수정 +exports.updateWorker = async (req, res) => { + try { + const id = parseInt(req.params.worker_id, 10); + const workerData = { ...req.body, worker_id: id }; + const changes = await new Promise((resolve, reject) => { + workerModel.update(workerData, (err, affected) => { + if (err) reject(err); + else resolve(affected); + }); + }); + if (changes === 0) return res.status(404).json({ error: 'Worker not found or no change' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; + +// 5. 작업자 삭제 +exports.removeWorker = async (req, res) => { + try { + const id = parseInt(req.params.worker_id, 10); + const changes = await new Promise((resolve, reject) => { + workerModel.remove(id, (err, affected) => { + if (err) reject(err); + else resolve(affected); + }); + }); + if (changes === 0) return res.status(404).json({ error: 'Worker not found' }); + res.json({ success: true, changes }); + } catch (err) { + res.status(500).json({ error: err.message || String(err) }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/db.js b/api.hyungi.net/db.js new file mode 100644 index 0000000..e099cab --- /dev/null +++ b/api.hyungi.net/db.js @@ -0,0 +1,35 @@ +require('dotenv').config(); +const mysql = require('mysql2/promise'); +const retry = require('async-retry'); + +// 초기화된 pool을 export 하기 위한 변수 +let pool = null; + +const initPool = async () => { + if (pool) return pool; // 이미 초기화된 경우 재사용 + + await retry(async () => { + pool = mysql.createPool({ + host: process.env.DB_HOST, + port: process.env.DB_PORT || 3306, + user: process.env.DB_USER, + password: process.env.DB_PASS, + database: process.env.DB_NAME, + waitForConnections: true, + connectionLimit: 10, + queueLimit: 0 + }); + + const conn = await pool.getConnection(); + await conn.query('SET FOREIGN_KEY_CHECKS = 1'); + console.log(`✅ MariaDB 연결 성공: ${process.env.DB_HOST}:${process.env.DB_PORT || 3306}/${process.env.DB_NAME}`); + conn.release(); + }, { + retries: 10, + minTimeout: 3000 + }); + + return pool; +}; + +module.exports = initPool; \ No newline at end of file diff --git a/api.hyungi.net/dbPool.js b/api.hyungi.net/dbPool.js new file mode 100644 index 0000000..66efac7 --- /dev/null +++ b/api.hyungi.net/dbPool.js @@ -0,0 +1,62 @@ +// dbPool.js +require('dotenv').config(); +const mysql = require('mysql2/promise'); +const retry = require('async-retry'); + +let pool = null; + +async function initPool() { + if (pool) return pool; + + const { + DB_HOST, DB_PORT, DB_USER, + DB_PASSWORD, DB_NAME, + DB_SOCKET, DB_CONN_LIMIT = '10' + } = process.env; + + if (!DB_USER || !DB_PASSWORD || !DB_NAME) { + throw new Error('필수 환경변수(DB_USER, DB_PASSWORD, DB_NAME)가 없습니다.'); + } + if (!DB_SOCKET && !DB_HOST) { + throw new Error('DB_SOCKET이 없으면 DB_HOST가 반드시 필요합니다.'); + } + + await retry(async () => { + const config = { + user: DB_USER, + password: DB_PASSWORD, + database: DB_NAME, + waitForConnections: true, + connectionLimit: parseInt(DB_CONN_LIMIT, 10), + queueLimit: 0, + charset: 'utf8mb4' + }; + if (DB_SOCKET) { + config.socketPath = DB_SOCKET; + } else { + config.host = DB_HOST; + config.port = parseInt(DB_PORT, 10); + } + + pool = mysql.createPool(config); + + // 첫 연결 검증 + const conn = await pool.getConnection(); + await conn.query('SET NAMES utf8mb4'); + conn.release(); + + console.log(`✅ MariaDB 연결 성공: ${DB_SOCKET ? `socket=${DB_SOCKET}` : `${DB_HOST}:${DB_PORT}`}`); + }, { + retries: 5, + factor: 2, + minTimeout: 1000 + }); + + return pool; +} + +async function getDb() { + return initPool(); +} + +module.exports = { getDb }; \ No newline at end of file diff --git a/api.hyungi.net/docker-compose.yml b/api.hyungi.net/docker-compose.yml new file mode 100644 index 0000000..291a90e --- /dev/null +++ b/api.hyungi.net/docker-compose.yml @@ -0,0 +1,103 @@ +version: "3.8" + +services: + db: + image: mariadb:10.9 + container_name: db_hyungi_net + restart: unless-stopped + env_file: + - ./.env + environment: + - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD} + - MYSQL_DATABASE=${DB_NAME} + - MYSQL_USER=${DB_USER} + - MYSQL_PASSWORD=${DB_PASSWORD} + volumes: + - db_data:/var/lib/mysql + - ./migrations:/docker-entrypoint-initdb.d # SQL 마이그레이션 자동 실행 + ports: + - "3306:3306" # 개발 시 외부 접속용 (운영 시 제거) + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] + timeout: 20s + retries: 10 + + api: + build: + context: . + dockerfile: Dockerfile + container_name: api_hyungi_net + depends_on: + db: + condition: service_healthy # DB가 준비된 후 시작 + restart: unless-stopped + ports: + - "${PORT:-3005}:3005" + env_file: + - ./.env + environment: + - NODE_ENV=production + volumes: + - ./public/img:/usr/src/app/public/img:ro + - ./uploads:/usr/src/app/uploads + - ./logs:/usr/src/app/logs # 로그 파일 저장 + - ./routes:/usr/src/app/routes + - ./controllers:/usr/src/app/controllers + - ./models:/usr/src/app/models + - ./index.js:/usr/src/app/index.js + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + + phpmyadmin: + image: phpmyadmin/phpmyadmin:latest + container_name: pma_hyungi_net + depends_on: + - db + restart: unless-stopped + ports: + - "18080:80" + env_file: + - ./.env + environment: + - PMA_HOST=${DB_HOST:-db} + - PMA_USER=${DB_ROOT_USER:-root} + - PMA_PASSWORD=${DB_ROOT_PASSWORD} + - UPLOAD_LIMIT=50M + + # Redis 캐시 서버 (선택사항 - 세션 관리 및 속도 제한용) + # redis: + # image: redis:7-alpine + # container_name: redis_hyungi_net + # restart: unless-stopped + # ports: + # - "6379:6379" + # volumes: + # - redis_data:/data + # command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-yourredispassword} + + # Nginx 리버스 프록시 (선택사항 - HTTPS 및 로드밸런싱용) + # nginx: + # image: nginx:alpine + # container_name: nginx_hyungi_net + # restart: unless-stopped + # ports: + # - "80:80" + # - "443:443" + # volumes: + # - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro + # - ./nginx/ssl:/etc/nginx/ssl:ro + # depends_on: + # - api + +volumes: + db_data: + external: true + name: 7a5a13668b77b18bc1efaf1811d09560aa3be0e722d782e8460cb74f37328d81 # 기존 볼륨명으로 연결 + # redis_data: # Redis 사용 시 주석 해제 + +networks: + default: + name: hyungi_network \ No newline at end of file diff --git a/api.hyungi.net/docker-compose.yml.backup b/api.hyungi.net/docker-compose.yml.backup new file mode 100644 index 0000000..f81c2f4 --- /dev/null +++ b/api.hyungi.net/docker-compose.yml.backup @@ -0,0 +1,99 @@ +version: "3.8" + +services: + db: + image: mariadb:10.9 + container_name: db_hyungi_net + restart: unless-stopped + env_file: + - ./.env + environment: + - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD} + - MYSQL_DATABASE=${DB_NAME} + - MYSQL_USER=${DB_USER} + - MYSQL_PASSWORD=${DB_PASSWORD} + volumes: + - db_data:/var/lib/mysql + - ./migrations:/docker-entrypoint-initdb.d # SQL 마이그레이션 자동 실행 + ports: + - "3306:3306" # 개발 시 외부 접속용 (운영 시 제거) + healthcheck: + test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] + timeout: 20s + retries: 10 + + api: + build: + context: . + dockerfile: Dockerfile + container_name: api_hyungi_net + depends_on: + db: + condition: service_healthy # DB가 준비된 후 시작 + restart: unless-stopped + ports: + - "${PORT:-3005}:3005" + env_file: + - ./.env + environment: + - NODE_ENV=production + volumes: + - ./public/img:/usr/src/app/public/img:ro + - ./uploads:/usr/src/app/uploads + - ./logs:/usr/src/app/logs # 로그 파일 저장 + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + + phpmyadmin: + image: phpmyadmin/phpmyadmin:latest + container_name: pma_hyungi_net + depends_on: + - db + restart: unless-stopped + ports: + - "18080:80" + env_file: + - ./.env + environment: + - PMA_HOST=${DB_HOST:-db} + - PMA_USER=${DB_ROOT_USER:-root} + - PMA_PASSWORD=${DB_ROOT_PASSWORD} + - UPLOAD_LIMIT=50M + + # Redis 캐시 서버 (선택사항 - 세션 관리 및 속도 제한용) + # redis: + # image: redis:7-alpine + # container_name: redis_hyungi_net + # restart: unless-stopped + # ports: + # - "6379:6379" + # volumes: + # - redis_data:/data + # command: redis-server --appendonly yes --requirepass ${REDIS_PASSWORD:-yourredispassword} + + # Nginx 리버스 프록시 (선택사항 - HTTPS 및 로드밸런싱용) + # nginx: + # image: nginx:alpine + # container_name: nginx_hyungi_net + # restart: unless-stopped + # ports: + # - "80:80" + # - "443:443" + # volumes: + # - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro + # - ./nginx/ssl:/etc/nginx/ssl:ro + # depends_on: + # - api + +volumes: + db_data: + external: true + name: 7a5a13668b77b18bc1efaf1811d09560aa3be0e722d782e8460cb74f37328d81 # 기존 볼륨명으로 연결 + # redis_data: # Redis 사용 시 주석 해제 + +networks: + default: + name: hyungi_network \ No newline at end of file diff --git a/api.hyungi.net/ecosystem.config.js b/api.hyungi.net/ecosystem.config.js new file mode 100644 index 0000000..031b363 --- /dev/null +++ b/api.hyungi.net/ecosystem.config.js @@ -0,0 +1,16 @@ +module.exports = { + apps: [ + { + name: 'hyungi-api', + script: './index.js', + env: { + NODE_ENV: 'development' + }, + env_production: { + NODE_ENV: 'production' + }, + // 메모리 200MB 이상일 때 자동 재시작 + max_memory_restart: '200M' + } + ] +} \ No newline at end of file diff --git a/api.hyungi.net/hyungi.sql b/api.hyungi.net/hyungi.sql new file mode 100644 index 0000000..4ba84ac --- /dev/null +++ b/api.hyungi.net/hyungi.sql @@ -0,0 +1,2563 @@ +-- phpMyAdmin SQL Dump +-- version 5.2.2 +-- https://www.phpmyadmin.net/ +-- +-- 호스트: db_hyungi_net +-- 생성 시간: 25-06-27 23:07 +-- 서버 버전: 10.9.8-MariaDB-1:10.9.8+maria~ubu2204 +-- PHP 버전: 8.2.27 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +START TRANSACTION; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; + +-- +-- 데이터베이스: `hyungi` +-- + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `activity_logs` +-- + +CREATE TABLE `activity_logs` ( + `log_id` int(11) NOT NULL, + `user_id` int(11) DEFAULT NULL, + `activity_type` varchar(100) DEFAULT NULL, + `table_name` varchar(50) DEFAULT NULL, + `record_id` int(11) DEFAULT NULL, + `action` enum('create','read','update','delete') DEFAULT NULL, + `ip_address` varchar(45) DEFAULT NULL, + `user_agent` text DEFAULT NULL, + `created_at` datetime DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `CuttingPlan` +-- + +CREATE TABLE `CuttingPlan` ( + `cutting_plan_id` int(11) NOT NULL, + `project_id` int(11) NOT NULL, + `drawing_name` varchar(255) NOT NULL, + `area_number` varchar(100) DEFAULT NULL, + `spool_number` varchar(255) DEFAULT NULL, + `length` decimal(10,2) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + `updated_at` timestamp NULL DEFAULT current_timestamp(), + `spec_id` int(11) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `DailyIssueReports` +-- + +CREATE TABLE `DailyIssueReports` ( + `id` int(11) NOT NULL, + `date` date NOT NULL, + `worker_id` int(11) NOT NULL, + `project_id` int(11) NOT NULL, + `issue_type_id` int(11) DEFAULT NULL, + `description` text DEFAULT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + `start_time` time NOT NULL, + `end_time` time NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- +-- 테이블의 덤프 데이터 `DailyIssueReports` +-- + +INSERT INTO `DailyIssueReports` (`id`, `date`, `worker_id`, `project_id`, `issue_type_id`, `description`, `created_at`, `start_time`, `end_time`) VALUES +(1, '2025-06-02', 1, 7, 5, NULL, '2025-06-02 05:54:35', '10:00:00', '11:30:00'), +(2, '2025-06-02', 9, 7, 5, NULL, '2025-06-02 05:54:35', '10:00:00', '11:30:00'), +(3, '2025-06-02', 7, 7, 5, NULL, '2025-06-02 05:54:35', '10:00:00', '11:30:00'), +(4, '2025-06-04', 10, 7, 3, NULL, '2025-06-04 01:54:03', '10:00:00', '11:30:00'), +(5, '2025-06-04', 6, 7, 3, NULL, '2025-06-04 01:54:03', '10:00:00', '11:30:00'), +(6, '2025-06-04', 3, 7, 3, NULL, '2025-06-04 01:54:03', '10:00:00', '11:30:00'), +(7, '2025-06-11', 10, 7, 6, NULL, '2025-06-10 08:56:09', '07:30:00', '08:00:00'), +(8, '2025-06-11', 6, 7, 6, NULL, '2025-06-10 08:56:09', '07:30:00', '08:00:00'), +(9, '2025-06-11', 3, 7, 6, NULL, '2025-06-10 08:56:09', '07:30:00', '08:00:00'); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `daily_worker_summary` +-- + +CREATE TABLE `daily_worker_summary` ( + `id` int(11) NOT NULL, + `report_date` date NOT NULL, + `worker_id` int(11) NOT NULL, + `total_hours` decimal(4,2) NOT NULL DEFAULT 8.00 COMMENT '총 근무시간', + `work_status` enum('normal','annual_leave','half_leave','overtime') DEFAULT 'normal' COMMENT '근무 상태', + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `daily_work_reports` +-- + +CREATE TABLE `daily_work_reports` ( + `id` int(11) NOT NULL, + `report_date` date NOT NULL COMMENT '작업 날짜', + `worker_id` int(11) NOT NULL COMMENT '작업자 ID', + `project_id` int(11) NOT NULL COMMENT '프로젝트 ID', + `work_type_id` int(11) NOT NULL COMMENT '작업 유형 ID', + `work_status_id` int(11) DEFAULT 1 COMMENT '업무 상태 ID (1:정규, 2:에러)', + `error_type_id` int(11) DEFAULT NULL COMMENT '에러 유형 ID (에러일 때만)', + `work_hours` decimal(4,2) NOT NULL COMMENT '작업 시간', + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `created_by` int(11) NOT NULL DEFAULT 1 COMMENT '작성자 user_id', + `updated_by` int(11) DEFAULT NULL COMMENT '수정자 user_id' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 테이블의 덤프 데이터 `daily_work_reports` +-- + +INSERT INTO `daily_work_reports` (`id`, `report_date`, `worker_id`, `project_id`, `work_type_id`, `work_status_id`, `error_type_id`, `work_hours`, `created_at`, `updated_at`, `created_by`, `updated_by`) VALUES +(14, '2025-06-02', 1, 4, 3, 1, NULL, 8.00, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), +(15, '2025-06-02', 3, 4, 3, 1, NULL, 8.00, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), +(16, '2025-06-02', 4, 4, 3, 1, NULL, 8.00, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), +(17, '2025-06-02', 6, 4, 3, 1, NULL, 8.00, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), +(18, '2025-06-02', 7, 4, 3, 1, NULL, 8.00, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), +(19, '2025-06-02', 9, 4, 3, 1, NULL, 8.00, '2025-06-16 05:10:23', '2025-06-16 05:10:23', 1, NULL), +(20, '2025-06-02', 2, 3, 2, 1, NULL, 8.00, '2025-06-16 05:10:47', '2025-06-16 05:10:47', 1, NULL), +(21, '2025-06-04', 1, 4, 3, 1, NULL, 8.00, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), +(22, '2025-06-04', 3, 4, 3, 1, NULL, 8.00, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), +(23, '2025-06-04', 5, 4, 3, 1, NULL, 8.00, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), +(24, '2025-06-04', 7, 4, 3, 1, NULL, 8.00, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), +(25, '2025-06-04', 9, 4, 3, 1, NULL, 8.00, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), +(26, '2025-06-04', 10, 4, 3, 1, NULL, 8.00, '2025-06-16 05:11:37', '2025-06-16 05:11:37', 1, NULL), +(27, '2025-06-04', 2, 3, 2, 1, NULL, 8.00, '2025-06-16 05:12:07', '2025-06-16 05:12:07', 1, NULL), +(28, '2025-06-04', 6, 3, 2, 1, NULL, 8.00, '2025-06-16 05:12:07', '2025-06-16 05:12:07', 1, NULL), +(29, '2025-06-04', 8, 3, 2, 1, NULL, 8.00, '2025-06-16 05:12:07', '2025-06-16 05:12:07', 1, NULL), +(30, '2025-06-05', 1, 4, 3, 2, 1, 8.00, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), +(31, '2025-06-05', 3, 4, 3, 2, 1, 8.00, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), +(32, '2025-06-05', 4, 4, 3, 2, 1, 8.00, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), +(33, '2025-06-05', 7, 4, 3, 2, 1, 8.00, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), +(34, '2025-06-05', 10, 4, 3, 2, 1, 8.00, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), +(35, '2025-06-05', 9, 4, 3, 2, 1, 8.00, '2025-06-16 05:12:57', '2025-06-16 05:12:57', 1, NULL), +(36, '2025-06-05', 2, 3, 2, 1, NULL, 8.00, '2025-06-16 05:13:56', '2025-06-16 05:13:56', 1, NULL), +(37, '2025-06-05', 5, 3, 2, 1, NULL, 8.00, '2025-06-16 05:13:56', '2025-06-16 05:13:56', 1, NULL), +(38, '2025-06-05', 6, 3, 2, 1, NULL, 8.00, '2025-06-16 05:13:56', '2025-06-16 05:13:56', 1, NULL), +(39, '2025-06-05', 8, 3, 2, 1, NULL, 8.00, '2025-06-16 05:13:56', '2025-06-16 05:13:56', 1, NULL), +(40, '2025-06-16', 5, 3, 2, 1, NULL, 8.00, '2025-06-16 06:12:01', '2025-06-16 06:12:01', 5, NULL), +(43, '2025-06-16', 2, 3, 2, 1, NULL, 8.00, '2025-06-16 06:12:01', '2025-06-16 06:12:01', 5, NULL), +(44, '2025-06-16', 6, 3, 2, 2, 4, 4.00, '2025-06-16 06:13:02', '2025-06-16 06:13:02', 5, NULL), +(45, '2025-06-16', 6, 3, 2, 1, NULL, 4.00, '2025-06-16 06:13:50', '2025-06-16 06:13:50', 5, NULL), +(46, '2025-06-16', 8, 3, 2, 2, 4, 4.00, '2025-06-16 06:15:22', '2025-06-16 06:15:22', 5, NULL), +(47, '2025-06-16', 8, 3, 2, 1, NULL, 4.00, '2025-06-16 06:15:22', '2025-06-16 06:15:22', 5, NULL), +(48, '2025-06-16', 4, 4, 3, 2, 1, 8.00, '2025-06-16 06:46:44', '2025-06-16 06:46:44', 3, NULL), +(50, '2025-06-16', 1, 4, 3, 2, 1, 8.00, '2025-06-16 06:46:44', '2025-06-16 06:46:44', 3, NULL), +(51, '2025-06-16', 9, 4, 3, 1, NULL, 8.00, '2025-06-16 06:48:29', '2025-06-16 06:48:29', 3, NULL), +(52, '2025-06-16', 10, 4, 3, 1, NULL, 6.00, '2025-06-16 06:50:09', '2025-06-16 06:50:09', 6, NULL), +(53, '2025-06-16', 10, 4, 3, 2, 1, 2.00, '2025-06-16 06:50:09', '2025-06-16 06:50:09', 6, NULL), +(54, '2025-06-16', 3, 4, 3, 1, NULL, 6.00, '2025-06-16 06:50:09', '2025-06-16 06:50:09', 6, NULL), +(55, '2025-06-16', 3, 4, 3, 2, 1, 2.00, '2025-06-16 06:50:09', '2025-06-16 06:50:09', 6, NULL), +(56, '2025-06-17', 2, 3, 2, 1, NULL, 8.00, '2025-06-17 08:23:41', '2025-06-17 08:23:41', 5, NULL), +(57, '2025-06-17', 2, 3, 2, 1, NULL, 2.00, '2025-06-17 08:23:41', '2025-06-17 08:23:41', 5, NULL), +(58, '2025-06-17', 5, 3, 2, 1, NULL, 8.00, '2025-06-17 08:23:41', '2025-06-17 08:23:41', 5, NULL), +(59, '2025-06-17', 5, 3, 2, 1, NULL, 2.00, '2025-06-17 08:23:41', '2025-06-17 08:23:41', 5, NULL), +(60, '2025-06-17', 6, 3, 2, 1, NULL, 8.00, '2025-06-17 08:24:33', '2025-06-17 08:24:33', 5, NULL), +(61, '2025-06-17', 6, 3, 2, 2, 4, 2.00, '2025-06-17 08:24:33', '2025-06-17 08:24:33', 5, NULL), +(62, '2025-06-17', 8, 3, 2, 1, NULL, 8.00, '2025-06-17 08:24:33', '2025-06-17 08:24:33', 5, NULL), +(63, '2025-06-17', 8, 3, 2, 2, 4, 2.00, '2025-06-17 08:24:33', '2025-06-17 08:24:33', 5, NULL), +(65, '2025-06-17', 9, 4, 3, 2, 1, 4.00, '2025-06-17 08:25:24', '2025-06-17 08:25:24', 3, NULL), +(66, '2025-06-17', 1, 4, 3, 2, 1, 4.00, '2025-06-17 08:27:06', '2025-06-17 08:27:06', 3, NULL), +(67, '2025-06-17', 4, 4, 3, 2, 1, 4.00, '2025-06-17 08:27:06', '2025-06-17 08:27:06', 3, NULL), +(68, '2025-06-17', 1, 4, 3, 1, NULL, 4.00, '2025-06-17 08:31:06', '2025-06-17 08:31:06', 3, NULL), +(69, '2025-06-17', 9, 4, 3, 1, NULL, 4.00, '2025-06-17 08:31:06', '2025-06-17 08:31:06', 3, NULL), +(70, '2025-06-17', 4, 4, 3, 1, NULL, 4.00, '2025-06-17 08:31:06', '2025-06-17 08:31:06', 3, NULL), +(71, '2025-06-17', 9, 4, 3, 1, NULL, 2.00, '2025-06-17 08:33:06', '2025-06-17 08:33:06', 3, NULL), +(72, '2025-06-17', 4, 4, 3, 1, NULL, 2.00, '2025-06-17 08:33:06', '2025-06-17 08:33:06', 3, NULL), +(73, '2025-06-17', 1, 4, 3, 1, NULL, 2.00, '2025-06-17 08:33:06', '2025-06-17 08:33:06', 3, NULL), +(74, '2025-06-17', 10, 4, 3, 1, NULL, 8.00, '2025-06-17 08:34:11', '2025-06-17 08:34:11', 6, NULL), +(75, '2025-06-17', 10, 4, 3, 2, 1, 2.00, '2025-06-17 08:34:11', '2025-06-17 08:34:11', 6, NULL), +(76, '2025-06-17', 3, 4, 3, 1, NULL, 8.00, '2025-06-17 08:34:11', '2025-06-17 08:34:11', 6, NULL), +(77, '2025-06-17', 3, 4, 3, 2, 1, 2.00, '2025-06-17 08:34:11', '2025-06-17 08:34:11', 6, NULL), +(78, '2025-06-18', 6, 3, 2, 1, NULL, 8.00, '2025-06-18 08:40:27', '2025-06-18 08:40:27', 5, NULL), +(79, '2025-06-18', 2, 3, 2, 1, NULL, 8.00, '2025-06-18 08:40:27', '2025-06-18 08:40:27', 5, NULL), +(80, '2025-06-18', 8, 3, 2, 1, NULL, 8.00, '2025-06-18 08:40:27', '2025-06-18 08:40:27', 5, NULL), +(81, '2025-06-18', 2, 3, 2, 1, NULL, 2.00, '2025-06-18 08:41:02', '2025-06-18 08:41:02', 5, NULL), +(82, '2025-06-18', 6, 3, 2, 1, NULL, 2.00, '2025-06-18 08:41:03', '2025-06-18 08:41:03', 5, NULL), +(83, '2025-06-18', 8, 3, 2, 1, NULL, 2.00, '2025-06-18 08:41:03', '2025-06-18 08:41:03', 5, NULL), +(84, '2025-06-18', 5, 4, 3, 1, NULL, 8.00, '2025-06-18 08:41:45', '2025-06-18 08:41:45', 5, NULL), +(85, '2025-06-18', 5, 4, 3, 1, NULL, 2.00, '2025-06-18 08:41:45', '2025-06-18 08:41:45', 5, NULL), +(86, '2025-06-18', 10, 4, 3, 1, NULL, 9.00, '2025-06-18 08:47:55', '2025-06-18 08:47:55', 6, NULL), +(87, '2025-06-18', 10, 4, 3, 2, 1, 1.00, '2025-06-18 08:47:55', '2025-06-18 08:47:55', 6, NULL), +(88, '2025-06-18', 3, 4, 3, 1, NULL, 9.00, '2025-06-18 08:47:55', '2025-06-18 08:47:55', 6, NULL), +(89, '2025-06-18', 3, 4, 3, 2, 1, 1.00, '2025-06-18 08:47:55', '2025-06-18 08:47:55', 6, NULL), +(90, '2025-06-18', 4, 4, 3, 2, 1, 4.00, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), +(91, '2025-06-18', 4, 4, 3, 1, NULL, 6.00, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), +(92, '2025-06-18', 9, 4, 3, 2, 1, 4.00, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), +(93, '2025-06-18', 9, 4, 3, 1, NULL, 6.00, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), +(94, '2025-06-18', 1, 4, 3, 2, 1, 4.00, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), +(95, '2025-06-18', 1, 4, 3, 1, NULL, 6.00, '2025-06-18 08:50:19', '2025-06-18 08:50:19', 3, NULL), +(96, '2025-06-18', 7, 4, 3, 2, 1, 4.00, '2025-06-18 09:00:17', '2025-06-18 09:00:17', 3, NULL), +(97, '2025-06-18', 7, 4, 3, 1, NULL, 6.00, '2025-06-18 09:00:17', '2025-06-18 09:00:17', 3, NULL), +(98, '2025-06-19', 8, 3, 2, 1, NULL, 8.00, '2025-06-19 06:37:59', '2025-06-19 06:37:59', 5, NULL), +(99, '2025-06-19', 2, 3, 2, 1, NULL, 8.00, '2025-06-19 06:37:59', '2025-06-19 06:37:59', 5, NULL), +(100, '2025-06-19', 10, 4, 3, 1, NULL, 8.00, '2025-06-19 06:59:36', '2025-06-19 06:59:36', 6, NULL), +(101, '2025-06-19', 3, 4, 3, 1, NULL, 8.00, '2025-06-19 06:59:36', '2025-06-19 06:59:36', 6, NULL), +(102, '2025-06-19', 5, 4, 3, 1, NULL, 8.00, '2025-06-19 06:59:36', '2025-06-19 06:59:36', 6, NULL), +(103, '2025-06-19', 9, 4, 3, 1, NULL, 6.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(104, '2025-06-19', 9, 4, 3, 2, 1, 2.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(105, '2025-06-19', 4, 4, 3, 1, NULL, 6.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(106, '2025-06-19', 4, 4, 3, 2, 1, 2.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(107, '2025-06-19', 1, 4, 3, 1, NULL, 6.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(108, '2025-06-19', 1, 4, 3, 2, 1, 2.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(109, '2025-06-19', 7, 4, 3, 1, NULL, 6.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(110, '2025-06-19', 7, 4, 3, 2, 1, 2.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(111, '2025-06-19', 6, 4, 3, 1, NULL, 6.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(112, '2025-06-19', 6, 4, 3, 2, 1, 2.00, '2025-06-19 07:01:02', '2025-06-19 07:01:02', 3, NULL), +(113, '2025-06-20', 9, 4, 3, 2, 1, 2.00, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), +(114, '2025-06-20', 9, 4, 3, 1, NULL, 6.00, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), +(115, '2025-06-20', 4, 4, 3, 2, 1, 2.00, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), +(116, '2025-06-20', 4, 4, 3, 1, NULL, 6.00, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), +(117, '2025-06-20', 7, 4, 3, 2, 1, 2.00, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), +(118, '2025-06-20', 7, 4, 3, 1, NULL, 6.00, '2025-06-20 06:44:01', '2025-06-20 06:44:01', 3, NULL), +(119, '2025-06-20', 6, 4, 3, 2, 1, 2.00, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), +(120, '2025-06-20', 6, 4, 3, 1, NULL, 6.00, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), +(121, '2025-06-20', 1, 4, 3, 2, 1, 2.00, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), +(122, '2025-06-20', 1, 4, 3, 1, NULL, 6.00, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), +(123, '2025-06-20', 5, 4, 3, 2, 1, 2.00, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), +(124, '2025-06-20', 5, 4, 3, 1, NULL, 6.00, '2025-06-20 06:44:02', '2025-06-20 06:44:02', 3, NULL), +(125, '2025-06-20', 10, 4, 3, 1, NULL, 8.00, '2025-06-20 06:45:30', '2025-06-20 06:45:30', 6, NULL), +(126, '2025-06-20', 3, 4, 3, 1, NULL, 8.00, '2025-06-20 06:45:31', '2025-06-20 06:45:31', 6, NULL), +(127, '2025-06-23', 10, 4, 3, 1, NULL, 8.00, '2025-06-23 06:42:58', '2025-06-23 06:42:58', 6, NULL), +(128, '2025-06-23', 3, 4, 3, 1, NULL, 8.00, '2025-06-23 06:42:58', '2025-06-23 06:42:58', 6, NULL), +(129, '2025-06-23', 5, 4, 3, 2, 1, 2.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(130, '2025-06-23', 5, 4, 3, 1, NULL, 6.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(131, '2025-06-23', 1, 4, 3, 2, 1, 2.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(132, '2025-06-23', 1, 4, 3, 1, NULL, 6.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(133, '2025-06-23', 9, 4, 3, 2, 1, 2.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(134, '2025-06-23', 9, 4, 3, 1, NULL, 6.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(135, '2025-06-23', 4, 4, 3, 2, 1, 2.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(136, '2025-06-23', 4, 4, 3, 1, NULL, 6.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(137, '2025-06-23', 7, 4, 3, 2, 1, 2.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(138, '2025-06-23', 7, 4, 3, 1, NULL, 6.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(139, '2025-06-23', 6, 4, 3, 2, 1, 2.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(140, '2025-06-23', 6, 4, 3, 1, NULL, 6.00, '2025-06-23 06:51:28', '2025-06-23 06:51:28', 3, NULL), +(141, '2025-06-24', 10, 4, 3, 1, NULL, 12.00, '2025-06-24 11:10:32', '2025-06-24 11:10:32', 6, NULL), +(142, '2025-06-24', 3, 4, 3, 1, NULL, 12.00, '2025-06-24 11:10:32', '2025-06-24 11:10:32', 6, NULL), +(143, '2025-06-24', 9, 4, 3, 2, 1, 2.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(144, '2025-06-24', 9, 4, 3, 1, NULL, 10.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(145, '2025-06-24', 5, 4, 3, 2, 1, 2.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(146, '2025-06-24', 5, 4, 3, 1, NULL, 10.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(147, '2025-06-24', 4, 4, 3, 2, 1, 2.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(148, '2025-06-24', 4, 4, 3, 1, NULL, 10.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(149, '2025-06-24', 7, 4, 3, 2, 1, 2.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(150, '2025-06-24', 7, 4, 3, 1, NULL, 10.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(151, '2025-06-24', 6, 4, 3, 2, 1, 2.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(152, '2025-06-24', 6, 4, 3, 1, NULL, 10.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(153, '2025-06-24', 1, 4, 3, 2, 1, 2.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(154, '2025-06-24', 1, 4, 3, 1, NULL, 10.00, '2025-06-24 11:11:00', '2025-06-24 11:11:00', 3, NULL), +(155, '2025-06-24', 8, 3, 2, 1, NULL, 8.00, '2025-06-24 11:11:05', '2025-06-24 11:11:05', 5, NULL), +(156, '2025-06-24', 8, 3, 2, 1, NULL, 4.00, '2025-06-24 11:11:05', '2025-06-24 11:11:05', 5, NULL), +(157, '2025-06-24', 2, 3, 2, 1, NULL, 8.00, '2025-06-24 11:11:05', '2025-06-24 11:11:05', 5, NULL), +(158, '2025-06-24', 2, 3, 2, 1, NULL, 4.00, '2025-06-24 11:11:05', '2025-06-24 11:11:05', 5, NULL), +(159, '2025-06-25', 2, 3, 2, 1, NULL, 8.00, '2025-06-25 11:08:04', '2025-06-25 11:08:04', 5, NULL), +(160, '2025-06-25', 2, 3, 2, 1, NULL, 4.00, '2025-06-25 11:08:04', '2025-06-25 11:08:04', 5, NULL), +(161, '2025-06-25', 8, 3, 2, 1, NULL, 8.00, '2025-06-25 11:08:05', '2025-06-25 11:08:05', 5, NULL), +(162, '2025-06-25', 8, 3, 2, 1, NULL, 4.00, '2025-06-25 11:08:05', '2025-06-25 11:08:05', 5, NULL), +(163, '2025-06-25', 10, 4, 3, 1, NULL, 12.00, '2025-06-25 11:11:30', '2025-06-25 11:11:30', 6, NULL), +(164, '2025-06-25', 9, 4, 3, 1, NULL, 12.00, '2025-06-25 11:11:30', '2025-06-25 11:11:30', 6, NULL), +(165, '2025-06-25', 3, 4, 3, 1, NULL, 12.00, '2025-06-25 11:11:30', '2025-06-25 11:11:30', 6, NULL), +(166, '2025-06-25', 6, 4, 3, 1, NULL, 12.00, '2025-06-25 11:11:30', '2025-06-25 11:11:30', 6, NULL), +(167, '2025-06-26', 10, 4, 3, 1, NULL, 12.00, '2025-06-26 10:29:38', '2025-06-26 10:29:38', 3, NULL), +(168, '2025-06-26', 5, 4, 3, 1, NULL, 12.00, '2025-06-26 10:29:38', '2025-06-26 10:29:38', 3, NULL), +(169, '2025-06-26', 7, 4, 3, 1, NULL, 12.00, '2025-06-26 10:29:38', '2025-06-26 10:29:38', 3, NULL), +(170, '2025-06-26', 1, 4, 3, 1, NULL, 12.00, '2025-06-26 10:29:38', '2025-06-26 10:29:38', 3, NULL), +(171, '2025-06-26', 4, 4, 3, 1, NULL, 12.00, '2025-06-26 10:29:38', '2025-06-26 10:29:38', 3, NULL), +(172, '2025-06-26', 8, 3, 2, 1, NULL, 8.00, '2025-06-26 11:11:31', '2025-06-26 11:11:31', 5, NULL), +(173, '2025-06-26', 8, 3, 2, 1, NULL, 4.00, '2025-06-26 11:11:31', '2025-06-26 11:11:31', 5, NULL), +(174, '2025-06-26', 2, 3, 2, 1, NULL, 8.00, '2025-06-26 11:11:32', '2025-06-26 11:11:32', 5, NULL), +(175, '2025-06-26', 2, 3, 2, 1, NULL, 4.00, '2025-06-26 11:11:32', '2025-06-26 11:11:32', 5, NULL), +(176, '2025-06-26', 9, 3, 2, 1, NULL, 8.00, '2025-06-26 11:11:32', '2025-06-26 11:11:32', 5, NULL), +(177, '2025-06-26', 9, 3, 2, 1, NULL, 4.00, '2025-06-26 11:11:32', '2025-06-26 11:11:32', 5, NULL), +(178, '2025-06-26', 3, 3, 2, 1, NULL, 12.00, '2025-06-26 11:19:34', '2025-06-26 11:19:34', 6, NULL), +(179, '2025-06-26', 6, 3, 2, 1, NULL, 12.00, '2025-06-26 11:19:34', '2025-06-26 11:19:34', 6, NULL), +(182, '2025-06-27', 2, 3, 2, 1, NULL, 4.00, '2025-06-27 01:54:40', '2025-06-27 01:54:40', 5, NULL), +(183, '2025-06-27', 9, 4, 3, 1, NULL, 8.00, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), +(184, '2025-06-27', 10, 4, 3, 1, NULL, 8.00, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), +(185, '2025-06-27', 7, 4, 3, 1, NULL, 8.00, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), +(186, '2025-06-27', 5, 4, 3, 1, NULL, 8.00, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), +(187, '2025-06-27', 4, 4, 3, 1, NULL, 8.00, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), +(188, '2025-06-27', 1, 4, 3, 1, NULL, 8.00, '2025-06-27 06:47:43', '2025-06-27 06:47:43', 3, NULL), +(189, '2025-06-27', 3, 3, 2, 1, NULL, 8.00, '2025-06-27 06:49:08', '2025-06-27 06:49:08', 6, NULL), +(191, '2025-06-27', 6, 3, 2, 1, NULL, 4.00, '2025-06-27 06:58:46', '2025-06-27 06:58:46', 6, NULL), +(192, '2025-06-27', 8, 3, 2, 1, NULL, 6.00, '2025-06-27 07:00:10', '2025-06-27 07:00:10', 5, NULL); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `EquipmentList` +-- + +CREATE TABLE `EquipmentList` ( + `equipment_id` int(11) NOT NULL, + `factory_id` int(11) DEFAULT NULL, + `equipment_name` varchar(255) NOT NULL, + `model` varchar(100) DEFAULT NULL, + `status` text DEFAULT 'operational', + `purchase_date` date DEFAULT NULL, + `description` text DEFAULT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + `updated_at` timestamp NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `error_types` +-- + +CREATE TABLE `error_types` ( + `id` int(11) NOT NULL, + `name` varchar(100) NOT NULL COMMENT '에러 유형명', + `description` text DEFAULT NULL COMMENT '에러 설명', + `severity` enum('low','medium','high','critical') DEFAULT 'medium' COMMENT '심각도', + `solution_guide` text DEFAULT NULL COMMENT '해결 가이드', + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 테이블의 덤프 데이터 `error_types` +-- + +INSERT INTO `error_types` (`id`, `name`, `description`, `severity`, `solution_guide`, `created_at`, `updated_at`) VALUES +(1, '설계미스', '설계미스', 'medium', NULL, '2025-06-16 02:21:32', '2025-06-16 03:02:03'), +(2, '외주작업 불량', '입고 자재 불량', 'medium', NULL, '2025-06-16 02:21:32', '2025-06-16 03:02:05'), +(3, '입고지연', '자재 미입고', 'medium', NULL, '2025-06-16 02:21:32', '2025-06-16 03:02:11'), +(4, '작업불량', '작업자 실수', 'medium', NULL, '2025-06-16 02:21:32', '2025-06-16 03:02:13'), +(5, '설비고장', '장비없음', 'medium', NULL, '2025-06-16 02:21:32', '2025-06-16 03:02:16'), +(6, '검사불량', '검사불량', 'medium', NULL, '2025-06-16 02:21:32', '2025-06-24 04:36:18'); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `FactoryInfo` +-- + +CREATE TABLE `FactoryInfo` ( + `factory_id` int(11) NOT NULL, + `factory_name` varchar(255) NOT NULL, + `address` varchar(255) DEFAULT NULL, + `description` text DEFAULT NULL, + `map_image_url` varchar(255) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + `updated_at` timestamp NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 테이블의 덤프 데이터 `FactoryInfo` +-- + +INSERT INTO `FactoryInfo` (`factory_id`, `factory_name`, `address`, `description`, `map_image_url`, `created_at`, `updated_at`) VALUES +(3, '제1공장 휴게공간 및 작업자 사물함', '현대기아로 771-9', '개인 보관함, 컨테이너(휴게공간), 화장실, 흡연장', '/uploads/map_image-1746593523450.png', '2025-05-07 04:52:03', '2025-05-07 04:52:03'), +(4, '제 1공장 공구 및 용접봉 보관 구역', '현대기아로 771-9', '소모품, 공구류, 용접봉 보관 구역', '/uploads/map_image-1746593674259.png', '2025-05-07 04:53:59', '2025-05-07 04:53:59'), +(5, 'ee', 'ee', 'ee', NULL, '2025-06-03 22:13:23', '2025-06-03 22:13:23'); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `IssueTypes` +-- + +CREATE TABLE `IssueTypes` ( + `issue_type_id` int(11) NOT NULL, + `category` varchar(100) NOT NULL, + `subcategory` varchar(100) NOT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- +-- 테이블의 덤프 데이터 `IssueTypes` +-- + +INSERT INTO `IssueTypes` (`issue_type_id`, `category`, `subcategory`) VALUES +(1, '구매팀', '자재입고지연'), +(2, '구매팀', '자재전달 미흡'), +(3, '품질', '검사 내용 전달 미흡'), +(4, '품질', '검사오류'), +(5, '설계', '설계미스(치수)'), +(6, '설계', '설계미스(작업불가)'); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `login_logs` +-- + +CREATE TABLE `login_logs` ( + `log_id` int(11) NOT NULL, + `user_id` int(11) DEFAULT NULL, + `login_time` datetime DEFAULT current_timestamp(), + `logout_time` datetime DEFAULT NULL, + `ip_address` varchar(45) DEFAULT NULL, + `user_agent` text DEFAULT NULL, + `login_status` enum('success','failed','locked') DEFAULT 'success', + `failure_reason` varchar(100) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 테이블의 덤프 데이터 `login_logs` +-- + +INSERT INTO `login_logs` (`log_id`, `user_id`, `login_time`, `logout_time`, `ip_address`, `user_agent`, `login_status`, `failure_reason`) VALUES +(1, 3, '2025-06-15 05:58:39', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(3, 4, '2025-06-15 06:04:06', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(4, 3, '2025-06-15 06:24:53', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), +(5, 3, '2025-06-15 06:24:55', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(6, 3, '2025-06-15 06:32:41', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(7, 3, '2025-06-15 07:03:19', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), +(8, 3, '2025-06-15 07:03:21', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), +(9, 3, '2025-06-15 07:03:25', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(10, 1, '2025-06-15 07:40:16', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(11, 6, '2025-06-15 07:42:02', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(12, 3, '2025-06-15 07:43:30', NULL, '118.235.6.135', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(13, 3, '2025-06-15 22:02:59', NULL, '118.235.6.29', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(14, 4, '2025-06-15 22:15:25', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(15, 3, '2025-06-15 22:15:34', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(16, 6, '2025-06-15 22:15:35', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'failed', 'invalid_password'), +(17, 6, '2025-06-15 22:15:52', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(18, 3, '2025-06-15 22:16:39', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(19, 3, '2025-06-15 22:17:14', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(20, 6, '2025-06-15 22:21:44', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(21, 1, '2025-06-15 22:21:52', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(22, 6, '2025-06-15 22:22:06', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(23, 5, '2025-06-15 22:22:44', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(24, 6, '2025-06-15 22:23:58', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(25, 3, '2025-06-15 22:24:49', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(26, 3, '2025-06-15 22:30:18', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(27, 3, '2025-06-15 22:31:21', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(28, 5, '2025-06-15 22:44:31', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(29, 4, '2025-06-15 22:57:51', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), +(30, 4, '2025-06-15 22:57:52', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), +(31, 4, '2025-06-15 22:57:54', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), +(32, 4, '2025-06-15 22:57:55', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(33, 4, '2025-06-15 23:11:30', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(34, 4, '2025-06-15 23:28:04', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(35, 3, '2025-06-15 23:33:35', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(36, 3, '2025-06-16 00:58:53', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(37, 3, '2025-06-16 01:15:46', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(38, 5, '2025-06-16 01:16:43', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(39, 1, '2025-06-16 01:25:57', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), +(40, 1, '2025-06-16 01:26:08', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(41, 3, '2025-06-16 02:27:20', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(42, 3, '2025-06-16 02:45:59', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(43, 3, '2025-06-16 03:04:13', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(44, 3, '2025-06-16 03:17:28', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(45, 5, '2025-06-16 03:17:55', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(46, 3, '2025-06-16 03:18:56', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(47, 5, '2025-06-16 03:19:13', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(48, 1, '2025-06-16 03:55:56', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(49, 1, '2025-06-16 04:24:37', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(50, 1, '2025-06-16 04:51:36', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(51, 1, '2025-06-16 05:07:05', NULL, '118.235.7.233', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(52, 1, '2025-06-16 05:07:59', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(53, 1, '2025-06-16 05:43:14', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(54, 5, '2025-06-16 06:11:09', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(55, 1, '2025-06-16 06:19:46', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(56, 1, '2025-06-16 06:23:35', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(57, 1, '2025-06-16 06:39:12', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(58, 3, '2025-06-16 06:45:26', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(59, 6, '2025-06-16 06:46:11', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(60, 1, '2025-06-16 21:18:09', NULL, '118.235.7.45', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(61, 1, '2025-06-17 08:15:45', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(62, 5, '2025-06-17 08:22:58', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(63, 3, '2025-06-17 08:23:05', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'failed', 'invalid_password'), +(64, 3, '2025-06-17 08:23:21', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(65, 3, '2025-06-17 08:28:02', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(66, 3, '2025-06-17 08:32:25', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(67, 6, '2025-06-17 08:33:07', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(68, 1, '2025-06-17 08:36:01', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(69, 5, '2025-06-17 09:00:56', NULL, '118.235.7.173', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(70, 3, '2025-06-18 02:30:13', NULL, '118.235.6.77', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(71, 1, '2025-06-18 08:07:27', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'failed', 'invalid_password'), +(72, 1, '2025-06-18 08:07:47', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(73, 5, '2025-06-18 08:39:59', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(74, 6, '2025-06-18 08:46:53', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(75, 3, '2025-06-18 08:47:03', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(76, 6, '2025-06-18 08:57:48', NULL, '118.235.7.5', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(77, 5, '2025-06-18 08:58:14', NULL, '118.235.7.5', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(78, 3, '2025-06-18 08:59:12', NULL, '118.235.7.5', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(79, 5, '2025-06-19 06:37:35', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(80, 3, '2025-06-19 06:57:01', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(81, 6, '2025-06-19 06:57:22', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(82, 5, '2025-06-19 06:57:56', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(83, 6, '2025-06-19 06:58:58', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(84, 3, '2025-06-19 06:59:30', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(85, 3, '2025-06-20 06:42:26', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(86, 6, '2025-06-20 06:45:06', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(87, 5, '2025-06-20 06:49:26', NULL, '118.235.7.134', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(88, 3, '2025-06-20 06:49:47', NULL, '118.235.7.134', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(89, 6, '2025-06-20 06:50:17', NULL, '118.235.7.134', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(90, 3, '2025-06-20 22:46:20', NULL, '192.168.1.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(91, 1, '2025-06-23 05:03:09', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(92, 6, '2025-06-23 06:41:16', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(93, 3, '2025-06-23 06:49:11', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(94, 6, '2025-06-23 06:50:01', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(95, 5, '2025-06-23 06:50:28', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(96, 1, '2025-06-24 05:24:17', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(97, 3, '2025-06-24 05:25:52', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(98, 1, '2025-06-24 09:22:29', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(99, 3, '2025-06-24 11:09:38', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(100, 6, '2025-06-24 11:09:48', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(101, 5, '2025-06-24 11:10:23', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(102, 3, '2025-06-24 11:11:29', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(103, 5, '2025-06-24 11:12:06', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(104, 6, '2025-06-24 11:12:31', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(105, 3, '2025-06-24 21:41:01', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(106, 3, '2025-06-25 04:40:44', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(107, 3, '2025-06-25 05:24:57', NULL, '118.235.6.179', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(108, 1, '2025-06-25 07:05:20', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(109, 1, '2025-06-25 07:06:41', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(110, 3, '2025-06-25 07:09:27', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(111, 3, '2025-06-25 08:49:02', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(112, 3, '2025-06-25 09:20:05', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(113, 3, '2025-06-25 09:40:11', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(114, 3, '2025-06-25 09:57:27', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(115, 1, '2025-06-25 10:11:03', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(116, 1, '2025-06-25 10:26:30', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(117, 1, '2025-06-25 10:49:29', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(118, 5, '2025-06-25 11:07:16', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(119, 6, '2025-06-25 11:10:41', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(120, 6, '2025-06-25 11:13:55', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(121, 5, '2025-06-25 11:14:25', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(122, 6, '2025-06-25 11:20:16', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(123, 1, '2025-06-25 11:24:57', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(124, 3, '2025-06-26 10:27:57', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(125, 5, '2025-06-26 11:10:47', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(126, 6, '2025-06-26 11:15:57', NULL, '118.235.6.58', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(127, 3, '2025-06-26 11:17:07', NULL, '118.235.6.58', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(128, 5, '2025-06-26 11:17:40', NULL, '118.235.6.58', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(129, 6, '2025-06-26 11:19:00', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(130, 1, '2025-06-26 22:15:30', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(131, 1, '2025-06-26 22:31:02', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(132, 1, '2025-06-26 22:47:22', NULL, '123.142.67.74', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Safari/605.1.15', 'success', NULL), +(133, 5, '2025-06-27 01:52:48', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(134, 5, '2025-06-27 01:53:58', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(135, 3, '2025-06-27 06:47:09', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(136, 6, '2025-06-27 06:48:39', NULL, '123.142.67.74', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36 Edg/137.0.0.0', 'success', NULL), +(137, 3, '2025-06-27 06:57:15', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(138, 5, '2025-06-27 06:57:34', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(139, 6, '2025-06-27 06:57:59', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(140, 3, '2025-06-27 06:59:04', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL), +(141, 5, '2025-06-27 06:59:29', NULL, '123.142.67.74', 'Mozilla/5.0 (iPhone; CPU iPhone OS 18_5 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/18.5 Mobile/15E148 Safari/604.1', 'success', NULL); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `password_change_logs` +-- + +CREATE TABLE `password_change_logs` ( + `log_id` int(11) NOT NULL, + `user_id` int(11) NOT NULL, + `changed_by_user_id` int(11) DEFAULT NULL, + `changed_at` datetime DEFAULT current_timestamp(), + `change_type` enum('self','admin','reset','initial') DEFAULT 'self', + `ip_address` varchar(45) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 테이블의 덤프 데이터 `password_change_logs` +-- + +INSERT INTO `password_change_logs` (`log_id`, `user_id`, `changed_by_user_id`, `changed_at`, `change_type`, `ip_address`) VALUES +(1, 4, NULL, '2025-06-15 06:03:42', 'admin', NULL), +(2, 3, NULL, '2025-06-15 06:03:52', 'admin', NULL), +(3, 3, 3, '2025-06-15 06:32:30', 'self', NULL), +(4, 3, 1, '2025-06-15 07:40:39', 'admin', NULL), +(5, 5, 1, '2025-06-15 07:41:02', 'initial', NULL), +(6, 6, 1, '2025-06-15 07:41:32', 'initial', NULL); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `PipeSpecs` +-- + +CREATE TABLE `PipeSpecs` ( + `spec_id` int(11) NOT NULL, + `material` varchar(50) NOT NULL COMMENT '재질 (예: SS400, STS304)', + `diameter_in` varchar(10) NOT NULL COMMENT '직경 (inch, 예: 2")', + `schedule` varchar(50) NOT NULL COMMENT '스케줄 (예: STD, SCH10, SCH40)' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; + +-- +-- 테이블의 덤프 데이터 `PipeSpecs` +-- + +INSERT INTO `PipeSpecs` (`spec_id`, `material`, `diameter_in`, `schedule`) VALUES +(2, '516-70N', '1', 'SCH80'), +(1, 'A106', '3/4', 'SCH80'); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `Processes` +-- + +CREATE TABLE `Processes` ( + `process_id` int(11) NOT NULL, + `project_id` int(11) NOT NULL, + `process_name` varchar(255) NOT NULL, + `process_start` date NOT NULL, + `process_end` date DEFAULT NULL, + `planned_worker_count` int(11) NOT NULL, + `process_description` text DEFAULT NULL, + `note` text DEFAULT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + `updated_at` timestamp NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `Projects` +-- + +CREATE TABLE `Projects` ( + `project_id` int(11) NOT NULL, + `job_no` varchar(50) NOT NULL, + `project_name` varchar(255) NOT NULL, + `contract_date` date DEFAULT NULL, + `due_date` date DEFAULT NULL, + `delivery_method` varchar(100) DEFAULT NULL, + `site` varchar(100) DEFAULT NULL, + `pm` varchar(100) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + `updated_at` timestamp NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 테이블의 덤프 데이터 `Projects` +-- + +INSERT INTO `Projects` (`project_id`, `job_no`, `project_name`, `contract_date`, `due_date`, `delivery_method`, `site`, `pm`, `created_at`, `updated_at`) VALUES +(1, 'TKO-24008P', 'YHP Project', '2024-05-16', '2025-05-16', 'FOB', 'Quang Ninh(Vietnam)', '장형태', '2025-04-15 22:40:28', '2025-04-15 22:40:28'), +(2, 'TKG-24009P', '한화에어로스페이스 순천', '2024-06-05', '2025-05-31', '.', '순천', '장형태', '2025-04-15 22:42:41', '2025-04-15 22:42:41'), +(3, 'TKG-24011P', '효성화학 에틸렌 탱크 건설공사', '2024-06-22', '2025-12-25', '.', '울산', '김길종', '2025-04-15 22:43:53', '2025-04-15 22:43:53'), +(4, 'TKG-24013P', '김천 솔라 파워 그린 수소 Project', '2024-10-08', '2025-07-25', '.', '김천', '김길종', '2025-04-15 22:44:57', '2025-04-15 22:44:57'), +(5, 'TKG-24016P', 'LG Chem P3RE Project', '2024-11-27', '2025-09-30', '.', '.', '장형태', '2025-04-15 22:46:36', '2025-04-15 22:46:36'), +(7, 'TKO-25003F', '25년 안전보건시설설비', '2025-01-03', '2025-12-31', '.', '.', '.', '2025-04-15 22:47:32', '2025-04-15 22:47:32'), +(8, 'TKG-25007P', 'P Project', '2025-01-16', '2025-10-31', '.', '오창읍', '장형태', '2025-04-15 22:48:50', '2025-04-15 22:48:50'), +(10, 'TKR-25008P', 'DIG Airgas LG CHEM', '2025-01-23', '2025-10-15', '.', '여수', '서태원', '2025-04-15 22:50:05', '2025-04-15 22:50:05'), +(11, 'TKR-25010P', 'FK FISCHER Project', '2025-03-12', '2025-11-30', '.', '울산', '전상신', '2025-04-15 22:51:12', '2025-04-15 22:51:12'), +(12, 'TKO-24007P', 'MP7 Project', '2024-07-03', '2025-01-05', '.', '.', '윤지민', '2025-04-15 23:56:26', '2025-04-15 23:56:26'), +(13, '연차/휴무', '연차/휴무', '2025-01-01', '2025-12-31', '.', '.', '.', '2025-04-16 01:58:23', '2025-04-16 01:58:23'); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `Tasks` +-- + +CREATE TABLE `Tasks` ( + `task_id` int(11) NOT NULL, + `category` varchar(255) NOT NULL, + `subcategory` varchar(255) DEFAULT NULL, + `task_name` varchar(255) NOT NULL, + `description` text DEFAULT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + `updated_at` timestamp NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 테이블의 덤프 데이터 `Tasks` +-- + +INSERT INTO `Tasks` (`task_id`, `category`, `subcategory`, `task_name`, `description`, `created_at`, `updated_at`) VALUES +(1, 'Base', 'Fabrication', '용접', '...', '2025-04-15 10:41:43', '2025-04-15 10:41:43'), +(3, 'Vessel', 'MI and Marking', 'Marking', '..', '2025-04-15 22:25:58', '2025-04-15 22:25:58'), +(4, 'Vessel', 'Cutting', '자재 커팅', '..', '2025-04-15 22:26:17', '2025-04-15 22:26:17'), +(5, 'Vessel', 'Fabrication', '용접', '..', '2025-04-15 22:26:43', '2025-04-15 22:26:43'), +(7, 'PKG', 'Pipe Pre-Fabrication', '취부&용접', '배관사 1명\n용접사 1명', '2025-04-15 22:37:14', '2025-04-15 22:37:14'), +(8, 'PKG', '1st Piping Assembly', '1차 조립', '.', '2025-04-15 22:38:49', '2025-04-15 22:38:49'), +(9, 'PKG', 'Re-Assembly', '재조립', '.', '2025-04-15 22:39:18', '2025-04-15 22:39:18'), +(13, '작업지원', '구매팀', '.', '.', '2025-04-16 03:03:40', '2025-04-16 03:03:40'), +(14, '기타', '시설설비제작', '.', '.', '2025-04-16 03:30:53', '2025-04-16 03:30:53'), +(15, '기타', '휴가/연차/휴무', '.', '.', '2025-04-16 05:18:13', '2025-04-16 05:18:13'), +(16, 'PKG', '제품설치', '설치작업', 'Skid, 용기 등 설치', '2025-04-29 04:39:36', '2025-04-29 04:39:36'), +(18, '작업지원', '품질팀', 'test지원', '.', '2025-06-25 07:07:08', '2025-06-25 07:07:08'); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `uploaded_documents` +-- + +CREATE TABLE `uploaded_documents` ( + `id` int(11) NOT NULL, + `title` varchar(255) NOT NULL, + `tags` varchar(255) DEFAULT NULL, + `description` text DEFAULT NULL, + `original_name` varchar(255) DEFAULT NULL, + `stored_name` varchar(255) NOT NULL, + `file_path` varchar(500) DEFAULT NULL, + `file_type` varchar(50) DEFAULT NULL, + `file_size` int(11) DEFAULT NULL, + `submitted_by` varchar(100) DEFAULT NULL, + `dt_imported` tinyint(1) DEFAULT 0, + `dt_uuid` varchar(100) DEFAULT NULL, + `of_task_created` tinyint(1) DEFAULT 0, + `created_at` datetime DEFAULT current_timestamp(), + `updated_at` datetime DEFAULT current_timestamp() ON UPDATE current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `Users` +-- + +CREATE TABLE `Users` ( + `user_id` int(11) NOT NULL, + `username` varchar(100) NOT NULL, + `password` varchar(255) NOT NULL, + `role` varchar(30) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + `access_level` varchar(30) DEFAULT NULL, + `worker_id` int(11) DEFAULT NULL, + `is_active` tinyint(1) DEFAULT 1, + `last_login_at` datetime DEFAULT NULL, + `password_changed_at` datetime DEFAULT NULL, + `failed_login_attempts` int(11) DEFAULT 0, + `locked_until` datetime DEFAULT NULL, + `name` varchar(50) DEFAULT NULL, + `email` varchar(255) DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 테이블의 덤프 데이터 `Users` +-- + +INSERT INTO `Users` (`user_id`, `username`, `password`, `role`, `created_at`, `access_level`, `worker_id`, `is_active`, `last_login_at`, `password_changed_at`, `failed_login_attempts`, `locked_until`, `name`, `email`, `updated_at`) VALUES +(1, 'hyungi', '$2b$10$lwSfKipx0fQ.9nfMUBmzt.WXzerdxuT5MVX4b3YhFeHxyYlUjM7bi', 'admin', '2025-05-06 05:03:02', 'system', NULL, 1, '2025-06-26 22:47:22', '2025-05-06 05:03:02', 0, NULL, NULL, NULL, '2025-06-26 22:47:22'), +(3, '김두수', '$2a$10$z3i2EVOotRFBj.KHzx5LQOKlXD0QHLNFEvJcd6FlO6/1TCYGk6SSu', 'leader', '2025-06-07 23:48:35', 'group_leader', 1, 1, '2025-06-27 06:59:04', '2025-06-15 07:40:39', 0, NULL, '김두수', NULL, '2025-06-27 06:59:04'), +(4, '김아무개', '$2a$10$QAJIoPyi.apz91exp8GsiO/prAD5Xwanht6XImP1jvKsy/7Ba/b8.', 'user', '2025-06-11 08:03:59', 'worker', NULL, 1, '2025-06-15 23:28:04', '2025-06-15 06:03:42', 0, NULL, '김아무개', NULL, '2025-06-15 23:28:04'), +(5, '임영규', '$2a$10$66ps/MEEi4BVABfJc5P0y.yCap09NhTMyd1A/7rFVxESytQGlB3wC', NULL, '2025-06-15 07:41:02', 'group_leader', 3, 1, '2025-06-27 06:59:29', '2025-06-15 07:41:02', 0, NULL, '임영규', NULL, '2025-06-27 06:59:29'), +(6, '반치원', '$2a$10$jcn6f7flRLZlr5yKQcXDIePodRK0rsM4deNnNGjuOlredeTVsRYZ6', NULL, '2025-06-15 07:41:32', 'group_leader', 3, 1, '2025-06-27 06:57:59', '2025-06-15 07:41:32', 0, NULL, '반치원', NULL, '2025-06-27 06:57:59'); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `Workers` +-- + +CREATE TABLE `Workers` ( + `worker_id` int(11) NOT NULL, + `worker_name` varchar(100) NOT NULL, + `join_date` date DEFAULT NULL, + `job_type` varchar(100) DEFAULT NULL, + `salary` decimal(10,2) DEFAULT NULL, + `annual_leave` int(11) DEFAULT NULL, + `status` text DEFAULT 'active', + `created_at` timestamp NULL DEFAULT current_timestamp(), + `updated_at` timestamp NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 테이블의 덤프 데이터 `Workers` +-- + +INSERT INTO `Workers` (`worker_id`, `worker_name`, `join_date`, `job_type`, `salary`, `annual_leave`, `status`, `created_at`, `updated_at`) VALUES +(1, '김두수', '2025-04-01', '배관', 220000.00, 15, '..', '2025-04-15 22:23:08', '2025-04-15 22:23:08'), +(2, '임영규', '2025-04-01', '배관', 220000.00, 15, '..', '2025-04-15 22:23:17', '2025-04-15 22:23:17'), +(3, '반치원', '2025-04-01', '배관', 220000.00, 15, '..', '2025-04-15 22:23:22', '2025-04-15 22:23:22'), +(4, '황인용', '2025-04-01', '가공,조공', 220000.00, 15, '..', '2025-04-15 22:23:33', '2025-04-15 22:23:33'), +(5, '표영진', '2025-04-01', '가공,조공', 220000.00, 15, '..', '2025-04-15 22:23:38', '2025-04-15 22:23:38'), +(6, '김윤섭', '2025-04-01', '용접', 220000.00, 15, '..', '2025-04-15 22:23:46', '2025-04-15 22:23:46'), +(7, '이창호', '2025-04-01', '용접,배관', 220000.00, 15, '..', '2025-04-15 22:23:51', '2025-04-15 22:23:51'), +(8, '최광욱', '2025-04-01', '용접', 220000.00, 15, '..', '2025-04-15 22:23:57', '2025-04-15 22:23:57'), +(9, '박현수', '2025-04-01', '용접', 220000.00, 15, '..', '2025-04-15 22:24:01', '2025-04-15 22:24:01'), +(10, '조윤호', '2025-04-01', '용접', 220000.00, 15, '..', '2025-04-15 22:24:07', '2025-04-15 22:24:07'); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `worker_groups` +-- + +CREATE TABLE `worker_groups` ( + `id` int(11) NOT NULL, + `group_leader_id` int(11) NOT NULL, + `worker_id` int(11) NOT NULL, + `group_name` varchar(100) DEFAULT NULL, + `is_active` tinyint(1) DEFAULT 1, + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `WorkReports` +-- + +CREATE TABLE `WorkReports` ( + `id` int(11) NOT NULL, + `date` date NOT NULL, + `worker_id` int(11) NOT NULL, + `project_id` int(11) NOT NULL, + `morning_task_id` int(11) DEFAULT NULL, + `afternoon_task_id` int(11) DEFAULT NULL, + `overtime_hours` decimal(4,1) DEFAULT 0.0, + `overtime_task_id` int(11) DEFAULT NULL, + `work_details` text DEFAULT NULL, + `note` text DEFAULT NULL, + `memo` text DEFAULT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + `updated_at` timestamp NULL DEFAULT current_timestamp(), + `morning_project_id` int(11) DEFAULT NULL, + `afternoon_project_id` int(11) DEFAULT NULL, + `overtime_project_id` int(11) DEFAULT NULL, + `task_id` int(11) DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 테이블의 덤프 데이터 `WorkReports` +-- + +INSERT INTO `WorkReports` (`id`, `date`, `worker_id`, `project_id`, `morning_task_id`, `afternoon_task_id`, `overtime_hours`, `overtime_task_id`, `work_details`, `note`, `memo`, `created_at`, `updated_at`, `morning_project_id`, `afternoon_project_id`, `overtime_project_id`, `task_id`) VALUES +(176, '2025-01-02', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 9), +(177, '2025-01-02', 2, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 9), +(178, '2025-01-02', 4, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 9), +(179, '2025-01-02', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 9), +(180, '2025-01-02', 8, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 9), +(181, '2025-01-02', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 9), +(182, '2025-01-02', 6, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 9), +(183, '2025-01-02', 3, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 05:40:56', '2025-04-16 05:40:56', NULL, NULL, NULL, 15), +(194, '2025-01-03', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 9), +(195, '2025-01-03', 2, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 9), +(196, '2025-01-03', 3, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 15), +(197, '2025-01-03', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 9), +(198, '2025-01-03', 8, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 15), +(199, '2025-01-03', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 9), +(200, '2025-01-03', 6, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 9), +(201, '2025-01-03', 4, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 9), +(202, '2025-01-03', 5, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:42:07', '2025-04-16 05:42:07', NULL, NULL, NULL, 9), +(203, '2025-01-04', 7, 12, NULL, NULL, NULL, NULL, '휴일근무', NULL, NULL, '2025-04-16 05:43:25', '2025-04-16 05:43:25', NULL, NULL, NULL, 12), +(204, '2025-01-06', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:03', '2025-04-16 05:44:03', NULL, NULL, NULL, 12), +(205, '2025-01-06', 3, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:03', '2025-04-16 05:44:03', NULL, NULL, NULL, 12), +(206, '2025-01-06', 2, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:04', '2025-04-16 05:44:04', NULL, NULL, NULL, 12), +(207, '2025-01-06', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:04', '2025-04-16 05:44:04', NULL, NULL, NULL, 12), +(208, '2025-01-06', 8, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:04', '2025-04-16 05:44:04', NULL, NULL, NULL, 12), +(209, '2025-01-06', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:04', '2025-04-16 05:44:04', NULL, NULL, NULL, 12), +(210, '2025-01-06', 6, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:04', '2025-04-16 05:44:04', NULL, NULL, NULL, 12), +(211, '2025-01-06', 4, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:04', '2025-04-16 05:44:04', NULL, NULL, NULL, 12), +(212, '2025-01-06', 5, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:44:04', '2025-04-16 05:44:04', NULL, NULL, NULL, 12), +(213, '2025-01-07', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:24', '2025-04-16 05:45:24', NULL, NULL, NULL, 12), +(214, '2025-01-07', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:24', '2025-04-16 05:45:24', NULL, NULL, NULL, 1), +(215, '2025-01-07', 3, 12, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:45:24', '2025-04-16 05:45:24', NULL, NULL, NULL, 12), +(216, '2025-01-07', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:24', '2025-04-16 05:45:24', NULL, NULL, NULL, 12), +(217, '2025-01-07', 8, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:24', '2025-04-16 05:45:24', NULL, NULL, NULL, 1), +(218, '2025-01-07', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:24', '2025-04-16 05:45:24', NULL, NULL, NULL, 12), +(219, '2025-01-07', 6, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:24', '2025-04-16 05:45:24', NULL, NULL, NULL, 12), +(220, '2025-01-07', 4, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:25', '2025-04-16 05:45:25', NULL, NULL, NULL, 12), +(221, '2025-01-07', 5, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:45:25', '2025-04-16 05:45:25', NULL, NULL, NULL, 1), +(222, '2025-01-08', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 13), +(223, '2025-01-08', 2, 2, NULL, NULL, 1.0, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 1), +(224, '2025-01-08', 3, 12, NULL, NULL, 1.0, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 13), +(225, '2025-01-08', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 13), +(226, '2025-01-08', 8, 2, NULL, NULL, 1.0, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 1), +(227, '2025-01-08', 9, 12, NULL, NULL, 1.0, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 13), +(228, '2025-01-08', 6, 12, NULL, NULL, 1.0, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 13), +(229, '2025-01-08', 4, 2, NULL, NULL, 1.0, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 1), +(230, '2025-01-08', 5, 12, NULL, NULL, 1.0, NULL, '근무', NULL, NULL, '2025-04-16 05:46:50', '2025-04-16 05:46:50', NULL, NULL, NULL, 13), +(231, '2025-01-09', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 13), +(232, '2025-01-09', 2, 2, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 1), +(233, '2025-01-09', 3, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 13), +(234, '2025-01-09', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 13), +(235, '2025-01-09', 8, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 1), +(236, '2025-01-09', 6, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 13), +(237, '2025-01-09', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 1), +(238, '2025-01-09', 5, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 13), +(239, '2025-01-09', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:48:02', '2025-04-16 05:48:02', NULL, NULL, NULL, 13), +(240, '2025-01-10', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:49:16', '2025-04-16 05:49:16', NULL, NULL, NULL, 13), +(241, '2025-01-10', 2, 2, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 1), +(242, '2025-01-10', 3, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 13), +(243, '2025-01-10', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 13), +(244, '2025-01-10', 8, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 1), +(245, '2025-01-10', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 13), +(246, '2025-01-10', 6, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 15), +(247, '2025-01-10', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 1), +(248, '2025-01-10', 5, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:49:17', '2025-04-16 05:49:17', NULL, NULL, NULL, 13), +(249, '2025-01-13', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 13), +(250, '2025-01-13', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 1), +(251, '2025-01-13', 3, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 1), +(252, '2025-01-13', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 13), +(253, '2025-01-13', 8, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 1), +(254, '2025-01-13', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 13), +(255, '2025-01-13', 6, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 1), +(256, '2025-01-13', 4, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 15), +(257, '2025-01-13', 5, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:50:22', '2025-04-16 05:50:22', NULL, NULL, NULL, 13), +(258, '2025-01-14', 1, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 13), +(259, '2025-01-14', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 1), +(260, '2025-01-14', 3, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 1), +(261, '2025-01-14', 7, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 13), +(262, '2025-01-14', 8, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 1), +(263, '2025-01-14', 9, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 13), +(265, '2025-01-14', 4, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 13), +(266, '2025-01-14', 5, 12, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 13), +(267, '2025-01-14', 6, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:51:24', '2025-04-16 05:51:24', NULL, NULL, NULL, 1), +(268, '2025-01-15', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:37', '2025-04-16 05:52:37', NULL, NULL, NULL, 1), +(269, '2025-01-15', 2, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:37', '2025-04-16 05:52:37', NULL, NULL, NULL, 14), +(270, '2025-01-15', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:37', '2025-04-16 05:52:37', NULL, NULL, NULL, 1), +(271, '2025-01-15', 7, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:37', '2025-04-16 05:52:37', NULL, NULL, NULL, 13), +(272, '2025-01-15', 8, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:37', '2025-04-16 05:52:37', NULL, NULL, NULL, 14), +(273, '2025-01-15', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:37', '2025-04-16 05:52:37', NULL, NULL, NULL, 1), +(275, '2025-01-15', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:37', '2025-04-16 05:52:37', NULL, NULL, NULL, 1), +(276, '2025-01-15', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:38', '2025-04-16 05:52:38', NULL, NULL, NULL, 1), +(277, '2025-01-15', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:52:38', '2025-04-16 05:52:38', NULL, NULL, NULL, 1), +(278, '2025-01-16', 1, 1, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:54:11', '2025-04-16 05:54:11', NULL, NULL, NULL, 1), +(279, '2025-01-16', 2, 7, NULL, NULL, NULL, NULL, '근무', NULL, '볼트 보관함 제작', '2025-04-16 05:54:11', '2025-04-16 05:54:11', NULL, NULL, NULL, 14), +(280, '2025-01-16', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:54:11', '2025-04-16 05:54:11', NULL, NULL, NULL, 1), +(281, '2025-01-16', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:54:11', '2025-04-16 05:54:11', NULL, NULL, NULL, 1), +(282, '2025-01-16', 8, 7, NULL, NULL, NULL, NULL, '근무', NULL, '볼트 보관함 제작', '2025-04-16 05:54:11', '2025-04-16 05:54:11', NULL, NULL, NULL, 14), +(283, '2025-01-16', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:54:12', '2025-04-16 05:54:12', NULL, NULL, NULL, 1), +(285, '2025-01-16', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:54:12', '2025-04-16 05:54:12', NULL, NULL, NULL, 1), +(286, '2025-01-16', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:54:12', '2025-04-16 05:54:12', NULL, NULL, NULL, 1), +(287, '2025-01-16', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:54:12', '2025-04-16 05:54:12', NULL, NULL, NULL, 1), +(288, '2025-01-17', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), +(289, '2025-01-17', 2, 1, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), +(290, '2025-01-17', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), +(291, '2025-01-17', 7, 1, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), +(292, '2025-01-17', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), +(293, '2025-01-17', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), +(295, '2025-01-17', 4, 1, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), +(296, '2025-01-17', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), +(297, '2025-01-17', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:55:22', '2025-04-16 05:55:22', NULL, NULL, NULL, 1), +(298, '2025-01-20', 1, 7, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 14), +(299, '2025-01-20', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 8), +(300, '2025-01-20', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 1), +(301, '2025-01-20', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 1), +(302, '2025-01-20', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 1), +(303, '2025-01-20', 9, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 14), +(304, '2025-01-20', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 1), +(305, '2025-01-20', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 14), +(306, '2025-01-20', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:58:05', '2025-04-16 05:58:05', NULL, NULL, NULL, 14), +(307, '2025-01-21', 1, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 15), +(308, '2025-01-21', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 8), +(309, '2025-01-21', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 1), +(310, '2025-01-21', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 1), +(311, '2025-01-21', 8, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 8), +(312, '2025-01-21', 9, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 15), +(313, '2025-01-21', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 1), +(314, '2025-01-21', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:59:06', '2025-04-16 05:59:06', NULL, NULL, NULL, 1), +(315, '2025-01-21', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 05:59:07', '2025-04-16 05:59:07', NULL, NULL, NULL, 1), +(316, '2025-01-22', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 1), +(317, '2025-01-22', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 8), +(318, '2025-01-22', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 1), +(319, '2025-01-22', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 1), +(320, '2025-01-22', 8, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 8), +(321, '2025-01-22', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 1), +(322, '2025-01-22', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 1), +(323, '2025-01-22', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 1), +(324, '2025-01-22', 5, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:00:28', '2025-04-16 06:00:28', NULL, NULL, NULL, 8), +(325, '2025-01-23', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 1), +(326, '2025-01-23', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 8), +(327, '2025-01-23', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 1), +(328, '2025-01-23', 7, 1, NULL, NULL, NULL, NULL, '조퇴', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 1), +(329, '2025-01-23', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 1), +(330, '2025-01-23', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 1), +(331, '2025-01-23', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 1), +(332, '2025-01-23', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 1), +(333, '2025-01-23', 5, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:01:57', '2025-04-16 06:01:57', NULL, NULL, NULL, 8), +(334, '2025-01-24', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 1), +(335, '2025-01-24', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 8), +(336, '2025-01-24', 3, 1, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 1), +(337, '2025-01-24', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 1), +(338, '2025-01-24', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 1), +(339, '2025-01-24', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 1), +(340, '2025-01-24', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 1), +(341, '2025-01-24', 5, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 8), +(342, '2025-01-24', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:03:43', '2025-04-16 06:03:43', NULL, NULL, NULL, 1), +(343, '2025-02-03', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 1), +(344, '2025-02-03', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 8), +(345, '2025-02-03', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 1), +(346, '2025-02-03', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 1), +(347, '2025-02-03', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 1), +(348, '2025-02-03', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 1), +(349, '2025-02-03', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 1), +(350, '2025-02-03', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 8), +(351, '2025-02-03', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:07:37', '2025-04-16 06:07:37', NULL, NULL, NULL, 1), +(352, '2025-02-04', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 1), +(353, '2025-02-04', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 1), +(354, '2025-02-04', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 8), +(355, '2025-02-04', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 1), +(356, '2025-02-04', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 1), +(357, '2025-02-04', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 1), +(358, '2025-02-04', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 1), +(359, '2025-02-04', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 8), +(360, '2025-02-04', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:08:43', '2025-04-16 06:08:43', NULL, NULL, NULL, 1), +(361, '2025-02-05', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:02', '2025-04-16 06:10:02', NULL, NULL, NULL, 8), +(362, '2025-02-05', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:02', '2025-04-16 06:10:02', NULL, NULL, NULL, 1), +(363, '2025-02-05', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:02', '2025-04-16 06:10:02', NULL, NULL, NULL, 1), +(364, '2025-02-05', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:02', '2025-04-16 06:10:02', NULL, NULL, NULL, 1), +(365, '2025-02-05', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:02', '2025-04-16 06:10:02', NULL, NULL, NULL, 1), +(366, '2025-02-05', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:02', '2025-04-16 06:10:02', NULL, NULL, NULL, 1), +(367, '2025-02-05', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:03', '2025-04-16 06:10:03', NULL, NULL, NULL, 1), +(368, '2025-02-05', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:03', '2025-04-16 06:10:03', NULL, NULL, NULL, 8), +(369, '2025-02-05', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:03', '2025-04-16 06:10:03', NULL, NULL, NULL, 1), +(370, '2025-02-06', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), +(371, '2025-02-06', 2, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 15), +(372, '2025-02-06', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), +(373, '2025-02-06', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), +(374, '2025-02-06', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), +(375, '2025-02-06', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), +(376, '2025-02-06', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), +(377, '2025-02-06', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), +(378, '2025-02-06', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:10:55', '2025-04-16 06:10:55', NULL, NULL, NULL, 1), +(379, '2025-02-07', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 1), +(380, '2025-02-07', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 8), +(381, '2025-02-07', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 1), +(382, '2025-02-07', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 15), +(383, '2025-02-07', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 1), +(384, '2025-02-07', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 1), +(385, '2025-02-07', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 1), +(386, '2025-02-07', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 8), +(387, '2025-02-07', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:11:54', '2025-04-16 06:11:54', NULL, NULL, NULL, 1), +(388, '2025-02-10', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 1), +(389, '2025-02-10', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 8), +(390, '2025-02-10', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 1), +(391, '2025-02-10', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 1), +(392, '2025-02-10', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 1), +(393, '2025-02-10', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 1), +(394, '2025-02-10', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 1), +(395, '2025-02-10', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 8), +(396, '2025-02-10', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:12:54', '2025-04-16 06:12:54', NULL, NULL, NULL, 1), +(397, '2025-02-11', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 1), +(398, '2025-02-11', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 8), +(399, '2025-02-11', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 1), +(400, '2025-02-11', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 1), +(401, '2025-02-11', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 1), +(402, '2025-02-11', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 1), +(403, '2025-02-11', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 1), +(404, '2025-02-11', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 8), +(405, '2025-02-11', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:13:53', '2025-04-16 06:13:53', NULL, NULL, NULL, 1), +(406, '2025-02-12', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 1), +(407, '2025-02-12', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 8), +(408, '2025-02-12', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 1), +(409, '2025-02-12', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 1), +(410, '2025-02-12', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 1), +(411, '2025-02-12', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 1), +(412, '2025-02-12', 4, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 15), +(413, '2025-02-12', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 1), +(414, '2025-02-12', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:14:52', '2025-04-16 06:14:52', NULL, NULL, NULL, 1), +(415, '2025-02-13', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 1), +(416, '2025-02-13', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 7), +(417, '2025-02-13', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 1), +(418, '2025-02-13', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 1), +(419, '2025-02-13', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 1), +(420, '2025-02-13', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 1), +(421, '2025-02-13', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 1), +(422, '2025-02-13', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 7), +(423, '2025-02-13', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:16:00', '2025-04-16 06:16:00', NULL, NULL, NULL, 1), +(424, '2025-02-14', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 1), +(425, '2025-02-14', 2, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 7), +(426, '2025-02-14', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 1), +(427, '2025-02-14', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 1), +(428, '2025-02-14', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 1), +(429, '2025-02-14', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 1), +(430, '2025-02-14', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 1), +(431, '2025-02-14', 4, 2, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 7), +(432, '2025-02-14', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:17:21', '2025-04-16 06:17:21', NULL, NULL, NULL, 1), +(433, '2025-02-17', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:18:39', '2025-04-16 06:18:39', NULL, NULL, NULL, 1), +(434, '2025-02-17', 2, 2, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 8), +(435, '2025-02-17', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 1), +(436, '2025-02-17', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 1), +(437, '2025-02-17', 8, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 15), +(438, '2025-02-17', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 1), +(439, '2025-02-17', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 1), +(440, '2025-02-17', 4, 2, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 8), +(441, '2025-02-17', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:18:40', '2025-04-16 06:18:40', NULL, NULL, NULL, 1), +(442, '2025-02-18', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 1), +(443, '2025-02-18', 2, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 15), +(444, '2025-02-18', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 1), +(445, '2025-02-18', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 1), +(446, '2025-02-18', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 1), +(447, '2025-02-18', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 1), +(448, '2025-02-18', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 7), +(449, '2025-02-18', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 1), +(450, '2025-02-18', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:19:57', '2025-04-16 06:19:57', NULL, NULL, NULL, 1), +(451, '2025-02-19', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), +(452, '2025-02-19', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), +(453, '2025-02-19', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), +(454, '2025-02-19', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), +(455, '2025-02-19', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), +(456, '2025-02-19', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), +(457, '2025-02-19', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), +(458, '2025-02-19', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), +(459, '2025-02-19', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:21:01', '2025-04-16 06:21:01', NULL, NULL, NULL, 7), +(460, '2025-02-20', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), +(461, '2025-02-20', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), +(462, '2025-02-20', 3, 1, NULL, NULL, NULL, NULL, '조퇴', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), +(463, '2025-02-20', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), +(464, '2025-02-20', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), +(465, '2025-02-20', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), +(466, '2025-02-20', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), +(467, '2025-02-20', 7, 1, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), +(468, '2025-02-20', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:22:23', '2025-04-16 06:22:23', NULL, NULL, NULL, 7), +(469, '2025-02-21', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), +(470, '2025-02-21', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), +(471, '2025-02-21', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), +(472, '2025-02-21', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), +(473, '2025-02-21', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), +(474, '2025-02-21', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), +(475, '2025-02-21', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), +(476, '2025-02-21', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), +(477, '2025-02-21', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:23:40', '2025-04-16 06:23:40', NULL, NULL, NULL, 7), +(478, '2025-02-24', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), +(479, '2025-02-24', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), +(480, '2025-02-24', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), +(481, '2025-02-24', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), +(482, '2025-02-24', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), +(483, '2025-02-24', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), +(484, '2025-02-24', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), +(485, '2025-02-24', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:32', '2025-04-16 06:24:32', NULL, NULL, NULL, 7), +(486, '2025-02-24', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:24:33', '2025-04-16 06:24:33', NULL, NULL, NULL, 7), +(487, '2025-02-24', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, '근무시작', '2025-04-16 06:25:07', '2025-04-16 06:25:07', NULL, NULL, NULL, 7), +(488, '2025-02-25', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), +(489, '2025-02-25', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), +(490, '2025-02-25', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), +(491, '2025-02-25', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), +(492, '2025-02-25', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), +(493, '2025-02-25', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), +(494, '2025-02-25', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), +(495, '2025-02-25', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), +(496, '2025-02-25', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), +(497, '2025-02-25', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:26:02', '2025-04-16 06:26:02', NULL, NULL, NULL, 7), +(498, '2025-02-26', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, '당진출장 건', '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 14), +(499, '2025-02-26', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 7), +(500, '2025-02-26', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 7), +(501, '2025-02-26', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '당진출장 건', '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 14), +(502, '2025-02-26', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 7), +(503, '2025-02-26', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 7), +(504, '2025-02-26', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 7), +(505, '2025-02-26', 4, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 15), +(506, '2025-02-26', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 7), +(507, '2025-02-26', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:27:50', '2025-04-16 06:27:50', NULL, NULL, NULL, 7), +(508, '2025-02-27', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), +(509, '2025-02-27', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), +(510, '2025-02-27', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), +(511, '2025-02-27', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), +(512, '2025-02-27', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), +(513, '2025-02-27', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), +(514, '2025-02-27', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), +(515, '2025-02-27', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), +(516, '2025-02-27', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), +(517, '2025-02-27', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:28:41', '2025-04-16 06:28:41', NULL, NULL, NULL, 7), +(518, '2025-02-28', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 13), +(519, '2025-02-28', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 7), +(520, '2025-02-28', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 7), +(521, '2025-02-28', 7, 1, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 13), +(522, '2025-02-28', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 7), +(523, '2025-02-28', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 7), +(524, '2025-02-28', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 7), +(525, '2025-02-28', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 7), +(526, '2025-02-28', 5, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 15), +(527, '2025-02-28', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:29:53', '2025-04-16 06:29:53', NULL, NULL, NULL, 7), +(528, '2025-03-04', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 7), +(529, '2025-03-04', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 7), +(530, '2025-03-04', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 8), +(531, '2025-03-04', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 15), +(532, '2025-03-04', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 7), +(533, '2025-03-04', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 7), +(534, '2025-03-04', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 7), +(535, '2025-03-04', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 7), +(536, '2025-03-04', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 7), +(537, '2025-03-04', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:32:11', '2025-04-16 06:32:11', NULL, NULL, NULL, 8), +(538, '2025-03-05', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 7), +(539, '2025-03-05', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 7), +(540, '2025-03-05', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 8), +(541, '2025-03-05', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 7), +(542, '2025-03-05', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 7), +(543, '2025-03-05', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 7), +(544, '2025-03-05', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 7), +(545, '2025-03-05', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 15), +(546, '2025-03-05', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 7), +(547, '2025-03-05', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:33:15', '2025-04-16 06:33:15', NULL, NULL, NULL, 8), +(548, '2025-03-06', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 7), +(549, '2025-03-06', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 7), +(550, '2025-03-06', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 8), +(551, '2025-03-06', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 15), +(552, '2025-03-06', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 7), +(553, '2025-03-06', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 7), +(554, '2025-03-06', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 7), +(555, '2025-03-06', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 7), +(556, '2025-03-06', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 7), +(557, '2025-03-06', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:34:18', '2025-04-16 06:34:18', NULL, NULL, NULL, 8), +(558, '2025-03-07', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 7); +INSERT INTO `WorkReports` (`id`, `date`, `worker_id`, `project_id`, `morning_task_id`, `afternoon_task_id`, `overtime_hours`, `overtime_task_id`, `work_details`, `note`, `memo`, `created_at`, `updated_at`, `morning_project_id`, `afternoon_project_id`, `overtime_project_id`, `task_id`) VALUES +(559, '2025-03-07', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 13), +(560, '2025-03-07', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 8), +(561, '2025-03-07', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 15), +(562, '2025-03-07', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 7), +(563, '2025-03-07', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 7), +(564, '2025-03-07', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 7), +(565, '2025-03-07', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 13), +(566, '2025-03-07', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 7), +(567, '2025-03-07', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:35:36', '2025-04-16 06:35:36', NULL, NULL, NULL, 8), +(568, '2025-03-10', 1, 1, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 8), +(569, '2025-03-10', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 3), +(570, '2025-03-10', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 8), +(571, '2025-03-10', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 15), +(572, '2025-03-10', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 7), +(573, '2025-03-10', 9, 13, NULL, NULL, NULL, NULL, '유급', NULL, '결혼(5일)', '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 15), +(574, '2025-03-10', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 7), +(575, '2025-03-10', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 3), +(576, '2025-03-10', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 8), +(577, '2025-03-10', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:37:11', '2025-04-16 06:37:11', NULL, NULL, NULL, 8), +(578, '2025-03-11', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:06', '2025-04-16 06:39:06', NULL, NULL, NULL, 8), +(579, '2025-03-11', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 8), +(580, '2025-03-11', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 8), +(581, '2025-03-11', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 7), +(582, '2025-03-11', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 7), +(583, '2025-03-11', 9, 13, NULL, NULL, NULL, NULL, '유급', NULL, '결혼(5일)', '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 15), +(584, '2025-03-11', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 7), +(585, '2025-03-11', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 8), +(586, '2025-03-11', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 8), +(587, '2025-03-11', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:39:07', '2025-04-16 06:39:07', NULL, NULL, NULL, 8), +(588, '2025-03-12', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 8), +(589, '2025-03-12', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 8), +(590, '2025-03-12', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 8), +(591, '2025-03-12', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 8), +(592, '2025-03-12', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 7), +(593, '2025-03-12', 9, 13, NULL, NULL, NULL, NULL, '유급', NULL, '결혼(5일)', '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 15), +(594, '2025-03-12', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 7), +(595, '2025-03-12', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 7), +(596, '2025-03-12', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 8), +(597, '2025-03-12', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:40:08', '2025-04-16 06:40:08', NULL, NULL, NULL, 8), +(598, '2025-03-13', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:07', '2025-04-16 06:41:07', NULL, NULL, NULL, 8), +(599, '2025-03-13', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:07', '2025-04-16 06:41:07', NULL, NULL, NULL, 8), +(600, '2025-03-13', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:07', '2025-04-16 06:41:07', NULL, NULL, NULL, 8), +(601, '2025-03-13', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:07', '2025-04-16 06:41:07', NULL, NULL, NULL, 7), +(602, '2025-03-13', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:07', '2025-04-16 06:41:07', NULL, NULL, NULL, 7), +(603, '2025-03-13', 9, 13, NULL, NULL, NULL, NULL, '유급', NULL, '결혼(5일)', '2025-04-16 06:41:07', '2025-04-16 06:41:07', NULL, NULL, NULL, 15), +(604, '2025-03-13', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:07', '2025-04-16 06:41:07', NULL, NULL, NULL, 7), +(605, '2025-03-13', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:08', '2025-04-16 06:41:08', NULL, NULL, NULL, 8), +(606, '2025-03-13', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:08', '2025-04-16 06:41:08', NULL, NULL, NULL, 8), +(607, '2025-03-13', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:41:08', '2025-04-16 06:41:08', NULL, NULL, NULL, 8), +(608, '2025-03-14', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 8), +(609, '2025-03-14', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 4), +(610, '2025-03-14', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 8), +(612, '2025-03-14', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 7), +(613, '2025-03-14', 9, 13, NULL, NULL, NULL, NULL, '유급', NULL, '결혼(5일)', '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 15), +(614, '2025-03-14', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 7), +(615, '2025-03-14', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 8), +(616, '2025-03-14', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 8), +(617, '2025-03-14', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:42:24', '2025-04-16 06:42:24', NULL, NULL, NULL, 7), +(628, '2025-03-18', 1, 1, NULL, NULL, NULL, NULL, '조퇴', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 8), +(629, '2025-03-18', 2, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 4), +(630, '2025-03-18', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 8), +(631, '2025-03-18', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 4), +(632, '2025-03-18', 8, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 8), +(633, '2025-03-18', 9, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 15), +(634, '2025-03-18', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 8), +(635, '2025-03-18', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 4), +(636, '2025-03-18', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 8), +(637, '2025-03-18', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:46:29', '2025-04-16 06:46:29', NULL, NULL, NULL, 8), +(648, '2025-03-17', 1, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 8), +(649, '2025-03-17', 2, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 4), +(650, '2025-03-17', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 8), +(651, '2025-03-17', 7, 4, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 4), +(652, '2025-03-17', 8, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 7), +(653, '2025-03-17', 9, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 15), +(654, '2025-03-17', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 7), +(655, '2025-03-17', 4, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 8), +(656, '2025-03-17', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 8), +(657, '2025-03-17', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:50:50', '2025-04-16 06:50:50', NULL, NULL, NULL, 7), +(658, '2025-03-19', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:33', '2025-04-16 06:52:33', NULL, NULL, NULL, 4), +(659, '2025-03-19', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:33', '2025-04-16 06:52:33', NULL, NULL, NULL, 8), +(660, '2025-03-19', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:33', '2025-04-16 06:52:33', NULL, NULL, NULL, 8), +(661, '2025-03-19', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:33', '2025-04-16 06:52:33', NULL, NULL, NULL, 4), +(662, '2025-03-19', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:33', '2025-04-16 06:52:33', NULL, NULL, NULL, 8), +(663, '2025-03-19', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:34', '2025-04-16 06:52:34', NULL, NULL, NULL, 8), +(664, '2025-03-19', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:34', '2025-04-16 06:52:34', NULL, NULL, NULL, 8), +(665, '2025-03-19', 4, 7, NULL, NULL, NULL, NULL, '근무', NULL, '용접기 보관함 제작', '2025-04-16 06:52:34', '2025-04-16 06:52:34', NULL, NULL, NULL, 14), +(666, '2025-03-19', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:34', '2025-04-16 06:52:34', NULL, NULL, NULL, 4), +(667, '2025-03-19', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:52:34', '2025-04-16 06:52:34', NULL, NULL, NULL, 8), +(668, '2025-03-20', 1, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 8), +(669, '2025-03-20', 2, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 4), +(670, '2025-03-20', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 8), +(671, '2025-03-20', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 4), +(672, '2025-03-20', 8, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 4), +(673, '2025-03-20', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 8), +(674, '2025-03-20', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 8), +(675, '2025-03-20', 4, 7, NULL, NULL, 2.0, NULL, '근무', NULL, '용접기 보관함 제작', '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 14), +(676, '2025-03-20', 5, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 4), +(677, '2025-03-20', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 06:54:20', '2025-04-16 06:54:20', NULL, NULL, NULL, 8), +(678, '2025-03-21', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:27', '2025-04-16 21:34:27', NULL, NULL, NULL, 8), +(679, '2025-03-21', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 4), +(680, '2025-03-21', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 8), +(681, '2025-03-21', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 8), +(682, '2025-03-21', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 4), +(683, '2025-03-21', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 8), +(684, '2025-03-21', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 8), +(685, '2025-03-21', 4, 7, NULL, NULL, NULL, NULL, '근무', NULL, '용기 보관함 제작', '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 14), +(686, '2025-03-21', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 4), +(687, '2025-03-21', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:34:28', '2025-04-16 21:34:28', NULL, NULL, NULL, 8), +(688, '2025-03-24', 1, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:47', '2025-04-16 21:39:47', NULL, NULL, NULL, 8), +(689, '2025-03-24', 2, 4, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-16 21:39:47', '2025-04-16 21:39:47', NULL, NULL, NULL, 5), +(690, '2025-03-24', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:47', '2025-04-16 21:39:47', NULL, NULL, NULL, 8), +(691, '2025-03-24', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:47', '2025-04-16 21:39:47', NULL, NULL, NULL, 5), +(692, '2025-03-24', 8, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:47', '2025-04-16 21:39:47', NULL, NULL, NULL, 5), +(693, '2025-03-24', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:47', '2025-04-16 21:39:47', NULL, NULL, NULL, 8), +(694, '2025-03-24', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:48', '2025-04-16 21:39:48', NULL, NULL, NULL, 8), +(695, '2025-03-24', 4, 7, NULL, NULL, 2.0, NULL, '근무', NULL, '용기 보관함 제작', '2025-04-16 21:39:48', '2025-04-16 21:39:48', NULL, NULL, NULL, 14), +(696, '2025-03-24', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:48', '2025-04-16 21:39:48', NULL, NULL, NULL, 8), +(697, '2025-03-24', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:39:48', '2025-04-16 21:39:48', NULL, NULL, NULL, 8), +(698, '2025-03-25', 1, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 13), +(699, '2025-03-25', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 5), +(700, '2025-03-25', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 13), +(701, '2025-03-25', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 5), +(702, '2025-03-25', 8, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 13), +(703, '2025-03-25', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 13), +(704, '2025-03-25', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 13), +(705, '2025-03-25', 4, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 14), +(706, '2025-03-25', 5, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 5), +(707, '2025-03-25', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:42:13', '2025-04-16 21:42:13', NULL, NULL, NULL, 13), +(708, '2025-03-26', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 13), +(709, '2025-03-26', 2, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 15), +(710, '2025-03-26', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 5), +(711, '2025-03-26', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 5), +(712, '2025-03-26', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 8), +(713, '2025-03-26', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 8), +(714, '2025-03-26', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 8), +(715, '2025-03-26', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 13), +(716, '2025-03-26', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 5), +(717, '2025-03-26', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:43:37', '2025-04-16 21:43:37', NULL, NULL, NULL, 8), +(718, '2025-03-27', 1, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 8), +(719, '2025-03-27', 2, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 5), +(720, '2025-03-27', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 8), +(721, '2025-03-27', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 5), +(722, '2025-03-27', 5, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 5), +(723, '2025-03-27', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 8), +(724, '2025-03-27', 10, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 15), +(725, '2025-03-27', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 5), +(726, '2025-03-27', 8, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 8), +(727, '2025-03-27', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-16 21:45:14', '2025-04-16 21:45:14', NULL, NULL, NULL, 8), +(728, '2025-03-28', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 8), +(729, '2025-03-28', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 5), +(730, '2025-03-28', 3, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 15), +(731, '2025-03-28', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 15), +(732, '2025-03-28', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 8), +(733, '2025-03-28', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 8), +(734, '2025-03-28', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 8), +(735, '2025-03-28', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 5), +(736, '2025-03-28', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 5), +(737, '2025-03-28', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:46:31', '2025-04-16 21:46:31', NULL, NULL, NULL, 8), +(738, '2025-03-31', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 8), +(739, '2025-03-31', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 5), +(740, '2025-03-31', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 8), +(741, '2025-03-31', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 8), +(742, '2025-03-31', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 8), +(743, '2025-03-31', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 8), +(744, '2025-03-31', 10, 13, NULL, NULL, NULL, NULL, '유급', NULL, '외조모상(2일)', '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 15), +(745, '2025-03-31', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 5), +(746, '2025-03-31', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 8), +(747, '2025-03-31', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-16 21:47:37', '2025-04-16 21:47:37', NULL, NULL, NULL, 8), +(748, '2025-03-14', 7, 4, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-17 01:53:24', '2025-04-17 01:53:24', NULL, NULL, NULL, 4), +(749, '2025-04-01', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 9), +(750, '2025-04-01', 2, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 5), +(751, '2025-04-01', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 9), +(752, '2025-04-01', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 5), +(753, '2025-04-01', 8, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 9), +(754, '2025-04-01', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 9), +(755, '2025-04-01', 10, 13, NULL, NULL, NULL, NULL, '유급', NULL, '외조모상', '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 15), +(756, '2025-04-01', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 5), +(757, '2025-04-01', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:42', '2025-04-17 04:22:42', NULL, NULL, NULL, 9), +(758, '2025-04-01', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:22:43', '2025-04-17 04:22:43', NULL, NULL, NULL, 9), +(769, '2025-04-02', 1, 1, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-04-17 04:25:55', '2025-04-17 04:25:55', NULL, NULL, NULL, 9), +(770, '2025-04-02', 2, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 9), +(771, '2025-04-02', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 9), +(773, '2025-04-02', 8, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 9), +(774, '2025-04-02', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 9), +(775, '2025-04-02', 10, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 15), +(776, '2025-04-02', 4, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 15), +(777, '2025-04-02', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 9), +(778, '2025-04-02', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:25:56', '2025-04-17 04:25:56', NULL, NULL, NULL, 9), +(779, '2025-04-03', 1, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), +(780, '2025-04-03', 2, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), +(781, '2025-04-03', 3, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), +(783, '2025-04-03', 8, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), +(784, '2025-04-03', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), +(785, '2025-04-03', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), +(786, '2025-04-03', 4, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), +(787, '2025-04-03', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), +(788, '2025-04-03', 6, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:27:12', '2025-04-17 04:27:12', NULL, NULL, NULL, 9), +(789, '2025-04-04', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 9), +(790, '2025-04-04', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 9), +(791, '2025-04-04', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 5), +(792, '2025-04-04', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 9), +(793, '2025-04-04', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 5), +(794, '2025-04-04', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 9), +(795, '2025-04-04', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 9), +(796, '2025-04-04', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 9), +(797, '2025-04-04', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 9), +(798, '2025-04-04', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:30:07', '2025-04-17 04:30:07', NULL, NULL, NULL, 5), +(799, '2025-04-07', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 9), +(800, '2025-04-07', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 9), +(801, '2025-04-07', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 5), +(802, '2025-04-07', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 9), +(803, '2025-04-07', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 5), +(804, '2025-04-07', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 9), +(805, '2025-04-07', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 9), +(806, '2025-04-07', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 9), +(807, '2025-04-07', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 9), +(808, '2025-04-07', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:39:43', '2025-04-17 04:39:43', NULL, NULL, NULL, 5), +(809, '2025-04-08', 1, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 9), +(811, '2025-04-08', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 5), +(812, '2025-04-08', 7, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 9), +(813, '2025-04-08', 8, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 5), +(814, '2025-04-08', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 9), +(815, '2025-04-08', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 9), +(816, '2025-04-08', 4, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 9), +(817, '2025-04-08', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 9), +(818, '2025-04-08', 6, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:41:16', '2025-04-17 04:41:16', NULL, NULL, NULL, 5), +(819, '2025-04-09', 1, 1, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-04-17 04:43:02', '2025-04-17 04:43:02', NULL, NULL, NULL, 9), +(820, '2025-04-09', 2, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:43:02', '2025-04-17 04:43:02', NULL, NULL, NULL, 9), +(821, '2025-04-09', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 5), +(822, '2025-04-09', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 9), +(823, '2025-04-09', 8, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 5), +(824, '2025-04-09', 9, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 9), +(825, '2025-04-09', 10, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 9), +(826, '2025-04-09', 4, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 9), +(827, '2025-04-09', 5, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 9), +(828, '2025-04-09', 6, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-04-17 04:43:03', '2025-04-17 04:43:03', NULL, NULL, NULL, 5), +(829, '2025-04-10', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 9), +(830, '2025-04-10', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 9), +(831, '2025-04-10', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 5), +(832, '2025-04-10', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 9), +(833, '2025-04-10', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 5), +(834, '2025-04-10', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 9), +(835, '2025-04-10', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 9), +(836, '2025-04-10', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 9), +(837, '2025-04-10', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 9), +(838, '2025-04-10', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:44:30', '2025-04-17 04:44:30', NULL, NULL, NULL, 5), +(839, '2025-04-11', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:24', '2025-04-17 04:46:24', NULL, NULL, NULL, 9), +(840, '2025-04-11', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:24', '2025-04-17 04:46:24', NULL, NULL, NULL, 9), +(841, '2025-04-11', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:24', '2025-04-17 04:46:24', NULL, NULL, NULL, 5), +(842, '2025-04-11', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:25', '2025-04-17 04:46:25', NULL, NULL, NULL, 9), +(843, '2025-04-11', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:25', '2025-04-17 04:46:25', NULL, NULL, NULL, 5), +(844, '2025-04-11', 9, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-17 04:46:25', '2025-04-17 04:46:25', NULL, NULL, NULL, 15), +(845, '2025-04-11', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:25', '2025-04-17 04:46:25', NULL, NULL, NULL, 5), +(846, '2025-04-11', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:25', '2025-04-17 04:46:25', NULL, NULL, NULL, 9), +(847, '2025-04-11', 5, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-17 04:46:25', '2025-04-17 04:46:25', NULL, NULL, NULL, 15), +(848, '2025-04-11', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:46:25', '2025-04-17 04:46:25', NULL, NULL, NULL, 9), +(849, '2025-04-14', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:37', '2025-04-17 04:47:37', NULL, NULL, NULL, 9), +(850, '2025-04-14', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:37', '2025-04-17 04:47:37', NULL, NULL, NULL, 9), +(851, '2025-04-14', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:37', '2025-04-17 04:47:37', NULL, NULL, NULL, 5), +(852, '2025-04-14', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:37', '2025-04-17 04:47:37', NULL, NULL, NULL, 9), +(853, '2025-04-14', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:38', '2025-04-17 04:47:38', NULL, NULL, NULL, 5), +(854, '2025-04-14', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:38', '2025-04-17 04:47:38', NULL, NULL, NULL, 9), +(855, '2025-04-14', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:38', '2025-04-17 04:47:38', NULL, NULL, NULL, 9), +(856, '2025-04-14', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:38', '2025-04-17 04:47:38', NULL, NULL, NULL, 9), +(857, '2025-04-14', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:38', '2025-04-17 04:47:38', NULL, NULL, NULL, 9), +(858, '2025-04-14', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:47:38', '2025-04-17 04:47:38', NULL, NULL, NULL, 9), +(859, '2025-04-17', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 9), +(860, '2025-04-17', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 5), +(861, '2025-04-17', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 5), +(862, '2025-04-17', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 9), +(863, '2025-04-17', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 5), +(864, '2025-04-17', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 9), +(865, '2025-04-17', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 9), +(866, '2025-04-17', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 9), +(867, '2025-04-17', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 9), +(868, '2025-04-17', 6, 4, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-04-17 04:48:39', '2025-04-17 04:48:39', NULL, NULL, NULL, 5), +(879, '2025-04-21', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 14), +(880, '2025-04-21', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 5), +(881, '2025-04-21', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 5), +(882, '2025-04-21', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 14), +(883, '2025-04-21', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 5), +(884, '2025-04-21', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 5), +(885, '2025-04-21', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 5), +(886, '2025-04-21', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 5), +(887, '2025-04-21', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 14), +(888, '2025-04-21', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-21 06:22:20', '2025-04-21 06:22:20', NULL, NULL, NULL, 5), +(889, '2025-04-22', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, 'ICK 크레인 공사', '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 14), +(890, '2025-04-22', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 5), +(891, '2025-04-22', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 5), +(892, '2025-04-22', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, 'ICK 크레인 공사', '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 14), +(893, '2025-04-22', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 5), +(894, '2025-04-22', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 5), +(895, '2025-04-22', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 5), +(896, '2025-04-22', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 5), +(897, '2025-04-22', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, 'ICK 크레인 공사', '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 14), +(898, '2025-04-22', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-22 01:49:11', '2025-04-22 01:49:11', NULL, NULL, NULL, 5), +(899, '2025-04-23', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 14), +(900, '2025-04-23', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 5), +(901, '2025-04-23', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 5), +(902, '2025-04-23', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 14), +(903, '2025-04-23', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 5), +(904, '2025-04-23', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 5), +(905, '2025-04-23', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 5), +(906, '2025-04-23', 4, 4, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 5), +(907, '2025-04-23', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 14), +(908, '2025-04-23', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-23 06:57:29', '2025-04-23 06:57:29', NULL, NULL, NULL, 5), +(909, '2025-04-24', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, '벨브 부적합 관련 작업 추가', '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), +(910, '2025-04-24', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), +(911, '2025-04-24', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), +(912, '2025-04-24', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), +(913, '2025-04-24', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), +(914, '2025-04-24', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), +(915, '2025-04-24', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), +(916, '2025-04-24', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), +(917, '2025-04-24', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), +(918, '2025-04-24', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-24 05:42:30', '2025-04-24 05:42:30', NULL, NULL, NULL, 9), +(919, '2025-04-25', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 9), +(920, '2025-04-25', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 9), +(921, '2025-04-25', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 5), +(922, '2025-04-25', 7, 1, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 9), +(923, '2025-04-25', 8, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 9), +(924, '2025-04-25', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 9), +(925, '2025-04-25', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 9), +(926, '2025-04-25', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, '확관 작업', '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 5), +(927, '2025-04-25', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:38', '2025-04-25 04:23:38', NULL, NULL, NULL, 9), +(928, '2025-04-25', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-25 04:23:39', '2025-04-25 04:23:39', NULL, NULL, NULL, 5), +(929, '2025-04-28', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:22', '2025-04-28 23:20:22', NULL, NULL, NULL, 9), +(930, '2025-04-28', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), +(931, '2025-04-28', 3, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), +(932, '2025-04-28', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), +(934, '2025-04-28', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), +(935, '2025-04-28', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), +(936, '2025-04-28', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), +(937, '2025-04-28', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), +(938, '2025-04-28', 6, 1, NULL, NULL, NULL, NULL, '근무', NULL, 'NCR 벨브 라인 설치', '2025-04-28 23:20:23', '2025-04-28 23:20:23', NULL, NULL, NULL, 9), +(939, '2025-04-29', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 9), +(940, '2025-04-29', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 16), +(941, '2025-04-29', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 16), +(942, '2025-04-29', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 9), +(943, '2025-04-29', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 16), +(944, '2025-04-29', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 16), +(945, '2025-04-29', 10, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 14), +(946, '2025-04-29', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 16), +(947, '2025-04-29', 8, 4, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 16), +(948, '2025-04-29', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-29 04:41:11', '2025-04-29 04:41:11', NULL, NULL, NULL, 16), +(949, '2025-04-30', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 14), +(950, '2025-04-30', 2, 4, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 16), +(951, '2025-04-30', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 16), +(953, '2025-04-30', 5, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 15), +(954, '2025-04-30', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 16), +(955, '2025-04-30', 10, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 14), +(956, '2025-04-30', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 14), +(957, '2025-04-30', 8, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 15), +(958, '2025-04-30', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-04-30 03:43:51', '2025-04-30 03:43:51', NULL, NULL, NULL, 16), +(959, '2025-04-30', 4, 7, NULL, NULL, NULL, NULL, '반반차', NULL, '제2공장 공사', '2025-04-30 04:22:04', '2025-04-30 04:22:04', NULL, NULL, NULL, 14), +(1023, '2025-04-15', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 9), +(1024, '2025-04-15', 2, 4, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 5), +(1025, '2025-04-15', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 5), +(1026, '2025-04-15', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 9), +(1027, '2025-04-15', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 9), +(1028, '2025-04-15', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 5), +(1029, '2025-04-15', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 9), +(1030, '2025-04-15', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 5), +(1031, '2025-04-15', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 5), +(1032, '2025-04-15', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:01:35', '2025-05-07 01:01:35', NULL, NULL, NULL, 9), +(1033, '2025-04-16', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 9), +(1034, '2025-04-16', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 5), +(1035, '2025-04-16', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 5); +INSERT INTO `WorkReports` (`id`, `date`, `worker_id`, `project_id`, `morning_task_id`, `afternoon_task_id`, `overtime_hours`, `overtime_task_id`, `work_details`, `note`, `memo`, `created_at`, `updated_at`, `morning_project_id`, `afternoon_project_id`, `overtime_project_id`, `task_id`) VALUES +(1036, '2025-04-16', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 9), +(1037, '2025-04-16', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 9), +(1038, '2025-04-16', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 5), +(1039, '2025-04-16', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 9), +(1040, '2025-04-16', 8, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 15), +(1041, '2025-04-16', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 5), +(1042, '2025-04-16', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:03:57', '2025-05-07 01:03:57', NULL, NULL, NULL, 9), +(1043, '2025-04-18', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 9), +(1044, '2025-04-18', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 5), +(1045, '2025-04-18', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 5), +(1046, '2025-04-18', 4, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 9), +(1047, '2025-04-18', 5, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 15), +(1048, '2025-04-18', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 5), +(1049, '2025-04-18', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 9), +(1050, '2025-04-18', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 5), +(1051, '2025-04-18', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 5), +(1052, '2025-04-18', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 01:05:17', '2025-05-07 01:05:17', NULL, NULL, NULL, 9), +(1053, '2025-04-02', 7, 1, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-07 02:19:00', '2025-05-07 02:19:00', NULL, NULL, NULL, 9), +(1054, '2025-04-03', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 02:19:45', '2025-05-07 02:19:45', NULL, NULL, NULL, 9), +(1055, '2025-04-08', 2, 1, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 02:20:22', '2025-05-07 02:20:22', NULL, NULL, NULL, 9), +(1056, '2025-04-28', 8, 1, NULL, NULL, NULL, NULL, '반반차', NULL, 'NCR 벨브라인 설치', '2025-05-07 02:21:44', '2025-05-07 02:21:44', NULL, NULL, NULL, 9), +(1057, '2025-05-02', 1, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), +(1058, '2025-05-02', 2, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), +(1059, '2025-05-02', 3, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), +(1060, '2025-05-02', 4, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), +(1061, '2025-05-02', 5, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), +(1062, '2025-05-02', 6, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), +(1063, '2025-05-02', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), +(1064, '2025-05-02', 8, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), +(1065, '2025-05-02', 9, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), +(1066, '2025-05-02', 10, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-07 03:13:26', '2025-05-07 03:13:26', NULL, NULL, NULL, 15), +(1067, '2025-05-07', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 14), +(1068, '2025-05-07', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 16), +(1069, '2025-05-07', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 16), +(1070, '2025-05-07', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 16), +(1071, '2025-05-07', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 14), +(1072, '2025-05-07', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 16), +(1073, '2025-05-07', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 14), +(1074, '2025-05-07', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 16), +(1075, '2025-05-07', 9, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 14), +(1076, '2025-05-07', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 03:19:18', '2025-05-07 03:19:18', NULL, NULL, NULL, 16), +(1078, '2025-05-08', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 16), +(1079, '2025-05-08', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 16), +(1080, '2025-05-08', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 16), +(1081, '2025-05-08', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 14), +(1082, '2025-05-08', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 16), +(1083, '2025-05-08', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 14), +(1084, '2025-05-08', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 16), +(1085, '2025-05-08', 9, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 14), +(1086, '2025-05-08', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-07 23:06:52', '2025-05-07 23:06:52', NULL, NULL, NULL, 16), +(1087, '2025-05-08', 1, 7, NULL, NULL, NULL, NULL, '반반차', NULL, '작업장 구역 설치', '2025-05-08 06:57:51', '2025-05-08 06:57:51', NULL, NULL, NULL, 14), +(1088, '2025-05-09', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 14), +(1089, '2025-05-09', 2, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 16), +(1090, '2025-05-09', 3, 4, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 16), +(1091, '2025-05-09', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 16), +(1092, '2025-05-09', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 14), +(1093, '2025-05-09', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 16), +(1094, '2025-05-09', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 14), +(1095, '2025-05-09', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 16), +(1096, '2025-05-09', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 16), +(1097, '2025-05-09', 10, 7, NULL, NULL, NULL, NULL, '근무', NULL, '작업장 구역 정리', '2025-05-09 06:12:16', '2025-05-09 06:12:16', NULL, NULL, NULL, 14), +(1100, '2025-05-12', 3, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-11 21:52:46', '2025-05-11 21:52:46', NULL, NULL, NULL, 15), +(1108, '2025-05-12', 1, 1, NULL, NULL, NULL, NULL, '근무', NULL, '포장', '2025-05-12 23:55:17', '2025-05-12 23:55:17', NULL, NULL, NULL, 13), +(1111, '2025-05-12', 5, 1, NULL, NULL, NULL, NULL, '근무', NULL, '포장', '2025-05-12 23:55:17', '2025-05-12 23:55:17', NULL, NULL, NULL, 13), +(1113, '2025-05-12', 7, 1, NULL, NULL, NULL, NULL, '근무', NULL, '포장', '2025-05-12 23:55:17', '2025-05-12 23:55:17', NULL, NULL, NULL, 13), +(1115, '2025-05-12', 9, 1, NULL, NULL, NULL, NULL, '근무', NULL, '포장', '2025-05-12 23:55:17', '2025-05-12 23:55:17', NULL, NULL, NULL, 13), +(1116, '2025-05-12', 10, 1, NULL, NULL, NULL, NULL, '근무', NULL, '포장', '2025-05-12 23:55:17', '2025-05-12 23:55:17', NULL, NULL, NULL, 13), +(1117, '2025-05-13', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 14), +(1118, '2025-05-13', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 3), +(1119, '2025-05-13', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 7), +(1120, '2025-05-13', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 3), +(1121, '2025-05-13', 5, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 14), +(1122, '2025-05-13', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 7), +(1123, '2025-05-13', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 14), +(1124, '2025-05-13', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 7), +(1125, '2025-05-13', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 3), +(1126, '2025-05-13', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:00:41', '2025-05-13 00:00:41', NULL, NULL, NULL, 7), +(1127, '2025-05-12', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:01:44', '2025-05-13 00:01:44', NULL, NULL, NULL, 3), +(1128, '2025-05-12', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:01:44', '2025-05-13 00:01:44', NULL, NULL, NULL, 3), +(1129, '2025-05-12', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:01:44', '2025-05-13 00:01:44', NULL, NULL, NULL, 3), +(1130, '2025-05-12', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-13 00:01:44', '2025-05-13 00:01:44', NULL, NULL, NULL, 3), +(1131, '2025-05-14', 1, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 3), +(1132, '2025-05-14', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 3), +(1133, '2025-05-14', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 7), +(1134, '2025-05-14', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 7), +(1135, '2025-05-14', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 7), +(1136, '2025-05-14', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 3), +(1137, '2025-05-14', 7, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 3), +(1138, '2025-05-14', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 7), +(1139, '2025-05-14', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 7), +(1140, '2025-05-14', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-14 22:42:17', '2025-05-14 22:42:17', NULL, NULL, NULL, 7), +(1141, '2025-05-15', 1, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 14), +(1142, '2025-05-15', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 3), +(1143, '2025-05-15', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 7), +(1144, '2025-05-15', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 7), +(1145, '2025-05-15', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 7), +(1146, '2025-05-15', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 7), +(1147, '2025-05-15', 7, 7, NULL, NULL, NULL, NULL, '근무', NULL, '제2공장 공사', '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 14), +(1148, '2025-05-15', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 3), +(1149, '2025-05-15', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 3), +(1150, '2025-05-15', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:53:53', '2025-05-16 02:53:53', NULL, NULL, NULL, 7), +(1151, '2025-05-16', 1, 4, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 7), +(1152, '2025-05-16', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 3), +(1153, '2025-05-16', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 7), +(1154, '2025-05-16', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 7), +(1155, '2025-05-16', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 7), +(1156, '2025-05-16', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 7), +(1157, '2025-05-16', 7, 4, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 7), +(1158, '2025-05-16', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 3), +(1159, '2025-05-16', 9, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 3), +(1160, '2025-05-16', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-16 02:55:12', '2025-05-16 02:55:12', NULL, NULL, NULL, 7), +(1171, '2025-05-19', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), +(1172, '2025-05-19', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 4), +(1173, '2025-05-19', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), +(1174, '2025-05-19', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), +(1175, '2025-05-19', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), +(1176, '2025-05-19', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), +(1177, '2025-05-19', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), +(1179, '2025-05-19', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), +(1180, '2025-05-19', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:47:56', '2025-05-22 04:47:56', NULL, NULL, NULL, 7), +(1181, '2025-05-21', 1, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), +(1183, '2025-05-21', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), +(1184, '2025-05-21', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), +(1185, '2025-05-21', 5, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), +(1186, '2025-05-21', 6, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), +(1187, '2025-05-21', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), +(1188, '2025-05-21', 8, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), +(1189, '2025-05-21', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), +(1190, '2025-05-21', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:49:38', '2025-05-22 04:49:38', NULL, NULL, NULL, 7), +(1191, '2025-05-20', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), +(1192, '2025-05-20', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 3), +(1193, '2025-05-20', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), +(1194, '2025-05-20', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), +(1195, '2025-05-20', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), +(1196, '2025-05-20', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), +(1197, '2025-05-20', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), +(1198, '2025-05-20', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), +(1199, '2025-05-20', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), +(1200, '2025-05-20', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-05-22 04:51:34', '2025-05-22 04:51:34', NULL, NULL, NULL, 7), +(1201, '2025-05-22', 1, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), +(1202, '2025-05-22', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 3), +(1203, '2025-05-22', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), +(1204, '2025-05-22', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), +(1205, '2025-05-22', 5, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), +(1206, '2025-05-22', 6, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), +(1207, '2025-05-22', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), +(1208, '2025-05-22', 8, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), +(1209, '2025-05-22', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), +(1210, '2025-05-22', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-05-22 04:53:17', '2025-05-22 04:53:17', NULL, NULL, NULL, 7), +(1211, '2025-05-21', 2, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-22 04:54:12', '2025-05-22 04:54:12', NULL, NULL, NULL, 15), +(1215, '2025-05-26', 4, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-05-26 06:58:00', '2025-05-26 06:58:00', NULL, NULL, NULL, 15), +(1222, '2025-05-19', 8, 3, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-06-01 22:34:36', '2025-06-01 22:34:36', NULL, NULL, NULL, 3), +(1223, '2025-05-26', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 8), +(1224, '2025-05-26', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 5), +(1225, '2025-05-26', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 8), +(1226, '2025-05-26', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 5), +(1227, '2025-05-26', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 8), +(1228, '2025-05-26', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 8), +(1229, '2025-05-26', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 5), +(1230, '2025-05-26', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 8), +(1231, '2025-05-26', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:37:29', '2025-06-01 22:37:29', NULL, NULL, NULL, 8), +(1232, '2025-05-23', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), +(1233, '2025-05-23', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 3), +(1234, '2025-05-23', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), +(1235, '2025-05-23', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), +(1236, '2025-05-23', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), +(1237, '2025-05-23', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), +(1238, '2025-05-23', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), +(1239, '2025-05-23', 8, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), +(1240, '2025-05-23', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), +(1241, '2025-05-23', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:41:30', '2025-06-01 22:41:30', NULL, NULL, NULL, 8), +(1242, '2025-05-27', 1, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 8), +(1243, '2025-05-27', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 5), +(1244, '2025-05-27', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 8), +(1245, '2025-05-27', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 8), +(1246, '2025-05-27', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 5), +(1247, '2025-05-27', 6, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 8), +(1248, '2025-05-27', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 8), +(1249, '2025-05-27', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 5), +(1250, '2025-05-27', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 8), +(1251, '2025-05-27', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:45:06', '2025-06-01 22:45:06', NULL, NULL, NULL, 8), +(1252, '2025-05-28', 1, 4, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-06-01 22:46:40', '2025-06-01 22:46:40', NULL, NULL, NULL, 8), +(1258, '2025-05-28', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:46:40', '2025-06-01 22:46:40', NULL, NULL, NULL, 8), +(1262, '2025-05-28', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 5), +(1263, '2025-05-28', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 8), +(1264, '2025-05-28', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 8), +(1265, '2025-05-28', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 5), +(1266, '2025-05-28', 6, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 8), +(1267, '2025-05-28', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 5), +(1268, '2025-05-28', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 8), +(1269, '2025-05-28', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:48:21', '2025-06-01 22:48:21', NULL, NULL, NULL, 8), +(1270, '2025-05-29', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 8), +(1271, '2025-05-29', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 5), +(1272, '2025-05-29', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 8), +(1273, '2025-05-29', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 8), +(1274, '2025-05-29', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 5), +(1275, '2025-05-29', 6, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 8), +(1276, '2025-05-29', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 8), +(1277, '2025-05-29', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 5), +(1278, '2025-05-29', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 8), +(1279, '2025-05-29', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-01 22:49:55', '2025-06-01 22:49:55', NULL, NULL, NULL, 8), +(1281, '2025-05-30', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 5), +(1282, '2025-05-30', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 8), +(1283, '2025-05-30', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 8), +(1284, '2025-05-30', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 5), +(1285, '2025-05-30', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 8), +(1286, '2025-05-30', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 8), +(1287, '2025-05-30', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 5), +(1288, '2025-05-30', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 8), +(1289, '2025-05-30', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:50:53', '2025-06-01 22:50:53', NULL, NULL, NULL, 8), +(1290, '2025-06-02', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:52:18', '2025-06-01 22:52:18', NULL, NULL, NULL, 8), +(1291, '2025-06-02', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 5), +(1292, '2025-06-02', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 8), +(1293, '2025-06-02', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 8), +(1294, '2025-06-02', 5, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 15), +(1295, '2025-06-02', 6, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 8), +(1296, '2025-06-02', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 8), +(1297, '2025-06-02', 8, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 15), +(1298, '2025-06-02', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 8), +(1299, '2025-06-02', 10, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-01 22:52:19', '2025-06-01 22:52:19', NULL, NULL, NULL, 15), +(1300, '2025-05-30', 1, 4, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-06-01 23:17:51', '2025-06-01 23:17:51', NULL, NULL, NULL, 8), +(1301, '2025-01-02', 5, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-01 23:31:26', '2025-06-01 23:31:26', NULL, NULL, NULL, 15), +(1302, '2025-06-04', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 8), +(1303, '2025-06-04', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 5), +(1304, '2025-06-04', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 8), +(1305, '2025-06-04', 4, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 15), +(1306, '2025-06-04', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 8), +(1307, '2025-06-04', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 5), +(1308, '2025-06-04', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 8), +(1309, '2025-06-04', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 5), +(1310, '2025-06-04', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 8), +(1311, '2025-06-04', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-04 22:13:30', '2025-06-04 22:13:30', NULL, NULL, NULL, 8), +(1312, '2025-06-09', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-09 06:47:48', '2025-06-13 03:43:28', NULL, NULL, NULL, 8), +(1313, '2025-06-09', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-09 06:47:48', '2025-06-09 06:47:48', NULL, NULL, NULL, 5), +(1314, '2025-06-09', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-09 06:47:48', '2025-06-13 03:43:30', NULL, NULL, NULL, 8), +(1315, '2025-06-09', 4, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-09 06:47:48', '2025-06-09 06:47:48', NULL, NULL, NULL, 5), +(1316, '2025-06-09', 5, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-09 06:47:48', '2025-06-13 03:43:31', NULL, NULL, NULL, 8), +(1317, '2025-06-09', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-09 06:47:48', '2025-06-09 06:47:48', NULL, NULL, NULL, 5), +(1318, '2025-06-09', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-09 06:47:48', '2025-06-13 03:43:32', NULL, NULL, NULL, 8), +(1319, '2025-06-09', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-09 06:47:48', '2025-06-09 06:47:48', NULL, NULL, NULL, 5), +(1320, '2025-06-09', 9, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-09 06:47:48', '2025-06-09 06:47:48', NULL, NULL, NULL, 15), +(1321, '2025-06-09', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-09 06:47:48', '2025-06-13 03:43:34', NULL, NULL, NULL, 8), +(1322, '2025-06-10', 1, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-10 08:47:03', '2025-06-13 03:43:51', NULL, NULL, NULL, 8), +(1323, '2025-06-10', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-10 08:47:03', '2025-06-10 08:47:03', NULL, NULL, NULL, 5), +(1324, '2025-06-10', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-10 08:47:03', '2025-06-13 03:43:53', NULL, NULL, NULL, 8), +(1325, '2025-06-10', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-10 08:47:04', '2025-06-13 03:43:54', NULL, NULL, NULL, 8), +(1326, '2025-06-10', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-10 08:47:04', '2025-06-10 08:47:04', NULL, NULL, NULL, 5), +(1327, '2025-06-10', 6, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-10 08:47:04', '2025-06-10 08:47:04', NULL, NULL, NULL, 5), +(1328, '2025-06-10', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-10 08:47:04', '2025-06-13 03:43:55', NULL, NULL, NULL, 8), +(1329, '2025-06-10', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-10 08:47:04', '2025-06-10 08:47:04', NULL, NULL, NULL, 5), +(1330, '2025-06-10', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-10 08:47:04', '2025-06-13 03:43:56', NULL, NULL, NULL, 8), +(1331, '2025-06-10', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-10 08:47:04', '2025-06-13 03:43:56', NULL, NULL, NULL, 8), +(1332, '2025-06-11', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-11 07:59:16', '2025-06-13 03:44:18', NULL, NULL, NULL, 8), +(1333, '2025-06-11', 2, 3, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-06-11 07:59:16', '2025-06-11 07:59:16', NULL, NULL, NULL, 5), +(1334, '2025-06-11', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-11 07:59:16', '2025-06-13 03:44:19', NULL, NULL, NULL, 8), +(1335, '2025-06-11', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-11 07:59:16', '2025-06-13 03:44:20', NULL, NULL, NULL, 8), +(1336, '2025-06-11', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-11 07:59:16', '2025-06-11 07:59:16', NULL, NULL, NULL, 5), +(1337, '2025-06-11', 6, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-11 07:59:16', '2025-06-11 07:59:16', NULL, NULL, NULL, 5), +(1338, '2025-06-11', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-11 07:59:16', '2025-06-13 03:44:22', NULL, NULL, NULL, 8), +(1339, '2025-06-11', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-11 07:59:16', '2025-06-11 07:59:16', NULL, NULL, NULL, 5), +(1340, '2025-06-11', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-11 07:59:16', '2025-06-13 03:44:23', NULL, NULL, NULL, 8), +(1341, '2025-06-11', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-11 07:59:16', '2025-06-13 03:44:23', NULL, NULL, NULL, 8), +(1342, '2025-06-13', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 8), +(1343, '2025-06-13', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 5), +(1344, '2025-06-13', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 8), +(1345, '2025-06-13', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 8), +(1346, '2025-06-13', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 5), +(1347, '2025-06-13', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 5), +(1348, '2025-06-13', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 15), +(1349, '2025-06-13', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 5), +(1350, '2025-06-13', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 8), +(1351, '2025-06-13', 10, 4, NULL, NULL, NULL, NULL, '반차', NULL, '라인수정', '2025-06-13 03:25:23', '2025-06-13 03:25:23', NULL, NULL, NULL, 8), +(1352, '2025-06-05', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 8), +(1353, '2025-06-05', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 5), +(1354, '2025-06-05', 3, 4, NULL, NULL, NULL, NULL, '반차', NULL, '라인수정', '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 8), +(1355, '2025-06-05', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 8), +(1356, '2025-06-05', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 5), +(1357, '2025-06-05', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 5), +(1358, '2025-06-05', 7, 4, NULL, NULL, NULL, NULL, '반반차', NULL, '라인수정', '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 8), +(1359, '2025-06-05', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 5), +(1360, '2025-06-05', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 8), +(1361, '2025-06-05', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:34:20', '2025-06-13 03:34:20', NULL, NULL, NULL, 8), +(1362, '2025-06-12', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, '라인수정', '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 8), +(1363, '2025-06-12', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 5), +(1364, '2025-06-12', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 8), +(1365, '2025-06-12', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 8), +(1366, '2025-06-12', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 5), +(1367, '2025-06-12', 6, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 5), +(1368, '2025-06-12', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 8), +(1369, '2025-06-12', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 5), +(1370, '2025-06-12', 9, 4, NULL, NULL, NULL, NULL, '반차', NULL, '라인수정', '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 8), +(1371, '2025-06-12', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, '라인수정', '2025-06-13 03:36:11', '2025-06-13 03:36:11', NULL, NULL, NULL, 8), +(1372, '2025-06-16', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-16 04:26:26', '2025-06-16 04:26:26', NULL, NULL, NULL, 8), +(1373, '2025-06-16', 2, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 5), +(1374, '2025-06-16', 3, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 8), +(1375, '2025-06-16', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 8), +(1376, '2025-06-16', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 5), +(1377, '2025-06-16', 6, 3, NULL, NULL, NULL, NULL, '근무', NULL, 'Vessel NDE 불량 수리', '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 5), +(1378, '2025-06-16', 7, 13, NULL, NULL, NULL, NULL, '연차', NULL, NULL, '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 15), +(1379, '2025-06-16', 8, 3, NULL, NULL, NULL, NULL, '근무', NULL, 'Vessel NDE 불량 수리', '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 5), +(1380, '2025-06-16', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 8), +(1381, '2025-06-16', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-16 04:26:27', '2025-06-16 04:26:27', NULL, NULL, NULL, 8), +(1382, '2025-06-17', 1, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 8), +(1383, '2025-06-17', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 5), +(1384, '2025-06-17', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 8), +(1385, '2025-06-17', 4, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:36:28', NULL, NULL, NULL, 5), +(1386, '2025-06-17', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 5), +(1387, '2025-06-17', 6, 3, NULL, NULL, 2.0, NULL, '근무', NULL, '용기 비파괴 불량', '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 5), +(1388, '2025-06-17', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 8), +(1389, '2025-06-17', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, '용기 비파괴 불량', '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 5), +(1390, '2025-06-17', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 8), +(1391, '2025-06-17', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-17 08:17:30', '2025-06-17 08:17:30', NULL, NULL, NULL, 8), +(1392, '2025-06-18', 1, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 8), +(1393, '2025-06-18', 2, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 5), +(1394, '2025-06-18', 3, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 8), +(1395, '2025-06-18', 4, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 8), +(1396, '2025-06-18', 5, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 5), +(1397, '2025-06-18', 6, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 5), +(1398, '2025-06-18', 7, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 8), +(1399, '2025-06-18', 8, 3, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 5), +(1400, '2025-06-18', 9, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 8), +(1401, '2025-06-18', 10, 4, NULL, NULL, 2.0, NULL, '근무', NULL, NULL, '2025-06-18 08:16:50', '2025-06-18 08:16:50', NULL, NULL, NULL, 8), +(1402, '2025-06-24', 1, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), +(1403, '2025-06-24', 2, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 5), +(1404, '2025-06-24', 3, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), +(1405, '2025-06-24', 4, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), +(1406, '2025-06-24', 5, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), +(1407, '2025-06-24', 6, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), +(1408, '2025-06-24', 7, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), +(1409, '2025-06-24', 8, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 5), +(1410, '2025-06-24', 9, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), +(1411, '2025-06-24', 10, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-24 09:25:01', '2025-06-24 09:25:01', NULL, NULL, NULL, 8), +(1412, '2025-06-25', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), +(1413, '2025-06-25', 2, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 5), +(1414, '2025-06-25', 3, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), +(1415, '2025-06-25', 4, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), +(1416, '2025-06-25', 5, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), +(1417, '2025-06-25', 6, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), +(1418, '2025-06-25', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), +(1419, '2025-06-25', 8, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 5), +(1420, '2025-06-25', 9, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), +(1421, '2025-06-25', 10, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-25 07:08:25', '2025-06-25 07:08:25', NULL, NULL, NULL, 18), +(1422, '2025-06-26', 1, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 18), +(1423, '2025-06-26', 2, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 5), +(1424, '2025-06-26', 3, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 5), +(1425, '2025-06-26', 4, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 18), +(1426, '2025-06-26', 5, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 18), +(1427, '2025-06-26', 6, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 5), +(1428, '2025-06-26', 7, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 18), +(1429, '2025-06-26', 8, 3, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 5), +(1430, '2025-06-26', 9, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 18), +(1431, '2025-06-26', 10, 4, NULL, NULL, 4.0, NULL, '근무', NULL, NULL, '2025-06-26 22:45:15', '2025-06-26 22:45:15', NULL, NULL, NULL, 18), +(1432, '2025-06-27', 1, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 18), +(1433, '2025-06-27', 2, 3, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 5), +(1434, '2025-06-27', 3, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 5), +(1435, '2025-06-27', 4, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 18), +(1436, '2025-06-27', 5, 3, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 5), +(1437, '2025-06-27', 6, 3, NULL, NULL, NULL, NULL, '반차', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 5), +(1438, '2025-06-27', 7, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 18), +(1439, '2025-06-27', 8, 3, NULL, NULL, NULL, NULL, '반반차', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 5), +(1440, '2025-06-27', 9, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 18), +(1441, '2025-06-27', 10, 4, NULL, NULL, NULL, NULL, '근무', NULL, NULL, '2025-06-26 22:48:37', '2025-06-26 22:48:37', NULL, NULL, NULL, 18); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `work_report_audit_log` +-- + +CREATE TABLE `work_report_audit_log` ( + `log_id` int(11) NOT NULL, + `action` enum('ADD_ACCUMULATE','DELETE_SINGLE','UPDATE','DELETE','CREATE','DELETE_BATCH') NOT NULL COMMENT '작업 유형', + `report_id` int(11) DEFAULT NULL COMMENT '관련 보고서 ID', + `old_values` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '변경 전 값' CHECK (json_valid(`old_values`)), + `new_values` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '변경 후 값' CHECK (json_valid(`new_values`)), + `changed_by` int(11) NOT NULL COMMENT '변경자 ID', + `change_reason` varchar(500) DEFAULT NULL COMMENT '변경 사유', + `ip_address` varchar(45) DEFAULT NULL COMMENT 'IP 주소', + `user_agent` text DEFAULT NULL COMMENT '사용자 에이전트', + `created_at` timestamp NOT NULL DEFAULT current_timestamp() COMMENT '변경 시간' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 테이블의 덤프 데이터 `work_report_audit_log` +-- + +INSERT INTO `work_report_audit_log` (`log_id`, `action`, `report_id`, `old_values`, `new_values`, `changed_by`, `change_reason`, `ip_address`, `user_agent`, `created_at`) VALUES +(1, 'ADD_ACCUMULATE', 12, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-16 02:56:12'), +(2, 'DELETE_SINGLE', 12, '{\"worker_name\":\"김두수\",\"project_name\":\"MP7 Project\",\"work_hours\":\"4.00\",\"report_date\":\"2025-06-16T00:00:00.000Z\"}', NULL, 3, '개별 항목 삭제', NULL, NULL, '2025-06-16 03:17:36'), +(3, 'DELETE_SINGLE', 11, '{\"worker_name\":\"김두수\",\"project_name\":\"연차/휴무\",\"work_hours\":\"4.00\",\"report_date\":\"2025-06-16T00:00:00.000Z\"}', NULL, 3, '개별 항목 삭제', NULL, NULL, '2025-06-16 03:17:39'), +(4, 'DELETE_SINGLE', 7, '{\"worker_name\":\"임영규\",\"project_name\":\"연차/휴무\",\"work_hours\":\"4.00\",\"report_date\":\"2025-06-16T00:00:00.000Z\"}', NULL, 3, '개별 항목 삭제', NULL, NULL, '2025-06-16 03:17:41'), +(5, 'ADD_ACCUMULATE', 13, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":1,\"my_total\":\"1.00\",\"grand_total\":1,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"1.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 03:18:37'), +(6, 'DELETE_SINGLE', 13, '{\"worker_name\":\"임영규\",\"project_name\":\"연차/휴무\",\"work_hours\":\"1.00\",\"report_date\":\"2025-06-16T00:00:00.000Z\"}', NULL, 5, '개별 항목 삭제', NULL, NULL, '2025-06-16 03:19:23'), +(7, 'ADD_ACCUMULATE', 14, NULL, '{\"report_date\":\"2025-06-02\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:10:23'), +(8, 'ADD_ACCUMULATE', 15, NULL, '{\"report_date\":\"2025-06-02\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:10:23'), +(9, 'ADD_ACCUMULATE', 16, NULL, '{\"report_date\":\"2025-06-02\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:10:23'), +(10, 'ADD_ACCUMULATE', 17, NULL, '{\"report_date\":\"2025-06-02\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:10:23'), +(11, 'ADD_ACCUMULATE', 18, NULL, '{\"report_date\":\"2025-06-02\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:10:23'), +(12, 'ADD_ACCUMULATE', 19, NULL, '{\"report_date\":\"2025-06-02\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:10:23'), +(13, 'ADD_ACCUMULATE', 20, NULL, '{\"report_date\":\"2025-06-02\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:10:47'), +(14, 'ADD_ACCUMULATE', 21, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:11:37'), +(15, 'ADD_ACCUMULATE', 22, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:11:37'), +(16, 'ADD_ACCUMULATE', 23, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:11:37'), +(17, 'ADD_ACCUMULATE', 24, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:11:37'), +(18, 'ADD_ACCUMULATE', 25, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:11:37'), +(19, 'ADD_ACCUMULATE', 26, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:11:37'), +(20, 'ADD_ACCUMULATE', 27, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:07'), +(21, 'ADD_ACCUMULATE', 28, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:07'), +(22, 'ADD_ACCUMULATE', 29, NULL, '{\"report_date\":\"2025-06-04\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:07'), +(23, 'ADD_ACCUMULATE', 30, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:57'), +(24, 'ADD_ACCUMULATE', 31, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:57'), +(25, 'ADD_ACCUMULATE', 32, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:57'), +(26, 'ADD_ACCUMULATE', 33, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:57'), +(27, 'ADD_ACCUMULATE', 34, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:57'), +(28, 'ADD_ACCUMULATE', 35, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:12:57'), +(29, 'ADD_ACCUMULATE', 36, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:13:56'), +(30, 'ADD_ACCUMULATE', 37, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:13:56'), +(31, 'ADD_ACCUMULATE', 38, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:13:56'), +(32, 'ADD_ACCUMULATE', 39, NULL, '{\"report_date\":\"2025-06-05\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":null,\"hours\":\"8.00\"}]}', 1, '누적 추가 by hyungi - 삭제 없음', NULL, NULL, '2025-06-16 05:13:56'), +(33, 'ADD_ACCUMULATE', 40, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 06:12:01'), +(34, 'ADD_ACCUMULATE', 41, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 06:12:01'), +(35, 'ADD_ACCUMULATE', 42, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 06:12:01'), +(36, 'ADD_ACCUMULATE', 43, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 06:12:01'), +(37, 'DELETE_SINGLE', 42, '{\"worker_name\":\"김윤섭\",\"project_name\":\"효성화학 에틸렌 탱크 건설공사\",\"work_hours\":\"8.00\",\"report_date\":\"2025-06-16T00:00:00.000Z\"}', NULL, 5, '개별 항목 삭제', NULL, NULL, '2025-06-16 06:12:33'), +(38, 'ADD_ACCUMULATE', 44, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"4.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 06:13:02'), +(39, 'ADD_ACCUMULATE', 45, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 06:13:50'), +(40, 'DELETE_SINGLE', 41, '{\"worker_name\":\"최광욱\",\"project_name\":\"효성화학 에틸렌 탱크 건설공사\",\"work_hours\":\"8.00\",\"report_date\":\"2025-06-16T00:00:00.000Z\"}', NULL, 5, '개별 항목 삭제', NULL, NULL, '2025-06-16 06:14:48'), +(41, 'ADD_ACCUMULATE', 46, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-16 06:15:22'), +(42, 'DELETE_SINGLE', 1, '{\"worker_name\":\"김두수\",\"project_name\":\"25년 안전보건시설설비\",\"work_hours\":\"1.00\",\"report_date\":\"2025-06-01T00:00:00.000Z\"}', NULL, 1, '개별 항목 삭제', NULL, NULL, '2025-06-16 06:20:38'), +(43, 'ADD_ACCUMULATE', 48, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-16 06:46:44'), +(44, 'ADD_ACCUMULATE', 49, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-16 06:46:44'), +(45, 'ADD_ACCUMULATE', 50, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-16 06:46:44'), +(46, 'DELETE_SINGLE', 49, '{\"worker_name\":\"박현수\",\"project_name\":\"김천 솔라 파워 그린 수소 Project\",\"work_hours\":\"8.00\",\"report_date\":\"2025-06-16T00:00:00.000Z\"}', NULL, 3, '개별 항목 삭제', NULL, NULL, '2025-06-16 06:47:54'), +(47, 'ADD_ACCUMULATE', 51, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-16 06:48:29'), +(48, 'ADD_ACCUMULATE', 52, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":10,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-16 06:50:09'), +(49, 'ADD_ACCUMULATE', 54, NULL, '{\"report_date\":\"2025-06-16\",\"worker_id\":3,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-16 06:50:09'), +(50, 'ADD_ACCUMULATE', 56, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-17 08:23:41'), +(51, 'ADD_ACCUMULATE', 58, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-17 08:23:41'), +(52, 'ADD_ACCUMULATE', 60, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":6,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-17 08:24:33'), +(53, 'ADD_ACCUMULATE', 62, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-17 08:24:33'), +(54, 'ADD_ACCUMULATE', 64, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:24:44'), +(55, 'ADD_ACCUMULATE', 65, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:25:24'), +(56, 'DELETE_SINGLE', 64, '{\"worker_name\":\"황인용\",\"project_name\":\"김천 솔라 파워 그린 수소 Project\",\"work_hours\":\"4.00\",\"report_date\":\"2025-06-17T00:00:00.000Z\"}', NULL, 3, '개별 항목 삭제', NULL, NULL, '2025-06-17 08:26:17'), +(57, 'ADD_ACCUMULATE', 66, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:27:06'), +(58, 'ADD_ACCUMULATE', 67, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"4.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:27:06'), +(59, 'ADD_ACCUMULATE', 68, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:31:06'), +(60, 'ADD_ACCUMULATE', 69, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:31:06'), +(61, 'ADD_ACCUMULATE', 70, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:31:06'), +(62, 'ADD_ACCUMULATE', 71, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:33:06'), +(63, 'ADD_ACCUMULATE', 72, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:33:06'), +(64, 'ADD_ACCUMULATE', 73, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-17 08:33:06'), +(65, 'ADD_ACCUMULATE', 74, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":10,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-17 08:34:11'), +(66, 'ADD_ACCUMULATE', 76, NULL, '{\"report_date\":\"2025-06-17\",\"worker_id\":3,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-17 08:34:11'), +(67, 'ADD_ACCUMULATE', 78, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-18 08:40:27'), +(68, 'ADD_ACCUMULATE', 79, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-18 08:40:27'), +(69, 'ADD_ACCUMULATE', 80, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-18 08:40:27'), +(70, 'ADD_ACCUMULATE', 81, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-18 08:41:02'), +(71, 'ADD_ACCUMULATE', 82, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-18 08:41:03'), +(72, 'ADD_ACCUMULATE', 83, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":2,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-18 08:41:03'), +(73, 'ADD_ACCUMULATE', 84, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"10.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-18 08:41:45'), +(74, 'ADD_ACCUMULATE', 86, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":10,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-18 08:47:55'), +(75, 'ADD_ACCUMULATE', 88, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":3,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"10.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-18 08:47:55'), +(76, 'ADD_ACCUMULATE', 90, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-18 08:50:19'), +(77, 'ADD_ACCUMULATE', 92, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-18 08:50:19'), +(78, 'ADD_ACCUMULATE', 94, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":1,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-18 08:50:19'), +(79, 'ADD_ACCUMULATE', 96, NULL, '{\"report_date\":\"2025-06-18\",\"worker_id\":7,\"work_entries_count\":2,\"added_hours\":10,\"my_total\":\"10.00\",\"grand_total\":10,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"10.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-18 09:00:17'), +(80, 'ADD_ACCUMULATE', 98, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-19 06:37:59'), +(81, 'ADD_ACCUMULATE', 99, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-19 06:37:59'), +(82, 'ADD_ACCUMULATE', 100, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-19 06:59:36'), +(83, 'ADD_ACCUMULATE', 101, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-19 06:59:36'), +(84, 'ADD_ACCUMULATE', 102, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-19 06:59:36'), +(85, 'ADD_ACCUMULATE', 103, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-19 07:01:02'), +(86, 'ADD_ACCUMULATE', 105, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-19 07:01:02'), +(87, 'ADD_ACCUMULATE', 107, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":1,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-19 07:01:02'), +(88, 'ADD_ACCUMULATE', 109, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":7,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-19 07:01:02'), +(89, 'ADD_ACCUMULATE', 111, NULL, '{\"report_date\":\"2025-06-19\",\"worker_id\":6,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-19 07:01:02'), +(90, 'ADD_ACCUMULATE', 113, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-20 06:44:01'), +(91, 'ADD_ACCUMULATE', 115, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-20 06:44:01'), +(92, 'ADD_ACCUMULATE', 117, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":7,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-20 06:44:01'), +(93, 'ADD_ACCUMULATE', 119, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":6,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-20 06:44:02'), +(94, 'ADD_ACCUMULATE', 121, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":1,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-20 06:44:02'), +(95, 'ADD_ACCUMULATE', 123, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-20 06:44:02'), +(96, 'ADD_ACCUMULATE', 125, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-20 06:45:30'), +(97, 'ADD_ACCUMULATE', 126, NULL, '{\"report_date\":\"2025-06-20\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-20 06:45:31'), +(98, 'ADD_ACCUMULATE', 127, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-23 06:42:58'), +(99, 'ADD_ACCUMULATE', 128, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-23 06:42:58'), +(100, 'ADD_ACCUMULATE', 129, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-23 06:51:28'), +(101, 'ADD_ACCUMULATE', 131, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":1,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-23 06:51:28'), +(102, 'ADD_ACCUMULATE', 133, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-23 06:51:28'), +(103, 'ADD_ACCUMULATE', 135, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-23 06:51:28'), +(104, 'ADD_ACCUMULATE', 137, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":7,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-23 06:51:28'), +(105, 'ADD_ACCUMULATE', 139, NULL, '{\"report_date\":\"2025-06-23\",\"worker_id\":6,\"work_entries_count\":2,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-23 06:51:28'), +(106, 'ADD_ACCUMULATE', 141, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-24 11:10:32'), +(107, 'ADD_ACCUMULATE', 142, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-24 11:10:32'), +(108, 'ADD_ACCUMULATE', 143, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:00'), +(109, 'ADD_ACCUMULATE', 145, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":5,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:00'), +(110, 'ADD_ACCUMULATE', 147, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":4,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:00'), +(111, 'ADD_ACCUMULATE', 149, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":7,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:00'), +(112, 'ADD_ACCUMULATE', 151, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":6,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:00'), +(113, 'ADD_ACCUMULATE', 153, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":1,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:00'), +(114, 'ADD_ACCUMULATE', 155, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"12.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:05'), +(115, 'ADD_ACCUMULATE', 157, NULL, '{\"report_date\":\"2025-06-24\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"12.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-24 11:11:05'), +(116, 'ADD_ACCUMULATE', 159, NULL, '{\"report_date\":\"2025-06-25\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"12.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-25 11:08:04'), +(117, 'ADD_ACCUMULATE', 161, NULL, '{\"report_date\":\"2025-06-25\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"12.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-25 11:08:05'), +(118, 'ADD_ACCUMULATE', 163, NULL, '{\"report_date\":\"2025-06-25\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-25 11:11:30'), +(119, 'ADD_ACCUMULATE', 164, NULL, '{\"report_date\":\"2025-06-25\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-25 11:11:30'), +(120, 'ADD_ACCUMULATE', 165, NULL, '{\"report_date\":\"2025-06-25\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-25 11:11:30'), +(121, 'ADD_ACCUMULATE', 166, NULL, '{\"report_date\":\"2025-06-25\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-25 11:11:30'), +(122, 'ADD_ACCUMULATE', 167, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-26 10:29:38'), +(123, 'ADD_ACCUMULATE', 168, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-26 10:29:38'), +(124, 'ADD_ACCUMULATE', 169, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-26 10:29:38'), +(125, 'ADD_ACCUMULATE', 170, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-26 10:29:38'), +(126, 'ADD_ACCUMULATE', 171, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"12.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-26 10:29:38'), +(127, 'ADD_ACCUMULATE', 172, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":8,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"12.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-26 11:11:31'), +(128, 'ADD_ACCUMULATE', 174, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":2,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"12.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-26 11:11:32'), +(129, 'ADD_ACCUMULATE', 176, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":9,\"work_entries_count\":2,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"12.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-26 11:11:32'), +(130, 'ADD_ACCUMULATE', 178, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-26 11:19:34'), +(131, 'ADD_ACCUMULATE', 179, NULL, '{\"report_date\":\"2025-06-26\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":12,\"my_total\":\"12.00\",\"grand_total\":12,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"12.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-26 11:19:34'), +(132, 'ADD_ACCUMULATE', 180, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-27 01:54:21'), +(133, 'ADD_ACCUMULATE', 181, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-27 01:54:21'), +(134, 'ADD_ACCUMULATE', 182, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":2,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"4.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-27 01:54:40'), +(135, 'ADD_ACCUMULATE', 183, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":9,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":16,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"},{\"name\":\"임영규\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-27 06:47:43'), +(136, 'ADD_ACCUMULATE', 184, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":10,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-27 06:47:43'), +(137, 'ADD_ACCUMULATE', 185, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":7,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-27 06:47:43'), +(138, 'ADD_ACCUMULATE', 186, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":5,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-27 06:47:43'), +(139, 'ADD_ACCUMULATE', 187, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":4,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-27 06:47:43'), +(140, 'ADD_ACCUMULATE', 188, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":1,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"김두수\",\"hours\":\"8.00\"}]}', 3, '누적 추가 by 김두수 - 삭제 없음', NULL, NULL, '2025-06-27 06:47:43'), +(141, 'ADD_ACCUMULATE', 189, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":3,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-27 06:49:08'), +(142, 'ADD_ACCUMULATE', 190, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":8,\"my_total\":\"8.00\",\"grand_total\":8,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"8.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-27 06:49:08'), +(143, 'DELETE_SINGLE', 190, '{\"worker_name\":\"김윤섭\",\"project_name\":\"효성화학 에틸렌 탱크 건설공사\",\"work_hours\":\"8.00\",\"report_date\":\"2025-06-27T00:00:00.000Z\"}', NULL, 6, '개별 항목 삭제', NULL, NULL, '2025-06-27 06:58:25'), +(144, 'ADD_ACCUMULATE', 191, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":6,\"work_entries_count\":1,\"added_hours\":4,\"my_total\":\"4.00\",\"grand_total\":4,\"contributors\":[{\"name\":\"반치원\",\"hours\":\"4.00\"}]}', 6, '누적 추가 by 반치원 - 삭제 없음', NULL, NULL, '2025-06-27 06:58:46'), +(145, 'DELETE_SINGLE', 181, '{\"worker_name\":\"박현수\",\"project_name\":\"효성화학 에틸렌 탱크 건설공사\",\"work_hours\":\"8.00\",\"report_date\":\"2025-06-27T00:00:00.000Z\"}', NULL, 5, '개별 항목 삭제', NULL, NULL, '2025-06-27 06:59:37'), +(146, 'DELETE_SINGLE', 180, '{\"worker_name\":\"최광욱\",\"project_name\":\"효성화학 에틸렌 탱크 건설공사\",\"work_hours\":\"8.00\",\"report_date\":\"2025-06-27T00:00:00.000Z\"}', NULL, 5, '개별 항목 삭제', NULL, NULL, '2025-06-27 06:59:42'), +(147, 'ADD_ACCUMULATE', 192, NULL, '{\"report_date\":\"2025-06-27\",\"worker_id\":8,\"work_entries_count\":1,\"added_hours\":6,\"my_total\":\"6.00\",\"grand_total\":6,\"contributors\":[{\"name\":\"임영규\",\"hours\":\"6.00\"}]}', 5, '누적 추가 by 임영규 - 삭제 없음', NULL, NULL, '2025-06-27 07:00:10'); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `work_status_types` +-- + +CREATE TABLE `work_status_types` ( + `id` int(11) NOT NULL, + `name` varchar(50) NOT NULL COMMENT '상태명', + `description` text DEFAULT NULL COMMENT '상태 설명', + `is_error` tinyint(1) DEFAULT 0 COMMENT '에러 상태 여부', + `created_at` timestamp NOT NULL DEFAULT current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 테이블의 덤프 데이터 `work_status_types` +-- + +INSERT INTO `work_status_types` (`id`, `name`, `description`, `is_error`, `created_at`) VALUES +(1, '정규', '정상적으로 완료된 작업', 0, '2025-06-16 02:21:16'), +(2, '에러', '오류가 발생한 작업', 1, '2025-06-16 02:21:16'); + +-- -------------------------------------------------------- + +-- +-- 테이블 구조 `work_types` +-- + +CREATE TABLE `work_types` ( + `id` int(11) NOT NULL, + `name` varchar(100) NOT NULL COMMENT '작업 유형명', + `description` text DEFAULT NULL COMMENT '작업 유형 설명', + `category` varchar(50) DEFAULT NULL COMMENT '작업 카테고리', + `created_at` timestamp NOT NULL DEFAULT current_timestamp(), + `updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- +-- 테이블의 덤프 데이터 `work_types` +-- + +INSERT INTO `work_types` (`id`, `name`, `description`, `category`, `created_at`, `updated_at`) VALUES +(1, 'Base(구조물)', NULL, NULL, '2025-06-16 02:21:32', '2025-06-16 03:03:42'), +(2, 'Vessel(용기)', NULL, NULL, '2025-06-16 02:21:32', '2025-06-16 03:03:47'), +(3, 'Piping Assembly(배관)', NULL, NULL, '2025-06-16 02:21:32', '2025-06-16 03:03:50'), +(4, '작업대기', NULL, NULL, '2025-06-16 02:21:32', '2025-06-16 03:03:56'); + +-- +-- 덤프된 테이블의 인덱스 +-- + +-- +-- 테이블의 인덱스 `activity_logs` +-- +ALTER TABLE `activity_logs` + ADD PRIMARY KEY (`log_id`), + ADD KEY `idx_user_activity` (`user_id`,`activity_type`,`created_at`), + ADD KEY `idx_table_record` (`table_name`,`record_id`); + +-- +-- 테이블의 인덱스 `CuttingPlan` +-- +ALTER TABLE `CuttingPlan` + ADD PRIMARY KEY (`cutting_plan_id`), + ADD KEY `project_id` (`project_id`), + ADD KEY `fk_cuttingplan_spec` (`spec_id`); + +-- +-- 테이블의 인덱스 `DailyIssueReports` +-- +ALTER TABLE `DailyIssueReports` + ADD PRIMARY KEY (`id`), + ADD KEY `worker_id` (`worker_id`), + ADD KEY `fk_dird_project` (`project_id`), + ADD KEY `fk_dird_issuetype` (`issue_type_id`); + +-- +-- 테이블의 인덱스 `daily_worker_summary` +-- +ALTER TABLE `daily_worker_summary` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `unique_worker_date` (`worker_id`,`report_date`); + +-- +-- 테이블의 인덱스 `daily_work_reports` +-- +ALTER TABLE `daily_work_reports` + ADD PRIMARY KEY (`id`), + ADD KEY `idx_report_date` (`report_date`), + ADD KEY `idx_worker_date` (`worker_id`,`report_date`), + ADD KEY `idx_project_date` (`project_id`,`report_date`), + ADD KEY `idx_work_type` (`work_type_id`), + ADD KEY `idx_work_status` (`work_status_id`), + ADD KEY `idx_error_type` (`error_type_id`), + ADD KEY `idx_created_by` (`created_by`), + ADD KEY `idx_date_worker_creator` (`report_date`,`worker_id`,`created_by`); + +-- +-- 테이블의 인덱스 `EquipmentList` +-- +ALTER TABLE `EquipmentList` + ADD PRIMARY KEY (`equipment_id`), + ADD KEY `factory_id` (`factory_id`); + +-- +-- 테이블의 인덱스 `error_types` +-- +ALTER TABLE `error_types` + ADD PRIMARY KEY (`id`); + +-- +-- 테이블의 인덱스 `FactoryInfo` +-- +ALTER TABLE `FactoryInfo` + ADD PRIMARY KEY (`factory_id`); + +-- +-- 테이블의 인덱스 `IssueTypes` +-- +ALTER TABLE `IssueTypes` + ADD PRIMARY KEY (`issue_type_id`); + +-- +-- 테이블의 인덱스 `login_logs` +-- +ALTER TABLE `login_logs` + ADD PRIMARY KEY (`log_id`), + ADD KEY `idx_user_login` (`user_id`,`login_time`); + +-- +-- 테이블의 인덱스 `password_change_logs` +-- +ALTER TABLE `password_change_logs` + ADD PRIMARY KEY (`log_id`), + ADD KEY `changed_by_user_id` (`changed_by_user_id`), + ADD KEY `idx_user_changes` (`user_id`,`changed_at`); + +-- +-- 테이블의 인덱스 `PipeSpecs` +-- +ALTER TABLE `PipeSpecs` + ADD PRIMARY KEY (`spec_id`), + ADD UNIQUE KEY `unique_spec` (`material`,`diameter_in`,`schedule`); + +-- +-- 테이블의 인덱스 `Processes` +-- +ALTER TABLE `Processes` + ADD PRIMARY KEY (`process_id`), + ADD KEY `project_id` (`project_id`); + +-- +-- 테이블의 인덱스 `Projects` +-- +ALTER TABLE `Projects` + ADD PRIMARY KEY (`project_id`); + +-- +-- 테이블의 인덱스 `Tasks` +-- +ALTER TABLE `Tasks` + ADD PRIMARY KEY (`task_id`); + +-- +-- 테이블의 인덱스 `uploaded_documents` +-- +ALTER TABLE `uploaded_documents` + ADD PRIMARY KEY (`id`); + +-- +-- 테이블의 인덱스 `Users` +-- +ALTER TABLE `Users` + ADD PRIMARY KEY (`user_id`), + ADD UNIQUE KEY `username` (`username`), + ADD UNIQUE KEY `email` (`email`), + ADD KEY `fk_worker` (`worker_id`), + ADD KEY `idx_username` (`username`), + ADD KEY `idx_active_users` (`is_active`,`access_level`); + +-- +-- 테이블의 인덱스 `Workers` +-- +ALTER TABLE `Workers` + ADD PRIMARY KEY (`worker_id`); + +-- +-- 테이블의 인덱스 `worker_groups` +-- +ALTER TABLE `worker_groups` + ADD PRIMARY KEY (`id`), + ADD UNIQUE KEY `uk_leader_worker` (`group_leader_id`,`worker_id`), + ADD KEY `idx_group_leader` (`group_leader_id`), + ADD KEY `idx_worker` (`worker_id`), + ADD KEY `idx_is_active` (`is_active`); + +-- +-- 테이블의 인덱스 `WorkReports` +-- +ALTER TABLE `WorkReports` + ADD PRIMARY KEY (`id`), + ADD KEY `worker_id` (`worker_id`), + ADD KEY `project_id` (`project_id`), + ADD KEY `morning_task_id` (`morning_task_id`), + ADD KEY `afternoon_task_id` (`afternoon_task_id`), + ADD KEY `overtime_task_id` (`overtime_task_id`); + +-- +-- 테이블의 인덱스 `work_report_audit_log` +-- +ALTER TABLE `work_report_audit_log` + ADD PRIMARY KEY (`log_id`), + ADD KEY `idx_action_date` (`action`,`created_at`), + ADD KEY `idx_changed_by` (`changed_by`), + ADD KEY `idx_report_id` (`report_id`); + +-- +-- 테이블의 인덱스 `work_status_types` +-- +ALTER TABLE `work_status_types` + ADD PRIMARY KEY (`id`); + +-- +-- 테이블의 인덱스 `work_types` +-- +ALTER TABLE `work_types` + ADD PRIMARY KEY (`id`); + +-- +-- 덤프된 테이블의 AUTO_INCREMENT +-- + +-- +-- 테이블의 AUTO_INCREMENT `activity_logs` +-- +ALTER TABLE `activity_logs` + MODIFY `log_id` int(11) NOT NULL AUTO_INCREMENT; + +-- +-- 테이블의 AUTO_INCREMENT `CuttingPlan` +-- +ALTER TABLE `CuttingPlan` + MODIFY `cutting_plan_id` int(11) NOT NULL AUTO_INCREMENT; + +-- +-- 테이블의 AUTO_INCREMENT `DailyIssueReports` +-- +ALTER TABLE `DailyIssueReports` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10; + +-- +-- 테이블의 AUTO_INCREMENT `daily_worker_summary` +-- +ALTER TABLE `daily_worker_summary` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; + +-- +-- 테이블의 AUTO_INCREMENT `daily_work_reports` +-- +ALTER TABLE `daily_work_reports` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=193; + +-- +-- 테이블의 AUTO_INCREMENT `EquipmentList` +-- +ALTER TABLE `EquipmentList` + MODIFY `equipment_id` int(11) NOT NULL AUTO_INCREMENT; + +-- +-- 테이블의 AUTO_INCREMENT `error_types` +-- +ALTER TABLE `error_types` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=10; + +-- +-- 테이블의 AUTO_INCREMENT `FactoryInfo` +-- +ALTER TABLE `FactoryInfo` + MODIFY `factory_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6; + +-- +-- 테이블의 AUTO_INCREMENT `IssueTypes` +-- +ALTER TABLE `IssueTypes` + MODIFY `issue_type_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; + +-- +-- 테이블의 AUTO_INCREMENT `login_logs` +-- +ALTER TABLE `login_logs` + MODIFY `log_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=142; + +-- +-- 테이블의 AUTO_INCREMENT `password_change_logs` +-- +ALTER TABLE `password_change_logs` + MODIFY `log_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; + +-- +-- 테이블의 AUTO_INCREMENT `PipeSpecs` +-- +ALTER TABLE `PipeSpecs` + MODIFY `spec_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3; + +-- +-- 테이블의 AUTO_INCREMENT `Processes` +-- +ALTER TABLE `Processes` + MODIFY `process_id` int(11) NOT NULL AUTO_INCREMENT; + +-- +-- 테이블의 AUTO_INCREMENT `Projects` +-- +ALTER TABLE `Projects` + MODIFY `project_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=14; + +-- +-- 테이블의 AUTO_INCREMENT `Tasks` +-- +ALTER TABLE `Tasks` + MODIFY `task_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=19; + +-- +-- 테이블의 AUTO_INCREMENT `uploaded_documents` +-- +ALTER TABLE `uploaded_documents` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; + +-- +-- 테이블의 AUTO_INCREMENT `Users` +-- +ALTER TABLE `Users` + MODIFY `user_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7; + +-- +-- 테이블의 AUTO_INCREMENT `Workers` +-- +ALTER TABLE `Workers` + MODIFY `worker_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=12; + +-- +-- 테이블의 AUTO_INCREMENT `worker_groups` +-- +ALTER TABLE `worker_groups` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT; + +-- +-- 테이블의 AUTO_INCREMENT `WorkReports` +-- +ALTER TABLE `WorkReports` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1442; + +-- +-- 테이블의 AUTO_INCREMENT `work_report_audit_log` +-- +ALTER TABLE `work_report_audit_log` + MODIFY `log_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=148; + +-- +-- 테이블의 AUTO_INCREMENT `work_status_types` +-- +ALTER TABLE `work_status_types` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5; + +-- +-- 테이블의 AUTO_INCREMENT `work_types` +-- +ALTER TABLE `work_types` + MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=11; + +-- +-- 덤프된 테이블의 제약사항 +-- + +-- +-- 테이블의 제약사항 `activity_logs` +-- +ALTER TABLE `activity_logs` + ADD CONSTRAINT `activity_logs_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `Users` (`user_id`) ON DELETE SET NULL; + +-- +-- 테이블의 제약사항 `CuttingPlan` +-- +ALTER TABLE `CuttingPlan` + ADD CONSTRAINT `CuttingPlan_ibfk_1` FOREIGN KEY (`project_id`) REFERENCES `Projects` (`project_id`), + ADD CONSTRAINT `fk_cuttingplan_spec` FOREIGN KEY (`spec_id`) REFERENCES `PipeSpecs` (`spec_id`); + +-- +-- 테이블의 제약사항 `DailyIssueReports` +-- +ALTER TABLE `DailyIssueReports` + ADD CONSTRAINT `dailyissuereports_ibfk_1` FOREIGN KEY (`worker_id`) REFERENCES `Workers` (`worker_id`), + ADD CONSTRAINT `fk_dird_issuetype` FOREIGN KEY (`issue_type_id`) REFERENCES `IssueTypes` (`issue_type_id`), + ADD CONSTRAINT `fk_dird_project` FOREIGN KEY (`project_id`) REFERENCES `Projects` (`project_id`); + +-- +-- 테이블의 제약사항 `EquipmentList` +-- +ALTER TABLE `EquipmentList` + ADD CONSTRAINT `EquipmentList_ibfk_1` FOREIGN KEY (`factory_id`) REFERENCES `FactoryInfo` (`factory_id`); + +-- +-- 테이블의 제약사항 `login_logs` +-- +ALTER TABLE `login_logs` + ADD CONSTRAINT `login_logs_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `Users` (`user_id`) ON DELETE CASCADE; + +-- +-- 테이블의 제약사항 `password_change_logs` +-- +ALTER TABLE `password_change_logs` + ADD CONSTRAINT `password_change_logs_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `Users` (`user_id`) ON DELETE CASCADE, + ADD CONSTRAINT `password_change_logs_ibfk_2` FOREIGN KEY (`changed_by_user_id`) REFERENCES `Users` (`user_id`) ON DELETE SET NULL; + +-- +-- 테이블의 제약사항 `Processes` +-- +ALTER TABLE `Processes` + ADD CONSTRAINT `Processes_ibfk_1` FOREIGN KEY (`project_id`) REFERENCES `Projects` (`project_id`); + +-- +-- 테이블의 제약사항 `Users` +-- +ALTER TABLE `Users` + ADD CONSTRAINT `fk_worker` FOREIGN KEY (`worker_id`) REFERENCES `Workers` (`worker_id`); + +-- +-- 테이블의 제약사항 `worker_groups` +-- +ALTER TABLE `worker_groups` + ADD CONSTRAINT `fk_group_leader` FOREIGN KEY (`group_leader_id`) REFERENCES `Users` (`user_id`) ON DELETE CASCADE, + ADD CONSTRAINT `fk_group_worker` FOREIGN KEY (`worker_id`) REFERENCES `Workers` (`worker_id`) ON DELETE CASCADE; + +-- +-- 테이블의 제약사항 `WorkReports` +-- +ALTER TABLE `WorkReports` + ADD CONSTRAINT `WorkReports_ibfk_1` FOREIGN KEY (`worker_id`) REFERENCES `Workers` (`worker_id`), + ADD CONSTRAINT `WorkReports_ibfk_2` FOREIGN KEY (`project_id`) REFERENCES `Projects` (`project_id`), + ADD CONSTRAINT `WorkReports_ibfk_3` FOREIGN KEY (`morning_task_id`) REFERENCES `Tasks` (`task_id`), + ADD CONSTRAINT `WorkReports_ibfk_4` FOREIGN KEY (`afternoon_task_id`) REFERENCES `Tasks` (`task_id`), + ADD CONSTRAINT `WorkReports_ibfk_5` FOREIGN KEY (`overtime_task_id`) REFERENCES `Tasks` (`task_id`); +COMMIT; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/api.hyungi.net/index.js b/api.hyungi.net/index.js new file mode 100644 index 0000000..0fe9d2c --- /dev/null +++ b/api.hyungi.net/index.js @@ -0,0 +1,484 @@ +require('dotenv').config(); +const express = require('express'); +const cors = require('cors'); +const path = require('path'); +const helmet = require('helmet'); +const rateLimit = require('express-rate-limit'); +const app = express(); + +// ✅ Health check (맨 처음에 등록 - 모든 미들웨어보다 우선) +app.get('/api/health', (req, res) => { + console.log('🟢 Health check 호출됨!'); + res.status(200).json({ + status: 'healthy', + service: 'Hyungi API', + timestamp: new Date().toISOString() + }); +}); + +// ✅ 보안 헤더 설정 (Helmet) +app.use(helmet({ + contentSecurityPolicy: { + directives: { + defaultSrc: ["'self'"], + styleSrc: ["'self'", "'unsafe-inline'", "https://fonts.googleapis.com"], + scriptSrc: ["'self'", "'unsafe-inline'", "'unsafe-eval'"], + imgSrc: ["'self'", "data:", "https:", "blob:"], + fontSrc: ["'self'", "https://fonts.gstatic.com"], + connectSrc: ["'self'", "https://api.technicalkorea.com"], + }, + }, + hsts: { + maxAge: 31536000, + includeSubDomains: true, + preload: true + } +})); + +// ✅ 요청 바디 용량 제한 확장 +app.use(express.urlencoded({ extended: true, limit: '50mb' })); +app.use(express.json({ limit: '50mb' })); + +//개발용 +app.use(cors({ + origin: true, // 모든 origin 허용 (개발용) + credentials: true +})); + +// ✅ CORS 설정: 허용 origin 명시 (수정된 버전) +//app.use(cors({ +// origin: function (origin, callback) { +// const allowedOrigins = process.env.ALLOWED_ORIGINS +// ? process.env.ALLOWED_ORIGINS.split(',') +// : [ +// 'http://localhost:3000', +// 'http://localhost:3005', +// 'http://web-ui', +// 'http://web-ui:80', +// 'http://web-ui:3001', // 실제 내부 포트 +// 'http://172.18.0.1', +// 'http://172.18.0.1:3001', +// 'http://172.18.0.2', // web-ui 컨테이너 IP +// 'http://172.18.0.2:3001', // web-ui 컨테이너 IP:포트 +// 'http://192.168.0.3', // 나스 외부 IP (포트 없음) +// 'http://192.168.0.3:80', // 나스 외부 접근 +// 'http://192.168.0.3:3001', // 나스 외부 접근 (실제 포트) +// 'http://192.168.0.3:5000', // 시놀로지 기본 포트 +// 'http://192.168.0.3:5001', // 시놀로지 HTTPS 포트 +// // 추가: 더 유연한 허용 +// 'http://192.168.0.3:3000', // 다른 포트들도 허용 +// 'http://192.168.0.3:8080', +// 'http://192.168.0.3:8000' +// ]; +// +// // 개발 환경에서는 모든 로컬 IP 허용 +// if (process.env.NODE_ENV === 'development' || !origin) { +// return callback(null, true); +// } +// +// // 192.168.x.x 대역 자동 허용 (시놀로지 환경) +// if (origin && origin.match(/^http:\/\/192\.168\.\d+\.\d+(:\d+)?$/)) { +// console.log('✅ 로컬 네트워크 IP 자동 허용:', origin); +// return callback(null, true); +// } +// +// if (allowedOrigins.includes(origin)) { +// callback(null, true); +// } else { +// console.error('❌ CORS 차단됨:', origin); +// console.log('허용된 Origins:', allowedOrigins); +// callback(new Error('CORS 차단됨: ' + origin)); +// } +// }, +// credentials: true +// })); + +// ✅ 신뢰할 수 있는 프록시 설정 (IP 주소 정확히 가져오기) +app.set('trust proxy', 1); + +// ✅ API 속도 제한 설정 +// 일반 API 속도 제한 +const apiLimiter = rateLimit({ + windowMs: 15 * 60 * 1000, // 15분 + max: process.env.RATE_LIMIT_MAX_REQUESTS || 100, + message: 'API 요청 한도를 초과했습니다. 잠시 후 다시 시도하세요.', + standardHeaders: true, + legacyHeaders: false, +}); + +// 로그인 API 속도 제한 (더 엄격하게) +const loginLimiter = rateLimit({ + windowMs: 15 * 60 * 1000, // 15분 + max: process.env.LOGIN_RATE_LIMIT_MAX_REQUESTS || 5, + message: '너무 많은 로그인 시도입니다. 15분 후에 다시 시도하세요.', + standardHeaders: true, + legacyHeaders: false, + skipSuccessfulRequests: true, // 성공한 요청은 카운트하지 않음 +}); + +// ✅ 라우터 등록 +const authRoutes = require('./routes/authRoutes'); +const projectRoutes = require('./routes/projectRoutes'); +const workerRoutes = require('./routes/workerRoutes'); +const taskRoutes = require('./routes/taskRoutes'); +const processRoutes = require('./routes/processRoutes'); +const workReportRoutes = require('./routes/workReportRoutes'); +const cuttingPlanRoutes = require('./routes/cuttingPlanRoutes'); +const factoryInfoRoutes = require('./routes/factoryInfoRoutes'); +const equipmentListRoutes = require('./routes/equipmentListRoutes'); +const toolsRoute = require('./routes/toolsRoute'); +const uploadRoutes = require('./routes/uploadRoutes'); +const uploadBgRoutes = require('./routes/uploadBgRoutes'); +const dailyIssueReportRoutes = require('./routes/dailyIssueReportRoutes'); +const issueTypeRoutes = require('./routes/issueTypeRoutes'); +const healthRoutes = require('./routes/healthRoutes'); +const pipeSpecRoutes = require('./routes/pipeSpecRoutes'); +const dailyWorkReportRoutes = require('./routes/dailyWorkReportRoutes'); +const workAnalysisRoutes = require('./routes/workAnalysisRoutes'); + +// 🔒 인증 미들웨어 가져오기 +const { verifyToken } = require('./middlewares/authMiddleware'); + +// ahn.hyungi.net 배포용 +app.use(express.static(path.join(__dirname, 'public'))); + +// ✅ 업로드된 파일 정적 라우팅 추가 (웹에서 이미지 접근 가능하게) +app.use('/uploads', express.static(path.join(__dirname, 'uploads'))); + +// 🔒 활동 로깅 미들웨어 +const activityLogger = (req, res, next) => { + const start = Date.now(); + + res.on('finish', () => { + const duration = Date.now() - start; + const logData = { + timestamp: new Date().toISOString(), + method: req.method, + url: req.originalUrl, + status: res.statusCode, + duration: duration + 'ms', + ip: req.ip, + user: req.user?.username || 'anonymous' + }; + + // 성공/실패에 따른 로그 레벨 분기 + if (res.statusCode >= 400) { + console.error('[API Error]', logData); + } else if (res.statusCode >= 300) { + console.warn('[API Redirect]', logData); + } else { + console.log('[API Access]', logData); + } + }); + + next(); +}; + +// ===== 📋 미들웨어 적용 순서 수정 (🔥 핵심 수정 부분) ===== + +// 모든 API 요청에 활동 로거 적용 +app.use('/api/*', activityLogger); + +// 🔓 인증이 필요 없는 경로들을 먼저 등록 (순서 중요!) + +// Health check는 이미 맨 위에서 등록됨 + +// 🔓 로그인 관련 경로들 (인증 없이 접근 가능) +// 로그인 엔드포인트에 특별한 속도 제한 적용 +app.post('/api/auth/login', loginLimiter, (req, res, next) => { + console.log('🔓 로그인 요청 받음:', req.body.username); + authRoutes.handle(req, res, next); +}); + +// 기타 공개 인증 엔드포인트들 +app.use('/api/auth/refresh-token', loginLimiter); +app.use('/api/auth/check-password-strength', loginLimiter); + +// 나머지 인증 라우트 +app.use('/api/auth', authRoutes); + +// 🔒 일반 API 속도 제한 적용 +app.use('/api/', apiLimiter); + +// 🔒 인증이 필요한 모든 API에 대해 토큰 검증 (수정된 버전) +app.use('/api/*', (req, res, next) => { + console.log(`🔍 API 요청: ${req.method} ${req.originalUrl}`); + + // 🔓 인증이 필요 없는 경로들은 통과 (정확한 매칭) + const publicPaths = [ + '/api/auth/login', + '/api/auth/refresh-token', + '/api/auth/check-password-strength', + '/api/health' + ]; + + // 정확한 경로 매칭 확인 + const isPublicPath = publicPaths.some(path => { + // 정확한 경로 또는 쿼리 파라미터가 있는 경우 + const isMatch = req.originalUrl === path || + req.originalUrl.startsWith(path + '?') || + req.originalUrl.startsWith(path + '/'); + if (isMatch) { + console.log(`🔓 Public path 허용: ${req.originalUrl}`); + } + return isMatch; + }); + + if (isPublicPath) { + return next(); + } + + // 나머지는 모두 인증 필요 + console.log(`🔒 인증 필요한 경로: ${req.originalUrl}`); + verifyToken(req, res, next); +}); + +// ===== 📊 모든 라우트 등록 (인증된 사용자만) ===== + +// 📝 일반 기능들 +app.use('/api/issue-reports', dailyIssueReportRoutes); +app.use('/api/issue-types', issueTypeRoutes); + +// 👥 기본 데이터들 (모든 인증된 사용자) +app.use('/api/workers', workerRoutes); +app.use('/api/daily-work-reports', dailyWorkReportRoutes); +app.use('/api/work-analysis', workAnalysisRoutes); + +// 📊 리포트 및 분석 +app.use('/api/workreports', workReportRoutes); +app.use('/api/uploads', uploadRoutes); + +// ⚙️ 시스템 데이터들 (모든 인증된 사용자) +app.use('/api/projects', projectRoutes); +app.use('/api/tasks', taskRoutes); +app.use('/api/processes', processRoutes); +app.use('/api/cuttingplans', cuttingPlanRoutes); +app.use('/api/factoryinfo', factoryInfoRoutes); +app.use('/api/equipment', equipmentListRoutes); +app.use('/api/tools', toolsRoute); +app.use('/api/pipespecs', pipeSpecRoutes); + +// 📤 파일 업로드 +app.use('/api', uploadBgRoutes); + + +// ===== 🔍 API 정보 엔드포인트 ===== +app.get('/api', (req, res) => { + res.json({ + name: 'Technical Korea Work Management API', + version: '2.1.0', + description: '보안이 강화된 생산관리 시스템 API', + timestamp: new Date().toISOString(), + security: { + authentication: 'JWT Bearer Token', + rateLimit: { + general: '100 requests per 15 minutes', + login: '5 attempts per 15 minutes' + }, + cors: 'Configured for specific origins', + headers: 'Security headers enabled (Helmet)' + }, + user: { + username: req.user?.username || 'anonymous', + access_level: req.user?.access_level || 'none', + worker_id: req.user?.worker_id || null + }, + endpoints: { + auth: { + login: 'POST /api/auth/login', + logout: 'POST /api/auth/logout', + refreshToken: 'POST /api/auth/refresh-token', + changePassword: 'POST /api/auth/change-password', + adminChangePassword: 'POST /api/auth/admin/change-password', + checkPasswordStrength: 'POST /api/auth/check-password-strength', + me: 'GET /api/auth/me', + users: 'GET /api/auth/users', + register: 'POST /api/auth/register', + updateUser: 'PUT /api/auth/users/:id', + deleteUser: 'DELETE /api/auth/users/:id', + loginHistory: 'GET /api/auth/login-history' + }, + dailyWorkReports: { + workTypes: 'GET /api/daily-work-reports/work-types', + workStatusTypes: 'GET /api/daily-work-reports/work-status-types', + errorTypes: 'GET /api/daily-work-reports/error-types', + create: 'POST /api/daily-work-reports', + search: 'GET /api/daily-work-reports/search', + summary: 'GET /api/daily-work-reports/summary', + byDate: 'GET /api/daily-work-reports/date/:date', + update: 'PUT /api/daily-work-reports/:id', + delete: 'DELETE /api/daily-work-reports/:id' + }, + workAnalysis: { + stats: 'GET /api/work-analysis/stats?start=YYYY-MM-DD&end=YYYY-MM-DD', + dailyTrend: 'GET /api/work-analysis/daily-trend?start=YYYY-MM-DD&end=YYYY-MM-DD', + workerStats: 'GET /api/work-analysis/worker-stats?start=YYYY-MM-DD&end=YYYY-MM-DD', + projectStats: 'GET /api/work-analysis/project-stats?start=YYYY-MM-DD&end=YYYY-MM-DD', + workTypeStats: 'GET /api/work-analysis/work-type-stats?start=YYYY-MM-DD&end=YYYY-MM-DD', + recentWork: 'GET /api/work-analysis/recent-work?start=YYYY-MM-DD&end=YYYY-MM-DD&limit=10', + weekdayPattern: 'GET /api/work-analysis/weekday-pattern?start=YYYY-MM-DD&end=YYYY-MM-DD', + errorAnalysis: 'GET /api/work-analysis/error-analysis?start=YYYY-MM-DD&end=YYYY-MM-DD', + monthlyComparison: 'GET /api/work-analysis/monthly-comparison?year=YYYY', + workerSpecialization: 'GET /api/work-analysis/worker-specialization?start=YYYY-MM-DD&end=YYYY-MM-DD', + dashboard: 'GET /api/work-analysis/dashboard?start=YYYY-MM-DD&end=YYYY-MM-DD', + health: 'GET /api/work-analysis/health' + }, + workers: 'GET/POST/PUT/DELETE /api/workers', + projects: 'GET/POST/PUT/DELETE /api/projects', + issues: 'GET/POST/PUT/DELETE /api/issue-reports', + reports: 'GET /api/workreports', + uploads: 'POST /api/uploads' + }, + note: '모든 API는 로그인 후 접근 가능합니다. 자세한 API 문서는 관리자에게 문의하세요.' + }); +}); + +// ===== 🏠 메인 페이지 라우트 ===== +app.get('/', (req, res) => { + res.sendFile(path.join(__dirname, 'public', 'index.html')); +}); + +// ✅ 서버 실행 +const PORT = process.env.PORT || 3005; +const server = app.listen(PORT, () => { + console.log(` +🚀 Technical Korea Work Management System v2.1.0 +📍 서버가 포트 ${PORT}에서 실행 중입니다. +🌐 접속 URL: http://localhost:${PORT} +📊 API 문서: http://localhost:${PORT}/api + +🔒 보안 기능: + ✅ JWT 토큰 인증 + ✅ 로그인 실패 제한 (5회) + ✅ API 속도 제한 + ✅ 보안 헤더 (Helmet) + ✅ CORS 설정 (192.168.0.3:3001 허용) + ✅ 활동 로깅 + +📋 새로운 기능: + 🔐 비밀번호 변경 (본인/관리자) + 🔄 토큰 갱신 (Refresh Token) + 📊 로그인 이력 조회 + 💪 비밀번호 강도 체크 + `); +}).on('error', (err) => { + console.error('❌ 서버 실행 중 오류 발생:', err); + if (err.code === 'EADDRINUSE') { + console.error(`포트 ${PORT}이(가) 이미 사용 중입니다.`); + } +}); + +// ===== 🚨 에러 핸들링 ===== + +// 404 핸들러 +app.use((req, res) => { + console.log(`[404] ${req.method} ${req.originalUrl} - IP: ${req.ip}`); + + if (req.originalUrl.startsWith('/api/')) { + res.status(404).json({ + error: 'API 엔드포인트를 찾을 수 없습니다.', + path: req.originalUrl, + available: '/api', + timestamp: new Date().toISOString() + }); + } else { + res.status(404).json({ + error: '요청하신 페이지를 찾을 수 없습니다.', + timestamp: new Date().toISOString() + }); + } +}); + +// 전역 에러 핸들러 +app.use((err, req, res, next) => { + const errorId = Date.now().toString(36); + + console.error(`[ERROR ${errorId}] ${new Date().toISOString()}:`, { + message: err.message, + stack: process.env.NODE_ENV === 'development' ? err.stack : undefined, + url: req.originalUrl, + method: req.method, + ip: req.ip, + user: req.user?.username || 'anonymous' + }); + + // CORS 에러 +// if (err.message && err.message.includes('CORS 차단됨')) { +// return res.status(403).json({ +// error: 'CORS 정책에 의해 차단되었습니다.', +// message: 'API 접근이 허용되지 않은 도메인입니다.', +// errorId +// }); +// } + + // JWT 에러 + if (err.name === 'JsonWebTokenError') { + return res.status(401).json({ + error: '유효하지 않은 토큰입니다.', + errorId + }); + } + + if (err.name === 'TokenExpiredError') { + return res.status(401).json({ + error: '토큰이 만료되었습니다. 다시 로그인해주세요.', + errorId + }); + } + + // 요청 크기 초과 + if (err.type === 'entity.too.large') { + return res.status(413).json({ + error: '요청 크기가 너무 큽니다. 50MB 이하로 줄여주세요.', + errorId + }); + } + + // 일반 서버 에러 + res.status(err.status || 500).json({ + error: '서버 오류가 발생했습니다.', + message: process.env.NODE_ENV === 'development' ? err.message : '관리자에게 문의하세요.', + errorId, + timestamp: new Date().toISOString() + }); +}); + +// ===== 🔄 Graceful Shutdown ===== +const gracefulShutdown = () => { + console.log('\n🛑 서버 종료 신호를 받았습니다...'); + + server.close(() => { + console.log('✅ HTTP 서버가 정상적으로 종료되었습니다.'); + + // DB 연결 종료 등 추가 정리 작업 + // 예: db.end(), redis.quit() 등 + + process.exit(0); + }); + + // 30초 후 강제 종료 + setTimeout(() => { + console.error('❌ 정상 종료 실패, 강제 종료합니다.'); + process.exit(1); + }, 30000); +}; + +process.on('SIGTERM', gracefulShutdown); +process.on('SIGINT', gracefulShutdown); + +// 처리되지 않은 Promise 거부 +process.on('unhandledRejection', (reason, promise) => { + console.error('처리되지 않은 Promise 거부:', reason); + // 개발 환경에서는 크래시, 프로덕션에서는 로그만 + if (process.env.NODE_ENV === 'development') { + process.exit(1); + } +}); + +// 처리되지 않은 예외 +process.on('uncaughtException', (error) => { + console.error('처리되지 않은 예외:', error); + gracefulShutdown(); +}); + +module.exports = app; \ No newline at end of file diff --git a/api.hyungi.net/index.js.backup b/api.hyungi.net/index.js.backup new file mode 100644 index 0000000..3d1e1ec --- /dev/null +++ b/api.hyungi.net/index.js.backup @@ -0,0 +1,79 @@ +require('dotenv').config(); +const express = require('express'); +const cors = require('cors'); +const path = require('path'); +const app = express(); + +// ✅ 요청 바디 용량 제한 확장 +app.use(express.urlencoded({ extended: true, limit: '50mb' })); +app.use(express.json({ limit: '50mb' })); + +// ✅ CORS 설정: 허용 origin 명시 +app.use(cors({ + origin: function (origin, callback) { + const allowedOrigins = [ + 'https://ahn.hyungi.net', + 'https://tech.hyungi.net', + 'https://pdf.hyungi.net' + ]; + if (!origin || allowedOrigins.includes(origin)) { + callback(null, true); + } else { + callback(new Error('CORS 차단됨: ' + origin)); + } + } +})); + +// ✅ 라우터 등록 +const authRoutes = require('./routes/authRoutes'); +const projectRoutes = require('./routes/projectRoutes'); +const workerRoutes = require('./routes/workerRoutes'); +const taskRoutes = require('./routes/taskRoutes'); +const processRoutes = require('./routes/processRoutes'); +const workReportRoutes = require('./routes/workReportRoutes'); +const cuttingPlanRoutes = require('./routes/cuttingPlanRoutes'); +const factoryInfoRoutes = require('./routes/factoryInfoRoutes'); +const equipmentListRoutes = require('./routes/equipmentListRoutes'); +const toolsRoute = require('./routes/toolsRoute'); +const uploadRoutes = require('./routes/uploadRoutes'); +const uploadBgRoutes = require('./routes/uploadBgRoutes'); +const dailyIssueReportRoutes = require('./routes/dailyIssueReportRoutes'); +const issueTypeRoutes = require('./routes/issueTypeRoutes'); +const healthRoutes = require('./routes/healthRoutes'); +const pipeSpecRoutes = require('./routes/pipeSpecRoutes'); + +// ahn.hyungi.net 배포용 +app.use(express.static(path.join(__dirname, 'public'))); + +// ✅ 업로드된 파일 정적 라우팅 추가 (웹에서 이미지 접근 가능하게) +app.use('/uploads', express.static(path.join(__dirname, 'uploads'))); + +// ✅ 각 라우트 등록 +app.use('/api/auth', authRoutes); +app.use('/api/projects', projectRoutes); +app.use('/api/workers', workerRoutes); +app.use('/api/tasks', taskRoutes); +app.use('/api/processes', processRoutes); +app.use('/api/workreports', workReportRoutes); +app.use('/api/cuttingplans', cuttingPlanRoutes); +app.use('/api/factoryinfo', factoryInfoRoutes); +app.use('/api/equipment', equipmentListRoutes); +app.use('/api/tools', toolsRoute); +app.use('/api/uploads', uploadRoutes); +app.use('/api', uploadBgRoutes); // ✅ upload-bg 경로용 +app.use('/api/issue-reports', dailyIssueReportRoutes); +app.use('/api/issue-types', issueTypeRoutes); +app.use('/api', healthRoutes); +app.use('/api/pipespecs', pipeSpecRoutes); + +// ✅ 서버 실행 +const PORT = process.env.PORT || 3005; +app.listen(PORT, () => { + console.log(`🚀 서버가 ${PORT}번 포트에서 실행 중...`); +}).on('error', (err) => { + console.error('❌ 서버 실행 중 오류 발생:', err); +}); + +app.use((req, res) => { + res.status(404).json({ error: '존재하지 않는 경로입니다.' }); +}); \ No newline at end of file diff --git a/api.hyungi.net/middlewares/access.js b/api.hyungi.net/middlewares/access.js new file mode 100644 index 0000000..2e12395 --- /dev/null +++ b/api.hyungi.net/middlewares/access.js @@ -0,0 +1,9 @@ +// utils/access.js +exports.requireAccess = (...allowed) => { + return (req, res, next) => { + if (!req.user || !allowed.includes(req.user.access_level)) { + return res.status(403).json({ error: '접근 권한이 없습니다' }); + } + next(); + }; +}; \ No newline at end of file diff --git a/api.hyungi.net/middlewares/accessMiddleware.js b/api.hyungi.net/middlewares/accessMiddleware.js new file mode 100644 index 0000000..a7746e2 --- /dev/null +++ b/api.hyungi.net/middlewares/accessMiddleware.js @@ -0,0 +1,33 @@ +// middlewares/accessMiddleware.js + +// 권한 레벨 정의 +const ACCESS_LEVELS = { + worker: 1, + group_leader: 2, + support_team: 3, + admin: 4, + system: 5 +}; + +const requireAccess = (requiredLevel) => { + return (req, res, next) => { + if (!req.user) { + return res.status(401).json({ error: '인증이 필요합니다.' }); + } + + const userLevel = ACCESS_LEVELS[req.user.access_level] || 0; + const required = ACCESS_LEVELS[requiredLevel] || 999; + + if (userLevel < required) { + return res.status(403).json({ + error: '접근 권한이 없습니다.', + required: requiredLevel, + current: req.user.access_level + }); + } + + next(); + }; +}; + +module.exports = { requireAccess, ACCESS_LEVELS }; \ No newline at end of file diff --git a/api.hyungi.net/middlewares/auth.js b/api.hyungi.net/middlewares/auth.js new file mode 100644 index 0000000..6ec45cf --- /dev/null +++ b/api.hyungi.net/middlewares/auth.js @@ -0,0 +1,20 @@ +// 📁 middlewares/auth.js +const jwt = require('jsonwebtoken'); +require('dotenv').config(); + +module.exports = (req, res, next) => { + const authHeader = req.headers['authorization']; + const token = authHeader?.split(' ')[1]; + + if (!token) { + return res.status(401).json({ message: 'Access token required' }); + } + + try { + const decoded = jwt.verify(token, process.env.JWT_SECRET); + req.user = decoded; // 다른 미들웨어에서 사용할 수 있게 설정 + next(); + } catch (err) { + return res.status(403).json({ message: 'Invalid token' }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/middlewares/authMiddleware.js b/api.hyungi.net/middlewares/authMiddleware.js new file mode 100644 index 0000000..db36c03 --- /dev/null +++ b/api.hyungi.net/middlewares/authMiddleware.js @@ -0,0 +1,22 @@ +const jwt = require('jsonwebtoken'); + +exports.verifyToken = (req, res, next) => { + try { + const authHeader = req.headers['authorization']; + if (!authHeader) { + return res.status(401).json({ error: '토큰 없음' }); + } + + const token = authHeader.split(' ')[1]; + if (!token) { + return res.status(401).json({ error: '토큰 누락' }); + } + + const decoded = jwt.verify(token, process.env.JWT_SECRET); + req.user = decoded; + next(); // ✅ 반드시 next 호출 + } catch (err) { + console.error('[verifyToken 오류]', err.message); + return res.status(403).json({ error: '토큰 검증 실패', detail: err.message }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/middlewares/errorHandler.js b/api.hyungi.net/middlewares/errorHandler.js new file mode 100644 index 0000000..8d20808 --- /dev/null +++ b/api.hyungi.net/middlewares/errorHandler.js @@ -0,0 +1,16 @@ +// middlewares/errorHandler.js +exports.errorHandler = (err, req, res, next) => { + console.error('Error:', err); + + if (process.env.NODE_ENV === 'development') { + res.status(500).json({ + error: '서버 오류가 발생했습니다.', + details: err.message, + stack: err.stack + }); + } else { + res.status(500).json({ + error: '서버 오류가 발생했습니다.' + }); + } +}; \ No newline at end of file diff --git a/api.hyungi.net/migrations/002_add_master_tables.sql b/api.hyungi.net/migrations/002_add_master_tables.sql new file mode 100644 index 0000000..8158b2b --- /dev/null +++ b/api.hyungi.net/migrations/002_add_master_tables.sql @@ -0,0 +1,115 @@ +-- migrations/002_add_master_tables.sql +-- 기존 daily_work_reports 테이블을 유지하면서 필요한 마스터 테이블들만 추가 + +-- 1. 작업 유형 테이블 생성 +CREATE TABLE IF NOT EXISTS work_types ( + id INT PRIMARY KEY AUTO_INCREMENT, + name VARCHAR(100) NOT NULL COMMENT '작업 유형명', + description TEXT COMMENT '작업 유형 설명', + category VARCHAR(50) COMMENT '작업 카테고리', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- 2. 업무 상태 유형 테이블 생성 +CREATE TABLE IF NOT EXISTS work_status_types ( + id INT PRIMARY KEY AUTO_INCREMENT, + name VARCHAR(50) NOT NULL COMMENT '상태명', + description TEXT COMMENT '상태 설명', + is_error BOOLEAN DEFAULT FALSE COMMENT '에러 상태 여부', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- 3. 에러 유형 테이블 생성 +CREATE TABLE IF NOT EXISTS error_types ( + id INT PRIMARY KEY AUTO_INCREMENT, + name VARCHAR(100) NOT NULL COMMENT '에러 유형명', + description TEXT COMMENT '에러 설명', + severity ENUM('low', 'medium', 'high', 'critical') DEFAULT 'medium' COMMENT '심각도', + solution_guide TEXT COMMENT '해결 가이드', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- 4. 감사 로그 테이블 생성 (누적입력 추적용) +CREATE TABLE IF NOT EXISTS work_report_audit_log ( + log_id INT PRIMARY KEY AUTO_INCREMENT, + action ENUM('ADD_ACCUMULATE', 'DELETE_SINGLE', 'UPDATE', 'DELETE', 'CREATE', 'DELETE_BATCH') NOT NULL COMMENT '작업 유형', + report_id INT NULL COMMENT '관련 보고서 ID', + old_values JSON NULL COMMENT '변경 전 값', + new_values JSON NULL COMMENT '변경 후 값', + changed_by INT NOT NULL COMMENT '변경자 ID', + change_reason VARCHAR(500) COMMENT '변경 사유', + ip_address VARCHAR(45) COMMENT 'IP 주소', + user_agent TEXT COMMENT '사용자 에이전트', + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP COMMENT '변경 시간', + + INDEX idx_action_date (action, created_at), + INDEX idx_changed_by (changed_by), + INDEX idx_report_id (report_id) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- 5. 기존 daily_work_reports 테이블에 누적입력을 위한 인덱스만 추가 +ALTER TABLE daily_work_reports +ADD INDEX IF NOT EXISTS idx_created_by (created_by), +ADD INDEX IF NOT EXISTS idx_date_worker_creator (report_date, worker_id, created_by); + +-- 6. 기본 데이터 삽입 (기존 데이터와 호환되도록) + +-- 업무 상태 유형 기본 데이터 +INSERT IGNORE INTO work_status_types (id, name, description, is_error) VALUES +(1, '정규', '정상적으로 완료된 작업', FALSE), +(2, '에러', '오류가 발생한 작업', TRUE); + +-- 작업 유형 기본 데이터 (기존 데이터의 work_type_id=1과 호환) +INSERT IGNORE INTO work_types (id, name, description, category) VALUES +(1, '일반작업', '기본 작업 유형', '생산관리'), +(2, '생산', '제품 생산 작업', '생산관리'), +(3, '품질검사', '제품 품질 검사', '품질관리'), +(4, '안전점검', '안전 상태 점검', '안전관리'), +(5, '자재입고', '원자재 입고 작업', '구매관리'), +(6, '설비점검', '생산 설비 점검', '설비관리'), +(7, '재고관리', '재고 현황 관리', '창고관리'), +(8, '포장', '제품 포장 작업', '생산관리'), +(9, '출하', '제품 출하 작업', '물류관리'); + +-- 에러 유형 기본 데이터 +INSERT IGNORE INTO error_types (id, name, description, severity, solution_guide) VALUES +(1, '설비고장', '생산 설비 고장', 'high', '즉시 설비팀에 연락하여 수리 요청'), +(2, '자재부족', '필요 자재 부족', 'medium', '구매팀에 긴급 주문 요청'), +(3, '품질불량', '제품 품질 기준 미달', 'high', '품질팀에 즉시 보고 및 생산 중단'), +(4, '안전사고', '작업 중 안전사고 발생', 'critical', '즉시 작업 중단 및 안전팀 신고'), +(5, '시스템오류', 'IT 시스템 오류', 'medium', 'IT팀에 장애 신고'); + +-- 7. 기존 데이터 호환성을 위한 뷰 생성 +CREATE OR REPLACE VIEW v_daily_reports_with_names AS +SELECT + dwr.id, + dwr.report_date, + dwr.worker_id, + w.worker_name, + dwr.project_id, + p.project_name, + dwr.work_type_id, + COALESCE(wt.name, '일반작업') as work_type_name, + COALESCE(wt.category, '생산관리') as work_category, + dwr.work_status_id, + COALESCE(wst.name, '정규') as work_status_name, + COALESCE(wst.is_error, FALSE) as is_error, + dwr.error_type_id, + et.name as error_type_name, + et.severity as error_severity, + dwr.work_hours, + dwr.created_by, + u.name as created_by_name, + dwr.created_at, + dwr.updated_at +FROM daily_work_reports dwr +LEFT JOIN Workers w ON dwr.worker_id = w.worker_id +LEFT JOIN Projects p ON dwr.project_id = p.project_id +LEFT JOIN work_types wt ON dwr.work_type_id = wt.id +LEFT JOIN work_status_types wst ON dwr.work_status_id = wst.id +LEFT JOIN error_types et ON dwr.error_type_id = et.id +LEFT JOIN Users u ON dwr.created_by = u.user_id; + +COMMIT; \ No newline at end of file diff --git a/api.hyungi.net/models/WorkAnalysis.js b/api.hyungi.net/models/WorkAnalysis.js new file mode 100644 index 0000000..98a7588 --- /dev/null +++ b/api.hyungi.net/models/WorkAnalysis.js @@ -0,0 +1,430 @@ +// models/WorkAnalysis.js - 향상된 버전 + +class WorkAnalysis { + constructor(db) { + this.db = db; + } + + // 기본 통계 조회 + async getBasicStats(startDate, endDate) { + const query = ` + SELECT + COALESCE(SUM(work_hours), 0) as total_hours, + COUNT(*) as total_reports, + COUNT(DISTINCT project_id) as active_projects, + COUNT(DISTINCT worker_id) as active_workers, + SUM(CASE WHEN work_status_id = 2 THEN 1 ELSE 0 END) as error_reports, + ROUND(AVG(work_hours), 2) as avg_hours_per_report + FROM daily_work_reports + WHERE report_date BETWEEN ? AND ? + `; + + try { + const [results] = await this.db.execute(query, [startDate, endDate]); + const stats = results[0]; + + const errorRate = stats.total_reports > 0 + ? (stats.error_reports / stats.total_reports) * 100 + : 0; + + return { + totalHours: parseFloat(stats.total_hours) || 0, + totalReports: parseInt(stats.total_reports) || 0, + activeProjects: parseInt(stats.active_projects) || 0, + activeWorkers: parseInt(stats.active_workers) || 0, + errorRate: parseFloat(errorRate.toFixed(2)) || 0, + avgHoursPerReport: parseFloat(stats.avg_hours_per_report) || 0 + }; + } catch (error) { + throw new Error(`기본 통계 조회 실패: ${error.message}`); + } + } + + // 일별 작업시간 추이 + async getDailyTrend(startDate, endDate) { + const query = ` + SELECT + report_date as date, + SUM(work_hours) as hours, + COUNT(*) as reports, + COUNT(DISTINCT worker_id) as workers, + SUM(CASE WHEN work_status_id = 2 THEN 1 ELSE 0 END) as errors + FROM daily_work_reports + WHERE report_date BETWEEN ? AND ? + GROUP BY report_date + ORDER BY report_date + `; + + try { + const [results] = await this.db.execute(query, [startDate, endDate]); + return results.map(row => ({ + date: row.date, + hours: parseFloat(row.hours) || 0, + reports: parseInt(row.reports) || 0, + workers: parseInt(row.workers) || 0, + errors: parseInt(row.errors) || 0 + })); + } catch (error) { + throw new Error(`일별 추이 조회 실패: ${error.message}`); + } + } + + // 작업자별 통계 + async getWorkerStats(startDate, endDate) { + const query = ` + SELECT + dwr.worker_id, + w.worker_name, + SUM(dwr.work_hours) as totalHours, + COUNT(*) as totalReports, + ROUND(AVG(dwr.work_hours), 2) as avgHours, + COUNT(DISTINCT dwr.project_id) as projectCount, + SUM(CASE WHEN dwr.work_status_id = 2 THEN 1 ELSE 0 END) as errorCount, + COUNT(DISTINCT dwr.report_date) as workingDays + FROM daily_work_reports dwr + LEFT JOIN Workers w ON dwr.worker_id = w.worker_id + WHERE dwr.report_date BETWEEN ? AND ? + GROUP BY dwr.worker_id, w.worker_name + ORDER BY totalHours DESC + `; + + try { + const [results] = await this.db.execute(query, [startDate, endDate]); + return results.map(row => ({ + worker_id: row.worker_id, + worker_name: row.worker_name || `작업자 ${row.worker_id}`, + totalHours: parseFloat(row.totalHours) || 0, + totalReports: parseInt(row.totalReports) || 0, + avgHours: parseFloat(row.avgHours) || 0, + projectCount: parseInt(row.projectCount) || 0, + errorCount: parseInt(row.errorCount) || 0, + workingDays: parseInt(row.workingDays) || 0, + errorRate: row.totalReports > 0 ? parseFloat(((row.errorCount / row.totalReports) * 100).toFixed(2)) : 0 + })); + } catch (error) { + throw new Error(`작업자별 통계 조회 실패: ${error.message}`); + } + } + + // 프로젝트별 통계 + async getProjectStats(startDate, endDate) { + const query = ` + SELECT + dwr.project_id, + p.project_name, + SUM(dwr.work_hours) as totalHours, + COUNT(*) as totalReports, + COUNT(DISTINCT dwr.worker_id) as workerCount, + ROUND(AVG(dwr.work_hours), 2) as avgHours, + SUM(CASE WHEN dwr.work_status_id = 2 THEN 1 ELSE 0 END) as errorCount, + COUNT(DISTINCT dwr.report_date) as activeDays + FROM daily_work_reports dwr + LEFT JOIN Projects p ON dwr.project_id = p.project_id + WHERE dwr.report_date BETWEEN ? AND ? + GROUP BY dwr.project_id, p.project_name + ORDER BY totalHours DESC + `; + + try { + const [results] = await this.db.execute(query, [startDate, endDate]); + return results.map(row => ({ + project_id: row.project_id, + project_name: row.project_name || `프로젝트 ${row.project_id}`, + totalHours: parseFloat(row.totalHours) || 0, + totalReports: parseInt(row.totalReports) || 0, + workerCount: parseInt(row.workerCount) || 0, + avgHours: parseFloat(row.avgHours) || 0, + errorCount: parseInt(row.errorCount) || 0, + activeDays: parseInt(row.activeDays) || 0, + errorRate: row.totalReports > 0 ? parseFloat(((row.errorCount / row.totalReports) * 100).toFixed(2)) : 0 + })); + } catch (error) { + throw new Error(`프로젝트별 통계 조회 실패: ${error.message}`); + } + } + + // 작업유형별 통계 + async getWorkTypeStats(startDate, endDate) { + const query = ` + SELECT + dwr.work_type_id, + wt.name as work_type_name, + SUM(dwr.work_hours) as totalHours, + COUNT(*) as totalReports, + ROUND(AVG(dwr.work_hours), 2) as avgHours, + COUNT(DISTINCT dwr.worker_id) as workerCount, + SUM(CASE WHEN dwr.work_status_id = 2 THEN 1 ELSE 0 END) as errorCount, + COUNT(DISTINCT dwr.project_id) as projectCount + FROM daily_work_reports dwr + LEFT JOIN work_types wt ON dwr.work_type_id = wt.id + WHERE dwr.report_date BETWEEN ? AND ? + GROUP BY dwr.work_type_id, wt.name + ORDER BY totalHours DESC + `; + + try { + const [results] = await this.db.execute(query, [startDate, endDate]); + return results.map(row => ({ + work_type_id: row.work_type_id, + work_type_name: row.work_type_name || `작업유형 ${row.work_type_id}`, + totalHours: parseFloat(row.totalHours) || 0, + totalReports: parseInt(row.totalReports) || 0, + avgHours: parseFloat(row.avgHours) || 0, + workerCount: parseInt(row.workerCount) || 0, + errorCount: parseInt(row.errorCount) || 0, + projectCount: parseInt(row.projectCount) || 0, + errorRate: row.totalReports > 0 ? parseFloat(((row.errorCount / row.totalReports) * 100).toFixed(2)) : 0 + })); + } catch (error) { + throw new Error(`작업유형별 통계 조회 실패: ${error.message}`); + } + } + + // 최근 작업 현황 + async getRecentWork(startDate, endDate, limit = 50) { + const query = ` + SELECT + dwr.id, + dwr.report_date, + dwr.worker_id, + w.worker_name, + dwr.project_id, + p.project_name, + dwr.work_type_id, + wt.name as work_type_name, + dwr.work_status_id, + wst.name as work_status_name, + dwr.error_type_id, + et.name as error_type_name, + dwr.work_hours, + dwr.created_by, + u.name as created_by_name, + dwr.created_at + FROM daily_work_reports dwr + LEFT JOIN Workers w ON dwr.worker_id = w.worker_id + LEFT JOIN Projects p ON dwr.project_id = p.project_id + LEFT JOIN work_types wt ON dwr.work_type_id = wt.id + LEFT JOIN work_status_types wst ON dwr.work_status_id = wst.id + LEFT JOIN error_types et ON dwr.error_type_id = et.id + LEFT JOIN Users u ON dwr.created_by = u.user_id + WHERE dwr.report_date BETWEEN ? AND ? + ORDER BY dwr.created_at DESC + LIMIT ? + `; + + try { + const [results] = await this.db.execute(query, [startDate, endDate, parseInt(limit)]); + return results.map(row => ({ + id: row.id, + report_date: row.report_date, + worker_id: row.worker_id, + worker_name: row.worker_name || `작업자 ${row.worker_id}`, + project_id: row.project_id, + project_name: row.project_name || `프로젝트 ${row.project_id}`, + work_type_id: row.work_type_id, + work_type_name: row.work_type_name || `작업유형 ${row.work_type_id}`, + work_status_id: row.work_status_id, + work_status_name: row.work_status_name || '정상', + error_type_id: row.error_type_id, + error_type_name: row.error_type_name || null, + work_hours: parseFloat(row.work_hours) || 0, + created_by: row.created_by, + created_by_name: row.created_by_name || '미지정', + created_at: row.created_at + })); + } catch (error) { + throw new Error(`최근 작업 현황 조회 실패: ${error.message}`); + } + } + + // 요일별 패턴 분석 + async getWeekdayPattern(startDate, endDate) { + const query = ` + SELECT + DAYOFWEEK(report_date) as day_of_week, + CASE DAYOFWEEK(report_date) + WHEN 1 THEN '일요일' + WHEN 2 THEN '월요일' + WHEN 3 THEN '화요일' + WHEN 4 THEN '수요일' + WHEN 5 THEN '목요일' + WHEN 6 THEN '금요일' + WHEN 7 THEN '토요일' + END as day_name, + SUM(work_hours) as total_hours, + COUNT(*) as total_reports, + ROUND(AVG(work_hours), 2) as avg_hours, + COUNT(DISTINCT worker_id) as active_workers + FROM daily_work_reports + WHERE report_date BETWEEN ? AND ? + GROUP BY DAYOFWEEK(report_date) + ORDER BY day_of_week + `; + + try { + const [results] = await this.db.execute(query, [startDate, endDate]); + return results.map(row => ({ + dayOfWeek: row.day_of_week, + dayName: row.day_name, + totalHours: parseFloat(row.total_hours) || 0, + totalReports: parseInt(row.total_reports) || 0, + avgHours: parseFloat(row.avg_hours) || 0, + activeWorkers: parseInt(row.active_workers) || 0 + })); + } catch (error) { + throw new Error(`요일별 패턴 분석 실패: ${error.message}`); + } + } + + // 에러 분석 + async getErrorAnalysis(startDate, endDate) { + const query = ` + SELECT + dwr.error_type_id, + et.name as error_type_name, + COUNT(*) as error_count, + SUM(dwr.work_hours) as total_hours, + COUNT(DISTINCT dwr.worker_id) as affected_workers, + COUNT(DISTINCT dwr.project_id) as affected_projects + FROM daily_work_reports dwr + LEFT JOIN error_types et ON dwr.error_type_id = et.id + WHERE dwr.report_date BETWEEN ? AND ? + AND dwr.work_status_id = 2 + GROUP BY dwr.error_type_id, et.name + ORDER BY error_count DESC + `; + + try { + const [results] = await this.db.execute(query, [startDate, endDate]); + return results.map(row => ({ + error_type_id: row.error_type_id, + error_type_name: row.error_type_name || `에러유형 ${row.error_type_id}`, + errorCount: parseInt(row.error_count) || 0, + totalHours: parseFloat(row.total_hours) || 0, + affectedWorkers: parseInt(row.affected_workers) || 0, + affectedProjects: parseInt(row.affected_projects) || 0 + })); + } catch (error) { + throw new Error(`에러 분석 실패: ${error.message}`); + } + } + + // 월별 비교 분석 + async getMonthlyComparison(year) { + const query = ` + SELECT + MONTH(report_date) as month, + MONTHNAME(report_date) as month_name, + SUM(work_hours) as total_hours, + COUNT(*) as total_reports, + COUNT(DISTINCT worker_id) as active_workers, + COUNT(DISTINCT project_id) as active_projects, + SUM(CASE WHEN work_status_id = 2 THEN 1 ELSE 0 END) as error_count + FROM daily_work_reports + WHERE YEAR(report_date) = ? + GROUP BY MONTH(report_date), MONTHNAME(report_date) + ORDER BY month + `; + + try { + const [results] = await this.db.execute(query, [year]); + return results.map(row => ({ + month: row.month, + monthName: row.month_name, + totalHours: parseFloat(row.total_hours) || 0, + totalReports: parseInt(row.total_reports) || 0, + activeWorkers: parseInt(row.active_workers) || 0, + activeProjects: parseInt(row.active_projects) || 0, + errorCount: parseInt(row.error_count) || 0, + errorRate: row.total_reports > 0 ? parseFloat(((row.error_count / row.total_reports) * 100).toFixed(2)) : 0 + })); + } catch (error) { + throw new Error(`월별 비교 분석 실패: ${error.message}`); + } + } + + // 작업자별 전문분야 분석 + async getWorkerSpecialization(startDate, endDate) { + const query = ` + SELECT + dwr.worker_id, + w.worker_name, + dwr.work_type_id, + wt.name as work_type_name, + dwr.project_id, + p.project_name, + SUM(dwr.work_hours) as totalHours, + COUNT(*) as totalReports, + ROUND((SUM(dwr.work_hours) / ( + SELECT SUM(work_hours) + FROM daily_work_reports + WHERE worker_id = dwr.worker_id + AND report_date BETWEEN ? AND ? + )) * 100, 2) as percentage + FROM daily_work_reports dwr + LEFT JOIN Workers w ON dwr.worker_id = w.worker_id + LEFT JOIN work_types wt ON dwr.work_type_id = wt.id + LEFT JOIN Projects p ON dwr.project_id = p.project_id + WHERE dwr.report_date BETWEEN ? AND ? + GROUP BY dwr.worker_id, w.worker_name, dwr.work_type_id, wt.name, dwr.project_id, p.project_name + HAVING totalHours > 0 + ORDER BY dwr.worker_id, totalHours DESC + `; + + try { + const [results] = await this.db.execute(query, [startDate, endDate, startDate, endDate]); + return results.map(row => ({ + worker_id: row.worker_id, + worker_name: row.worker_name || `작업자 ${row.worker_id}`, + work_type_id: row.work_type_id, + work_type_name: row.work_type_name || `작업유형 ${row.work_type_id}`, + project_id: row.project_id, + project_name: row.project_name || `프로젝트 ${row.project_id}`, + totalHours: parseFloat(row.totalHours) || 0, + totalReports: parseInt(row.totalReports) || 0, + percentage: parseFloat(row.percentage) || 0 + })); + } catch (error) { + throw new Error(`작업자별 전문분야 분석 실패: ${error.message}`); + } + } + + // 대시보드용 종합 데이터 + async getDashboardData(startDate, endDate) { + try { + // 병렬로 모든 데이터 조회 + const [ + stats, + dailyTrend, + workerStats, + projectStats, + workTypeStats, + recentWork + ] = await Promise.all([ + this.getBasicStats(startDate, endDate), + this.getDailyTrend(startDate, endDate), + this.getWorkerStats(startDate, endDate), + this.getProjectStats(startDate, endDate), + this.getWorkTypeStats(startDate, endDate), + this.getRecentWork(startDate, endDate, 20) + ]); + + return { + stats, + dailyTrend, + workerStats, + projectStats, + workTypeStats, + recentWork, + metadata: { + period: `${startDate} ~ ${endDate}`, + timestamp: new Date().toISOString() + } + }; + } catch (error) { + throw new Error(`대시보드 데이터 조회 실패: ${error.message}`); + } + } +} + +module.exports = WorkAnalysis; \ No newline at end of file diff --git a/api.hyungi.net/models/cuttingPlanModel.js b/api.hyungi.net/models/cuttingPlanModel.js new file mode 100644 index 0000000..4f52f1e --- /dev/null +++ b/api.hyungi.net/models/cuttingPlanModel.js @@ -0,0 +1,89 @@ +const { getDb } = require('../dbPool'); + +const create = async (plan, callback) => { + try { + const db = await getDb(); + const { + project_id, drawing_name, + pipe_spec, area_number, + spool_number, length + } = plan; + + const [result] = await db.query( + `INSERT INTO CuttingPlan + (project_id, drawing_name, pipe_spec, area_number, spool_number, length) + VALUES (?, ?, ?, ?, ?, ?)`, + [project_id, drawing_name, pipe_spec, area_number, spool_number, length] + ); + + callback(null, result.insertId); + } catch (err) { + callback(err); + } +}; + +const getAll = async (callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT * FROM CuttingPlan ORDER BY cutting_plan_id DESC` + ); + callback(null, rows); + } catch (err) { + callback(new Error(err.message || String(err))); + } +}; + +const getById = async (cutting_plan_id, callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT * FROM CuttingPlan WHERE cutting_plan_id = ?`, + [cutting_plan_id] + ); + callback(null, rows[0]); + } catch (err) { + callback(err); + } +}; + +const update = async (plan, callback) => { + try { + const db = await getDb(); + const { + cutting_plan_id, project_id, drawing_name, + pipe_spec, area_number, spool_number, length + } = plan; + + const [result] = await db.query( + `UPDATE CuttingPlan + SET project_id = ?, + drawing_name = ?, + pipe_spec = ?, + area_number = ?, + spool_number = ?, + length = ? + WHERE cutting_plan_id = ?`, + [project_id, drawing_name, pipe_spec, area_number, spool_number, length, cutting_plan_id] + ); + + callback(null, result.affectedRows); + } catch (err) { + callback(err); + } +}; + +const remove = async (cutting_plan_id, callback) => { + try { + const db = await getDb(); + const [result] = await db.query( + `DELETE FROM CuttingPlan WHERE cutting_plan_id = ?`, + [cutting_plan_id] + ); + callback(null, result.affectedRows); + } catch (err) { + callback(err); + } +}; + +module.exports = { create, getAll, getById, update, remove }; \ No newline at end of file diff --git a/api.hyungi.net/models/dailyIssueReportModel.js b/api.hyungi.net/models/dailyIssueReportModel.js new file mode 100644 index 0000000..bf6c1ca --- /dev/null +++ b/api.hyungi.net/models/dailyIssueReportModel.js @@ -0,0 +1,123 @@ +const { getDb } = require('../dbPool'); + +/** + * 1. 등록 (단일 레코드) + */ +const create = async (report, callback) => { + try { + const db = await getDb(); + const { + date, + worker_id, + project_id, + start_time, + end_time, + issue_type_id, + description = null // 선택값 처리 + } = report; + + const [result] = await db.query( + `INSERT INTO DailyIssueReports + (date, worker_id, project_id, start_time, end_time, issue_type_id, description) + VALUES (?, ?, ?, ?, ?, ?, ?)`, + [date, worker_id, project_id, start_time, end_time, issue_type_id, description] + ); + + callback(null, result.insertId); + } catch (err) { + callback(err); + } +}; + +/** + * 2. 특정 날짜의 전체 이슈 목록 조회 + */ +const getAllByDate = async (date, callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT + d.id, + d.date, + w.worker_name, + p.project_name, + d.start_time, + d.end_time, + t.category, + t.subcategory, + d.description + FROM DailyIssueReports d + LEFT JOIN Workers w ON d.worker_id = w.worker_id + LEFT JOIN Projects p ON d.project_id = p.project_id + LEFT JOIN IssueTypes t ON d.issue_type_id = t.issue_type_id + WHERE d.date = ? + ORDER BY d.start_time ASC`, + [date] + ); + callback(null, rows); + } catch (err) { + callback(err); + } +}; + +/** + * 3. 단일 조회 (선택사항: 컨트롤러에서 사용 중) + */ +const getById = async (id, callback) => { + try { + const db = await getDb(); + const [rows] = await db.query(`SELECT * FROM DailyIssueReports WHERE id = ?`, [id]); + callback(null, rows[0]); + } catch (err) { + callback(err); + } +}; + +/** + * 4. 수정 + */ +const update = async (id, data, callback) => { + try { + const db = await getDb(); + + const fields = []; + const values = []; + + for (const key in data) { + fields.push(`${key} = ?`); + values.push(data[key]); + } + + values.push(id); // 마지막에 id + + const [result] = await db.query( + `UPDATE DailyIssueReports SET ${fields.join(', ')} WHERE id = ?`, + values + ); + + callback(null, result.affectedRows); + } catch (err) { + callback(err); + } +}; + +/** + * 5. 삭제 + */ +const remove = async (id, callback) => { + try { + const db = await getDb(); + const [result] = await db.query(`DELETE FROM DailyIssueReports WHERE id = ?`, [id]); + callback(null, result.affectedRows); + } catch (err) { + callback(err); + } +}; + +module.exports = { + create, + getAllByDate, + getById, + update, + remove +}; \ No newline at end of file diff --git a/api.hyungi.net/models/dailyWorkReportModel.js b/api.hyungi.net/models/dailyWorkReportModel.js new file mode 100644 index 0000000..992d716 --- /dev/null +++ b/api.hyungi.net/models/dailyWorkReportModel.js @@ -0,0 +1,830 @@ +// models/dailyWorkReportModel.js - 누적입력 방식 + 모든 기존 기능 포함 +const { getDb } = require('../dbPool'); + +/** + * 📋 마스터 데이터 조회 함수들 + */ +const getAllWorkTypes = async (callback) => { + try { + const db = await getDb(); + const [rows] = await db.query('SELECT * FROM work_types ORDER BY name ASC'); + callback(null, rows); + } catch (err) { + console.error('작업 유형 조회 오류:', err); + callback(err); + } +}; + +const getAllWorkStatusTypes = async (callback) => { + try { + const db = await getDb(); + const [rows] = await db.query('SELECT * FROM work_status_types ORDER BY id ASC'); + callback(null, rows); + } catch (err) { + console.error('업무 상태 유형 조회 오류:', err); + callback(err); + } +}; + +const getAllErrorTypes = async (callback) => { + try { + const db = await getDb(); + const [rows] = await db.query('SELECT * FROM error_types ORDER BY name ASC'); + callback(null, rows); + } catch (err) { + console.error('에러 유형 조회 오류:', err); + callback(err); + } +}; + +/** + * 🔄 누적 추가 전용 함수 (createDailyReport 대체) - 절대 삭제 안함! + */ +const createDailyReport = async (reportData, callback) => { + const { report_date, worker_id, work_entries, created_by, created_by_name, total_hours } = reportData; + const db = await getDb(); + const conn = await db.getConnection(); + + try { + await conn.beginTransaction(); + + console.log(`📝 ${created_by_name}이 ${report_date} ${worker_id}번 작업자에게 데이터 추가 중...`); + + // ✅ 수정된 쿼리 (테이블 alias 추가): +const [existingReports] = await conn.query( + `SELECT dwr.created_by, u.name as created_by_name, COUNT(*) as count, SUM(dwr.work_hours) as total_hours + FROM daily_work_reports dwr + LEFT JOIN Users u ON dwr.created_by = u.user_id + WHERE dwr.report_date = ? AND dwr.worker_id = ? + GROUP BY dwr.created_by`, + [report_date, worker_id] +); + + + console.log('기존 데이터 (삭제하지 않음):', existingReports); + + // 2. ✅ 삭제 없이 새로운 데이터만 추가! + const insertedIds = []; + for (const entry of work_entries) { + const { project_id, work_type_id, work_status_id, error_type_id, work_hours } = entry; + + const [insertResult] = await conn.query( + `INSERT INTO daily_work_reports + (report_date, worker_id, project_id, work_type_id, work_status_id, error_type_id, work_hours, created_by, created_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, NOW())`, + [report_date, worker_id, project_id, work_type_id, work_status_id || 1, error_type_id || null, work_hours, created_by] + ); + + insertedIds.push(insertResult.insertId); + } + + // ✅ 수정된 쿼리: +const [finalReports] = await conn.query( + `SELECT dwr.created_by, u.name as created_by_name, COUNT(*) as count, SUM(dwr.work_hours) as total_hours + FROM daily_work_reports dwr + LEFT JOIN Users u ON dwr.created_by = u.user_id + WHERE dwr.report_date = ? AND dwr.worker_id = ? + GROUP BY dwr.created_by`, + [report_date, worker_id] +); + + const grandTotal = finalReports.reduce((sum, report) => sum + parseFloat(report.total_hours || 0), 0); + const myTotal = finalReports.find(r => r.created_by === created_by)?.total_hours || 0; + + console.log('최종 결과:'); + finalReports.forEach(report => { + console.log(` - ${report.created_by_name}: ${report.total_hours}시간 (${report.count}개 항목)`); + }); + console.log(` 📊 총합: ${grandTotal}시간`); + + // 4. 감사 로그 추가 + try { + await conn.query( + `INSERT INTO work_report_audit_log + (action, report_id, new_values, changed_by, change_reason, created_at) + VALUES (?, ?, ?, ?, ?, NOW())`, + [ + 'ADD_ACCUMULATE', + insertedIds[0] || null, + JSON.stringify({ + report_date, + worker_id, + work_entries_count: work_entries.length, + added_hours: total_hours, + my_total: myTotal, + grand_total: grandTotal, + contributors: finalReports.map(r => ({ name: r.created_by_name, hours: r.total_hours })) + }), + created_by, + `누적 추가 by ${created_by_name} - 삭제 없음` + ] + ); + } catch (auditErr) { + console.warn('감사 로그 추가 실패:', auditErr.message); + } + + await conn.commit(); + + callback(null, { + success: true, + inserted_count: insertedIds.length, + deleted_count: 0, // 항상 0 (삭제 안함) + action: 'accumulated', + message: `${created_by_name}이 ${total_hours}시간 추가했습니다. (개인 총 ${myTotal}시간, 전체 총 ${grandTotal}시간)`, + final_summary: { + my_total: parseFloat(myTotal), + grand_total: grandTotal, + total_contributors: finalReports.length, + contributors: finalReports + } + }); + + } catch (err) { + await conn.rollback(); + console.error('작업보고서 누적 추가 오류:', err); + callback(err); + } finally { + conn.release(); + } +}; + +/** + * 📊 특정 날짜 + 작업자 + 작성자의 누적 현황 조회 + */ +const getMyAccumulatedHours = async (date, worker_id, created_by, callback) => { + try { + const db = await getDb(); + + const sql = ` + SELECT + SUM(work_hours) as my_total_hours, + COUNT(*) as my_entry_count, + GROUP_CONCAT( + CONCAT(p.project_name, ':', work_hours, 'h') + ORDER BY created_at + ) as my_entries + FROM daily_work_reports dwr + LEFT JOIN Projects p ON dwr.project_id = p.project_id + WHERE dwr.report_date = ? AND dwr.worker_id = ? AND dwr.created_by = ? + `; + + const [rows] = await db.query(sql, [date, worker_id, created_by]); + callback(null, rows[0] || { my_total_hours: 0, my_entry_count: 0, my_entries: null }); + } catch (err) { + console.error('개인 누적 현황 조회 오류:', err); + callback(err); + } +}; + +/** + * 📊 누적 현황 조회 - 날짜+작업자별 (모든 기여자) + */ +const getAccumulatedReportsByDate = async (date, worker_id, callback) => { + try { + const db = await getDb(); + + const sql = getSelectQuery() + ` + WHERE dwr.report_date = ? AND dwr.worker_id = ? + ORDER BY dwr.created_by, dwr.created_at ASC + `; + + const [rows] = await db.query(sql, [date, worker_id]); + callback(null, rows); + } catch (err) { + console.error('누적 현황 조회 오류:', err); + callback(err); + } +}; + +/** + * 📊 기여자별 요약 조회 + */ +const getContributorsByDate = async (date, worker_id, callback) => { + try { + const db = await getDb(); + + const sql = ` + SELECT + dwr.created_by, + u.name as created_by_name, + COUNT(*) as entry_count, + SUM(dwr.work_hours) as total_hours, + MIN(dwr.created_at) as first_entry, + MAX(dwr.created_at) as last_entry, + GROUP_CONCAT( + CONCAT(p.project_name, ':', dwr.work_hours, 'h') + ORDER BY dwr.created_at SEPARATOR ', ' + ) as entry_details + FROM daily_work_reports dwr + LEFT JOIN Users u ON dwr.created_by = u.user_id + LEFT JOIN Projects p ON dwr.project_id = p.project_id + WHERE dwr.report_date = ? AND dwr.worker_id = ? + GROUP BY dwr.created_by + ORDER BY total_hours DESC, first_entry ASC + `; + + const [rows] = await db.query(sql, [date, worker_id]); + callback(null, rows); + } catch (err) { + console.error('기여자별 요약 조회 오류:', err); + callback(err); + } +}; + +/** + * 🗑️ 특정 작업 항목만 삭제 (개별 삭제) + */ +const removeSpecificEntry = async (entry_id, deleted_by, callback) => { + const db = await getDb(); + const conn = await db.getConnection(); + + try { + await conn.beginTransaction(); + + // 삭제 전 정보 확인 + const [entryInfo] = await conn.query( + `SELECT dwr.*, w.worker_name, p.project_name, u.name as created_by_name + FROM daily_work_reports dwr + LEFT JOIN Workers w ON dwr.worker_id = w.worker_id + LEFT JOIN Projects p ON dwr.project_id = p.project_id + LEFT JOIN Users u ON dwr.created_by = u.user_id + WHERE dwr.id = ?`, + [entry_id] + ); + + if (entryInfo.length === 0) { + await conn.rollback(); + return callback(new Error('삭제할 항목을 찾을 수 없습니다.')); + } + + const entry = entryInfo[0]; + + // 권한 확인: 본인이 작성한 것만 삭제 가능 + if (entry.created_by !== deleted_by) { + await conn.rollback(); + return callback(new Error('본인이 작성한 항목만 삭제할 수 있습니다.')); + } + + // 개별 항목 삭제 + const [result] = await conn.query('DELETE FROM daily_work_reports WHERE id = ?', [entry_id]); + + // 감사 로그 + try { + await conn.query( + `INSERT INTO work_report_audit_log + (action, report_id, old_values, changed_by, change_reason, created_at) + VALUES (?, ?, ?, ?, ?, NOW())`, + [ + 'DELETE_SINGLE', + entry_id, + JSON.stringify({ + worker_name: entry.worker_name, + project_name: entry.project_name, + work_hours: entry.work_hours, + report_date: entry.report_date + }), + deleted_by, + `개별 항목 삭제` + ] + ); + } catch (auditErr) { + console.warn('감사 로그 추가 실패:', auditErr.message); + } + + await conn.commit(); + callback(null, { + success: true, + deleted_entry: { + worker_name: entry.worker_name, + project_name: entry.project_name, + work_hours: entry.work_hours + } + }); + + } catch (err) { + await conn.rollback(); + console.error('개별 항목 삭제 오류:', err); + callback(err); + } finally { + conn.release(); + } +}; + +/** + * 공통 SELECT 쿼리 부분 + */ +const getSelectQuery = () => ` + SELECT + dwr.id, + dwr.report_date, + dwr.worker_id, + dwr.project_id, + dwr.work_type_id, + dwr.work_status_id, + dwr.error_type_id, + dwr.work_hours, + dwr.created_by, + w.worker_name, + p.project_name, + wt.name as work_type_name, + wst.name as work_status_name, + et.name as error_type_name, + u.name as created_by_name, + dwr.created_at, + dwr.updated_at + FROM daily_work_reports dwr + LEFT JOIN Workers w ON dwr.worker_id = w.worker_id + LEFT JOIN Projects p ON dwr.project_id = p.project_id + LEFT JOIN work_types wt ON dwr.work_type_id = wt.id + LEFT JOIN work_status_types wst ON dwr.work_status_id = wst.id + LEFT JOIN error_types et ON dwr.error_type_id = et.id + LEFT JOIN Users u ON dwr.created_by = u.user_id +`; + +/** + * 7. ID로 작업보고서 조회 + */ +const getById = async (id, callback) => { + try { + const db = await getDb(); + const sql = getSelectQuery() + 'WHERE dwr.id = ?'; + const [rows] = await db.query(sql, [id]); + callback(null, rows[0] || null); + } catch (err) { + console.error('ID로 작업보고서 조회 오류:', err); + callback(err); + } +}; + +/** + * 8. 일일 작업보고서 조회 (날짜별) + */ +const getByDate = async (date, callback) => { + try { + const db = await getDb(); + const sql = getSelectQuery() + ` + WHERE dwr.report_date = ? + ORDER BY w.worker_name ASC, p.project_name ASC, dwr.id ASC + `; + const [rows] = await db.query(sql, [date]); + callback(null, rows); + } catch (err) { + console.error('날짜별 작업보고서 조회 오류:', err); + callback(err); + } +}; + +/** + * 9. 일일 작업보고서 조회 (날짜 + 작성자별) + */ +const getByDateAndCreator = async (date, created_by, callback) => { + try { + const db = await getDb(); + const sql = getSelectQuery() + ` + WHERE dwr.report_date = ? AND dwr.created_by = ? + ORDER BY w.worker_name ASC, p.project_name ASC, dwr.id ASC + `; + const [rows] = await db.query(sql, [date, created_by]); + callback(null, rows); + } catch (err) { + console.error('날짜+작성자별 작업보고서 조회 오류:', err); + callback(err); + } +}; + +/** + * 10. 일일 작업보고서 조회 (작업자별) + */ +const getByWorker = async (worker_id, callback) => { + try { + const db = await getDb(); + const sql = getSelectQuery() + ` + WHERE dwr.worker_id = ? + ORDER BY dwr.report_date DESC, dwr.id ASC + `; + const [rows] = await db.query(sql, [worker_id]); + callback(null, rows); + } catch (err) { + console.error('작업자별 작업보고서 조회 오류:', err); + callback(err); + } +}; + +/** + * 11. 일일 작업보고서 조회 (날짜 + 작업자) + */ +const getByDateAndWorker = async (date, worker_id, callback) => { + try { + const db = await getDb(); + const sql = getSelectQuery() + ` + WHERE dwr.report_date = ? AND dwr.worker_id = ? + ORDER BY dwr.id ASC + `; + const [rows] = await db.query(sql, [date, worker_id]); + callback(null, rows); + } catch (err) { + console.error('날짜+작업자별 작업보고서 조회 오류:', err); + callback(err); + } +}; + +/** + * 12. 기간별 조회 + */ +const getByRange = async (start_date, end_date, callback) => { + try { + const db = await getDb(); + const sql = getSelectQuery() + ` + WHERE dwr.report_date BETWEEN ? AND ? + ORDER BY dwr.report_date DESC, w.worker_name ASC, dwr.id ASC + `; + const [rows] = await db.query(sql, [start_date, end_date]); + callback(null, rows); + } catch (err) { + console.error('기간별 작업보고서 조회 오류:', err); + callback(err); + } +}; + +/** + * 13. 상세 검색 (페이지네이션 포함) + */ +const searchWithDetails = async (params, callback) => { + const { start_date, end_date, worker_id, project_id, work_status_id, created_by, page, limit } = params; + + try { + const db = await getDb(); + + // 조건 구성 + let whereConditions = ['dwr.report_date BETWEEN ? AND ?']; + let queryParams = [start_date, end_date]; + + if (worker_id) { + whereConditions.push('dwr.worker_id = ?'); + queryParams.push(worker_id); + } + + if (project_id) { + whereConditions.push('dwr.project_id = ?'); + queryParams.push(project_id); + } + + if (work_status_id) { + whereConditions.push('dwr.work_status_id = ?'); + queryParams.push(work_status_id); + } + + if (created_by) { + whereConditions.push('dwr.created_by = ?'); + queryParams.push(created_by); + } + + const whereClause = whereConditions.join(' AND '); + + // 총 개수 조회 + const countQuery = ` + SELECT COUNT(*) as total + FROM daily_work_reports dwr + WHERE ${whereClause} + `; + const [countResult] = await db.query(countQuery, queryParams); + const total = countResult[0].total; + + // 데이터 조회 (JOIN 포함) + const offset = (page - 1) * limit; + const dataQuery = getSelectQuery() + ` + WHERE ${whereClause} + ORDER BY dwr.report_date DESC, w.worker_name ASC, dwr.created_at DESC + LIMIT ? OFFSET ? + `; + + const dataParams = [...queryParams, limit, offset]; + const [rows] = await db.query(dataQuery, dataParams); + + callback(null, { reports: rows, total }); + } catch (err) { + console.error('상세 검색 오류:', err); + callback(err); + } +}; + +/** + * 14. 일일 근무 요약 조회 (날짜별) + */ +const getSummaryByDate = async (date, callback) => { + try { + const db = await getDb(); + + const sql = ` + SELECT + dwr.worker_id, + w.worker_name, + dwr.report_date, + SUM(dwr.work_hours) as total_hours, + COUNT(*) as work_entries_count, + SUM(CASE WHEN dwr.work_status_id = 2 THEN 1 ELSE 0 END) as error_count + FROM daily_work_reports dwr + LEFT JOIN Workers w ON dwr.worker_id = w.worker_id + WHERE dwr.report_date = ? + GROUP BY dwr.worker_id, dwr.report_date + ORDER BY w.worker_name ASC + `; + const [rows] = await db.query(sql, [date]); + callback(null, rows); + } catch (err) { + console.error('일일 근무 요약 조회 오류:', err); + callback(err); + } +}; + +/** + * 15. 일일 근무 요약 조회 (작업자별) + */ +const getSummaryByWorker = async (worker_id, callback) => { + try { + const db = await getDb(); + + const sql = ` + SELECT + dwr.report_date, + dwr.worker_id, + w.worker_name, + SUM(dwr.work_hours) as total_hours, + COUNT(*) as work_entries_count, + SUM(CASE WHEN dwr.work_status_id = 2 THEN 1 ELSE 0 END) as error_count + FROM daily_work_reports dwr + LEFT JOIN Workers w ON dwr.worker_id = w.worker_id + WHERE dwr.worker_id = ? + GROUP BY dwr.report_date, dwr.worker_id + ORDER BY dwr.report_date DESC + `; + const [rows] = await db.query(sql, [worker_id]); + callback(null, rows); + } catch (err) { + console.error('작업자별 근무 요약 조회 오류:', err); + callback(err); + } +}; + +/** + * 16. 월간 요약 + */ +const getMonthlySummary = async (year, month, callback) => { + try { + const db = await getDb(); + const start = `${year.padStart(4, '0')}-${month.padStart(2, '0')}-01`; + const end = `${year.padStart(4, '0')}-${month.padStart(2, '0')}-31`; + + const sql = ` + SELECT + dwr.report_date, + dwr.worker_id, + w.worker_name, + SUM(dwr.work_hours) as total_work_hours, + COUNT(DISTINCT dwr.project_id) as project_count, + COUNT(*) as work_entries_count, + SUM(CASE WHEN dwr.work_status_id = 2 THEN 1 ELSE 0 END) as error_count, + GROUP_CONCAT(DISTINCT p.project_name ORDER BY p.project_name) as projects, + GROUP_CONCAT(DISTINCT wt.name ORDER BY wt.name) as work_types + FROM daily_work_reports dwr + LEFT JOIN Workers w ON dwr.worker_id = w.worker_id + LEFT JOIN Projects p ON dwr.project_id = p.project_id + LEFT JOIN work_types wt ON dwr.work_type_id = wt.id + WHERE dwr.report_date BETWEEN ? AND ? + GROUP BY dwr.report_date, dwr.worker_id + ORDER BY dwr.report_date DESC, w.worker_name ASC + `; + const [rows] = await db.query(sql, [start, end]); + callback(null, rows); + } catch (err) { + console.error('월간 요약 조회 오류:', err); + callback(err); + } +}; + +/** + * 17. 작업보고서 수정 + */ +const updateById = async (id, updateData, callback) => { + try { + const db = await getDb(); + + const setFields = []; + const values = []; + + if (updateData.work_hours !== undefined) { + setFields.push('work_hours = ?'); + values.push(updateData.work_hours); + } + + if (updateData.work_status_id !== undefined) { + setFields.push('work_status_id = ?'); + values.push(updateData.work_status_id); + } + + if (updateData.error_type_id !== undefined) { + setFields.push('error_type_id = ?'); + values.push(updateData.error_type_id); + } + + if (updateData.project_id !== undefined) { + setFields.push('project_id = ?'); + values.push(updateData.project_id); + } + + if (updateData.work_type_id !== undefined) { + setFields.push('work_type_id = ?'); + values.push(updateData.work_type_id); + } + + setFields.push('updated_at = NOW()'); + + if (updateData.updated_by) { + setFields.push('updated_by = ?'); + values.push(updateData.updated_by); + } + + values.push(id); + + const sql = `UPDATE daily_work_reports SET ${setFields.join(', ')} WHERE id = ?`; + const [result] = await db.query(sql, values); + + callback(null, result.affectedRows); + } catch (err) { + console.error('작업보고서 수정 오류:', err); + callback(err); + } +}; + +/** + * 18. 특정 작업보고서 삭제 + */ +const removeById = async (id, deletedBy, callback) => { + const db = await getDb(); + const conn = await db.getConnection(); + + try { + await conn.beginTransaction(); + + // 삭제 전 정보 저장 (감사 로그용) + const [reportInfo] = await conn.query('SELECT * FROM daily_work_reports WHERE id = ?', [id]); + + // 작업보고서 삭제 + const [result] = await conn.query('DELETE FROM daily_work_reports WHERE id = ?', [id]); + + // 감사 로그 추가 + if (reportInfo.length > 0 && deletedBy) { + try { + await conn.query( + `INSERT INTO work_report_audit_log + (action, report_id, old_values, changed_by, change_reason, created_at) + VALUES ('DELETE', ?, ?, ?, 'Manual deletion', NOW())`, + [id, JSON.stringify(reportInfo[0]), deletedBy] + ); + } catch (auditErr) { + console.warn('감사 로그 추가 실패:', auditErr.message); + } + } + + await conn.commit(); + callback(null, result.affectedRows); + } catch (err) { + await conn.rollback(); + console.error('작업보고서 삭제 오류:', err); + callback(err); + } finally { + conn.release(); + } +}; + +/** + * 19. 작업자의 특정 날짜 전체 삭제 + */ +const removeByDateAndWorker = async (date, worker_id, deletedBy, callback) => { + const db = await getDb(); + const conn = await db.getConnection(); + + try { + await conn.beginTransaction(); + + // 삭제 전 정보 저장 (감사 로그용) + const [reportInfos] = await conn.query( + 'SELECT * FROM daily_work_reports WHERE report_date = ? AND worker_id = ?', + [date, worker_id] + ); + + // 작업보고서 삭제 + const [result] = await conn.query( + 'DELETE FROM daily_work_reports WHERE report_date = ? AND worker_id = ?', + [date, worker_id] + ); + + // 감사 로그 추가 + if (reportInfos.length > 0 && deletedBy) { + try { + await conn.query( + `INSERT INTO work_report_audit_log + (action, old_values, changed_by, change_reason, created_at) + VALUES ('DELETE_BATCH', ?, ?, 'Batch deletion by date and worker', NOW())`, + [JSON.stringify({ deleted_reports: reportInfos, count: reportInfos.length }), deletedBy] + ); + } catch (auditErr) { + console.warn('감사 로그 추가 실패:', auditErr.message); + } + } + + await conn.commit(); + callback(null, result.affectedRows); + } catch (err) { + await conn.rollback(); + console.error('작업보고서 전체 삭제 오류:', err); + callback(err); + } finally { + conn.release(); + } +}; + +/** + * 20. 통계 조회 + */ +const getStatistics = async (start_date, end_date, callback) => { + try { + const db = await getDb(); + + const sql = ` + SELECT + COUNT(*) as total_reports, + SUM(work_hours) as total_hours, + COUNT(DISTINCT worker_id) as unique_workers, + COUNT(DISTINCT project_id) as unique_projects, + SUM(CASE WHEN work_status_id = 2 THEN 1 ELSE 0 END) as error_count, + AVG(work_hours) as avg_hours_per_entry, + MIN(work_hours) as min_hours, + MAX(work_hours) as max_hours + FROM daily_work_reports + WHERE report_date BETWEEN ? AND ? + `; + + const [rows] = await db.query(sql, [start_date, end_date]); + + // 추가 통계 - 날짜별 집계 + const dailyStatsSql = ` + SELECT + report_date, + COUNT(*) as daily_reports, + SUM(work_hours) as daily_hours, + COUNT(DISTINCT worker_id) as daily_workers + FROM daily_work_reports + WHERE report_date BETWEEN ? AND ? + GROUP BY report_date + ORDER BY report_date DESC + `; + + const [dailyStats] = await db.query(dailyStatsSql, [start_date, end_date]); + + const result = { + overall: rows[0], + daily_breakdown: dailyStats + }; + + callback(null, result); + } catch (err) { + console.error('통계 조회 오류:', err); + callback(err); + } +}; + +// 모든 함수 내보내기 (기존 기능 + 누적 기능) +module.exports = { + // 📋 마스터 데이터 + getAllWorkTypes, + getAllWorkStatusTypes, + getAllErrorTypes, + + // 🔄 핵심 생성 함수 (누적 방식) + createDailyReport, // 누적 추가 (덮어쓰기 없음) + + // 📊 누적 관련 새로운 함수들 + getMyAccumulatedHours, // 개인 누적 현황 + getAccumulatedReportsByDate, // 날짜별 누적 현황 + getContributorsByDate, // 기여자별 요약 + removeSpecificEntry, // 개별 항목 삭제 + + // 📊 기존 조회 함수들 (모두 유지) + getById, + getByDate, + getByDateAndCreator, // 날짜+작성자별 조회 + getByWorker, + getByDateAndWorker, + getByRange, + searchWithDetails, + getSummaryByDate, + getSummaryByWorker, + getMonthlySummary, + + // ✏️ 수정/삭제 함수들 (기존 유지) + updateById, + removeById, + removeByDateAndWorker, + getStatistics +}; \ No newline at end of file diff --git a/api.hyungi.net/models/equipmentListModel.js b/api.hyungi.net/models/equipmentListModel.js new file mode 100644 index 0000000..43ef7b3 --- /dev/null +++ b/api.hyungi.net/models/equipmentListModel.js @@ -0,0 +1,94 @@ +const { getDb } = require('../dbPool'); + +const create = async (equipment, callback) => { + try { + const db = await getDb(); + const { + factory_id, equipment_name, + model, status, purchase_date, description + } = equipment; + + const [result] = await db.query( + `INSERT INTO EquipmentList + (factory_id, equipment_name, model, status, purchase_date, description) + VALUES (?, ?, ?, ?, ?, ?)`, + [factory_id, equipment_name, model, status, purchase_date, description] + ); + + callback(null, result.insertId); + } catch (err) { + callback(err); + } +}; + +const getAll = async (callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT * FROM EquipmentList ORDER BY equipment_id DESC` + ); + callback(null, rows); + } catch (err) { + callback(err); + } +}; + +const getById = async (equipment_id, callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT * FROM EquipmentList WHERE equipment_id = ?`, + [equipment_id] + ); + callback(null, rows[0]); + } catch (err) { + callback(err); + } +}; + +const update = async (equipment, callback) => { + try { + const db = await getDb(); + const { + equipment_id, factory_id, equipment_name, + model, status, purchase_date, description + } = equipment; + + const [result] = await db.query( + `UPDATE EquipmentList + SET factory_id = ?, + equipment_name = ?, + model = ?, + status = ?, + purchase_date = ?, + description = ? + WHERE equipment_id = ?`, + [factory_id, equipment_name, model, status, purchase_date, description, equipment_id] + ); + + callback(null, result.affectedRows); + } catch (err) { + callback(new Error(err.message || String(err))); + } +}; + +const remove = async (equipment_id, callback) => { + try { + const db = await getDb(); + const [result] = await db.query( + `DELETE FROM EquipmentList WHERE equipment_id = ?`, + [equipment_id] + ); + callback(null, result.affectedRows); + } catch (err) { + callback(err); + } +}; + +module.exports = { + create, + getAll, + getById, + update, + remove +}; \ No newline at end of file diff --git a/api.hyungi.net/models/factoryInfoModel.js b/api.hyungi.net/models/factoryInfoModel.js new file mode 100644 index 0000000..0925e3d --- /dev/null +++ b/api.hyungi.net/models/factoryInfoModel.js @@ -0,0 +1,86 @@ +const { getDb } = require('../dbPool'); + +const create = async (factory, callback) => { + try { + const db = await getDb(); + const { factory_name, address, description, map_image_url } = factory; + + const [result] = await db.query( + `INSERT INTO FactoryInfo + (factory_name, address, description, map_image_url) + VALUES (?, ?, ?, ?)`, + [factory_name, address, description, map_image_url] + ); + + callback(null, result.insertId); + } catch (err) { + callback(err); + } +}; + +const getAll = async (callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT * FROM FactoryInfo ORDER BY factory_id DESC` + ); + callback(null, rows); + } catch (err) { + callback(err); + } +}; + +const getById = async (factory_id, callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT * FROM FactoryInfo WHERE factory_id = ?`, + [factory_id] + ); + callback(null, rows[0]); + } catch (err) { + callback(err); + } +}; + +const update = async (factory, callback) => { + try { + const db = await getDb(); + const { factory_id, factory_name, address, description, map_image_url } = factory; + + const [result] = await db.query( + `UPDATE FactoryInfo + SET factory_name = ?, + address = ?, + description = ?, + map_image_url = ? + WHERE factory_id = ?`, + [factory_name, address, description, map_image_url, factory_id] + ); + + callback(null, result.affectedRows); + } catch (err) { + callback(new Error(err.message || String(err))); + } +}; + +const remove = async (factory_id, callback) => { + try { + const db = await getDb(); + const [result] = await db.query( + `DELETE FROM FactoryInfo WHERE factory_id = ?`, + [factory_id] + ); + callback(null, result.affectedRows); + } catch (err) { + callback(err); + } +}; + +module.exports = { + create, + getAll, + getById, + update, + remove +}; \ No newline at end of file diff --git a/api.hyungi.net/models/issueTypeModel.js b/api.hyungi.net/models/issueTypeModel.js new file mode 100644 index 0000000..a63612c --- /dev/null +++ b/api.hyungi.net/models/issueTypeModel.js @@ -0,0 +1,58 @@ +const { getDb } = require('../dbPool'); + +// CREATE +const create = async (type, callback) => { + try { + const db = await getDb(); + const [result] = await db.query( + `INSERT INTO IssueTypes (category, subcategory) VALUES (?, ?)`, + [type.category, type.subcategory] + ); + callback(null, result.insertId); + } catch (err) { + callback(err); + } +}; + +// READ ALL +const getAll = async (callback) => { + try { + const db = await getDb(); + const [rows] = await db.query(`SELECT * FROM IssueTypes ORDER BY category, subcategory`); + callback(null, rows); + } catch (err) { + callback(err); + } +}; + +// UPDATE +const update = async (id, type, callback) => { + try { + const db = await getDb(); + const [result] = await db.query( + `UPDATE IssueTypes SET category = ?, subcategory = ? WHERE id = ?`, + [type.category, type.subcategory, id] + ); + callback(null, result.affectedRows); + } catch (err) { + callback(err); + } +}; + +// DELETE +const remove = async (id, callback) => { + try { + const db = await getDb(); + const [result] = await db.query(`DELETE FROM IssueTypes WHERE id = ?`, [id]); + callback(null, result.affectedRows); + } catch (err) { + callback(err); + } +}; + +module.exports = { + create, + getAll, + update, + remove +}; \ No newline at end of file diff --git a/api.hyungi.net/models/pingModel.js b/api.hyungi.net/models/pingModel.js new file mode 100644 index 0000000..92950b4 --- /dev/null +++ b/api.hyungi.net/models/pingModel.js @@ -0,0 +1,12 @@ +// models/pingModel.js + +/** + * 단순 ping 비즈니스 로직 레이어 + * 필요하다면 여기서 더 복잡한 처리나 다른 서비스 호출 등을 관리 + */ +exports.ping = () => { + return { + message: 'pong', + timestamp: new Date().toISOString() + }; +}; \ No newline at end of file diff --git a/api.hyungi.net/models/pipeSpecModel.js b/api.hyungi.net/models/pipeSpecModel.js new file mode 100644 index 0000000..e0610e3 --- /dev/null +++ b/api.hyungi.net/models/pipeSpecModel.js @@ -0,0 +1,31 @@ +const { getDb } = require('../dbPool'); + +// 전체 조회 +const getAll = async () => { + const db = await getDb(); + const [rows] = await db.query(`SELECT * FROM PipeSpecs ORDER BY material, diameter_in`); + return rows; +}; + +// 등록 +const create = async ({ material, diameter_in, schedule }) => { + const db = await getDb(); + const [result] = await db.query( + `INSERT INTO PipeSpecs (material, diameter_in, schedule) + VALUES (?, ?, ?)`, + [material, diameter_in, schedule] + ); + return result.insertId; +}; + +// 삭제 +const remove = async (spec_id) => { + const db = await getDb(); + const [result] = await db.query( + `DELETE FROM PipeSpecs WHERE spec_id = ?`, + [spec_id] + ); + return result.affectedRows; +}; + +module.exports = { getAll, create, remove }; \ No newline at end of file diff --git a/api.hyungi.net/models/processModel.js b/api.hyungi.net/models/processModel.js new file mode 100644 index 0000000..52b4250 --- /dev/null +++ b/api.hyungi.net/models/processModel.js @@ -0,0 +1,100 @@ +const { getDb } = require('../dbPool'); + +const create = async (processData, callback) => { + try { + const db = await getDb(); + const { + project_id, process_name, + process_start, process_end, + planned_worker_count, process_description, note + } = processData; + + const [result] = await db.query( + `INSERT INTO Processes + (project_id, process_name, process_start, process_end, + planned_worker_count, process_description, note) + VALUES (?, ?, ?, ?, ?, ?, ?)`, + [project_id, process_name, process_start, process_end, + planned_worker_count, process_description, note] + ); + + callback(null, result.insertId); + } catch (err) { + callback(err); + } +}; + +const getAll = async (callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT * FROM Processes ORDER BY process_id DESC` + ); + callback(null, rows); + } catch (err) { + callback(err); + } +}; + +const getById = async (process_id, callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT * FROM Processes WHERE process_id = ?`, + [process_id] + ); + callback(null, rows[0]); + } catch (err) { + callback(err); + } +}; + +const update = async (processData, callback) => { + try { + const db = await getDb(); + const { + process_id, project_id, + process_name, process_start, process_end, + planned_worker_count, process_description, note + } = processData; + + const [result] = await db.query( + `UPDATE Processes + SET project_id = ?, + process_name = ?, + process_start = ?, + process_end = ?, + planned_worker_count = ?, + process_description = ?, + note = ? + WHERE process_id = ?`, + [project_id, process_name, process_start, process_end, + planned_worker_count, process_description, note, process_id] + ); + + callback(null, result.affectedRows); + } catch (err) { + callback(new Error(err.message || String(err))); + } +}; + +const remove = async (process_id, callback) => { + try { + const db = await getDb(); + const [result] = await db.query( + `DELETE FROM Processes WHERE process_id = ?`, + [process_id] + ); + callback(null, result.affectedRows); + } catch (err) { + callback(err); + } +}; + +module.exports = { + create, + getAll, + getById, + update, + remove +}; \ No newline at end of file diff --git a/api.hyungi.net/models/projectModel.js b/api.hyungi.net/models/projectModel.js new file mode 100644 index 0000000..1b1b976 --- /dev/null +++ b/api.hyungi.net/models/projectModel.js @@ -0,0 +1,97 @@ +const { getDb } = require('../dbPool'); + +const create = async (project, callback) => { + try { + const db = await getDb(); + const { + job_no, project_name, + contract_date, due_date, + delivery_method, site, pm + } = project; + + const [result] = await db.query( + `INSERT INTO Projects + (job_no, project_name, contract_date, due_date, delivery_method, site, pm) + VALUES (?, ?, ?, ?, ?, ?, ?)`, + [job_no, project_name, contract_date, due_date, delivery_method, site, pm] + ); + + callback(null, result.insertId); + } catch (err) { + callback(err); + } +}; + +const getAll = async (callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT * FROM Projects ORDER BY project_id DESC` + ); + callback(null, rows); + } catch (err) { + callback(err); + } +}; + +const getById = async (project_id, callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT * FROM Projects WHERE project_id = ?`, + [project_id] + ); + callback(null, rows[0]); + } catch (err) { + callback(err); + } +}; + +const update = async (project, callback) => { + try { + const db = await getDb(); + const { + project_id, job_no, project_name, + contract_date, due_date, + delivery_method, site, pm + } = project; + + const [result] = await db.query( + `UPDATE Projects + SET job_no = ?, + project_name = ?, + contract_date = ?, + due_date = ?, + delivery_method= ?, + site = ?, + pm = ? + WHERE project_id = ?`, + [job_no, project_name, contract_date, due_date, delivery_method, site, pm, project_id] + ); + + callback(null, result.affectedRows); + } catch (err) { + callback(new Error(err.message || String(err))); + } +}; + +const remove = async (project_id, callback) => { + try { + const db = await getDb(); + const [result] = await db.query( + `DELETE FROM Projects WHERE project_id = ?`, + [project_id] + ); + callback(null, result.affectedRows); + } catch (err) { + callback(err); + } +}; + +module.exports = { + create, + getAll, + getById, + update, + remove +}; \ No newline at end of file diff --git a/api.hyungi.net/models/taskModel.js b/api.hyungi.net/models/taskModel.js new file mode 100644 index 0000000..6ee247d --- /dev/null +++ b/api.hyungi.net/models/taskModel.js @@ -0,0 +1,90 @@ +const { getDb } = require('../dbPool'); + +// 1. 생성 +const create = async (task, callback) => { + try { + const db = await getDb(); + const { category, subcategory, task_name, description } = task; + + const [result] = await db.query( + `INSERT INTO Tasks (category, subcategory, task_name, description) + VALUES (?, ?, ?, ?)`, + [category, subcategory, task_name, description] + ); + + callback(null, result.insertId); + } catch (err) { + callback(err); + } +}; + +// 2. 전체 조회 +const getAll = async (callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT * FROM Tasks ORDER BY task_id DESC` + ); + callback(null, rows); + } catch (err) { + callback(err); + } +}; + +// 3. 단일 조회 +const getById = async (task_id, callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT * FROM Tasks WHERE task_id = ?`, + [task_id] + ); + callback(null, rows[0]); + } catch (err) { + callback(err); + } +}; + +// 4. 수정 +const update = async (task, callback) => { + try { + const db = await getDb(); + const { task_id, category, subcategory, task_name, description } = task; + + const [result] = await db.query( + `UPDATE Tasks + SET category = ?, + subcategory = ?, + task_name = ?, + description = ? + WHERE task_id = ?`, + [category, subcategory, task_name, description, task_id] + ); + + callback(null, result.affectedRows); + } catch (err) { + callback(new Error(err.message || String(err))); + } +}; + +// 5. 삭제 +const remove = async (task_id, callback) => { + try { + const db = await getDb(); + const [result] = await db.query( + `DELETE FROM Tasks WHERE task_id = ?`, + [task_id] + ); + callback(null, result.affectedRows); + } catch (err) { + callback(err); + } +}; + +module.exports = { + create, + getAll, + getById, + update, + remove +}; \ No newline at end of file diff --git a/api.hyungi.net/models/toolsModel.js b/api.hyungi.net/models/toolsModel.js new file mode 100644 index 0000000..cbae251 --- /dev/null +++ b/api.hyungi.net/models/toolsModel.js @@ -0,0 +1,89 @@ +const { getDb } = require('../dbPool'); + +// 1. 전체 도구 조회 +const getAll = async (callback) => { + try { + const db = await getDb(); + const [rows] = await db.query('SELECT * FROM Tools'); + callback(null, rows); + } catch (err) { + callback(err); + } +}; + +// 2. 단일 도구 조회 +const getById = async (id, callback) => { + try { + const db = await getDb(); + const [rows] = await db.query('SELECT * FROM Tools WHERE id = ?', [id]); + callback(null, rows[0]); + } catch (err) { + callback(err); + } +}; + +// 3. 도구 생성 +const create = async (tool, callback) => { + try { + const db = await getDb(); + const { name, location, stock, status, factory_id, map_x, map_y, map_zone, map_note } = tool; + + const [result] = await db.query( + `INSERT INTO Tools + (name, location, stock, status, factory_id, map_x, map_y, map_zone, map_note) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`, + [name, location, stock, status, factory_id, map_x, map_y, map_zone, map_note] + ); + + callback(null, result.insertId); + } catch (err) { + callback(err); + } +}; + +// 4. 도구 수정 +const update = async (id, tool, callback) => { + try { + const db = await getDb(); + const { name, location, stock, status, factory_id, map_x, map_y, map_zone, map_note } = tool; + + const [result] = await db.query( + `UPDATE Tools + SET name = ?, + location = ?, + stock = ?, + status = ?, + factory_id = ?, + map_x = ?, + map_y = ?, + map_zone = ?, + map_note = ? + WHERE id = ?`, + [name, location, stock, status, factory_id, map_x, map_y, map_zone, map_note, id] + ); + + callback(null, result.affectedRows); + } catch (err) { + callback(new Error(err.message || String(err))); + } +}; + +// 5. 도구 삭제 +const remove = async (id, callback) => { + try { + const db = await getDb(); + const [result] = await db.query('DELETE FROM Tools WHERE id = ?', [id]); + callback(null, result.affectedRows); + } catch (err) { + callback(err); + } +}; + +// ✅ export 정리 +module.exports = { + getAll, + getById, + create, + update, + remove +}; \ No newline at end of file diff --git a/api.hyungi.net/models/uploadModel.js b/api.hyungi.net/models/uploadModel.js new file mode 100644 index 0000000..79f15ce --- /dev/null +++ b/api.hyungi.net/models/uploadModel.js @@ -0,0 +1,45 @@ +const { getDb } = require('../dbPool'); + +// 1. 문서 업로드 +const create = async (doc, callback) => { + try { + const db = await getDb(); + const sql = ` + INSERT INTO uploaded_documents + (title, tags, description, original_name, stored_name, file_path, file_type, file_size, submitted_by) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?) + `; + const values = [ + doc.title, + doc.tags, + doc.description, + doc.original_name, + doc.stored_name, + doc.file_path, + doc.file_type, + doc.file_size, + doc.submitted_by + ]; + const [result] = await db.query(sql, values); + callback(null, result.insertId); + } catch (err) { + callback(new Error(err.message || String(err))); + } +}; + +// 2. 전체 문서 목록 조회 +const getAll = async (callback) => { + try { + const db = await getDb(); + const [rows] = await db.query(`SELECT * FROM uploaded_documents ORDER BY created_at DESC`); + callback(null, rows); + } catch (err) { + callback(err); + } +}; + +// ✅ 내보내기 +module.exports = { + create, + getAll +}; \ No newline at end of file diff --git a/api.hyungi.net/models/userModel.js b/api.hyungi.net/models/userModel.js new file mode 100644 index 0000000..f12260b --- /dev/null +++ b/api.hyungi.net/models/userModel.js @@ -0,0 +1,20 @@ +const { getDb } = require('../dbPool'); + +// 사용자 조회 +const findByUsername = async (username) => { + try { + const db = await getDb(); + const [rows] = await db.query( + 'SELECT * FROM Users WHERE username = ?', [username] + ); + return rows[0]; + } catch (err) { + console.error('DB 오류 - 사용자 조회 실패:', err); + throw err; + } +}; + +// 명확한 내보내기 +module.exports = { + findByUsername +}; \ No newline at end of file diff --git a/api.hyungi.net/models/workReportModel.js b/api.hyungi.net/models/workReportModel.js new file mode 100644 index 0000000..f678d2b --- /dev/null +++ b/api.hyungi.net/models/workReportModel.js @@ -0,0 +1,223 @@ +const { getDb } = require('../dbPool'); + +/** + * 1. 여러 건 등록 (트랜잭션 사용) + */ +const createBatch = async (reports, callback) => { + const db = await getDb(); + const conn = await db.getConnection(); + + try { + await conn.beginTransaction(); + + const sql = ` + INSERT INTO WorkReports + (\`date\`, worker_id, project_id, task_id, overtime_hours, work_details, memo) + VALUES (?, ?, ?, ?, ?, ?, ?) + `; + + for (const rpt of reports) { + const params = [ + rpt.date, + rpt.worker_id, + rpt.project_id, + rpt.task_id || null, + rpt.overtime_hours || null, + rpt.work_details || null, + rpt.memo || null + ]; + await conn.query(sql, params); + } + + await conn.commit(); + callback(null); + } catch (err) { + await conn.rollback(); + callback(err); + } finally { + conn.release(); + } +}; + +/** + * 2. 단일 등록 + */ +const create = async (report, callback) => { + try { + const db = await getDb(); + const { + date, worker_id, project_id, + task_id, overtime_hours, + work_details, memo + } = report; + + const [result] = await db.query( + `INSERT INTO WorkReports + (\`date\`, worker_id, project_id, task_id, overtime_hours, work_details, memo) + VALUES (?, ?, ?, ?, ?, ?, ?)`, + [ + date, + worker_id, + project_id, + task_id || null, + overtime_hours || null, + work_details || null, + memo || null + ] + ); + + callback(null, result.insertId); + } catch (err) { + callback(err); + } +}; + + /** + * 3. 날짜별 조회 + */ + const getAllByDate = async (date, callback) => { + try { + const db = await getDb(); + const sql = ` + SELECT + wr.worker_id, -- 이 줄을 추가했습니다 + wr.id, + wr.\`date\`, + w.worker_name, + p.project_name, + CONCAT(t.category, ':', t.subcategory) AS task_name, + wr.overtime_hours, + wr.work_details, + wr.memo + FROM WorkReports wr + LEFT JOIN Workers w ON wr.worker_id = w.worker_id + LEFT JOIN Projects p ON wr.project_id = p.project_id + LEFT JOIN Tasks t ON wr.task_id = t.task_id + WHERE wr.\`date\` = ? + ORDER BY w.worker_name ASC + `; + const [rows] = await db.query(sql, [date]); + callback(null, rows); + } catch (err) { + callback(err); + } + }; + +/** + * 4. 기간 조회 + */ +const getByRange = async (start, end, callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT * FROM WorkReports + WHERE \`date\` BETWEEN ? AND ? + ORDER BY \`date\` ASC`, + [start, end] + ); + callback(null, rows); + } catch (err) { + callback(err); + } +}; + +/** + * 5. ID로 조회 + */ +const getById = async (id, callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT * FROM WorkReports WHERE id = ?`, + [id] + ); + callback(null, rows[0]); + } catch (err) { + callback(err); + } +}; + +/** + * 6. 수정 + */ +const update = async (id, report, callback) => { + try { + const db = await getDb(); + const { + date, worker_id, project_id, + task_id, overtime_hours, + work_details, memo + } = report; + + const [result] = await db.query( + `UPDATE WorkReports + SET \`date\` = ?, + worker_id = ?, + project_id = ?, + task_id = ?, + overtime_hours = ?, + work_details = ?, + memo = ?, + updated_at = CURRENT_TIMESTAMP + WHERE id = ?`, + [ + date, + worker_id, + project_id, + task_id || null, + overtime_hours || null, + work_details || null, + memo || null, + id + ] + ); + + callback(null, result.affectedRows); + } catch (err) { + callback(err); + } +}; + +/** + * 7. 삭제 + */ +const remove = async (id, callback) => { + try { + const db = await getDb(); + const [result] = await db.query( + `DELETE FROM WorkReports WHERE id = ?`, + [id] + ); + callback(null, result.affectedRows); + } catch (err) { + callback(new Error(err.message || String(err))); + } +}; + +/** + * 8. 중복 확인 + */ +const existsByDateAndWorker = async (date, worker_id, callback) => { + try { + const db = await getDb(); + const [rows] = await db.query( + `SELECT 1 FROM WorkReports WHERE \`date\` = ? AND worker_id = ? LIMIT 1`, + [date, worker_id] + ); + callback(null, rows.length > 0); + } catch (err) { + callback(err); + } +}; + +// ✅ 내보내기 +module.exports = { + create, + createBatch, + getAllByDate, + getByRange, + getById, + update, + remove, + existsByDateAndWorker +}; \ No newline at end of file diff --git a/api.hyungi.net/models/workerModel.js b/api.hyungi.net/models/workerModel.js new file mode 100644 index 0000000..3024a47 --- /dev/null +++ b/api.hyungi.net/models/workerModel.js @@ -0,0 +1,89 @@ +const { getDb } = require('../dbPool'); + +// 1. 작업자 생성 +const create = async (worker, callback) => { + try { + const db = await getDb(); + const { worker_name, join_date, job_type, salary, annual_leave, status } = worker; + + const [result] = await db.query( + `INSERT INTO Workers + (worker_name, join_date, job_type, salary, annual_leave, status) + VALUES (?, ?, ?, ?, ?, ?)`, + [worker_name, join_date, job_type, salary, annual_leave, status] + ); + + callback(null, result.insertId); + } catch (err) { + callback(err); + } +}; + +// 2. 전체 조회 +const getAll = async (callback) => { + try { + const db = await getDb(); + const [rows] = await db.query(`SELECT * FROM Workers ORDER BY worker_id DESC`); + callback(null, rows); + } catch (err) { + callback(err); + } +}; + +// 3. 단일 조회 +const getById = async (worker_id, callback) => { + try { + const db = await getDb(); + const [rows] = await db.query(`SELECT * FROM Workers WHERE worker_id = ?`, [worker_id]); + callback(null, rows[0]); + } catch (err) { + callback(err); + } +}; + +// 4. 작업자 수정 +const update = async (worker, callback) => { + try { + const db = await getDb(); + const { worker_id, worker_name, join_date, job_type, salary, annual_leave, status } = worker; + + const [result] = await db.query( + `UPDATE Workers + SET worker_name = ?, + join_date = ?, + job_type = ?, + salary = ?, + annual_leave = ?, + status = ? + WHERE worker_id = ?`, + [worker_name, join_date, job_type, salary, annual_leave, status, worker_id] + ); + + callback(null, result.affectedRows); + } catch (err) { + callback(new Error(err.message || String(err))); + } +}; + +// 5. 삭제 +const remove = async (worker_id, callback) => { + try { + const db = await getDb(); + const [result] = await db.query( + `DELETE FROM Workers WHERE worker_id = ?`, + [worker_id] + ); + callback(null, result.affectedRows); + } catch (err) { + callback(err); + } +}; + +// ✅ 모듈 내보내기 (정상 구조) +module.exports = { + create, + getAll, + getById, + update, + remove +}; \ No newline at end of file diff --git a/api.hyungi.net/models/your_database.db b/api.hyungi.net/models/your_database.db new file mode 100644 index 0000000..e69de29 diff --git a/api.hyungi.net/node_modules/.package-lock.json b/api.hyungi.net/node_modules/.package-lock.json new file mode 100644 index 0000000..7c533d7 --- /dev/null +++ b/api.hyungi.net/node_modules/.package-lock.json @@ -0,0 +1,4392 @@ +{ + "name": "hyungi-api", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "license": "MIT", + "optional": true + }, + "node_modules/@hexagon/base64": { + "version": "1.1.28", + "resolved": "https://registry.npmjs.org/@hexagon/base64/-/base64-1.1.28.tgz", + "integrity": "sha512-lhqDEAvWixy3bZ+UOYbPwUbBkwBq5C1LAJ/xPC8Oi+lL54oyakv/npbA0aU2hgCsx/1NUd4IBvV03+aUBWxerw==" + }, + "node_modules/@levischuck/tiny-cbor": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@levischuck/tiny-cbor/-/tiny-cbor-0.2.11.tgz", + "integrity": "sha512-llBRm4dT4Z89aRsm6u2oEZ8tfwL/2l6BwpZ7JcyieouniDECM5AqNgr/y08zalEIvW3RSK4upYyybDcmjXqAow==" + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "license": "MIT", + "optional": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@peculiar/asn1-android": { + "version": "2.3.16", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-android/-/asn1-android-2.3.16.tgz", + "integrity": "sha512-a1viIv3bIahXNssrOIkXZIlI2ePpZaNmR30d4aBL99mu2rO+mT9D6zBsp7H6eROWGtmwv0Ionp5olJurIo09dw==", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.15", + "asn1js": "^3.0.5", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-android/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==" + }, + "node_modules/@peculiar/asn1-ecc": { + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-ecc/-/asn1-ecc-2.3.15.tgz", + "integrity": "sha512-/HtR91dvgog7z/WhCVdxZJ/jitJuIu8iTqiyWVgRE9Ac5imt2sT/E4obqIVGKQw7PIy+X6i8lVBoT6wC73XUgA==", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.15", + "@peculiar/asn1-x509": "^2.3.15", + "asn1js": "^3.0.5", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-ecc/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==" + }, + "node_modules/@peculiar/asn1-rsa": { + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-rsa/-/asn1-rsa-2.3.15.tgz", + "integrity": "sha512-p6hsanvPhexRtYSOHihLvUUgrJ8y0FtOM97N5UEpC+VifFYyZa0iZ5cXjTkZoDwxJ/TTJ1IJo3HVTB2JJTpXvg==", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.15", + "@peculiar/asn1-x509": "^2.3.15", + "asn1js": "^3.0.5", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-rsa/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==" + }, + "node_modules/@peculiar/asn1-schema": { + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-schema/-/asn1-schema-2.3.15.tgz", + "integrity": "sha512-QPeD8UA8axQREpgR5UTAfu2mqQmm97oUqahDtNdBcfj3qAnoXzFdQW+aNf/tD2WVXF8Fhmftxoj0eMIT++gX2w==", + "dependencies": { + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-schema/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==" + }, + "node_modules/@peculiar/asn1-x509": { + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@peculiar/asn1-x509/-/asn1-x509-2.3.15.tgz", + "integrity": "sha512-0dK5xqTqSLaxv1FHXIcd4Q/BZNuopg+u1l23hT9rOmQ1g4dNtw0g/RnEi+TboB0gOwGtrWn269v27cMgchFIIg==", + "dependencies": { + "@peculiar/asn1-schema": "^2.3.15", + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + } + }, + "node_modules/@peculiar/asn1-x509/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==" + }, + "node_modules/@pm2/agent": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@pm2/agent/-/agent-2.0.4.tgz", + "integrity": "sha512-n7WYvvTJhHLS2oBb1PjOtgLpMhgImOq8sXkPBw6smeg9LJBWZjiEgPKOpR8mn9UJZsB5P3W4V/MyvNnp31LKeA==", + "dependencies": { + "async": "~3.2.0", + "chalk": "~3.0.0", + "dayjs": "~1.8.24", + "debug": "~4.3.1", + "eventemitter2": "~5.0.1", + "fast-json-patch": "^3.0.0-1", + "fclone": "~1.0.11", + "nssocket": "0.6.0", + "pm2-axon": "~4.0.1", + "pm2-axon-rpc": "~0.7.0", + "proxy-agent": "~6.3.0", + "semver": "~7.5.0", + "ws": "~7.5.10" + } + }, + "node_modules/@pm2/agent/node_modules/dayjs": { + "version": "1.8.36", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.8.36.tgz", + "integrity": "sha512-3VmRXEtw7RZKAf+4Tv1Ym9AGeo8r8+CjDi26x+7SYQil1UqtqdaokhzoEJohqlzt0m5kacJSDhJQkG/LWhpRBw==" + }, + "node_modules/@pm2/agent/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@pm2/agent/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/@pm2/agent/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@pm2/io": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@pm2/io/-/io-6.0.1.tgz", + "integrity": "sha512-KiA+shC6sULQAr9mGZ1pg+6KVW9MF8NpG99x26Lf/082/Qy8qsTCtnJy+HQReW1A9Rdf0C/404cz0RZGZro+IA==", + "dependencies": { + "async": "~2.6.1", + "debug": "~4.3.1", + "eventemitter2": "^6.3.1", + "require-in-the-middle": "^5.0.0", + "semver": "~7.5.4", + "shimmer": "^1.2.0", + "signal-exit": "^3.0.3", + "tslib": "1.9.3" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/@pm2/io/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/@pm2/io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@pm2/io/node_modules/eventemitter2": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", + "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==" + }, + "node_modules/@pm2/io/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/@pm2/io/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@pm2/js-api": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@pm2/js-api/-/js-api-0.8.0.tgz", + "integrity": "sha512-nmWzrA/BQZik3VBz+npRcNIu01kdBhWL0mxKmP1ciF/gTcujPTQqt027N9fc1pK9ERM8RipFhymw7RcmCyOEYA==", + "dependencies": { + "async": "^2.6.3", + "debug": "~4.3.1", + "eventemitter2": "^6.3.1", + "extrareqp2": "^1.0.0", + "ws": "^7.0.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@pm2/js-api/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/@pm2/js-api/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@pm2/js-api/node_modules/eventemitter2": { + "version": "6.4.9", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.9.tgz", + "integrity": "sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==" + }, + "node_modules/@pm2/js-api/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/@pm2/pm2-version-check": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@pm2/pm2-version-check/-/pm2-version-check-1.0.4.tgz", + "integrity": "sha512-SXsM27SGH3yTWKc2fKR4SYNxsmnvuBQ9dd6QHtEWmiZ/VqaOYPAIlS8+vMcn27YLtAEBGvNRSh3TPNvtjZgfqA==", + "dependencies": { + "debug": "^4.3.1" + } + }, + "node_modules/@simplewebauthn/server": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/@simplewebauthn/server/-/server-13.1.1.tgz", + "integrity": "sha512-1hsLpRHfSuMB9ee2aAdh0Htza/X3f4djhYISrggqGe3xopNjOcePiSDkDDoPzDYaaMCrbqGP1H2TYU7bgL9PmA==", + "dependencies": { + "@hexagon/base64": "^1.1.27", + "@levischuck/tiny-cbor": "^0.2.2", + "@peculiar/asn1-android": "^2.3.10", + "@peculiar/asn1-ecc": "^2.3.8", + "@peculiar/asn1-rsa": "^2.3.8", + "@peculiar/asn1-schema": "^2.3.8", + "@peculiar/asn1-x509": "^2.3.8" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "license": "ISC", + "optional": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", + "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "license": "MIT", + "optional": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/amp": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/amp/-/amp-0.3.1.tgz", + "integrity": "sha512-OwIuC4yZaRogHKiuU5WlMR5Xk/jAcpPtawWL05Gj8Lvm2F6mwoJt4O/bHI+DHwG79vWd+8OFYM4/BzYqyRd3qw==" + }, + "node_modules/amp-message": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/amp-message/-/amp-message-0.1.2.tgz", + "integrity": "sha512-JqutcFwoU1+jhv7ArgW38bqrE+LQdcRv4NxNw0mp0JHQyB6tXesWRjtYKlDgHRY2o3JE5UTaBGUK8kSWUdxWUg==", + "dependencies": { + "amp": "0.3.1" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "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/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "license": "ISC", + "optional": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/asn1js": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.6.tgz", + "integrity": "sha512-UOCGPYbl0tv8+006qks/dTgV9ajs97X2p0FAbyS2iyCRrmLSRolDaHdp+v/CLgnzHc3fVB+CwYiUmei7ndFcgA==", + "dependencies": { + "pvtsutils": "^1.3.6", + "pvutils": "^1.1.3", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/asn1js/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==" + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ast-types/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==" + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==" + }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "dependencies": { + "retry": "0.13.1" + } + }, + "node_modules/async-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/aws-ssl-profiles": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", + "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT", + "optional": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/bcryptjs": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", + "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==", + "license": "MIT" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/blessed": { + "version": "0.1.81", + "resolved": "https://registry.npmjs.org/blessed/-/blessed-0.1.81.tgz", + "integrity": "sha512-LoF5gae+hlmfORcG1M5+5XZi4LBmvlXTzwJWzUlPryN/SJdSflZvROM2TwkT0GMpq7oqT48NRd4GS7BiVBc5OQ==", + "bin": { + "blessed": "bin/tput.js" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/bodec": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/bodec/-/bodec-0.1.0.tgz", + "integrity": "sha512-Ylo+MAo5BDUq1KA3f3R/MFhh+g8cnHmo8bz3YPGhI1znrMaf77ol1sfvYJzsw3nTE+Y2GryfDxBaR+AqpAkEHQ==" + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cacache/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "optional": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/charm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/charm/-/charm-0.1.2.tgz", + "integrity": "sha512-syedaZ9cPe7r3hoQA9twWYKu5AIyCswN5+szkmPBe9ccdLrj4bYaCnLVPTLd2kgVRc7+zoX4tyPgRnFKCj5YjQ==" + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-tableau": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/cli-tableau/-/cli-tableau-2.0.1.tgz", + "integrity": "sha512-he+WTicka9cl0Fg/y+YyxcN6/bfQ/1O3QmgxRXDhABKqLzvoOSM4fMzp39uMyLBulAFuywD2N7UaoQE7WaADxQ==", + "dependencies": { + "chalk": "3.0.0" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", + "optional": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT", + "optional": true + }, + "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/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC", + "optional": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "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.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/croner": { + "version": "4.1.97", + "resolved": "https://registry.npmjs.org/croner/-/croner-4.1.97.tgz", + "integrity": "sha512-/f6gpQuxDaqXu+1kwQYSckUglPaOrHdbIlBAu0YuW8/Cdb45XwXYNUBXg3r/9Mo6n540Kn/smKcZWko5x99KrQ==" + }, + "node_modules/culvert": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/culvert/-/culvert-0.1.2.tgz", + "integrity": "sha512-yi1x3EAWKjQTreYWeSd98431AV+IEE0qoDyOoaHJ7KJ21gv6HtBXHVLX74opVSGqcR8/AbjJBHAHpcOy2bj5Gg==" + }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/debug/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==", + "license": "MIT" + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "license": "MIT", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "license": "MIT", + "optional": true + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.10" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" + }, + "node_modules/dotenv": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "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==", + "license": "MIT", + "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==", + "license": "MIT" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "license": "MIT", + "optional": true + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "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==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter2": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-5.0.1.tgz", + "integrity": "sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==" + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", + "engines": { + "node": ">=6" + } + }, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express-rate-limit": { + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.0.tgz", + "integrity": "sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/express-rate-limit" + }, + "peerDependencies": { + "express": "^4.11 || 5 || ^5.0.0-beta.1" + } + }, + "node_modules/express-validator": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/express-validator/-/express-validator-7.2.1.tgz", + "integrity": "sha512-CjNE6aakfpuwGaHQZ3m8ltCG2Qvivd7RHtVMS/6nVxOM7xVGqr4bhflsm4+N5FP5zI7Zxp+Hae+9RE+o8e3ZOQ==", + "dependencies": { + "lodash": "^4.17.21", + "validator": "~13.12.0" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/extrareqp2": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/extrareqp2/-/extrareqp2-1.0.0.tgz", + "integrity": "sha512-Gum0g1QYb6wpPJCVypWP3bbIuaibcFiJcpuPM10YSXp/tzqi84x9PJageob+eN4xVRIOto4wjSGNLyMD54D2xA==", + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/fast-json-patch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", + "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==" + }, + "node_modules/fclone": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/fclone/-/fclone-1.0.11.tgz", + "integrity": "sha512-GDqVQezKzRABdeqflsgMr7ktzgF9CyS+p2oe0jJqUY6izSSbhPIQJDpoU4PtGcD7VPM9xh/dVrTu6z1nwgmEGw==" + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC", + "optional": true + }, + "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==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "license": "MIT", + "dependencies": { + "is-property": "^1.0.2" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-uri": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", + "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/git-node-fs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/git-node-fs/-/git-node-fs-1.0.0.tgz", + "integrity": "sha512-bLQypt14llVXBg0S0u8q8HmU7g9p3ysH+NvVlae5vILuUvs759665HvmR5+wb04KjHyjFcDRxdYb4kyNnluMUQ==" + }, + "node_modules/git-sha1": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/git-sha1/-/git-sha1-0.1.2.tgz", + "integrity": "sha512-2e/nZezdVlyCopOCYHeW0onkbZg7xP1Ad6pndPy1rCygeRykefUS6r7oA5cJRGEFvseiaz5a/qUHFVX1dd6Isg==" + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "optional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC", + "optional": true + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "license": "ISC", + "optional": true + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/helmet": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/helmet/-/helmet-7.2.0.tgz", + "integrity": "sha512-ZRiwvN089JfMXokizgqEPXsl2Guk094yExfoDXR0cBYWxtBbaSww/w+vT4WEJsBW2iTUi1GgZ6swmoug3Oy4Xw==", + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "license": "BSD-2-Clause", + "optional": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "license": "MIT", + "optional": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "optional": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "license": "ISC", + "optional": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", + "optional": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "license": "MIT", + "optional": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==", + "license": "MIT" + }, + "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/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC", + "optional": true + }, + "node_modules/js-git": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/js-git/-/js-git-0.7.8.tgz", + "integrity": "sha512-+E5ZH/HeRnoc/LW0AmAyhU+mNcWBzAKE+30+IDMLSLbbK+Tdt02AdkOKq9u15rlJsDEGFqtgckc8ZM59LhhiUA==", + "dependencies": { + "bodec": "^0.1.0", + "culvert": "^0.1.2", + "git-sha1": "^0.1.2", + "pako": "^0.2.5" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "optional": true + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dependencies": { + "jws": "^3.2.2", + "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/jsonwebtoken/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/jwa": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", + "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lazy": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/lazy/-/lazy-1.0.11.tgz", + "integrity": "sha512-Y+CjUfLmIpoUCCRl0ub4smrYtGGr5AOa2AKOaWelGHOGz33X/Y/KizefGqbkwfz44+cnq/+9habclf8vOmu2LA==", + "engines": { + "node": ">=0.2.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "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/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", + "license": "Apache-2.0" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/lru.min": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.2.tgz", + "integrity": "sha512-Nv9KddBcQSlQopmBHXSsZVY5xsdlZkdH/Iey0BlcBYggMd4two7cZnKOK9vmy3nY0O5RGH99z1PCeTpPqszUYg==", + "license": "MIT", + "engines": { + "bun": ">=1.0.0", + "deno": ">=1.30.0", + "node": ">=8.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wellwelwel" + } + }, + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "license": "ISC", + "optional": true, + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "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/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "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/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/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "optional": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "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/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, + "node_modules/module-details-from-path": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.4.tgz", + "integrity": "sha512-EGWKgxALGMgzvxYF1UyGTy0HXX/2vHLkw6+NvDKW2jypWbHpjQuj4UMcqQWXHERJhVGKikolT06G3bcKe4fi7w==" + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "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==", + "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/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" + }, + "node_modules/mysql2": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.14.1.tgz", + "integrity": "sha512-7ytuPQJjQB8TNAYX/H2yhL+iQOnIBjAMam361R7UAL0lOVXWjtdrmoL9HYKqKoLp/8UUTRcvo1QPvK9KL7wA8w==", + "license": "MIT", + "dependencies": { + "aws-ssl-profiles": "^1.1.1", + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.6.3", + "long": "^5.2.1", + "lru.min": "^1.0.0", + "named-placeholders": "^1.1.3", + "seq-queue": "^0.0.5", + "sqlstring": "^2.3.2" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/mysql2/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.3.tgz", + "integrity": "sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==", + "license": "MIT", + "dependencies": { + "lru-cache": "^7.14.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/named-placeholders/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/napi-build-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", + "integrity": "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==", + "license": "MIT" + }, + "node_modules/needle": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", + "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/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/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/node-abi": { + "version": "3.74.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz", + "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", + "license": "MIT", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT" + }, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "license": "MIT", + "optional": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nssocket": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/nssocket/-/nssocket-0.6.0.tgz", + "integrity": "sha512-a9GSOIql5IqgWJR3F/JXG4KpJTA3Z53Cj0MeMvGpglytB1nxE4PdFNC0jINe27CS7cGivoynwc054EzCcT3M3w==", + "dependencies": { + "eventemitter2": "~0.4.14", + "lazy": "~1.0.11" + }, + "engines": { + "node": ">= 0.10.x" + } + }, + "node_modules/nssocket/node_modules/eventemitter2": { + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz", + "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz", + "integrity": "sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.6", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.5" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", + "license": "MIT" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidusage": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-3.0.2.tgz", + "integrity": "sha512-g0VU+y08pKw5M8EZ2rIGiEBaB8wrQMjYGFfW2QVIfyT8V+fq8YFLkvlz4bz5ljvFDJYNFCWT3PWqcRr2FKO81w==", + "dependencies": { + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pm2": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/pm2/-/pm2-5.4.3.tgz", + "integrity": "sha512-4/I1htIHzZk1Y67UgOCo4F1cJtas1kSds31N8zN0PybO230id1nigyjGuGFzUnGmUFPmrJ0On22fO1ChFlp7VQ==", + "dependencies": { + "@pm2/agent": "~2.0.0", + "@pm2/io": "~6.0.1", + "@pm2/js-api": "~0.8.0", + "@pm2/pm2-version-check": "latest", + "async": "~3.2.0", + "blessed": "0.1.81", + "chalk": "3.0.0", + "chokidar": "^3.5.3", + "cli-tableau": "^2.0.0", + "commander": "2.15.1", + "croner": "~4.1.92", + "dayjs": "~1.11.5", + "debug": "^4.3.1", + "enquirer": "2.3.6", + "eventemitter2": "5.0.1", + "fclone": "1.0.11", + "js-yaml": "~4.1.0", + "mkdirp": "1.0.4", + "needle": "2.4.0", + "pidusage": "~3.0", + "pm2-axon": "~4.0.1", + "pm2-axon-rpc": "~0.7.1", + "pm2-deploy": "~1.0.2", + "pm2-multimeter": "^0.1.2", + "promptly": "^2", + "semver": "^7.2", + "source-map-support": "0.5.21", + "sprintf-js": "1.1.2", + "vizion": "~2.2.1" + }, + "bin": { + "pm2": "bin/pm2", + "pm2-dev": "bin/pm2-dev", + "pm2-docker": "bin/pm2-docker", + "pm2-runtime": "bin/pm2-runtime" + }, + "engines": { + "node": ">=12.0.0" + }, + "optionalDependencies": { + "pm2-sysmonit": "^1.2.8" + } + }, + "node_modules/pm2-axon": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pm2-axon/-/pm2-axon-4.0.1.tgz", + "integrity": "sha512-kES/PeSLS8orT8dR5jMlNl+Yu4Ty3nbvZRmaAtROuVm9nYYGiaoXqqKQqQYzWQzMYWUKHMQTvBlirjE5GIIxqg==", + "dependencies": { + "amp": "~0.3.1", + "amp-message": "~0.1.1", + "debug": "^4.3.1", + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=5" + } + }, + "node_modules/pm2-axon-rpc": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/pm2-axon-rpc/-/pm2-axon-rpc-0.7.1.tgz", + "integrity": "sha512-FbLvW60w+vEyvMjP/xom2UPhUN/2bVpdtLfKJeYM3gwzYhoTEEChCOICfFzxkxuoEleOlnpjie+n1nue91bDQw==", + "dependencies": { + "debug": "^4.3.1" + }, + "engines": { + "node": ">=5" + } + }, + "node_modules/pm2-deploy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pm2-deploy/-/pm2-deploy-1.0.2.tgz", + "integrity": "sha512-YJx6RXKrVrWaphEYf++EdOOx9EH18vM8RSZN/P1Y+NokTKqYAca/ejXwVLyiEpNju4HPZEk3Y2uZouwMqUlcgg==", + "dependencies": { + "run-series": "^1.1.8", + "tv4": "^1.3.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/pm2-multimeter": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/pm2-multimeter/-/pm2-multimeter-0.1.2.tgz", + "integrity": "sha512-S+wT6XfyKfd7SJIBqRgOctGxaBzUOmVQzTAS+cg04TsEUObJVreha7lvCfX8zzGVr871XwCSnHUU7DQQ5xEsfA==", + "dependencies": { + "charm": "~0.1.1" + } + }, + "node_modules/pm2-sysmonit": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/pm2-sysmonit/-/pm2-sysmonit-1.2.8.tgz", + "integrity": "sha512-ACOhlONEXdCTVwKieBIQLSi2tQZ8eKinhcr9JpZSUAL8Qy0ajIgRtsLxG/lwPOW3JEKqPyw/UaHmTWhUzpP4kA==", + "optional": true, + "dependencies": { + "async": "^3.2.0", + "debug": "^4.3.1", + "pidusage": "^2.0.21", + "systeminformation": "^5.7", + "tx2": "~1.0.4" + } + }, + "node_modules/pm2-sysmonit/node_modules/pidusage": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/pidusage/-/pidusage-2.0.21.tgz", + "integrity": "sha512-cv3xAQos+pugVX+BfXpHsbyz/dLzX+lr44zNMsYiGxUw+kV5sgQCIcLd1z+0vq+KyC7dJ+/ts2PsfgWfSC3WXA==", + "optional": true, + "dependencies": { + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pm2/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/pm2/node_modules/sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==" + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", + "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", + "license": "MIT", + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^2.0.0", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "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/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "license": "ISC", + "optional": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "license": "MIT", + "optional": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/promptly": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/promptly/-/promptly-2.2.0.tgz", + "integrity": "sha512-aC9j+BZsRSSzEsXBNBwDnAxujdx19HycZoKgRgzWnS8eOHg1asuf9heuLprfbe739zY3IdUQx+Egv6Jn135WHA==", + "dependencies": { + "read": "^1.0.4" + } + }, + "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==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-agent": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.1.tgz", + "integrity": "sha512-Rb5RVBy1iyqOtNl15Cw/llpeLH8bsb37gM1FUfKQ+Wck6xHlbAhWGUFiTRHtkjqGTA5pSHz6+0hrPW/oECihPQ==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/proxy-agent/node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pvtsutils": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.6.tgz", + "integrity": "sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==", + "dependencies": { + "tslib": "^2.8.1" + } + }, + "node_modules/pvtsutils/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==" + }, + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/qrcode": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.4.tgz", + "integrity": "sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "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/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-in-the-middle": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-5.2.0.tgz", + "integrity": "sha512-efCx3b+0Z69/LGJmm9Yvi4cqEdxnoGnxYxGxBghkkTTFeXRtTCmmhO0AnAfHz59k957uTSuy8WaHqOs8wbYUWg==", + "dependencies": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", + "optional": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-series": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-series/-/run-series-1.1.9.tgz", + "integrity": "sha512-Arc4hUN896vjkqCYrUXquBFtRZdv1PfLbTYP71efP6butxyQ0kWpiNJyAgsxscmQg1cqvHY32/UCBzXedTpU2g==", + "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/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" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + }, + "node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/send/node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/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==", + "license": "MIT" + }, + "node_modules/seq-queue": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/seq-queue/-/seq-queue-0.0.5.tgz", + "integrity": "sha512-hr3Wtp/GZIc/6DAGPDcV4/9WoZhjrkXsi5B/07QgX8tsdc6ilr7BFM6PM6rbdAX1kFSDYeZGLipIZZKyQP0O5Q==" + }, + "node_modules/serve-static": { + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.19.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "license": "ISC" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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==", + "license": "MIT", + "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/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", + "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "license": "BSD-3-Clause" + }, + "node_modules/sqlite3": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.7.tgz", + "integrity": "sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==", + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "bindings": "^1.5.0", + "node-addon-api": "^7.0.0", + "prebuild-install": "^7.1.1", + "tar": "^6.1.11" + }, + "optionalDependencies": { + "node-gyp": "8.x" + }, + "peerDependencies": { + "node-gyp": "8.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } + } + }, + "node_modules/sqlstring": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.3.tgz", + "integrity": "sha512-qC9iz2FlN7DQl3+wjwn3802RTyjCx7sDvfQEXchwa6CWOx07/WVfh91gBmQ9fahw8snwGEWU3xGzOt4tFyHLxg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ssri": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "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/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/systeminformation": { + "version": "5.27.1", + "resolved": "https://registry.npmjs.org/systeminformation/-/systeminformation-5.27.1.tgz", + "integrity": "sha512-FgkVpT6GgATtNvADgtEzDxI/SVaBisfnQ4fmgQZhCJ4335noTgt9q6O81ioHwzs9HgnJaaFSdHSEMIkneZ55iA==", + "optional": true, + "os": [ + "darwin", + "linux", + "win32", + "freebsd", + "openbsd", + "netbsd", + "sunos", + "android" + ], + "bin": { + "systeminformation": "lib/cli.js" + }, + "engines": { + "node": ">=8.0.0" + }, + "funding": { + "type": "Buy me a coffee", + "url": "https://www.buymeacoffee.com/systeminfo" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar-fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", + "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "license": "ISC" + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "license": "MIT", + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tv4": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/tv4/-/tv4-1.3.0.tgz", + "integrity": "sha512-afizzfpJgvPr+eDkREK4MxJ/+r8nEEHcmitwgnPUqpaP+FpwQyadnxNoSACbgc/b1LsZYtODGoPiFxQrgJgjvw==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/tx2": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tx2/-/tx2-1.0.5.tgz", + "integrity": "sha512-sJ24w0y03Md/bxzK4FU8J8JveYYUbSs2FViLJ2D/8bytSiyPRbuE3DyL/9UKYXTZlV3yXq0L8GLlhobTnekCVg==", + "optional": true, + "dependencies": { + "json-stringify-safe": "^5.0.1" + } + }, + "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/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/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "license": "ISC", + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "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/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/validator": { + "version": "13.12.0", + "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", + "integrity": "sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==", + "engines": { + "node": ">= 0.10" + } + }, + "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==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vizion": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/vizion/-/vizion-2.2.1.tgz", + "integrity": "sha512-sfAcO2yeSU0CSPFI/DmZp3FsFE9T+8913nv1xWBOyzODv13fwkn6Vl7HqxGpkr9F608M+8SuFId3s+BlZqfXww==", + "dependencies": { + "async": "^2.6.3", + "git-node-fs": "^1.0.0", + "ini": "^1.3.5", + "js-git": "^0.7.8" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/vizion/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "license": "ISC", + "optional": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "license": "ISC", + "optional": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=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==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + } + } +} diff --git a/api.hyungi.net/node_modules/@gar/promisify/LICENSE.md b/api.hyungi.net/node_modules/@gar/promisify/LICENSE.md new file mode 100644 index 0000000..64f7732 --- /dev/null +++ b/api.hyungi.net/node_modules/@gar/promisify/LICENSE.md @@ -0,0 +1,10 @@ +The MIT License (MIT) + +Copyright © 2020-2022 Michael Garvin + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + diff --git a/api.hyungi.net/node_modules/@gar/promisify/README.md b/api.hyungi.net/node_modules/@gar/promisify/README.md new file mode 100644 index 0000000..465c546 --- /dev/null +++ b/api.hyungi.net/node_modules/@gar/promisify/README.md @@ -0,0 +1,65 @@ +# @gar/promisify + +### Promisify an entire object or class instance + +This module leverages es6 Proxy and Reflect to promisify every function in an +object or class instance. + +It assumes the callback that the function is expecting is the last +parameter, and that it is an error-first callback with only one value, +i.e. `(err, value) => ...`. This mirrors node's `util.promisify` method. + +In order that you can use it as a one-stop-shop for all your promisify +needs, you can also pass it a function. That function will be +promisified as normal using node's built-in `util.promisify` method. + +[node's custom promisified +functions](https://nodejs.org/api/util.html#util_custom_promisified_functions) +will also be mirrored, further allowing this to be a drop-in replacement +for the built-in `util.promisify`. + +### Examples + +Promisify an entire object + +```javascript + +const promisify = require('@gar/promisify') + +class Foo { + constructor (attr) { + this.attr = attr + } + + double (input, cb) { + cb(null, input * 2) + } + +const foo = new Foo('baz') +const promisified = promisify(foo) + +console.log(promisified.attr) +console.log(await promisified.double(1024)) +``` + +Promisify a function + +```javascript + +const promisify = require('@gar/promisify') + +function foo (a, cb) { + if (a !== 'bad') { + return cb(null, 'ok') + } + return cb('not ok') +} + +const promisified = promisify(foo) + +// This will resolve to 'ok' +promisified('good') + +// this will reject +promisified('bad') +``` diff --git a/api.hyungi.net/node_modules/@gar/promisify/index.js b/api.hyungi.net/node_modules/@gar/promisify/index.js new file mode 100644 index 0000000..d0be95f --- /dev/null +++ b/api.hyungi.net/node_modules/@gar/promisify/index.js @@ -0,0 +1,36 @@ +'use strict' + +const { promisify } = require('util') + +const handler = { + get: function (target, prop, receiver) { + if (typeof target[prop] !== 'function') { + return target[prop] + } + if (target[prop][promisify.custom]) { + return function () { + return Reflect.get(target, prop, receiver)[promisify.custom].apply(target, arguments) + } + } + return function () { + return new Promise((resolve, reject) => { + Reflect.get(target, prop, receiver).apply(target, [...arguments, function (err, result) { + if (err) { + return reject(err) + } + resolve(result) + }]) + }) + } + } +} + +module.exports = function (thingToPromisify) { + if (typeof thingToPromisify === 'function') { + return promisify(thingToPromisify) + } + if (typeof thingToPromisify === 'object') { + return new Proxy(thingToPromisify, handler) + } + throw new TypeError('Can only promisify functions or objects') +} diff --git a/api.hyungi.net/node_modules/@gar/promisify/package.json b/api.hyungi.net/node_modules/@gar/promisify/package.json new file mode 100644 index 0000000..d0ce69b --- /dev/null +++ b/api.hyungi.net/node_modules/@gar/promisify/package.json @@ -0,0 +1,32 @@ +{ + "name": "@gar/promisify", + "version": "1.1.3", + "description": "Promisify an entire class or object", + "main": "index.js", + "repository": { + "type": "git", + "url": "https://github.com/wraithgar/gar-promisify.git" + }, + "scripts": { + "lint": "standard", + "lint:fix": "standard --fix", + "test": "lab -a @hapi/code -t 100", + "posttest": "npm run lint" + }, + "files": [ + "index.js" + ], + "keywords": [ + "promisify", + "all", + "class", + "object" + ], + "author": "Gar ", + "license": "MIT", + "devDependencies": { + "@hapi/code": "^8.0.1", + "@hapi/lab": "^24.1.0", + "standard": "^16.0.3" + } +} diff --git a/api.hyungi.net/node_modules/@hexagon/base64/LICENSE b/api.hyungi.net/node_modules/@hexagon/base64/LICENSE new file mode 100644 index 0000000..92787a9 --- /dev/null +++ b/api.hyungi.net/node_modules/@hexagon/base64/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2021-2022 Hexagon + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + diff --git a/api.hyungi.net/node_modules/@hexagon/base64/README.md b/api.hyungi.net/node_modules/@hexagon/base64/README.md new file mode 100644 index 0000000..46eb1a1 --- /dev/null +++ b/api.hyungi.net/node_modules/@hexagon/base64/README.md @@ -0,0 +1,69 @@ +

+ @hexagon/base64
+
Probably the only JavaScript base64 library you'll ever need!
+

+ +# @hexagon/base64 + +Encode, decode and validate base64/base64url to string/arraybuffer and vice-versa. Works in Node, Deno and browser. + +[![Node.js CI](https://github.com/Hexagon/base64/actions/workflows/node.js.yml/badge.svg)](https://github.com/Hexagon/base64/actions/workflows/node.js.yml) [![Deno CI](https://github.com/Hexagon/base64/actions/workflows/deno.yml/badge.svg)](https://github.com/Hexagon/base64/actions/workflows/deno.yml) +[![npm version](https://badge.fury.io/js/@hexagon%2Fbase64.svg)](https://badge.fury.io/js/@hexagon%2Fbase64) [![NPM Downloads](https://img.shields.io/npm/dm/@hexagon/base64.svg)](https://www.npmjs.org/package/@hexagon/base64) [![jsdelivr](https://data.jsdelivr.com/v1/package/npm/@hexagon/base64/badge?style=rounded)](https://www.jsdelivr.com/package/npm/@hexagon/base64) [![Codacy Badge](https://app.codacy.com/project/badge/Grade/4978bdbf495941c087ecb32b120f28ff)](https://www.codacy.com/gh/Hexagon/base64/dashboard?utm_source=github.com&utm_medium=referral&utm_content=Hexagon/base64&utm_campaign=Badge_Grade) +[![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/Hexagon/base64/blob/master/LICENSE) + +* Supports regular base64 and base64url +* Convert to/from string or arraybuffer +* Validate / identify base64 and base64url +* Works in Node.js >=4.0 (both require and import). +* Works in Deno >=1.16. +* Works in browsers as standalone, UMD or ES-module. +* Includes [TypeScript](https://www.typescriptlang.org/) typings. + + +```javascript +// Encode string as regular base64 +const example1enc = base64.fromString("Hellö Wörld, how are you doing today?!"); +console.log(example1enc); +// > SGVsbMO2IFfDtnJsZCwgaG93IGFyZSB5b3UgZG9pbmcgdG9kYXk/IQ== + +// Decode string as regular base64 +const example1dec = base64.toString("SGVsbMO2IFfDtnJsZCwgaG93IGFyZSB5b3UgZG9pbmcgdG9kYXk/IQ=="); +console.log(example1dec); +// > Hellö Wörld, how are you doing today?! +``` + +Full documentation available at [base64.56k.guru](https://base64.56k.guru) + +## Quick Installation + +Node.js: `npm install @hexagon/base64 --save` + +Deno: `import base64 from "https://deno.land/x/b64@1.1.28/src/base64.js";` + +For browser/cdn usage, refer to the documentation. + +### Quick API + + - __fromArrayBuffer(buffer, urlMode)__ - Encodes `ArrayBuffer` into base64 or base64url if urlMode(optional) is true + - __toArrayBuffer(str, urlMode)__ - Decodes base64url string (or base64url string if urlMode is true) to `ArrayBuffer` + + - __fromString(str, urlMode)__ - Encodes `String` into base64 string(base64url string if urlMode is true) + - __toString(str, urlMode)__ - Decodes base64 or base64url string to `String` + +- __validate(str, urlMode)__ - Returns true if `String` str is valid base64/base64 dependending on urlMode + +## Contributing + +See [Contribution Guide](https://base64.56k.guru/contributing.html) + +## Donations + +If you found this library helpful and wish to support its development, consider making a donation through [Hexagon's GitHub Sponsors page](https://github.com/sponsors/hexagon). Your generosity ensures the library's continued development and maintenance. + +### Contributors + +The underlying code is loosely based on [github.com/niklasvh/base64-arraybuffer](https://github.com/niklasvh/base64-arraybuffer) + +## License + +MIT diff --git a/api.hyungi.net/node_modules/@hexagon/base64/SECURITY.md b/api.hyungi.net/node_modules/@hexagon/base64/SECURITY.md new file mode 100644 index 0000000..315b843 --- /dev/null +++ b/api.hyungi.net/node_modules/@hexagon/base64/SECURITY.md @@ -0,0 +1,12 @@ +# Security Policy + +## Supported Versions + +| Version | Supported | +| ------- | ------------------ | +| 4.0.x | :white_check_mark: | +| < 4.0 | :x: | + +## Reporting a Vulnerability + +Email hexagon@56k.guru. Do NOT report an issue, we will have a look at it asap. diff --git a/api.hyungi.net/node_modules/@hexagon/base64/dist/base64.cjs b/api.hyungi.net/node_modules/@hexagon/base64/dist/base64.cjs new file mode 100644 index 0000000..a3276d4 --- /dev/null +++ b/api.hyungi.net/node_modules/@hexagon/base64/dist/base64.cjs @@ -0,0 +1,198 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.base64 = factory()); +})(this, (function () { 'use strict'; + + /* ------------------------------------------------------------------------------------ + + base64 - MIT License - Hexagon + + ------------------------------------------------------------------------------------ + + License: + + Copyright (c) 2021 Hexagon + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + + ------------------------------------------------------------------------------------ */ + + const + // Regular base64 characters + chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", + + // Base64url characters + charsUrl = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", + + genLookup = (target) => { + const lookupTemp = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256); + const len = chars.length; + for (let i = 0; i < len; i++) { + lookupTemp[target.charCodeAt(i)] = i; + } + return lookupTemp; + }, + + // Use a lookup table to find the index. + lookup = genLookup(chars), + lookupUrl = genLookup(charsUrl); + + /** + * Pre-calculated regexes for validating base64 and base64url + */ + const base64UrlPattern = /^[-A-Za-z0-9\-_]*$/; + const base64Pattern = /^[-A-Za-z0-9+/]*={0,3}$/; + + /** + * @namespace base64 + */ + const base64 = {}; + + /** + * Convenience function for converting a base64 encoded string to an ArrayBuffer instance + * @public + * + * @param {string} data - Base64 representation of data + * @param {boolean} [urlMode] - If set to true, URL mode string will be expected + * @returns {ArrayBuffer} - Decoded data + */ + base64.toArrayBuffer = (data, urlMode) => { + const + len = data.length; + let bufferLength = data.length * 0.75, + i, + p = 0, + encoded1, + encoded2, + encoded3, + encoded4; + + if (data[data.length - 1] === "=") { + bufferLength--; + if (data[data.length - 2] === "=") { + bufferLength--; + } + } + + const + arraybuffer = new ArrayBuffer(bufferLength), + bytes = new Uint8Array(arraybuffer), + target = urlMode ? lookupUrl : lookup; + + for (i = 0; i < len; i += 4) { + encoded1 = target[data.charCodeAt(i)]; + encoded2 = target[data.charCodeAt(i + 1)]; + encoded3 = target[data.charCodeAt(i + 2)]; + encoded4 = target[data.charCodeAt(i + 3)]; + + bytes[p++] = (encoded1 << 2) | (encoded2 >> 4); + bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2); + bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63); + } + + return arraybuffer; + + }; + + /** + * Convenience function for creating a base64 encoded string from an ArrayBuffer instance + * @public + * + * @param {ArrayBuffer} arrBuf - ArrayBuffer to be encoded + * @param {boolean} [urlMode] - If set to true, URL mode string will be returned + * @returns {string} - Base64 representation of data + */ + base64.fromArrayBuffer = (arrBuf, urlMode) => { + const bytes = new Uint8Array(arrBuf); + let + i, + result = ""; + + const + len = bytes.length, + target = urlMode ? charsUrl : chars; + + for (i = 0; i < len; i += 3) { + result += target[bytes[i] >> 2]; + result += target[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)]; + result += target[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)]; + result += target[bytes[i + 2] & 63]; + } + + const remainder = len % 3; + if (remainder === 2) { + result = result.substring(0, result.length - 1) + (urlMode ? "" : "="); + } else if (remainder === 1) { + result = result.substring(0, result.length - 2) + (urlMode ? "" : "=="); + } + + return result; + + }; + + /** + * Convenience function for converting base64 to string + * @public + * + * @param {string} str - Base64 encoded string to be decoded + * @param {boolean} [urlMode] - If set to true, URL mode string will be expected + * @returns {string} - Decoded string + */ + base64.toString = (str, urlMode) => { + return new TextDecoder().decode(base64.toArrayBuffer(str, urlMode)); + }; + + /** + * Convenience function for converting a javascript string to base64 + * @public + * + * @param {string} str - String to be converted to base64 + * @param {boolean} [urlMode] - If set to true, URL mode string will be returned + * @returns {string} - Base64 encoded string + */ + base64.fromString = (str, urlMode) => { + return base64.fromArrayBuffer(new TextEncoder().encode(str), urlMode); + }; + + /** + * Function to validate base64 + * @public + * @param {string} encoded - Base64 or Base64url encoded data + * @param {boolean} [urlMode] - If set to true, base64url will be expected + * @returns {boolean} - Valid base64/base64url? + */ + base64.validate = (encoded, urlMode) => { + + // Bail out if not string + if (!(typeof encoded === "string" || encoded instanceof String)) { + return false; + } + + // Go on validate + try { + return urlMode ? base64UrlPattern.test(encoded) : base64Pattern.test(encoded); + } catch (_e) { + return false; + } + }; + + base64.base64 = base64; + + return base64; + +})); diff --git a/api.hyungi.net/node_modules/@hexagon/base64/dist/base64.min.js b/api.hyungi.net/node_modules/@hexagon/base64/dist/base64.min.js new file mode 100644 index 0000000..361148c --- /dev/null +++ b/api.hyungi.net/node_modules/@hexagon/base64/dist/base64.min.js @@ -0,0 +1 @@ +(function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory():typeof define==="function"&&define.amd?define(factory):(global=typeof globalThis!=="undefined"?globalThis:global||self,global.base64=factory())})(this,function(){"use strict";const chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",charsUrl="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",genLookup=target=>{const lookupTemp=typeof Uint8Array==="undefined"?[]:new Uint8Array(256);const len=chars.length;for(let i=0;i{const len=data.length;let bufferLength=data.length*.75,i,p=0,encoded1,encoded2,encoded3,encoded4;if(data[data.length-1]==="="){bufferLength--;if(data[data.length-2]==="="){bufferLength--}}const arraybuffer=new ArrayBuffer(bufferLength),bytes=new Uint8Array(arraybuffer),target=urlMode?lookupUrl:lookup;for(i=0;i>4;bytes[p++]=(encoded2&15)<<4|encoded3>>2;bytes[p++]=(encoded3&3)<<6|encoded4&63}return arraybuffer};base64.fromArrayBuffer=(arrBuf,urlMode)=>{const bytes=new Uint8Array(arrBuf);let i,result="";const len=bytes.length,target=urlMode?charsUrl:chars;for(i=0;i>2];result+=target[(bytes[i]&3)<<4|bytes[i+1]>>4];result+=target[(bytes[i+1]&15)<<2|bytes[i+2]>>6];result+=target[bytes[i+2]&63]}const remainder=len%3;if(remainder===2){result=result.substring(0,result.length-1)+(urlMode?"":"=")}else if(remainder===1){result=result.substring(0,result.length-2)+(urlMode?"":"==")}return result};base64.toString=(str,urlMode)=>{return(new TextDecoder).decode(base64.toArrayBuffer(str,urlMode))};base64.fromString=(str,urlMode)=>{return base64.fromArrayBuffer((new TextEncoder).encode(str),urlMode)};base64.validate=(encoded,urlMode)=>{if(!(typeof encoded==="string"||encoded instanceof String)){return false}try{return urlMode?base64UrlPattern.test(encoded):base64Pattern.test(encoded)}catch(_e){return false}};base64.base64=base64;return base64}); \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@hexagon/base64/dist/base64.min.js.map b/api.hyungi.net/node_modules/@hexagon/base64/dist/base64.min.js.map new file mode 100644 index 0000000..f119264 --- /dev/null +++ b/api.hyungi.net/node_modules/@hexagon/base64/dist/base64.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["dist/base64.cjs"],"names":["global","factory","exports","module","define","amd","globalThis","self","base64","this","chars","charsUrl","genLookup","lookupTemp","Uint8Array","len","length","let","i","target","charCodeAt","lookup","lookupUrl","base64UrlPattern","base64Pattern","toArrayBuffer","data","urlMode","bufferLength","p","encoded1","encoded2","encoded3","encoded4","arraybuffer","ArrayBuffer","bytes","fromArrayBuffer","arrBuf","result","remainder","substring","toString","str","TextDecoder","decode","fromString","TextEncoder","encode","validate","encoded","String","test","_e"],"mappings":"CAAA,SAAWA,OAAQC,SAClB,OAAOC,UAAY,UAAY,OAAOC,SAAW,YAAcA,OAAOD,QAAUD,QAAQ,EACxF,OAAOG,SAAW,YAAcA,OAAOC,IAAMD,OAAOH,OAAO,GAC1DD,OAAS,OAAOM,aAAe,YAAcA,WAAaN,QAAUO,KAAMP,OAAOQ,OAASP,QAAQ,EACnG,GAAEQ,KAAM,WAAe,aA8BvB,MAECC,MAAQ,mEAGRC,SAAW,mEAEXC,UAAY,SACX,MAAMC,WAAa,OAAOC,aAAe,YAAc,GAAK,IAAIA,WAAW,GAAG,EAC9E,MAAMC,IAAML,MAAMM,OAClB,IAAKC,IAAIC,EAAI,EAAGA,EAAIH,IAAKG,CAAC,GAAI,CAC7BL,WAAWM,OAAOC,WAAWF,CAAC,GAAKA,CACpC,CACA,OAAOL,UACR,EAGAQ,OAAST,UAAUF,KAAK,EACxBY,UAAYV,UAAUD,QAAQ,EAK/B,MAAMY,iBAAmB,qBACzB,MAAMC,cAAgB,0BAKtB,MAAMhB,OAAS,GAUfA,OAAOiB,cAAgB,CAACC,KAAMC,WAC7B,MACCZ,IAAMW,KAAKV,OACZC,IAAIW,aAAeF,KAAKV,OAAS,IAChCE,EACAW,EAAI,EACJC,SACAC,SACAC,SACAC,SAED,GAAIP,KAAKA,KAAKV,OAAS,KAAO,IAAK,CAClCY,YAAY,GACZ,GAAIF,KAAKA,KAAKV,OAAS,KAAO,IAAK,CAClCY,YAAY,EACb,CACD,CAEA,MACCM,YAAc,IAAIC,YAAYP,YAAY,EAC1CQ,MAAQ,IAAItB,WAAWoB,WAAW,EAClCf,OAASQ,QAAUL,UAAYD,OAEhC,IAAKH,EAAI,EAAGA,EAAIH,IAAKG,GAAK,EAAG,CAC5BY,SAAWX,OAAOO,KAAKN,WAAWF,CAAC,GACnCa,SAAWZ,OAAOO,KAAKN,WAAWF,EAAI,CAAC,GACvCc,SAAWb,OAAOO,KAAKN,WAAWF,EAAI,CAAC,GACvCe,SAAWd,OAAOO,KAAKN,WAAWF,EAAI,CAAC,GAEvCkB,MAAMP,CAAC,IAAOC,UAAY,EAAMC,UAAY,EAC5CK,MAAMP,CAAC,KAAQE,SAAW,KAAO,EAAMC,UAAY,EACnDI,MAAMP,CAAC,KAAQG,SAAW,IAAM,EAAMC,SAAW,EAClD,CAEA,OAAOC,WAER,EAUA1B,OAAO6B,gBAAkB,CAACC,OAAQX,WACjC,MAAMS,MAAQ,IAAItB,WAAWwB,MAAM,EACnCrB,IACCC,EACAqB,OAAS,GAEV,MACCxB,IAAMqB,MAAMpB,OACZG,OAASQ,QAAUhB,SAAWD,MAE/B,IAAKQ,EAAI,EAAGA,EAAIH,IAAKG,GAAK,EAAG,CAC5BqB,QAAUpB,OAAOiB,MAAMlB,IAAM,GAC7BqB,QAAUpB,QAASiB,MAAMlB,GAAK,IAAM,EAAMkB,MAAMlB,EAAI,IAAM,GAC1DqB,QAAUpB,QAASiB,MAAMlB,EAAI,GAAK,KAAO,EAAMkB,MAAMlB,EAAI,IAAM,GAC/DqB,QAAUpB,OAAOiB,MAAMlB,EAAI,GAAK,GACjC,CAEA,MAAMsB,UAAYzB,IAAM,EACxB,GAAIyB,YAAc,EAAG,CACpBD,OAASA,OAAOE,UAAU,EAAGF,OAAOvB,OAAS,CAAC,GAAKW,QAAU,GAAK,IACnE,MAAO,GAAIa,YAAc,EAAG,CAC3BD,OAASA,OAAOE,UAAU,EAAGF,OAAOvB,OAAS,CAAC,GAAKW,QAAU,GAAK,KACnE,CAEA,OAAOY,MAER,EAUA/B,OAAOkC,SAAW,CAACC,IAAKhB,WACvB,OAAO,IAAIiB,aAAcC,OAAOrC,OAAOiB,cAAckB,IAAKhB,OAAO,CAAC,CACnE,EAUAnB,OAAOsC,WAAa,CAACH,IAAKhB,WACzB,OAAOnB,OAAO6B,iBAAgB,IAAIU,aAAcC,OAAOL,GAAG,EAAGhB,OAAO,CACrE,EASAnB,OAAOyC,SAAW,CAACC,QAASvB,WAG3B,GAAI,EAAE,OAAOuB,UAAY,UAAYA,mBAAmBC,QAAS,CAChE,OAAO,KACR,CAGA,IACC,OAAOxB,QAAUJ,iBAAiB6B,KAAKF,OAAO,EAAI1B,cAAc4B,KAAKF,OAAO,CAG7E,CAFE,MAAOG,IACR,OAAO,KACR,CACD,EAEA7C,OAAOA,OAASA,OAEhB,OAAOA,MAEP,CAAC"} \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@hexagon/base64/dist/base64.min.mjs b/api.hyungi.net/node_modules/@hexagon/base64/dist/base64.min.mjs new file mode 100644 index 0000000..7fa07b5 --- /dev/null +++ b/api.hyungi.net/node_modules/@hexagon/base64/dist/base64.min.mjs @@ -0,0 +1 @@ +const chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",charsUrl="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",genLookup=target=>{const lookupTemp=typeof Uint8Array==="undefined"?[]:new Uint8Array(256);const len=chars.length;for(let i=0;i{const len=data.length;let bufferLength=data.length*.75,i,p=0,encoded1,encoded2,encoded3,encoded4;if(data[data.length-1]==="="){bufferLength--;if(data[data.length-2]==="="){bufferLength--}}const arraybuffer=new ArrayBuffer(bufferLength),bytes=new Uint8Array(arraybuffer),target=urlMode?lookupUrl:lookup;for(i=0;i>4;bytes[p++]=(encoded2&15)<<4|encoded3>>2;bytes[p++]=(encoded3&3)<<6|encoded4&63}return arraybuffer};base64.fromArrayBuffer=(arrBuf,urlMode)=>{const bytes=new Uint8Array(arrBuf);let i,result="";const len=bytes.length,target=urlMode?charsUrl:chars;for(i=0;i>2];result+=target[(bytes[i]&3)<<4|bytes[i+1]>>4];result+=target[(bytes[i+1]&15)<<2|bytes[i+2]>>6];result+=target[bytes[i+2]&63]}const remainder=len%3;if(remainder===2){result=result.substring(0,result.length-1)+(urlMode?"":"=")}else if(remainder===1){result=result.substring(0,result.length-2)+(urlMode?"":"==")}return result};base64.toString=(str,urlMode)=>{return(new TextDecoder).decode(base64.toArrayBuffer(str,urlMode))};base64.fromString=(str,urlMode)=>{return base64.fromArrayBuffer((new TextEncoder).encode(str),urlMode)};base64.validate=(encoded,urlMode)=>{if(!(typeof encoded==="string"||encoded instanceof String)){return false}try{return urlMode?base64UrlPattern.test(encoded):base64Pattern.test(encoded)}catch(_e){return false}};base64.base64=base64;export{base64,base64 as default}; \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@hexagon/base64/dist/base64.min.mjs.map b/api.hyungi.net/node_modules/@hexagon/base64/dist/base64.min.mjs.map new file mode 100644 index 0000000..f19f5ff --- /dev/null +++ b/api.hyungi.net/node_modules/@hexagon/base64/dist/base64.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"sources":["dist/base64.mjs"],"names":["chars","charsUrl","genLookup","lookupTemp","Uint8Array","len","length","let","i","target","charCodeAt","lookup","lookupUrl","base64UrlPattern","base64Pattern","base64","toArrayBuffer","data","urlMode","bufferLength","p","encoded1","encoded2","encoded3","encoded4","arraybuffer","ArrayBuffer","bytes","fromArrayBuffer","arrBuf","result","remainder","substring","toString","str","TextDecoder","decode","fromString","TextEncoder","encode","validate","encoded","String","test","_e"],"mappings":"AA4BA,MAECA,MAAQ,mEAGRC,SAAW,mEAEXC,UAAY,SACX,MAAMC,WAAa,OAAOC,aAAe,YAAc,GAAK,IAAIA,WAAW,GAAG,EAC9E,MAAMC,IAAML,MAAMM,OAClB,IAAKC,IAAIC,EAAI,EAAGA,EAAIH,IAAKG,CAAC,GAAI,CAC7BL,WAAWM,OAAOC,WAAWF,CAAC,GAAKA,CACpC,CACA,OAAOL,UACR,EAGAQ,OAAST,UAAUF,KAAK,EACxBY,UAAYV,UAAUD,QAAQ,EAK/B,MAAMY,iBAAmB,qBACzB,MAAMC,cAAgB,0BAKtB,MAAMC,OAAS,GAUfA,OAAOC,cAAgB,CAACC,KAAMC,WAC7B,MACCb,IAAMY,KAAKX,OACZC,IAAIY,aAAeF,KAAKX,OAAS,IAChCE,EACAY,EAAI,EACJC,SACAC,SACAC,SACAC,SAED,GAAIP,KAAKA,KAAKX,OAAS,KAAO,IAAK,CAClCa,YAAY,GACZ,GAAIF,KAAKA,KAAKX,OAAS,KAAO,IAAK,CAClCa,YAAY,EACb,CACD,CAEA,MACCM,YAAc,IAAIC,YAAYP,YAAY,EAC1CQ,MAAQ,IAAIvB,WAAWqB,WAAW,EAClChB,OAASS,QAAUN,UAAYD,OAEhC,IAAKH,EAAI,EAAGA,EAAIH,IAAKG,GAAK,EAAG,CAC5Ba,SAAWZ,OAAOQ,KAAKP,WAAWF,CAAC,GACnCc,SAAWb,OAAOQ,KAAKP,WAAWF,EAAI,CAAC,GACvCe,SAAWd,OAAOQ,KAAKP,WAAWF,EAAI,CAAC,GACvCgB,SAAWf,OAAOQ,KAAKP,WAAWF,EAAI,CAAC,GAEvCmB,MAAMP,CAAC,IAAOC,UAAY,EAAMC,UAAY,EAC5CK,MAAMP,CAAC,KAAQE,SAAW,KAAO,EAAMC,UAAY,EACnDI,MAAMP,CAAC,KAAQG,SAAW,IAAM,EAAMC,SAAW,EAClD,CAEA,OAAOC,WAER,EAUAV,OAAOa,gBAAkB,CAACC,OAAQX,WACjC,MAAMS,MAAQ,IAAIvB,WAAWyB,MAAM,EACnCtB,IACCC,EACAsB,OAAS,GAEV,MACCzB,IAAMsB,MAAMrB,OACZG,OAASS,QAAUjB,SAAWD,MAE/B,IAAKQ,EAAI,EAAGA,EAAIH,IAAKG,GAAK,EAAG,CAC5BsB,QAAUrB,OAAOkB,MAAMnB,IAAM,GAC7BsB,QAAUrB,QAASkB,MAAMnB,GAAK,IAAM,EAAMmB,MAAMnB,EAAI,IAAM,GAC1DsB,QAAUrB,QAASkB,MAAMnB,EAAI,GAAK,KAAO,EAAMmB,MAAMnB,EAAI,IAAM,GAC/DsB,QAAUrB,OAAOkB,MAAMnB,EAAI,GAAK,GACjC,CAEA,MAAMuB,UAAY1B,IAAM,EACxB,GAAI0B,YAAc,EAAG,CACpBD,OAASA,OAAOE,UAAU,EAAGF,OAAOxB,OAAS,CAAC,GAAKY,QAAU,GAAK,IACnE,MAAO,GAAIa,YAAc,EAAG,CAC3BD,OAASA,OAAOE,UAAU,EAAGF,OAAOxB,OAAS,CAAC,GAAKY,QAAU,GAAK,KACnE,CAEA,OAAOY,MAER,EAUAf,OAAOkB,SAAW,CAACC,IAAKhB,WACvB,OAAO,IAAIiB,aAAcC,OAAOrB,OAAOC,cAAckB,IAAKhB,OAAO,CAAC,CACnE,EAUAH,OAAOsB,WAAa,CAACH,IAAKhB,WACzB,OAAOH,OAAOa,iBAAgB,IAAIU,aAAcC,OAAOL,GAAG,EAAGhB,OAAO,CACrE,EASAH,OAAOyB,SAAW,CAACC,QAASvB,WAG3B,GAAI,EAAE,OAAOuB,UAAY,UAAYA,mBAAmBC,QAAS,CAChE,OAAO,KACR,CAGA,IACC,OAAOxB,QAAUL,iBAAiB8B,KAAKF,OAAO,EAAI3B,cAAc6B,KAAKF,OAAO,CAG7E,CAFE,MAAOG,IACR,OAAO,KACR,CACD,EAEA7B,OAAOA,OAASA,cAEPA,OAAQA,iBAAmB"} \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@hexagon/base64/package.json b/api.hyungi.net/node_modules/@hexagon/base64/package.json new file mode 100644 index 0000000..cb62241 --- /dev/null +++ b/api.hyungi.net/node_modules/@hexagon/base64/package.json @@ -0,0 +1,73 @@ +{ + "name": "@hexagon/base64", + "version": "1.1.28", + "description": "Base64 and base64url to string or arraybuffer, and back. Node, Deno or browser.", + "author": "Hexagon ", + "contributors": [ + { + "name": "Niklas von Hertzen", + "email": "niklasvh@gmail.com", + "url": "https://hertzen.com" + } + ], + "homepage": "https://base64.56k.guru", + "repository": { + "type": "git", + "url": "https://github.com/hexagon/base64" + }, + "bugs": { + "url": "https://github.com/hexagon/base64/issues" + }, + "files": [ + "dist/*", + "src/*", + "types/*", + "SECURITY.md" + ], + "keywords": [ + "base64", + "base64url", + "parser", + "base64", + "isomorphic", + "arraybuffer", + "string" + ], + "scripts": { + "test": "uvu test test.base64.js", + "test:dist": "uvu test/node/js && npm run test:ts", + "test:coverage": "c8 --include=src npm test", + "test:lint": "eslint ./**/*.js ./**/*.cjs", + "test:lint:fix": "eslint --fix ./**/*.js ./**/*.cjs", + "test:ts": "tsc --strict --noEmit ./test/node/ts/basics.ts", + "build": "npm update && npm run build:precleanup && npm run test:lint && npm run build:typings && npm run build:dist && npm run build:minify && npm run build:cleanup && npm run test:coverage && npm run test:dist", + "build:ci": "npm run test:lint && npm run build:typings && npm run build:dist && npm run build:minify && npm run build:cleanup && npm run test:coverage && npm run test:dist", + "build:precleanup": "(rm -rf types/* || del /Q types\\*) && (rm -rf dist/* || del /Q dist\\*)", + "build:dist": "rollup -c ./rollup.config.js", + "build:minify": "uglifyjs dist/base64.cjs --source-map -o dist/base64.min.js && uglifyjs dist/base64.mjs --source-map -o dist/base64.min.mjs", + "build:typings": "tsc", + "build:cleanup": "(rm dist/base64.mjs || del dist\\base64.mjs)" + }, + "type": "module", + "main": "./dist/base64.cjs", + "browser": "./dist/base64.min.js", + "module": "./src/base64.js", + "types": "types/base64.single.d.ts", + "exports": { + ".": { + "import": "./src/base64.js", + "require": "./dist/base64.cjs", + "browser": "./dist/base64.min.js" + } + }, + "devDependencies": { + "c8": "^8.0.1", + "eslint": "^8.46.0", + "jsdoc": "^4.0.2", + "rollup": "^3.27.2", + "typescript": "^5.2.2", + "uglify-js": "^3.17.4", + "uvu": "^0.5.6" + }, + "license": "MIT" +} diff --git a/api.hyungi.net/node_modules/@hexagon/base64/src/base64.js b/api.hyungi.net/node_modules/@hexagon/base64/src/base64.js new file mode 100644 index 0000000..449e9d2 --- /dev/null +++ b/api.hyungi.net/node_modules/@hexagon/base64/src/base64.js @@ -0,0 +1,190 @@ +/* ------------------------------------------------------------------------------------ + + base64 - MIT License - Hexagon + + ------------------------------------------------------------------------------------ + + License: + + Copyright (c) 2021 Hexagon + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + + ------------------------------------------------------------------------------------ */ + +const + // Regular base64 characters + chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", + + // Base64url characters + charsUrl = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_", + + genLookup = (target) => { + const lookupTemp = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256); + const len = chars.length; + for (let i = 0; i < len; i++) { + lookupTemp[target.charCodeAt(i)] = i; + } + return lookupTemp; + }, + + // Use a lookup table to find the index. + lookup = genLookup(chars), + lookupUrl = genLookup(charsUrl); + +/** + * Pre-calculated regexes for validating base64 and base64url + */ +const base64UrlPattern = /^[-A-Za-z0-9\-_]*$/; +const base64Pattern = /^[-A-Za-z0-9+/]*={0,3}$/; + +/** + * @namespace base64 + */ +const base64 = {}; + +/** + * Convenience function for converting a base64 encoded string to an ArrayBuffer instance + * @public + * + * @param {string} data - Base64 representation of data + * @param {boolean} [urlMode] - If set to true, URL mode string will be expected + * @returns {ArrayBuffer} - Decoded data + */ +base64.toArrayBuffer = (data, urlMode) => { + const + len = data.length; + let bufferLength = data.length * 0.75, + i, + p = 0, + encoded1, + encoded2, + encoded3, + encoded4; + + if (data[data.length - 1] === "=") { + bufferLength--; + if (data[data.length - 2] === "=") { + bufferLength--; + } + } + + const + arraybuffer = new ArrayBuffer(bufferLength), + bytes = new Uint8Array(arraybuffer), + target = urlMode ? lookupUrl : lookup; + + for (i = 0; i < len; i += 4) { + encoded1 = target[data.charCodeAt(i)]; + encoded2 = target[data.charCodeAt(i + 1)]; + encoded3 = target[data.charCodeAt(i + 2)]; + encoded4 = target[data.charCodeAt(i + 3)]; + + bytes[p++] = (encoded1 << 2) | (encoded2 >> 4); + bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2); + bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63); + } + + return arraybuffer; + +}; + +/** + * Convenience function for creating a base64 encoded string from an ArrayBuffer instance + * @public + * + * @param {ArrayBuffer} arrBuf - ArrayBuffer to be encoded + * @param {boolean} [urlMode] - If set to true, URL mode string will be returned + * @returns {string} - Base64 representation of data + */ +base64.fromArrayBuffer = (arrBuf, urlMode) => { + const bytes = new Uint8Array(arrBuf); + let + i, + result = ""; + + const + len = bytes.length, + target = urlMode ? charsUrl : chars; + + for (i = 0; i < len; i += 3) { + result += target[bytes[i] >> 2]; + result += target[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)]; + result += target[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)]; + result += target[bytes[i + 2] & 63]; + } + + const remainder = len % 3; + if (remainder === 2) { + result = result.substring(0, result.length - 1) + (urlMode ? "" : "="); + } else if (remainder === 1) { + result = result.substring(0, result.length - 2) + (urlMode ? "" : "=="); + } + + return result; + +}; + +/** + * Convenience function for converting base64 to string + * @public + * + * @param {string} str - Base64 encoded string to be decoded + * @param {boolean} [urlMode] - If set to true, URL mode string will be expected + * @returns {string} - Decoded string + */ +base64.toString = (str, urlMode) => { + return new TextDecoder().decode(base64.toArrayBuffer(str, urlMode)); +}; + +/** + * Convenience function for converting a javascript string to base64 + * @public + * + * @param {string} str - String to be converted to base64 + * @param {boolean} [urlMode] - If set to true, URL mode string will be returned + * @returns {string} - Base64 encoded string + */ +base64.fromString = (str, urlMode) => { + return base64.fromArrayBuffer(new TextEncoder().encode(str), urlMode); +}; + +/** + * Function to validate base64 + * @public + * @param {string} encoded - Base64 or Base64url encoded data + * @param {boolean} [urlMode] - If set to true, base64url will be expected + * @returns {boolean} - Valid base64/base64url? + */ +base64.validate = (encoded, urlMode) => { + + // Bail out if not string + if (!(typeof encoded === "string" || encoded instanceof String)) { + return false; + } + + // Go on validate + try { + return urlMode ? base64UrlPattern.test(encoded) : base64Pattern.test(encoded); + } catch (_e) { + return false; + } +}; + +base64.base64 = base64; +export default base64; +export { base64 }; \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@hexagon/base64/src/base64.single.js b/api.hyungi.net/node_modules/@hexagon/base64/src/base64.single.js new file mode 100644 index 0000000..cd6b321 --- /dev/null +++ b/api.hyungi.net/node_modules/@hexagon/base64/src/base64.single.js @@ -0,0 +1,3 @@ +import base64 from "./base64.js"; + +export default base64; \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@hexagon/base64/types/base64.d.ts b/api.hyungi.net/node_modules/@hexagon/base64/types/base64.d.ts new file mode 100644 index 0000000..17f8343 --- /dev/null +++ b/api.hyungi.net/node_modules/@hexagon/base64/types/base64.d.ts @@ -0,0 +1,48 @@ +export default base64; +export namespace base64 { + /** + * Convenience function for converting a base64 encoded string to an ArrayBuffer instance + * @public + * + * @param {string} data - Base64 representation of data + * @param {boolean} [urlMode] - If set to true, URL mode string will be expected + * @returns {ArrayBuffer} - Decoded data + */ + export function toArrayBuffer(data: string, urlMode?: boolean): ArrayBuffer; + /** + * Convenience function for creating a base64 encoded string from an ArrayBuffer instance + * @public + * + * @param {ArrayBuffer} arrBuf - ArrayBuffer to be encoded + * @param {boolean} [urlMode] - If set to true, URL mode string will be returned + * @returns {string} - Base64 representation of data + */ + export function fromArrayBuffer(arrBuf: ArrayBuffer, urlMode?: boolean): string; + /** + * Convenience function for converting base64 to string + * @public + * + * @param {string} str - Base64 encoded string to be decoded + * @param {boolean} [urlMode] - If set to true, URL mode string will be expected + * @returns {string} - Decoded string + */ + export function toString(str: string, urlMode?: boolean): string; + /** + * Convenience function for converting a javascript string to base64 + * @public + * + * @param {string} str - String to be converted to base64 + * @param {boolean} [urlMode] - If set to true, URL mode string will be returned + * @returns {string} - Base64 encoded string + */ + export function fromString(str: string, urlMode?: boolean): string; + /** + * Function to validate base64 + * @public + * @param {string} encoded - Base64 or Base64url encoded data + * @param {boolean} [urlMode] - If set to true, base64url will be expected + * @returns {boolean} - Valid base64/base64url? + */ + export function validate(encoded: string, urlMode?: boolean): boolean; + export { base64 }; +} diff --git a/api.hyungi.net/node_modules/@hexagon/base64/types/base64.single.d.ts b/api.hyungi.net/node_modules/@hexagon/base64/types/base64.single.d.ts new file mode 100644 index 0000000..6f08cbf --- /dev/null +++ b/api.hyungi.net/node_modules/@hexagon/base64/types/base64.single.d.ts @@ -0,0 +1,2 @@ +export default base64; +import base64 from "./base64.js"; diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/LICENSE b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/LICENSE new file mode 100644 index 0000000..6c1caca --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Levi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/README.md b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/README.md new file mode 100644 index 0000000..9687527 --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/README.md @@ -0,0 +1,81 @@ +# Tiny CBOR + +[![](https://img.shields.io/github/actions/workflow/status/levischuck/tiny-cbor/build.yaml?branch=main&style=flat-square)](https://github.com/LeviSchuck/tiny-cbor/actions) +[![](https://img.shields.io/codecov/c/gh/levischuck/tiny-cbor?style=flat-square)](https://codecov.io/gh/levischuck/tiny-cbor) +[![](https://img.shields.io/github/v/tag/levischuck/tiny-cbor?label=npm&logo=npm&style=flat-square)](https://www.npmjs.com/package/@levischuck/tiny-cbor) +[![](https://img.shields.io/jsr/v/%40levischuck/tiny-cbor?style=flat-square&logo=jsr&label=JSR)](https://jsr.io/@levischuck/tiny-cbor) +[![](https://img.shields.io/github/license/levischuck/tiny-cbor?style=flat-square)](https://github.com/LeviSchuck/tiny-cbor/blob/main/LICENSE.txt) +![](https://img.shields.io/bundlephobia/min/%40levischuck/tiny-cbor?style=flat-square) + +This minimal generic library decodes and encodes most useful CBOR structures +into simple JavaScript structures: + +- Maps with keys as `string`s or `number`s with `CBORType` values as a `Map` +- Arrays of `CBORType` values +- integers as `number`s +- float32 and float64 as `number`s +- float16 `NaN`, `Infinity`, `-Infinity` +- `string`s +- byte strings as `Uint8Array` +- booleans +- `null` and `undefined` +- tags as `CBORTag(tag, value)` + +## Limitations + +This implementation does not support: + +- indefinite length maps, arrays, text strings, or byte strings. +- half precision floating point numbers +- integers outside the range of `[-9007199254740991, 9007199254740991]`, see + [Number.MAX_SAFE_INTEGER](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER) +- native output to JSON +- does not support generic objects, only `Map`s + +This implementation has the following constraints: + +- Map keys may only be strings or numbers +- Tags are not interpreted + +## Behavior + +Maps that have duplicate keys will throw an error during decoding. Decoding data +that is incomplete will throw an error during decoding. + +## Example + +```ts +// NPM +// import { decodeCBOR } from "@levischuck/tiny-cbor"; +// or JSR +// import { decodeCBOR } from "jsr:@levischuck/tiny-cbor"; +import { decodeCBOR } from "./index.ts"; +// Get your bytes somehow, directly or with decodeBase64 / decodeHex (available through @levischuck/tiny-encodings) +const HELLO_WORLD_BYTES = new Uint8Array([ + 107, // String wih length 11 + 104, // h + 101, // e + 108, // l + 108, // l + 111, // o + 32, // Space + 119, // w + 111, // o + 114, // r + 108, // l + 100, // d +]); +const helloWorld = decodeCBOR(HELLO_WORLD_BYTES); +if ("hello world" == helloWorld) { + console.log("Success!"); +} +``` + +## Where to get it + +This library is available on +[NPM](https://www.npmjs.com/package/@levischuck/tiny-cbor) and +[JSR](https://jsr.io/@levischuck/tiny-cbor). + +This library is no longer automatically published to Deno's Third Party Modules. +Newer versions may appear on deno.land/x, but do not work. diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/cbor/cbor.d.ts b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/cbor/cbor.d.ts new file mode 100644 index 0000000..ab9189e --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/cbor/cbor.d.ts @@ -0,0 +1,101 @@ +/** + * A value which is wrapped with a CBOR Tag. + * Several tags are registered with defined meanings like 0 for a date string. + * These meanings are **not interpreted** when decoded or encoded. + * + * This class is an immutable record. + * If the tag number or value needs to change, then construct a new tag + */ +export declare class CBORTag { + private tagId; + private tagValue; + /** + * Wrap a value with a tag number. + * When encoded, this tag will be attached to the value. + * + * @param tag Tag number + * @param value Wrapped value + */ + constructor(tag: number, value: CBORType); + /** + * Read the tag number + */ + get tag(): number; + /** + * Read the value + */ + get value(): CBORType; +} +/** + * Supported types which are encodable and decodable with tiny CBOR. + * Note that plain javascript objects are omitted. + */ +export type CBORType = number | bigint | string | Uint8Array | boolean | null | undefined | CBORType[] | CBORTag | Map; +/** + * Like {decodeCBOR}, but the length of the data is unknown and there is likely + * more -- possibly unrelated non-CBOR -- data afterwards. + * + * Examples: + * + * ```ts + * import {decodePartialCBOR} from './cbor.ts' + * decodePartialCBOR(new Uint8Array([1, 2, 245, 3, 4]), 2) + * // returns [true, 1] + * // It did not decode the leading [1, 2] or trailing [3, 4] + * ``` + * + * @param data a data stream to read data from + * @param index where to start reading in the data stream + * @returns a tuple of the value followed by bytes read. + * @throws {Error} + * When the data stream ends early or the CBOR data is not well formed + */ +export declare function decodePartialCBOR(data: DataView | Uint8Array | ArrayBuffer, index: number): [CBORType, number]; +/** + * Decode CBOR data from a binary stream + * + * The entire data stream from [0, length) will be consumed. + * If you require a partial decoding, see {decodePartialCBOR}. + * + * Examples: + * + * ```ts + * import {decodeCBOR, CBORTag, CBORType} from './cbor.ts' + * decodeCBOR(new Uint8Array([162, 99, 107, 101, 121, 101, 118, 97, 108, 117, 101, 1, 109, 97, 110, 111, 116, 104, 101, 114, 32, 118, 97, 108, 117, 101])); + * // returns new Map([ + * // ["key", "value"], + * // [1, "another value"] + * // ]); + * + * const taggedItem = new Uint8Array([217, 4, 210, 101, 104, 101, 108, 108, 111]); + * decodeCBOR(new DataView(taggedItem.buffer)) + * // returns new CBORTag(1234, "hello") + * ``` + * + * @param data a data stream, multiple types are supported + * @returns + */ +export declare function decodeCBOR(data: DataView | Uint8Array | ArrayBuffer): CBORType; +/** + * Encode a supported structure to a CBOR byte string. + * + * Example: + * + * ```ts + * import {encodeCBOR, CBORType, CBORTag} from './cbor.ts' + * encodeCBOR(new Map([ + * ["key", "value"], + * [1, "another value"] + * ])); + * // returns new Uint8Array([162, 99, 107, 101, 121, 101, 118, 97, 108, 117, 101, 1, 109, 97, 110, 111, 116, 104, 101, 114, 32 118, 97, 108, 117, 101]) + * + * encodeCBOR(new CBORTag(1234, "hello")) + * // returns new UInt8Array([217, 4, 210, 101, 104, 101, 108, 108, 111]) + * ``` + * + * @param data Data to encode + * @returns A byte string as a Uint8Array + * @throws Error + * if unsupported data is found during encoding + */ +export declare function encodeCBOR(data: CBORType): Uint8Array; diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/cbor/cbor.js b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/cbor/cbor.js new file mode 100644 index 0000000..38b2f22 --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/cbor/cbor.js @@ -0,0 +1,440 @@ +import { decodeLength, encodeLength, MAJOR_TYPE_ARRAY, MAJOR_TYPE_BYTE_STRING, MAJOR_TYPE_MAP, MAJOR_TYPE_NEGATIVE_INTEGER, MAJOR_TYPE_SIMPLE_OR_FLOAT, MAJOR_TYPE_TAG, MAJOR_TYPE_TEXT_STRING, MAJOR_TYPE_UNSIGNED_INTEGER, } from "./cbor_internal.js"; +/** + * A value which is wrapped with a CBOR Tag. + * Several tags are registered with defined meanings like 0 for a date string. + * These meanings are **not interpreted** when decoded or encoded. + * + * This class is an immutable record. + * If the tag number or value needs to change, then construct a new tag + */ +export class CBORTag { + /** + * Wrap a value with a tag number. + * When encoded, this tag will be attached to the value. + * + * @param tag Tag number + * @param value Wrapped value + */ + constructor(tag, value) { + Object.defineProperty(this, "tagId", { + enumerable: true, + configurable: true, + writable: true, + value: void 0 + }); + Object.defineProperty(this, "tagValue", { + enumerable: true, + configurable: true, + writable: true, + value: void 0 + }); + this.tagId = tag; + this.tagValue = value; + } + /** + * Read the tag number + */ + get tag() { + return this.tagId; + } + /** + * Read the value + */ + get value() { + return this.tagValue; + } +} +function decodeUnsignedInteger(data, argument, index) { + return decodeLength(data, argument, index); +} +function decodeNegativeInteger(data, argument, index) { + const [value, length] = decodeUnsignedInteger(data, argument, index); + return [-value - 1, length]; +} +function decodeByteString(data, argument, index) { + const [lengthValue, lengthConsumed] = decodeLength(data, argument, index); + const dataStartIndex = index + lengthConsumed; + return [ + new Uint8Array(data.buffer.slice(dataStartIndex, dataStartIndex + lengthValue)), + lengthConsumed + lengthValue, + ]; +} +const TEXT_DECODER = new TextDecoder(); +function decodeString(data, argument, index) { + const [value, length] = decodeByteString(data, argument, index); + return [TEXT_DECODER.decode(value), length]; +} +function decodeArray(data, argument, index) { + if (argument === 0) { + return [[], 1]; + } + const [length, lengthConsumed] = decodeLength(data, argument, index); + let consumedLength = lengthConsumed; + const value = []; + for (let i = 0; i < length; i++) { + const remainingDataLength = data.byteLength - index - consumedLength; + if (remainingDataLength <= 0) { + throw new Error("array is not supported or well formed"); + } + const [decodedValue, consumed] = decodeNext(data, index + consumedLength); + value.push(decodedValue); + consumedLength += consumed; + } + return [value, consumedLength]; +} +const MAP_ERROR = "Map is not supported or well formed"; +function decodeMap(data, argument, index) { + if (argument === 0) { + return [new Map(), 1]; + } + const [length, lengthConsumed] = decodeLength(data, argument, index); + let consumedLength = lengthConsumed; + const result = new Map(); + for (let i = 0; i < length; i++) { + let remainingDataLength = data.byteLength - index - consumedLength; + if (remainingDataLength <= 0) { + throw new Error(MAP_ERROR); + } + // Load key + const [key, keyConsumed] = decodeNext(data, index + consumedLength); + consumedLength += keyConsumed; + remainingDataLength -= keyConsumed; + // Check that there's enough to have a value + if (remainingDataLength <= 0) { + throw new Error(MAP_ERROR); + } + // Technically CBOR maps can have any type as the key, and so can JS Maps + // However, JS Maps can only reference such keys as references which would + // require key iteration and pattern matching. + // For simplicity, since such keys are not in use with WebAuthn, this + // capability is not implemented and the types are restricted to strings + // and numbers. + if (typeof key !== "string" && typeof key !== "number") { + throw new Error(MAP_ERROR); + } + // CBOR Maps are not well formed if there are duplicate keys + if (result.has(key)) { + throw new Error(MAP_ERROR); + } + // Load value + const [value, valueConsumed] = decodeNext(data, index + consumedLength); + consumedLength += valueConsumed; + result.set(key, value); + } + return [result, consumedLength]; +} +function decodeFloat16(data, index) { + if (index + 3 > data.byteLength) { + throw new Error("CBOR stream ended before end of Float 16"); + } + // Skip the first byte + const result = data.getUint16(index + 1, false); + // A minimal selection of supported values + if (result == 0x7c00) { + return [Infinity, 3]; + } + else if (result == 0x7e00) { + return [NaN, 3]; + } + else if (result == 0xfc00) { + return [-Infinity, 3]; + } + throw new Error("Float16 data is unsupported"); +} +function decodeFloat32(data, index) { + if (index + 5 > data.byteLength) { + throw new Error("CBOR stream ended before end of Float 32"); + } + // Skip the first byte + const result = data.getFloat32(index + 1, false); + // First byte + 4 byte float + return [result, 5]; +} +function decodeFloat64(data, index) { + if (index + 9 > data.byteLength) { + throw new Error("CBOR stream ended before end of Float 64"); + } + // Skip the first byte + const result = data.getFloat64(index + 1, false); + // First byte + 8 byte float + return [result, 9]; +} +function decodeTag(data, argument, index) { + const [tag, tagBytes] = decodeLength(data, argument, index); + const [value, valueBytes] = decodeNext(data, index + tagBytes); + return [new CBORTag(tag, value), tagBytes + valueBytes]; +} +function decodeNext(data, index) { + if (index >= data.byteLength) { + throw new Error("CBOR stream ended before tag value"); + } + const byte = data.getUint8(index); + const majorType = byte >> 5; + const argument = byte & 0x1f; + switch (majorType) { + case MAJOR_TYPE_UNSIGNED_INTEGER: { + return decodeUnsignedInteger(data, argument, index); + } + case MAJOR_TYPE_NEGATIVE_INTEGER: { + return decodeNegativeInteger(data, argument, index); + } + case MAJOR_TYPE_BYTE_STRING: { + return decodeByteString(data, argument, index); + } + case MAJOR_TYPE_TEXT_STRING: { + return decodeString(data, argument, index); + } + case MAJOR_TYPE_ARRAY: { + return decodeArray(data, argument, index); + } + case MAJOR_TYPE_MAP: { + return decodeMap(data, argument, index); + } + case MAJOR_TYPE_TAG: { + return decodeTag(data, argument, index); + } + case MAJOR_TYPE_SIMPLE_OR_FLOAT: { + switch (argument) { + case 20: + return [false, 1]; + case 21: + return [true, 1]; + case 22: + return [null, 1]; + case 23: + return [undefined, 1]; + // 24: Simple value (value 32..255 in following byte) + case 25: // IEEE 754 Half-Precision Float (16 bits follow) + return decodeFloat16(data, index); + case 26: // IEEE 754 Single-Precision Float (32 bits follow) + return decodeFloat32(data, index); + case 27: // IEEE 754 Double-Precision Float (64 bits follow) + return decodeFloat64(data, index); + // 28-30: Reserved, not well-formed in the present document + // 31: "break" stop code for indefinite-length items + } + } + } + throw new Error(`Unsupported or not well formed at ${index}`); +} +function encodeSimple(data) { + if (data === true) { + return 0xf5; + } + else if (data === false) { + return 0xf4; + } + else if (data === null) { + return 0xf6; + } + // Else undefined + return 0xf7; +} +function encodeFloat(data) { + if (Math.fround(data) == data || !Number.isFinite(data) || Number.isNaN(data)) { + // Float32 + const output = new Uint8Array(5); + output[0] = 0xfa; + const view = new DataView(output.buffer); + view.setFloat32(1, data, false); + return output; + } + else { + // Float64 + const output = new Uint8Array(9); + output[0] = 0xfb; + const view = new DataView(output.buffer); + view.setFloat64(1, data, false); + return output; + } +} +function encodeNumber(data) { + if (typeof data == "number") { + if (Number.isSafeInteger(data)) { + // Encode integer + if (data < 0) { + return encodeLength(MAJOR_TYPE_NEGATIVE_INTEGER, Math.abs(data)); + } + else { + return encodeLength(MAJOR_TYPE_UNSIGNED_INTEGER, data); + } + } + return [encodeFloat(data)]; + } + else { + if (data < 0n) { + return encodeLength(MAJOR_TYPE_NEGATIVE_INTEGER, data * -1n); + } + else { + return encodeLength(MAJOR_TYPE_UNSIGNED_INTEGER, data); + } + } +} +const ENCODER = new TextEncoder(); +function encodeString(data, output) { + output.push(...encodeLength(MAJOR_TYPE_TEXT_STRING, data.length)); + output.push(ENCODER.encode(data)); +} +function encodeBytes(data, output) { + output.push(...encodeLength(MAJOR_TYPE_BYTE_STRING, data.length)); + output.push(data); +} +function encodeArray(data, output) { + output.push(...encodeLength(MAJOR_TYPE_ARRAY, data.length)); + for (const element of data) { + encodePartialCBOR(element, output); + } +} +function encodeMap(data, output) { + output.push(new Uint8Array(encodeLength(MAJOR_TYPE_MAP, data.size))); + for (const [key, value] of data.entries()) { + encodePartialCBOR(key, output); + encodePartialCBOR(value, output); + } +} +function encodeTag(tag, output) { + output.push(...encodeLength(MAJOR_TYPE_TAG, tag.tag)); + encodePartialCBOR(tag.value, output); +} +function encodePartialCBOR(data, output) { + if (typeof data == "boolean" || data === null || data == undefined) { + output.push(encodeSimple(data)); + return; + } + if (typeof data == "number" || typeof data == "bigint") { + output.push(...encodeNumber(data)); + return; + } + if (typeof data == "string") { + encodeString(data, output); + return; + } + if (data instanceof Uint8Array) { + encodeBytes(data, output); + return; + } + if (Array.isArray(data)) { + encodeArray(data, output); + return; + } + if (data instanceof Map) { + encodeMap(data, output); + return; + } + if (data instanceof CBORTag) { + encodeTag(data, output); + return; + } + throw new Error("Not implemented"); +} +/** + * Like {decodeCBOR}, but the length of the data is unknown and there is likely + * more -- possibly unrelated non-CBOR -- data afterwards. + * + * Examples: + * + * ```ts + * import {decodePartialCBOR} from './cbor.ts' + * decodePartialCBOR(new Uint8Array([1, 2, 245, 3, 4]), 2) + * // returns [true, 1] + * // It did not decode the leading [1, 2] or trailing [3, 4] + * ``` + * + * @param data a data stream to read data from + * @param index where to start reading in the data stream + * @returns a tuple of the value followed by bytes read. + * @throws {Error} + * When the data stream ends early or the CBOR data is not well formed + */ +export function decodePartialCBOR(data, index) { + if (data.byteLength === 0 || data.byteLength <= index || index < 0) { + throw new Error("No data"); + } + if (data instanceof Uint8Array) { + return decodeNext(new DataView(data.buffer), index); + } + else if (data instanceof ArrayBuffer) { + return decodeNext(new DataView(data), index); + } + // otherwise, it is a data view + return decodeNext(data, index); +} +/** + * Decode CBOR data from a binary stream + * + * The entire data stream from [0, length) will be consumed. + * If you require a partial decoding, see {decodePartialCBOR}. + * + * Examples: + * + * ```ts + * import {decodeCBOR, CBORTag, CBORType} from './cbor.ts' + * decodeCBOR(new Uint8Array([162, 99, 107, 101, 121, 101, 118, 97, 108, 117, 101, 1, 109, 97, 110, 111, 116, 104, 101, 114, 32, 118, 97, 108, 117, 101])); + * // returns new Map([ + * // ["key", "value"], + * // [1, "another value"] + * // ]); + * + * const taggedItem = new Uint8Array([217, 4, 210, 101, 104, 101, 108, 108, 111]); + * decodeCBOR(new DataView(taggedItem.buffer)) + * // returns new CBORTag(1234, "hello") + * ``` + * + * @param data a data stream, multiple types are supported + * @returns + */ +export function decodeCBOR(data) { + const [value, length] = decodePartialCBOR(data, 0); + if (length !== data.byteLength) { + throw new Error(`Data was decoded, but the whole stream was not processed ${length} != ${data.byteLength}`); + } + return value; +} +/** + * Encode a supported structure to a CBOR byte string. + * + * Example: + * + * ```ts + * import {encodeCBOR, CBORType, CBORTag} from './cbor.ts' + * encodeCBOR(new Map([ + * ["key", "value"], + * [1, "another value"] + * ])); + * // returns new Uint8Array([162, 99, 107, 101, 121, 101, 118, 97, 108, 117, 101, 1, 109, 97, 110, 111, 116, 104, 101, 114, 32 118, 97, 108, 117, 101]) + * + * encodeCBOR(new CBORTag(1234, "hello")) + * // returns new UInt8Array([217, 4, 210, 101, 104, 101, 108, 108, 111]) + * ``` + * + * @param data Data to encode + * @returns A byte string as a Uint8Array + * @throws Error + * if unsupported data is found during encoding + */ +export function encodeCBOR(data) { + const results = []; + encodePartialCBOR(data, results); + let length = 0; + for (const result of results) { + if (typeof result == "number") { + length += 1; + } + else { + length += result.length; + } + } + const output = new Uint8Array(length); + let index = 0; + for (const result of results) { + if (typeof result == "number") { + output[index] = result; + index += 1; + } + else { + output.set(result, index); + index += result.length; + } + } + return output; +} diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/cbor/cbor_internal.d.ts b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/cbor/cbor_internal.d.ts new file mode 100644 index 0000000..c726300 --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/cbor/cbor_internal.d.ts @@ -0,0 +1,11 @@ +export declare function decodeLength(data: DataView, argument: number, index: number): [number, number]; +export type MajorType = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7; +export declare const MAJOR_TYPE_UNSIGNED_INTEGER: MajorType; +export declare const MAJOR_TYPE_NEGATIVE_INTEGER: MajorType; +export declare const MAJOR_TYPE_BYTE_STRING: MajorType; +export declare const MAJOR_TYPE_TEXT_STRING: MajorType; +export declare const MAJOR_TYPE_ARRAY: MajorType; +export declare const MAJOR_TYPE_MAP: MajorType; +export declare const MAJOR_TYPE_TAG: MajorType; +export declare const MAJOR_TYPE_SIMPLE_OR_FLOAT: MajorType; +export declare function encodeLength(major: MajorType, argument: number | bigint): number[]; diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/cbor/cbor_internal.js b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/cbor/cbor_internal.js new file mode 100644 index 0000000..2ce5b06 --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/cbor/cbor_internal.js @@ -0,0 +1,111 @@ +export function decodeLength(data, argument, index) { + if (argument < 24) { + return [argument, 1]; + } + const remainingDataLength = data.byteLength - index - 1; + const view = new DataView(data.buffer, index + 1); + let output; + let bytes = 0; + switch (argument) { + case 24: { + if (remainingDataLength > 0) { + output = view.getUint8(0); + bytes = 2; + } + break; + } + case 25: { + if (remainingDataLength > 1) { + output = view.getUint16(0, false); + bytes = 3; + } + break; + } + case 26: { + if (remainingDataLength > 3) { + output = view.getUint32(0, false); + bytes = 5; + } + break; + } + case 27: { + if (remainingDataLength > 7) { + const bigOutput = view.getBigUint64(0, false); + // Bound it to [24, MAX_SAFE_INTEGER], where it is safe + // to encode as a javascript number + if (bigOutput >= 24n && bigOutput <= Number.MAX_SAFE_INTEGER) { + return [Number(bigOutput), 9]; + } + } + break; + } + } + if (output && output >= 24) { + return [output, bytes]; + } + throw new Error("Length not supported or not well formed"); +} +export const MAJOR_TYPE_UNSIGNED_INTEGER = 0; +export const MAJOR_TYPE_NEGATIVE_INTEGER = 1; +export const MAJOR_TYPE_BYTE_STRING = 2; +export const MAJOR_TYPE_TEXT_STRING = 3; +export const MAJOR_TYPE_ARRAY = 4; +export const MAJOR_TYPE_MAP = 5; +export const MAJOR_TYPE_TAG = 6; +export const MAJOR_TYPE_SIMPLE_OR_FLOAT = 7; +export function encodeLength(major, argument) { + const majorEncoded = major << 5; + if (argument < 0) { + throw new Error("CBOR Data Item argument must not be negative"); + } + // Convert to bigint first. + // Encode integers around and above 32 bits in big endian / network byte order + // is unreliable in javascript. + // https://tc39.es/ecma262/#sec-bitwise-shift-operators + // Bit shifting operations result in 32 bit signed numbers + let bigintArgument; + if (typeof argument == "number") { + if (!Number.isInteger(argument)) { + throw new Error("CBOR Data Item argument must be an integer"); + } + bigintArgument = BigInt(argument); + } + else { + bigintArgument = argument; + } + // Negative 0 is not a thing + if (major == MAJOR_TYPE_NEGATIVE_INTEGER) { + if (bigintArgument == 0n) { + throw new Error("CBOR Data Item argument cannot be zero when negative"); + } + bigintArgument = bigintArgument - 1n; + } + if (bigintArgument > 18446744073709551615n) { + throw new Error("CBOR number out of range"); + } + // Encode into 64 bits and extract the tail + const buffer = new Uint8Array(8); + const view = new DataView(buffer.buffer); + view.setBigUint64(0, bigintArgument, false); + if (bigintArgument <= 23) { + return [majorEncoded | buffer[7]]; + } + else if (bigintArgument <= 255) { + return [majorEncoded | 24, buffer[7]]; + } + else if (bigintArgument <= 65535) { + return [majorEncoded | 25, ...buffer.slice(6)]; + } + else if (bigintArgument <= 4294967295) { + return [ + majorEncoded | 26, + ...buffer.slice(4), + ]; + } + else { + return [ + majorEncoded | 27, + ...buffer, + ]; + } +} diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/index.d.ts b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/index.d.ts new file mode 100644 index 0000000..c95cd38 --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/index.d.ts @@ -0,0 +1,2 @@ +export { CBORTag, decodeCBOR, decodePartialCBOR, encodeCBOR, } from "./cbor/cbor.js"; +export type { CBORType } from "./cbor/cbor.js"; diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/index.js b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/index.js new file mode 100644 index 0000000..9fcfd93 --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/index.js @@ -0,0 +1 @@ +export { CBORTag, decodeCBOR, decodePartialCBOR, encodeCBOR, } from "./cbor/cbor.js"; diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/package.json b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/esm/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/package.json b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/package.json new file mode 100644 index 0000000..e1971c6 --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/package.json @@ -0,0 +1,25 @@ +{ + "name": "@levischuck/tiny-cbor", + "version": "0.2.11", + "description": "Tiny CBOR library", + "repository": { + "type": "git", + "url": "git+https://github.com/levischuck/tiny-cbor.git" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/levischuck/tiny-cbor/issues" + }, + "main": "./script/index.js", + "module": "./esm/index.js", + "exports": { + ".": { + "import": "./esm/index.js", + "require": "./script/index.js" + } + }, + "devDependencies": { + "@types/node": "^20.9.0" + }, + "_generatedBy": "dnt@0.40.0" +} \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/cbor/cbor.d.ts b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/cbor/cbor.d.ts new file mode 100644 index 0000000..ab9189e --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/cbor/cbor.d.ts @@ -0,0 +1,101 @@ +/** + * A value which is wrapped with a CBOR Tag. + * Several tags are registered with defined meanings like 0 for a date string. + * These meanings are **not interpreted** when decoded or encoded. + * + * This class is an immutable record. + * If the tag number or value needs to change, then construct a new tag + */ +export declare class CBORTag { + private tagId; + private tagValue; + /** + * Wrap a value with a tag number. + * When encoded, this tag will be attached to the value. + * + * @param tag Tag number + * @param value Wrapped value + */ + constructor(tag: number, value: CBORType); + /** + * Read the tag number + */ + get tag(): number; + /** + * Read the value + */ + get value(): CBORType; +} +/** + * Supported types which are encodable and decodable with tiny CBOR. + * Note that plain javascript objects are omitted. + */ +export type CBORType = number | bigint | string | Uint8Array | boolean | null | undefined | CBORType[] | CBORTag | Map; +/** + * Like {decodeCBOR}, but the length of the data is unknown and there is likely + * more -- possibly unrelated non-CBOR -- data afterwards. + * + * Examples: + * + * ```ts + * import {decodePartialCBOR} from './cbor.ts' + * decodePartialCBOR(new Uint8Array([1, 2, 245, 3, 4]), 2) + * // returns [true, 1] + * // It did not decode the leading [1, 2] or trailing [3, 4] + * ``` + * + * @param data a data stream to read data from + * @param index where to start reading in the data stream + * @returns a tuple of the value followed by bytes read. + * @throws {Error} + * When the data stream ends early or the CBOR data is not well formed + */ +export declare function decodePartialCBOR(data: DataView | Uint8Array | ArrayBuffer, index: number): [CBORType, number]; +/** + * Decode CBOR data from a binary stream + * + * The entire data stream from [0, length) will be consumed. + * If you require a partial decoding, see {decodePartialCBOR}. + * + * Examples: + * + * ```ts + * import {decodeCBOR, CBORTag, CBORType} from './cbor.ts' + * decodeCBOR(new Uint8Array([162, 99, 107, 101, 121, 101, 118, 97, 108, 117, 101, 1, 109, 97, 110, 111, 116, 104, 101, 114, 32, 118, 97, 108, 117, 101])); + * // returns new Map([ + * // ["key", "value"], + * // [1, "another value"] + * // ]); + * + * const taggedItem = new Uint8Array([217, 4, 210, 101, 104, 101, 108, 108, 111]); + * decodeCBOR(new DataView(taggedItem.buffer)) + * // returns new CBORTag(1234, "hello") + * ``` + * + * @param data a data stream, multiple types are supported + * @returns + */ +export declare function decodeCBOR(data: DataView | Uint8Array | ArrayBuffer): CBORType; +/** + * Encode a supported structure to a CBOR byte string. + * + * Example: + * + * ```ts + * import {encodeCBOR, CBORType, CBORTag} from './cbor.ts' + * encodeCBOR(new Map([ + * ["key", "value"], + * [1, "another value"] + * ])); + * // returns new Uint8Array([162, 99, 107, 101, 121, 101, 118, 97, 108, 117, 101, 1, 109, 97, 110, 111, 116, 104, 101, 114, 32 118, 97, 108, 117, 101]) + * + * encodeCBOR(new CBORTag(1234, "hello")) + * // returns new UInt8Array([217, 4, 210, 101, 104, 101, 108, 108, 111]) + * ``` + * + * @param data Data to encode + * @returns A byte string as a Uint8Array + * @throws Error + * if unsupported data is found during encoding + */ +export declare function encodeCBOR(data: CBORType): Uint8Array; diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/cbor/cbor.js b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/cbor/cbor.js new file mode 100644 index 0000000..40a9941 --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/cbor/cbor.js @@ -0,0 +1,447 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.encodeCBOR = exports.decodeCBOR = exports.decodePartialCBOR = exports.CBORTag = void 0; +const cbor_internal_js_1 = require("./cbor_internal.js"); +/** + * A value which is wrapped with a CBOR Tag. + * Several tags are registered with defined meanings like 0 for a date string. + * These meanings are **not interpreted** when decoded or encoded. + * + * This class is an immutable record. + * If the tag number or value needs to change, then construct a new tag + */ +class CBORTag { + /** + * Wrap a value with a tag number. + * When encoded, this tag will be attached to the value. + * + * @param tag Tag number + * @param value Wrapped value + */ + constructor(tag, value) { + Object.defineProperty(this, "tagId", { + enumerable: true, + configurable: true, + writable: true, + value: void 0 + }); + Object.defineProperty(this, "tagValue", { + enumerable: true, + configurable: true, + writable: true, + value: void 0 + }); + this.tagId = tag; + this.tagValue = value; + } + /** + * Read the tag number + */ + get tag() { + return this.tagId; + } + /** + * Read the value + */ + get value() { + return this.tagValue; + } +} +exports.CBORTag = CBORTag; +function decodeUnsignedInteger(data, argument, index) { + return (0, cbor_internal_js_1.decodeLength)(data, argument, index); +} +function decodeNegativeInteger(data, argument, index) { + const [value, length] = decodeUnsignedInteger(data, argument, index); + return [-value - 1, length]; +} +function decodeByteString(data, argument, index) { + const [lengthValue, lengthConsumed] = (0, cbor_internal_js_1.decodeLength)(data, argument, index); + const dataStartIndex = index + lengthConsumed; + return [ + new Uint8Array(data.buffer.slice(dataStartIndex, dataStartIndex + lengthValue)), + lengthConsumed + lengthValue, + ]; +} +const TEXT_DECODER = new TextDecoder(); +function decodeString(data, argument, index) { + const [value, length] = decodeByteString(data, argument, index); + return [TEXT_DECODER.decode(value), length]; +} +function decodeArray(data, argument, index) { + if (argument === 0) { + return [[], 1]; + } + const [length, lengthConsumed] = (0, cbor_internal_js_1.decodeLength)(data, argument, index); + let consumedLength = lengthConsumed; + const value = []; + for (let i = 0; i < length; i++) { + const remainingDataLength = data.byteLength - index - consumedLength; + if (remainingDataLength <= 0) { + throw new Error("array is not supported or well formed"); + } + const [decodedValue, consumed] = decodeNext(data, index + consumedLength); + value.push(decodedValue); + consumedLength += consumed; + } + return [value, consumedLength]; +} +const MAP_ERROR = "Map is not supported or well formed"; +function decodeMap(data, argument, index) { + if (argument === 0) { + return [new Map(), 1]; + } + const [length, lengthConsumed] = (0, cbor_internal_js_1.decodeLength)(data, argument, index); + let consumedLength = lengthConsumed; + const result = new Map(); + for (let i = 0; i < length; i++) { + let remainingDataLength = data.byteLength - index - consumedLength; + if (remainingDataLength <= 0) { + throw new Error(MAP_ERROR); + } + // Load key + const [key, keyConsumed] = decodeNext(data, index + consumedLength); + consumedLength += keyConsumed; + remainingDataLength -= keyConsumed; + // Check that there's enough to have a value + if (remainingDataLength <= 0) { + throw new Error(MAP_ERROR); + } + // Technically CBOR maps can have any type as the key, and so can JS Maps + // However, JS Maps can only reference such keys as references which would + // require key iteration and pattern matching. + // For simplicity, since such keys are not in use with WebAuthn, this + // capability is not implemented and the types are restricted to strings + // and numbers. + if (typeof key !== "string" && typeof key !== "number") { + throw new Error(MAP_ERROR); + } + // CBOR Maps are not well formed if there are duplicate keys + if (result.has(key)) { + throw new Error(MAP_ERROR); + } + // Load value + const [value, valueConsumed] = decodeNext(data, index + consumedLength); + consumedLength += valueConsumed; + result.set(key, value); + } + return [result, consumedLength]; +} +function decodeFloat16(data, index) { + if (index + 3 > data.byteLength) { + throw new Error("CBOR stream ended before end of Float 16"); + } + // Skip the first byte + const result = data.getUint16(index + 1, false); + // A minimal selection of supported values + if (result == 0x7c00) { + return [Infinity, 3]; + } + else if (result == 0x7e00) { + return [NaN, 3]; + } + else if (result == 0xfc00) { + return [-Infinity, 3]; + } + throw new Error("Float16 data is unsupported"); +} +function decodeFloat32(data, index) { + if (index + 5 > data.byteLength) { + throw new Error("CBOR stream ended before end of Float 32"); + } + // Skip the first byte + const result = data.getFloat32(index + 1, false); + // First byte + 4 byte float + return [result, 5]; +} +function decodeFloat64(data, index) { + if (index + 9 > data.byteLength) { + throw new Error("CBOR stream ended before end of Float 64"); + } + // Skip the first byte + const result = data.getFloat64(index + 1, false); + // First byte + 8 byte float + return [result, 9]; +} +function decodeTag(data, argument, index) { + const [tag, tagBytes] = (0, cbor_internal_js_1.decodeLength)(data, argument, index); + const [value, valueBytes] = decodeNext(data, index + tagBytes); + return [new CBORTag(tag, value), tagBytes + valueBytes]; +} +function decodeNext(data, index) { + if (index >= data.byteLength) { + throw new Error("CBOR stream ended before tag value"); + } + const byte = data.getUint8(index); + const majorType = byte >> 5; + const argument = byte & 0x1f; + switch (majorType) { + case cbor_internal_js_1.MAJOR_TYPE_UNSIGNED_INTEGER: { + return decodeUnsignedInteger(data, argument, index); + } + case cbor_internal_js_1.MAJOR_TYPE_NEGATIVE_INTEGER: { + return decodeNegativeInteger(data, argument, index); + } + case cbor_internal_js_1.MAJOR_TYPE_BYTE_STRING: { + return decodeByteString(data, argument, index); + } + case cbor_internal_js_1.MAJOR_TYPE_TEXT_STRING: { + return decodeString(data, argument, index); + } + case cbor_internal_js_1.MAJOR_TYPE_ARRAY: { + return decodeArray(data, argument, index); + } + case cbor_internal_js_1.MAJOR_TYPE_MAP: { + return decodeMap(data, argument, index); + } + case cbor_internal_js_1.MAJOR_TYPE_TAG: { + return decodeTag(data, argument, index); + } + case cbor_internal_js_1.MAJOR_TYPE_SIMPLE_OR_FLOAT: { + switch (argument) { + case 20: + return [false, 1]; + case 21: + return [true, 1]; + case 22: + return [null, 1]; + case 23: + return [undefined, 1]; + // 24: Simple value (value 32..255 in following byte) + case 25: // IEEE 754 Half-Precision Float (16 bits follow) + return decodeFloat16(data, index); + case 26: // IEEE 754 Single-Precision Float (32 bits follow) + return decodeFloat32(data, index); + case 27: // IEEE 754 Double-Precision Float (64 bits follow) + return decodeFloat64(data, index); + // 28-30: Reserved, not well-formed in the present document + // 31: "break" stop code for indefinite-length items + } + } + } + throw new Error(`Unsupported or not well formed at ${index}`); +} +function encodeSimple(data) { + if (data === true) { + return 0xf5; + } + else if (data === false) { + return 0xf4; + } + else if (data === null) { + return 0xf6; + } + // Else undefined + return 0xf7; +} +function encodeFloat(data) { + if (Math.fround(data) == data || !Number.isFinite(data) || Number.isNaN(data)) { + // Float32 + const output = new Uint8Array(5); + output[0] = 0xfa; + const view = new DataView(output.buffer); + view.setFloat32(1, data, false); + return output; + } + else { + // Float64 + const output = new Uint8Array(9); + output[0] = 0xfb; + const view = new DataView(output.buffer); + view.setFloat64(1, data, false); + return output; + } +} +function encodeNumber(data) { + if (typeof data == "number") { + if (Number.isSafeInteger(data)) { + // Encode integer + if (data < 0) { + return (0, cbor_internal_js_1.encodeLength)(cbor_internal_js_1.MAJOR_TYPE_NEGATIVE_INTEGER, Math.abs(data)); + } + else { + return (0, cbor_internal_js_1.encodeLength)(cbor_internal_js_1.MAJOR_TYPE_UNSIGNED_INTEGER, data); + } + } + return [encodeFloat(data)]; + } + else { + if (data < 0n) { + return (0, cbor_internal_js_1.encodeLength)(cbor_internal_js_1.MAJOR_TYPE_NEGATIVE_INTEGER, data * -1n); + } + else { + return (0, cbor_internal_js_1.encodeLength)(cbor_internal_js_1.MAJOR_TYPE_UNSIGNED_INTEGER, data); + } + } +} +const ENCODER = new TextEncoder(); +function encodeString(data, output) { + output.push(...(0, cbor_internal_js_1.encodeLength)(cbor_internal_js_1.MAJOR_TYPE_TEXT_STRING, data.length)); + output.push(ENCODER.encode(data)); +} +function encodeBytes(data, output) { + output.push(...(0, cbor_internal_js_1.encodeLength)(cbor_internal_js_1.MAJOR_TYPE_BYTE_STRING, data.length)); + output.push(data); +} +function encodeArray(data, output) { + output.push(...(0, cbor_internal_js_1.encodeLength)(cbor_internal_js_1.MAJOR_TYPE_ARRAY, data.length)); + for (const element of data) { + encodePartialCBOR(element, output); + } +} +function encodeMap(data, output) { + output.push(new Uint8Array((0, cbor_internal_js_1.encodeLength)(cbor_internal_js_1.MAJOR_TYPE_MAP, data.size))); + for (const [key, value] of data.entries()) { + encodePartialCBOR(key, output); + encodePartialCBOR(value, output); + } +} +function encodeTag(tag, output) { + output.push(...(0, cbor_internal_js_1.encodeLength)(cbor_internal_js_1.MAJOR_TYPE_TAG, tag.tag)); + encodePartialCBOR(tag.value, output); +} +function encodePartialCBOR(data, output) { + if (typeof data == "boolean" || data === null || data == undefined) { + output.push(encodeSimple(data)); + return; + } + if (typeof data == "number" || typeof data == "bigint") { + output.push(...encodeNumber(data)); + return; + } + if (typeof data == "string") { + encodeString(data, output); + return; + } + if (data instanceof Uint8Array) { + encodeBytes(data, output); + return; + } + if (Array.isArray(data)) { + encodeArray(data, output); + return; + } + if (data instanceof Map) { + encodeMap(data, output); + return; + } + if (data instanceof CBORTag) { + encodeTag(data, output); + return; + } + throw new Error("Not implemented"); +} +/** + * Like {decodeCBOR}, but the length of the data is unknown and there is likely + * more -- possibly unrelated non-CBOR -- data afterwards. + * + * Examples: + * + * ```ts + * import {decodePartialCBOR} from './cbor.ts' + * decodePartialCBOR(new Uint8Array([1, 2, 245, 3, 4]), 2) + * // returns [true, 1] + * // It did not decode the leading [1, 2] or trailing [3, 4] + * ``` + * + * @param data a data stream to read data from + * @param index where to start reading in the data stream + * @returns a tuple of the value followed by bytes read. + * @throws {Error} + * When the data stream ends early or the CBOR data is not well formed + */ +function decodePartialCBOR(data, index) { + if (data.byteLength === 0 || data.byteLength <= index || index < 0) { + throw new Error("No data"); + } + if (data instanceof Uint8Array) { + return decodeNext(new DataView(data.buffer), index); + } + else if (data instanceof ArrayBuffer) { + return decodeNext(new DataView(data), index); + } + // otherwise, it is a data view + return decodeNext(data, index); +} +exports.decodePartialCBOR = decodePartialCBOR; +/** + * Decode CBOR data from a binary stream + * + * The entire data stream from [0, length) will be consumed. + * If you require a partial decoding, see {decodePartialCBOR}. + * + * Examples: + * + * ```ts + * import {decodeCBOR, CBORTag, CBORType} from './cbor.ts' + * decodeCBOR(new Uint8Array([162, 99, 107, 101, 121, 101, 118, 97, 108, 117, 101, 1, 109, 97, 110, 111, 116, 104, 101, 114, 32, 118, 97, 108, 117, 101])); + * // returns new Map([ + * // ["key", "value"], + * // [1, "another value"] + * // ]); + * + * const taggedItem = new Uint8Array([217, 4, 210, 101, 104, 101, 108, 108, 111]); + * decodeCBOR(new DataView(taggedItem.buffer)) + * // returns new CBORTag(1234, "hello") + * ``` + * + * @param data a data stream, multiple types are supported + * @returns + */ +function decodeCBOR(data) { + const [value, length] = decodePartialCBOR(data, 0); + if (length !== data.byteLength) { + throw new Error(`Data was decoded, but the whole stream was not processed ${length} != ${data.byteLength}`); + } + return value; +} +exports.decodeCBOR = decodeCBOR; +/** + * Encode a supported structure to a CBOR byte string. + * + * Example: + * + * ```ts + * import {encodeCBOR, CBORType, CBORTag} from './cbor.ts' + * encodeCBOR(new Map([ + * ["key", "value"], + * [1, "another value"] + * ])); + * // returns new Uint8Array([162, 99, 107, 101, 121, 101, 118, 97, 108, 117, 101, 1, 109, 97, 110, 111, 116, 104, 101, 114, 32 118, 97, 108, 117, 101]) + * + * encodeCBOR(new CBORTag(1234, "hello")) + * // returns new UInt8Array([217, 4, 210, 101, 104, 101, 108, 108, 111]) + * ``` + * + * @param data Data to encode + * @returns A byte string as a Uint8Array + * @throws Error + * if unsupported data is found during encoding + */ +function encodeCBOR(data) { + const results = []; + encodePartialCBOR(data, results); + let length = 0; + for (const result of results) { + if (typeof result == "number") { + length += 1; + } + else { + length += result.length; + } + } + const output = new Uint8Array(length); + let index = 0; + for (const result of results) { + if (typeof result == "number") { + output[index] = result; + index += 1; + } + else { + output.set(result, index); + index += result.length; + } + } + return output; +} +exports.encodeCBOR = encodeCBOR; diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/cbor/cbor_internal.d.ts b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/cbor/cbor_internal.d.ts new file mode 100644 index 0000000..c726300 --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/cbor/cbor_internal.d.ts @@ -0,0 +1,11 @@ +export declare function decodeLength(data: DataView, argument: number, index: number): [number, number]; +export type MajorType = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7; +export declare const MAJOR_TYPE_UNSIGNED_INTEGER: MajorType; +export declare const MAJOR_TYPE_NEGATIVE_INTEGER: MajorType; +export declare const MAJOR_TYPE_BYTE_STRING: MajorType; +export declare const MAJOR_TYPE_TEXT_STRING: MajorType; +export declare const MAJOR_TYPE_ARRAY: MajorType; +export declare const MAJOR_TYPE_MAP: MajorType; +export declare const MAJOR_TYPE_TAG: MajorType; +export declare const MAJOR_TYPE_SIMPLE_OR_FLOAT: MajorType; +export declare function encodeLength(major: MajorType, argument: number | bigint): number[]; diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/cbor/cbor_internal.js b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/cbor/cbor_internal.js new file mode 100644 index 0000000..5fbc083 --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/cbor/cbor_internal.js @@ -0,0 +1,116 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.encodeLength = exports.MAJOR_TYPE_SIMPLE_OR_FLOAT = exports.MAJOR_TYPE_TAG = exports.MAJOR_TYPE_MAP = exports.MAJOR_TYPE_ARRAY = exports.MAJOR_TYPE_TEXT_STRING = exports.MAJOR_TYPE_BYTE_STRING = exports.MAJOR_TYPE_NEGATIVE_INTEGER = exports.MAJOR_TYPE_UNSIGNED_INTEGER = exports.decodeLength = void 0; +function decodeLength(data, argument, index) { + if (argument < 24) { + return [argument, 1]; + } + const remainingDataLength = data.byteLength - index - 1; + const view = new DataView(data.buffer, index + 1); + let output; + let bytes = 0; + switch (argument) { + case 24: { + if (remainingDataLength > 0) { + output = view.getUint8(0); + bytes = 2; + } + break; + } + case 25: { + if (remainingDataLength > 1) { + output = view.getUint16(0, false); + bytes = 3; + } + break; + } + case 26: { + if (remainingDataLength > 3) { + output = view.getUint32(0, false); + bytes = 5; + } + break; + } + case 27: { + if (remainingDataLength > 7) { + const bigOutput = view.getBigUint64(0, false); + // Bound it to [24, MAX_SAFE_INTEGER], where it is safe + // to encode as a javascript number + if (bigOutput >= 24n && bigOutput <= Number.MAX_SAFE_INTEGER) { + return [Number(bigOutput), 9]; + } + } + break; + } + } + if (output && output >= 24) { + return [output, bytes]; + } + throw new Error("Length not supported or not well formed"); +} +exports.decodeLength = decodeLength; +exports.MAJOR_TYPE_UNSIGNED_INTEGER = 0; +exports.MAJOR_TYPE_NEGATIVE_INTEGER = 1; +exports.MAJOR_TYPE_BYTE_STRING = 2; +exports.MAJOR_TYPE_TEXT_STRING = 3; +exports.MAJOR_TYPE_ARRAY = 4; +exports.MAJOR_TYPE_MAP = 5; +exports.MAJOR_TYPE_TAG = 6; +exports.MAJOR_TYPE_SIMPLE_OR_FLOAT = 7; +function encodeLength(major, argument) { + const majorEncoded = major << 5; + if (argument < 0) { + throw new Error("CBOR Data Item argument must not be negative"); + } + // Convert to bigint first. + // Encode integers around and above 32 bits in big endian / network byte order + // is unreliable in javascript. + // https://tc39.es/ecma262/#sec-bitwise-shift-operators + // Bit shifting operations result in 32 bit signed numbers + let bigintArgument; + if (typeof argument == "number") { + if (!Number.isInteger(argument)) { + throw new Error("CBOR Data Item argument must be an integer"); + } + bigintArgument = BigInt(argument); + } + else { + bigintArgument = argument; + } + // Negative 0 is not a thing + if (major == exports.MAJOR_TYPE_NEGATIVE_INTEGER) { + if (bigintArgument == 0n) { + throw new Error("CBOR Data Item argument cannot be zero when negative"); + } + bigintArgument = bigintArgument - 1n; + } + if (bigintArgument > 18446744073709551615n) { + throw new Error("CBOR number out of range"); + } + // Encode into 64 bits and extract the tail + const buffer = new Uint8Array(8); + const view = new DataView(buffer.buffer); + view.setBigUint64(0, bigintArgument, false); + if (bigintArgument <= 23) { + return [majorEncoded | buffer[7]]; + } + else if (bigintArgument <= 255) { + return [majorEncoded | 24, buffer[7]]; + } + else if (bigintArgument <= 65535) { + return [majorEncoded | 25, ...buffer.slice(6)]; + } + else if (bigintArgument <= 4294967295) { + return [ + majorEncoded | 26, + ...buffer.slice(4), + ]; + } + else { + return [ + majorEncoded | 27, + ...buffer, + ]; + } +} +exports.encodeLength = encodeLength; diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/index.d.ts b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/index.d.ts new file mode 100644 index 0000000..c95cd38 --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/index.d.ts @@ -0,0 +1,2 @@ +export { CBORTag, decodeCBOR, decodePartialCBOR, encodeCBOR, } from "./cbor/cbor.js"; +export type { CBORType } from "./cbor/cbor.js"; diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/index.js b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/index.js new file mode 100644 index 0000000..4063101 --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/index.js @@ -0,0 +1,8 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.encodeCBOR = exports.decodePartialCBOR = exports.decodeCBOR = exports.CBORTag = void 0; +var cbor_js_1 = require("./cbor/cbor.js"); +Object.defineProperty(exports, "CBORTag", { enumerable: true, get: function () { return cbor_js_1.CBORTag; } }); +Object.defineProperty(exports, "decodeCBOR", { enumerable: true, get: function () { return cbor_js_1.decodeCBOR; } }); +Object.defineProperty(exports, "decodePartialCBOR", { enumerable: true, get: function () { return cbor_js_1.decodePartialCBOR; } }); +Object.defineProperty(exports, "encodeCBOR", { enumerable: true, get: function () { return cbor_js_1.encodeCBOR; } }); diff --git a/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/package.json b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/package.json new file mode 100644 index 0000000..5bbefff --- /dev/null +++ b/api.hyungi.net/node_modules/@levischuck/tiny-cbor/script/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/api.hyungi.net/node_modules/@npmcli/fs/LICENSE.md b/api.hyungi.net/node_modules/@npmcli/fs/LICENSE.md new file mode 100644 index 0000000..5fc208f --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/LICENSE.md @@ -0,0 +1,20 @@ + + +ISC License + +Copyright npm, Inc. + +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 NPM DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO +EVENT SHALL NPM 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/api.hyungi.net/node_modules/@npmcli/fs/README.md b/api.hyungi.net/node_modules/@npmcli/fs/README.md new file mode 100644 index 0000000..bc71a11 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/README.md @@ -0,0 +1,60 @@ +# @npmcli/fs + +polyfills, and extensions, of the core `fs` module. + +## Features + +- all exposed functions return promises +- `fs.rm` polyfill for node versions < 14.14.0 +- `fs.mkdir` polyfill adding support for the `recursive` and `force` options in node versions < 10.12.0 +- `fs.copyFile` extended to accept an `owner` option +- `fs.mkdir` extended to accept an `owner` option +- `fs.mkdtemp` extended to accept an `owner` option +- `fs.writeFile` extended to accept an `owner` option +- `fs.withTempDir` added +- `fs.cp` polyfill for node < 16.7.0 + +## The `owner` option + +The `copyFile`, `mkdir`, `mkdtemp`, `writeFile`, and `withTempDir` functions +all accept a new `owner` property in their options. It can be used in two ways: + +- `{ owner: { uid: 100, gid: 100 } }` - set the `uid` and `gid` explicitly +- `{ owner: 100 }` - use one value, will set both `uid` and `gid` the same + +The special string `'inherit'` may be passed instead of a number, which will +cause this module to automatically determine the correct `uid` and/or `gid` +from the nearest existing parent directory of the target. + +## `fs.withTempDir(root, fn, options) -> Promise` + +### Parameters + +- `root`: the directory in which to create the temporary directory +- `fn`: a function that will be called with the path to the temporary directory +- `options` + - `tmpPrefix`: a prefix to be used in the generated directory name + +### Usage + +The `withTempDir` function creates a temporary directory, runs the provided +function (`fn`), then removes the temporary directory and resolves or rejects +based on the result of `fn`. + +```js +const fs = require('@npmcli/fs') +const os = require('os') + +// this function will be called with the full path to the temporary directory +// it is called with `await` behind the scenes, so can be async if desired. +const myFunction = async (tempPath) => { + return 'done!' +} + +const main = async () => { + const result = await fs.withTempDir(os.tmpdir(), myFunction) + // result === 'done!' +} + +main() +``` diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/common/file-url-to-path/index.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/common/file-url-to-path/index.js new file mode 100644 index 0000000..7755d1c --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/common/file-url-to-path/index.js @@ -0,0 +1,17 @@ +const url = require('url') + +const node = require('../node.js') +const polyfill = require('./polyfill.js') + +const useNative = node.satisfies('>=10.12.0') + +const fileURLToPath = (path) => { + // the polyfill is tested separately from this module, no need to hack + // process.version to try to trigger it just for coverage + // istanbul ignore next + return useNative + ? url.fileURLToPath(path) + : polyfill(path) +} + +module.exports = fileURLToPath diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/common/file-url-to-path/polyfill.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/common/file-url-to-path/polyfill.js new file mode 100644 index 0000000..6cc90f0 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/common/file-url-to-path/polyfill.js @@ -0,0 +1,121 @@ +const { URL, domainToUnicode } = require('url') + +const CHAR_LOWERCASE_A = 97 +const CHAR_LOWERCASE_Z = 122 + +const isWindows = process.platform === 'win32' + +class ERR_INVALID_FILE_URL_HOST extends TypeError { + constructor (platform) { + super(`File URL host must be "localhost" or empty on ${platform}`) + this.code = 'ERR_INVALID_FILE_URL_HOST' + } + + toString () { + return `${this.name} [${this.code}]: ${this.message}` + } +} + +class ERR_INVALID_FILE_URL_PATH extends TypeError { + constructor (msg) { + super(`File URL path ${msg}`) + this.code = 'ERR_INVALID_FILE_URL_PATH' + } + + toString () { + return `${this.name} [${this.code}]: ${this.message}` + } +} + +class ERR_INVALID_ARG_TYPE extends TypeError { + constructor (name, actual) { + super(`The "${name}" argument must be one of type string or an instance ` + + `of URL. Received type ${typeof actual} ${actual}`) + this.code = 'ERR_INVALID_ARG_TYPE' + } + + toString () { + return `${this.name} [${this.code}]: ${this.message}` + } +} + +class ERR_INVALID_URL_SCHEME extends TypeError { + constructor (expected) { + super(`The URL must be of scheme ${expected}`) + this.code = 'ERR_INVALID_URL_SCHEME' + } + + toString () { + return `${this.name} [${this.code}]: ${this.message}` + } +} + +const isURLInstance = (input) => { + return input != null && input.href && input.origin +} + +const getPathFromURLWin32 = (url) => { + const hostname = url.hostname + let pathname = url.pathname + for (let n = 0; n < pathname.length; n++) { + if (pathname[n] === '%') { + const third = pathname.codePointAt(n + 2) | 0x20 + if ((pathname[n + 1] === '2' && third === 102) || + (pathname[n + 1] === '5' && third === 99)) { + throw new ERR_INVALID_FILE_URL_PATH('must not include encoded \\ or / characters') + } + } + } + + pathname = pathname.replace(/\//g, '\\') + pathname = decodeURIComponent(pathname) + if (hostname !== '') { + return `\\\\${domainToUnicode(hostname)}${pathname}` + } + + const letter = pathname.codePointAt(1) | 0x20 + const sep = pathname[2] + if (letter < CHAR_LOWERCASE_A || letter > CHAR_LOWERCASE_Z || + (sep !== ':')) { + throw new ERR_INVALID_FILE_URL_PATH('must be absolute') + } + + return pathname.slice(1) +} + +const getPathFromURLPosix = (url) => { + if (url.hostname !== '') { + throw new ERR_INVALID_FILE_URL_HOST(process.platform) + } + + const pathname = url.pathname + + for (let n = 0; n < pathname.length; n++) { + if (pathname[n] === '%') { + const third = pathname.codePointAt(n + 2) | 0x20 + if (pathname[n + 1] === '2' && third === 102) { + throw new ERR_INVALID_FILE_URL_PATH('must not include encoded / characters') + } + } + } + + return decodeURIComponent(pathname) +} + +const fileURLToPath = (path) => { + if (typeof path === 'string') { + path = new URL(path) + } else if (!isURLInstance(path)) { + throw new ERR_INVALID_ARG_TYPE('path', ['string', 'URL'], path) + } + + if (path.protocol !== 'file:') { + throw new ERR_INVALID_URL_SCHEME('file') + } + + return isWindows + ? getPathFromURLWin32(path) + : getPathFromURLPosix(path) +} + +module.exports = fileURLToPath diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/common/get-options.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/common/get-options.js new file mode 100644 index 0000000..cb5982f --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/common/get-options.js @@ -0,0 +1,20 @@ +// given an input that may or may not be an object, return an object that has +// a copy of every defined property listed in 'copy'. if the input is not an +// object, assign it to the property named by 'wrap' +const getOptions = (input, { copy, wrap }) => { + const result = {} + + if (input && typeof input === 'object') { + for (const prop of copy) { + if (input[prop] !== undefined) { + result[prop] = input[prop] + } + } + } else { + result[wrap] = input + } + + return result +} + +module.exports = getOptions diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/common/node.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/common/node.js new file mode 100644 index 0000000..4d13bc0 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/common/node.js @@ -0,0 +1,9 @@ +const semver = require('semver') + +const satisfies = (range) => { + return semver.satisfies(process.version, range, { includePrerelease: true }) +} + +module.exports = { + satisfies, +} diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/common/owner.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/common/owner.js new file mode 100644 index 0000000..e3468b0 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/common/owner.js @@ -0,0 +1,92 @@ +const { dirname, resolve } = require('path') + +const fileURLToPath = require('./file-url-to-path/index.js') +const fs = require('../fs.js') + +// given a path, find the owner of the nearest parent +const find = async (path) => { + // if we have no getuid, permissions are irrelevant on this platform + if (!process.getuid) { + return {} + } + + // fs methods accept URL objects with a scheme of file: so we need to unwrap + // those into an actual path string before we can resolve it + const resolved = path != null && path.href && path.origin + ? resolve(fileURLToPath(path)) + : resolve(path) + + let stat + + try { + stat = await fs.lstat(resolved) + } finally { + // if we got a stat, return its contents + if (stat) { + return { uid: stat.uid, gid: stat.gid } + } + + // try the parent directory + if (resolved !== dirname(resolved)) { + return find(dirname(resolved)) + } + + // no more parents, never got a stat, just return an empty object + return {} + } +} + +// given a path, uid, and gid update the ownership of the path if necessary +const update = async (path, uid, gid) => { + // nothing to update, just exit + if (uid === undefined && gid === undefined) { + return + } + + try { + // see if the permissions are already the same, if they are we don't + // need to do anything, so return early + const stat = await fs.stat(path) + if (uid === stat.uid && gid === stat.gid) { + return + } + } catch (err) {} + + try { + await fs.chown(path, uid, gid) + } catch (err) {} +} + +// accepts a `path` and the `owner` property of an options object and normalizes +// it into an object with numerical `uid` and `gid` +const validate = async (path, input) => { + let uid + let gid + + if (typeof input === 'string' || typeof input === 'number') { + uid = input + gid = input + } else if (input && typeof input === 'object') { + uid = input.uid + gid = input.gid + } + + if (uid === 'inherit' || gid === 'inherit') { + const owner = await find(path) + if (uid === 'inherit') { + uid = owner.uid + } + + if (gid === 'inherit') { + gid = owner.gid + } + } + + return { uid, gid } +} + +module.exports = { + find, + update, + validate, +} diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/copy-file.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/copy-file.js new file mode 100644 index 0000000..d9875ab --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/copy-file.js @@ -0,0 +1,22 @@ +const fs = require('./fs.js') +const getOptions = require('./common/get-options.js') +const owner = require('./common/owner.js') + +const copyFile = async (src, dest, opts) => { + const options = getOptions(opts, { + copy: ['mode', 'owner'], + wrap: 'mode', + }) + + const { uid, gid } = await owner.validate(dest, options.owner) + + // the node core method as of 16.5.0 does not support the mode being in an + // object, so we have to pass the mode value directly + const result = await fs.copyFile(src, dest, options.mode) + + await owner.update(dest, uid, gid) + + return result +} + +module.exports = copyFile diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/cp/LICENSE b/api.hyungi.net/node_modules/@npmcli/fs/lib/cp/LICENSE new file mode 100644 index 0000000..93546df --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/cp/LICENSE @@ -0,0 +1,15 @@ +(The MIT License) + +Copyright (c) 2011-2017 JP Richardson + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files +(the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, + merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/cp/index.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/cp/index.js new file mode 100644 index 0000000..5da4739 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/cp/index.js @@ -0,0 +1,22 @@ +const fs = require('../fs.js') +const getOptions = require('../common/get-options.js') +const node = require('../common/node.js') +const polyfill = require('./polyfill.js') + +// node 16.7.0 added fs.cp +const useNative = node.satisfies('>=16.7.0') + +const cp = async (src, dest, opts) => { + const options = getOptions(opts, { + copy: ['dereference', 'errorOnExist', 'filter', 'force', 'preserveTimestamps', 'recursive'], + }) + + // the polyfill is tested separately from this module, no need to hack + // process.version to try to trigger it just for coverage + // istanbul ignore next + return useNative + ? fs.cp(src, dest, options) + : polyfill(src, dest, options) +} + +module.exports = cp diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/cp/polyfill.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/cp/polyfill.js new file mode 100644 index 0000000..f83ccbf --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/cp/polyfill.js @@ -0,0 +1,428 @@ +// this file is a modified version of the code in node 17.2.0 +// which is, in turn, a modified version of the fs-extra module on npm +// node core changes: +// - Use of the assert module has been replaced with core's error system. +// - All code related to the glob dependency has been removed. +// - Bring your own custom fs module is not currently supported. +// - Some basic code cleanup. +// changes here: +// - remove all callback related code +// - drop sync support +// - change assertions back to non-internal methods (see options.js) +// - throws ENOTDIR when rmdir gets an ENOENT for a path that exists in Windows +'use strict' + +const { + ERR_FS_CP_DIR_TO_NON_DIR, + ERR_FS_CP_EEXIST, + ERR_FS_CP_EINVAL, + ERR_FS_CP_FIFO_PIPE, + ERR_FS_CP_NON_DIR_TO_DIR, + ERR_FS_CP_SOCKET, + ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY, + ERR_FS_CP_UNKNOWN, + ERR_FS_EISDIR, + ERR_INVALID_ARG_TYPE, +} = require('../errors.js') +const { + constants: { + errno: { + EEXIST, + EISDIR, + EINVAL, + ENOTDIR, + }, + }, +} = require('os') +const { + chmod, + copyFile, + lstat, + mkdir, + readdir, + readlink, + stat, + symlink, + unlink, + utimes, +} = require('../fs.js') +const { + dirname, + isAbsolute, + join, + parse, + resolve, + sep, + toNamespacedPath, +} = require('path') +const { fileURLToPath } = require('url') + +const defaultOptions = { + dereference: false, + errorOnExist: false, + filter: undefined, + force: true, + preserveTimestamps: false, + recursive: false, +} + +async function cp (src, dest, opts) { + if (opts != null && typeof opts !== 'object') { + throw new ERR_INVALID_ARG_TYPE('options', ['Object'], opts) + } + return cpFn( + toNamespacedPath(getValidatedPath(src)), + toNamespacedPath(getValidatedPath(dest)), + { ...defaultOptions, ...opts }) +} + +function getValidatedPath (fileURLOrPath) { + const path = fileURLOrPath != null && fileURLOrPath.href + && fileURLOrPath.origin + ? fileURLToPath(fileURLOrPath) + : fileURLOrPath + return path +} + +async function cpFn (src, dest, opts) { + // Warn about using preserveTimestamps on 32-bit node + // istanbul ignore next + if (opts.preserveTimestamps && process.arch === 'ia32') { + const warning = 'Using the preserveTimestamps option in 32-bit ' + + 'node is not recommended' + process.emitWarning(warning, 'TimestampPrecisionWarning') + } + const stats = await checkPaths(src, dest, opts) + const { srcStat, destStat } = stats + await checkParentPaths(src, srcStat, dest) + if (opts.filter) { + return handleFilter(checkParentDir, destStat, src, dest, opts) + } + return checkParentDir(destStat, src, dest, opts) +} + +async function checkPaths (src, dest, opts) { + const { 0: srcStat, 1: destStat } = await getStats(src, dest, opts) + if (destStat) { + if (areIdentical(srcStat, destStat)) { + throw new ERR_FS_CP_EINVAL({ + message: 'src and dest cannot be the same', + path: dest, + syscall: 'cp', + errno: EINVAL, + }) + } + if (srcStat.isDirectory() && !destStat.isDirectory()) { + throw new ERR_FS_CP_DIR_TO_NON_DIR({ + message: `cannot overwrite directory ${src} ` + + `with non-directory ${dest}`, + path: dest, + syscall: 'cp', + errno: EISDIR, + }) + } + if (!srcStat.isDirectory() && destStat.isDirectory()) { + throw new ERR_FS_CP_NON_DIR_TO_DIR({ + message: `cannot overwrite non-directory ${src} ` + + `with directory ${dest}`, + path: dest, + syscall: 'cp', + errno: ENOTDIR, + }) + } + } + + if (srcStat.isDirectory() && isSrcSubdir(src, dest)) { + throw new ERR_FS_CP_EINVAL({ + message: `cannot copy ${src} to a subdirectory of self ${dest}`, + path: dest, + syscall: 'cp', + errno: EINVAL, + }) + } + return { srcStat, destStat } +} + +function areIdentical (srcStat, destStat) { + return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && + destStat.dev === srcStat.dev +} + +function getStats (src, dest, opts) { + const statFunc = opts.dereference ? + (file) => stat(file, { bigint: true }) : + (file) => lstat(file, { bigint: true }) + return Promise.all([ + statFunc(src), + statFunc(dest).catch((err) => { + // istanbul ignore next: unsure how to cover. + if (err.code === 'ENOENT') { + return null + } + // istanbul ignore next: unsure how to cover. + throw err + }), + ]) +} + +async function checkParentDir (destStat, src, dest, opts) { + const destParent = dirname(dest) + const dirExists = await pathExists(destParent) + if (dirExists) { + return getStatsForCopy(destStat, src, dest, opts) + } + await mkdir(destParent, { recursive: true }) + return getStatsForCopy(destStat, src, dest, opts) +} + +function pathExists (dest) { + return stat(dest).then( + () => true, + // istanbul ignore next: not sure when this would occur + (err) => (err.code === 'ENOENT' ? false : Promise.reject(err))) +} + +// Recursively check if dest parent is a subdirectory of src. +// It works for all file types including symlinks since it +// checks the src and dest inodes. It starts from the deepest +// parent and stops once it reaches the src parent or the root path. +async function checkParentPaths (src, srcStat, dest) { + const srcParent = resolve(dirname(src)) + const destParent = resolve(dirname(dest)) + if (destParent === srcParent || destParent === parse(destParent).root) { + return + } + let destStat + try { + destStat = await stat(destParent, { bigint: true }) + } catch (err) { + // istanbul ignore else: not sure when this would occur + if (err.code === 'ENOENT') { + return + } + // istanbul ignore next: not sure when this would occur + throw err + } + if (areIdentical(srcStat, destStat)) { + throw new ERR_FS_CP_EINVAL({ + message: `cannot copy ${src} to a subdirectory of self ${dest}`, + path: dest, + syscall: 'cp', + errno: EINVAL, + }) + } + return checkParentPaths(src, srcStat, destParent) +} + +const normalizePathToArray = (path) => + resolve(path).split(sep).filter(Boolean) + +// Return true if dest is a subdir of src, otherwise false. +// It only checks the path strings. +function isSrcSubdir (src, dest) { + const srcArr = normalizePathToArray(src) + const destArr = normalizePathToArray(dest) + return srcArr.every((cur, i) => destArr[i] === cur) +} + +async function handleFilter (onInclude, destStat, src, dest, opts, cb) { + const include = await opts.filter(src, dest) + if (include) { + return onInclude(destStat, src, dest, opts, cb) + } +} + +function startCopy (destStat, src, dest, opts) { + if (opts.filter) { + return handleFilter(getStatsForCopy, destStat, src, dest, opts) + } + return getStatsForCopy(destStat, src, dest, opts) +} + +async function getStatsForCopy (destStat, src, dest, opts) { + const statFn = opts.dereference ? stat : lstat + const srcStat = await statFn(src) + // istanbul ignore else: can't portably test FIFO + if (srcStat.isDirectory() && opts.recursive) { + return onDir(srcStat, destStat, src, dest, opts) + } else if (srcStat.isDirectory()) { + throw new ERR_FS_EISDIR({ + message: `${src} is a directory (not copied)`, + path: src, + syscall: 'cp', + errno: EINVAL, + }) + } else if (srcStat.isFile() || + srcStat.isCharacterDevice() || + srcStat.isBlockDevice()) { + return onFile(srcStat, destStat, src, dest, opts) + } else if (srcStat.isSymbolicLink()) { + return onLink(destStat, src, dest) + } else if (srcStat.isSocket()) { + throw new ERR_FS_CP_SOCKET({ + message: `cannot copy a socket file: ${dest}`, + path: dest, + syscall: 'cp', + errno: EINVAL, + }) + } else if (srcStat.isFIFO()) { + throw new ERR_FS_CP_FIFO_PIPE({ + message: `cannot copy a FIFO pipe: ${dest}`, + path: dest, + syscall: 'cp', + errno: EINVAL, + }) + } + // istanbul ignore next: should be unreachable + throw new ERR_FS_CP_UNKNOWN({ + message: `cannot copy an unknown file type: ${dest}`, + path: dest, + syscall: 'cp', + errno: EINVAL, + }) +} + +function onFile (srcStat, destStat, src, dest, opts) { + if (!destStat) { + return _copyFile(srcStat, src, dest, opts) + } + return mayCopyFile(srcStat, src, dest, opts) +} + +async function mayCopyFile (srcStat, src, dest, opts) { + if (opts.force) { + await unlink(dest) + return _copyFile(srcStat, src, dest, opts) + } else if (opts.errorOnExist) { + throw new ERR_FS_CP_EEXIST({ + message: `${dest} already exists`, + path: dest, + syscall: 'cp', + errno: EEXIST, + }) + } +} + +async function _copyFile (srcStat, src, dest, opts) { + await copyFile(src, dest) + if (opts.preserveTimestamps) { + return handleTimestampsAndMode(srcStat.mode, src, dest) + } + return setDestMode(dest, srcStat.mode) +} + +async function handleTimestampsAndMode (srcMode, src, dest) { + // Make sure the file is writable before setting the timestamp + // otherwise open fails with EPERM when invoked with 'r+' + // (through utimes call) + if (fileIsNotWritable(srcMode)) { + await makeFileWritable(dest, srcMode) + return setDestTimestampsAndMode(srcMode, src, dest) + } + return setDestTimestampsAndMode(srcMode, src, dest) +} + +function fileIsNotWritable (srcMode) { + return (srcMode & 0o200) === 0 +} + +function makeFileWritable (dest, srcMode) { + return setDestMode(dest, srcMode | 0o200) +} + +async function setDestTimestampsAndMode (srcMode, src, dest) { + await setDestTimestamps(src, dest) + return setDestMode(dest, srcMode) +} + +function setDestMode (dest, srcMode) { + return chmod(dest, srcMode) +} + +async function setDestTimestamps (src, dest) { + // The initial srcStat.atime cannot be trusted + // because it is modified by the read(2) system call + // (See https://nodejs.org/api/fs.html#fs_stat_time_values) + const updatedSrcStat = await stat(src) + return utimes(dest, updatedSrcStat.atime, updatedSrcStat.mtime) +} + +function onDir (srcStat, destStat, src, dest, opts) { + if (!destStat) { + return mkDirAndCopy(srcStat.mode, src, dest, opts) + } + return copyDir(src, dest, opts) +} + +async function mkDirAndCopy (srcMode, src, dest, opts) { + await mkdir(dest) + await copyDir(src, dest, opts) + return setDestMode(dest, srcMode) +} + +async function copyDir (src, dest, opts) { + const dir = await readdir(src) + for (let i = 0; i < dir.length; i++) { + const item = dir[i] + const srcItem = join(src, item) + const destItem = join(dest, item) + const { destStat } = await checkPaths(srcItem, destItem, opts) + await startCopy(destStat, srcItem, destItem, opts) + } +} + +async function onLink (destStat, src, dest) { + let resolvedSrc = await readlink(src) + if (!isAbsolute(resolvedSrc)) { + resolvedSrc = resolve(dirname(src), resolvedSrc) + } + if (!destStat) { + return symlink(resolvedSrc, dest) + } + let resolvedDest + try { + resolvedDest = await readlink(dest) + } catch (err) { + // Dest exists and is a regular file or directory, + // Windows may throw UNKNOWN error. If dest already exists, + // fs throws error anyway, so no need to guard against it here. + // istanbul ignore next: can only test on windows + if (err.code === 'EINVAL' || err.code === 'UNKNOWN') { + return symlink(resolvedSrc, dest) + } + // istanbul ignore next: should not be possible + throw err + } + if (!isAbsolute(resolvedDest)) { + resolvedDest = resolve(dirname(dest), resolvedDest) + } + if (isSrcSubdir(resolvedSrc, resolvedDest)) { + throw new ERR_FS_CP_EINVAL({ + message: `cannot copy ${resolvedSrc} to a subdirectory of self ` + + `${resolvedDest}`, + path: dest, + syscall: 'cp', + errno: EINVAL, + }) + } + // Do not copy if src is a subdir of dest since unlinking + // dest in this case would result in removing src contents + // and therefore a broken symlink would be created. + const srcStat = await stat(src) + if (srcStat.isDirectory() && isSrcSubdir(resolvedDest, resolvedSrc)) { + throw new ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY({ + message: `cannot overwrite ${resolvedDest} with ${resolvedSrc}`, + path: dest, + syscall: 'cp', + errno: EINVAL, + }) + } + return copyLink(resolvedSrc, dest) +} + +async function copyLink (resolvedSrc, dest) { + await unlink(dest) + return symlink(resolvedSrc, dest) +} + +module.exports = cp diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/errors.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/errors.js new file mode 100644 index 0000000..1cd1e05 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/errors.js @@ -0,0 +1,129 @@ +'use strict' +const { inspect } = require('util') + +// adapted from node's internal/errors +// https://github.com/nodejs/node/blob/c8a04049/lib/internal/errors.js + +// close copy of node's internal SystemError class. +class SystemError { + constructor (code, prefix, context) { + // XXX context.code is undefined in all constructors used in cp/polyfill + // that may be a bug copied from node, maybe the constructor should use + // `code` not `errno`? nodejs/node#41104 + let message = `${prefix}: ${context.syscall} returned ` + + `${context.code} (${context.message})` + + if (context.path !== undefined) { + message += ` ${context.path}` + } + if (context.dest !== undefined) { + message += ` => ${context.dest}` + } + + this.code = code + Object.defineProperties(this, { + name: { + value: 'SystemError', + enumerable: false, + writable: true, + configurable: true, + }, + message: { + value: message, + enumerable: false, + writable: true, + configurable: true, + }, + info: { + value: context, + enumerable: true, + configurable: true, + writable: false, + }, + errno: { + get () { + return context.errno + }, + set (value) { + context.errno = value + }, + enumerable: true, + configurable: true, + }, + syscall: { + get () { + return context.syscall + }, + set (value) { + context.syscall = value + }, + enumerable: true, + configurable: true, + }, + }) + + if (context.path !== undefined) { + Object.defineProperty(this, 'path', { + get () { + return context.path + }, + set (value) { + context.path = value + }, + enumerable: true, + configurable: true, + }) + } + + if (context.dest !== undefined) { + Object.defineProperty(this, 'dest', { + get () { + return context.dest + }, + set (value) { + context.dest = value + }, + enumerable: true, + configurable: true, + }) + } + } + + toString () { + return `${this.name} [${this.code}]: ${this.message}` + } + + [Symbol.for('nodejs.util.inspect.custom')] (_recurseTimes, ctx) { + return inspect(this, { + ...ctx, + getters: true, + customInspect: false, + }) + } +} + +function E (code, message) { + module.exports[code] = class NodeError extends SystemError { + constructor (ctx) { + super(code, message, ctx) + } + } +} + +E('ERR_FS_CP_DIR_TO_NON_DIR', 'Cannot overwrite directory with non-directory') +E('ERR_FS_CP_EEXIST', 'Target already exists') +E('ERR_FS_CP_EINVAL', 'Invalid src or dest') +E('ERR_FS_CP_FIFO_PIPE', 'Cannot copy a FIFO pipe') +E('ERR_FS_CP_NON_DIR_TO_DIR', 'Cannot overwrite non-directory with directory') +E('ERR_FS_CP_SOCKET', 'Cannot copy a socket file') +E('ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY', 'Cannot overwrite symlink in subdirectory of self') +E('ERR_FS_CP_UNKNOWN', 'Cannot copy an unknown file type') +E('ERR_FS_EISDIR', 'Path is a directory') + +module.exports.ERR_INVALID_ARG_TYPE = class ERR_INVALID_ARG_TYPE extends Error { + constructor (name, expected, actual) { + super() + this.code = 'ERR_INVALID_ARG_TYPE' + this.message = `The ${name} argument must be ${expected}. Received ${typeof actual}` + } +} diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/fs.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/fs.js new file mode 100644 index 0000000..29e5fb5 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/fs.js @@ -0,0 +1,8 @@ +const fs = require('fs') +const promisify = require('@gar/promisify') + +// this module returns the core fs module wrapped in a proxy that promisifies +// method calls within the getter. we keep it in a separate module so that the +// overridden methods have a consistent way to get to promisified fs methods +// without creating a circular dependency +module.exports = promisify(fs) diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/index.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/index.js new file mode 100644 index 0000000..e40d748 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/index.js @@ -0,0 +1,10 @@ +module.exports = { + ...require('./fs.js'), + copyFile: require('./copy-file.js'), + cp: require('./cp/index.js'), + mkdir: require('./mkdir/index.js'), + mkdtemp: require('./mkdtemp.js'), + rm: require('./rm/index.js'), + withTempDir: require('./with-temp-dir.js'), + writeFile: require('./write-file.js'), +} diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/mkdir/index.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/mkdir/index.js new file mode 100644 index 0000000..04ff447 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/mkdir/index.js @@ -0,0 +1,32 @@ +const fs = require('../fs.js') +const getOptions = require('../common/get-options.js') +const node = require('../common/node.js') +const owner = require('../common/owner.js') + +const polyfill = require('./polyfill.js') + +// node 10.12.0 added the options parameter, which allows recursive and mode +// properties to be passed +const useNative = node.satisfies('>=10.12.0') + +// extends mkdir with the ability to specify an owner of the new dir +const mkdir = async (path, opts) => { + const options = getOptions(opts, { + copy: ['mode', 'recursive', 'owner'], + wrap: 'mode', + }) + const { uid, gid } = await owner.validate(path, options.owner) + + // the polyfill is tested separately from this module, no need to hack + // process.version to try to trigger it just for coverage + // istanbul ignore next + const result = useNative + ? await fs.mkdir(path, options) + : await polyfill(path, options) + + await owner.update(path, uid, gid) + + return result +} + +module.exports = mkdir diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/mkdir/polyfill.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/mkdir/polyfill.js new file mode 100644 index 0000000..4f8e6f0 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/mkdir/polyfill.js @@ -0,0 +1,81 @@ +const { dirname } = require('path') + +const fileURLToPath = require('../common/file-url-to-path/index.js') +const fs = require('../fs.js') + +const defaultOptions = { + mode: 0o777, + recursive: false, +} + +const mkdir = async (path, opts) => { + const options = { ...defaultOptions, ...opts } + + // if we're not in recursive mode, just call the real mkdir with the path and + // the mode option only + if (!options.recursive) { + return fs.mkdir(path, options.mode) + } + + const makeDirectory = async (dir, mode) => { + // we can't use dirname directly since these functions support URL + // objects with the file: protocol as the path input, so first we get a + // string path, then we can call dirname on that + const parent = dir != null && dir.href && dir.origin + ? dirname(fileURLToPath(dir)) + : dirname(dir) + + // if the parent is the dir itself, try to create it. anything but EISDIR + // should be rethrown + if (parent === dir) { + try { + await fs.mkdir(dir, opts) + } catch (err) { + if (err.code !== 'EISDIR') { + throw err + } + } + return undefined + } + + try { + await fs.mkdir(dir, mode) + return dir + } catch (err) { + // ENOENT means the parent wasn't there, so create that + if (err.code === 'ENOENT') { + const made = await makeDirectory(parent, mode) + await makeDirectory(dir, mode) + // return the shallowest path we created, i.e. the result of creating + // the parent + return made + } + + // an EEXIST means there's already something there + // an EROFS means we have a read-only filesystem and can't create a dir + // any other error is fatal and we should give up now + if (err.code !== 'EEXIST' && err.code !== 'EROFS') { + throw err + } + + // stat the directory, if the result is a directory, then we successfully + // created this one so return its path. otherwise, we reject with the + // original error by ignoring the error in the catch + try { + const stat = await fs.stat(dir) + if (stat.isDirectory()) { + // if it already existed, we didn't create anything so return + // undefined + return undefined + } + } catch (_) {} + + // if the thing that's there isn't a directory, then just re-throw + throw err + } + } + + return makeDirectory(path, options.mode) +} + +module.exports = mkdir diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/mkdtemp.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/mkdtemp.js new file mode 100644 index 0000000..b7f0780 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/mkdtemp.js @@ -0,0 +1,28 @@ +const { dirname, sep } = require('path') + +const fs = require('./fs.js') +const getOptions = require('./common/get-options.js') +const owner = require('./common/owner.js') + +const mkdtemp = async (prefix, opts) => { + const options = getOptions(opts, { + copy: ['encoding', 'owner'], + wrap: 'encoding', + }) + + // mkdtemp relies on the trailing path separator to indicate if it should + // create a directory inside of the prefix. if that's the case then the root + // we infer ownership from is the prefix itself, otherwise it's the dirname + // /tmp -> /tmpABCDEF, infers from / + // /tmp/ -> /tmp/ABCDEF, infers from /tmp + const root = prefix.endsWith(sep) ? prefix : dirname(prefix) + const { uid, gid } = await owner.validate(root, options.owner) + + const result = await fs.mkdtemp(prefix, options) + + await owner.update(result, uid, gid) + + return result +} + +module.exports = mkdtemp diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/rm/index.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/rm/index.js new file mode 100644 index 0000000..cb81fbd --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/rm/index.js @@ -0,0 +1,22 @@ +const fs = require('../fs.js') +const getOptions = require('../common/get-options.js') +const node = require('../common/node.js') +const polyfill = require('./polyfill.js') + +// node 14.14.0 added fs.rm, which allows both the force and recursive options +const useNative = node.satisfies('>=14.14.0') + +const rm = async (path, opts) => { + const options = getOptions(opts, { + copy: ['retryDelay', 'maxRetries', 'recursive', 'force'], + }) + + // the polyfill is tested separately from this module, no need to hack + // process.version to try to trigger it just for coverage + // istanbul ignore next + return useNative + ? fs.rm(path, options) + : polyfill(path, options) +} + +module.exports = rm diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/rm/polyfill.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/rm/polyfill.js new file mode 100644 index 0000000..a25c174 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/rm/polyfill.js @@ -0,0 +1,239 @@ +// this file is a modified version of the code in node core >=14.14.0 +// which is, in turn, a modified version of the rimraf module on npm +// node core changes: +// - Use of the assert module has been replaced with core's error system. +// - All code related to the glob dependency has been removed. +// - Bring your own custom fs module is not currently supported. +// - Some basic code cleanup. +// changes here: +// - remove all callback related code +// - drop sync support +// - change assertions back to non-internal methods (see options.js) +// - throws ENOTDIR when rmdir gets an ENOENT for a path that exists in Windows +const errnos = require('os').constants.errno +const { join } = require('path') +const fs = require('../fs.js') + +// error codes that mean we need to remove contents +const notEmptyCodes = new Set([ + 'ENOTEMPTY', + 'EEXIST', + 'EPERM', +]) + +// error codes we can retry later +const retryCodes = new Set([ + 'EBUSY', + 'EMFILE', + 'ENFILE', + 'ENOTEMPTY', + 'EPERM', +]) + +const isWindows = process.platform === 'win32' + +const defaultOptions = { + retryDelay: 100, + maxRetries: 0, + recursive: false, + force: false, +} + +// this is drastically simplified, but should be roughly equivalent to what +// node core throws +class ERR_FS_EISDIR extends Error { + constructor (path) { + super() + this.info = { + code: 'EISDIR', + message: 'is a directory', + path, + syscall: 'rm', + errno: errnos.EISDIR, + } + this.name = 'SystemError' + this.code = 'ERR_FS_EISDIR' + this.errno = errnos.EISDIR + this.syscall = 'rm' + this.path = path + this.message = `Path is a directory: ${this.syscall} returned ` + + `${this.info.code} (is a directory) ${path}` + } + + toString () { + return `${this.name} [${this.code}]: ${this.message}` + } +} + +class ENOTDIR extends Error { + constructor (path) { + super() + this.name = 'Error' + this.code = 'ENOTDIR' + this.errno = errnos.ENOTDIR + this.syscall = 'rmdir' + this.path = path + this.message = `not a directory, ${this.syscall} '${this.path}'` + } + + toString () { + return `${this.name}: ${this.code}: ${this.message}` + } +} + +// force is passed separately here because we respect it for the first entry +// into rimraf only, any further calls that are spawned as a result (i.e. to +// delete content within the target) will ignore ENOENT errors +const rimraf = async (path, options, isTop = false) => { + const force = isTop ? options.force : true + const stat = await fs.lstat(path) + .catch((err) => { + // we only ignore ENOENT if we're forcing this call + if (err.code === 'ENOENT' && force) { + return + } + + if (isWindows && err.code === 'EPERM') { + return fixEPERM(path, options, err, isTop) + } + + throw err + }) + + // no stat object here means either lstat threw an ENOENT, or lstat threw + // an EPERM and the fixPERM function took care of things. either way, we're + // already done, so return early + if (!stat) { + return + } + + if (stat.isDirectory()) { + return rmdir(path, options, null, isTop) + } + + return fs.unlink(path) + .catch((err) => { + if (err.code === 'ENOENT' && force) { + return + } + + if (err.code === 'EISDIR') { + return rmdir(path, options, err, isTop) + } + + if (err.code === 'EPERM') { + // in windows, we handle this through fixEPERM which will also try to + // delete things again. everywhere else since deleting the target as a + // file didn't work we go ahead and try to delete it as a directory + return isWindows + ? fixEPERM(path, options, err, isTop) + : rmdir(path, options, err, isTop) + } + + throw err + }) +} + +const fixEPERM = async (path, options, originalErr, isTop) => { + const force = isTop ? options.force : true + const targetMissing = await fs.chmod(path, 0o666) + .catch((err) => { + if (err.code === 'ENOENT' && force) { + return true + } + + throw originalErr + }) + + // got an ENOENT above, return now. no file = no problem + if (targetMissing) { + return + } + + // this function does its own lstat rather than calling rimraf again to avoid + // infinite recursion for a repeating EPERM + const stat = await fs.lstat(path) + .catch((err) => { + if (err.code === 'ENOENT' && force) { + return + } + + throw originalErr + }) + + if (!stat) { + return + } + + if (stat.isDirectory()) { + return rmdir(path, options, originalErr, isTop) + } + + return fs.unlink(path) +} + +const rmdir = async (path, options, originalErr, isTop) => { + if (!options.recursive && isTop) { + throw originalErr || new ERR_FS_EISDIR(path) + } + const force = isTop ? options.force : true + + return fs.rmdir(path) + .catch(async (err) => { + // in Windows, calling rmdir on a file path will fail with ENOENT rather + // than ENOTDIR. to determine if that's what happened, we have to do + // another lstat on the path. if the path isn't actually gone, we throw + // away the ENOENT and replace it with our own ENOTDIR + if (isWindows && err.code === 'ENOENT') { + const stillExists = await fs.lstat(path).then(() => true, () => false) + if (stillExists) { + err = new ENOTDIR(path) + } + } + + // not there, not a problem + if (err.code === 'ENOENT' && force) { + return + } + + // we may not have originalErr if lstat tells us our target is a + // directory but that changes before we actually remove it, so + // only throw it here if it's set + if (originalErr && err.code === 'ENOTDIR') { + throw originalErr + } + + // the directory isn't empty, remove the contents and try again + if (notEmptyCodes.has(err.code)) { + const files = await fs.readdir(path) + await Promise.all(files.map((file) => { + const target = join(path, file) + return rimraf(target, options) + })) + return fs.rmdir(path) + } + + throw err + }) +} + +const rm = async (path, opts) => { + const options = { ...defaultOptions, ...opts } + let retries = 0 + + const errHandler = async (err) => { + if (retryCodes.has(err.code) && ++retries < options.maxRetries) { + const delay = retries * options.retryDelay + await promiseTimeout(delay) + return rimraf(path, options, true).catch(errHandler) + } + + throw err + } + + return rimraf(path, options, true).catch(errHandler) +} + +const promiseTimeout = (ms) => new Promise((r) => setTimeout(r, ms)) + +module.exports = rm diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/with-temp-dir.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/with-temp-dir.js new file mode 100644 index 0000000..353d555 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/with-temp-dir.js @@ -0,0 +1,39 @@ +const { join, sep } = require('path') + +const getOptions = require('./common/get-options.js') +const mkdir = require('./mkdir/index.js') +const mkdtemp = require('./mkdtemp.js') +const rm = require('./rm/index.js') + +// create a temp directory, ensure its permissions match its parent, then call +// the supplied function passing it the path to the directory. clean up after +// the function finishes, whether it throws or not +const withTempDir = async (root, fn, opts) => { + const options = getOptions(opts, { + copy: ['tmpPrefix'], + }) + // create the directory, and fix its ownership + await mkdir(root, { recursive: true, owner: 'inherit' }) + + const target = await mkdtemp(join(`${root}${sep}`, options.tmpPrefix || ''), { owner: 'inherit' }) + let err + let result + + try { + result = await fn(target) + } catch (_err) { + err = _err + } + + try { + await rm(target, { force: true, recursive: true }) + } catch (err) {} + + if (err) { + throw err + } + + return result +} + +module.exports = withTempDir diff --git a/api.hyungi.net/node_modules/@npmcli/fs/lib/write-file.js b/api.hyungi.net/node_modules/@npmcli/fs/lib/write-file.js new file mode 100644 index 0000000..01de531 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/lib/write-file.js @@ -0,0 +1,19 @@ +const fs = require('./fs.js') +const getOptions = require('./common/get-options.js') +const owner = require('./common/owner.js') + +const writeFile = async (file, data, opts) => { + const options = getOptions(opts, { + copy: ['encoding', 'mode', 'flag', 'signal', 'owner'], + wrap: 'encoding', + }) + const { uid, gid } = await owner.validate(file, options.owner) + + const result = await fs.writeFile(file, data, options) + + await owner.update(file, uid, gid) + + return result +} + +module.exports = writeFile diff --git a/api.hyungi.net/node_modules/@npmcli/fs/package.json b/api.hyungi.net/node_modules/@npmcli/fs/package.json new file mode 100644 index 0000000..0296aa7 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/fs/package.json @@ -0,0 +1,38 @@ +{ + "name": "@npmcli/fs", + "version": "1.1.1", + "description": "filesystem utilities for the npm cli", + "main": "lib/index.js", + "files": [ + "bin", + "lib" + ], + "scripts": { + "preversion": "npm test", + "postversion": "npm publish", + "prepublishOnly": "git push origin --follow-tags", + "snap": "tap", + "test": "tap", + "npmclilint": "npmcli-lint", + "lint": "eslint '**/*.js'", + "lintfix": "npm run lint -- --fix", + "posttest": "npm run lint", + "postsnap": "npm run lintfix --", + "postlint": "npm-template-check" + }, + "keywords": [ + "npm", + "oss" + ], + "author": "GitHub Inc.", + "license": "ISC", + "devDependencies": { + "@npmcli/template-oss": "^2.3.1", + "tap": "^15.0.9" + }, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + }, + "templateVersion": "2.3.1" +} diff --git a/api.hyungi.net/node_modules/@npmcli/move-file/LICENSE.md b/api.hyungi.net/node_modules/@npmcli/move-file/LICENSE.md new file mode 100644 index 0000000..072bf20 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/LICENSE.md @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) Sindre Sorhus (https://sindresorhus.com) +Copyright (c) npm, 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/api.hyungi.net/node_modules/@npmcli/move-file/README.md b/api.hyungi.net/node_modules/@npmcli/move-file/README.md new file mode 100644 index 0000000..8a5a57f --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/README.md @@ -0,0 +1,69 @@ +# @npmcli/move-file + +A fork of [move-file](https://github.com/sindresorhus/move-file) with +compatibility with all node 10.x versions. + +> Move a file (or directory) + +The built-in +[`fs.rename()`](https://nodejs.org/api/fs.html#fs_fs_rename_oldpath_newpath_callback) +is just a JavaScript wrapper for the C `rename(2)` function, which doesn't +support moving files across partitions or devices. This module is what you +would have expected `fs.rename()` to be. + +## Highlights + +- Promise API. +- Supports moving a file across partitions and devices. +- Optionally prevent overwriting an existing file. +- Creates non-existent destination directories for you. +- Support for Node versions that lack built-in recursive `fs.mkdir()` +- Automatically recurses when source is a directory. + +## Install + +``` +$ npm install @npmcli/move-file +``` + +## Usage + +```js +const moveFile = require('@npmcli/move-file'); + +(async () => { + await moveFile('source/unicorn.png', 'destination/unicorn.png'); + console.log('The file has been moved'); +})(); +``` + +## API + +### moveFile(source, destination, options?) + +Returns a `Promise` that resolves when the file has been moved. + +### moveFile.sync(source, destination, options?) + +#### source + +Type: `string` + +File, or directory, you want to move. + +#### destination + +Type: `string` + +Where you want the file or directory moved. + +#### options + +Type: `object` + +##### overwrite + +Type: `boolean`\ +Default: `true` + +Overwrite existing destination file(s). diff --git a/api.hyungi.net/node_modules/@npmcli/move-file/index.js b/api.hyungi.net/node_modules/@npmcli/move-file/index.js new file mode 100644 index 0000000..95d1888 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/index.js @@ -0,0 +1,162 @@ +const { dirname, join, resolve, relative, isAbsolute } = require('path') +const rimraf_ = require('rimraf') +const { promisify } = require('util') +const { + access: access_, + accessSync, + copyFile: copyFile_, + copyFileSync, + unlink: unlink_, + unlinkSync, + readdir: readdir_, + readdirSync, + rename: rename_, + renameSync, + stat: stat_, + statSync, + lstat: lstat_, + lstatSync, + symlink: symlink_, + symlinkSync, + readlink: readlink_, + readlinkSync +} = require('fs') + +const access = promisify(access_) +const copyFile = promisify(copyFile_) +const unlink = promisify(unlink_) +const readdir = promisify(readdir_) +const rename = promisify(rename_) +const stat = promisify(stat_) +const lstat = promisify(lstat_) +const symlink = promisify(symlink_) +const readlink = promisify(readlink_) +const rimraf = promisify(rimraf_) +const rimrafSync = rimraf_.sync + +const mkdirp = require('mkdirp') + +const pathExists = async path => { + try { + await access(path) + return true + } catch (er) { + return er.code !== 'ENOENT' + } +} + +const pathExistsSync = path => { + try { + accessSync(path) + return true + } catch (er) { + return er.code !== 'ENOENT' + } +} + +const moveFile = async (source, destination, options = {}, root = true, symlinks = []) => { + if (!source || !destination) { + throw new TypeError('`source` and `destination` file required') + } + + options = { + overwrite: true, + ...options + } + + if (!options.overwrite && await pathExists(destination)) { + throw new Error(`The destination file exists: ${destination}`) + } + + await mkdirp(dirname(destination)) + + try { + await rename(source, destination) + } catch (error) { + if (error.code === 'EXDEV' || error.code === 'EPERM') { + const sourceStat = await lstat(source) + if (sourceStat.isDirectory()) { + const files = await readdir(source) + await Promise.all(files.map((file) => moveFile(join(source, file), join(destination, file), options, false, symlinks))) + } else if (sourceStat.isSymbolicLink()) { + symlinks.push({ source, destination }) + } else { + await copyFile(source, destination) + } + } else { + throw error + } + } + + if (root) { + await Promise.all(symlinks.map(async ({ source, destination }) => { + let target = await readlink(source) + // junction symlinks in windows will be absolute paths, so we need to make sure they point to the destination + if (isAbsolute(target)) + target = resolve(destination, relative(source, target)) + // try to determine what the actual file is so we can create the correct type of symlink in windows + let targetStat + try { + targetStat = await stat(resolve(dirname(source), target)) + } catch (err) {} + await symlink(target, destination, targetStat && targetStat.isDirectory() ? 'junction' : 'file') + })) + await rimraf(source) + } +} + +const moveFileSync = (source, destination, options = {}, root = true, symlinks = []) => { + if (!source || !destination) { + throw new TypeError('`source` and `destination` file required') + } + + options = { + overwrite: true, + ...options + } + + if (!options.overwrite && pathExistsSync(destination)) { + throw new Error(`The destination file exists: ${destination}`) + } + + mkdirp.sync(dirname(destination)) + + try { + renameSync(source, destination) + } catch (error) { + if (error.code === 'EXDEV' || error.code === 'EPERM') { + const sourceStat = lstatSync(source) + if (sourceStat.isDirectory()) { + const files = readdirSync(source) + for (const file of files) { + moveFileSync(join(source, file), join(destination, file), options, false, symlinks) + } + } else if (sourceStat.isSymbolicLink()) { + symlinks.push({ source, destination }) + } else { + copyFileSync(source, destination) + } + } else { + throw error + } + } + + if (root) { + for (const { source, destination } of symlinks) { + let target = readlinkSync(source) + // junction symlinks in windows will be absolute paths, so we need to make sure they point to the destination + if (isAbsolute(target)) + target = resolve(destination, relative(source, target)) + // try to determine what the actual file is so we can create the correct type of symlink in windows + let targetStat + try { + targetStat = statSync(resolve(dirname(source), target)) + } catch (err) {} + symlinkSync(target, destination, targetStat && targetStat.isDirectory() ? 'junction' : 'file') + } + rimrafSync(source) + } +} + +module.exports = moveFile +module.exports.sync = moveFileSync diff --git a/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/CHANGELOG.md b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/CHANGELOG.md new file mode 100644 index 0000000..8145838 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/CHANGELOG.md @@ -0,0 +1,15 @@ +# Changers Lorgs! + +## 1.0 + +Full rewrite. Essentially a brand new module. + +- Return a promise instead of taking a callback. +- Use native `fs.mkdir(path, { recursive: true })` when available. +- Drop support for outdated Node.js versions. (Technically still works on + Node.js v8, but only 10 and above are officially supported.) + +## 0.x + +Original and most widely used recursive directory creation implementation +in JavaScript, dating back to 2010. diff --git a/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE new file mode 100644 index 0000000..13fcd15 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/LICENSE @@ -0,0 +1,21 @@ +Copyright James Halliday (mail@substack.net) and Isaac Z. Schlueter (i@izs.me) + +This project is free software 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/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js new file mode 100644 index 0000000..6e0aa8d --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/bin/cmd.js @@ -0,0 +1,68 @@ +#!/usr/bin/env node + +const usage = () => ` +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 If a directory needs to be created, set the mode as an octal + --mode= permission string. + + -v --version Print the mkdirp version number + + -h --help Print this helpful banner + + -p --print Print the first directories created for each path provided + + --manual Use manual implementation, even if native is available +` + +const dirs = [] +const opts = {} +let print = false +let dashdash = false +let manual = false +for (const arg of process.argv.slice(2)) { + if (dashdash) + dirs.push(arg) + else if (arg === '--') + dashdash = true + else if (arg === '--manual') + manual = true + else if (/^-h/.test(arg) || /^--help/.test(arg)) { + console.log(usage()) + process.exit(0) + } else if (arg === '-v' || arg === '--version') { + console.log(require('../package.json').version) + process.exit(0) + } else if (arg === '-p' || arg === '--print') { + print = true + } else if (/^-m/.test(arg) || /^--mode=/.test(arg)) { + const mode = parseInt(arg.replace(/^(-m|--mode=)/, ''), 8) + if (isNaN(mode)) { + console.error(`invalid mode argument: ${arg}\nMust be an octal number.`) + process.exit(1) + } + opts.mode = mode + } else + dirs.push(arg) +} + +const mkdirp = require('../') +const impl = manual ? mkdirp.manual : mkdirp +if (dirs.length === 0) + console.error(usage()) + +Promise.all(dirs.map(dir => impl(dir, opts))) + .then(made => print ? made.forEach(m => m && console.log(m)) : null) + .catch(er => { + console.error(er.message) + if (er.code) + console.error(' code: ' + er.code) + process.exit(1) + }) diff --git a/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js new file mode 100644 index 0000000..ad7a16c --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/index.js @@ -0,0 +1,31 @@ +const optsArg = require('./lib/opts-arg.js') +const pathArg = require('./lib/path-arg.js') + +const {mkdirpNative, mkdirpNativeSync} = require('./lib/mkdirp-native.js') +const {mkdirpManual, mkdirpManualSync} = require('./lib/mkdirp-manual.js') +const {useNative, useNativeSync} = require('./lib/use-native.js') + + +const mkdirp = (path, opts) => { + path = pathArg(path) + opts = optsArg(opts) + return useNative(opts) + ? mkdirpNative(path, opts) + : mkdirpManual(path, opts) +} + +const mkdirpSync = (path, opts) => { + path = pathArg(path) + opts = optsArg(opts) + return useNativeSync(opts) + ? mkdirpNativeSync(path, opts) + : mkdirpManualSync(path, opts) +} + +mkdirp.sync = mkdirpSync +mkdirp.native = (path, opts) => mkdirpNative(pathArg(path), optsArg(opts)) +mkdirp.manual = (path, opts) => mkdirpManual(pathArg(path), optsArg(opts)) +mkdirp.nativeSync = (path, opts) => mkdirpNativeSync(pathArg(path), optsArg(opts)) +mkdirp.manualSync = (path, opts) => mkdirpManualSync(pathArg(path), optsArg(opts)) + +module.exports = mkdirp diff --git a/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js new file mode 100644 index 0000000..022e492 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/find-made.js @@ -0,0 +1,29 @@ +const {dirname} = require('path') + +const findMade = (opts, parent, path = undefined) => { + // we never want the 'made' return value to be a root directory + if (path === parent) + return Promise.resolve() + + return opts.statAsync(parent).then( + st => st.isDirectory() ? path : undefined, // will fail later + er => er.code === 'ENOENT' + ? findMade(opts, dirname(parent), parent) + : undefined + ) +} + +const findMadeSync = (opts, parent, path = undefined) => { + if (path === parent) + return undefined + + try { + return opts.statSync(parent).isDirectory() ? path : undefined + } catch (er) { + return er.code === 'ENOENT' + ? findMadeSync(opts, dirname(parent), parent) + : undefined + } +} + +module.exports = {findMade, findMadeSync} diff --git a/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js new file mode 100644 index 0000000..2eb18cd --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-manual.js @@ -0,0 +1,64 @@ +const {dirname} = require('path') + +const mkdirpManual = (path, opts, made) => { + opts.recursive = false + const parent = dirname(path) + if (parent === path) { + return opts.mkdirAsync(path, opts).catch(er => { + // swallowed by recursive implementation on posix systems + // any other error is a failure + if (er.code !== 'EISDIR') + throw er + }) + } + + return opts.mkdirAsync(path, opts).then(() => made || path, er => { + if (er.code === 'ENOENT') + return mkdirpManual(parent, opts) + .then(made => mkdirpManual(path, opts, made)) + if (er.code !== 'EEXIST' && er.code !== 'EROFS') + throw er + return opts.statAsync(path).then(st => { + if (st.isDirectory()) + return made + else + throw er + }, () => { throw er }) + }) +} + +const mkdirpManualSync = (path, opts, made) => { + const parent = dirname(path) + opts.recursive = false + + if (parent === path) { + try { + return opts.mkdirSync(path, opts) + } catch (er) { + // swallowed by recursive implementation on posix systems + // any other error is a failure + if (er.code !== 'EISDIR') + throw er + else + return + } + } + + try { + opts.mkdirSync(path, opts) + return made || path + } catch (er) { + if (er.code === 'ENOENT') + return mkdirpManualSync(path, opts, mkdirpManualSync(parent, opts, made)) + if (er.code !== 'EEXIST' && er.code !== 'EROFS') + throw er + try { + if (!opts.statSync(path).isDirectory()) + throw er + } catch (_) { + throw er + } + } +} + +module.exports = {mkdirpManual, mkdirpManualSync} diff --git a/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js new file mode 100644 index 0000000..c7a6b69 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/mkdirp-native.js @@ -0,0 +1,39 @@ +const {dirname} = require('path') +const {findMade, findMadeSync} = require('./find-made.js') +const {mkdirpManual, mkdirpManualSync} = require('./mkdirp-manual.js') + +const mkdirpNative = (path, opts) => { + opts.recursive = true + const parent = dirname(path) + if (parent === path) + return opts.mkdirAsync(path, opts) + + return findMade(opts, path).then(made => + opts.mkdirAsync(path, opts).then(() => made) + .catch(er => { + if (er.code === 'ENOENT') + return mkdirpManual(path, opts) + else + throw er + })) +} + +const mkdirpNativeSync = (path, opts) => { + opts.recursive = true + const parent = dirname(path) + if (parent === path) + return opts.mkdirSync(path, opts) + + const made = findMadeSync(opts, path) + try { + opts.mkdirSync(path, opts) + return made + } catch (er) { + if (er.code === 'ENOENT') + return mkdirpManualSync(path, opts) + else + throw er + } +} + +module.exports = {mkdirpNative, mkdirpNativeSync} diff --git a/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js new file mode 100644 index 0000000..2fa4833 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/opts-arg.js @@ -0,0 +1,23 @@ +const { promisify } = require('util') +const fs = require('fs') +const optsArg = opts => { + if (!opts) + opts = { mode: 0o777, fs } + else if (typeof opts === 'object') + opts = { mode: 0o777, fs, ...opts } + else if (typeof opts === 'number') + opts = { mode: opts, fs } + else if (typeof opts === 'string') + opts = { mode: parseInt(opts, 8), fs } + else + throw new TypeError('invalid options argument') + + opts.mkdir = opts.mkdir || opts.fs.mkdir || fs.mkdir + opts.mkdirAsync = promisify(opts.mkdir) + opts.stat = opts.stat || opts.fs.stat || fs.stat + opts.statAsync = promisify(opts.stat) + opts.statSync = opts.statSync || opts.fs.statSync || fs.statSync + opts.mkdirSync = opts.mkdirSync || opts.fs.mkdirSync || fs.mkdirSync + return opts +} +module.exports = optsArg diff --git a/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js new file mode 100644 index 0000000..cc07de5 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/path-arg.js @@ -0,0 +1,29 @@ +const platform = process.env.__TESTING_MKDIRP_PLATFORM__ || process.platform +const { resolve, parse } = require('path') +const pathArg = path => { + if (/\0/.test(path)) { + // simulate same failure that node raises + throw Object.assign( + new TypeError('path must be a string without null bytes'), + { + path, + code: 'ERR_INVALID_ARG_VALUE', + } + ) + } + + path = resolve(path) + if (platform === 'win32') { + const badWinChars = /[*|"<>?:]/ + const {root} = parse(path) + if (badWinChars.test(path.substr(root.length))) { + throw Object.assign(new Error('Illegal characters in path.'), { + path, + code: 'EINVAL', + }) + } + } + + return path +} +module.exports = pathArg diff --git a/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js new file mode 100644 index 0000000..079361d --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/lib/use-native.js @@ -0,0 +1,10 @@ +const fs = require('fs') + +const version = process.env.__TESTING_MKDIRP_NODE_VERSION__ || process.version +const versArr = version.replace(/^v/, '').split('.') +const hasNative = +versArr[0] > 10 || +versArr[0] === 10 && +versArr[1] >= 12 + +const useNative = !hasNative ? () => false : opts => opts.mkdir === fs.mkdir +const useNativeSync = !hasNative ? () => false : opts => opts.mkdirSync === fs.mkdirSync + +module.exports = {useNative, useNativeSync} diff --git a/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json new file mode 100644 index 0000000..2913ed0 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/package.json @@ -0,0 +1,44 @@ +{ + "name": "mkdirp", + "description": "Recursively mkdir, like `mkdir -p`", + "version": "1.0.4", + "main": "index.js", + "keywords": [ + "mkdir", + "directory", + "make dir", + "make", + "dir", + "recursive", + "native" + ], + "repository": { + "type": "git", + "url": "https://github.com/isaacs/node-mkdirp.git" + }, + "scripts": { + "test": "tap", + "snap": "tap", + "preversion": "npm test", + "postversion": "npm publish", + "postpublish": "git push origin --follow-tags" + }, + "tap": { + "check-coverage": true, + "coverage-map": "map.js" + }, + "devDependencies": { + "require-inject": "^1.4.4", + "tap": "^14.10.7" + }, + "bin": "bin/cmd.js", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "files": [ + "bin", + "lib", + "index.js" + ] +} diff --git a/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown new file mode 100644 index 0000000..827de59 --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/node_modules/mkdirp/readme.markdown @@ -0,0 +1,266 @@ +# mkdirp + +Like `mkdir -p`, but in Node.js! + +Now with a modern API and no\* bugs! + +\* may contain some bugs + +# example + +## pow.js + +```js +const mkdirp = require('mkdirp') + +// return value is a Promise resolving to the first directory created +mkdirp('/tmp/foo/bar/baz').then(made => + console.log(`made directories, starting with ${made}`)) +``` + +Output (where `/tmp/foo` already exists) + +``` +made directories, starting with /tmp/foo/bar +``` + +Or, if you don't have time to wait around for promises: + +```js +const mkdirp = require('mkdirp') + +// return value is the first directory created +const made = mkdirp.sync('/tmp/foo/bar/baz') +console.log(`made directories, starting with ${made}`) +``` + +And now /tmp/foo/bar/baz exists, huzzah! + +# methods + +```js +const mkdirp = require('mkdirp') +``` + +## mkdirp(dir, [opts]) -> Promise + +Create a new directory and any necessary subdirectories at `dir` with octal +permission string `opts.mode`. If `opts` is a string or number, it will be +treated as the `opts.mode`. + +If `opts.mode` isn't specified, it defaults to `0o777 & +(~process.umask())`. + +Promise resolves to first directory `made` that had to be created, or +`undefined` if everything already exists. Promise rejects if any errors +are encountered. Note that, in the case of promise rejection, some +directories _may_ have been created, as recursive directory creation is not +an atomic operation. + +You can optionally pass in an alternate `fs` implementation by passing in +`opts.fs`. Your implementation should have `opts.fs.mkdir(path, opts, cb)` +and `opts.fs.stat(path, cb)`. + +You can also override just one or the other of `mkdir` and `stat` by +passing in `opts.stat` or `opts.mkdir`, or providing an `fs` option that +only overrides one of these. + +## mkdirp.sync(dir, opts) -> String|null + +Synchronously create a new directory and any necessary subdirectories at +`dir` with octal permission string `opts.mode`. If `opts` is a string or +number, it will be treated as the `opts.mode`. + +If `opts.mode` isn't specified, it defaults to `0o777 & +(~process.umask())`. + +Returns the first directory that had to be created, or undefined if +everything already exists. + +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)`. + +You can also override just one or the other of `mkdirSync` and `statSync` +by passing in `opts.statSync` or `opts.mkdirSync`, or providing an `fs` +option that only overrides one of these. + +## mkdirp.manual, mkdirp.manualSync + +Use the manual implementation (not the native one). This is the default +when the native implementation is not available or the stat/mkdir +implementation is overridden. + +## mkdirp.native, mkdirp.nativeSync + +Use the native implementation (not the manual one). This is the default +when the native implementation is available and stat/mkdir are not +overridden. + +# implementation + +On Node.js v10.12.0 and above, use the native `fs.mkdir(p, +{recursive:true})` option, unless `fs.mkdir`/`fs.mkdirSync` has been +overridden by an option. + +## native implementation + +- If the path is a root directory, then pass it to the underlying + implementation and return the result/error. (In this case, it'll either + succeed or fail, but we aren't actually creating any dirs.) +- Walk up the path statting each directory, to find the first path that + will be created, `made`. +- Call `fs.mkdir(path, { recursive: true })` (or `fs.mkdirSync`) +- If error, raise it to the caller. +- Return `made`. + +## manual implementation + +- Call underlying `fs.mkdir` implementation, with `recursive: false` +- If error: + - If path is a root directory, raise to the caller and do not handle it + - If ENOENT, mkdirp parent dir, store result as `made` + - stat(path) + - If error, raise original `mkdir` error + - If directory, return `made` + - Else, raise original `mkdir` error +- else + - return `undefined` if a root dir, or `made` if set, or `path` + +## windows vs unix caveat + +On Windows file systems, attempts to create a root directory (ie, a drive +letter or root UNC path) will fail. If the root directory exists, then it +will fail with `EPERM`. If the root directory does not exist, then it will +fail with `ENOENT`. + +On posix file systems, attempts to create a root directory (in recursive +mode) will succeed silently, as it is treated like just another directory +that already exists. (In non-recursive mode, of course, it fails with +`EEXIST`.) + +In order to preserve this system-specific behavior (and because it's not as +if we can create the parent of a root directory anyway), attempts to create +a root directory are passed directly to the `fs` implementation, and any +errors encountered are not handled. + +## native error caveat + +The native implementation (as of at least Node.js v13.4.0) does not provide +appropriate errors in some cases (see +[nodejs/node#31481](https://github.com/nodejs/node/issues/31481) and +[nodejs/node#28015](https://github.com/nodejs/node/issues/28015)). + +In order to work around this issue, the native implementation will fall +back to the manual implementation if an `ENOENT` error is encountered. + +# choosing a recursive mkdir implementation + +There are a few to choose from! Use the one that suits your needs best :D + +## use `fs.mkdir(path, {recursive: true}, cb)` if: + +- You wish to optimize performance even at the expense of other factors. +- You don't need to know the first dir created. +- You are ok with getting `ENOENT` as the error when some other problem is + the actual cause. +- You can limit your platforms to Node.js v10.12 and above. +- You're ok with using callbacks instead of promises. +- You don't need/want a CLI. +- You don't need to override the `fs` methods in use. + +## use this module (mkdirp 1.x) if: + +- You need to know the first directory that was created. +- You wish to use the native implementation if available, but fall back + when it's not. +- You prefer promise-returning APIs to callback-taking APIs. +- You want more useful error messages than the native recursive mkdir + provides (at least as of Node.js v13.4), and are ok with re-trying on + `ENOENT` to achieve this. +- You need (or at least, are ok with) a CLI. +- You need to override the `fs` methods in use. + +## use [`make-dir`](http://npm.im/make-dir) if: + +- You do not need to know the first dir created (and wish to save a few + `stat` calls when using the native implementation for this reason). +- You wish to use the native implementation if available, but fall back + when it's not. +- You prefer promise-returning APIs to callback-taking APIs. +- You are ok with occasionally getting `ENOENT` errors for failures that + are actually related to something other than a missing file system entry. +- You don't need/want a CLI. +- You need to override the `fs` methods in use. + +## use mkdirp 0.x if: + +- You need to know the first directory that was created. +- You need (or at least, are ok with) a CLI. +- You need to override the `fs` methods in use. +- You're ok with using callbacks instead of promises. +- You are not running on Windows, where the root-level ENOENT errors can + lead to infinite regress. +- You think vinyl just sounds warmer and richer for some weird reason. +- You are supporting truly ancient Node.js versions, before even the advent + of a `Promise` language primitive. (Please don't. You deserve better.) + +# cli + +This package also ships with a `mkdirp` command. + +``` +$ mkdirp -h + +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 If a directory needs to be created, set the mode as an octal + --mode= permission string. + + -v --version Print the mkdirp version number + + -h --help Print this helpful banner + + -p --print Print the first directories created for each path provided + + --manual Use manual implementation, even if native is available +``` + +# install + +With [npm](http://npmjs.org) do: + +``` +npm install mkdirp +``` + +to get the library locally, or + +``` +npm install -g mkdirp +``` + +to get the command everywhere, or + +``` +npx mkdirp ... +``` + +to run the command without installing it globally. + +# platform support + +This module works on node v8, but only v10 and above are officially +supported, as Node v8 reached its LTS end of life 2020-01-01, which is in +the past, as of this writing. + +# license + +MIT diff --git a/api.hyungi.net/node_modules/@npmcli/move-file/package.json b/api.hyungi.net/node_modules/@npmcli/move-file/package.json new file mode 100644 index 0000000..0c066db --- /dev/null +++ b/api.hyungi.net/node_modules/@npmcli/move-file/package.json @@ -0,0 +1,34 @@ +{ + "name": "@npmcli/move-file", + "version": "1.1.2", + "files": [ + "index.js" + ], + "description": "move a file (fork of move-file)", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "devDependencies": { + "require-inject": "^1.4.4", + "tap": "^14.10.7" + }, + "scripts": { + "test": "tap", + "snap": "tap", + "preversion": "npm test", + "postversion": "npm publish", + "prepublishOnly": "git push origin --follow-tags" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/npm/move-file" + }, + "tap": { + "check-coverage": true + }, + "license": "MIT", + "engines": { + "node": ">=10" + } +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/LICENSE b/api.hyungi.net/node_modules/@peculiar/asn1-android/LICENSE new file mode 100644 index 0000000..81f990d --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/README.md b/api.hyungi.net/node_modules/@peculiar/asn1-android/README.md new file mode 100644 index 0000000..9f81635 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/README.md @@ -0,0 +1,108 @@ +# `@peculiar/asn1-android` + +[![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://raw.githubusercontent.com/PeculiarVentures/asn1-schema/master/packages/android/LICENSE.md) +[![npm version](https://badge.fury.io/js/%40peculiar%2Fasn1-android.svg)](https://badge.fury.io/js/%40peculiar%2Fasn1-android) + +[![NPM](https://nodei.co/npm/@peculiar/asn1-android.png)](https://nodei.co/npm/@peculiar/asn1-android/) + +- [Android key attestation schema](https://source.android.com/security/keystore/attestation#schema) +- [Key attestation extension data schema](https://developer.android.com/privacy-and-security/security-key-attestation#key_attestation_ext_schema) +- [AttestationApplicationId](https://developer.android.com/privacy-and-security/security-key-attestation#key_attestation_ext_schema_attestationid) + +## KeyDescription and NonStandardKeyDescription + +The `KeyDescription` class in this library represents the ASN.1 schema for the Android Keystore Key Description structure. However, in practice, there are cases where the `AuthorizationList` fields in the `softwareEnforced` and `teeEnforced` fields are not strictly ordered, which can lead to ASN.1 structure reading errors. + +Starting with version 300, the schema has been updated to use `keyMintVersion` instead of `keymasterVersion`, `keyMintSecurityLevel` instead of `keymasterSecurityLevel`, and `hardwareEnforced` instead of `teeEnforced`. To support this, we've added the `KeyMintKeyDescription` class which works for both v300 and v400. + +To address the non-strict ordering issue, this library provides `NonStandardKeyDescription` and `NonStandardKeyMintKeyDescription` classes that can read such structures. However, when creating extensions, it is recommended to use `KeyDescription` or `KeyMintKeyDescription`, as they guarantee the order of object fields according to the specification. + +Here are simplified TypeScript examples: + +Example of creating a `KeyDescription` object in TypeScript for the Android Keystore system + +```typescript +const attestation = new android.AttestationApplicationId({ + packageInfos: [ + new android.AttestationPackageInfo({ + packageName: new OctetString(Buffer.from("123", "utf8")), + version: 1, + }), + ], + signatureDigests: [new OctetString(Buffer.from("123", "utf8"))], +}); + +// Legacy KeyDescription +const keyDescription = new KeyDescription({ + attestationVersion: android.Version.keyMint2, + attestationSecurityLevel: android.SecurityLevel.software, + keymasterVersion: 1, + keymasterSecurityLevel: android.SecurityLevel.software, + attestationChallenge: new OctetString(Buffer.from("123", "utf8")), + uniqueId: new OctetString(Buffer.from("123", "utf8")), + softwareEnforced: new android.AuthorizationList({ + creationDateTime: 1506793476000, + attestationApplicationId: new OctetString(AsnConvert.serialize(attestation)), + }), + teeEnforced: new android.AuthorizationList({ + purpose: new android.IntegerSet([1]), + algorithm: 1, + keySize: 1, + digest: new android.IntegerSet([1]), + ecCurve: 1, + userAuthType: 1, + origin: 1, + rollbackResistant: null, + }), +}); + +// KeyMint KeyDescription (works for both v300 and v400) +const keyMintDescription = new KeyMintKeyDescription({ + attestationVersion: android.Version.keyMint4, // Use Version.keyMint3 for v300 + attestationSecurityLevel: android.SecurityLevel.software, + keyMintVersion: 1, + keyMintSecurityLevel: android.SecurityLevel.trustedEnvironment, + attestationChallenge: new OctetString(Buffer.from("challenge-data", "utf8")), + uniqueId: new OctetString(Buffer.from("unique-id-data", "utf8")), + softwareEnforced: new android.AuthorizationList({ + creationDateTime: 1684321765000, + }), + hardwareEnforced: new android.AuthorizationList({ + purpose: new android.IntegerSet([1, 2]), + algorithm: 3, // EC + keySize: 256, + attestationIdSecondImei: new OctetString(Buffer.from("second-imei", "utf8")), + moduleHash: new OctetString(Buffer.from("module-hash-value", "utf8")), // Available in v400 + rootOfTrust: new android.RootOfTrust({ + verifiedBootKey: new OctetString(Buffer.from("boot-key-data", "utf8")), + deviceLocked: true, + verifiedBootState: android.VerifiedBootState.verified, + verifiedBootHash: new OctetString(Buffer.from("boot-hash-data", "utf8")), // Required in v300 and above + }), + }), +}); + +const raw = AsnConvert.serialize(keyDescription); +const rawKeyMint = AsnConvert.serialize(keyMintDescription); +``` + +Example of reading a non-standard KeyDescription: + +```typescript +// Parse with appropriate class based on version +const keyDescription = AsnConvert.parse(raw, NonStandardKeyDescription); +const keyMintDescription = AsnConvert.parse(rawKeyMint, NonStandardKeyMintKeyDescription); // Works for both v300 and v400 + +// All versions support both old and new property names +console.log(keyMintDescription.keyMintVersion); // 1 +console.log(keyMintDescription.keymasterVersion); // Same as keyMintVersion (1) +console.log(keyMintDescription.hardwareEnforced === keyMintDescription.teeEnforced); // true + +// Check v400 specific fields +const moduleHash = keyMintDescription.hardwareEnforced.findProperty("moduleHash"); +console.log(moduleHash && Buffer.from(moduleHash).toString("utf8")); // "module-hash-value" + +// Converting between versions +const legacyFromKeyMint = keyMintDescription.toLegacyKeyDescription(); +const keyMintFromLegacy = KeyMintKeyDescription.fromLegacyKeyDescription(legacyFromKeyMint); +``` diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/build/cjs/attestation.js b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/cjs/attestation.js new file mode 100644 index 0000000..0ae7893 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/cjs/attestation.js @@ -0,0 +1,29 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AttestationApplicationId = exports.AttestationPackageInfo = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +class AttestationPackageInfo { + constructor(params = {}) { + Object.assign(this, params); + } +} +exports.AttestationPackageInfo = AttestationPackageInfo; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.OctetString }) +], AttestationPackageInfo.prototype, "packageName", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer }) +], AttestationPackageInfo.prototype, "version", void 0); +class AttestationApplicationId { + constructor(params = {}) { + Object.assign(this, params); + } +} +exports.AttestationApplicationId = AttestationApplicationId; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: AttestationPackageInfo, repeated: "set" }) +], AttestationApplicationId.prototype, "packageInfos", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.OctetString, repeated: "set" }) +], AttestationApplicationId.prototype, "signatureDigests", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/build/cjs/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/cjs/index.js new file mode 100644 index 0000000..e13851a --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/cjs/index.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./key_description"), exports); +tslib_1.__exportStar(require("./nonstandard"), exports); +tslib_1.__exportStar(require("./attestation"), exports); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/build/cjs/key_description.js b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/cjs/key_description.js new file mode 100644 index 0000000..a6b0dfd --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/cjs/key_description.js @@ -0,0 +1,297 @@ +"use strict"; +var IntegerSet_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KeyMintKeyDescription = exports.KeyDescription = exports.Version = exports.SecurityLevel = exports.AuthorizationList = exports.IntegerSet = exports.RootOfTrust = exports.VerifiedBootState = exports.id_ce_keyDescription = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +exports.id_ce_keyDescription = "1.3.6.1.4.1.11129.2.1.17"; +var VerifiedBootState; +(function (VerifiedBootState) { + VerifiedBootState[VerifiedBootState["verified"] = 0] = "verified"; + VerifiedBootState[VerifiedBootState["selfSigned"] = 1] = "selfSigned"; + VerifiedBootState[VerifiedBootState["unverified"] = 2] = "unverified"; + VerifiedBootState[VerifiedBootState["failed"] = 3] = "failed"; +})(VerifiedBootState || (exports.VerifiedBootState = VerifiedBootState = {})); +class RootOfTrust { + constructor(params = {}) { + this.verifiedBootKey = new asn1_schema_1.OctetString(); + this.deviceLocked = false; + this.verifiedBootState = VerifiedBootState.verified; + Object.assign(this, params); + } +} +exports.RootOfTrust = RootOfTrust; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.OctetString }) +], RootOfTrust.prototype, "verifiedBootKey", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Boolean }) +], RootOfTrust.prototype, "deviceLocked", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Enumerated }) +], RootOfTrust.prototype, "verifiedBootState", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.OctetString, optional: true }) +], RootOfTrust.prototype, "verifiedBootHash", void 0); +let IntegerSet = IntegerSet_1 = class IntegerSet extends asn1_schema_1.AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, IntegerSet_1.prototype); + } +}; +exports.IntegerSet = IntegerSet; +exports.IntegerSet = IntegerSet = IntegerSet_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Set, itemType: asn1_schema_1.AsnPropTypes.Integer }) +], IntegerSet); +class AuthorizationList { + constructor(params = {}) { + Object.assign(this, params); + } +} +exports.AuthorizationList = AuthorizationList; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 1, type: IntegerSet, optional: true }) +], AuthorizationList.prototype, "purpose", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 2, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "algorithm", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 3, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "keySize", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 5, type: IntegerSet, optional: true }) +], AuthorizationList.prototype, "digest", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 6, type: IntegerSet, optional: true }) +], AuthorizationList.prototype, "padding", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 10, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "ecCurve", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 200, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "rsaPublicExponent", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 203, type: IntegerSet, optional: true }) +], AuthorizationList.prototype, "mgfDigest", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 303, type: asn1_schema_1.AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "rollbackResistance", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 305, type: asn1_schema_1.AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "earlyBootOnly", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 400, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "activeDateTime", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 401, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "originationExpireDateTime", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 402, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "usageExpireDateTime", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 405, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "usageCountLimit", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 503, type: asn1_schema_1.AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "noAuthRequired", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 504, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "userAuthType", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 505, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "authTimeout", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 506, type: asn1_schema_1.AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "allowWhileOnBody", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 507, type: asn1_schema_1.AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "trustedUserPresenceRequired", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 508, type: asn1_schema_1.AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "trustedConfirmationRequired", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 509, type: asn1_schema_1.AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "unlockedDeviceRequired", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 600, type: asn1_schema_1.AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "allApplications", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 601, type: asn1_schema_1.OctetString, optional: true }) +], AuthorizationList.prototype, "applicationId", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 701, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "creationDateTime", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 702, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "origin", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 703, type: asn1_schema_1.AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "rollbackResistant", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 704, type: RootOfTrust, optional: true }) +], AuthorizationList.prototype, "rootOfTrust", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 705, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "osVersion", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 706, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "osPatchLevel", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 709, type: asn1_schema_1.OctetString, optional: true }) +], AuthorizationList.prototype, "attestationApplicationId", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 710, type: asn1_schema_1.OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdBrand", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 711, type: asn1_schema_1.OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdDevice", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 712, type: asn1_schema_1.OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdProduct", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 713, type: asn1_schema_1.OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdSerial", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 714, type: asn1_schema_1.OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdImei", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 715, type: asn1_schema_1.OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdMeid", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 716, type: asn1_schema_1.OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdManufacturer", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 717, type: asn1_schema_1.OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdModel", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 718, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "vendorPatchLevel", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 719, type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "bootPatchLevel", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 720, type: asn1_schema_1.AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "deviceUniqueAttestation", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 723, type: asn1_schema_1.OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdSecondImei", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ context: 724, type: asn1_schema_1.OctetString, optional: true }) +], AuthorizationList.prototype, "moduleHash", void 0); +var SecurityLevel; +(function (SecurityLevel) { + SecurityLevel[SecurityLevel["software"] = 0] = "software"; + SecurityLevel[SecurityLevel["trustedEnvironment"] = 1] = "trustedEnvironment"; + SecurityLevel[SecurityLevel["strongBox"] = 2] = "strongBox"; +})(SecurityLevel || (exports.SecurityLevel = SecurityLevel = {})); +var Version; +(function (Version) { + Version[Version["KM2"] = 1] = "KM2"; + Version[Version["KM3"] = 2] = "KM3"; + Version[Version["KM4"] = 3] = "KM4"; + Version[Version["KM4_1"] = 4] = "KM4_1"; + Version[Version["keyMint1"] = 100] = "keyMint1"; + Version[Version["keyMint2"] = 200] = "keyMint2"; + Version[Version["keyMint3"] = 300] = "keyMint3"; + Version[Version["keyMint4"] = 400] = "keyMint4"; +})(Version || (exports.Version = Version = {})); +class KeyDescription { + constructor(params = {}) { + this.attestationVersion = Version.KM4; + this.attestationSecurityLevel = SecurityLevel.software; + this.keymasterVersion = 0; + this.keymasterSecurityLevel = SecurityLevel.software; + this.attestationChallenge = new asn1_schema_1.OctetString(); + this.uniqueId = new asn1_schema_1.OctetString(); + this.softwareEnforced = new AuthorizationList(); + this.teeEnforced = new AuthorizationList(); + Object.assign(this, params); + } +} +exports.KeyDescription = KeyDescription; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer }) +], KeyDescription.prototype, "attestationVersion", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Enumerated }) +], KeyDescription.prototype, "attestationSecurityLevel", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer }) +], KeyDescription.prototype, "keymasterVersion", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Enumerated }) +], KeyDescription.prototype, "keymasterSecurityLevel", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.OctetString }) +], KeyDescription.prototype, "attestationChallenge", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.OctetString }) +], KeyDescription.prototype, "uniqueId", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: AuthorizationList }) +], KeyDescription.prototype, "softwareEnforced", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: AuthorizationList }) +], KeyDescription.prototype, "teeEnforced", void 0); +class KeyMintKeyDescription { + constructor(params = {}) { + this.attestationVersion = Version.keyMint4; + this.attestationSecurityLevel = SecurityLevel.software; + this.keyMintVersion = 0; + this.keyMintSecurityLevel = SecurityLevel.software; + this.attestationChallenge = new asn1_schema_1.OctetString(); + this.uniqueId = new asn1_schema_1.OctetString(); + this.softwareEnforced = new AuthorizationList(); + this.hardwareEnforced = new AuthorizationList(); + Object.assign(this, params); + } + toLegacyKeyDescription() { + return new KeyDescription({ + attestationVersion: this.attestationVersion, + attestationSecurityLevel: this.attestationSecurityLevel, + keymasterVersion: this.keyMintVersion, + keymasterSecurityLevel: this.keyMintSecurityLevel, + attestationChallenge: this.attestationChallenge, + uniqueId: this.uniqueId, + softwareEnforced: this.softwareEnforced, + teeEnforced: this.hardwareEnforced, + }); + } + static fromLegacyKeyDescription(keyDesc) { + return new KeyMintKeyDescription({ + attestationVersion: keyDesc.attestationVersion, + attestationSecurityLevel: keyDesc.attestationSecurityLevel, + keyMintVersion: keyDesc.keymasterVersion, + keyMintSecurityLevel: keyDesc.keymasterSecurityLevel, + attestationChallenge: keyDesc.attestationChallenge, + uniqueId: keyDesc.uniqueId, + softwareEnforced: keyDesc.softwareEnforced, + hardwareEnforced: keyDesc.teeEnforced, + }); + } +} +exports.KeyMintKeyDescription = KeyMintKeyDescription; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer }) +], KeyMintKeyDescription.prototype, "attestationVersion", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Enumerated }) +], KeyMintKeyDescription.prototype, "attestationSecurityLevel", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer }) +], KeyMintKeyDescription.prototype, "keyMintVersion", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Enumerated }) +], KeyMintKeyDescription.prototype, "keyMintSecurityLevel", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.OctetString }) +], KeyMintKeyDescription.prototype, "attestationChallenge", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.OctetString }) +], KeyMintKeyDescription.prototype, "uniqueId", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: AuthorizationList }) +], KeyMintKeyDescription.prototype, "softwareEnforced", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: AuthorizationList }) +], KeyMintKeyDescription.prototype, "hardwareEnforced", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/build/cjs/nonstandard.js b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/cjs/nonstandard.js new file mode 100644 index 0000000..c801713 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/cjs/nonstandard.js @@ -0,0 +1,104 @@ +"use strict"; +var NonStandardAuthorizationList_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NonStandardKeyMintKeyDescription = exports.NonStandardKeyDescription = exports.NonStandardAuthorizationList = exports.NonStandardAuthorization = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const key_description_1 = require("./key_description"); +let NonStandardAuthorization = class NonStandardAuthorization extends key_description_1.AuthorizationList { +}; +exports.NonStandardAuthorization = NonStandardAuthorization; +exports.NonStandardAuthorization = NonStandardAuthorization = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Choice }) +], NonStandardAuthorization); +let NonStandardAuthorizationList = NonStandardAuthorizationList_1 = class NonStandardAuthorizationList extends asn1_schema_1.AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, NonStandardAuthorizationList_1.prototype); + } + findProperty(key) { + const prop = this.find((o) => key in o); + if (prop) { + return prop[key]; + } + return undefined; + } +}; +exports.NonStandardAuthorizationList = NonStandardAuthorizationList; +exports.NonStandardAuthorizationList = NonStandardAuthorizationList = NonStandardAuthorizationList_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence, itemType: NonStandardAuthorization }) +], NonStandardAuthorizationList); +class NonStandardKeyDescription { + get keyMintVersion() { + return this.keymasterVersion; + } + set keyMintVersion(value) { + this.keymasterVersion = value; + } + get keyMintSecurityLevel() { + return this.keymasterSecurityLevel; + } + set keyMintSecurityLevel(value) { + this.keymasterSecurityLevel = value; + } + get hardwareEnforced() { + return this.teeEnforced; + } + set hardwareEnforced(value) { + this.teeEnforced = value; + } + constructor(params = {}) { + this.attestationVersion = key_description_1.Version.KM4; + this.attestationSecurityLevel = key_description_1.SecurityLevel.software; + this.keymasterVersion = 0; + this.keymasterSecurityLevel = key_description_1.SecurityLevel.software; + this.attestationChallenge = new asn1_schema_1.OctetString(); + this.uniqueId = new asn1_schema_1.OctetString(); + this.softwareEnforced = new NonStandardAuthorizationList(); + this.teeEnforced = new NonStandardAuthorizationList(); + Object.assign(this, params); + } +} +exports.NonStandardKeyDescription = NonStandardKeyDescription; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer }) +], NonStandardKeyDescription.prototype, "attestationVersion", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Enumerated }) +], NonStandardKeyDescription.prototype, "attestationSecurityLevel", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer }) +], NonStandardKeyDescription.prototype, "keymasterVersion", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Enumerated }) +], NonStandardKeyDescription.prototype, "keymasterSecurityLevel", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.OctetString }) +], NonStandardKeyDescription.prototype, "attestationChallenge", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.OctetString }) +], NonStandardKeyDescription.prototype, "uniqueId", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: NonStandardAuthorizationList }) +], NonStandardKeyDescription.prototype, "softwareEnforced", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: NonStandardAuthorizationList }) +], NonStandardKeyDescription.prototype, "teeEnforced", void 0); +let NonStandardKeyMintKeyDescription = class NonStandardKeyMintKeyDescription extends NonStandardKeyDescription { + constructor(params = {}) { + if ("keymasterVersion" in params && !("keyMintVersion" in params)) { + params.keyMintVersion = params.keymasterVersion; + } + if ("keymasterSecurityLevel" in params && !("keyMintSecurityLevel" in params)) { + params.keyMintSecurityLevel = params.keymasterSecurityLevel; + } + if ("teeEnforced" in params && !("hardwareEnforced" in params)) { + params.hardwareEnforced = params.teeEnforced; + } + super(params); + } +}; +exports.NonStandardKeyMintKeyDescription = NonStandardKeyMintKeyDescription; +exports.NonStandardKeyMintKeyDescription = NonStandardKeyMintKeyDescription = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence }) +], NonStandardKeyMintKeyDescription); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/build/es2015/attestation.js b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/es2015/attestation.js new file mode 100644 index 0000000..d97af8c --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/es2015/attestation.js @@ -0,0 +1,24 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes } from "@peculiar/asn1-schema"; +export class AttestationPackageInfo { + constructor(params = {}) { + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.OctetString }) +], AttestationPackageInfo.prototype, "packageName", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer }) +], AttestationPackageInfo.prototype, "version", void 0); +export class AttestationApplicationId { + constructor(params = {}) { + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AttestationPackageInfo, repeated: "set" }) +], AttestationApplicationId.prototype, "packageInfos", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.OctetString, repeated: "set" }) +], AttestationApplicationId.prototype, "signatureDigests", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/build/es2015/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/es2015/index.js new file mode 100644 index 0000000..f3d27a1 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/es2015/index.js @@ -0,0 +1,3 @@ +export * from "./key_description"; +export * from "./nonstandard"; +export * from "./attestation"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/build/es2015/key_description.js b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/es2015/key_description.js new file mode 100644 index 0000000..9601f33 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/es2015/key_description.js @@ -0,0 +1,290 @@ +var IntegerSet_1; +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnArray, AsnType, AsnTypeTypes, OctetString, } from "@peculiar/asn1-schema"; +export const id_ce_keyDescription = "1.3.6.1.4.1.11129.2.1.17"; +export var VerifiedBootState; +(function (VerifiedBootState) { + VerifiedBootState[VerifiedBootState["verified"] = 0] = "verified"; + VerifiedBootState[VerifiedBootState["selfSigned"] = 1] = "selfSigned"; + VerifiedBootState[VerifiedBootState["unverified"] = 2] = "unverified"; + VerifiedBootState[VerifiedBootState["failed"] = 3] = "failed"; +})(VerifiedBootState || (VerifiedBootState = {})); +export class RootOfTrust { + constructor(params = {}) { + this.verifiedBootKey = new OctetString(); + this.deviceLocked = false; + this.verifiedBootState = VerifiedBootState.verified; + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: OctetString }) +], RootOfTrust.prototype, "verifiedBootKey", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Boolean }) +], RootOfTrust.prototype, "deviceLocked", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Enumerated }) +], RootOfTrust.prototype, "verifiedBootState", void 0); +__decorate([ + AsnProp({ type: OctetString, optional: true }) +], RootOfTrust.prototype, "verifiedBootHash", void 0); +let IntegerSet = IntegerSet_1 = class IntegerSet extends AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, IntegerSet_1.prototype); + } +}; +IntegerSet = IntegerSet_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Set, itemType: AsnPropTypes.Integer }) +], IntegerSet); +export { IntegerSet }; +export class AuthorizationList { + constructor(params = {}) { + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ context: 1, type: IntegerSet, optional: true }) +], AuthorizationList.prototype, "purpose", void 0); +__decorate([ + AsnProp({ context: 2, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "algorithm", void 0); +__decorate([ + AsnProp({ context: 3, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "keySize", void 0); +__decorate([ + AsnProp({ context: 5, type: IntegerSet, optional: true }) +], AuthorizationList.prototype, "digest", void 0); +__decorate([ + AsnProp({ context: 6, type: IntegerSet, optional: true }) +], AuthorizationList.prototype, "padding", void 0); +__decorate([ + AsnProp({ context: 10, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "ecCurve", void 0); +__decorate([ + AsnProp({ context: 200, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "rsaPublicExponent", void 0); +__decorate([ + AsnProp({ context: 203, type: IntegerSet, optional: true }) +], AuthorizationList.prototype, "mgfDigest", void 0); +__decorate([ + AsnProp({ context: 303, type: AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "rollbackResistance", void 0); +__decorate([ + AsnProp({ context: 305, type: AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "earlyBootOnly", void 0); +__decorate([ + AsnProp({ context: 400, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "activeDateTime", void 0); +__decorate([ + AsnProp({ context: 401, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "originationExpireDateTime", void 0); +__decorate([ + AsnProp({ context: 402, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "usageExpireDateTime", void 0); +__decorate([ + AsnProp({ context: 405, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "usageCountLimit", void 0); +__decorate([ + AsnProp({ context: 503, type: AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "noAuthRequired", void 0); +__decorate([ + AsnProp({ context: 504, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "userAuthType", void 0); +__decorate([ + AsnProp({ context: 505, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "authTimeout", void 0); +__decorate([ + AsnProp({ context: 506, type: AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "allowWhileOnBody", void 0); +__decorate([ + AsnProp({ context: 507, type: AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "trustedUserPresenceRequired", void 0); +__decorate([ + AsnProp({ context: 508, type: AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "trustedConfirmationRequired", void 0); +__decorate([ + AsnProp({ context: 509, type: AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "unlockedDeviceRequired", void 0); +__decorate([ + AsnProp({ context: 600, type: AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "allApplications", void 0); +__decorate([ + AsnProp({ context: 601, type: OctetString, optional: true }) +], AuthorizationList.prototype, "applicationId", void 0); +__decorate([ + AsnProp({ context: 701, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "creationDateTime", void 0); +__decorate([ + AsnProp({ context: 702, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "origin", void 0); +__decorate([ + AsnProp({ context: 703, type: AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "rollbackResistant", void 0); +__decorate([ + AsnProp({ context: 704, type: RootOfTrust, optional: true }) +], AuthorizationList.prototype, "rootOfTrust", void 0); +__decorate([ + AsnProp({ context: 705, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "osVersion", void 0); +__decorate([ + AsnProp({ context: 706, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "osPatchLevel", void 0); +__decorate([ + AsnProp({ context: 709, type: OctetString, optional: true }) +], AuthorizationList.prototype, "attestationApplicationId", void 0); +__decorate([ + AsnProp({ context: 710, type: OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdBrand", void 0); +__decorate([ + AsnProp({ context: 711, type: OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdDevice", void 0); +__decorate([ + AsnProp({ context: 712, type: OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdProduct", void 0); +__decorate([ + AsnProp({ context: 713, type: OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdSerial", void 0); +__decorate([ + AsnProp({ context: 714, type: OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdImei", void 0); +__decorate([ + AsnProp({ context: 715, type: OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdMeid", void 0); +__decorate([ + AsnProp({ context: 716, type: OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdManufacturer", void 0); +__decorate([ + AsnProp({ context: 717, type: OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdModel", void 0); +__decorate([ + AsnProp({ context: 718, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "vendorPatchLevel", void 0); +__decorate([ + AsnProp({ context: 719, type: AsnPropTypes.Integer, optional: true }) +], AuthorizationList.prototype, "bootPatchLevel", void 0); +__decorate([ + AsnProp({ context: 720, type: AsnPropTypes.Null, optional: true }) +], AuthorizationList.prototype, "deviceUniqueAttestation", void 0); +__decorate([ + AsnProp({ context: 723, type: OctetString, optional: true }) +], AuthorizationList.prototype, "attestationIdSecondImei", void 0); +__decorate([ + AsnProp({ context: 724, type: OctetString, optional: true }) +], AuthorizationList.prototype, "moduleHash", void 0); +export var SecurityLevel; +(function (SecurityLevel) { + SecurityLevel[SecurityLevel["software"] = 0] = "software"; + SecurityLevel[SecurityLevel["trustedEnvironment"] = 1] = "trustedEnvironment"; + SecurityLevel[SecurityLevel["strongBox"] = 2] = "strongBox"; +})(SecurityLevel || (SecurityLevel = {})); +export var Version; +(function (Version) { + Version[Version["KM2"] = 1] = "KM2"; + Version[Version["KM3"] = 2] = "KM3"; + Version[Version["KM4"] = 3] = "KM4"; + Version[Version["KM4_1"] = 4] = "KM4_1"; + Version[Version["keyMint1"] = 100] = "keyMint1"; + Version[Version["keyMint2"] = 200] = "keyMint2"; + Version[Version["keyMint3"] = 300] = "keyMint3"; + Version[Version["keyMint4"] = 400] = "keyMint4"; +})(Version || (Version = {})); +export class KeyDescription { + constructor(params = {}) { + this.attestationVersion = Version.KM4; + this.attestationSecurityLevel = SecurityLevel.software; + this.keymasterVersion = 0; + this.keymasterSecurityLevel = SecurityLevel.software; + this.attestationChallenge = new OctetString(); + this.uniqueId = new OctetString(); + this.softwareEnforced = new AuthorizationList(); + this.teeEnforced = new AuthorizationList(); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.Integer }) +], KeyDescription.prototype, "attestationVersion", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Enumerated }) +], KeyDescription.prototype, "attestationSecurityLevel", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer }) +], KeyDescription.prototype, "keymasterVersion", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Enumerated }) +], KeyDescription.prototype, "keymasterSecurityLevel", void 0); +__decorate([ + AsnProp({ type: OctetString }) +], KeyDescription.prototype, "attestationChallenge", void 0); +__decorate([ + AsnProp({ type: OctetString }) +], KeyDescription.prototype, "uniqueId", void 0); +__decorate([ + AsnProp({ type: AuthorizationList }) +], KeyDescription.prototype, "softwareEnforced", void 0); +__decorate([ + AsnProp({ type: AuthorizationList }) +], KeyDescription.prototype, "teeEnforced", void 0); +export class KeyMintKeyDescription { + constructor(params = {}) { + this.attestationVersion = Version.keyMint4; + this.attestationSecurityLevel = SecurityLevel.software; + this.keyMintVersion = 0; + this.keyMintSecurityLevel = SecurityLevel.software; + this.attestationChallenge = new OctetString(); + this.uniqueId = new OctetString(); + this.softwareEnforced = new AuthorizationList(); + this.hardwareEnforced = new AuthorizationList(); + Object.assign(this, params); + } + toLegacyKeyDescription() { + return new KeyDescription({ + attestationVersion: this.attestationVersion, + attestationSecurityLevel: this.attestationSecurityLevel, + keymasterVersion: this.keyMintVersion, + keymasterSecurityLevel: this.keyMintSecurityLevel, + attestationChallenge: this.attestationChallenge, + uniqueId: this.uniqueId, + softwareEnforced: this.softwareEnforced, + teeEnforced: this.hardwareEnforced, + }); + } + static fromLegacyKeyDescription(keyDesc) { + return new KeyMintKeyDescription({ + attestationVersion: keyDesc.attestationVersion, + attestationSecurityLevel: keyDesc.attestationSecurityLevel, + keyMintVersion: keyDesc.keymasterVersion, + keyMintSecurityLevel: keyDesc.keymasterSecurityLevel, + attestationChallenge: keyDesc.attestationChallenge, + uniqueId: keyDesc.uniqueId, + softwareEnforced: keyDesc.softwareEnforced, + hardwareEnforced: keyDesc.teeEnforced, + }); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.Integer }) +], KeyMintKeyDescription.prototype, "attestationVersion", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Enumerated }) +], KeyMintKeyDescription.prototype, "attestationSecurityLevel", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer }) +], KeyMintKeyDescription.prototype, "keyMintVersion", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Enumerated }) +], KeyMintKeyDescription.prototype, "keyMintSecurityLevel", void 0); +__decorate([ + AsnProp({ type: OctetString }) +], KeyMintKeyDescription.prototype, "attestationChallenge", void 0); +__decorate([ + AsnProp({ type: OctetString }) +], KeyMintKeyDescription.prototype, "uniqueId", void 0); +__decorate([ + AsnProp({ type: AuthorizationList }) +], KeyMintKeyDescription.prototype, "softwareEnforced", void 0); +__decorate([ + AsnProp({ type: AuthorizationList }) +], KeyMintKeyDescription.prototype, "hardwareEnforced", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/build/es2015/nonstandard.js b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/es2015/nonstandard.js new file mode 100644 index 0000000..f2b8cd7 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/es2015/nonstandard.js @@ -0,0 +1,100 @@ +var NonStandardAuthorizationList_1; +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnArray, AsnType, AsnTypeTypes, OctetString, } from "@peculiar/asn1-schema"; +import { AuthorizationList, SecurityLevel, Version } from "./key_description"; +let NonStandardAuthorization = class NonStandardAuthorization extends AuthorizationList { +}; +NonStandardAuthorization = __decorate([ + AsnType({ type: AsnTypeTypes.Choice }) +], NonStandardAuthorization); +export { NonStandardAuthorization }; +let NonStandardAuthorizationList = NonStandardAuthorizationList_1 = class NonStandardAuthorizationList extends AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, NonStandardAuthorizationList_1.prototype); + } + findProperty(key) { + const prop = this.find((o) => key in o); + if (prop) { + return prop[key]; + } + return undefined; + } +}; +NonStandardAuthorizationList = NonStandardAuthorizationList_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence, itemType: NonStandardAuthorization }) +], NonStandardAuthorizationList); +export { NonStandardAuthorizationList }; +export class NonStandardKeyDescription { + get keyMintVersion() { + return this.keymasterVersion; + } + set keyMintVersion(value) { + this.keymasterVersion = value; + } + get keyMintSecurityLevel() { + return this.keymasterSecurityLevel; + } + set keyMintSecurityLevel(value) { + this.keymasterSecurityLevel = value; + } + get hardwareEnforced() { + return this.teeEnforced; + } + set hardwareEnforced(value) { + this.teeEnforced = value; + } + constructor(params = {}) { + this.attestationVersion = Version.KM4; + this.attestationSecurityLevel = SecurityLevel.software; + this.keymasterVersion = 0; + this.keymasterSecurityLevel = SecurityLevel.software; + this.attestationChallenge = new OctetString(); + this.uniqueId = new OctetString(); + this.softwareEnforced = new NonStandardAuthorizationList(); + this.teeEnforced = new NonStandardAuthorizationList(); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.Integer }) +], NonStandardKeyDescription.prototype, "attestationVersion", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Enumerated }) +], NonStandardKeyDescription.prototype, "attestationSecurityLevel", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer }) +], NonStandardKeyDescription.prototype, "keymasterVersion", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Enumerated }) +], NonStandardKeyDescription.prototype, "keymasterSecurityLevel", void 0); +__decorate([ + AsnProp({ type: OctetString }) +], NonStandardKeyDescription.prototype, "attestationChallenge", void 0); +__decorate([ + AsnProp({ type: OctetString }) +], NonStandardKeyDescription.prototype, "uniqueId", void 0); +__decorate([ + AsnProp({ type: NonStandardAuthorizationList }) +], NonStandardKeyDescription.prototype, "softwareEnforced", void 0); +__decorate([ + AsnProp({ type: NonStandardAuthorizationList }) +], NonStandardKeyDescription.prototype, "teeEnforced", void 0); +let NonStandardKeyMintKeyDescription = class NonStandardKeyMintKeyDescription extends NonStandardKeyDescription { + constructor(params = {}) { + if ("keymasterVersion" in params && !("keyMintVersion" in params)) { + params.keyMintVersion = params.keymasterVersion; + } + if ("keymasterSecurityLevel" in params && !("keyMintSecurityLevel" in params)) { + params.keyMintSecurityLevel = params.keymasterSecurityLevel; + } + if ("teeEnforced" in params && !("hardwareEnforced" in params)) { + params.hardwareEnforced = params.teeEnforced; + } + super(params); + } +}; +NonStandardKeyMintKeyDescription = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence }) +], NonStandardKeyMintKeyDescription); +export { NonStandardKeyMintKeyDescription }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/build/types/attestation.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/types/attestation.d.ts new file mode 100644 index 0000000..43d4a7d --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/types/attestation.d.ts @@ -0,0 +1,31 @@ +import { OctetString } from "@peculiar/asn1-schema"; +/** + * Implements ASN.1 structure for attestation package info. + * + * ```asn + * AttestationPackageInfo ::= SEQUENCE { + * package_name OCTET_STRING, + * version INTEGER, + * } + * ``` + */ +export declare class AttestationPackageInfo { + packageName: OctetString; + version: number; + constructor(params?: Partial); +} +/** + * Implements ASN.1 structure for attestation application id. + * + * ```asn + * AttestationApplicationId ::= SEQUENCE { + * package_infos SET OF AttestationPackageInfo, + * signature_digests SET OF OCTET_STRING, + * } + * ``` + */ +export declare class AttestationApplicationId { + packageInfos: AttestationPackageInfo[]; + signatureDigests: OctetString[]; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/build/types/index.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/types/index.d.ts new file mode 100644 index 0000000..f3d27a1 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/types/index.d.ts @@ -0,0 +1,3 @@ +export * from "./key_description"; +export * from "./nonstandard"; +export * from "./attestation"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/build/types/key_description.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/types/key_description.d.ts new file mode 100644 index 0000000..02fc622 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/types/key_description.d.ts @@ -0,0 +1,244 @@ +import { AsnArray, OctetString } from "@peculiar/asn1-schema"; +/** + * Extension OID for key description. + * + * ```asn + * id-ce-keyDescription OBJECT IDENTIFIER ::= { 1 3 6 1 4 1 11129 2 1 17 } + * ``` + */ +export declare const id_ce_keyDescription = "1.3.6.1.4.1.11129.2.1.17"; +/** + * Implements ASN.1 enumeration for verified boot state. + * + * ```asn + * VerifiedBootState ::= ENUMERATED { + * Verified (0), + * SelfSigned (1), + * Unverified (2), + * Failed (3), + * } + * ``` + */ +export declare enum VerifiedBootState { + verified = 0, + selfSigned = 1, + unverified = 2, + failed = 3 +} +/** + * Implements ASN.1 structure for root of trust. + * + * ```asn + * RootOfTrust ::= SEQUENCE { + * verifiedBootKey OCTET_STRING, + * deviceLocked BOOLEAN, + * verifiedBootState VerifiedBootState, + * verifiedBootHash OCTET_STRING, # KM4 + * } + * ``` + */ +export declare class RootOfTrust { + verifiedBootKey: OctetString; + deviceLocked: boolean; + verifiedBootState: VerifiedBootState; + /** + * `verifiedBootHash` must present in `KeyDescription` version 3 + */ + verifiedBootHash?: OctetString; + constructor(params?: Partial); +} +/** + * Implements ASN.1 structure for set of integers. + * + * ```asn + * IntegerSet ::= SET OF INTEGER + * ``` + */ +export declare class IntegerSet extends AsnArray { + constructor(items?: number[]); +} +/** + * Implements ASN.1 structure for authorization list. + * + * ```asn + * AuthorizationList ::= SEQUENCE { + * purpose [1] EXPLICIT SET OF INTEGER OPTIONAL, + * algorithm [2] EXPLICIT INTEGER OPTIONAL, + * keySize [3] EXPLICIT INTEGER OPTIONAL. + * digest [5] EXPLICIT SET OF INTEGER OPTIONAL, + * padding [6] EXPLICIT SET OF INTEGER OPTIONAL, + * ecCurve [10] EXPLICIT INTEGER OPTIONAL, + * rsaPublicExponent [200] EXPLICIT INTEGER OPTIONAL, + * mgfDigest [203] EXPLICIT SET OF INTEGER OPTIONAL, + * rollbackResistance [303] EXPLICIT NULL OPTIONAL, # KM4 + * earlyBootOnly [305] EXPLICIT NULL OPTIONAL, # version 4 + * activeDateTime [400] EXPLICIT INTEGER OPTIONAL + * originationExpireDateTime [401] EXPLICIT INTEGER OPTIONAL + * usageExpireDateTime [402] EXPLICIT INTEGER OPTIONAL + * usageCountLimit [405] EXPLICIT INTEGER OPTIONAL, + * noAuthRequired [503] EXPLICIT NULL OPTIONAL, + * userAuthType [504] EXPLICIT INTEGER OPTIONAL, + * authTimeout [505] EXPLICIT INTEGER OPTIONAL, + * allowWhileOnBody [506] EXPLICIT NULL OPTIONAL, + * trustedUserPresenceRequired [507] EXPLICIT NULL OPTIONAL, # KM4 + * trustedConfirmationRequired [508] EXPLICIT NULL OPTIONAL, # KM4 + * unlockedDeviceRequired [509] EXPLICIT NULL OPTIONAL, # KM4 + * allApplications [600] EXPLICIT NULL OPTIONAL, + * applicationId [601] EXPLICIT OCTET_STRING OPTIONAL, + * creationDateTime [701] EXPLICIT INTEGER OPTIONAL, + * origin [702] EXPLICIT INTEGER OPTIONAL, + * rollbackResistant [703] EXPLICIT NULL OPTIONAL, # KM2 and KM3 only. + * rootOfTrust [704] EXPLICIT RootOfTrust OPTIONAL, + * osVersion [705] EXPLICIT INTEGER OPTIONAL, + * osPatchLevel [706] EXPLICIT INTEGER OPTIONAL, + * attestationApplicationId [709] EXPLICIT OCTET_STRING OPTIONAL, # KM3 + * attestationIdBrand [710] EXPLICIT OCTET_STRING OPTIONAL, # KM3 + * attestationIdDevice [711] EXPLICIT OCTET_STRING OPTIONAL, # KM3 + * attestationIdProduct [712] EXPLICIT OCTET_STRING OPTIONAL, # KM3 + * attestationIdSerial [713] EXPLICIT OCTET_STRING OPTIONAL, # KM3 + * attestationIdImei [714] EXPLICIT OCTET_STRING OPTIONAL, # KM3 + * attestationIdMeid [715] EXPLICIT OCTET_STRING OPTIONAL, # KM3 + * attestationIdManufacturer [716] EXPLICIT OCTET_STRING OPTIONAL, # KM3 + * attestationIdModel [717] EXPLICIT OCTET_STRING OPTIONAL, # KM3 + * vendorPatchLevel [718] EXPLICIT INTEGER OPTIONAL, # KM4 + * bootPatchLevel [719] EXPLICIT INTEGER OPTIONAL, # KM4 + * deviceUniqueAttestation [720] EXPLICIT NULL OPTIONAL, # version 4 + * attestationIdSecondImei [723] EXPLICIT OCTET_STRING OPTIONAL, + * moduleHash [724] EXPLICIT OCTET_STRING OPTIONAL, + * } + * ``` + */ +export declare class AuthorizationList { + purpose?: IntegerSet; + algorithm?: number; + keySize?: number; + digest?: IntegerSet; + padding?: IntegerSet; + ecCurve?: number; + rsaPublicExponent?: number; + mgfDigest?: IntegerSet; + rollbackResistance?: null; + earlyBootOnly?: null; + activeDateTime?: number; + originationExpireDateTime?: number; + usageExpireDateTime?: number; + usageCountLimit?: number; + noAuthRequired?: null; + userAuthType?: number; + authTimeout?: number; + allowWhileOnBody?: null; + trustedUserPresenceRequired?: null; + trustedConfirmationRequired?: null; + unlockedDeviceRequired?: null; + allApplications?: null; + applicationId?: OctetString; + creationDateTime?: number; + origin?: number; + rollbackResistant?: null; + rootOfTrust?: RootOfTrust; + osVersion?: number; + osPatchLevel?: number; + attestationApplicationId?: OctetString; + attestationIdBrand?: OctetString; + attestationIdDevice?: OctetString; + attestationIdProduct?: OctetString; + attestationIdSerial?: OctetString; + attestationIdImei?: OctetString; + attestationIdMeid?: OctetString; + attestationIdManufacturer?: OctetString; + attestationIdModel?: OctetString; + vendorPatchLevel?: number; + bootPatchLevel?: number; + deviceUniqueAttestation?: null; + attestationIdSecondImei?: OctetString; + moduleHash?: OctetString; + constructor(params?: Partial); +} +/** + * Implements ASN.1 structure for security level. + * + * ```asn + * SecurityLevel ::= ENUMERATED { + * Software (0), + * TrustedEnvironment (1), + * StrongBox (2), + * } + * ``` + */ +export declare enum SecurityLevel { + software = 0, + trustedEnvironment = 1, + strongBox = 2 +} +export declare enum Version { + KM2 = 1, + KM3 = 2, + KM4 = 3, + KM4_1 = 4, + keyMint1 = 100, + keyMint2 = 200, + keyMint3 = 300, + keyMint4 = 400 +} +/** + * Implements ASN.1 structure for key description. + * + * ```asn + * KeyDescription ::= SEQUENCE { + * attestationVersion INTEGER, # versions 1, 2, 3, 4, 100, and 200 + * attestationSecurityLevel SecurityLevel, + * keymasterVersion INTEGER, + * keymasterSecurityLevel SecurityLevel, + * attestationChallenge OCTET_STRING, + * uniqueId OCTET_STRING, + * softwareEnforced AuthorizationList, + * teeEnforced AuthorizationList, + * } + * ``` + */ +export declare class KeyDescription { + attestationVersion: number | Version; + attestationSecurityLevel: SecurityLevel; + keymasterVersion: number; + keymasterSecurityLevel: SecurityLevel; + attestationChallenge: OctetString; + uniqueId: OctetString; + softwareEnforced: AuthorizationList; + teeEnforced: AuthorizationList; + constructor(params?: Partial); +} +/** + * Implements ASN.1 structure for KeyMint key description (v300 and v400). + * + * ```asn + * KeyDescription ::= SEQUENCE { + * attestationVersion INTEGER, # versions 300 and 400 + * attestationSecurityLevel SecurityLevel, + * keyMintVersion INTEGER, + * keyMintSecurityLevel SecurityLevel, + * attestationChallenge OCTET_STRING, + * uniqueId OCTET_STRING, + * softwareEnforced AuthorizationList, + * hardwareEnforced AuthorizationList, + * } + * ``` + */ +export declare class KeyMintKeyDescription { + attestationVersion: number | Version; + attestationSecurityLevel: SecurityLevel; + keyMintVersion: number; + keyMintSecurityLevel: SecurityLevel; + attestationChallenge: OctetString; + uniqueId: OctetString; + softwareEnforced: AuthorizationList; + hardwareEnforced: AuthorizationList; + constructor(params?: Partial); + /** + * Convert to legacy KeyDescription for backwards compatibility + */ + toLegacyKeyDescription(): KeyDescription; + /** + * Create from legacy KeyDescription for backwards compatibility + */ + static fromLegacyKeyDescription(keyDesc: KeyDescription): KeyMintKeyDescription; +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/build/types/nonstandard.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/types/nonstandard.d.ts new file mode 100644 index 0000000..c2cc137 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/build/types/nonstandard.d.ts @@ -0,0 +1,83 @@ +import { AsnArray, OctetString } from "@peculiar/asn1-schema"; +import { AuthorizationList, SecurityLevel, Version } from "./key_description"; +/** + * This file contains classes to handle non-standard key descriptions and authorizations. + * + * Due to an issue with the asn1-schema library, referenced at https://github.com/PeculiarVentures/asn1-schema/issues/98#issuecomment-1764345351, + * the standard key description does not allow for a non-strict order of fields in the `softwareEnforced` and `teeEnforced` attributes. + * + * To address this and provide greater flexibility, the `NonStandardKeyDescription` and + * `NonStandardAuthorizationList` classes were created, allowing for the use of non-standard authorizations and a flexible field order. + * + * The purpose of these modifications is to ensure compatibility with specific requirements and standards, as well as to offer + * more convenient tools for working with key descriptions and authorizations. + * + * Please refer to the documentation and class comments before using or modifying them. + */ +/** + * Represents a non-standard authorization for NonStandardAuthorizationList. It uses the same + * structure as AuthorizationList, but it is a CHOICE instead of a SEQUENCE, that allows for + * non-strict ordering of fields. + */ +export declare class NonStandardAuthorization extends AuthorizationList { +} +/** + * Represents a list of non-standard authorizations. + * ```asn + * NonStandardAuthorizationList ::= SEQUENCE OF NonStandardAuthorization + * ``` + */ +export declare class NonStandardAuthorizationList extends AsnArray { + constructor(items?: NonStandardAuthorization[]); + /** + * Finds the first authorization that contains the specified key. + * @param key The key to search for. + * @returns The first authorization that contains the specified key, or `undefined` if not found. + */ + findProperty(key: K): AuthorizationList[K] | undefined; +} +/** + * The AuthorizationList class allows for non-strict ordering of fields in the + * softwareEnforced and teeEnforced/hardwareEnforced fields. + * + * This behavior is due to an issue with the asn1-schema library, which is + * documented here: https://github.com/PeculiarVentures/asn1-schema/issues/98#issuecomment-1764345351 + * + * ```asn + * KeyDescription ::= SEQUENCE { + * attestationVersion INTEGER, # versions 1, 2, 3, 4, 100, 200, 300, and 400 + * attestationSecurityLevel SecurityLevel, + * keymasterVersion/keyMintVersion INTEGER, + * keymasterSecurityLevel/keyMintSecurityLevel SecurityLevel, + * attestationChallenge OCTET_STRING, + * uniqueId OCTET_STRING, + * softwareEnforced NonStandardAuthorizationList, + * teeEnforced/hardwareEnforced NonStandardAuthorizationList, + * } + * ``` + */ +export declare class NonStandardKeyDescription { + attestationVersion: number | Version; + attestationSecurityLevel: SecurityLevel; + keymasterVersion: number; + keymasterSecurityLevel: SecurityLevel; + attestationChallenge: OctetString; + uniqueId: OctetString; + softwareEnforced: NonStandardAuthorizationList; + teeEnforced: NonStandardAuthorizationList; + get keyMintVersion(): number; + set keyMintVersion(value: number); + get keyMintSecurityLevel(): SecurityLevel; + set keyMintSecurityLevel(value: SecurityLevel); + get hardwareEnforced(): NonStandardAuthorizationList; + set hardwareEnforced(value: NonStandardAuthorizationList); + constructor(params?: Partial); +} +/** + * New class for v300 and v400 KeyMint non-standard key description. + * This uses the same underlying structure as NonStandardKeyDescription, + * but with renamed properties to match the updated specification. + */ +export declare class NonStandardKeyMintKeyDescription extends NonStandardKeyDescription { + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/CopyrightNotice.txt b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/CopyrightNotice.txt new file mode 100644 index 0000000..5d7d2d9 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/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/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/LICENSE.txt b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/LICENSE.txt new file mode 100644 index 0000000..fa7d1bd --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/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/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/README.md b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/README.md new file mode 100644 index 0000000..14b9a83 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/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/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/SECURITY.md b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/SECURITY.md new file mode 100644 index 0000000..869fdfe --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/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/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/modules/index.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/modules/index.d.ts new file mode 100644 index 0000000..3244fab --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/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/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/modules/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/modules/index.js new file mode 100644 index 0000000..f4f9a06 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/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/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/modules/package.json b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/modules/package.json new file mode 100644 index 0000000..96ae6e5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/modules/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/package.json b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/package.json new file mode 100644 index 0000000..57d0578 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/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/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/tslib.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/tslib.d.ts new file mode 100644 index 0000000..9c27e05 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/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/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/tslib.es6.html b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/tslib.es6.html new file mode 100644 index 0000000..b122e41 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/tslib.es6.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/tslib.es6.js b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/tslib.es6.js new file mode 100644 index 0000000..67ba5c5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/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/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/tslib.es6.mjs b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/tslib.es6.mjs new file mode 100644 index 0000000..c17990a --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/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/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/tslib.html b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/tslib.html new file mode 100644 index 0000000..44c9ba5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/tslib.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/tslib.js b/api.hyungi.net/node_modules/@peculiar/asn1-android/node_modules/tslib/tslib.js new file mode 100644 index 0000000..b6509f7 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/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/api.hyungi.net/node_modules/@peculiar/asn1-android/package.json b/api.hyungi.net/node_modules/@peculiar/asn1-android/package.json new file mode 100644 index 0000000..73bcf0b --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-android/package.json @@ -0,0 +1,42 @@ +{ + "name": "@peculiar/asn1-android", + "version": "2.3.16", + "description": "", + "files": [ + "build/**/*.{js,d.ts}", + "LICENSE", + "README.md" + ], + "bugs": { + "url": "https://github.com/PeculiarVentures/asn1-schema/issues" + }, + "homepage": "https://github.com/PeculiarVentures/asn1-schema/tree/master/packages/android#readme", + "keywords": [ + "asn" + ], + "author": "PeculiarVentures, LLC", + "license": "MIT", + "main": "build/cjs/index.js", + "module": "build/es2015/index.js", + "types": "build/types/index.d.ts", + "publishConfig": { + "access": "public" + }, + "scripts": { + "test": "mocha", + "clear": "rimraf build", + "build": "npm run build:module && npm run build:types", + "build:module": "npm run build:cjs && npm run build:es2015", + "build:cjs": "tsc -p tsconfig.compile.json --removeComments --module commonjs --outDir build/cjs", + "build:es2015": "tsc -p tsconfig.compile.json --removeComments --module ES2015 --outDir build/es2015", + "prebuild:types": "rimraf build/types", + "build:types": "tsc -p tsconfig.compile.json --outDir build/types --declaration --emitDeclarationOnly", + "rebuild": "npm run clear && npm run build" + }, + "dependencies": { + "@peculiar/asn1-schema": "^2.3.15", + "asn1js": "^3.0.5", + "tslib": "^2.8.1" + }, + "gitHead": "a37321bc09c123bc3bc888e0d14bdb7fa99011e1" +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/LICENSE b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/LICENSE new file mode 100644 index 0000000..4367593 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/README.md b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/README.md new file mode 100644 index 0000000..d58b384 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/README.md @@ -0,0 +1,14 @@ +# `@peculiar/asn1-ecc` + +[![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://raw.githubusercontent.com/PeculiarVentures/asn1-schema/master/packages/ecc/LICENSE.md) +[![npm version](https://badge.fury.io/js/%40peculiar%2Fasn1-ecc.svg)](https://badge.fury.io/js/%40peculiar%2Fasn1-ecc) + +[![NPM](https://nodei.co/npm/@peculiar/asn1-ecc.png)](https://nodei.co/npm/@peculiar/asn1-ecc/) + +This module provides ASN.1 schema definitions and parsers for Elliptic Curve Cryptography (ECC) structures. It includes support for various ECC-related standards and specifications, making it easier to work with ECC keys and certificates in JavaScript and TypeScript applications. + +| Document | Description | +| ----------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------ | +| [RFC 5915](https://tools.ietf.org/html/rfc5915) | Elliptic Curve Private Key Structure | +| [RFC 5480](https://tools.ietf.org/html/rfc5480) | Elliptic Curve Cryptography Subject Public Key Information | +| [RFC 3279](https://datatracker.ietf.org/doc/html/rfc3279#section-2.3.5) | Algorithms and Identifiers for the Internet X.509 Public Key Infrastructure Certificate: ECDSA and ECDH Keys | diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/algorithms.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/algorithms.js new file mode 100644 index 0000000..e351b2c --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/algorithms.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ecdsaWithSHA512 = exports.ecdsaWithSHA384 = exports.ecdsaWithSHA256 = exports.ecdsaWithSHA224 = exports.ecdsaWithSHA1 = void 0; +const asn1_x509_1 = require("@peculiar/asn1-x509"); +const oid = require("./object_identifiers"); +function create(algorithm) { + return new asn1_x509_1.AlgorithmIdentifier({ algorithm }); +} +exports.ecdsaWithSHA1 = create(oid.id_ecdsaWithSHA1); +exports.ecdsaWithSHA224 = create(oid.id_ecdsaWithSHA224); +exports.ecdsaWithSHA256 = create(oid.id_ecdsaWithSHA256); +exports.ecdsaWithSHA384 = create(oid.id_ecdsaWithSHA384); +exports.ecdsaWithSHA512 = create(oid.id_ecdsaWithSHA512); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/ec_parameters.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/ec_parameters.js new file mode 100644 index 0000000..7340654 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/ec_parameters.js @@ -0,0 +1,24 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ECParameters = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const rfc3279_1 = require("./rfc3279"); +let ECParameters = class ECParameters { + constructor(params = {}) { + Object.assign(this, params); + } +}; +exports.ECParameters = ECParameters; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.ObjectIdentifier }) +], ECParameters.prototype, "namedCurve", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Null }) +], ECParameters.prototype, "implicitCurve", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: rfc3279_1.SpecifiedECDomain }) +], ECParameters.prototype, "specifiedCurve", void 0); +exports.ECParameters = ECParameters = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Choice }) +], ECParameters); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/ec_private_key.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/ec_private_key.js new file mode 100644 index 0000000..084942f --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/ec_private_key.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ECPrivateKey = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const ec_parameters_1 = require("./ec_parameters"); +class ECPrivateKey { + constructor(params = {}) { + this.version = 1; + this.privateKey = new asn1_schema_1.OctetString(); + Object.assign(this, params); + } +} +exports.ECPrivateKey = ECPrivateKey; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer }) +], ECPrivateKey.prototype, "version", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.OctetString }) +], ECPrivateKey.prototype, "privateKey", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: ec_parameters_1.ECParameters, context: 0, optional: true }) +], ECPrivateKey.prototype, "parameters", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.BitString, context: 1, optional: true }) +], ECPrivateKey.prototype, "publicKey", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/ec_signature_value.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/ec_signature_value.js new file mode 100644 index 0000000..101bb67 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/ec_signature_value.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ECDSASigValue = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +class ECDSASigValue { + constructor(params = {}) { + this.r = new ArrayBuffer(0); + this.s = new ArrayBuffer(0); + Object.assign(this, params); + } +} +exports.ECDSASigValue = ECDSASigValue; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], ECDSASigValue.prototype, "r", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], ECDSASigValue.prototype, "s", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/index.js new file mode 100644 index 0000000..916de2b --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/index.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./algorithms"), exports); +tslib_1.__exportStar(require("./ec_parameters"), exports); +tslib_1.__exportStar(require("./ec_private_key"), exports); +tslib_1.__exportStar(require("./ec_signature_value"), exports); +tslib_1.__exportStar(require("./object_identifiers"), exports); +tslib_1.__exportStar(require("./rfc3279"), exports); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/object_identifiers.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/object_identifiers.js new file mode 100644 index 0000000..78717a3 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/object_identifiers.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.id_sect571r1 = exports.id_sect571k1 = exports.id_secp521r1 = exports.id_sect409r1 = exports.id_sect409k1 = exports.id_secp384r1 = exports.id_sect283r1 = exports.id_sect283k1 = exports.id_secp256r1 = exports.id_sect233r1 = exports.id_sect233k1 = exports.id_secp224r1 = exports.id_sect163r2 = exports.id_sect163k1 = exports.id_secp192r1 = exports.id_ecdsaWithSHA512 = exports.id_ecdsaWithSHA384 = exports.id_ecdsaWithSHA256 = exports.id_ecdsaWithSHA224 = exports.id_ecdsaWithSHA1 = exports.id_ecMQV = exports.id_ecDH = exports.id_ecPublicKey = void 0; +exports.id_ecPublicKey = "1.2.840.10045.2.1"; +exports.id_ecDH = "1.3.132.1.12"; +exports.id_ecMQV = "1.3.132.1.13"; +exports.id_ecdsaWithSHA1 = "1.2.840.10045.4.1"; +exports.id_ecdsaWithSHA224 = "1.2.840.10045.4.3.1"; +exports.id_ecdsaWithSHA256 = "1.2.840.10045.4.3.2"; +exports.id_ecdsaWithSHA384 = "1.2.840.10045.4.3.3"; +exports.id_ecdsaWithSHA512 = "1.2.840.10045.4.3.4"; +exports.id_secp192r1 = "1.2.840.10045.3.1.1"; +exports.id_sect163k1 = "1.3.132.0.1"; +exports.id_sect163r2 = "1.3.132.0.15"; +exports.id_secp224r1 = "1.3.132.0.33"; +exports.id_sect233k1 = "1.3.132.0.26"; +exports.id_sect233r1 = "1.3.132.0.27"; +exports.id_secp256r1 = "1.2.840.10045.3.1.7"; +exports.id_sect283k1 = "1.3.132.0.16"; +exports.id_sect283r1 = "1.3.132.0.17"; +exports.id_secp384r1 = "1.3.132.0.34"; +exports.id_sect409k1 = "1.3.132.0.36"; +exports.id_sect409r1 = "1.3.132.0.37"; +exports.id_secp521r1 = "1.3.132.0.35"; +exports.id_sect571k1 = "1.3.132.0.38"; +exports.id_sect571r1 = "1.3.132.0.39"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/rfc3279.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/rfc3279.js new file mode 100644 index 0000000..7fce473 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/cjs/rfc3279.js @@ -0,0 +1,76 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SpecifiedECDomain = exports.ECPVer = exports.Curve = exports.FieldElement = exports.ECPoint = exports.FieldID = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +let FieldID = class FieldID { + constructor(params = {}) { + Object.assign(this, params); + } +}; +exports.FieldID = FieldID; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.ObjectIdentifier }) +], FieldID.prototype, "fieldType", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Any }) +], FieldID.prototype, "parameters", void 0); +exports.FieldID = FieldID = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence }) +], FieldID); +class ECPoint extends asn1_schema_1.OctetString { +} +exports.ECPoint = ECPoint; +class FieldElement extends asn1_schema_1.OctetString { +} +exports.FieldElement = FieldElement; +let Curve = class Curve { + constructor(params = {}) { + Object.assign(this, params); + } +}; +exports.Curve = Curve; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.OctetString }) +], Curve.prototype, "a", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.OctetString }) +], Curve.prototype, "b", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.BitString, optional: true }) +], Curve.prototype, "seed", void 0); +exports.Curve = Curve = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence }) +], Curve); +var ECPVer; +(function (ECPVer) { + ECPVer[ECPVer["ecpVer1"] = 1] = "ecpVer1"; +})(ECPVer || (exports.ECPVer = ECPVer = {})); +let SpecifiedECDomain = class SpecifiedECDomain { + constructor(params = {}) { + this.version = ECPVer.ecpVer1; + Object.assign(this, params); + } +}; +exports.SpecifiedECDomain = SpecifiedECDomain; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer }) +], SpecifiedECDomain.prototype, "version", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: FieldID }) +], SpecifiedECDomain.prototype, "fieldID", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: Curve }) +], SpecifiedECDomain.prototype, "curve", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: ECPoint }) +], SpecifiedECDomain.prototype, "base", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], SpecifiedECDomain.prototype, "order", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], SpecifiedECDomain.prototype, "cofactor", void 0); +exports.SpecifiedECDomain = SpecifiedECDomain = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence }) +], SpecifiedECDomain); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/algorithms.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/algorithms.js new file mode 100644 index 0000000..6152721 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/algorithms.js @@ -0,0 +1,10 @@ +import { AlgorithmIdentifier } from "@peculiar/asn1-x509"; +import * as oid from "./object_identifiers"; +function create(algorithm) { + return new AlgorithmIdentifier({ algorithm }); +} +export const ecdsaWithSHA1 = create(oid.id_ecdsaWithSHA1); +export const ecdsaWithSHA224 = create(oid.id_ecdsaWithSHA224); +export const ecdsaWithSHA256 = create(oid.id_ecdsaWithSHA256); +export const ecdsaWithSHA384 = create(oid.id_ecdsaWithSHA384); +export const ecdsaWithSHA512 = create(oid.id_ecdsaWithSHA512); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/ec_parameters.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/ec_parameters.js new file mode 100644 index 0000000..6165284 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/ec_parameters.js @@ -0,0 +1,21 @@ +import { __decorate } from "tslib"; +import { AsnType, AsnTypeTypes, AsnProp, AsnPropTypes } from "@peculiar/asn1-schema"; +import { SpecifiedECDomain } from "./rfc3279"; +let ECParameters = class ECParameters { + constructor(params = {}) { + Object.assign(this, params); + } +}; +__decorate([ + AsnProp({ type: AsnPropTypes.ObjectIdentifier }) +], ECParameters.prototype, "namedCurve", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Null }) +], ECParameters.prototype, "implicitCurve", void 0); +__decorate([ + AsnProp({ type: SpecifiedECDomain }) +], ECParameters.prototype, "specifiedCurve", void 0); +ECParameters = __decorate([ + AsnType({ type: AsnTypeTypes.Choice }) +], ECParameters); +export { ECParameters }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/ec_private_key.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/ec_private_key.js new file mode 100644 index 0000000..7362111 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/ec_private_key.js @@ -0,0 +1,22 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, OctetString } from "@peculiar/asn1-schema"; +import { ECParameters } from "./ec_parameters"; +export class ECPrivateKey { + constructor(params = {}) { + this.version = 1; + this.privateKey = new OctetString(); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.Integer }) +], ECPrivateKey.prototype, "version", void 0); +__decorate([ + AsnProp({ type: OctetString }) +], ECPrivateKey.prototype, "privateKey", void 0); +__decorate([ + AsnProp({ type: ECParameters, context: 0, optional: true }) +], ECPrivateKey.prototype, "parameters", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.BitString, context: 1, optional: true }) +], ECPrivateKey.prototype, "publicKey", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/ec_signature_value.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/ec_signature_value.js new file mode 100644 index 0000000..0ca88d8 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/ec_signature_value.js @@ -0,0 +1,15 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnIntegerArrayBufferConverter } from "@peculiar/asn1-schema"; +export class ECDSASigValue { + constructor(params = {}) { + this.r = new ArrayBuffer(0); + this.s = new ArrayBuffer(0); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], ECDSASigValue.prototype, "r", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], ECDSASigValue.prototype, "s", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/index.js new file mode 100644 index 0000000..123a635 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/index.js @@ -0,0 +1,6 @@ +export * from "./algorithms"; +export * from "./ec_parameters"; +export * from "./ec_private_key"; +export * from "./ec_signature_value"; +export * from "./object_identifiers"; +export * from "./rfc3279"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/object_identifiers.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/object_identifiers.js new file mode 100644 index 0000000..5caace8 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/object_identifiers.js @@ -0,0 +1,23 @@ +export const id_ecPublicKey = "1.2.840.10045.2.1"; +export const id_ecDH = "1.3.132.1.12"; +export const id_ecMQV = "1.3.132.1.13"; +export const id_ecdsaWithSHA1 = "1.2.840.10045.4.1"; +export const id_ecdsaWithSHA224 = "1.2.840.10045.4.3.1"; +export const id_ecdsaWithSHA256 = "1.2.840.10045.4.3.2"; +export const id_ecdsaWithSHA384 = "1.2.840.10045.4.3.3"; +export const id_ecdsaWithSHA512 = "1.2.840.10045.4.3.4"; +export const id_secp192r1 = "1.2.840.10045.3.1.1"; +export const id_sect163k1 = "1.3.132.0.1"; +export const id_sect163r2 = "1.3.132.0.15"; +export const id_secp224r1 = "1.3.132.0.33"; +export const id_sect233k1 = "1.3.132.0.26"; +export const id_sect233r1 = "1.3.132.0.27"; +export const id_secp256r1 = "1.2.840.10045.3.1.7"; +export const id_sect283k1 = "1.3.132.0.16"; +export const id_sect283r1 = "1.3.132.0.17"; +export const id_secp384r1 = "1.3.132.0.34"; +export const id_sect409k1 = "1.3.132.0.36"; +export const id_sect409r1 = "1.3.132.0.37"; +export const id_secp521r1 = "1.3.132.0.35"; +export const id_sect571k1 = "1.3.132.0.38"; +export const id_sect571r1 = "1.3.132.0.39"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/rfc3279.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/rfc3279.js new file mode 100644 index 0000000..e4866c3 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/es2015/rfc3279.js @@ -0,0 +1,71 @@ +import { __decorate } from "tslib"; +import { AsnType, AsnTypeTypes, AsnProp, AsnPropTypes, OctetString, AsnIntegerArrayBufferConverter, } from "@peculiar/asn1-schema"; +let FieldID = class FieldID { + constructor(params = {}) { + Object.assign(this, params); + } +}; +__decorate([ + AsnProp({ type: AsnPropTypes.ObjectIdentifier }) +], FieldID.prototype, "fieldType", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Any }) +], FieldID.prototype, "parameters", void 0); +FieldID = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence }) +], FieldID); +export { FieldID }; +export class ECPoint extends OctetString { +} +export class FieldElement extends OctetString { +} +let Curve = class Curve { + constructor(params = {}) { + Object.assign(this, params); + } +}; +__decorate([ + AsnProp({ type: AsnPropTypes.OctetString }) +], Curve.prototype, "a", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.OctetString }) +], Curve.prototype, "b", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.BitString, optional: true }) +], Curve.prototype, "seed", void 0); +Curve = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence }) +], Curve); +export { Curve }; +export var ECPVer; +(function (ECPVer) { + ECPVer[ECPVer["ecpVer1"] = 1] = "ecpVer1"; +})(ECPVer || (ECPVer = {})); +let SpecifiedECDomain = class SpecifiedECDomain { + constructor(params = {}) { + this.version = ECPVer.ecpVer1; + Object.assign(this, params); + } +}; +__decorate([ + AsnProp({ type: AsnPropTypes.Integer }) +], SpecifiedECDomain.prototype, "version", void 0); +__decorate([ + AsnProp({ type: FieldID }) +], SpecifiedECDomain.prototype, "fieldID", void 0); +__decorate([ + AsnProp({ type: Curve }) +], SpecifiedECDomain.prototype, "curve", void 0); +__decorate([ + AsnProp({ type: ECPoint }) +], SpecifiedECDomain.prototype, "base", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], SpecifiedECDomain.prototype, "order", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, optional: true }) +], SpecifiedECDomain.prototype, "cofactor", void 0); +SpecifiedECDomain = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence }) +], SpecifiedECDomain); +export { SpecifiedECDomain }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/algorithms.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/algorithms.d.ts new file mode 100644 index 0000000..214fe80 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/algorithms.d.ts @@ -0,0 +1,22 @@ +import { AlgorithmIdentifier } from "@peculiar/asn1-x509"; +/** + * ECDSA with SHA-1 + * Parameters are ABSENT + */ +export declare const ecdsaWithSHA1: AlgorithmIdentifier; +/** + * ECDSA with SHA-224. Parameters are ABSENT + */ +export declare const ecdsaWithSHA224: AlgorithmIdentifier; +/** + * ECDSA with SHA-256. Parameters are ABSENT + */ +export declare const ecdsaWithSHA256: AlgorithmIdentifier; +/** + * ECDSA with SHA-384. Parameters are ABSENT + */ +export declare const ecdsaWithSHA384: AlgorithmIdentifier; +/** + * ECDSA with SHA-512. Parameters are ABSENT + */ +export declare const ecdsaWithSHA512: AlgorithmIdentifier; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/ec_parameters.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/ec_parameters.d.ts new file mode 100644 index 0000000..8a3664f --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/ec_parameters.d.ts @@ -0,0 +1,20 @@ +import { SpecifiedECDomain } from "./rfc3279"; +/** + * ```asn1 + * ECParameters ::= CHOICE { + * namedCurve OBJECT IDENTIFIER + * implicitCurve NULL + * specifiedCurve SpecifiedECDomain + * } + * -- implicitCurve and specifiedCurve MUST NOT be used in PKIX. + * -- Details for SpecifiedECDomain can be found in [X9.62]. + * -- Any future additions to this CHOICE should be coordinated + * -- with ANSI X9. + * ``` + */ +export declare class ECParameters { + namedCurve?: string; + implicitCurve?: null; + specifiedCurve?: SpecifiedECDomain; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/ec_private_key.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/ec_private_key.d.ts new file mode 100644 index 0000000..a8253af --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/ec_private_key.d.ts @@ -0,0 +1,19 @@ +import { OctetString } from "@peculiar/asn1-schema"; +import { ECParameters } from "./ec_parameters"; +/** + * ```asn1 + * ECPrivateKey ::= SEQUENCE { + * version INTEGER { ecPrivkeyVer1(1) } (ecPrivkeyVer1), + * privateKey OCTET STRING, + * parameters [0] ECParameters {{ NamedCurve }} OPTIONAL, + * publicKey [1] BIT STRING OPTIONAL + * } + * ``` + */ +export declare class ECPrivateKey { + version: number; + privateKey: OctetString; + parameters?: ECParameters; + publicKey?: ArrayBuffer; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/ec_signature_value.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/ec_signature_value.d.ts new file mode 100644 index 0000000..038ed33 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/ec_signature_value.d.ts @@ -0,0 +1,13 @@ +/** + * ```asn1 + * ECDSA-Sig-Value ::= SEQUENCE { + * r INTEGER, + * s INTEGER + * } + * ``` + */ +export declare class ECDSASigValue { + r: ArrayBuffer; + s: ArrayBuffer; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/index.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/index.d.ts new file mode 100644 index 0000000..123a635 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/index.d.ts @@ -0,0 +1,6 @@ +export * from "./algorithms"; +export * from "./ec_parameters"; +export * from "./ec_private_key"; +export * from "./ec_signature_value"; +export * from "./object_identifiers"; +export * from "./rfc3279"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/object_identifiers.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/object_identifiers.d.ts new file mode 100644 index 0000000..a9c0641 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/object_identifiers.d.ts @@ -0,0 +1,169 @@ +/** + * ```asn1 + * id-ecPublicKey OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) keyType(2) 1 } + * ``` + */ +export declare const id_ecPublicKey = "1.2.840.10045.2.1"; +/** + * ```asn1 + * id-ecDH OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) schemes(1) + * ecdh(12) } + * ``` + */ +export declare const id_ecDH = "1.3.132.1.12"; +/** + * ```asn1 + * id-ecMQV OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) schemes(1) + * ecmqv(13) } + * ``` + */ +export declare const id_ecMQV = "1.3.132.1.13"; +/** + * ```asn1 + * ecdsa-with-SHA1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) 1 } + * ``` + */ +export declare const id_ecdsaWithSHA1 = "1.2.840.10045.4.1"; +/** + * ```asn1 + * ecdsa-with-SHA224 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 1 } + * ``` + */ +export declare const id_ecdsaWithSHA224 = "1.2.840.10045.4.3.1"; +/** + * ```asn1 + * ecdsa-with-SHA256 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 2 } + * ``` + */ +export declare const id_ecdsaWithSHA256 = "1.2.840.10045.4.3.2"; +/** + * ```asn1 + * ecdsa-with-SHA384 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 3 } + * ``` + */ +export declare const id_ecdsaWithSHA384 = "1.2.840.10045.4.3.3"; +/** + * ```asn1 + * ecdsa-with-SHA512 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) signatures(4) + * ecdsa-with-SHA2(3) 4 } + * ``` + */ +export declare const id_ecdsaWithSHA512 = "1.2.840.10045.4.3.4"; +/** + * ```asn1 + * secp192r1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) + * prime(1) 1 } + * ``` + */ +export declare const id_secp192r1 = "1.2.840.10045.3.1.1"; +/** + * ```asn1 + * sect163k1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 1 } + * ``` + */ +export declare const id_sect163k1 = "1.3.132.0.1"; +/** + * ```asn1 + * sect163r2 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 15 } + * ``` + */ +export declare const id_sect163r2 = "1.3.132.0.15"; +/** + * ```asn1 + * secp224r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 33 } + * ``` + */ +export declare const id_secp224r1 = "1.3.132.0.33"; +/** + * ```asn1 + * sect233k1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 26 } + * ``` + */ +export declare const id_sect233k1 = "1.3.132.0.26"; +/** + * ```asn1 + * sect233r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 27 } + * ``` + */ +export declare const id_sect233r1 = "1.3.132.0.27"; +/** + * ```asn1 + * secp256r1 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) + * prime(1) 7 } + * ``` + */ +export declare const id_secp256r1 = "1.2.840.10045.3.1.7"; +/** + * ```asn1 + * sect283k1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 16 } + * ``` + */ +export declare const id_sect283k1 = "1.3.132.0.16"; +/** + * ```asn1 + * sect283r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 17 } + * ``` + */ +export declare const id_sect283r1 = "1.3.132.0.17"; +/** + * ```asn1 + * secp384r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 34 } + * ``` + */ +export declare const id_secp384r1 = "1.3.132.0.34"; +/** + * ```asn1 + * sect409k1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 36 } + * ``` + */ +export declare const id_sect409k1 = "1.3.132.0.36"; +/** + * ```asn1 + * sect409r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 37 } + * ``` + */ +export declare const id_sect409r1 = "1.3.132.0.37"; +/** + * ```asn1 + * secp521r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 35 } + * ``` + */ +export declare const id_secp521r1 = "1.3.132.0.35"; +/** + * ```asn1 + * sect571k1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 38 } + * ``` + */ +export declare const id_sect571k1 = "1.3.132.0.38"; +/** + * ```asn1 + * sect571r1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) certicom(132) curve(0) 39 } + * ``` + */ +export declare const id_sect571r1 = "1.3.132.0.39"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/rfc3279.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/rfc3279.d.ts new file mode 100644 index 0000000..838fda2 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/build/types/rfc3279.d.ts @@ -0,0 +1,73 @@ +import { OctetString } from "@peculiar/asn1-schema"; +/** + * ```asn1 + * FieldID ::= SEQUENCE { + * fieldType OBJECT IDENTIFIER, + * parameters ANY DEFINED BY fieldType } + * ``` + */ +export declare class FieldID { + fieldType: string; + parameters: ArrayBuffer; + constructor(params?: Partial); +} +/** + * ```asn1 + * ECPoint ::= OCTET STRING + * ``` + */ +export declare class ECPoint extends OctetString { +} +/** + * ```asn1 + * FieldElement ::= OCTET STRING + * ``` + */ +export declare class FieldElement extends OctetString { +} +/** + * ```asn1 + * Curve ::= SEQUENCE { + * a FieldElement, + * b FieldElement, + * seed BIT STRING OPTIONAL } + * ``` + */ +export declare class Curve { + a: ArrayBuffer; + b: ArrayBuffer; + seed?: ArrayBuffer; + constructor(params?: Partial); +} +/** + * ```asn1 + * ECPVer ::= INTEGER {ecpVer1(1)} + * ``` + */ +export declare enum ECPVer { + ecpVer1 = 1 +} +/** + * ```asn1 + * SpecifiedECDomain ::= SEQUENCE { + * version ECPVer, -- version is always 1 + * fieldID FieldID, -- identifies the finite field over + * -- which the curve is defined + * curve Curve, -- coefficients a and b of the + * -- elliptic curve + * base ECPoint, -- specifies the base point P + * -- on the elliptic curve + * order INTEGER, -- the order n of the base point + * cofactor INTEGER OPTIONAL -- The integer h = #E(Fq)/n + * } + * ``` + */ +export declare class SpecifiedECDomain { + version: ECPVer; + fieldID: FieldID; + curve: Curve; + base: ECPoint; + order: ArrayBuffer; + cofactor?: ArrayBuffer; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/CopyrightNotice.txt b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/CopyrightNotice.txt new file mode 100644 index 0000000..5d7d2d9 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/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/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/LICENSE.txt b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/LICENSE.txt new file mode 100644 index 0000000..fa7d1bd --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/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/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/README.md b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/README.md new file mode 100644 index 0000000..14b9a83 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/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/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/SECURITY.md b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/SECURITY.md new file mode 100644 index 0000000..869fdfe --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/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/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/modules/index.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/modules/index.d.ts new file mode 100644 index 0000000..3244fab --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/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/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/modules/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/modules/index.js new file mode 100644 index 0000000..f4f9a06 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/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/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/modules/package.json b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/modules/package.json new file mode 100644 index 0000000..96ae6e5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/modules/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/package.json b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/package.json new file mode 100644 index 0000000..57d0578 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/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/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/tslib.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/tslib.d.ts new file mode 100644 index 0000000..9c27e05 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/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/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/tslib.es6.html b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/tslib.es6.html new file mode 100644 index 0000000..b122e41 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/tslib.es6.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/tslib.es6.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/tslib.es6.js new file mode 100644 index 0000000..67ba5c5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/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/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/tslib.es6.mjs b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/tslib.es6.mjs new file mode 100644 index 0000000..c17990a --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/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/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/tslib.html b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/tslib.html new file mode 100644 index 0000000..44c9ba5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/tslib.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/tslib.js b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/node_modules/tslib/tslib.js new file mode 100644 index 0000000..b6509f7 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/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/api.hyungi.net/node_modules/@peculiar/asn1-ecc/package.json b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/package.json new file mode 100644 index 0000000..0a7f3e5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-ecc/package.json @@ -0,0 +1,47 @@ +{ + "name": "@peculiar/asn1-ecc", + "version": "2.3.15", + "description": "ASN.1 schema of `Elliptic Curve Private Key Structure` (RFC5915)", + "files": [ + "build/**/*.{js,d.ts}", + "LICENSE", + "README.md" + ], + "bugs": { + "url": "https://github.com/PeculiarVentures/asn1-schema/issues" + }, + "homepage": "https://github.com/PeculiarVentures/asn1-schema/tree/master/packages/ecc#readme", + "keywords": [ + "asn", + "ecc", + "rfc5915", + "rfc5480", + "rfc3279" + ], + "author": "PeculiarVentures, LLC", + "license": "MIT", + "main": "build/cjs/index.js", + "module": "build/es2015/index.js", + "types": "build/types/index.d.ts", + "publishConfig": { + "access": "public" + }, + "scripts": { + "test": "mocha", + "clear": "rimraf build", + "build": "npm run build:module && npm run build:types", + "build:module": "npm run build:cjs && npm run build:es2015", + "build:cjs": "tsc -p tsconfig.compile.json --removeComments --module commonjs --outDir build/cjs", + "build:es2015": "tsc -p tsconfig.compile.json --removeComments --module ES2015 --outDir build/es2015", + "prebuild:types": "rimraf build/types", + "build:types": "tsc -p tsconfig.compile.json --outDir build/types --declaration --emitDeclarationOnly", + "rebuild": "npm run clear && npm run build" + }, + "dependencies": { + "@peculiar/asn1-schema": "^2.3.15", + "@peculiar/asn1-x509": "^2.3.15", + "asn1js": "^3.0.5", + "tslib": "^2.8.1" + }, + "gitHead": "b6c7130efa9bc3ee5e2ea1da5d01aede5182921f" +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/LICENSE b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/LICENSE new file mode 100644 index 0000000..4367593 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/README.md b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/README.md new file mode 100644 index 0000000..117ad6f --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/README.md @@ -0,0 +1,8 @@ +# `@peculiar/asn1-rsa` + +[![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://raw.githubusercontent.com/PeculiarVentures/asn1-schema/master/packages/rsa/LICENSE.md) +[![npm version](https://badge.fury.io/js/%40peculiar%2Fasn1-rsa.svg)](https://badge.fury.io/js/%40peculiar%2Fasn1-rsa) + +[![NPM](https://nodei.co/npm/@peculiar/asn1-rsa.png)](https://nodei.co/npm/@peculiar/asn1-rsa/) + +[RFC 8017](https://tools.ietf.org/html/rfc8017) RSA Cryptography Specifications Version 2.2 \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/algorithms.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/algorithms.js new file mode 100644 index 0000000..3ae1988 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/algorithms.js @@ -0,0 +1,39 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.sha512_256WithRSAEncryption = exports.sha512_224WithRSAEncryption = exports.sha512WithRSAEncryption = exports.sha384WithRSAEncryption = exports.sha256WithRSAEncryption = exports.sha224WithRSAEncryption = exports.sha1WithRSAEncryption = exports.md5WithRSAEncryption = exports.md2WithRSAEncryption = exports.rsaEncryption = exports.pSpecifiedEmpty = exports.mgf1SHA1 = exports.sha512_256 = exports.sha512_224 = exports.sha512 = exports.sha384 = exports.sha256 = exports.sha224 = exports.sha1 = exports.md4 = exports.md2 = void 0; +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const asn1_x509_1 = require("@peculiar/asn1-x509"); +const oid = require("./object_identifiers"); +function create(algorithm) { + return new asn1_x509_1.AlgorithmIdentifier({ algorithm, parameters: null }); +} +exports.md2 = create(oid.id_md2); +exports.md4 = create(oid.id_md5); +exports.sha1 = create(oid.id_sha1); +exports.sha224 = create(oid.id_sha224); +exports.sha256 = create(oid.id_sha256); +exports.sha384 = create(oid.id_sha384); +exports.sha512 = create(oid.id_sha512); +exports.sha512_224 = create(oid.id_sha512_224); +exports.sha512_256 = create(oid.id_sha512_256); +exports.mgf1SHA1 = new asn1_x509_1.AlgorithmIdentifier({ + algorithm: oid.id_mgf1, + parameters: asn1_schema_1.AsnConvert.serialize(exports.sha1), +}); +exports.pSpecifiedEmpty = new asn1_x509_1.AlgorithmIdentifier({ + algorithm: oid.id_pSpecified, + parameters: asn1_schema_1.AsnConvert.serialize(asn1_schema_1.AsnOctetStringConverter.toASN(new Uint8Array([ + 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, + 0x90, 0xaf, 0xd8, 0x07, 0x09, + ]).buffer)), +}); +exports.rsaEncryption = create(oid.id_rsaEncryption); +exports.md2WithRSAEncryption = create(oid.id_md2WithRSAEncryption); +exports.md5WithRSAEncryption = create(oid.id_md5WithRSAEncryption); +exports.sha1WithRSAEncryption = create(oid.id_sha1WithRSAEncryption); +exports.sha224WithRSAEncryption = create(oid.id_sha512_224WithRSAEncryption); +exports.sha256WithRSAEncryption = create(oid.id_sha512_256WithRSAEncryption); +exports.sha384WithRSAEncryption = create(oid.id_sha384WithRSAEncryption); +exports.sha512WithRSAEncryption = create(oid.id_sha512WithRSAEncryption); +exports.sha512_224WithRSAEncryption = create(oid.id_sha512_224WithRSAEncryption); +exports.sha512_256WithRSAEncryption = create(oid.id_sha512_256WithRSAEncryption); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/index.js new file mode 100644 index 0000000..b1c92a2 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/index.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./parameters"), exports); +tslib_1.__exportStar(require("./algorithms"), exports); +tslib_1.__exportStar(require("./object_identifiers"), exports); +tslib_1.__exportStar(require("./other_prime_info"), exports); +tslib_1.__exportStar(require("./rsa_private_key"), exports); +tslib_1.__exportStar(require("./rsa_public_key"), exports); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/object_identifiers.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/object_identifiers.js new file mode 100644 index 0000000..06defad --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/object_identifiers.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.id_mgf1 = exports.id_md5 = exports.id_md2 = exports.id_sha512_256 = exports.id_sha512_224 = exports.id_sha512 = exports.id_sha384 = exports.id_sha256 = exports.id_sha224 = exports.id_sha1 = exports.id_sha512_256WithRSAEncryption = exports.id_sha512_224WithRSAEncryption = exports.id_sha512WithRSAEncryption = exports.id_sha384WithRSAEncryption = exports.id_sha256WithRSAEncryption = exports.id_ssha224WithRSAEncryption = exports.id_sha224WithRSAEncryption = exports.id_sha1WithRSAEncryption = exports.id_md5WithRSAEncryption = exports.id_md2WithRSAEncryption = exports.id_RSASSA_PSS = exports.id_pSpecified = exports.id_RSAES_OAEP = exports.id_rsaEncryption = exports.id_pkcs_1 = void 0; +exports.id_pkcs_1 = "1.2.840.113549.1.1"; +exports.id_rsaEncryption = `${exports.id_pkcs_1}.1`; +exports.id_RSAES_OAEP = `${exports.id_pkcs_1}.7`; +exports.id_pSpecified = `${exports.id_pkcs_1}.9`; +exports.id_RSASSA_PSS = `${exports.id_pkcs_1}.10`; +exports.id_md2WithRSAEncryption = `${exports.id_pkcs_1}.2`; +exports.id_md5WithRSAEncryption = `${exports.id_pkcs_1}.4`; +exports.id_sha1WithRSAEncryption = `${exports.id_pkcs_1}.5`; +exports.id_sha224WithRSAEncryption = `${exports.id_pkcs_1}.14`; +exports.id_ssha224WithRSAEncryption = exports.id_sha224WithRSAEncryption; +exports.id_sha256WithRSAEncryption = `${exports.id_pkcs_1}.11`; +exports.id_sha384WithRSAEncryption = `${exports.id_pkcs_1}.12`; +exports.id_sha512WithRSAEncryption = `${exports.id_pkcs_1}.13`; +exports.id_sha512_224WithRSAEncryption = `${exports.id_pkcs_1}.15`; +exports.id_sha512_256WithRSAEncryption = `${exports.id_pkcs_1}.16`; +exports.id_sha1 = "1.3.14.3.2.26"; +exports.id_sha224 = "2.16.840.1.101.3.4.2.4"; +exports.id_sha256 = "2.16.840.1.101.3.4.2.1"; +exports.id_sha384 = "2.16.840.1.101.3.4.2.2"; +exports.id_sha512 = "2.16.840.1.101.3.4.2.3"; +exports.id_sha512_224 = "2.16.840.1.101.3.4.2.5"; +exports.id_sha512_256 = "2.16.840.1.101.3.4.2.6"; +exports.id_md2 = "1.2.840.113549.2.2"; +exports.id_md5 = "1.2.840.113549.2.5"; +exports.id_mgf1 = `${exports.id_pkcs_1}.8`; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/other_prime_info.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/other_prime_info.js new file mode 100644 index 0000000..7e85edd --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/other_prime_info.js @@ -0,0 +1,34 @@ +"use strict"; +var OtherPrimeInfos_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.OtherPrimeInfos = exports.OtherPrimeInfo = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +class OtherPrimeInfo { + constructor(params = {}) { + this.prime = new ArrayBuffer(0); + this.exponent = new ArrayBuffer(0); + this.coefficient = new ArrayBuffer(0); + Object.assign(this, params); + } +} +exports.OtherPrimeInfo = OtherPrimeInfo; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], OtherPrimeInfo.prototype, "prime", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], OtherPrimeInfo.prototype, "exponent", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], OtherPrimeInfo.prototype, "coefficient", void 0); +let OtherPrimeInfos = OtherPrimeInfos_1 = class OtherPrimeInfos extends asn1_schema_1.AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, OtherPrimeInfos_1.prototype); + } +}; +exports.OtherPrimeInfos = OtherPrimeInfos; +exports.OtherPrimeInfos = OtherPrimeInfos = OtherPrimeInfos_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence, itemType: OtherPrimeInfo }) +], OtherPrimeInfos); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/parameters/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/parameters/index.js new file mode 100644 index 0000000..c624684 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/parameters/index.js @@ -0,0 +1,6 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./rsaes_oaep"), exports); +tslib_1.__exportStar(require("./rsassa_pss"), exports); +tslib_1.__exportStar(require("./rsassa_pkcs1_v1_5"), exports); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/parameters/rsaes_oaep.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/parameters/rsaes_oaep.js new file mode 100644 index 0000000..6e65e68 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/parameters/rsaes_oaep.js @@ -0,0 +1,33 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RSAES_OAEP = exports.RsaEsOaepParams = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const asn1_x509_1 = require("@peculiar/asn1-x509"); +const object_identifiers_1 = require("../object_identifiers"); +const algorithms_1 = require("../algorithms"); +class RsaEsOaepParams { + constructor(params = {}) { + this.hashAlgorithm = new asn1_x509_1.AlgorithmIdentifier(algorithms_1.sha1); + this.maskGenAlgorithm = new asn1_x509_1.AlgorithmIdentifier({ + algorithm: object_identifiers_1.id_mgf1, + parameters: asn1_schema_1.AsnConvert.serialize(algorithms_1.sha1), + }); + this.pSourceAlgorithm = new asn1_x509_1.AlgorithmIdentifier(algorithms_1.pSpecifiedEmpty); + Object.assign(this, params); + } +} +exports.RsaEsOaepParams = RsaEsOaepParams; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_x509_1.AlgorithmIdentifier, context: 0, defaultValue: algorithms_1.sha1 }) +], RsaEsOaepParams.prototype, "hashAlgorithm", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_x509_1.AlgorithmIdentifier, context: 1, defaultValue: algorithms_1.mgf1SHA1 }) +], RsaEsOaepParams.prototype, "maskGenAlgorithm", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_x509_1.AlgorithmIdentifier, context: 2, defaultValue: algorithms_1.pSpecifiedEmpty }) +], RsaEsOaepParams.prototype, "pSourceAlgorithm", void 0); +exports.RSAES_OAEP = new asn1_x509_1.AlgorithmIdentifier({ + algorithm: object_identifiers_1.id_RSAES_OAEP, + parameters: asn1_schema_1.AsnConvert.serialize(new RsaEsOaepParams()), +}); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/parameters/rsassa_pkcs1_v1_5.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/parameters/rsassa_pkcs1_v1_5.js new file mode 100644 index 0000000..18bcd0c --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/parameters/rsassa_pkcs1_v1_5.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DigestInfo = void 0; +const tslib_1 = require("tslib"); +const asn1_x509_1 = require("@peculiar/asn1-x509"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +class DigestInfo { + constructor(params = {}) { + this.digestAlgorithm = new asn1_x509_1.AlgorithmIdentifier(); + this.digest = new asn1_schema_1.OctetString(); + Object.assign(this, params); + } +} +exports.DigestInfo = DigestInfo; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_x509_1.AlgorithmIdentifier }) +], DigestInfo.prototype, "digestAlgorithm", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.OctetString }) +], DigestInfo.prototype, "digest", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/parameters/rsassa_pss.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/parameters/rsassa_pss.js new file mode 100644 index 0000000..1368e72 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/parameters/rsassa_pss.js @@ -0,0 +1,37 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RSASSA_PSS = exports.RsaSaPssParams = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const asn1_x509_1 = require("@peculiar/asn1-x509"); +const object_identifiers_1 = require("../object_identifiers"); +const algorithms_1 = require("../algorithms"); +class RsaSaPssParams { + constructor(params = {}) { + this.hashAlgorithm = new asn1_x509_1.AlgorithmIdentifier(algorithms_1.sha1); + this.maskGenAlgorithm = new asn1_x509_1.AlgorithmIdentifier({ + algorithm: object_identifiers_1.id_mgf1, + parameters: asn1_schema_1.AsnConvert.serialize(algorithms_1.sha1), + }); + this.saltLength = 20; + this.trailerField = 1; + Object.assign(this, params); + } +} +exports.RsaSaPssParams = RsaSaPssParams; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_x509_1.AlgorithmIdentifier, context: 0, defaultValue: algorithms_1.sha1 }) +], RsaSaPssParams.prototype, "hashAlgorithm", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_x509_1.AlgorithmIdentifier, context: 1, defaultValue: algorithms_1.mgf1SHA1 }) +], RsaSaPssParams.prototype, "maskGenAlgorithm", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, context: 2, defaultValue: 20 }) +], RsaSaPssParams.prototype, "saltLength", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, context: 3, defaultValue: 1 }) +], RsaSaPssParams.prototype, "trailerField", void 0); +exports.RSASSA_PSS = new asn1_x509_1.AlgorithmIdentifier({ + algorithm: object_identifiers_1.id_RSASSA_PSS, + parameters: asn1_schema_1.AsnConvert.serialize(new RsaSaPssParams()), +}); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/rsa_private_key.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/rsa_private_key.js new file mode 100644 index 0000000..84d2390 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/rsa_private_key.js @@ -0,0 +1,51 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RSAPrivateKey = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const other_prime_info_1 = require("./other_prime_info"); +class RSAPrivateKey { + constructor(params = {}) { + this.version = 0; + this.modulus = new ArrayBuffer(0); + this.publicExponent = new ArrayBuffer(0); + this.privateExponent = new ArrayBuffer(0); + this.prime1 = new ArrayBuffer(0); + this.prime2 = new ArrayBuffer(0); + this.exponent1 = new ArrayBuffer(0); + this.exponent2 = new ArrayBuffer(0); + this.coefficient = new ArrayBuffer(0); + Object.assign(this, params); + } +} +exports.RSAPrivateKey = RSAPrivateKey; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer }) +], RSAPrivateKey.prototype, "version", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "modulus", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "publicExponent", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "privateExponent", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "prime1", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "prime2", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "exponent1", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "exponent2", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "coefficient", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: other_prime_info_1.OtherPrimeInfos, optional: true }) +], RSAPrivateKey.prototype, "otherPrimeInfos", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/rsa_public_key.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/rsa_public_key.js new file mode 100644 index 0000000..9000e94 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/cjs/rsa_public_key.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.RSAPublicKey = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +class RSAPublicKey { + constructor(params = {}) { + this.modulus = new ArrayBuffer(0); + this.publicExponent = new ArrayBuffer(0); + Object.assign(this, params); + } +} +exports.RSAPublicKey = RSAPublicKey; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], RSAPublicKey.prototype, "modulus", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], RSAPublicKey.prototype, "publicExponent", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/algorithms.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/algorithms.js new file mode 100644 index 0000000..f568ce0 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/algorithms.js @@ -0,0 +1,36 @@ +import { AsnConvert, AsnOctetStringConverter } from "@peculiar/asn1-schema"; +import { AlgorithmIdentifier } from "@peculiar/asn1-x509"; +import * as oid from "./object_identifiers"; +function create(algorithm) { + return new AlgorithmIdentifier({ algorithm, parameters: null }); +} +export const md2 = create(oid.id_md2); +export const md4 = create(oid.id_md5); +export const sha1 = create(oid.id_sha1); +export const sha224 = create(oid.id_sha224); +export const sha256 = create(oid.id_sha256); +export const sha384 = create(oid.id_sha384); +export const sha512 = create(oid.id_sha512); +export const sha512_224 = create(oid.id_sha512_224); +export const sha512_256 = create(oid.id_sha512_256); +export const mgf1SHA1 = new AlgorithmIdentifier({ + algorithm: oid.id_mgf1, + parameters: AsnConvert.serialize(sha1), +}); +export const pSpecifiedEmpty = new AlgorithmIdentifier({ + algorithm: oid.id_pSpecified, + parameters: AsnConvert.serialize(AsnOctetStringConverter.toASN(new Uint8Array([ + 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, + 0x90, 0xaf, 0xd8, 0x07, 0x09, + ]).buffer)), +}); +export const rsaEncryption = create(oid.id_rsaEncryption); +export const md2WithRSAEncryption = create(oid.id_md2WithRSAEncryption); +export const md5WithRSAEncryption = create(oid.id_md5WithRSAEncryption); +export const sha1WithRSAEncryption = create(oid.id_sha1WithRSAEncryption); +export const sha224WithRSAEncryption = create(oid.id_sha512_224WithRSAEncryption); +export const sha256WithRSAEncryption = create(oid.id_sha512_256WithRSAEncryption); +export const sha384WithRSAEncryption = create(oid.id_sha384WithRSAEncryption); +export const sha512WithRSAEncryption = create(oid.id_sha512WithRSAEncryption); +export const sha512_224WithRSAEncryption = create(oid.id_sha512_224WithRSAEncryption); +export const sha512_256WithRSAEncryption = create(oid.id_sha512_256WithRSAEncryption); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/index.js new file mode 100644 index 0000000..77e3add --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/index.js @@ -0,0 +1,6 @@ +export * from "./parameters"; +export * from "./algorithms"; +export * from "./object_identifiers"; +export * from "./other_prime_info"; +export * from "./rsa_private_key"; +export * from "./rsa_public_key"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/object_identifiers.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/object_identifiers.js new file mode 100644 index 0000000..f0ca204 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/object_identifiers.js @@ -0,0 +1,25 @@ +export const id_pkcs_1 = "1.2.840.113549.1.1"; +export const id_rsaEncryption = `${id_pkcs_1}.1`; +export const id_RSAES_OAEP = `${id_pkcs_1}.7`; +export const id_pSpecified = `${id_pkcs_1}.9`; +export const id_RSASSA_PSS = `${id_pkcs_1}.10`; +export const id_md2WithRSAEncryption = `${id_pkcs_1}.2`; +export const id_md5WithRSAEncryption = `${id_pkcs_1}.4`; +export const id_sha1WithRSAEncryption = `${id_pkcs_1}.5`; +export const id_sha224WithRSAEncryption = `${id_pkcs_1}.14`; +export const id_ssha224WithRSAEncryption = id_sha224WithRSAEncryption; +export const id_sha256WithRSAEncryption = `${id_pkcs_1}.11`; +export const id_sha384WithRSAEncryption = `${id_pkcs_1}.12`; +export const id_sha512WithRSAEncryption = `${id_pkcs_1}.13`; +export const id_sha512_224WithRSAEncryption = `${id_pkcs_1}.15`; +export const id_sha512_256WithRSAEncryption = `${id_pkcs_1}.16`; +export const id_sha1 = "1.3.14.3.2.26"; +export const id_sha224 = "2.16.840.1.101.3.4.2.4"; +export const id_sha256 = "2.16.840.1.101.3.4.2.1"; +export const id_sha384 = "2.16.840.1.101.3.4.2.2"; +export const id_sha512 = "2.16.840.1.101.3.4.2.3"; +export const id_sha512_224 = "2.16.840.1.101.3.4.2.5"; +export const id_sha512_256 = "2.16.840.1.101.3.4.2.6"; +export const id_md2 = "1.2.840.113549.2.2"; +export const id_md5 = "1.2.840.113549.2.5"; +export const id_mgf1 = `${id_pkcs_1}.8`; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/other_prime_info.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/other_prime_info.js new file mode 100644 index 0000000..febd1fe --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/other_prime_info.js @@ -0,0 +1,30 @@ +var OtherPrimeInfos_1; +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnIntegerArrayBufferConverter, AsnArray, AsnType, AsnTypeTypes, } from "@peculiar/asn1-schema"; +export class OtherPrimeInfo { + constructor(params = {}) { + this.prime = new ArrayBuffer(0); + this.exponent = new ArrayBuffer(0); + this.coefficient = new ArrayBuffer(0); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], OtherPrimeInfo.prototype, "prime", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], OtherPrimeInfo.prototype, "exponent", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], OtherPrimeInfo.prototype, "coefficient", void 0); +let OtherPrimeInfos = OtherPrimeInfos_1 = class OtherPrimeInfos extends AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, OtherPrimeInfos_1.prototype); + } +}; +OtherPrimeInfos = OtherPrimeInfos_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence, itemType: OtherPrimeInfo }) +], OtherPrimeInfos); +export { OtherPrimeInfos }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/parameters/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/parameters/index.js new file mode 100644 index 0000000..3d8e90e --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/parameters/index.js @@ -0,0 +1,3 @@ +export * from "./rsaes_oaep"; +export * from "./rsassa_pss"; +export * from "./rsassa_pkcs1_v1_5"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/parameters/rsaes_oaep.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/parameters/rsaes_oaep.js new file mode 100644 index 0000000..146f479 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/parameters/rsaes_oaep.js @@ -0,0 +1,29 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnConvert } from "@peculiar/asn1-schema"; +import { AlgorithmIdentifier } from "@peculiar/asn1-x509"; +import { id_mgf1, id_RSAES_OAEP } from "../object_identifiers"; +import { sha1, mgf1SHA1, pSpecifiedEmpty } from "../algorithms"; +export class RsaEsOaepParams { + constructor(params = {}) { + this.hashAlgorithm = new AlgorithmIdentifier(sha1); + this.maskGenAlgorithm = new AlgorithmIdentifier({ + algorithm: id_mgf1, + parameters: AsnConvert.serialize(sha1), + }); + this.pSourceAlgorithm = new AlgorithmIdentifier(pSpecifiedEmpty); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AlgorithmIdentifier, context: 0, defaultValue: sha1 }) +], RsaEsOaepParams.prototype, "hashAlgorithm", void 0); +__decorate([ + AsnProp({ type: AlgorithmIdentifier, context: 1, defaultValue: mgf1SHA1 }) +], RsaEsOaepParams.prototype, "maskGenAlgorithm", void 0); +__decorate([ + AsnProp({ type: AlgorithmIdentifier, context: 2, defaultValue: pSpecifiedEmpty }) +], RsaEsOaepParams.prototype, "pSourceAlgorithm", void 0); +export const RSAES_OAEP = new AlgorithmIdentifier({ + algorithm: id_RSAES_OAEP, + parameters: AsnConvert.serialize(new RsaEsOaepParams()), +}); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/parameters/rsassa_pkcs1_v1_5.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/parameters/rsassa_pkcs1_v1_5.js new file mode 100644 index 0000000..7f8beb9 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/parameters/rsassa_pkcs1_v1_5.js @@ -0,0 +1,16 @@ +import { __decorate } from "tslib"; +import { AlgorithmIdentifier } from "@peculiar/asn1-x509"; +import { AsnProp, OctetString } from "@peculiar/asn1-schema"; +export class DigestInfo { + constructor(params = {}) { + this.digestAlgorithm = new AlgorithmIdentifier(); + this.digest = new OctetString(); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AlgorithmIdentifier }) +], DigestInfo.prototype, "digestAlgorithm", void 0); +__decorate([ + AsnProp({ type: OctetString }) +], DigestInfo.prototype, "digest", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/parameters/rsassa_pss.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/parameters/rsassa_pss.js new file mode 100644 index 0000000..2f33ac1 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/parameters/rsassa_pss.js @@ -0,0 +1,33 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnConvert, AsnPropTypes } from "@peculiar/asn1-schema"; +import { AlgorithmIdentifier } from "@peculiar/asn1-x509"; +import { id_mgf1, id_RSASSA_PSS } from "../object_identifiers"; +import { sha1, mgf1SHA1 } from "../algorithms"; +export class RsaSaPssParams { + constructor(params = {}) { + this.hashAlgorithm = new AlgorithmIdentifier(sha1); + this.maskGenAlgorithm = new AlgorithmIdentifier({ + algorithm: id_mgf1, + parameters: AsnConvert.serialize(sha1), + }); + this.saltLength = 20; + this.trailerField = 1; + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AlgorithmIdentifier, context: 0, defaultValue: sha1 }) +], RsaSaPssParams.prototype, "hashAlgorithm", void 0); +__decorate([ + AsnProp({ type: AlgorithmIdentifier, context: 1, defaultValue: mgf1SHA1 }) +], RsaSaPssParams.prototype, "maskGenAlgorithm", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, context: 2, defaultValue: 20 }) +], RsaSaPssParams.prototype, "saltLength", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, context: 3, defaultValue: 1 }) +], RsaSaPssParams.prototype, "trailerField", void 0); +export const RSASSA_PSS = new AlgorithmIdentifier({ + algorithm: id_RSASSA_PSS, + parameters: AsnConvert.serialize(new RsaSaPssParams()), +}); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/rsa_private_key.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/rsa_private_key.js new file mode 100644 index 0000000..b4fce1a --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/rsa_private_key.js @@ -0,0 +1,47 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnIntegerArrayBufferConverter } from "@peculiar/asn1-schema"; +import { OtherPrimeInfos } from "./other_prime_info"; +export class RSAPrivateKey { + constructor(params = {}) { + this.version = 0; + this.modulus = new ArrayBuffer(0); + this.publicExponent = new ArrayBuffer(0); + this.privateExponent = new ArrayBuffer(0); + this.prime1 = new ArrayBuffer(0); + this.prime2 = new ArrayBuffer(0); + this.exponent1 = new ArrayBuffer(0); + this.exponent2 = new ArrayBuffer(0); + this.coefficient = new ArrayBuffer(0); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.Integer }) +], RSAPrivateKey.prototype, "version", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "modulus", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "publicExponent", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "privateExponent", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "prime1", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "prime2", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "exponent1", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "exponent2", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], RSAPrivateKey.prototype, "coefficient", void 0); +__decorate([ + AsnProp({ type: OtherPrimeInfos, optional: true }) +], RSAPrivateKey.prototype, "otherPrimeInfos", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/rsa_public_key.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/rsa_public_key.js new file mode 100644 index 0000000..9054c00 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/es2015/rsa_public_key.js @@ -0,0 +1,15 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnIntegerArrayBufferConverter } from "@peculiar/asn1-schema"; +export class RSAPublicKey { + constructor(params = {}) { + this.modulus = new ArrayBuffer(0); + this.publicExponent = new ArrayBuffer(0); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], RSAPublicKey.prototype, "modulus", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], RSAPublicKey.prototype, "publicExponent", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/algorithms.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/algorithms.d.ts new file mode 100644 index 0000000..cce8e93 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/algorithms.d.ts @@ -0,0 +1,22 @@ +import { AlgorithmIdentifier } from "@peculiar/asn1-x509"; +export declare const md2: AlgorithmIdentifier; +export declare const md4: AlgorithmIdentifier; +export declare const sha1: AlgorithmIdentifier; +export declare const sha224: AlgorithmIdentifier; +export declare const sha256: AlgorithmIdentifier; +export declare const sha384: AlgorithmIdentifier; +export declare const sha512: AlgorithmIdentifier; +export declare const sha512_224: AlgorithmIdentifier; +export declare const sha512_256: AlgorithmIdentifier; +export declare const mgf1SHA1: AlgorithmIdentifier; +export declare const pSpecifiedEmpty: AlgorithmIdentifier; +export declare const rsaEncryption: AlgorithmIdentifier; +export declare const md2WithRSAEncryption: AlgorithmIdentifier; +export declare const md5WithRSAEncryption: AlgorithmIdentifier; +export declare const sha1WithRSAEncryption: AlgorithmIdentifier; +export declare const sha224WithRSAEncryption: AlgorithmIdentifier; +export declare const sha256WithRSAEncryption: AlgorithmIdentifier; +export declare const sha384WithRSAEncryption: AlgorithmIdentifier; +export declare const sha512WithRSAEncryption: AlgorithmIdentifier; +export declare const sha512_224WithRSAEncryption: AlgorithmIdentifier; +export declare const sha512_256WithRSAEncryption: AlgorithmIdentifier; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/index.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/index.d.ts new file mode 100644 index 0000000..77e3add --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/index.d.ts @@ -0,0 +1,6 @@ +export * from "./parameters"; +export * from "./algorithms"; +export * from "./object_identifiers"; +export * from "./other_prime_info"; +export * from "./rsa_private_key"; +export * from "./rsa_public_key"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/object_identifiers.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/object_identifiers.d.ts new file mode 100644 index 0000000..d5f0c2b --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/object_identifiers.d.ts @@ -0,0 +1,176 @@ +/** + * ```asn1 + * pkcs-1 OBJECT IDENTIFIER ::= { + iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) 1 + * ``` + */ +export declare const id_pkcs_1 = "1.2.840.113549.1.1"; +/** + * ```asn1 + * rsaEncryption OBJECT IDENTIFIER ::= { pkcs-1 1 } + * ``` + */ +export declare const id_rsaEncryption = "1.2.840.113549.1.1.1"; +/** + * ```asn1 + * id-RSAES-OAEP OBJECT IDENTIFIER ::= { pkcs-1 7 } + * ``` + */ +export declare const id_RSAES_OAEP = "1.2.840.113549.1.1.7"; +/** + * ```asn1 + * id-pSpecified OBJECT IDENTIFIER ::= { pkcs-1 9 } + * ``` + */ +export declare const id_pSpecified = "1.2.840.113549.1.1.9"; +/** + * ```asn1 + * id-RSASSA-PSS OBJECT IDENTIFIER ::= { pkcs-1 10 } + * ``` + */ +export declare const id_RSASSA_PSS = "1.2.840.113549.1.1.10"; +/** + * ```asn1 + * md2WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 2 } + * ``` + */ +export declare const id_md2WithRSAEncryption = "1.2.840.113549.1.1.2"; +/** + * ```asn1 + * md5WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 4 } + * ``` + */ +export declare const id_md5WithRSAEncryption = "1.2.840.113549.1.1.4"; +/** + * ```asn1 + * sha1WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 5 } + * ``` + */ +export declare const id_sha1WithRSAEncryption = "1.2.840.113549.1.1.5"; +/** + * ```asn1 + * sha224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 14 } + * ``` + */ +export declare const id_sha224WithRSAEncryption = "1.2.840.113549.1.1.14"; +/** + * ```asn1 + * sha224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 14 } + * ``` + * @deprecated Should be removed later + */ +export declare const id_ssha224WithRSAEncryption = "1.2.840.113549.1.1.14"; +/** + * ```asn1 + * sha256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 11 } + * ``` + */ +export declare const id_sha256WithRSAEncryption = "1.2.840.113549.1.1.11"; +/** + * ```asn1 + * sha384WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 12 } + * ``` + */ +export declare const id_sha384WithRSAEncryption = "1.2.840.113549.1.1.12"; +/** + * ```asn1 + * sha512WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 13 } + * ``` + */ +export declare const id_sha512WithRSAEncryption = "1.2.840.113549.1.1.13"; +/** + * ```asn1 + * sha512-224WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 15 } + * ``` + */ +export declare const id_sha512_224WithRSAEncryption = "1.2.840.113549.1.1.15"; +/** + * ```asn1 + * sha512-256WithRSAEncryption OBJECT IDENTIFIER ::= { pkcs-1 16 } + * ``` + */ +export declare const id_sha512_256WithRSAEncryption = "1.2.840.113549.1.1.16"; +/** + * ```asn1 + * id-sha1 OBJECT IDENTIFIER ::= { + * iso(1) identified-organization(3) oiw(14) secsig(3) algorithms(2) + * 26 + * ``` + */ +export declare const id_sha1 = "1.3.14.3.2.26"; +/** + * ```asn1 + * id-sha224 OBJECT IDENTIFIER ::= { + * joint-iso-itu-t (2) country (16) us (840) organization (1) + * gov (101) csor (3) nistalgorithm (4) hashalgs (2) 4 + * } + * ``` + */ +export declare const id_sha224 = "2.16.840.1.101.3.4.2.4"; +/** + * ```asn1 + * id-sha256 OBJECT IDENTIFIER ::= { + * joint-iso-itu-t (2) country (16) us (840) organization (1) + * gov (101) csor (3) nistalgorithm (4) hashalgs (2) 1 + * } + * ``` + */ +export declare const id_sha256 = "2.16.840.1.101.3.4.2.1"; +/** + * ```asn1 + * id-sha384 OBJECT IDENTIFIER ::= { + * joint-iso-itu-t (2) country (16) us (840) organization (1) + * gov (101) csor (3) nistalgorithm (4) hashalgs (2) 2 + * } + * ``` + */ +export declare const id_sha384 = "2.16.840.1.101.3.4.2.2"; +/** + * ```asn1 + * id-sha512 OBJECT IDENTIFIER ::= { + * joint-iso-itu-t (2) country (16) us (840) organization (1) + * gov (101) csor (3) nistalgorithm (4) hashalgs (2) 3 + * } + * ``` + */ +export declare const id_sha512 = "2.16.840.1.101.3.4.2.3"; +/** + * ```asn1 + * id-sha512-224 OBJECT IDENTIFIER ::= { + * joint-iso-itu-t (2) country (16) us (840) organization (1) + * gov (101) csor (3) nistalgorithm (4) hashalgs (2) 5 + * } + * ``` + */ +export declare const id_sha512_224 = "2.16.840.1.101.3.4.2.5"; +/** + * ```asn1 + * id-sha512-256 OBJECT IDENTIFIER ::= { + * joint-iso-itu-t (2) country (16) us (840) organization (1) + * gov (101) csor (3) nistalgorithm (4) hashalgs (2) 6 + * } + * ``` + */ +export declare const id_sha512_256 = "2.16.840.1.101.3.4.2.6"; +/** + * ```asn1 + * id-md2 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 2 + * } + * ``` + */ +export declare const id_md2 = "1.2.840.113549.2.2"; +/** + * ```asn1 + * id-md5 OBJECT IDENTIFIER ::= { + * iso(1) member-body(2) us(840) rsadsi(113549) digestAlgorithm(2) 5 + * } + * ``` + */ +export declare const id_md5 = "1.2.840.113549.2.5"; +/** + * ```asn1 + * id-mgf1 OBJECT IDENTIFIER ::= { pkcs-1 8 } + * ``` + */ +export declare const id_mgf1 = "1.2.840.113549.1.1.8"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/other_prime_info.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/other_prime_info.d.ts new file mode 100644 index 0000000..abd3c3c --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/other_prime_info.d.ts @@ -0,0 +1,24 @@ +import { AsnArray } from "@peculiar/asn1-schema"; +/** + * ```asn1 + * OtherPrimeInfo ::= SEQUENCE { + * prime INTEGER, -- ri + * exponent INTEGER, -- di + * coefficient INTEGER -- ti + * } + * ``` + */ +export declare class OtherPrimeInfo { + prime: ArrayBuffer; + exponent: ArrayBuffer; + coefficient: ArrayBuffer; + constructor(params?: Partial); +} +/** + * ```asn1 + * OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo + * ``` + */ +export declare class OtherPrimeInfos extends AsnArray { + constructor(items?: OtherPrimeInfo[]); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/parameters/index.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/parameters/index.d.ts new file mode 100644 index 0000000..3d8e90e --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/parameters/index.d.ts @@ -0,0 +1,3 @@ +export * from "./rsaes_oaep"; +export * from "./rsassa_pss"; +export * from "./rsassa_pkcs1_v1_5"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/parameters/rsaes_oaep.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/parameters/rsaes_oaep.d.ts new file mode 100644 index 0000000..7a8e99d --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/parameters/rsaes_oaep.d.ts @@ -0,0 +1,22 @@ +import { AlgorithmIdentifier } from "@peculiar/asn1-x509"; +/** + * ```asn1 + * RSAES-OAEP-params ::= SEQUENCE { + * hashAlgorithm [0] HashAlgorithm DEFAULT sha1, + * maskGenAlgorithm [1] MaskGenAlgorithm DEFAULT mgf1SHA1, + * pSourceAlgorithm [2] PSourceAlgorithm DEFAULT pSpecifiedEmpty + * } + * ``` + */ +export declare class RsaEsOaepParams { + hashAlgorithm: AlgorithmIdentifier; + maskGenAlgorithm: AlgorithmIdentifier; + pSourceAlgorithm: AlgorithmIdentifier; + constructor(params?: Partial); +} +/** + * ```asn1 + * { OID id-RSAES-OAEP PARAMETERS RSAES-OAEP-params } | + * ``` + */ +export declare const RSAES_OAEP: AlgorithmIdentifier; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/parameters/rsassa_pkcs1_v1_5.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/parameters/rsassa_pkcs1_v1_5.d.ts new file mode 100644 index 0000000..be5d632 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/parameters/rsassa_pkcs1_v1_5.d.ts @@ -0,0 +1,15 @@ +import { AlgorithmIdentifier } from "@peculiar/asn1-x509"; +import { OctetString } from "@peculiar/asn1-schema"; +/** + * ```asn1 + * DigestInfo ::= SEQUENCE { + * digestAlgorithm DigestAlgorithm, + * digest OCTET STRING + * } + * ``` + */ +export declare class DigestInfo { + digestAlgorithm: AlgorithmIdentifier; + digest: OctetString; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/parameters/rsassa_pss.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/parameters/rsassa_pss.d.ts new file mode 100644 index 0000000..3ab66d1 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/parameters/rsassa_pss.d.ts @@ -0,0 +1,30 @@ +import { AlgorithmIdentifier } from "@peculiar/asn1-x509"; +/** + * ```asn1 + * TrailerField ::= INTEGER { trailerFieldBC(1) } + * ``` + */ +export type TrailerField = number; +/** + * ```asn1 + * RSASSA-PSS-params ::= SEQUENCE { + * hashAlgorithm [0] HashAlgorithm DEFAULT sha1, + * maskGenAlgorithm [1] MaskGenAlgorithm DEFAULT mgf1SHA1, + * saltLength [2] INTEGER DEFAULT 20, + * trailerField [3] TrailerField DEFAULT trailerFieldBC + * } + * ``` + */ +export declare class RsaSaPssParams { + hashAlgorithm: AlgorithmIdentifier; + maskGenAlgorithm: AlgorithmIdentifier; + saltLength: number; + trailerField: TrailerField; + constructor(params?: Partial); +} +/** + * ```asn1 + * { OID id-RSASSA-PSS PARAMETERS RSASSA-PSS-params } + * ``` + */ +export declare const RSASSA_PSS: AlgorithmIdentifier; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/rsa_private_key.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/rsa_private_key.d.ts new file mode 100644 index 0000000..26844c6 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/rsa_private_key.d.ts @@ -0,0 +1,39 @@ +import { OtherPrimeInfos } from "./other_prime_info"; +/** + * ```asn1 + * Version ::= INTEGER { two-prime(0), multi(1) } + * (CONSTRAINED BY + * {-- version MUST + * be multi if otherPrimeInfos present --}) + * ``` + */ +export type Version = number; +/** + * ```asn1 + * RSAPrivateKey ::= SEQUENCE { + * version Version, + * modulus INTEGER, -- n + * publicExponent INTEGER, -- e + * privateExponent INTEGER, -- d + * prime1 INTEGER, -- p + * prime2 INTEGER, -- q + * exponent1 INTEGER, -- d mod (p-1) + * exponent2 INTEGER, -- d mod (q-1) + * coefficient INTEGER, -- (inverse of q) mod p + * otherPrimeInfos OtherPrimeInfos OPTIONAL + * } + * ``` + */ +export declare class RSAPrivateKey { + version: Version; + modulus: ArrayBuffer; + publicExponent: ArrayBuffer; + privateExponent: ArrayBuffer; + prime1: ArrayBuffer; + prime2: ArrayBuffer; + exponent1: ArrayBuffer; + exponent2: ArrayBuffer; + coefficient: ArrayBuffer; + otherPrimeInfos?: OtherPrimeInfos; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/rsa_public_key.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/rsa_public_key.d.ts new file mode 100644 index 0000000..3a6ea99 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/build/types/rsa_public_key.d.ts @@ -0,0 +1,13 @@ +/** + * ```asn1 + * RSAPublicKey ::= SEQUENCE { + * modulus INTEGER, -- n + * publicExponent INTEGER -- e + * } + * ``` + */ +export declare class RSAPublicKey { + modulus: ArrayBuffer; + publicExponent: ArrayBuffer; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/CopyrightNotice.txt b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/CopyrightNotice.txt new file mode 100644 index 0000000..5d7d2d9 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/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/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/LICENSE.txt b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/LICENSE.txt new file mode 100644 index 0000000..fa7d1bd --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/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/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/README.md b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/README.md new file mode 100644 index 0000000..14b9a83 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/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/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/SECURITY.md b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/SECURITY.md new file mode 100644 index 0000000..869fdfe --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/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/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/modules/index.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/modules/index.d.ts new file mode 100644 index 0000000..3244fab --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/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/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/modules/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/modules/index.js new file mode 100644 index 0000000..f4f9a06 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/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/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/modules/package.json b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/modules/package.json new file mode 100644 index 0000000..96ae6e5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/modules/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/package.json b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/package.json new file mode 100644 index 0000000..57d0578 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/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/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/tslib.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/tslib.d.ts new file mode 100644 index 0000000..9c27e05 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/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/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/tslib.es6.html b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/tslib.es6.html new file mode 100644 index 0000000..b122e41 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/tslib.es6.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/tslib.es6.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/tslib.es6.js new file mode 100644 index 0000000..67ba5c5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/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/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/tslib.es6.mjs b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/tslib.es6.mjs new file mode 100644 index 0000000..c17990a --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/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/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/tslib.html b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/tslib.html new file mode 100644 index 0000000..44c9ba5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/tslib.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/tslib.js b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/node_modules/tslib/tslib.js new file mode 100644 index 0000000..b6509f7 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/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/api.hyungi.net/node_modules/@peculiar/asn1-rsa/package.json b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/package.json new file mode 100644 index 0000000..c4175cf --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-rsa/package.json @@ -0,0 +1,43 @@ +{ + "name": "@peculiar/asn1-rsa", + "version": "2.3.15", + "description": "ASN.1 schema of `RSA Cryptography Specifications Version 2.2` (RFC8017)", + "files": [ + "build/**/*.{js,d.ts}", + "LICENSE", + "README.md" + ], + "bugs": { + "url": "https://github.com/PeculiarVentures/asn1-schema/issues" + }, + "homepage": "https://github.com/PeculiarVentures/asn1-schema/tree/master/packages/rsa#readme", + "keywords": [ + "asn" + ], + "author": "PeculiarVentures, LLC", + "license": "MIT", + "main": "build/cjs/index.js", + "module": "build/es2015/index.js", + "types": "build/types/index.d.ts", + "publishConfig": { + "access": "public" + }, + "scripts": { + "test": "mocha", + "clear": "rimraf build", + "build": "npm run build:module && npm run build:types", + "build:module": "npm run build:cjs && npm run build:es2015", + "build:cjs": "tsc -p tsconfig.compile.json --removeComments --module commonjs --outDir build/cjs", + "build:es2015": "tsc -p tsconfig.compile.json --removeComments --module ES2015 --outDir build/es2015", + "prebuild:types": "rimraf build/types", + "build:types": "tsc -p tsconfig.compile.json --outDir build/types --declaration --emitDeclarationOnly", + "rebuild": "npm run clear && npm run build" + }, + "dependencies": { + "@peculiar/asn1-schema": "^2.3.15", + "@peculiar/asn1-x509": "^2.3.15", + "asn1js": "^3.0.5", + "tslib": "^2.8.1" + }, + "gitHead": "b6c7130efa9bc3ee5e2ea1da5d01aede5182921f" +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/LICENSE b/api.hyungi.net/node_modules/@peculiar/asn1-schema/LICENSE new file mode 100644 index 0000000..6f9ec13 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/README.md b/api.hyungi.net/node_modules/@peculiar/asn1-schema/README.md new file mode 100644 index 0000000..e056dc2 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/README.md @@ -0,0 +1,106 @@ +# `@peculiar/asn1-schema` + +[![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://raw.githubusercontent.com/PeculiarVentures/asn1-schema/master/packages/schema/LICENSE.md) +[![npm version](https://badge.fury.io/js/%40peculiar%2Fasn1-schema.svg)](https://badge.fury.io/js/%40peculiar%2Fasn1-schema) + +[![NPM](https://nodei.co/npm/@peculiar/asn1-schema.png)](https://nodei.co/npm/@peculiar/asn1-schema/) + +This package uses ES2015 [decorators](https://medium.com/google-developers/exploring-es7-decorators-76ecb65fb841) to simplify working with ASN.1 creation and parsing. + + +## Introduction + +Abstract Syntax Notation One (ASN.1) is a standard interface description language for defining data structures that can be serialized and deserialized in a cross-platform way. Working with ASN.1 can be complicated as there are many ways to represent the same data and many solutions handcraft, incorrectly, the ASN.1 representation of the data. + +`asn1-schema` addresses this by using decorators to make both serialization and parsing of ASN.1 possible via a simple class that handles these problems for you. + +This is important because validating input data before its use is important to do because all input data is evil. + + +## Installation + +Installation is handled via `npm`: + +``` +$ npm install @peculiar/asn1-schema +``` + +## TypeScript examples +Node.js: + +ASN.1 schema +``` +Extension ::= SEQUENCE { + extnID OBJECT IDENTIFIER, + critical BOOLEAN DEFAULT FALSE, + extnValue OCTET STRING + -- contains the DER encoding of an ASN.1 value + -- corresponding to the extension type identified + -- by extnID +} + +id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 } + +BasicConstraints ::= SEQUENCE { + cA BOOLEAN DEFAULT FALSE, + pathLenConstraint INTEGER (0..MAX) OPTIONAL +} +``` + +ASN.1 schema declaration in TypeScript project +```ts +import { Asn1Prop, Asn1PropTypes, Asn1Serializer } from "@peculiar/asn1-schema"; + +class Extension { + + public static CRITICAL = false; + + @AsnProp({ type: Asn1PropTypes.ObjectIdentifier }) + public extnID: string = ""; + + @AsnProp({ + type: Asn1PropTypes.Boolean, + defaultValue: Extension.CRITICAL, + }) + public critical = Extension.CRITICAL; + + @AsnProp({ type: Asn1PropTypes.OctetString }) + public extnValue: ArrayBuffer = new ArrayBuffer(0); + +} + +class BasicConstraints { + @AsnProp({ type: Asn1PropTypes.Boolean, defaultValue: false }) + public ca = false; + + @AsnProp({ type: Asn1PropTypes.Integer, optional: true }) + public pathLenConstraint?: number; +} +``` + +Encoding ASN.1 data +```ts +const basicConstraints = new BasicConstraints(); +basicConstraints.ca = true; +basicConstraints.pathLenConstraint = 1; + +const extension = new Extension(); +extension.critical = true; +extension.extnID = "2.5.29.19"; +extension.extnValue = AsnSerializer.serialize(basicConstraints); + +console.log(Buffer.from(AsnSerializer.serialize(extension)).toString("hex")); // 30120603551d130101ff040830060101ff020101 +``` + +[ASN.1 encoded data](http://lapo.it/asn1js/#MBIGA1UdEwEB_wQIMAYBAf8CAQE) + +Decoding ASN.1 data +```ts +const extension = AsnParser.parse(Buffer.from("30120603551d130101ff040830060101ff020101", "hex"), Extension); +console.log("Extension ID:", extension.extnID); // Extension ID: 2.5.29.19 +console.log("Critical:", extension.critical); // Critical: true + +const basicConstraints = AsnParser.parse(extension.extnValue, BasicConstraints); +console.log("CA:", basicConstraints.ca); // CA: true +console.log("Path length:", basicConstraints.pathLenConstraint); // Path length: 1 +``` diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/convert.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/convert.js new file mode 100644 index 0000000..985a01d --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/convert.js @@ -0,0 +1,26 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AsnConvert = void 0; +const asn1js = require("asn1js"); +const pvtsutils_1 = require("pvtsutils"); +const parser_1 = require("./parser"); +const serializer_1 = require("./serializer"); +class AsnConvert { + static serialize(obj) { + return serializer_1.AsnSerializer.serialize(obj); + } + static parse(data, target) { + return parser_1.AsnParser.parse(data, target); + } + static toString(data) { + const buf = pvtsutils_1.BufferSourceConverter.isBufferSource(data) + ? pvtsutils_1.BufferSourceConverter.toArrayBuffer(data) + : AsnConvert.serialize(data); + const asn = asn1js.fromBER(buf); + if (asn.offset === -1) { + throw new Error(`Cannot decode ASN.1 data. ${asn.result.error}`); + } + return asn.result.toString(); + } +} +exports.AsnConvert = AsnConvert; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/converters.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/converters.js new file mode 100644 index 0000000..00ae33f --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/converters.js @@ -0,0 +1,140 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AsnNullConverter = exports.AsnGeneralizedTimeConverter = exports.AsnUTCTimeConverter = exports.AsnCharacterStringConverter = exports.AsnGeneralStringConverter = exports.AsnVisibleStringConverter = exports.AsnGraphicStringConverter = exports.AsnIA5StringConverter = exports.AsnVideotexStringConverter = exports.AsnTeletexStringConverter = exports.AsnPrintableStringConverter = exports.AsnNumericStringConverter = exports.AsnUniversalStringConverter = exports.AsnBmpStringConverter = exports.AsnUtf8StringConverter = exports.AsnConstructedOctetStringConverter = exports.AsnOctetStringConverter = exports.AsnBooleanConverter = exports.AsnObjectIdentifierConverter = exports.AsnBitStringConverter = exports.AsnIntegerBigIntConverter = exports.AsnIntegerArrayBufferConverter = exports.AsnEnumeratedConverter = exports.AsnIntegerConverter = exports.AsnAnyConverter = void 0; +exports.defaultConverter = defaultConverter; +const asn1js = require("asn1js"); +const enums_1 = require("./enums"); +const index_1 = require("./types/index"); +exports.AsnAnyConverter = { + fromASN: (value) => value instanceof asn1js.Null ? null : value.valueBeforeDecodeView, + toASN: (value) => { + if (value === null) { + return new asn1js.Null(); + } + const schema = asn1js.fromBER(value); + if (schema.result.error) { + throw new Error(schema.result.error); + } + return schema.result; + }, +}; +exports.AsnIntegerConverter = { + fromASN: (value) => value.valueBlock.valueHexView.byteLength >= 4 + ? value.valueBlock.toString() + : value.valueBlock.valueDec, + toASN: (value) => new asn1js.Integer({ value: +value }), +}; +exports.AsnEnumeratedConverter = { + fromASN: (value) => value.valueBlock.valueDec, + toASN: (value) => new asn1js.Enumerated({ value }), +}; +exports.AsnIntegerArrayBufferConverter = { + fromASN: (value) => value.valueBlock.valueHexView, + toASN: (value) => new asn1js.Integer({ valueHex: value }), +}; +exports.AsnIntegerBigIntConverter = { + fromASN: (value) => value.toBigInt(), + toASN: (value) => asn1js.Integer.fromBigInt(value), +}; +exports.AsnBitStringConverter = { + fromASN: (value) => value.valueBlock.valueHexView, + toASN: (value) => new asn1js.BitString({ valueHex: value }), +}; +exports.AsnObjectIdentifierConverter = { + fromASN: (value) => value.valueBlock.toString(), + toASN: (value) => new asn1js.ObjectIdentifier({ value }), +}; +exports.AsnBooleanConverter = { + fromASN: (value) => value.valueBlock.value, + toASN: (value) => new asn1js.Boolean({ value }), +}; +exports.AsnOctetStringConverter = { + fromASN: (value) => value.valueBlock.valueHexView, + toASN: (value) => new asn1js.OctetString({ valueHex: value }), +}; +exports.AsnConstructedOctetStringConverter = { + fromASN: (value) => new index_1.OctetString(value.getValue()), + toASN: (value) => value.toASN(), +}; +function createStringConverter(Asn1Type) { + return { + fromASN: (value) => value.valueBlock.value, + toASN: (value) => new Asn1Type({ value }), + }; +} +exports.AsnUtf8StringConverter = createStringConverter(asn1js.Utf8String); +exports.AsnBmpStringConverter = createStringConverter(asn1js.BmpString); +exports.AsnUniversalStringConverter = createStringConverter(asn1js.UniversalString); +exports.AsnNumericStringConverter = createStringConverter(asn1js.NumericString); +exports.AsnPrintableStringConverter = createStringConverter(asn1js.PrintableString); +exports.AsnTeletexStringConverter = createStringConverter(asn1js.TeletexString); +exports.AsnVideotexStringConverter = createStringConverter(asn1js.VideotexString); +exports.AsnIA5StringConverter = createStringConverter(asn1js.IA5String); +exports.AsnGraphicStringConverter = createStringConverter(asn1js.GraphicString); +exports.AsnVisibleStringConverter = createStringConverter(asn1js.VisibleString); +exports.AsnGeneralStringConverter = createStringConverter(asn1js.GeneralString); +exports.AsnCharacterStringConverter = createStringConverter(asn1js.CharacterString); +exports.AsnUTCTimeConverter = { + fromASN: (value) => value.toDate(), + toASN: (value) => new asn1js.UTCTime({ valueDate: value }), +}; +exports.AsnGeneralizedTimeConverter = { + fromASN: (value) => value.toDate(), + toASN: (value) => new asn1js.GeneralizedTime({ valueDate: value }), +}; +exports.AsnNullConverter = { + fromASN: () => null, + toASN: () => { + return new asn1js.Null(); + }, +}; +function defaultConverter(type) { + switch (type) { + case enums_1.AsnPropTypes.Any: + return exports.AsnAnyConverter; + case enums_1.AsnPropTypes.BitString: + return exports.AsnBitStringConverter; + case enums_1.AsnPropTypes.BmpString: + return exports.AsnBmpStringConverter; + case enums_1.AsnPropTypes.Boolean: + return exports.AsnBooleanConverter; + case enums_1.AsnPropTypes.CharacterString: + return exports.AsnCharacterStringConverter; + case enums_1.AsnPropTypes.Enumerated: + return exports.AsnEnumeratedConverter; + case enums_1.AsnPropTypes.GeneralString: + return exports.AsnGeneralStringConverter; + case enums_1.AsnPropTypes.GeneralizedTime: + return exports.AsnGeneralizedTimeConverter; + case enums_1.AsnPropTypes.GraphicString: + return exports.AsnGraphicStringConverter; + case enums_1.AsnPropTypes.IA5String: + return exports.AsnIA5StringConverter; + case enums_1.AsnPropTypes.Integer: + return exports.AsnIntegerConverter; + case enums_1.AsnPropTypes.Null: + return exports.AsnNullConverter; + case enums_1.AsnPropTypes.NumericString: + return exports.AsnNumericStringConverter; + case enums_1.AsnPropTypes.ObjectIdentifier: + return exports.AsnObjectIdentifierConverter; + case enums_1.AsnPropTypes.OctetString: + return exports.AsnOctetStringConverter; + case enums_1.AsnPropTypes.PrintableString: + return exports.AsnPrintableStringConverter; + case enums_1.AsnPropTypes.TeletexString: + return exports.AsnTeletexStringConverter; + case enums_1.AsnPropTypes.UTCTime: + return exports.AsnUTCTimeConverter; + case enums_1.AsnPropTypes.UniversalString: + return exports.AsnUniversalStringConverter; + case enums_1.AsnPropTypes.Utf8String: + return exports.AsnUtf8StringConverter; + case enums_1.AsnPropTypes.VideotexString: + return exports.AsnVideotexStringConverter; + case enums_1.AsnPropTypes.VisibleString: + return exports.AsnVisibleStringConverter; + default: + return null; + } +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/decorators.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/decorators.js new file mode 100644 index 0000000..0655e73 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/decorators.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AsnProp = exports.AsnSequenceType = exports.AsnSetType = exports.AsnChoiceType = exports.AsnType = void 0; +const converters = require("./converters"); +const enums_1 = require("./enums"); +const storage_1 = require("./storage"); +const AsnType = (options) => (target) => { + let schema; + if (!storage_1.schemaStorage.has(target)) { + schema = storage_1.schemaStorage.createDefault(target); + storage_1.schemaStorage.set(target, schema); + } + else { + schema = storage_1.schemaStorage.get(target); + } + Object.assign(schema, options); +}; +exports.AsnType = AsnType; +const AsnChoiceType = () => (0, exports.AsnType)({ type: enums_1.AsnTypeTypes.Choice }); +exports.AsnChoiceType = AsnChoiceType; +const AsnSetType = (options) => (0, exports.AsnType)({ type: enums_1.AsnTypeTypes.Set, ...options }); +exports.AsnSetType = AsnSetType; +const AsnSequenceType = (options) => (0, exports.AsnType)({ type: enums_1.AsnTypeTypes.Sequence, ...options }); +exports.AsnSequenceType = AsnSequenceType; +const AsnProp = (options) => (target, propertyKey) => { + let schema; + if (!storage_1.schemaStorage.has(target.constructor)) { + schema = storage_1.schemaStorage.createDefault(target.constructor); + storage_1.schemaStorage.set(target.constructor, schema); + } + else { + schema = storage_1.schemaStorage.get(target.constructor); + } + const copyOptions = Object.assign({}, options); + if (typeof copyOptions.type === "number" && !copyOptions.converter) { + const defaultConverter = converters.defaultConverter(options.type); + if (!defaultConverter) { + throw new Error(`Cannot get default converter for property '${propertyKey}' of ${target.constructor.name}`); + } + copyOptions.converter = defaultConverter; + } + schema.items[propertyKey] = copyOptions; +}; +exports.AsnProp = AsnProp; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/enums.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/enums.js new file mode 100644 index 0000000..f9ba8eb --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/enums.js @@ -0,0 +1,39 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AsnPropTypes = exports.AsnTypeTypes = void 0; +var AsnTypeTypes; +(function (AsnTypeTypes) { + AsnTypeTypes[AsnTypeTypes["Sequence"] = 0] = "Sequence"; + AsnTypeTypes[AsnTypeTypes["Set"] = 1] = "Set"; + AsnTypeTypes[AsnTypeTypes["Choice"] = 2] = "Choice"; +})(AsnTypeTypes || (exports.AsnTypeTypes = AsnTypeTypes = {})); +var AsnPropTypes; +(function (AsnPropTypes) { + AsnPropTypes[AsnPropTypes["Any"] = 1] = "Any"; + AsnPropTypes[AsnPropTypes["Boolean"] = 2] = "Boolean"; + AsnPropTypes[AsnPropTypes["OctetString"] = 3] = "OctetString"; + AsnPropTypes[AsnPropTypes["BitString"] = 4] = "BitString"; + AsnPropTypes[AsnPropTypes["Integer"] = 5] = "Integer"; + AsnPropTypes[AsnPropTypes["Enumerated"] = 6] = "Enumerated"; + AsnPropTypes[AsnPropTypes["ObjectIdentifier"] = 7] = "ObjectIdentifier"; + AsnPropTypes[AsnPropTypes["Utf8String"] = 8] = "Utf8String"; + AsnPropTypes[AsnPropTypes["BmpString"] = 9] = "BmpString"; + AsnPropTypes[AsnPropTypes["UniversalString"] = 10] = "UniversalString"; + AsnPropTypes[AsnPropTypes["NumericString"] = 11] = "NumericString"; + AsnPropTypes[AsnPropTypes["PrintableString"] = 12] = "PrintableString"; + AsnPropTypes[AsnPropTypes["TeletexString"] = 13] = "TeletexString"; + AsnPropTypes[AsnPropTypes["VideotexString"] = 14] = "VideotexString"; + AsnPropTypes[AsnPropTypes["IA5String"] = 15] = "IA5String"; + AsnPropTypes[AsnPropTypes["GraphicString"] = 16] = "GraphicString"; + AsnPropTypes[AsnPropTypes["VisibleString"] = 17] = "VisibleString"; + AsnPropTypes[AsnPropTypes["GeneralString"] = 18] = "GeneralString"; + AsnPropTypes[AsnPropTypes["CharacterString"] = 19] = "CharacterString"; + AsnPropTypes[AsnPropTypes["UTCTime"] = 20] = "UTCTime"; + AsnPropTypes[AsnPropTypes["GeneralizedTime"] = 21] = "GeneralizedTime"; + AsnPropTypes[AsnPropTypes["DATE"] = 22] = "DATE"; + AsnPropTypes[AsnPropTypes["TimeOfDay"] = 23] = "TimeOfDay"; + AsnPropTypes[AsnPropTypes["DateTime"] = 24] = "DateTime"; + AsnPropTypes[AsnPropTypes["Duration"] = 25] = "Duration"; + AsnPropTypes[AsnPropTypes["TIME"] = 26] = "TIME"; + AsnPropTypes[AsnPropTypes["Null"] = 27] = "Null"; +})(AsnPropTypes || (exports.AsnPropTypes = AsnPropTypes = {})); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/errors/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/errors/index.js new file mode 100644 index 0000000..63a58bb --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/errors/index.js @@ -0,0 +1,4 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./schema_validation"), exports); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/errors/schema_validation.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/errors/schema_validation.js new file mode 100644 index 0000000..9c97cf1 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/errors/schema_validation.js @@ -0,0 +1,10 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AsnSchemaValidationError = void 0; +class AsnSchemaValidationError extends Error { + constructor() { + super(...arguments); + this.schemas = []; + } +} +exports.AsnSchemaValidationError = AsnSchemaValidationError; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/helper.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/helper.js new file mode 100644 index 0000000..371b684 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/helper.js @@ -0,0 +1,45 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isConvertible = isConvertible; +exports.isTypeOfArray = isTypeOfArray; +exports.isArrayEqual = isArrayEqual; +function isConvertible(target) { + if (typeof target === "function" && target.prototype) { + if (target.prototype.toASN && target.prototype.fromASN) { + return true; + } + else { + return isConvertible(target.prototype); + } + } + else { + return !!(target && typeof target === "object" && "toASN" in target && "fromASN" in target); + } +} +function isTypeOfArray(target) { + var _a; + if (target) { + const proto = Object.getPrototypeOf(target); + if (((_a = proto === null || proto === void 0 ? void 0 : proto.prototype) === null || _a === void 0 ? void 0 : _a.constructor) === Array) { + return true; + } + return isTypeOfArray(proto); + } + return false; +} +function isArrayEqual(bytes1, bytes2) { + if (!(bytes1 && bytes2)) { + return false; + } + if (bytes1.byteLength !== bytes2.byteLength) { + return false; + } + const b1 = new Uint8Array(bytes1); + const b2 = new Uint8Array(bytes2); + for (let i = 0; i < bytes1.byteLength; i++) { + if (b1[i] !== b2[i]) { + return false; + } + } + return true; +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/index.js new file mode 100644 index 0000000..9a04496 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/index.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AsnSerializer = exports.AsnParser = exports.AsnPropTypes = exports.AsnTypeTypes = exports.AsnSetType = exports.AsnSequenceType = exports.AsnChoiceType = exports.AsnType = exports.AsnProp = void 0; +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./converters"), exports); +tslib_1.__exportStar(require("./types/index"), exports); +var decorators_1 = require("./decorators"); +Object.defineProperty(exports, "AsnProp", { enumerable: true, get: function () { return decorators_1.AsnProp; } }); +Object.defineProperty(exports, "AsnType", { enumerable: true, get: function () { return decorators_1.AsnType; } }); +Object.defineProperty(exports, "AsnChoiceType", { enumerable: true, get: function () { return decorators_1.AsnChoiceType; } }); +Object.defineProperty(exports, "AsnSequenceType", { enumerable: true, get: function () { return decorators_1.AsnSequenceType; } }); +Object.defineProperty(exports, "AsnSetType", { enumerable: true, get: function () { return decorators_1.AsnSetType; } }); +var enums_1 = require("./enums"); +Object.defineProperty(exports, "AsnTypeTypes", { enumerable: true, get: function () { return enums_1.AsnTypeTypes; } }); +Object.defineProperty(exports, "AsnPropTypes", { enumerable: true, get: function () { return enums_1.AsnPropTypes; } }); +var parser_1 = require("./parser"); +Object.defineProperty(exports, "AsnParser", { enumerable: true, get: function () { return parser_1.AsnParser; } }); +var serializer_1 = require("./serializer"); +Object.defineProperty(exports, "AsnSerializer", { enumerable: true, get: function () { return serializer_1.AsnSerializer; } }); +tslib_1.__exportStar(require("./errors"), exports); +tslib_1.__exportStar(require("./objects"), exports); +tslib_1.__exportStar(require("./convert"), exports); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/objects.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/objects.js new file mode 100644 index 0000000..a787c28 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/objects.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AsnArray = void 0; +class AsnArray extends Array { + constructor(items = []) { + if (typeof items === "number") { + super(items); + } + else { + super(); + for (const item of items) { + this.push(item); + } + } + } +} +exports.AsnArray = AsnArray; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/parser.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/parser.js new file mode 100644 index 0000000..f12deed --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/parser.js @@ -0,0 +1,139 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AsnParser = void 0; +const asn1js = require("asn1js"); +const enums_1 = require("./enums"); +const converters = require("./converters"); +const errors_1 = require("./errors"); +const helper_1 = require("./helper"); +const storage_1 = require("./storage"); +class AsnParser { + static parse(data, target) { + const asn1Parsed = asn1js.fromBER(data); + if (asn1Parsed.result.error) { + throw new Error(asn1Parsed.result.error); + } + const res = this.fromASN(asn1Parsed.result, target); + return res; + } + static fromASN(asn1Schema, target) { + var _a; + try { + if ((0, helper_1.isConvertible)(target)) { + const value = new target(); + return value.fromASN(asn1Schema); + } + const schema = storage_1.schemaStorage.get(target); + storage_1.schemaStorage.cache(target); + let targetSchema = schema.schema; + if (asn1Schema.constructor === asn1js.Constructed && schema.type !== enums_1.AsnTypeTypes.Choice) { + targetSchema = new asn1js.Constructed({ + idBlock: { + tagClass: 3, + tagNumber: asn1Schema.idBlock.tagNumber, + }, + value: schema.schema.valueBlock.value, + }); + for (const key in schema.items) { + delete asn1Schema[key]; + } + } + const asn1ComparedSchema = asn1js.compareSchema({}, asn1Schema, targetSchema); + if (!asn1ComparedSchema.verified) { + throw new errors_1.AsnSchemaValidationError(`Data does not match to ${target.name} ASN1 schema. ${asn1ComparedSchema.result.error}`); + } + const res = new target(); + if ((0, helper_1.isTypeOfArray)(target)) { + if (!("value" in asn1Schema.valueBlock && Array.isArray(asn1Schema.valueBlock.value))) { + throw new Error(`Cannot get items from the ASN.1 parsed value. ASN.1 object is not constructed.`); + } + const itemType = schema.itemType; + if (typeof itemType === "number") { + const converter = converters.defaultConverter(itemType); + if (!converter) { + throw new Error(`Cannot get default converter for array item of ${target.name} ASN1 schema`); + } + return target.from(asn1Schema.valueBlock.value, (element) => converter.fromASN(element)); + } + else { + return target.from(asn1Schema.valueBlock.value, (element) => this.fromASN(element, itemType)); + } + } + for (const key in schema.items) { + const asn1SchemaValue = asn1ComparedSchema.result[key]; + if (!asn1SchemaValue) { + continue; + } + const schemaItem = schema.items[key]; + const schemaItemType = schemaItem.type; + if (typeof schemaItemType === "number" || (0, helper_1.isConvertible)(schemaItemType)) { + const converter = (_a = schemaItem.converter) !== null && _a !== void 0 ? _a : ((0, helper_1.isConvertible)(schemaItemType) + ? new schemaItemType() + : null); + if (!converter) { + throw new Error("Converter is empty"); + } + if (schemaItem.repeated) { + if (schemaItem.implicit) { + const Container = schemaItem.repeated === "sequence" ? asn1js.Sequence : asn1js.Set; + const newItem = new Container(); + newItem.valueBlock = asn1SchemaValue.valueBlock; + const newItemAsn = asn1js.fromBER(newItem.toBER(false)); + if (newItemAsn.offset === -1) { + throw new Error(`Cannot parse the child item. ${newItemAsn.result.error}`); + } + if (!("value" in newItemAsn.result.valueBlock && + Array.isArray(newItemAsn.result.valueBlock.value))) { + throw new Error("Cannot get items from the ASN.1 parsed value. ASN.1 object is not constructed."); + } + const value = newItemAsn.result.valueBlock.value; + res[key] = Array.from(value, (element) => converter.fromASN(element)); + } + else { + res[key] = Array.from(asn1SchemaValue, (element) => converter.fromASN(element)); + } + } + else { + let value = asn1SchemaValue; + if (schemaItem.implicit) { + let newItem; + if ((0, helper_1.isConvertible)(schemaItemType)) { + newItem = new schemaItemType().toSchema(""); + } + else { + const Asn1TypeName = enums_1.AsnPropTypes[schemaItemType]; + const Asn1Type = asn1js[Asn1TypeName]; + if (!Asn1Type) { + throw new Error(`Cannot get '${Asn1TypeName}' class from asn1js module`); + } + newItem = new Asn1Type(); + } + newItem.valueBlock = value.valueBlock; + value = asn1js.fromBER(newItem.toBER(false)).result; + } + res[key] = converter.fromASN(value); + } + } + else { + if (schemaItem.repeated) { + if (!Array.isArray(asn1SchemaValue)) { + throw new Error("Cannot get list of items from the ASN.1 parsed value. ASN.1 value should be iterable."); + } + res[key] = Array.from(asn1SchemaValue, (element) => this.fromASN(element, schemaItemType)); + } + else { + res[key] = this.fromASN(asn1SchemaValue, schemaItemType); + } + } + } + return res; + } + catch (error) { + if (error instanceof errors_1.AsnSchemaValidationError) { + error.schemas.push(target.name); + } + throw error; + } + } +} +exports.AsnParser = AsnParser; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/schema.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/schema.js new file mode 100644 index 0000000..4ceefca --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/schema.js @@ -0,0 +1,160 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AsnSchemaStorage = void 0; +const asn1js = require("asn1js"); +const enums_1 = require("./enums"); +const helper_1 = require("./helper"); +class AsnSchemaStorage { + constructor() { + this.items = new WeakMap(); + } + has(target) { + return this.items.has(target); + } + get(target, checkSchema = false) { + const schema = this.items.get(target); + if (!schema) { + throw new Error(`Cannot get schema for '${target.prototype.constructor.name}' target`); + } + if (checkSchema && !schema.schema) { + throw new Error(`Schema '${target.prototype.constructor.name}' doesn't contain ASN.1 schema. Call 'AsnSchemaStorage.cache'.`); + } + return schema; + } + cache(target) { + const schema = this.get(target); + if (!schema.schema) { + schema.schema = this.create(target, true); + } + } + createDefault(target) { + const schema = { + type: enums_1.AsnTypeTypes.Sequence, + items: {}, + }; + const parentSchema = this.findParentSchema(target); + if (parentSchema) { + Object.assign(schema, parentSchema); + schema.items = Object.assign({}, schema.items, parentSchema.items); + } + return schema; + } + create(target, useNames) { + const schema = this.items.get(target) || this.createDefault(target); + const asn1Value = []; + for (const key in schema.items) { + const item = schema.items[key]; + const name = useNames ? key : ""; + let asn1Item; + if (typeof item.type === "number") { + const Asn1TypeName = enums_1.AsnPropTypes[item.type]; + const Asn1Type = asn1js[Asn1TypeName]; + if (!Asn1Type) { + throw new Error(`Cannot get ASN1 class by name '${Asn1TypeName}'`); + } + asn1Item = new Asn1Type({ name }); + } + else if ((0, helper_1.isConvertible)(item.type)) { + const instance = new item.type(); + asn1Item = instance.toSchema(name); + } + else if (item.optional) { + const itemSchema = this.get(item.type); + if (itemSchema.type === enums_1.AsnTypeTypes.Choice) { + asn1Item = new asn1js.Any({ name }); + } + else { + asn1Item = this.create(item.type, false); + asn1Item.name = name; + } + } + else { + asn1Item = new asn1js.Any({ name }); + } + const optional = !!item.optional || item.defaultValue !== undefined; + if (item.repeated) { + asn1Item.name = ""; + const Container = item.repeated === "set" ? asn1js.Set : asn1js.Sequence; + asn1Item = new Container({ + name: "", + value: [ + new asn1js.Repeated({ + name, + value: asn1Item, + }), + ], + }); + } + if (item.context !== null && item.context !== undefined) { + if (item.implicit) { + if (typeof item.type === "number" || (0, helper_1.isConvertible)(item.type)) { + const Container = item.repeated ? asn1js.Constructed : asn1js.Primitive; + asn1Value.push(new Container({ + name, + optional, + idBlock: { + tagClass: 3, + tagNumber: item.context, + }, + })); + } + else { + this.cache(item.type); + const isRepeated = !!item.repeated; + let value = !isRepeated ? this.get(item.type, true).schema : asn1Item; + value = + "valueBlock" in value + ? value.valueBlock.value + : value.value; + asn1Value.push(new asn1js.Constructed({ + name: !isRepeated ? name : "", + optional, + idBlock: { + tagClass: 3, + tagNumber: item.context, + }, + value: value, + })); + } + } + else { + asn1Value.push(new asn1js.Constructed({ + optional, + idBlock: { + tagClass: 3, + tagNumber: item.context, + }, + value: [asn1Item], + })); + } + } + else { + asn1Item.optional = optional; + asn1Value.push(asn1Item); + } + } + switch (schema.type) { + case enums_1.AsnTypeTypes.Sequence: + return new asn1js.Sequence({ value: asn1Value, name: "" }); + case enums_1.AsnTypeTypes.Set: + return new asn1js.Set({ value: asn1Value, name: "" }); + case enums_1.AsnTypeTypes.Choice: + return new asn1js.Choice({ value: asn1Value, name: "" }); + default: + throw new Error(`Unsupported ASN1 type in use`); + } + } + set(target, schema) { + this.items.set(target, schema); + return this; + } + findParentSchema(target) { + const parent = Object.getPrototypeOf(target); + if (parent) { + const schema = this.items.get(parent); + return schema || this.findParentSchema(parent); + } + return null; + } +} +exports.AsnSchemaStorage = AsnSchemaStorage; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/serializer.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/serializer.js new file mode 100644 index 0000000..e8ce9f4 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/serializer.js @@ -0,0 +1,158 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AsnSerializer = void 0; +const asn1js = require("asn1js"); +const converters = require("./converters"); +const enums_1 = require("./enums"); +const helper_1 = require("./helper"); +const storage_1 = require("./storage"); +class AsnSerializer { + static serialize(obj) { + if (obj instanceof asn1js.BaseBlock) { + return obj.toBER(false); + } + return this.toASN(obj).toBER(false); + } + static toASN(obj) { + if (obj && typeof obj === "object" && (0, helper_1.isConvertible)(obj)) { + return obj.toASN(); + } + if (!(obj && typeof obj === "object")) { + throw new TypeError("Parameter 1 should be type of Object."); + } + const target = obj.constructor; + const schema = storage_1.schemaStorage.get(target); + storage_1.schemaStorage.cache(target); + let asn1Value = []; + if (schema.itemType) { + if (!Array.isArray(obj)) { + throw new TypeError("Parameter 1 should be type of Array."); + } + if (typeof schema.itemType === "number") { + const converter = converters.defaultConverter(schema.itemType); + if (!converter) { + throw new Error(`Cannot get default converter for array item of ${target.name} ASN1 schema`); + } + asn1Value = obj.map((o) => converter.toASN(o)); + } + else { + asn1Value = obj.map((o) => this.toAsnItem({ type: schema.itemType }, "[]", target, o)); + } + } + else { + for (const key in schema.items) { + const schemaItem = schema.items[key]; + const objProp = obj[key]; + if (objProp === undefined || + schemaItem.defaultValue === objProp || + (typeof schemaItem.defaultValue === "object" && + typeof objProp === "object" && + (0, helper_1.isArrayEqual)(this.serialize(schemaItem.defaultValue), this.serialize(objProp)))) { + continue; + } + const asn1Item = AsnSerializer.toAsnItem(schemaItem, key, target, objProp); + if (typeof schemaItem.context === "number") { + if (schemaItem.implicit) { + if (!schemaItem.repeated && + (typeof schemaItem.type === "number" || (0, helper_1.isConvertible)(schemaItem.type))) { + const value = {}; + value.valueHex = + asn1Item instanceof asn1js.Null + ? asn1Item.valueBeforeDecodeView + : asn1Item.valueBlock.toBER(); + asn1Value.push(new asn1js.Primitive({ + optional: schemaItem.optional, + idBlock: { + tagClass: 3, + tagNumber: schemaItem.context, + }, + ...value, + })); + } + else { + asn1Value.push(new asn1js.Constructed({ + optional: schemaItem.optional, + idBlock: { + tagClass: 3, + tagNumber: schemaItem.context, + }, + value: asn1Item.valueBlock.value, + })); + } + } + else { + asn1Value.push(new asn1js.Constructed({ + optional: schemaItem.optional, + idBlock: { + tagClass: 3, + tagNumber: schemaItem.context, + }, + value: [asn1Item], + })); + } + } + else if (schemaItem.repeated) { + asn1Value = asn1Value.concat(asn1Item); + } + else { + asn1Value.push(asn1Item); + } + } + } + let asnSchema; + switch (schema.type) { + case enums_1.AsnTypeTypes.Sequence: + asnSchema = new asn1js.Sequence({ value: asn1Value }); + break; + case enums_1.AsnTypeTypes.Set: + asnSchema = new asn1js.Set({ value: asn1Value }); + break; + case enums_1.AsnTypeTypes.Choice: + if (!asn1Value[0]) { + throw new Error(`Schema '${target.name}' has wrong data. Choice cannot be empty.`); + } + asnSchema = asn1Value[0]; + break; + } + return asnSchema; + } + static toAsnItem(schemaItem, key, target, objProp) { + let asn1Item; + if (typeof schemaItem.type === "number") { + const converter = schemaItem.converter; + if (!converter) { + throw new Error(`Property '${key}' doesn't have converter for type ${enums_1.AsnPropTypes[schemaItem.type]} in schema '${target.name}'`); + } + if (schemaItem.repeated) { + if (!Array.isArray(objProp)) { + throw new TypeError("Parameter 'objProp' should be type of Array."); + } + const items = Array.from(objProp, (element) => converter.toASN(element)); + const Container = schemaItem.repeated === "sequence" ? asn1js.Sequence : asn1js.Set; + asn1Item = new Container({ + value: items, + }); + } + else { + asn1Item = converter.toASN(objProp); + } + } + else { + if (schemaItem.repeated) { + if (!Array.isArray(objProp)) { + throw new TypeError("Parameter 'objProp' should be type of Array."); + } + const items = Array.from(objProp, (element) => this.toASN(element)); + const Container = schemaItem.repeated === "sequence" ? asn1js.Sequence : asn1js.Set; + asn1Item = new Container({ + value: items, + }); + } + else { + asn1Item = this.toASN(objProp); + } + } + return asn1Item; + } +} +exports.AsnSerializer = AsnSerializer; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/storage.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/storage.js new file mode 100644 index 0000000..368009e --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/storage.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.schemaStorage = void 0; +const schema_1 = require("./schema"); +exports.schemaStorage = new schema_1.AsnSchemaStorage(); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/types.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/types.js new file mode 100644 index 0000000..c8ad2e5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/types.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/types/bit_string.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/types/bit_string.js new file mode 100644 index 0000000..a4513d2 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/types/bit_string.js @@ -0,0 +1,67 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BitString = void 0; +const asn1js = require("asn1js"); +const pvtsutils_1 = require("pvtsutils"); +class BitString { + constructor(params, unusedBits = 0) { + this.unusedBits = 0; + this.value = new ArrayBuffer(0); + if (params) { + if (typeof params === "number") { + this.fromNumber(params); + } + else if (pvtsutils_1.BufferSourceConverter.isBufferSource(params)) { + this.unusedBits = unusedBits; + this.value = pvtsutils_1.BufferSourceConverter.toArrayBuffer(params); + } + else { + throw TypeError("Unsupported type of 'params' argument for BitString"); + } + } + } + fromASN(asn) { + if (!(asn instanceof asn1js.BitString)) { + throw new TypeError("Argument 'asn' is not instance of ASN.1 BitString"); + } + this.unusedBits = asn.valueBlock.unusedBits; + this.value = asn.valueBlock.valueHex; + return this; + } + toASN() { + return new asn1js.BitString({ unusedBits: this.unusedBits, valueHex: this.value }); + } + toSchema(name) { + return new asn1js.BitString({ name }); + } + toNumber() { + let res = ""; + const uintArray = new Uint8Array(this.value); + for (const octet of uintArray) { + res += octet.toString(2).padStart(8, "0"); + } + res = res.split("").reverse().join(""); + if (this.unusedBits) { + res = res.slice(this.unusedBits).padStart(this.unusedBits, "0"); + } + return parseInt(res, 2); + } + fromNumber(value) { + let bits = value.toString(2); + const octetSize = (bits.length + 7) >> 3; + this.unusedBits = (octetSize << 3) - bits.length; + const octets = new Uint8Array(octetSize); + bits = bits + .padStart(octetSize << 3, "0") + .split("") + .reverse() + .join(""); + let index = 0; + while (index < octetSize) { + octets[index] = parseInt(bits.slice(index << 3, (index << 3) + 8), 2); + index++; + } + this.value = octets.buffer; + } +} +exports.BitString = BitString; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/types/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/types/index.js new file mode 100644 index 0000000..cd5fccf --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/types/index.js @@ -0,0 +1,5 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./bit_string"), exports); +tslib_1.__exportStar(require("./octet_string"), exports); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/types/octet_string.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/types/octet_string.js new file mode 100644 index 0000000..b3e82e0 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/cjs/types/octet_string.js @@ -0,0 +1,43 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.OctetString = void 0; +const asn1js = require("asn1js"); +const pvtsutils_1 = require("pvtsutils"); +class OctetString { + get byteLength() { + return this.buffer.byteLength; + } + get byteOffset() { + return 0; + } + constructor(param) { + if (typeof param === "number") { + this.buffer = new ArrayBuffer(param); + } + else { + if (pvtsutils_1.BufferSourceConverter.isBufferSource(param)) { + this.buffer = pvtsutils_1.BufferSourceConverter.toArrayBuffer(param); + } + else if (Array.isArray(param)) { + this.buffer = new Uint8Array(param); + } + else { + this.buffer = new ArrayBuffer(0); + } + } + } + fromASN(asn) { + if (!(asn instanceof asn1js.OctetString)) { + throw new TypeError("Argument 'asn' is not instance of ASN.1 OctetString"); + } + this.buffer = asn.valueBlock.valueHex; + return this; + } + toASN() { + return new asn1js.OctetString({ valueHex: this.buffer }); + } + toSchema(name) { + return new asn1js.OctetString({ name }); + } +} +exports.OctetString = OctetString; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/convert.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/convert.js new file mode 100644 index 0000000..27f77a9 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/convert.js @@ -0,0 +1,22 @@ +import * as asn1js from "asn1js"; +import { BufferSourceConverter } from "pvtsutils"; +import { AsnParser } from "./parser"; +import { AsnSerializer } from "./serializer"; +export class AsnConvert { + static serialize(obj) { + return AsnSerializer.serialize(obj); + } + static parse(data, target) { + return AsnParser.parse(data, target); + } + static toString(data) { + const buf = BufferSourceConverter.isBufferSource(data) + ? BufferSourceConverter.toArrayBuffer(data) + : AsnConvert.serialize(data); + const asn = asn1js.fromBER(buf); + if (asn.offset === -1) { + throw new Error(`Cannot decode ASN.1 data. ${asn.result.error}`); + } + return asn.result.toString(); + } +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/converters.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/converters.js new file mode 100644 index 0000000..e641506 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/converters.js @@ -0,0 +1,136 @@ +import * as asn1js from "asn1js"; +import { AsnPropTypes } from "./enums"; +import { OctetString } from "./types/index"; +export const AsnAnyConverter = { + fromASN: (value) => value instanceof asn1js.Null ? null : value.valueBeforeDecodeView, + toASN: (value) => { + if (value === null) { + return new asn1js.Null(); + } + const schema = asn1js.fromBER(value); + if (schema.result.error) { + throw new Error(schema.result.error); + } + return schema.result; + }, +}; +export const AsnIntegerConverter = { + fromASN: (value) => value.valueBlock.valueHexView.byteLength >= 4 + ? value.valueBlock.toString() + : value.valueBlock.valueDec, + toASN: (value) => new asn1js.Integer({ value: +value }), +}; +export const AsnEnumeratedConverter = { + fromASN: (value) => value.valueBlock.valueDec, + toASN: (value) => new asn1js.Enumerated({ value }), +}; +export const AsnIntegerArrayBufferConverter = { + fromASN: (value) => value.valueBlock.valueHexView, + toASN: (value) => new asn1js.Integer({ valueHex: value }), +}; +export const AsnIntegerBigIntConverter = { + fromASN: (value) => value.toBigInt(), + toASN: (value) => asn1js.Integer.fromBigInt(value), +}; +export const AsnBitStringConverter = { + fromASN: (value) => value.valueBlock.valueHexView, + toASN: (value) => new asn1js.BitString({ valueHex: value }), +}; +export const AsnObjectIdentifierConverter = { + fromASN: (value) => value.valueBlock.toString(), + toASN: (value) => new asn1js.ObjectIdentifier({ value }), +}; +export const AsnBooleanConverter = { + fromASN: (value) => value.valueBlock.value, + toASN: (value) => new asn1js.Boolean({ value }), +}; +export const AsnOctetStringConverter = { + fromASN: (value) => value.valueBlock.valueHexView, + toASN: (value) => new asn1js.OctetString({ valueHex: value }), +}; +export const AsnConstructedOctetStringConverter = { + fromASN: (value) => new OctetString(value.getValue()), + toASN: (value) => value.toASN(), +}; +function createStringConverter(Asn1Type) { + return { + fromASN: (value) => value.valueBlock.value, + toASN: (value) => new Asn1Type({ value }), + }; +} +export const AsnUtf8StringConverter = createStringConverter(asn1js.Utf8String); +export const AsnBmpStringConverter = createStringConverter(asn1js.BmpString); +export const AsnUniversalStringConverter = createStringConverter(asn1js.UniversalString); +export const AsnNumericStringConverter = createStringConverter(asn1js.NumericString); +export const AsnPrintableStringConverter = createStringConverter(asn1js.PrintableString); +export const AsnTeletexStringConverter = createStringConverter(asn1js.TeletexString); +export const AsnVideotexStringConverter = createStringConverter(asn1js.VideotexString); +export const AsnIA5StringConverter = createStringConverter(asn1js.IA5String); +export const AsnGraphicStringConverter = createStringConverter(asn1js.GraphicString); +export const AsnVisibleStringConverter = createStringConverter(asn1js.VisibleString); +export const AsnGeneralStringConverter = createStringConverter(asn1js.GeneralString); +export const AsnCharacterStringConverter = createStringConverter(asn1js.CharacterString); +export const AsnUTCTimeConverter = { + fromASN: (value) => value.toDate(), + toASN: (value) => new asn1js.UTCTime({ valueDate: value }), +}; +export const AsnGeneralizedTimeConverter = { + fromASN: (value) => value.toDate(), + toASN: (value) => new asn1js.GeneralizedTime({ valueDate: value }), +}; +export const AsnNullConverter = { + fromASN: () => null, + toASN: () => { + return new asn1js.Null(); + }, +}; +export function defaultConverter(type) { + switch (type) { + case AsnPropTypes.Any: + return AsnAnyConverter; + case AsnPropTypes.BitString: + return AsnBitStringConverter; + case AsnPropTypes.BmpString: + return AsnBmpStringConverter; + case AsnPropTypes.Boolean: + return AsnBooleanConverter; + case AsnPropTypes.CharacterString: + return AsnCharacterStringConverter; + case AsnPropTypes.Enumerated: + return AsnEnumeratedConverter; + case AsnPropTypes.GeneralString: + return AsnGeneralStringConverter; + case AsnPropTypes.GeneralizedTime: + return AsnGeneralizedTimeConverter; + case AsnPropTypes.GraphicString: + return AsnGraphicStringConverter; + case AsnPropTypes.IA5String: + return AsnIA5StringConverter; + case AsnPropTypes.Integer: + return AsnIntegerConverter; + case AsnPropTypes.Null: + return AsnNullConverter; + case AsnPropTypes.NumericString: + return AsnNumericStringConverter; + case AsnPropTypes.ObjectIdentifier: + return AsnObjectIdentifierConverter; + case AsnPropTypes.OctetString: + return AsnOctetStringConverter; + case AsnPropTypes.PrintableString: + return AsnPrintableStringConverter; + case AsnPropTypes.TeletexString: + return AsnTeletexStringConverter; + case AsnPropTypes.UTCTime: + return AsnUTCTimeConverter; + case AsnPropTypes.UniversalString: + return AsnUniversalStringConverter; + case AsnPropTypes.Utf8String: + return AsnUtf8StringConverter; + case AsnPropTypes.VideotexString: + return AsnVideotexStringConverter; + case AsnPropTypes.VisibleString: + return AsnVisibleStringConverter; + default: + return null; + } +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/decorators.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/decorators.js new file mode 100644 index 0000000..43b1e3d --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/decorators.js @@ -0,0 +1,36 @@ +import * as converters from "./converters"; +import { AsnTypeTypes } from "./enums"; +import { schemaStorage } from "./storage"; +export const AsnType = (options) => (target) => { + let schema; + if (!schemaStorage.has(target)) { + schema = schemaStorage.createDefault(target); + schemaStorage.set(target, schema); + } + else { + schema = schemaStorage.get(target); + } + Object.assign(schema, options); +}; +export const AsnChoiceType = () => AsnType({ type: AsnTypeTypes.Choice }); +export const AsnSetType = (options) => AsnType({ type: AsnTypeTypes.Set, ...options }); +export const AsnSequenceType = (options) => AsnType({ type: AsnTypeTypes.Sequence, ...options }); +export const AsnProp = (options) => (target, propertyKey) => { + let schema; + if (!schemaStorage.has(target.constructor)) { + schema = schemaStorage.createDefault(target.constructor); + schemaStorage.set(target.constructor, schema); + } + else { + schema = schemaStorage.get(target.constructor); + } + const copyOptions = Object.assign({}, options); + if (typeof copyOptions.type === "number" && !copyOptions.converter) { + const defaultConverter = converters.defaultConverter(options.type); + if (!defaultConverter) { + throw new Error(`Cannot get default converter for property '${propertyKey}' of ${target.constructor.name}`); + } + copyOptions.converter = defaultConverter; + } + schema.items[propertyKey] = copyOptions; +}; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/enums.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/enums.js new file mode 100644 index 0000000..e681c3c --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/enums.js @@ -0,0 +1,36 @@ +export var AsnTypeTypes; +(function (AsnTypeTypes) { + AsnTypeTypes[AsnTypeTypes["Sequence"] = 0] = "Sequence"; + AsnTypeTypes[AsnTypeTypes["Set"] = 1] = "Set"; + AsnTypeTypes[AsnTypeTypes["Choice"] = 2] = "Choice"; +})(AsnTypeTypes || (AsnTypeTypes = {})); +export var AsnPropTypes; +(function (AsnPropTypes) { + AsnPropTypes[AsnPropTypes["Any"] = 1] = "Any"; + AsnPropTypes[AsnPropTypes["Boolean"] = 2] = "Boolean"; + AsnPropTypes[AsnPropTypes["OctetString"] = 3] = "OctetString"; + AsnPropTypes[AsnPropTypes["BitString"] = 4] = "BitString"; + AsnPropTypes[AsnPropTypes["Integer"] = 5] = "Integer"; + AsnPropTypes[AsnPropTypes["Enumerated"] = 6] = "Enumerated"; + AsnPropTypes[AsnPropTypes["ObjectIdentifier"] = 7] = "ObjectIdentifier"; + AsnPropTypes[AsnPropTypes["Utf8String"] = 8] = "Utf8String"; + AsnPropTypes[AsnPropTypes["BmpString"] = 9] = "BmpString"; + AsnPropTypes[AsnPropTypes["UniversalString"] = 10] = "UniversalString"; + AsnPropTypes[AsnPropTypes["NumericString"] = 11] = "NumericString"; + AsnPropTypes[AsnPropTypes["PrintableString"] = 12] = "PrintableString"; + AsnPropTypes[AsnPropTypes["TeletexString"] = 13] = "TeletexString"; + AsnPropTypes[AsnPropTypes["VideotexString"] = 14] = "VideotexString"; + AsnPropTypes[AsnPropTypes["IA5String"] = 15] = "IA5String"; + AsnPropTypes[AsnPropTypes["GraphicString"] = 16] = "GraphicString"; + AsnPropTypes[AsnPropTypes["VisibleString"] = 17] = "VisibleString"; + AsnPropTypes[AsnPropTypes["GeneralString"] = 18] = "GeneralString"; + AsnPropTypes[AsnPropTypes["CharacterString"] = 19] = "CharacterString"; + AsnPropTypes[AsnPropTypes["UTCTime"] = 20] = "UTCTime"; + AsnPropTypes[AsnPropTypes["GeneralizedTime"] = 21] = "GeneralizedTime"; + AsnPropTypes[AsnPropTypes["DATE"] = 22] = "DATE"; + AsnPropTypes[AsnPropTypes["TimeOfDay"] = 23] = "TimeOfDay"; + AsnPropTypes[AsnPropTypes["DateTime"] = 24] = "DateTime"; + AsnPropTypes[AsnPropTypes["Duration"] = 25] = "Duration"; + AsnPropTypes[AsnPropTypes["TIME"] = 26] = "TIME"; + AsnPropTypes[AsnPropTypes["Null"] = 27] = "Null"; +})(AsnPropTypes || (AsnPropTypes = {})); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/errors/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/errors/index.js new file mode 100644 index 0000000..6edc538 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/errors/index.js @@ -0,0 +1 @@ +export * from "./schema_validation"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/errors/schema_validation.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/errors/schema_validation.js new file mode 100644 index 0000000..4fcc936 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/errors/schema_validation.js @@ -0,0 +1,6 @@ +export class AsnSchemaValidationError extends Error { + constructor() { + super(...arguments); + this.schemas = []; + } +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/helper.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/helper.js new file mode 100644 index 0000000..6e298db --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/helper.js @@ -0,0 +1,40 @@ +export function isConvertible(target) { + if (typeof target === "function" && target.prototype) { + if (target.prototype.toASN && target.prototype.fromASN) { + return true; + } + else { + return isConvertible(target.prototype); + } + } + else { + return !!(target && typeof target === "object" && "toASN" in target && "fromASN" in target); + } +} +export function isTypeOfArray(target) { + var _a; + if (target) { + const proto = Object.getPrototypeOf(target); + if (((_a = proto === null || proto === void 0 ? void 0 : proto.prototype) === null || _a === void 0 ? void 0 : _a.constructor) === Array) { + return true; + } + return isTypeOfArray(proto); + } + return false; +} +export function isArrayEqual(bytes1, bytes2) { + if (!(bytes1 && bytes2)) { + return false; + } + if (bytes1.byteLength !== bytes2.byteLength) { + return false; + } + const b1 = new Uint8Array(bytes1); + const b2 = new Uint8Array(bytes2); + for (let i = 0; i < bytes1.byteLength; i++) { + if (b1[i] !== b2[i]) { + return false; + } + } + return true; +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/index.js new file mode 100644 index 0000000..1c0049e --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/index.js @@ -0,0 +1,9 @@ +export * from "./converters"; +export * from "./types/index"; +export { AsnProp, AsnType, AsnChoiceType, AsnSequenceType, AsnSetType } from "./decorators"; +export { AsnTypeTypes, AsnPropTypes } from "./enums"; +export { AsnParser } from "./parser"; +export { AsnSerializer } from "./serializer"; +export * from "./errors"; +export * from "./objects"; +export * from "./convert"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/objects.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/objects.js new file mode 100644 index 0000000..b858c74 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/objects.js @@ -0,0 +1,13 @@ +export class AsnArray extends Array { + constructor(items = []) { + if (typeof items === "number") { + super(items); + } + else { + super(); + for (const item of items) { + this.push(item); + } + } + } +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/parser.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/parser.js new file mode 100644 index 0000000..fc5e53e --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/parser.js @@ -0,0 +1,135 @@ +import * as asn1js from "asn1js"; +import { AsnPropTypes, AsnTypeTypes } from "./enums"; +import * as converters from "./converters"; +import { AsnSchemaValidationError } from "./errors"; +import { isConvertible, isTypeOfArray } from "./helper"; +import { schemaStorage } from "./storage"; +export class AsnParser { + static parse(data, target) { + const asn1Parsed = asn1js.fromBER(data); + if (asn1Parsed.result.error) { + throw new Error(asn1Parsed.result.error); + } + const res = this.fromASN(asn1Parsed.result, target); + return res; + } + static fromASN(asn1Schema, target) { + var _a; + try { + if (isConvertible(target)) { + const value = new target(); + return value.fromASN(asn1Schema); + } + const schema = schemaStorage.get(target); + schemaStorage.cache(target); + let targetSchema = schema.schema; + if (asn1Schema.constructor === asn1js.Constructed && schema.type !== AsnTypeTypes.Choice) { + targetSchema = new asn1js.Constructed({ + idBlock: { + tagClass: 3, + tagNumber: asn1Schema.idBlock.tagNumber, + }, + value: schema.schema.valueBlock.value, + }); + for (const key in schema.items) { + delete asn1Schema[key]; + } + } + const asn1ComparedSchema = asn1js.compareSchema({}, asn1Schema, targetSchema); + if (!asn1ComparedSchema.verified) { + throw new AsnSchemaValidationError(`Data does not match to ${target.name} ASN1 schema. ${asn1ComparedSchema.result.error}`); + } + const res = new target(); + if (isTypeOfArray(target)) { + if (!("value" in asn1Schema.valueBlock && Array.isArray(asn1Schema.valueBlock.value))) { + throw new Error(`Cannot get items from the ASN.1 parsed value. ASN.1 object is not constructed.`); + } + const itemType = schema.itemType; + if (typeof itemType === "number") { + const converter = converters.defaultConverter(itemType); + if (!converter) { + throw new Error(`Cannot get default converter for array item of ${target.name} ASN1 schema`); + } + return target.from(asn1Schema.valueBlock.value, (element) => converter.fromASN(element)); + } + else { + return target.from(asn1Schema.valueBlock.value, (element) => this.fromASN(element, itemType)); + } + } + for (const key in schema.items) { + const asn1SchemaValue = asn1ComparedSchema.result[key]; + if (!asn1SchemaValue) { + continue; + } + const schemaItem = schema.items[key]; + const schemaItemType = schemaItem.type; + if (typeof schemaItemType === "number" || isConvertible(schemaItemType)) { + const converter = (_a = schemaItem.converter) !== null && _a !== void 0 ? _a : (isConvertible(schemaItemType) + ? new schemaItemType() + : null); + if (!converter) { + throw new Error("Converter is empty"); + } + if (schemaItem.repeated) { + if (schemaItem.implicit) { + const Container = schemaItem.repeated === "sequence" ? asn1js.Sequence : asn1js.Set; + const newItem = new Container(); + newItem.valueBlock = asn1SchemaValue.valueBlock; + const newItemAsn = asn1js.fromBER(newItem.toBER(false)); + if (newItemAsn.offset === -1) { + throw new Error(`Cannot parse the child item. ${newItemAsn.result.error}`); + } + if (!("value" in newItemAsn.result.valueBlock && + Array.isArray(newItemAsn.result.valueBlock.value))) { + throw new Error("Cannot get items from the ASN.1 parsed value. ASN.1 object is not constructed."); + } + const value = newItemAsn.result.valueBlock.value; + res[key] = Array.from(value, (element) => converter.fromASN(element)); + } + else { + res[key] = Array.from(asn1SchemaValue, (element) => converter.fromASN(element)); + } + } + else { + let value = asn1SchemaValue; + if (schemaItem.implicit) { + let newItem; + if (isConvertible(schemaItemType)) { + newItem = new schemaItemType().toSchema(""); + } + else { + const Asn1TypeName = AsnPropTypes[schemaItemType]; + const Asn1Type = asn1js[Asn1TypeName]; + if (!Asn1Type) { + throw new Error(`Cannot get '${Asn1TypeName}' class from asn1js module`); + } + newItem = new Asn1Type(); + } + newItem.valueBlock = value.valueBlock; + value = asn1js.fromBER(newItem.toBER(false)).result; + } + res[key] = converter.fromASN(value); + } + } + else { + if (schemaItem.repeated) { + if (!Array.isArray(asn1SchemaValue)) { + throw new Error("Cannot get list of items from the ASN.1 parsed value. ASN.1 value should be iterable."); + } + res[key] = Array.from(asn1SchemaValue, (element) => this.fromASN(element, schemaItemType)); + } + else { + res[key] = this.fromASN(asn1SchemaValue, schemaItemType); + } + } + } + return res; + } + catch (error) { + if (error instanceof AsnSchemaValidationError) { + error.schemas.push(target.name); + } + throw error; + } + } +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/schema.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/schema.js new file mode 100644 index 0000000..d48948a --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/schema.js @@ -0,0 +1,156 @@ +import * as asn1js from "asn1js"; +import { AsnPropTypes, AsnTypeTypes } from "./enums"; +import { isConvertible } from "./helper"; +export class AsnSchemaStorage { + constructor() { + this.items = new WeakMap(); + } + has(target) { + return this.items.has(target); + } + get(target, checkSchema = false) { + const schema = this.items.get(target); + if (!schema) { + throw new Error(`Cannot get schema for '${target.prototype.constructor.name}' target`); + } + if (checkSchema && !schema.schema) { + throw new Error(`Schema '${target.prototype.constructor.name}' doesn't contain ASN.1 schema. Call 'AsnSchemaStorage.cache'.`); + } + return schema; + } + cache(target) { + const schema = this.get(target); + if (!schema.schema) { + schema.schema = this.create(target, true); + } + } + createDefault(target) { + const schema = { + type: AsnTypeTypes.Sequence, + items: {}, + }; + const parentSchema = this.findParentSchema(target); + if (parentSchema) { + Object.assign(schema, parentSchema); + schema.items = Object.assign({}, schema.items, parentSchema.items); + } + return schema; + } + create(target, useNames) { + const schema = this.items.get(target) || this.createDefault(target); + const asn1Value = []; + for (const key in schema.items) { + const item = schema.items[key]; + const name = useNames ? key : ""; + let asn1Item; + if (typeof item.type === "number") { + const Asn1TypeName = AsnPropTypes[item.type]; + const Asn1Type = asn1js[Asn1TypeName]; + if (!Asn1Type) { + throw new Error(`Cannot get ASN1 class by name '${Asn1TypeName}'`); + } + asn1Item = new Asn1Type({ name }); + } + else if (isConvertible(item.type)) { + const instance = new item.type(); + asn1Item = instance.toSchema(name); + } + else if (item.optional) { + const itemSchema = this.get(item.type); + if (itemSchema.type === AsnTypeTypes.Choice) { + asn1Item = new asn1js.Any({ name }); + } + else { + asn1Item = this.create(item.type, false); + asn1Item.name = name; + } + } + else { + asn1Item = new asn1js.Any({ name }); + } + const optional = !!item.optional || item.defaultValue !== undefined; + if (item.repeated) { + asn1Item.name = ""; + const Container = item.repeated === "set" ? asn1js.Set : asn1js.Sequence; + asn1Item = new Container({ + name: "", + value: [ + new asn1js.Repeated({ + name, + value: asn1Item, + }), + ], + }); + } + if (item.context !== null && item.context !== undefined) { + if (item.implicit) { + if (typeof item.type === "number" || isConvertible(item.type)) { + const Container = item.repeated ? asn1js.Constructed : asn1js.Primitive; + asn1Value.push(new Container({ + name, + optional, + idBlock: { + tagClass: 3, + tagNumber: item.context, + }, + })); + } + else { + this.cache(item.type); + const isRepeated = !!item.repeated; + let value = !isRepeated ? this.get(item.type, true).schema : asn1Item; + value = + "valueBlock" in value + ? value.valueBlock.value + : value.value; + asn1Value.push(new asn1js.Constructed({ + name: !isRepeated ? name : "", + optional, + idBlock: { + tagClass: 3, + tagNumber: item.context, + }, + value: value, + })); + } + } + else { + asn1Value.push(new asn1js.Constructed({ + optional, + idBlock: { + tagClass: 3, + tagNumber: item.context, + }, + value: [asn1Item], + })); + } + } + else { + asn1Item.optional = optional; + asn1Value.push(asn1Item); + } + } + switch (schema.type) { + case AsnTypeTypes.Sequence: + return new asn1js.Sequence({ value: asn1Value, name: "" }); + case AsnTypeTypes.Set: + return new asn1js.Set({ value: asn1Value, name: "" }); + case AsnTypeTypes.Choice: + return new asn1js.Choice({ value: asn1Value, name: "" }); + default: + throw new Error(`Unsupported ASN1 type in use`); + } + } + set(target, schema) { + this.items.set(target, schema); + return this; + } + findParentSchema(target) { + const parent = Object.getPrototypeOf(target); + if (parent) { + const schema = this.items.get(parent); + return schema || this.findParentSchema(parent); + } + return null; + } +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/serializer.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/serializer.js new file mode 100644 index 0000000..90a896a --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/serializer.js @@ -0,0 +1,154 @@ +import * as asn1js from "asn1js"; +import * as converters from "./converters"; +import { AsnPropTypes, AsnTypeTypes } from "./enums"; +import { isConvertible, isArrayEqual } from "./helper"; +import { schemaStorage } from "./storage"; +export class AsnSerializer { + static serialize(obj) { + if (obj instanceof asn1js.BaseBlock) { + return obj.toBER(false); + } + return this.toASN(obj).toBER(false); + } + static toASN(obj) { + if (obj && typeof obj === "object" && isConvertible(obj)) { + return obj.toASN(); + } + if (!(obj && typeof obj === "object")) { + throw new TypeError("Parameter 1 should be type of Object."); + } + const target = obj.constructor; + const schema = schemaStorage.get(target); + schemaStorage.cache(target); + let asn1Value = []; + if (schema.itemType) { + if (!Array.isArray(obj)) { + throw new TypeError("Parameter 1 should be type of Array."); + } + if (typeof schema.itemType === "number") { + const converter = converters.defaultConverter(schema.itemType); + if (!converter) { + throw new Error(`Cannot get default converter for array item of ${target.name} ASN1 schema`); + } + asn1Value = obj.map((o) => converter.toASN(o)); + } + else { + asn1Value = obj.map((o) => this.toAsnItem({ type: schema.itemType }, "[]", target, o)); + } + } + else { + for (const key in schema.items) { + const schemaItem = schema.items[key]; + const objProp = obj[key]; + if (objProp === undefined || + schemaItem.defaultValue === objProp || + (typeof schemaItem.defaultValue === "object" && + typeof objProp === "object" && + isArrayEqual(this.serialize(schemaItem.defaultValue), this.serialize(objProp)))) { + continue; + } + const asn1Item = AsnSerializer.toAsnItem(schemaItem, key, target, objProp); + if (typeof schemaItem.context === "number") { + if (schemaItem.implicit) { + if (!schemaItem.repeated && + (typeof schemaItem.type === "number" || isConvertible(schemaItem.type))) { + const value = {}; + value.valueHex = + asn1Item instanceof asn1js.Null + ? asn1Item.valueBeforeDecodeView + : asn1Item.valueBlock.toBER(); + asn1Value.push(new asn1js.Primitive({ + optional: schemaItem.optional, + idBlock: { + tagClass: 3, + tagNumber: schemaItem.context, + }, + ...value, + })); + } + else { + asn1Value.push(new asn1js.Constructed({ + optional: schemaItem.optional, + idBlock: { + tagClass: 3, + tagNumber: schemaItem.context, + }, + value: asn1Item.valueBlock.value, + })); + } + } + else { + asn1Value.push(new asn1js.Constructed({ + optional: schemaItem.optional, + idBlock: { + tagClass: 3, + tagNumber: schemaItem.context, + }, + value: [asn1Item], + })); + } + } + else if (schemaItem.repeated) { + asn1Value = asn1Value.concat(asn1Item); + } + else { + asn1Value.push(asn1Item); + } + } + } + let asnSchema; + switch (schema.type) { + case AsnTypeTypes.Sequence: + asnSchema = new asn1js.Sequence({ value: asn1Value }); + break; + case AsnTypeTypes.Set: + asnSchema = new asn1js.Set({ value: asn1Value }); + break; + case AsnTypeTypes.Choice: + if (!asn1Value[0]) { + throw new Error(`Schema '${target.name}' has wrong data. Choice cannot be empty.`); + } + asnSchema = asn1Value[0]; + break; + } + return asnSchema; + } + static toAsnItem(schemaItem, key, target, objProp) { + let asn1Item; + if (typeof schemaItem.type === "number") { + const converter = schemaItem.converter; + if (!converter) { + throw new Error(`Property '${key}' doesn't have converter for type ${AsnPropTypes[schemaItem.type]} in schema '${target.name}'`); + } + if (schemaItem.repeated) { + if (!Array.isArray(objProp)) { + throw new TypeError("Parameter 'objProp' should be type of Array."); + } + const items = Array.from(objProp, (element) => converter.toASN(element)); + const Container = schemaItem.repeated === "sequence" ? asn1js.Sequence : asn1js.Set; + asn1Item = new Container({ + value: items, + }); + } + else { + asn1Item = converter.toASN(objProp); + } + } + else { + if (schemaItem.repeated) { + if (!Array.isArray(objProp)) { + throw new TypeError("Parameter 'objProp' should be type of Array."); + } + const items = Array.from(objProp, (element) => this.toASN(element)); + const Container = schemaItem.repeated === "sequence" ? asn1js.Sequence : asn1js.Set; + asn1Item = new Container({ + value: items, + }); + } + else { + asn1Item = this.toASN(objProp); + } + } + return asn1Item; + } +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/storage.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/storage.js new file mode 100644 index 0000000..5379efd --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/storage.js @@ -0,0 +1,2 @@ +import { AsnSchemaStorage } from "./schema"; +export const schemaStorage = new AsnSchemaStorage(); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/types.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/types.js new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/types.js @@ -0,0 +1 @@ +export {}; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/types/bit_string.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/types/bit_string.js new file mode 100644 index 0000000..227d416 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/types/bit_string.js @@ -0,0 +1,63 @@ +import * as asn1js from "asn1js"; +import { BufferSourceConverter } from "pvtsutils"; +export class BitString { + constructor(params, unusedBits = 0) { + this.unusedBits = 0; + this.value = new ArrayBuffer(0); + if (params) { + if (typeof params === "number") { + this.fromNumber(params); + } + else if (BufferSourceConverter.isBufferSource(params)) { + this.unusedBits = unusedBits; + this.value = BufferSourceConverter.toArrayBuffer(params); + } + else { + throw TypeError("Unsupported type of 'params' argument for BitString"); + } + } + } + fromASN(asn) { + if (!(asn instanceof asn1js.BitString)) { + throw new TypeError("Argument 'asn' is not instance of ASN.1 BitString"); + } + this.unusedBits = asn.valueBlock.unusedBits; + this.value = asn.valueBlock.valueHex; + return this; + } + toASN() { + return new asn1js.BitString({ unusedBits: this.unusedBits, valueHex: this.value }); + } + toSchema(name) { + return new asn1js.BitString({ name }); + } + toNumber() { + let res = ""; + const uintArray = new Uint8Array(this.value); + for (const octet of uintArray) { + res += octet.toString(2).padStart(8, "0"); + } + res = res.split("").reverse().join(""); + if (this.unusedBits) { + res = res.slice(this.unusedBits).padStart(this.unusedBits, "0"); + } + return parseInt(res, 2); + } + fromNumber(value) { + let bits = value.toString(2); + const octetSize = (bits.length + 7) >> 3; + this.unusedBits = (octetSize << 3) - bits.length; + const octets = new Uint8Array(octetSize); + bits = bits + .padStart(octetSize << 3, "0") + .split("") + .reverse() + .join(""); + let index = 0; + while (index < octetSize) { + octets[index] = parseInt(bits.slice(index << 3, (index << 3) + 8), 2); + index++; + } + this.value = octets.buffer; + } +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/types/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/types/index.js new file mode 100644 index 0000000..28ceb71 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/types/index.js @@ -0,0 +1,2 @@ +export * from "./bit_string"; +export * from "./octet_string"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/types/octet_string.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/types/octet_string.js new file mode 100644 index 0000000..f552953 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/es2015/types/octet_string.js @@ -0,0 +1,39 @@ +import * as asn1js from "asn1js"; +import { BufferSourceConverter } from "pvtsutils"; +export class OctetString { + get byteLength() { + return this.buffer.byteLength; + } + get byteOffset() { + return 0; + } + constructor(param) { + if (typeof param === "number") { + this.buffer = new ArrayBuffer(param); + } + else { + if (BufferSourceConverter.isBufferSource(param)) { + this.buffer = BufferSourceConverter.toArrayBuffer(param); + } + else if (Array.isArray(param)) { + this.buffer = new Uint8Array(param); + } + else { + this.buffer = new ArrayBuffer(0); + } + } + } + fromASN(asn) { + if (!(asn instanceof asn1js.OctetString)) { + throw new TypeError("Argument 'asn' is not instance of ASN.1 OctetString"); + } + this.buffer = asn.valueBlock.valueHex; + return this; + } + toASN() { + return new asn1js.OctetString({ valueHex: this.buffer }); + } + toSchema(name) { + return new asn1js.OctetString({ name }); + } +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/convert.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/convert.d.ts new file mode 100644 index 0000000..9bd5d7f --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/convert.d.ts @@ -0,0 +1,18 @@ +import { BufferSource } from "pvtsutils"; +import { IEmptyConstructor } from "./types"; +export declare class AsnConvert { + static serialize(obj: unknown): ArrayBuffer; + static parse(data: BufferSource, target: IEmptyConstructor): T; + /** + * Returns a string representation of an ASN.1 encoded data + * @param data ASN.1 encoded buffer source + * @returns String representation of ASN.1 structure + */ + static toString(data: BufferSource): string; + /** + * Returns a string representation of an ASN.1 schema + * @param obj Object which can be serialized to ASN.1 schema + * @returns String representation of ASN.1 structure + */ + static toString(obj: unknown): string; +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/converters.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/converters.d.ts new file mode 100644 index 0000000..5f24d73 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/converters.d.ts @@ -0,0 +1,113 @@ +import * as asn1js from "asn1js"; +import { AnyConverterType, IAsnConverter, IntegerConverterType } from "./types"; +import { AsnPropTypes } from "./enums"; +import { OctetString } from "./types/index"; +/** + * NOTE: Converter MUST have name AsnConverter. + * Asn1Prop decorator link custom converters by name of the Asn1PropType + */ +/** + * ASN.1 ANY converter + */ +export declare const AsnAnyConverter: IAsnConverter; +/** + * ASN.1 INTEGER to Number/String converter + */ +export declare const AsnIntegerConverter: IAsnConverter; +/** + * ASN.1 ENUMERATED converter + */ +export declare const AsnEnumeratedConverter: IAsnConverter; +/** + * ASN.1 INTEGER to ArrayBuffer converter + */ +export declare const AsnIntegerArrayBufferConverter: IAsnConverter; +/** + * ASN.1 INTEGER to BigInt converter + */ +export declare const AsnIntegerBigIntConverter: IAsnConverter; +/** + * ASN.1 BIT STRING converter + */ +export declare const AsnBitStringConverter: IAsnConverter; +/** + * ASN.1 OBJECT IDENTIFIER converter + */ +export declare const AsnObjectIdentifierConverter: IAsnConverter; +/** + * ASN.1 BOOLEAN converter + */ +export declare const AsnBooleanConverter: IAsnConverter; +/** + * ASN.1 OCTET_STRING converter + */ +export declare const AsnOctetStringConverter: IAsnConverter; +/** + * ASN.1 OCTET_STRING converter to OctetString class + */ +export declare const AsnConstructedOctetStringConverter: IAsnConverter; +/** + * ASN.1 UTF8_STRING converter + */ +export declare const AsnUtf8StringConverter: IAsnConverter; +/** + * ASN.1 BPM STRING converter + */ +export declare const AsnBmpStringConverter: IAsnConverter; +/** + * ASN.1 UNIVERSAL STRING converter + */ +export declare const AsnUniversalStringConverter: IAsnConverter; +/** + * ASN.1 NUMERIC STRING converter + */ +export declare const AsnNumericStringConverter: IAsnConverter; +/** + * ASN.1 PRINTABLE STRING converter + */ +export declare const AsnPrintableStringConverter: IAsnConverter; +/** + * ASN.1 TELETEX STRING converter + */ +export declare const AsnTeletexStringConverter: IAsnConverter; +/** + * ASN.1 VIDEOTEX STRING converter + */ +export declare const AsnVideotexStringConverter: IAsnConverter; +/** + * ASN.1 IA5 STRING converter + */ +export declare const AsnIA5StringConverter: IAsnConverter; +/** + * ASN.1 GRAPHIC STRING converter + */ +export declare const AsnGraphicStringConverter: IAsnConverter; +/** + * ASN.1 VISIBLE STRING converter + */ +export declare const AsnVisibleStringConverter: IAsnConverter; +/** + * ASN.1 GENERAL STRING converter + */ +export declare const AsnGeneralStringConverter: IAsnConverter; +/** + * ASN.1 CHARACTER STRING converter + */ +export declare const AsnCharacterStringConverter: IAsnConverter; +/** + * ASN.1 UTCTime converter + */ +export declare const AsnUTCTimeConverter: IAsnConverter; +/** + * ASN.1 GeneralizedTime converter + */ +export declare const AsnGeneralizedTimeConverter: IAsnConverter; +/** + * ASN.1 ANY converter + */ +export declare const AsnNullConverter: IAsnConverter; +/** + * Returns default converter for specified type + * @param type + */ +export declare function defaultConverter(type: AsnPropTypes): IAsnConverter | null; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/decorators.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/decorators.d.ts new file mode 100644 index 0000000..54bc349 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/decorators.d.ts @@ -0,0 +1,31 @@ +import { AsnPropTypes, AsnTypeTypes } from "./enums"; +import { IAsnConverter, IEmptyConstructor } from "./types"; +export type AsnItemType = AsnPropTypes | IEmptyConstructor; +export interface IAsn1TypeOptions { + type: AsnTypeTypes; + itemType?: AsnItemType; +} +export type AsnRepeatTypeString = "sequence" | "set"; +export type AsnRepeatType = AsnRepeatTypeString; +export interface IAsn1PropOptions { + type: AsnItemType; + optional?: boolean; + defaultValue?: unknown; + context?: number; + implicit?: boolean; + converter?: IAsnConverter; + repeated?: AsnRepeatType; +} +export type AsnTypeDecorator = (target: IEmptyConstructor) => void; +export declare const AsnType: (options: IAsn1TypeOptions) => AsnTypeDecorator; +export declare const AsnChoiceType: () => AsnTypeDecorator; +export interface IAsn1SetOptions { + itemType: AsnItemType; +} +export declare const AsnSetType: (options: IAsn1SetOptions) => AsnTypeDecorator; +export interface IAsn1SequenceOptions { + itemType?: AsnItemType; +} +export declare const AsnSequenceType: (options: IAsn1SequenceOptions) => AsnTypeDecorator; +export type AsnPropDecorator = (target: object, propertyKey: string) => void; +export declare const AsnProp: (options: IAsn1PropOptions) => AsnPropDecorator; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/enums.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/enums.d.ts new file mode 100644 index 0000000..1312d25 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/enums.d.ts @@ -0,0 +1,40 @@ +/** + * ASN.1 types for classes + */ +export declare enum AsnTypeTypes { + Sequence = 0, + Set = 1, + Choice = 2 +} +/** + * ASN.1 types for properties + */ +export declare enum AsnPropTypes { + Any = 1, + Boolean = 2, + OctetString = 3, + BitString = 4, + Integer = 5, + Enumerated = 6, + ObjectIdentifier = 7, + Utf8String = 8, + BmpString = 9, + UniversalString = 10, + NumericString = 11, + PrintableString = 12, + TeletexString = 13, + VideotexString = 14, + IA5String = 15, + GraphicString = 16, + VisibleString = 17, + GeneralString = 18, + CharacterString = 19, + UTCTime = 20, + GeneralizedTime = 21, + DATE = 22, + TimeOfDay = 23, + DateTime = 24, + Duration = 25, + TIME = 26, + Null = 27 +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/errors/index.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/errors/index.d.ts new file mode 100644 index 0000000..6edc538 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/errors/index.d.ts @@ -0,0 +1 @@ +export * from "./schema_validation"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/errors/schema_validation.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/errors/schema_validation.d.ts new file mode 100644 index 0000000..81de5ad --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/errors/schema_validation.d.ts @@ -0,0 +1,3 @@ +export declare class AsnSchemaValidationError extends Error { + schemas: string[]; +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/helper.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/helper.d.ts new file mode 100644 index 0000000..4cf2baf --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/helper.d.ts @@ -0,0 +1,5 @@ +import { IAsnConvertible, IEmptyConstructor } from "./types"; +export declare function isConvertible(target: IEmptyConstructor): target is new () => IAsnConvertible; +export declare function isConvertible(target: unknown): target is IAsnConvertible; +export declare function isTypeOfArray(target: unknown): target is typeof Array; +export declare function isArrayEqual(bytes1: ArrayBuffer, bytes2: ArrayBuffer): boolean; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/index.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/index.d.ts new file mode 100644 index 0000000..f3d8397 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/index.d.ts @@ -0,0 +1,10 @@ +export * from "./converters"; +export * from "./types/index"; +export { AsnProp, AsnType, AsnChoiceType, AsnSequenceType, AsnSetType } from "./decorators"; +export { AsnTypeTypes, AsnPropTypes } from "./enums"; +export { AsnParser } from "./parser"; +export { AsnSerializer } from "./serializer"; +export { IAsnConverter, IAsnConvertible } from "./types"; +export * from "./errors"; +export * from "./objects"; +export * from "./convert"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/objects.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/objects.d.ts new file mode 100644 index 0000000..f57d9f3 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/objects.d.ts @@ -0,0 +1,3 @@ +export declare abstract class AsnArray extends Array { + constructor(items?: T[]); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/parser.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/parser.d.ts new file mode 100644 index 0000000..50dd005 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/parser.d.ts @@ -0,0 +1,20 @@ +import * as asn1js from "asn1js"; +import type { BufferSource } from "pvtsutils"; +import { IEmptyConstructor } from "./types"; +/** + * Deserializes objects from ASN.1 encoded data + */ +export declare class AsnParser { + /** + * Deserializes an object from the ASN.1 encoded buffer + * @param data ASN.1 encoded buffer + * @param target Target schema for object deserialization + */ + static parse(data: BufferSource, target: IEmptyConstructor): T; + /** + * Deserializes an object from the asn1js object + * @param asn1Schema asn1js object + * @param target Target schema for object deserialization + */ + static fromASN(asn1Schema: asn1js.AsnType, target: IEmptyConstructor): T; +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/schema.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/schema.d.ts new file mode 100644 index 0000000..af504dc --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/schema.d.ts @@ -0,0 +1,33 @@ +import * as asn1js from "asn1js"; +import { AsnRepeatType } from "./decorators"; +import { AsnPropTypes, AsnTypeTypes } from "./enums"; +import { IAsnConverter, IEmptyConstructor } from "./types"; +export interface IAsnSchemaItem { + type: AsnPropTypes | IEmptyConstructor; + optional?: boolean; + defaultValue?: unknown; + context?: number; + implicit?: boolean; + converter?: IAsnConverter; + repeated?: AsnRepeatType; +} +export interface IAsnSchema { + type: AsnTypeTypes; + itemType: AsnPropTypes | IEmptyConstructor; + items: { + [key: string]: IAsnSchemaItem; + }; + schema?: AsnSchemaType; +} +export type AsnSchemaType = asn1js.Sequence | asn1js.Set | asn1js.Choice; +export declare class AsnSchemaStorage { + protected items: WeakMap; + has(target: object): boolean; + get(target: IEmptyConstructor, checkSchema: true): IAsnSchema & Required>; + get(target: IEmptyConstructor, checkSchema?: false): IAsnSchema; + cache(target: IEmptyConstructor): void; + createDefault(target: object): IAsnSchema; + create(target: object, useNames: boolean): AsnSchemaType; + set(target: object, schema: IAsnSchema): this; + protected findParentSchema(target: object): IAsnSchema | null; +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/serializer.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/serializer.d.ts new file mode 100644 index 0000000..9405252 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/serializer.d.ts @@ -0,0 +1,17 @@ +import * as asn1js from "asn1js"; +/** + * Serializes objects into ASN.1 encoded data + */ +export declare class AsnSerializer { + /** + * Serializes an object to the ASN.1 encoded buffer + * @param obj The object to serialize + */ + static serialize(obj: unknown): ArrayBuffer; + /** + * Serialize an object to the asn1js object + * @param obj The object to serialize + */ + static toASN(obj: unknown): asn1js.AsnType; + private static toAsnItem; +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/storage.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/storage.d.ts new file mode 100644 index 0000000..4be1aa4 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/storage.d.ts @@ -0,0 +1,2 @@ +import { AsnSchemaStorage } from "./schema"; +export declare const schemaStorage: AsnSchemaStorage; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/types.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/types.d.ts new file mode 100644 index 0000000..3196fae --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/types.d.ts @@ -0,0 +1,35 @@ +/** + * ASN1 type + */ +import * as asn1js from "asn1js"; +export interface IEmptyConstructor { + new (): T; +} +/** + * Allows to convert ASN.1 object to JS value and back + */ +export interface IAsnConverter { + /** + * Returns JS value from ASN.1 object + * @param value ASN.1 object from asn1js module + */ + fromASN(value: AsnType): T; + /** + * Returns ASN.1 object from JS value + * @param value JS value + */ + toASN(value: T): AsnType; +} +export type IntegerConverterType = string | number; +export type AnyConverterType = ArrayBuffer | null; +/** + * Allows an object to control its own ASN.1 serialization and deserialization + */ +export interface IAsnConvertible { + fromASN(asn: T): this; + toASN(): T; + toSchema(name: string): asn1js.BaseBlock; +} +export interface IAsnConvertibleConstructor { + new (): IAsnConvertible; +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/types/bit_string.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/types/bit_string.d.ts new file mode 100644 index 0000000..a005fe6 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/types/bit_string.d.ts @@ -0,0 +1,15 @@ +import * as asn1js from "asn1js"; +import { BufferSource } from "pvtsutils"; +import { IAsnConvertible } from "../types"; +export declare class BitString implements IAsnConvertible { + unusedBits: number; + value: ArrayBuffer; + constructor(); + constructor(value: T); + constructor(value: BufferSource, unusedBits?: number); + fromASN(asn: asn1js.BitString): this; + toASN(): asn1js.BitString; + toSchema(name: string): asn1js.BitString; + toNumber(): T; + fromNumber(value: T): void; +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/types/index.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/types/index.d.ts new file mode 100644 index 0000000..28ceb71 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/types/index.d.ts @@ -0,0 +1,2 @@ +export * from "./bit_string"; +export * from "./octet_string"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/types/octet_string.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/types/octet_string.d.ts new file mode 100644 index 0000000..a419697 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/build/types/types/octet_string.d.ts @@ -0,0 +1,15 @@ +import * as asn1js from "asn1js"; +import { BufferSource } from "pvtsutils"; +import { IAsnConvertible } from "../types"; +export declare class OctetString implements IAsnConvertible, ArrayBufferView { + buffer: ArrayBuffer; + get byteLength(): number; + get byteOffset(): number; + constructor(); + constructor(byteLength: number); + constructor(bytes: number[]); + constructor(bytes: BufferSource); + fromASN(asn: asn1js.OctetString): this; + toASN(): asn1js.OctetString; + toSchema(name: string): asn1js.OctetString; +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/CopyrightNotice.txt b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/CopyrightNotice.txt new file mode 100644 index 0000000..5d7d2d9 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/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/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/LICENSE.txt b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/LICENSE.txt new file mode 100644 index 0000000..fa7d1bd --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/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/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/README.md b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/README.md new file mode 100644 index 0000000..14b9a83 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/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/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/SECURITY.md b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/SECURITY.md new file mode 100644 index 0000000..869fdfe --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/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/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/modules/index.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/modules/index.d.ts new file mode 100644 index 0000000..3244fab --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/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/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/modules/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/modules/index.js new file mode 100644 index 0000000..f4f9a06 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/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/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/modules/package.json b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/modules/package.json new file mode 100644 index 0000000..96ae6e5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/modules/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/package.json b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/package.json new file mode 100644 index 0000000..57d0578 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/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/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/tslib.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/tslib.d.ts new file mode 100644 index 0000000..9c27e05 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/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/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/tslib.es6.html b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/tslib.es6.html new file mode 100644 index 0000000..b122e41 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/tslib.es6.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/tslib.es6.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/tslib.es6.js new file mode 100644 index 0000000..67ba5c5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/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/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/tslib.es6.mjs b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/tslib.es6.mjs new file mode 100644 index 0000000..c17990a --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/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/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/tslib.html b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/tslib.html new file mode 100644 index 0000000..44c9ba5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/tslib.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/tslib.js b/api.hyungi.net/node_modules/@peculiar/asn1-schema/node_modules/tslib/tslib.js new file mode 100644 index 0000000..b6509f7 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/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/api.hyungi.net/node_modules/@peculiar/asn1-schema/package.json b/api.hyungi.net/node_modules/@peculiar/asn1-schema/package.json new file mode 100644 index 0000000..176f420 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-schema/package.json @@ -0,0 +1,56 @@ +{ + "name": "@peculiar/asn1-schema", + "version": "2.3.15", + "description": "Decorators for ASN.1 schemas building", + "files": [ + "build/**/*.{js,d.ts}", + "LICENSE", + "README.md" + ], + "bugs": { + "url": "https://github.com/PeculiarVentures/asn1-schema/issues" + }, + "homepage": "https://github.com/PeculiarVentures/asn1-schema/tree/master/packages/schema#readme", + "keywords": [ + "asn", + "serialize", + "parse", + "convert", + "decorator" + ], + "license": "MIT", + "author": "PeculiarVentures, LLC", + "main": "build/cjs/index.js", + "module": "build/es2015/index.js", + "types": "build/types/index.d.ts", + "publishConfig": { + "access": "public" + }, + "scripts": { + "test": "mocha", + "clear": "rimraf build", + "build": "npm run build:module && npm run build:types", + "build:module": "npm run build:cjs && npm run build:es2015", + "build:cjs": "tsc -p tsconfig.compile.json --removeComments --module commonjs --outDir build/cjs", + "build:es2015": "tsc -p tsconfig.compile.json --removeComments --module ES2015 --outDir build/es2015", + "prebuild:types": "rimraf build/types", + "build:types": "tsc -p tsconfig.compile.json --outDir build/types --declaration --emitDeclarationOnly", + "rebuild": "npm run clear && npm run build" + }, + "dependencies": { + "asn1js": "^3.0.5", + "pvtsutils": "^1.3.6", + "tslib": "^2.8.1" + }, + "contributors": [ + { + "email": "rmh@unmitigatedrisk.com", + "name": "Ryan Hurst" + }, + { + "email": "microshine@mail.ru", + "name": "Miroshin Stepan" + } + ], + "gitHead": "b6c7130efa9bc3ee5e2ea1da5d01aede5182921f" +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/LICENSE b/api.hyungi.net/node_modules/@peculiar/asn1-x509/LICENSE new file mode 100644 index 0000000..6f9ec13 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/README.md b/api.hyungi.net/node_modules/@peculiar/asn1-x509/README.md new file mode 100644 index 0000000..b908010 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/README.md @@ -0,0 +1,13 @@ +# `@peculiar/asn1-x509` + +[![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat)](https://raw.githubusercontent.com/PeculiarVentures/asn1-schema/master/packages/x509/LICENSE.md) +[![npm version](https://badge.fury.io/js/%40peculiar%2Fasn1-x509.svg)](https://badge.fury.io/js/%40peculiar%2Fasn1-x509) + +[![NPM](https://nodei.co/npm/@peculiar/asn1-x509.png)](https://nodei.co/npm/@peculiar/asn1-x509/) + +[RFC 5280](https://tools.ietf.org/html/rfc5280) Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile. + + +## List of links + +- [EntrustVersionInfo](http://ftp.gnome.org/mirror/archive/ftp.sunet.se/pub/security/dfnpca/docs/misc/Entrust/directory.pdf) extension \ No newline at end of file diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/algorithm_identifier.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/algorithm_identifier.js new file mode 100644 index 0000000..bd5271e --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/algorithm_identifier.js @@ -0,0 +1,32 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AlgorithmIdentifier = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const pvtsutils = require("pvtsutils"); +class AlgorithmIdentifier { + constructor(params = {}) { + this.algorithm = ""; + Object.assign(this, params); + } + isEqual(data) { + return (data instanceof AlgorithmIdentifier && + data.algorithm == this.algorithm && + ((data.parameters && + this.parameters && + pvtsutils.isEqual(data.parameters, this.parameters)) || + data.parameters === this.parameters)); + } +} +exports.AlgorithmIdentifier = AlgorithmIdentifier; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_1.AsnPropTypes.ObjectIdentifier, + }) +], AlgorithmIdentifier.prototype, "algorithm", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_1.AsnPropTypes.Any, + optional: true, + }) +], AlgorithmIdentifier.prototype, "parameters", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/attribute.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/attribute.js new file mode 100644 index 0000000..bdb2e44 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/attribute.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Attribute = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +class Attribute { + constructor(params = {}) { + this.type = ""; + this.values = []; + Object.assign(this, params); + } +} +exports.Attribute = Attribute; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.ObjectIdentifier }) +], Attribute.prototype, "type", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Any, repeated: "set" }) +], Attribute.prototype, "values", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/certificate.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/certificate.js new file mode 100644 index 0000000..0f54afb --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/certificate.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Certificate = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const algorithm_identifier_1 = require("./algorithm_identifier"); +const tbs_certificate_1 = require("./tbs_certificate"); +class Certificate { + constructor(params = {}) { + this.tbsCertificate = new tbs_certificate_1.TBSCertificate(); + this.signatureAlgorithm = new algorithm_identifier_1.AlgorithmIdentifier(); + this.signatureValue = new ArrayBuffer(0); + Object.assign(this, params); + } +} +exports.Certificate = Certificate; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: tbs_certificate_1.TBSCertificate }) +], Certificate.prototype, "tbsCertificate", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: algorithm_identifier_1.AlgorithmIdentifier }) +], Certificate.prototype, "signatureAlgorithm", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.BitString }) +], Certificate.prototype, "signatureValue", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/certificate_list.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/certificate_list.js new file mode 100644 index 0000000..34c4bcf --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/certificate_list.js @@ -0,0 +1,25 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CertificateList = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const algorithm_identifier_1 = require("./algorithm_identifier"); +const tbs_cert_list_1 = require("./tbs_cert_list"); +class CertificateList { + constructor(params = {}) { + this.tbsCertList = new tbs_cert_list_1.TBSCertList(); + this.signatureAlgorithm = new algorithm_identifier_1.AlgorithmIdentifier(); + this.signature = new ArrayBuffer(0); + Object.assign(this, params); + } +} +exports.CertificateList = CertificateList; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: tbs_cert_list_1.TBSCertList }) +], CertificateList.prototype, "tbsCertList", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: algorithm_identifier_1.AlgorithmIdentifier }) +], CertificateList.prototype, "signatureAlgorithm", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.BitString }) +], CertificateList.prototype, "signature", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extension.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extension.js new file mode 100644 index 0000000..a99f910 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extension.js @@ -0,0 +1,38 @@ +"use strict"; +var Extensions_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Extensions = exports.Extension = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +class Extension { + constructor(params = {}) { + this.extnID = ""; + this.critical = Extension.CRITICAL; + this.extnValue = new asn1_schema_1.OctetString(); + Object.assign(this, params); + } +} +exports.Extension = Extension; +Extension.CRITICAL = false; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.ObjectIdentifier }) +], Extension.prototype, "extnID", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_1.AsnPropTypes.Boolean, + defaultValue: Extension.CRITICAL, + }) +], Extension.prototype, "critical", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.OctetString }) +], Extension.prototype, "extnValue", void 0); +let Extensions = Extensions_1 = class Extensions extends asn1_schema_1.AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, Extensions_1.prototype); + } +}; +exports.Extensions = Extensions; +exports.Extensions = Extensions = Extensions_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence, itemType: Extension }) +], Extensions); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/authority_information_access.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/authority_information_access.js new file mode 100644 index 0000000..39d4202 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/authority_information_access.js @@ -0,0 +1,33 @@ +"use strict"; +var AuthorityInfoAccessSyntax_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AuthorityInfoAccessSyntax = exports.AccessDescription = exports.id_pe_authorityInfoAccess = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const general_name_1 = require("../general_name"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_pe_authorityInfoAccess = `${object_identifiers_1.id_pe}.1`; +class AccessDescription { + constructor(params = {}) { + this.accessMethod = ""; + this.accessLocation = new general_name_1.GeneralName(); + Object.assign(this, params); + } +} +exports.AccessDescription = AccessDescription; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.ObjectIdentifier }) +], AccessDescription.prototype, "accessMethod", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: general_name_1.GeneralName }) +], AccessDescription.prototype, "accessLocation", void 0); +let AuthorityInfoAccessSyntax = AuthorityInfoAccessSyntax_1 = class AuthorityInfoAccessSyntax extends asn1_schema_1.AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, AuthorityInfoAccessSyntax_1.prototype); + } +}; +exports.AuthorityInfoAccessSyntax = AuthorityInfoAccessSyntax; +exports.AuthorityInfoAccessSyntax = AuthorityInfoAccessSyntax = AuthorityInfoAccessSyntax_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence, itemType: AccessDescription }) +], AuthorityInfoAccessSyntax); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/authority_key_identifier.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/authority_key_identifier.js new file mode 100644 index 0000000..ac14489 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/authority_key_identifier.js @@ -0,0 +1,34 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.AuthorityKeyIdentifier = exports.KeyIdentifier = exports.id_ce_authorityKeyIdentifier = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const general_name_1 = require("../general_name"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_authorityKeyIdentifier = `${object_identifiers_1.id_ce}.35`; +class KeyIdentifier extends asn1_schema_1.OctetString { +} +exports.KeyIdentifier = KeyIdentifier; +class AuthorityKeyIdentifier { + constructor(params = {}) { + if (params) { + Object.assign(this, params); + } + } +} +exports.AuthorityKeyIdentifier = AuthorityKeyIdentifier; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: KeyIdentifier, context: 0, optional: true, implicit: true }) +], AuthorityKeyIdentifier.prototype, "keyIdentifier", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: general_name_1.GeneralName, context: 1, optional: true, implicit: true, repeated: "sequence" }) +], AuthorityKeyIdentifier.prototype, "authorityCertIssuer", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_1.AsnPropTypes.Integer, + context: 2, + optional: true, + implicit: true, + converter: asn1_schema_1.AsnIntegerArrayBufferConverter, + }) +], AuthorityKeyIdentifier.prototype, "authorityCertSerialNumber", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/basic_constraints.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/basic_constraints.js new file mode 100644 index 0000000..19037de --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/basic_constraints.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BasicConstraints = exports.id_ce_basicConstraints = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_basicConstraints = `${object_identifiers_1.id_ce}.19`; +class BasicConstraints { + constructor(params = {}) { + this.cA = false; + Object.assign(this, params); + } +} +exports.BasicConstraints = BasicConstraints; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Boolean, defaultValue: false }) +], BasicConstraints.prototype, "cA", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], BasicConstraints.prototype, "pathLenConstraint", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/certificate_issuer.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/certificate_issuer.js new file mode 100644 index 0000000..6b61edc --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/certificate_issuer.js @@ -0,0 +1,19 @@ +"use strict"; +var CertificateIssuer_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CertificateIssuer = exports.id_ce_certificateIssuer = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const general_names_1 = require("../general_names"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_certificateIssuer = `${object_identifiers_1.id_ce}.29`; +let CertificateIssuer = CertificateIssuer_1 = class CertificateIssuer extends general_names_1.GeneralNames { + constructor(items) { + super(items); + Object.setPrototypeOf(this, CertificateIssuer_1.prototype); + } +}; +exports.CertificateIssuer = CertificateIssuer; +exports.CertificateIssuer = CertificateIssuer = CertificateIssuer_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence }) +], CertificateIssuer); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/certificate_policies.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/certificate_policies.js new file mode 100644 index 0000000..5c859cb --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/certificate_policies.js @@ -0,0 +1,111 @@ +"use strict"; +var CertificatePolicies_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CertificatePolicies = exports.PolicyInformation = exports.PolicyQualifierInfo = exports.Qualifier = exports.UserNotice = exports.NoticeReference = exports.DisplayText = exports.id_ce_certificatePolicies_anyPolicy = exports.id_ce_certificatePolicies = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_certificatePolicies = `${object_identifiers_1.id_ce}.32`; +exports.id_ce_certificatePolicies_anyPolicy = `${exports.id_ce_certificatePolicies}.0`; +let DisplayText = class DisplayText { + constructor(params = {}) { + Object.assign(this, params); + } + toString() { + return this.ia5String || this.visibleString || this.bmpString || this.utf8String || ""; + } +}; +exports.DisplayText = DisplayText; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.IA5String }) +], DisplayText.prototype, "ia5String", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.VisibleString }) +], DisplayText.prototype, "visibleString", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.BmpString }) +], DisplayText.prototype, "bmpString", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Utf8String }) +], DisplayText.prototype, "utf8String", void 0); +exports.DisplayText = DisplayText = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Choice }) +], DisplayText); +class NoticeReference { + constructor(params = {}) { + this.organization = new DisplayText(); + this.noticeNumbers = []; + Object.assign(this, params); + } +} +exports.NoticeReference = NoticeReference; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: DisplayText }) +], NoticeReference.prototype, "organization", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, repeated: "sequence" }) +], NoticeReference.prototype, "noticeNumbers", void 0); +class UserNotice { + constructor(params = {}) { + Object.assign(this, params); + } +} +exports.UserNotice = UserNotice; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: NoticeReference, optional: true }) +], UserNotice.prototype, "noticeRef", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: DisplayText, optional: true }) +], UserNotice.prototype, "explicitText", void 0); +let Qualifier = class Qualifier { + constructor(params = {}) { + Object.assign(this, params); + } +}; +exports.Qualifier = Qualifier; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.IA5String }) +], Qualifier.prototype, "cPSuri", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: UserNotice }) +], Qualifier.prototype, "userNotice", void 0); +exports.Qualifier = Qualifier = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Choice }) +], Qualifier); +class PolicyQualifierInfo { + constructor(params = {}) { + this.policyQualifierId = ""; + this.qualifier = new ArrayBuffer(0); + Object.assign(this, params); + } +} +exports.PolicyQualifierInfo = PolicyQualifierInfo; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.ObjectIdentifier }) +], PolicyQualifierInfo.prototype, "policyQualifierId", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Any }) +], PolicyQualifierInfo.prototype, "qualifier", void 0); +class PolicyInformation { + constructor(params = {}) { + this.policyIdentifier = ""; + Object.assign(this, params); + } +} +exports.PolicyInformation = PolicyInformation; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.ObjectIdentifier }) +], PolicyInformation.prototype, "policyIdentifier", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: PolicyQualifierInfo, repeated: "sequence", optional: true }) +], PolicyInformation.prototype, "policyQualifiers", void 0); +let CertificatePolicies = CertificatePolicies_1 = class CertificatePolicies extends asn1_schema_1.AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, CertificatePolicies_1.prototype); + } +}; +exports.CertificatePolicies = CertificatePolicies; +exports.CertificatePolicies = CertificatePolicies = CertificatePolicies_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence, itemType: PolicyInformation }) +], CertificatePolicies); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_delta_indicator.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_delta_indicator.js new file mode 100644 index 0000000..88aeb7a --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_delta_indicator.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.BaseCRLNumber = exports.id_ce_deltaCRLIndicator = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const object_identifiers_1 = require("../object_identifiers"); +const crl_number_1 = require("./crl_number"); +exports.id_ce_deltaCRLIndicator = `${object_identifiers_1.id_ce}.27`; +let BaseCRLNumber = class BaseCRLNumber extends crl_number_1.CRLNumber { +}; +exports.BaseCRLNumber = BaseCRLNumber; +exports.BaseCRLNumber = BaseCRLNumber = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Choice }) +], BaseCRLNumber); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_distribution_points.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_distribution_points.js new file mode 100644 index 0000000..54548dd --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_distribution_points.js @@ -0,0 +1,100 @@ +"use strict"; +var CRLDistributionPoints_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CRLDistributionPoints = exports.DistributionPoint = exports.DistributionPointName = exports.Reason = exports.ReasonFlags = exports.id_ce_cRLDistributionPoints = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const name_1 = require("../name"); +const general_name_1 = require("../general_name"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_cRLDistributionPoints = `${object_identifiers_1.id_ce}.31`; +var ReasonFlags; +(function (ReasonFlags) { + ReasonFlags[ReasonFlags["unused"] = 1] = "unused"; + ReasonFlags[ReasonFlags["keyCompromise"] = 2] = "keyCompromise"; + ReasonFlags[ReasonFlags["cACompromise"] = 4] = "cACompromise"; + ReasonFlags[ReasonFlags["affiliationChanged"] = 8] = "affiliationChanged"; + ReasonFlags[ReasonFlags["superseded"] = 16] = "superseded"; + ReasonFlags[ReasonFlags["cessationOfOperation"] = 32] = "cessationOfOperation"; + ReasonFlags[ReasonFlags["certificateHold"] = 64] = "certificateHold"; + ReasonFlags[ReasonFlags["privilegeWithdrawn"] = 128] = "privilegeWithdrawn"; + ReasonFlags[ReasonFlags["aACompromise"] = 256] = "aACompromise"; +})(ReasonFlags || (exports.ReasonFlags = ReasonFlags = {})); +class Reason extends asn1_schema_1.BitString { + toJSON() { + const res = []; + const flags = this.toNumber(); + if (flags & ReasonFlags.aACompromise) { + res.push("aACompromise"); + } + if (flags & ReasonFlags.affiliationChanged) { + res.push("affiliationChanged"); + } + if (flags & ReasonFlags.cACompromise) { + res.push("cACompromise"); + } + if (flags & ReasonFlags.certificateHold) { + res.push("certificateHold"); + } + if (flags & ReasonFlags.cessationOfOperation) { + res.push("cessationOfOperation"); + } + if (flags & ReasonFlags.keyCompromise) { + res.push("keyCompromise"); + } + if (flags & ReasonFlags.privilegeWithdrawn) { + res.push("privilegeWithdrawn"); + } + if (flags & ReasonFlags.superseded) { + res.push("superseded"); + } + if (flags & ReasonFlags.unused) { + res.push("unused"); + } + return res; + } + toString() { + return `[${this.toJSON().join(", ")}]`; + } +} +exports.Reason = Reason; +let DistributionPointName = class DistributionPointName { + constructor(params = {}) { + Object.assign(this, params); + } +}; +exports.DistributionPointName = DistributionPointName; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: general_name_1.GeneralName, context: 0, repeated: "sequence", implicit: true }) +], DistributionPointName.prototype, "fullName", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: name_1.RelativeDistinguishedName, context: 1, implicit: true }) +], DistributionPointName.prototype, "nameRelativeToCRLIssuer", void 0); +exports.DistributionPointName = DistributionPointName = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Choice }) +], DistributionPointName); +class DistributionPoint { + constructor(params = {}) { + Object.assign(this, params); + } +} +exports.DistributionPoint = DistributionPoint; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: DistributionPointName, context: 0, optional: true }) +], DistributionPoint.prototype, "distributionPoint", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: Reason, context: 1, optional: true, implicit: true }) +], DistributionPoint.prototype, "reasons", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: general_name_1.GeneralName, context: 2, optional: true, repeated: "sequence", implicit: true }) +], DistributionPoint.prototype, "cRLIssuer", void 0); +let CRLDistributionPoints = CRLDistributionPoints_1 = class CRLDistributionPoints extends asn1_schema_1.AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, CRLDistributionPoints_1.prototype); + } +}; +exports.CRLDistributionPoints = CRLDistributionPoints; +exports.CRLDistributionPoints = CRLDistributionPoints = CRLDistributionPoints_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence, itemType: DistributionPoint }) +], CRLDistributionPoints); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_freshest.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_freshest.js new file mode 100644 index 0000000..0122390 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_freshest.js @@ -0,0 +1,19 @@ +"use strict"; +var FreshestCRL_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FreshestCRL = exports.id_ce_freshestCRL = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const object_identifiers_1 = require("../object_identifiers"); +const crl_distribution_points_1 = require("./crl_distribution_points"); +exports.id_ce_freshestCRL = `${object_identifiers_1.id_ce}.46`; +let FreshestCRL = FreshestCRL_1 = class FreshestCRL extends crl_distribution_points_1.CRLDistributionPoints { + constructor(items) { + super(items); + Object.setPrototypeOf(this, FreshestCRL_1.prototype); + } +}; +exports.FreshestCRL = FreshestCRL; +exports.FreshestCRL = FreshestCRL = FreshestCRL_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence, itemType: crl_distribution_points_1.DistributionPoint }) +], FreshestCRL); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_issuing_distribution_point.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_issuing_distribution_point.js new file mode 100644 index 0000000..f56e523 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_issuing_distribution_point.js @@ -0,0 +1,58 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IssuingDistributionPoint = exports.id_ce_issuingDistributionPoint = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const crl_distribution_points_1 = require("./crl_distribution_points"); +const object_identifiers_1 = require("../object_identifiers"); +const asn1_schema_2 = require("@peculiar/asn1-schema"); +exports.id_ce_issuingDistributionPoint = `${object_identifiers_1.id_ce}.28`; +class IssuingDistributionPoint { + constructor(params = {}) { + this.onlyContainsUserCerts = IssuingDistributionPoint.ONLY; + this.onlyContainsCACerts = IssuingDistributionPoint.ONLY; + this.indirectCRL = IssuingDistributionPoint.ONLY; + this.onlyContainsAttributeCerts = IssuingDistributionPoint.ONLY; + Object.assign(this, params); + } +} +exports.IssuingDistributionPoint = IssuingDistributionPoint; +IssuingDistributionPoint.ONLY = false; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: crl_distribution_points_1.DistributionPointName, context: 0, optional: true }) +], IssuingDistributionPoint.prototype, "distributionPoint", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_2.AsnPropTypes.Boolean, + context: 1, + defaultValue: IssuingDistributionPoint.ONLY, + implicit: true, + }) +], IssuingDistributionPoint.prototype, "onlyContainsUserCerts", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_2.AsnPropTypes.Boolean, + context: 2, + defaultValue: IssuingDistributionPoint.ONLY, + implicit: true, + }) +], IssuingDistributionPoint.prototype, "onlyContainsCACerts", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: crl_distribution_points_1.Reason, context: 3, optional: true, implicit: true }) +], IssuingDistributionPoint.prototype, "onlySomeReasons", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_2.AsnPropTypes.Boolean, + context: 4, + defaultValue: IssuingDistributionPoint.ONLY, + implicit: true, + }) +], IssuingDistributionPoint.prototype, "indirectCRL", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_2.AsnPropTypes.Boolean, + context: 5, + defaultValue: IssuingDistributionPoint.ONLY, + implicit: true, + }) +], IssuingDistributionPoint.prototype, "onlyContainsAttributeCerts", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_number.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_number.js new file mode 100644 index 0000000..556be35 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_number.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CRLNumber = exports.id_ce_cRLNumber = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_cRLNumber = `${object_identifiers_1.id_ce}.20`; +let CRLNumber = class CRLNumber { + constructor(value = 0) { + this.value = value; + } +}; +exports.CRLNumber = CRLNumber; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer }) +], CRLNumber.prototype, "value", void 0); +exports.CRLNumber = CRLNumber = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Choice }) +], CRLNumber); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_reason.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_reason.js new file mode 100644 index 0000000..7b917e7 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/crl_reason.js @@ -0,0 +1,39 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.CRLReason = exports.CRLReasons = exports.id_ce_cRLReasons = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_cRLReasons = `${object_identifiers_1.id_ce}.21`; +var CRLReasons; +(function (CRLReasons) { + CRLReasons[CRLReasons["unspecified"] = 0] = "unspecified"; + CRLReasons[CRLReasons["keyCompromise"] = 1] = "keyCompromise"; + CRLReasons[CRLReasons["cACompromise"] = 2] = "cACompromise"; + CRLReasons[CRLReasons["affiliationChanged"] = 3] = "affiliationChanged"; + CRLReasons[CRLReasons["superseded"] = 4] = "superseded"; + CRLReasons[CRLReasons["cessationOfOperation"] = 5] = "cessationOfOperation"; + CRLReasons[CRLReasons["certificateHold"] = 6] = "certificateHold"; + CRLReasons[CRLReasons["removeFromCRL"] = 8] = "removeFromCRL"; + CRLReasons[CRLReasons["privilegeWithdrawn"] = 9] = "privilegeWithdrawn"; + CRLReasons[CRLReasons["aACompromise"] = 10] = "aACompromise"; +})(CRLReasons || (exports.CRLReasons = CRLReasons = {})); +let CRLReason = class CRLReason { + constructor(reason = CRLReasons.unspecified) { + this.reason = CRLReasons.unspecified; + this.reason = reason; + } + toJSON() { + return CRLReasons[this.reason]; + } + toString() { + return this.toJSON(); + } +}; +exports.CRLReason = CRLReason; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Enumerated }) +], CRLReason.prototype, "reason", void 0); +exports.CRLReason = CRLReason = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Choice }) +], CRLReason); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/entrust_version_info.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/entrust_version_info.js new file mode 100644 index 0000000..821b4a7 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/entrust_version_info.js @@ -0,0 +1,46 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EntrustVersionInfo = exports.EntrustInfo = exports.EntrustInfoFlags = exports.id_entrust_entrustVersInfo = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +exports.id_entrust_entrustVersInfo = "1.2.840.113533.7.65.0"; +var EntrustInfoFlags; +(function (EntrustInfoFlags) { + EntrustInfoFlags[EntrustInfoFlags["keyUpdateAllowed"] = 1] = "keyUpdateAllowed"; + EntrustInfoFlags[EntrustInfoFlags["newExtensions"] = 2] = "newExtensions"; + EntrustInfoFlags[EntrustInfoFlags["pKIXCertificate"] = 4] = "pKIXCertificate"; +})(EntrustInfoFlags || (exports.EntrustInfoFlags = EntrustInfoFlags = {})); +class EntrustInfo extends asn1_schema_1.BitString { + toJSON() { + const res = []; + const flags = this.toNumber(); + if (flags & EntrustInfoFlags.pKIXCertificate) { + res.push("pKIXCertificate"); + } + if (flags & EntrustInfoFlags.newExtensions) { + res.push("newExtensions"); + } + if (flags & EntrustInfoFlags.keyUpdateAllowed) { + res.push("keyUpdateAllowed"); + } + return res; + } + toString() { + return `[${this.toJSON().join(", ")}]`; + } +} +exports.EntrustInfo = EntrustInfo; +class EntrustVersionInfo { + constructor(params = {}) { + this.entrustVers = ""; + this.entrustInfoFlags = new EntrustInfo(); + Object.assign(this, params); + } +} +exports.EntrustVersionInfo = EntrustVersionInfo; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.GeneralString }) +], EntrustVersionInfo.prototype, "entrustVers", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: EntrustInfo }) +], EntrustVersionInfo.prototype, "entrustInfoFlags", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/extended_key_usage.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/extended_key_usage.js new file mode 100644 index 0000000..252552e --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/extended_key_usage.js @@ -0,0 +1,25 @@ +"use strict"; +var ExtendedKeyUsage_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.id_kp_OCSPSigning = exports.id_kp_timeStamping = exports.id_kp_emailProtection = exports.id_kp_codeSigning = exports.id_kp_clientAuth = exports.id_kp_serverAuth = exports.anyExtendedKeyUsage = exports.ExtendedKeyUsage = exports.id_ce_extKeyUsage = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_extKeyUsage = `${object_identifiers_1.id_ce}.37`; +let ExtendedKeyUsage = ExtendedKeyUsage_1 = class ExtendedKeyUsage extends asn1_schema_1.AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, ExtendedKeyUsage_1.prototype); + } +}; +exports.ExtendedKeyUsage = ExtendedKeyUsage; +exports.ExtendedKeyUsage = ExtendedKeyUsage = ExtendedKeyUsage_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence, itemType: asn1_schema_1.AsnPropTypes.ObjectIdentifier }) +], ExtendedKeyUsage); +exports.anyExtendedKeyUsage = `${exports.id_ce_extKeyUsage}.0`; +exports.id_kp_serverAuth = `${object_identifiers_1.id_kp}.1`; +exports.id_kp_clientAuth = `${object_identifiers_1.id_kp}.2`; +exports.id_kp_codeSigning = `${object_identifiers_1.id_kp}.3`; +exports.id_kp_emailProtection = `${object_identifiers_1.id_kp}.4`; +exports.id_kp_timeStamping = `${object_identifiers_1.id_kp}.8`; +exports.id_kp_OCSPSigning = `${object_identifiers_1.id_kp}.9`; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/index.js new file mode 100644 index 0000000..9ac3d99 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/index.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./authority_information_access"), exports); +tslib_1.__exportStar(require("./authority_key_identifier"), exports); +tslib_1.__exportStar(require("./basic_constraints"), exports); +tslib_1.__exportStar(require("./certificate_issuer"), exports); +tslib_1.__exportStar(require("./certificate_policies"), exports); +tslib_1.__exportStar(require("./crl_delta_indicator"), exports); +tslib_1.__exportStar(require("./crl_distribution_points"), exports); +tslib_1.__exportStar(require("./crl_freshest"), exports); +tslib_1.__exportStar(require("./crl_issuing_distribution_point"), exports); +tslib_1.__exportStar(require("./crl_number"), exports); +tslib_1.__exportStar(require("./crl_reason"), exports); +tslib_1.__exportStar(require("./extended_key_usage"), exports); +tslib_1.__exportStar(require("./inhibit_any_policy"), exports); +tslib_1.__exportStar(require("./invalidity_date"), exports); +tslib_1.__exportStar(require("./issuer_alternative_name"), exports); +tslib_1.__exportStar(require("./key_usage"), exports); +tslib_1.__exportStar(require("./name_constraints"), exports); +tslib_1.__exportStar(require("./policy_constraints"), exports); +tslib_1.__exportStar(require("./policy_mappings"), exports); +tslib_1.__exportStar(require("./subject_alternative_name"), exports); +tslib_1.__exportStar(require("./subject_directory_attributes"), exports); +tslib_1.__exportStar(require("./subject_key_identifier"), exports); +tslib_1.__exportStar(require("./private_key_usage_period"), exports); +tslib_1.__exportStar(require("./entrust_version_info"), exports); +tslib_1.__exportStar(require("./subject_info_access"), exports); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/inhibit_any_policy.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/inhibit_any_policy.js new file mode 100644 index 0000000..a0497af --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/inhibit_any_policy.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InhibitAnyPolicy = exports.id_ce_inhibitAnyPolicy = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_inhibitAnyPolicy = `${object_identifiers_1.id_ce}.54`; +let InhibitAnyPolicy = class InhibitAnyPolicy { + constructor(value = new ArrayBuffer(0)) { + this.value = value; + } +}; +exports.InhibitAnyPolicy = InhibitAnyPolicy; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], InhibitAnyPolicy.prototype, "value", void 0); +exports.InhibitAnyPolicy = InhibitAnyPolicy = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Choice }) +], InhibitAnyPolicy); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/invalidity_date.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/invalidity_date.js new file mode 100644 index 0000000..d0e26b2 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/invalidity_date.js @@ -0,0 +1,22 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.InvalidityDate = exports.id_ce_invalidityDate = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_invalidityDate = `${object_identifiers_1.id_ce}.24`; +let InvalidityDate = class InvalidityDate { + constructor(value) { + this.value = new Date(); + if (value) { + this.value = value; + } + } +}; +exports.InvalidityDate = InvalidityDate; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.GeneralizedTime }) +], InvalidityDate.prototype, "value", void 0); +exports.InvalidityDate = InvalidityDate = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Choice }) +], InvalidityDate); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/issuer_alternative_name.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/issuer_alternative_name.js new file mode 100644 index 0000000..8d0691c --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/issuer_alternative_name.js @@ -0,0 +1,19 @@ +"use strict"; +var IssueAlternativeName_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IssueAlternativeName = exports.id_ce_issuerAltName = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const general_names_1 = require("../general_names"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_issuerAltName = `${object_identifiers_1.id_ce}.18`; +let IssueAlternativeName = IssueAlternativeName_1 = class IssueAlternativeName extends general_names_1.GeneralNames { + constructor(items) { + super(items); + Object.setPrototypeOf(this, IssueAlternativeName_1.prototype); + } +}; +exports.IssueAlternativeName = IssueAlternativeName; +exports.IssueAlternativeName = IssueAlternativeName = IssueAlternativeName_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence }) +], IssueAlternativeName); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/key_usage.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/key_usage.js new file mode 100644 index 0000000..3b42d58 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/key_usage.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.KeyUsage = exports.KeyUsageFlags = exports.id_ce_keyUsage = void 0; +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_keyUsage = `${object_identifiers_1.id_ce}.15`; +var KeyUsageFlags; +(function (KeyUsageFlags) { + KeyUsageFlags[KeyUsageFlags["digitalSignature"] = 1] = "digitalSignature"; + KeyUsageFlags[KeyUsageFlags["nonRepudiation"] = 2] = "nonRepudiation"; + KeyUsageFlags[KeyUsageFlags["keyEncipherment"] = 4] = "keyEncipherment"; + KeyUsageFlags[KeyUsageFlags["dataEncipherment"] = 8] = "dataEncipherment"; + KeyUsageFlags[KeyUsageFlags["keyAgreement"] = 16] = "keyAgreement"; + KeyUsageFlags[KeyUsageFlags["keyCertSign"] = 32] = "keyCertSign"; + KeyUsageFlags[KeyUsageFlags["cRLSign"] = 64] = "cRLSign"; + KeyUsageFlags[KeyUsageFlags["encipherOnly"] = 128] = "encipherOnly"; + KeyUsageFlags[KeyUsageFlags["decipherOnly"] = 256] = "decipherOnly"; +})(KeyUsageFlags || (exports.KeyUsageFlags = KeyUsageFlags = {})); +class KeyUsage extends asn1_schema_1.BitString { + toJSON() { + const flag = this.toNumber(); + const res = []; + if (flag & KeyUsageFlags.cRLSign) { + res.push("crlSign"); + } + if (flag & KeyUsageFlags.dataEncipherment) { + res.push("dataEncipherment"); + } + if (flag & KeyUsageFlags.decipherOnly) { + res.push("decipherOnly"); + } + if (flag & KeyUsageFlags.digitalSignature) { + res.push("digitalSignature"); + } + if (flag & KeyUsageFlags.encipherOnly) { + res.push("encipherOnly"); + } + if (flag & KeyUsageFlags.keyAgreement) { + res.push("keyAgreement"); + } + if (flag & KeyUsageFlags.keyCertSign) { + res.push("keyCertSign"); + } + if (flag & KeyUsageFlags.keyEncipherment) { + res.push("keyEncipherment"); + } + if (flag & KeyUsageFlags.nonRepudiation) { + res.push("nonRepudiation"); + } + return res; + } + toString() { + return `[${this.toJSON().join(", ")}]`; + } +} +exports.KeyUsage = KeyUsage; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/name_constraints.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/name_constraints.js new file mode 100644 index 0000000..67417b2 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/name_constraints.js @@ -0,0 +1,48 @@ +"use strict"; +var GeneralSubtrees_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.NameConstraints = exports.GeneralSubtrees = exports.GeneralSubtree = exports.id_ce_nameConstraints = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const general_name_1 = require("../general_name"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_nameConstraints = `${object_identifiers_1.id_ce}.30`; +class GeneralSubtree { + constructor(params = {}) { + this.base = new general_name_1.GeneralName(); + this.minimum = 0; + Object.assign(this, params); + } +} +exports.GeneralSubtree = GeneralSubtree; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: general_name_1.GeneralName }) +], GeneralSubtree.prototype, "base", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, context: 0, defaultValue: 0, implicit: true }) +], GeneralSubtree.prototype, "minimum", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, context: 1, optional: true, implicit: true }) +], GeneralSubtree.prototype, "maximum", void 0); +let GeneralSubtrees = GeneralSubtrees_1 = class GeneralSubtrees extends asn1_schema_1.AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, GeneralSubtrees_1.prototype); + } +}; +exports.GeneralSubtrees = GeneralSubtrees; +exports.GeneralSubtrees = GeneralSubtrees = GeneralSubtrees_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence, itemType: GeneralSubtree }) +], GeneralSubtrees); +class NameConstraints { + constructor(params = {}) { + Object.assign(this, params); + } +} +exports.NameConstraints = NameConstraints; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: GeneralSubtrees, context: 0, optional: true, implicit: true }) +], NameConstraints.prototype, "permittedSubtrees", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: GeneralSubtrees, context: 1, optional: true, implicit: true }) +], NameConstraints.prototype, "excludedSubtrees", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/policy_constraints.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/policy_constraints.js new file mode 100644 index 0000000..afa4251 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/policy_constraints.js @@ -0,0 +1,31 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PolicyConstraints = exports.id_ce_policyConstraints = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_policyConstraints = `${object_identifiers_1.id_ce}.36`; +class PolicyConstraints { + constructor(params = {}) { + Object.assign(this, params); + } +} +exports.PolicyConstraints = PolicyConstraints; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_1.AsnPropTypes.Integer, + context: 0, + implicit: true, + optional: true, + converter: asn1_schema_1.AsnIntegerArrayBufferConverter, + }) +], PolicyConstraints.prototype, "requireExplicitPolicy", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_1.AsnPropTypes.Integer, + context: 1, + implicit: true, + optional: true, + converter: asn1_schema_1.AsnIntegerArrayBufferConverter, + }) +], PolicyConstraints.prototype, "inhibitPolicyMapping", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/policy_mappings.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/policy_mappings.js new file mode 100644 index 0000000..8772ec7 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/policy_mappings.js @@ -0,0 +1,32 @@ +"use strict"; +var PolicyMappings_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PolicyMappings = exports.PolicyMapping = exports.id_ce_policyMappings = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_policyMappings = `${object_identifiers_1.id_ce}.33`; +class PolicyMapping { + constructor(params = {}) { + this.issuerDomainPolicy = ""; + this.subjectDomainPolicy = ""; + Object.assign(this, params); + } +} +exports.PolicyMapping = PolicyMapping; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.ObjectIdentifier }) +], PolicyMapping.prototype, "issuerDomainPolicy", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.ObjectIdentifier }) +], PolicyMapping.prototype, "subjectDomainPolicy", void 0); +let PolicyMappings = PolicyMappings_1 = class PolicyMappings extends asn1_schema_1.AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, PolicyMappings_1.prototype); + } +}; +exports.PolicyMappings = PolicyMappings; +exports.PolicyMappings = PolicyMappings = PolicyMappings_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence, itemType: PolicyMapping }) +], PolicyMappings); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/private_key_usage_period.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/private_key_usage_period.js new file mode 100644 index 0000000..bad166e --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/private_key_usage_period.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PrivateKeyUsagePeriod = exports.id_ce_privateKeyUsagePeriod = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_privateKeyUsagePeriod = `${object_identifiers_1.id_ce}.16`; +class PrivateKeyUsagePeriod { + constructor(params = {}) { + Object.assign(this, params); + } +} +exports.PrivateKeyUsagePeriod = PrivateKeyUsagePeriod; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.GeneralizedTime, context: 0, implicit: true, optional: true }) +], PrivateKeyUsagePeriod.prototype, "notBefore", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.GeneralizedTime, context: 1, implicit: true, optional: true }) +], PrivateKeyUsagePeriod.prototype, "notAfter", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/subject_alternative_name.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/subject_alternative_name.js new file mode 100644 index 0000000..cb9a54e --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/subject_alternative_name.js @@ -0,0 +1,19 @@ +"use strict"; +var SubjectAlternativeName_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SubjectAlternativeName = exports.id_ce_subjectAltName = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const general_names_1 = require("../general_names"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_subjectAltName = `${object_identifiers_1.id_ce}.17`; +let SubjectAlternativeName = SubjectAlternativeName_1 = class SubjectAlternativeName extends general_names_1.GeneralNames { + constructor(items) { + super(items); + Object.setPrototypeOf(this, SubjectAlternativeName_1.prototype); + } +}; +exports.SubjectAlternativeName = SubjectAlternativeName; +exports.SubjectAlternativeName = SubjectAlternativeName = SubjectAlternativeName_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence }) +], SubjectAlternativeName); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/subject_directory_attributes.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/subject_directory_attributes.js new file mode 100644 index 0000000..8643782 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/subject_directory_attributes.js @@ -0,0 +1,19 @@ +"use strict"; +var SubjectDirectoryAttributes_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SubjectDirectoryAttributes = exports.id_ce_subjectDirectoryAttributes = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const attribute_1 = require("../attribute"); +const object_identifiers_1 = require("../object_identifiers"); +exports.id_ce_subjectDirectoryAttributes = `${object_identifiers_1.id_ce}.9`; +let SubjectDirectoryAttributes = SubjectDirectoryAttributes_1 = class SubjectDirectoryAttributes extends asn1_schema_1.AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, SubjectDirectoryAttributes_1.prototype); + } +}; +exports.SubjectDirectoryAttributes = SubjectDirectoryAttributes; +exports.SubjectDirectoryAttributes = SubjectDirectoryAttributes = SubjectDirectoryAttributes_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence, itemType: attribute_1.Attribute }) +], SubjectDirectoryAttributes); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/subject_info_access.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/subject_info_access.js new file mode 100644 index 0000000..a406af2 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/subject_info_access.js @@ -0,0 +1,19 @@ +"use strict"; +var SubjectInfoAccessSyntax_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SubjectInfoAccessSyntax = exports.id_pe_subjectInfoAccess = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const object_identifiers_1 = require("../object_identifiers"); +const authority_information_access_1 = require("./authority_information_access"); +exports.id_pe_subjectInfoAccess = `${object_identifiers_1.id_pe}.11`; +let SubjectInfoAccessSyntax = SubjectInfoAccessSyntax_1 = class SubjectInfoAccessSyntax extends asn1_schema_1.AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, SubjectInfoAccessSyntax_1.prototype); + } +}; +exports.SubjectInfoAccessSyntax = SubjectInfoAccessSyntax; +exports.SubjectInfoAccessSyntax = SubjectInfoAccessSyntax = SubjectInfoAccessSyntax_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence, itemType: authority_information_access_1.AccessDescription }) +], SubjectInfoAccessSyntax); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/subject_key_identifier.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/subject_key_identifier.js new file mode 100644 index 0000000..4070421 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/extensions/subject_key_identifier.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SubjectKeyIdentifier = exports.id_ce_subjectKeyIdentifier = void 0; +const object_identifiers_1 = require("../object_identifiers"); +const authority_key_identifier_1 = require("./authority_key_identifier"); +exports.id_ce_subjectKeyIdentifier = `${object_identifiers_1.id_ce}.14`; +class SubjectKeyIdentifier extends authority_key_identifier_1.KeyIdentifier { +} +exports.SubjectKeyIdentifier = SubjectKeyIdentifier; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/general_name.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/general_name.js new file mode 100644 index 0000000..d2c46af --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/general_name.js @@ -0,0 +1,79 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GeneralName = exports.EDIPartyName = exports.OtherName = exports.AsnIpConverter = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const ip_converter_1 = require("./ip_converter"); +const name_1 = require("./name"); +exports.AsnIpConverter = { + fromASN: (value) => ip_converter_1.IpConverter.toString(asn1_schema_1.AsnOctetStringConverter.fromASN(value)), + toASN: (value) => asn1_schema_1.AsnOctetStringConverter.toASN(ip_converter_1.IpConverter.fromString(value)), +}; +class OtherName { + constructor(params = {}) { + this.typeId = ""; + this.value = new ArrayBuffer(0); + Object.assign(this, params); + } +} +exports.OtherName = OtherName; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.ObjectIdentifier }) +], OtherName.prototype, "typeId", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Any, context: 0 }) +], OtherName.prototype, "value", void 0); +class EDIPartyName { + constructor(params = {}) { + this.partyName = new name_1.DirectoryString(); + Object.assign(this, params); + } +} +exports.EDIPartyName = EDIPartyName; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: name_1.DirectoryString, optional: true, context: 0, implicit: true }) +], EDIPartyName.prototype, "nameAssigner", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: name_1.DirectoryString, context: 1, implicit: true }) +], EDIPartyName.prototype, "partyName", void 0); +let GeneralName = class GeneralName { + constructor(params = {}) { + Object.assign(this, params); + } +}; +exports.GeneralName = GeneralName; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: OtherName, context: 0, implicit: true }) +], GeneralName.prototype, "otherName", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.IA5String, context: 1, implicit: true }) +], GeneralName.prototype, "rfc822Name", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.IA5String, context: 2, implicit: true }) +], GeneralName.prototype, "dNSName", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Any, context: 3, implicit: true }) +], GeneralName.prototype, "x400Address", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: name_1.Name, context: 4, implicit: false }) +], GeneralName.prototype, "directoryName", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: EDIPartyName, context: 5 }) +], GeneralName.prototype, "ediPartyName", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.IA5String, context: 6, implicit: true }) +], GeneralName.prototype, "uniformResourceIdentifier", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_1.AsnPropTypes.OctetString, + context: 7, + implicit: true, + converter: exports.AsnIpConverter, + }) +], GeneralName.prototype, "iPAddress", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.ObjectIdentifier, context: 8, implicit: true }) +], GeneralName.prototype, "registeredID", void 0); +exports.GeneralName = GeneralName = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Choice }) +], GeneralName); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/general_names.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/general_names.js new file mode 100644 index 0000000..f5a0fc6 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/general_names.js @@ -0,0 +1,18 @@ +"use strict"; +var GeneralNames_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.GeneralNames = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const general_name_1 = require("./general_name"); +const asn1_schema_2 = require("@peculiar/asn1-schema"); +let GeneralNames = GeneralNames_1 = class GeneralNames extends asn1_schema_2.AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, GeneralNames_1.prototype); + } +}; +exports.GeneralNames = GeneralNames; +exports.GeneralNames = GeneralNames = GeneralNames_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence, itemType: general_name_1.GeneralName }) +], GeneralNames); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/index.js new file mode 100644 index 0000000..03e6cb5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/index.js @@ -0,0 +1,19 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const tslib_1 = require("tslib"); +tslib_1.__exportStar(require("./extensions"), exports); +tslib_1.__exportStar(require("./algorithm_identifier"), exports); +tslib_1.__exportStar(require("./attribute"), exports); +tslib_1.__exportStar(require("./certificate"), exports); +tslib_1.__exportStar(require("./certificate_list"), exports); +tslib_1.__exportStar(require("./extension"), exports); +tslib_1.__exportStar(require("./general_name"), exports); +tslib_1.__exportStar(require("./general_names"), exports); +tslib_1.__exportStar(require("./name"), exports); +tslib_1.__exportStar(require("./object_identifiers"), exports); +tslib_1.__exportStar(require("./subject_public_key_info"), exports); +tslib_1.__exportStar(require("./tbs_cert_list"), exports); +tslib_1.__exportStar(require("./tbs_certificate"), exports); +tslib_1.__exportStar(require("./time"), exports); +tslib_1.__exportStar(require("./types"), exports); +tslib_1.__exportStar(require("./validity"), exports); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/ip_converter.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/ip_converter.js new file mode 100644 index 0000000..2de26c6 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/ip_converter.js @@ -0,0 +1,177 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.IpConverter = void 0; +const pvtsutils_1 = require("pvtsutils"); +class IpConverter { + static isIPv4(ip) { + return /^(\d{1,3}\.){3}\d{1,3}$/.test(ip); + } + static parseIPv4(ip) { + const parts = ip.split("."); + if (parts.length !== 4) { + throw new Error("Invalid IPv4 address"); + } + return parts.map((part) => { + const num = parseInt(part, 10); + if (isNaN(num) || num < 0 || num > 255) { + throw new Error("Invalid IPv4 address part"); + } + return num; + }); + } + static parseIPv6(ip) { + const expandedIP = this.expandIPv6(ip); + const parts = expandedIP.split(":"); + if (parts.length !== 8) { + throw new Error("Invalid IPv6 address"); + } + return parts.reduce((bytes, part) => { + const num = parseInt(part, 16); + if (isNaN(num) || num < 0 || num > 0xffff) { + throw new Error("Invalid IPv6 address part"); + } + bytes.push((num >> 8) & 0xff); + bytes.push(num & 0xff); + return bytes; + }, []); + } + static expandIPv6(ip) { + if (!ip.includes("::")) { + return ip; + } + const parts = ip.split("::"); + if (parts.length > 2) { + throw new Error("Invalid IPv6 address"); + } + const left = parts[0] ? parts[0].split(":") : []; + const right = parts[1] ? parts[1].split(":") : []; + const missing = 8 - (left.length + right.length); + if (missing < 0) { + throw new Error("Invalid IPv6 address"); + } + return [...left, ...Array(missing).fill("0"), ...right].join(":"); + } + static formatIPv6(bytes) { + const parts = []; + for (let i = 0; i < 16; i += 2) { + parts.push(((bytes[i] << 8) | bytes[i + 1]).toString(16)); + } + return this.compressIPv6(parts.join(":")); + } + static compressIPv6(ip) { + const parts = ip.split(":"); + let longestZeroStart = -1; + let longestZeroLength = 0; + let currentZeroStart = -1; + let currentZeroLength = 0; + for (let i = 0; i < parts.length; i++) { + if (parts[i] === "0") { + if (currentZeroStart === -1) { + currentZeroStart = i; + } + currentZeroLength++; + } + else { + if (currentZeroLength > longestZeroLength) { + longestZeroStart = currentZeroStart; + longestZeroLength = currentZeroLength; + } + currentZeroStart = -1; + currentZeroLength = 0; + } + } + if (currentZeroLength > longestZeroLength) { + longestZeroStart = currentZeroStart; + longestZeroLength = currentZeroLength; + } + if (longestZeroLength > 1) { + const before = parts.slice(0, longestZeroStart).join(":"); + const after = parts.slice(longestZeroStart + longestZeroLength).join(":"); + return `${before}::${after}`; + } + return ip; + } + static parseCIDR(text) { + const [addr, prefixStr] = text.split("/"); + const prefix = parseInt(prefixStr, 10); + if (this.isIPv4(addr)) { + if (prefix < 0 || prefix > 32) { + throw new Error("Invalid IPv4 prefix length"); + } + return [this.parseIPv4(addr), prefix]; + } + else { + if (prefix < 0 || prefix > 128) { + throw new Error("Invalid IPv6 prefix length"); + } + return [this.parseIPv6(addr), prefix]; + } + } + static decodeIP(value) { + if (value.length === 64 && parseInt(value, 16) === 0) { + return "::/0"; + } + if (value.length !== 16) { + return value; + } + const mask = parseInt(value.slice(8), 16) + .toString(2) + .split("") + .reduce((a, k) => a + +k, 0); + let ip = value.slice(0, 8).replace(/(.{2})/g, (match) => `${parseInt(match, 16)}.`); + ip = ip.slice(0, -1); + return `${ip}/${mask}`; + } + static toString(buf) { + const uint8 = new Uint8Array(buf); + if (uint8.length === 4) { + return Array.from(uint8).join("."); + } + if (uint8.length === 16) { + return this.formatIPv6(uint8); + } + if (uint8.length === 8 || uint8.length === 32) { + const half = uint8.length / 2; + const addrBytes = uint8.slice(0, half); + const maskBytes = uint8.slice(half); + const isAllZeros = uint8.every((byte) => byte === 0); + if (isAllZeros) { + return uint8.length === 8 ? "0.0.0.0/0" : "::/0"; + } + const prefixLen = maskBytes.reduce((a, b) => a + (b.toString(2).match(/1/g) || []).length, 0); + if (uint8.length === 8) { + const addrStr = Array.from(addrBytes).join("."); + return `${addrStr}/${prefixLen}`; + } + else { + const addrStr = this.formatIPv6(addrBytes); + return `${addrStr}/${prefixLen}`; + } + } + return this.decodeIP(pvtsutils_1.Convert.ToHex(buf)); + } + static fromString(text) { + if (text.includes("/")) { + const [addr, prefix] = this.parseCIDR(text); + const maskBytes = new Uint8Array(addr.length); + let bitsLeft = prefix; + for (let i = 0; i < maskBytes.length; i++) { + if (bitsLeft >= 8) { + maskBytes[i] = 0xff; + bitsLeft -= 8; + } + else if (bitsLeft > 0) { + maskBytes[i] = 0xff << (8 - bitsLeft); + bitsLeft = 0; + } + } + const out = new Uint8Array(addr.length * 2); + out.set(addr, 0); + out.set(maskBytes, addr.length); + return out.buffer; + } + const bytes = this.isIPv4(text) ? this.parseIPv4(text) : this.parseIPv6(text); + return new Uint8Array(bytes).buffer; + } +} +exports.IpConverter = IpConverter; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/name.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/name.js new file mode 100644 index 0000000..f5c2565 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/name.js @@ -0,0 +1,102 @@ +"use strict"; +var RelativeDistinguishedName_1, RDNSequence_1, Name_1; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Name = exports.RDNSequence = exports.RelativeDistinguishedName = exports.AttributeTypeAndValue = exports.AttributeValue = exports.DirectoryString = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const pvtsutils_1 = require("pvtsutils"); +let DirectoryString = class DirectoryString { + constructor(params = {}) { + Object.assign(this, params); + } + toString() { + return (this.bmpString || + this.printableString || + this.teletexString || + this.universalString || + this.utf8String || + ""); + } +}; +exports.DirectoryString = DirectoryString; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.TeletexString }) +], DirectoryString.prototype, "teletexString", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.PrintableString }) +], DirectoryString.prototype, "printableString", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.UniversalString }) +], DirectoryString.prototype, "universalString", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Utf8String }) +], DirectoryString.prototype, "utf8String", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.BmpString }) +], DirectoryString.prototype, "bmpString", void 0); +exports.DirectoryString = DirectoryString = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Choice }) +], DirectoryString); +let AttributeValue = class AttributeValue extends DirectoryString { + constructor(params = {}) { + super(params); + Object.assign(this, params); + } + toString() { + return this.ia5String || (this.anyValue ? pvtsutils_1.Convert.ToHex(this.anyValue) : super.toString()); + } +}; +exports.AttributeValue = AttributeValue; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.IA5String }) +], AttributeValue.prototype, "ia5String", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Any }) +], AttributeValue.prototype, "anyValue", void 0); +exports.AttributeValue = AttributeValue = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Choice }) +], AttributeValue); +class AttributeTypeAndValue { + constructor(params = {}) { + this.type = ""; + this.value = new AttributeValue(); + Object.assign(this, params); + } +} +exports.AttributeTypeAndValue = AttributeTypeAndValue; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.ObjectIdentifier }) +], AttributeTypeAndValue.prototype, "type", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: AttributeValue }) +], AttributeTypeAndValue.prototype, "value", void 0); +let RelativeDistinguishedName = RelativeDistinguishedName_1 = class RelativeDistinguishedName extends asn1_schema_1.AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, RelativeDistinguishedName_1.prototype); + } +}; +exports.RelativeDistinguishedName = RelativeDistinguishedName; +exports.RelativeDistinguishedName = RelativeDistinguishedName = RelativeDistinguishedName_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Set, itemType: AttributeTypeAndValue }) +], RelativeDistinguishedName); +let RDNSequence = RDNSequence_1 = class RDNSequence extends asn1_schema_1.AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, RDNSequence_1.prototype); + } +}; +exports.RDNSequence = RDNSequence; +exports.RDNSequence = RDNSequence = RDNSequence_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence, itemType: RelativeDistinguishedName }) +], RDNSequence); +let Name = Name_1 = class Name extends RDNSequence { + constructor(items) { + super(items); + Object.setPrototypeOf(this, Name_1.prototype); + } +}; +exports.Name = Name; +exports.Name = Name = Name_1 = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Sequence }) +], Name); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/object_identifiers.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/object_identifiers.js new file mode 100644 index 0000000..d850cea --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/object_identifiers.js @@ -0,0 +1,15 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.id_ce = exports.id_ad_caRepository = exports.id_ad_timeStamping = exports.id_ad_caIssuers = exports.id_ad_ocsp = exports.id_qt_unotice = exports.id_qt_csp = exports.id_ad = exports.id_kp = exports.id_qt = exports.id_pe = exports.id_pkix = void 0; +exports.id_pkix = "1.3.6.1.5.5.7"; +exports.id_pe = `${exports.id_pkix}.1`; +exports.id_qt = `${exports.id_pkix}.2`; +exports.id_kp = `${exports.id_pkix}.3`; +exports.id_ad = `${exports.id_pkix}.48`; +exports.id_qt_csp = `${exports.id_qt}.1`; +exports.id_qt_unotice = `${exports.id_qt}.2`; +exports.id_ad_ocsp = `${exports.id_ad}.1`; +exports.id_ad_caIssuers = `${exports.id_ad}.2`; +exports.id_ad_timeStamping = `${exports.id_ad}.3`; +exports.id_ad_caRepository = `${exports.id_ad}.5`; +exports.id_ce = "2.5.29"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/subject_public_key_info.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/subject_public_key_info.js new file mode 100644 index 0000000..bcce8ae --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/subject_public_key_info.js @@ -0,0 +1,20 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.SubjectPublicKeyInfo = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const algorithm_identifier_1 = require("./algorithm_identifier"); +class SubjectPublicKeyInfo { + constructor(params = {}) { + this.algorithm = new algorithm_identifier_1.AlgorithmIdentifier(); + this.subjectPublicKey = new ArrayBuffer(0); + Object.assign(this, params); + } +} +exports.SubjectPublicKeyInfo = SubjectPublicKeyInfo; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: algorithm_identifier_1.AlgorithmIdentifier }) +], SubjectPublicKeyInfo.prototype, "algorithm", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.BitString }) +], SubjectPublicKeyInfo.prototype, "subjectPublicKey", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/tbs_cert_list.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/tbs_cert_list.js new file mode 100644 index 0000000..d5e1c52 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/tbs_cert_list.js @@ -0,0 +1,56 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TBSCertList = exports.RevokedCertificate = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const algorithm_identifier_1 = require("./algorithm_identifier"); +const name_1 = require("./name"); +const time_1 = require("./time"); +const extension_1 = require("./extension"); +class RevokedCertificate { + constructor(params = {}) { + this.userCertificate = new ArrayBuffer(0); + this.revocationDate = new time_1.Time(); + Object.assign(this, params); + } +} +exports.RevokedCertificate = RevokedCertificate; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, converter: asn1_schema_1.AsnIntegerArrayBufferConverter }) +], RevokedCertificate.prototype, "userCertificate", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: time_1.Time }) +], RevokedCertificate.prototype, "revocationDate", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: extension_1.Extension, optional: true, repeated: "sequence" }) +], RevokedCertificate.prototype, "crlEntryExtensions", void 0); +class TBSCertList { + constructor(params = {}) { + this.signature = new algorithm_identifier_1.AlgorithmIdentifier(); + this.issuer = new name_1.Name(); + this.thisUpdate = new time_1.Time(); + Object.assign(this, params); + } +} +exports.TBSCertList = TBSCertList; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.Integer, optional: true }) +], TBSCertList.prototype, "version", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: algorithm_identifier_1.AlgorithmIdentifier }) +], TBSCertList.prototype, "signature", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: name_1.Name }) +], TBSCertList.prototype, "issuer", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: time_1.Time }) +], TBSCertList.prototype, "thisUpdate", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: time_1.Time, optional: true }) +], TBSCertList.prototype, "nextUpdate", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: RevokedCertificate, repeated: "sequence", optional: true }) +], TBSCertList.prototype, "revokedCertificates", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: extension_1.Extension, optional: true, context: 0, repeated: "sequence" }) +], TBSCertList.prototype, "crlExtensions", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/tbs_certificate.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/tbs_certificate.js new file mode 100644 index 0000000..080926c --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/tbs_certificate.js @@ -0,0 +1,66 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.TBSCertificate = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const algorithm_identifier_1 = require("./algorithm_identifier"); +const name_1 = require("./name"); +const subject_public_key_info_1 = require("./subject_public_key_info"); +const validity_1 = require("./validity"); +const extension_1 = require("./extension"); +const types_1 = require("./types"); +class TBSCertificate { + constructor(params = {}) { + this.version = types_1.Version.v1; + this.serialNumber = new ArrayBuffer(0); + this.signature = new algorithm_identifier_1.AlgorithmIdentifier(); + this.issuer = new name_1.Name(); + this.validity = new validity_1.Validity(); + this.subject = new name_1.Name(); + this.subjectPublicKeyInfo = new subject_public_key_info_1.SubjectPublicKeyInfo(); + Object.assign(this, params); + } +} +exports.TBSCertificate = TBSCertificate; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_1.AsnPropTypes.Integer, + context: 0, + defaultValue: types_1.Version.v1, + }) +], TBSCertificate.prototype, "version", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_1.AsnPropTypes.Integer, + converter: asn1_schema_1.AsnIntegerArrayBufferConverter, + }) +], TBSCertificate.prototype, "serialNumber", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: algorithm_identifier_1.AlgorithmIdentifier }) +], TBSCertificate.prototype, "signature", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: name_1.Name }) +], TBSCertificate.prototype, "issuer", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: validity_1.Validity }) +], TBSCertificate.prototype, "validity", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: name_1.Name }) +], TBSCertificate.prototype, "subject", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: subject_public_key_info_1.SubjectPublicKeyInfo }) +], TBSCertificate.prototype, "subjectPublicKeyInfo", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_1.AsnPropTypes.BitString, + context: 1, + implicit: true, + optional: true, + }) +], TBSCertificate.prototype, "issuerUniqueID", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: asn1_schema_1.AsnPropTypes.BitString, context: 2, implicit: true, optional: true }) +], TBSCertificate.prototype, "subjectUniqueID", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: extension_1.Extensions, context: 3, optional: true }) +], TBSCertificate.prototype, "extensions", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/time.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/time.js new file mode 100644 index 0000000..54f67de --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/time.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Time = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +let Time = class Time { + constructor(time) { + if (time) { + if (typeof time === "string" || typeof time === "number" || time instanceof Date) { + const date = new Date(time); + if (date.getUTCFullYear() > 2049) { + this.generalTime = date; + } + else { + this.utcTime = date; + } + } + else { + Object.assign(this, time); + } + } + } + getTime() { + const time = this.utcTime || this.generalTime; + if (!time) { + throw new Error("Cannot get time from CHOICE object"); + } + return time; + } +}; +exports.Time = Time; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_1.AsnPropTypes.UTCTime, + }) +], Time.prototype, "utcTime", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ + type: asn1_schema_1.AsnPropTypes.GeneralizedTime, + }) +], Time.prototype, "generalTime", void 0); +exports.Time = Time = tslib_1.__decorate([ + (0, asn1_schema_1.AsnType)({ type: asn1_schema_1.AsnTypeTypes.Choice }) +], Time); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/types.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/types.js new file mode 100644 index 0000000..d820e8b --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/types.js @@ -0,0 +1,9 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Version = void 0; +var Version; +(function (Version) { + Version[Version["v1"] = 0] = "v1"; + Version[Version["v2"] = 1] = "v2"; + Version[Version["v3"] = 2] = "v3"; +})(Version || (exports.Version = Version = {})); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/validity.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/validity.js new file mode 100644 index 0000000..feb9254 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/cjs/validity.js @@ -0,0 +1,23 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Validity = void 0; +const tslib_1 = require("tslib"); +const asn1_schema_1 = require("@peculiar/asn1-schema"); +const time_1 = require("./time"); +class Validity { + constructor(params) { + this.notBefore = new time_1.Time(new Date()); + this.notAfter = new time_1.Time(new Date()); + if (params) { + this.notBefore = new time_1.Time(params.notBefore); + this.notAfter = new time_1.Time(params.notAfter); + } + } +} +exports.Validity = Validity; +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: time_1.Time }) +], Validity.prototype, "notBefore", void 0); +tslib_1.__decorate([ + (0, asn1_schema_1.AsnProp)({ type: time_1.Time }) +], Validity.prototype, "notAfter", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/algorithm_identifier.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/algorithm_identifier.js new file mode 100644 index 0000000..ee88bf9 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/algorithm_identifier.js @@ -0,0 +1,28 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes } from "@peculiar/asn1-schema"; +import * as pvtsutils from "pvtsutils"; +export class AlgorithmIdentifier { + constructor(params = {}) { + this.algorithm = ""; + Object.assign(this, params); + } + isEqual(data) { + return (data instanceof AlgorithmIdentifier && + data.algorithm == this.algorithm && + ((data.parameters && + this.parameters && + pvtsutils.isEqual(data.parameters, this.parameters)) || + data.parameters === this.parameters)); + } +} +__decorate([ + AsnProp({ + type: AsnPropTypes.ObjectIdentifier, + }) +], AlgorithmIdentifier.prototype, "algorithm", void 0); +__decorate([ + AsnProp({ + type: AsnPropTypes.Any, + optional: true, + }) +], AlgorithmIdentifier.prototype, "parameters", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/attribute.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/attribute.js new file mode 100644 index 0000000..8320165 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/attribute.js @@ -0,0 +1,15 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes } from "@peculiar/asn1-schema"; +export class Attribute { + constructor(params = {}) { + this.type = ""; + this.values = []; + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.ObjectIdentifier }) +], Attribute.prototype, "type", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Any, repeated: "set" }) +], Attribute.prototype, "values", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/certificate.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/certificate.js new file mode 100644 index 0000000..d214089 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/certificate.js @@ -0,0 +1,21 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes } from "@peculiar/asn1-schema"; +import { AlgorithmIdentifier } from "./algorithm_identifier"; +import { TBSCertificate } from "./tbs_certificate"; +export class Certificate { + constructor(params = {}) { + this.tbsCertificate = new TBSCertificate(); + this.signatureAlgorithm = new AlgorithmIdentifier(); + this.signatureValue = new ArrayBuffer(0); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: TBSCertificate }) +], Certificate.prototype, "tbsCertificate", void 0); +__decorate([ + AsnProp({ type: AlgorithmIdentifier }) +], Certificate.prototype, "signatureAlgorithm", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.BitString }) +], Certificate.prototype, "signatureValue", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/certificate_list.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/certificate_list.js new file mode 100644 index 0000000..a69c845 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/certificate_list.js @@ -0,0 +1,21 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes } from "@peculiar/asn1-schema"; +import { AlgorithmIdentifier } from "./algorithm_identifier"; +import { TBSCertList } from "./tbs_cert_list"; +export class CertificateList { + constructor(params = {}) { + this.tbsCertList = new TBSCertList(); + this.signatureAlgorithm = new AlgorithmIdentifier(); + this.signature = new ArrayBuffer(0); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: TBSCertList }) +], CertificateList.prototype, "tbsCertList", void 0); +__decorate([ + AsnProp({ type: AlgorithmIdentifier }) +], CertificateList.prototype, "signatureAlgorithm", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.BitString }) +], CertificateList.prototype, "signature", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extension.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extension.js new file mode 100644 index 0000000..261cc00 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extension.js @@ -0,0 +1,34 @@ +var Extensions_1; +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnArray, AsnType, AsnTypeTypes, OctetString, } from "@peculiar/asn1-schema"; +export class Extension { + constructor(params = {}) { + this.extnID = ""; + this.critical = Extension.CRITICAL; + this.extnValue = new OctetString(); + Object.assign(this, params); + } +} +Extension.CRITICAL = false; +__decorate([ + AsnProp({ type: AsnPropTypes.ObjectIdentifier }) +], Extension.prototype, "extnID", void 0); +__decorate([ + AsnProp({ + type: AsnPropTypes.Boolean, + defaultValue: Extension.CRITICAL, + }) +], Extension.prototype, "critical", void 0); +__decorate([ + AsnProp({ type: OctetString }) +], Extension.prototype, "extnValue", void 0); +let Extensions = Extensions_1 = class Extensions extends AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, Extensions_1.prototype); + } +}; +Extensions = Extensions_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence, itemType: Extension }) +], Extensions); +export { Extensions }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/authority_information_access.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/authority_information_access.js new file mode 100644 index 0000000..1c696cb --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/authority_information_access.js @@ -0,0 +1,29 @@ +var AuthorityInfoAccessSyntax_1; +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnArray, AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +import { GeneralName } from "../general_name"; +import { id_pe } from "../object_identifiers"; +export const id_pe_authorityInfoAccess = `${id_pe}.1`; +export class AccessDescription { + constructor(params = {}) { + this.accessMethod = ""; + this.accessLocation = new GeneralName(); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.ObjectIdentifier }) +], AccessDescription.prototype, "accessMethod", void 0); +__decorate([ + AsnProp({ type: GeneralName }) +], AccessDescription.prototype, "accessLocation", void 0); +let AuthorityInfoAccessSyntax = AuthorityInfoAccessSyntax_1 = class AuthorityInfoAccessSyntax extends AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, AuthorityInfoAccessSyntax_1.prototype); + } +}; +AuthorityInfoAccessSyntax = AuthorityInfoAccessSyntax_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence, itemType: AccessDescription }) +], AuthorityInfoAccessSyntax); +export { AuthorityInfoAccessSyntax }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/authority_key_identifier.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/authority_key_identifier.js new file mode 100644 index 0000000..5f0bb96 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/authority_key_identifier.js @@ -0,0 +1,29 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnIntegerArrayBufferConverter, OctetString, } from "@peculiar/asn1-schema"; +import { GeneralName } from "../general_name"; +import { id_ce } from "../object_identifiers"; +export const id_ce_authorityKeyIdentifier = `${id_ce}.35`; +export class KeyIdentifier extends OctetString { +} +export class AuthorityKeyIdentifier { + constructor(params = {}) { + if (params) { + Object.assign(this, params); + } + } +} +__decorate([ + AsnProp({ type: KeyIdentifier, context: 0, optional: true, implicit: true }) +], AuthorityKeyIdentifier.prototype, "keyIdentifier", void 0); +__decorate([ + AsnProp({ type: GeneralName, context: 1, optional: true, implicit: true, repeated: "sequence" }) +], AuthorityKeyIdentifier.prototype, "authorityCertIssuer", void 0); +__decorate([ + AsnProp({ + type: AsnPropTypes.Integer, + context: 2, + optional: true, + implicit: true, + converter: AsnIntegerArrayBufferConverter, + }) +], AuthorityKeyIdentifier.prototype, "authorityCertSerialNumber", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/basic_constraints.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/basic_constraints.js new file mode 100644 index 0000000..c987d39 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/basic_constraints.js @@ -0,0 +1,16 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes } from "@peculiar/asn1-schema"; +import { id_ce } from "../object_identifiers"; +export const id_ce_basicConstraints = `${id_ce}.19`; +export class BasicConstraints { + constructor(params = {}) { + this.cA = false; + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.Boolean, defaultValue: false }) +], BasicConstraints.prototype, "cA", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, optional: true }) +], BasicConstraints.prototype, "pathLenConstraint", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/certificate_issuer.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/certificate_issuer.js new file mode 100644 index 0000000..a43f653 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/certificate_issuer.js @@ -0,0 +1,16 @@ +var CertificateIssuer_1; +import { __decorate } from "tslib"; +import { AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +import { GeneralNames } from "../general_names"; +import { id_ce } from "../object_identifiers"; +export const id_ce_certificateIssuer = `${id_ce}.29`; +let CertificateIssuer = CertificateIssuer_1 = class CertificateIssuer extends GeneralNames { + constructor(items) { + super(items); + Object.setPrototypeOf(this, CertificateIssuer_1.prototype); + } +}; +CertificateIssuer = CertificateIssuer_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence }) +], CertificateIssuer); +export { CertificateIssuer }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/certificate_policies.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/certificate_policies.js new file mode 100644 index 0000000..f229f20 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/certificate_policies.js @@ -0,0 +1,104 @@ +var CertificatePolicies_1; +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnType, AsnTypeTypes, AsnArray } from "@peculiar/asn1-schema"; +import { id_ce } from "../object_identifiers"; +export const id_ce_certificatePolicies = `${id_ce}.32`; +export const id_ce_certificatePolicies_anyPolicy = `${id_ce_certificatePolicies}.0`; +let DisplayText = class DisplayText { + constructor(params = {}) { + Object.assign(this, params); + } + toString() { + return this.ia5String || this.visibleString || this.bmpString || this.utf8String || ""; + } +}; +__decorate([ + AsnProp({ type: AsnPropTypes.IA5String }) +], DisplayText.prototype, "ia5String", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.VisibleString }) +], DisplayText.prototype, "visibleString", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.BmpString }) +], DisplayText.prototype, "bmpString", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Utf8String }) +], DisplayText.prototype, "utf8String", void 0); +DisplayText = __decorate([ + AsnType({ type: AsnTypeTypes.Choice }) +], DisplayText); +export { DisplayText }; +export class NoticeReference { + constructor(params = {}) { + this.organization = new DisplayText(); + this.noticeNumbers = []; + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: DisplayText }) +], NoticeReference.prototype, "organization", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, repeated: "sequence" }) +], NoticeReference.prototype, "noticeNumbers", void 0); +export class UserNotice { + constructor(params = {}) { + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: NoticeReference, optional: true }) +], UserNotice.prototype, "noticeRef", void 0); +__decorate([ + AsnProp({ type: DisplayText, optional: true }) +], UserNotice.prototype, "explicitText", void 0); +let Qualifier = class Qualifier { + constructor(params = {}) { + Object.assign(this, params); + } +}; +__decorate([ + AsnProp({ type: AsnPropTypes.IA5String }) +], Qualifier.prototype, "cPSuri", void 0); +__decorate([ + AsnProp({ type: UserNotice }) +], Qualifier.prototype, "userNotice", void 0); +Qualifier = __decorate([ + AsnType({ type: AsnTypeTypes.Choice }) +], Qualifier); +export { Qualifier }; +export class PolicyQualifierInfo { + constructor(params = {}) { + this.policyQualifierId = ""; + this.qualifier = new ArrayBuffer(0); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.ObjectIdentifier }) +], PolicyQualifierInfo.prototype, "policyQualifierId", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Any }) +], PolicyQualifierInfo.prototype, "qualifier", void 0); +export class PolicyInformation { + constructor(params = {}) { + this.policyIdentifier = ""; + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.ObjectIdentifier }) +], PolicyInformation.prototype, "policyIdentifier", void 0); +__decorate([ + AsnProp({ type: PolicyQualifierInfo, repeated: "sequence", optional: true }) +], PolicyInformation.prototype, "policyQualifiers", void 0); +let CertificatePolicies = CertificatePolicies_1 = class CertificatePolicies extends AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, CertificatePolicies_1.prototype); + } +}; +CertificatePolicies = CertificatePolicies_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence, itemType: PolicyInformation }) +], CertificatePolicies); +export { CertificatePolicies }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_delta_indicator.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_delta_indicator.js new file mode 100644 index 0000000..deda3ed --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_delta_indicator.js @@ -0,0 +1,11 @@ +import { __decorate } from "tslib"; +import { AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +import { id_ce } from "../object_identifiers"; +import { CRLNumber } from "./crl_number"; +export const id_ce_deltaCRLIndicator = `${id_ce}.27`; +let BaseCRLNumber = class BaseCRLNumber extends CRLNumber { +}; +BaseCRLNumber = __decorate([ + AsnType({ type: AsnTypeTypes.Choice }) +], BaseCRLNumber); +export { BaseCRLNumber }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_distribution_points.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_distribution_points.js new file mode 100644 index 0000000..36f8ddd --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_distribution_points.js @@ -0,0 +1,95 @@ +var CRLDistributionPoints_1; +import { __decorate } from "tslib"; +import { AsnProp, AsnType, AsnTypeTypes, AsnArray, BitString } from "@peculiar/asn1-schema"; +import { RelativeDistinguishedName } from "../name"; +import { GeneralName } from "../general_name"; +import { id_ce } from "../object_identifiers"; +export const id_ce_cRLDistributionPoints = `${id_ce}.31`; +export var ReasonFlags; +(function (ReasonFlags) { + ReasonFlags[ReasonFlags["unused"] = 1] = "unused"; + ReasonFlags[ReasonFlags["keyCompromise"] = 2] = "keyCompromise"; + ReasonFlags[ReasonFlags["cACompromise"] = 4] = "cACompromise"; + ReasonFlags[ReasonFlags["affiliationChanged"] = 8] = "affiliationChanged"; + ReasonFlags[ReasonFlags["superseded"] = 16] = "superseded"; + ReasonFlags[ReasonFlags["cessationOfOperation"] = 32] = "cessationOfOperation"; + ReasonFlags[ReasonFlags["certificateHold"] = 64] = "certificateHold"; + ReasonFlags[ReasonFlags["privilegeWithdrawn"] = 128] = "privilegeWithdrawn"; + ReasonFlags[ReasonFlags["aACompromise"] = 256] = "aACompromise"; +})(ReasonFlags || (ReasonFlags = {})); +export class Reason extends BitString { + toJSON() { + const res = []; + const flags = this.toNumber(); + if (flags & ReasonFlags.aACompromise) { + res.push("aACompromise"); + } + if (flags & ReasonFlags.affiliationChanged) { + res.push("affiliationChanged"); + } + if (flags & ReasonFlags.cACompromise) { + res.push("cACompromise"); + } + if (flags & ReasonFlags.certificateHold) { + res.push("certificateHold"); + } + if (flags & ReasonFlags.cessationOfOperation) { + res.push("cessationOfOperation"); + } + if (flags & ReasonFlags.keyCompromise) { + res.push("keyCompromise"); + } + if (flags & ReasonFlags.privilegeWithdrawn) { + res.push("privilegeWithdrawn"); + } + if (flags & ReasonFlags.superseded) { + res.push("superseded"); + } + if (flags & ReasonFlags.unused) { + res.push("unused"); + } + return res; + } + toString() { + return `[${this.toJSON().join(", ")}]`; + } +} +let DistributionPointName = class DistributionPointName { + constructor(params = {}) { + Object.assign(this, params); + } +}; +__decorate([ + AsnProp({ type: GeneralName, context: 0, repeated: "sequence", implicit: true }) +], DistributionPointName.prototype, "fullName", void 0); +__decorate([ + AsnProp({ type: RelativeDistinguishedName, context: 1, implicit: true }) +], DistributionPointName.prototype, "nameRelativeToCRLIssuer", void 0); +DistributionPointName = __decorate([ + AsnType({ type: AsnTypeTypes.Choice }) +], DistributionPointName); +export { DistributionPointName }; +export class DistributionPoint { + constructor(params = {}) { + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: DistributionPointName, context: 0, optional: true }) +], DistributionPoint.prototype, "distributionPoint", void 0); +__decorate([ + AsnProp({ type: Reason, context: 1, optional: true, implicit: true }) +], DistributionPoint.prototype, "reasons", void 0); +__decorate([ + AsnProp({ type: GeneralName, context: 2, optional: true, repeated: "sequence", implicit: true }) +], DistributionPoint.prototype, "cRLIssuer", void 0); +let CRLDistributionPoints = CRLDistributionPoints_1 = class CRLDistributionPoints extends AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, CRLDistributionPoints_1.prototype); + } +}; +CRLDistributionPoints = CRLDistributionPoints_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence, itemType: DistributionPoint }) +], CRLDistributionPoints); +export { CRLDistributionPoints }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_freshest.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_freshest.js new file mode 100644 index 0000000..8282ae8 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_freshest.js @@ -0,0 +1,16 @@ +var FreshestCRL_1; +import { __decorate } from "tslib"; +import { AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +import { id_ce } from "../object_identifiers"; +import { CRLDistributionPoints, DistributionPoint } from "./crl_distribution_points"; +export const id_ce_freshestCRL = `${id_ce}.46`; +let FreshestCRL = FreshestCRL_1 = class FreshestCRL extends CRLDistributionPoints { + constructor(items) { + super(items); + Object.setPrototypeOf(this, FreshestCRL_1.prototype); + } +}; +FreshestCRL = FreshestCRL_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence, itemType: DistributionPoint }) +], FreshestCRL); +export { FreshestCRL }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_issuing_distribution_point.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_issuing_distribution_point.js new file mode 100644 index 0000000..dc6688e --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_issuing_distribution_point.js @@ -0,0 +1,54 @@ +import { __decorate } from "tslib"; +import { AsnProp } from "@peculiar/asn1-schema"; +import { DistributionPointName, Reason } from "./crl_distribution_points"; +import { id_ce } from "../object_identifiers"; +import { AsnPropTypes } from "@peculiar/asn1-schema"; +export const id_ce_issuingDistributionPoint = `${id_ce}.28`; +export class IssuingDistributionPoint { + constructor(params = {}) { + this.onlyContainsUserCerts = IssuingDistributionPoint.ONLY; + this.onlyContainsCACerts = IssuingDistributionPoint.ONLY; + this.indirectCRL = IssuingDistributionPoint.ONLY; + this.onlyContainsAttributeCerts = IssuingDistributionPoint.ONLY; + Object.assign(this, params); + } +} +IssuingDistributionPoint.ONLY = false; +__decorate([ + AsnProp({ type: DistributionPointName, context: 0, optional: true }) +], IssuingDistributionPoint.prototype, "distributionPoint", void 0); +__decorate([ + AsnProp({ + type: AsnPropTypes.Boolean, + context: 1, + defaultValue: IssuingDistributionPoint.ONLY, + implicit: true, + }) +], IssuingDistributionPoint.prototype, "onlyContainsUserCerts", void 0); +__decorate([ + AsnProp({ + type: AsnPropTypes.Boolean, + context: 2, + defaultValue: IssuingDistributionPoint.ONLY, + implicit: true, + }) +], IssuingDistributionPoint.prototype, "onlyContainsCACerts", void 0); +__decorate([ + AsnProp({ type: Reason, context: 3, optional: true, implicit: true }) +], IssuingDistributionPoint.prototype, "onlySomeReasons", void 0); +__decorate([ + AsnProp({ + type: AsnPropTypes.Boolean, + context: 4, + defaultValue: IssuingDistributionPoint.ONLY, + implicit: true, + }) +], IssuingDistributionPoint.prototype, "indirectCRL", void 0); +__decorate([ + AsnProp({ + type: AsnPropTypes.Boolean, + context: 5, + defaultValue: IssuingDistributionPoint.ONLY, + implicit: true, + }) +], IssuingDistributionPoint.prototype, "onlyContainsAttributeCerts", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_number.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_number.js new file mode 100644 index 0000000..461f523 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_number.js @@ -0,0 +1,16 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +import { id_ce } from "../object_identifiers"; +export const id_ce_cRLNumber = `${id_ce}.20`; +let CRLNumber = class CRLNumber { + constructor(value = 0) { + this.value = value; + } +}; +__decorate([ + AsnProp({ type: AsnPropTypes.Integer }) +], CRLNumber.prototype, "value", void 0); +CRLNumber = __decorate([ + AsnType({ type: AsnTypeTypes.Choice }) +], CRLNumber); +export { CRLNumber }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_reason.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_reason.js new file mode 100644 index 0000000..5a15dc3 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/crl_reason.js @@ -0,0 +1,36 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +import { id_ce } from "../object_identifiers"; +export const id_ce_cRLReasons = `${id_ce}.21`; +export var CRLReasons; +(function (CRLReasons) { + CRLReasons[CRLReasons["unspecified"] = 0] = "unspecified"; + CRLReasons[CRLReasons["keyCompromise"] = 1] = "keyCompromise"; + CRLReasons[CRLReasons["cACompromise"] = 2] = "cACompromise"; + CRLReasons[CRLReasons["affiliationChanged"] = 3] = "affiliationChanged"; + CRLReasons[CRLReasons["superseded"] = 4] = "superseded"; + CRLReasons[CRLReasons["cessationOfOperation"] = 5] = "cessationOfOperation"; + CRLReasons[CRLReasons["certificateHold"] = 6] = "certificateHold"; + CRLReasons[CRLReasons["removeFromCRL"] = 8] = "removeFromCRL"; + CRLReasons[CRLReasons["privilegeWithdrawn"] = 9] = "privilegeWithdrawn"; + CRLReasons[CRLReasons["aACompromise"] = 10] = "aACompromise"; +})(CRLReasons || (CRLReasons = {})); +let CRLReason = class CRLReason { + constructor(reason = CRLReasons.unspecified) { + this.reason = CRLReasons.unspecified; + this.reason = reason; + } + toJSON() { + return CRLReasons[this.reason]; + } + toString() { + return this.toJSON(); + } +}; +__decorate([ + AsnProp({ type: AsnPropTypes.Enumerated }) +], CRLReason.prototype, "reason", void 0); +CRLReason = __decorate([ + AsnType({ type: AsnTypeTypes.Choice }) +], CRLReason); +export { CRLReason }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/entrust_version_info.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/entrust_version_info.js new file mode 100644 index 0000000..f0f4a91 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/entrust_version_info.js @@ -0,0 +1,41 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, BitString } from "@peculiar/asn1-schema"; +export const id_entrust_entrustVersInfo = "1.2.840.113533.7.65.0"; +export var EntrustInfoFlags; +(function (EntrustInfoFlags) { + EntrustInfoFlags[EntrustInfoFlags["keyUpdateAllowed"] = 1] = "keyUpdateAllowed"; + EntrustInfoFlags[EntrustInfoFlags["newExtensions"] = 2] = "newExtensions"; + EntrustInfoFlags[EntrustInfoFlags["pKIXCertificate"] = 4] = "pKIXCertificate"; +})(EntrustInfoFlags || (EntrustInfoFlags = {})); +export class EntrustInfo extends BitString { + toJSON() { + const res = []; + const flags = this.toNumber(); + if (flags & EntrustInfoFlags.pKIXCertificate) { + res.push("pKIXCertificate"); + } + if (flags & EntrustInfoFlags.newExtensions) { + res.push("newExtensions"); + } + if (flags & EntrustInfoFlags.keyUpdateAllowed) { + res.push("keyUpdateAllowed"); + } + return res; + } + toString() { + return `[${this.toJSON().join(", ")}]`; + } +} +export class EntrustVersionInfo { + constructor(params = {}) { + this.entrustVers = ""; + this.entrustInfoFlags = new EntrustInfo(); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.GeneralString }) +], EntrustVersionInfo.prototype, "entrustVers", void 0); +__decorate([ + AsnProp({ type: EntrustInfo }) +], EntrustVersionInfo.prototype, "entrustInfoFlags", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/extended_key_usage.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/extended_key_usage.js new file mode 100644 index 0000000..f17fdf6 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/extended_key_usage.js @@ -0,0 +1,22 @@ +var ExtendedKeyUsage_1; +import { __decorate } from "tslib"; +import { AsnPropTypes, AsnArray, AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +import { id_ce, id_kp } from "../object_identifiers"; +export const id_ce_extKeyUsage = `${id_ce}.37`; +let ExtendedKeyUsage = ExtendedKeyUsage_1 = class ExtendedKeyUsage extends AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, ExtendedKeyUsage_1.prototype); + } +}; +ExtendedKeyUsage = ExtendedKeyUsage_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence, itemType: AsnPropTypes.ObjectIdentifier }) +], ExtendedKeyUsage); +export { ExtendedKeyUsage }; +export const anyExtendedKeyUsage = `${id_ce_extKeyUsage}.0`; +export const id_kp_serverAuth = `${id_kp}.1`; +export const id_kp_clientAuth = `${id_kp}.2`; +export const id_kp_codeSigning = `${id_kp}.3`; +export const id_kp_emailProtection = `${id_kp}.4`; +export const id_kp_timeStamping = `${id_kp}.8`; +export const id_kp_OCSPSigning = `${id_kp}.9`; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/index.js new file mode 100644 index 0000000..21a5d10 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/index.js @@ -0,0 +1,25 @@ +export * from "./authority_information_access"; +export * from "./authority_key_identifier"; +export * from "./basic_constraints"; +export * from "./certificate_issuer"; +export * from "./certificate_policies"; +export * from "./crl_delta_indicator"; +export * from "./crl_distribution_points"; +export * from "./crl_freshest"; +export * from "./crl_issuing_distribution_point"; +export * from "./crl_number"; +export * from "./crl_reason"; +export * from "./extended_key_usage"; +export * from "./inhibit_any_policy"; +export * from "./invalidity_date"; +export * from "./issuer_alternative_name"; +export * from "./key_usage"; +export * from "./name_constraints"; +export * from "./policy_constraints"; +export * from "./policy_mappings"; +export * from "./subject_alternative_name"; +export * from "./subject_directory_attributes"; +export * from "./subject_key_identifier"; +export * from "./private_key_usage_period"; +export * from "./entrust_version_info"; +export * from "./subject_info_access"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/inhibit_any_policy.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/inhibit_any_policy.js new file mode 100644 index 0000000..42c4806 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/inhibit_any_policy.js @@ -0,0 +1,16 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnType, AsnTypeTypes, AsnIntegerArrayBufferConverter, } from "@peculiar/asn1-schema"; +import { id_ce } from "../object_identifiers"; +export const id_ce_inhibitAnyPolicy = `${id_ce}.54`; +let InhibitAnyPolicy = class InhibitAnyPolicy { + constructor(value = new ArrayBuffer(0)) { + this.value = value; + } +}; +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], InhibitAnyPolicy.prototype, "value", void 0); +InhibitAnyPolicy = __decorate([ + AsnType({ type: AsnTypeTypes.Choice }) +], InhibitAnyPolicy); +export { InhibitAnyPolicy }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/invalidity_date.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/invalidity_date.js new file mode 100644 index 0000000..c2e9bd4 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/invalidity_date.js @@ -0,0 +1,19 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +import { id_ce } from "../object_identifiers"; +export const id_ce_invalidityDate = `${id_ce}.24`; +let InvalidityDate = class InvalidityDate { + constructor(value) { + this.value = new Date(); + if (value) { + this.value = value; + } + } +}; +__decorate([ + AsnProp({ type: AsnPropTypes.GeneralizedTime }) +], InvalidityDate.prototype, "value", void 0); +InvalidityDate = __decorate([ + AsnType({ type: AsnTypeTypes.Choice }) +], InvalidityDate); +export { InvalidityDate }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/issuer_alternative_name.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/issuer_alternative_name.js new file mode 100644 index 0000000..30bd021 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/issuer_alternative_name.js @@ -0,0 +1,16 @@ +var IssueAlternativeName_1; +import { __decorate } from "tslib"; +import { AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +import { GeneralNames } from "../general_names"; +import { id_ce } from "../object_identifiers"; +export const id_ce_issuerAltName = `${id_ce}.18`; +let IssueAlternativeName = IssueAlternativeName_1 = class IssueAlternativeName extends GeneralNames { + constructor(items) { + super(items); + Object.setPrototypeOf(this, IssueAlternativeName_1.prototype); + } +}; +IssueAlternativeName = IssueAlternativeName_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence }) +], IssueAlternativeName); +export { IssueAlternativeName }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/key_usage.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/key_usage.js new file mode 100644 index 0000000..d95f828 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/key_usage.js @@ -0,0 +1,52 @@ +import { BitString } from "@peculiar/asn1-schema"; +import { id_ce } from "../object_identifiers"; +export const id_ce_keyUsage = `${id_ce}.15`; +export var KeyUsageFlags; +(function (KeyUsageFlags) { + KeyUsageFlags[KeyUsageFlags["digitalSignature"] = 1] = "digitalSignature"; + KeyUsageFlags[KeyUsageFlags["nonRepudiation"] = 2] = "nonRepudiation"; + KeyUsageFlags[KeyUsageFlags["keyEncipherment"] = 4] = "keyEncipherment"; + KeyUsageFlags[KeyUsageFlags["dataEncipherment"] = 8] = "dataEncipherment"; + KeyUsageFlags[KeyUsageFlags["keyAgreement"] = 16] = "keyAgreement"; + KeyUsageFlags[KeyUsageFlags["keyCertSign"] = 32] = "keyCertSign"; + KeyUsageFlags[KeyUsageFlags["cRLSign"] = 64] = "cRLSign"; + KeyUsageFlags[KeyUsageFlags["encipherOnly"] = 128] = "encipherOnly"; + KeyUsageFlags[KeyUsageFlags["decipherOnly"] = 256] = "decipherOnly"; +})(KeyUsageFlags || (KeyUsageFlags = {})); +export class KeyUsage extends BitString { + toJSON() { + const flag = this.toNumber(); + const res = []; + if (flag & KeyUsageFlags.cRLSign) { + res.push("crlSign"); + } + if (flag & KeyUsageFlags.dataEncipherment) { + res.push("dataEncipherment"); + } + if (flag & KeyUsageFlags.decipherOnly) { + res.push("decipherOnly"); + } + if (flag & KeyUsageFlags.digitalSignature) { + res.push("digitalSignature"); + } + if (flag & KeyUsageFlags.encipherOnly) { + res.push("encipherOnly"); + } + if (flag & KeyUsageFlags.keyAgreement) { + res.push("keyAgreement"); + } + if (flag & KeyUsageFlags.keyCertSign) { + res.push("keyCertSign"); + } + if (flag & KeyUsageFlags.keyEncipherment) { + res.push("keyEncipherment"); + } + if (flag & KeyUsageFlags.nonRepudiation) { + res.push("nonRepudiation"); + } + return res; + } + toString() { + return `[${this.toJSON().join(", ")}]`; + } +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/name_constraints.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/name_constraints.js new file mode 100644 index 0000000..36e1a60 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/name_constraints.js @@ -0,0 +1,43 @@ +var GeneralSubtrees_1; +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnArray, AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +import { GeneralName } from "../general_name"; +import { id_ce } from "../object_identifiers"; +export const id_ce_nameConstraints = `${id_ce}.30`; +export class GeneralSubtree { + constructor(params = {}) { + this.base = new GeneralName(); + this.minimum = 0; + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: GeneralName }) +], GeneralSubtree.prototype, "base", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, context: 0, defaultValue: 0, implicit: true }) +], GeneralSubtree.prototype, "minimum", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, context: 1, optional: true, implicit: true }) +], GeneralSubtree.prototype, "maximum", void 0); +let GeneralSubtrees = GeneralSubtrees_1 = class GeneralSubtrees extends AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, GeneralSubtrees_1.prototype); + } +}; +GeneralSubtrees = GeneralSubtrees_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence, itemType: GeneralSubtree }) +], GeneralSubtrees); +export { GeneralSubtrees }; +export class NameConstraints { + constructor(params = {}) { + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: GeneralSubtrees, context: 0, optional: true, implicit: true }) +], NameConstraints.prototype, "permittedSubtrees", void 0); +__decorate([ + AsnProp({ type: GeneralSubtrees, context: 1, optional: true, implicit: true }) +], NameConstraints.prototype, "excludedSubtrees", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/policy_constraints.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/policy_constraints.js new file mode 100644 index 0000000..225004e --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/policy_constraints.js @@ -0,0 +1,27 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnIntegerArrayBufferConverter } from "@peculiar/asn1-schema"; +import { id_ce } from "../object_identifiers"; +export const id_ce_policyConstraints = `${id_ce}.36`; +export class PolicyConstraints { + constructor(params = {}) { + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ + type: AsnPropTypes.Integer, + context: 0, + implicit: true, + optional: true, + converter: AsnIntegerArrayBufferConverter, + }) +], PolicyConstraints.prototype, "requireExplicitPolicy", void 0); +__decorate([ + AsnProp({ + type: AsnPropTypes.Integer, + context: 1, + implicit: true, + optional: true, + converter: AsnIntegerArrayBufferConverter, + }) +], PolicyConstraints.prototype, "inhibitPolicyMapping", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/policy_mappings.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/policy_mappings.js new file mode 100644 index 0000000..dc7e60d --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/policy_mappings.js @@ -0,0 +1,28 @@ +var PolicyMappings_1; +import { __decorate } from "tslib"; +import { AsnArray, AsnProp, AsnPropTypes, AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +import { id_ce } from "../object_identifiers"; +export const id_ce_policyMappings = `${id_ce}.33`; +export class PolicyMapping { + constructor(params = {}) { + this.issuerDomainPolicy = ""; + this.subjectDomainPolicy = ""; + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.ObjectIdentifier }) +], PolicyMapping.prototype, "issuerDomainPolicy", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.ObjectIdentifier }) +], PolicyMapping.prototype, "subjectDomainPolicy", void 0); +let PolicyMappings = PolicyMappings_1 = class PolicyMappings extends AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, PolicyMappings_1.prototype); + } +}; +PolicyMappings = PolicyMappings_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence, itemType: PolicyMapping }) +], PolicyMappings); +export { PolicyMappings }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/private_key_usage_period.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/private_key_usage_period.js new file mode 100644 index 0000000..2569c1c --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/private_key_usage_period.js @@ -0,0 +1,15 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes } from "@peculiar/asn1-schema"; +import { id_ce } from "../object_identifiers"; +export const id_ce_privateKeyUsagePeriod = `${id_ce}.16`; +export class PrivateKeyUsagePeriod { + constructor(params = {}) { + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.GeneralizedTime, context: 0, implicit: true, optional: true }) +], PrivateKeyUsagePeriod.prototype, "notBefore", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.GeneralizedTime, context: 1, implicit: true, optional: true }) +], PrivateKeyUsagePeriod.prototype, "notAfter", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/subject_alternative_name.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/subject_alternative_name.js new file mode 100644 index 0000000..d29b3fc --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/subject_alternative_name.js @@ -0,0 +1,16 @@ +var SubjectAlternativeName_1; +import { __decorate } from "tslib"; +import { AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +import { GeneralNames } from "../general_names"; +import { id_ce } from "../object_identifiers"; +export const id_ce_subjectAltName = `${id_ce}.17`; +let SubjectAlternativeName = SubjectAlternativeName_1 = class SubjectAlternativeName extends GeneralNames { + constructor(items) { + super(items); + Object.setPrototypeOf(this, SubjectAlternativeName_1.prototype); + } +}; +SubjectAlternativeName = SubjectAlternativeName_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence }) +], SubjectAlternativeName); +export { SubjectAlternativeName }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/subject_directory_attributes.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/subject_directory_attributes.js new file mode 100644 index 0000000..351438d --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/subject_directory_attributes.js @@ -0,0 +1,16 @@ +var SubjectDirectoryAttributes_1; +import { __decorate } from "tslib"; +import { AsnArray, AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +import { Attribute } from "../attribute"; +import { id_ce } from "../object_identifiers"; +export const id_ce_subjectDirectoryAttributes = `${id_ce}.9`; +let SubjectDirectoryAttributes = SubjectDirectoryAttributes_1 = class SubjectDirectoryAttributes extends AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, SubjectDirectoryAttributes_1.prototype); + } +}; +SubjectDirectoryAttributes = SubjectDirectoryAttributes_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence, itemType: Attribute }) +], SubjectDirectoryAttributes); +export { SubjectDirectoryAttributes }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/subject_info_access.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/subject_info_access.js new file mode 100644 index 0000000..6d507d8 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/subject_info_access.js @@ -0,0 +1,16 @@ +var SubjectInfoAccessSyntax_1; +import { __decorate } from "tslib"; +import { AsnArray, AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +import { id_pe } from "../object_identifiers"; +import { AccessDescription } from "./authority_information_access"; +export const id_pe_subjectInfoAccess = `${id_pe}.11`; +let SubjectInfoAccessSyntax = SubjectInfoAccessSyntax_1 = class SubjectInfoAccessSyntax extends AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, SubjectInfoAccessSyntax_1.prototype); + } +}; +SubjectInfoAccessSyntax = SubjectInfoAccessSyntax_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence, itemType: AccessDescription }) +], SubjectInfoAccessSyntax); +export { SubjectInfoAccessSyntax }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/subject_key_identifier.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/subject_key_identifier.js new file mode 100644 index 0000000..64a27c2 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/extensions/subject_key_identifier.js @@ -0,0 +1,5 @@ +import { id_ce } from "../object_identifiers"; +import { KeyIdentifier } from "./authority_key_identifier"; +export const id_ce_subjectKeyIdentifier = `${id_ce}.14`; +export class SubjectKeyIdentifier extends KeyIdentifier { +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/general_name.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/general_name.js new file mode 100644 index 0000000..fc5425d --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/general_name.js @@ -0,0 +1,74 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnType, AsnTypeTypes, AsnOctetStringConverter, } from "@peculiar/asn1-schema"; +import { IpConverter } from "./ip_converter"; +import { DirectoryString, Name } from "./name"; +export const AsnIpConverter = { + fromASN: (value) => IpConverter.toString(AsnOctetStringConverter.fromASN(value)), + toASN: (value) => AsnOctetStringConverter.toASN(IpConverter.fromString(value)), +}; +export class OtherName { + constructor(params = {}) { + this.typeId = ""; + this.value = new ArrayBuffer(0); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.ObjectIdentifier }) +], OtherName.prototype, "typeId", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Any, context: 0 }) +], OtherName.prototype, "value", void 0); +export class EDIPartyName { + constructor(params = {}) { + this.partyName = new DirectoryString(); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: DirectoryString, optional: true, context: 0, implicit: true }) +], EDIPartyName.prototype, "nameAssigner", void 0); +__decorate([ + AsnProp({ type: DirectoryString, context: 1, implicit: true }) +], EDIPartyName.prototype, "partyName", void 0); +let GeneralName = class GeneralName { + constructor(params = {}) { + Object.assign(this, params); + } +}; +__decorate([ + AsnProp({ type: OtherName, context: 0, implicit: true }) +], GeneralName.prototype, "otherName", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.IA5String, context: 1, implicit: true }) +], GeneralName.prototype, "rfc822Name", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.IA5String, context: 2, implicit: true }) +], GeneralName.prototype, "dNSName", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Any, context: 3, implicit: true }) +], GeneralName.prototype, "x400Address", void 0); +__decorate([ + AsnProp({ type: Name, context: 4, implicit: false }) +], GeneralName.prototype, "directoryName", void 0); +__decorate([ + AsnProp({ type: EDIPartyName, context: 5 }) +], GeneralName.prototype, "ediPartyName", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.IA5String, context: 6, implicit: true }) +], GeneralName.prototype, "uniformResourceIdentifier", void 0); +__decorate([ + AsnProp({ + type: AsnPropTypes.OctetString, + context: 7, + implicit: true, + converter: AsnIpConverter, + }) +], GeneralName.prototype, "iPAddress", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.ObjectIdentifier, context: 8, implicit: true }) +], GeneralName.prototype, "registeredID", void 0); +GeneralName = __decorate([ + AsnType({ type: AsnTypeTypes.Choice }) +], GeneralName); +export { GeneralName }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/general_names.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/general_names.js new file mode 100644 index 0000000..aa9d520 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/general_names.js @@ -0,0 +1,15 @@ +var GeneralNames_1; +import { __decorate } from "tslib"; +import { AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +import { GeneralName } from "./general_name"; +import { AsnArray } from "@peculiar/asn1-schema"; +let GeneralNames = GeneralNames_1 = class GeneralNames extends AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, GeneralNames_1.prototype); + } +}; +GeneralNames = GeneralNames_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence, itemType: GeneralName }) +], GeneralNames); +export { GeneralNames }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/index.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/index.js new file mode 100644 index 0000000..1f29197 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/index.js @@ -0,0 +1,16 @@ +export * from "./extensions"; +export * from "./algorithm_identifier"; +export * from "./attribute"; +export * from "./certificate"; +export * from "./certificate_list"; +export * from "./extension"; +export * from "./general_name"; +export * from "./general_names"; +export * from "./name"; +export * from "./object_identifiers"; +export * from "./subject_public_key_info"; +export * from "./tbs_cert_list"; +export * from "./tbs_certificate"; +export * from "./time"; +export * from "./types"; +export * from "./validity"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/ip_converter.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/ip_converter.js new file mode 100644 index 0000000..2003005 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/ip_converter.js @@ -0,0 +1,173 @@ +import { Convert } from "pvtsutils"; +export class IpConverter { + static isIPv4(ip) { + return /^(\d{1,3}\.){3}\d{1,3}$/.test(ip); + } + static parseIPv4(ip) { + const parts = ip.split("."); + if (parts.length !== 4) { + throw new Error("Invalid IPv4 address"); + } + return parts.map((part) => { + const num = parseInt(part, 10); + if (isNaN(num) || num < 0 || num > 255) { + throw new Error("Invalid IPv4 address part"); + } + return num; + }); + } + static parseIPv6(ip) { + const expandedIP = this.expandIPv6(ip); + const parts = expandedIP.split(":"); + if (parts.length !== 8) { + throw new Error("Invalid IPv6 address"); + } + return parts.reduce((bytes, part) => { + const num = parseInt(part, 16); + if (isNaN(num) || num < 0 || num > 0xffff) { + throw new Error("Invalid IPv6 address part"); + } + bytes.push((num >> 8) & 0xff); + bytes.push(num & 0xff); + return bytes; + }, []); + } + static expandIPv6(ip) { + if (!ip.includes("::")) { + return ip; + } + const parts = ip.split("::"); + if (parts.length > 2) { + throw new Error("Invalid IPv6 address"); + } + const left = parts[0] ? parts[0].split(":") : []; + const right = parts[1] ? parts[1].split(":") : []; + const missing = 8 - (left.length + right.length); + if (missing < 0) { + throw new Error("Invalid IPv6 address"); + } + return [...left, ...Array(missing).fill("0"), ...right].join(":"); + } + static formatIPv6(bytes) { + const parts = []; + for (let i = 0; i < 16; i += 2) { + parts.push(((bytes[i] << 8) | bytes[i + 1]).toString(16)); + } + return this.compressIPv6(parts.join(":")); + } + static compressIPv6(ip) { + const parts = ip.split(":"); + let longestZeroStart = -1; + let longestZeroLength = 0; + let currentZeroStart = -1; + let currentZeroLength = 0; + for (let i = 0; i < parts.length; i++) { + if (parts[i] === "0") { + if (currentZeroStart === -1) { + currentZeroStart = i; + } + currentZeroLength++; + } + else { + if (currentZeroLength > longestZeroLength) { + longestZeroStart = currentZeroStart; + longestZeroLength = currentZeroLength; + } + currentZeroStart = -1; + currentZeroLength = 0; + } + } + if (currentZeroLength > longestZeroLength) { + longestZeroStart = currentZeroStart; + longestZeroLength = currentZeroLength; + } + if (longestZeroLength > 1) { + const before = parts.slice(0, longestZeroStart).join(":"); + const after = parts.slice(longestZeroStart + longestZeroLength).join(":"); + return `${before}::${after}`; + } + return ip; + } + static parseCIDR(text) { + const [addr, prefixStr] = text.split("/"); + const prefix = parseInt(prefixStr, 10); + if (this.isIPv4(addr)) { + if (prefix < 0 || prefix > 32) { + throw new Error("Invalid IPv4 prefix length"); + } + return [this.parseIPv4(addr), prefix]; + } + else { + if (prefix < 0 || prefix > 128) { + throw new Error("Invalid IPv6 prefix length"); + } + return [this.parseIPv6(addr), prefix]; + } + } + static decodeIP(value) { + if (value.length === 64 && parseInt(value, 16) === 0) { + return "::/0"; + } + if (value.length !== 16) { + return value; + } + const mask = parseInt(value.slice(8), 16) + .toString(2) + .split("") + .reduce((a, k) => a + +k, 0); + let ip = value.slice(0, 8).replace(/(.{2})/g, (match) => `${parseInt(match, 16)}.`); + ip = ip.slice(0, -1); + return `${ip}/${mask}`; + } + static toString(buf) { + const uint8 = new Uint8Array(buf); + if (uint8.length === 4) { + return Array.from(uint8).join("."); + } + if (uint8.length === 16) { + return this.formatIPv6(uint8); + } + if (uint8.length === 8 || uint8.length === 32) { + const half = uint8.length / 2; + const addrBytes = uint8.slice(0, half); + const maskBytes = uint8.slice(half); + const isAllZeros = uint8.every((byte) => byte === 0); + if (isAllZeros) { + return uint8.length === 8 ? "0.0.0.0/0" : "::/0"; + } + const prefixLen = maskBytes.reduce((a, b) => a + (b.toString(2).match(/1/g) || []).length, 0); + if (uint8.length === 8) { + const addrStr = Array.from(addrBytes).join("."); + return `${addrStr}/${prefixLen}`; + } + else { + const addrStr = this.formatIPv6(addrBytes); + return `${addrStr}/${prefixLen}`; + } + } + return this.decodeIP(Convert.ToHex(buf)); + } + static fromString(text) { + if (text.includes("/")) { + const [addr, prefix] = this.parseCIDR(text); + const maskBytes = new Uint8Array(addr.length); + let bitsLeft = prefix; + for (let i = 0; i < maskBytes.length; i++) { + if (bitsLeft >= 8) { + maskBytes[i] = 0xff; + bitsLeft -= 8; + } + else if (bitsLeft > 0) { + maskBytes[i] = 0xff << (8 - bitsLeft); + bitsLeft = 0; + } + } + const out = new Uint8Array(addr.length * 2); + out.set(addr, 0); + out.set(maskBytes, addr.length); + return out.buffer; + } + const bytes = this.isIPv4(text) ? this.parseIPv4(text) : this.parseIPv6(text); + return new Uint8Array(bytes).buffer; + } +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/name.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/name.js new file mode 100644 index 0000000..9ec08e0 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/name.js @@ -0,0 +1,98 @@ +var RelativeDistinguishedName_1, RDNSequence_1, Name_1; +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnType, AsnTypeTypes, AsnArray } from "@peculiar/asn1-schema"; +import { Convert } from "pvtsutils"; +let DirectoryString = class DirectoryString { + constructor(params = {}) { + Object.assign(this, params); + } + toString() { + return (this.bmpString || + this.printableString || + this.teletexString || + this.universalString || + this.utf8String || + ""); + } +}; +__decorate([ + AsnProp({ type: AsnPropTypes.TeletexString }) +], DirectoryString.prototype, "teletexString", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.PrintableString }) +], DirectoryString.prototype, "printableString", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.UniversalString }) +], DirectoryString.prototype, "universalString", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Utf8String }) +], DirectoryString.prototype, "utf8String", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.BmpString }) +], DirectoryString.prototype, "bmpString", void 0); +DirectoryString = __decorate([ + AsnType({ type: AsnTypeTypes.Choice }) +], DirectoryString); +export { DirectoryString }; +let AttributeValue = class AttributeValue extends DirectoryString { + constructor(params = {}) { + super(params); + Object.assign(this, params); + } + toString() { + return this.ia5String || (this.anyValue ? Convert.ToHex(this.anyValue) : super.toString()); + } +}; +__decorate([ + AsnProp({ type: AsnPropTypes.IA5String }) +], AttributeValue.prototype, "ia5String", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.Any }) +], AttributeValue.prototype, "anyValue", void 0); +AttributeValue = __decorate([ + AsnType({ type: AsnTypeTypes.Choice }) +], AttributeValue); +export { AttributeValue }; +export class AttributeTypeAndValue { + constructor(params = {}) { + this.type = ""; + this.value = new AttributeValue(); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.ObjectIdentifier }) +], AttributeTypeAndValue.prototype, "type", void 0); +__decorate([ + AsnProp({ type: AttributeValue }) +], AttributeTypeAndValue.prototype, "value", void 0); +let RelativeDistinguishedName = RelativeDistinguishedName_1 = class RelativeDistinguishedName extends AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, RelativeDistinguishedName_1.prototype); + } +}; +RelativeDistinguishedName = RelativeDistinguishedName_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Set, itemType: AttributeTypeAndValue }) +], RelativeDistinguishedName); +export { RelativeDistinguishedName }; +let RDNSequence = RDNSequence_1 = class RDNSequence extends AsnArray { + constructor(items) { + super(items); + Object.setPrototypeOf(this, RDNSequence_1.prototype); + } +}; +RDNSequence = RDNSequence_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence, itemType: RelativeDistinguishedName }) +], RDNSequence); +export { RDNSequence }; +let Name = Name_1 = class Name extends RDNSequence { + constructor(items) { + super(items); + Object.setPrototypeOf(this, Name_1.prototype); + } +}; +Name = Name_1 = __decorate([ + AsnType({ type: AsnTypeTypes.Sequence }) +], Name); +export { Name }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/object_identifiers.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/object_identifiers.js new file mode 100644 index 0000000..f0a8246 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/object_identifiers.js @@ -0,0 +1,12 @@ +export const id_pkix = "1.3.6.1.5.5.7"; +export const id_pe = `${id_pkix}.1`; +export const id_qt = `${id_pkix}.2`; +export const id_kp = `${id_pkix}.3`; +export const id_ad = `${id_pkix}.48`; +export const id_qt_csp = `${id_qt}.1`; +export const id_qt_unotice = `${id_qt}.2`; +export const id_ad_ocsp = `${id_ad}.1`; +export const id_ad_caIssuers = `${id_ad}.2`; +export const id_ad_timeStamping = `${id_ad}.3`; +export const id_ad_caRepository = `${id_ad}.5`; +export const id_ce = "2.5.29"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/subject_public_key_info.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/subject_public_key_info.js new file mode 100644 index 0000000..0659182 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/subject_public_key_info.js @@ -0,0 +1,16 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes } from "@peculiar/asn1-schema"; +import { AlgorithmIdentifier } from "./algorithm_identifier"; +export class SubjectPublicKeyInfo { + constructor(params = {}) { + this.algorithm = new AlgorithmIdentifier(); + this.subjectPublicKey = new ArrayBuffer(0); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AlgorithmIdentifier }) +], SubjectPublicKeyInfo.prototype, "algorithm", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.BitString }) +], SubjectPublicKeyInfo.prototype, "subjectPublicKey", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/tbs_cert_list.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/tbs_cert_list.js new file mode 100644 index 0000000..e696a5d --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/tbs_cert_list.js @@ -0,0 +1,51 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnIntegerArrayBufferConverter } from "@peculiar/asn1-schema"; +import { AlgorithmIdentifier } from "./algorithm_identifier"; +import { Name } from "./name"; +import { Time } from "./time"; +import { Extension } from "./extension"; +export class RevokedCertificate { + constructor(params = {}) { + this.userCertificate = new ArrayBuffer(0); + this.revocationDate = new Time(); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, converter: AsnIntegerArrayBufferConverter }) +], RevokedCertificate.prototype, "userCertificate", void 0); +__decorate([ + AsnProp({ type: Time }) +], RevokedCertificate.prototype, "revocationDate", void 0); +__decorate([ + AsnProp({ type: Extension, optional: true, repeated: "sequence" }) +], RevokedCertificate.prototype, "crlEntryExtensions", void 0); +export class TBSCertList { + constructor(params = {}) { + this.signature = new AlgorithmIdentifier(); + this.issuer = new Name(); + this.thisUpdate = new Time(); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ type: AsnPropTypes.Integer, optional: true }) +], TBSCertList.prototype, "version", void 0); +__decorate([ + AsnProp({ type: AlgorithmIdentifier }) +], TBSCertList.prototype, "signature", void 0); +__decorate([ + AsnProp({ type: Name }) +], TBSCertList.prototype, "issuer", void 0); +__decorate([ + AsnProp({ type: Time }) +], TBSCertList.prototype, "thisUpdate", void 0); +__decorate([ + AsnProp({ type: Time, optional: true }) +], TBSCertList.prototype, "nextUpdate", void 0); +__decorate([ + AsnProp({ type: RevokedCertificate, repeated: "sequence", optional: true }) +], TBSCertList.prototype, "revokedCertificates", void 0); +__decorate([ + AsnProp({ type: Extension, optional: true, context: 0, repeated: "sequence" }) +], TBSCertList.prototype, "crlExtensions", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/tbs_certificate.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/tbs_certificate.js new file mode 100644 index 0000000..203556b --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/tbs_certificate.js @@ -0,0 +1,62 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnIntegerArrayBufferConverter } from "@peculiar/asn1-schema"; +import { AlgorithmIdentifier } from "./algorithm_identifier"; +import { Name } from "./name"; +import { SubjectPublicKeyInfo } from "./subject_public_key_info"; +import { Validity } from "./validity"; +import { Extensions } from "./extension"; +import { Version } from "./types"; +export class TBSCertificate { + constructor(params = {}) { + this.version = Version.v1; + this.serialNumber = new ArrayBuffer(0); + this.signature = new AlgorithmIdentifier(); + this.issuer = new Name(); + this.validity = new Validity(); + this.subject = new Name(); + this.subjectPublicKeyInfo = new SubjectPublicKeyInfo(); + Object.assign(this, params); + } +} +__decorate([ + AsnProp({ + type: AsnPropTypes.Integer, + context: 0, + defaultValue: Version.v1, + }) +], TBSCertificate.prototype, "version", void 0); +__decorate([ + AsnProp({ + type: AsnPropTypes.Integer, + converter: AsnIntegerArrayBufferConverter, + }) +], TBSCertificate.prototype, "serialNumber", void 0); +__decorate([ + AsnProp({ type: AlgorithmIdentifier }) +], TBSCertificate.prototype, "signature", void 0); +__decorate([ + AsnProp({ type: Name }) +], TBSCertificate.prototype, "issuer", void 0); +__decorate([ + AsnProp({ type: Validity }) +], TBSCertificate.prototype, "validity", void 0); +__decorate([ + AsnProp({ type: Name }) +], TBSCertificate.prototype, "subject", void 0); +__decorate([ + AsnProp({ type: SubjectPublicKeyInfo }) +], TBSCertificate.prototype, "subjectPublicKeyInfo", void 0); +__decorate([ + AsnProp({ + type: AsnPropTypes.BitString, + context: 1, + implicit: true, + optional: true, + }) +], TBSCertificate.prototype, "issuerUniqueID", void 0); +__decorate([ + AsnProp({ type: AsnPropTypes.BitString, context: 2, implicit: true, optional: true }) +], TBSCertificate.prototype, "subjectUniqueID", void 0); +__decorate([ + AsnProp({ type: Extensions, context: 3, optional: true }) +], TBSCertificate.prototype, "extensions", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/time.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/time.js new file mode 100644 index 0000000..a61e3f1 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/time.js @@ -0,0 +1,41 @@ +import { __decorate } from "tslib"; +import { AsnProp, AsnPropTypes, AsnType, AsnTypeTypes } from "@peculiar/asn1-schema"; +let Time = class Time { + constructor(time) { + if (time) { + if (typeof time === "string" || typeof time === "number" || time instanceof Date) { + const date = new Date(time); + if (date.getUTCFullYear() > 2049) { + this.generalTime = date; + } + else { + this.utcTime = date; + } + } + else { + Object.assign(this, time); + } + } + } + getTime() { + const time = this.utcTime || this.generalTime; + if (!time) { + throw new Error("Cannot get time from CHOICE object"); + } + return time; + } +}; +__decorate([ + AsnProp({ + type: AsnPropTypes.UTCTime, + }) +], Time.prototype, "utcTime", void 0); +__decorate([ + AsnProp({ + type: AsnPropTypes.GeneralizedTime, + }) +], Time.prototype, "generalTime", void 0); +Time = __decorate([ + AsnType({ type: AsnTypeTypes.Choice }) +], Time); +export { Time }; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/types.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/types.js new file mode 100644 index 0000000..569d9a2 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/types.js @@ -0,0 +1,6 @@ +export var Version; +(function (Version) { + Version[Version["v1"] = 0] = "v1"; + Version[Version["v2"] = 1] = "v2"; + Version[Version["v3"] = 2] = "v3"; +})(Version || (Version = {})); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/validity.js b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/validity.js new file mode 100644 index 0000000..b7fe522 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/es2015/validity.js @@ -0,0 +1,19 @@ +import { __decorate } from "tslib"; +import { AsnProp } from "@peculiar/asn1-schema"; +import { Time } from "./time"; +export class Validity { + constructor(params) { + this.notBefore = new Time(new Date()); + this.notAfter = new Time(new Date()); + if (params) { + this.notBefore = new Time(params.notBefore); + this.notAfter = new Time(params.notAfter); + } + } +} +__decorate([ + AsnProp({ type: Time }) +], Validity.prototype, "notBefore", void 0); +__decorate([ + AsnProp({ type: Time }) +], Validity.prototype, "notAfter", void 0); diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/algorithm_identifier.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/algorithm_identifier.d.ts new file mode 100644 index 0000000..e30cbfa --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/algorithm_identifier.d.ts @@ -0,0 +1,17 @@ +export type ParametersType = ArrayBuffer | null; +/** + * ```asn1 + * AlgorithmIdentifier ::= SEQUENCE { + * algorithm OBJECT IDENTIFIER, + * parameters ANY DEFINED BY algorithm OPTIONAL } + * -- contains a value of the type + * -- registered for use with the + * -- algorithm object identifier value + * ``` + */ +export declare class AlgorithmIdentifier { + algorithm: string; + parameters?: ParametersType; + constructor(params?: Partial>); + isEqual(data: unknown): data is this; +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/attribute.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/attribute.d.ts new file mode 100644 index 0000000..eab16a4 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/attribute.d.ts @@ -0,0 +1,13 @@ +/** + * ```asn1 + * Attribute ::= SEQUENCE { + * type AttributeType, + * values SET OF AttributeValue } + * -- at least one value is required + * ``` + */ +export declare class Attribute { + type: string; + values: ArrayBuffer[]; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/certificate.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/certificate.d.ts new file mode 100644 index 0000000..2011873 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/certificate.d.ts @@ -0,0 +1,16 @@ +import { AlgorithmIdentifier } from "./algorithm_identifier"; +import { TBSCertificate } from "./tbs_certificate"; +/** + * ```asn1 + * Certificate ::= SEQUENCE { + * tbsCertificate TBSCertificate, + * signatureAlgorithm AlgorithmIdentifier, + * signatureValue BIT STRING } + * ``` + */ +export declare class Certificate { + tbsCertificate: TBSCertificate; + signatureAlgorithm: AlgorithmIdentifier; + signatureValue: ArrayBuffer; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/certificate_list.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/certificate_list.d.ts new file mode 100644 index 0000000..7275416 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/certificate_list.d.ts @@ -0,0 +1,16 @@ +import { AlgorithmIdentifier } from "./algorithm_identifier"; +import { TBSCertList } from "./tbs_cert_list"; +/** + * ```asn1 + * CertificateList ::= SEQUENCE { + * tbsCertList TBSCertList, + * signatureAlgorithm AlgorithmIdentifier, + * signature BIT STRING } + * ``` + */ +export declare class CertificateList { + tbsCertList: TBSCertList; + signatureAlgorithm: AlgorithmIdentifier; + signature: ArrayBuffer; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extension.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extension.d.ts new file mode 100644 index 0000000..0a6a136 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extension.d.ts @@ -0,0 +1,28 @@ +import { AsnArray, OctetString } from "@peculiar/asn1-schema"; +/** + * ```asn1 + * Extension ::= SEQUENCE { + * extnID OBJECT IDENTIFIER, + * critical BOOLEAN DEFAULT FALSE, + * extnValue OCTET STRING + * -- contains the DER encoding of an ASN.1 value + * -- corresponding to the extension type identified + * -- by extnID + * } + * ``` + */ +export declare class Extension { + static CRITICAL: boolean; + extnID: string; + critical: boolean; + extnValue: OctetString; + constructor(params?: Partial); +} +/** + * ```asn1 + * Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension + * ``` + */ +export declare class Extensions extends AsnArray { + constructor(items?: Extension[]); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/authority_information_access.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/authority_information_access.d.ts new file mode 100644 index 0000000..5c3b18b --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/authority_information_access.d.ts @@ -0,0 +1,29 @@ +import { AsnArray } from "@peculiar/asn1-schema"; +import { GeneralName } from "../general_name"; +/*** + * ```asn1 + * id-pe-authorityInfoAccess OBJECT IDENTIFIER ::= { id-pe 1 } + * ``` + */ +export declare const id_pe_authorityInfoAccess = "1.3.6.1.5.5.7.1.1"; +/** + * ```asn1 + * AccessDescription ::= SEQUENCE { + * accessMethod OBJECT IDENTIFIER, + * accessLocation GeneralName } + * ``` + */ +export declare class AccessDescription { + accessMethod: string; + accessLocation: GeneralName; + constructor(params?: Partial); +} +/** + * ```asn1 + * AuthorityInfoAccessSyntax ::= + * SEQUENCE SIZE (1..MAX) OF AccessDescription + * ``` + */ +export declare class AuthorityInfoAccessSyntax extends AsnArray { + constructor(items?: AccessDescription[]); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/authority_key_identifier.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/authority_key_identifier.d.ts new file mode 100644 index 0000000..c225fbf --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/authority_key_identifier.d.ts @@ -0,0 +1,30 @@ +import { OctetString } from "@peculiar/asn1-schema"; +import { GeneralName } from "../general_name"; +import { CertificateSerialNumber } from "../types"; +/** + * ```asn1 + * id-ce-authorityKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 35 } + * ``` + */ +export declare const id_ce_authorityKeyIdentifier = "2.5.29.35"; +/** + * ```asn1 + * KeyIdentifier ::= OCTET STRING + * ``` + */ +export declare class KeyIdentifier extends OctetString { +} +/** + * ```asn1 + * AuthorityKeyIdentifier ::= SEQUENCE { + * keyIdentifier [0] KeyIdentifier OPTIONAL, + * authorityCertIssuer [1] GeneralNames OPTIONAL, + * authorityCertSerialNumber [2] CertificateSerialNumber OPTIONAL } + * ``` + */ +export declare class AuthorityKeyIdentifier { + keyIdentifier?: KeyIdentifier; + authorityCertIssuer?: GeneralName[]; + authorityCertSerialNumber?: CertificateSerialNumber; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/basic_constraints.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/basic_constraints.d.ts new file mode 100644 index 0000000..c2fb2d4 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/basic_constraints.d.ts @@ -0,0 +1,18 @@ +/** + * ```asn1 + * id-ce-basicConstraints OBJECT IDENTIFIER ::= { id-ce 19 } + * ``` + */ +export declare const id_ce_basicConstraints = "2.5.29.19"; +/** + * ```asn1 + * BasicConstraints ::= SEQUENCE { + * cA BOOLEAN DEFAULT FALSE, + * pathLenConstraint INTEGER (0..MAX) OPTIONAL } + * ``` + */ +export declare class BasicConstraints { + cA: boolean; + pathLenConstraint?: number; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/certificate_issuer.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/certificate_issuer.d.ts new file mode 100644 index 0000000..1ecf27f --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/certificate_issuer.d.ts @@ -0,0 +1,16 @@ +import { GeneralNames } from "../general_names"; +import { GeneralName } from "../general_name"; +/** + * ```asn1 + * id-ce-certificateIssuer OBJECT IDENTIFIER ::= { id-ce 29 } + * ``` + */ +export declare const id_ce_certificateIssuer = "2.5.29.29"; +/** + * ```asn1 + * CertificateIssuer ::= GeneralNames + * ``` + */ +export declare class CertificateIssuer extends GeneralNames { + constructor(items?: GeneralName[]); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/certificate_policies.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/certificate_policies.d.ts new file mode 100644 index 0000000..3fce948 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/certificate_policies.d.ts @@ -0,0 +1,117 @@ +import { AsnArray } from "@peculiar/asn1-schema"; +/** + * ```asn1 + * id-ce-certificatePolicies OBJECT IDENTIFIER ::= { id-ce 32 } + * ``` + */ +export declare const id_ce_certificatePolicies = "2.5.29.32"; +/** + * ```asn1 + * anyPolicy OBJECT IDENTIFIER ::= { id-ce-certificatePolicies 0 } + * ``` + */ +export declare const id_ce_certificatePolicies_anyPolicy = "2.5.29.32.0"; +/** + * ```asn1 + * DisplayText ::= CHOICE { + * ia5String IA5String (SIZE (1..200)), + * visibleString VisibleString (SIZE (1..200)), + * bmpString BMPString (SIZE (1..200)), + * utf8String UTF8String (SIZE (1..200)) } + * ``` + */ +export declare class DisplayText { + ia5String?: string; + visibleString?: string; + bmpString?: string; + utf8String?: string; + constructor(params?: Partial); + toString(): string; +} +/** + * ```asn1 + * NoticeReference ::= SEQUENCE { + * organization DisplayText, + * noticeNumbers SEQUENCE OF INTEGER } + * ``` + */ +export declare class NoticeReference { + organization: DisplayText; + noticeNumbers: number[]; + constructor(params?: Partial); +} +/** + * ```asn1 + * UserNotice ::= SEQUENCE { + * noticeRef NoticeReference OPTIONAL, + * explicitText DisplayText OPTIONAL } + * ``` + */ +export declare class UserNotice { + noticeRef?: NoticeReference; + explicitText?: DisplayText; + constructor(params?: Partial); +} +/** + * ```asn1 + * CPSuri ::= IA5String + * ``` + */ +export type CPSuri = string; +/** + * ```asn1 + * Qualifier ::= CHOICE { + * cPSuri CPSuri, + * userNotice UserNotice } + * ``` + */ +export declare class Qualifier { + cPSuri?: CPSuri; + userNotice?: UserNotice; + constructor(params?: Partial); +} +/** + * ```asn1 + * PolicyQualifierId ::= OBJECT IDENTIFIER ( id-qt-cps | id-qt-unotice ) + * ``` + */ +export type PolicyQualifierId = string; +/** + * ```asn1 + * PolicyQualifierInfo ::= SEQUENCE { + * policyQualifierId PolicyQualifierId, + * qualifier ANY DEFINED BY policyQualifierId } + * ``` + */ +export declare class PolicyQualifierInfo { + policyQualifierId: PolicyQualifierId; + qualifier: ArrayBuffer; + constructor(params?: Partial); +} +/** + * ```asn1 + * CertPolicyId ::= OBJECT IDENTIFIER + * ``` + */ +export type CertPolicyId = string; +/** + * ```asn1 + * PolicyInformation ::= SEQUENCE { + * policyIdentifier CertPolicyId, + * policyQualifiers SEQUENCE SIZE (1..MAX) OF + * PolicyQualifierInfo OPTIONAL } + * ``` + */ +export declare class PolicyInformation { + policyIdentifier: CertPolicyId; + policyQualifiers?: PolicyQualifierInfo[]; + constructor(params?: Partial); +} +/** + * ```asn1 + * CertificatePolicies ::= SEQUENCE SIZE (1..MAX) OF PolicyInformation + * ``` + */ +export declare class CertificatePolicies extends AsnArray { + constructor(items?: PolicyInformation[]); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_delta_indicator.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_delta_indicator.d.ts new file mode 100644 index 0000000..660b3ae --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_delta_indicator.d.ts @@ -0,0 +1,14 @@ +import { CRLNumber } from "./crl_number"; +/** + * ```asn1 + * id-ce-deltaCRLIndicator OBJECT IDENTIFIER ::= { id-ce 27 } + * ``` + */ +export declare const id_ce_deltaCRLIndicator = "2.5.29.27"; +/** + * ```asn1 + * BaseCRLNumber ::= CRLNumber + * ``` + */ +export declare class BaseCRLNumber extends CRLNumber { +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_distribution_points.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_distribution_points.d.ts new file mode 100644 index 0000000..14f55f5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_distribution_points.d.ts @@ -0,0 +1,73 @@ +import { AsnArray, BitString } from "@peculiar/asn1-schema"; +import { RelativeDistinguishedName } from "../name"; +import { GeneralName } from "../general_name"; +/** + * ```asn1 + * id-ce-cRLDistributionPoints OBJECT IDENTIFIER ::= { id-ce 31 } + * ``` + */ +export declare const id_ce_cRLDistributionPoints = "2.5.29.31"; +export type ReasonType = "unused" | "keyCompromise" | "cACompromise" | "affiliationChanged" | "superseded" | "cessationOfOperation" | "certificateHold" | "privilegeWithdrawn" | "aACompromise"; +export declare enum ReasonFlags { + unused = 1, + keyCompromise = 2, + cACompromise = 4, + affiliationChanged = 8, + superseded = 16, + cessationOfOperation = 32, + certificateHold = 64, + privilegeWithdrawn = 128, + aACompromise = 256 +} +/** + * ```asn1 + * ReasonFlags ::= BIT STRING { + * unused (0), + * keyCompromise (1), + * cACompromise (2), + * affiliationChanged (3), + * superseded (4), + * cessationOfOperation (5), + * certificateHold (6), + * privilegeWithdrawn (7), + * aACompromise (8) } + * ``` + */ +export declare class Reason extends BitString { + toJSON(): ReasonType[]; + toString(): string; +} +/** + * ```asn1 + * DistributionPointName ::= CHOICE { + * fullName [0] GeneralNames, + * nameRelativeToCRLIssuer [1] RelativeDistinguishedName } + * ``` + */ +export declare class DistributionPointName { + fullName?: GeneralName[]; + nameRelativeToCRLIssuer?: RelativeDistinguishedName; + constructor(params?: Partial); +} +/** + * ```asn1 + * DistributionPoint ::= SEQUENCE { + * distributionPoint [0] DistributionPointName OPTIONAL, + * reasons [1] ReasonFlags OPTIONAL, + * cRLIssuer [2] GeneralNames OPTIONAL } + * ``` + */ +export declare class DistributionPoint { + distributionPoint?: DistributionPointName; + reasons?: Reason; + cRLIssuer?: GeneralName[]; + constructor(params?: Partial); +} +/** + * ```asn1 + * CRLDistributionPoints ::= SEQUENCE SIZE (1..MAX) OF DistributionPoint + * ``` + */ +export declare class CRLDistributionPoints extends AsnArray { + constructor(items?: DistributionPoint[]); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_freshest.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_freshest.d.ts new file mode 100644 index 0000000..8c4bc3f --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_freshest.d.ts @@ -0,0 +1,15 @@ +import { CRLDistributionPoints, DistributionPoint } from "./crl_distribution_points"; +/** + * ```asn1 + * id-ce-freshestCRL OBJECT IDENTIFIER ::= { id-ce 46 } + * ``` + */ +export declare const id_ce_freshestCRL = "2.5.29.46"; +/** + * ```asn1 + * FreshestCRL ::= CRLDistributionPoints + * ``` + */ +export declare class FreshestCRL extends CRLDistributionPoints { + constructor(items?: DistributionPoint[]); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_issuing_distribution_point.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_issuing_distribution_point.d.ts new file mode 100644 index 0000000..1b2fd2a --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_issuing_distribution_point.d.ts @@ -0,0 +1,31 @@ +import { DistributionPointName, Reason } from "./crl_distribution_points"; +/** + * ```asn1 + * id-ce-issuingDistributionPoint OBJECT IDENTIFIER ::= { id-ce 28 } + * ``` + */ +export declare const id_ce_issuingDistributionPoint = "2.5.29.28"; +/** + * ```asn1 + * IssuingDistributionPoint ::= SEQUENCE { + * distributionPoint [0] DistributionPointName OPTIONAL, + * onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE, + * onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE, + * onlySomeReasons [3] ReasonFlags OPTIONAL, + * indirectCRL [4] BOOLEAN DEFAULT FALSE, + * onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE } + * + * -- at most one of onlyContainsUserCerts, onlyContainsCACerts, + * -- and onlyContainsAttributeCerts may be set to TRUE. + * ``` + */ +export declare class IssuingDistributionPoint { + static readonly ONLY = false; + distributionPoint?: DistributionPointName; + onlyContainsUserCerts: boolean; + onlyContainsCACerts: boolean; + onlySomeReasons?: Reason; + indirectCRL: boolean; + onlyContainsAttributeCerts: boolean; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_number.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_number.d.ts new file mode 100644 index 0000000..37d7e88 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_number.d.ts @@ -0,0 +1,15 @@ +/** + * ```asn1 + * id-ce-cRLNumber OBJECT IDENTIFIER ::= { id-ce 20 } + * ``` + */ +export declare const id_ce_cRLNumber = "2.5.29.20"; +/** + * ```asn1 + * CRLNumber ::= INTEGER (0..MAX) + * ``` + */ +export declare class CRLNumber { + value: number; + constructor(value?: number); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_reason.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_reason.d.ts new file mode 100644 index 0000000..0449fa8 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/crl_reason.d.ts @@ -0,0 +1,40 @@ +/** + * ```asn1 + * id-ce-cRLReasons OBJECT IDENTIFIER ::= { id-ce 21 } + * ``` + */ +export declare const id_ce_cRLReasons = "2.5.29.21"; +export declare enum CRLReasons { + unspecified = 0, + keyCompromise = 1, + cACompromise = 2, + affiliationChanged = 3, + superseded = 4, + cessationOfOperation = 5, + certificateHold = 6, + removeFromCRL = 8, + privilegeWithdrawn = 9, + aACompromise = 10 +} +/** + * ```asn1 + * CRLReason ::= ENUMERATED { + * unspecified (0), + * keyCompromise (1), + * cACompromise (2), + * affiliationChanged (3), + * superseded (4), + * cessationOfOperation (5), + * certificateHold (6), + * -- value 7 is not used + * removeFromCRL (8), + * privilegeWithdrawn (9), + * aACompromise (10) } + * ``` + */ +export declare class CRLReason { + reason: CRLReasons; + constructor(reason?: CRLReasons); + toJSON(): string; + toString(): string; +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/entrust_version_info.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/entrust_version_info.d.ts new file mode 100644 index 0000000..9a3efb6 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/entrust_version_info.d.ts @@ -0,0 +1,39 @@ +import { BitString } from "@peculiar/asn1-schema"; +/** + * ```asn1 + * id-entrust-entrustVersInfo OBJECT IDENTIFIER ::= {iso(1) + * member-body(2) us(840) nortelnetworks(113533) entrust(7) + * nsn-ce(65) 0} + * ``` + */ +export declare const id_entrust_entrustVersInfo = "1.2.840.113533.7.65.0"; +export type EntrustInfoType = "keyUpdateAllowed" | "newExtensions" | "pKIXCertificate"; +export declare enum EntrustInfoFlags { + keyUpdateAllowed = 1, + newExtensions = 2, + pKIXCertificate = 4 +} +/** + * ```asn1 + * EntrustInfoFlags ::= BIT STRING { + * keyUpdateAllowed (0), + * newExtensions (1), -- not used + * pKIXCertificate (2) } -- certificate created by pkix + * ``` + */ +export declare class EntrustInfo extends BitString { + toJSON(): EntrustInfoType[]; + toString(): string; +} +/** + * ```asn1 + * EntrustVersionInfo ::= SEQUENCE { + * entrustVers GeneralString, + * entrustInfoFlags EntrustInfoFlags } + * ``` + */ +export declare class EntrustVersionInfo { + entrustVers: string; + entrustInfoFlags: EntrustInfo; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/extended_key_usage.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/extended_key_usage.d.ts new file mode 100644 index 0000000..2faa9b2 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/extended_key_usage.d.ts @@ -0,0 +1,80 @@ +import { AsnArray } from "@peculiar/asn1-schema"; +/** + * ```asn1 + * id-ce-extKeyUsage OBJECT IDENTIFIER ::= { id-ce 37 } + * ``` + */ +export declare const id_ce_extKeyUsage = "2.5.29.37"; +/** + * ```asn1 + * KeyPurposeId ::= OBJECT IDENTIFIER + * ``` + */ +export type KeyPurposeId = string; +/** + * ```asn1 + * ExtKeyUsageSyntax ::= SEQUENCE SIZE (1..MAX) OF KeyPurposeId + * ``` + */ +export declare class ExtendedKeyUsage extends AsnArray { + constructor(items?: string[]); +} +/** + * ```asn1 + * anyExtendedKeyUsage OBJECT IDENTIFIER ::= { id-ce-extKeyUsage 0 } + * ``` + */ +export declare const anyExtendedKeyUsage = "2.5.29.37.0"; +/** + * ```asn1 + * id-kp-serverAuth OBJECT IDENTIFIER ::= { id-kp 1 } + * -- TLS WWW server authentication + * -- Key usage bits that may be consistent: digitalSignature, + * -- keyEncipherment or keyAgreement + * ``` + */ +export declare const id_kp_serverAuth = "1.3.6.1.5.5.7.3.1"; +/** + * ```asn1 + * id-kp-clientAuth OBJECT IDENTIFIER ::= { id-kp 2 } + * -- TLS WWW client authentication + * -- Key usage bits that may be consistent: digitalSignature + * -- and/or keyAgreement + * ``` + */ +export declare const id_kp_clientAuth = "1.3.6.1.5.5.7.3.2"; +/** + * ```asn1 + * id-kp-codeSigning OBJECT IDENTIFIER ::= { id-kp 3 } + * -- Signing of downloadable executable code + * -- Key usage bits that may be consistent: digitalSignature + * ``` + */ +export declare const id_kp_codeSigning = "1.3.6.1.5.5.7.3.3"; +/** + * ```asn1 + * id-kp-emailProtection OBJECT IDENTIFIER ::= { id-kp 4 } + * -- Email protection + * -- Key usage bits that may be consistent: digitalSignature, + * -- nonRepudiation, and/or (keyEncipherment or keyAgreement) + * ``` + */ +export declare const id_kp_emailProtection = "1.3.6.1.5.5.7.3.4"; +/** + * ```asn1 + * id-kp-timeStamping OBJECT IDENTIFIER ::= { id-kp 8 } + * -- Binding the hash of an object to a time + * -- Key usage bits that may be consistent: digitalSignature + * -- and/or nonRepudiation + * ``` + */ +export declare const id_kp_timeStamping = "1.3.6.1.5.5.7.3.8"; +/** + * ```asn1 + * id-kp-OCSPSigning OBJECT IDENTIFIER ::= { id-kp 9 } + * -- Signing OCSP responses + * -- Key usage bits that may be consistent: digitalSignature + * -- and/or nonRepudiation + * ``` + */ +export declare const id_kp_OCSPSigning = "1.3.6.1.5.5.7.3.9"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/index.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/index.d.ts new file mode 100644 index 0000000..21a5d10 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/index.d.ts @@ -0,0 +1,25 @@ +export * from "./authority_information_access"; +export * from "./authority_key_identifier"; +export * from "./basic_constraints"; +export * from "./certificate_issuer"; +export * from "./certificate_policies"; +export * from "./crl_delta_indicator"; +export * from "./crl_distribution_points"; +export * from "./crl_freshest"; +export * from "./crl_issuing_distribution_point"; +export * from "./crl_number"; +export * from "./crl_reason"; +export * from "./extended_key_usage"; +export * from "./inhibit_any_policy"; +export * from "./invalidity_date"; +export * from "./issuer_alternative_name"; +export * from "./key_usage"; +export * from "./name_constraints"; +export * from "./policy_constraints"; +export * from "./policy_mappings"; +export * from "./subject_alternative_name"; +export * from "./subject_directory_attributes"; +export * from "./subject_key_identifier"; +export * from "./private_key_usage_period"; +export * from "./entrust_version_info"; +export * from "./subject_info_access"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/inhibit_any_policy.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/inhibit_any_policy.d.ts new file mode 100644 index 0000000..27c1441 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/inhibit_any_policy.d.ts @@ -0,0 +1,15 @@ +/** + * ```asn1 + * id-ce-inhibitAnyPolicy OBJECT IDENTIFIER ::= { id-ce 54 } + * ``` + */ +export declare const id_ce_inhibitAnyPolicy = "2.5.29.54"; +/** + * ```asn1 + * InhibitAnyPolicy ::= SkipCerts + * ``` + */ +export declare class InhibitAnyPolicy { + value: ArrayBuffer; + constructor(value?: ArrayBuffer); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/invalidity_date.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/invalidity_date.d.ts new file mode 100644 index 0000000..e79588b --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/invalidity_date.d.ts @@ -0,0 +1,15 @@ +/** + * ```asn1 + * id-ce-invalidityDate OBJECT IDENTIFIER ::= { id-ce 24 } + * ``` + */ +export declare const id_ce_invalidityDate = "2.5.29.24"; +/** + * ```asn1 + * InvalidityDate ::= GeneralizedTime + * ``` + */ +export declare class InvalidityDate { + value: Date; + constructor(value?: Date); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/issuer_alternative_name.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/issuer_alternative_name.d.ts new file mode 100644 index 0000000..2d80212 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/issuer_alternative_name.d.ts @@ -0,0 +1,16 @@ +import { GeneralNames } from "../general_names"; +import { GeneralName } from "../general_name"; +/** + * ```asn1 + * id-ce-issuerAltName OBJECT IDENTIFIER ::= { id-ce 18 } + * ``` + */ +export declare const id_ce_issuerAltName = "2.5.29.18"; +/** + * ```asn1 + * IssuerAltName ::= GeneralNames + * ``` + */ +export declare class IssueAlternativeName extends GeneralNames { + constructor(items?: GeneralName[]); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/key_usage.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/key_usage.d.ts new file mode 100644 index 0000000..94369c3 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/key_usage.d.ts @@ -0,0 +1,38 @@ +import { BitString } from "@peculiar/asn1-schema"; +/** + * ```asn1 + * id-ce-keyUsage OBJECT IDENTIFIER ::= { id-ce 15 } + * ``` + */ +export declare const id_ce_keyUsage = "2.5.29.15"; +export type KeyUsageType = "digitalSignature" | "nonRepudiation" | "keyEncipherment" | "dataEncipherment" | "keyAgreement" | "keyCertSign" | "crlSign" | "encipherOnly" | "decipherOnly"; +export declare enum KeyUsageFlags { + digitalSignature = 1, + nonRepudiation = 2, + keyEncipherment = 4, + dataEncipherment = 8, + keyAgreement = 16, + keyCertSign = 32, + cRLSign = 64, + encipherOnly = 128, + decipherOnly = 256 +} +/** + * ```asn1 + * KeyUsage ::= BIT STRING { + * digitalSignature (0), + * nonRepudiation (1), -- recent editions of X.509 have + * -- renamed this bit to contentCommitment + * keyEncipherment (2), + * dataEncipherment (3), + * keyAgreement (4), + * keyCertSign (5), + * cRLSign (6), + * encipherOnly (7), + * decipherOnly (8) } + * ``` + */ +export declare class KeyUsage extends BitString { + toJSON(): KeyUsageType[]; + toString(): string; +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/name_constraints.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/name_constraints.d.ts new file mode 100644 index 0000000..3a81daf --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/name_constraints.d.ts @@ -0,0 +1,48 @@ +import { AsnArray } from "@peculiar/asn1-schema"; +import { GeneralName } from "../general_name"; +/** + * ```asn1 + * id-ce-nameConstraints OBJECT IDENTIFIER ::= { id-ce 30 } + * ``` + */ +export declare const id_ce_nameConstraints = "2.5.29.30"; +/** + * ```asn1 + * BaseDistance ::= INTEGER (0..MAX) + * ``` + */ +export type BaseDistance = number; +/** + * ```asn1 + * GeneralSubtree ::= SEQUENCE { + * base GeneralName, + * minimum [0] BaseDistance DEFAULT 0, + * maximum [1] BaseDistance OPTIONAL } + * ``` + */ +export declare class GeneralSubtree { + base: GeneralName; + minimum: BaseDistance; + maximum?: BaseDistance; + constructor(params?: Partial); +} +/** + * ```asn1 + * GeneralSubtrees ::= SEQUENCE SIZE (1..MAX) OF GeneralSubtree + * ``` + */ +export declare class GeneralSubtrees extends AsnArray { + constructor(items?: GeneralSubtree[]); +} +/** + * ```asn1 + * NameConstraints ::= SEQUENCE { + * permittedSubtrees [0] GeneralSubtrees OPTIONAL, + * excludedSubtrees [1] GeneralSubtrees OPTIONAL } + * ``` + */ +export declare class NameConstraints { + permittedSubtrees?: GeneralSubtrees; + excludedSubtrees?: GeneralSubtrees; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/policy_constraints.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/policy_constraints.d.ts new file mode 100644 index 0000000..44daea1 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/policy_constraints.d.ts @@ -0,0 +1,24 @@ +/** + * ```asn1 + * id-ce-policyConstraints OBJECT IDENTIFIER ::= { id-ce 36 } + * ``` + */ +export declare const id_ce_policyConstraints = "2.5.29.36"; +/** + * ```asn1 + * SkipCerts ::= INTEGER (0..MAX) + * ``` + */ +export type SkipCerts = ArrayBuffer; +/** + * ```asn1 + * PolicyConstraints ::= SEQUENCE { + * requireExplicitPolicy [0] SkipCerts OPTIONAL, + * inhibitPolicyMapping [1] SkipCerts OPTIONAL } + * ``` + */ +export declare class PolicyConstraints { + requireExplicitPolicy?: SkipCerts; + inhibitPolicyMapping?: SkipCerts; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/policy_mappings.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/policy_mappings.d.ts new file mode 100644 index 0000000..b867993 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/policy_mappings.d.ts @@ -0,0 +1,28 @@ +import { AsnArray } from "@peculiar/asn1-schema"; +import { CertPolicyId } from "./certificate_policies"; +/** + * ```asn1 + * id-ce-policyMappings OBJECT IDENTIFIER ::= { id-ce 33 } + * ``` + */ +export declare const id_ce_policyMappings = "2.5.29.33"; +/** + * ```asn1 + * PolicyMapping ::= SEQUENCE { + * issuerDomainPolicy CertPolicyId, + * subjectDomainPolicy CertPolicyId } + * ``` + */ +export declare class PolicyMapping { + issuerDomainPolicy: CertPolicyId; + subjectDomainPolicy: CertPolicyId; + constructor(params?: Partial); +} +/** + * ```asn1 + * PolicyMappings ::= SEQUENCE SIZE (1..MAX) OF PolicyMapping + * ``` + */ +export declare class PolicyMappings extends AsnArray { + constructor(items?: PolicyMapping[]); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/private_key_usage_period.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/private_key_usage_period.d.ts new file mode 100644 index 0000000..86e840d --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/private_key_usage_period.d.ts @@ -0,0 +1,18 @@ +/** + * ```asn1 + * id-ce-privateKeyUsagePeriod OBJECT IDENTIFIER ::= { id-ce 16 } + * ``` + */ +export declare const id_ce_privateKeyUsagePeriod = "2.5.29.16"; +/** + * ```asn1 + * PrivateKeyUsagePeriod ::= SEQUENCE { + * notBefore [0] GeneralizedTime OPTIONAL, + * notAfter [1] GeneralizedTime OPTIONAL } + * ``` + */ +export declare class PrivateKeyUsagePeriod { + notBefore?: Date; + notAfter?: Date; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/subject_alternative_name.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/subject_alternative_name.d.ts new file mode 100644 index 0000000..0da8aa9 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/subject_alternative_name.d.ts @@ -0,0 +1,16 @@ +import { GeneralNames } from "../general_names"; +import { GeneralName } from "../general_name"; +/** + * ```asn1 + * id-ce-subjectAltName OBJECT IDENTIFIER ::= { id-ce 17 } + * ``` + */ +export declare const id_ce_subjectAltName = "2.5.29.17"; +/** + * ```asn1 + * SubjectAltName ::= GeneralNames + * ``` + */ +export declare class SubjectAlternativeName extends GeneralNames { + constructor(items?: GeneralName[]); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/subject_directory_attributes.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/subject_directory_attributes.d.ts new file mode 100644 index 0000000..b6904f8 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/subject_directory_attributes.d.ts @@ -0,0 +1,16 @@ +import { AsnArray } from "@peculiar/asn1-schema"; +import { Attribute } from "../attribute"; +/** + * ```asn1 + * id-ce-subjectDirectoryAttributes OBJECT IDENTIFIER ::= { id-ce 9 } + * ``` + */ +export declare const id_ce_subjectDirectoryAttributes = "2.5.29.9"; +/** + * ```asn1 + * SubjectDirectoryAttributes ::= SEQUENCE SIZE (1..MAX) OF Attribute + * ``` + */ +export declare class SubjectDirectoryAttributes extends AsnArray { + constructor(items?: Attribute[]); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/subject_info_access.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/subject_info_access.d.ts new file mode 100644 index 0000000..bbcd937 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/subject_info_access.d.ts @@ -0,0 +1,17 @@ +import { AsnArray } from "@peculiar/asn1-schema"; +import { AccessDescription } from "./authority_information_access"; +/** + * ```asn1 + * id-pe-subjectInfoAccess OBJECT IDENTIFIER ::= { id-pe 11 } + * ``` + */ +export declare const id_pe_subjectInfoAccess = "1.3.6.1.5.5.7.1.11"; +/** + * ```asn1 + * SubjectInfoAccessSyntax ::= + * SEQUENCE SIZE (1..MAX) OF AccessDescription + * ``` + */ +export declare class SubjectInfoAccessSyntax extends AsnArray { + constructor(items?: AccessDescription[]); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/subject_key_identifier.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/subject_key_identifier.d.ts new file mode 100644 index 0000000..955a15d --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/extensions/subject_key_identifier.d.ts @@ -0,0 +1,14 @@ +import { KeyIdentifier } from "./authority_key_identifier"; +/** + * ```asn1 + * id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::= { id-ce 14 } + * ``` + */ +export declare const id_ce_subjectKeyIdentifier = "2.5.29.14"; +/** + * ```asn1 + * SubjectKeyIdentifier ::= KeyIdentifier + * ``` + */ +export declare class SubjectKeyIdentifier extends KeyIdentifier { +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/general_name.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/general_name.d.ts new file mode 100644 index 0000000..abf626b --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/general_name.d.ts @@ -0,0 +1,57 @@ +import { IAsnConverter } from "@peculiar/asn1-schema"; +import { DirectoryString, Name } from "./name"; +export declare const AsnIpConverter: IAsnConverter; +/** + * ```asn1 + * OtherName ::= SEQUENCE { + * type-id OBJECT IDENTIFIER, + * value [0] EXPLICIT ANY DEFINED BY type-id } + * ``` + */ +export declare class OtherName { + typeId: string; + value: ArrayBuffer; + constructor(params?: Partial); +} +/** + * ```asn1 + * EDIPartyName ::= SEQUENCE { + * nameAssigner [0] DirectoryString OPTIONAL, + * partyName [1] DirectoryString } + * ``` + */ +export declare class EDIPartyName { + nameAssigner?: DirectoryString; + partyName: DirectoryString; + constructor(params?: Partial); +} +/** + * ```asn1 + * GeneralName ::= CHOICE { + * otherName [0] OtherName, + * rfc822Name [1] IA5String, + * dNSName [2] IA5String, + * x400Address [3] ORAddress, + * directoryName [4] Name, + * ediPartyName [5] EDIPartyName, + * uniformResourceIdentifier [6] IA5String, + * iPAddress [7] OCTET STRING, + * registeredID [8] OBJECT IDENTIFIER } + * ``` + */ +export declare class GeneralName { + otherName?: OtherName; + rfc822Name?: string; + dNSName?: string; + x400Address?: ArrayBuffer; + directoryName?: Name; + ediPartyName?: EDIPartyName; + uniformResourceIdentifier?: string; + iPAddress?: string; + registeredID?: string; + /** + * + * @param params + */ + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/general_names.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/general_names.d.ts new file mode 100644 index 0000000..cfd01cd --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/general_names.d.ts @@ -0,0 +1,10 @@ +import { GeneralName } from "./general_name"; +import { AsnArray } from "@peculiar/asn1-schema"; +/** + * ```asn1 + * GeneralNames ::= SEQUENCE SIZE (1..MAX) OF GeneralName + * ``` + */ +export declare class GeneralNames extends AsnArray { + constructor(items?: GeneralName[]); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/index.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/index.d.ts new file mode 100644 index 0000000..1f29197 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/index.d.ts @@ -0,0 +1,16 @@ +export * from "./extensions"; +export * from "./algorithm_identifier"; +export * from "./attribute"; +export * from "./certificate"; +export * from "./certificate_list"; +export * from "./extension"; +export * from "./general_name"; +export * from "./general_names"; +export * from "./name"; +export * from "./object_identifiers"; +export * from "./subject_public_key_info"; +export * from "./tbs_cert_list"; +export * from "./tbs_certificate"; +export * from "./time"; +export * from "./types"; +export * from "./validity"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/ip_converter.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/ip_converter.d.ts new file mode 100644 index 0000000..8195c38 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/ip_converter.d.ts @@ -0,0 +1,12 @@ +export declare class IpConverter { + private static isIPv4; + private static parseIPv4; + private static parseIPv6; + private static expandIPv6; + private static formatIPv6; + private static compressIPv6; + private static parseCIDR; + private static decodeIP; + static toString(buf: ArrayBuffer): string; + static fromString(text: string): ArrayBuffer; +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/name.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/name.d.ts new file mode 100644 index 0000000..eb90ae5 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/name.d.ts @@ -0,0 +1,78 @@ +import { AsnArray } from "@peculiar/asn1-schema"; +/** + * ```asn1 + * AttributeType ::= OBJECT IDENTIFIER + * ``` + */ +export type AttributeType = string; +/** + * ```asn1 + * DirectoryString ::= CHOICE { + * teletexString TeletexString (SIZE (1..MAX)), + * printableString PrintableString (SIZE (1..MAX)), + * universalString UniversalString (SIZE (1..MAX)), + * utf8String UTF8String (SIZE (1..MAX)), + * bmpString BMPString (SIZE (1..MAX)) } + * ``` + */ +export declare class DirectoryString { + teletexString?: string; + printableString?: string; + universalString?: string; + utf8String?: string; + bmpString?: string; + constructor(params?: Partial); + /** + * Returns a string representation of an object. + */ + toString(): string; +} +/** + * ```asn1 + * AttributeValue ::= ANY -- DEFINED BY AttributeType + * in general it will be a DirectoryString + * ``` + */ +export declare class AttributeValue extends DirectoryString { + ia5String?: string; + anyValue?: ArrayBuffer; + constructor(params?: Partial); + toString(): string; +} +/** + * ```asn1 + * AttributeTypeAndValue ::= SEQUENCE { + * type AttributeType, + * value AttributeValue } + * ``` + */ +export declare class AttributeTypeAndValue { + type: string; + value: AttributeValue; + constructor(params?: Partial); +} +/** + * ```asn1 + * RelativeDistinguishedName ::= SET SIZE (1..MAX) OF AttributeTypeAndValue + * ``` + */ +export declare class RelativeDistinguishedName extends AsnArray { + constructor(items?: AttributeTypeAndValue[]); +} +/** + * ```asn1 + * RDNSequence ::= SEQUENCE OF RelativeDistinguishedName + * ``` + */ +export declare class RDNSequence extends AsnArray { + constructor(items?: RelativeDistinguishedName[]); +} +/** + * ```asn1 + * Name ::= CHOICE { -- only one possibility for now -- + * rdnSequence RDNSequence } + * ``` + */ +export declare class Name extends RDNSequence { + constructor(items?: RelativeDistinguishedName[]); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/object_identifiers.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/object_identifiers.d.ts new file mode 100644 index 0000000..c14603c --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/object_identifiers.d.ts @@ -0,0 +1,80 @@ +/** + * ```asn1 + * id-pkix OBJECT IDENTIFIER ::= + * { iso(1) identified-organization(3) dod(6) internet(1) + * security(5) mechanisms(5) pkix(7) } + * ``` + */ +export declare const id_pkix = "1.3.6.1.5.5.7"; +/** + * ```asn1 + * id-pe OBJECT IDENTIFIER ::= { id-pkix 1 } + * -- arc for private certificate extensions + * ``` + */ +export declare const id_pe = "1.3.6.1.5.5.7.1"; +/** + * ```asn1 + * id-qt OBJECT IDENTIFIER ::= { id-pkix 2 } + * -- arc for policy qualifier types + * ``` + */ +export declare const id_qt = "1.3.6.1.5.5.7.2"; +/** + * ```asn1 + * id-kp OBJECT IDENTIFIER ::= { id-pkix 3 } + * -- arc for extended key purpose OIDS + * ``` + */ +export declare const id_kp = "1.3.6.1.5.5.7.3"; +/** + * ```asn1 + * id-ad OBJECT IDENTIFIER ::= { id-pkix 48 } + * -- arc for access descriptors + * ``` + */ +export declare const id_ad = "1.3.6.1.5.5.7.48"; +/** + * ```asn1 + * id-qt-cps OBJECT IDENTIFIER ::= { id-qt 1 } + * -- OID for CPS qualifier + * ``` + */ +export declare const id_qt_csp = "1.3.6.1.5.5.7.2.1"; +/** + * ```asn1 + * id-qt-unotice OBJECT IDENTIFIER ::= { id-qt 2 } + * -- OID for user notice qualifier + * ``` + */ +export declare const id_qt_unotice = "1.3.6.1.5.5.7.2.2"; +/** + * ```asn1 + * id-ad-ocsp OBJECT IDENTIFIER ::= { id-ad 1 } + * ``` + */ +export declare const id_ad_ocsp = "1.3.6.1.5.5.7.48.1"; +/** + * ```asn1 + * id-ad-caIssuers OBJECT IDENTIFIER ::= { id-ad 2 } + * ``` + */ +export declare const id_ad_caIssuers = "1.3.6.1.5.5.7.48.2"; +/** + * ```asn1 + * id-ad-timeStamping OBJECT IDENTIFIER ::= { id-ad 3 } + * ``` + */ +export declare const id_ad_timeStamping = "1.3.6.1.5.5.7.48.3"; +/** + * ```asn1 + * id-ad-caRepository OBJECT IDENTIFIER ::= { id-ad 5 } + * ``` + */ +export declare const id_ad_caRepository = "1.3.6.1.5.5.7.48.5"; +/** + * ```asn1 + * id-ce OBJECT IDENTIFIER ::= {joint-iso-ccitt(2) ds(5) 29} + * ``` + */ +export declare const id_ce = "2.5.29"; diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/subject_public_key_info.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/subject_public_key_info.d.ts new file mode 100644 index 0000000..fd99abc --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/subject_public_key_info.d.ts @@ -0,0 +1,13 @@ +import { AlgorithmIdentifier } from "./algorithm_identifier"; +/** + * ```asn1 + * SubjectPublicKeyInfo ::= SEQUENCE { + * algorithm AlgorithmIdentifier, + * subjectPublicKey BIT STRING } + * ``` + */ +export declare class SubjectPublicKeyInfo { + algorithm: AlgorithmIdentifier; + subjectPublicKey: ArrayBuffer; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/tbs_cert_list.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/tbs_cert_list.d.ts new file mode 100644 index 0000000..bbb6184 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/tbs_cert_list.d.ts @@ -0,0 +1,57 @@ +import { AlgorithmIdentifier } from "./algorithm_identifier"; +import { Name } from "./name"; +import { Time } from "./time"; +import { Extension } from "./extension"; +import { Version } from "./types"; +/** + * Revoked certificate + * ```asn1 + * SEQUENCE { + * userCertificate CertificateSerialNumber, + * revocationDate Time, + * crlEntryExtensions Extensions OPTIONAL + * -- if present, version MUST be v2 + * } + * ``` + */ +export declare class RevokedCertificate { + /** + * Serial number of the certificate + */ + userCertificate: ArrayBuffer; + /** + * Revocation date + */ + revocationDate: Time; + crlEntryExtensions?: Extension[]; + constructor(params?: Partial); +} +/** + * ```asn1 + * TBSCertList ::= SEQUENCE { + * version Version OPTIONAL, + * -- if present, MUST be v2 + * signature AlgorithmIdentifier, + * issuer Name, + * thisUpdate Time, + * nextUpdate Time OPTIONAL, + * revokedCertificates SEQUENCE OF SEQUENCE { + * userCertificate CertificateSerialNumber, + * revocationDate Time, + * crlEntryExtensions Extensions OPTIONAL + * -- if present, version MUST be v2 + * } OPTIONAL, + * crlExtensions [0] Extensions OPTIONAL } + * -- if present, version MUST be v2 + * ``` + */ +export declare class TBSCertList { + version?: Version; + signature: AlgorithmIdentifier; + issuer: Name; + thisUpdate: Time; + nextUpdate?: Time; + revokedCertificates?: RevokedCertificate[]; + crlExtensions?: Extension[]; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/tbs_certificate.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/tbs_certificate.d.ts new file mode 100644 index 0000000..2bd228a --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/tbs_certificate.d.ts @@ -0,0 +1,37 @@ +import { AlgorithmIdentifier } from "./algorithm_identifier"; +import { Name } from "./name"; +import { SubjectPublicKeyInfo } from "./subject_public_key_info"; +import { Validity } from "./validity"; +import { Extensions } from "./extension"; +import { Version, CertificateSerialNumber, UniqueIdentifier } from "./types"; +/** + * ```asn1 + * TBSCertificate ::= SEQUENCE { + * version [0] Version DEFAULT v1, + * serialNumber CertificateSerialNumber, + * signature AlgorithmIdentifier, + * issuer Name, + * validity Validity, + * subject Name, + * subjectPublicKeyInfo SubjectPublicKeyInfo, + * issuerUniqueID [1] IMPLICIT UniqueIdentifier OPTIONAL, + * -- If present, version MUST be v2 or v3 + * subjectUniqueID [2] IMPLICIT UniqueIdentifier OPTIONAL, + * -- If present, version MUST be v2 or v3 + * extensions [3] Extensions OPTIONAL + * -- If present, version MUST be v3 -- } + * ``` + */ +export declare class TBSCertificate { + version: Version; + serialNumber: CertificateSerialNumber; + signature: AlgorithmIdentifier; + issuer: Name; + validity: Validity; + subject: Name; + subjectPublicKeyInfo: SubjectPublicKeyInfo; + issuerUniqueID?: UniqueIdentifier; + subjectUniqueID?: UniqueIdentifier; + extensions?: Extensions; + constructor(params?: Partial); +} diff --git a/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/time.d.ts b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/time.d.ts new file mode 100644 index 0000000..3b2bf75 --- /dev/null +++ b/api.hyungi.net/node_modules/@peculiar/asn1-x509/build/types/time.d.ts @@ -0,0 +1,13 @@ +/** + * ```asn1 + * Time ::= CHOICE { + * utcTime UTCTime, + * generalTime GeneralizedTime } + * ``` + */ +export declare class Time { + utcTime?: Date; + generalTime?: Date; + constructor(time?: Date | string | number | Partial