├── .gitignore ├── Zod ├── index.js ├── index.ts ├── package-lock.json ├── package.json └── tsconfig.json ├── gRPC ├── client.js ├── package-lock.json ├── package.json ├── server.js └── todo.proto ├── protobuf ├── binaryData ├── data.json ├── employees.proto ├── employees_pb.js ├── index.js ├── package-lock.json └── package.json └── tRPC ├── client ├── .gitignore ├── index.html ├── package-lock.json ├── package.json ├── public │ └── vite.svg ├── src │ ├── client.ts │ └── vite-env.d.ts ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts └── server ├── api.ts ├── package-lock.json ├── package.json ├── router.ts ├── trpc.ts └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ -------------------------------------------------------------------------------- /Zod/index.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | Object.defineProperty(exports, "__esModule", { value: true }); 3 | const crypto_1 = require("crypto"); 4 | const zod_1 = require("zod"); 5 | var Cars; 6 | (function (Cars) { 7 | Cars["Ramesh"] = "Ramesh"; 8 | Cars["Suresh"] = "Suresh"; 9 | })(Cars || (Cars = {})); 10 | const UserSchema = zod_1.z 11 | .object({ 12 | id: zod_1.z.union([zod_1.z.string(), zod_1.z.number()]), 13 | username: zod_1.z.string().min(1).max(10), 14 | age: zod_1.z.number().default(18), 15 | birthday: zod_1.z.date(), 16 | isProgrammer: zod_1.z.boolean().optional().nullable(), 17 | undef: zod_1.z.undefined(), 18 | isDriver: zod_1.z.literal(true).optional(), 19 | hobbies: zod_1.z.string().array(), 20 | relative: zod_1.z.enum(["Ramesh", "Suresh"]), 21 | cars: zod_1.z.nativeEnum(Cars).optional(), 22 | tup: zod_1.z.tuple([zod_1.z.string()]).rest(zod_1.z.number()) 23 | }) 24 | .passthrough(); 25 | const user_data = { 26 | id: "1", 27 | username: "Ramesh", 28 | age: 12, 29 | birthday: new Date(), 30 | isProgrammer: true, 31 | hobbies: ["Hello"], 32 | relative: "Ramesh", 33 | cars: Cars.Ramesh, 34 | hello: "Rakesh", 35 | tup: ["", 1, 2, 3, 4] 36 | }; 37 | console.log(UserSchema.parse(user_data)); 38 | console.log(UserSchema.shape.age); 39 | console.log(UserSchema.partial().parse(user_data)); 40 | // Schema.partial() 41 | // .pick({ 42 | // username: true, 43 | // age: true, 44 | // cars: true 45 | // }) 46 | // .omit({ 47 | // cars: true 48 | // }); 49 | // Discriminated Union 50 | const employeeSchema = zod_1.z 51 | .object({ 52 | id: zod_1.z.discriminatedUnion("status", [ 53 | zod_1.z.object({ 54 | status: zod_1.z.literal("success"), 55 | data: zod_1.z.string() 56 | }), 57 | zod_1.z.object({ 58 | status: zod_1.z.literal("error"), 59 | error: zod_1.z.instanceof(Error) 60 | }) 61 | ]) 62 | }) 63 | .strict(); 64 | // const employee: Employee = { 65 | // id: { 66 | // status: "error", 67 | // error: new Error("Hi I am error!") 68 | // } 69 | // }; 70 | // console.log(employeeSchema.safeParse(employee)); 71 | // Record 72 | const KeyVal = zod_1.z.record(zod_1.z.string(), zod_1.z.number()); 73 | const recordVal = { 74 | Hello: 1 75 | }; 76 | console.log(KeyVal.parse(recordVal)); 77 | // Map 78 | const friends = new Map([ 79 | [ 80 | "Hello", 81 | { 82 | name: "Rakesh" 83 | } 84 | ], 85 | [ 86 | "Hey", 87 | { 88 | name: "Ramesh" 89 | } 90 | ] 91 | ]); 92 | const friendSchema = zod_1.z.map(zod_1.z.string(), zod_1.z.object({ 93 | name: zod_1.z.string() 94 | })); 95 | console.log(friendSchema.parse(friends)); 96 | // Set 97 | const setSchema = zod_1.z.set(zod_1.z.number()); 98 | console.log(setSchema.parse(new Set([1, 2, 4]))); 99 | // Promise 100 | const promiseSchema = zod_1.z.promise(zod_1.z.number()); 101 | const promise = new Promise((resolve, reject) => { 102 | resolve(2); 103 | }); 104 | console.log(promiseSchema.parse(promise)); 105 | // Email and Refining! 106 | const emaill = zod_1.z.string().refine((val) => val.endsWith("@gmail.com"), { 107 | message: "Email must end with gmail.com" 108 | }); 109 | console.log(emaill.parse("ritvik@gmail.com")); 110 | console.log(zod_1.z.string().email("Not a email").parse("ritvik@g.com")); 111 | console.log(zod_1.z.string().ip().parse("102.12.12.12")); 112 | console.log(zod_1.z.string().emoji("Not a emoji!").parse("🎉")); 113 | console.log(zod_1.z.string().uuid().parse((0, crypto_1.randomUUID)())); 114 | console.log(zod_1.z.string().url().parse("https://www.github.com")); 115 | console.log(zod_1.z.string().trim().parse("Hello ")); 116 | const Strings = zod_1.z.array(zod_1.z.string()).superRefine((val, ctx) => { 117 | if (val.length > 3) { 118 | ctx.addIssue({ 119 | code: zod_1.z.ZodIssueCode.too_big, 120 | maximum: 3, 121 | type: "array", 122 | inclusive: true, 123 | message: "Too many items" 124 | }); 125 | } 126 | if (val.length !== new Set(val).size) { 127 | ctx.addIssue({ 128 | code: zod_1.z.ZodIssueCode.custom, 129 | message: `No duplicates allowed.` 130 | }); 131 | } 132 | }); 133 | console.log(Strings.parse(["R", "A", "K", "J"])); 134 | -------------------------------------------------------------------------------- /Zod/index.ts: -------------------------------------------------------------------------------- 1 | import { randomUUID } from "crypto"; 2 | import { z } from "zod"; 3 | 4 | enum Cars { 5 | Ramesh = "Ramesh", 6 | Suresh = "Suresh" 7 | } 8 | 9 | const UserSchema = z 10 | .object({ 11 | id: z.union([z.string(), z.number()]), 12 | username: z.string().min(1).max(10), 13 | age: z.number().default(18), 14 | birthday: z.date(), 15 | isProgrammer: z.boolean().optional().nullable(), 16 | undef: z.undefined(), 17 | isDriver: z.literal(true).optional(), 18 | hobbies: z.string().array(), 19 | relative: z.enum(["Ramesh", "Suresh"] as const), 20 | cars: z.nativeEnum(Cars).optional(), 21 | tup: z.tuple([z.string()]).rest(z.number()) 22 | }) 23 | .passthrough(); 24 | 25 | type User = z.infer; 26 | 27 | const user_data: User = { 28 | id: "1", 29 | username: "Ramesh", 30 | age: 12, 31 | birthday: new Date(), 32 | isProgrammer: true, 33 | hobbies: ["Hello"], 34 | relative: "Ramesh", 35 | cars: Cars.Ramesh, 36 | hello: "Rakesh", 37 | tup: ["", 1, 2, 3, 4] 38 | }; 39 | 40 | console.log(UserSchema.parse(user_data)); 41 | console.log(UserSchema.shape.age); 42 | console.log(UserSchema.partial().parse(user_data)); 43 | 44 | // Schema.partial() 45 | // .pick({ 46 | // username: true, 47 | // age: true, 48 | // cars: true 49 | // }) 50 | // .omit({ 51 | // cars: true 52 | // }); 53 | 54 | // Discriminated Union 55 | const employeeSchema = z 56 | .object({ 57 | id: z.discriminatedUnion("status", [ 58 | z.object({ 59 | status: z.literal("success"), 60 | data: z.string() 61 | }), 62 | z.object({ 63 | status: z.literal("error"), 64 | error: z.instanceof(Error) 65 | }) 66 | ]) 67 | }) 68 | .strict(); 69 | 70 | type Employee = z.infer; 71 | // const employee: Employee = { 72 | // id: { 73 | // status: "error", 74 | // error: new Error("Hi I am error!") 75 | // } 76 | // }; 77 | // console.log(employeeSchema.safeParse(employee)); 78 | 79 | // Record 80 | 81 | const KeyVal = z.record(z.string(), z.number()); 82 | const recordVal = { 83 | Hello: 1 84 | }; 85 | console.log(KeyVal.parse(recordVal)); 86 | 87 | // Map 88 | 89 | const friends = new Map([ 90 | [ 91 | "Hello", 92 | { 93 | name: "Rakesh" 94 | } 95 | ], 96 | [ 97 | "Hey", 98 | { 99 | name: "Ramesh" 100 | } 101 | ] 102 | ]); 103 | const friendSchema = z.map( 104 | z.string(), 105 | z.object({ 106 | name: z.string() 107 | }) 108 | ); 109 | 110 | console.log(friendSchema.parse(friends)); 111 | 112 | // Set 113 | 114 | const setSchema = z.set(z.number()); 115 | console.log(setSchema.parse(new Set([1, 2, 4]))); 116 | 117 | // Promise 118 | 119 | const promiseSchema = z.promise(z.number()); 120 | const promise = new Promise((resolve, reject) => { 121 | resolve(2); 122 | }); 123 | console.log(promiseSchema.parse(promise)); 124 | 125 | // Email and Refining! 126 | 127 | const emaill = z.string().refine((val) => val.endsWith("@gmail.com"), { 128 | message: "Email must end with gmail.com" 129 | }); 130 | console.log(emaill.parse("ritvik@gmail.com")); 131 | console.log(z.string().email("Not a email").parse("ritvik@g.com")); 132 | console.log(z.string().ip().parse("102.12.12.12")); 133 | console.log(z.string().emoji("Not a emoji!").parse("🎉")); 134 | console.log(z.string().uuid().parse(randomUUID())); 135 | console.log(z.string().url().parse("https://www.github.com")); 136 | console.log(z.string().trim().parse("Hello ")); 137 | const Strings = z.array(z.string()).superRefine((val, ctx) => { 138 | if (val.length > 3) { 139 | ctx.addIssue({ 140 | code: z.ZodIssueCode.too_big, 141 | maximum: 3, 142 | type: "array", 143 | inclusive: true, 144 | message: "Too many items" 145 | }); 146 | } 147 | 148 | if (val.length !== new Set(val).size) { 149 | ctx.addIssue({ 150 | code: z.ZodIssueCode.custom, 151 | message: `No duplicates allowed.` 152 | }); 153 | } 154 | }); 155 | 156 | console.log(Strings.parse(["R", "A", "K", "J"])); 157 | -------------------------------------------------------------------------------- /Zod/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "zod", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "zod", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "express": "^4.18.2", 13 | "zod": "^3.21.0" 14 | }, 15 | "devDependencies": { 16 | "nodemon": "^2.0.21", 17 | "ts-node": "^10.9.1", 18 | "typescript": "^4.9.5" 19 | } 20 | }, 21 | "node_modules/@cspotcode/source-map-support": { 22 | "version": "0.8.1", 23 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 24 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 25 | "dev": true, 26 | "dependencies": { 27 | "@jridgewell/trace-mapping": "0.3.9" 28 | }, 29 | "engines": { 30 | "node": ">=12" 31 | } 32 | }, 33 | "node_modules/@jridgewell/resolve-uri": { 34 | "version": "3.1.0", 35 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 36 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 37 | "dev": true, 38 | "engines": { 39 | "node": ">=6.0.0" 40 | } 41 | }, 42 | "node_modules/@jridgewell/sourcemap-codec": { 43 | "version": "1.4.14", 44 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 45 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 46 | "dev": true 47 | }, 48 | "node_modules/@jridgewell/trace-mapping": { 49 | "version": "0.3.9", 50 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 51 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 52 | "dev": true, 53 | "dependencies": { 54 | "@jridgewell/resolve-uri": "^3.0.3", 55 | "@jridgewell/sourcemap-codec": "^1.4.10" 56 | } 57 | }, 58 | "node_modules/@tsconfig/node10": { 59 | "version": "1.0.9", 60 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", 61 | "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", 62 | "dev": true 63 | }, 64 | "node_modules/@tsconfig/node12": { 65 | "version": "1.0.11", 66 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", 67 | "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", 68 | "dev": true 69 | }, 70 | "node_modules/@tsconfig/node14": { 71 | "version": "1.0.3", 72 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", 73 | "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", 74 | "dev": true 75 | }, 76 | "node_modules/@tsconfig/node16": { 77 | "version": "1.0.3", 78 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", 79 | "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", 80 | "dev": true 81 | }, 82 | "node_modules/@types/node": { 83 | "version": "18.14.6", 84 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", 85 | "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==", 86 | "dev": true, 87 | "peer": true 88 | }, 89 | "node_modules/abbrev": { 90 | "version": "1.1.1", 91 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 92 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", 93 | "dev": true 94 | }, 95 | "node_modules/accepts": { 96 | "version": "1.3.8", 97 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 98 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 99 | "dependencies": { 100 | "mime-types": "~2.1.34", 101 | "negotiator": "0.6.3" 102 | }, 103 | "engines": { 104 | "node": ">= 0.6" 105 | } 106 | }, 107 | "node_modules/acorn": { 108 | "version": "8.8.2", 109 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", 110 | "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", 111 | "dev": true, 112 | "bin": { 113 | "acorn": "bin/acorn" 114 | }, 115 | "engines": { 116 | "node": ">=0.4.0" 117 | } 118 | }, 119 | "node_modules/acorn-walk": { 120 | "version": "8.2.0", 121 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 122 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", 123 | "dev": true, 124 | "engines": { 125 | "node": ">=0.4.0" 126 | } 127 | }, 128 | "node_modules/anymatch": { 129 | "version": "3.1.3", 130 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 131 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 132 | "dev": true, 133 | "dependencies": { 134 | "normalize-path": "^3.0.0", 135 | "picomatch": "^2.0.4" 136 | }, 137 | "engines": { 138 | "node": ">= 8" 139 | } 140 | }, 141 | "node_modules/arg": { 142 | "version": "4.1.3", 143 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 144 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 145 | "dev": true 146 | }, 147 | "node_modules/array-flatten": { 148 | "version": "1.1.1", 149 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 150 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 151 | }, 152 | "node_modules/balanced-match": { 153 | "version": "1.0.2", 154 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 155 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 156 | "dev": true 157 | }, 158 | "node_modules/binary-extensions": { 159 | "version": "2.2.0", 160 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 161 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 162 | "dev": true, 163 | "engines": { 164 | "node": ">=8" 165 | } 166 | }, 167 | "node_modules/body-parser": { 168 | "version": "1.20.1", 169 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", 170 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", 171 | "dependencies": { 172 | "bytes": "3.1.2", 173 | "content-type": "~1.0.4", 174 | "debug": "2.6.9", 175 | "depd": "2.0.0", 176 | "destroy": "1.2.0", 177 | "http-errors": "2.0.0", 178 | "iconv-lite": "0.4.24", 179 | "on-finished": "2.4.1", 180 | "qs": "6.11.0", 181 | "raw-body": "2.5.1", 182 | "type-is": "~1.6.18", 183 | "unpipe": "1.0.0" 184 | }, 185 | "engines": { 186 | "node": ">= 0.8", 187 | "npm": "1.2.8000 || >= 1.4.16" 188 | } 189 | }, 190 | "node_modules/brace-expansion": { 191 | "version": "1.1.11", 192 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 193 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 194 | "dev": true, 195 | "dependencies": { 196 | "balanced-match": "^1.0.0", 197 | "concat-map": "0.0.1" 198 | } 199 | }, 200 | "node_modules/braces": { 201 | "version": "3.0.2", 202 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 203 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 204 | "dev": true, 205 | "dependencies": { 206 | "fill-range": "^7.0.1" 207 | }, 208 | "engines": { 209 | "node": ">=8" 210 | } 211 | }, 212 | "node_modules/bytes": { 213 | "version": "3.1.2", 214 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 215 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 216 | "engines": { 217 | "node": ">= 0.8" 218 | } 219 | }, 220 | "node_modules/call-bind": { 221 | "version": "1.0.2", 222 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 223 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 224 | "dependencies": { 225 | "function-bind": "^1.1.1", 226 | "get-intrinsic": "^1.0.2" 227 | }, 228 | "funding": { 229 | "url": "https://github.com/sponsors/ljharb" 230 | } 231 | }, 232 | "node_modules/chokidar": { 233 | "version": "3.5.3", 234 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 235 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 236 | "dev": true, 237 | "funding": [ 238 | { 239 | "type": "individual", 240 | "url": "https://paulmillr.com/funding/" 241 | } 242 | ], 243 | "dependencies": { 244 | "anymatch": "~3.1.2", 245 | "braces": "~3.0.2", 246 | "glob-parent": "~5.1.2", 247 | "is-binary-path": "~2.1.0", 248 | "is-glob": "~4.0.1", 249 | "normalize-path": "~3.0.0", 250 | "readdirp": "~3.6.0" 251 | }, 252 | "engines": { 253 | "node": ">= 8.10.0" 254 | }, 255 | "optionalDependencies": { 256 | "fsevents": "~2.3.2" 257 | } 258 | }, 259 | "node_modules/concat-map": { 260 | "version": "0.0.1", 261 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 262 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 263 | "dev": true 264 | }, 265 | "node_modules/content-disposition": { 266 | "version": "0.5.4", 267 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 268 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 269 | "dependencies": { 270 | "safe-buffer": "5.2.1" 271 | }, 272 | "engines": { 273 | "node": ">= 0.6" 274 | } 275 | }, 276 | "node_modules/content-type": { 277 | "version": "1.0.5", 278 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", 279 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", 280 | "engines": { 281 | "node": ">= 0.6" 282 | } 283 | }, 284 | "node_modules/cookie": { 285 | "version": "0.5.0", 286 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 287 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", 288 | "engines": { 289 | "node": ">= 0.6" 290 | } 291 | }, 292 | "node_modules/cookie-signature": { 293 | "version": "1.0.6", 294 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 295 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 296 | }, 297 | "node_modules/create-require": { 298 | "version": "1.1.1", 299 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 300 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", 301 | "dev": true 302 | }, 303 | "node_modules/debug": { 304 | "version": "2.6.9", 305 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 306 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 307 | "dependencies": { 308 | "ms": "2.0.0" 309 | } 310 | }, 311 | "node_modules/depd": { 312 | "version": "2.0.0", 313 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 314 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 315 | "engines": { 316 | "node": ">= 0.8" 317 | } 318 | }, 319 | "node_modules/destroy": { 320 | "version": "1.2.0", 321 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 322 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 323 | "engines": { 324 | "node": ">= 0.8", 325 | "npm": "1.2.8000 || >= 1.4.16" 326 | } 327 | }, 328 | "node_modules/diff": { 329 | "version": "4.0.2", 330 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 331 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 332 | "dev": true, 333 | "engines": { 334 | "node": ">=0.3.1" 335 | } 336 | }, 337 | "node_modules/ee-first": { 338 | "version": "1.1.1", 339 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 340 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 341 | }, 342 | "node_modules/encodeurl": { 343 | "version": "1.0.2", 344 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 345 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", 346 | "engines": { 347 | "node": ">= 0.8" 348 | } 349 | }, 350 | "node_modules/escape-html": { 351 | "version": "1.0.3", 352 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 353 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 354 | }, 355 | "node_modules/etag": { 356 | "version": "1.8.1", 357 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 358 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", 359 | "engines": { 360 | "node": ">= 0.6" 361 | } 362 | }, 363 | "node_modules/express": { 364 | "version": "4.18.2", 365 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", 366 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", 367 | "dependencies": { 368 | "accepts": "~1.3.8", 369 | "array-flatten": "1.1.1", 370 | "body-parser": "1.20.1", 371 | "content-disposition": "0.5.4", 372 | "content-type": "~1.0.4", 373 | "cookie": "0.5.0", 374 | "cookie-signature": "1.0.6", 375 | "debug": "2.6.9", 376 | "depd": "2.0.0", 377 | "encodeurl": "~1.0.2", 378 | "escape-html": "~1.0.3", 379 | "etag": "~1.8.1", 380 | "finalhandler": "1.2.0", 381 | "fresh": "0.5.2", 382 | "http-errors": "2.0.0", 383 | "merge-descriptors": "1.0.1", 384 | "methods": "~1.1.2", 385 | "on-finished": "2.4.1", 386 | "parseurl": "~1.3.3", 387 | "path-to-regexp": "0.1.7", 388 | "proxy-addr": "~2.0.7", 389 | "qs": "6.11.0", 390 | "range-parser": "~1.2.1", 391 | "safe-buffer": "5.2.1", 392 | "send": "0.18.0", 393 | "serve-static": "1.15.0", 394 | "setprototypeof": "1.2.0", 395 | "statuses": "2.0.1", 396 | "type-is": "~1.6.18", 397 | "utils-merge": "1.0.1", 398 | "vary": "~1.1.2" 399 | }, 400 | "engines": { 401 | "node": ">= 0.10.0" 402 | } 403 | }, 404 | "node_modules/fill-range": { 405 | "version": "7.0.1", 406 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 407 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 408 | "dev": true, 409 | "dependencies": { 410 | "to-regex-range": "^5.0.1" 411 | }, 412 | "engines": { 413 | "node": ">=8" 414 | } 415 | }, 416 | "node_modules/finalhandler": { 417 | "version": "1.2.0", 418 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 419 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 420 | "dependencies": { 421 | "debug": "2.6.9", 422 | "encodeurl": "~1.0.2", 423 | "escape-html": "~1.0.3", 424 | "on-finished": "2.4.1", 425 | "parseurl": "~1.3.3", 426 | "statuses": "2.0.1", 427 | "unpipe": "~1.0.0" 428 | }, 429 | "engines": { 430 | "node": ">= 0.8" 431 | } 432 | }, 433 | "node_modules/forwarded": { 434 | "version": "0.2.0", 435 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 436 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", 437 | "engines": { 438 | "node": ">= 0.6" 439 | } 440 | }, 441 | "node_modules/fresh": { 442 | "version": "0.5.2", 443 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 444 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", 445 | "engines": { 446 | "node": ">= 0.6" 447 | } 448 | }, 449 | "node_modules/fsevents": { 450 | "version": "2.3.2", 451 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 452 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 453 | "dev": true, 454 | "hasInstallScript": true, 455 | "optional": true, 456 | "os": [ 457 | "darwin" 458 | ], 459 | "engines": { 460 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 461 | } 462 | }, 463 | "node_modules/function-bind": { 464 | "version": "1.1.1", 465 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 466 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 467 | }, 468 | "node_modules/get-intrinsic": { 469 | "version": "1.2.0", 470 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", 471 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", 472 | "dependencies": { 473 | "function-bind": "^1.1.1", 474 | "has": "^1.0.3", 475 | "has-symbols": "^1.0.3" 476 | }, 477 | "funding": { 478 | "url": "https://github.com/sponsors/ljharb" 479 | } 480 | }, 481 | "node_modules/glob-parent": { 482 | "version": "5.1.2", 483 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 484 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 485 | "dev": true, 486 | "dependencies": { 487 | "is-glob": "^4.0.1" 488 | }, 489 | "engines": { 490 | "node": ">= 6" 491 | } 492 | }, 493 | "node_modules/has": { 494 | "version": "1.0.3", 495 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 496 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 497 | "dependencies": { 498 | "function-bind": "^1.1.1" 499 | }, 500 | "engines": { 501 | "node": ">= 0.4.0" 502 | } 503 | }, 504 | "node_modules/has-flag": { 505 | "version": "3.0.0", 506 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 507 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 508 | "dev": true, 509 | "engines": { 510 | "node": ">=4" 511 | } 512 | }, 513 | "node_modules/has-symbols": { 514 | "version": "1.0.3", 515 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 516 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 517 | "engines": { 518 | "node": ">= 0.4" 519 | }, 520 | "funding": { 521 | "url": "https://github.com/sponsors/ljharb" 522 | } 523 | }, 524 | "node_modules/http-errors": { 525 | "version": "2.0.0", 526 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 527 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 528 | "dependencies": { 529 | "depd": "2.0.0", 530 | "inherits": "2.0.4", 531 | "setprototypeof": "1.2.0", 532 | "statuses": "2.0.1", 533 | "toidentifier": "1.0.1" 534 | }, 535 | "engines": { 536 | "node": ">= 0.8" 537 | } 538 | }, 539 | "node_modules/iconv-lite": { 540 | "version": "0.4.24", 541 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 542 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 543 | "dependencies": { 544 | "safer-buffer": ">= 2.1.2 < 3" 545 | }, 546 | "engines": { 547 | "node": ">=0.10.0" 548 | } 549 | }, 550 | "node_modules/ignore-by-default": { 551 | "version": "1.0.1", 552 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 553 | "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", 554 | "dev": true 555 | }, 556 | "node_modules/inherits": { 557 | "version": "2.0.4", 558 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 559 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 560 | }, 561 | "node_modules/ipaddr.js": { 562 | "version": "1.9.1", 563 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 564 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 565 | "engines": { 566 | "node": ">= 0.10" 567 | } 568 | }, 569 | "node_modules/is-binary-path": { 570 | "version": "2.1.0", 571 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 572 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 573 | "dev": true, 574 | "dependencies": { 575 | "binary-extensions": "^2.0.0" 576 | }, 577 | "engines": { 578 | "node": ">=8" 579 | } 580 | }, 581 | "node_modules/is-extglob": { 582 | "version": "2.1.1", 583 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 584 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 585 | "dev": true, 586 | "engines": { 587 | "node": ">=0.10.0" 588 | } 589 | }, 590 | "node_modules/is-glob": { 591 | "version": "4.0.3", 592 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 593 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 594 | "dev": true, 595 | "dependencies": { 596 | "is-extglob": "^2.1.1" 597 | }, 598 | "engines": { 599 | "node": ">=0.10.0" 600 | } 601 | }, 602 | "node_modules/is-number": { 603 | "version": "7.0.0", 604 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 605 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 606 | "dev": true, 607 | "engines": { 608 | "node": ">=0.12.0" 609 | } 610 | }, 611 | "node_modules/make-error": { 612 | "version": "1.3.6", 613 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 614 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 615 | "dev": true 616 | }, 617 | "node_modules/media-typer": { 618 | "version": "0.3.0", 619 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 620 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", 621 | "engines": { 622 | "node": ">= 0.6" 623 | } 624 | }, 625 | "node_modules/merge-descriptors": { 626 | "version": "1.0.1", 627 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 628 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" 629 | }, 630 | "node_modules/methods": { 631 | "version": "1.1.2", 632 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 633 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", 634 | "engines": { 635 | "node": ">= 0.6" 636 | } 637 | }, 638 | "node_modules/mime": { 639 | "version": "1.6.0", 640 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 641 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 642 | "bin": { 643 | "mime": "cli.js" 644 | }, 645 | "engines": { 646 | "node": ">=4" 647 | } 648 | }, 649 | "node_modules/mime-db": { 650 | "version": "1.52.0", 651 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 652 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 653 | "engines": { 654 | "node": ">= 0.6" 655 | } 656 | }, 657 | "node_modules/mime-types": { 658 | "version": "2.1.35", 659 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 660 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 661 | "dependencies": { 662 | "mime-db": "1.52.0" 663 | }, 664 | "engines": { 665 | "node": ">= 0.6" 666 | } 667 | }, 668 | "node_modules/minimatch": { 669 | "version": "3.1.2", 670 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 671 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 672 | "dev": true, 673 | "dependencies": { 674 | "brace-expansion": "^1.1.7" 675 | }, 676 | "engines": { 677 | "node": "*" 678 | } 679 | }, 680 | "node_modules/ms": { 681 | "version": "2.0.0", 682 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 683 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 684 | }, 685 | "node_modules/negotiator": { 686 | "version": "0.6.3", 687 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 688 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 689 | "engines": { 690 | "node": ">= 0.6" 691 | } 692 | }, 693 | "node_modules/nodemon": { 694 | "version": "2.0.21", 695 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.21.tgz", 696 | "integrity": "sha512-djN/n2549DUtY33S7o1djRCd7dEm0kBnj9c7S9XVXqRUbuggN1MZH/Nqa+5RFQr63Fbefq37nFXAE9VU86yL1A==", 697 | "dev": true, 698 | "dependencies": { 699 | "chokidar": "^3.5.2", 700 | "debug": "^3.2.7", 701 | "ignore-by-default": "^1.0.1", 702 | "minimatch": "^3.1.2", 703 | "pstree.remy": "^1.1.8", 704 | "semver": "^5.7.1", 705 | "simple-update-notifier": "^1.0.7", 706 | "supports-color": "^5.5.0", 707 | "touch": "^3.1.0", 708 | "undefsafe": "^2.0.5" 709 | }, 710 | "bin": { 711 | "nodemon": "bin/nodemon.js" 712 | }, 713 | "engines": { 714 | "node": ">=8.10.0" 715 | }, 716 | "funding": { 717 | "type": "opencollective", 718 | "url": "https://opencollective.com/nodemon" 719 | } 720 | }, 721 | "node_modules/nodemon/node_modules/debug": { 722 | "version": "3.2.7", 723 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 724 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 725 | "dev": true, 726 | "dependencies": { 727 | "ms": "^2.1.1" 728 | } 729 | }, 730 | "node_modules/nodemon/node_modules/ms": { 731 | "version": "2.1.3", 732 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 733 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 734 | "dev": true 735 | }, 736 | "node_modules/nopt": { 737 | "version": "1.0.10", 738 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", 739 | "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", 740 | "dev": true, 741 | "dependencies": { 742 | "abbrev": "1" 743 | }, 744 | "bin": { 745 | "nopt": "bin/nopt.js" 746 | }, 747 | "engines": { 748 | "node": "*" 749 | } 750 | }, 751 | "node_modules/normalize-path": { 752 | "version": "3.0.0", 753 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 754 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 755 | "dev": true, 756 | "engines": { 757 | "node": ">=0.10.0" 758 | } 759 | }, 760 | "node_modules/object-inspect": { 761 | "version": "1.12.3", 762 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 763 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", 764 | "funding": { 765 | "url": "https://github.com/sponsors/ljharb" 766 | } 767 | }, 768 | "node_modules/on-finished": { 769 | "version": "2.4.1", 770 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 771 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 772 | "dependencies": { 773 | "ee-first": "1.1.1" 774 | }, 775 | "engines": { 776 | "node": ">= 0.8" 777 | } 778 | }, 779 | "node_modules/parseurl": { 780 | "version": "1.3.3", 781 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 782 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 783 | "engines": { 784 | "node": ">= 0.8" 785 | } 786 | }, 787 | "node_modules/path-to-regexp": { 788 | "version": "0.1.7", 789 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 790 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" 791 | }, 792 | "node_modules/picomatch": { 793 | "version": "2.3.1", 794 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 795 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 796 | "dev": true, 797 | "engines": { 798 | "node": ">=8.6" 799 | }, 800 | "funding": { 801 | "url": "https://github.com/sponsors/jonschlinkert" 802 | } 803 | }, 804 | "node_modules/proxy-addr": { 805 | "version": "2.0.7", 806 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 807 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 808 | "dependencies": { 809 | "forwarded": "0.2.0", 810 | "ipaddr.js": "1.9.1" 811 | }, 812 | "engines": { 813 | "node": ">= 0.10" 814 | } 815 | }, 816 | "node_modules/pstree.remy": { 817 | "version": "1.1.8", 818 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", 819 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", 820 | "dev": true 821 | }, 822 | "node_modules/qs": { 823 | "version": "6.11.0", 824 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 825 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 826 | "dependencies": { 827 | "side-channel": "^1.0.4" 828 | }, 829 | "engines": { 830 | "node": ">=0.6" 831 | }, 832 | "funding": { 833 | "url": "https://github.com/sponsors/ljharb" 834 | } 835 | }, 836 | "node_modules/range-parser": { 837 | "version": "1.2.1", 838 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 839 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 840 | "engines": { 841 | "node": ">= 0.6" 842 | } 843 | }, 844 | "node_modules/raw-body": { 845 | "version": "2.5.1", 846 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 847 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 848 | "dependencies": { 849 | "bytes": "3.1.2", 850 | "http-errors": "2.0.0", 851 | "iconv-lite": "0.4.24", 852 | "unpipe": "1.0.0" 853 | }, 854 | "engines": { 855 | "node": ">= 0.8" 856 | } 857 | }, 858 | "node_modules/readdirp": { 859 | "version": "3.6.0", 860 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 861 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 862 | "dev": true, 863 | "dependencies": { 864 | "picomatch": "^2.2.1" 865 | }, 866 | "engines": { 867 | "node": ">=8.10.0" 868 | } 869 | }, 870 | "node_modules/safe-buffer": { 871 | "version": "5.2.1", 872 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 873 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 874 | "funding": [ 875 | { 876 | "type": "github", 877 | "url": "https://github.com/sponsors/feross" 878 | }, 879 | { 880 | "type": "patreon", 881 | "url": "https://www.patreon.com/feross" 882 | }, 883 | { 884 | "type": "consulting", 885 | "url": "https://feross.org/support" 886 | } 887 | ] 888 | }, 889 | "node_modules/safer-buffer": { 890 | "version": "2.1.2", 891 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 892 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 893 | }, 894 | "node_modules/semver": { 895 | "version": "5.7.1", 896 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 897 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 898 | "dev": true, 899 | "bin": { 900 | "semver": "bin/semver" 901 | } 902 | }, 903 | "node_modules/send": { 904 | "version": "0.18.0", 905 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 906 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 907 | "dependencies": { 908 | "debug": "2.6.9", 909 | "depd": "2.0.0", 910 | "destroy": "1.2.0", 911 | "encodeurl": "~1.0.2", 912 | "escape-html": "~1.0.3", 913 | "etag": "~1.8.1", 914 | "fresh": "0.5.2", 915 | "http-errors": "2.0.0", 916 | "mime": "1.6.0", 917 | "ms": "2.1.3", 918 | "on-finished": "2.4.1", 919 | "range-parser": "~1.2.1", 920 | "statuses": "2.0.1" 921 | }, 922 | "engines": { 923 | "node": ">= 0.8.0" 924 | } 925 | }, 926 | "node_modules/send/node_modules/ms": { 927 | "version": "2.1.3", 928 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 929 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 930 | }, 931 | "node_modules/serve-static": { 932 | "version": "1.15.0", 933 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 934 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 935 | "dependencies": { 936 | "encodeurl": "~1.0.2", 937 | "escape-html": "~1.0.3", 938 | "parseurl": "~1.3.3", 939 | "send": "0.18.0" 940 | }, 941 | "engines": { 942 | "node": ">= 0.8.0" 943 | } 944 | }, 945 | "node_modules/setprototypeof": { 946 | "version": "1.2.0", 947 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 948 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 949 | }, 950 | "node_modules/side-channel": { 951 | "version": "1.0.4", 952 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 953 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 954 | "dependencies": { 955 | "call-bind": "^1.0.0", 956 | "get-intrinsic": "^1.0.2", 957 | "object-inspect": "^1.9.0" 958 | }, 959 | "funding": { 960 | "url": "https://github.com/sponsors/ljharb" 961 | } 962 | }, 963 | "node_modules/simple-update-notifier": { 964 | "version": "1.1.0", 965 | "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", 966 | "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", 967 | "dev": true, 968 | "dependencies": { 969 | "semver": "~7.0.0" 970 | }, 971 | "engines": { 972 | "node": ">=8.10.0" 973 | } 974 | }, 975 | "node_modules/simple-update-notifier/node_modules/semver": { 976 | "version": "7.0.0", 977 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", 978 | "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", 979 | "dev": true, 980 | "bin": { 981 | "semver": "bin/semver.js" 982 | } 983 | }, 984 | "node_modules/statuses": { 985 | "version": "2.0.1", 986 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 987 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 988 | "engines": { 989 | "node": ">= 0.8" 990 | } 991 | }, 992 | "node_modules/supports-color": { 993 | "version": "5.5.0", 994 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 995 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 996 | "dev": true, 997 | "dependencies": { 998 | "has-flag": "^3.0.0" 999 | }, 1000 | "engines": { 1001 | "node": ">=4" 1002 | } 1003 | }, 1004 | "node_modules/to-regex-range": { 1005 | "version": "5.0.1", 1006 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1007 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1008 | "dev": true, 1009 | "dependencies": { 1010 | "is-number": "^7.0.0" 1011 | }, 1012 | "engines": { 1013 | "node": ">=8.0" 1014 | } 1015 | }, 1016 | "node_modules/toidentifier": { 1017 | "version": "1.0.1", 1018 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 1019 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 1020 | "engines": { 1021 | "node": ">=0.6" 1022 | } 1023 | }, 1024 | "node_modules/touch": { 1025 | "version": "3.1.0", 1026 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", 1027 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", 1028 | "dev": true, 1029 | "dependencies": { 1030 | "nopt": "~1.0.10" 1031 | }, 1032 | "bin": { 1033 | "nodetouch": "bin/nodetouch.js" 1034 | } 1035 | }, 1036 | "node_modules/ts-node": { 1037 | "version": "10.9.1", 1038 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", 1039 | "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", 1040 | "dev": true, 1041 | "dependencies": { 1042 | "@cspotcode/source-map-support": "^0.8.0", 1043 | "@tsconfig/node10": "^1.0.7", 1044 | "@tsconfig/node12": "^1.0.7", 1045 | "@tsconfig/node14": "^1.0.0", 1046 | "@tsconfig/node16": "^1.0.2", 1047 | "acorn": "^8.4.1", 1048 | "acorn-walk": "^8.1.1", 1049 | "arg": "^4.1.0", 1050 | "create-require": "^1.1.0", 1051 | "diff": "^4.0.1", 1052 | "make-error": "^1.1.1", 1053 | "v8-compile-cache-lib": "^3.0.1", 1054 | "yn": "3.1.1" 1055 | }, 1056 | "bin": { 1057 | "ts-node": "dist/bin.js", 1058 | "ts-node-cwd": "dist/bin-cwd.js", 1059 | "ts-node-esm": "dist/bin-esm.js", 1060 | "ts-node-script": "dist/bin-script.js", 1061 | "ts-node-transpile-only": "dist/bin-transpile.js", 1062 | "ts-script": "dist/bin-script-deprecated.js" 1063 | }, 1064 | "peerDependencies": { 1065 | "@swc/core": ">=1.2.50", 1066 | "@swc/wasm": ">=1.2.50", 1067 | "@types/node": "*", 1068 | "typescript": ">=2.7" 1069 | }, 1070 | "peerDependenciesMeta": { 1071 | "@swc/core": { 1072 | "optional": true 1073 | }, 1074 | "@swc/wasm": { 1075 | "optional": true 1076 | } 1077 | } 1078 | }, 1079 | "node_modules/type-is": { 1080 | "version": "1.6.18", 1081 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1082 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1083 | "dependencies": { 1084 | "media-typer": "0.3.0", 1085 | "mime-types": "~2.1.24" 1086 | }, 1087 | "engines": { 1088 | "node": ">= 0.6" 1089 | } 1090 | }, 1091 | "node_modules/typescript": { 1092 | "version": "4.9.5", 1093 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 1094 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 1095 | "dev": true, 1096 | "bin": { 1097 | "tsc": "bin/tsc", 1098 | "tsserver": "bin/tsserver" 1099 | }, 1100 | "engines": { 1101 | "node": ">=4.2.0" 1102 | } 1103 | }, 1104 | "node_modules/undefsafe": { 1105 | "version": "2.0.5", 1106 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", 1107 | "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", 1108 | "dev": true 1109 | }, 1110 | "node_modules/unpipe": { 1111 | "version": "1.0.0", 1112 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1113 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 1114 | "engines": { 1115 | "node": ">= 0.8" 1116 | } 1117 | }, 1118 | "node_modules/utils-merge": { 1119 | "version": "1.0.1", 1120 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1121 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", 1122 | "engines": { 1123 | "node": ">= 0.4.0" 1124 | } 1125 | }, 1126 | "node_modules/v8-compile-cache-lib": { 1127 | "version": "3.0.1", 1128 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", 1129 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", 1130 | "dev": true 1131 | }, 1132 | "node_modules/vary": { 1133 | "version": "1.1.2", 1134 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1135 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 1136 | "engines": { 1137 | "node": ">= 0.8" 1138 | } 1139 | }, 1140 | "node_modules/yn": { 1141 | "version": "3.1.1", 1142 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 1143 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 1144 | "dev": true, 1145 | "engines": { 1146 | "node": ">=6" 1147 | } 1148 | }, 1149 | "node_modules/zod": { 1150 | "version": "3.21.0", 1151 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.0.tgz", 1152 | "integrity": "sha512-UYdykTcVxB6lfdyLzAqLyyYAlOcpoluECvjsdoaqfQmz9p+3LRaIqYcNiL/J2kFYp66fBM8wwBvIGVEjq7KtZw==", 1153 | "funding": { 1154 | "url": "https://github.com/sponsors/colinhacks" 1155 | } 1156 | } 1157 | }, 1158 | "dependencies": { 1159 | "@cspotcode/source-map-support": { 1160 | "version": "0.8.1", 1161 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 1162 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 1163 | "dev": true, 1164 | "requires": { 1165 | "@jridgewell/trace-mapping": "0.3.9" 1166 | } 1167 | }, 1168 | "@jridgewell/resolve-uri": { 1169 | "version": "3.1.0", 1170 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 1171 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 1172 | "dev": true 1173 | }, 1174 | "@jridgewell/sourcemap-codec": { 1175 | "version": "1.4.14", 1176 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 1177 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 1178 | "dev": true 1179 | }, 1180 | "@jridgewell/trace-mapping": { 1181 | "version": "0.3.9", 1182 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 1183 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 1184 | "dev": true, 1185 | "requires": { 1186 | "@jridgewell/resolve-uri": "^3.0.3", 1187 | "@jridgewell/sourcemap-codec": "^1.4.10" 1188 | } 1189 | }, 1190 | "@tsconfig/node10": { 1191 | "version": "1.0.9", 1192 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", 1193 | "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", 1194 | "dev": true 1195 | }, 1196 | "@tsconfig/node12": { 1197 | "version": "1.0.11", 1198 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", 1199 | "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", 1200 | "dev": true 1201 | }, 1202 | "@tsconfig/node14": { 1203 | "version": "1.0.3", 1204 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", 1205 | "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", 1206 | "dev": true 1207 | }, 1208 | "@tsconfig/node16": { 1209 | "version": "1.0.3", 1210 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", 1211 | "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", 1212 | "dev": true 1213 | }, 1214 | "@types/node": { 1215 | "version": "18.14.6", 1216 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", 1217 | "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==", 1218 | "dev": true, 1219 | "peer": true 1220 | }, 1221 | "abbrev": { 1222 | "version": "1.1.1", 1223 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 1224 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", 1225 | "dev": true 1226 | }, 1227 | "accepts": { 1228 | "version": "1.3.8", 1229 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 1230 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 1231 | "requires": { 1232 | "mime-types": "~2.1.34", 1233 | "negotiator": "0.6.3" 1234 | } 1235 | }, 1236 | "acorn": { 1237 | "version": "8.8.2", 1238 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", 1239 | "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", 1240 | "dev": true 1241 | }, 1242 | "acorn-walk": { 1243 | "version": "8.2.0", 1244 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 1245 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", 1246 | "dev": true 1247 | }, 1248 | "anymatch": { 1249 | "version": "3.1.3", 1250 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 1251 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 1252 | "dev": true, 1253 | "requires": { 1254 | "normalize-path": "^3.0.0", 1255 | "picomatch": "^2.0.4" 1256 | } 1257 | }, 1258 | "arg": { 1259 | "version": "4.1.3", 1260 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 1261 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", 1262 | "dev": true 1263 | }, 1264 | "array-flatten": { 1265 | "version": "1.1.1", 1266 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 1267 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 1268 | }, 1269 | "balanced-match": { 1270 | "version": "1.0.2", 1271 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 1272 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 1273 | "dev": true 1274 | }, 1275 | "binary-extensions": { 1276 | "version": "2.2.0", 1277 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 1278 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 1279 | "dev": true 1280 | }, 1281 | "body-parser": { 1282 | "version": "1.20.1", 1283 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", 1284 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", 1285 | "requires": { 1286 | "bytes": "3.1.2", 1287 | "content-type": "~1.0.4", 1288 | "debug": "2.6.9", 1289 | "depd": "2.0.0", 1290 | "destroy": "1.2.0", 1291 | "http-errors": "2.0.0", 1292 | "iconv-lite": "0.4.24", 1293 | "on-finished": "2.4.1", 1294 | "qs": "6.11.0", 1295 | "raw-body": "2.5.1", 1296 | "type-is": "~1.6.18", 1297 | "unpipe": "1.0.0" 1298 | } 1299 | }, 1300 | "brace-expansion": { 1301 | "version": "1.1.11", 1302 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1303 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1304 | "dev": true, 1305 | "requires": { 1306 | "balanced-match": "^1.0.0", 1307 | "concat-map": "0.0.1" 1308 | } 1309 | }, 1310 | "braces": { 1311 | "version": "3.0.2", 1312 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1313 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1314 | "dev": true, 1315 | "requires": { 1316 | "fill-range": "^7.0.1" 1317 | } 1318 | }, 1319 | "bytes": { 1320 | "version": "3.1.2", 1321 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 1322 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 1323 | }, 1324 | "call-bind": { 1325 | "version": "1.0.2", 1326 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 1327 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 1328 | "requires": { 1329 | "function-bind": "^1.1.1", 1330 | "get-intrinsic": "^1.0.2" 1331 | } 1332 | }, 1333 | "chokidar": { 1334 | "version": "3.5.3", 1335 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 1336 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 1337 | "dev": true, 1338 | "requires": { 1339 | "anymatch": "~3.1.2", 1340 | "braces": "~3.0.2", 1341 | "fsevents": "~2.3.2", 1342 | "glob-parent": "~5.1.2", 1343 | "is-binary-path": "~2.1.0", 1344 | "is-glob": "~4.0.1", 1345 | "normalize-path": "~3.0.0", 1346 | "readdirp": "~3.6.0" 1347 | } 1348 | }, 1349 | "concat-map": { 1350 | "version": "0.0.1", 1351 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1352 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 1353 | "dev": true 1354 | }, 1355 | "content-disposition": { 1356 | "version": "0.5.4", 1357 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 1358 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 1359 | "requires": { 1360 | "safe-buffer": "5.2.1" 1361 | } 1362 | }, 1363 | "content-type": { 1364 | "version": "1.0.5", 1365 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", 1366 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" 1367 | }, 1368 | "cookie": { 1369 | "version": "0.5.0", 1370 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 1371 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" 1372 | }, 1373 | "cookie-signature": { 1374 | "version": "1.0.6", 1375 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 1376 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 1377 | }, 1378 | "create-require": { 1379 | "version": "1.1.1", 1380 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 1381 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", 1382 | "dev": true 1383 | }, 1384 | "debug": { 1385 | "version": "2.6.9", 1386 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1387 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1388 | "requires": { 1389 | "ms": "2.0.0" 1390 | } 1391 | }, 1392 | "depd": { 1393 | "version": "2.0.0", 1394 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 1395 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 1396 | }, 1397 | "destroy": { 1398 | "version": "1.2.0", 1399 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 1400 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" 1401 | }, 1402 | "diff": { 1403 | "version": "4.0.2", 1404 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 1405 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 1406 | "dev": true 1407 | }, 1408 | "ee-first": { 1409 | "version": "1.1.1", 1410 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1411 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 1412 | }, 1413 | "encodeurl": { 1414 | "version": "1.0.2", 1415 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1416 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" 1417 | }, 1418 | "escape-html": { 1419 | "version": "1.0.3", 1420 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1421 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 1422 | }, 1423 | "etag": { 1424 | "version": "1.8.1", 1425 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 1426 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" 1427 | }, 1428 | "express": { 1429 | "version": "4.18.2", 1430 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", 1431 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", 1432 | "requires": { 1433 | "accepts": "~1.3.8", 1434 | "array-flatten": "1.1.1", 1435 | "body-parser": "1.20.1", 1436 | "content-disposition": "0.5.4", 1437 | "content-type": "~1.0.4", 1438 | "cookie": "0.5.0", 1439 | "cookie-signature": "1.0.6", 1440 | "debug": "2.6.9", 1441 | "depd": "2.0.0", 1442 | "encodeurl": "~1.0.2", 1443 | "escape-html": "~1.0.3", 1444 | "etag": "~1.8.1", 1445 | "finalhandler": "1.2.0", 1446 | "fresh": "0.5.2", 1447 | "http-errors": "2.0.0", 1448 | "merge-descriptors": "1.0.1", 1449 | "methods": "~1.1.2", 1450 | "on-finished": "2.4.1", 1451 | "parseurl": "~1.3.3", 1452 | "path-to-regexp": "0.1.7", 1453 | "proxy-addr": "~2.0.7", 1454 | "qs": "6.11.0", 1455 | "range-parser": "~1.2.1", 1456 | "safe-buffer": "5.2.1", 1457 | "send": "0.18.0", 1458 | "serve-static": "1.15.0", 1459 | "setprototypeof": "1.2.0", 1460 | "statuses": "2.0.1", 1461 | "type-is": "~1.6.18", 1462 | "utils-merge": "1.0.1", 1463 | "vary": "~1.1.2" 1464 | } 1465 | }, 1466 | "fill-range": { 1467 | "version": "7.0.1", 1468 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1469 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1470 | "dev": true, 1471 | "requires": { 1472 | "to-regex-range": "^5.0.1" 1473 | } 1474 | }, 1475 | "finalhandler": { 1476 | "version": "1.2.0", 1477 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 1478 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 1479 | "requires": { 1480 | "debug": "2.6.9", 1481 | "encodeurl": "~1.0.2", 1482 | "escape-html": "~1.0.3", 1483 | "on-finished": "2.4.1", 1484 | "parseurl": "~1.3.3", 1485 | "statuses": "2.0.1", 1486 | "unpipe": "~1.0.0" 1487 | } 1488 | }, 1489 | "forwarded": { 1490 | "version": "0.2.0", 1491 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 1492 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 1493 | }, 1494 | "fresh": { 1495 | "version": "0.5.2", 1496 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 1497 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" 1498 | }, 1499 | "fsevents": { 1500 | "version": "2.3.2", 1501 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1502 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1503 | "dev": true, 1504 | "optional": true 1505 | }, 1506 | "function-bind": { 1507 | "version": "1.1.1", 1508 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1509 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1510 | }, 1511 | "get-intrinsic": { 1512 | "version": "1.2.0", 1513 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", 1514 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", 1515 | "requires": { 1516 | "function-bind": "^1.1.1", 1517 | "has": "^1.0.3", 1518 | "has-symbols": "^1.0.3" 1519 | } 1520 | }, 1521 | "glob-parent": { 1522 | "version": "5.1.2", 1523 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1524 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1525 | "dev": true, 1526 | "requires": { 1527 | "is-glob": "^4.0.1" 1528 | } 1529 | }, 1530 | "has": { 1531 | "version": "1.0.3", 1532 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1533 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1534 | "requires": { 1535 | "function-bind": "^1.1.1" 1536 | } 1537 | }, 1538 | "has-flag": { 1539 | "version": "3.0.0", 1540 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1541 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", 1542 | "dev": true 1543 | }, 1544 | "has-symbols": { 1545 | "version": "1.0.3", 1546 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1547 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 1548 | }, 1549 | "http-errors": { 1550 | "version": "2.0.0", 1551 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 1552 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 1553 | "requires": { 1554 | "depd": "2.0.0", 1555 | "inherits": "2.0.4", 1556 | "setprototypeof": "1.2.0", 1557 | "statuses": "2.0.1", 1558 | "toidentifier": "1.0.1" 1559 | } 1560 | }, 1561 | "iconv-lite": { 1562 | "version": "0.4.24", 1563 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1564 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1565 | "requires": { 1566 | "safer-buffer": ">= 2.1.2 < 3" 1567 | } 1568 | }, 1569 | "ignore-by-default": { 1570 | "version": "1.0.1", 1571 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 1572 | "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", 1573 | "dev": true 1574 | }, 1575 | "inherits": { 1576 | "version": "2.0.4", 1577 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1578 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1579 | }, 1580 | "ipaddr.js": { 1581 | "version": "1.9.1", 1582 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 1583 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 1584 | }, 1585 | "is-binary-path": { 1586 | "version": "2.1.0", 1587 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1588 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1589 | "dev": true, 1590 | "requires": { 1591 | "binary-extensions": "^2.0.0" 1592 | } 1593 | }, 1594 | "is-extglob": { 1595 | "version": "2.1.1", 1596 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1597 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1598 | "dev": true 1599 | }, 1600 | "is-glob": { 1601 | "version": "4.0.3", 1602 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1603 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1604 | "dev": true, 1605 | "requires": { 1606 | "is-extglob": "^2.1.1" 1607 | } 1608 | }, 1609 | "is-number": { 1610 | "version": "7.0.0", 1611 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1612 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1613 | "dev": true 1614 | }, 1615 | "make-error": { 1616 | "version": "1.3.6", 1617 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 1618 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", 1619 | "dev": true 1620 | }, 1621 | "media-typer": { 1622 | "version": "0.3.0", 1623 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1624 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" 1625 | }, 1626 | "merge-descriptors": { 1627 | "version": "1.0.1", 1628 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1629 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" 1630 | }, 1631 | "methods": { 1632 | "version": "1.1.2", 1633 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1634 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" 1635 | }, 1636 | "mime": { 1637 | "version": "1.6.0", 1638 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1639 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1640 | }, 1641 | "mime-db": { 1642 | "version": "1.52.0", 1643 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1644 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 1645 | }, 1646 | "mime-types": { 1647 | "version": "2.1.35", 1648 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1649 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1650 | "requires": { 1651 | "mime-db": "1.52.0" 1652 | } 1653 | }, 1654 | "minimatch": { 1655 | "version": "3.1.2", 1656 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1657 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1658 | "dev": true, 1659 | "requires": { 1660 | "brace-expansion": "^1.1.7" 1661 | } 1662 | }, 1663 | "ms": { 1664 | "version": "2.0.0", 1665 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1666 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 1667 | }, 1668 | "negotiator": { 1669 | "version": "0.6.3", 1670 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 1671 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 1672 | }, 1673 | "nodemon": { 1674 | "version": "2.0.21", 1675 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.21.tgz", 1676 | "integrity": "sha512-djN/n2549DUtY33S7o1djRCd7dEm0kBnj9c7S9XVXqRUbuggN1MZH/Nqa+5RFQr63Fbefq37nFXAE9VU86yL1A==", 1677 | "dev": true, 1678 | "requires": { 1679 | "chokidar": "^3.5.2", 1680 | "debug": "^3.2.7", 1681 | "ignore-by-default": "^1.0.1", 1682 | "minimatch": "^3.1.2", 1683 | "pstree.remy": "^1.1.8", 1684 | "semver": "^5.7.1", 1685 | "simple-update-notifier": "^1.0.7", 1686 | "supports-color": "^5.5.0", 1687 | "touch": "^3.1.0", 1688 | "undefsafe": "^2.0.5" 1689 | }, 1690 | "dependencies": { 1691 | "debug": { 1692 | "version": "3.2.7", 1693 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 1694 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 1695 | "dev": true, 1696 | "requires": { 1697 | "ms": "^2.1.1" 1698 | } 1699 | }, 1700 | "ms": { 1701 | "version": "2.1.3", 1702 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1703 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", 1704 | "dev": true 1705 | } 1706 | } 1707 | }, 1708 | "nopt": { 1709 | "version": "1.0.10", 1710 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", 1711 | "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", 1712 | "dev": true, 1713 | "requires": { 1714 | "abbrev": "1" 1715 | } 1716 | }, 1717 | "normalize-path": { 1718 | "version": "3.0.0", 1719 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1720 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1721 | "dev": true 1722 | }, 1723 | "object-inspect": { 1724 | "version": "1.12.3", 1725 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 1726 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" 1727 | }, 1728 | "on-finished": { 1729 | "version": "2.4.1", 1730 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 1731 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 1732 | "requires": { 1733 | "ee-first": "1.1.1" 1734 | } 1735 | }, 1736 | "parseurl": { 1737 | "version": "1.3.3", 1738 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1739 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1740 | }, 1741 | "path-to-regexp": { 1742 | "version": "0.1.7", 1743 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1744 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" 1745 | }, 1746 | "picomatch": { 1747 | "version": "2.3.1", 1748 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1749 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1750 | "dev": true 1751 | }, 1752 | "proxy-addr": { 1753 | "version": "2.0.7", 1754 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 1755 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 1756 | "requires": { 1757 | "forwarded": "0.2.0", 1758 | "ipaddr.js": "1.9.1" 1759 | } 1760 | }, 1761 | "pstree.remy": { 1762 | "version": "1.1.8", 1763 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", 1764 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", 1765 | "dev": true 1766 | }, 1767 | "qs": { 1768 | "version": "6.11.0", 1769 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 1770 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 1771 | "requires": { 1772 | "side-channel": "^1.0.4" 1773 | } 1774 | }, 1775 | "range-parser": { 1776 | "version": "1.2.1", 1777 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1778 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 1779 | }, 1780 | "raw-body": { 1781 | "version": "2.5.1", 1782 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 1783 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 1784 | "requires": { 1785 | "bytes": "3.1.2", 1786 | "http-errors": "2.0.0", 1787 | "iconv-lite": "0.4.24", 1788 | "unpipe": "1.0.0" 1789 | } 1790 | }, 1791 | "readdirp": { 1792 | "version": "3.6.0", 1793 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1794 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1795 | "dev": true, 1796 | "requires": { 1797 | "picomatch": "^2.2.1" 1798 | } 1799 | }, 1800 | "safe-buffer": { 1801 | "version": "5.2.1", 1802 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1803 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1804 | }, 1805 | "safer-buffer": { 1806 | "version": "2.1.2", 1807 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1808 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1809 | }, 1810 | "semver": { 1811 | "version": "5.7.1", 1812 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1813 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", 1814 | "dev": true 1815 | }, 1816 | "send": { 1817 | "version": "0.18.0", 1818 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 1819 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 1820 | "requires": { 1821 | "debug": "2.6.9", 1822 | "depd": "2.0.0", 1823 | "destroy": "1.2.0", 1824 | "encodeurl": "~1.0.2", 1825 | "escape-html": "~1.0.3", 1826 | "etag": "~1.8.1", 1827 | "fresh": "0.5.2", 1828 | "http-errors": "2.0.0", 1829 | "mime": "1.6.0", 1830 | "ms": "2.1.3", 1831 | "on-finished": "2.4.1", 1832 | "range-parser": "~1.2.1", 1833 | "statuses": "2.0.1" 1834 | }, 1835 | "dependencies": { 1836 | "ms": { 1837 | "version": "2.1.3", 1838 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1839 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1840 | } 1841 | } 1842 | }, 1843 | "serve-static": { 1844 | "version": "1.15.0", 1845 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 1846 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 1847 | "requires": { 1848 | "encodeurl": "~1.0.2", 1849 | "escape-html": "~1.0.3", 1850 | "parseurl": "~1.3.3", 1851 | "send": "0.18.0" 1852 | } 1853 | }, 1854 | "setprototypeof": { 1855 | "version": "1.2.0", 1856 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1857 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1858 | }, 1859 | "side-channel": { 1860 | "version": "1.0.4", 1861 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1862 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1863 | "requires": { 1864 | "call-bind": "^1.0.0", 1865 | "get-intrinsic": "^1.0.2", 1866 | "object-inspect": "^1.9.0" 1867 | } 1868 | }, 1869 | "simple-update-notifier": { 1870 | "version": "1.1.0", 1871 | "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", 1872 | "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", 1873 | "dev": true, 1874 | "requires": { 1875 | "semver": "~7.0.0" 1876 | }, 1877 | "dependencies": { 1878 | "semver": { 1879 | "version": "7.0.0", 1880 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", 1881 | "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", 1882 | "dev": true 1883 | } 1884 | } 1885 | }, 1886 | "statuses": { 1887 | "version": "2.0.1", 1888 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1889 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 1890 | }, 1891 | "supports-color": { 1892 | "version": "5.5.0", 1893 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1894 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1895 | "dev": true, 1896 | "requires": { 1897 | "has-flag": "^3.0.0" 1898 | } 1899 | }, 1900 | "to-regex-range": { 1901 | "version": "5.0.1", 1902 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1903 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1904 | "dev": true, 1905 | "requires": { 1906 | "is-number": "^7.0.0" 1907 | } 1908 | }, 1909 | "toidentifier": { 1910 | "version": "1.0.1", 1911 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 1912 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 1913 | }, 1914 | "touch": { 1915 | "version": "3.1.0", 1916 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", 1917 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", 1918 | "dev": true, 1919 | "requires": { 1920 | "nopt": "~1.0.10" 1921 | } 1922 | }, 1923 | "ts-node": { 1924 | "version": "10.9.1", 1925 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", 1926 | "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", 1927 | "dev": true, 1928 | "requires": { 1929 | "@cspotcode/source-map-support": "^0.8.0", 1930 | "@tsconfig/node10": "^1.0.7", 1931 | "@tsconfig/node12": "^1.0.7", 1932 | "@tsconfig/node14": "^1.0.0", 1933 | "@tsconfig/node16": "^1.0.2", 1934 | "acorn": "^8.4.1", 1935 | "acorn-walk": "^8.1.1", 1936 | "arg": "^4.1.0", 1937 | "create-require": "^1.1.0", 1938 | "diff": "^4.0.1", 1939 | "make-error": "^1.1.1", 1940 | "v8-compile-cache-lib": "^3.0.1", 1941 | "yn": "3.1.1" 1942 | } 1943 | }, 1944 | "type-is": { 1945 | "version": "1.6.18", 1946 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1947 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1948 | "requires": { 1949 | "media-typer": "0.3.0", 1950 | "mime-types": "~2.1.24" 1951 | } 1952 | }, 1953 | "typescript": { 1954 | "version": "4.9.5", 1955 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 1956 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 1957 | "dev": true 1958 | }, 1959 | "undefsafe": { 1960 | "version": "2.0.5", 1961 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", 1962 | "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", 1963 | "dev": true 1964 | }, 1965 | "unpipe": { 1966 | "version": "1.0.0", 1967 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1968 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" 1969 | }, 1970 | "utils-merge": { 1971 | "version": "1.0.1", 1972 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1973 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" 1974 | }, 1975 | "v8-compile-cache-lib": { 1976 | "version": "3.0.1", 1977 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", 1978 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", 1979 | "dev": true 1980 | }, 1981 | "vary": { 1982 | "version": "1.1.2", 1983 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1984 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" 1985 | }, 1986 | "yn": { 1987 | "version": "3.1.1", 1988 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 1989 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 1990 | "dev": true 1991 | }, 1992 | "zod": { 1993 | "version": "3.21.0", 1994 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.0.tgz", 1995 | "integrity": "sha512-UYdykTcVxB6lfdyLzAqLyyYAlOcpoluECvjsdoaqfQmz9p+3LRaIqYcNiL/J2kFYp66fBM8wwBvIGVEjq7KtZw==" 1996 | } 1997 | } 1998 | } 1999 | -------------------------------------------------------------------------------- /Zod/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "zod", 3 | "version": "1.0.0", 4 | "description": "Zod is a validation library, It uses required by default.", 5 | "main": "index.js", 6 | "scripts": { 7 | "start": "tsc && nodemon index.js" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "express": "^4.18.2", 14 | "zod": "^3.21.0" 15 | }, 16 | "devDependencies": { 17 | "nodemon": "^2.0.21", 18 | "ts-node": "^10.9.1", 19 | "typescript": "^4.9.5" 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /Zod/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Enable incremental compilation */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ 15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 16 | // "jsx": "preserve", /* Specify what JSX code is generated. */ 17 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ 18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ 22 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 | 26 | /* Modules */ 27 | "module": "commonjs", /* Specify what module code is generated. */ 28 | // "rootDir": "./", /* Specify the root folder within your source files. */ 29 | // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ 30 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 31 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 32 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 33 | // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ 34 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 35 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 36 | // "resolveJsonModule": true, /* Enable importing .json files */ 37 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ 38 | 39 | /* JavaScript Support */ 40 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ 41 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 42 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ 43 | 44 | /* Emit */ 45 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 46 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 47 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 48 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 49 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ 50 | // "outDir": "./", /* Specify an output folder for all emitted files. */ 51 | // "removeComments": true, /* Disable emitting comments. */ 52 | // "noEmit": true, /* Disable emitting files from a compilation. */ 53 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 54 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ 55 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 56 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 57 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 58 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 59 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 60 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 61 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 62 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ 63 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ 64 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 65 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ 66 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 67 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 68 | 69 | /* Interop Constraints */ 70 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 71 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 72 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ 73 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 74 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ 75 | 76 | /* Type Checking */ 77 | "strict": true, /* Enable all strict type-checking options. */ 78 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ 79 | // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ 80 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 81 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ 82 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 83 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ 84 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ 85 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 86 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ 87 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ 88 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 89 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 90 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 91 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 92 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 93 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ 94 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 95 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 96 | 97 | /* Completeness */ 98 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 99 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 100 | } 101 | } 102 | -------------------------------------------------------------------------------- /gRPC/client.js: -------------------------------------------------------------------------------- 1 | const grpc = require("grpc"); 2 | const protoLoader = require("@grpc/proto-loader"); 3 | const packageDef = protoLoader.loadSync("./todo.proto", {}); 4 | const g = grpc.loadPackageDefinition(packageDef); 5 | const todoPackage = g.todo; 6 | 7 | const client = new todoPackage.Todo( 8 | "localhost:5000", 9 | grpc.credentials.createInsecure() 10 | ); 11 | client.createTodo( 12 | { 13 | text: "I am todo" 14 | }, 15 | (err, resp) => { 16 | console.log(resp); 17 | } 18 | ); 19 | 20 | client.readTodos({}, (err, resp) => { 21 | console.log(resp); 22 | }); 23 | 24 | const call = client.readTodosStream(); 25 | call.on("data", (item) => { 26 | console.log(item); 27 | }); 28 | call.on("end", () => { 29 | console.log("Done"); 30 | }); 31 | -------------------------------------------------------------------------------- /gRPC/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "simpletodo", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "@grpc/proto-loader": "^0.7.5", 14 | "grpc": "^1.24.11" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /gRPC/server.js: -------------------------------------------------------------------------------- 1 | const grpc = require("grpc"); 2 | const protoLoader = require("@grpc/proto-loader"); 3 | const packageDef = protoLoader.loadSync("./todo.proto", {}); 4 | const g = grpc.loadPackageDefinition(packageDef); 5 | const todoPackage = g.todo; 6 | 7 | const server = new grpc.Server(); 8 | server.bind("0.0.0.0:5000", grpc.ServerCredentials.createInsecure()); 9 | server.addService(todoPackage.Todo.service, { 10 | createTodo: createTodo, 11 | readTodos: readTodos, 12 | readTodosStream: readTodosStream 13 | }); 14 | server.start(); 15 | 16 | const Todos = []; 17 | function createTodo(call, callback) { 18 | const item = { 19 | id: Todos.length + 1, 20 | text: call.request.text 21 | }; 22 | Todos.push(item); 23 | callback(null, item); 24 | } 25 | function readTodos(call, callback) { 26 | callback(null, { 27 | items: Todos 28 | }); 29 | } 30 | function readTodosStream(call, callback) { 31 | Todos.forEach((t) => call.write(t)); 32 | call.end(); 33 | } 34 | -------------------------------------------------------------------------------- /gRPC/todo.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | 3 | package todo; 4 | 5 | service Todo{ 6 | rpc createTodo(TodoInput) returns (TodoItem); 7 | rpc readTodos(noparameter) returns (TodoItems); 8 | rpc readTodosStream(noparameter) returns (stream TodoItem); 9 | } 10 | 11 | message noparameter{} 12 | 13 | message TodoItem{ 14 | int32 id = 1; 15 | string text =2; 16 | } 17 | 18 | message TodoInput{ 19 | string text = 1; 20 | } 21 | 22 | message TodoItems{ 23 | repeated TodoItem items = 1; 24 | } 25 | -------------------------------------------------------------------------------- /protobuf/binaryData: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/aidenk-dev/grpc-trpc/d1d9c49bda78088e56d01b40cca7b6f8d3ebde0a/protobuf/binaryData -------------------------------------------------------------------------------- /protobuf/data.json: -------------------------------------------------------------------------------- 1 | [{ "name": "Rakesh" }, { "name": "Ramesh" }, { "name": "Rajesh" }] 2 | -------------------------------------------------------------------------------- /protobuf/employees.proto: -------------------------------------------------------------------------------- 1 | syntax = "proto3"; 2 | message Employee{ 3 | int32 id = 1; 4 | string name = 2; 5 | float salary = 3; 6 | } 7 | 8 | message Employees{ 9 | repeated Employee employees = 1; 10 | } 11 | -------------------------------------------------------------------------------- /protobuf/employees_pb.js: -------------------------------------------------------------------------------- 1 | // source: employees.proto 2 | /** 3 | * @fileoverview 4 | * @enhanceable 5 | * @suppress {messageConventions} JS Compiler reports an error if a variable or 6 | * field starts with 'MSG_' and isn't a translatable message. 7 | * @public 8 | */ 9 | // GENERATED CODE -- DO NOT EDIT! 10 | 11 | var jspb = require('google-protobuf'); 12 | var goog = jspb; 13 | var global = Function('return this')(); 14 | 15 | goog.exportSymbol('proto.Employee', null, global); 16 | goog.exportSymbol('proto.Employees', null, global); 17 | /** 18 | * Generated by JsPbCodeGenerator. 19 | * @param {Array=} opt_data Optional initial data array, typically from a 20 | * server response, or constructed directly in Javascript. The array is used 21 | * in place and becomes part of the constructed object. It is not cloned. 22 | * If no data is provided, the constructed object will be empty, but still 23 | * valid. 24 | * @extends {jspb.Message} 25 | * @constructor 26 | */ 27 | proto.Employee = function(opt_data) { 28 | jspb.Message.initialize(this, opt_data, 0, -1, null, null); 29 | }; 30 | goog.inherits(proto.Employee, jspb.Message); 31 | if (goog.DEBUG && !COMPILED) { 32 | /** 33 | * @public 34 | * @override 35 | */ 36 | proto.Employee.displayName = 'proto.Employee'; 37 | } 38 | /** 39 | * Generated by JsPbCodeGenerator. 40 | * @param {Array=} opt_data Optional initial data array, typically from a 41 | * server response, or constructed directly in Javascript. The array is used 42 | * in place and becomes part of the constructed object. It is not cloned. 43 | * If no data is provided, the constructed object will be empty, but still 44 | * valid. 45 | * @extends {jspb.Message} 46 | * @constructor 47 | */ 48 | proto.Employees = function(opt_data) { 49 | jspb.Message.initialize(this, opt_data, 0, -1, proto.Employees.repeatedFields_, null); 50 | }; 51 | goog.inherits(proto.Employees, jspb.Message); 52 | if (goog.DEBUG && !COMPILED) { 53 | /** 54 | * @public 55 | * @override 56 | */ 57 | proto.Employees.displayName = 'proto.Employees'; 58 | } 59 | 60 | 61 | 62 | if (jspb.Message.GENERATE_TO_OBJECT) { 63 | /** 64 | * Creates an object representation of this proto. 65 | * Field names that are reserved in JavaScript and will be renamed to pb_name. 66 | * Optional fields that are not set will be set to undefined. 67 | * To access a reserved field use, foo.pb_, eg, foo.pb_default. 68 | * For the list of reserved names please see: 69 | * net/proto2/compiler/js/internal/generator.cc#kKeyword. 70 | * @param {boolean=} opt_includeInstance Deprecated. whether to include the 71 | * JSPB instance for transitional soy proto support: 72 | * http://goto/soy-param-migration 73 | * @return {!Object} 74 | */ 75 | proto.Employee.prototype.toObject = function(opt_includeInstance) { 76 | return proto.Employee.toObject(opt_includeInstance, this); 77 | }; 78 | 79 | 80 | /** 81 | * Static version of the {@see toObject} method. 82 | * @param {boolean|undefined} includeInstance Deprecated. Whether to include 83 | * the JSPB instance for transitional soy proto support: 84 | * http://goto/soy-param-migration 85 | * @param {!proto.Employee} msg The msg instance to transform. 86 | * @return {!Object} 87 | * @suppress {unusedLocalVariables} f is only used for nested messages 88 | */ 89 | proto.Employee.toObject = function(includeInstance, msg) { 90 | var f, obj = { 91 | id: jspb.Message.getFieldWithDefault(msg, 1, 0), 92 | name: jspb.Message.getFieldWithDefault(msg, 2, ""), 93 | salary: jspb.Message.getFloatingPointFieldWithDefault(msg, 3, 0.0) 94 | }; 95 | 96 | if (includeInstance) { 97 | obj.$jspbMessageInstance = msg; 98 | } 99 | return obj; 100 | }; 101 | } 102 | 103 | 104 | /** 105 | * Deserializes binary data (in protobuf wire format). 106 | * @param {jspb.ByteSource} bytes The bytes to deserialize. 107 | * @return {!proto.Employee} 108 | */ 109 | proto.Employee.deserializeBinary = function(bytes) { 110 | var reader = new jspb.BinaryReader(bytes); 111 | var msg = new proto.Employee; 112 | return proto.Employee.deserializeBinaryFromReader(msg, reader); 113 | }; 114 | 115 | 116 | /** 117 | * Deserializes binary data (in protobuf wire format) from the 118 | * given reader into the given message object. 119 | * @param {!proto.Employee} msg The message object to deserialize into. 120 | * @param {!jspb.BinaryReader} reader The BinaryReader to use. 121 | * @return {!proto.Employee} 122 | */ 123 | proto.Employee.deserializeBinaryFromReader = function(msg, reader) { 124 | while (reader.nextField()) { 125 | if (reader.isEndGroup()) { 126 | break; 127 | } 128 | var field = reader.getFieldNumber(); 129 | switch (field) { 130 | case 1: 131 | var value = /** @type {number} */ (reader.readInt32()); 132 | msg.setId(value); 133 | break; 134 | case 2: 135 | var value = /** @type {string} */ (reader.readString()); 136 | msg.setName(value); 137 | break; 138 | case 3: 139 | var value = /** @type {number} */ (reader.readFloat()); 140 | msg.setSalary(value); 141 | break; 142 | default: 143 | reader.skipField(); 144 | break; 145 | } 146 | } 147 | return msg; 148 | }; 149 | 150 | 151 | /** 152 | * Serializes the message to binary data (in protobuf wire format). 153 | * @return {!Uint8Array} 154 | */ 155 | proto.Employee.prototype.serializeBinary = function() { 156 | var writer = new jspb.BinaryWriter(); 157 | proto.Employee.serializeBinaryToWriter(this, writer); 158 | return writer.getResultBuffer(); 159 | }; 160 | 161 | 162 | /** 163 | * Serializes the given message to binary data (in protobuf wire 164 | * format), writing to the given BinaryWriter. 165 | * @param {!proto.Employee} message 166 | * @param {!jspb.BinaryWriter} writer 167 | * @suppress {unusedLocalVariables} f is only used for nested messages 168 | */ 169 | proto.Employee.serializeBinaryToWriter = function(message, writer) { 170 | var f = undefined; 171 | f = message.getId(); 172 | if (f !== 0) { 173 | writer.writeInt32( 174 | 1, 175 | f 176 | ); 177 | } 178 | f = message.getName(); 179 | if (f.length > 0) { 180 | writer.writeString( 181 | 2, 182 | f 183 | ); 184 | } 185 | f = message.getSalary(); 186 | if (f !== 0.0) { 187 | writer.writeFloat( 188 | 3, 189 | f 190 | ); 191 | } 192 | }; 193 | 194 | 195 | /** 196 | * optional int32 id = 1; 197 | * @return {number} 198 | */ 199 | proto.Employee.prototype.getId = function() { 200 | return /** @type {number} */ (jspb.Message.getFieldWithDefault(this, 1, 0)); 201 | }; 202 | 203 | 204 | /** 205 | * @param {number} value 206 | * @return {!proto.Employee} returns this 207 | */ 208 | proto.Employee.prototype.setId = function(value) { 209 | return jspb.Message.setProto3IntField(this, 1, value); 210 | }; 211 | 212 | 213 | /** 214 | * optional string name = 2; 215 | * @return {string} 216 | */ 217 | proto.Employee.prototype.getName = function() { 218 | return /** @type {string} */ (jspb.Message.getFieldWithDefault(this, 2, "")); 219 | }; 220 | 221 | 222 | /** 223 | * @param {string} value 224 | * @return {!proto.Employee} returns this 225 | */ 226 | proto.Employee.prototype.setName = function(value) { 227 | return jspb.Message.setProto3StringField(this, 2, value); 228 | }; 229 | 230 | 231 | /** 232 | * optional float salary = 3; 233 | * @return {number} 234 | */ 235 | proto.Employee.prototype.getSalary = function() { 236 | return /** @type {number} */ (jspb.Message.getFloatingPointFieldWithDefault(this, 3, 0.0)); 237 | }; 238 | 239 | 240 | /** 241 | * @param {number} value 242 | * @return {!proto.Employee} returns this 243 | */ 244 | proto.Employee.prototype.setSalary = function(value) { 245 | return jspb.Message.setProto3FloatField(this, 3, value); 246 | }; 247 | 248 | 249 | 250 | /** 251 | * List of repeated fields within this message type. 252 | * @private {!Array} 253 | * @const 254 | */ 255 | proto.Employees.repeatedFields_ = [1]; 256 | 257 | 258 | 259 | if (jspb.Message.GENERATE_TO_OBJECT) { 260 | /** 261 | * Creates an object representation of this proto. 262 | * Field names that are reserved in JavaScript and will be renamed to pb_name. 263 | * Optional fields that are not set will be set to undefined. 264 | * To access a reserved field use, foo.pb_, eg, foo.pb_default. 265 | * For the list of reserved names please see: 266 | * net/proto2/compiler/js/internal/generator.cc#kKeyword. 267 | * @param {boolean=} opt_includeInstance Deprecated. whether to include the 268 | * JSPB instance for transitional soy proto support: 269 | * http://goto/soy-param-migration 270 | * @return {!Object} 271 | */ 272 | proto.Employees.prototype.toObject = function(opt_includeInstance) { 273 | return proto.Employees.toObject(opt_includeInstance, this); 274 | }; 275 | 276 | 277 | /** 278 | * Static version of the {@see toObject} method. 279 | * @param {boolean|undefined} includeInstance Deprecated. Whether to include 280 | * the JSPB instance for transitional soy proto support: 281 | * http://goto/soy-param-migration 282 | * @param {!proto.Employees} msg The msg instance to transform. 283 | * @return {!Object} 284 | * @suppress {unusedLocalVariables} f is only used for nested messages 285 | */ 286 | proto.Employees.toObject = function(includeInstance, msg) { 287 | var f, obj = { 288 | employeesList: jspb.Message.toObjectList(msg.getEmployeesList(), 289 | proto.Employee.toObject, includeInstance) 290 | }; 291 | 292 | if (includeInstance) { 293 | obj.$jspbMessageInstance = msg; 294 | } 295 | return obj; 296 | }; 297 | } 298 | 299 | 300 | /** 301 | * Deserializes binary data (in protobuf wire format). 302 | * @param {jspb.ByteSource} bytes The bytes to deserialize. 303 | * @return {!proto.Employees} 304 | */ 305 | proto.Employees.deserializeBinary = function(bytes) { 306 | var reader = new jspb.BinaryReader(bytes); 307 | var msg = new proto.Employees; 308 | return proto.Employees.deserializeBinaryFromReader(msg, reader); 309 | }; 310 | 311 | 312 | /** 313 | * Deserializes binary data (in protobuf wire format) from the 314 | * given reader into the given message object. 315 | * @param {!proto.Employees} msg The message object to deserialize into. 316 | * @param {!jspb.BinaryReader} reader The BinaryReader to use. 317 | * @return {!proto.Employees} 318 | */ 319 | proto.Employees.deserializeBinaryFromReader = function(msg, reader) { 320 | while (reader.nextField()) { 321 | if (reader.isEndGroup()) { 322 | break; 323 | } 324 | var field = reader.getFieldNumber(); 325 | switch (field) { 326 | case 1: 327 | var value = new proto.Employee; 328 | reader.readMessage(value,proto.Employee.deserializeBinaryFromReader); 329 | msg.addEmployees(value); 330 | break; 331 | default: 332 | reader.skipField(); 333 | break; 334 | } 335 | } 336 | return msg; 337 | }; 338 | 339 | 340 | /** 341 | * Serializes the message to binary data (in protobuf wire format). 342 | * @return {!Uint8Array} 343 | */ 344 | proto.Employees.prototype.serializeBinary = function() { 345 | var writer = new jspb.BinaryWriter(); 346 | proto.Employees.serializeBinaryToWriter(this, writer); 347 | return writer.getResultBuffer(); 348 | }; 349 | 350 | 351 | /** 352 | * Serializes the given message to binary data (in protobuf wire 353 | * format), writing to the given BinaryWriter. 354 | * @param {!proto.Employees} message 355 | * @param {!jspb.BinaryWriter} writer 356 | * @suppress {unusedLocalVariables} f is only used for nested messages 357 | */ 358 | proto.Employees.serializeBinaryToWriter = function(message, writer) { 359 | var f = undefined; 360 | f = message.getEmployeesList(); 361 | if (f.length > 0) { 362 | writer.writeRepeatedMessage( 363 | 1, 364 | f, 365 | proto.Employee.serializeBinaryToWriter 366 | ); 367 | } 368 | }; 369 | 370 | 371 | /** 372 | * repeated Employee employees = 1; 373 | * @return {!Array} 374 | */ 375 | proto.Employees.prototype.getEmployeesList = function() { 376 | return /** @type{!Array} */ ( 377 | jspb.Message.getRepeatedWrapperField(this, proto.Employee, 1)); 378 | }; 379 | 380 | 381 | /** 382 | * @param {!Array} value 383 | * @return {!proto.Employees} returns this 384 | */ 385 | proto.Employees.prototype.setEmployeesList = function(value) { 386 | return jspb.Message.setRepeatedWrapperField(this, 1, value); 387 | }; 388 | 389 | 390 | /** 391 | * @param {!proto.Employee=} opt_value 392 | * @param {number=} opt_index 393 | * @return {!proto.Employee} 394 | */ 395 | proto.Employees.prototype.addEmployees = function(opt_value, opt_index) { 396 | return jspb.Message.addToRepeatedWrapperField(this, 1, opt_value, proto.Employee, opt_index); 397 | }; 398 | 399 | 400 | /** 401 | * Clears the list making it empty but non-null. 402 | * @return {!proto.Employees} returns this 403 | */ 404 | proto.Employees.prototype.clearEmployeesList = function() { 405 | return this.setEmployeesList([]); 406 | }; 407 | 408 | 409 | goog.object.extend(exports, proto); 410 | -------------------------------------------------------------------------------- /protobuf/index.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | const Schema = require("./employees_pb"); 3 | const ritvik = new Schema.Employee(); 4 | ritvik.setId(100); 5 | ritvik.setName("Rakesh"); 6 | ritvik.setSalary(20000); 7 | const ramesh = new Schema.Employee(); 8 | ramesh.setId(11200); 9 | ramesh.setName("Rakesh"); 10 | ramesh.setSalary(20222); 11 | const employees = new Schema.Employees(); 12 | employees.addEmployees(ritvik); 13 | employees.addEmployees(ramesh); 14 | console.log(employees); 15 | console.log("binary: " + employees.serializeBinary()); 16 | fs.writeFileSync("./binaryData", employees.serializeBinary()); 17 | const buffer = fs.readFileSync("./binaryData"); 18 | const employees2 = Schema.Employees.deserializeBinary(buffer); 19 | console.log(employees2); 20 | -------------------------------------------------------------------------------- /protobuf/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "protobuf", 3 | "version": "1.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "protobuf", 9 | "version": "1.0.0", 10 | "license": "ISC", 11 | "dependencies": { 12 | "google-protobuf": "^3.21.2" 13 | } 14 | }, 15 | "node_modules/google-protobuf": { 16 | "version": "3.21.2", 17 | "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", 18 | "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" 19 | } 20 | }, 21 | "dependencies": { 22 | "google-protobuf": { 23 | "version": "3.21.2", 24 | "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.21.2.tgz", 25 | "integrity": "sha512-3MSOYFO5U9mPGikIYCzK0SaThypfGgS6bHqrUGXG3DPHCrb+txNqeEcns1W0lkGfk0rCyNXm7xB9rMxnCiZOoA==" 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /protobuf/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "protobuf", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "ISC", 12 | "dependencies": { 13 | "google-protobuf": "^3.21.2" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /tRPC/client/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /tRPC/client/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite + React + TS 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /tRPC/client/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "client", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "tsc && vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "@trpc/client": "^10.14.0", 13 | "react": "^18.2.0", 14 | "react-dom": "^18.2.0" 15 | }, 16 | "devDependencies": { 17 | "@types/react": "^18.0.24", 18 | "@types/react-dom": "^18.0.8", 19 | "@vitejs/plugin-react": "^2.2.0", 20 | "typescript": "^4.6.4", 21 | "vite": "^3.2.3" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /tRPC/client/public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tRPC/client/src/client.ts: -------------------------------------------------------------------------------- 1 | import { 2 | createTRPCProxyClient, 3 | createWSClient, 4 | httpBatchLink, 5 | loggerLink, 6 | splitLink, 7 | wsLink 8 | } from "@trpc/client"; 9 | import { AppRouter } from "../../server/api"; 10 | const client = createTRPCProxyClient({ 11 | links: [ 12 | // loggerLink(), 13 | splitLink({ 14 | condition: (op) => { 15 | return op.type === "subscription"; 16 | }, 17 | true: wsLink({ 18 | client: createWSClient({ 19 | url: "ws://localhost:3000/trpc" 20 | }) 21 | }), 22 | false: httpBatchLink({ 23 | url: "http://localhost:3000/trpc", 24 | headers: { 25 | Authorization: "Token" 26 | } 27 | }) 28 | }) 29 | ] 30 | }); 31 | 32 | document.addEventListener("click", () => { 33 | client.addData.mutate({ 34 | name: "Hello", 35 | email: "rds@gmail.com" 36 | }); 37 | }); 38 | async function main() { 39 | // const result = await client.greet.query("Ramesh"); 40 | // const secret = await client.secretData.query(); 41 | // const user = await client.users.getUser.query(); 42 | // console.log(result); 43 | // console.log(mut); 44 | // console.log(user); 45 | // console.log(secret); 46 | const connection = client.onaddData.subscribe(undefined, { 47 | onData: (email) => { 48 | console.log("Added" + email); 49 | } 50 | }); 51 | // connection.unsubscribe(); 52 | } 53 | 54 | main(); 55 | -------------------------------------------------------------------------------- /tRPC/client/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /tRPC/client/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 | "allowJs": false, 7 | "skipLibCheck": true, 8 | "esModuleInterop": false, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "module": "ESNext", 13 | "moduleResolution": "Node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "react-jsx" 18 | }, 19 | "include": ["src"], 20 | "references": [{ "path": "./tsconfig.node.json" }] 21 | } 22 | -------------------------------------------------------------------------------- /tRPC/client/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "ESNext", 5 | "moduleResolution": "Node", 6 | "allowSyntheticDefaultImports": true 7 | }, 8 | "include": ["vite.config.ts"] 9 | } 10 | -------------------------------------------------------------------------------- /tRPC/client/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import react from '@vitejs/plugin-react' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [react()] 7 | }) 8 | -------------------------------------------------------------------------------- /tRPC/server/api.ts: -------------------------------------------------------------------------------- 1 | import express from "express"; 2 | import cors from "cors"; 3 | import * as trpcExpress from "@trpc/server/adapters/express"; 4 | import createContext from "./trpc"; 5 | import { appRouter } from "./router"; 6 | import * as trpcWS from "@trpc/server/adapters/ws"; 7 | import ws from "ws"; 8 | 9 | const app = express(); 10 | app.use(cors()); 11 | 12 | app.use( 13 | "/trpc", 14 | trpcExpress.createExpressMiddleware({ 15 | router: appRouter, 16 | createContext 17 | }) 18 | ); 19 | 20 | const server = app.listen(3000); 21 | 22 | trpcWS.applyWSSHandler({ 23 | wss: new ws.Server({ server }), 24 | router: appRouter, 25 | createContext 26 | }); 27 | 28 | export type AppRouter = typeof appRouter; 29 | -------------------------------------------------------------------------------- /tRPC/server/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "server", 3 | "lockfileVersion": 2, 4 | "requires": true, 5 | "packages": { 6 | "": { 7 | "dependencies": { 8 | "@trpc/server": "^10.14.0", 9 | "cors": "^2.8.5", 10 | "express": "^4.18.2", 11 | "ts-node": "^10.9.1", 12 | "ws": "^8.12.1", 13 | "zod": "^3.21.0" 14 | }, 15 | "devDependencies": { 16 | "@types/cors": "^2.8.13", 17 | "@types/express": "^4.17.17", 18 | "@types/ws": "^8.5.4" 19 | } 20 | }, 21 | "node_modules/@cspotcode/source-map-support": { 22 | "version": "0.8.1", 23 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 24 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 25 | "dependencies": { 26 | "@jridgewell/trace-mapping": "0.3.9" 27 | }, 28 | "engines": { 29 | "node": ">=12" 30 | } 31 | }, 32 | "node_modules/@jridgewell/resolve-uri": { 33 | "version": "3.1.0", 34 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 35 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", 36 | "engines": { 37 | "node": ">=6.0.0" 38 | } 39 | }, 40 | "node_modules/@jridgewell/sourcemap-codec": { 41 | "version": "1.4.14", 42 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 43 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" 44 | }, 45 | "node_modules/@jridgewell/trace-mapping": { 46 | "version": "0.3.9", 47 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 48 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 49 | "dependencies": { 50 | "@jridgewell/resolve-uri": "^3.0.3", 51 | "@jridgewell/sourcemap-codec": "^1.4.10" 52 | } 53 | }, 54 | "node_modules/@trpc/server": { 55 | "version": "10.14.0", 56 | "resolved": "https://registry.npmjs.org/@trpc/server/-/server-10.14.0.tgz", 57 | "integrity": "sha512-hNnvwkSfqpIb89CH8pTV8VkldS9qjd3ZxaCgya7CeCk6QeDajT/bRX9bPmrkEe0UQtrbbPU5h47nuMrBsN2ghQ==" 58 | }, 59 | "node_modules/@tsconfig/node10": { 60 | "version": "1.0.9", 61 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", 62 | "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" 63 | }, 64 | "node_modules/@tsconfig/node12": { 65 | "version": "1.0.11", 66 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", 67 | "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" 68 | }, 69 | "node_modules/@tsconfig/node14": { 70 | "version": "1.0.3", 71 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", 72 | "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" 73 | }, 74 | "node_modules/@tsconfig/node16": { 75 | "version": "1.0.3", 76 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", 77 | "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" 78 | }, 79 | "node_modules/@types/body-parser": { 80 | "version": "1.19.2", 81 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", 82 | "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", 83 | "dev": true, 84 | "dependencies": { 85 | "@types/connect": "*", 86 | "@types/node": "*" 87 | } 88 | }, 89 | "node_modules/@types/connect": { 90 | "version": "3.4.35", 91 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", 92 | "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", 93 | "dev": true, 94 | "dependencies": { 95 | "@types/node": "*" 96 | } 97 | }, 98 | "node_modules/@types/cors": { 99 | "version": "2.8.13", 100 | "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", 101 | "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", 102 | "dev": true, 103 | "dependencies": { 104 | "@types/node": "*" 105 | } 106 | }, 107 | "node_modules/@types/express": { 108 | "version": "4.17.17", 109 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", 110 | "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", 111 | "dev": true, 112 | "dependencies": { 113 | "@types/body-parser": "*", 114 | "@types/express-serve-static-core": "^4.17.33", 115 | "@types/qs": "*", 116 | "@types/serve-static": "*" 117 | } 118 | }, 119 | "node_modules/@types/express-serve-static-core": { 120 | "version": "4.17.33", 121 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", 122 | "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", 123 | "dev": true, 124 | "dependencies": { 125 | "@types/node": "*", 126 | "@types/qs": "*", 127 | "@types/range-parser": "*" 128 | } 129 | }, 130 | "node_modules/@types/mime": { 131 | "version": "3.0.1", 132 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", 133 | "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", 134 | "dev": true 135 | }, 136 | "node_modules/@types/node": { 137 | "version": "18.14.6", 138 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", 139 | "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==" 140 | }, 141 | "node_modules/@types/qs": { 142 | "version": "6.9.7", 143 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", 144 | "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", 145 | "dev": true 146 | }, 147 | "node_modules/@types/range-parser": { 148 | "version": "1.2.4", 149 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", 150 | "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", 151 | "dev": true 152 | }, 153 | "node_modules/@types/serve-static": { 154 | "version": "1.15.1", 155 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", 156 | "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", 157 | "dev": true, 158 | "dependencies": { 159 | "@types/mime": "*", 160 | "@types/node": "*" 161 | } 162 | }, 163 | "node_modules/@types/ws": { 164 | "version": "8.5.4", 165 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", 166 | "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", 167 | "dev": true, 168 | "dependencies": { 169 | "@types/node": "*" 170 | } 171 | }, 172 | "node_modules/accepts": { 173 | "version": "1.3.8", 174 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 175 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 176 | "dependencies": { 177 | "mime-types": "~2.1.34", 178 | "negotiator": "0.6.3" 179 | }, 180 | "engines": { 181 | "node": ">= 0.6" 182 | } 183 | }, 184 | "node_modules/acorn": { 185 | "version": "8.8.2", 186 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", 187 | "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", 188 | "bin": { 189 | "acorn": "bin/acorn" 190 | }, 191 | "engines": { 192 | "node": ">=0.4.0" 193 | } 194 | }, 195 | "node_modules/acorn-walk": { 196 | "version": "8.2.0", 197 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 198 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", 199 | "engines": { 200 | "node": ">=0.4.0" 201 | } 202 | }, 203 | "node_modules/arg": { 204 | "version": "4.1.3", 205 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 206 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" 207 | }, 208 | "node_modules/array-flatten": { 209 | "version": "1.1.1", 210 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 211 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 212 | }, 213 | "node_modules/body-parser": { 214 | "version": "1.20.1", 215 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", 216 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", 217 | "dependencies": { 218 | "bytes": "3.1.2", 219 | "content-type": "~1.0.4", 220 | "debug": "2.6.9", 221 | "depd": "2.0.0", 222 | "destroy": "1.2.0", 223 | "http-errors": "2.0.0", 224 | "iconv-lite": "0.4.24", 225 | "on-finished": "2.4.1", 226 | "qs": "6.11.0", 227 | "raw-body": "2.5.1", 228 | "type-is": "~1.6.18", 229 | "unpipe": "1.0.0" 230 | }, 231 | "engines": { 232 | "node": ">= 0.8", 233 | "npm": "1.2.8000 || >= 1.4.16" 234 | } 235 | }, 236 | "node_modules/bytes": { 237 | "version": "3.1.2", 238 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 239 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", 240 | "engines": { 241 | "node": ">= 0.8" 242 | } 243 | }, 244 | "node_modules/call-bind": { 245 | "version": "1.0.2", 246 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 247 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 248 | "dependencies": { 249 | "function-bind": "^1.1.1", 250 | "get-intrinsic": "^1.0.2" 251 | }, 252 | "funding": { 253 | "url": "https://github.com/sponsors/ljharb" 254 | } 255 | }, 256 | "node_modules/content-disposition": { 257 | "version": "0.5.4", 258 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 259 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 260 | "dependencies": { 261 | "safe-buffer": "5.2.1" 262 | }, 263 | "engines": { 264 | "node": ">= 0.6" 265 | } 266 | }, 267 | "node_modules/content-type": { 268 | "version": "1.0.5", 269 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", 270 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", 271 | "engines": { 272 | "node": ">= 0.6" 273 | } 274 | }, 275 | "node_modules/cookie": { 276 | "version": "0.5.0", 277 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 278 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", 279 | "engines": { 280 | "node": ">= 0.6" 281 | } 282 | }, 283 | "node_modules/cookie-signature": { 284 | "version": "1.0.6", 285 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 286 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 287 | }, 288 | "node_modules/cors": { 289 | "version": "2.8.5", 290 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 291 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 292 | "dependencies": { 293 | "object-assign": "^4", 294 | "vary": "^1" 295 | }, 296 | "engines": { 297 | "node": ">= 0.10" 298 | } 299 | }, 300 | "node_modules/create-require": { 301 | "version": "1.1.1", 302 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 303 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" 304 | }, 305 | "node_modules/debug": { 306 | "version": "2.6.9", 307 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 308 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 309 | "dependencies": { 310 | "ms": "2.0.0" 311 | } 312 | }, 313 | "node_modules/depd": { 314 | "version": "2.0.0", 315 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 316 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", 317 | "engines": { 318 | "node": ">= 0.8" 319 | } 320 | }, 321 | "node_modules/destroy": { 322 | "version": "1.2.0", 323 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 324 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", 325 | "engines": { 326 | "node": ">= 0.8", 327 | "npm": "1.2.8000 || >= 1.4.16" 328 | } 329 | }, 330 | "node_modules/diff": { 331 | "version": "4.0.2", 332 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 333 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", 334 | "engines": { 335 | "node": ">=0.3.1" 336 | } 337 | }, 338 | "node_modules/ee-first": { 339 | "version": "1.1.1", 340 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 341 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 342 | }, 343 | "node_modules/encodeurl": { 344 | "version": "1.0.2", 345 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 346 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", 347 | "engines": { 348 | "node": ">= 0.8" 349 | } 350 | }, 351 | "node_modules/escape-html": { 352 | "version": "1.0.3", 353 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 354 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 355 | }, 356 | "node_modules/etag": { 357 | "version": "1.8.1", 358 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 359 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", 360 | "engines": { 361 | "node": ">= 0.6" 362 | } 363 | }, 364 | "node_modules/express": { 365 | "version": "4.18.2", 366 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", 367 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", 368 | "dependencies": { 369 | "accepts": "~1.3.8", 370 | "array-flatten": "1.1.1", 371 | "body-parser": "1.20.1", 372 | "content-disposition": "0.5.4", 373 | "content-type": "~1.0.4", 374 | "cookie": "0.5.0", 375 | "cookie-signature": "1.0.6", 376 | "debug": "2.6.9", 377 | "depd": "2.0.0", 378 | "encodeurl": "~1.0.2", 379 | "escape-html": "~1.0.3", 380 | "etag": "~1.8.1", 381 | "finalhandler": "1.2.0", 382 | "fresh": "0.5.2", 383 | "http-errors": "2.0.0", 384 | "merge-descriptors": "1.0.1", 385 | "methods": "~1.1.2", 386 | "on-finished": "2.4.1", 387 | "parseurl": "~1.3.3", 388 | "path-to-regexp": "0.1.7", 389 | "proxy-addr": "~2.0.7", 390 | "qs": "6.11.0", 391 | "range-parser": "~1.2.1", 392 | "safe-buffer": "5.2.1", 393 | "send": "0.18.0", 394 | "serve-static": "1.15.0", 395 | "setprototypeof": "1.2.0", 396 | "statuses": "2.0.1", 397 | "type-is": "~1.6.18", 398 | "utils-merge": "1.0.1", 399 | "vary": "~1.1.2" 400 | }, 401 | "engines": { 402 | "node": ">= 0.10.0" 403 | } 404 | }, 405 | "node_modules/finalhandler": { 406 | "version": "1.2.0", 407 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 408 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 409 | "dependencies": { 410 | "debug": "2.6.9", 411 | "encodeurl": "~1.0.2", 412 | "escape-html": "~1.0.3", 413 | "on-finished": "2.4.1", 414 | "parseurl": "~1.3.3", 415 | "statuses": "2.0.1", 416 | "unpipe": "~1.0.0" 417 | }, 418 | "engines": { 419 | "node": ">= 0.8" 420 | } 421 | }, 422 | "node_modules/forwarded": { 423 | "version": "0.2.0", 424 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 425 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", 426 | "engines": { 427 | "node": ">= 0.6" 428 | } 429 | }, 430 | "node_modules/fresh": { 431 | "version": "0.5.2", 432 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 433 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", 434 | "engines": { 435 | "node": ">= 0.6" 436 | } 437 | }, 438 | "node_modules/function-bind": { 439 | "version": "1.1.1", 440 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 441 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 442 | }, 443 | "node_modules/get-intrinsic": { 444 | "version": "1.2.0", 445 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", 446 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", 447 | "dependencies": { 448 | "function-bind": "^1.1.1", 449 | "has": "^1.0.3", 450 | "has-symbols": "^1.0.3" 451 | }, 452 | "funding": { 453 | "url": "https://github.com/sponsors/ljharb" 454 | } 455 | }, 456 | "node_modules/has": { 457 | "version": "1.0.3", 458 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 459 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 460 | "dependencies": { 461 | "function-bind": "^1.1.1" 462 | }, 463 | "engines": { 464 | "node": ">= 0.4.0" 465 | } 466 | }, 467 | "node_modules/has-symbols": { 468 | "version": "1.0.3", 469 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 470 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", 471 | "engines": { 472 | "node": ">= 0.4" 473 | }, 474 | "funding": { 475 | "url": "https://github.com/sponsors/ljharb" 476 | } 477 | }, 478 | "node_modules/http-errors": { 479 | "version": "2.0.0", 480 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 481 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 482 | "dependencies": { 483 | "depd": "2.0.0", 484 | "inherits": "2.0.4", 485 | "setprototypeof": "1.2.0", 486 | "statuses": "2.0.1", 487 | "toidentifier": "1.0.1" 488 | }, 489 | "engines": { 490 | "node": ">= 0.8" 491 | } 492 | }, 493 | "node_modules/iconv-lite": { 494 | "version": "0.4.24", 495 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 496 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 497 | "dependencies": { 498 | "safer-buffer": ">= 2.1.2 < 3" 499 | }, 500 | "engines": { 501 | "node": ">=0.10.0" 502 | } 503 | }, 504 | "node_modules/inherits": { 505 | "version": "2.0.4", 506 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 507 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 508 | }, 509 | "node_modules/ipaddr.js": { 510 | "version": "1.9.1", 511 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 512 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", 513 | "engines": { 514 | "node": ">= 0.10" 515 | } 516 | }, 517 | "node_modules/make-error": { 518 | "version": "1.3.6", 519 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 520 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" 521 | }, 522 | "node_modules/media-typer": { 523 | "version": "0.3.0", 524 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 525 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", 526 | "engines": { 527 | "node": ">= 0.6" 528 | } 529 | }, 530 | "node_modules/merge-descriptors": { 531 | "version": "1.0.1", 532 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 533 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" 534 | }, 535 | "node_modules/methods": { 536 | "version": "1.1.2", 537 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 538 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", 539 | "engines": { 540 | "node": ">= 0.6" 541 | } 542 | }, 543 | "node_modules/mime": { 544 | "version": "1.6.0", 545 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 546 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", 547 | "bin": { 548 | "mime": "cli.js" 549 | }, 550 | "engines": { 551 | "node": ">=4" 552 | } 553 | }, 554 | "node_modules/mime-db": { 555 | "version": "1.52.0", 556 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 557 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", 558 | "engines": { 559 | "node": ">= 0.6" 560 | } 561 | }, 562 | "node_modules/mime-types": { 563 | "version": "2.1.35", 564 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 565 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 566 | "dependencies": { 567 | "mime-db": "1.52.0" 568 | }, 569 | "engines": { 570 | "node": ">= 0.6" 571 | } 572 | }, 573 | "node_modules/ms": { 574 | "version": "2.0.0", 575 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 576 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 577 | }, 578 | "node_modules/negotiator": { 579 | "version": "0.6.3", 580 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 581 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", 582 | "engines": { 583 | "node": ">= 0.6" 584 | } 585 | }, 586 | "node_modules/object-assign": { 587 | "version": "4.1.1", 588 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 589 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", 590 | "engines": { 591 | "node": ">=0.10.0" 592 | } 593 | }, 594 | "node_modules/object-inspect": { 595 | "version": "1.12.3", 596 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 597 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", 598 | "funding": { 599 | "url": "https://github.com/sponsors/ljharb" 600 | } 601 | }, 602 | "node_modules/on-finished": { 603 | "version": "2.4.1", 604 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 605 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 606 | "dependencies": { 607 | "ee-first": "1.1.1" 608 | }, 609 | "engines": { 610 | "node": ">= 0.8" 611 | } 612 | }, 613 | "node_modules/parseurl": { 614 | "version": "1.3.3", 615 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 616 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", 617 | "engines": { 618 | "node": ">= 0.8" 619 | } 620 | }, 621 | "node_modules/path-to-regexp": { 622 | "version": "0.1.7", 623 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 624 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" 625 | }, 626 | "node_modules/proxy-addr": { 627 | "version": "2.0.7", 628 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 629 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 630 | "dependencies": { 631 | "forwarded": "0.2.0", 632 | "ipaddr.js": "1.9.1" 633 | }, 634 | "engines": { 635 | "node": ">= 0.10" 636 | } 637 | }, 638 | "node_modules/qs": { 639 | "version": "6.11.0", 640 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 641 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 642 | "dependencies": { 643 | "side-channel": "^1.0.4" 644 | }, 645 | "engines": { 646 | "node": ">=0.6" 647 | }, 648 | "funding": { 649 | "url": "https://github.com/sponsors/ljharb" 650 | } 651 | }, 652 | "node_modules/range-parser": { 653 | "version": "1.2.1", 654 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 655 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", 656 | "engines": { 657 | "node": ">= 0.6" 658 | } 659 | }, 660 | "node_modules/raw-body": { 661 | "version": "2.5.1", 662 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 663 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 664 | "dependencies": { 665 | "bytes": "3.1.2", 666 | "http-errors": "2.0.0", 667 | "iconv-lite": "0.4.24", 668 | "unpipe": "1.0.0" 669 | }, 670 | "engines": { 671 | "node": ">= 0.8" 672 | } 673 | }, 674 | "node_modules/safe-buffer": { 675 | "version": "5.2.1", 676 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 677 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 678 | "funding": [ 679 | { 680 | "type": "github", 681 | "url": "https://github.com/sponsors/feross" 682 | }, 683 | { 684 | "type": "patreon", 685 | "url": "https://www.patreon.com/feross" 686 | }, 687 | { 688 | "type": "consulting", 689 | "url": "https://feross.org/support" 690 | } 691 | ] 692 | }, 693 | "node_modules/safer-buffer": { 694 | "version": "2.1.2", 695 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 696 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 697 | }, 698 | "node_modules/send": { 699 | "version": "0.18.0", 700 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 701 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 702 | "dependencies": { 703 | "debug": "2.6.9", 704 | "depd": "2.0.0", 705 | "destroy": "1.2.0", 706 | "encodeurl": "~1.0.2", 707 | "escape-html": "~1.0.3", 708 | "etag": "~1.8.1", 709 | "fresh": "0.5.2", 710 | "http-errors": "2.0.0", 711 | "mime": "1.6.0", 712 | "ms": "2.1.3", 713 | "on-finished": "2.4.1", 714 | "range-parser": "~1.2.1", 715 | "statuses": "2.0.1" 716 | }, 717 | "engines": { 718 | "node": ">= 0.8.0" 719 | } 720 | }, 721 | "node_modules/send/node_modules/ms": { 722 | "version": "2.1.3", 723 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 724 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 725 | }, 726 | "node_modules/serve-static": { 727 | "version": "1.15.0", 728 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 729 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 730 | "dependencies": { 731 | "encodeurl": "~1.0.2", 732 | "escape-html": "~1.0.3", 733 | "parseurl": "~1.3.3", 734 | "send": "0.18.0" 735 | }, 736 | "engines": { 737 | "node": ">= 0.8.0" 738 | } 739 | }, 740 | "node_modules/setprototypeof": { 741 | "version": "1.2.0", 742 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 743 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 744 | }, 745 | "node_modules/side-channel": { 746 | "version": "1.0.4", 747 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 748 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 749 | "dependencies": { 750 | "call-bind": "^1.0.0", 751 | "get-intrinsic": "^1.0.2", 752 | "object-inspect": "^1.9.0" 753 | }, 754 | "funding": { 755 | "url": "https://github.com/sponsors/ljharb" 756 | } 757 | }, 758 | "node_modules/statuses": { 759 | "version": "2.0.1", 760 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 761 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", 762 | "engines": { 763 | "node": ">= 0.8" 764 | } 765 | }, 766 | "node_modules/toidentifier": { 767 | "version": "1.0.1", 768 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 769 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", 770 | "engines": { 771 | "node": ">=0.6" 772 | } 773 | }, 774 | "node_modules/ts-node": { 775 | "version": "10.9.1", 776 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", 777 | "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", 778 | "dependencies": { 779 | "@cspotcode/source-map-support": "^0.8.0", 780 | "@tsconfig/node10": "^1.0.7", 781 | "@tsconfig/node12": "^1.0.7", 782 | "@tsconfig/node14": "^1.0.0", 783 | "@tsconfig/node16": "^1.0.2", 784 | "acorn": "^8.4.1", 785 | "acorn-walk": "^8.1.1", 786 | "arg": "^4.1.0", 787 | "create-require": "^1.1.0", 788 | "diff": "^4.0.1", 789 | "make-error": "^1.1.1", 790 | "v8-compile-cache-lib": "^3.0.1", 791 | "yn": "3.1.1" 792 | }, 793 | "bin": { 794 | "ts-node": "dist/bin.js", 795 | "ts-node-cwd": "dist/bin-cwd.js", 796 | "ts-node-esm": "dist/bin-esm.js", 797 | "ts-node-script": "dist/bin-script.js", 798 | "ts-node-transpile-only": "dist/bin-transpile.js", 799 | "ts-script": "dist/bin-script-deprecated.js" 800 | }, 801 | "peerDependencies": { 802 | "@swc/core": ">=1.2.50", 803 | "@swc/wasm": ">=1.2.50", 804 | "@types/node": "*", 805 | "typescript": ">=2.7" 806 | }, 807 | "peerDependenciesMeta": { 808 | "@swc/core": { 809 | "optional": true 810 | }, 811 | "@swc/wasm": { 812 | "optional": true 813 | } 814 | } 815 | }, 816 | "node_modules/type-is": { 817 | "version": "1.6.18", 818 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 819 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 820 | "dependencies": { 821 | "media-typer": "0.3.0", 822 | "mime-types": "~2.1.24" 823 | }, 824 | "engines": { 825 | "node": ">= 0.6" 826 | } 827 | }, 828 | "node_modules/typescript": { 829 | "version": "4.9.5", 830 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 831 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 832 | "peer": true, 833 | "bin": { 834 | "tsc": "bin/tsc", 835 | "tsserver": "bin/tsserver" 836 | }, 837 | "engines": { 838 | "node": ">=4.2.0" 839 | } 840 | }, 841 | "node_modules/unpipe": { 842 | "version": "1.0.0", 843 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 844 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", 845 | "engines": { 846 | "node": ">= 0.8" 847 | } 848 | }, 849 | "node_modules/utils-merge": { 850 | "version": "1.0.1", 851 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 852 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", 853 | "engines": { 854 | "node": ">= 0.4.0" 855 | } 856 | }, 857 | "node_modules/v8-compile-cache-lib": { 858 | "version": "3.0.1", 859 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", 860 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" 861 | }, 862 | "node_modules/vary": { 863 | "version": "1.1.2", 864 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 865 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", 866 | "engines": { 867 | "node": ">= 0.8" 868 | } 869 | }, 870 | "node_modules/ws": { 871 | "version": "8.12.1", 872 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", 873 | "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", 874 | "engines": { 875 | "node": ">=10.0.0" 876 | }, 877 | "peerDependencies": { 878 | "bufferutil": "^4.0.1", 879 | "utf-8-validate": ">=5.0.2" 880 | }, 881 | "peerDependenciesMeta": { 882 | "bufferutil": { 883 | "optional": true 884 | }, 885 | "utf-8-validate": { 886 | "optional": true 887 | } 888 | } 889 | }, 890 | "node_modules/yn": { 891 | "version": "3.1.1", 892 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 893 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", 894 | "engines": { 895 | "node": ">=6" 896 | } 897 | }, 898 | "node_modules/zod": { 899 | "version": "3.21.0", 900 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.0.tgz", 901 | "integrity": "sha512-UYdykTcVxB6lfdyLzAqLyyYAlOcpoluECvjsdoaqfQmz9p+3LRaIqYcNiL/J2kFYp66fBM8wwBvIGVEjq7KtZw==", 902 | "funding": { 903 | "url": "https://github.com/sponsors/colinhacks" 904 | } 905 | } 906 | }, 907 | "dependencies": { 908 | "@cspotcode/source-map-support": { 909 | "version": "0.8.1", 910 | "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", 911 | "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", 912 | "requires": { 913 | "@jridgewell/trace-mapping": "0.3.9" 914 | } 915 | }, 916 | "@jridgewell/resolve-uri": { 917 | "version": "3.1.0", 918 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", 919 | "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==" 920 | }, 921 | "@jridgewell/sourcemap-codec": { 922 | "version": "1.4.14", 923 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 924 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==" 925 | }, 926 | "@jridgewell/trace-mapping": { 927 | "version": "0.3.9", 928 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", 929 | "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", 930 | "requires": { 931 | "@jridgewell/resolve-uri": "^3.0.3", 932 | "@jridgewell/sourcemap-codec": "^1.4.10" 933 | } 934 | }, 935 | "@trpc/server": { 936 | "version": "10.14.0", 937 | "resolved": "https://registry.npmjs.org/@trpc/server/-/server-10.14.0.tgz", 938 | "integrity": "sha512-hNnvwkSfqpIb89CH8pTV8VkldS9qjd3ZxaCgya7CeCk6QeDajT/bRX9bPmrkEe0UQtrbbPU5h47nuMrBsN2ghQ==" 939 | }, 940 | "@tsconfig/node10": { 941 | "version": "1.0.9", 942 | "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", 943 | "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==" 944 | }, 945 | "@tsconfig/node12": { 946 | "version": "1.0.11", 947 | "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", 948 | "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==" 949 | }, 950 | "@tsconfig/node14": { 951 | "version": "1.0.3", 952 | "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", 953 | "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==" 954 | }, 955 | "@tsconfig/node16": { 956 | "version": "1.0.3", 957 | "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", 958 | "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==" 959 | }, 960 | "@types/body-parser": { 961 | "version": "1.19.2", 962 | "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", 963 | "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", 964 | "dev": true, 965 | "requires": { 966 | "@types/connect": "*", 967 | "@types/node": "*" 968 | } 969 | }, 970 | "@types/connect": { 971 | "version": "3.4.35", 972 | "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", 973 | "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", 974 | "dev": true, 975 | "requires": { 976 | "@types/node": "*" 977 | } 978 | }, 979 | "@types/cors": { 980 | "version": "2.8.13", 981 | "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", 982 | "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", 983 | "dev": true, 984 | "requires": { 985 | "@types/node": "*" 986 | } 987 | }, 988 | "@types/express": { 989 | "version": "4.17.17", 990 | "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.17.tgz", 991 | "integrity": "sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==", 992 | "dev": true, 993 | "requires": { 994 | "@types/body-parser": "*", 995 | "@types/express-serve-static-core": "^4.17.33", 996 | "@types/qs": "*", 997 | "@types/serve-static": "*" 998 | } 999 | }, 1000 | "@types/express-serve-static-core": { 1001 | "version": "4.17.33", 1002 | "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.33.tgz", 1003 | "integrity": "sha512-TPBqmR/HRYI3eC2E5hmiivIzv+bidAfXofM+sbonAGvyDhySGw9/PQZFt2BLOrjUUR++4eJVpx6KnLQK1Fk9tA==", 1004 | "dev": true, 1005 | "requires": { 1006 | "@types/node": "*", 1007 | "@types/qs": "*", 1008 | "@types/range-parser": "*" 1009 | } 1010 | }, 1011 | "@types/mime": { 1012 | "version": "3.0.1", 1013 | "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", 1014 | "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", 1015 | "dev": true 1016 | }, 1017 | "@types/node": { 1018 | "version": "18.14.6", 1019 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.14.6.tgz", 1020 | "integrity": "sha512-93+VvleD3mXwlLI/xASjw0FzKcwzl3OdTCzm1LaRfqgS21gfFtK3zDXM5Op9TeeMsJVOaJ2VRDpT9q4Y3d0AvA==" 1021 | }, 1022 | "@types/qs": { 1023 | "version": "6.9.7", 1024 | "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", 1025 | "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", 1026 | "dev": true 1027 | }, 1028 | "@types/range-parser": { 1029 | "version": "1.2.4", 1030 | "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", 1031 | "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", 1032 | "dev": true 1033 | }, 1034 | "@types/serve-static": { 1035 | "version": "1.15.1", 1036 | "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.1.tgz", 1037 | "integrity": "sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==", 1038 | "dev": true, 1039 | "requires": { 1040 | "@types/mime": "*", 1041 | "@types/node": "*" 1042 | } 1043 | }, 1044 | "@types/ws": { 1045 | "version": "8.5.4", 1046 | "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz", 1047 | "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==", 1048 | "dev": true, 1049 | "requires": { 1050 | "@types/node": "*" 1051 | } 1052 | }, 1053 | "accepts": { 1054 | "version": "1.3.8", 1055 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 1056 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 1057 | "requires": { 1058 | "mime-types": "~2.1.34", 1059 | "negotiator": "0.6.3" 1060 | } 1061 | }, 1062 | "acorn": { 1063 | "version": "8.8.2", 1064 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", 1065 | "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==" 1066 | }, 1067 | "acorn-walk": { 1068 | "version": "8.2.0", 1069 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", 1070 | "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==" 1071 | }, 1072 | "arg": { 1073 | "version": "4.1.3", 1074 | "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", 1075 | "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==" 1076 | }, 1077 | "array-flatten": { 1078 | "version": "1.1.1", 1079 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 1080 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 1081 | }, 1082 | "body-parser": { 1083 | "version": "1.20.1", 1084 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", 1085 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", 1086 | "requires": { 1087 | "bytes": "3.1.2", 1088 | "content-type": "~1.0.4", 1089 | "debug": "2.6.9", 1090 | "depd": "2.0.0", 1091 | "destroy": "1.2.0", 1092 | "http-errors": "2.0.0", 1093 | "iconv-lite": "0.4.24", 1094 | "on-finished": "2.4.1", 1095 | "qs": "6.11.0", 1096 | "raw-body": "2.5.1", 1097 | "type-is": "~1.6.18", 1098 | "unpipe": "1.0.0" 1099 | } 1100 | }, 1101 | "bytes": { 1102 | "version": "3.1.2", 1103 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 1104 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 1105 | }, 1106 | "call-bind": { 1107 | "version": "1.0.2", 1108 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 1109 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 1110 | "requires": { 1111 | "function-bind": "^1.1.1", 1112 | "get-intrinsic": "^1.0.2" 1113 | } 1114 | }, 1115 | "content-disposition": { 1116 | "version": "0.5.4", 1117 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 1118 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 1119 | "requires": { 1120 | "safe-buffer": "5.2.1" 1121 | } 1122 | }, 1123 | "content-type": { 1124 | "version": "1.0.5", 1125 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", 1126 | "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==" 1127 | }, 1128 | "cookie": { 1129 | "version": "0.5.0", 1130 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 1131 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" 1132 | }, 1133 | "cookie-signature": { 1134 | "version": "1.0.6", 1135 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 1136 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 1137 | }, 1138 | "cors": { 1139 | "version": "2.8.5", 1140 | "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", 1141 | "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", 1142 | "requires": { 1143 | "object-assign": "^4", 1144 | "vary": "^1" 1145 | } 1146 | }, 1147 | "create-require": { 1148 | "version": "1.1.1", 1149 | "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", 1150 | "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==" 1151 | }, 1152 | "debug": { 1153 | "version": "2.6.9", 1154 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1155 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1156 | "requires": { 1157 | "ms": "2.0.0" 1158 | } 1159 | }, 1160 | "depd": { 1161 | "version": "2.0.0", 1162 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 1163 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 1164 | }, 1165 | "destroy": { 1166 | "version": "1.2.0", 1167 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 1168 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" 1169 | }, 1170 | "diff": { 1171 | "version": "4.0.2", 1172 | "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", 1173 | "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" 1174 | }, 1175 | "ee-first": { 1176 | "version": "1.1.1", 1177 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1178 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 1179 | }, 1180 | "encodeurl": { 1181 | "version": "1.0.2", 1182 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1183 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" 1184 | }, 1185 | "escape-html": { 1186 | "version": "1.0.3", 1187 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1188 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 1189 | }, 1190 | "etag": { 1191 | "version": "1.8.1", 1192 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 1193 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" 1194 | }, 1195 | "express": { 1196 | "version": "4.18.2", 1197 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", 1198 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", 1199 | "requires": { 1200 | "accepts": "~1.3.8", 1201 | "array-flatten": "1.1.1", 1202 | "body-parser": "1.20.1", 1203 | "content-disposition": "0.5.4", 1204 | "content-type": "~1.0.4", 1205 | "cookie": "0.5.0", 1206 | "cookie-signature": "1.0.6", 1207 | "debug": "2.6.9", 1208 | "depd": "2.0.0", 1209 | "encodeurl": "~1.0.2", 1210 | "escape-html": "~1.0.3", 1211 | "etag": "~1.8.1", 1212 | "finalhandler": "1.2.0", 1213 | "fresh": "0.5.2", 1214 | "http-errors": "2.0.0", 1215 | "merge-descriptors": "1.0.1", 1216 | "methods": "~1.1.2", 1217 | "on-finished": "2.4.1", 1218 | "parseurl": "~1.3.3", 1219 | "path-to-regexp": "0.1.7", 1220 | "proxy-addr": "~2.0.7", 1221 | "qs": "6.11.0", 1222 | "range-parser": "~1.2.1", 1223 | "safe-buffer": "5.2.1", 1224 | "send": "0.18.0", 1225 | "serve-static": "1.15.0", 1226 | "setprototypeof": "1.2.0", 1227 | "statuses": "2.0.1", 1228 | "type-is": "~1.6.18", 1229 | "utils-merge": "1.0.1", 1230 | "vary": "~1.1.2" 1231 | } 1232 | }, 1233 | "finalhandler": { 1234 | "version": "1.2.0", 1235 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 1236 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 1237 | "requires": { 1238 | "debug": "2.6.9", 1239 | "encodeurl": "~1.0.2", 1240 | "escape-html": "~1.0.3", 1241 | "on-finished": "2.4.1", 1242 | "parseurl": "~1.3.3", 1243 | "statuses": "2.0.1", 1244 | "unpipe": "~1.0.0" 1245 | } 1246 | }, 1247 | "forwarded": { 1248 | "version": "0.2.0", 1249 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 1250 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 1251 | }, 1252 | "fresh": { 1253 | "version": "0.5.2", 1254 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 1255 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" 1256 | }, 1257 | "function-bind": { 1258 | "version": "1.1.1", 1259 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1260 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1261 | }, 1262 | "get-intrinsic": { 1263 | "version": "1.2.0", 1264 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", 1265 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", 1266 | "requires": { 1267 | "function-bind": "^1.1.1", 1268 | "has": "^1.0.3", 1269 | "has-symbols": "^1.0.3" 1270 | } 1271 | }, 1272 | "has": { 1273 | "version": "1.0.3", 1274 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1275 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1276 | "requires": { 1277 | "function-bind": "^1.1.1" 1278 | } 1279 | }, 1280 | "has-symbols": { 1281 | "version": "1.0.3", 1282 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1283 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 1284 | }, 1285 | "http-errors": { 1286 | "version": "2.0.0", 1287 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 1288 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 1289 | "requires": { 1290 | "depd": "2.0.0", 1291 | "inherits": "2.0.4", 1292 | "setprototypeof": "1.2.0", 1293 | "statuses": "2.0.1", 1294 | "toidentifier": "1.0.1" 1295 | } 1296 | }, 1297 | "iconv-lite": { 1298 | "version": "0.4.24", 1299 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1300 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1301 | "requires": { 1302 | "safer-buffer": ">= 2.1.2 < 3" 1303 | } 1304 | }, 1305 | "inherits": { 1306 | "version": "2.0.4", 1307 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1308 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1309 | }, 1310 | "ipaddr.js": { 1311 | "version": "1.9.1", 1312 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 1313 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 1314 | }, 1315 | "make-error": { 1316 | "version": "1.3.6", 1317 | "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", 1318 | "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==" 1319 | }, 1320 | "media-typer": { 1321 | "version": "0.3.0", 1322 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1323 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" 1324 | }, 1325 | "merge-descriptors": { 1326 | "version": "1.0.1", 1327 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1328 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" 1329 | }, 1330 | "methods": { 1331 | "version": "1.1.2", 1332 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1333 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" 1334 | }, 1335 | "mime": { 1336 | "version": "1.6.0", 1337 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1338 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1339 | }, 1340 | "mime-db": { 1341 | "version": "1.52.0", 1342 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1343 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 1344 | }, 1345 | "mime-types": { 1346 | "version": "2.1.35", 1347 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1348 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1349 | "requires": { 1350 | "mime-db": "1.52.0" 1351 | } 1352 | }, 1353 | "ms": { 1354 | "version": "2.0.0", 1355 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1356 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 1357 | }, 1358 | "negotiator": { 1359 | "version": "0.6.3", 1360 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 1361 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 1362 | }, 1363 | "object-assign": { 1364 | "version": "4.1.1", 1365 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 1366 | "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" 1367 | }, 1368 | "object-inspect": { 1369 | "version": "1.12.3", 1370 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 1371 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" 1372 | }, 1373 | "on-finished": { 1374 | "version": "2.4.1", 1375 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 1376 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 1377 | "requires": { 1378 | "ee-first": "1.1.1" 1379 | } 1380 | }, 1381 | "parseurl": { 1382 | "version": "1.3.3", 1383 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1384 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1385 | }, 1386 | "path-to-regexp": { 1387 | "version": "0.1.7", 1388 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1389 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" 1390 | }, 1391 | "proxy-addr": { 1392 | "version": "2.0.7", 1393 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 1394 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 1395 | "requires": { 1396 | "forwarded": "0.2.0", 1397 | "ipaddr.js": "1.9.1" 1398 | } 1399 | }, 1400 | "qs": { 1401 | "version": "6.11.0", 1402 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 1403 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 1404 | "requires": { 1405 | "side-channel": "^1.0.4" 1406 | } 1407 | }, 1408 | "range-parser": { 1409 | "version": "1.2.1", 1410 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1411 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 1412 | }, 1413 | "raw-body": { 1414 | "version": "2.5.1", 1415 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 1416 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 1417 | "requires": { 1418 | "bytes": "3.1.2", 1419 | "http-errors": "2.0.0", 1420 | "iconv-lite": "0.4.24", 1421 | "unpipe": "1.0.0" 1422 | } 1423 | }, 1424 | "safe-buffer": { 1425 | "version": "5.2.1", 1426 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1427 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1428 | }, 1429 | "safer-buffer": { 1430 | "version": "2.1.2", 1431 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1432 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1433 | }, 1434 | "send": { 1435 | "version": "0.18.0", 1436 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 1437 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 1438 | "requires": { 1439 | "debug": "2.6.9", 1440 | "depd": "2.0.0", 1441 | "destroy": "1.2.0", 1442 | "encodeurl": "~1.0.2", 1443 | "escape-html": "~1.0.3", 1444 | "etag": "~1.8.1", 1445 | "fresh": "0.5.2", 1446 | "http-errors": "2.0.0", 1447 | "mime": "1.6.0", 1448 | "ms": "2.1.3", 1449 | "on-finished": "2.4.1", 1450 | "range-parser": "~1.2.1", 1451 | "statuses": "2.0.1" 1452 | }, 1453 | "dependencies": { 1454 | "ms": { 1455 | "version": "2.1.3", 1456 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1457 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1458 | } 1459 | } 1460 | }, 1461 | "serve-static": { 1462 | "version": "1.15.0", 1463 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 1464 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 1465 | "requires": { 1466 | "encodeurl": "~1.0.2", 1467 | "escape-html": "~1.0.3", 1468 | "parseurl": "~1.3.3", 1469 | "send": "0.18.0" 1470 | } 1471 | }, 1472 | "setprototypeof": { 1473 | "version": "1.2.0", 1474 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1475 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1476 | }, 1477 | "side-channel": { 1478 | "version": "1.0.4", 1479 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1480 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1481 | "requires": { 1482 | "call-bind": "^1.0.0", 1483 | "get-intrinsic": "^1.0.2", 1484 | "object-inspect": "^1.9.0" 1485 | } 1486 | }, 1487 | "statuses": { 1488 | "version": "2.0.1", 1489 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1490 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 1491 | }, 1492 | "toidentifier": { 1493 | "version": "1.0.1", 1494 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 1495 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 1496 | }, 1497 | "ts-node": { 1498 | "version": "10.9.1", 1499 | "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", 1500 | "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", 1501 | "requires": { 1502 | "@cspotcode/source-map-support": "^0.8.0", 1503 | "@tsconfig/node10": "^1.0.7", 1504 | "@tsconfig/node12": "^1.0.7", 1505 | "@tsconfig/node14": "^1.0.0", 1506 | "@tsconfig/node16": "^1.0.2", 1507 | "acorn": "^8.4.1", 1508 | "acorn-walk": "^8.1.1", 1509 | "arg": "^4.1.0", 1510 | "create-require": "^1.1.0", 1511 | "diff": "^4.0.1", 1512 | "make-error": "^1.1.1", 1513 | "v8-compile-cache-lib": "^3.0.1", 1514 | "yn": "3.1.1" 1515 | } 1516 | }, 1517 | "type-is": { 1518 | "version": "1.6.18", 1519 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1520 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1521 | "requires": { 1522 | "media-typer": "0.3.0", 1523 | "mime-types": "~2.1.24" 1524 | } 1525 | }, 1526 | "typescript": { 1527 | "version": "4.9.5", 1528 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", 1529 | "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", 1530 | "peer": true 1531 | }, 1532 | "unpipe": { 1533 | "version": "1.0.0", 1534 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1535 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" 1536 | }, 1537 | "utils-merge": { 1538 | "version": "1.0.1", 1539 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1540 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" 1541 | }, 1542 | "v8-compile-cache-lib": { 1543 | "version": "3.0.1", 1544 | "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", 1545 | "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==" 1546 | }, 1547 | "vary": { 1548 | "version": "1.1.2", 1549 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1550 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" 1551 | }, 1552 | "ws": { 1553 | "version": "8.12.1", 1554 | "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.1.tgz", 1555 | "integrity": "sha512-1qo+M9Ba+xNhPB+YTWUlK6M17brTut5EXbcBaMRN5pH5dFrXz7lzz1ChFSUq3bOUl8yEvSenhHmYUNJxFzdJew==", 1556 | "requires": {} 1557 | }, 1558 | "yn": { 1559 | "version": "3.1.1", 1560 | "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", 1561 | "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==" 1562 | }, 1563 | "zod": { 1564 | "version": "3.21.0", 1565 | "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.0.tgz", 1566 | "integrity": "sha512-UYdykTcVxB6lfdyLzAqLyyYAlOcpoluECvjsdoaqfQmz9p+3LRaIqYcNiL/J2kFYp66fBM8wwBvIGVEjq7KtZw==" 1567 | } 1568 | } 1569 | } 1570 | -------------------------------------------------------------------------------- /tRPC/server/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "@trpc/server": "^10.14.0", 4 | "cors": "^2.8.5", 5 | "express": "^4.18.2", 6 | "ts-node": "^10.9.1", 7 | "ws": "^8.12.1", 8 | "zod": "^3.21.0" 9 | }, 10 | "devDependencies": { 11 | "@types/cors": "^2.8.13", 12 | "@types/express": "^4.17.17", 13 | "@types/ws": "^8.5.4" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /tRPC/server/router.ts: -------------------------------------------------------------------------------- 1 | import { adminProcedure, t } from "./trpc"; 2 | import { z } from "zod"; 3 | import { observable } from "@trpc/server/observable"; 4 | import { EventEmitter } from "stream"; 5 | 6 | const events = new EventEmitter(); 7 | 8 | const userRouter = t.router({ 9 | getUser: t.procedure.query((req) => { 10 | return [{ id: 1, name: "RAKESH" }]; 11 | }) 12 | }); 13 | 14 | export const appRouter = t.router({ 15 | greet: t.procedure.input(z.string()).query((req) => { 16 | console.log(req.ctx); 17 | return req.input; 18 | }), 19 | addData: t.procedure 20 | .input( 21 | z.object({ 22 | name: z.string(), 23 | email: z.string().email() 24 | }) 25 | ) 26 | .mutation((req) => { 27 | console.log(req.input); 28 | events.emit("add", req.input.email); 29 | }), 30 | secretData: adminProcedure.query(({ ctx }) => { 31 | console.log(ctx.user); 32 | }), 33 | users: userRouter, 34 | onaddData: t.procedure.subscription(() => { 35 | return observable((emit) => { 36 | events.on("add", emit.next); 37 | return () => { 38 | events.off("add", emit.next); 39 | }; 40 | }); 41 | }) 42 | }); 43 | -------------------------------------------------------------------------------- /tRPC/server/trpc.ts: -------------------------------------------------------------------------------- 1 | import * as trpcExpress from "@trpc/server/adapters/express"; 2 | import { initTRPC, inferAsyncReturnType, TRPCError } from "@trpc/server"; 3 | const createContext = () => { 4 | return { 5 | role: true 6 | }; 7 | }; 8 | type Context = inferAsyncReturnType; 9 | export const t = initTRPC.context().create(); 10 | const isAdminMiddleware = t.middleware(({ ctx, next }) => { 11 | if (!ctx.role) { 12 | throw new TRPCError({ 13 | code: "UNAUTHORIZED" 14 | }); 15 | } 16 | return next({ 17 | ctx: { 18 | user: { 19 | id: 1 20 | } 21 | } 22 | }); 23 | }); 24 | export const adminProcedure = t.procedure.use(isAdminMiddleware); 25 | export default createContext; 26 | -------------------------------------------------------------------------------- /tRPC/server/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | /* Visit https://aka.ms/tsconfig.json to read more about this file */ 4 | 5 | /* Projects */ 6 | // "incremental": true, /* Enable incremental compilation */ 7 | // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 | // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ 9 | // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ 10 | // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ 11 | // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ 12 | 13 | /* Language and Environment */ 14 | "target": "es2016", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ 15 | // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ 16 | // "jsx": "preserve", /* Specify what JSX code is generated. */ 17 | // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ 18 | // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ 19 | // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ 20 | // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ 21 | // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ 22 | // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ 23 | // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ 24 | // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ 25 | 26 | /* Modules */ 27 | "module": "commonjs", /* Specify what module code is generated. */ 28 | // "rootDir": "./", /* Specify the root folder within your source files. */ 29 | // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ 30 | // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 31 | // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 32 | // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 33 | // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ 34 | // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 35 | // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 36 | // "resolveJsonModule": true, /* Enable importing .json files */ 37 | // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ 38 | 39 | /* JavaScript Support */ 40 | // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ 41 | // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 42 | // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ 43 | 44 | /* Emit */ 45 | // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 46 | // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 47 | // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 48 | // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 49 | // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ 50 | // "outDir": "./", /* Specify an output folder for all emitted files. */ 51 | // "removeComments": true, /* Disable emitting comments. */ 52 | // "noEmit": true, /* Disable emitting files from a compilation. */ 53 | // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 54 | // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ 55 | // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 56 | // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 57 | // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 58 | // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 59 | // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 60 | // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 61 | // "newLine": "crlf", /* Set the newline character for emitting files. */ 62 | // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ 63 | // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ 64 | // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 65 | // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ 66 | // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 67 | // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 68 | 69 | /* Interop Constraints */ 70 | // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 71 | // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ 72 | "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ 73 | // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 74 | "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ 75 | 76 | /* Type Checking */ 77 | "strict": true, /* Enable all strict type-checking options. */ 78 | // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ 79 | // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ 80 | // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 81 | // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ 82 | // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 83 | // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ 84 | // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ 85 | // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 86 | // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ 87 | // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ 88 | // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 89 | // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 90 | // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 91 | // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ 92 | // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 93 | // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ 94 | // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 95 | // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 96 | 97 | /* Completeness */ 98 | // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 99 | "skipLibCheck": true /* Skip type checking all .d.ts files. */ 100 | } 101 | } 102 | --------------------------------------------------------------------------------