From dc6c7494973cec9fd5fd63586027f2878d3417ae Mon Sep 17 00:00:00 2001 From: Samet Date: Tue, 9 May 2023 18:28:52 +0300 Subject: [PATCH] feat: created endpoints to fetch categories --- .DS_Store | Bin 0 -> 6148 bytes .env.sample | 6 +- .eslintrc.json | 3 - .gitattributes | 2 - .gitignore | 38 +- .prettierignore | 5 +- build/env.js | 29 + build/index.js | 25 + build/lib/openai/index.js | 47 + build/lib/pinecone/index.js | 114 + build/lib/shopify/index.js | 62 + build/routes/index.js | 21 + build/routes/resolvers.js | 154 + build/utils/index.js | 11 + lib/vector/.env.sample | 5 - lib/vector/.gitignore | 2 - lib/vector/create.ts | 58 - lib/vector/file/categories.csv | 52 - lib/vector/file/categories.jsonl | 40 - lib/vector/file/index.ts | 16 - lib/vector/file/products.xlsx | Bin 186116 -> 0 bytes lib/vector/package-lock.json | 461 --- lib/vector/package.json | 30 - lib/vector/query.ts | 88 - next.config.js | 8 - nodemon.json | 8 + package-lock.json | 4708 +++++----------------- package.json | 47 +- postcss.config.js | 6 - public/next.svg | 1 - public/vercel.svg | 1 - src/app/api/hello/route.ts | 3 - src/app/favicon.ico | Bin 25931 -> 0 bytes src/app/globals.css | 27 - src/app/layout.tsx | 21 - src/app/page.tsx | 116 - lib/vector/env.mjs => src/env.ts | 5 +- src/index.ts | 15 + {lib/vector => src/lib}/openai/index.ts | 3 +- src/lib/pinecone/index.ts | 59 + {lib/vector => src/lib}/shopify/index.ts | 0 src/routes/index.ts | 27 + src/routes/resolvers.ts | 89 + src/utils/index.ts | 8 + tailwind.config.js | 18 - tsconfig.json | 32 +- 46 files changed, 1761 insertions(+), 4710 deletions(-) create mode 100644 .DS_Store delete mode 100644 .eslintrc.json delete mode 100644 .gitattributes create mode 100644 build/env.js create mode 100644 build/index.js create mode 100644 build/lib/openai/index.js create mode 100644 build/lib/pinecone/index.js create mode 100644 build/lib/shopify/index.js create mode 100644 build/routes/index.js create mode 100644 build/routes/resolvers.js create mode 100644 build/utils/index.js delete mode 100644 lib/vector/.env.sample delete mode 100644 lib/vector/.gitignore delete mode 100644 lib/vector/create.ts delete mode 100644 lib/vector/file/categories.csv delete mode 100644 lib/vector/file/categories.jsonl delete mode 100644 lib/vector/file/index.ts delete mode 100644 lib/vector/file/products.xlsx delete mode 100644 lib/vector/package-lock.json delete mode 100644 lib/vector/package.json delete mode 100644 lib/vector/query.ts delete mode 100644 next.config.js create mode 100644 nodemon.json delete mode 100644 postcss.config.js delete mode 100644 public/next.svg delete mode 100644 public/vercel.svg delete mode 100644 src/app/api/hello/route.ts delete mode 100644 src/app/favicon.ico delete mode 100644 src/app/globals.css delete mode 100644 src/app/layout.tsx delete mode 100644 src/app/page.tsx rename lib/vector/env.mjs => src/env.ts (82%) create mode 100644 src/index.ts rename {lib/vector => src/lib}/openai/index.ts (95%) create mode 100644 src/lib/pinecone/index.ts rename {lib/vector => src/lib}/shopify/index.ts (100%) create mode 100644 src/routes/index.ts create mode 100644 src/routes/resolvers.ts create mode 100644 src/utils/index.ts delete mode 100644 tailwind.config.js diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7b069d6b5be59a5243b28f0a1f0ed83f2b39dbfd GIT binary patch literal 6148 zcmeHK!AiqG5Z!HS(@=yS6g@6@EtnQX!Apqs2aM=Jr6#s$FlI}VnnNk%sz2nP_&v_- zZpGSq6BV6-*|$48lQ1t~XNNJyz44&KSc@^%07b0WFf0+=M_rJLvD5%LJ|i22u?%7L z9F7*e$?zK)z;9P&8B5u9SiJv!ag^nb^TI3D+DhHBY^!Nq`nR(1^B^B*UXY&S>O{&o zoXvyqG#VED*4m*=@*qlvsS1b&LvXn`i;{sXJULDVnTqxGhHW?Oersbg>Fjme!kM`quWrasMv9PvoO!ki*ZWWYypdo?v2 zem>Ez)A@o#=TiER?u-yZVt^PR29`5mj?qSQ`8HXJ0b<}EGl1uV07Y~SmKxR30fTA* z0Pz~B1m@UFV2m*68Z0%!4hYwwfI5_$7K7_>unXho8Z0&HaK=sZ!Ofew=}@?OJ3L<~ zcg9_fG!g^Ez&rz0y=-CqKl;4?pAVuHF+dFbDF%40=l48F$<)?`;fl%uEA0xSU~6^plG0h82DBOUIA-ohNA!g literal 0 HcmV?d00001 diff --git a/.env.sample b/.env.sample index 1e0e0a1..87ccfe7 100644 --- a/.env.sample +++ b/.env.sample @@ -1 +1,5 @@ -NEXT_PUBLIC_SITE_URL = xxxxxxxxxxxxxxxxxxxxxxx \ No newline at end of file +OPENAI_API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +OPENAI_ORGANIZATION="xxxxxxx" +PINECONE_API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" +PINECONE_ENVIRONMENT="xxxxxxxxxxxx" +PINECONE_INDEX_NAME="xxxx" \ No newline at end of file diff --git a/.eslintrc.json b/.eslintrc.json deleted file mode 100644 index bffb357..0000000 --- a/.eslintrc.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "next/core-web-vitals" -} diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index dfe0770..0000000 --- a/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto diff --git a/.gitignore b/.gitignore index 8f322f0..46ce681 100644 --- a/.gitignore +++ b/.gitignore @@ -1,35 +1,3 @@ -# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. - -# dependencies -/node_modules -/.pnp -.pnp.js - -# testing -/coverage - -# next.js -/.next/ -/out/ - -# production -/build - -# misc -.DS_Store -*.pem - -# debug -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# local env files -.env*.local - -# vercel -.vercel - -# typescript -*.tsbuildinfo -next-env.d.ts +node_modules +.env +static \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index 7d077a3..a97299f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,7 +1,4 @@ .yarn -.next -dist node_modules package.json -.github -public/assets \ No newline at end of file +.github \ No newline at end of file diff --git a/build/env.js b/build/env.js new file mode 100644 index 0000000..abf3e53 --- /dev/null +++ b/build/env.js @@ -0,0 +1,29 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.env = void 0; +var env_nextjs_1 = require("@t3-oss/env-nextjs"); +var zod_1 = require("zod"); +var dotenv_1 = __importDefault(require("dotenv")); +dotenv_1.default.config(); +exports.env = (0, env_nextjs_1.createEnv)({ + server: { + OPENAI_API_KEY: zod_1.z.string().nonempty(), + PINECONE_API_KEY: zod_1.z.string().nonempty(), + PINECONE_ENVIRONMENT: zod_1.z.string().nonempty(), + PINECONE_INDEX_NAME: zod_1.z.string().nonempty(), + OPENAI_ORGANIZATION: zod_1.z.string().nonempty(), + PORT: zod_1.z.string().nonempty().default("6006"), + }, + client: {}, + runtimeEnv: { + OPENAI_API_KEY: process.env.OPENAI_API_KEY, + OPENAI_ORGANIZATION: process.env.OPENAI_ORGANIZATION, + PINECONE_API_KEY: process.env.PINECONE_API_KEY, + PINECONE_ENVIRONMENT: process.env.PINECONE_ENVIRONMENT, + PINECONE_INDEX_NAME: process.env.PINECONE_INDEX_NAME, + PORT: process.env.PORT, + } +}); diff --git a/build/index.js b/build/index.js new file mode 100644 index 0000000..29e96a0 --- /dev/null +++ b/build/index.js @@ -0,0 +1,25 @@ +"use strict"; +var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { + if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var express_1 = __importDefault(require("express")); +var env_1 = require("./env"); +var routes_1 = __importDefault(require("./routes")); +var app = (0, express_1.default)(); +app.use(express_1.default.json()); +routes_1.default.forEach(function (route) { + app[route.method].apply(app, __spreadArray(__spreadArray([route.path], route.middlewares, false), [route.handler], false)); +}); +app.listen(env_1.env.PORT, function () { + console.log("Server running on port ".concat(env_1.env.PORT)); +}); diff --git a/build/lib/openai/index.js b/build/lib/openai/index.js new file mode 100644 index 0000000..a42b252 --- /dev/null +++ b/build/lib/openai/index.js @@ -0,0 +1,47 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.produceKeywords = exports.createEmbedding = void 0; +var env_1 = require("../../env"); +var node_fetch_1 = __importDefault(require("node-fetch")); +var createEmbedding = function (_a) { + var input = _a.input; + var raw = JSON.stringify({ + "model": "text-embedding-ada-002", + "input": input + }); + return (0, node_fetch_1.default)("https://api.openai.com/v1/embeddings", { + method: 'POST', + headers: { + "Authorization": "Bearer ".concat(env_1.env.OPENAI_API_KEY), + "Content-Type": "application/json" + }, + body: raw, + redirect: 'follow' + }).then(function (response) { return response.json(); }) + .catch(function (error) { return console.log('error', error); }); +}; +exports.createEmbedding = createEmbedding; +var produceKeywords = function (_a) { + var input = _a.input, lang = _a.lang, model = _a.model; + var raw = JSON.stringify({ + prompt: "".concat(input, "\n Extract 3-level categories from this product name FOR SHOPIFY CATEGORY TAXONOMY. Return only your output. Split levels with > character. Output language: ").concat(lang.toUpperCase()), + temperature: 0.2, + max_tokens: 100, + top_p: 1, + frequency_penalty: 0.8, + presence_penalty: 0, + }); + return (0, node_fetch_1.default)("https://api.openai.com/v1/engines/".concat(model, "/completions"), { + method: 'POST', + headers: { + "Authorization": "Bearer ".concat(env_1.env.OPENAI_API_KEY), + "Content-Type": "application/json" + }, + body: raw + }).then(function (response) { return response.json(); }) + .catch(function (error) { return console.log('error', error); }); +}; +exports.produceKeywords = produceKeywords; diff --git a/build/lib/pinecone/index.js b/build/lib/pinecone/index.js new file mode 100644 index 0000000..b3326d7 --- /dev/null +++ b/build/lib/pinecone/index.js @@ -0,0 +1,114 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deleteNamespace = exports.createCategoryVector = exports.searchInVectors = void 0; +var env_1 = require("../../env"); +var pinecone_1 = require("@pinecone-database/pinecone"); +var openai_1 = require("../openai"); +var pinecone = new pinecone_1.PineconeClient(); +var client = pinecone.init({ + environment: env_1.env.PINECONE_ENVIRONMENT, + apiKey: env_1.env.PINECONE_API_KEY +}); +var index = "taxonomy"; +var searchInVectors = function (namespace, vector) { return __awaiter(void 0, void 0, void 0, function () { + var pineconeIndex; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, client]; + case 1: + _a.sent(); + pineconeIndex = pinecone.Index(index); + return [2 /*return*/, pineconeIndex.query({ + queryRequest: { + namespace: namespace, + topK: 10, + vector: vector, + includeMetadata: true + } + })]; + } + }); +}); }; +exports.searchInVectors = searchInVectors; +var createCategoryVector = function (namespace, id, name) { return __awaiter(void 0, void 0, void 0, function () { + var response, upsertRequest, pineconeIndex; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, client]; + case 1: + _a.sent(); + return [4 /*yield*/, (0, openai_1.createEmbedding)({ input: name })]; + case 2: + response = _a.sent(); + if (!(response === null || response === void 0 ? void 0 : response.data)) { + return [2 /*return*/, null]; + } + upsertRequest = { + namespace: namespace, + vectors: [{ + id: String(namespace + "_" + id), + metadata: { + id: String(id), + categoryName: name + }, + values: response.data[0].embedding + }], + }; + pineconeIndex = pinecone.Index(index); + return [2 /*return*/, pineconeIndex.upsertRaw({ upsertRequest: upsertRequest })]; + } + }); +}); }; +exports.createCategoryVector = createCategoryVector; +var deleteNamespace = function (namespace) { return __awaiter(void 0, void 0, void 0, function () { + var pineconeIndex; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, client]; + case 1: + _a.sent(); + pineconeIndex = pinecone.Index(index); + return [2 /*return*/, pineconeIndex.delete1({ + namespace: namespace, + deleteAll: true, + })]; + } + }); +}); }; +exports.deleteNamespace = deleteNamespace; diff --git a/build/lib/shopify/index.js b/build/lib/shopify/index.js new file mode 100644 index 0000000..cafce49 --- /dev/null +++ b/build/lib/shopify/index.js @@ -0,0 +1,62 @@ +"use strict"; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getCategoryTaxonomy = void 0; +var node_fetch_1 = __importDefault(require("node-fetch")); +var getCategoryTaxonomy = function (params) { return __awaiter(void 0, void 0, void 0, function () { + var _a, lang, data; + return __generator(this, function (_b) { + switch (_b.label) { + case 0: + _a = (params || {}).lang, lang = _a === void 0 ? "en" : _a; + return [4 /*yield*/, (0, node_fetch_1.default)("https://help.shopify.com/txt/product_taxonomy/".concat(lang, ".txt")) + .then(function (response) { return response.text(); })]; + case 1: + data = _b.sent(); + return [2 /*return*/, data.split("\n") + .map(function (line) { + var _a = line.split(" - "), categoryId = _a[0], categoryName = _a[1]; + return { categoryId: categoryId, categoryName: categoryName }; + }).slice(1)]; + } + }); +}); }; +exports.getCategoryTaxonomy = getCategoryTaxonomy; diff --git a/build/routes/index.js b/build/routes/index.js new file mode 100644 index 0000000..e8a5f31 --- /dev/null +++ b/build/routes/index.js @@ -0,0 +1,21 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +var resolvers_1 = require("./resolvers"); +var multer_1 = __importDefault(require("multer")); +var storage = multer_1.default.memoryStorage(); +var upload = (0, multer_1.default)({ storage: storage }); +var routes = [{ + path: '/category/:platform', + method: 'get', + middlewares: [], + handler: resolvers_1.queryCategory + }, { + path: '/category/:platform', + method: 'post', + middlewares: [upload.single("file")], + handler: resolvers_1.createVectors + }]; +exports.default = routes; diff --git a/build/routes/resolvers.js b/build/routes/resolvers.js new file mode 100644 index 0000000..e670663 --- /dev/null +++ b/build/routes/resolvers.js @@ -0,0 +1,154 @@ +"use strict"; +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +var __generator = (this && this.__generator) || function (thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (g && (g = 0, op[0] && (_ = 0)), _) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createVectors = exports.queryCategory = void 0; +var pinecone_1 = require("../lib/pinecone"); +var openai_1 = require("../lib/openai"); +var utils_1 = require("../utils"); +var throat_1 = __importDefault(require("throat")); +var uuid_1 = require("uuid"); +var availablePlatforms = [ + "shopify", + "amazon", + "ciceksepeti_test", + "hepsiburada", + "trendyol" +]; +var queryCategory = function (req, res) { return __awaiter(void 0, void 0, void 0, function () { + var _a, input, deepSearch, platform, embedding, vector, response, uid, initial_matches_1, temp_namespace_1; + var _b; + return __generator(this, function (_c) { + switch (_c.label) { + case 0: + if (availablePlatforms.includes(req.params.platform) === false) { + return [2 /*return*/, res.status(400).json({ + success: false, data: null, + error: 'The given platform is not available. Available platforms' + availablePlatforms.join(', ') + })]; + } + if (!req.query.input) { + return [2 /*return*/, res.status(400).json({ success: false, data: null, error: 'Input param is required' })]; + } + _a = req.query, input = _a.input, deepSearch = _a.deepSearch; + platform = req.params.platform; + return [4 /*yield*/, (0, openai_1.createEmbedding)({ input: String(input) })]; + case 1: + embedding = _c.sent(); + vector = embedding.data[0].embedding; + return [4 /*yield*/, (0, pinecone_1.searchInVectors)(platform, vector)]; + case 2: + response = _c.sent(); + if (!(deepSearch === "true")) return [3 /*break*/, 5]; + uid = (0, uuid_1.v4)(); + if (!(response === null || response === void 0 ? void 0 : response.matches)) + return [2 /*return*/, res.json({ success: false, data: null, error: "No matches found" })]; + initial_matches_1 = response.matches; + temp_namespace_1 = "temp_".concat(uid); + return [4 /*yield*/, Promise.all((initial_matches_1).map(function (category, index) { + var deepestCategory = category.metadata.categoryName.split('>').slice(-1)[0].trim(); + return (0, pinecone_1.createCategoryVector)(temp_namespace_1, String(category.metadata.id), deepestCategory); + }))]; + case 3: + _c.sent(); + return [4 /*yield*/, (0, pinecone_1.searchInVectors)(temp_namespace_1, vector)]; + case 4: + response = _c.sent(); + response.matches = (_b = response.matches) === null || _b === void 0 ? void 0 : _b.map(function (match) { + var initial_match = initial_matches_1.find(function (m) { return m.metadata.id === match.metadata.id; }); + return __assign(__assign({}, match), { metadata: __assign(__assign({}, match.metadata), { categoryName: initial_match.metadata.categoryName }) }); + }); + (0, pinecone_1.deleteNamespace)(temp_namespace_1); + _c.label = 5; + case 5: return [2 /*return*/, res.json({ + success: true, + data: response.matches, + error: null + })]; + } + }); +}); }; +exports.queryCategory = queryCategory; +var createVectors = function (req, res) { return __awaiter(void 0, void 0, void 0, function () { + var platform, fileContent, categories; + return __generator(this, function (_a) { + if (availablePlatforms.includes(req.params.platform) === false) { + return [2 /*return*/, res.status(400).json({ + success: false, data: null, + error: 'The given platform is not available. Available platforms' + availablePlatforms.join(', ') + })]; + } + if (!req.file) + return [2 /*return*/, res.status(400).json({ error: "You didn't provide a file" })]; + platform = req.params.platform; + fileContent = req.file.buffer.toString('utf-8'); + categories = (0, utils_1.parseCSV)(fileContent); + categories.forEach((0, throat_1.default)(50, function (category, index) { return __awaiter(void 0, void 0, void 0, function () { + var response; + return __generator(this, function (_a) { + switch (_a.label) { + case 0: return [4 /*yield*/, (0, pinecone_1.createCategoryVector)(platform, category.id, category.name)]; + case 1: + response = _a.sent(); + if (!response || response.raw.status !== 200) { + console.log("ER: [".concat(index + 1, "/").concat(categories.length, "] ").concat(category.name, " couldn't be created")); + } + else { + console.log("OK: [".concat(index + 1, "/").concat(categories.length, "] ").concat(category.name, " is created")); + } + return [2 /*return*/]; + } + }); + }); })); + return [2 /*return*/, res.json({ success: true, data: "OK", error: null })]; + }); +}); }; +exports.createVectors = createVectors; diff --git a/build/utils/index.js b/build/utils/index.js new file mode 100644 index 0000000..0089e6c --- /dev/null +++ b/build/utils/index.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.parseCSV = void 0; +var parseCSV = function (csv) { + var _a = csv.split("\n"), headers = _a[0], lines = _a.slice(1); + return lines.map(function (line) { + var _a = line.split("\t"), id = _a[0], name = _a[1]; + return { id: id, name: name.trim() }; + }); +}; +exports.parseCSV = parseCSV; diff --git a/lib/vector/.env.sample b/lib/vector/.env.sample deleted file mode 100644 index 87ccfe7..0000000 --- a/lib/vector/.env.sample +++ /dev/null @@ -1,5 +0,0 @@ -OPENAI_API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -OPENAI_ORGANIZATION="xxxxxxx" -PINECONE_API_KEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -PINECONE_ENVIRONMENT="xxxxxxxxxxxx" -PINECONE_INDEX_NAME="xxxx" \ No newline at end of file diff --git a/lib/vector/.gitignore b/lib/vector/.gitignore deleted file mode 100644 index 1dcef2d..0000000 --- a/lib/vector/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules -.env \ No newline at end of file diff --git a/lib/vector/create.ts b/lib/vector/create.ts deleted file mode 100644 index 708f74a..0000000 --- a/lib/vector/create.ts +++ /dev/null @@ -1,58 +0,0 @@ -import { PineconeClient } from "@pinecone-database/pinecone"; -import { Configuration, OpenAIApi } from "openai"; -import { env } from "./env.mjs"; -import { getCategoryTaxonomy } from "./shopify/index.js"; -import { createEmbedding } from "./openai/index.js"; -import fs from "fs"; -import throat from "throat"; - -const configuration = new Configuration({ - apiKey: env.OPENAI_API_KEY, - organization: env.OPENAI_ORGANIZATION, -}); -const openai = new OpenAIApi(configuration); - -type Vector = { - id: string - metadata: { - [key: string]: string; - }, - values: Array; -} - - -(async () => { - const pinecone = new PineconeClient(); - await pinecone.init({ environment: env.PINECONE_ENVIRONMENT, apiKey: env.PINECONE_API_KEY }); - const pineconeIndex = pinecone.Index("shopifytaxonomy"); - - const lang = "tr"; - const categories = await getCategoryTaxonomy({ lang }); - categories - .filter(category => category.categoryName?.includes(">") === false) - .map(throat(5, async (category, index) => { - const response: any = await createEmbedding({ - input: category.categoryName - }); - - const upsertRequest = { - vectors: [{ - id: String(index + 6000), - metadata: { - id: String(category.categoryId), - categoryName: category.categoryName - }, - values: response.data[0].embedding - }], - namespace: `shopify-main-taxonomy-${lang}`, - }; - - const upsertResponse = await pineconeIndex.upsertRaw({ upsertRequest }); - if (upsertResponse.raw.status !== 200) { - console.log(upsertResponse.raw.statusText) - return null; - } - console.log(`(${index + 1}/${categories.length}) ― created vector for [${category.categoryName}]`) - return null; - })) -})(); \ No newline at end of file diff --git a/lib/vector/file/categories.csv b/lib/vector/file/categories.csv deleted file mode 100644 index 710a646..0000000 --- a/lib/vector/file/categories.csv +++ /dev/null @@ -1,52 +0,0 @@ -Handle,Predict 1,Predict 2,Predict 3,Predict 4,Predict 5,Has Description -ahsap-topuk-torpusu,Sağlık ve Güzellik > Kişisel Bakım > Kozmetik > Kozmetik Aletleri > Cilt Bakım Aletleri > Ayak Törpüleri,Sağlık ve Güzellik > Kişisel Bakım > Sırt Bakımı,Sağlık ve Güzellik > Kişisel Bakım > Ayak Bakımı,Sağlık ve Güzellik > Kişisel Bakım > Kozmetik > Tırnak Bakımı,Sağlık ve Güzellik > Mücevher Temizlik ve Bakımı,true -bokoma-kafa-masaj-aleti,Sağlık ve Güzellik > Kişisel Bakım > Masaj ve Rahatlama > Masaj Aletleri,Sağlık ve Güzellik > Kişisel Bakım > Masaj ve Rahatlama > Masaj Aletleri > Masaj Minderleri,Sağlık ve Güzellik > Kişisel Bakım > Masaj ve Rahatlama > Masaj Aletleri > Elektrikli Masaj Aletleri,Sağlık ve Güzellik > Kişisel Bakım > Masaj ve Rahatlama > Masaj Aletleri > Manuel Masaj Araçları,Sağlık ve Güzellik > Kişisel Bakım > Masaj ve Rahatlama > Masaj Masaları,true -speed-out-hasar-gormus-vida-cikarici,Hırdavat > Yapı Malzemeleri > Yalıtım,Hırdavat > Tesisat Aksesuarları > Teçhizat Bağlama Elemanları > Vidalar,Ev ve Bahçe > Acil Durum Hazırlığı > Mobilya Sabitleyiciler,Hırdavat > Sıhhi Tesisat > Sıhhi Tesisat Bağlantı Parçaları > Duvara Monte Taşıyıcılar ve Montaj Askıları,Ev ve Bahçe > Ev Aleti Aksesuarları > Vantilatör Aksesuarları,true -tukenmez-buz-kupleri-20-adet,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Gereçleri ve Aletleri > Buz Küpü Kalıpları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri > Buz Yapıcılar,İş ve Endüstri > Yemek Servisi > Buz Kutuları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri > Buzdolapları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aleti Aksesuarları > Buz Yapıcı Aksesuarları,true -cekic-parmak-yastigi,Sağlık ve Güzellik > Kişisel Bakım > Kozmetik > Kozmetik Aletleri > Tırnak Bakım Aletleri > Manikür ve Pedikür Parmak Ayraçları,Sağlık ve Güzellik > Kişisel Bakım > Kozmetik > Kozmetik Aletleri > Makyaj Aletleri > Kirpik Kıvırıcılar,Sağlık ve Güzellik > Kişisel Bakım > Kulak Bakımı > Kulak Şırıngaları,Hırdavat > Alet Aksesuarları > Çekiç Aksesuarları,Sağlık ve Güzellik > Kişisel Bakım > Kozmetik > Kozmetik Aletleri,true -duzgun-sac-kesme-terazisi-2li,Sağlık ve Güzellik > Kişisel Bakım > Saç Bakımı > Saç Şekillendirme Aletleri,Hırdavat > Aletler > Alet Bıçakları,Sağlık ve Güzellik > Kişisel Bakım > Saç Bakımı > Saç Şekillendirme Aletleri > Saç Düzleştiriciler,Sağlık ve Güzellik > Kişisel Bakım > Saç Bakımı > Saç Şekillendirme Aletleri > Saç Maşaları,Hırdavat > Alet Aksesuarları > Kesici Aksesuarları,true -lavabo-acici-turbo-sink-snake-lavabo-acici-2-adet,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Gereçleri ve Aletleri > Lavabo Kenarı Düzenleyicileri,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Ev Temizlik Ürünleri > Tuvalet Temizleyicileri,Hırdavat > Sıhhi Tesisat > Su Tahliye Teçhizatı ve Parçaları > Lavabo Aksesuarları,Hırdavat > Sıhhi Tesisat > Su Tahliye Teçhizatı ve Parçaları > Lavabo Aksesuarları > Lavabo Ayakları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Gereçleri ve Aletleri > Lavabo Paspasları ve Izgaraları,true -akilli-anahtar-organizeri-12-anahtar-hazneli-anahtarlik-clever-key-smart,Hırdavat > Kilitler ve Anahtarlar > Anahtar Başlıkları,Hırdavat > Aletler > Alet Anahtarları,Elektronik > Elektronik Alet Aksesuarları > Ses ve Görüntü Ayırıcıları ve Anahtarları,Hırdavat > Kilitler ve Anahtarlar > Ham Anahtarlar,Hırdavat > Kilitler ve Anahtarlar,true -bel-ve-kalca-form-aleti-waist-twisting-disc,Spor Malzemeleri > Egzersiz ve Fitness > El Egzersiz Aletleri,Spor Malzemeleri > Egzersiz ve Fitness > Egzersiz Bantları,Spor Malzemeleri > Egzersiz ve Fitness > Egzersiz Makineleri ve Ekipman Setleri,Spor Malzemeleri > Egzersiz ve Fitness > Egzersiz Sehpaları,Spor Malzemeleri > Egzersiz ve Fitness > Denge Eğitim Aletleri,true -mikrofiber-duster-toz-alici-asorti,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Ev Temizlik Ürünleri > Kumaş ve Döşeme Temizleyiciler,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Kumaş ve Döşeme Koruyucular,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Ev Temizlik Ürünleri,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Ev Temizlik Ürünleri > Tufal ve Kireç Gidericiler,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri,true -topuklu-ayakkabi-altina-yapisan-kaydirmaz-tabanlik,Kıyafet ve Aksesuarlar > Ayakkabı Aksesuarları > Ayakkabı Bağcıkları,Oyuncaklar ve Oyunlar > Oyuncaklar > Spor Oyuncakları > Ayak topları,Kıyafet ve Aksesuarlar > Ayakkabı Aksesuarları,Kıyafet ve Aksesuarlar > Ayakkabı Aksesuarları > Ayakkabı Astarları,Kıyafet ve Aksesuarlar > Kostümler ve Aksesuarlar > Kostüm Ayakkabıları,true -ahsap-denge-oyunu-jenga-54-parca,Oyuncaklar ve Oyunlar > Oyunlar > İskambil Oyunları,Oyuncaklar ve Oyunlar > Oyuncaklar > Yapı Oyuncakları > Tahta Bloklar,Oyuncaklar ve Oyunlar > Oyuncaklar > Yapı Oyuncakları > Köpük Bloklar,Oyuncaklar ve Oyunlar > Oyuncaklar > Yapı Oyuncakları > Birbirine Geçen Bloklar,Oyuncaklar ve Oyunlar > Oyunlar > Dizme Oyunları,true -cekcekli-pratik-cam-silme-aparati-kisa,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Ev Temizlik Ürünleri > Cam ve Yüzey Temizleyiciler,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Ev Temizlik Ürünleri > Cam ve Yüzey Temizleyiciler > Cam Temizleyiciler,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Ev Temizlik Ürünleri > Cam ve Yüzey Temizleyiciler > Çoklu Yüzey Temizleyicileri,Büro Malzemeleri > Ofis Ekipmanları,Büro Malzemeleri > Ofis Aletleri,true -lcd-ekranli-dijital-isikli-mutfak-tartisi,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aleti Aksesuarları > Yiyecek Öğütücü Aksesuarları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri > Fritözler,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri > Et Dilimleyiciler,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aleti Aksesuarları > Taşınabilir Pişirme Ocağı Aksesuarları,true -ozel-kutulu-mini-dikis-seti,Sanat ve Eğlence > Hobiler ve Sanatsal Çalışmalar > Sanatlar ve El İşleri > Sanat ve El İşi Setleri > Dikiş Setleri,Ev ve Bahçe > Ev Sarf Malzemeleri > Saklama ve Düzenleme > Ev Çekmece Düzenleyicileri,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Çekçekler,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri,Ev ve Bahçe > Ev Sarf Malzemeleri > Saklama ve Düzenleme > Ev Eşyası Saklama Çekmeceleri,true -avometre-dijital-olcu-aleti-multimetre,Elektronik > Elektronik Alet Aksesuarları > Güç > Bataryalar,Elektronik > Elektronik Alet Aksesuarları > Güç > Batarya Aksesuarları,Hırdavat > Alet Aksesuarları > Elektrikli Alet Bataryaları,Elektronik > Elektronik Alet Aksesuarları > Güç > Bataryalar > Fotoğraf Makinesi Bataryaları,Elektronik > Elektronik Alet Aksesuarları > Güç > Bataryalar > Dizüstü Bilgisayar Bataryaları,true -serce-parmak-bunyon-koruyucu-2-adet,Kıyafet ve Aksesuarlar > Ayakkabı Aksesuarları > Ayakkabı Bağcıkları,Kıyafet ve Aksesuarlar > Kıyafet Aksesuarları > Kulak Koruyucular,Kıyafet ve Aksesuarlar > Ayakkabı Aksesuarları,Sağlık ve Güzellik > Kişisel Bakım > Ayak Bakımı > Bunyon Bakımı Malzemeleri,Kıyafet ve Aksesuarlar > Ayakkabı Aksesuarları > Galoşlar,true -bisiklet-tamir-anahtari-15-in-1-06mm-17mm,Spor Malzemeleri > Açık Hava Etkinlikleri > Bisiklet > Bisiklet Aksesuarları > Bisiklet Kilitleri,Spor Malzemeleri > Açık Hava Etkinlikleri > Bisiklet > Bisiklet Parçaları > Bisiklet Sele Boruları,Spor Malzemeleri > Açık Hava Etkinlikleri > Bisiklet > Bisiklet Aksesuarları > Bisiklet Sele Süngerleri ve Koltuk Kılıfları,Spor Malzemeleri > Açık Hava Etkinlikleri > Bisiklet > Bisiklet Parçaları > Bisiklet Sele Kelepçeleri,Spor Malzemeleri > Açık Hava Etkinlikleri > Bisiklet > Bisiklet Aksesuarları > Bisiklet Aynaları,true -ahsap-oda-termometresi,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Termometreleri,Hırdavat > Aletler > Ölçüm Aletleri ve Sensörler > Nem Ölçerler,Ev ve Bahçe > Ev Aleti Aksesuarları > Termosifon Aksesuarları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Gereçleri ve Aletleri > Pişirme Termometresi Aksesuarları,Ev ve Bahçe > Ev Aleti Aksesuarları > Hava Arıtıcı Aksesuarları,true -sunger-hazneli-sivi-sabunluk,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aleti Aksesuarları > Buzdolabı Aksesuarları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aleti Aksesuarları > Su Soğutucu Aksesuarları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aleti Aksesuarları > Vakumlu Saklama Aksesuarları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aleti Aksesuarları > Şarap Dolabı Aksesuarları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aleti Aksesuarları > Su Soğutucu Aksesuarları > Su Soğutucu Şişeleri,true -deterjan-hazneli-bulasik-fircasi,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri > Bulaşık Makineleri,Hırdavat > Aletler > Baca Temizlik Fırçaları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri > Buz Kırıcılar ve Tıraşlayıcılar,Hırdavat > Aletler > Boru Temizleme Fırçaları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri > Buzdolapları,true -sungermatik-3-adet-bulasik-sungeri,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Ev Temizlik Ürünleri > Bulaşık Deterjan ve Sabunları,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Ev Temizlik Ürünleri > Bulaşık Makinesi Deterjanları,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Ev Temizlik Ürünleri,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Süpürgeler,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Süngerler ve Ovma Bezleri,true -gidi-giderici-neckline-slimmer,Sağlık ve Güzellik > Kişisel Bakım > Kozmetik > Cilt Bakımı > Yüz Temizleyiciler,Sağlık ve Güzellik > Kişisel Bakım > Kozmetik > Cilt Bakımı > Losyon ve Nemlendirici,Sağlık ve Güzellik > Kişisel Bakım > Kozmetik > Cilt Bakımı > Yüz Temizleme Setleri,Sağlık ve Güzellik > Kişisel Bakım > Kozmetik > Cilt Bakımı > Dudak Merhem ve Tedavileri > Dudak Nemlendiricileri,Sağlık ve Güzellik > Kişisel Bakım > Kozmetik > Cilt Bakımı > Makyaj Temizleyiciler,true -teleskopik-cekcekli-cam-silme-aparati-uzun,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Ev Temizlik Ürünleri > Cam ve Yüzey Temizleyiciler,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Ev Temizlik Ürünleri > Cam ve Yüzey Temizleyiciler > Cam Temizleyiciler,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Ev Temizlik Ürünleri > Cam ve Yüzey Temizleyiciler > Çoklu Yüzey Temizleyicileri,Hırdavat > Yapı Malzemeleri > Cam,Hırdavat > Aletler > Kesiciler > Cam Kesiciler,true -paslanmaz-burun-makasi,Sağlık ve Güzellik > Kişisel Bakım > Kulak Bakımı > Kulak Mumları,Sağlık ve Güzellik > Kişisel Bakım > Ağız Bakımı > Diş Macunları,Sağlık ve Güzellik > Sağlık Hizmetleri > İlaç Kutuları,Sağlık ve Güzellik > Kişisel Bakım > Ağız Bakımı > Kürdanlar,Bebek ve Küçük Çocuk Ürünleri > Bebek Sağlığı > Burun Aspiratörleri,true -kredi-karti-seklinde-cep-fener-lamba,Elektronik > Elektronik Alet Aksesuarları > Bellek > Flash Bellek,Elektronik > Elektronik Alet Aksesuarları,Elektronik > Video > Video Aksesuarları,Hırdavat > Elektrik Sarf Malzemeleri > Elektrik Anahtarları > Aydınlatma Anahtarları,Kameralar ve Optik Malzemeler > Fotoğrafçılık > Işıklandırma ve Stüdyo > Işık Kumandaları > Flaş Reflektörleri,true -mangal-yelpazesi,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aleti Aksesuarları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aleti Aksesuarları > Yiyecek Öğütücü Aksesuarları,Ev ve Bahçe > Mutfak ve Yemek > Yiyecek Saklama Aksesuarları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aleti Aksesuarları > Mikser ve Blender Aksesuarları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri,true -mini-dikis-makinesi-seyahat-tipi,Mobilyalar > Masalar > Dikiş Makinesi Masaları,Hırdavat > Aletler > Yiv Açma Makineleri,Sanat ve Eğlence > Hobiler ve Sanatsal Çalışmalar > Sanatlar ve El İşleri > Sanat ve El İşi Araçları > Kumaş El İşi Makineleri > Dikiş Makineleri,Hırdavat > Aletler > Kumlama Makineleri,Ev ve Bahçe > Ev Aletleri > Çamaşırhane Makineleri > Buharlı Elbise Temizleyiciler,true -pencere-cam-sinekligi-cift-kanat-130x150-cm,Ev ve Bahçe > Dekor > Pencere Dekoru Aksesuarları,Ev ve Bahçe > Dekor > Pencere Dekoru Aksesuarları > Perde Tutucu ve Püskülleri,Ev ve Bahçe > Dekor > Pencere Dekorları,Ev ve Bahçe > Dekor > Pencere Dekorları > Pencere Telleri,Ev ve Bahçe > Dekor > Pencere Dekoru Aksesuarları > Pencere Dekoru Yedek Parçaları,true -esnek-oyuncak-ve-camasir-filesi,Ev ve Bahçe > Ev Aletleri,Ev ve Bahçe > Ev Aleti Aksesuarları,Ev ve Bahçe > Ev Aleti Aksesuarları > Çamaşırhane Makinesi Aksesuarları,Ev ve Bahçe > Çim ve Bahçe > Bahçecilik > Bahçe Aletleri,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Gereçleri ve Aletleri,true -silikon-orta-parmak-koruyucu-2-adet-serce-parmak,Kıyafet ve Aksesuarlar > Kıyafet Aksesuarları > Kulak Koruyucular,Kıyafet ve Aksesuarlar > Ayakkabı Aksesuarları > Ayakkabı Bağcıkları,Ev ve Bahçe > Ev Sarf Malzemeleri > Ayakkabı Bakım ve Aletleri > Keratalar ve Giyim Yardımcıları,Ev ve Bahçe > Ev Sarf Malzemeleri > Ayakkabı Bakım ve Aletleri > Ayakkabı Çantaları,Ev ve Bahçe > Ev Sarf Malzemeleri > Çamaşırhane Sarf Malzemeleri > Kıyafet Koruyucular,true -araba-ici-koltuk-yani-duzenleyici2-adet,Taşıtlar ve Parçalar > Taşıt Parçaları ve Aksesuarlar > Taşıt Saklama ve Kargo > Araç Düzenleyicileri,Taşıtlar ve Parçalar > Taşıt Parçaları ve Aksesuarlar > Taşıt Saklama ve Kargo > Kamyon Kasası Saklama Kutuları ve Düzenleyicileri,Taşıtlar ve Parçalar > Taşıt Parçaları ve Aksesuarlar > Taşıt Saklama ve Kargo > Taşıt Koltuk Başlığı Askıları ve Kancaları,Hırdavat > Tesisat Aksesuarları > Alet Saklama ve Düzenleme > Takım Çantaları,Hırdavat > Tesisat Aksesuarları > Alet Saklama ve Düzenleme > Alet Çantaları,true -objektif-gorunumlu-bardak-cuplens,Ev ve Bahçe > Mutfak ve Yemek > Sofra Takımları > Bardak Takımları > Kulplu Bardaklar,Ev ve Bahçe > Mutfak ve Yemek > Sofra Takımları > Bardak Takımları > Shot Bardakları,Ev ve Bahçe > Mutfak ve Yemek > İçki Takımları > Bardak Altlıkları,Ev ve Bahçe > Mutfak ve Yemek > Sofra Takımları > Bardak Takımları > Su Bardakları,Ev ve Bahçe > Mutfak ve Yemek > Sofra Takımları > Bardak Takımları > Bardak Setleri,true -vantuzlu-bulasik-sungeri-askisi-sponge-hanger,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri > Bulaşık Makineleri,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri > Buz Yapıcılar,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri > Buzdolapları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Gereçleri ve Aletleri > Bulaşıklıklar ve Süzme Tezgahları,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri,true -poset-cay-kahve-duzenleyici-organizer12-bolmeli,Büro Malzemeleri > Dosyalama ve Organizasyon > Takvimler, Organizerler ve Planlayıcılar,Büro Malzemeleri > Ofis Ekipmanları,Büro Malzemeleri > Ofis Aletleri,Ev ve Bahçe > Ev Sarf Malzemeleri > Saklama ve Düzenleme > Ev Çekmece Düzenleyicileri,Büro Malzemeleri > Dosyalama ve Organizasyon > Masaüstü Düzenleyicileri,true -spreyli-su-hazneli-mikrofiber-cam-silme-mopu,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Süpürge ve Mop Sapları,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Moplar,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Mop Başlık ve Refilleri,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Ev Temizlik Ürünleri > Kumaş ve Döşeme Temizleyiciler,Ev ve Bahçe > Ev Sarf Malzemeleri > Ev Temizlik Malzemeleri > Ev Temizlik Ürünleri > Cam ve Yüzey Temizleyiciler > Cam Temizleyiciler,true -ayak-bunyon-koruyucu-2-parmaga-gecen-2-adet,Sağlık ve Güzellik > Kişisel Bakım > Ayak Bakımı > Bunyon Bakımı Malzemeleri,Sağlık ve Güzellik > Kişisel Bakım > Ayak Bakımı,Sağlık ve Güzellik > Kişisel Bakım > Ayak Bakımı > Nasır ve Kallus Bakımı,Sağlık ve Güzellik > Kişisel Bakım > Ayak Bakımı > Ayakkabı Astar ve Keçeleri,Sağlık ve Güzellik > Kişisel Bakım > Ayak Bakımı > Ayak Koku Gidericiler,true -doner-baslikli-led-disko-ampulu-3-renk,Ev ve Bahçe > Aydınlatma > Ampuller,Ev ve Bahçe > Aydınlatma > Ampuller > Akkor Ampuller,Ev ve Bahçe > Aydınlatma > Ampuller > LED Ampuller,Ev ve Bahçe > Aydınlatma > Ampuller > Floresan Çubuklar,Hırdavat > Aletler > Ampul Değiştiriciler,true -2-asamali-pratik-bicak-bileyici,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri > Bıçak Bileyiciler,Hırdavat > Aletler > Alet Bıçakları,Hırdavat > Aletler > Bileyiciler,Hırdavat > Aletler > Kesiciler > Çok Amaçlı Bıçaklar,Hırdavat > Aletler > Kesiciler,true -sihirli-testere-magic-saw-7-farkli-uc,Hırdavat > Aletler > Testere Tezgahları,Hırdavat > Aletler > Testereler > Şerit Testereler,Hırdavat > Aletler > Testereler > El Testereleri,Hırdavat > Alet Aksesuarları > Testere Aksesuarları,Hırdavat > Aletler > Testereler,true -pati-desenli-kaka-poseti-3lu,Hayvanlar ve Evcil Hayvan Ürünleri > Evcil Hayvan Ürünleri > Köpek Ürünleri,Hayvanlar ve Evcil Hayvan Ürünleri > Evcil Hayvan Ürünleri > Köpek Ürünleri > Köpek Kulübeleri ve Kafesleri,Hayvanlar ve Evcil Hayvan Ürünleri > Evcil Hayvan Ürünleri > Köpek Ürünleri > Köpek Yatakları,Hayvanlar ve Evcil Hayvan Ürünleri > Evcil Hayvan Ürünleri > Köpek Ürünleri > Köpek Kıyafetleri,Hayvanlar ve Evcil Hayvan Ürünleri > Evcil Hayvan Ürünleri > Köpek Ürünleri > Köpek Koşu Bantları,true -at-tasarimli-telefon-tutucu-stand-horse-holder,Elektronik > Haberleşme > Telefon İletişimi > Cep Telefonu Aksesuarları > Cep Telefonu Stantları,Elektronik > Haberleşme > Telefon İletişimi > Telefon Aksesuarları,Elektronik > Haberleşme > Telefon İletişimi > Cep Telefonu Aksesuarları,Elektronik > Haberleşme > İletişim Telsizi Aksesuarları,Elektronik > Haberleşme > Telefon İletişimi > Cep Telefonu Aksesuarları > Cep Telefonu Kılıfları,true -sac-tebesiri-hair-chalk-12-parca,Kıyafet ve Aksesuarlar > Kıyafet Aksesuarları > Saç Aksesuarları,Kıyafet ve Aksesuarlar > Kıyafet Aksesuarları > Saç Aksesuarları > Saç Topuzu ve Hacim Şekillendiricileri,Kıyafet ve Aksesuarlar > Kıyafet Aksesuarları > Saç Aksesuarları > Baş Süsleri,Kıyafet ve Aksesuarlar > Kıyafet Aksesuarları > Saç Aksesuarları > Çatal ve Çubuk Tokalar,Kıyafet ve Aksesuarlar > Kıyafet Aksesuarları > Saç Aksesuarları > Saç Bantları,true -multi-fonksiyonlu-bisiklet-on-ve-arka-lamba-seti,Spor Malzemeleri > Açık Hava Etkinlikleri > Bisiklet > Bisiklet Aksesuarları > Elektrikli Bisiklet Dönüştürme Setleri,Spor Malzemeleri > Açık Hava Etkinlikleri > Bisiklet > Bisiklet Aksesuarları > Bisiklet Lastik Yamaları ve Onarım Setleri,Ev ve Bahçe > Aydınlatma > Tablo Işıkları,Ev ve Bahçe > Aydınlatma,Spor Malzemeleri > Açık Hava Etkinlikleri > Bisiklet > Bisiklet Kıyafetleri ve Aksesuarları,true -masaustu-dijital-termometre-nem-olcer-saat-higrometre-ic-mekan,Bebek ve Küçük Çocuk Ürünleri > Emzirme ve Beslenme > Biberon Isıtıcı ve Sterilizatörler,Hırdavat > Aletler > Ölçüm Aletleri ve Sensörler > Nem Ölçerler,Bebek ve Küçük Çocuk Ürünleri > Bebek Sağlığı > Bebek Sağlığı ve Bakım Setleri,Bebek ve Küçük Çocuk Ürünleri > Emzirme ve Beslenme > Bebek Bakım Zamanlayıcıları,Bebek ve Küçük Çocuk Ürünleri > Bebek Güvenliği > Bebek İzleme Cihazları,true -bisiklet-flasoru-2-adet,Spor Malzemeleri > Açık Hava Etkinlikleri > Bisiklet > Bisiklet Aksesuarları > Bisiklet Kılıfları,Spor Malzemeleri > Açık Hava Etkinlikleri > Bisiklet > Bisiklet Aksesuarları > Bisiklet Sele Süngerleri ve Koltuk Kılıfları,Spor Malzemeleri > Açık Hava Etkinlikleri > Bisiklet > Bisiklet Aksesuarları,Spor Malzemeleri > Açık Hava Etkinlikleri > Bisiklet > Bisiklet Kıyafetleri ve Aksesuarları > Bisiklet Ayakkabısı Kılıfları,Spor Malzemeleri > Açık Hava Etkinlikleri > Bisiklet > Bisiklet Aksesuarları > Bisiklet Aynaları,true -sevimli-kahve-pasta-susleme-sablonlari-4-adet,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Gereçleri ve Aletleri > Pasta Süsleme Malzemeleri,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Gereçleri ve Aletleri > Pasta Servis Gereçleri,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri > Yoğurt Makineleri,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri > Ekmek Yapma Makineleri,Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri,true -hortum-tamir-aparati,Hırdavat > Tesisat Aksesuarları > Yağlama Hortumları,Hırdavat > Aletler > Tutma Aletleri,Hırdavat > Alet Aksesuarları > Alet Yuvaları,Hırdavat > Aletler > İşaretleme Aletleri,Ev ve Bahçe > Çim ve Bahçe > Sulama ve Tarımsal Sulama > Bahçe Hortumları,true -gece-gorusu-gorunumlu-caydirici-kamera,Ev ve Bahçe > İş ve Ev Güvenliği > Sahte Güvenlik Kameraları,Kameralar ve Optik Malzemeler > Fotoğraf Makineleri > Güvenlik Kameraları,Hırdavat > Aletler > Ölçüm Aletleri ve Sensörler > Termal Görüntüleme Kameraları,Kameralar ve Optik Malzemeler > Kamera ve Optik Aksesuarları > Fotoğraf Makinesi Parçaları ve Aksesuarları > Güvenlik Kamerası Aksesuarları,Ev ve Bahçe > İş ve Ev Güvenliği > Güvenlik Monitör ve Kayıt Cihazları,true -kafa-semsiyesi,Ev ve Bahçe > Ev Aleti Aksesuarları > Şemsiye Soba Aksesuarları > Şemsiye Soba Muhafazaları,Ev ve Bahçe > Ev Aleti Aksesuarları > Şemsiye Soba Aksesuarları,Kıyafet ve Aksesuarlar > Kıyafet Aksesuarları > Saç Aksesuarları,Hırdavat > Aletler > El ve Kafa Fenerleri > Kafa Lambaları,Hırdavat > Aletler > El ve Kafa Fenerleri,true -ozel-jel-tirnak-batik-koruyucu,Kıyafet ve Aksesuarlar > Kıyafet Aksesuarları > Kulak Koruyucular,Kıyafet ve Aksesuarlar > Ayakkabı Aksesuarları > Ayakkabı Bağcıkları,Sağlık ve Güzellik > Kişisel Bakım > Kozmetik > Tırnak Bakımı > Oje Çıkarıcılar,Kıyafet ve Aksesuarlar > Ayakkabı Aksesuarları,Kıyafet ve Aksesuarlar > Kıyafet Aksesuarları > Saç Aksesuarları > Tarak Tokalar,true diff --git a/lib/vector/file/categories.jsonl b/lib/vector/file/categories.jsonl deleted file mode 100644 index 2a11674..0000000 --- a/lib/vector/file/categories.jsonl +++ /dev/null @@ -1,40 +0,0 @@ -{"prompt":"Özel Jel Tırnak Batık Koruyucu","completion":" Sağlık ve Güzellik > Kişisel Bakım > Kozmetik > Tırnak Bakımı"} -{"prompt":"Ayak Boşluğunu Dolduran Tabanlık","completion":" Ev ve Bahçe > Ev Sarf Malzemeleri > Ayakkabı Bakım ve Aletleri"} -{"prompt":"Sevimli Pilav ve Helva Servis Kalıbı (2 Adet)","completion":" Yiyecek"} -{"prompt":"Star Master Projeksiyon Gece Lambası","completion":" Ev ve Bahçe > Aydınlatma > Gece Lambaları ve Ortam Aydınlatma"} -{"prompt":"Terzi Makası Taksun Profesyonel","completion":" Sanat ve Eğlence > Hobiler ve Sanatsal Çalışmalar > Sanatlar ve El İşleri > Sanat ve El İşi Araçları > Kumaş El İşi Makineleri"} -{"prompt":"Cep Telefonu Ekran Büyüteci","completion":" Elektronik > Haberleşme > Telefon İletişimi > Cep Telefonu Aksesuarları > Cep Telefonu Kamera Lensleri"} -{"prompt":"Araba Kapı Ses ve Darbe Emici Pad 10 Adet","completion":" Taşıtlar ve Parçalar > Taşıt Parçaları ve Aksesuarlar > Taşıt Güvenliği ve Emniyeti"} -{"prompt":"Vakumlu Poşet Hurç Seti 55x90 Cm","completion":" Ev ve Bahçe > Ev Sarf Malzemeleri > Saklama ve Düzenleme > Ev Saklama Poşetleri"} -{"prompt":"5 Ledli Bisiklet Arka Stop İkaz Lambası","completion":" Spor Malzemeleri > Açık Hava Etkinlikleri > Bisiklet > Bisiklet Aksesuarları"} -{"prompt":"Silikon Hamur Açma Matı (ÖLÇÜLÜ) 50 x 40","completion":" Ev ve Bahçe > Mutfak ve Yemek > Mutfak Gereçleri ve Aletleri > Hamur Bezleri"} -{"prompt":"Orta Parmağa Geçen Metatarsal Pad","completion":" Sağlık ve Güzellik > Kişisel Bakım > Ayak Bakımı > Ayak Parmağı Araları"} -{"prompt":"Alev Efektli Solar Bahçe Lambası (51 cm)","completion":" Ev ve Bahçe > Aydınlatma > Lambalar"} -{"prompt":"Yıkanabilir Tüy Toplama Rulosu Sticky Buddy","completion":" Ev ve Bahçe > Ev Sarf Malzemeleri > Çamaşırhane Sarf Malzemeleri > Tüy Toplayıcı Rulolar"} -{"prompt":"Sayaçlı Sertlik Ayarlanabilir 5-60kg Direnç El Egzersiz Yayı","completion":" Spor Malzemeleri > Egzersiz ve Fitness > El Egzersiz Aletleri"} -{"prompt":"Profesyonel Bıçak Bileyici 3 Açılı Çelik El Bıçakları Bileme","completion":" Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri > Bıçak Bileyiciler"} -{"prompt":"İçli Köfte Aparatı 4'lü","completion":" Ev ve Bahçe > Mutfak ve Yemek > Mutfak Aletleri"} -{"prompt":"5 metre x 10cm Çamur Bant Alüminyum İzolasyon Tamir Çatlak Bantı","completion":" Sanat ve Eğlence > Hobiler ve Sanatsal Çalışmalar > Sanatlar ve El İşleri > Sanat ve El İşleri Malzemeleri > El İşi Yapışkanları ve Mıknatısları > Yapışkanlı Kumaş Bantları"} -{"prompt":"Nostaljik Tetris El Atarisi","completion":" Elektronik > Atari Ekipmanları > Video Oyun Makineleri"} -{"prompt":"Çelik Tırnak Törpüsü( Küçük Boy)","completion":" Sağlık ve Güzellik > Kişisel Bakım > Kozmetik > Kozmetik Aletleri > Tırnak Bakım Aletleri"} -{"prompt":"Büyük Boy Çelik Tırnak Törpüsü %100 Paslanmaz Çelik","completion":" Sağlık ve Güzellik > Kişisel Bakım > Kozmetik > Kozmetik Aletleri > Tırnak Bakım Aletleri > Tırnak Parlatıcı Törpüler"} -{"prompt":"Pusulalı Outdoor Hayatta Kalma Bilekliği","completion":" Spor Malzemeleri > Açık Hava Etkinlikleri > Kampçılık ve Doğa Yürüyüşü > Pusulalar"} -{"prompt":"Parmak Gömleği Tüm Parmakları Kapatan","completion":" Büro Malzemeleri > Kağıt İşleri > Kaydırmaz Parmak Ucu Kaplamaları"} -{"prompt":"Bisiklet Zincir Dişlisi Koruyucu Pas Sökücü Temizleme Fırçası Aparatı Bakım Seti 4 Parça","completion":" Spor Malzemeleri > Açık Hava Etkinlikleri > Bisiklet > Bisiklet Parçaları > Bisiklet Aktarma Organları > Bisiklet Zinciri"} -{"prompt":"Çok Amaçlı Vakumlama Araç Göçük Düzeltme Kaporta Çektirme Aparatı Vantuz","completion":" Taşıtlar ve Parçalar > Taşıt Parçaları ve Aksesuarlar > Araç Bakımı ve Dekoru > Taşıt Onarım ve Özel İşlem Takımları"} -{"prompt":"AB Wheel Egzersiz Aleti","completion":" Spor Malzemeleri > Egzersiz ve Fitness > Ab Wheel'lar ve Ab Roller'lar"} -{"prompt":"Motosiklet Kaskı İçin Yağmur Kaydırıcı Film","completion":" Taşıtlar ve Parçalar > Taşıt Parçaları ve Aksesuarlar > Taşıt Güvenliği ve Emniyeti > Motosiklet Koruyucu Ekipmanları > Motosiklet Kask Parçaları ve Aksesuarları"} -{"prompt":"Spiral Hortumlu Ayarlanabilir Hareketli Banyo Mutfak Lavabo Musluk Duş Başlığı","completion":" Hırdavat > Sıhhi Tesisat > Su Tahliye Teçhizatı ve Parçaları > Duş Parçaları > Duş Başlığı Kolları ve Bağlantı Parçaları"} -{"prompt":"Cep Testeresi Tel Testere","completion":" Hırdavat > Aletler > Testereler > El Testereleri"} -{"prompt":"Easy Feet Banyo Ayak Yıkama Terliği Ponza Taşlı Vantuzlu","completion":" Sağlık ve Güzellik > Kişisel Bakım > Kozmetik > Kozmetik Aletleri > Cilt Bakım Aletleri > Ponza Taşları"} -{"prompt":"El Egzersiz Yayı Ayarlanabilir Dirençli 10-40 Kg Arası","completion":" Spor Malzemeleri > Egzersiz ve Fitness > El Egzersiz Aletleri"} -{"prompt":"Kemer Delme ve Perçin Atma Pensesi","completion":" Hırdavat > Aletler > Perçinleme Aletleri"} -{"prompt":"Bükülebilir Esnek Şaft Bits Matkap Ucu + Vidalama Uçları 12 Parça Bits Uç Seti","completion":" Hırdavat > Alet Aksesuarları > Matkap ve Tornavide Aksesuarları > Matkap ve Tornavida Uçları"} -{"prompt":"Filtreli 3 Fonksiyonlu Şeffaf Musluk Başlığı","completion":" Hırdavat > Sıhhi Tesisat > Su Tahliye Teçhizatı ve Parçaları > Musluk Aksesuarları > Musluk Başlıkları"} -{"prompt":"Çamur Bant Alüminyum İzolasyon Tamir Çatlak Bantı (2m x 10cm)","completion":" Hırdavat > Yapı Sarf Malzemeleri > Koruyucu Kaplamalar ve Sızdırmazlık Macunları"} -{"prompt":"Kapı Pencere Rüzgar Kesici Şerit Bant 3 metre","completion":" Ev ve Bahçe > Çim ve Bahçe > Ev Dışında Yaşam > Pencere ve Kapı Tentesi Aksesuarları"} -{"prompt":"Çevirmeli Diş Macun Sıkacağı 2 Adet","completion":" Sağlık ve Güzellik > Kişisel Bakım > Ağız Bakımı > Diş Macunu Sıkıcı ve Dağıtıcılar"} -{"prompt":"Makaralı Otomatik Köpek Tasması 5 Metre (4 Renk)","completion":" Hayvanlar ve Evcil Hayvan Ürünleri > Evcil Hayvan Ürünleri > Evcil Hayvan Tasma ve Kayışları"} -{"prompt":"Boyuna Asılan Telefon Tutucu (POV) Çekim Aparatı","completion":" Elektronik > Haberleşme > Telefon İletişimi > Cep Telefonu Aksesuarları > Cep Telefonu Nazarlık ve Askıları"} -{"prompt":"Lüks Keçeli Ütü Masası Örtüsü","completion":" Ev ve Bahçe > Ev Sarf Malzemeleri > Çamaşırhane Sarf Malzemeleri > Ütü Masası Sünger ve Örtüleri"} -{"prompt":"Kısa Tüylü Köpekler İçin Tüy Alıcı Tarak - Small","completion":" Hayvanlar ve Evcil Hayvan Ürünleri > Evcil Hayvan Ürünleri > Evcil Hayvan Tımarlama Ürünleri > Evcil Hayvan Tarakları ve Fırçaları"} \ No newline at end of file diff --git a/lib/vector/file/index.ts b/lib/vector/file/index.ts deleted file mode 100644 index 2e88b8f..0000000 --- a/lib/vector/file/index.ts +++ /dev/null @@ -1,16 +0,0 @@ -import xlsx from "node-xlsx"; - -const resolveRow = (row: string[], index: number) => { - const headers = ["Handle", "Title", "Body(HTML)", "Vendor", "Product Category", "Type", "Tags", "Published", "Option1 Name", "Option1 Value", "Option2 Name", "Option2 Value", "Option3 Name", "Option3 Value", "Variant SKU", "Variant Grams", "Variant Inventory Tracker", "Variant Inventory Qty", "Variant Inventory Policy", "Variant Fulfillment Service", "Variant Price", "Variant Compare At Price", "Variant Requires Shipping", "Variant Taxable", "Variant Barcode", "Image Src", "Image Position", "Image Alt Text", "Gift Card", "SEO Title", "SEO Description", "Google Shopping / Google Product Category", "Google Shopping / Gender", "Google Shopping / Age Group", "Google Shopping / MPN", "Google Shopping / AdWords Grouping", "Google Shopping / AdWords Labels", "Google Shopping / Condition", "Google Shopping / Custom Product", "Google Shopping / Custom Label 0", "Google Shopping / Custom Label 1", "Google Shopping / Custom Label 2", "Google Shopping / Custom Label 3", "Google Shopping / Custom Label 4", "Variant Image", "Variant Weight Unit", "Variant Tax Code", "Cost per item", "Included / Turkey", "Included / International", "Price / International", "Compare At Price / International", "Status"]; - return headers.reduce((acc: {[key: string]: any}, header, index) => { - acc[header] = row[index]; - return acc; - }, {}); -} - -export const readFile = () => { - const file = xlsx.parse("./file/products.xlsx"); - if (!file) throw new Error('Input file is not defined.'); - - return file[0].data.slice(1).map((value, index) => resolveRow(value as string[], index)); -} \ No newline at end of file diff --git a/lib/vector/file/products.xlsx b/lib/vector/file/products.xlsx deleted file mode 100644 index 3f0bf2741fbf6e1a42a754d29e33e9fefb9467dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 186116 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 diff --git a/lib/vector/package-lock.json b/lib/vector/package-lock.json deleted file mode 100644 index eaa9929..0000000 --- a/lib/vector/package-lock.json +++ /dev/null @@ -1,461 +0,0 @@ -{ - "name": "vector", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "vector", - "version": "1.0.0", - "license": "ISC", - "dependencies": { - "@pinecone-database/pinecone": "^0.0.14", - "@t3-oss/env-nextjs": "^0.2.2", - "dotenv": "^16.0.3", - "gpt-3-encoder": "^1.1.4", - "node-fetch": "^3.3.1", - "node-xlsx": "^0.21.2", - "openai": "^3.2.1", - "stream": "^0.0.2", - "throat": "^6.0.2" - }, - "devDependencies": { - "@t3-oss/env-core": "^0.2.2", - "zod": "^3.21.4" - } - }, - "node_modules/@pinecone-database/pinecone": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/@pinecone-database/pinecone/-/pinecone-0.0.14.tgz", - "integrity": "sha512-uQspP/fGB2xhS/PWVD9/XnNnzuTfjukuX9IKH0EYqJMXd0Yx+ewcRADVFrF5RBeBWXBWrpGhIhvWE0hTPy/BAg==", - "dependencies": { - "cross-fetch": "^3.1.5" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@t3-oss/env-core": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@t3-oss/env-core/-/env-core-0.2.2.tgz", - "integrity": "sha512-Jiuph14/L3L9EDaU0O0YiLeaKUcWA9c3mWYuKem8+L64i3Iwz+IbKdl5Jp4cx+JbOsS/aptwGZplnxSHhm2gMQ==", - "peerDependencies": { - "zod": "^3.0.0" - } - }, - "node_modules/@t3-oss/env-nextjs": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@t3-oss/env-nextjs/-/env-nextjs-0.2.2.tgz", - "integrity": "sha512-9LnVpTkf/8WkggyVN6Liz9Ma9a7fLzV00b5BngWj3HI3iWDfddsWaqCf/H0f46Bgu29NubP3Bwajf1JieVrxFA==", - "dependencies": { - "@t3-oss/env-core": "0.2.2" - }, - "peerDependencies": { - "zod": "^3.0.0" - } - }, - "node_modules/adler-32": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.2.0.tgz", - "integrity": "sha512-/vUqU/UY4MVeFsg+SsK6c+/05RZXIHZMGJA+PX5JyWI0ZRcBpupnRuPLU/NXXoFwMYCPCoxIfElM2eS+DUXCqQ==", - "dependencies": { - "exit-on-epipe": "~1.0.1", - "printj": "~1.1.0" - }, - "bin": { - "adler32": "bin/adler32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, - "node_modules/cfb": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", - "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", - "dependencies": { - "adler-32": "~1.3.0", - "crc-32": "~1.2.0" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/cfb/node_modules/adler-32": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", - "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/codepage": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", - "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dependencies": { - "node-fetch": "2.6.7" - } - }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "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==", - "engines": { - "node": ">= 12" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/dotenv": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", - "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", - "engines": { - "node": ">=12" - } - }, - "node_modules/emitter-component": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz", - "integrity": "sha512-G+mpdiAySMuB7kesVRLuyvYRqDmshB7ReKEVuyBPkzQlmiDiLrt7hHHIy4Aff552bgknVN7B2/d3lzhGO5dvpQ==" - }, - "node_modules/exit-on-epipe": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", - "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", - "engines": { - "node": ">=0.8" - } - }, - "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" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 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==", - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/frac": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", - "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/gpt-3-encoder": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/gpt-3-encoder/-/gpt-3-encoder-1.1.4.tgz", - "integrity": "sha512-fSQRePV+HUAhCn7+7HL7lNIXNm6eaFWFbNLOOGtmSJ0qJycyQvj60OvRlH7mee8xAMjBDNRdMXlMwjAbMTDjkg==" - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/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==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, - "node_modules/node-fetch": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.1.tgz", - "integrity": "sha512-cRVc/kyto/7E5shrWca1Wsea4y6tL9iYJE5FBCius3JQfb/4P4I295PfhgbJQBLTx6lATE4z+wK0rPM4VS2uow==", - "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/node-xlsx": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/node-xlsx/-/node-xlsx-0.21.2.tgz", - "integrity": "sha512-Hx/AQ+IEoNgiq8rjEOPtvv3F+KZ5iHZLmEO5Cf7oB6mrpzXsaLNTQvyZvJ3sEOMQ2HfGXwyks18ZVTI6+WmuQA==", - "dependencies": { - "xlsx": "^0.17.4" - }, - "bin": { - "node-xlsx": "lib/bin/cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/openai": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/openai/-/openai-3.2.1.tgz", - "integrity": "sha512-762C9BNlJPbjjlWZi4WYK9iM2tAVAv0uUp1UmI34vb0CN5T2mjB/qM6RYBmNKMh/dN9fC+bxqPwWJZUTWW052A==", - "dependencies": { - "axios": "^0.26.0", - "form-data": "^4.0.0" - } - }, - "node_modules/printj": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", - "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", - "bin": { - "printj": "bin/printj.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/ssf": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", - "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", - "dependencies": { - "frac": "~1.1.2" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/stream": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stream/-/stream-0.0.2.tgz", - "integrity": "sha512-gCq3NDI2P35B2n6t76YJuOp7d6cN/C7Rt0577l91wllh0sY9ZBuw9KaSGqH/b0hzn3CWWJbpbW0W0WvQ1H/Q7g==", - "dependencies": { - "emitter-component": "^1.1.1" - } - }, - "node_modules/throat": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", - "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==" - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "engines": { - "node": ">= 8" - } - }, - "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==" - }, - "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==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/wmf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", - "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/word": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", - "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/xlsx": { - "version": "0.17.5", - "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.17.5.tgz", - "integrity": "sha512-lXNU0TuYsvElzvtI6O7WIVb9Zar1XYw7Xb3VAx2wn8N/n0whBYrCnHMxtFyIiUU1Wjf09WzmLALDfBO5PqTb1g==", - "dependencies": { - "adler-32": "~1.2.0", - "cfb": "^1.1.4", - "codepage": "~1.15.0", - "crc-32": "~1.2.0", - "ssf": "~0.11.2", - "wmf": "~1.0.1", - "word": "~0.3.0" - }, - "bin": { - "xlsx": "bin/xlsx.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/zod": { - "version": "3.21.4", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", - "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - } - } -} diff --git a/lib/vector/package.json b/lib/vector/package.json deleted file mode 100644 index ab0350d..0000000 --- a/lib/vector/package.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "name": "vector", - "version": "1.0.0", - "description": "", - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1", - "upsert:vector": "ts-node --esm create.ts", - "query:vector": "ts-node --esm query.ts", - "tokenizer": "ts-node --esm coder/index.ts" - }, - "author": "sametcodes", - "license": "ISC", - "dependencies": { - "@pinecone-database/pinecone": "^0.0.14", - "@t3-oss/env-nextjs": "^0.2.2", - "dotenv": "^16.0.3", - "gpt-3-encoder": "^1.1.4", - "node-fetch": "^3.3.1", - "node-xlsx": "^0.21.2", - "openai": "^3.2.1", - "stream": "^0.0.2", - "throat": "^6.0.2" - }, - "devDependencies": { - "@t3-oss/env-core": "^0.2.2", - "zod": "^3.21.4" - }, - "type": "module" -} diff --git a/lib/vector/query.ts b/lib/vector/query.ts deleted file mode 100644 index b6edabb..0000000 --- a/lib/vector/query.ts +++ /dev/null @@ -1,88 +0,0 @@ -import { PineconeClient } from "@pinecone-database/pinecone"; -import { Configuration, OpenAIApi } from "openai"; -import { env } from "./env.mjs"; -import { createEmbedding, produceKeywords } from "./openai/index.js"; -import fs from 'fs'; -import { readFile } from "./file/index.js"; -import { metadata } from '../../src/app/layout'; - -const configuration = new Configuration({ - apiKey: env.OPENAI_API_KEY, - organization: env.OPENAI_ORGANIZATION, -}); -const openai = new OpenAIApi(configuration); - -type Vector = { - id: string | number; - metadata: { - [key: string]: string; - }, - values: Array; -} - -const products = readFile(); - -const pricing = { - "text-davinci-003": 0.02, - "text-davinci-002": 0.02, - "text-curie-001": 0.002, - "text-babbage-001": 0.0005, - "text-ada-001": 0.0004 -}; - -(async () => { - const pinecone = new PineconeClient(); - await pinecone.init({ - environment: env.PINECONE_ENVIRONMENT, - apiKey: env.PINECONE_API_KEY - }); - - const lang = "tr"; - const index = pinecone.Index("shopifytaxonomy"); - - fs.writeFileSync( - `./file/categories.csv`, - ["Handle", "Predict 1", "Predict 2", "Predict 3", "Predict 4", "Predict 5", "Has Description"].join(",") + "\n" - ); - - const model = "text-davinci-003"; - let totalUsedTokens = 0; - - for (var product of products.slice(0, 10)) { - const input = `${product.Title} ${product["Body(HTML)"]?.replace(/(<([^>]+)>)/ig, "")}` - const response_keywords = await produceKeywords({ input, model, lang }); - if (!response_keywords || !response_keywords.choices || !response_keywords.choices[0]) { - console.log(`${product.Title} ― no keywords`) - continue; - } - totalUsedTokens += response_keywords.usage.total_tokens; - const categoryName = response_keywords.choices[0].text; - console.log(`\nProduced category: ― ${categoryName.replace(/\n/g, "")}`) - - const embedding = await createEmbedding({ input: categoryName }) - const response = await index.query({ - queryRequest: { - namespace: `shopify-taxonomy-${lang}`, - topK: 5, - vector: embedding.data[0].embedding, - includeMetadata: true - } - }); - - const matches = response.matches as any; - const match = matches?.[0]?.metadata as any; - const score = matches?.[0]?.score as any; - if (!match) { - console.log(`${product.Title} ― no match`) - continue; - }; - console.log(`${product.Title} ― [${match.id}] ${match.categoryName} ― ${score}`) - fs.appendFileSync( - `./file/categories.csv`, - [product.Handle, ...matches?.map((match: any) => match.metadata.categoryName), Boolean(product["Body(HTML)"])].join(",") + "\n" - ) - console.log("Cost: ", response_keywords.usage.total_tokens/1000 * pricing[model]) - } - console.log(`Total cost: ${totalUsedTokens/1000 * pricing[model]}. Total used tokens: ${totalUsedTokens}`) - -})(); \ No newline at end of file diff --git a/next.config.js b/next.config.js deleted file mode 100644 index dafb0c8..0000000 --- a/next.config.js +++ /dev/null @@ -1,8 +0,0 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = { - experimental: { - appDir: true, - }, -} - -module.exports = nextConfig diff --git a/nodemon.json b/nodemon.json new file mode 100644 index 0000000..2e9dc1b --- /dev/null +++ b/nodemon.json @@ -0,0 +1,8 @@ +{ + "watch": [ + "./src" + ], + "ext": ".ts,.js", + "ignore": [], + "exec": "npx ts-node ./src/index.ts" +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7e96c49..d0b012a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,3835 +1,1338 @@ { - "name": "laws.ai", - "version": "0.1.0", + "name": "vector", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "laws.ai", - "version": "0.1.0", + "name": "vector", + "version": "1.0.0", + "license": "ISC", "dependencies": { "@pinecone-database/pinecone": "^0.0.14", - "@types/node": "18.16.0", - "@types/react": "18.0.38", - "@types/react-dom": "18.0.11", - "autoprefixer": "10.4.14", - "eslint": "8.39.0", - "eslint-config-next": "13.3.1", - "next": "13.3.1", + "dotenv": "^16.0.3", + "express": "^4.18.2", + "gpt-3-encoder": "^1.1.4", + "multer": "^1.4.5-lts.1", + "node-fetch": "^2.6.11", "openai": "^3.2.1", - "postcss": "8.4.23", - "react": "18.2.0", - "react-dom": "18.2.0", - "tailwindcss": "3.3.1", - "typescript": "5.0.4" + "throat": "^6.0.2", + "uuid": "^9.0.0", + "zod": "^3.21.4" + }, + "devDependencies": { + "@t3-oss/env-core": "^0.2.2", + "@t3-oss/env-nextjs": "^0.2.2", + "@types/express": "^4.17.17", + "@types/multer": "^1.4.7", + "@types/node": "^20.1.1", + "@types/node-fetch": "^2.6.3", + "@types/uuid": "^9.0.1", + "nodemon": "^2.0.22", + "typescript": "^5.0.4" } }, - "node_modules/@babel/runtime": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz", - "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==", + "node_modules/@pinecone-database/pinecone": { + "version": "0.0.14", + "resolved": "https://registry.npmjs.org/@pinecone-database/pinecone/-/pinecone-0.0.14.tgz", + "integrity": "sha512-uQspP/fGB2xhS/PWVD9/XnNnzuTfjukuX9IKH0EYqJMXd0Yx+ewcRADVFrF5RBeBWXBWrpGhIhvWE0hTPy/BAg==", "dependencies": { - "regenerator-runtime": "^0.13.11" + "cross-fetch": "^3.1.5" }, "engines": { - "node": ">=6.9.0" + "node": ">=14.0.0" + } + }, + "node_modules/@t3-oss/env-core": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@t3-oss/env-core/-/env-core-0.2.2.tgz", + "integrity": "sha512-Jiuph14/L3L9EDaU0O0YiLeaKUcWA9c3mWYuKem8+L64i3Iwz+IbKdl5Jp4cx+JbOsS/aptwGZplnxSHhm2gMQ==", + "dev": true, + "peerDependencies": { + "zod": "^3.0.0" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "node_modules/@t3-oss/env-nextjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@t3-oss/env-nextjs/-/env-nextjs-0.2.2.tgz", + "integrity": "sha512-9LnVpTkf/8WkggyVN6Liz9Ma9a7fLzV00b5BngWj3HI3iWDfddsWaqCf/H0f46Bgu29NubP3Bwajf1JieVrxFA==", + "dev": true, "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "@t3-oss/env-core": "0.2.2" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "zod": "^3.0.0" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", - "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", - "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.5.1", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "@types/node": "*" } }, - "node_modules/@eslint/js": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.39.0.tgz", - "integrity": "sha512-kf9RB0Fg7NZfap83B3QOqOGg9QmD9yBudqQXzzOtn3i4y7ZUXe5ONeW34Gwi+TxhH4mvj72R1Zc300KUMa9Bng==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node_modules/@types/express": { + "version": "4.17.17", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", + "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", - "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", + "node_modules/@types/express-serve-static-core": { + "version": "4.17.34", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.34.tgz", + "integrity": "sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==", + "dev": true, "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/multer": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/@types/multer/-/multer-1.4.7.tgz", + "integrity": "sha512-/SNsDidUFCvqqcWDwxv2feww/yqhNeTRL5CVoL3jU4Goc4kKEL10T7Eye65ZqPNi4HRx8sAEX59pV1aEH7drNA==", + "dev": true, + "dependencies": { + "@types/express": "*" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "node_modules/@types/node": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.1.1.tgz", + "integrity": "sha512-uKBEevTNb+l6/aCQaKVnUModfEMjAl98lw2Si9P5y4hLu9tm6AlX2ZIoXZX6Wh9lJueYPrGPKk5WMCNHg/u6/A==", + "dev": true }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/@types/node-fetch": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.3.tgz", + "integrity": "sha512-ETTL1mOEdq/sxUtgtOhKjyB2Irra4cjxksvcMUR5Zr4n+PxVhsCD9WS46oPbHL3et9Zde7CNRr+WUNlcHvsX+w==", + "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "engines": { - "node": ">=6.0.0" + "@types/node": "*", + "form-data": "^3.0.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "engines": { - "node": ">=6.0.0" - } + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "engines": { - "node": ">=6.0.0" - } + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "node_modules/@types/send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.1.tgz", + "integrity": "sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "node_modules/@types/serve-static": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", + "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", + "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@types/mime": "*", + "@types/node": "*" } }, - "node_modules/@jridgewell/trace-mapping/node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" + "node_modules/@types/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-rFT3ak0/2trgvp4yYZo5iKFEPsET7vKydKF+VRCxlQ9bpheehyAJH89dAkaLEq/j/RZXJIqcgsmPJKUP1Z28HA==", + "dev": true }, - "node_modules/@next/env": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/env/-/env-13.3.1.tgz", - "integrity": "sha512-EDtCoedIZC7JlUQ3uaQpSc4aVmyhbLHmQVALg7pFfQgOTjgSnn7mKtA0DiCMkYvvsx6aFb5octGMtWrOtGXW9A==" + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, - "node_modules/@next/eslint-plugin-next": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.3.1.tgz", - "integrity": "sha512-Hpd74UrYGF+bq9bBSRDXRsRfaWkPpcwjhvachy3sr/R/5fY6feC0T0s047pUthyqcaeNsqKOY1nUGQQJNm4WyA==", + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dependencies": { - "glob": "7.1.7" - } - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.3.1.tgz", - "integrity": "sha512-UXPtriEc/pBP8luSLSCZBcbzPeVv+SSjs9cH/KygTbhmACye8/OOXRZO13Z2Wq1G0gLmEAIHQAOuF+vafPd2lw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, "engines": { - "node": ">= 10" + "node": ">= 0.6" } }, - "node_modules/@next/swc-darwin-x64": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.3.1.tgz", - "integrity": "sha512-lT36yYxosCfLtplFzJWgo0hrPu6/do8+msgM7oQkPeohDNdhjtjFUgOOwdSnPublLR6Mo2Ym4P/wl5OANuD2bw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, "engines": { - "node": ">= 10" + "node": ">= 8" } }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.3.1.tgz", - "integrity": "sha512-wRb76nLWJhonH8s3kxC/1tFguEkeOPayIwe9mkaz1G/yeS3OrjeyKMJsb4+Kdg0zbTo53bNCOl59NNtDM7yyyw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "node_modules/append-field": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/append-field/-/append-field-1.0.0.tgz", + "integrity": "sha512-klpgFSWLW1ZEs8svjfb7g4qWY0YS5imI82dTg+QahUvJ8YqAY0P10Uk8tTyh9ZGuYEZEMaeJYCF5BFuX552hsw==" + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "0.26.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", + "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", + "dependencies": { + "follow-redirects": "^1.14.8" } }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.3.1.tgz", - "integrity": "sha512-qz3BzjJRZ16Iq/jrp+pjiYOc0jTjHlfmxQmZk9x/+5uhRP6/eWQSTAPVJ33BMo6oK5O5N4644OgTAbzXzorecg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-13.3.1.tgz", - "integrity": "sha512-6mgkLmwlyWlomQmpl21I3hxgqE5INoW4owTlcLpNsd1V4wP+J46BlI/5zV5KWWbzjfncIqzXoeGs5Eg+1GHODA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/body-parser": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", + "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, "engines": { - "node": ">= 10" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-13.3.1.tgz", - "integrity": "sha512-uqm5sielhQmKJM+qayIhgZv1KlS5pqTdQ99b+Z7hMWryXS96qE0DftTmMZowBcUL6x7s2vSXyH5wPtO1ON7LBg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.3.1.tgz", - "integrity": "sha512-WomIiTj/v3LevltlibNQKmvrOymNRYL+a0dp5R73IwPWN5FvXWwSELN/kiNALig/+T3luc4qHNTyvMCp9L6U5Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.3.1.tgz", - "integrity": "sha512-M+PoH+0+q658wRUbs285RIaSTYnGBSTdweH/0CdzDgA6Q4rBM0sQs4DHmO3BPP0ltCO/vViIoyG7ks66XmCA5g==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dependencies": { + "streamsearch": "^1.1.0" + }, "engines": { - "node": ">= 10" + "node": ">=10.16.0" } }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.3.1.tgz", - "integrity": "sha512-Sl1F4Vp5Z1rNXWZYqJwMuWRRol4bqOB6+/d7KqkgQ4AcafKPN1PZmpkCoxv4UFHtFNIB7EotnuIhtXu3zScicQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { - "node": ">= 10" + "node": ">= 0.8" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" }, - "engines": { - "node": ">= 8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, "engines": { - "node": ">= 8" + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "delayed-stream": "~1.0.0" }, "engines": { - "node": ">= 8" + "node": ">= 0.8" } }, - "node_modules/@pinecone-database/pinecone": { - "version": "0.0.14", - "resolved": "https://registry.npmjs.org/@pinecone-database/pinecone/-/pinecone-0.0.14.tgz", - "integrity": "sha512-uQspP/fGB2xhS/PWVD9/XnNnzuTfjukuX9IKH0EYqJMXd0Yx+ewcRADVFrF5RBeBWXBWrpGhIhvWE0hTPy/BAg==", + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], "dependencies": { - "cross-fetch": "^3.1.5" - }, - "engines": { - "node": ">=14.0.0" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" } }, - "node_modules/@pkgr/utils": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pkgr/utils/-/utils-2.3.1.tgz", - "integrity": "sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==", + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dependencies": { - "cross-spawn": "^7.0.3", - "is-glob": "^4.0.3", - "open": "^8.4.0", - "picocolors": "^1.0.0", - "tiny-glob": "^0.2.9", - "tslib": "^2.4.0" + "safe-buffer": "5.2.1" }, "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" + "node": ">= 0.6" } }, - "node_modules/@rushstack/eslint-patch": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.2.0.tgz", - "integrity": "sha512-sXo/qW2/pAcmT43VoRKOJbDOfV3cYpq3szSVfIThQXNt+E4DfKj361vaAt3c88U5tPUxzEswam7GW48PJqtKAg==" + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/@swc/helpers": { + "node_modules/cookie": { "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.0.tgz", - "integrity": "sha512-SjY/p4MmECVVEWspzSRpQEM3sjR17sP8PbGxELWrT+YZMBfiUyt1MRUNjMV23zohwlG2HYtCQOsCwsTHguXkyg==", - "dependencies": { - "tslib": "^2.4.0" + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "engines": { + "node": ">= 0.6" } }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==" + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, - "node_modules/@types/node": { - "version": "18.16.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.0.tgz", - "integrity": "sha512-BsAaKhB+7X+H4GnSjGhJG9Qi8Tw+inU9nJDwmD5CgOmBLEI6ArdhikpLX7DjbjDRDTbqZzU2LSQNZg8WGPiSZQ==" - }, - "node_modules/@types/prop-types": { - "version": "15.7.5", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz", - "integrity": "sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==" - }, - "node_modules/@types/react": { - "version": "18.0.38", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.38.tgz", - "integrity": "sha512-ExsidLLSzYj4cvaQjGnQCk4HFfVT9+EZ9XZsQ8Hsrcn8QNgXtpZ3m9vSIC2MWtx7jHictK6wYhQgGh6ic58oOw==", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, - "node_modules/@types/react-dom": { - "version": "18.0.11", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.11.tgz", - "integrity": "sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==", + "node_modules/cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "dependencies": { - "@types/react": "*" + "node-fetch": "2.6.7" } }, - "node_modules/@types/scheduler": { - "version": "0.16.3", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.3.tgz", - "integrity": "sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==" - }, - "node_modules/@typescript-eslint/parser": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.59.0.tgz", - "integrity": "sha512-qK9TZ70eJtjojSUMrrEwA9ZDQ4N0e/AuoOIgXuNBorXYcBDk397D2r5MIe1B3cok/oCtdNC5j+lUUpVB+Dpb+w==", + "node_modules/cross-fetch/node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dependencies": { - "@typescript-eslint/scope-manager": "5.59.0", - "@typescript-eslint/types": "5.59.0", - "@typescript-eslint/typescript-estree": "5.59.0", - "debug": "^4.3.4" + "whatwg-url": "^5.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "4.x || >=6.0.0" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "encoding": "^0.1.0" }, "peerDependenciesMeta": { - "typescript": { + "encoding": { "optional": true } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.59.0.tgz", - "integrity": "sha512-tsoldKaMh7izN6BvkK6zRMINj4Z2d6gGhO2UsI8zGZY3XhLq1DndP3Ycjhi1JwdwPRwtLMW4EFPgpuKhbCGOvQ==", + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "@typescript-eslint/types": "5.59.0", - "@typescript-eslint/visitor-keys": "5.59.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "ms": "2.0.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.59.0.tgz", - "integrity": "sha512-yR2h1NotF23xFFYKHZs17QJnB51J/s+ud4PYU4MqdZbzeNxpgUr05+dNeCN/bb6raslHvGdd6BFCkVhpPk/ZeA==", + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=0.4.0" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.59.0.tgz", - "integrity": "sha512-sUNnktjmI8DyGzPdZ8dRwW741zopGxltGs/SAPgGL/AAgDpiLsCFLcMNSpbfXfmnNeHmK9h3wGmCkGRGAoUZAg==", - "dependencies": { - "@typescript-eslint/types": "5.59.0", - "@typescript-eslint/visitor-keys": "5.59.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">= 0.8" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.59.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.59.0.tgz", - "integrity": "sha512-qZ3iXxQhanchCeaExlKPV3gDQFxMUmU35xfd5eCXB6+kUw1TUAbIy2n7QIrwz9s98DQLzNWyHp61fY0da4ZcbA==", - "dependencies": { - "@typescript-eslint/types": "5.59.0", - "eslint-visitor-keys": "^3.3.0" - }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "bin": { - "acorn": "bin/acorn" - }, + "node_modules/dotenv": { + "version": "16.0.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "node": ">=12" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" - } + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">= 0.8" } }, - "node_modules/any-promise": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "engines": { - "node": ">= 8" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dependencies": { - "deep-equal": "^2.0.5" + "node": ">= 0.6" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" } }, - "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" + "to-regex-range": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "engines": { "node": ">=8" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.1.tgz", - "integrity": "sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.3" + "node": ">= 0.8" } }, - "node_modules/ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==" - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/autoprefixer": { - "version": "10.4.14", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", - "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", "funding": [ { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" } ], - "dependencies": { - "browserslist": "^4.21.5", - "caniuse-lite": "^1.0.30001464", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" - }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=4.0" }, - "peerDependencies": { - "postcss": "^8.1.0" + "peerDependenciesMeta": { + "debug": { + "optional": true + } } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "engines": { - "node": ">= 0.4" + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", "engines": { - "node": ">=4" - } - }, - "node_modules/axios": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.1.tgz", - "integrity": "sha512-fPwcX4EvnSHuInCMItEhAGnaSEXRBjtzh9fOtsE6E1G6p7vl7edEeZe11QHf18+6+9gR5PbKV/sGKNaD8YaMeA==", - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, - "node_modules/axobject-query": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", - "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", - "dependencies": { - "deep-equal": "^2.0.5" + "node": ">= 6" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "engines": { - "node": ">=8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node": ">= 0.6" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/browserslist": { - "version": "4.21.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", - "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" ], - "dependencies": { - "caniuse-lite": "^1.0.30001449", - "electron-to-chromium": "^1.4.284", - "node-releases": "^2.0.8", - "update-browserslist-db": "^1.0.10" - }, - "bin": { - "browserslist": "cli.js" - }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", "dependencies": { "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "has": "^1.0.3", + "has-symbols": "^1.0.3" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-css": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", - "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001481", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001481.tgz", - "integrity": "sha512-KCqHwRnaa1InZBtqXzP98LPg0ajCVujMKjqKDhZEthIpAsJl/YEIa3YvXjGXPVqzZVguccuu7ga9KOE1J9rKPQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 6" } }, - "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], + "node_modules/gpt-3-encoder": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/gpt-3-encoder/-/gpt-3-encoder-1.1.4.tgz", + "integrity": "sha512-fSQRePV+HUAhCn7+7HL7lNIXNm6eaFWFbNLOOGtmSJ0qJycyQvj60OvRlH7mee8xAMjBDNRdMXlMwjAbMTDjkg==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dependencies": { - "node-fetch": "2.6.7" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==" - }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", - "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/deep-equal": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.0.tgz", - "integrity": "sha512-RdpzE0Hv4lhowpIUKKMJfeH6C1pXdtT1/it80ubgWqwI3qpuxUBpC1S4hnHg+zjnuOoDkzUtUCEEkG+XG5l3Mw==", - "dependencies": { - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.2", - "get-intrinsic": "^1.1.3", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.1", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "engines": { - "node": ">=8" - } - }, - "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/didyoumean": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dlv": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.369", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.369.tgz", - "integrity": "sha512-LfxbHXdA/S+qyoTEA4EbhxGjrxx7WK2h6yb5K2v0UCOufUKX+VZaHbl3svlzZfv9sGseym/g3Ne4DpsgRULmqg==" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/enhanced-resolve": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.13.0.tgz", - "integrity": "sha512-eyV8f0y1+bzyfh8xAwW/WTSZpLbjhqc4ne9eGSH4Zo2ejdyiNG9pU6mf9DG8a7+Auk6MFTlNOT4Y2y/9k8GKVg==", - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-abstract": { - "version": "1.21.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.2.tgz", - "integrity": "sha512-y/B5POM2iBnIxCiernH1G7rC9qQoM77lLIMQLuob0zhp8C56Po81+2Nj0WFKnd0pNReDTnkYryc+zhOzpEIROg==", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.0", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "8.39.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.39.0.tgz", - "integrity": "sha512-mwiok6cy7KTW7rBpo05k6+p4YVZByLNjAZ/ACB9DRCu4YDRwjXI01tWHp6KAUWelsBetTxKK/2sHB0vdS8Z2Og==", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.4.0", - "@eslint/eslintrc": "^2.0.2", - "@eslint/js": "8.39.0", - "@humanwhocodes/config-array": "^0.11.8", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.0", - "eslint-visitor-keys": "^3.4.0", - "espree": "^9.5.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-next": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.3.1.tgz", - "integrity": "sha512-DieA5djybeE3Q0IqnDXihmhgRSp44x1ywWBBpVRA9pSx+m5Icj8hFclx7ffXlAvb9MMLN6cgj/hqJ4lka/QmvA==", - "dependencies": { - "@next/eslint-plugin-next": "13.3.1", - "@rushstack/eslint-patch": "^1.1.3", - "@typescript-eslint/parser": "^5.42.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-jsx-a11y": "^6.5.1", - "eslint-plugin-react": "^7.31.7", - "eslint-plugin-react-hooks": "^4.5.0" - }, - "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0", - "typescript": ">=3.3.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.7.tgz", - "integrity": "sha512-gozW2blMLJCeFpBwugLTGyvVjNoeo1knonXAcatC6bjPBZitotxdWf7Gimr25N4c0AAOo4eOUfaG82IJPDpqCA==", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.11.0", - "resolve": "^1.22.1" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "3.5.5", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.5.5.tgz", - "integrity": "sha512-TdJqPHs2lW5J9Zpe17DZNQuDnox4xo2o+0tE7Pggain9Rbc19ik8kFtXdxZ250FVx2kF4vlt2RSf4qlUpG7bhw==", - "dependencies": { - "debug": "^4.3.4", - "enhanced-resolve": "^5.12.0", - "eslint-module-utils": "^2.7.4", - "get-tsconfig": "^4.5.0", - "globby": "^13.1.3", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3", - "synckit": "^0.8.5" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*" - } - }, - "node_modules/eslint-import-resolver-typescript/node_modules/globby": { - "version": "13.1.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.4.tgz", - "integrity": "sha512-iui/IiiW+QrJ1X1hKH5qwlMQyv34wJAYwH1vrf8b9kBA4sNiif3gKsMHa+BrdnOpEudWjpotfa7LrTzB1ERS/g==", - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-import-resolver-typescript/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.27.5", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.27.5.tgz", - "integrity": "sha512-LmEt3GVofgiGuiE+ORpnvP+kAm3h6MLZJ4Q5HCyHADofsb4VzXFsRiWj3c0OFiV+3DWFh0qg3v9gcPlfc3zRow==", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "array.prototype.flatmap": "^1.3.1", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.7", - "eslint-module-utils": "^2.7.4", - "has": "^1.0.3", - "is-core-module": "^2.11.0", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.6", - "resolve": "^1.22.1", - "semver": "^6.3.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", - "integrity": "sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==", - "dependencies": { - "@babel/runtime": "^7.20.7", - "aria-query": "^5.1.3", - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "ast-types-flow": "^0.0.7", - "axe-core": "^4.6.2", - "axobject-query": "^3.1.1", - "damerau-levenshtein": "^1.0.8", - "emoji-regex": "^9.2.2", - "has": "^1.0.3", - "jsx-ast-utils": "^3.3.3", - "language-tags": "=1.0.5", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=4.0" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-react": { - "version": "7.32.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.32.2.tgz", - "integrity": "sha512-t2fBMa+XzonrrNkyVirzKlvn5RXzzPwRHtMvLAtVZrt8oxgnTQaYbU6SXTOO1mwQgp1y5+toMSKInnzGr0Knqg==", - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-plugin-react-hooks": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", - "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" - } - }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-scope": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.0.tgz", - "integrity": "sha512-DYj5deGlHBfMt15J7rdtyKNq/Nqlv5KfU4iodrQ019XESsRnwXH9KAE0y3cwtUHDo2ob7CypAnCqefh6vioWRw==", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", - "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree": { - "version": "9.5.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", - "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", - "dependencies": { - "acorn": "^8.8.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-glob": { - "version": "3.2.12", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", - "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" - }, - "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", - "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.5.0.tgz", - "integrity": "sha512-MjhiaIWCJ1sAU4pIQ5i5OfOuHHxVo1oYeNsWTON7jxYkod8pHocXeh+SSbmu5OZZZK73B6cbJ2XADzXehLyovQ==", - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/globals": { - "version": "13.20.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", - "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globalyzer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", - "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" - }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globrex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", - "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dependencies": { - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.0.tgz", - "integrity": "sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/jiti": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", - "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/js-sdsl": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", - "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsx-ast-utils": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.3.tgz", - "integrity": "sha512-fYQHZTZ8jSfmWZ0iyzfwiU4WDX4HpHbMCZ3gPlWYiCl3BoeOTsqKBqnTVfH2rYT7eP5c3sVbeSPHnnJOaTrWiw==", - "dependencies": { - "array-includes": "^3.1.5", - "object.assign": "^4.1.3" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==" - }, - "node_modules/language-tags": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.5.tgz", - "integrity": "sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==", - "dependencies": { - "language-subtag-registry": "~0.3.2" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/mz": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", - "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dependencies": { - "any-promise": "^1.0.0", - "object-assign": "^4.0.1", - "thenify-all": "^1.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" - }, - "node_modules/next": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/next/-/next-13.3.1.tgz", - "integrity": "sha512-eByWRxPzKHs2oQz1yE41LX35umhz86ZSZ+mYyXBqn2IBi2hyUqxBA88avywdr4uyH+hCJczegGsDGWbzQA5Rqw==", - "dependencies": { - "@next/env": "13.3.1", - "@swc/helpers": "0.5.0", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001406", - "postcss": "8.4.14", - "styled-jsx": "5.1.1" - }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": ">=14.18.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "13.3.1", - "@next/swc-darwin-x64": "13.3.1", - "@next/swc-linux-arm64-gnu": "13.3.1", - "@next/swc-linux-arm64-musl": "13.3.1", - "@next/swc-linux-x64-gnu": "13.3.1", - "@next/swc-linux-x64-musl": "13.3.1", - "@next/swc-win32-arm64-msvc": "13.3.1", - "@next/swc-win32-ia32-msvc": "13.3.1", - "@next/swc-win32-x64-msvc": "13.3.1" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "fibers": ">= 3.1.0", - "node-sass": "^6.0.0 || ^7.0.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "fibers": { - "optional": true - }, - "node-sass": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-releases": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.10.tgz", - "integrity": "sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==" - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-hash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", - "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", - "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/openai": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/openai/-/openai-3.2.1.tgz", - "integrity": "sha512-762C9BNlJPbjjlWZi4WYK9iM2tAVAv0uUp1UmI34vb0CN5T2mjB/qM6RYBmNKMh/dN9fC+bxqPwWJZUTWW052A==", - "dependencies": { - "axios": "^0.26.0", - "form-data": "^4.0.0" - } - }, - "node_modules/optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "engines": { - "node": ">=8" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/postcss": { - "version": "8.4.23", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.23.tgz", - "integrity": "sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "function-bind": "^1.1.1" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">= 0.4.0" } }, - "node_modules/postcss-import": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dependencies": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "postcss": "^8.0.0" + "node": ">=4" } }, - "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dependencies": { - "camelcase-css": "^2.0.1" - }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { - "node": "^12 || ^14 || >= 16" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.4.21" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-load-config": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", - "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dependencies": { - "lilconfig": "^2.0.5", - "yaml": "^1.10.2" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">= 10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": ">=8.0.9", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "postcss": { - "optional": true - }, - "ts-node": { - "optional": true - } + "node": ">= 0.8" } }, - "node_modules/postcss-nested": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.0.tgz", - "integrity": "sha512-0DkamqrPcmkBDsLn+vQDIrtkSbNkv5AD/M322ySo9kqFkCIYklym2xEmWkwo+Y3/qZo34tzEPNUw4y7yMCdv5w==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dependencies": { - "postcss-selector-parser": "^6.0.10" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=12.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - "peerDependencies": { - "postcss": "^8.2.14" + "node": ">=0.10.0" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "engines": { - "node": ">= 0.8.0" + "node": ">=0.10.0" } }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "engines": { - "node": ">=6" + "node": ">=0.12.0" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/react": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", - "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", - "dependencies": { - "loose-envify": "^1.1.0" - }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/react-dom": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", - "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", - "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.0" + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" }, - "peerDependencies": { - "react": "^18.2.0" + "engines": { + "node": ">=4" } }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dependencies": { - "pify": "^2.3.0" + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "picomatch": "^2.2.1" + "mime-db": "1.52.0" }, "engines": { - "node": ">=8.10.0" + "node": ">= 0.6" } }, - "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.4" - }, + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", - "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dependencies": { - "is-core-module": "^2.11.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" + "minimist": "^1.2.6" }, "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "mkdirp": "bin/cmd.js" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/multer": { + "version": "1.4.5-lts.1", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.5-lts.1.tgz", + "integrity": "sha512-ywPWvcDMeH+z9gQq5qYHCCy+ethsk4goepZ45GLD63fOu0YcNecQxi64nDs3qluZB+murG3/D4dJ7+dGctcCQQ==", + "dependencies": { + "append-field": "^1.0.0", + "busboy": "^1.0.0", + "concat-stream": "^1.5.2", + "mkdirp": "^0.5.4", + "object-assign": "^4.1.1", + "type-is": "^1.6.4", + "xtend": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": ">= 6.0.0" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/node-fetch": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", + "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", "dependencies": { - "glob": "^7.1.3" + "whatwg-url": "^5.0.0" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": "4.x || >=6.0.0" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true } - ], - "dependencies": { - "queue-microtask": "^1.2.2" } }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "node_modules/nodemon": { + "version": "2.0.22", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", + "integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.1.2", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "simple-update-notifier": "^1.0.7", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/nodemon" } }, - "node_modules/scheduler": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", - "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, "dependencies": { - "loose-envify": "^1.1.0" + "ms": "^2.1.1" } }, - "node_modules/semver": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.0.tgz", - "integrity": "sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==", + "node_modules/nodemon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", + "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "abbrev": "1" }, "bin": { - "semver": "bin/semver.js" + "nopt": "bin/nopt.js" }, "engines": { - "node": ">=10" + "node": "*" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dependencies": { - "shebang-regex": "^3.0.0" - }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" + "node_modules/openai": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/openai/-/openai-3.2.1.tgz", + "integrity": "sha512-762C9BNlJPbjjlWZi4WYK9iM2tAVAv0uUp1UmI34vb0CN5T2mjB/qM6RYBmNKMh/dN9fC+bxqPwWJZUTWW052A==", + "dependencies": { + "axios": "^0.26.0", + "form-data": "^4.0.0" } }, - "node_modules/stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "node_modules/openai/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { - "internal-slot": "^1.0.4" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": ">= 0.4" + "node": ">= 6" } }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "engines": { - "node": ">=10.0.0" + "node": ">= 0.8" } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.10" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dependencies": { - "ansi-regex": "^5.0.1" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "engines": { - "node": ">=4" + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, - "node_modules/styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, "dependencies": { - "client-only": "0.0.1" + "picomatch": "^2.2.1" }, "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true + "node": ">=8.10.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" }, - "babel-plugin-macros": { - "optional": true + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } - } + ] }, - "node_modules/sucrase": { - "version": "3.32.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.32.0.tgz", - "integrity": "sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.2", - "commander": "^4.0.0", - "glob": "7.1.6", - "lines-and-columns": "^1.1.6", - "mz": "^2.7.0", - "pirates": "^4.0.1", - "ts-interface-checker": "^0.1.9" - }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, "bin": { - "sucrase": "bin/sucrase", - "sucrase-node": "bin/sucrase-node" - }, - "engines": { - "node": ">=8" + "semver": "bin/semver" } }, - "node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 0.8.0" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dependencies": { - "has-flag": "^4.0.0" + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" }, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "node_modules/simple-update-notifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", + "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", + "dev": true, "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" + "semver": "~7.0.0" }, "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" + "node": ">=8.10.0" } }, - "node_modules/tailwindcss": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.3.1.tgz", - "integrity": "sha512-Vkiouc41d4CEq0ujXl6oiGFQ7bA3WEhUZdTgXAhtKxSy49OmKs8rEfQmupsfF0IGW8fv2iQkp1EVUuapCFrZ9g==", - "dependencies": { - "arg": "^5.0.2", - "chokidar": "^3.5.3", - "color-name": "^1.1.4", - "didyoumean": "^1.2.2", - "dlv": "^1.1.3", - "fast-glob": "^3.2.12", - "glob-parent": "^6.0.2", - "is-glob": "^4.0.3", - "jiti": "^1.17.2", - "lilconfig": "^2.0.6", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.0.9", - "postcss-import": "^14.1.0", - "postcss-js": "^4.0.0", - "postcss-load-config": "^3.1.4", - "postcss-nested": "6.0.0", - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0", - "quick-lru": "^5.1.1", - "resolve": "^1.22.1", - "sucrase": "^3.29.0" - }, + "node_modules/simple-update-notifier/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, "bin": { - "tailwind": "lib/cli.js", - "tailwindcss": "lib/cli.js" - }, - "engines": { - "node": ">=12.13.0" - }, - "peerDependencies": { - "postcss": "^8.0.9" + "semver": "bin/semver.js" } }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { - "node": ">=6" + "node": ">= 0.8" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "engines": { + "node": ">=10.0.0" + } }, - "node_modules/thenify": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", - "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { - "any-promise": "^1.0.0" + "safe-buffer": "~5.1.0" } }, - "node_modules/thenify-all": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", - "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "dependencies": { - "thenify": ">= 3.1.0 < 4" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=0.8" + "node": ">=4" } }, - "node_modules/tiny-glob": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", - "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", - "dependencies": { - "globalyzer": "0.1.0", - "globrex": "^0.1.2" - } + "node_modules/throat": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", + "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==" }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -3837,90 +1340,53 @@ "node": ">=8.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/ts-interface-checker": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" - }, - "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" } }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" - }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dev": true, "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" + "nopt": "~1.0.10" }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + "bin": { + "nodetouch": "bin/nodetouch.js" } }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dependencies": { - "prelude-ls": "^1.2.1" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "node_modules/typescript": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3929,55 +1395,18 @@ "node": ">=12.20" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" } }, "node_modules/util-deprecate": { @@ -3985,6 +1414,30 @@ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, + "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==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", @@ -3999,103 +1452,20 @@ "webidl-conversions": "^3.0.0" } }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", - "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", - "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "engines": { - "node": ">= 6" + "node": ">=0.4" } }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "engines": { - "node": ">=10" - }, + "node_modules/zod": { + "version": "3.21.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/colinhacks" } } } diff --git a/package.json b/package.json index 2f91ca9..2b191ec 100644 --- a/package.json +++ b/package.json @@ -1,27 +1,36 @@ { - "name": "laws.ai", - "version": "0.1.0", - "private": true, + "name": "vector", + "version": "1.0.0", + "description": "", + "main": "index.js", "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "lint": "next lint" + "test": "echo \"Error: no test specified\" && exit 1", + "start": "npx nodemon", + "build": "rm -rf ./build && tsc && cp -r package*.json node_modules ./build" }, + "author": "sametcodes", + "license": "ISC", "dependencies": { "@pinecone-database/pinecone": "^0.0.14", - "@types/node": "18.16.0", - "@types/react": "18.0.38", - "@types/react-dom": "18.0.11", - "autoprefixer": "10.4.14", - "eslint": "8.39.0", - "eslint-config-next": "13.3.1", - "next": "13.3.1", + "dotenv": "^16.0.3", + "express": "^4.18.2", + "gpt-3-encoder": "^1.1.4", + "multer": "^1.4.5-lts.1", + "node-fetch": "^2.6.11", "openai": "^3.2.1", - "postcss": "8.4.23", - "react": "18.2.0", - "react-dom": "18.2.0", - "tailwindcss": "3.3.1", - "typescript": "5.0.4" + "throat": "^6.0.2", + "uuid": "^9.0.0", + "zod": "^3.21.4" + }, + "devDependencies": { + "@t3-oss/env-core": "^0.2.2", + "@types/express": "^4.17.17", + "@types/multer": "^1.4.7", + "@types/node": "^20.1.1", + "@types/node-fetch": "^2.6.3", + "nodemon": "^2.0.22", + "typescript": "^5.0.4", + "@types/uuid": "^9.0.1", + "@t3-oss/env-nextjs": "^0.2.2" } } diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index 33ad091..0000000 --- a/postcss.config.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - plugins: { - tailwindcss: {}, - autoprefixer: {}, - }, -} diff --git a/public/next.svg b/public/next.svg deleted file mode 100644 index 5174b28..0000000 --- a/public/next.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/public/vercel.svg b/public/vercel.svg deleted file mode 100644 index d2f8422..0000000 --- a/public/vercel.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/app/api/hello/route.ts b/src/app/api/hello/route.ts deleted file mode 100644 index d1cc6ee..0000000 --- a/src/app/api/hello/route.ts +++ /dev/null @@ -1,3 +0,0 @@ -export async function GET(request: Request) { - return new Response('Hello, Next.js!') -} diff --git a/src/app/favicon.ico b/src/app/favicon.ico deleted file mode 100644 index 718d6fea4835ec2d246af9800eddb7ffb276240c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25931 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 LrJugUA?W`A8`#=m diff --git a/src/app/globals.css b/src/app/globals.css deleted file mode 100644 index fd81e88..0000000 --- a/src/app/globals.css +++ /dev/null @@ -1,27 +0,0 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; - -:root { - --foreground-rgb: 0, 0, 0; - --background-start-rgb: 214, 219, 220; - --background-end-rgb: 255, 255, 255; -} - -@media (prefers-color-scheme: dark) { - :root { - --foreground-rgb: 255, 255, 255; - --background-start-rgb: 0, 0, 0; - --background-end-rgb: 0, 0, 0; - } -} - -body { - color: rgb(var(--foreground-rgb)); - background: linear-gradient( - to bottom, - transparent, - rgb(var(--background-end-rgb)) - ) - rgb(var(--background-start-rgb)); -} diff --git a/src/app/layout.tsx b/src/app/layout.tsx deleted file mode 100644 index 71b3fbf..0000000 --- a/src/app/layout.tsx +++ /dev/null @@ -1,21 +0,0 @@ -import './globals.css' -import { Inter } from 'next/font/google' - -const inter = Inter({ subsets: ['latin'] }) - -export const metadata = { - title: 'Create Next App', - description: 'Generated by create next app', -} - -export default function RootLayout({ - children, -}: { - children: React.ReactNode -}) { - return ( - - {children} - - ) -} diff --git a/src/app/page.tsx b/src/app/page.tsx deleted file mode 100644 index ee93c77..0000000 --- a/src/app/page.tsx +++ /dev/null @@ -1,116 +0,0 @@ -import Image from 'next/image' -import { Inter } from 'next/font/google' - -const inter = Inter({ subsets: ['latin'] }) - -export default function Home() { - return ( -

- - -
- Next.js Logo -
- - -
- ) -} diff --git a/lib/vector/env.mjs b/src/env.ts similarity index 82% rename from lib/vector/env.mjs rename to src/env.ts index 2e53944..2f7a8e8 100644 --- a/lib/vector/env.mjs +++ b/src/env.ts @@ -9,14 +9,17 @@ export const env = createEnv({ PINECONE_API_KEY: z.string().nonempty(), PINECONE_ENVIRONMENT: z.string().nonempty(), PINECONE_INDEX_NAME: z.string().nonempty(), - OPENAI_ORGANIZATION: z.string().nonempty() + OPENAI_ORGANIZATION: z.string().nonempty(), + PORT: z.string().nonempty().default("6006"), }, + client: {}, runtimeEnv: { OPENAI_API_KEY: process.env.OPENAI_API_KEY, OPENAI_ORGANIZATION: process.env.OPENAI_ORGANIZATION, PINECONE_API_KEY: process.env.PINECONE_API_KEY, PINECONE_ENVIRONMENT: process.env.PINECONE_ENVIRONMENT, PINECONE_INDEX_NAME: process.env.PINECONE_INDEX_NAME, + PORT: process.env.PORT, } }); diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..879228e --- /dev/null +++ b/src/index.ts @@ -0,0 +1,15 @@ +import express from 'express'; +import { env } from './env'; +import routes from './routes'; + +const app = express(); + +app.use(express.json()); + +routes.forEach(route => { + app[route.method](route.path, ...route.middlewares, route.handler) +}) + +app.listen(env.PORT, () => { + console.log(`Server running on port ${env.PORT}`); +}) \ No newline at end of file diff --git a/lib/vector/openai/index.ts b/src/lib/openai/index.ts similarity index 95% rename from lib/vector/openai/index.ts rename to src/lib/openai/index.ts index c52372c..2b700f9 100644 --- a/lib/vector/openai/index.ts +++ b/src/lib/openai/index.ts @@ -1,4 +1,5 @@ -import { env } from "../env.mjs"; +import { env } from "../../env"; +import fetch from "node-fetch"; export const createEmbedding = ({ input }: { input: string | Array }) => { var raw = JSON.stringify({ diff --git a/src/lib/pinecone/index.ts b/src/lib/pinecone/index.ts new file mode 100644 index 0000000..55fa51e --- /dev/null +++ b/src/lib/pinecone/index.ts @@ -0,0 +1,59 @@ +import { env } from "../../env"; +import { PineconeClient } from "@pinecone-database/pinecone"; +import { createEmbedding } from "../openai"; + +const pinecone = new PineconeClient(); +const client = pinecone.init({ + environment: env.PINECONE_ENVIRONMENT, + apiKey: env.PINECONE_API_KEY +}); + +const index = "taxonomy"; + +export const searchInVectors = async (namespace: string, vector: number[]) => { + await client; + + const pineconeIndex = pinecone.Index(index); + return pineconeIndex.query({ + queryRequest: { + namespace, + topK: 10, + vector, + includeMetadata: true + } + }); +} + +export const createCategoryVector = async (namespace: string, id: string, name: string) => { + await client; + + const response: any = await createEmbedding({ input: name }); + if(!response?.data){ + return null; + } + + const upsertRequest = { + namespace, + vectors: [{ + id: String(namespace + "_" + id), + metadata: { + id: String(id), + categoryName: name + }, + values: response.data[0].embedding + }], + }; + + const pineconeIndex = pinecone.Index(index); + return pineconeIndex.upsertRaw({ upsertRequest }); +} + +export const deleteNamespace = async (namespace: string) => { + await client; + + const pineconeIndex = pinecone.Index(index); + return pineconeIndex.delete1({ + namespace, + deleteAll: true, + }) +} \ No newline at end of file diff --git a/lib/vector/shopify/index.ts b/src/lib/shopify/index.ts similarity index 100% rename from lib/vector/shopify/index.ts rename to src/lib/shopify/index.ts diff --git a/src/routes/index.ts b/src/routes/index.ts new file mode 100644 index 0000000..35170de --- /dev/null +++ b/src/routes/index.ts @@ -0,0 +1,27 @@ +import { Request, Response } from 'express'; +import { queryCategory, createVectors } from './resolvers'; +import multer from 'multer'; + +const storage = multer.memoryStorage(); +const upload = multer({ storage: storage }); + +type Route = { + path: string, + method: 'get' | 'post' | 'put' | 'delete', + middlewares: Array, + handler: (req: Request, res: Response) => Promise | any | void +} + +const routes: Array = [{ + path: '/category/:platform', + method: 'get', + middlewares: [], + handler: queryCategory +}, { + path: '/category/:platform', + method: 'post', + middlewares: [upload.single("file")], + handler: createVectors +}] + +export default routes; \ No newline at end of file diff --git a/src/routes/resolvers.ts b/src/routes/resolvers.ts new file mode 100644 index 0000000..99e115c --- /dev/null +++ b/src/routes/resolvers.ts @@ -0,0 +1,89 @@ +import { Request, Response } from "express"; +import { searchInVectors, createCategoryVector, deleteNamespace } from '../lib/pinecone' +import { createEmbedding } from "../lib/openai"; +import { parseCSV } from "../utils"; +import throat from 'throat'; +import { v4 as uuidv4 } from 'uuid'; + +const availablePlatforms = [ + "shopify", + "amazon", + "ciceksepeti_test", + "hepsiburada", + "trendyol" +] + +export const queryCategory = async (req: Request, res: Response) => { + if (availablePlatforms.includes(req.params.platform) === false) { + return res.status(400).json({ + success: false, data: null, + error: 'The given platform is not available. Available platforms' + availablePlatforms.join(', ') + }) + } + if (!req.query.input) { + return res.status(400).json({ success: false, data: null, error: 'Input param is required' }) + } + const { input, deepSearch } = req.query; + const { platform } = req.params; + + const embedding = await createEmbedding({ input: String(input) }) + const vector: number[] = embedding.data[0].embedding; + + let response = await searchInVectors(platform, vector); + + if (deepSearch === "true") { + const uid = uuidv4(); + if (!response?.matches) return res.json({ success: false, data: null, error: "No matches found" }) + + const initial_matches: any[] = response.matches; + const temp_namespace = `temp_${uid}` + await Promise.all((initial_matches).map((category, index) => { + const deepestCategory = category.metadata.categoryName.split('>').slice(-1)[0].trim(); + return createCategoryVector(temp_namespace, String(category.metadata.id), deepestCategory) + })) + + response = await searchInVectors(temp_namespace, vector); + response.matches = response.matches?.map((match: any) => { + const initial_match = initial_matches.find((m) => m.metadata.id === match.metadata.id) + return { + ...match, + metadata: { + ...match.metadata, + categoryName: initial_match.metadata.categoryName + } + } + }) + deleteNamespace(temp_namespace) + } + + return res.json({ + success: true, + data: response.matches, + error: null + }) +} + +export const createVectors = async (req: Request, res: Response) => { + if (availablePlatforms.includes(req.params.platform) === false) { + return res.status(400).json({ + success: false, data: null, + error: 'The given platform is not available. Available platforms' + availablePlatforms.join(', ') + }) + } + if (!req.file) return res.status(400).json({ error: `You didn't provide a file` }); + + const platform = req.params.platform; + const fileContent = req.file.buffer.toString('utf-8'); + + const categories = parseCSV(fileContent); + categories.forEach(throat(50, async (category, index) => { + const response = await createCategoryVector(platform, category.id, category.name) + if (!response || response.raw.status !== 200) { + console.log(`ER: [${index + 1}/${categories.length}] ${category.name} couldn't be created`) + } else { + console.log(`OK: [${index + 1}/${categories.length}] ${category.name} is created`) + } + })) + + return res.json({ success: true, data: "OK", error: null }) +} \ No newline at end of file diff --git a/src/utils/index.ts b/src/utils/index.ts new file mode 100644 index 0000000..727027b --- /dev/null +++ b/src/utils/index.ts @@ -0,0 +1,8 @@ + +export const parseCSV = (csv: string): { id: string, name: string }[] => { + const [headers, ...lines] = csv.split("\n") + return lines.map(line => { + const [id, name] = line.split("\t") + return { id, name: name.trim() } + }) +} \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js deleted file mode 100644 index d53b2ea..0000000 --- a/tailwind.config.js +++ /dev/null @@ -1,18 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - content: [ - './src/pages/**/*.{js,ts,jsx,tsx,mdx}', - './src/components/**/*.{js,ts,jsx,tsx,mdx}', - './src/app/**/*.{js,ts,jsx,tsx,mdx}', - ], - theme: { - extend: { - backgroundImage: { - 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', - 'gradient-conic': - 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))', - }, - }, - }, - plugins: [], -} diff --git a/tsconfig.json b/tsconfig.json index 0c7555f..8f2c28b 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,28 +1,16 @@ { "compilerOptions": { "target": "es5", - "lib": ["dom", "dom.iterable", "esnext"], + "module": "commonjs", + "lib": [ + "es6" + ], "allowJs": true, - "skipLibCheck": true, + "outDir": "build", + "rootDir": "./src/", "strict": true, - "forceConsistentCasingInFileNames": true, - "noEmit": true, + "noImplicitAny": true, "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "node", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "paths": { - "@/*": ["./src/*"] - } - }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], - "exclude": ["node_modules"] -} + "resolveJsonModule": true + } +} \ No newline at end of file