Compare commits
No commits in common. "oho" and "master" have entirely different histories.
3050 changed files with 1113 additions and 3839782 deletions
64
.gitignore
vendored
64
.gitignore
vendored
|
|
@ -1,64 +0,0 @@
|
|||
# ----------------------
|
||||
# General ignores
|
||||
# ----------------------
|
||||
|
||||
# Ignore any environment files with .env extensions globally
|
||||
*.env
|
||||
|
||||
# Ignore markdown files if you want (usually you keep .md, so exclude these lines if you want to track docs)
|
||||
# *.md
|
||||
|
||||
# ----------------------
|
||||
# Backend specific ignores
|
||||
# ----------------------
|
||||
|
||||
# Ignore backend env file explicitly
|
||||
Backend/.env
|
||||
|
||||
# Node modules and logs (optional in root if only backend uses node)
|
||||
# If Backend/.gitignore already has node_modules, this can be omitted here
|
||||
# Backend/node_modules/
|
||||
# Backend/logs/
|
||||
|
||||
# ----------------------
|
||||
# Frontend specific ignores
|
||||
# ----------------------
|
||||
|
||||
# Dart/Flutter environment config to ignore
|
||||
Frontend/lib/other_pages/enviroment.dart
|
||||
|
||||
# Flutter build folders
|
||||
Frontend/.dart_tool/
|
||||
Frontend/build/
|
||||
Frontend/.packages
|
||||
Frontend/.flutter-plugins
|
||||
Frontend/.flutter-plugins-dependencies
|
||||
Frontend/.idea/
|
||||
Frontend/ios/Pods/
|
||||
Frontend/pubspec.lock
|
||||
|
||||
# Android specific (sometimes frontend has android/ folder)
|
||||
Frontend/android/.gradle/
|
||||
Frontend/android/app/build/
|
||||
|
||||
# ----------------------
|
||||
# IDE and OS files
|
||||
# ----------------------
|
||||
|
||||
# VSCode settings folder
|
||||
.vscode/
|
||||
|
||||
# macOS
|
||||
.DS_Store
|
||||
|
||||
# Linux
|
||||
*~
|
||||
|
||||
# Windows
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
|
||||
# ----------------------
|
||||
# Logs
|
||||
# ----------------------
|
||||
*.log
|
||||
28
.vscode/launch.json
vendored
Normal file
28
.vscode/launch.json
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "monarch",
|
||||
"cwd": "Frontend\\monarch",
|
||||
"request": "launch",
|
||||
"type": "dart"
|
||||
},
|
||||
{
|
||||
"name": "monarch (profile mode)",
|
||||
"cwd": "Frontend\\monarch",
|
||||
"request": "launch",
|
||||
"type": "dart",
|
||||
"flutterMode": "profile"
|
||||
},
|
||||
{
|
||||
"name": "monarch (release mode)",
|
||||
"cwd": "Frontend\\monarch",
|
||||
"request": "launch",
|
||||
"type": "dart",
|
||||
"flutterMode": "release"
|
||||
}
|
||||
]
|
||||
}
|
||||
7
.vscode/settings.json
vendored
7
.vscode/settings.json
vendored
|
|
@ -1,7 +0,0 @@
|
|||
{
|
||||
"postman.settings.dotenv-detection-notification-visibility": false,
|
||||
"python.analysis.extraPaths": [
|
||||
"./AI/Rules/transaction_",
|
||||
"./AI/Rules/transaction_"
|
||||
]
|
||||
}
|
||||
Binary file not shown.
|
|
@ -1,290 +0,0 @@
|
|||
# vendor_rules.py
|
||||
def get_category_from_rules(vendor_name: str):
|
||||
if not vendor_name:
|
||||
return None
|
||||
|
||||
vendor = vendor_name.lower()
|
||||
|
||||
# Food , Shopping , Bills , Travel , Entertainment , Other
|
||||
mapping = {
|
||||
# ---------- FOOD ----------
|
||||
"mcdonalds": "Food",
|
||||
"kfc": "Food",
|
||||
"bakers":"Food",
|
||||
"hotel": "Food",
|
||||
"restaurant": "Food",
|
||||
"canteen": "Food",
|
||||
"dhaba": "Food",
|
||||
"mess": "Food",
|
||||
"biryani": "Food",
|
||||
"tiffins": "Food",
|
||||
"cafe": "Food",
|
||||
"coffee": "Food",
|
||||
"tea stall": "Food",
|
||||
"bakery": "Food",
|
||||
"sweets": "Food",
|
||||
"ice cream": "Food",
|
||||
"juice": "Food",
|
||||
"snacks": "Food",
|
||||
"lunch": "Food",
|
||||
"dinner": "Food",
|
||||
"food court": "Food",
|
||||
"catering": "Food",
|
||||
"canteen store": "Food",
|
||||
"dominos": "Food",
|
||||
"pizza hut": "Food",
|
||||
"subway": "Food",
|
||||
"starbucks": "Food",
|
||||
"cafe coffee day": "Food",
|
||||
"ccd": "Food",
|
||||
"swiggy": "Food",
|
||||
"zomato": "Food",
|
||||
"ubereats": "Food",
|
||||
"barbeque nation": "Food",
|
||||
"wow momo": "Food",
|
||||
"cream stone": "Food",
|
||||
"bikanervala": "Food",
|
||||
"haldiram": "Food",
|
||||
"paradise biryani": "Food",
|
||||
"behrouz biryani": "Food",
|
||||
"freshmenu": "Food",
|
||||
"burger king": "Food",
|
||||
"taco bell": "Food",
|
||||
"sagar ratna": "Food",
|
||||
"shs canteen": "Food",
|
||||
"babai hotel": "Food",
|
||||
"taj hotel": "Food",
|
||||
"itc hotel": "Food",
|
||||
"novotel": "Food",
|
||||
"radisson": "Food",
|
||||
"trident": "Food",
|
||||
|
||||
# ---------- SHOPPING ----------
|
||||
"mall": "Shopping",
|
||||
"store": "Shopping",
|
||||
"supermarket": "Shopping",
|
||||
"bazaar": "Shopping",
|
||||
"market": "Shopping",
|
||||
"mart": "Shopping",
|
||||
"fashion": "Shopping",
|
||||
"clothing": "Shopping",
|
||||
"footwear": "Shopping",
|
||||
"electronics": "Shopping",
|
||||
"mobile store": "Shopping",
|
||||
"accessories": "Shopping",
|
||||
"furniture": "Shopping",
|
||||
"home decor": "Shopping",
|
||||
"appliances": "Shopping",
|
||||
"cosmetics": "Shopping",
|
||||
"salon": "Shopping",
|
||||
"boutique": "Shopping",
|
||||
"jewellery": "Shopping",
|
||||
"stationery": "Shopping",
|
||||
"amazon": "Shopping",
|
||||
"flipkart": "Shopping",
|
||||
"myntra": "Shopping",
|
||||
"ajio": "Shopping",
|
||||
"tatacliq": "Shopping",
|
||||
"meesho": "Shopping",
|
||||
"snapdeal": "Shopping",
|
||||
"shopclues": "Shopping",
|
||||
"bigbasket": "Shopping",
|
||||
"grofers": "Shopping",
|
||||
"dmart": "Shopping",
|
||||
"reliance fresh": "Shopping",
|
||||
"more supermarket": "Shopping",
|
||||
"spencers": "Shopping",
|
||||
"vishal mega mart": "Shopping",
|
||||
"zudio": "Shopping",
|
||||
"pantaloons": "Shopping",
|
||||
"lifestyle": "Shopping",
|
||||
"shoppers stop": "Shopping",
|
||||
"westside": "Shopping",
|
||||
"max fashion": "Shopping",
|
||||
"nike": "Shopping",
|
||||
"adidas": "Shopping",
|
||||
"puma": "Shopping",
|
||||
"reebok": "Shopping",
|
||||
"levi": "Shopping",
|
||||
"h&m": "Shopping",
|
||||
"zara": "Shopping",
|
||||
"decathlon": "Shopping",
|
||||
"ikea": "Shopping",
|
||||
|
||||
# ---------- BILLS ----------
|
||||
"electricity": "Bills",
|
||||
"power": "Bills",
|
||||
"water bill": "Bills",
|
||||
"internet": "Bills",
|
||||
"wifi": "Bills",
|
||||
"broadband": "Bills",
|
||||
"dth": "Bills",
|
||||
"recharge": "Bills",
|
||||
"gas": "Bills",
|
||||
"cylinder": "Bills",
|
||||
"mobile bill": "Bills",
|
||||
"postpaid": "Bills",
|
||||
"prepaid": "Bills",
|
||||
"telecom": "Bills",
|
||||
"landline": "Bills",
|
||||
"sewage": "Bills",
|
||||
"municipal": "Bills",
|
||||
"property tax": "Bills",
|
||||
"credit card": "Bills",
|
||||
"loan emi": "Bills",
|
||||
"bescom": "Bills", # electricity
|
||||
"tsspdcl": "Bills",
|
||||
"apspdcl": "Bills",
|
||||
"torrent power": "Bills",
|
||||
"bese": "Bills",
|
||||
"bmtc pass": "Bills",
|
||||
"airtel": "Bills",
|
||||
"jio": "Bills",
|
||||
"vi": "Bills",
|
||||
"bsnl": "Bills",
|
||||
"act fibernet": "Bills",
|
||||
"hathway": "Bills",
|
||||
"den broadband": "Bills",
|
||||
"tatasky": "Bills",
|
||||
"airtel dth": "Bills",
|
||||
"sun direct": "Bills",
|
||||
"dishtv": "Bills",
|
||||
"dth recharge": "Bills",
|
||||
"gas bill": "Bills",
|
||||
"bharat gas": "Bills",
|
||||
"hp gas": "Bills",
|
||||
"indane gas": "Bills",
|
||||
|
||||
# ---------- TRAVEL ----------
|
||||
"cab": "Travel",
|
||||
"taxi": "Travel",
|
||||
"auto": "Travel",
|
||||
"bus": "Travel",
|
||||
"train": "Travel",
|
||||
"railway": "Travel",
|
||||
"metro": "Travel",
|
||||
"flight": "Travel",
|
||||
"airlines": "Travel",
|
||||
"airport": "Travel",
|
||||
"air ticket": "Travel",
|
||||
"ticket": "Travel",
|
||||
"boarding": "Travel",
|
||||
"lodge": "Travel",
|
||||
"resort": "Travel",
|
||||
"tour": "Travel",
|
||||
"travel agency": "Travel",
|
||||
"holiday": "Travel",
|
||||
"trip": "Travel",
|
||||
"taxi service": "Travel",
|
||||
"ola": "Travel",
|
||||
"uber": "Travel",
|
||||
"redbus": "Travel",
|
||||
"abhibus": "Travel",
|
||||
"irctc": "Travel",
|
||||
"indigo": "Travel",
|
||||
"air india": "Travel",
|
||||
"vistara": "Travel",
|
||||
"spicejet": "Travel",
|
||||
"goair": "Travel",
|
||||
"akasa air": "Travel",
|
||||
"makemytrip": "Travel",
|
||||
"yatra": "Travel",
|
||||
"cleartrip": "Travel",
|
||||
"booking.com": "Travel",
|
||||
"oyo": "Travel",
|
||||
"treebo": "Travel",
|
||||
"fabhotel": "Travel",
|
||||
"trivago": "Travel",
|
||||
"zoomcar": "Travel",
|
||||
"drivezy": "Travel",
|
||||
|
||||
# ---------- ENTERTAINMENT ----------
|
||||
"cinema": "Entertainment",
|
||||
"movie": "Entertainment",
|
||||
"theatre": "Entertainment",
|
||||
"concert": "Entertainment",
|
||||
"event": "Entertainment",
|
||||
"show": "Entertainment",
|
||||
"festival": "Entertainment",
|
||||
"ticketnew": "Entertainment",
|
||||
"games": "Entertainment",
|
||||
"gaming": "Entertainment",
|
||||
"amusement": "Entertainment",
|
||||
"theme park": "Entertainment",
|
||||
"club": "Entertainment",
|
||||
"pub": "Entertainment",
|
||||
"bar": "Entertainment",
|
||||
"karaoke": "Entertainment",
|
||||
"music": "Entertainment",
|
||||
"streaming": "Entertainment",
|
||||
"subscription": "Entertainment",
|
||||
"video": "Entertainment",
|
||||
"netflix": "Entertainment",
|
||||
"amazon prime": "Entertainment",
|
||||
"hotstar": "Entertainment",
|
||||
"disney+": "Entertainment",
|
||||
"sonyliv": "Entertainment",
|
||||
"zee5": "Entertainment",
|
||||
"aha": "Entertainment",
|
||||
"spotify": "Entertainment",
|
||||
"gaana": "Entertainment",
|
||||
"wynk": "Entertainment",
|
||||
"saregama": "Entertainment",
|
||||
"bookmyshow": "Entertainment",
|
||||
"pvr": "Entertainment",
|
||||
"inox": "Entertainment",
|
||||
"cinepolis": "Entertainment",
|
||||
"jio cinema": "Entertainment",
|
||||
"altbalaji": "Entertainment",
|
||||
"voot": "Entertainment",
|
||||
"apple music": "Entertainment",
|
||||
"youtube premium": "Entertainment",
|
||||
|
||||
# ---------- OTHER ----------
|
||||
"apollo pharmacy": "Other",
|
||||
"pharmacy": "Other",
|
||||
"medical": "Other",
|
||||
"chemist": "Other",
|
||||
"clinic": "Other",
|
||||
"hospital": "Other",
|
||||
"doctor": "Other",
|
||||
"diagnostic": "Other",
|
||||
"lab": "Other",
|
||||
"insurance": "Other",
|
||||
"policy": "Other",
|
||||
"atm": "Other",
|
||||
"bank": "Other",
|
||||
"branch": "Other",
|
||||
"transaction": "Other",
|
||||
"school": "Other",
|
||||
"college": "Other",
|
||||
"university": "Other",
|
||||
"coaching": "Other",
|
||||
"training": "Other",
|
||||
"service": "Other",
|
||||
"repair": "Other",
|
||||
"medplus": "Other",
|
||||
"1mg": "Other",
|
||||
"pharmeasy": "Other",
|
||||
"netmeds": "Other",
|
||||
"urbanclap": "Other",
|
||||
"urban company": "Other",
|
||||
"justdial": "Other",
|
||||
"olx": "Other",
|
||||
"quikr": "Other",
|
||||
"paytm": "Other",
|
||||
"phonepe": "Other",
|
||||
"google pay": "Other",
|
||||
"freecharge": "Other",
|
||||
"mobikwik": "Other",
|
||||
"upi": "Other",
|
||||
"insurance": "Other",
|
||||
"policybazaar": "Other",
|
||||
"bank": "Other"
|
||||
}
|
||||
|
||||
for keyword, category in mapping.items():
|
||||
if keyword in vendor:
|
||||
return category
|
||||
|
||||
return None
|
||||
|
|
@ -1,61 +0,0 @@
|
|||
# from flask import Flask, request, jsonify
|
||||
# import joblib
|
||||
# import sklearn
|
||||
# import numpy as np
|
||||
# from Rules.transaction_rules import get_category_from_rules
|
||||
|
||||
# model = joblib.load("model/category_model.pkl")
|
||||
# vectorizer = joblib.load("model/vectorizer.pkl")
|
||||
|
||||
# app = Flask(__name__)
|
||||
|
||||
# @app.route("/api/predict", methods=["POST"])
|
||||
# def predict():
|
||||
# data = request.json
|
||||
# description = data.get("description", "")
|
||||
|
||||
# if not description:
|
||||
# return jsonify({"error": "Description is required"}), 400
|
||||
|
||||
# category = get_category_from_rules(description)
|
||||
# if not category:
|
||||
# X = vectorizer.transform([description])
|
||||
# prediction = model.predict(X)[0]
|
||||
|
||||
# return jsonify({"category": prediction})
|
||||
|
||||
# if __name__ == "__main__":
|
||||
# app.run(host="0.0.0.0", port=5000)
|
||||
from flask import Flask, request, jsonify
|
||||
import joblib
|
||||
import sklearn
|
||||
import numpy as np
|
||||
from Rules.transaction_rules import get_category_from_rules
|
||||
|
||||
model = joblib.load("model/category_model.pkl")
|
||||
vectorizer = joblib.load("model/vectorizer.pkl")
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route("/api/predict", methods=["POST"])
|
||||
def predict():
|
||||
data = request.json
|
||||
description = data.get("description", "")
|
||||
|
||||
if not description:
|
||||
return jsonify({"error": "Description is required"}), 400
|
||||
|
||||
# First try rules
|
||||
category = get_category_from_rules(description)
|
||||
|
||||
if category:
|
||||
prediction = category # ✅ assign directly
|
||||
else:
|
||||
# fallback to ML
|
||||
X = vectorizer.transform([description])
|
||||
prediction = model.predict(X)[0]
|
||||
|
||||
return jsonify({"category": prediction})
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host="0.0.0.0", port=5000)
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
blinker==1.9.0
|
||||
click==8.2.0
|
||||
colorama==0.4.6
|
||||
Flask==3.1.1
|
||||
itsdangerous==2.2.0
|
||||
Jinja2==3.1.6
|
||||
joblib==1.5.0
|
||||
MarkupSafe==3.0.2
|
||||
numpy==2.2.6
|
||||
scikit-learn==1.6.1
|
||||
scipy==1.15.3
|
||||
threadpoolctl==3.6.0
|
||||
Werkzeug==3.1.3
|
||||
|
|
@ -1,227 +0,0 @@
|
|||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"vscode": {
|
||||
"languageId": "plaintext"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import pandas as pd\n",
|
||||
"\n",
|
||||
"df = pd.read_csv(\"transcations.csv\")\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "a074a45e",
|
||||
"metadata": {
|
||||
"vscode": {
|
||||
"languageId": "plaintext"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"df = df[['Description', 'Category']].head()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "fe26b20f",
|
||||
"metadata": {
|
||||
"vscode": {
|
||||
"languageId": "plaintext"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"df[['Description', 'Category']].head()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "44c3995d",
|
||||
"metadata": {
|
||||
"vscode": {
|
||||
"languageId": "plaintext"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"df['Description'] = df['Description'].str.lower().str.replace('[^a-z\\s]', '', regex=True)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "82245456",
|
||||
"metadata": {
|
||||
"vscode": {
|
||||
"languageId": "plaintext"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"df['Category'] = df['Category'].str.lower().str.replace('[^a-z\\s]', '', regex=True)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "620ef271",
|
||||
"metadata": {
|
||||
"vscode": {
|
||||
"languageId": "plaintext"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from sklearn.model_selection import train_test_split\n",
|
||||
"\n",
|
||||
"X = df['Description']\n",
|
||||
"y = df['Category']\n",
|
||||
"\n",
|
||||
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "3eebf352",
|
||||
"metadata": {
|
||||
"vscode": {
|
||||
"languageId": "plaintext"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from sklearn.feature_extraction.text import TfidfVectorizer\n",
|
||||
"\n",
|
||||
"vectorizer = TfidfVectorizer()\n",
|
||||
"X_train_vec = vectorizer.fit_transform(X_train)\n",
|
||||
"X_test_vec = vectorizer.transform(X_test)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "75a141a8",
|
||||
"metadata": {
|
||||
"vscode": {
|
||||
"languageId": "plaintext"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from sklearn.naive_bayes import MultinomialNB\n",
|
||||
"\n",
|
||||
"model = MultinomialNB()\n",
|
||||
"model.fit(X_train_vec, y_train)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "184354db",
|
||||
"metadata": {
|
||||
"vscode": {
|
||||
"languageId": "plaintext"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def predict_category(text):\n",
|
||||
" text = [text.lower()]\n",
|
||||
" text_vec = vectorizer.transform(text)\n",
|
||||
" return model.predict(text_vec)[0]\n",
|
||||
"\n",
|
||||
"# Example\n",
|
||||
"print(predict_category(\"Netflix\"))\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "c30b9f27",
|
||||
"metadata": {
|
||||
"vscode": {
|
||||
"languageId": "plaintext"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from sklearn.metrics import classification_report\n",
|
||||
"y_pred = model.predict(X_test_vec)\n",
|
||||
"print(classification_report(y_test, y_pred))\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "109a12d5",
|
||||
"metadata": {
|
||||
"vscode": {
|
||||
"languageId": "plaintext"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import pickle\n",
|
||||
"\n",
|
||||
"# Save model\n",
|
||||
"with open('model.pkl', 'wb') as f:\n",
|
||||
" pickle.dump(model, f)\n",
|
||||
"\n",
|
||||
"# Save vectorizer\n",
|
||||
"with open('vectorizer.pkl', 'wb') as f:\n",
|
||||
" pickle.dump(vectorizer, f)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "bcb76b6a",
|
||||
"metadata": {
|
||||
"vscode": {
|
||||
"languageId": "plaintext"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import joblib\n",
|
||||
"\n",
|
||||
"joblib.dump(model, 'model.pkl')\n",
|
||||
"joblib.dump(vectorizer, 'vectorizer.pkl')\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "f16d6da5",
|
||||
"metadata": {
|
||||
"vscode": {
|
||||
"languageId": "plaintext"
|
||||
}
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from google.colab import files\n",
|
||||
"files.download('model.pkl')\n",
|
||||
"files.download('vectorizer.pkl')\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"language_info": {
|
||||
"name": "python"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
4
Backend/.env
Normal file
4
Backend/.env
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
MONGO_URI=mongodb://localhost:27017/chat
|
||||
HOST=0.0.0.0
|
||||
PORT=3000
|
||||
CORS_ORIGIN=http://10.231.59.78:3000
|
||||
89
Backend/.gitignore
vendored
89
Backend/.gitignore
vendored
|
|
@ -1,89 +0,0 @@
|
|||
# Node modules - never commit dependencies
|
||||
node_modules/
|
||||
|
||||
# Logs
|
||||
logs/
|
||||
*.log
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
# Runtime data
|
||||
pids/
|
||||
*.pid
|
||||
*.seed
|
||||
*.pid.lock
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov/
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage/
|
||||
|
||||
# nyc test coverage
|
||||
.nyc_output/
|
||||
|
||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt/
|
||||
|
||||
# Bower dependency directory
|
||||
bower_components/
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
||||
build/Release/
|
||||
|
||||
# Dependency directories
|
||||
jspm_packages/
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm/
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# Optional REPL history
|
||||
.node_repl_history
|
||||
|
||||
# Output of 'npm pack'
|
||||
*.tgz
|
||||
|
||||
# Yarn Integrity file
|
||||
.yarn-integrity
|
||||
|
||||
# dotenv environment variables file
|
||||
.env
|
||||
|
||||
# next.js build output
|
||||
.next/
|
||||
|
||||
# Parcel-bundler cache (https://parceljs.org/)
|
||||
.cache/
|
||||
|
||||
# SvelteKit build / cache directories
|
||||
.svelte-kit/
|
||||
|
||||
# Vuepress build output
|
||||
.vuepress/dist/
|
||||
|
||||
# Serverless directories
|
||||
.serverless/
|
||||
|
||||
# FuseBox cache
|
||||
.fusebox/
|
||||
|
||||
# DynamoDB Local files
|
||||
.dynamodb/
|
||||
|
||||
# TernJS port file
|
||||
.tern-port
|
||||
|
||||
# VS Code settings folder (if you want, override in root .gitignore instead)
|
||||
.vscode/
|
||||
|
||||
# npm package lock files (optional, you may keep these)
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
pnpm-lock.yaml
|
||||
26
Backend/AI/predict_api.py
Normal file
26
Backend/AI/predict_api.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
from flask import Flask, request, jsonify
|
||||
import joblib
|
||||
import sklearn
|
||||
import numpy as np
|
||||
|
||||
model = joblib.load("model/category_model.pkl")
|
||||
vectorizer = joblib.load("model/vectorizer.pkl")
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
@app.route("/api/predict", methods=["POST"])
|
||||
def predict():
|
||||
data = request.json
|
||||
description = data.get("description", "")
|
||||
|
||||
if not description:
|
||||
return jsonify({"error": "Description is required"}), 400
|
||||
|
||||
# Preprocess and predict
|
||||
X = vectorizer.transform([description])
|
||||
prediction = model.predict(X)[0]
|
||||
|
||||
return jsonify({"category": prediction})
|
||||
|
||||
if __name__ == "__main__":
|
||||
app.run(host="0.0.0.0", port=5000)
|
||||
559
Backend/index.js
559
Backend/index.js
|
|
@ -1,526 +1,125 @@
|
|||
require('dotenv').config();
|
||||
require('dotenv').config();
|
||||
const express = require('express');
|
||||
const mongoose = require('mongoose');
|
||||
const axios = require('axios');
|
||||
const cors = require('cors');
|
||||
const passport = require('passport');
|
||||
const session = require('express-session');
|
||||
const GoogleStrategy = require('passport-google-oauth20').Strategy;
|
||||
const { OAuth2Client } = require('google-auth-library');
|
||||
const { google } = require('googleapis');
|
||||
|
||||
const app = express();
|
||||
app.use(express.json());
|
||||
app.use(express.json()); // to parse JSON
|
||||
app.use(cors({
|
||||
origin: process.env.CORS_ORIGIN || '*',
|
||||
credentials: true
|
||||
origin: process.env.CORS_ORIGIN || '*'
|
||||
}));
|
||||
// Prediction route
|
||||
const predictRoute = require('./predict');
|
||||
app.use('/api/predict', predictRoute);
|
||||
|
||||
/* ---------- MODELS ---------- */
|
||||
const userSchema = new mongoose.Schema({
|
||||
googleId: { type: String, required: true, unique: true },
|
||||
displayName: String,
|
||||
email: String,
|
||||
photo: String,
|
||||
accessToken: String,
|
||||
refreshToken: String,
|
||||
createdAt: { type: Date, default: Date.now }
|
||||
// MongoDB connection
|
||||
mongoose.connect('mongodb://localhost:27017/chat', {
|
||||
useNewUrlParser: true,
|
||||
useUnifiedTopology: true,
|
||||
});
|
||||
const User = mongoose.model('User', userSchema);
|
||||
|
||||
// Define schema and model
|
||||
const transactionSchema = new mongoose.Schema({
|
||||
userId: { type: mongoose.Schema.Types.ObjectId, ref: 'User', required: true },
|
||||
description: { type: String, required: true },
|
||||
amount: { type: Number, required: true },
|
||||
category: { type: String, default: "Other" },
|
||||
description: String,
|
||||
amount: Number,
|
||||
|
||||
category: String,
|
||||
date: { type: Date, default: Date.now },
|
||||
type: { type: String, default: "unknown" },
|
||||
vendor: String, // Optional vendor/store name
|
||||
source: { type: String, enum: ['manual', 'voice', 'email'], required: true },
|
||||
referenceNumber: { type: String, unique: true, sparse: true }, // Unique transaction id for deduplication
|
||||
});
|
||||
|
||||
const Transaction = mongoose.model('Transaction', transactionSchema);
|
||||
|
||||
/* ---------- SESSION ---------- */
|
||||
const sessionOptions = {
|
||||
secret: process.env.JWT_SECRET || 'change_this_secret',
|
||||
resave: false,
|
||||
saveUninitialized: false,
|
||||
cookie: {
|
||||
secure: process.env.NODE_ENV === 'production',
|
||||
httpOnly: true,
|
||||
sameSite: 'lax'
|
||||
}
|
||||
};
|
||||
app.use(session(sessionOptions));
|
||||
|
||||
app.use(passport.initialize());
|
||||
app.use(passport.session());
|
||||
|
||||
/* ---------- PASSPORT ---------- */
|
||||
passport.serializeUser((user, done) => {
|
||||
done(null, user._id);
|
||||
});
|
||||
passport.deserializeUser(async (id, done) => {
|
||||
try {
|
||||
const user = await User.findById(id).lean();
|
||||
done(null, user);
|
||||
} catch (err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
|
||||
passport.use(new GoogleStrategy({
|
||||
clientID: process.env.GOOGLE_CLIENT_ID,
|
||||
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
|
||||
callbackURL: process.env.GOOGLE_REDIRECT_URI
|
||||
}, async (accessToken, refreshToken, profile, done) => {
|
||||
try {
|
||||
const email = profile.emails && profile.emails[0] && profile.emails[0].value;
|
||||
const update = {
|
||||
displayName: profile.displayName,
|
||||
email,
|
||||
accessToken,
|
||||
...(refreshToken ? { refreshToken } : {})
|
||||
};
|
||||
const opts = { upsert: true, new: true, setDefaultsOnInsert: true };
|
||||
const user = await User.findOneAndUpdate({ googleId: profile.id }, update, opts);
|
||||
return done(null, user);
|
||||
} catch (err) {
|
||||
return done(err);
|
||||
}
|
||||
}));
|
||||
|
||||
/* ---------- GOOGLE OAUTH ROUTES (WEB) ---------- */
|
||||
app.get('/auth/google', passport.authenticate('google', {
|
||||
scope: ['profile', 'email', 'https://www.googleapis.com/auth/gmail.readonly'],
|
||||
accessType: 'offline',
|
||||
prompt: 'consent'
|
||||
}));
|
||||
|
||||
app.get('/auth/google/callback',
|
||||
passport.authenticate('google', { failureRedirect: '/' }),
|
||||
(req, res) => {
|
||||
res.redirect('/profile');
|
||||
}
|
||||
);
|
||||
|
||||
/* ---------- GOOGLE TOKEN LOGIN (MOBILE / FLUTTER) ---------- */
|
||||
const client = new OAuth2Client(process.env.GOOGLE_CLIENT_ID);
|
||||
app.post('/auth/google/token', async (req, res) => {
|
||||
try {
|
||||
const { idToken } = req.body;
|
||||
const ticket = await client.verifyIdToken({
|
||||
idToken,
|
||||
audience: process.env.GOOGLE_CLIENT_ID,
|
||||
});
|
||||
|
||||
const payload = ticket.getPayload();
|
||||
const user = await User.findOneAndUpdate(
|
||||
{ googleId: payload.sub },
|
||||
{
|
||||
googleId: payload.sub,
|
||||
displayName: payload.name,
|
||||
email: payload.email,
|
||||
photo: payload.picture
|
||||
},
|
||||
{ new: true, upsert: true }
|
||||
);
|
||||
|
||||
res.json({ success: true, user });
|
||||
} catch (err) {
|
||||
res.status(401).json({ error: 'Invalid token', details: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
/* ---------- USER ROUTES ---------- */
|
||||
app.get('/profile', (req, res) => {
|
||||
if (!req.user) return res.status(401).json({ error: 'Not logged in' });
|
||||
res.json({
|
||||
id: req.user._id,
|
||||
name: req.user.displayName,
|
||||
email: req.user.email
|
||||
});
|
||||
});
|
||||
|
||||
app.get('/logout', (req, res) => {
|
||||
req.logout(err => {
|
||||
if (err) console.error('Logout error', err);
|
||||
req.session.destroy(() => {
|
||||
res.clearCookie('connect.sid', { path: '/' });
|
||||
res.redirect('/');
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
/* ---------- TRANSACTION ROUTES (NOW USER-SPECIFIC) ---------- */
|
||||
// POST endpoint to add transaction with auto-categorization
|
||||
app.post('/api/transaction/add', async (req, res) => {
|
||||
try {
|
||||
const { description, amount, userId } = req.body;
|
||||
if (!userId) return res.status(400).json({ error: 'Missing userId' });
|
||||
const { description, amount } = req.body;
|
||||
|
||||
const predictRes = await axios.post('http://10.231.7.150:5000/api/predict', {
|
||||
// Call your AI prediction endpoint
|
||||
const predictRes = await axios.post('http://10.231.12.247:5000/api/predict', {
|
||||
description,
|
||||
});
|
||||
|
||||
const category = predictRes.data.category || 'Other';
|
||||
|
||||
const newTransaction = new Transaction({
|
||||
userId,
|
||||
description,
|
||||
amount,
|
||||
category,
|
||||
source: 'manual',
|
||||
});
|
||||
await newTransaction.save();
|
||||
|
||||
res.status(200).json({ message: '✅ Transaction saved', data: newTransaction });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/api/transactions', async (req, res) => {
|
||||
try {
|
||||
const { category, userId } = req.query;
|
||||
if (!userId) return res.status(400).json({ error: 'Missing userId' });
|
||||
|
||||
let query = { userId };
|
||||
if (category && category !== 'All') query.category = category;
|
||||
|
||||
const transactions = await Transaction.find(query).sort({ date: -1 });
|
||||
res.status(200).json({ success: true, data: transactions });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.get('/api/transactions/recent', async (req, res) => {
|
||||
try {
|
||||
const { userId } = req.query;
|
||||
if (!userId) return res.status(400).json({ error: 'Missing userId' });
|
||||
|
||||
const transactions = await Transaction.find({ userId })
|
||||
.sort({ date: -1 })
|
||||
.limit(5);
|
||||
|
||||
res.status(200).json({ success: true, data: transactions });
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
//VOICE
|
||||
app.post('/api/transactions/voice', async (req, res) => {
|
||||
try {
|
||||
const { voiceInput, userId } = req.body; // ✅ take userId from body
|
||||
if (!voiceInput) {
|
||||
return res.status(400).json({ error: 'No voice input provided' });
|
||||
}
|
||||
if (!userId) {
|
||||
return res.status(400).json({ error: 'Missing userId' }); // ✅ enforce userId like others
|
||||
}
|
||||
|
||||
// Step 1: Use regex to extract amount
|
||||
const amountMatch = voiceInput.match(/(?:\₹|\$)?(\d+(?:\.\d{1,2})?)/);
|
||||
const amount = amountMatch ? parseFloat(amountMatch[1]) : null;
|
||||
|
||||
// Step 2: Extract description (rough logic: remove common verbs + amount)
|
||||
const cleaned = voiceInput
|
||||
.toLowerCase()
|
||||
.replace(/(bought|added|paid|spent|for|on)/g, '')
|
||||
.replace(/₹?\d+/, '')
|
||||
.trim();
|
||||
const description = cleaned || 'misc';
|
||||
|
||||
// Step 3: Predict category using Flask API
|
||||
const predictRes = await axios.post('http://10.231.7.150:5000/api/predict', {
|
||||
description,
|
||||
});
|
||||
const category = predictRes.data?.category || 'Other';
|
||||
|
||||
// Step 4: Save to DB
|
||||
const newTransaction = new Transaction({
|
||||
userId, // ✅ store userId
|
||||
description,
|
||||
amount,
|
||||
category,
|
||||
source: 'voice'
|
||||
});
|
||||
|
||||
await newTransaction.save();
|
||||
|
||||
res.status(200).json({
|
||||
message: '✅ Voice transaction saved',
|
||||
message: '✅ Transaction saved with category',
|
||||
data: newTransaction,
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('❌ Voice transaction error:', err.message);
|
||||
res.status(500).json({ error: 'Server error during voice transaction' });
|
||||
console.error('❌ Error adding transaction:', err.message);
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
// Bank rules (can expand later)
|
||||
// ---------- BANK RULES ----------
|
||||
const bankRules = [
|
||||
{ name: 'HDFC Bank', email: 'alerts@hdfcbank.net' },
|
||||
{ name: 'ICICI Bank', email: 'alerts@icicibank.com' },
|
||||
];
|
||||
|
||||
// ---------- PARSER ----------
|
||||
function parseBankMessage(email) {
|
||||
const result = {
|
||||
amount: null,
|
||||
vendor: null,
|
||||
rawVendor: null,
|
||||
type: null,
|
||||
date: null,
|
||||
referenceNumber: null,
|
||||
};
|
||||
|
||||
// ---------- Amount ----------
|
||||
const amtMatch = email.match(/(?:Rs\.?|INR)\s*([\d,]+\.?\d*)/i);
|
||||
if (amtMatch) result.amount = parseFloat(amtMatch[1].replace(/,/g, ""));
|
||||
|
||||
// ---------- Debit / Credit ----------
|
||||
if (/debited/i.test(email)) result.type = "debit";
|
||||
else if (/credited/i.test(email)) result.type = "credit";
|
||||
|
||||
// ---------- Date ----------
|
||||
const dateMatch = email.match(/on\s+(\d{2}[-/]\d{2}[-/]\d{2,4})/i);
|
||||
if (dateMatch) result.date = dateMatch[1];
|
||||
|
||||
// ---------- Reference Number ----------
|
||||
const refMatch = email.match(/(?:reference number is|UPI transaction reference number is|Ref No:?)\s*([A-Za-z0-9]+)/i);
|
||||
if (refMatch) result.referenceNumber = refMatch[1].trim();
|
||||
|
||||
// ---------- Vendor Extraction ----------
|
||||
let vendorCandidate = null;
|
||||
|
||||
// 1. Prefer "to VPA ..." pattern, stop at 'on|your|Ref|Txn' etc.
|
||||
const toMatch = email.match(/to\s+(?:VPA\s+)?(?:[^\s@]+\@[^\s]+\s+)?([A-Za-z0-9\s&.-]+)/i);
|
||||
if (toMatch) {
|
||||
vendorCandidate = toMatch[1]
|
||||
.split(/ on | your | ref | txn | transaction | number /i)[0] // cut off junk
|
||||
.trim();
|
||||
}
|
||||
|
||||
// 2. Fallback: fully uppercase phrases
|
||||
if (!vendorCandidate) {
|
||||
const upperMatch = email.match(/(?:\b[A-Z][A-Z0-9&.-]+\b(?:\s)?)+/g);
|
||||
if (upperMatch) {
|
||||
vendorCandidate = upperMatch[upperMatch.length - 1].trim();
|
||||
}
|
||||
}
|
||||
|
||||
// Assign rawVendor
|
||||
if (vendorCandidate) {
|
||||
result.rawVendor = vendorCandidate;
|
||||
}
|
||||
|
||||
// ---------- Cleaning Pipeline ----------
|
||||
if (result.rawVendor) {
|
||||
let v = result.rawVendor;
|
||||
|
||||
// Remove noise keywords
|
||||
v = v.replace(/\b(?:UPI|VPA|REF|Txn|Order|Payment|NEFT|IMPS|Transaction|Number|Your)\b/gi, "");
|
||||
|
||||
// Remove emails
|
||||
v = v.replace(/[a-z0-9._%+-]+@[a-z0-9.-]+/gi, "");
|
||||
|
||||
// Remove dates & numbers that sneak in
|
||||
v = v.replace(/\d{2}[-/]\d{2}[-/]\d{2,4}/g, "");
|
||||
v = v.replace(/\b\d{6,}\b/g, ""); // strip long numbers like reference ids
|
||||
|
||||
// Replace underscores/dashes with space
|
||||
v = v.replace(/[_\-]+/g, " ");
|
||||
|
||||
// Collapse multiple spaces
|
||||
v = v.replace(/\s{2,}/g, " ").trim();
|
||||
|
||||
// Normalize casing
|
||||
v = v.toLowerCase().replace(/\b\w/g, (c) => c.toUpperCase());
|
||||
|
||||
result.vendor = v;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
// ---------- FETCH EMAILS ----------
|
||||
async function fetchBankEmails(accessToken, bankEmails) {
|
||||
const oauth2Client = new google.auth.OAuth2();
|
||||
oauth2Client.setCredentials({ access_token: accessToken });
|
||||
|
||||
const gmail = google.gmail({ version: 'v1', auth: oauth2Client });
|
||||
|
||||
const allEmails = [];
|
||||
|
||||
for (const bankEmail of bankEmails) {
|
||||
const res = await gmail.users.messages.list({
|
||||
userId: 'me',
|
||||
q: `from:${bankEmail}`,
|
||||
maxResults: 20, // can adjust
|
||||
});
|
||||
|
||||
const messages = res.data.messages || [];
|
||||
for (const msg of messages) {
|
||||
const fullMessage = await gmail.users.messages.get({
|
||||
userId: 'me',
|
||||
id: msg.id,
|
||||
});
|
||||
|
||||
let body = "";
|
||||
if (fullMessage.data.payload?.parts) {
|
||||
for (const part of fullMessage.data.payload.parts) {
|
||||
if (part.mimeType === "text/plain" && part.body?.data) {
|
||||
body += Buffer.from(part.body.data, "base64").toString("utf-8");
|
||||
}
|
||||
if (part.mimeType === "text/html" && part.body?.data) {
|
||||
body += Buffer.from(part.body.data, "base64").toString("utf-8");
|
||||
}
|
||||
}
|
||||
}
|
||||
const snippet = body || fullMessage.data.snippet || "";
|
||||
allEmails.push({
|
||||
from: bankEmail,
|
||||
snippet,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return allEmails;
|
||||
}
|
||||
|
||||
// ---------- ROUTE ----------
|
||||
app.post('/api/sync-gmail', async (req, res) => {
|
||||
app.post('/api/transaction/update', async (req, res) => {
|
||||
try {
|
||||
const { accessToken, userId } = req.body;
|
||||
|
||||
if (!accessToken) {
|
||||
console.error('❌ Missing access token in request body');
|
||||
return res.status(400).json({ error: "Missing access token" });
|
||||
}
|
||||
if (!userId) {
|
||||
console.error('❌ Missing userId in request body');
|
||||
return res.status(400).json({ error: "Missing userId" });
|
||||
}
|
||||
|
||||
const bankEmails = bankRules.map(b => b.email);
|
||||
|
||||
let emails;
|
||||
try {
|
||||
emails = await fetchBankEmails(accessToken, bankEmails);
|
||||
} catch (fetchError) {
|
||||
console.error('❌ Error fetching bank emails:', fetchError);
|
||||
return res.status(500).json({ error: 'Failed to fetch bank emails' });
|
||||
}
|
||||
|
||||
if (!emails || emails.length === 0) {
|
||||
console.warn('⚠️ No bank emails found for provided email accounts');
|
||||
return res.json({ success: true, count: 0, transactions: [] });
|
||||
}
|
||||
|
||||
const savedTxns = [];
|
||||
|
||||
for (const email of emails) {
|
||||
let parsed;
|
||||
try {
|
||||
// console.log('📧 Processing email snippet:', email.snippet);
|
||||
parsed = parseBankMessage(email.snippet);
|
||||
} catch (parseError) {
|
||||
console.error('❌ Error parsing email snippet:', parseError, 'Snippet:', email.snippet);
|
||||
continue; // Skip this email and move on
|
||||
}
|
||||
|
||||
if (!parsed.amount) {
|
||||
console.warn('⚠️ Parsed email missing amount, skipping:', parsed);
|
||||
continue;
|
||||
}
|
||||
|
||||
let category = 'Other';
|
||||
try {
|
||||
const predictRes = await axios.post('http://10.231.7.150:5000/api/predict', {
|
||||
description: parsed.vendor || "Unknown"
|
||||
}, { timeout: 5000 }); // Optional timeout
|
||||
|
||||
if (predictRes.data && typeof predictRes.data.category === 'string' && predictRes.data.category.trim() !== '') {
|
||||
category = predictRes.data.category;
|
||||
} else {
|
||||
console.warn('⚠️ Prediction API returned invalid category for vendor:', parsed.vendor);
|
||||
}
|
||||
} catch (predictError) {
|
||||
console.error('❌ Prediction API error:', predictError.message);
|
||||
}
|
||||
|
||||
const parseDateString = (dateStr) => {
|
||||
if (!dateStr) return null;
|
||||
const [day, month, yearSuffix] = dateStr.split('-');
|
||||
const year = 2000 + parseInt(yearSuffix, 10);
|
||||
return new Date(year, parseInt(month, 10) - 1, parseInt(day, 10));
|
||||
};
|
||||
|
||||
const dateValue = parseDateString(parsed.date) || new Date();
|
||||
|
||||
try {
|
||||
if (parsed.referenceNumber) {
|
||||
const updatedTxn = await Transaction.findOneAndUpdate(
|
||||
{ referenceNumber: parsed.referenceNumber },
|
||||
{
|
||||
userId,
|
||||
description: parsed.vendor || "Unknown Vendor",
|
||||
amount: parsed.amount,
|
||||
type: parsed.type || "unknown",
|
||||
date: dateValue,
|
||||
vendor: parsed.vendor,
|
||||
category,
|
||||
source: "email",
|
||||
bank: email.from,
|
||||
referenceNumber: parsed.referenceNumber,
|
||||
},
|
||||
{ upsert: true, new: true, setDefaultsOnInsert: true }
|
||||
);
|
||||
savedTxns.push(updatedTxn);
|
||||
} else {
|
||||
const newTxn = new Transaction({
|
||||
userId,
|
||||
description: parsed.vendor || "Unknown Vendor",
|
||||
amount: parsed.amount,
|
||||
type: parsed.type || "unknown",
|
||||
date: dateValue,
|
||||
vendor: parsed.vendor,
|
||||
category,
|
||||
source: "email", // mark source explicitly
|
||||
bank: email.from,
|
||||
});
|
||||
await newTxn.save();
|
||||
savedTxns.push(newTxn);
|
||||
}
|
||||
} catch (saveError) {
|
||||
console.error('❌ Error saving transaction to database:', saveError);
|
||||
}
|
||||
|
||||
const { budget } = req.body;
|
||||
// Save to database or wherever you store budgets
|
||||
await BudgetModel.updateOne({}, { amount: budget }, { upsert: true });
|
||||
res.status(200).json({ success: true });
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: 'Failed to update budget' });
|
||||
}
|
||||
});
|
||||
// GET transactions by category
|
||||
app.get('/api/transactions', async (req, res) => {
|
||||
try {
|
||||
const category = req.query.category;
|
||||
|
||||
let query = {};
|
||||
if (category && category !== 'All') {
|
||||
query.category = category;
|
||||
}
|
||||
|
||||
const transactions = await Transaction.find(query).sort({ date: -1 });
|
||||
|
||||
res.status(200).json({
|
||||
success: true,
|
||||
data: transactions.map(tx => ({
|
||||
id: tx._id,
|
||||
description: tx.description,
|
||||
amount: tx.amount,
|
||||
category: tx.category,
|
||||
date: tx.date,
|
||||
})),
|
||||
});
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
// Get 5 most recent transactions
|
||||
app.get('/api/transactions/recent', async (req, res) => {
|
||||
try {
|
||||
const transactions = await Transaction.find({})
|
||||
.sort({ date: -1 })
|
||||
.limit(5); // 👈 limit to 5
|
||||
|
||||
res.status(200).json({
|
||||
success: true,
|
||||
data: transactions.map(tx => ({
|
||||
id: tx._id,
|
||||
description: tx.description,
|
||||
amount: tx.amount,
|
||||
category: tx.category,
|
||||
date: tx.date,
|
||||
})),
|
||||
});
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
return res.json({
|
||||
success: true,
|
||||
count: savedTxns.length,
|
||||
transactions: savedTxns,
|
||||
});
|
||||
} catch (error) {
|
||||
console.error('❌ Unexpected error in /api/sync-gmail:', error);
|
||||
return res.status(500).json({ error: 'Failed to fetch and save Gmail messages' });
|
||||
}
|
||||
});
|
||||
|
||||
/* ---------- SERVER ---------- */
|
||||
mongoose.connect(process.env.MONGO_URI, {
|
||||
useNewUrlParser: true,
|
||||
useUnifiedTopology: true,
|
||||
})
|
||||
.then(() => console.log('MongoDB connected'))
|
||||
.catch(err => console.error('MongoDB connection error:', err));
|
||||
|
||||
const HOST = process.env.HOST || '0.0.0.0';
|
||||
const HOST = process.env.HOST || '0.0.0.0'; // listen on all interfaces
|
||||
const PORT = process.env.PORT || 3000;
|
||||
app.listen(PORT, HOST, () => {
|
||||
console.log(`🚀 Server running on http://${HOST}:${PORT}`);
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -1,346 +0,0 @@
|
|||
require('dotenv').config();
|
||||
const express = require('express');
|
||||
const mongoose = require('mongoose');
|
||||
const axios = require('axios');
|
||||
const cors = require('cors');
|
||||
const passport = require('passport');
|
||||
const session = require('express-session');
|
||||
const GoogleStrategy = require('passport-google-oauth20').Strategy;
|
||||
const { OAuth2Client } = require('google-auth-library');
|
||||
const app = express();
|
||||
app.use(express.json());
|
||||
app.use(cors({
|
||||
origin: process.env.CORS_ORIGIN || '*'
|
||||
}));
|
||||
/* ---------- BEGIN: Replace OAuth / Passport / Session block with this ---------- */
|
||||
const userSchema = new mongoose.Schema({
|
||||
googleId: { type: String, required: true, unique: true },
|
||||
displayName: String,
|
||||
email: String,
|
||||
photo: String,
|
||||
accessToken: String,
|
||||
refreshToken: String,
|
||||
createdAt: { type: Date, default: Date.now }
|
||||
});
|
||||
|
||||
const sessionOptions = {
|
||||
secret: process.env.JWT_SECRET || 'change_this_secret',
|
||||
resave: false,
|
||||
saveUninitialized: false, // fixed spelling
|
||||
cookie: {
|
||||
secure: process.env.NODE_ENV === 'production', // set true only on HTTPS in prod
|
||||
httpOnly: true,
|
||||
sameSite: 'lax'
|
||||
}
|
||||
};
|
||||
app.use(session(sessionOptions));
|
||||
|
||||
app.use(passport.initialize());
|
||||
app.use(passport.session());
|
||||
|
||||
/* Passport user serialization (store minimal info in session) */
|
||||
passport.serializeUser((user, done) => {
|
||||
// store only user id (or email) in session
|
||||
done(null, user._id || user.id || user);
|
||||
});
|
||||
passport.deserializeUser(async (id, done) => {
|
||||
try {
|
||||
// adapt to your user model - this assumes a Users collection/model exists
|
||||
const Users = mongoose.model('User'); // ensure User model is defined somewhere else in your code
|
||||
const user = await Users.findById(id).lean();
|
||||
done(null, user || id);
|
||||
} catch (err) {
|
||||
done(err);
|
||||
}
|
||||
});
|
||||
|
||||
/* Google OAuth strategy — capture tokens (access + refresh). */
|
||||
passport.use(new GoogleStrategy({
|
||||
clientID: process.env.GOOGLE_CLIENT_ID,
|
||||
clientSecret: process.env.GOOGLE_CLIENT_SECRET,
|
||||
callbackURL: process.env.GOOGLE_REDIRECT_URI // must match GCP console entry
|
||||
},
|
||||
async (accessToken, refreshToken, profile, done) => {
|
||||
try {
|
||||
// Here we either create or update a user record in DB and save tokens.
|
||||
// Adjust schema fields to your Users collection.
|
||||
const Users = mongoose.model('User' , userSchema);
|
||||
const email = profile.emails && profile.emails[0] && profile.emails[0].value;
|
||||
|
||||
const update = {
|
||||
name: profile.displayName || profile.username,
|
||||
email,
|
||||
'gmail.accessToken': accessToken,
|
||||
// only store refreshToken if provided. Google provides refreshToken on first consent or when prompt=consent
|
||||
...(refreshToken ? { 'gmail.refreshToken': refreshToken } : {}),
|
||||
'gmail.tokenSavedAt': new Date()
|
||||
};
|
||||
|
||||
// Upsert user by email (or however you identify users)
|
||||
const opts = { upsert: true, new: true, setDefaultsOnInsert: true };
|
||||
const user = await Users.findOneAndUpdate({ email }, update, opts);
|
||||
|
||||
// Return the user to passport
|
||||
return done(null, user);
|
||||
} catch (err) {
|
||||
return done(err);
|
||||
}
|
||||
}
|
||||
));
|
||||
|
||||
/* OAuth start: request Gmail readonly scope + offline access for refreshToken */
|
||||
app.get('/auth/google', passport.authenticate('google', {
|
||||
scope: [
|
||||
'profile',
|
||||
'email',
|
||||
'https://www.googleapis.com/auth/gmail.readonly'
|
||||
],
|
||||
accessType: 'offline', // request refresh token
|
||||
prompt: 'consent' // forces refresh token to be returned (on first consent)
|
||||
}));
|
||||
|
||||
/* OAuth callback */
|
||||
app.get('/auth/google/callback',
|
||||
passport.authenticate('google', { failureRedirect: '/' }),
|
||||
(req, res) => {
|
||||
// success — redirect to profile or SPA route
|
||||
res.redirect('/profile');
|
||||
}
|
||||
);
|
||||
|
||||
/* Profile route (example) */
|
||||
app.get('/profile', (req, res) => {
|
||||
if (!req.user) return res.redirect('/');
|
||||
// send sanitized user object
|
||||
const safeUser = {
|
||||
id: req.user._id || req.user.id,
|
||||
name: req.user.name || req.user.displayName,
|
||||
email: req.user.email
|
||||
};
|
||||
res.send(`Welcome ${safeUser.name} (${safeUser.email})`);
|
||||
});
|
||||
|
||||
/* Logout route */
|
||||
app.get('/logout', (req, res) => {
|
||||
req.logout(err => {
|
||||
// in newer passport versions, logout takes a callback
|
||||
if (err) console.error('Logout error', err);
|
||||
req.session.destroy(() => {
|
||||
res.clearCookie('connect.sid', { path: '/' });
|
||||
res.redirect('/');
|
||||
});
|
||||
});
|
||||
});
|
||||
const client = new OAuth2Client(process.env.GOOGLE_CLIENT_ID);
|
||||
|
||||
app.post('/auth/google/token', async (req, res) => {
|
||||
try {
|
||||
const { idToken } = req.body;
|
||||
const ticket = await client.verifyIdToken({
|
||||
idToken,
|
||||
audience: process.env.GOOGLE_CLIENT_ID,
|
||||
});
|
||||
|
||||
const payload = ticket.getPayload();
|
||||
const user = await User.findOneAndUpdate(
|
||||
{ googleId: payload.sub },
|
||||
{
|
||||
googleId: payload.sub,
|
||||
displayName: payload.name,
|
||||
email: payload.email,
|
||||
photo: payload.picture,
|
||||
},
|
||||
{ new: true, upsert: true }
|
||||
);
|
||||
|
||||
res.json({ success: true, user });
|
||||
} catch (err) {
|
||||
res.status(401).json({ error: 'Invalid token', details: err.message });
|
||||
}
|
||||
});
|
||||
/* ---------- END: Replace OAuth / Passport / Session block ---------- */
|
||||
|
||||
|
||||
// Prediction route
|
||||
const predictRoute = require('./predict');
|
||||
app.use('/api/predict', predictRoute);
|
||||
|
||||
mongoose.connect(process.env.MONGO_URI, {
|
||||
useNewUrlParser: true,
|
||||
useUnifiedTopology: true,
|
||||
})
|
||||
.then(() => console.log('MongoDB connected'))
|
||||
.catch(err => console.error('MongoDB connection error:', err));
|
||||
|
||||
// models/User.js
|
||||
// const mongoose = require('mongoose');
|
||||
|
||||
// const userSchema = new mongoose.Schema({
|
||||
// googleId: { type: String, required: true, unique: true },
|
||||
// displayName: String,
|
||||
// email: String,
|
||||
// photo: String,
|
||||
// accessToken: String,
|
||||
// refreshToken: String,
|
||||
// createdAt: { type: Date, default: Date.now }
|
||||
// });
|
||||
|
||||
// module.exports = mongoose.model('User', userSchema);
|
||||
|
||||
|
||||
// Define schema and model
|
||||
const transactionSchema = new mongoose.Schema({
|
||||
description: String,
|
||||
amount: Number,
|
||||
|
||||
category: String,
|
||||
date: { type: Date, default: Date.now },
|
||||
});
|
||||
|
||||
const Transaction = mongoose.model('Transaction', transactionSchema);
|
||||
|
||||
|
||||
|
||||
// POST endpoint to add transaction with auto-categorization
|
||||
app.post('/api/transaction/add', async (req, res) => {
|
||||
try {
|
||||
const { description, amount } = req.body;
|
||||
|
||||
// Call your AI prediction endpoint
|
||||
const predictRes = await axios.post('http://192.168.1.10:5000/api/predict', {
|
||||
description,
|
||||
});
|
||||
|
||||
const category = predictRes.data.category || 'Other';
|
||||
|
||||
const newTransaction = new Transaction({
|
||||
description,
|
||||
amount,
|
||||
category,
|
||||
});
|
||||
|
||||
await newTransaction.save();
|
||||
|
||||
res.status(200).json({
|
||||
message: '✅ Transaction saved with category',
|
||||
data: newTransaction,
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('❌ Error adding transaction:', err.message);
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.post('/api/transaction/update', async (req, res) => {
|
||||
try {
|
||||
const { budget } = req.body;
|
||||
// Save to database or wherever you store budgets
|
||||
await BudgetModel.updateOne({}, { amount: budget }, { upsert: true });
|
||||
res.status(200).json({ success: true });
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: 'Failed to update budget' });
|
||||
}
|
||||
});
|
||||
// GET transactions by category
|
||||
app.get('/api/transactions', async (req, res) => {
|
||||
try {
|
||||
const category = req.query.category;
|
||||
|
||||
let query = {};
|
||||
if (category && category !== 'All') {
|
||||
query.category = category;
|
||||
}
|
||||
|
||||
const transactions = await Transaction.find(query).sort({ date: -1 });
|
||||
|
||||
res.status(200).json({
|
||||
success: true,
|
||||
data: transactions.map(tx => ({
|
||||
id: tx._id,
|
||||
description: tx.description,
|
||||
amount: tx.amount,
|
||||
category: tx.category,
|
||||
date: tx.date,
|
||||
})),
|
||||
});
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
// Get 5 most recent transactions
|
||||
app.get('/api/transactions/recent', async (req, res) => {
|
||||
try {
|
||||
const transactions = await Transaction.find({})
|
||||
.sort({ date: -1 })
|
||||
.limit(5); // 👈 limit to 5
|
||||
|
||||
res.status(200).json({
|
||||
success: true,
|
||||
data: transactions.map(tx => ({
|
||||
id: tx._id,
|
||||
description: tx.description,
|
||||
amount: tx.amount,
|
||||
category: tx.category,
|
||||
date: tx.date,
|
||||
})),
|
||||
});
|
||||
} catch (err) {
|
||||
res.status(500).json({ error: err.message });
|
||||
}
|
||||
});
|
||||
|
||||
app.post('/api/transactions/voice', async (req, res) => {
|
||||
try {
|
||||
const { voiceInput } = req.body;
|
||||
|
||||
if (!voiceInput) {
|
||||
return res.status(400).json({ error: 'No voice input provided' });
|
||||
}
|
||||
|
||||
// Step 1: Use regex to extract amount
|
||||
const amountMatch = voiceInput.match(/(?:\₹|\$)?(\d+(?:\.\d{1,2})?)/);
|
||||
const amount = amountMatch ? parseFloat(amountMatch[1]) : null;
|
||||
|
||||
// Step 2: Extract description (rough logic: remove common verbs + amount)
|
||||
const cleaned = voiceInput
|
||||
.toLowerCase()
|
||||
.replace(/(bought|added|paid|spent|for|on)/g, '')
|
||||
.replace(/₹?\d+/, '')
|
||||
.trim();
|
||||
|
||||
const description = cleaned || 'misc';
|
||||
|
||||
// Step 3: Predict category using your Flask API
|
||||
const predictRes = await axios.post('http://192.168.1.10:5000/api/predict', {
|
||||
description,
|
||||
});
|
||||
|
||||
const category = predictRes.data?.category || 'Other';
|
||||
|
||||
// Step 4: Save to DB
|
||||
const newTransaction = new Transaction({
|
||||
description,
|
||||
amount,
|
||||
category,
|
||||
});
|
||||
|
||||
await newTransaction.save();
|
||||
|
||||
res.status(200).json({
|
||||
message: '✅ Voice transaction saved',
|
||||
data: newTransaction,
|
||||
});
|
||||
} catch (err) {
|
||||
console.error('❌ Voice transaction error:', err.message);
|
||||
res.status(500).json({ error: 'Server error during voice transaction' });
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
//server
|
||||
const HOST = process.env.HOST || '0.0.0.0'; // listen on all interfaces
|
||||
const PORT = process.env.PORT || 3000;
|
||||
app.listen(PORT, HOST, () => {
|
||||
console.log(`🚀 Server running on http://${HOST}:${PORT}`);
|
||||
});
|
||||
|
||||
607
Backend/node_modules/.package-lock.json
generated
vendored
607
Backend/node_modules/.package-lock.json
generated
vendored
|
|
@ -41,15 +41,6 @@
|
|||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/agent-base": {
|
||||
"version": "7.1.4",
|
||||
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
|
||||
"integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 14"
|
||||
}
|
||||
},
|
||||
"node_modules/asynckit": {
|
||||
"version": "0.4.0",
|
||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
||||
|
|
@ -57,54 +48,16 @@
|
|||
"license": "MIT"
|
||||
},
|
||||
"node_modules/axios": {
|
||||
"version": "1.11.0",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz",
|
||||
"integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==",
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz",
|
||||
"integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"follow-redirects": "^1.15.6",
|
||||
"form-data": "^4.0.4",
|
||||
"form-data": "^4.0.0",
|
||||
"proxy-from-env": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"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/base64url": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/base64url/-/base64url-3.0.1.tgz",
|
||||
"integrity": "sha512-ir1UPr3dkwexU7FdV8qBBbNDRUhMmIekYMFZfi+C/sLNnRESKPl23nB9b2pltqfOQNnGzsDdId90AEtG5tCx4A==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/bignumber.js": {
|
||||
"version": "9.3.1",
|
||||
"resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz",
|
||||
"integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/body-parser": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz",
|
||||
|
|
@ -134,12 +87,6 @@
|
|||
"node": ">=16.20.1"
|
||||
}
|
||||
},
|
||||
"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==",
|
||||
"license": "BSD-3-Clause"
|
||||
},
|
||||
"node_modules/bytes": {
|
||||
"version": "3.1.2",
|
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz",
|
||||
|
|
@ -242,21 +189,6 @@
|
|||
"node": ">= 0.10"
|
||||
}
|
||||
},
|
||||
"node_modules/data-uri-to-buffer": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
|
||||
"integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 12"
|
||||
}
|
||||
},
|
||||
"node_modules/dayjs": {
|
||||
"version": "1.11.13",
|
||||
"resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz",
|
||||
"integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/debug": {
|
||||
"version": "4.4.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
|
||||
|
|
@ -318,15 +250,6 @@
|
|||
"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==",
|
||||
"license": "Apache-2.0",
|
||||
"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",
|
||||
|
|
@ -444,75 +367,6 @@
|
|||
"url": "https://opencollective.com/express"
|
||||
}
|
||||
},
|
||||
"node_modules/express-session": {
|
||||
"version": "1.18.2",
|
||||
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.18.2.tgz",
|
||||
"integrity": "sha512-SZjssGQC7TzTs9rpPDuUrR23GNZ9+2+IkA/+IJWmvQilTr5OSliEHGF+D9scbIpdC6yGtTI0/VhaHoVes2AN/A==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"cookie": "0.7.2",
|
||||
"cookie-signature": "1.0.7",
|
||||
"debug": "2.6.9",
|
||||
"depd": "~2.0.0",
|
||||
"on-headers": "~1.1.0",
|
||||
"parseurl": "~1.3.3",
|
||||
"safe-buffer": "5.2.1",
|
||||
"uid-safe": "~2.1.5"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8.0"
|
||||
}
|
||||
},
|
||||
"node_modules/express-session/node_modules/cookie-signature": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz",
|
||||
"integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/express-session/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/express-session/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/extend": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
|
||||
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/fetch-blob": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
|
||||
"integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/jimmywarting"
|
||||
},
|
||||
{
|
||||
"type": "paypal",
|
||||
"url": "https://paypal.me/jimmywarting"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"node-domexception": "^1.0.0",
|
||||
"web-streams-polyfill": "^3.0.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20 || >= 14.13"
|
||||
}
|
||||
},
|
||||
"node_modules/finalhandler": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz",
|
||||
|
|
@ -587,18 +441,6 @@
|
|||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/formdata-polyfill": {
|
||||
"version": "4.0.10",
|
||||
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
|
||||
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fetch-blob": "^3.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.20.0"
|
||||
}
|
||||
},
|
||||
"node_modules/forwarded": {
|
||||
"version": "0.2.0",
|
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
|
||||
|
|
@ -626,131 +468,6 @@
|
|||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/gaxios": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-7.1.1.tgz",
|
||||
"integrity": "sha512-Odju3uBUJyVCkW64nLD4wKLhbh93bh6vIg/ZIXkWiLPBrdgtc65+tls/qml+un3pr6JqYVFDZbbmLDQT68rTOQ==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"extend": "^3.0.2",
|
||||
"https-proxy-agent": "^7.0.1",
|
||||
"node-fetch": "^3.3.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/gcp-metadata": {
|
||||
"version": "5.3.0",
|
||||
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-5.3.0.tgz",
|
||||
"integrity": "sha512-FNTkdNEnBdlqF2oatizolQqNANMrcqJt6AAYt99B3y1aLLC8Hc5IOBb+ZnnzllodEEf6xMBp6wRcBbc16fa65w==",
|
||||
"license": "Apache-2.0",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"gaxios": "^5.0.0",
|
||||
"json-bigint": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/gcp-metadata/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,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"debug": "4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/gcp-metadata/node_modules/gaxios": {
|
||||
"version": "5.1.3",
|
||||
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-5.1.3.tgz",
|
||||
"integrity": "sha512-95hVgBRgEIRQQQHIbnxBXeHbW4TqFk4ZDJW7wmVtvYar72FdhRIo1UGOLS2eRAKCPEdPBWu+M7+A33D9CdX9rA==",
|
||||
"license": "Apache-2.0",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"extend": "^3.0.2",
|
||||
"https-proxy-agent": "^5.0.0",
|
||||
"is-stream": "^2.0.0",
|
||||
"node-fetch": "^2.6.9"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/gcp-metadata/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,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"agent-base": "6",
|
||||
"debug": "4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/gcp-metadata/node_modules/node-fetch": {
|
||||
"version": "2.7.0",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz",
|
||||
"integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"whatwg-url": "^5.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "4.x || >=6.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"encoding": "^0.1.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"encoding": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/gcp-metadata/node_modules/tr46": {
|
||||
"version": "0.0.3",
|
||||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/gcp-metadata/node_modules/webidl-conversions": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||
"integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==",
|
||||
"license": "BSD-2-Clause",
|
||||
"optional": true,
|
||||
"peer": true
|
||||
},
|
||||
"node_modules/gcp-metadata/node_modules/whatwg-url": {
|
||||
"version": "5.0.0",
|
||||
"resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
|
||||
"integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"tr46": "~0.0.3",
|
||||
"webidl-conversions": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/get-intrinsic": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
|
||||
|
|
@ -788,76 +505,6 @@
|
|||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/google-auth-library": {
|
||||
"version": "10.2.1",
|
||||
"resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-10.2.1.tgz",
|
||||
"integrity": "sha512-HMxFl2NfeHYnaL1HoRIN1XgorKS+6CDaM+z9LSSN+i/nKDDL4KFFEWogMXu7jV4HZQy2MsxpY+wA5XIf3w410A==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"base64-js": "^1.3.0",
|
||||
"ecdsa-sig-formatter": "^1.0.11",
|
||||
"gaxios": "^7.0.0",
|
||||
"gcp-metadata": "^7.0.0",
|
||||
"google-logging-utils": "^1.0.0",
|
||||
"gtoken": "^8.0.0",
|
||||
"jws": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/google-auth-library/node_modules/gcp-metadata": {
|
||||
"version": "7.0.1",
|
||||
"resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-7.0.1.tgz",
|
||||
"integrity": "sha512-UcO3kefx6dCcZkgcTGgVOTFb7b1LlQ02hY1omMjjrrBzkajRMCFgYOjs7J71WqnuG1k2b+9ppGL7FsOfhZMQKQ==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"gaxios": "^7.0.0",
|
||||
"google-logging-utils": "^1.0.0",
|
||||
"json-bigint": "^1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/google-logging-utils": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-1.1.1.tgz",
|
||||
"integrity": "sha512-rcX58I7nqpu4mbKztFeOAObbomBbHU2oIb/d3tJfF3dizGSApqtSwYJigGCooHdnMyQBIw8BrWyK96w3YXgr6A==",
|
||||
"license": "Apache-2.0",
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
}
|
||||
},
|
||||
"node_modules/googleapis": {
|
||||
"version": "156.0.0",
|
||||
"resolved": "https://registry.npmjs.org/googleapis/-/googleapis-156.0.0.tgz",
|
||||
"integrity": "sha512-Th401jKVdtrIaAc/b5iv8dfNVN2O7EgU/32Zvb2zxK3hiRrBU8hNbF7wMmOAEsvqnEKssq6XlXMaCBKazrvakw==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"google-auth-library": "^10.2.0",
|
||||
"googleapis-common": "^8.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/googleapis-common": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-8.0.0.tgz",
|
||||
"integrity": "sha512-66if47It7y+Sab3HMkwEXx1kCq9qUC9px8ZXoj1CMrmLmUw81GpbnsNlXnlyZyGbGPGcj+tDD9XsZ23m7GLaJQ==",
|
||||
"license": "Apache-2.0",
|
||||
"dependencies": {
|
||||
"extend": "^3.0.2",
|
||||
"gaxios": "^7.0.0-rc.4",
|
||||
"google-auth-library": "^10.1.0",
|
||||
"qs": "^6.7.0",
|
||||
"url-template": "^2.0.8"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/gopd": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
|
||||
|
|
@ -870,19 +517,6 @@
|
|||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/gtoken": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/gtoken/-/gtoken-8.0.0.tgz",
|
||||
"integrity": "sha512-+CqsMbHPiSTdtSO14O51eMNlrp9N79gmeqmXeouJOhfucAedHw9noVe/n5uJk3tbKE6a+6ZCQg3RPhVhHByAIw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"gaxios": "^7.0.0",
|
||||
"jws": "^4.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/has-symbols": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
|
||||
|
|
@ -938,19 +572,6 @@
|
|||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"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==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"agent-base": "^7.1.2",
|
||||
"debug": "4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 14"
|
||||
}
|
||||
},
|
||||
"node_modules/iconv-lite": {
|
||||
"version": "0.6.3",
|
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
|
||||
|
|
@ -984,50 +605,6 @@
|
|||
"integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/is-stream": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
|
||||
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=8"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/json-bigint": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz",
|
||||
"integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"bignumber.js": "^9.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/jwa": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz",
|
||||
"integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"buffer-equal-constant-time": "^1.0.1",
|
||||
"ecdsa-sig-formatter": "1.0.11",
|
||||
"safe-buffer": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/jws": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz",
|
||||
"integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"jwa": "^2.0.0",
|
||||
"safe-buffer": "^5.0.1"
|
||||
}
|
||||
},
|
||||
"node_modules/kareem": {
|
||||
"version": "2.6.3",
|
||||
"resolved": "https://registry.npmjs.org/kareem/-/kareem-2.6.3.tgz",
|
||||
|
|
@ -1208,59 +785,6 @@
|
|||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/node-cron": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/node-cron/-/node-cron-4.2.1.tgz",
|
||||
"integrity": "sha512-lgimEHPE/QDgFlywTd8yTR61ptugX3Qer29efeyWw2rv259HtGBNn1vZVmp8lB9uo9wC0t/AT4iGqXxia+CJFg==",
|
||||
"license": "ISC",
|
||||
"engines": {
|
||||
"node": ">=6.0.0"
|
||||
}
|
||||
},
|
||||
"node_modules/node-domexception": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
|
||||
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
|
||||
"deprecated": "Use your platform's native DOMException instead",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/jimmywarting"
|
||||
},
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://paypal.me/jimmywarting"
|
||||
}
|
||||
],
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=10.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/node-fetch": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz",
|
||||
"integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"data-uri-to-buffer": "^4.0.0",
|
||||
"fetch-blob": "^3.1.4",
|
||||
"formdata-polyfill": "^4.0.10"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/node-fetch"
|
||||
}
|
||||
},
|
||||
"node_modules/oauth": {
|
||||
"version": "0.10.2",
|
||||
"resolved": "https://registry.npmjs.org/oauth/-/oauth-0.10.2.tgz",
|
||||
"integrity": "sha512-JtFnB+8nxDEXgNyniwz573xxbKSOu3R8D40xQKqcjwJ2CDkYqUDI53o6IuzDJBx60Z8VKCm271+t8iFjakrl8Q==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/object-assign": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||
|
|
@ -1294,15 +818,6 @@
|
|||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/on-headers": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz",
|
||||
"integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/once": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
|
||||
|
|
@ -1321,64 +836,6 @@
|
|||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/passport": {
|
||||
"version": "0.7.0",
|
||||
"resolved": "https://registry.npmjs.org/passport/-/passport-0.7.0.tgz",
|
||||
"integrity": "sha512-cPLl+qZpSc+ireUvt+IzqbED1cHHkDoVYMo30jbJIdOOjQ1MQYZBPiNvmi8UM6lJuOpTPXJGZQk0DtC4y61MYQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"passport-strategy": "1.x.x",
|
||||
"pause": "0.0.1",
|
||||
"utils-merge": "^1.0.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/jaredhanson"
|
||||
}
|
||||
},
|
||||
"node_modules/passport-google-oauth20": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/passport-google-oauth20/-/passport-google-oauth20-2.0.0.tgz",
|
||||
"integrity": "sha512-KSk6IJ15RoxuGq7D1UKK/8qKhNfzbLeLrG3gkLZ7p4A6DBCcv7xpyQwuXtWdpyR0+E0mwkpjY1VfPOhxQrKzdQ==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"passport-oauth2": "1.x.x"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/passport-oauth2": {
|
||||
"version": "1.8.0",
|
||||
"resolved": "https://registry.npmjs.org/passport-oauth2/-/passport-oauth2-1.8.0.tgz",
|
||||
"integrity": "sha512-cjsQbOrXIDE4P8nNb3FQRCCmJJ/utnFKEz2NX209f7KOHPoX18gF7gBzBbLLsj2/je4KrgiwLLGjf0lm9rtTBA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"base64url": "3.x.x",
|
||||
"oauth": "0.10.x",
|
||||
"passport-strategy": "1.x.x",
|
||||
"uid2": "0.0.x",
|
||||
"utils-merge": "1.x.x"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4.0"
|
||||
},
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/jaredhanson"
|
||||
}
|
||||
},
|
||||
"node_modules/passport-strategy": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/passport-strategy/-/passport-strategy-1.0.0.tgz",
|
||||
"integrity": "sha512-CB97UUvDKJde2V0KDWWB3lyf6PC3FaZP7YxZ2G8OAtn9p4HI9j9JLP9qjOGZFvyl8uwNT8qM+hGnz/n16NI7oA==",
|
||||
"engines": {
|
||||
"node": ">= 0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/path-to-regexp": {
|
||||
"version": "8.2.0",
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz",
|
||||
|
|
@ -1388,11 +845,6 @@
|
|||
"node": ">=16"
|
||||
}
|
||||
},
|
||||
"node_modules/pause": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/pause/-/pause-0.0.1.tgz",
|
||||
"integrity": "sha512-KG8UEiEVkR3wGEb4m5yZkVCzigAD+cVEJck2CzYZO37ZGJfctvVptVO192MwrtPhzONn6go8ylnOdMhKqi4nfg=="
|
||||
},
|
||||
"node_modules/proxy-addr": {
|
||||
"version": "2.0.7",
|
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
|
||||
|
|
@ -1436,15 +888,6 @@
|
|||
"url": "https://github.com/sponsors/ljharb"
|
||||
}
|
||||
},
|
||||
"node_modules/random-bytes": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/random-bytes/-/random-bytes-1.0.0.tgz",
|
||||
"integrity": "sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/range-parser": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
|
||||
|
|
@ -1685,24 +1128,6 @@
|
|||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/uid-safe": {
|
||||
"version": "2.1.5",
|
||||
"resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-2.1.5.tgz",
|
||||
"integrity": "sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"random-bytes": "~1.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/uid2": {
|
||||
"version": "0.0.4",
|
||||
"resolved": "https://registry.npmjs.org/uid2/-/uid2-0.0.4.tgz",
|
||||
"integrity": "sha512-IevTus0SbGwQzYh3+fRsAMTVVPOoIVufzacXcHPmdlle1jUpq7BRL+mw3dgeLanvGZdwwbWhRV6XrcFNdBmjWA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/unpipe": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
||||
|
|
@ -1712,21 +1137,6 @@
|
|||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/url-template": {
|
||||
"version": "2.0.8",
|
||||
"resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz",
|
||||
"integrity": "sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==",
|
||||
"license": "BSD"
|
||||
},
|
||||
"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/vary": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
|
||||
|
|
@ -1736,15 +1146,6 @@
|
|||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/web-streams-polyfill": {
|
||||
"version": "3.3.3",
|
||||
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz",
|
||||
"integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/webidl-conversions": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
|
||||
|
|
|
|||
22
Backend/node_modules/agent-base/LICENSE
generated
vendored
22
Backend/node_modules/agent-base/LICENSE
generated
vendored
|
|
@ -1,22 +0,0 @@
|
|||
(The MIT License)
|
||||
|
||||
Copyright (c) 2013 Nathan Rajlich <nathan@tootallnate.net>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
'Software'), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
15
Backend/node_modules/agent-base/dist/helpers.d.ts
generated
vendored
15
Backend/node_modules/agent-base/dist/helpers.d.ts
generated
vendored
|
|
@ -1,15 +0,0 @@
|
|||
/// <reference types="node" />
|
||||
/// <reference types="node" />
|
||||
/// <reference types="node" />
|
||||
/// <reference types="node" />
|
||||
/// <reference types="node" />
|
||||
import * as http from 'http';
|
||||
import * as https from 'https';
|
||||
import type { Readable } from 'stream';
|
||||
export type ThenableRequest = http.ClientRequest & {
|
||||
then: Promise<http.IncomingMessage>['then'];
|
||||
};
|
||||
export declare function toBuffer(stream: Readable): Promise<Buffer>;
|
||||
export declare function json(stream: Readable): Promise<any>;
|
||||
export declare function req(url: string | URL, opts?: https.RequestOptions): ThenableRequest;
|
||||
//# sourceMappingURL=helpers.d.ts.map
|
||||
1
Backend/node_modules/agent-base/dist/helpers.d.ts.map
generated
vendored
1
Backend/node_modules/agent-base/dist/helpers.d.ts.map
generated
vendored
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;;;;AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,GAAG;IAClD,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;CAC5C,CAAC;AAEF,wBAAsB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAQhE;AAGD,wBAAsB,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAUzD;AAED,wBAAgB,GAAG,CAClB,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,IAAI,GAAE,KAAK,CAAC,cAAmB,GAC7B,eAAe,CAcjB"}
|
||||
66
Backend/node_modules/agent-base/dist/helpers.js
generated
vendored
66
Backend/node_modules/agent-base/dist/helpers.js
generated
vendored
|
|
@ -1,66 +0,0 @@
|
|||
"use strict";
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||||
desc = { enumerable: true, get: function() { return m[k]; } };
|
||||
}
|
||||
Object.defineProperty(o, k2, desc);
|
||||
}) : (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
}));
|
||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||
}) : function(o, v) {
|
||||
o["default"] = v;
|
||||
});
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.req = exports.json = exports.toBuffer = void 0;
|
||||
const http = __importStar(require("http"));
|
||||
const https = __importStar(require("https"));
|
||||
async function toBuffer(stream) {
|
||||
let length = 0;
|
||||
const chunks = [];
|
||||
for await (const chunk of stream) {
|
||||
length += chunk.length;
|
||||
chunks.push(chunk);
|
||||
}
|
||||
return Buffer.concat(chunks, length);
|
||||
}
|
||||
exports.toBuffer = toBuffer;
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
async function json(stream) {
|
||||
const buf = await toBuffer(stream);
|
||||
const str = buf.toString('utf8');
|
||||
try {
|
||||
return JSON.parse(str);
|
||||
}
|
||||
catch (_err) {
|
||||
const err = _err;
|
||||
err.message += ` (input: ${str})`;
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
exports.json = json;
|
||||
function req(url, opts = {}) {
|
||||
const href = typeof url === 'string' ? url : url.href;
|
||||
const req = (href.startsWith('https:') ? https : http).request(url, opts);
|
||||
const promise = new Promise((resolve, reject) => {
|
||||
req
|
||||
.once('response', resolve)
|
||||
.once('error', reject)
|
||||
.end();
|
||||
});
|
||||
req.then = promise.then.bind(promise);
|
||||
return req;
|
||||
}
|
||||
exports.req = req;
|
||||
//# sourceMappingURL=helpers.js.map
|
||||
1
Backend/node_modules/agent-base/dist/helpers.js.map
generated
vendored
1
Backend/node_modules/agent-base/dist/helpers.js.map
generated
vendored
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA6B;AAC7B,6CAA+B;AAOxB,KAAK,UAAU,QAAQ,CAAC,MAAgB;IAC9C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE;QACjC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;QACvB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnB;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC;AARD,4BAQC;AAED,8DAA8D;AACvD,KAAK,UAAU,IAAI,CAAC,MAAgB;IAC1C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;KACvB;IAAC,OAAO,IAAa,EAAE;QACvB,MAAM,GAAG,GAAG,IAAa,CAAC;QAC1B,GAAG,CAAC,OAAO,IAAI,YAAY,GAAG,GAAG,CAAC;QAClC,MAAM,GAAG,CAAC;KACV;AACF,CAAC;AAVD,oBAUC;AAED,SAAgB,GAAG,CAClB,GAAiB,EACjB,OAA6B,EAAE;IAE/B,MAAM,IAAI,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IACtD,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAC7D,GAAG,EACH,IAAI,CACe,CAAC;IACrB,MAAM,OAAO,GAAG,IAAI,OAAO,CAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrE,GAAG;aACD,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;aACzB,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;aACrB,GAAG,EAAqB,CAAC;IAC5B,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtC,OAAO,GAAG,CAAC;AACZ,CAAC;AAjBD,kBAiBC"}
|
||||
41
Backend/node_modules/agent-base/dist/index.d.ts
generated
vendored
41
Backend/node_modules/agent-base/dist/index.d.ts
generated
vendored
|
|
@ -1,41 +0,0 @@
|
|||
/// <reference types="node" />
|
||||
/// <reference types="node" />
|
||||
/// <reference types="node" />
|
||||
/// <reference types="node" />
|
||||
import * as net from 'net';
|
||||
import * as tls from 'tls';
|
||||
import * as http from 'http';
|
||||
import type { Duplex } from 'stream';
|
||||
export * from './helpers';
|
||||
interface HttpConnectOpts extends net.TcpNetConnectOpts {
|
||||
secureEndpoint: false;
|
||||
protocol?: string;
|
||||
}
|
||||
interface HttpsConnectOpts extends tls.ConnectionOptions {
|
||||
secureEndpoint: true;
|
||||
protocol?: string;
|
||||
port: number;
|
||||
}
|
||||
export type AgentConnectOpts = HttpConnectOpts | HttpsConnectOpts;
|
||||
declare const INTERNAL: unique symbol;
|
||||
export declare abstract class Agent extends http.Agent {
|
||||
private [INTERNAL];
|
||||
options: Partial<net.TcpNetConnectOpts & tls.ConnectionOptions>;
|
||||
keepAlive: boolean;
|
||||
constructor(opts?: http.AgentOptions);
|
||||
abstract connect(req: http.ClientRequest, options: AgentConnectOpts): Promise<Duplex | http.Agent> | Duplex | http.Agent;
|
||||
/**
|
||||
* Determine whether this is an `http` or `https` request.
|
||||
*/
|
||||
isSecureEndpoint(options?: AgentConnectOpts): boolean;
|
||||
private incrementSockets;
|
||||
private decrementSockets;
|
||||
getName(options?: AgentConnectOpts): string;
|
||||
createSocket(req: http.ClientRequest, options: AgentConnectOpts, cb: (err: Error | null, s?: Duplex) => void): void;
|
||||
createConnection(): Duplex;
|
||||
get defaultPort(): number;
|
||||
set defaultPort(v: number);
|
||||
get protocol(): string;
|
||||
set protocol(v: string);
|
||||
}
|
||||
//# sourceMappingURL=index.d.ts.map
|
||||
1
Backend/node_modules/agent-base/dist/index.d.ts.map
generated
vendored
1
Backend/node_modules/agent-base/dist/index.d.ts.map
generated
vendored
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,GAAG,MAAM,KAAK,CAAC;AAC3B,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAErC,cAAc,WAAW,CAAC;AAE1B,UAAU,eAAgB,SAAQ,GAAG,CAAC,iBAAiB;IACtD,cAAc,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,gBAAiB,SAAQ,GAAG,CAAC,iBAAiB;IACvD,cAAc,EAAE,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG,gBAAgB,CAAC;AAElE,QAAA,MAAM,QAAQ,eAAmC,CAAC;AAQlD,8BAAsB,KAAM,SAAQ,IAAI,CAAC,KAAK;IAC7C,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAgB;IAGlC,OAAO,EAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACjE,SAAS,EAAG,OAAO,CAAC;gBAER,IAAI,CAAC,EAAE,IAAI,CAAC,YAAY;IAKpC,QAAQ,CAAC,OAAO,CACf,GAAG,EAAE,IAAI,CAAC,aAAa,EACvB,OAAO,EAAE,gBAAgB,GACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK;IAErD;;OAEG;IACH,gBAAgB,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO;IAqCrD,OAAO,CAAC,gBAAgB;IAqBxB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,MAAM;IAU3C,YAAY,CACX,GAAG,EAAE,IAAI,CAAC,aAAa,EACvB,OAAO,EAAE,gBAAgB,EACzB,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI;IAgC5C,gBAAgB,IAAI,MAAM;IAW1B,IAAI,WAAW,IAAI,MAAM,CAKxB;IAED,IAAI,WAAW,CAAC,CAAC,EAAE,MAAM,EAIxB;IAED,IAAI,QAAQ,IAAI,MAAM,CAKrB;IAED,IAAI,QAAQ,CAAC,CAAC,EAAE,MAAM,EAIrB;CACD"}
|
||||
178
Backend/node_modules/agent-base/dist/index.js
generated
vendored
178
Backend/node_modules/agent-base/dist/index.js
generated
vendored
|
|
@ -1,178 +0,0 @@
|
|||
"use strict";
|
||||
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
var desc = Object.getOwnPropertyDescriptor(m, k);
|
||||
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
||||
desc = { enumerable: true, get: function() { return m[k]; } };
|
||||
}
|
||||
Object.defineProperty(o, k2, desc);
|
||||
}) : (function(o, m, k, k2) {
|
||||
if (k2 === undefined) k2 = k;
|
||||
o[k2] = m[k];
|
||||
}));
|
||||
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
||||
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
||||
}) : function(o, v) {
|
||||
o["default"] = v;
|
||||
});
|
||||
var __importStar = (this && this.__importStar) || function (mod) {
|
||||
if (mod && mod.__esModule) return mod;
|
||||
var result = {};
|
||||
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
||||
__setModuleDefault(result, mod);
|
||||
return result;
|
||||
};
|
||||
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
||||
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.Agent = void 0;
|
||||
const net = __importStar(require("net"));
|
||||
const http = __importStar(require("http"));
|
||||
const https_1 = require("https");
|
||||
__exportStar(require("./helpers"), exports);
|
||||
const INTERNAL = Symbol('AgentBaseInternalState');
|
||||
class Agent extends http.Agent {
|
||||
constructor(opts) {
|
||||
super(opts);
|
||||
this[INTERNAL] = {};
|
||||
}
|
||||
/**
|
||||
* Determine whether this is an `http` or `https` request.
|
||||
*/
|
||||
isSecureEndpoint(options) {
|
||||
if (options) {
|
||||
// First check the `secureEndpoint` property explicitly, since this
|
||||
// means that a parent `Agent` is "passing through" to this instance.
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
if (typeof options.secureEndpoint === 'boolean') {
|
||||
return options.secureEndpoint;
|
||||
}
|
||||
// If no explicit `secure` endpoint, check if `protocol` property is
|
||||
// set. This will usually be the case since using a full string URL
|
||||
// or `URL` instance should be the most common usage.
|
||||
if (typeof options.protocol === 'string') {
|
||||
return options.protocol === 'https:';
|
||||
}
|
||||
}
|
||||
// Finally, if no `protocol` property was set, then fall back to
|
||||
// checking the stack trace of the current call stack, and try to
|
||||
// detect the "https" module.
|
||||
const { stack } = new Error();
|
||||
if (typeof stack !== 'string')
|
||||
return false;
|
||||
return stack
|
||||
.split('\n')
|
||||
.some((l) => l.indexOf('(https.js:') !== -1 ||
|
||||
l.indexOf('node:https:') !== -1);
|
||||
}
|
||||
// In order to support async signatures in `connect()` and Node's native
|
||||
// connection pooling in `http.Agent`, the array of sockets for each origin
|
||||
// has to be updated synchronously. This is so the length of the array is
|
||||
// accurate when `addRequest()` is next called. We achieve this by creating a
|
||||
// fake socket and adding it to `sockets[origin]` and incrementing
|
||||
// `totalSocketCount`.
|
||||
incrementSockets(name) {
|
||||
// If `maxSockets` and `maxTotalSockets` are both Infinity then there is no
|
||||
// need to create a fake socket because Node.js native connection pooling
|
||||
// will never be invoked.
|
||||
if (this.maxSockets === Infinity && this.maxTotalSockets === Infinity) {
|
||||
return null;
|
||||
}
|
||||
// All instances of `sockets` are expected TypeScript errors. The
|
||||
// alternative is to add it as a private property of this class but that
|
||||
// will break TypeScript subclassing.
|
||||
if (!this.sockets[name]) {
|
||||
// @ts-expect-error `sockets` is readonly in `@types/node`
|
||||
this.sockets[name] = [];
|
||||
}
|
||||
const fakeSocket = new net.Socket({ writable: false });
|
||||
this.sockets[name].push(fakeSocket);
|
||||
// @ts-expect-error `totalSocketCount` isn't defined in `@types/node`
|
||||
this.totalSocketCount++;
|
||||
return fakeSocket;
|
||||
}
|
||||
decrementSockets(name, socket) {
|
||||
if (!this.sockets[name] || socket === null) {
|
||||
return;
|
||||
}
|
||||
const sockets = this.sockets[name];
|
||||
const index = sockets.indexOf(socket);
|
||||
if (index !== -1) {
|
||||
sockets.splice(index, 1);
|
||||
// @ts-expect-error `totalSocketCount` isn't defined in `@types/node`
|
||||
this.totalSocketCount--;
|
||||
if (sockets.length === 0) {
|
||||
// @ts-expect-error `sockets` is readonly in `@types/node`
|
||||
delete this.sockets[name];
|
||||
}
|
||||
}
|
||||
}
|
||||
// In order to properly update the socket pool, we need to call `getName()` on
|
||||
// the core `https.Agent` if it is a secureEndpoint.
|
||||
getName(options) {
|
||||
const secureEndpoint = this.isSecureEndpoint(options);
|
||||
if (secureEndpoint) {
|
||||
// @ts-expect-error `getName()` isn't defined in `@types/node`
|
||||
return https_1.Agent.prototype.getName.call(this, options);
|
||||
}
|
||||
// @ts-expect-error `getName()` isn't defined in `@types/node`
|
||||
return super.getName(options);
|
||||
}
|
||||
createSocket(req, options, cb) {
|
||||
const connectOpts = {
|
||||
...options,
|
||||
secureEndpoint: this.isSecureEndpoint(options),
|
||||
};
|
||||
const name = this.getName(connectOpts);
|
||||
const fakeSocket = this.incrementSockets(name);
|
||||
Promise.resolve()
|
||||
.then(() => this.connect(req, connectOpts))
|
||||
.then((socket) => {
|
||||
this.decrementSockets(name, fakeSocket);
|
||||
if (socket instanceof http.Agent) {
|
||||
try {
|
||||
// @ts-expect-error `addRequest()` isn't defined in `@types/node`
|
||||
return socket.addRequest(req, connectOpts);
|
||||
}
|
||||
catch (err) {
|
||||
return cb(err);
|
||||
}
|
||||
}
|
||||
this[INTERNAL].currentSocket = socket;
|
||||
// @ts-expect-error `createSocket()` isn't defined in `@types/node`
|
||||
super.createSocket(req, options, cb);
|
||||
}, (err) => {
|
||||
this.decrementSockets(name, fakeSocket);
|
||||
cb(err);
|
||||
});
|
||||
}
|
||||
createConnection() {
|
||||
const socket = this[INTERNAL].currentSocket;
|
||||
this[INTERNAL].currentSocket = undefined;
|
||||
if (!socket) {
|
||||
throw new Error('No socket was returned in the `connect()` function');
|
||||
}
|
||||
return socket;
|
||||
}
|
||||
get defaultPort() {
|
||||
return (this[INTERNAL].defaultPort ??
|
||||
(this.protocol === 'https:' ? 443 : 80));
|
||||
}
|
||||
set defaultPort(v) {
|
||||
if (this[INTERNAL]) {
|
||||
this[INTERNAL].defaultPort = v;
|
||||
}
|
||||
}
|
||||
get protocol() {
|
||||
return (this[INTERNAL].protocol ??
|
||||
(this.isSecureEndpoint() ? 'https:' : 'http:'));
|
||||
}
|
||||
set protocol(v) {
|
||||
if (this[INTERNAL]) {
|
||||
this[INTERNAL].protocol = v;
|
||||
}
|
||||
}
|
||||
}
|
||||
exports.Agent = Agent;
|
||||
//# sourceMappingURL=index.js.map
|
||||
1
Backend/node_modules/agent-base/dist/index.js.map
generated
vendored
1
Backend/node_modules/agent-base/dist/index.js.map
generated
vendored
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAA2B;AAE3B,2CAA6B;AAC7B,iCAA4C;AAG5C,4CAA0B;AAe1B,MAAM,QAAQ,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAQlD,MAAsB,KAAM,SAAQ,IAAI,CAAC,KAAK;IAO7C,YAAY,IAAwB;QACnC,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IACrB,CAAC;IAOD;;OAEG;IACH,gBAAgB,CAAC,OAA0B;QAC1C,IAAI,OAAO,EAAE;YACZ,mEAAmE;YACnE,qEAAqE;YACrE,8DAA8D;YAC9D,IAAI,OAAQ,OAAe,CAAC,cAAc,KAAK,SAAS,EAAE;gBACzD,OAAO,OAAO,CAAC,cAAc,CAAC;aAC9B;YAED,oEAAoE;YACpE,mEAAmE;YACnE,qDAAqD;YACrD,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;gBACzC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;aACrC;SACD;QAED,gEAAgE;QAChE,iEAAiE;QACjE,6BAA6B;QAC7B,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,KAAK,EAAE,CAAC;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5C,OAAO,KAAK;aACV,KAAK,CAAC,IAAI,CAAC;aACX,IAAI,CACJ,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC9B,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAChC,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,2EAA2E;IAC3E,yEAAyE;IACzE,6EAA6E;IAC7E,kEAAkE;IAClE,sBAAsB;IACd,gBAAgB,CAAC,IAAY;QACpC,2EAA2E;QAC3E,yEAAyE;QACzE,yBAAyB;QACzB,IAAI,IAAI,CAAC,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ,EAAE;YACtE,OAAO,IAAI,CAAC;SACZ;QACD,iEAAiE;QACjE,wEAAwE;QACxE,qCAAqC;QACrC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACxB,0DAA0D;YAC1D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;SACxB;QACD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACtD,qEAAqE;QACrE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,UAAU,CAAC;IACnB,CAAC;IAEO,gBAAgB,CAAC,IAAY,EAAE,MAAyB;QAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,MAAM,KAAK,IAAI,EAAE;YAC3C,OAAO;SACP;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAiB,CAAC;QACnD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;YACjB,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACzB,sEAAsE;YACtE,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACzB,0DAA0D;gBAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;aAC1B;SACD;IACF,CAAC;IAED,8EAA8E;IAC9E,oDAAoD;IACpD,OAAO,CAAC,OAA0B;QACjC,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,cAAc,EAAE;YACnB,8DAA8D;YAC9D,OAAO,aAAU,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACxD;QACD,8DAA8D;QAC9D,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED,YAAY,CACX,GAAuB,EACvB,OAAyB,EACzB,EAA2C;QAE3C,MAAM,WAAW,GAAG;YACnB,GAAG,OAAO;YACV,cAAc,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC;SAC9C,CAAC;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QACvC,MAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,CAAC,OAAO,EAAE;aACf,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;aAC1C,IAAI,CACJ,CAAC,MAAM,EAAE,EAAE;YACV,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACxC,IAAI,MAAM,YAAY,IAAI,CAAC,KAAK,EAAE;gBACjC,IAAI;oBACH,iEAAiE;oBACjE,OAAO,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;iBAC3C;gBAAC,OAAO,GAAY,EAAE;oBACtB,OAAO,EAAE,CAAC,GAAY,CAAC,CAAC;iBACxB;aACD;YACD,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,GAAG,MAAM,CAAC;YACtC,mEAAmE;YACnE,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACtC,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;YACP,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;YACxC,EAAE,CAAC,GAAG,CAAC,CAAC;QACT,CAAC,CACD,CAAC;IACJ,CAAC;IAED,gBAAgB;QACf,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,CAAC,aAAa,GAAG,SAAS,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE;YACZ,MAAM,IAAI,KAAK,CACd,oDAAoD,CACpD,CAAC;SACF;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,IAAI,WAAW;QACd,OAAO,CACN,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW;YAC1B,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CACvC,CAAC;IACH,CAAC;IAED,IAAI,WAAW,CAAC,CAAS;QACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;YACnB,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC;SAC/B;IACF,CAAC;IAED,IAAI,QAAQ;QACX,OAAO,CACN,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ;YACvB,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAC9C,CAAC;IACH,CAAC;IAED,IAAI,QAAQ,CAAC,CAAS;QACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;YACnB,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC;SAC5B;IACF,CAAC;CACD;AAlLD,sBAkLC"}
|
||||
46
Backend/node_modules/agent-base/package.json
generated
vendored
46
Backend/node_modules/agent-base/package.json
generated
vendored
|
|
@ -1,46 +0,0 @@
|
|||
{
|
||||
"name": "agent-base",
|
||||
"version": "7.1.4",
|
||||
"description": "Turn a function into an `http.Agent` instance",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/TooTallNate/proxy-agents.git",
|
||||
"directory": "packages/agent-base"
|
||||
},
|
||||
"keywords": [
|
||||
"http",
|
||||
"agent",
|
||||
"base",
|
||||
"barebones",
|
||||
"https"
|
||||
],
|
||||
"author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"@types/debug": "^4.1.7",
|
||||
"@types/jest": "^29.5.1",
|
||||
"@types/node": "^14.18.45",
|
||||
"@types/semver": "^7.3.13",
|
||||
"@types/ws": "^6.0.4",
|
||||
"async-listen": "^3.0.0",
|
||||
"jest": "^29.5.0",
|
||||
"ts-jest": "^29.1.0",
|
||||
"typescript": "^5.0.4",
|
||||
"ws": "^5.2.4",
|
||||
"tsconfig": "0.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 14"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
"test": "jest --env node --verbose --bail",
|
||||
"lint": "eslint . --ext .ts",
|
||||
"pack": "node ../../scripts/pack.mjs"
|
||||
}
|
||||
}
|
||||
41
Backend/node_modules/axios/CHANGELOG.md
generated
vendored
41
Backend/node_modules/axios/CHANGELOG.md
generated
vendored
|
|
@ -1,46 +1,5 @@
|
|||
# Changelog
|
||||
|
||||
# [1.11.0](https://github.com/axios/axios/compare/v1.10.0...v1.11.0) (2025-07-22)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* form-data npm pakcage ([#6970](https://github.com/axios/axios/issues/6970)) ([e72c193](https://github.com/axios/axios/commit/e72c193722530db538b19e5ddaaa4544d226b253))
|
||||
* prevent RangeError when using large Buffers ([#6961](https://github.com/axios/axios/issues/6961)) ([a2214ca](https://github.com/axios/axios/commit/a2214ca1bc60540baf2c80573cea3a0ff91ba9d1))
|
||||
* **types:** resolve type discrepancies between ESM and CJS TypeScript declaration files ([#6956](https://github.com/axios/axios/issues/6956)) ([8517aa1](https://github.com/axios/axios/commit/8517aa16f8d082fc1d5309c642220fa736159110))
|
||||
|
||||
### Contributors to this release
|
||||
|
||||
- <img src="https://avatars.githubusercontent.com/u/12534341?v=4&s=18" alt="avatar" width="18"/> [izzy goldman](https://github.com/izzygld "+186/-93 (#6970 )")
|
||||
- <img src="https://avatars.githubusercontent.com/u/142807367?v=4&s=18" alt="avatar" width="18"/> [Manish Sahani](https://github.com/manishsahanidev "+70/-0 (#6961 )")
|
||||
- <img src="https://avatars.githubusercontent.com/u/189505037?v=4&s=18" alt="avatar" width="18"/> [Noritaka Kobayashi](https://github.com/noritaka1166 "+12/-10 (#6938 #6939 )")
|
||||
- <img src="https://avatars.githubusercontent.com/u/392612?v=4&s=18" alt="avatar" width="18"/> [James Nail](https://github.com/jrnail23 "+13/-2 (#6956 )")
|
||||
- <img src="https://avatars.githubusercontent.com/u/163745239?v=4&s=18" alt="avatar" width="18"/> [Tejaswi1305](https://github.com/Tejaswi1305 "+1/-1 (#6894 )")
|
||||
|
||||
# [1.10.0](https://github.com/axios/axios/compare/v1.9.0...v1.10.0) (2025-06-14)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* **adapter:** pass fetchOptions to fetch function ([#6883](https://github.com/axios/axios/issues/6883)) ([0f50af8](https://github.com/axios/axios/commit/0f50af8e076b7fb403844789bd5e812dedcaf4ed))
|
||||
* **form-data:** convert boolean values to strings in FormData serialization ([#6917](https://github.com/axios/axios/issues/6917)) ([5064b10](https://github.com/axios/axios/commit/5064b108de336ff34862650709761b8a96d26be0))
|
||||
* **package:** add module entry point for React Native; ([#6933](https://github.com/axios/axios/issues/6933)) ([3d343b8](https://github.com/axios/axios/commit/3d343b86dc4fd0eea0987059c5af04327c7ae304))
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* **types:** improved fetchOptions interface ([#6867](https://github.com/axios/axios/issues/6867)) ([63f1fce](https://github.com/axios/axios/commit/63f1fce233009f5db1abf2586c145825ac98c3d7))
|
||||
|
||||
### Contributors to this release
|
||||
|
||||
- <img src="https://avatars.githubusercontent.com/u/12586868?v=4&s=18" alt="avatar" width="18"/> [Dmitriy Mozgovoy](https://github.com/DigitalBrainJS "+30/-19 (#6933 #6920 #6893 #6892 )")
|
||||
- <img src="https://avatars.githubusercontent.com/u/189505037?v=4&s=18" alt="avatar" width="18"/> [Noritaka Kobayashi](https://github.com/noritaka1166 "+2/-6 (#6922 #6923 )")
|
||||
- <img src="https://avatars.githubusercontent.com/u/48370490?v=4&s=18" alt="avatar" width="18"/> [Dimitrios Lazanas](https://github.com/dimitry-lzs "+4/-0 (#6917 )")
|
||||
- <img src="https://avatars.githubusercontent.com/u/71047946?v=4&s=18" alt="avatar" width="18"/> [Adrian Knapp](https://github.com/AdrianKnapp "+2/-2 (#6867 )")
|
||||
- <img src="https://avatars.githubusercontent.com/u/16129206?v=4&s=18" alt="avatar" width="18"/> [Howie Zhao](https://github.com/howiezhao "+3/-1 (#6872 )")
|
||||
- <img src="https://avatars.githubusercontent.com/u/6788611?v=4&s=18" alt="avatar" width="18"/> [Uhyeon Park](https://github.com/warpdev "+1/-1 (#6883 )")
|
||||
- <img src="https://avatars.githubusercontent.com/u/20028934?v=4&s=18" alt="avatar" width="18"/> [Sampo Silvennoinen](https://github.com/stscoundrel "+1/-1 (#6913 )")
|
||||
|
||||
# [1.9.0](https://github.com/axios/axios/compare/v1.8.4...v1.9.0) (2025-04-24)
|
||||
|
||||
|
||||
|
|
|
|||
38
Backend/node_modules/axios/README.md
generated
vendored
38
Backend/node_modules/axios/README.md
generated
vendored
|
|
@ -4,9 +4,12 @@
|
|||
</td><td align="center" width="33.333333333333336%"> <a href="https://twicsy.com/buy-instagram-followers?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block"> <img width="85px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/buy-instagram-followers-twicsy.png" alt="Buy Instagram Followers Twicsy"/> </a> <p align="center" title="Buy real Instagram followers from Twicsy starting at only $2.97. Twicsy has been voted the best site to buy followers from the likes of US Magazine.">Buy real Instagram followers from Twicsy starting at only $2.97. Twicsy has been voted the best site...</p> <p align="center"> <a href="https://twicsy.com/buy-instagram-followers?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship"><b>twicsy.com</b></a> </p>
|
||||
</td></tr><tr width="33.333333333333336%"><td align="center" width="33.333333333333336%"> <a href="https://www.descope.com/?utm_source=axios&utm_medium=referral&utm_campaign=axios-oss-sponsorship" style="padding: 10px; display: inline-block"> <picture> <source width="200px" height="52px" media="(prefers-color-scheme: dark)" srcset="https://axios-http.com/assets/sponsors/descope_white.png"> <img width="200px" height="52px" src="https://axios-http.com/assets/sponsors/descope.png" alt="Descope"/> </picture> </a> <p align="center" title="Hi, we're Descope! We are building something in the authentication space for app developers and can’t wait to place it in your hands.">Hi, we're Descope! We are building something in the authentication space for app developers and...</p> <p align="center"> <a href="https://www.descope.com/?utm_source=axios&utm_medium=referral&utm_campaign=axios-oss-sponsorship"><b>Website</b></a> | <a href="https://docs.descope.com/?utm_source=axios&utm_medium=referral&utm_campaign=axios-oss-sponsorship"><b>Docs</b></a> | <a href="https://www.descope.com/community?utm_source=axios&utm_medium=referral&utm_campaign=axios-oss-sponsorship"><b>Community</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://buzzoid.com/buy-instagram-followers/?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block"> <img width="62px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/buzzoid-buy-instagram-followers.png" alt="Buzzoid - Buy Instagram Followers"/> </a> <p align="center" title="At Buzzoid, you can buy Instagram followers quickly, safely, and easily with just a few clicks. Rated world's #1 IG service since 2012.">At Buzzoid, you can buy Instagram followers quickly, safely, and easily with just a few clicks. Rate...</p> <p align="center"> <a href="https://buzzoid.com/buy-instagram-followers/?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship"><b>buzzoid.com</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://www.famety.net/?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block"> <img width="70px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/famety-buy-instagram-followers.png" alt="Famety - Buy Instagram Followers"/> </a> <p align="center" title="At Famety, you can grow your social media following quickly, safely, and easily with just a few clicks. Rated the world’s #1 social media service since 2013.">At Famety, you can grow your social media following quickly, safely, and easily with just a few clic...</p> <p align="center"> <a href="https://www.famety.net/?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship"><b>www.famety.net</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://www.famety.com/?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block"> <img width="70px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/famety-buy-instagram-followers.png" alt="Famety - Buy Instagram Followers"/> </a> <p align="center" title="At Famety, you can grow your social media following quickly, safely, and easily with just a few clicks. Rated the world’s #1 social media service since 2013.">At Famety, you can grow your social media following quickly, safely, and easily with just a few clic...</p> <p align="center"> <a href="https://www.famety.com/?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship"><b>www.famety.com</b></a> </p>
|
||||
</td></tr><tr width="33.333333333333336%"><td align="center" width="33.333333333333336%"> <a href="https://poprey.com/?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block"> <img width="70px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/instagram-likes.png" alt="Poprey - Buy Instagram Likes"/> </a> <p align="center" title="Buy Instagram Likes">Buy Instagram Likes</p> <p align="center"> <a href="https://poprey.com/?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship"><b>poprey.com</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://betking.com.ua/sports-book/?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block"> <img width="70px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/bukmeker.jpeg" alt="Букмекер"/> </a> <p align="center" title="Ставки на спорт, БК в Україні">Ставки на спорт, БК в Україні</p> <p align="center"> <a href="https://betking.com.ua/sports-book/?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship"><b>betking.com.ua</b></a> </p>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://ssmarket.net/buy-youtube-subscribers?utm_source=axios&utm_medium=sponsorlist&utm_campaign=sponsorship" style="padding: 10px; display: inline-block"> <img width="70px" height="70px" src="https://axios-http.com/assets/sponsors/opencollective/youtube-subscribers-ssmarket.png" alt="Buy Youtube Subscribers"/> </a> <p align="center" title="SS Market offers professional social media services that rapidly increase your YouTube subscriber count, elevating your channel to a powerful position.">SS Market offers professional social media services that rapidly increase your YouTube subscriber co...</p> <p align="center"> <a href="https://ssmarket.net/buy-youtube-subscribers?utm_source=axios&utm_medium=readme_sponsorlist&utm_campaign=sponsorship"><b>ssmarket.net</b></a> </p>
|
||||
</td></tr><tr width="33.333333333333336%"><td align="center" width="33.333333333333336%"> <a href="https://opencollective.com/axios/contribute">💜 Become a sponsor</a>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://opencollective.com/axios/contribute">💜 Become a sponsor</a>
|
||||
</td><td align="center" width="33.333333333333336%"> <a href="https://opencollective.com/axios/contribute">💜 Become a sponsor</a>
|
||||
</td></tr></table>
|
||||
|
||||
|
|
@ -548,9 +551,7 @@ These are the available config options for making requests. Only the `url` is re
|
|||
|
||||
// `httpAgent` and `httpsAgent` define a custom agent to be used when performing http
|
||||
// and https requests, respectively, in node.js. This allows options to be added like
|
||||
// `keepAlive` that are not enabled by default before Node.js v19.0.0. After Node.js
|
||||
// v19.0.0, you no longer need to customize the agent to enable `keepAlive` because
|
||||
// `http.globalAgent` has `keepAlive` enabled by default.
|
||||
// `keepAlive` that are not enabled by default.
|
||||
httpAgent: new http.Agent({ keepAlive: true }),
|
||||
httpsAgent: new https.Agent({ keepAlive: true }),
|
||||
|
||||
|
|
@ -837,21 +838,20 @@ The general structure of axios errors is as follows:
|
|||
| status | HTTP response status code. See [here](https://en.wikipedia.org/wiki/List_of_HTTP_status_codes) for common HTTP response status code meanings.
|
||||
|
||||
Below is a list of potential axios identified error:
|
||||
|
||||
| Code | Definition |
|
||||
| --- | --- |
|
||||
| ERR_BAD_OPTION_VALUE | Invalid value provided in axios configuration. |
|
||||
| ERR_BAD_OPTION | Invalid option provided in axios configuration. |
|
||||
| ERR_NOT_SUPPORT | Feature or method not supported in the current axios environment. |
|
||||
| ERR_DEPRECATED | Deprecated feature or method used in axios. |
|
||||
| ERR_INVALID_URL | Invalid URL provided for axios request. |
|
||||
| ECONNABORTED | Typically indicates that the request has been timed out (unless `transitional.clarifyTimeoutError` is set) or aborted by the browser or its plugin. |
|
||||
| ERR_CANCELED | Feature or method is canceled explicitly by the user using an AbortSignal (or a CancelToken). |
|
||||
| ETIMEDOUT | Request timed out due to exceeding default axios timelimit. `transitional.clarifyTimeoutError` must be set to `true`, otherwise a generic `ECONNABORTED` error will be thrown instead. |
|
||||
| ERR_NETWORK | Network-related issue. In the browser, this error can also be caused by a [CORS](https://developer.mozilla.org/ru/docs/Web/HTTP/Guides/CORS) or [Mixed Content](https://developer.mozilla.org/en-US/docs/Web/Security/Mixed_content) policy violation. The browser does not allow the JS code to clarify the real reason for the error caused by security issues, so please check the console. |
|
||||
| ERR_FR_TOO_MANY_REDIRECTS | Request is redirected too many times; exceeds max redirects specified in axios configuration. |
|
||||
| ERR_BAD_RESPONSE | Response cannot be parsed properly or is in an unexpected format. Usually related to a response with `5xx` status code. |
|
||||
| ERR_BAD_REQUEST | The request has an unexpected format or is missing required parameters. Usually related to a response with `4xx` status code. |
|
||||
| Code | Definition |
|
||||
| -------- | ---------- |
|
||||
| ERR_BAD_OPTION_VALUE | Invalid or unsupported value provided in axios configuration. |
|
||||
| ERR_BAD_OPTION | Invalid option provided in axios configuration. |
|
||||
| ECONNABORTED | Request timed out due to exceeding timeout specified in axios configuration. |
|
||||
| ETIMEDOUT | Request timed out due to exceeding default axios timelimit. |
|
||||
| ERR_NETWORK | Network-related issue.
|
||||
| ERR_FR_TOO_MANY_REDIRECTS | Request is redirected too many times; exceeds max redirects specified in axios configuration.
|
||||
| ERR_DEPRECATED | Deprecated feature or method used in axios.
|
||||
| ERR_BAD_RESPONSE | Response cannot be parsed properly or is in an unexpected format.
|
||||
| ERR_BAD_REQUEST | Requested has unexpected format or missing required parameters. |
|
||||
| ERR_CANCELED | Feature or method is canceled explicitly by the user.
|
||||
| ERR_NOT_SUPPORT | Feature or method not supported in the current axios environment.
|
||||
| ERR_INVALID_URL | Invalid URL provided for axios request.
|
||||
|
||||
## Handling Errors
|
||||
|
||||
|
|
|
|||
49
Backend/node_modules/axios/dist/axios.js
generated
vendored
49
Backend/node_modules/axios/dist/axios.js
generated
vendored
|
|
@ -1,4 +1,4 @@
|
|||
/*! Axios v1.11.0 Copyright (c) 2025 Matt Zabriskie and contributors */
|
||||
/*! Axios v1.9.0 Copyright (c) 2025 Matt Zabriskie and contributors */
|
||||
(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
|
||||
typeof define === 'function' && define.amd ? define(factory) :
|
||||
|
|
@ -818,26 +818,6 @@
|
|||
return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);
|
||||
};
|
||||
|
||||
/**
|
||||
* Determine if a value is an empty object (safely handles Buffers)
|
||||
*
|
||||
* @param {*} val The value to test
|
||||
*
|
||||
* @returns {boolean} True if value is an empty object, otherwise false
|
||||
*/
|
||||
var isEmptyObject = function isEmptyObject(val) {
|
||||
// Early return for non-objects or Buffers to prevent RangeError
|
||||
if (!isObject(val) || isBuffer(val)) {
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;
|
||||
} catch (e) {
|
||||
// Fallback for any other objects that might cause RangeError with Object.keys()
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Determine if a value is a Date
|
||||
*
|
||||
|
|
@ -962,11 +942,6 @@
|
|||
fn.call(null, obj[i], i, obj);
|
||||
}
|
||||
} else {
|
||||
// Buffer check
|
||||
if (isBuffer(obj)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Iterate over object keys
|
||||
var keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
|
||||
var len = keys.length;
|
||||
|
|
@ -978,9 +953,6 @@
|
|||
}
|
||||
}
|
||||
function findKey(obj, key) {
|
||||
if (isBuffer(obj)) {
|
||||
return null;
|
||||
}
|
||||
key = key.toLowerCase();
|
||||
var keys = Object.keys(obj);
|
||||
var i = keys.length;
|
||||
|
|
@ -1314,11 +1286,6 @@
|
|||
if (stack.indexOf(source) >= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
//Buffer check
|
||||
if (isBuffer(source)) {
|
||||
return source;
|
||||
}
|
||||
if (!('toJSON' in source)) {
|
||||
stack[i] = source;
|
||||
var target = isArray(source) ? [] : {};
|
||||
|
|
@ -1380,7 +1347,6 @@
|
|||
isBoolean: isBoolean,
|
||||
isObject: isObject,
|
||||
isPlainObject: isPlainObject,
|
||||
isEmptyObject: isEmptyObject,
|
||||
isReadableStream: isReadableStream,
|
||||
isRequest: isRequest,
|
||||
isResponse: isResponse,
|
||||
|
|
@ -1620,9 +1586,6 @@
|
|||
if (utils$1.isDate(value)) {
|
||||
return value.toISOString();
|
||||
}
|
||||
if (utils$1.isBoolean(value)) {
|
||||
return value.toString();
|
||||
}
|
||||
if (!useBlob && utils$1.isBlob(value)) {
|
||||
throw new AxiosError('Blob is not supported. Use a Buffer instead.');
|
||||
}
|
||||
|
|
@ -1941,7 +1904,7 @@
|
|||
var platform = _objectSpread2(_objectSpread2({}, utils), platform$1);
|
||||
|
||||
function toURLEncodedForm(data, options) {
|
||||
return toFormData(data, new platform.classes.URLSearchParams(), _objectSpread2({
|
||||
return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({
|
||||
visitor: function visitor(value, key, path, helpers) {
|
||||
if (platform.isNode && utils$1.isBuffer(value)) {
|
||||
this.append(key, value.toString('base64'));
|
||||
|
|
@ -2610,7 +2573,7 @@
|
|||
clearTimeout(timer);
|
||||
timer = null;
|
||||
}
|
||||
fn.apply(void 0, _toConsumableArray(args));
|
||||
fn.apply(null, args);
|
||||
};
|
||||
var throttled = function throttled() {
|
||||
var now = Date.now();
|
||||
|
|
@ -2858,7 +2821,7 @@
|
|||
return mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true);
|
||||
}
|
||||
};
|
||||
utils$1.forEach(Object.keys(_objectSpread2(_objectSpread2({}, config1), config2)), function computeConfigValue(prop) {
|
||||
utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
|
||||
var merge = mergeMap[prop] || mergeDeepProperties;
|
||||
var configValue = merge(config1[prop], config2[prop], prop);
|
||||
utils$1.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue);
|
||||
|
|
@ -3535,7 +3498,7 @@
|
|||
credentials: isCredentialsSupported ? withCredentials : undefined
|
||||
}));
|
||||
_context4.next = 20;
|
||||
return fetch(request, fetchOptions);
|
||||
return fetch(request);
|
||||
case 20:
|
||||
response = _context4.sent;
|
||||
isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
|
||||
|
|
@ -3711,7 +3674,7 @@
|
|||
});
|
||||
}
|
||||
|
||||
var VERSION = "1.11.0";
|
||||
var VERSION = "1.9.0";
|
||||
|
||||
var validators$1 = {};
|
||||
|
||||
|
|
|
|||
2
Backend/node_modules/axios/dist/axios.js.map
generated
vendored
2
Backend/node_modules/axios/dist/axios.js.map
generated
vendored
File diff suppressed because one or more lines are too long
4
Backend/node_modules/axios/dist/axios.min.js
generated
vendored
4
Backend/node_modules/axios/dist/axios.min.js
generated
vendored
File diff suppressed because one or more lines are too long
2
Backend/node_modules/axios/dist/axios.min.js.map
generated
vendored
2
Backend/node_modules/axios/dist/axios.min.js.map
generated
vendored
File diff suppressed because one or more lines are too long
61
Backend/node_modules/axios/dist/browser/axios.cjs
generated
vendored
61
Backend/node_modules/axios/dist/browser/axios.cjs
generated
vendored
|
|
@ -1,4 +1,4 @@
|
|||
/*! Axios v1.11.0 Copyright (c) 2025 Matt Zabriskie and contributors */
|
||||
/*! Axios v1.9.0 Copyright (c) 2025 Matt Zabriskie and contributors */
|
||||
'use strict';
|
||||
|
||||
function bind(fn, thisArg) {
|
||||
|
|
@ -141,27 +141,6 @@ const isPlainObject = (val) => {
|
|||
return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);
|
||||
};
|
||||
|
||||
/**
|
||||
* Determine if a value is an empty object (safely handles Buffers)
|
||||
*
|
||||
* @param {*} val The value to test
|
||||
*
|
||||
* @returns {boolean} True if value is an empty object, otherwise false
|
||||
*/
|
||||
const isEmptyObject = (val) => {
|
||||
// Early return for non-objects or Buffers to prevent RangeError
|
||||
if (!isObject(val) || isBuffer(val)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;
|
||||
} catch (e) {
|
||||
// Fallback for any other objects that might cause RangeError with Object.keys()
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Determine if a value is a Date
|
||||
*
|
||||
|
|
@ -284,11 +263,6 @@ function forEach(obj, fn, {allOwnKeys = false} = {}) {
|
|||
fn.call(null, obj[i], i, obj);
|
||||
}
|
||||
} else {
|
||||
// Buffer check
|
||||
if (isBuffer(obj)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Iterate over object keys
|
||||
const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
|
||||
const len = keys.length;
|
||||
|
|
@ -302,10 +276,6 @@ function forEach(obj, fn, {allOwnKeys = false} = {}) {
|
|||
}
|
||||
|
||||
function findKey(obj, key) {
|
||||
if (isBuffer(obj)){
|
||||
return null;
|
||||
}
|
||||
|
||||
key = key.toLowerCase();
|
||||
const keys = Object.keys(obj);
|
||||
let i = keys.length;
|
||||
|
|
@ -659,11 +629,6 @@ const toJSONObject = (obj) => {
|
|||
return;
|
||||
}
|
||||
|
||||
//Buffer check
|
||||
if (isBuffer(source)) {
|
||||
return source;
|
||||
}
|
||||
|
||||
if(!('toJSON' in source)) {
|
||||
stack[i] = source;
|
||||
const target = isArray(source) ? [] : {};
|
||||
|
|
@ -735,7 +700,6 @@ var utils$1 = {
|
|||
isBoolean,
|
||||
isObject,
|
||||
isPlainObject,
|
||||
isEmptyObject,
|
||||
isReadableStream,
|
||||
isRequest,
|
||||
isResponse,
|
||||
|
|
@ -1000,10 +964,6 @@ function toFormData(obj, formData, options) {
|
|||
return value.toISOString();
|
||||
}
|
||||
|
||||
if (utils$1.isBoolean(value)) {
|
||||
return value.toString();
|
||||
}
|
||||
|
||||
if (!useBlob && utils$1.isBlob(value)) {
|
||||
throw new AxiosError('Blob is not supported. Use a Buffer instead.');
|
||||
}
|
||||
|
|
@ -1367,7 +1327,7 @@ var platform = {
|
|||
};
|
||||
|
||||
function toURLEncodedForm(data, options) {
|
||||
return toFormData(data, new platform.classes.URLSearchParams(), {
|
||||
return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({
|
||||
visitor: function(value, key, path, helpers) {
|
||||
if (platform.isNode && utils$1.isBuffer(value)) {
|
||||
this.append(key, value.toString('base64'));
|
||||
|
|
@ -1375,9 +1335,8 @@ function toURLEncodedForm(data, options) {
|
|||
}
|
||||
|
||||
return helpers.defaultVisitor.apply(this, arguments);
|
||||
},
|
||||
...options
|
||||
});
|
||||
}
|
||||
}, options));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -2130,7 +2089,7 @@ function throttle(fn, freq) {
|
|||
clearTimeout(timer);
|
||||
timer = null;
|
||||
}
|
||||
fn(...args);
|
||||
fn.apply(null, args);
|
||||
};
|
||||
|
||||
const throttled = (...args) => {
|
||||
|
|
@ -2386,7 +2345,7 @@ function mergeConfig(config1, config2) {
|
|||
headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)
|
||||
};
|
||||
|
||||
utils$1.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {
|
||||
utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
|
||||
const merge = mergeMap[prop] || mergeDeepProperties;
|
||||
const configValue = merge(config1[prop], config2[prop], prop);
|
||||
(utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
|
||||
|
|
@ -2921,7 +2880,7 @@ var fetchAdapter = isFetchSupported && (async (config) => {
|
|||
credentials: isCredentialsSupported ? withCredentials : undefined
|
||||
});
|
||||
|
||||
let response = await fetch(request, fetchOptions);
|
||||
let response = await fetch(request);
|
||||
|
||||
const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
|
||||
|
||||
|
|
@ -3127,7 +3086,7 @@ function dispatchRequest(config) {
|
|||
});
|
||||
}
|
||||
|
||||
const VERSION = "1.11.0";
|
||||
const VERSION = "1.9.0";
|
||||
|
||||
const validators$1 = {};
|
||||
|
||||
|
|
@ -3366,8 +3325,8 @@ class Axios {
|
|||
|
||||
if (!synchronousRequestInterceptors) {
|
||||
const chain = [dispatchRequest.bind(this), undefined];
|
||||
chain.unshift(...requestInterceptorChain);
|
||||
chain.push(...responseInterceptorChain);
|
||||
chain.unshift.apply(chain, requestInterceptorChain);
|
||||
chain.push.apply(chain, responseInterceptorChain);
|
||||
len = chain.length;
|
||||
|
||||
promise = Promise.resolve(config);
|
||||
|
|
|
|||
2
Backend/node_modules/axios/dist/browser/axios.cjs.map
generated
vendored
2
Backend/node_modules/axios/dist/browser/axios.cjs.map
generated
vendored
File diff suppressed because one or more lines are too long
61
Backend/node_modules/axios/dist/esm/axios.js
generated
vendored
61
Backend/node_modules/axios/dist/esm/axios.js
generated
vendored
|
|
@ -1,4 +1,4 @@
|
|||
/*! Axios v1.11.0 Copyright (c) 2025 Matt Zabriskie and contributors */
|
||||
/*! Axios v1.9.0 Copyright (c) 2025 Matt Zabriskie and contributors */
|
||||
function bind(fn, thisArg) {
|
||||
return function wrap() {
|
||||
return fn.apply(thisArg, arguments);
|
||||
|
|
@ -139,27 +139,6 @@ const isPlainObject = (val) => {
|
|||
return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);
|
||||
};
|
||||
|
||||
/**
|
||||
* Determine if a value is an empty object (safely handles Buffers)
|
||||
*
|
||||
* @param {*} val The value to test
|
||||
*
|
||||
* @returns {boolean} True if value is an empty object, otherwise false
|
||||
*/
|
||||
const isEmptyObject = (val) => {
|
||||
// Early return for non-objects or Buffers to prevent RangeError
|
||||
if (!isObject(val) || isBuffer(val)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;
|
||||
} catch (e) {
|
||||
// Fallback for any other objects that might cause RangeError with Object.keys()
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Determine if a value is a Date
|
||||
*
|
||||
|
|
@ -282,11 +261,6 @@ function forEach(obj, fn, {allOwnKeys = false} = {}) {
|
|||
fn.call(null, obj[i], i, obj);
|
||||
}
|
||||
} else {
|
||||
// Buffer check
|
||||
if (isBuffer(obj)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Iterate over object keys
|
||||
const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
|
||||
const len = keys.length;
|
||||
|
|
@ -300,10 +274,6 @@ function forEach(obj, fn, {allOwnKeys = false} = {}) {
|
|||
}
|
||||
|
||||
function findKey(obj, key) {
|
||||
if (isBuffer(obj)){
|
||||
return null;
|
||||
}
|
||||
|
||||
key = key.toLowerCase();
|
||||
const keys = Object.keys(obj);
|
||||
let i = keys.length;
|
||||
|
|
@ -657,11 +627,6 @@ const toJSONObject = (obj) => {
|
|||
return;
|
||||
}
|
||||
|
||||
//Buffer check
|
||||
if (isBuffer(source)) {
|
||||
return source;
|
||||
}
|
||||
|
||||
if(!('toJSON' in source)) {
|
||||
stack[i] = source;
|
||||
const target = isArray(source) ? [] : {};
|
||||
|
|
@ -733,7 +698,6 @@ const utils$1 = {
|
|||
isBoolean,
|
||||
isObject,
|
||||
isPlainObject,
|
||||
isEmptyObject,
|
||||
isReadableStream,
|
||||
isRequest,
|
||||
isResponse,
|
||||
|
|
@ -998,10 +962,6 @@ function toFormData$1(obj, formData, options) {
|
|||
return value.toISOString();
|
||||
}
|
||||
|
||||
if (utils$1.isBoolean(value)) {
|
||||
return value.toString();
|
||||
}
|
||||
|
||||
if (!useBlob && utils$1.isBlob(value)) {
|
||||
throw new AxiosError$1('Blob is not supported. Use a Buffer instead.');
|
||||
}
|
||||
|
|
@ -1365,7 +1325,7 @@ const platform = {
|
|||
};
|
||||
|
||||
function toURLEncodedForm(data, options) {
|
||||
return toFormData$1(data, new platform.classes.URLSearchParams(), {
|
||||
return toFormData$1(data, new platform.classes.URLSearchParams(), Object.assign({
|
||||
visitor: function(value, key, path, helpers) {
|
||||
if (platform.isNode && utils$1.isBuffer(value)) {
|
||||
this.append(key, value.toString('base64'));
|
||||
|
|
@ -1373,9 +1333,8 @@ function toURLEncodedForm(data, options) {
|
|||
}
|
||||
|
||||
return helpers.defaultVisitor.apply(this, arguments);
|
||||
},
|
||||
...options
|
||||
});
|
||||
}
|
||||
}, options));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -2128,7 +2087,7 @@ function throttle(fn, freq) {
|
|||
clearTimeout(timer);
|
||||
timer = null;
|
||||
}
|
||||
fn(...args);
|
||||
fn.apply(null, args);
|
||||
};
|
||||
|
||||
const throttled = (...args) => {
|
||||
|
|
@ -2384,7 +2343,7 @@ function mergeConfig$1(config1, config2) {
|
|||
headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)
|
||||
};
|
||||
|
||||
utils$1.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {
|
||||
utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
|
||||
const merge = mergeMap[prop] || mergeDeepProperties;
|
||||
const configValue = merge(config1[prop], config2[prop], prop);
|
||||
(utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
|
||||
|
|
@ -2919,7 +2878,7 @@ const fetchAdapter = isFetchSupported && (async (config) => {
|
|||
credentials: isCredentialsSupported ? withCredentials : undefined
|
||||
});
|
||||
|
||||
let response = await fetch(request, fetchOptions);
|
||||
let response = await fetch(request);
|
||||
|
||||
const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
|
||||
|
||||
|
|
@ -3125,7 +3084,7 @@ function dispatchRequest(config) {
|
|||
});
|
||||
}
|
||||
|
||||
const VERSION$1 = "1.11.0";
|
||||
const VERSION$1 = "1.9.0";
|
||||
|
||||
const validators$1 = {};
|
||||
|
||||
|
|
@ -3364,8 +3323,8 @@ class Axios$1 {
|
|||
|
||||
if (!synchronousRequestInterceptors) {
|
||||
const chain = [dispatchRequest.bind(this), undefined];
|
||||
chain.unshift(...requestInterceptorChain);
|
||||
chain.push(...responseInterceptorChain);
|
||||
chain.unshift.apply(chain, requestInterceptorChain);
|
||||
chain.push.apply(chain, responseInterceptorChain);
|
||||
len = chain.length;
|
||||
|
||||
promise = Promise.resolve(config);
|
||||
|
|
|
|||
2
Backend/node_modules/axios/dist/esm/axios.js.map
generated
vendored
2
Backend/node_modules/axios/dist/esm/axios.js.map
generated
vendored
File diff suppressed because one or more lines are too long
4
Backend/node_modules/axios/dist/esm/axios.min.js
generated
vendored
4
Backend/node_modules/axios/dist/esm/axios.min.js
generated
vendored
File diff suppressed because one or more lines are too long
2
Backend/node_modules/axios/dist/esm/axios.min.js.map
generated
vendored
2
Backend/node_modules/axios/dist/esm/axios.min.js.map
generated
vendored
File diff suppressed because one or more lines are too long
61
Backend/node_modules/axios/dist/node/axios.cjs
generated
vendored
61
Backend/node_modules/axios/dist/node/axios.cjs
generated
vendored
|
|
@ -1,4 +1,4 @@
|
|||
/*! Axios v1.11.0 Copyright (c) 2025 Matt Zabriskie and contributors */
|
||||
/*! Axios v1.9.0 Copyright (c) 2025 Matt Zabriskie and contributors */
|
||||
'use strict';
|
||||
|
||||
const FormData$1 = require('form-data');
|
||||
|
|
@ -166,27 +166,6 @@ const isPlainObject = (val) => {
|
|||
return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);
|
||||
};
|
||||
|
||||
/**
|
||||
* Determine if a value is an empty object (safely handles Buffers)
|
||||
*
|
||||
* @param {*} val The value to test
|
||||
*
|
||||
* @returns {boolean} True if value is an empty object, otherwise false
|
||||
*/
|
||||
const isEmptyObject = (val) => {
|
||||
// Early return for non-objects or Buffers to prevent RangeError
|
||||
if (!isObject(val) || isBuffer(val)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;
|
||||
} catch (e) {
|
||||
// Fallback for any other objects that might cause RangeError with Object.keys()
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Determine if a value is a Date
|
||||
*
|
||||
|
|
@ -309,11 +288,6 @@ function forEach(obj, fn, {allOwnKeys = false} = {}) {
|
|||
fn.call(null, obj[i], i, obj);
|
||||
}
|
||||
} else {
|
||||
// Buffer check
|
||||
if (isBuffer(obj)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Iterate over object keys
|
||||
const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
|
||||
const len = keys.length;
|
||||
|
|
@ -327,10 +301,6 @@ function forEach(obj, fn, {allOwnKeys = false} = {}) {
|
|||
}
|
||||
|
||||
function findKey(obj, key) {
|
||||
if (isBuffer(obj)){
|
||||
return null;
|
||||
}
|
||||
|
||||
key = key.toLowerCase();
|
||||
const keys = Object.keys(obj);
|
||||
let i = keys.length;
|
||||
|
|
@ -684,11 +654,6 @@ const toJSONObject = (obj) => {
|
|||
return;
|
||||
}
|
||||
|
||||
//Buffer check
|
||||
if (isBuffer(source)) {
|
||||
return source;
|
||||
}
|
||||
|
||||
if(!('toJSON' in source)) {
|
||||
stack[i] = source;
|
||||
const target = isArray(source) ? [] : {};
|
||||
|
|
@ -760,7 +725,6 @@ const utils$1 = {
|
|||
isBoolean,
|
||||
isObject,
|
||||
isPlainObject,
|
||||
isEmptyObject,
|
||||
isReadableStream,
|
||||
isRequest,
|
||||
isResponse,
|
||||
|
|
@ -1022,10 +986,6 @@ function toFormData(obj, formData, options) {
|
|||
return value.toISOString();
|
||||
}
|
||||
|
||||
if (utils$1.isBoolean(value)) {
|
||||
return value.toString();
|
||||
}
|
||||
|
||||
if (!useBlob && utils$1.isBlob(value)) {
|
||||
throw new AxiosError('Blob is not supported. Use a Buffer instead.');
|
||||
}
|
||||
|
|
@ -1410,7 +1370,7 @@ const platform = {
|
|||
};
|
||||
|
||||
function toURLEncodedForm(data, options) {
|
||||
return toFormData(data, new platform.classes.URLSearchParams(), {
|
||||
return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({
|
||||
visitor: function(value, key, path, helpers) {
|
||||
if (platform.isNode && utils$1.isBuffer(value)) {
|
||||
this.append(key, value.toString('base64'));
|
||||
|
|
@ -1418,9 +1378,8 @@ function toURLEncodedForm(data, options) {
|
|||
}
|
||||
|
||||
return helpers.defaultVisitor.apply(this, arguments);
|
||||
},
|
||||
...options
|
||||
});
|
||||
}
|
||||
}, options));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -2143,7 +2102,7 @@ function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {
|
|||
return requestedURL;
|
||||
}
|
||||
|
||||
const VERSION = "1.11.0";
|
||||
const VERSION = "1.9.0";
|
||||
|
||||
function parseProtocol(url) {
|
||||
const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
|
||||
|
|
@ -2571,7 +2530,7 @@ function throttle(fn, freq) {
|
|||
clearTimeout(timer);
|
||||
timer = null;
|
||||
}
|
||||
fn(...args);
|
||||
fn.apply(null, args);
|
||||
};
|
||||
|
||||
const throttled = (...args) => {
|
||||
|
|
@ -3445,7 +3404,7 @@ function mergeConfig(config1, config2) {
|
|||
headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)
|
||||
};
|
||||
|
||||
utils$1.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {
|
||||
utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
|
||||
const merge = mergeMap[prop] || mergeDeepProperties;
|
||||
const configValue = merge(config1[prop], config2[prop], prop);
|
||||
(utils$1.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
|
||||
|
|
@ -3980,7 +3939,7 @@ const fetchAdapter = isFetchSupported && (async (config) => {
|
|||
credentials: isCredentialsSupported ? withCredentials : undefined
|
||||
});
|
||||
|
||||
let response = await fetch(request, fetchOptions);
|
||||
let response = await fetch(request);
|
||||
|
||||
const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
|
||||
|
||||
|
|
@ -4423,8 +4382,8 @@ class Axios {
|
|||
|
||||
if (!synchronousRequestInterceptors) {
|
||||
const chain = [dispatchRequest.bind(this), undefined];
|
||||
chain.unshift(...requestInterceptorChain);
|
||||
chain.push(...responseInterceptorChain);
|
||||
chain.unshift.apply(chain, requestInterceptorChain);
|
||||
chain.push.apply(chain, responseInterceptorChain);
|
||||
len = chain.length;
|
||||
|
||||
promise = Promise.resolve(config);
|
||||
|
|
|
|||
2
Backend/node_modules/axios/dist/node/axios.cjs.map
generated
vendored
2
Backend/node_modules/axios/dist/node/axios.cjs.map
generated
vendored
File diff suppressed because one or more lines are too long
17
Backend/node_modules/axios/index.d.cts
generated
vendored
17
Backend/node_modules/axios/index.d.cts
generated
vendored
|
|
@ -6,7 +6,7 @@ type MethodsHeaders = Partial<{
|
|||
[Key in axios.Method as Lowercase<Key>]: AxiosHeaders;
|
||||
} & {common: AxiosHeaders}>;
|
||||
|
||||
type AxiosHeaderMatcher = string | RegExp | ((this: AxiosHeaders, value: string, name: string) => boolean);
|
||||
type AxiosHeaderMatcher = (this: AxiosHeaders, value: string, name: string, headers: RawAxiosHeaders) => boolean;
|
||||
|
||||
type AxiosHeaderParser = (this: AxiosHeaders, value: axios.AxiosHeaderValue, header: string) => any;
|
||||
|
||||
|
|
@ -77,8 +77,6 @@ declare class AxiosHeaders {
|
|||
getAuthorization(matcher?: AxiosHeaderMatcher): axios.AxiosHeaderValue;
|
||||
hasAuthorization(matcher?: AxiosHeaderMatcher): boolean;
|
||||
|
||||
getSetCookie(): string[];
|
||||
|
||||
[Symbol.iterator](): IterableIterator<[string, axios.AxiosHeaderValue]>;
|
||||
}
|
||||
|
||||
|
|
@ -99,14 +97,6 @@ declare class AxiosError<T = unknown, D = any> extends Error {
|
|||
status?: number;
|
||||
toJSON: () => object;
|
||||
cause?: Error;
|
||||
static from<T = unknown, D = any>(
|
||||
error: Error | unknown,
|
||||
code?: string,
|
||||
config?: axios.InternalAxiosRequestConfig<D>,
|
||||
request?: any,
|
||||
response?: axios.AxiosResponse<T, D>,
|
||||
customProps?: object,
|
||||
): AxiosError<T, D>;
|
||||
static readonly ERR_FR_TOO_MANY_REDIRECTS = "ERR_FR_TOO_MANY_REDIRECTS";
|
||||
static readonly ERR_BAD_OPTION_VALUE = "ERR_BAD_OPTION_VALUE";
|
||||
static readonly ERR_BAD_OPTION = "ERR_BAD_OPTION";
|
||||
|
|
@ -428,13 +418,13 @@ declare namespace axios {
|
|||
lookup?: ((hostname: string, options: object, cb: (err: Error | null, address: LookupAddress | LookupAddress[], family?: AddressFamily) => void) => void) |
|
||||
((hostname: string, options: object) => Promise<[address: LookupAddressEntry | LookupAddressEntry[], family?: AddressFamily] | LookupAddress>);
|
||||
withXSRFToken?: boolean | ((config: InternalAxiosRequestConfig) => boolean | undefined);
|
||||
fetchOptions?: Omit<RequestInit, 'body' | 'headers' | 'method' | 'signal'> | Record<string, any>;
|
||||
fetchOptions?: Record<string, any>;
|
||||
}
|
||||
|
||||
// Alias
|
||||
type RawAxiosRequestConfig<D = any> = AxiosRequestConfig<D>;
|
||||
|
||||
interface InternalAxiosRequestConfig<D = any> extends AxiosRequestConfig<D> {
|
||||
interface InternalAxiosRequestConfig<D = any> extends AxiosRequestConfig {
|
||||
headers: AxiosRequestHeaders;
|
||||
}
|
||||
|
||||
|
|
@ -552,7 +542,6 @@ declare namespace axios {
|
|||
formToJSON(form: GenericFormData|GenericHTMLFormElement): object;
|
||||
getAdapter(adapters: AxiosAdapterConfig | AxiosAdapterConfig[] | undefined): AxiosAdapter;
|
||||
AxiosHeaders: typeof AxiosHeaders;
|
||||
mergeConfig<D = any>(config1: AxiosRequestConfig<D>, config2: AxiosRequestConfig<D>): AxiosRequestConfig<D>;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
2
Backend/node_modules/axios/index.d.ts
generated
vendored
2
Backend/node_modules/axios/index.d.ts
generated
vendored
|
|
@ -361,7 +361,7 @@ export interface AxiosRequestConfig<D = any> {
|
|||
lookup?: ((hostname: string, options: object, cb: (err: Error | null, address: LookupAddress | LookupAddress[], family?: AddressFamily) => void) => void) |
|
||||
((hostname: string, options: object) => Promise<[address: LookupAddressEntry | LookupAddressEntry[], family?: AddressFamily] | LookupAddress>);
|
||||
withXSRFToken?: boolean | ((config: InternalAxiosRequestConfig) => boolean | undefined);
|
||||
fetchOptions?: Omit<RequestInit, 'body' | 'headers' | 'method' | 'signal'> | Record<string, any>;
|
||||
fetchOptions?: Record<string, any>;
|
||||
}
|
||||
|
||||
// Alias
|
||||
|
|
|
|||
2
Backend/node_modules/axios/lib/adapters/fetch.js
generated
vendored
2
Backend/node_modules/axios/lib/adapters/fetch.js
generated
vendored
|
|
@ -167,7 +167,7 @@ export default isFetchSupported && (async (config) => {
|
|||
credentials: isCredentialsSupported ? withCredentials : undefined
|
||||
});
|
||||
|
||||
let response = await fetch(request, fetchOptions);
|
||||
let response = await fetch(request);
|
||||
|
||||
const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');
|
||||
|
||||
|
|
|
|||
4
Backend/node_modules/axios/lib/core/Axios.js
generated
vendored
4
Backend/node_modules/axios/lib/core/Axios.js
generated
vendored
|
|
@ -153,8 +153,8 @@ class Axios {
|
|||
|
||||
if (!synchronousRequestInterceptors) {
|
||||
const chain = [dispatchRequest.bind(this), undefined];
|
||||
chain.unshift(...requestInterceptorChain);
|
||||
chain.push(...responseInterceptorChain);
|
||||
chain.unshift.apply(chain, requestInterceptorChain);
|
||||
chain.push.apply(chain, responseInterceptorChain);
|
||||
len = chain.length;
|
||||
|
||||
promise = Promise.resolve(config);
|
||||
|
|
|
|||
2
Backend/node_modules/axios/lib/core/mergeConfig.js
generated
vendored
2
Backend/node_modules/axios/lib/core/mergeConfig.js
generated
vendored
|
|
@ -96,7 +96,7 @@ export default function mergeConfig(config1, config2) {
|
|||
headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)
|
||||
};
|
||||
|
||||
utils.forEach(Object.keys({...config1, ...config2}), function computeConfigValue(prop) {
|
||||
utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
|
||||
const merge = mergeMap[prop] || mergeDeepProperties;
|
||||
const configValue = merge(config1[prop], config2[prop], prop);
|
||||
(utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
|
||||
|
|
|
|||
2
Backend/node_modules/axios/lib/env/data.js
generated
vendored
2
Backend/node_modules/axios/lib/env/data.js
generated
vendored
|
|
@ -1 +1 @@
|
|||
export const VERSION = "1.11.0";
|
||||
export const VERSION = "1.9.0";
|
||||
2
Backend/node_modules/axios/lib/helpers/throttle.js
generated
vendored
2
Backend/node_modules/axios/lib/helpers/throttle.js
generated
vendored
|
|
@ -17,7 +17,7 @@ function throttle(fn, freq) {
|
|||
clearTimeout(timer);
|
||||
timer = null;
|
||||
}
|
||||
fn(...args);
|
||||
fn.apply(null, args);
|
||||
}
|
||||
|
||||
const throttled = (...args) => {
|
||||
|
|
|
|||
4
Backend/node_modules/axios/lib/helpers/toFormData.js
generated
vendored
4
Backend/node_modules/axios/lib/helpers/toFormData.js
generated
vendored
|
|
@ -120,10 +120,6 @@ function toFormData(obj, formData, options) {
|
|||
return value.toISOString();
|
||||
}
|
||||
|
||||
if (utils.isBoolean(value)) {
|
||||
return value.toString();
|
||||
}
|
||||
|
||||
if (!useBlob && utils.isBlob(value)) {
|
||||
throw new AxiosError('Blob is not supported. Use a Buffer instead.');
|
||||
}
|
||||
|
|
|
|||
7
Backend/node_modules/axios/lib/helpers/toURLEncodedForm.js
generated
vendored
7
Backend/node_modules/axios/lib/helpers/toURLEncodedForm.js
generated
vendored
|
|
@ -5,7 +5,7 @@ import toFormData from './toFormData.js';
|
|||
import platform from '../platform/index.js';
|
||||
|
||||
export default function toURLEncodedForm(data, options) {
|
||||
return toFormData(data, new platform.classes.URLSearchParams(), {
|
||||
return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({
|
||||
visitor: function(value, key, path, helpers) {
|
||||
if (platform.isNode && utils.isBuffer(value)) {
|
||||
this.append(key, value.toString('base64'));
|
||||
|
|
@ -13,7 +13,6 @@ export default function toURLEncodedForm(data, options) {
|
|||
}
|
||||
|
||||
return helpers.defaultVisitor.apply(this, arguments);
|
||||
},
|
||||
...options
|
||||
});
|
||||
}
|
||||
}, options));
|
||||
}
|
||||
|
|
|
|||
36
Backend/node_modules/axios/lib/utils.js
generated
vendored
36
Backend/node_modules/axios/lib/utils.js
generated
vendored
|
|
@ -136,27 +136,6 @@ const isPlainObject = (val) => {
|
|||
return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if a value is an empty object (safely handles Buffers)
|
||||
*
|
||||
* @param {*} val The value to test
|
||||
*
|
||||
* @returns {boolean} True if value is an empty object, otherwise false
|
||||
*/
|
||||
const isEmptyObject = (val) => {
|
||||
// Early return for non-objects or Buffers to prevent RangeError
|
||||
if (!isObject(val) || isBuffer(val)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
return Object.keys(val).length === 0 && Object.getPrototypeOf(val) === Object.prototype;
|
||||
} catch (e) {
|
||||
// Fallback for any other objects that might cause RangeError with Object.keys()
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if a value is a Date
|
||||
*
|
||||
|
|
@ -279,11 +258,6 @@ function forEach(obj, fn, {allOwnKeys = false} = {}) {
|
|||
fn.call(null, obj[i], i, obj);
|
||||
}
|
||||
} else {
|
||||
// Buffer check
|
||||
if (isBuffer(obj)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Iterate over object keys
|
||||
const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
|
||||
const len = keys.length;
|
||||
|
|
@ -297,10 +271,6 @@ function forEach(obj, fn, {allOwnKeys = false} = {}) {
|
|||
}
|
||||
|
||||
function findKey(obj, key) {
|
||||
if (isBuffer(obj)){
|
||||
return null;
|
||||
}
|
||||
|
||||
key = key.toLowerCase();
|
||||
const keys = Object.keys(obj);
|
||||
let i = keys.length;
|
||||
|
|
@ -654,11 +624,6 @@ const toJSONObject = (obj) => {
|
|||
return;
|
||||
}
|
||||
|
||||
//Buffer check
|
||||
if (isBuffer(source)) {
|
||||
return source;
|
||||
}
|
||||
|
||||
if(!('toJSON' in source)) {
|
||||
stack[i] = source;
|
||||
const target = isArray(source) ? [] : {};
|
||||
|
|
@ -730,7 +695,6 @@ export default {
|
|||
isBoolean,
|
||||
isObject,
|
||||
isPlainObject,
|
||||
isEmptyObject,
|
||||
isReadableStream,
|
||||
isRequest,
|
||||
isResponse,
|
||||
|
|
|
|||
19
Backend/node_modules/axios/package.json
generated
vendored
19
Backend/node_modules/axios/package.json
generated
vendored
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "axios",
|
||||
"version": "1.11.0",
|
||||
"version": "1.9.0",
|
||||
"description": "Promise based HTTP client for the browser and node.js",
|
||||
"main": "index.js",
|
||||
"exports": {
|
||||
|
|
@ -9,10 +9,6 @@
|
|||
"require": "./index.d.cts",
|
||||
"default": "./index.d.ts"
|
||||
},
|
||||
"react-native": {
|
||||
"require": "./dist/browser/axios.cjs",
|
||||
"default": "./dist/esm/axios.js"
|
||||
},
|
||||
"browser": {
|
||||
"require": "./dist/browser/axios.cjs",
|
||||
"default": "./index.js"
|
||||
|
|
@ -147,17 +143,12 @@
|
|||
"./lib/platform/node/index.js": "./lib/platform/browser/index.js",
|
||||
"./lib/platform/node/classes/FormData.js": "./lib/helpers/null.js"
|
||||
},
|
||||
"react-native": {
|
||||
"./lib/adapters/http.js": "./lib/helpers/null.js",
|
||||
"./lib/platform/node/index.js": "./lib/platform/browser/index.js",
|
||||
"./lib/platform/node/classes/FormData.js": "./lib/helpers/null.js"
|
||||
},
|
||||
"jsdelivr": "dist/axios.min.js",
|
||||
"unpkg": "dist/axios.min.js",
|
||||
"typings": "./index.d.ts",
|
||||
"dependencies": {
|
||||
"follow-redirects": "^1.15.6",
|
||||
"form-data": "^4.0.4",
|
||||
"form-data": "^4.0.0",
|
||||
"proxy-from-env": "^1.1.0"
|
||||
},
|
||||
"bundlesize": [
|
||||
|
|
@ -176,10 +167,10 @@
|
|||
"Justin Beckwith (https://github.com/JustinBeckwith)",
|
||||
"Martti Laine (https://github.com/codeclown)",
|
||||
"Xianming Zhong (https://github.com/chinesedfan)",
|
||||
"Remco Haszing (https://github.com/remcohaszing)",
|
||||
"Rikki Gibson (https://github.com/RikkiGibson)",
|
||||
"Ben Carp (https://github.com/carpben)",
|
||||
"Yasu Flores (https://github.com/yasuf)"
|
||||
"Remco Haszing (https://github.com/remcohaszing)",
|
||||
"Yasu Flores (https://github.com/yasuf)",
|
||||
"Ben Carp (https://github.com/carpben)"
|
||||
],
|
||||
"sideEffects": false,
|
||||
"release-it": {
|
||||
|
|
|
|||
21
Backend/node_modules/base64-js/LICENSE
generated
vendored
21
Backend/node_modules/base64-js/LICENSE
generated
vendored
|
|
@ -1,21 +0,0 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Jameson Little
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
1
Backend/node_modules/base64-js/base64js.min.js
generated
vendored
1
Backend/node_modules/base64-js/base64js.min.js
generated
vendored
|
|
@ -1 +0,0 @@
|
|||
(function(a){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=a();else if("function"==typeof define&&define.amd)define([],a);else{var b;b="undefined"==typeof window?"undefined"==typeof global?"undefined"==typeof self?this:self:global:window,b.base64js=a()}})(function(){return function(){function b(d,e,g){function a(j,i){if(!e[j]){if(!d[j]){var f="function"==typeof require&&require;if(!i&&f)return f(j,!0);if(h)return h(j,!0);var c=new Error("Cannot find module '"+j+"'");throw c.code="MODULE_NOT_FOUND",c}var k=e[j]={exports:{}};d[j][0].call(k.exports,function(b){var c=d[j][1][b];return a(c||b)},k,k.exports,b,d,e,g)}return e[j].exports}for(var h="function"==typeof require&&require,c=0;c<g.length;c++)a(g[c]);return a}return b}()({"/":[function(a,b,c){'use strict';function d(a){var b=a.length;if(0<b%4)throw new Error("Invalid string. Length must be a multiple of 4");var c=a.indexOf("=");-1===c&&(c=b);var d=c===b?0:4-c%4;return[c,d]}function e(a,b,c){return 3*(b+c)/4-c}function f(a){var b,c,f=d(a),g=f[0],h=f[1],j=new m(e(a,g,h)),k=0,n=0<h?g-4:g;for(c=0;c<n;c+=4)b=l[a.charCodeAt(c)]<<18|l[a.charCodeAt(c+1)]<<12|l[a.charCodeAt(c+2)]<<6|l[a.charCodeAt(c+3)],j[k++]=255&b>>16,j[k++]=255&b>>8,j[k++]=255&b;return 2===h&&(b=l[a.charCodeAt(c)]<<2|l[a.charCodeAt(c+1)]>>4,j[k++]=255&b),1===h&&(b=l[a.charCodeAt(c)]<<10|l[a.charCodeAt(c+1)]<<4|l[a.charCodeAt(c+2)]>>2,j[k++]=255&b>>8,j[k++]=255&b),j}function g(a){return k[63&a>>18]+k[63&a>>12]+k[63&a>>6]+k[63&a]}function h(a,b,c){for(var d,e=[],f=b;f<c;f+=3)d=(16711680&a[f]<<16)+(65280&a[f+1]<<8)+(255&a[f+2]),e.push(g(d));return e.join("")}function j(a){for(var b,c=a.length,d=c%3,e=[],f=16383,g=0,j=c-d;g<j;g+=f)e.push(h(a,g,g+f>j?j:g+f));return 1===d?(b=a[c-1],e.push(k[b>>2]+k[63&b<<4]+"==")):2===d&&(b=(a[c-2]<<8)+a[c-1],e.push(k[b>>10]+k[63&b>>4]+k[63&b<<2]+"=")),e.join("")}c.byteLength=function(a){var b=d(a),c=b[0],e=b[1];return 3*(c+e)/4-e},c.toByteArray=f,c.fromByteArray=j;for(var k=[],l=[],m="undefined"==typeof Uint8Array?Array:Uint8Array,n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",o=0,p=n.length;o<p;++o)k[o]=n[o],l[n.charCodeAt(o)]=o;l[45]=62,l[95]=63},{}]},{},[])("/")});
|
||||
3
Backend/node_modules/base64-js/index.d.ts
generated
vendored
3
Backend/node_modules/base64-js/index.d.ts
generated
vendored
|
|
@ -1,3 +0,0 @@
|
|||
export function byteLength(b64: string): number;
|
||||
export function toByteArray(b64: string): Uint8Array;
|
||||
export function fromByteArray(uint8: Uint8Array): string;
|
||||
150
Backend/node_modules/base64-js/index.js
generated
vendored
150
Backend/node_modules/base64-js/index.js
generated
vendored
|
|
@ -1,150 +0,0 @@
|
|||
'use strict'
|
||||
|
||||
exports.byteLength = byteLength
|
||||
exports.toByteArray = toByteArray
|
||||
exports.fromByteArray = fromByteArray
|
||||
|
||||
var lookup = []
|
||||
var revLookup = []
|
||||
var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array
|
||||
|
||||
var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
|
||||
for (var i = 0, len = code.length; i < len; ++i) {
|
||||
lookup[i] = code[i]
|
||||
revLookup[code.charCodeAt(i)] = i
|
||||
}
|
||||
|
||||
// Support decoding URL-safe base64 strings, as Node.js does.
|
||||
// See: https://en.wikipedia.org/wiki/Base64#URL_applications
|
||||
revLookup['-'.charCodeAt(0)] = 62
|
||||
revLookup['_'.charCodeAt(0)] = 63
|
||||
|
||||
function getLens (b64) {
|
||||
var len = b64.length
|
||||
|
||||
if (len % 4 > 0) {
|
||||
throw new Error('Invalid string. Length must be a multiple of 4')
|
||||
}
|
||||
|
||||
// Trim off extra bytes after placeholder bytes are found
|
||||
// See: https://github.com/beatgammit/base64-js/issues/42
|
||||
var validLen = b64.indexOf('=')
|
||||
if (validLen === -1) validLen = len
|
||||
|
||||
var placeHoldersLen = validLen === len
|
||||
? 0
|
||||
: 4 - (validLen % 4)
|
||||
|
||||
return [validLen, placeHoldersLen]
|
||||
}
|
||||
|
||||
// base64 is 4/3 + up to two characters of the original data
|
||||
function byteLength (b64) {
|
||||
var lens = getLens(b64)
|
||||
var validLen = lens[0]
|
||||
var placeHoldersLen = lens[1]
|
||||
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
|
||||
}
|
||||
|
||||
function _byteLength (b64, validLen, placeHoldersLen) {
|
||||
return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen
|
||||
}
|
||||
|
||||
function toByteArray (b64) {
|
||||
var tmp
|
||||
var lens = getLens(b64)
|
||||
var validLen = lens[0]
|
||||
var placeHoldersLen = lens[1]
|
||||
|
||||
var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))
|
||||
|
||||
var curByte = 0
|
||||
|
||||
// if there are placeholders, only get up to the last complete 4 chars
|
||||
var len = placeHoldersLen > 0
|
||||
? validLen - 4
|
||||
: validLen
|
||||
|
||||
var i
|
||||
for (i = 0; i < len; i += 4) {
|
||||
tmp =
|
||||
(revLookup[b64.charCodeAt(i)] << 18) |
|
||||
(revLookup[b64.charCodeAt(i + 1)] << 12) |
|
||||
(revLookup[b64.charCodeAt(i + 2)] << 6) |
|
||||
revLookup[b64.charCodeAt(i + 3)]
|
||||
arr[curByte++] = (tmp >> 16) & 0xFF
|
||||
arr[curByte++] = (tmp >> 8) & 0xFF
|
||||
arr[curByte++] = tmp & 0xFF
|
||||
}
|
||||
|
||||
if (placeHoldersLen === 2) {
|
||||
tmp =
|
||||
(revLookup[b64.charCodeAt(i)] << 2) |
|
||||
(revLookup[b64.charCodeAt(i + 1)] >> 4)
|
||||
arr[curByte++] = tmp & 0xFF
|
||||
}
|
||||
|
||||
if (placeHoldersLen === 1) {
|
||||
tmp =
|
||||
(revLookup[b64.charCodeAt(i)] << 10) |
|
||||
(revLookup[b64.charCodeAt(i + 1)] << 4) |
|
||||
(revLookup[b64.charCodeAt(i + 2)] >> 2)
|
||||
arr[curByte++] = (tmp >> 8) & 0xFF
|
||||
arr[curByte++] = tmp & 0xFF
|
||||
}
|
||||
|
||||
return arr
|
||||
}
|
||||
|
||||
function tripletToBase64 (num) {
|
||||
return lookup[num >> 18 & 0x3F] +
|
||||
lookup[num >> 12 & 0x3F] +
|
||||
lookup[num >> 6 & 0x3F] +
|
||||
lookup[num & 0x3F]
|
||||
}
|
||||
|
||||
function encodeChunk (uint8, start, end) {
|
||||
var tmp
|
||||
var output = []
|
||||
for (var i = start; i < end; i += 3) {
|
||||
tmp =
|
||||
((uint8[i] << 16) & 0xFF0000) +
|
||||
((uint8[i + 1] << 8) & 0xFF00) +
|
||||
(uint8[i + 2] & 0xFF)
|
||||
output.push(tripletToBase64(tmp))
|
||||
}
|
||||
return output.join('')
|
||||
}
|
||||
|
||||
function fromByteArray (uint8) {
|
||||
var tmp
|
||||
var len = uint8.length
|
||||
var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes
|
||||
var parts = []
|
||||
var maxChunkLength = 16383 // must be multiple of 3
|
||||
|
||||
// go through the array every three bytes, we'll deal with trailing stuff later
|
||||
for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
|
||||
parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))
|
||||
}
|
||||
|
||||
// pad the end with zeros, but make sure to not forget the extra bytes
|
||||
if (extraBytes === 1) {
|
||||
tmp = uint8[len - 1]
|
||||
parts.push(
|
||||
lookup[tmp >> 2] +
|
||||
lookup[(tmp << 4) & 0x3F] +
|
||||
'=='
|
||||
)
|
||||
} else if (extraBytes === 2) {
|
||||
tmp = (uint8[len - 2] << 8) + uint8[len - 1]
|
||||
parts.push(
|
||||
lookup[tmp >> 10] +
|
||||
lookup[(tmp >> 4) & 0x3F] +
|
||||
lookup[(tmp << 2) & 0x3F] +
|
||||
'='
|
||||
)
|
||||
}
|
||||
|
||||
return parts.join('')
|
||||
}
|
||||
47
Backend/node_modules/base64-js/package.json
generated
vendored
47
Backend/node_modules/base64-js/package.json
generated
vendored
|
|
@ -1,47 +0,0 @@
|
|||
{
|
||||
"name": "base64-js",
|
||||
"description": "Base64 encoding/decoding in pure JS",
|
||||
"version": "1.5.1",
|
||||
"author": "T. Jameson Little <t.jameson.little@gmail.com>",
|
||||
"typings": "index.d.ts",
|
||||
"bugs": {
|
||||
"url": "https://github.com/beatgammit/base64-js/issues"
|
||||
},
|
||||
"devDependencies": {
|
||||
"babel-minify": "^0.5.1",
|
||||
"benchmark": "^2.1.4",
|
||||
"browserify": "^16.3.0",
|
||||
"standard": "*",
|
||||
"tape": "4.x"
|
||||
},
|
||||
"homepage": "https://github.com/beatgammit/base64-js",
|
||||
"keywords": [
|
||||
"base64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "index.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/beatgammit/base64-js.git"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "browserify -s base64js -r ./ | minify > base64js.min.js",
|
||||
"lint": "standard",
|
||||
"test": "npm run lint && npm run unit",
|
||||
"unit": "tape test/*.js"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/feross"
|
||||
},
|
||||
{
|
||||
"type": "patreon",
|
||||
"url": "https://www.patreon.com/feross"
|
||||
},
|
||||
{
|
||||
"type": "consulting",
|
||||
"url": "https://feross.org/support"
|
||||
}
|
||||
]
|
||||
}
|
||||
6
Backend/node_modules/bignumber.js/bignumber.d.mts
generated
vendored
6
Backend/node_modules/bignumber.js/bignumber.d.mts
generated
vendored
|
|
@ -1,6 +0,0 @@
|
|||
/// <reference path="./types.d.ts" />
|
||||
|
||||
export default BigNumber;
|
||||
|
||||
declare const BigNumberType: typeof BigNumber;
|
||||
export { BigNumberType as BigNumber };
|
||||
5
Backend/node_modules/bignumber.js/bignumber.d.ts
generated
vendored
5
Backend/node_modules/bignumber.js/bignumber.d.ts
generated
vendored
|
|
@ -1,5 +0,0 @@
|
|||
/// <reference path="./types.d.ts" />
|
||||
|
||||
export = BigNumber;
|
||||
|
||||
export as namespace BigNumber;
|
||||
2922
Backend/node_modules/bignumber.js/bignumber.js
generated
vendored
2922
Backend/node_modules/bignumber.js/bignumber.js
generated
vendored
File diff suppressed because it is too large
Load diff
2907
Backend/node_modules/bignumber.js/bignumber.mjs
generated
vendored
2907
Backend/node_modules/bignumber.js/bignumber.mjs
generated
vendored
File diff suppressed because it is too large
Load diff
2249
Backend/node_modules/bignumber.js/doc/API.html
generated
vendored
2249
Backend/node_modules/bignumber.js/doc/API.html
generated
vendored
File diff suppressed because it is too large
Load diff
60
Backend/node_modules/bignumber.js/package.json
generated
vendored
60
Backend/node_modules/bignumber.js/package.json
generated
vendored
|
|
@ -1,60 +0,0 @@
|
|||
{
|
||||
"name": "bignumber.js",
|
||||
"description": "A library for arbitrary-precision decimal and non-decimal arithmetic",
|
||||
"version": "9.3.1",
|
||||
"keywords": [
|
||||
"arbitrary",
|
||||
"precision",
|
||||
"arithmetic",
|
||||
"big",
|
||||
"number",
|
||||
"decimal",
|
||||
"float",
|
||||
"biginteger",
|
||||
"bigdecimal",
|
||||
"bignumber",
|
||||
"bigint",
|
||||
"bignum"
|
||||
],
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/MikeMcl/bignumber.js.git"
|
||||
},
|
||||
"main": "bignumber",
|
||||
"module": "bignumber.mjs",
|
||||
"browser": "bignumber.js",
|
||||
"types": "bignumber.d.ts",
|
||||
"exports": {
|
||||
".": {
|
||||
"import": {
|
||||
"types": "./bignumber.d.mts",
|
||||
"default": "./bignumber.mjs"
|
||||
},
|
||||
"require": {
|
||||
"types": "./bignumber.d.ts",
|
||||
"default": "./bignumber.js"
|
||||
},
|
||||
"browser": {
|
||||
"types": "./bignumber.d.ts",
|
||||
"default": "./bignumber.js"
|
||||
},
|
||||
"default": {
|
||||
"types": "./bignumber.d.ts",
|
||||
"default": "./bignumber.js"
|
||||
}
|
||||
},
|
||||
"./package.json": "./package.json"
|
||||
},
|
||||
"author": {
|
||||
"name": "Michael Mclaughlin",
|
||||
"email": "M8ch88l@gmail.com"
|
||||
},
|
||||
"engines": {
|
||||
"node": "*"
|
||||
},
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
"test": "node test/test"
|
||||
},
|
||||
"dependencies": {}
|
||||
}
|
||||
1821
Backend/node_modules/bignumber.js/types.d.ts
generated
vendored
1821
Backend/node_modules/bignumber.js/types.d.ts
generated
vendored
File diff suppressed because it is too large
Load diff
2
Backend/node_modules/buffer-equal-constant-time/.npmignore
generated
vendored
2
Backend/node_modules/buffer-equal-constant-time/.npmignore
generated
vendored
|
|
@ -1,2 +0,0 @@
|
|||
.*.sw[mnop]
|
||||
node_modules/
|
||||
4
Backend/node_modules/buffer-equal-constant-time/.travis.yml
generated
vendored
4
Backend/node_modules/buffer-equal-constant-time/.travis.yml
generated
vendored
|
|
@ -1,4 +0,0 @@
|
|||
language: node_js
|
||||
node_js:
|
||||
- "0.11"
|
||||
- "0.10"
|
||||
12
Backend/node_modules/buffer-equal-constant-time/LICENSE.txt
generated
vendored
12
Backend/node_modules/buffer-equal-constant-time/LICENSE.txt
generated
vendored
|
|
@ -1,12 +0,0 @@
|
|||
Copyright (c) 2013, GoInstant Inc., a salesforce.com company
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of salesforce.com, nor GoInstant, nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
41
Backend/node_modules/buffer-equal-constant-time/index.js
generated
vendored
41
Backend/node_modules/buffer-equal-constant-time/index.js
generated
vendored
|
|
@ -1,41 +0,0 @@
|
|||
/*jshint node:true */
|
||||
'use strict';
|
||||
var Buffer = require('buffer').Buffer; // browserify
|
||||
var SlowBuffer = require('buffer').SlowBuffer;
|
||||
|
||||
module.exports = bufferEq;
|
||||
|
||||
function bufferEq(a, b) {
|
||||
|
||||
// shortcutting on type is necessary for correctness
|
||||
if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// buffer sizes should be well-known information, so despite this
|
||||
// shortcutting, it doesn't leak any information about the *contents* of the
|
||||
// buffers.
|
||||
if (a.length !== b.length) {
|
||||
return false;
|
||||
}
|
||||
|
||||
var c = 0;
|
||||
for (var i = 0; i < a.length; i++) {
|
||||
/*jshint bitwise:false */
|
||||
c |= a[i] ^ b[i]; // XOR
|
||||
}
|
||||
return c === 0;
|
||||
}
|
||||
|
||||
bufferEq.install = function() {
|
||||
Buffer.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {
|
||||
return bufferEq(this, that);
|
||||
};
|
||||
};
|
||||
|
||||
var origBufEqual = Buffer.prototype.equal;
|
||||
var origSlowBufEqual = SlowBuffer.prototype.equal;
|
||||
bufferEq.restore = function() {
|
||||
Buffer.prototype.equal = origBufEqual;
|
||||
SlowBuffer.prototype.equal = origSlowBufEqual;
|
||||
};
|
||||
21
Backend/node_modules/buffer-equal-constant-time/package.json
generated
vendored
21
Backend/node_modules/buffer-equal-constant-time/package.json
generated
vendored
|
|
@ -1,21 +0,0 @@
|
|||
{
|
||||
"name": "buffer-equal-constant-time",
|
||||
"version": "1.0.1",
|
||||
"description": "Constant-time comparison of Buffers",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "mocha test.js"
|
||||
},
|
||||
"repository": "git@github.com:goinstant/buffer-equal-constant-time.git",
|
||||
"keywords": [
|
||||
"buffer",
|
||||
"equal",
|
||||
"constant-time",
|
||||
"crypto"
|
||||
],
|
||||
"author": "GoInstant Inc., a salesforce.com company",
|
||||
"license": "BSD-3-Clause",
|
||||
"devDependencies": {
|
||||
"mocha": "~1.15.1"
|
||||
}
|
||||
}
|
||||
42
Backend/node_modules/buffer-equal-constant-time/test.js
generated
vendored
42
Backend/node_modules/buffer-equal-constant-time/test.js
generated
vendored
|
|
@ -1,42 +0,0 @@
|
|||
/*jshint node:true */
|
||||
'use strict';
|
||||
|
||||
var bufferEq = require('./index');
|
||||
var assert = require('assert');
|
||||
|
||||
describe('buffer-equal-constant-time', function() {
|
||||
var a = new Buffer('asdfasdf123456');
|
||||
var b = new Buffer('asdfasdf123456');
|
||||
var c = new Buffer('asdfasdf');
|
||||
|
||||
describe('bufferEq', function() {
|
||||
it('says a == b', function() {
|
||||
assert.strictEqual(bufferEq(a, b), true);
|
||||
});
|
||||
|
||||
it('says a != c', function() {
|
||||
assert.strictEqual(bufferEq(a, c), false);
|
||||
});
|
||||
});
|
||||
|
||||
describe('install/restore', function() {
|
||||
before(function() {
|
||||
bufferEq.install();
|
||||
});
|
||||
after(function() {
|
||||
bufferEq.restore();
|
||||
});
|
||||
|
||||
it('installed an .equal method', function() {
|
||||
var SlowBuffer = require('buffer').SlowBuffer;
|
||||
assert.ok(Buffer.prototype.equal);
|
||||
assert.ok(SlowBuffer.prototype.equal);
|
||||
});
|
||||
|
||||
it('infected existing Buffers', function() {
|
||||
assert.strictEqual(a.equal(b), true);
|
||||
assert.strictEqual(a.equal(c), false);
|
||||
});
|
||||
});
|
||||
|
||||
});
|
||||
15
Backend/node_modules/data-uri-to-buffer/dist/index.d.ts
generated
vendored
15
Backend/node_modules/data-uri-to-buffer/dist/index.d.ts
generated
vendored
|
|
@ -1,15 +0,0 @@
|
|||
/// <reference types="node" />
|
||||
export interface MimeBuffer extends Buffer {
|
||||
type: string;
|
||||
typeFull: string;
|
||||
charset: string;
|
||||
}
|
||||
/**
|
||||
* Returns a `Buffer` instance from the given data URI `uri`.
|
||||
*
|
||||
* @param {String} uri Data URI to turn into a Buffer instance
|
||||
* @returns {Buffer} Buffer instance from Data URI
|
||||
* @api public
|
||||
*/
|
||||
export declare function dataUriToBuffer(uri: string): MimeBuffer;
|
||||
export default dataUriToBuffer;
|
||||
53
Backend/node_modules/data-uri-to-buffer/dist/index.js
generated
vendored
53
Backend/node_modules/data-uri-to-buffer/dist/index.js
generated
vendored
|
|
@ -1,53 +0,0 @@
|
|||
/**
|
||||
* Returns a `Buffer` instance from the given data URI `uri`.
|
||||
*
|
||||
* @param {String} uri Data URI to turn into a Buffer instance
|
||||
* @returns {Buffer} Buffer instance from Data URI
|
||||
* @api public
|
||||
*/
|
||||
export function dataUriToBuffer(uri) {
|
||||
if (!/^data:/i.test(uri)) {
|
||||
throw new TypeError('`uri` does not appear to be a Data URI (must begin with "data:")');
|
||||
}
|
||||
// strip newlines
|
||||
uri = uri.replace(/\r?\n/g, '');
|
||||
// split the URI up into the "metadata" and the "data" portions
|
||||
const firstComma = uri.indexOf(',');
|
||||
if (firstComma === -1 || firstComma <= 4) {
|
||||
throw new TypeError('malformed data: URI');
|
||||
}
|
||||
// remove the "data:" scheme and parse the metadata
|
||||
const meta = uri.substring(5, firstComma).split(';');
|
||||
let charset = '';
|
||||
let base64 = false;
|
||||
const type = meta[0] || 'text/plain';
|
||||
let typeFull = type;
|
||||
for (let i = 1; i < meta.length; i++) {
|
||||
if (meta[i] === 'base64') {
|
||||
base64 = true;
|
||||
}
|
||||
else if (meta[i]) {
|
||||
typeFull += `;${meta[i]}`;
|
||||
if (meta[i].indexOf('charset=') === 0) {
|
||||
charset = meta[i].substring(8);
|
||||
}
|
||||
}
|
||||
}
|
||||
// defaults to US-ASCII only if type is not provided
|
||||
if (!meta[0] && !charset.length) {
|
||||
typeFull += ';charset=US-ASCII';
|
||||
charset = 'US-ASCII';
|
||||
}
|
||||
// get the encoded data portion and decode URI-encoded chars
|
||||
const encoding = base64 ? 'base64' : 'ascii';
|
||||
const data = unescape(uri.substring(firstComma + 1));
|
||||
const buffer = Buffer.from(data, encoding);
|
||||
// set `.type` and `.typeFull` properties to MIME type
|
||||
buffer.type = type;
|
||||
buffer.typeFull = typeFull;
|
||||
// set the `.charset` property
|
||||
buffer.charset = charset;
|
||||
return buffer;
|
||||
}
|
||||
export default dataUriToBuffer;
|
||||
//# sourceMappingURL=index.js.map
|
||||
1
Backend/node_modules/data-uri-to-buffer/dist/index.js.map
generated
vendored
1
Backend/node_modules/data-uri-to-buffer/dist/index.js.map
generated
vendored
|
|
@ -1 +0,0 @@
|
|||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACzB,MAAM,IAAI,SAAS,CAClB,kEAAkE,CAClE,CAAC;KACF;IAED,iBAAiB;IACjB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEhC,+DAA+D;IAC/D,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,UAAU,KAAK,CAAC,CAAC,IAAI,UAAU,IAAI,CAAC,EAAE;QACzC,MAAM,IAAI,SAAS,CAAC,qBAAqB,CAAC,CAAC;KAC3C;IAED,mDAAmD;IACnD,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAErD,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC;IACrC,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;YACzB,MAAM,GAAG,IAAI,CAAC;SACd;aAAM,IAAG,IAAI,CAAC,CAAC,CAAC,EAAE;YAClB,QAAQ,IAAI,IAAM,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5B,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBACtC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAC/B;SACD;KACD;IACD,oDAAoD;IACpD,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QAChC,QAAQ,IAAI,mBAAmB,CAAC;QAChC,OAAO,GAAG,UAAU,CAAC;KACrB;IAED,4DAA4D;IAC5D,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7C,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAe,CAAC;IAEzD,sDAAsD;IACtD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAE3B,8BAA8B;IAC9B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAEzB,OAAO,MAAM,CAAC;AACf,CAAC;AAED,eAAe,eAAe,CAAC"}
|
||||
62
Backend/node_modules/data-uri-to-buffer/package.json
generated
vendored
62
Backend/node_modules/data-uri-to-buffer/package.json
generated
vendored
|
|
@ -1,62 +0,0 @@
|
|||
{
|
||||
"name": "data-uri-to-buffer",
|
||||
"version": "4.0.1",
|
||||
"description": "Generate a Buffer instance from a Data URI string",
|
||||
"type": "module",
|
||||
"exports": "./dist/index.js",
|
||||
"main": "./dist/index.js",
|
||||
"types": "./dist/index.d.ts",
|
||||
"files": [
|
||||
"dist",
|
||||
"src"
|
||||
],
|
||||
"scripts": {
|
||||
"build": "tsc",
|
||||
"test": "jest",
|
||||
"prepublishOnly": "npm run build"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git://github.com/TooTallNate/node-data-uri-to-buffer.git"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 12"
|
||||
},
|
||||
"keywords": [
|
||||
"data",
|
||||
"uri",
|
||||
"datauri",
|
||||
"data-uri",
|
||||
"buffer",
|
||||
"convert",
|
||||
"rfc2397",
|
||||
"2397"
|
||||
],
|
||||
"author": "Nathan Rajlich <nathan@tootallnate.net> (http://n8.io/)",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/TooTallNate/node-data-uri-to-buffer/issues"
|
||||
},
|
||||
"homepage": "https://github.com/TooTallNate/node-data-uri-to-buffer",
|
||||
"devDependencies": {
|
||||
"@types/jest": "^27.0.2",
|
||||
"@types/node": "^12.20.36",
|
||||
"jest": "^27.3.1",
|
||||
"ts-jest": "^27.0.7",
|
||||
"typescript": "^4.4.4"
|
||||
},
|
||||
"jest": {
|
||||
"preset": "ts-jest",
|
||||
"globals": {
|
||||
"ts-jest": {
|
||||
"diagnostics": false,
|
||||
"isolatedModules": true
|
||||
}
|
||||
},
|
||||
"verbose": false,
|
||||
"testEnvironment": "node",
|
||||
"testMatch": [
|
||||
"<rootDir>/test/**/*.test.ts"
|
||||
]
|
||||
}
|
||||
}
|
||||
68
Backend/node_modules/data-uri-to-buffer/src/index.ts
generated
vendored
68
Backend/node_modules/data-uri-to-buffer/src/index.ts
generated
vendored
|
|
@ -1,68 +0,0 @@
|
|||
export interface MimeBuffer extends Buffer {
|
||||
type: string;
|
||||
typeFull: string;
|
||||
charset: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a `Buffer` instance from the given data URI `uri`.
|
||||
*
|
||||
* @param {String} uri Data URI to turn into a Buffer instance
|
||||
* @returns {Buffer} Buffer instance from Data URI
|
||||
* @api public
|
||||
*/
|
||||
export function dataUriToBuffer(uri: string): MimeBuffer {
|
||||
if (!/^data:/i.test(uri)) {
|
||||
throw new TypeError(
|
||||
'`uri` does not appear to be a Data URI (must begin with "data:")'
|
||||
);
|
||||
}
|
||||
|
||||
// strip newlines
|
||||
uri = uri.replace(/\r?\n/g, '');
|
||||
|
||||
// split the URI up into the "metadata" and the "data" portions
|
||||
const firstComma = uri.indexOf(',');
|
||||
if (firstComma === -1 || firstComma <= 4) {
|
||||
throw new TypeError('malformed data: URI');
|
||||
}
|
||||
|
||||
// remove the "data:" scheme and parse the metadata
|
||||
const meta = uri.substring(5, firstComma).split(';');
|
||||
|
||||
let charset = '';
|
||||
let base64 = false;
|
||||
const type = meta[0] || 'text/plain';
|
||||
let typeFull = type;
|
||||
for (let i = 1; i < meta.length; i++) {
|
||||
if (meta[i] === 'base64') {
|
||||
base64 = true;
|
||||
} else if(meta[i]) {
|
||||
typeFull += `;${ meta[i]}`;
|
||||
if (meta[i].indexOf('charset=') === 0) {
|
||||
charset = meta[i].substring(8);
|
||||
}
|
||||
}
|
||||
}
|
||||
// defaults to US-ASCII only if type is not provided
|
||||
if (!meta[0] && !charset.length) {
|
||||
typeFull += ';charset=US-ASCII';
|
||||
charset = 'US-ASCII';
|
||||
}
|
||||
|
||||
// get the encoded data portion and decode URI-encoded chars
|
||||
const encoding = base64 ? 'base64' : 'ascii';
|
||||
const data = unescape(uri.substring(firstComma + 1));
|
||||
const buffer = Buffer.from(data, encoding) as MimeBuffer;
|
||||
|
||||
// set `.type` and `.typeFull` properties to MIME type
|
||||
buffer.type = type;
|
||||
buffer.typeFull = typeFull;
|
||||
|
||||
// set the `.charset` property
|
||||
buffer.charset = charset;
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
export default dataUriToBuffer;
|
||||
7
Backend/node_modules/dayjs/.editorconfig
generated
vendored
7
Backend/node_modules/dayjs/.editorconfig
generated
vendored
|
|
@ -1,7 +0,0 @@
|
|||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
indent_size = 2
|
||||
21
Backend/node_modules/dayjs/LICENSE
generated
vendored
21
Backend/node_modules/dayjs/LICENSE
generated
vendored
|
|
@ -1,21 +0,0 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2018-present, iamkun
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
1
Backend/node_modules/dayjs/dayjs.min.js
generated
vendored
1
Backend/node_modules/dayjs/dayjs.min.js
generated
vendored
File diff suppressed because one or more lines are too long
25
Backend/node_modules/dayjs/esm/constant.js
generated
vendored
25
Backend/node_modules/dayjs/esm/constant.js
generated
vendored
|
|
@ -1,25 +0,0 @@
|
|||
export var SECONDS_A_MINUTE = 60;
|
||||
export var SECONDS_A_HOUR = SECONDS_A_MINUTE * 60;
|
||||
export var SECONDS_A_DAY = SECONDS_A_HOUR * 24;
|
||||
export var SECONDS_A_WEEK = SECONDS_A_DAY * 7;
|
||||
export var MILLISECONDS_A_SECOND = 1e3;
|
||||
export var MILLISECONDS_A_MINUTE = SECONDS_A_MINUTE * MILLISECONDS_A_SECOND;
|
||||
export var MILLISECONDS_A_HOUR = SECONDS_A_HOUR * MILLISECONDS_A_SECOND;
|
||||
export var MILLISECONDS_A_DAY = SECONDS_A_DAY * MILLISECONDS_A_SECOND;
|
||||
export var MILLISECONDS_A_WEEK = SECONDS_A_WEEK * MILLISECONDS_A_SECOND; // English locales
|
||||
|
||||
export var MS = 'millisecond';
|
||||
export var S = 'second';
|
||||
export var MIN = 'minute';
|
||||
export var H = 'hour';
|
||||
export var D = 'day';
|
||||
export var W = 'week';
|
||||
export var M = 'month';
|
||||
export var Q = 'quarter';
|
||||
export var Y = 'year';
|
||||
export var DATE = 'date';
|
||||
export var FORMAT_DEFAULT = 'YYYY-MM-DDTHH:mm:ssZ';
|
||||
export var INVALID_DATE_STRING = 'Invalid Date'; // regex
|
||||
|
||||
export var REGEX_PARSE = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/;
|
||||
export var REGEX_FORMAT = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g;
|
||||
429
Backend/node_modules/dayjs/esm/index.d.ts
generated
vendored
429
Backend/node_modules/dayjs/esm/index.d.ts
generated
vendored
|
|
@ -1,429 +0,0 @@
|
|||
/// <reference path="./locale/index.d.ts" />
|
||||
|
||||
export = dayjs;
|
||||
|
||||
declare function dayjs (date?: dayjs.ConfigType): dayjs.Dayjs
|
||||
|
||||
declare function dayjs (date?: dayjs.ConfigType, format?: dayjs.OptionType, strict?: boolean): dayjs.Dayjs
|
||||
|
||||
declare function dayjs (date?: dayjs.ConfigType, format?: dayjs.OptionType, locale?: string, strict?: boolean): dayjs.Dayjs
|
||||
|
||||
declare namespace dayjs {
|
||||
interface ConfigTypeMap {
|
||||
default: string | number | Date | Dayjs | null | undefined
|
||||
}
|
||||
|
||||
export type ConfigType = ConfigTypeMap[keyof ConfigTypeMap]
|
||||
|
||||
export interface FormatObject { locale?: string, format?: string, utc?: boolean }
|
||||
|
||||
export type OptionType = FormatObject | string | string[]
|
||||
|
||||
export type UnitTypeShort = 'd' | 'D' | 'M' | 'y' | 'h' | 'm' | 's' | 'ms'
|
||||
|
||||
export type UnitTypeLong = 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year' | 'date'
|
||||
|
||||
export type UnitTypeLongPlural = 'milliseconds' | 'seconds' | 'minutes' | 'hours' | 'days' | 'months' | 'years' | 'dates'
|
||||
|
||||
export type UnitType = UnitTypeLong | UnitTypeLongPlural | UnitTypeShort;
|
||||
|
||||
export type OpUnitType = UnitType | "week" | "weeks" | 'w';
|
||||
export type QUnitType = UnitType | "quarter" | "quarters" | 'Q';
|
||||
export type ManipulateType = Exclude<OpUnitType, 'date' | 'dates'>;
|
||||
class Dayjs {
|
||||
constructor (config?: ConfigType)
|
||||
/**
|
||||
* All Day.js objects are immutable. Still, `dayjs#clone` can create a clone of the current object if you need one.
|
||||
* ```
|
||||
* dayjs().clone()// => Dayjs
|
||||
* dayjs(dayjs('2019-01-25')) // passing a Dayjs object to a constructor will also clone it
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/parse/dayjs-clone
|
||||
*/
|
||||
clone(): Dayjs
|
||||
/**
|
||||
* This returns a `boolean` indicating whether the Day.js object contains a valid date or not.
|
||||
* ```
|
||||
* dayjs().isValid()// => boolean
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/parse/is-valid
|
||||
*/
|
||||
isValid(): boolean
|
||||
/**
|
||||
* Get the year.
|
||||
* ```
|
||||
* dayjs().year()// => 2020
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/year
|
||||
*/
|
||||
year(): number
|
||||
/**
|
||||
* Set the year.
|
||||
* ```
|
||||
* dayjs().year(2000)// => Dayjs
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/year
|
||||
*/
|
||||
year(value: number): Dayjs
|
||||
/**
|
||||
* Get the month.
|
||||
*
|
||||
* Months are zero indexed, so January is month 0.
|
||||
* ```
|
||||
* dayjs().month()// => 0-11
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/month
|
||||
*/
|
||||
month(): number
|
||||
/**
|
||||
* Set the month.
|
||||
*
|
||||
* Months are zero indexed, so January is month 0.
|
||||
*
|
||||
* Accepts numbers from 0 to 11. If the range is exceeded, it will bubble up to the next year.
|
||||
* ```
|
||||
* dayjs().month(0)// => Dayjs
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/month
|
||||
*/
|
||||
month(value: number): Dayjs
|
||||
/**
|
||||
* Get the date of the month.
|
||||
* ```
|
||||
* dayjs().date()// => 1-31
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/date
|
||||
*/
|
||||
date(): number
|
||||
/**
|
||||
* Set the date of the month.
|
||||
*
|
||||
* Accepts numbers from 1 to 31. If the range is exceeded, it will bubble up to the next months.
|
||||
* ```
|
||||
* dayjs().date(1)// => Dayjs
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/date
|
||||
*/
|
||||
date(value: number): Dayjs
|
||||
/**
|
||||
* Get the day of the week.
|
||||
*
|
||||
* Returns numbers from 0 (Sunday) to 6 (Saturday).
|
||||
* ```
|
||||
* dayjs().day()// 0-6
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/day
|
||||
*/
|
||||
day(): 0 | 1 | 2 | 3 | 4 | 5 | 6
|
||||
/**
|
||||
* Set the day of the week.
|
||||
*
|
||||
* Accepts numbers from 0 (Sunday) to 6 (Saturday). If the range is exceeded, it will bubble up to next weeks.
|
||||
* ```
|
||||
* dayjs().day(0)// => Dayjs
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/day
|
||||
*/
|
||||
day(value: number): Dayjs
|
||||
/**
|
||||
* Get the hour.
|
||||
* ```
|
||||
* dayjs().hour()// => 0-23
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/hour
|
||||
*/
|
||||
hour(): number
|
||||
/**
|
||||
* Set the hour.
|
||||
*
|
||||
* Accepts numbers from 0 to 23. If the range is exceeded, it will bubble up to the next day.
|
||||
* ```
|
||||
* dayjs().hour(12)// => Dayjs
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/hour
|
||||
*/
|
||||
hour(value: number): Dayjs
|
||||
/**
|
||||
* Get the minutes.
|
||||
* ```
|
||||
* dayjs().minute()// => 0-59
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/minute
|
||||
*/
|
||||
minute(): number
|
||||
/**
|
||||
* Set the minutes.
|
||||
*
|
||||
* Accepts numbers from 0 to 59. If the range is exceeded, it will bubble up to the next hour.
|
||||
* ```
|
||||
* dayjs().minute(59)// => Dayjs
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/minute
|
||||
*/
|
||||
minute(value: number): Dayjs
|
||||
/**
|
||||
* Get the seconds.
|
||||
* ```
|
||||
* dayjs().second()// => 0-59
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/second
|
||||
*/
|
||||
second(): number
|
||||
/**
|
||||
* Set the seconds.
|
||||
*
|
||||
* Accepts numbers from 0 to 59. If the range is exceeded, it will bubble up to the next minutes.
|
||||
* ```
|
||||
* dayjs().second(1)// Dayjs
|
||||
* ```
|
||||
*/
|
||||
second(value: number): Dayjs
|
||||
/**
|
||||
* Get the milliseconds.
|
||||
* ```
|
||||
* dayjs().millisecond()// => 0-999
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/millisecond
|
||||
*/
|
||||
millisecond(): number
|
||||
/**
|
||||
* Set the milliseconds.
|
||||
*
|
||||
* Accepts numbers from 0 to 999. If the range is exceeded, it will bubble up to the next seconds.
|
||||
* ```
|
||||
* dayjs().millisecond(1)// => Dayjs
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/millisecond
|
||||
*/
|
||||
millisecond(value: number): Dayjs
|
||||
/**
|
||||
* Generic setter, accepting unit as first argument, and value as second, returns a new instance with the applied changes.
|
||||
*
|
||||
* In general:
|
||||
* ```
|
||||
* dayjs().set(unit, value) === dayjs()[unit](value)
|
||||
* ```
|
||||
* Units are case insensitive, and support plural and short forms.
|
||||
* ```
|
||||
* dayjs().set('date', 1)
|
||||
* dayjs().set('month', 3) // April
|
||||
* dayjs().set('second', 30)
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/set
|
||||
*/
|
||||
set(unit: UnitType, value: number): Dayjs
|
||||
/**
|
||||
* String getter, returns the corresponding information getting from Day.js object.
|
||||
*
|
||||
* In general:
|
||||
* ```
|
||||
* dayjs().get(unit) === dayjs()[unit]()
|
||||
* ```
|
||||
* Units are case insensitive, and support plural and short forms.
|
||||
* ```
|
||||
* dayjs().get('year')
|
||||
* dayjs().get('month') // start 0
|
||||
* dayjs().get('date')
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/get-set/get
|
||||
*/
|
||||
get(unit: UnitType): number
|
||||
/**
|
||||
* Returns a cloned Day.js object with a specified amount of time added.
|
||||
* ```
|
||||
* dayjs().add(7, 'day')// => Dayjs
|
||||
* ```
|
||||
* Units are case insensitive, and support plural and short forms.
|
||||
*
|
||||
* Docs: https://day.js.org/docs/en/manipulate/add
|
||||
*/
|
||||
add(value: number, unit?: ManipulateType): Dayjs
|
||||
/**
|
||||
* Returns a cloned Day.js object with a specified amount of time subtracted.
|
||||
* ```
|
||||
* dayjs().subtract(7, 'year')// => Dayjs
|
||||
* ```
|
||||
* Units are case insensitive, and support plural and short forms.
|
||||
*
|
||||
* Docs: https://day.js.org/docs/en/manipulate/subtract
|
||||
*/
|
||||
subtract(value: number, unit?: ManipulateType): Dayjs
|
||||
/**
|
||||
* Returns a cloned Day.js object and set it to the start of a unit of time.
|
||||
* ```
|
||||
* dayjs().startOf('year')// => Dayjs
|
||||
* ```
|
||||
* Units are case insensitive, and support plural and short forms.
|
||||
*
|
||||
* Docs: https://day.js.org/docs/en/manipulate/start-of
|
||||
*/
|
||||
startOf(unit: OpUnitType): Dayjs
|
||||
/**
|
||||
* Returns a cloned Day.js object and set it to the end of a unit of time.
|
||||
* ```
|
||||
* dayjs().endOf('month')// => Dayjs
|
||||
* ```
|
||||
* Units are case insensitive, and support plural and short forms.
|
||||
*
|
||||
* Docs: https://day.js.org/docs/en/manipulate/end-of
|
||||
*/
|
||||
endOf(unit: OpUnitType): Dayjs
|
||||
/**
|
||||
* Get the formatted date according to the string of tokens passed in.
|
||||
*
|
||||
* To escape characters, wrap them in square brackets (e.g. [MM]).
|
||||
* ```
|
||||
* dayjs().format()// => current date in ISO8601, without fraction seconds e.g. '2020-04-02T08:02:17-05:00'
|
||||
* dayjs('2019-01-25').format('[YYYYescape] YYYY-MM-DDTHH:mm:ssZ[Z]')// 'YYYYescape 2019-01-25T00:00:00-02:00Z'
|
||||
* dayjs('2019-01-25').format('DD/MM/YYYY') // '25/01/2019'
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/display/format
|
||||
*/
|
||||
format(template?: string): string
|
||||
/**
|
||||
* This indicates the difference between two date-time in the specified unit.
|
||||
*
|
||||
* To get the difference in milliseconds, use `dayjs#diff`
|
||||
* ```
|
||||
* const date1 = dayjs('2019-01-25')
|
||||
* const date2 = dayjs('2018-06-05')
|
||||
* date1.diff(date2) // 20214000000 default milliseconds
|
||||
* date1.diff() // milliseconds to current time
|
||||
* ```
|
||||
*
|
||||
* To get the difference in another unit of measurement, pass that measurement as the second argument.
|
||||
* ```
|
||||
* const date1 = dayjs('2019-01-25')
|
||||
* date1.diff('2018-06-05', 'month') // 7
|
||||
* ```
|
||||
* Units are case insensitive, and support plural and short forms.
|
||||
*
|
||||
* Docs: https://day.js.org/docs/en/display/difference
|
||||
*/
|
||||
diff(date?: ConfigType, unit?: QUnitType | OpUnitType, float?: boolean): number
|
||||
/**
|
||||
* This returns the number of **milliseconds** since the Unix Epoch of the Day.js object.
|
||||
* ```
|
||||
* dayjs('2019-01-25').valueOf() // 1548381600000
|
||||
* +dayjs(1548381600000) // 1548381600000
|
||||
* ```
|
||||
* To get a Unix timestamp (the number of seconds since the epoch) from a Day.js object, you should use Unix Timestamp `dayjs#unix()`.
|
||||
*
|
||||
* Docs: https://day.js.org/docs/en/display/unix-timestamp-milliseconds
|
||||
*/
|
||||
valueOf(): number
|
||||
/**
|
||||
* This returns the Unix timestamp (the number of **seconds** since the Unix Epoch) of the Day.js object.
|
||||
* ```
|
||||
* dayjs('2019-01-25').unix() // 1548381600
|
||||
* ```
|
||||
* This value is floored to the nearest second, and does not include a milliseconds component.
|
||||
*
|
||||
* Docs: https://day.js.org/docs/en/display/unix-timestamp
|
||||
*/
|
||||
unix(): number
|
||||
/**
|
||||
* Get the number of days in the current month.
|
||||
* ```
|
||||
* dayjs('2019-01-25').daysInMonth() // 31
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/display/days-in-month
|
||||
*/
|
||||
daysInMonth(): number
|
||||
/**
|
||||
* To get a copy of the native `Date` object parsed from the Day.js object use `dayjs#toDate`.
|
||||
* ```
|
||||
* dayjs('2019-01-25').toDate()// => Date
|
||||
* ```
|
||||
*/
|
||||
toDate(): Date
|
||||
/**
|
||||
* To serialize as an ISO 8601 string.
|
||||
* ```
|
||||
* dayjs('2019-01-25').toJSON() // '2019-01-25T02:00:00.000Z'
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/display/as-json
|
||||
*/
|
||||
toJSON(): string
|
||||
/**
|
||||
* To format as an ISO 8601 string.
|
||||
* ```
|
||||
* dayjs('2019-01-25').toISOString() // '2019-01-25T02:00:00.000Z'
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/display/as-iso-string
|
||||
*/
|
||||
toISOString(): string
|
||||
/**
|
||||
* Returns a string representation of the date.
|
||||
* ```
|
||||
* dayjs('2019-01-25').toString() // 'Fri, 25 Jan 2019 02:00:00 GMT'
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/display/as-string
|
||||
*/
|
||||
toString(): string
|
||||
/**
|
||||
* Get the UTC offset in minutes.
|
||||
* ```
|
||||
* dayjs().utcOffset()
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/manipulate/utc-offset
|
||||
*/
|
||||
utcOffset(): number
|
||||
/**
|
||||
* This indicates whether the Day.js object is before the other supplied date-time.
|
||||
* ```
|
||||
* dayjs().isBefore(dayjs('2011-01-01')) // default milliseconds
|
||||
* ```
|
||||
* If you want to limit the granularity to a unit other than milliseconds, pass it as the second parameter.
|
||||
* ```
|
||||
* dayjs().isBefore('2011-01-01', 'year')// => boolean
|
||||
* ```
|
||||
* Units are case insensitive, and support plural and short forms.
|
||||
*
|
||||
* Docs: https://day.js.org/docs/en/query/is-before
|
||||
*/
|
||||
isBefore(date?: ConfigType, unit?: OpUnitType): boolean
|
||||
/**
|
||||
* This indicates whether the Day.js object is the same as the other supplied date-time.
|
||||
* ```
|
||||
* dayjs().isSame(dayjs('2011-01-01')) // default milliseconds
|
||||
* ```
|
||||
* If you want to limit the granularity to a unit other than milliseconds, pass it as the second parameter.
|
||||
* ```
|
||||
* dayjs().isSame('2011-01-01', 'year')// => boolean
|
||||
* ```
|
||||
* Docs: https://day.js.org/docs/en/query/is-same
|
||||
*/
|
||||
isSame(date?: ConfigType, unit?: OpUnitType): boolean
|
||||
/**
|
||||
* This indicates whether the Day.js object is after the other supplied date-time.
|
||||
* ```
|
||||
* dayjs().isAfter(dayjs('2011-01-01')) // default milliseconds
|
||||
* ```
|
||||
* If you want to limit the granularity to a unit other than milliseconds, pass it as the second parameter.
|
||||
* ```
|
||||
* dayjs().isAfter('2011-01-01', 'year')// => boolean
|
||||
* ```
|
||||
* Units are case insensitive, and support plural and short forms.
|
||||
*
|
||||
* Docs: https://day.js.org/docs/en/query/is-after
|
||||
*/
|
||||
isAfter(date?: ConfigType, unit?: OpUnitType): boolean
|
||||
|
||||
locale(): string
|
||||
|
||||
locale(preset: string | ILocale, object?: Partial<ILocale>): Dayjs
|
||||
}
|
||||
|
||||
export type PluginFunc<T = unknown> = (option: T, c: typeof Dayjs, d: typeof dayjs) => void
|
||||
|
||||
export function extend<T = unknown>(plugin: PluginFunc<T>, option?: T): Dayjs
|
||||
|
||||
export function locale(preset?: string | ILocale, object?: Partial<ILocale>, isLocal?: boolean): string
|
||||
|
||||
export function isDayjs(d: any): d is Dayjs
|
||||
|
||||
export function unix(t: number): Dayjs
|
||||
|
||||
const Ls : { [key: string] : ILocale }
|
||||
}
|
||||
541
Backend/node_modules/dayjs/esm/index.js
generated
vendored
541
Backend/node_modules/dayjs/esm/index.js
generated
vendored
|
|
@ -1,541 +0,0 @@
|
|||
import * as C from './constant';
|
||||
import en from './locale/en';
|
||||
import U from './utils';
|
||||
var L = 'en'; // global locale
|
||||
|
||||
var Ls = {}; // global loaded locale
|
||||
|
||||
Ls[L] = en;
|
||||
var IS_DAYJS = '$isDayjsObject'; // eslint-disable-next-line no-use-before-define
|
||||
|
||||
var isDayjs = function isDayjs(d) {
|
||||
return d instanceof Dayjs || !!(d && d[IS_DAYJS]);
|
||||
};
|
||||
|
||||
var parseLocale = function parseLocale(preset, object, isLocal) {
|
||||
var l;
|
||||
if (!preset) return L;
|
||||
|
||||
if (typeof preset === 'string') {
|
||||
var presetLower = preset.toLowerCase();
|
||||
|
||||
if (Ls[presetLower]) {
|
||||
l = presetLower;
|
||||
}
|
||||
|
||||
if (object) {
|
||||
Ls[presetLower] = object;
|
||||
l = presetLower;
|
||||
}
|
||||
|
||||
var presetSplit = preset.split('-');
|
||||
|
||||
if (!l && presetSplit.length > 1) {
|
||||
return parseLocale(presetSplit[0]);
|
||||
}
|
||||
} else {
|
||||
var name = preset.name;
|
||||
Ls[name] = preset;
|
||||
l = name;
|
||||
}
|
||||
|
||||
if (!isLocal && l) L = l;
|
||||
return l || !isLocal && L;
|
||||
};
|
||||
|
||||
var dayjs = function dayjs(date, c) {
|
||||
if (isDayjs(date)) {
|
||||
return date.clone();
|
||||
} // eslint-disable-next-line no-nested-ternary
|
||||
|
||||
|
||||
var cfg = typeof c === 'object' ? c : {};
|
||||
cfg.date = date;
|
||||
cfg.args = arguments; // eslint-disable-line prefer-rest-params
|
||||
|
||||
return new Dayjs(cfg); // eslint-disable-line no-use-before-define
|
||||
};
|
||||
|
||||
var wrapper = function wrapper(date, instance) {
|
||||
return dayjs(date, {
|
||||
locale: instance.$L,
|
||||
utc: instance.$u,
|
||||
x: instance.$x,
|
||||
$offset: instance.$offset // todo: refactor; do not use this.$offset in you code
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
var Utils = U; // for plugin use
|
||||
|
||||
Utils.l = parseLocale;
|
||||
Utils.i = isDayjs;
|
||||
Utils.w = wrapper;
|
||||
|
||||
var parseDate = function parseDate(cfg) {
|
||||
var date = cfg.date,
|
||||
utc = cfg.utc;
|
||||
if (date === null) return new Date(NaN); // null is invalid
|
||||
|
||||
if (Utils.u(date)) return new Date(); // today
|
||||
|
||||
if (date instanceof Date) return new Date(date);
|
||||
|
||||
if (typeof date === 'string' && !/Z$/i.test(date)) {
|
||||
var d = date.match(C.REGEX_PARSE);
|
||||
|
||||
if (d) {
|
||||
var m = d[2] - 1 || 0;
|
||||
var ms = (d[7] || '0').substring(0, 3);
|
||||
|
||||
if (utc) {
|
||||
return new Date(Date.UTC(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms));
|
||||
}
|
||||
|
||||
return new Date(d[1], m, d[3] || 1, d[4] || 0, d[5] || 0, d[6] || 0, ms);
|
||||
}
|
||||
}
|
||||
|
||||
return new Date(date); // everything else
|
||||
};
|
||||
|
||||
var Dayjs = /*#__PURE__*/function () {
|
||||
function Dayjs(cfg) {
|
||||
this.$L = parseLocale(cfg.locale, null, true);
|
||||
this.parse(cfg); // for plugin
|
||||
|
||||
this.$x = this.$x || cfg.x || {};
|
||||
this[IS_DAYJS] = true;
|
||||
}
|
||||
|
||||
var _proto = Dayjs.prototype;
|
||||
|
||||
_proto.parse = function parse(cfg) {
|
||||
this.$d = parseDate(cfg);
|
||||
this.init();
|
||||
};
|
||||
|
||||
_proto.init = function init() {
|
||||
var $d = this.$d;
|
||||
this.$y = $d.getFullYear();
|
||||
this.$M = $d.getMonth();
|
||||
this.$D = $d.getDate();
|
||||
this.$W = $d.getDay();
|
||||
this.$H = $d.getHours();
|
||||
this.$m = $d.getMinutes();
|
||||
this.$s = $d.getSeconds();
|
||||
this.$ms = $d.getMilliseconds();
|
||||
} // eslint-disable-next-line class-methods-use-this
|
||||
;
|
||||
|
||||
_proto.$utils = function $utils() {
|
||||
return Utils;
|
||||
};
|
||||
|
||||
_proto.isValid = function isValid() {
|
||||
return !(this.$d.toString() === C.INVALID_DATE_STRING);
|
||||
};
|
||||
|
||||
_proto.isSame = function isSame(that, units) {
|
||||
var other = dayjs(that);
|
||||
return this.startOf(units) <= other && other <= this.endOf(units);
|
||||
};
|
||||
|
||||
_proto.isAfter = function isAfter(that, units) {
|
||||
return dayjs(that) < this.startOf(units);
|
||||
};
|
||||
|
||||
_proto.isBefore = function isBefore(that, units) {
|
||||
return this.endOf(units) < dayjs(that);
|
||||
};
|
||||
|
||||
_proto.$g = function $g(input, get, set) {
|
||||
if (Utils.u(input)) return this[get];
|
||||
return this.set(set, input);
|
||||
};
|
||||
|
||||
_proto.unix = function unix() {
|
||||
return Math.floor(this.valueOf() / 1000);
|
||||
};
|
||||
|
||||
_proto.valueOf = function valueOf() {
|
||||
// timezone(hour) * 60 * 60 * 1000 => ms
|
||||
return this.$d.getTime();
|
||||
};
|
||||
|
||||
_proto.startOf = function startOf(units, _startOf) {
|
||||
var _this = this;
|
||||
|
||||
// startOf -> endOf
|
||||
var isStartOf = !Utils.u(_startOf) ? _startOf : true;
|
||||
var unit = Utils.p(units);
|
||||
|
||||
var instanceFactory = function instanceFactory(d, m) {
|
||||
var ins = Utils.w(_this.$u ? Date.UTC(_this.$y, m, d) : new Date(_this.$y, m, d), _this);
|
||||
return isStartOf ? ins : ins.endOf(C.D);
|
||||
};
|
||||
|
||||
var instanceFactorySet = function instanceFactorySet(method, slice) {
|
||||
var argumentStart = [0, 0, 0, 0];
|
||||
var argumentEnd = [23, 59, 59, 999];
|
||||
return Utils.w(_this.toDate()[method].apply( // eslint-disable-line prefer-spread
|
||||
_this.toDate('s'), (isStartOf ? argumentStart : argumentEnd).slice(slice)), _this);
|
||||
};
|
||||
|
||||
var $W = this.$W,
|
||||
$M = this.$M,
|
||||
$D = this.$D;
|
||||
var utcPad = "set" + (this.$u ? 'UTC' : '');
|
||||
|
||||
switch (unit) {
|
||||
case C.Y:
|
||||
return isStartOf ? instanceFactory(1, 0) : instanceFactory(31, 11);
|
||||
|
||||
case C.M:
|
||||
return isStartOf ? instanceFactory(1, $M) : instanceFactory(0, $M + 1);
|
||||
|
||||
case C.W:
|
||||
{
|
||||
var weekStart = this.$locale().weekStart || 0;
|
||||
var gap = ($W < weekStart ? $W + 7 : $W) - weekStart;
|
||||
return instanceFactory(isStartOf ? $D - gap : $D + (6 - gap), $M);
|
||||
}
|
||||
|
||||
case C.D:
|
||||
case C.DATE:
|
||||
return instanceFactorySet(utcPad + "Hours", 0);
|
||||
|
||||
case C.H:
|
||||
return instanceFactorySet(utcPad + "Minutes", 1);
|
||||
|
||||
case C.MIN:
|
||||
return instanceFactorySet(utcPad + "Seconds", 2);
|
||||
|
||||
case C.S:
|
||||
return instanceFactorySet(utcPad + "Milliseconds", 3);
|
||||
|
||||
default:
|
||||
return this.clone();
|
||||
}
|
||||
};
|
||||
|
||||
_proto.endOf = function endOf(arg) {
|
||||
return this.startOf(arg, false);
|
||||
};
|
||||
|
||||
_proto.$set = function $set(units, _int) {
|
||||
var _C$D$C$DATE$C$M$C$Y$C;
|
||||
|
||||
// private set
|
||||
var unit = Utils.p(units);
|
||||
var utcPad = "set" + (this.$u ? 'UTC' : '');
|
||||
var name = (_C$D$C$DATE$C$M$C$Y$C = {}, _C$D$C$DATE$C$M$C$Y$C[C.D] = utcPad + "Date", _C$D$C$DATE$C$M$C$Y$C[C.DATE] = utcPad + "Date", _C$D$C$DATE$C$M$C$Y$C[C.M] = utcPad + "Month", _C$D$C$DATE$C$M$C$Y$C[C.Y] = utcPad + "FullYear", _C$D$C$DATE$C$M$C$Y$C[C.H] = utcPad + "Hours", _C$D$C$DATE$C$M$C$Y$C[C.MIN] = utcPad + "Minutes", _C$D$C$DATE$C$M$C$Y$C[C.S] = utcPad + "Seconds", _C$D$C$DATE$C$M$C$Y$C[C.MS] = utcPad + "Milliseconds", _C$D$C$DATE$C$M$C$Y$C)[unit];
|
||||
var arg = unit === C.D ? this.$D + (_int - this.$W) : _int;
|
||||
|
||||
if (unit === C.M || unit === C.Y) {
|
||||
// clone is for badMutable plugin
|
||||
var date = this.clone().set(C.DATE, 1);
|
||||
date.$d[name](arg);
|
||||
date.init();
|
||||
this.$d = date.set(C.DATE, Math.min(this.$D, date.daysInMonth())).$d;
|
||||
} else if (name) this.$d[name](arg);
|
||||
|
||||
this.init();
|
||||
return this;
|
||||
};
|
||||
|
||||
_proto.set = function set(string, _int2) {
|
||||
return this.clone().$set(string, _int2);
|
||||
};
|
||||
|
||||
_proto.get = function get(unit) {
|
||||
return this[Utils.p(unit)]();
|
||||
};
|
||||
|
||||
_proto.add = function add(number, units) {
|
||||
var _this2 = this,
|
||||
_C$MIN$C$H$C$S$unit;
|
||||
|
||||
number = Number(number); // eslint-disable-line no-param-reassign
|
||||
|
||||
var unit = Utils.p(units);
|
||||
|
||||
var instanceFactorySet = function instanceFactorySet(n) {
|
||||
var d = dayjs(_this2);
|
||||
return Utils.w(d.date(d.date() + Math.round(n * number)), _this2);
|
||||
};
|
||||
|
||||
if (unit === C.M) {
|
||||
return this.set(C.M, this.$M + number);
|
||||
}
|
||||
|
||||
if (unit === C.Y) {
|
||||
return this.set(C.Y, this.$y + number);
|
||||
}
|
||||
|
||||
if (unit === C.D) {
|
||||
return instanceFactorySet(1);
|
||||
}
|
||||
|
||||
if (unit === C.W) {
|
||||
return instanceFactorySet(7);
|
||||
}
|
||||
|
||||
var step = (_C$MIN$C$H$C$S$unit = {}, _C$MIN$C$H$C$S$unit[C.MIN] = C.MILLISECONDS_A_MINUTE, _C$MIN$C$H$C$S$unit[C.H] = C.MILLISECONDS_A_HOUR, _C$MIN$C$H$C$S$unit[C.S] = C.MILLISECONDS_A_SECOND, _C$MIN$C$H$C$S$unit)[unit] || 1; // ms
|
||||
|
||||
var nextTimeStamp = this.$d.getTime() + number * step;
|
||||
return Utils.w(nextTimeStamp, this);
|
||||
};
|
||||
|
||||
_proto.subtract = function subtract(number, string) {
|
||||
return this.add(number * -1, string);
|
||||
};
|
||||
|
||||
_proto.format = function format(formatStr) {
|
||||
var _this3 = this;
|
||||
|
||||
var locale = this.$locale();
|
||||
if (!this.isValid()) return locale.invalidDate || C.INVALID_DATE_STRING;
|
||||
var str = formatStr || C.FORMAT_DEFAULT;
|
||||
var zoneStr = Utils.z(this);
|
||||
var $H = this.$H,
|
||||
$m = this.$m,
|
||||
$M = this.$M;
|
||||
var weekdays = locale.weekdays,
|
||||
months = locale.months,
|
||||
meridiem = locale.meridiem;
|
||||
|
||||
var getShort = function getShort(arr, index, full, length) {
|
||||
return arr && (arr[index] || arr(_this3, str)) || full[index].slice(0, length);
|
||||
};
|
||||
|
||||
var get$H = function get$H(num) {
|
||||
return Utils.s($H % 12 || 12, num, '0');
|
||||
};
|
||||
|
||||
var meridiemFunc = meridiem || function (hour, minute, isLowercase) {
|
||||
var m = hour < 12 ? 'AM' : 'PM';
|
||||
return isLowercase ? m.toLowerCase() : m;
|
||||
};
|
||||
|
||||
var matches = function matches(match) {
|
||||
switch (match) {
|
||||
case 'YY':
|
||||
return String(_this3.$y).slice(-2);
|
||||
|
||||
case 'YYYY':
|
||||
return Utils.s(_this3.$y, 4, '0');
|
||||
|
||||
case 'M':
|
||||
return $M + 1;
|
||||
|
||||
case 'MM':
|
||||
return Utils.s($M + 1, 2, '0');
|
||||
|
||||
case 'MMM':
|
||||
return getShort(locale.monthsShort, $M, months, 3);
|
||||
|
||||
case 'MMMM':
|
||||
return getShort(months, $M);
|
||||
|
||||
case 'D':
|
||||
return _this3.$D;
|
||||
|
||||
case 'DD':
|
||||
return Utils.s(_this3.$D, 2, '0');
|
||||
|
||||
case 'd':
|
||||
return String(_this3.$W);
|
||||
|
||||
case 'dd':
|
||||
return getShort(locale.weekdaysMin, _this3.$W, weekdays, 2);
|
||||
|
||||
case 'ddd':
|
||||
return getShort(locale.weekdaysShort, _this3.$W, weekdays, 3);
|
||||
|
||||
case 'dddd':
|
||||
return weekdays[_this3.$W];
|
||||
|
||||
case 'H':
|
||||
return String($H);
|
||||
|
||||
case 'HH':
|
||||
return Utils.s($H, 2, '0');
|
||||
|
||||
case 'h':
|
||||
return get$H(1);
|
||||
|
||||
case 'hh':
|
||||
return get$H(2);
|
||||
|
||||
case 'a':
|
||||
return meridiemFunc($H, $m, true);
|
||||
|
||||
case 'A':
|
||||
return meridiemFunc($H, $m, false);
|
||||
|
||||
case 'm':
|
||||
return String($m);
|
||||
|
||||
case 'mm':
|
||||
return Utils.s($m, 2, '0');
|
||||
|
||||
case 's':
|
||||
return String(_this3.$s);
|
||||
|
||||
case 'ss':
|
||||
return Utils.s(_this3.$s, 2, '0');
|
||||
|
||||
case 'SSS':
|
||||
return Utils.s(_this3.$ms, 3, '0');
|
||||
|
||||
case 'Z':
|
||||
return zoneStr;
|
||||
// 'ZZ' logic below
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
|
||||
return str.replace(C.REGEX_FORMAT, function (match, $1) {
|
||||
return $1 || matches(match) || zoneStr.replace(':', '');
|
||||
}); // 'ZZ'
|
||||
};
|
||||
|
||||
_proto.utcOffset = function utcOffset() {
|
||||
// Because a bug at FF24, we're rounding the timezone offset around 15 minutes
|
||||
// https://github.com/moment/moment/pull/1871
|
||||
return -Math.round(this.$d.getTimezoneOffset() / 15) * 15;
|
||||
};
|
||||
|
||||
_proto.diff = function diff(input, units, _float) {
|
||||
var _this4 = this;
|
||||
|
||||
var unit = Utils.p(units);
|
||||
var that = dayjs(input);
|
||||
var zoneDelta = (that.utcOffset() - this.utcOffset()) * C.MILLISECONDS_A_MINUTE;
|
||||
var diff = this - that;
|
||||
|
||||
var getMonth = function getMonth() {
|
||||
return Utils.m(_this4, that);
|
||||
};
|
||||
|
||||
var result;
|
||||
|
||||
switch (unit) {
|
||||
case C.Y:
|
||||
result = getMonth() / 12;
|
||||
break;
|
||||
|
||||
case C.M:
|
||||
result = getMonth();
|
||||
break;
|
||||
|
||||
case C.Q:
|
||||
result = getMonth() / 3;
|
||||
break;
|
||||
|
||||
case C.W:
|
||||
result = (diff - zoneDelta) / C.MILLISECONDS_A_WEEK;
|
||||
break;
|
||||
|
||||
case C.D:
|
||||
result = (diff - zoneDelta) / C.MILLISECONDS_A_DAY;
|
||||
break;
|
||||
|
||||
case C.H:
|
||||
result = diff / C.MILLISECONDS_A_HOUR;
|
||||
break;
|
||||
|
||||
case C.MIN:
|
||||
result = diff / C.MILLISECONDS_A_MINUTE;
|
||||
break;
|
||||
|
||||
case C.S:
|
||||
result = diff / C.MILLISECONDS_A_SECOND;
|
||||
break;
|
||||
|
||||
default:
|
||||
result = diff; // milliseconds
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return _float ? result : Utils.a(result);
|
||||
};
|
||||
|
||||
_proto.daysInMonth = function daysInMonth() {
|
||||
return this.endOf(C.M).$D;
|
||||
};
|
||||
|
||||
_proto.$locale = function $locale() {
|
||||
// get locale object
|
||||
return Ls[this.$L];
|
||||
};
|
||||
|
||||
_proto.locale = function locale(preset, object) {
|
||||
if (!preset) return this.$L;
|
||||
var that = this.clone();
|
||||
var nextLocaleName = parseLocale(preset, object, true);
|
||||
if (nextLocaleName) that.$L = nextLocaleName;
|
||||
return that;
|
||||
};
|
||||
|
||||
_proto.clone = function clone() {
|
||||
return Utils.w(this.$d, this);
|
||||
};
|
||||
|
||||
_proto.toDate = function toDate() {
|
||||
return new Date(this.valueOf());
|
||||
};
|
||||
|
||||
_proto.toJSON = function toJSON() {
|
||||
return this.isValid() ? this.toISOString() : null;
|
||||
};
|
||||
|
||||
_proto.toISOString = function toISOString() {
|
||||
// ie 8 return
|
||||
// new Dayjs(this.valueOf() + this.$d.getTimezoneOffset() * 60000)
|
||||
// .format('YYYY-MM-DDTHH:mm:ss.SSS[Z]')
|
||||
return this.$d.toISOString();
|
||||
};
|
||||
|
||||
_proto.toString = function toString() {
|
||||
return this.$d.toUTCString();
|
||||
};
|
||||
|
||||
return Dayjs;
|
||||
}();
|
||||
|
||||
var proto = Dayjs.prototype;
|
||||
dayjs.prototype = proto;
|
||||
[['$ms', C.MS], ['$s', C.S], ['$m', C.MIN], ['$H', C.H], ['$W', C.D], ['$M', C.M], ['$y', C.Y], ['$D', C.DATE]].forEach(function (g) {
|
||||
proto[g[1]] = function (input) {
|
||||
return this.$g(input, g[0], g[1]);
|
||||
};
|
||||
});
|
||||
|
||||
dayjs.extend = function (plugin, option) {
|
||||
if (!plugin.$i) {
|
||||
// install plugin only once
|
||||
plugin(option, Dayjs, dayjs);
|
||||
plugin.$i = true;
|
||||
}
|
||||
|
||||
return dayjs;
|
||||
};
|
||||
|
||||
dayjs.locale = parseLocale;
|
||||
dayjs.isDayjs = isDayjs;
|
||||
|
||||
dayjs.unix = function (timestamp) {
|
||||
return dayjs(timestamp * 1e3);
|
||||
};
|
||||
|
||||
dayjs.en = Ls[L];
|
||||
dayjs.Ls = Ls;
|
||||
dayjs.p = {};
|
||||
export default dayjs;
|
||||
39
Backend/node_modules/dayjs/esm/locale/af.js
generated
vendored
39
Backend/node_modules/dayjs/esm/locale/af.js
generated
vendored
|
|
@ -1,39 +0,0 @@
|
|||
// Afrikaans [af]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'af',
|
||||
weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
|
||||
months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
|
||||
weekStart: 1,
|
||||
weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
|
||||
monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
|
||||
weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
formats: {
|
||||
LT: 'HH:mm',
|
||||
LTS: 'HH:mm:ss',
|
||||
L: 'DD/MM/YYYY',
|
||||
LL: 'D MMMM YYYY',
|
||||
LLL: 'D MMMM YYYY HH:mm',
|
||||
LLLL: 'dddd, D MMMM YYYY HH:mm'
|
||||
},
|
||||
relativeTime: {
|
||||
future: 'oor %s',
|
||||
past: '%s gelede',
|
||||
s: "'n paar sekondes",
|
||||
m: "'n minuut",
|
||||
mm: '%d minute',
|
||||
h: "'n uur",
|
||||
hh: '%d ure',
|
||||
d: "'n dag",
|
||||
dd: '%d dae',
|
||||
M: "'n maand",
|
||||
MM: '%d maande',
|
||||
y: "'n jaar",
|
||||
yy: '%d jaar'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
40
Backend/node_modules/dayjs/esm/locale/am.js
generated
vendored
40
Backend/node_modules/dayjs/esm/locale/am.js
generated
vendored
|
|
@ -1,40 +0,0 @@
|
|||
// Amharic [am]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'am',
|
||||
weekdays: 'እሑድ_ሰኞ_ማክሰኞ_ረቡዕ_ሐሙስ_አርብ_ቅዳሜ'.split('_'),
|
||||
weekdaysShort: 'እሑድ_ሰኞ_ማክሰ_ረቡዕ_ሐሙስ_አርብ_ቅዳሜ'.split('_'),
|
||||
weekdaysMin: 'እሑ_ሰኞ_ማክ_ረቡ_ሐሙ_አር_ቅዳ'.split('_'),
|
||||
months: 'ጃንዋሪ_ፌብሯሪ_ማርች_ኤፕሪል_ሜይ_ጁን_ጁላይ_ኦገስት_ሴፕቴምበር_ኦክቶበር_ኖቬምበር_ዲሴምበር'.split('_'),
|
||||
monthsShort: 'ጃንዋ_ፌብሯ_ማርች_ኤፕሪ_ሜይ_ጁን_ጁላይ_ኦገስ_ሴፕቴ_ኦክቶ_ኖቬም_ዲሴም'.split('_'),
|
||||
weekStart: 1,
|
||||
yearStart: 4,
|
||||
relativeTime: {
|
||||
future: 'በ%s',
|
||||
past: '%s በፊት',
|
||||
s: 'ጥቂት ሰከንዶች',
|
||||
m: 'አንድ ደቂቃ',
|
||||
mm: '%d ደቂቃዎች',
|
||||
h: 'አንድ ሰዓት',
|
||||
hh: '%d ሰዓታት',
|
||||
d: 'አንድ ቀን',
|
||||
dd: '%d ቀናት',
|
||||
M: 'አንድ ወር',
|
||||
MM: '%d ወራት',
|
||||
y: 'አንድ ዓመት',
|
||||
yy: '%d ዓመታት'
|
||||
},
|
||||
formats: {
|
||||
LT: 'HH:mm',
|
||||
LTS: 'HH:mm:ss',
|
||||
L: 'DD/MM/YYYY',
|
||||
LL: 'MMMM D ፣ YYYY',
|
||||
LLL: 'MMMM D ፣ YYYY HH:mm',
|
||||
LLLL: 'dddd ፣ MMMM D ፣ YYYY HH:mm'
|
||||
},
|
||||
ordinal: function ordinal(n) {
|
||||
return n + "\u129B";
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
41
Backend/node_modules/dayjs/esm/locale/ar-dz.js
generated
vendored
41
Backend/node_modules/dayjs/esm/locale/ar-dz.js
generated
vendored
|
|
@ -1,41 +0,0 @@
|
|||
// Arabic (Algeria) [ar-dz]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'ar-dz',
|
||||
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
|
||||
months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
|
||||
weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
|
||||
monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
|
||||
weekdaysMin: 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
formats: {
|
||||
LT: 'HH:mm',
|
||||
LTS: 'HH:mm:ss',
|
||||
L: 'DD/MM/YYYY',
|
||||
LL: 'D MMMM YYYY',
|
||||
LLL: 'D MMMM YYYY HH:mm',
|
||||
LLLL: 'dddd D MMMM YYYY HH:mm'
|
||||
},
|
||||
meridiem: function meridiem(hour) {
|
||||
return hour > 12 ? 'م' : 'ص';
|
||||
},
|
||||
relativeTime: {
|
||||
future: 'في %s',
|
||||
past: 'منذ %s',
|
||||
s: 'ثوان',
|
||||
m: 'دقيقة',
|
||||
mm: '%d دقائق',
|
||||
h: 'ساعة',
|
||||
hh: '%d ساعات',
|
||||
d: 'يوم',
|
||||
dd: '%d أيام',
|
||||
M: 'شهر',
|
||||
MM: '%d أشهر',
|
||||
y: 'سنة',
|
||||
yy: '%d سنوات'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
42
Backend/node_modules/dayjs/esm/locale/ar-iq.js
generated
vendored
42
Backend/node_modules/dayjs/esm/locale/ar-iq.js
generated
vendored
|
|
@ -1,42 +0,0 @@
|
|||
// Arabic (Iraq) [ar-iq]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'ar-iq',
|
||||
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
|
||||
months: 'كانون الثاني_شباط_آذار_نيسان_أيار_حزيران_تموز_آب_أيلول_تشرين الأول_ تشرين الثاني_كانون الأول'.split('_'),
|
||||
weekStart: 1,
|
||||
weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
|
||||
monthsShort: 'كانون الثاني_شباط_آذار_نيسان_أيار_حزيران_تموز_آب_أيلول_تشرين الأول_ تشرين الثاني_كانون الأول'.split('_'),
|
||||
weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
formats: {
|
||||
LT: 'HH:mm',
|
||||
LTS: 'HH:mm:ss',
|
||||
L: 'DD/MM/YYYY',
|
||||
LL: 'D MMMM YYYY',
|
||||
LLL: 'D MMMM YYYY HH:mm',
|
||||
LLLL: 'dddd D MMMM YYYY HH:mm'
|
||||
},
|
||||
meridiem: function meridiem(hour) {
|
||||
return hour > 12 ? 'م' : 'ص';
|
||||
},
|
||||
relativeTime: {
|
||||
future: 'في %s',
|
||||
past: 'منذ %s',
|
||||
s: 'ثوان',
|
||||
m: 'دقيقة',
|
||||
mm: '%d دقائق',
|
||||
h: 'ساعة',
|
||||
hh: '%d ساعات',
|
||||
d: 'يوم',
|
||||
dd: '%d أيام',
|
||||
M: 'شهر',
|
||||
MM: '%d أشهر',
|
||||
y: 'سنة',
|
||||
yy: '%d سنوات'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
41
Backend/node_modules/dayjs/esm/locale/ar-kw.js
generated
vendored
41
Backend/node_modules/dayjs/esm/locale/ar-kw.js
generated
vendored
|
|
@ -1,41 +0,0 @@
|
|||
// Arabic (Kuwait) [ar-kw]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'ar-kw',
|
||||
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
|
||||
months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
|
||||
weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
|
||||
monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
|
||||
weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
formats: {
|
||||
LT: 'HH:mm',
|
||||
LTS: 'HH:mm:ss',
|
||||
L: 'DD/MM/YYYY',
|
||||
LL: 'D MMMM YYYY',
|
||||
LLL: 'D MMMM YYYY HH:mm',
|
||||
LLLL: 'dddd D MMMM YYYY HH:mm'
|
||||
},
|
||||
meridiem: function meridiem(hour) {
|
||||
return hour > 12 ? 'م' : 'ص';
|
||||
},
|
||||
relativeTime: {
|
||||
future: 'في %s',
|
||||
past: 'منذ %s',
|
||||
s: 'ثوان',
|
||||
m: 'دقيقة',
|
||||
mm: '%d دقائق',
|
||||
h: 'ساعة',
|
||||
hh: '%d ساعات',
|
||||
d: 'يوم',
|
||||
dd: '%d أيام',
|
||||
M: 'شهر',
|
||||
MM: '%d أشهر',
|
||||
y: 'سنة',
|
||||
yy: '%d سنوات'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
27
Backend/node_modules/dayjs/esm/locale/ar-ly.js
generated
vendored
27
Backend/node_modules/dayjs/esm/locale/ar-ly.js
generated
vendored
|
|
@ -1,27 +0,0 @@
|
|||
// Arabic (Lybia) [ar-ly]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'ar-ly',
|
||||
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
|
||||
months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
|
||||
weekStart: 6,
|
||||
weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
|
||||
monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
|
||||
weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
meridiem: function meridiem(hour) {
|
||||
return hour > 12 ? 'م' : 'ص';
|
||||
},
|
||||
formats: {
|
||||
LT: 'HH:mm',
|
||||
LTS: 'HH:mm:ss',
|
||||
L: 'D/M/YYYY',
|
||||
LL: 'D MMMM YYYY',
|
||||
LLL: 'D MMMM YYYY HH:mm',
|
||||
LLLL: 'dddd D MMMM YYYY HH:mm'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
42
Backend/node_modules/dayjs/esm/locale/ar-ma.js
generated
vendored
42
Backend/node_modules/dayjs/esm/locale/ar-ma.js
generated
vendored
|
|
@ -1,42 +0,0 @@
|
|||
// Arabic (Morocco) [ar-ma]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'ar-ma',
|
||||
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
|
||||
months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
|
||||
weekStart: 6,
|
||||
weekdaysShort: 'احد_إثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
|
||||
monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
|
||||
weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
formats: {
|
||||
LT: 'HH:mm',
|
||||
LTS: 'HH:mm:ss',
|
||||
L: 'DD/MM/YYYY',
|
||||
LL: 'D MMMM YYYY',
|
||||
LLL: 'D MMMM YYYY HH:mm',
|
||||
LLLL: 'dddd D MMMM YYYY HH:mm'
|
||||
},
|
||||
meridiem: function meridiem(hour) {
|
||||
return hour > 12 ? 'م' : 'ص';
|
||||
},
|
||||
relativeTime: {
|
||||
future: 'في %s',
|
||||
past: 'منذ %s',
|
||||
s: 'ثوان',
|
||||
m: 'دقيقة',
|
||||
mm: '%d دقائق',
|
||||
h: 'ساعة',
|
||||
hh: '%d ساعات',
|
||||
d: 'يوم',
|
||||
dd: '%d أيام',
|
||||
M: 'شهر',
|
||||
MM: '%d أشهر',
|
||||
y: 'سنة',
|
||||
yy: '%d سنوات'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
41
Backend/node_modules/dayjs/esm/locale/ar-sa.js
generated
vendored
41
Backend/node_modules/dayjs/esm/locale/ar-sa.js
generated
vendored
|
|
@ -1,41 +0,0 @@
|
|||
// Arabic (Saudi Arabia) [ar-sa]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'ar-sa',
|
||||
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
|
||||
months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
|
||||
weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
|
||||
monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
|
||||
weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
formats: {
|
||||
LT: 'HH:mm',
|
||||
LTS: 'HH:mm:ss',
|
||||
L: 'DD/MM/YYYY',
|
||||
LL: 'D MMMM YYYY',
|
||||
LLL: 'D MMMM YYYY HH:mm',
|
||||
LLLL: 'dddd D MMMM YYYY HH:mm'
|
||||
},
|
||||
meridiem: function meridiem(hour) {
|
||||
return hour > 12 ? 'م' : 'ص';
|
||||
},
|
||||
relativeTime: {
|
||||
future: 'في %s',
|
||||
past: 'منذ %s',
|
||||
s: 'ثوان',
|
||||
m: 'دقيقة',
|
||||
mm: '%d دقائق',
|
||||
h: 'ساعة',
|
||||
hh: '%d ساعات',
|
||||
d: 'يوم',
|
||||
dd: '%d أيام',
|
||||
M: 'شهر',
|
||||
MM: '%d أشهر',
|
||||
y: 'سنة',
|
||||
yy: '%d سنوات'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
42
Backend/node_modules/dayjs/esm/locale/ar-tn.js
generated
vendored
42
Backend/node_modules/dayjs/esm/locale/ar-tn.js
generated
vendored
|
|
@ -1,42 +0,0 @@
|
|||
// Arabic (Tunisia) [ar-tn]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'ar-tn',
|
||||
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
|
||||
months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
|
||||
weekStart: 1,
|
||||
weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
|
||||
monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
|
||||
weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
formats: {
|
||||
LT: 'HH:mm',
|
||||
LTS: 'HH:mm:ss',
|
||||
L: 'DD/MM/YYYY',
|
||||
LL: 'D MMMM YYYY',
|
||||
LLL: 'D MMMM YYYY HH:mm',
|
||||
LLLL: 'dddd D MMMM YYYY HH:mm'
|
||||
},
|
||||
meridiem: function meridiem(hour) {
|
||||
return hour > 12 ? 'م' : 'ص';
|
||||
},
|
||||
relativeTime: {
|
||||
future: 'في %s',
|
||||
past: 'منذ %s',
|
||||
s: 'ثوان',
|
||||
m: 'دقيقة',
|
||||
mm: '%d دقائق',
|
||||
h: 'ساعة',
|
||||
hh: '%d ساعات',
|
||||
d: 'يوم',
|
||||
dd: '%d أيام',
|
||||
M: 'شهر',
|
||||
MM: '%d أشهر',
|
||||
y: 'سنة',
|
||||
yy: '%d سنوات'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
77
Backend/node_modules/dayjs/esm/locale/ar.js
generated
vendored
77
Backend/node_modules/dayjs/esm/locale/ar.js
generated
vendored
|
|
@ -1,77 +0,0 @@
|
|||
// Arabic [ar]
|
||||
import dayjs from '../index';
|
||||
var months = 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_');
|
||||
var symbolMap = {
|
||||
1: '١',
|
||||
2: '٢',
|
||||
3: '٣',
|
||||
4: '٤',
|
||||
5: '٥',
|
||||
6: '٦',
|
||||
7: '٧',
|
||||
8: '٨',
|
||||
9: '٩',
|
||||
0: '٠'
|
||||
};
|
||||
var numberMap = {
|
||||
'١': '1',
|
||||
'٢': '2',
|
||||
'٣': '3',
|
||||
'٤': '4',
|
||||
'٥': '5',
|
||||
'٦': '6',
|
||||
'٧': '7',
|
||||
'٨': '8',
|
||||
'٩': '9',
|
||||
'٠': '0'
|
||||
};
|
||||
var locale = {
|
||||
name: 'ar',
|
||||
weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
|
||||
weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
|
||||
weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
|
||||
months: months,
|
||||
monthsShort: months,
|
||||
weekStart: 6,
|
||||
meridiem: function meridiem(hour) {
|
||||
return hour > 12 ? 'م' : 'ص';
|
||||
},
|
||||
relativeTime: {
|
||||
future: 'بعد %s',
|
||||
past: 'منذ %s',
|
||||
s: 'ثانية واحدة',
|
||||
m: 'دقيقة واحدة',
|
||||
mm: '%d دقائق',
|
||||
h: 'ساعة واحدة',
|
||||
hh: '%d ساعات',
|
||||
d: 'يوم واحد',
|
||||
dd: '%d أيام',
|
||||
M: 'شهر واحد',
|
||||
MM: '%d أشهر',
|
||||
y: 'عام واحد',
|
||||
yy: '%d أعوام'
|
||||
},
|
||||
preparse: function preparse(string) {
|
||||
return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
|
||||
return numberMap[match];
|
||||
}).replace(/،/g, ',');
|
||||
},
|
||||
postformat: function postformat(string) {
|
||||
return string.replace(/\d/g, function (match) {
|
||||
return symbolMap[match];
|
||||
}).replace(/,/g, '،');
|
||||
},
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
formats: {
|
||||
LT: 'HH:mm',
|
||||
LTS: 'HH:mm:ss',
|
||||
L: 'D/M/YYYY',
|
||||
LL: 'D MMMM YYYY',
|
||||
LLL: 'D MMMM YYYY HH:mm',
|
||||
LLLL: 'dddd D MMMM YYYY HH:mm'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
39
Backend/node_modules/dayjs/esm/locale/az.js
generated
vendored
39
Backend/node_modules/dayjs/esm/locale/az.js
generated
vendored
|
|
@ -1,39 +0,0 @@
|
|||
// Azerbaijani [az]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'az',
|
||||
weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
|
||||
weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
|
||||
weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
|
||||
months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
|
||||
monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
|
||||
weekStart: 1,
|
||||
formats: {
|
||||
LT: 'H:mm',
|
||||
LTS: 'H:mm:ss',
|
||||
L: 'DD.MM.YYYY',
|
||||
LL: 'D MMMM YYYY г.',
|
||||
LLL: 'D MMMM YYYY г., H:mm',
|
||||
LLLL: 'dddd, D MMMM YYYY г., H:mm'
|
||||
},
|
||||
relativeTime: {
|
||||
future: '%s sonra',
|
||||
past: '%s əvvəl',
|
||||
s: 'bir neçə saniyə',
|
||||
m: 'bir dəqiqə',
|
||||
mm: '%d dəqiqə',
|
||||
h: 'bir saat',
|
||||
hh: '%d saat',
|
||||
d: 'bir gün',
|
||||
dd: '%d gün',
|
||||
M: 'bir ay',
|
||||
MM: '%d ay',
|
||||
y: 'bir il',
|
||||
yy: '%d il'
|
||||
},
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
24
Backend/node_modules/dayjs/esm/locale/be.js
generated
vendored
24
Backend/node_modules/dayjs/esm/locale/be.js
generated
vendored
|
|
@ -1,24 +0,0 @@
|
|||
// Belarusian [be]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'be',
|
||||
weekdays: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),
|
||||
months: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),
|
||||
weekStart: 1,
|
||||
weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
|
||||
monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
|
||||
weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
formats: {
|
||||
LT: 'HH:mm',
|
||||
LTS: 'HH:mm:ss',
|
||||
L: 'DD.MM.YYYY',
|
||||
LL: 'D MMMM YYYY г.',
|
||||
LLL: 'D MMMM YYYY г., HH:mm',
|
||||
LLLL: 'dddd, D MMMM YYYY г., HH:mm'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
55
Backend/node_modules/dayjs/esm/locale/bg.js
generated
vendored
55
Backend/node_modules/dayjs/esm/locale/bg.js
generated
vendored
|
|
@ -1,55 +0,0 @@
|
|||
// Bulgarian [bg]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'bg',
|
||||
weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
|
||||
weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
|
||||
weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
|
||||
months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
|
||||
monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
|
||||
weekStart: 1,
|
||||
ordinal: function ordinal(n) {
|
||||
var last2Digits = n % 100;
|
||||
|
||||
if (last2Digits > 10 && last2Digits < 20) {
|
||||
return n + "-\u0442\u0438";
|
||||
}
|
||||
|
||||
var lastDigit = n % 10;
|
||||
|
||||
if (lastDigit === 1) {
|
||||
return n + "-\u0432\u0438";
|
||||
} else if (lastDigit === 2) {
|
||||
return n + "-\u0440\u0438";
|
||||
} else if (lastDigit === 7 || lastDigit === 8) {
|
||||
return n + "-\u043C\u0438";
|
||||
}
|
||||
|
||||
return n + "-\u0442\u0438";
|
||||
},
|
||||
formats: {
|
||||
LT: 'H:mm',
|
||||
LTS: 'H:mm:ss',
|
||||
L: 'D.MM.YYYY',
|
||||
LL: 'D MMMM YYYY',
|
||||
LLL: 'D MMMM YYYY H:mm',
|
||||
LLLL: 'dddd, D MMMM YYYY H:mm'
|
||||
},
|
||||
relativeTime: {
|
||||
future: 'след %s',
|
||||
past: 'преди %s',
|
||||
s: 'няколко секунди',
|
||||
m: 'минута',
|
||||
mm: '%d минути',
|
||||
h: 'час',
|
||||
hh: '%d часа',
|
||||
d: 'ден',
|
||||
dd: '%d дена',
|
||||
M: 'месец',
|
||||
MM: '%d месеца',
|
||||
y: 'година',
|
||||
yy: '%d години'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
39
Backend/node_modules/dayjs/esm/locale/bi.js
generated
vendored
39
Backend/node_modules/dayjs/esm/locale/bi.js
generated
vendored
|
|
@ -1,39 +0,0 @@
|
|||
// Bislama [bi]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'bi',
|
||||
weekdays: 'Sande_Mande_Tusde_Wenesde_Tosde_Fraede_Sarade'.split('_'),
|
||||
months: 'Januari_Februari_Maj_Eprel_Mei_Jun_Julae_Okis_Septemba_Oktoba_Novemba_Disemba'.split('_'),
|
||||
weekStart: 1,
|
||||
weekdaysShort: 'San_Man_Tus_Wen_Tos_Frae_Sar'.split('_'),
|
||||
monthsShort: 'Jan_Feb_Maj_Epr_Mai_Jun_Jul_Oki_Sep_Okt_Nov_Dis'.split('_'),
|
||||
weekdaysMin: 'San_Ma_Tu_We_To_Fr_Sar'.split('_'),
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
formats: {
|
||||
LT: 'h:mm A',
|
||||
LTS: 'h:mm:ss A',
|
||||
L: 'DD/MM/YYYY',
|
||||
LL: 'D MMMM YYYY',
|
||||
LLL: 'D MMMM YYYY h:mm A',
|
||||
LLLL: 'dddd, D MMMM YYYY h:mm A'
|
||||
},
|
||||
relativeTime: {
|
||||
future: 'lo %s',
|
||||
past: '%s bifo',
|
||||
s: 'sam seken',
|
||||
m: 'wan minit',
|
||||
mm: '%d minit',
|
||||
h: 'wan haoa',
|
||||
hh: '%d haoa',
|
||||
d: 'wan dei',
|
||||
dd: '%d dei',
|
||||
M: 'wan manis',
|
||||
MM: '%d manis',
|
||||
y: 'wan yia',
|
||||
yy: '%d yia'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
39
Backend/node_modules/dayjs/esm/locale/bm.js
generated
vendored
39
Backend/node_modules/dayjs/esm/locale/bm.js
generated
vendored
|
|
@ -1,39 +0,0 @@
|
|||
// Bambara [bm]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'bm',
|
||||
weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
|
||||
months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),
|
||||
weekStart: 1,
|
||||
weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
|
||||
monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
|
||||
weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
formats: {
|
||||
LT: 'HH:mm',
|
||||
LTS: 'HH:mm:ss',
|
||||
L: 'DD/MM/YYYY',
|
||||
LL: 'MMMM [tile] D [san] YYYY',
|
||||
LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
|
||||
LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'
|
||||
},
|
||||
relativeTime: {
|
||||
future: '%s kɔnɔ',
|
||||
past: 'a bɛ %s bɔ',
|
||||
s: 'sanga dama dama',
|
||||
m: 'miniti kelen',
|
||||
mm: 'miniti %d',
|
||||
h: 'lɛrɛ kelen',
|
||||
hh: 'lɛrɛ %d',
|
||||
d: 'tile kelen',
|
||||
dd: 'tile %d',
|
||||
M: 'kalo kelen',
|
||||
MM: 'kalo %d',
|
||||
y: 'san kelen',
|
||||
yy: 'san %d'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
81
Backend/node_modules/dayjs/esm/locale/bn-bd.js
generated
vendored
81
Backend/node_modules/dayjs/esm/locale/bn-bd.js
generated
vendored
|
|
@ -1,81 +0,0 @@
|
|||
// Bengali (Bangladesh) [bn-bd]
|
||||
import dayjs from '../index';
|
||||
var symbolMap = {
|
||||
1: '১',
|
||||
2: '২',
|
||||
3: '৩',
|
||||
4: '৪',
|
||||
5: '৫',
|
||||
6: '৬',
|
||||
7: '৭',
|
||||
8: '৮',
|
||||
9: '৯',
|
||||
0: '০'
|
||||
};
|
||||
var numberMap = {
|
||||
'১': '1',
|
||||
'২': '2',
|
||||
'৩': '3',
|
||||
'৪': '4',
|
||||
'৫': '5',
|
||||
'৬': '6',
|
||||
'৭': '7',
|
||||
'৮': '8',
|
||||
'৯': '9',
|
||||
'০': '0'
|
||||
};
|
||||
var locale = {
|
||||
name: 'bn-bd',
|
||||
weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
|
||||
months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
|
||||
weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
|
||||
monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
|
||||
weekdaysMin: 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),
|
||||
weekStart: 0,
|
||||
preparse: function preparse(string) {
|
||||
return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
|
||||
return numberMap[match];
|
||||
});
|
||||
},
|
||||
postformat: function postformat(string) {
|
||||
return string.replace(/\d/g, function (match) {
|
||||
return symbolMap[match];
|
||||
});
|
||||
},
|
||||
ordinal: function ordinal(n) {
|
||||
var s = ['ই', 'লা', 'রা', 'ঠা', 'শে'];
|
||||
var v = n % 100;
|
||||
return "[" + n + (s[(v - 20) % 10] || s[v] || s[0]) + "]";
|
||||
},
|
||||
formats: {
|
||||
LT: 'A h:mm সময়',
|
||||
LTS: 'A h:mm:ss সময়',
|
||||
L: 'DD/MM/YYYY খ্রিস্টাব্দ',
|
||||
LL: 'D MMMM YYYY খ্রিস্টাব্দ',
|
||||
LLL: 'D MMMM YYYY খ্রিস্টাব্দ, A h:mm সময়',
|
||||
LLLL: 'dddd, D MMMM YYYY খ্রিস্টাব্দ, A h:mm সময়'
|
||||
},
|
||||
meridiem: function meridiem(hour) {
|
||||
return (
|
||||
/* eslint-disable no-nested-ternary */
|
||||
hour < 4 ? 'রাত' : hour < 6 ? 'ভোর' : hour < 12 ? 'সকাল' : hour < 15 ? 'দুপুর' : hour < 18 ? 'বিকাল' : hour < 20 ? 'সন্ধ্যা' : 'রাত'
|
||||
);
|
||||
},
|
||||
relativeTime: {
|
||||
future: '%s পরে',
|
||||
past: '%s আগে',
|
||||
s: 'কয়েক সেকেন্ড',
|
||||
m: 'এক মিনিট',
|
||||
mm: '%d মিনিট',
|
||||
h: 'এক ঘন্টা',
|
||||
hh: '%d ঘন্টা',
|
||||
d: 'এক দিন',
|
||||
dd: '%d দিন',
|
||||
M: 'এক মাস',
|
||||
MM: '%d মাস',
|
||||
y: 'এক বছর',
|
||||
yy: '%d বছর'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
72
Backend/node_modules/dayjs/esm/locale/bn.js
generated
vendored
72
Backend/node_modules/dayjs/esm/locale/bn.js
generated
vendored
|
|
@ -1,72 +0,0 @@
|
|||
// Bengali [bn]
|
||||
import dayjs from '../index';
|
||||
var symbolMap = {
|
||||
1: '১',
|
||||
2: '২',
|
||||
3: '৩',
|
||||
4: '৪',
|
||||
5: '৫',
|
||||
6: '৬',
|
||||
7: '৭',
|
||||
8: '৮',
|
||||
9: '৯',
|
||||
0: '০'
|
||||
};
|
||||
var numberMap = {
|
||||
'১': '1',
|
||||
'২': '2',
|
||||
'৩': '3',
|
||||
'৪': '4',
|
||||
'৫': '5',
|
||||
'৬': '6',
|
||||
'৭': '7',
|
||||
'৮': '8',
|
||||
'৯': '9',
|
||||
'০': '0'
|
||||
};
|
||||
var locale = {
|
||||
name: 'bn',
|
||||
weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
|
||||
months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
|
||||
weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
|
||||
monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
|
||||
weekdaysMin: 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),
|
||||
preparse: function preparse(string) {
|
||||
return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
|
||||
return numberMap[match];
|
||||
});
|
||||
},
|
||||
postformat: function postformat(string) {
|
||||
return string.replace(/\d/g, function (match) {
|
||||
return symbolMap[match];
|
||||
});
|
||||
},
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
formats: {
|
||||
LT: 'A h:mm সময়',
|
||||
LTS: 'A h:mm:ss সময়',
|
||||
L: 'DD/MM/YYYY',
|
||||
LL: 'D MMMM YYYY',
|
||||
LLL: 'D MMMM YYYY, A h:mm সময়',
|
||||
LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'
|
||||
},
|
||||
relativeTime: {
|
||||
future: '%s পরে',
|
||||
past: '%s আগে',
|
||||
s: 'কয়েক সেকেন্ড',
|
||||
m: 'এক মিনিট',
|
||||
mm: '%d মিনিট',
|
||||
h: 'এক ঘন্টা',
|
||||
hh: '%d ঘন্টা',
|
||||
d: 'এক দিন',
|
||||
dd: '%d দিন',
|
||||
M: 'এক মাস',
|
||||
MM: '%d মাস',
|
||||
y: 'এক বছর',
|
||||
yy: '%d বছর'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
38
Backend/node_modules/dayjs/esm/locale/bo.js
generated
vendored
38
Backend/node_modules/dayjs/esm/locale/bo.js
generated
vendored
|
|
@ -1,38 +0,0 @@
|
|||
// Tibetan [bo]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'bo',
|
||||
weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
|
||||
weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
|
||||
weekdaysMin: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
|
||||
months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
|
||||
monthsShort: 'ཟླ་དང་པོ_ཟླ་གཉིས་པ_ཟླ་གསུམ་པ_ཟླ་བཞི་པ_ཟླ་ལྔ་པ_ཟླ་དྲུག་པ_ཟླ་བདུན་པ_ཟླ་བརྒྱད་པ_ཟླ་དགུ་པ_ཟླ་བཅུ་པ_ཟླ་བཅུ་གཅིག་པ_ཟླ་བཅུ་གཉིས་པ'.split('_'),
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
formats: {
|
||||
LT: 'A h:mm',
|
||||
LTS: 'A h:mm:ss',
|
||||
L: 'DD/MM/YYYY',
|
||||
LL: 'D MMMM YYYY',
|
||||
LLL: 'D MMMM YYYY, A h:mm',
|
||||
LLLL: 'dddd, D MMMM YYYY, A h:mm'
|
||||
},
|
||||
relativeTime: {
|
||||
future: '%s ལ་',
|
||||
past: '%s སྔོན་ལ་',
|
||||
s: 'ཏོག་ཙམ་',
|
||||
m: 'སྐར་མ་གཅིག་',
|
||||
mm: 'སྐར་མ་ %d',
|
||||
h: 'ཆུ་ཚོད་གཅིག་',
|
||||
hh: 'ཆུ་ཚོད་ %d',
|
||||
d: 'ཉིན་གཅིག་',
|
||||
dd: 'ཉིན་ %d',
|
||||
M: 'ཟླ་བ་གཅིག་',
|
||||
MM: 'ཟླ་བ་ %d',
|
||||
y: 'ལོ་གཅིག་',
|
||||
yy: 'ལོ་ %d'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
93
Backend/node_modules/dayjs/esm/locale/br.js
generated
vendored
93
Backend/node_modules/dayjs/esm/locale/br.js
generated
vendored
|
|
@ -1,93 +0,0 @@
|
|||
// Breton [br]
|
||||
import dayjs from '../index';
|
||||
|
||||
function lastNumber(number) {
|
||||
if (number > 9) {
|
||||
return lastNumber(number % 10);
|
||||
}
|
||||
|
||||
return number;
|
||||
}
|
||||
|
||||
function softMutation(text) {
|
||||
var mutationTable = {
|
||||
m: 'v',
|
||||
b: 'v',
|
||||
d: 'z'
|
||||
};
|
||||
return mutationTable[text.charAt(0)] + text.substring(1);
|
||||
}
|
||||
|
||||
function mutation(text, number) {
|
||||
if (number === 2) {
|
||||
return softMutation(text);
|
||||
}
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
function relativeTimeWithMutation(number, withoutSuffix, key) {
|
||||
var format = {
|
||||
mm: 'munutenn',
|
||||
MM: 'miz',
|
||||
dd: 'devezh'
|
||||
};
|
||||
return number + " " + mutation(format[key], number);
|
||||
}
|
||||
|
||||
function specialMutationForYears(number) {
|
||||
/* istanbul ignore next line */
|
||||
switch (lastNumber(number)) {
|
||||
case 1:
|
||||
case 3:
|
||||
case 4:
|
||||
case 5:
|
||||
case 9:
|
||||
return number + " bloaz";
|
||||
|
||||
default:
|
||||
return number + " vloaz";
|
||||
}
|
||||
}
|
||||
|
||||
var locale = {
|
||||
name: 'br',
|
||||
weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
|
||||
months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
|
||||
weekStart: 1,
|
||||
weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
|
||||
monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
|
||||
weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
formats: {
|
||||
LT: 'h[e]mm A',
|
||||
LTS: 'h[e]mm:ss A',
|
||||
L: 'DD/MM/YYYY',
|
||||
LL: 'D [a viz] MMMM YYYY',
|
||||
LLL: 'D [a viz] MMMM YYYY h[e]mm A',
|
||||
LLLL: 'dddd, D [a viz] MMMM YYYY h[e]mm A'
|
||||
},
|
||||
relativeTime: {
|
||||
future: 'a-benn %s',
|
||||
past: '%s ʼzo',
|
||||
s: 'un nebeud segondennoù',
|
||||
m: 'ur vunutenn',
|
||||
mm: relativeTimeWithMutation,
|
||||
h: 'un eur',
|
||||
hh: '%d eur',
|
||||
d: 'un devezh',
|
||||
dd: relativeTimeWithMutation,
|
||||
M: 'ur miz',
|
||||
MM: relativeTimeWithMutation,
|
||||
y: 'ur bloaz',
|
||||
yy: specialMutationForYears
|
||||
},
|
||||
meridiem: function meridiem(hour) {
|
||||
return hour < 12 ? 'a.m.' : 'g.m.';
|
||||
} // a-raok merenn | goude merenn
|
||||
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
24
Backend/node_modules/dayjs/esm/locale/bs.js
generated
vendored
24
Backend/node_modules/dayjs/esm/locale/bs.js
generated
vendored
|
|
@ -1,24 +0,0 @@
|
|||
// Bosnian [bs]
|
||||
import dayjs from '../index';
|
||||
var locale = {
|
||||
name: 'bs',
|
||||
weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
|
||||
months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
|
||||
weekStart: 1,
|
||||
weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
|
||||
monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
|
||||
weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
|
||||
ordinal: function ordinal(n) {
|
||||
return n;
|
||||
},
|
||||
formats: {
|
||||
LT: 'H:mm',
|
||||
LTS: 'H:mm:ss',
|
||||
L: 'DD.MM.YYYY',
|
||||
LL: 'D. MMMM YYYY',
|
||||
LLL: 'D. MMMM YYYY H:mm',
|
||||
LLLL: 'dddd, D. MMMM YYYY H:mm'
|
||||
}
|
||||
};
|
||||
dayjs.locale(locale, null, true);
|
||||
export default locale;
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue