this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Initial commit.

alice 778ded41

+2445
+12
.editorconfig
··· 1 + # EditorConfig is awesome: https://EditorConfig.org 2 + 3 + # top-most EditorConfig file 4 + root = true 5 + 6 + [*] 7 + indent_style = space 8 + indent_size = 2 9 + end_of_line = lf 10 + charset = utf-8 11 + trim_trailing_whitespace = false 12 + insert_final_newline = true
+2
.env.example
··· 1 + BSKY_USERNAME= 2 + BSKY_PASSWORD=
+17
.eslintrc.json
··· 1 + { 2 + "env": { 3 + "es2021": true, 4 + "node": true 5 + }, 6 + "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"], 7 + "overrides": [], 8 + "parser": "@typescript-eslint/parser", 9 + "parserOptions": { 10 + "ecmaVersion": "latest", 11 + "sourceType": "module" 12 + }, 13 + "plugins": ["@typescript-eslint"], 14 + "rules": { 15 + "@typescript-eslint/no-non-null-assertion": "off" 16 + } 17 + }
+132
.gitignore
··· 1 + # Logs 2 + logs 3 + *.log 4 + npm-debug.log* 5 + yarn-debug.log* 6 + yarn-error.log* 7 + lerna-debug.log* 8 + .pnpm-debug.log* 9 + 10 + # Diagnostic reports (https://nodejs.org/api/report.html) 11 + report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 + 13 + # Runtime data 14 + pids 15 + *.pid 16 + *.seed 17 + *.pid.lock 18 + 19 + # Directory for instrumented libs generated by jscoverage/JSCover 20 + lib-cov 21 + 22 + # Coverage directory used by tools like istanbul 23 + coverage 24 + *.lcov 25 + 26 + # nyc test coverage 27 + .nyc_output 28 + 29 + # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 + .grunt 31 + 32 + # Bower dependency directory (https://bower.io/) 33 + bower_components 34 + 35 + # node-waf configuration 36 + .lock-wscript 37 + 38 + # Compiled binary addons (https://nodejs.org/api/addons.html) 39 + build/Release 40 + 41 + # Dependency directories 42 + node_modules/ 43 + jspm_packages/ 44 + 45 + # Snowpack dependency directory (https://snowpack.dev/) 46 + web_modules/ 47 + 48 + # TypeScript cache 49 + *.tsbuildinfo 50 + 51 + # Optional npm cache directory 52 + .npm 53 + 54 + # Optional eslint cache 55 + .eslintcache 56 + 57 + # Optional stylelint cache 58 + .stylelintcache 59 + 60 + # Microbundle cache 61 + .rpt2_cache/ 62 + .rts2_cache_cjs/ 63 + .rts2_cache_es/ 64 + .rts2_cache_umd/ 65 + 66 + # Optional REPL history 67 + .node_repl_history 68 + 69 + # Output of 'npm pack' 70 + *.tgz 71 + 72 + # Yarn Integrity file 73 + .yarn-integrity 74 + 75 + # dotenv environment variable files 76 + .env 77 + .env.development.local 78 + .env.test.local 79 + .env.production.local 80 + .env.local 81 + 82 + # parcel-bundler cache (https://parceljs.org/) 83 + .cache 84 + .parcel-cache 85 + 86 + # Next.js build output 87 + .next 88 + out 89 + 90 + # Nuxt.js build / generate output 91 + .nuxt 92 + dist 93 + 94 + # Gatsby files 95 + .cache/ 96 + # Comment in the public line in if your project uses Gatsby and not Next.js 97 + # https://nextjs.org/blog/next-9-1#public-directory-support 98 + # public 99 + 100 + # vuepress build output 101 + .vuepress/dist 102 + 103 + # vuepress v2.x temp and cache directory 104 + .temp 105 + .cache 106 + 107 + # Docusaurus cache and generated files 108 + .docusaurus 109 + 110 + # Serverless directories 111 + .serverless/ 112 + 113 + # FuseBox cache 114 + .fusebox/ 115 + 116 + # DynamoDB Local files 117 + .dynamodb/ 118 + 119 + # TernJS port file 120 + .tern-port 121 + 122 + # Stores VSCode versions used for testing VSCode extensions 123 + .vscode-test 124 + 125 + # yarn v2 126 + .yarn/cache 127 + .yarn/unplugged 128 + .yarn/build-state.yml 129 + .yarn/install-state.gz 130 + .pnp.* 131 + 132 + posted.txt
+6
.prettierrc.json
··· 1 + { 2 + "semi": true, 3 + "singleQuote": true, 4 + "trailingComma": "all", 5 + "printWidth": 120 6 + }
+1
README.md
··· 1 + # bluesky search (for your own bleets)
+293
custom-typings.d.ts
··· 1 + // Type definitions for Fuse.js v6.6.2 2 + // TypeScript v4.5.4 3 + declare module 'fuse.js' { 4 + export default class Fuse<T> { 5 + constructor(list: ReadonlyArray<T>, options?: Fuse.IFuseOptions<T>, index?: Fuse.FuseIndex<T>); 6 + /** 7 + * Search function for the Fuse instance. 8 + * 9 + * ```typescript 10 + * const list: MyType[] = [myType1, myType2, etc...] 11 + 12 + * const options: Fuse.IFuseOptions<MyType> = { 13 + * keys: ['key1', 'key2'] 14 + * } 15 + * 16 + * const myFuse = new Fuse(list, options) 17 + * let result = myFuse.search('pattern') 18 + * ``` 19 + * 20 + * @param pattern The pattern to search 21 + * @param options `Fuse.FuseSearchOptions` 22 + * @returns An array of search results 23 + */ 24 + search<R = T>(pattern: string | Fuse.Expression, options?: Fuse.FuseSearchOptions): Fuse.FuseResult<R>[]; 25 + 26 + setCollection(docs: ReadonlyArray<T>, index?: Fuse.FuseIndex<T>): void; 27 + 28 + /** 29 + * Adds a doc to the end the list. 30 + */ 31 + add(doc: T): void; 32 + 33 + /** 34 + * Removes all documents from the list which the predicate returns truthy for, 35 + * and returns an array of the removed docs. 36 + * The predicate is invoked with two arguments: (doc, index). 37 + */ 38 + remove(predicate: (doc: T, idx: number) => boolean): T[]; 39 + 40 + /** 41 + * Removes the doc at the specified index. 42 + */ 43 + removeAt(idx: number): void; 44 + 45 + /** 46 + * Returns the generated Fuse index 47 + */ 48 + getIndex(): Fuse.FuseIndex<T>; 49 + 50 + /** 51 + * Return the current version. 52 + */ 53 + static version: string; 54 + 55 + /** 56 + * Use this method to pre-generate the index from the list, and pass it 57 + * directly into the Fuse instance. 58 + * 59 + * _Note that Fuse will automatically index the table if one isn't provided 60 + * during instantiation._ 61 + * 62 + * ```typescript 63 + * const list: MyType[] = [myType1, myType2, etc...] 64 + * 65 + * const index = Fuse.createIndex<MyType>( 66 + * keys: ['key1', 'key2'] 67 + * list: list 68 + * ) 69 + * 70 + * const options: Fuse.IFuseOptions<MyType> = { 71 + * keys: ['key1', 'key2'] 72 + * } 73 + * 74 + * const myFuse = new Fuse(list, options, index) 75 + * ``` 76 + * @param keys The keys to index 77 + * @param list The list from which to create an index 78 + * @param options? 79 + * @returns An indexed list 80 + */ 81 + static createIndex<U>( 82 + keys: Array<Fuse.FuseOptionKey<U>>, 83 + list: ReadonlyArray<U>, 84 + options?: Fuse.FuseIndexOptions<U>, 85 + ): Fuse.FuseIndex<U>; 86 + 87 + static parseIndex<U>(index: any, options?: Fuse.FuseIndexOptions<U>): Fuse.FuseIndex<U>; 88 + } 89 + 90 + export class FuseIndex<T> { 91 + constructor(options?: FuseIndexOptions<T>); 92 + setSources(docs: ReadonlyArray<T>): void; 93 + setKeys(keys: ReadonlyArray<string>): void; 94 + setIndexRecords(records: FuseIndexRecords): void; 95 + create(): void; 96 + add(doc: T): void; 97 + toJSON(): { 98 + keys: ReadonlyArray<string>; 99 + records: FuseIndexRecords; 100 + }; 101 + } 102 + 103 + type FuseGetFunction<T> = (obj: T, path: string | string[]) => ReadonlyArray<string> | string; 104 + 105 + export type FuseIndexOptions<T> = { 106 + getFn: FuseGetFunction<T>; 107 + }; 108 + 109 + // { 110 + // title: { '$': "Old Man's War" }, 111 + // 'author.firstName': { '$': 'Codenar' } 112 + // } 113 + // 114 + // OR 115 + // 116 + // { 117 + // tags: [ 118 + // { $: 'nonfiction', idx: 0 }, 119 + // { $: 'web development', idx: 1 }, 120 + // ] 121 + // } 122 + export type FuseSortFunctionItem = { 123 + [key: string]: { $: string } | { $: string; idx: number }[]; 124 + }; 125 + 126 + // { 127 + // score: 0.001, 128 + // key: 'author.firstName', 129 + // value: 'Codenar', 130 + // indices: [ [ 0, 3 ] ] 131 + // } 132 + export type FuseSortFunctionMatch = { 133 + score: number; 134 + key: string; 135 + value: string; 136 + indices: ReadonlyArray<number>[]; 137 + }; 138 + 139 + // { 140 + // score: 0, 141 + // key: 'tags', 142 + // value: 'nonfiction', 143 + // idx: 1, 144 + // indices: [ [ 0, 9 ] ] 145 + // } 146 + export type FuseSortFunctionMatchList = FuseSortFunctionMatch & { 147 + idx: number; 148 + }; 149 + 150 + export type FuseSortFunctionArg = { 151 + idx: number; 152 + item: FuseSortFunctionItem; 153 + score: number; 154 + matches?: (FuseSortFunctionMatch | FuseSortFunctionMatchList)[]; 155 + }; 156 + 157 + export type FuseSortFunction = (a: FuseSortFunctionArg, b: FuseSortFunctionArg) => number; 158 + 159 + // title: { 160 + // '$': "Old Man's War", 161 + // 'n': 0.5773502691896258 162 + // } 163 + type RecordEntryObject = { 164 + v: string; // The text value 165 + n: number; // The field-length norm 166 + }; 167 + 168 + // 'author.tags.name': [{ 169 + // 'v': 'pizza lover', 170 + // 'i': 2, 171 + // 'n: 0.7071067811865475 172 + // } 173 + type RecordEntryArrayItem = ReadonlyArray<RecordEntryObject & { i: number }>; 174 + 175 + // TODO: this makes it difficult to infer the type. Need to think more about this 176 + type RecordEntry = { 177 + [key: string]: RecordEntryObject | RecordEntryArrayItem; 178 + }; 179 + 180 + // { 181 + // i: 0, 182 + // '$': { 183 + // '0': { v: "Old Man's War", n: 0.5773502691896258 }, 184 + // '1': { v: 'Codenar', n: 1 }, 185 + // '2': [ 186 + // { v: 'pizza lover', i: 2, n: 0.7071067811865475 }, 187 + // { v: 'helo wold', i: 1, n: 0.7071067811865475 }, 188 + // { v: 'hello world', i: 0, n: 0.7071067811865475 } 189 + // ] 190 + // } 191 + // } 192 + type FuseIndexObjectRecord = { 193 + i: number; // The index of the record in the source list 194 + $: RecordEntry; 195 + }; 196 + 197 + // { 198 + // keys: null, 199 + // list: [ 200 + // { v: 'one', i: 0, n: 1 }, 201 + // { v: 'two', i: 1, n: 1 }, 202 + // { v: 'three', i: 2, n: 1 } 203 + // ] 204 + // } 205 + type FuseIndexStringRecord = { 206 + i: number; // The index of the record in the source list 207 + v: string; // The text value 208 + n: number; // The field-length norm 209 + }; 210 + 211 + type FuseIndexRecords = ReadonlyArray<FuseIndexObjectRecord> | ReadonlyArray<FuseIndexStringRecord>; 212 + 213 + // { 214 + // name: 'title', 215 + // weight: 0.7 216 + // } 217 + export type FuseOptionKeyObject<T> = { 218 + name: string | string[]; 219 + weight?: number; 220 + getFn?: (obj: T) => ReadonlyArray<string> | string; 221 + }; 222 + 223 + export type FuseOptionKey<T> = FuseOptionKeyObject<T> | string | string[]; 224 + 225 + export interface IFuseOptions<T> { 226 + /** Indicates whether comparisons should be case sensitive. */ 227 + isCaseSensitive?: boolean; 228 + /** Determines how close the match must be to the fuzzy location (specified by `location`). An exact letter match which is `distance` characters away from the fuzzy location would score as a complete mismatch. A `distance` of `0` requires the match be at the exact `location` specified. A distance of `1000` would require a perfect match to be within `800` characters of the `location` to be found using a `threshold` of `0.8`. */ 229 + distance?: number; 230 + /** When true, the matching function will continue to the end of a search pattern even if a perfect match has already been located in the string. */ 231 + findAllMatches?: boolean; 232 + /** The function to use to retrieve an object's value at the provided path. The default will also search nested paths. */ 233 + getFn?: FuseGetFunction<T>; 234 + /** When `true`, search will ignore `location` and `distance`, so it won't matter where in the string the pattern appears. */ 235 + ignoreLocation?: boolean; 236 + /** When `true`, the calculation for the relevance score (used for sorting) will ignore the `field-length norm`. */ 237 + ignoreFieldNorm?: boolean; 238 + /** Determines how much the `field-length norm` affects scoring. A value of `0` is equivalent to ignoring the field-length norm. A value of `0.5` will greatly reduce the effect of field-length norm, while a value of `2.0` will greatly increase it. */ 239 + fieldNormWeight?: number; 240 + /** Whether the matches should be included in the result set. When `true`, each record in the result set will include the indices of the matched characters. These can consequently be used for highlighting purposes. */ 241 + includeMatches?: boolean; 242 + /** Whether the score should be included in the result set. A score of `0`indicates a perfect match, while a score of `1` indicates a complete mismatch. */ 243 + includeScore?: boolean; 244 + /** List of keys that will be searched. This supports nested paths, weighted search, searching in arrays of `strings` and `objects`. */ 245 + keys?: Array<FuseOptionKey<T>>; 246 + /** Determines approximately where in the text is the pattern expected to be found. */ 247 + location?: number; 248 + /** Only the matches whose length exceeds this value will be returned. (For instance, if you want to ignore single character matches in the result, set it to `2`). */ 249 + minMatchCharLength?: number; 250 + /** Whether to sort the result list, by score. */ 251 + shouldSort?: boolean; 252 + /** The function to use to sort all the results. The default will sort by ascending relevance score, ascending index. */ 253 + sortFn?: FuseSortFunction; 254 + /** At what point does the match algorithm give up. A threshold of `0.0` requires a perfect match (of both letters and location), a threshold of `1.0` would match anything. */ 255 + threshold?: number; 256 + /** When `true`, it enables the use of unix-like search commands. See [example](/examples.html#extended-search). */ 257 + useExtendedSearch?: boolean; 258 + } 259 + 260 + // Denotes the start/end indices of a match 261 + // start end 262 + // ↓ ↓ 263 + type RangeTuple = [number, number]; 264 + 265 + export type FuseResultMatch = { 266 + indices: ReadonlyArray<RangeTuple>; 267 + key?: string; 268 + refIndex?: number; 269 + value?: string; 270 + }; 271 + 272 + export type FuseSearchOptions = { 273 + limit: number; 274 + }; 275 + 276 + export type FuseResult<T> = { 277 + item: T; 278 + refIndex: number; 279 + score?: number; 280 + matches?: ReadonlyArray<FuseResultMatch>; 281 + }; 282 + 283 + export type Expression = 284 + | { [key: string]: string } 285 + | { 286 + $path: ReadonlyArray<string>; 287 + $val: string; 288 + } 289 + | { $and?: Expression[] } 290 + | { $or?: Expression[] }; 291 + 292 + export const config: Required<IFuseOptions<any>>; 293 + }
+93
index.ts
··· 1 + /// <reference types="./custom-typings.d.ts" /> 2 + import bsky from '@atproto/api'; 3 + const { BskyAgent } = bsky; 4 + import * as dotenv from 'dotenv'; 5 + import process from 'node:process'; 6 + // import { search } from 'fast-fuzzy'; 7 + import Fuse from 'fuse.js'; 8 + dotenv.config(); 9 + 10 + if (typeof process.argv[2] === 'undefined') { 11 + console.log('Please provide a search term'); 12 + process.exit(1); 13 + } 14 + 15 + const agent = new BskyAgent({ 16 + service: 'https://bsky.social', 17 + }); 18 + 19 + await agent.login({ 20 + identifier: process.env.BSKY_USERNAME!, 21 + password: process.env.BSKY_PASSWORD!, 22 + }); 23 + 24 + const paginateAll = async <T extends { cursor?: string }>( 25 + fn: (cursor?: string) => Promise<T>, 26 + limit = Infinity, 27 + ): Promise<T[]> => { 28 + const results: T[] = []; 29 + let cursor; 30 + do { 31 + const res = await fn(cursor); 32 + results.push(res); 33 + cursor = res.cursor; 34 + } while (cursor && results.length < limit); 35 + return results; 36 + }; 37 + 38 + const paginator = async (cursor?: string) => { 39 + const res = await agent.getAuthorFeed({ 40 + actor: agent.session!.did, 41 + cursor, 42 + limit: 100, 43 + }); 44 + return res.data; 45 + }; 46 + 47 + const paginatedAll = await paginateAll(paginator); 48 + 49 + const posts: object[] = []; 50 + 51 + paginatedAll.forEach((res) => { 52 + if (typeof res.feed[0] !== 'undefined') { 53 + posts.push( 54 + ...res.feed.map((e) => ({ 55 + text: (e.post.record as any).text, 56 + uri: e.post.uri.replace('app.bsky.feed.', '').replace('at://', 'https://staging.bsky.app/profile/'), 57 + })), 58 + ); 59 + } 60 + }); 61 + 62 + // const results = search(process.argv[2], posts, { keySelector: (o) => (o as any).text, returnMatchData: true }); 63 + 64 + const options = { 65 + // isCaseSensitive: false, 66 + includeScore: true, 67 + // shouldSort: true, 68 + includeMatches: true, 69 + findAllMatches: true, 70 + // minMatchCharLength: 1, 71 + // location: 0, 72 + threshold: 0.3, 73 + // distance: 100, 74 + // useExtendedSearch: false, 75 + // ignoreLocation: false, 76 + // ignoreFieldNorm: false, 77 + // fieldNormWeight: 1, 78 + keys: ['text'], 79 + }; 80 + 81 + const fuse = new Fuse(posts, options); 82 + 83 + // Change the pattern 84 + const pattern = process.argv[2]; 85 + 86 + console.log( 87 + fuse.search(pattern).map((e) => { 88 + return { 89 + text: e.item.text, 90 + uri: e.item.uri, 91 + }; 92 + }), 93 + );
+1754
package-lock.json
··· 1 + { 2 + "name": "songofsongs-bot-bsky", 3 + "version": "1.0.0", 4 + "lockfileVersion": 3, 5 + "requires": true, 6 + "packages": { 7 + "": { 8 + "name": "songofsongs-bot-bsky", 9 + "version": "1.0.0", 10 + "license": "ISC", 11 + "dependencies": { 12 + "@atproto/api": "^0.2.5", 13 + "dotenv": "^16.0.3", 14 + "fuse.js": "^6.6.2" 15 + }, 16 + "devDependencies": { 17 + "@types/node": "^18.15.11", 18 + "@typescript-eslint/eslint-plugin": "^5.57.1", 19 + "@typescript-eslint/parser": "^5.57.1", 20 + "eslint": "^8.38.0", 21 + "prettier": "^2.8.7", 22 + "typescript": "^5.0.4" 23 + } 24 + }, 25 + "node_modules/@atproto/api": { 26 + "version": "0.2.5", 27 + "resolved": "https://registry.npmjs.org/@atproto/api/-/api-0.2.5.tgz", 28 + "integrity": "sha512-RJGhiwj6kOjrlVy7ES/SfJt3JyFwXdFZeBP4iw2ne/Ie0ZlanKhY0y9QHx5tI4rvEUP/wf0iKtaq2neczHi3bg==", 29 + "dependencies": { 30 + "@atproto/common-web": "*", 31 + "@atproto/uri": "*", 32 + "@atproto/xrpc": "*", 33 + "tlds": "^1.234.0", 34 + "typed-emitter": "^2.1.0" 35 + } 36 + }, 37 + "node_modules/@atproto/common-web": { 38 + "version": "0.1.0", 39 + "resolved": "https://registry.npmjs.org/@atproto/common-web/-/common-web-0.1.0.tgz", 40 + "integrity": "sha512-qD6xF60hvH+cP++fk/mt+0S9cxs94KsK+rNWypNlgnlp7r9By4ltXwtDSR/DNTA8mwDeularUno4VbTd2IWIzA==", 41 + "dependencies": { 42 + "multiformats": "^9.6.4", 43 + "uint8arrays": "3.0.0", 44 + "zod": "^3.14.2" 45 + } 46 + }, 47 + "node_modules/@atproto/identifier": { 48 + "version": "0.1.0", 49 + "resolved": "https://registry.npmjs.org/@atproto/identifier/-/identifier-0.1.0.tgz", 50 + "integrity": "sha512-3LV7+4E6S0k8Rru7NBkyDF6Zf6NHVUXVS9d4l9fiXWMC49ghZMjq0vPmz80xjG1rRuFdJFbpRf4ApFciGxLIyQ==", 51 + "dependencies": { 52 + "@atproto/common-web": "*" 53 + } 54 + }, 55 + "node_modules/@atproto/lexicon": { 56 + "version": "0.1.0", 57 + "resolved": "https://registry.npmjs.org/@atproto/lexicon/-/lexicon-0.1.0.tgz", 58 + "integrity": "sha512-Iy+gV9w42xLhrZrmcbZh7VFoHjXuzWvecGHIfz44owNjjv7aE/d2P5BbOX/XicSkmQ8Qkpg0BqwYDD1XBVS+DQ==", 59 + "dependencies": { 60 + "@atproto/common-web": "*", 61 + "@atproto/identifier": "*", 62 + "@atproto/nsid": "*", 63 + "@atproto/uri": "*", 64 + "iso-datestring-validator": "^2.2.2", 65 + "multiformats": "^9.6.4", 66 + "zod": "^3.14.2" 67 + } 68 + }, 69 + "node_modules/@atproto/nsid": { 70 + "version": "0.0.1", 71 + "resolved": "https://registry.npmjs.org/@atproto/nsid/-/nsid-0.0.1.tgz", 72 + "integrity": "sha512-t5M6/CzWBVYoBbIvfKDpqPj/+ZmyoK9ydZSStcTXosJ27XXwOPhz0VDUGKK2SM9G5Y7TPes8S5KTAU0UdVYFCw==" 73 + }, 74 + "node_modules/@atproto/uri": { 75 + "version": "0.0.2", 76 + "resolved": "https://registry.npmjs.org/@atproto/uri/-/uri-0.0.2.tgz", 77 + "integrity": "sha512-/6otLZF7BLpT9suSdHuXLbL12nINcWPsLmcOI+dctqovWUjH+XIRVNXDQgBYSrPVetxMiknuEwWelmnA33AEXg==", 78 + "dependencies": { 79 + "@atproto/identifier": "*", 80 + "@atproto/nsid": "*" 81 + } 82 + }, 83 + "node_modules/@atproto/xrpc": { 84 + "version": "0.1.0", 85 + "resolved": "https://registry.npmjs.org/@atproto/xrpc/-/xrpc-0.1.0.tgz", 86 + "integrity": "sha512-LhBeZkQwPezjEtricGYnG62udFglOqlnmMSS0KyWgEAPi4KMp4H2F4jNoXcf5NPtZ9S4N4hJaErHX4PJYv2lfA==", 87 + "dependencies": { 88 + "@atproto/lexicon": "*", 89 + "zod": "^3.14.2" 90 + } 91 + }, 92 + "node_modules/@eslint-community/eslint-utils": { 93 + "version": "4.4.0", 94 + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", 95 + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", 96 + "dev": true, 97 + "dependencies": { 98 + "eslint-visitor-keys": "^3.3.0" 99 + }, 100 + "engines": { 101 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 102 + }, 103 + "peerDependencies": { 104 + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" 105 + } 106 + }, 107 + "node_modules/@eslint-community/regexpp": { 108 + "version": "4.5.0", 109 + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.5.0.tgz", 110 + "integrity": "sha512-vITaYzIcNmjn5tF5uxcZ/ft7/RXGrMUIS9HalWckEOF6ESiwXKoMzAQf2UW0aVd6rnOeExTJVd5hmWXucBKGXQ==", 111 + "dev": true, 112 + "engines": { 113 + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" 114 + } 115 + }, 116 + "node_modules/@eslint/eslintrc": { 117 + "version": "2.0.2", 118 + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.0.2.tgz", 119 + "integrity": "sha512-3W4f5tDUra+pA+FzgugqL2pRimUTDJWKr7BINqOpkZrC0uYI0NIc0/JFgBROCU07HR6GieA5m3/rsPIhDmCXTQ==", 120 + "dev": true, 121 + "dependencies": { 122 + "ajv": "^6.12.4", 123 + "debug": "^4.3.2", 124 + "espree": "^9.5.1", 125 + "globals": "^13.19.0", 126 + "ignore": "^5.2.0", 127 + "import-fresh": "^3.2.1", 128 + "js-yaml": "^4.1.0", 129 + "minimatch": "^3.1.2", 130 + "strip-json-comments": "^3.1.1" 131 + }, 132 + "engines": { 133 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 134 + }, 135 + "funding": { 136 + "url": "https://opencollective.com/eslint" 137 + } 138 + }, 139 + "node_modules/@eslint/js": { 140 + "version": "8.38.0", 141 + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.38.0.tgz", 142 + "integrity": "sha512-IoD2MfUnOV58ghIHCiil01PcohxjbYR/qCxsoC+xNgUwh1EY8jOOrYmu3d3a71+tJJ23uscEV4X2HJWMsPJu4g==", 143 + "dev": true, 144 + "engines": { 145 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 146 + } 147 + }, 148 + "node_modules/@humanwhocodes/config-array": { 149 + "version": "0.11.8", 150 + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz", 151 + "integrity": "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==", 152 + "dev": true, 153 + "dependencies": { 154 + "@humanwhocodes/object-schema": "^1.2.1", 155 + "debug": "^4.1.1", 156 + "minimatch": "^3.0.5" 157 + }, 158 + "engines": { 159 + "node": ">=10.10.0" 160 + } 161 + }, 162 + "node_modules/@humanwhocodes/module-importer": { 163 + "version": "1.0.1", 164 + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", 165 + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", 166 + "dev": true, 167 + "engines": { 168 + "node": ">=12.22" 169 + }, 170 + "funding": { 171 + "type": "github", 172 + "url": "https://github.com/sponsors/nzakas" 173 + } 174 + }, 175 + "node_modules/@humanwhocodes/object-schema": { 176 + "version": "1.2.1", 177 + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", 178 + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", 179 + "dev": true 180 + }, 181 + "node_modules/@nodelib/fs.scandir": { 182 + "version": "2.1.5", 183 + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 184 + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 185 + "dev": true, 186 + "dependencies": { 187 + "@nodelib/fs.stat": "2.0.5", 188 + "run-parallel": "^1.1.9" 189 + }, 190 + "engines": { 191 + "node": ">= 8" 192 + } 193 + }, 194 + "node_modules/@nodelib/fs.stat": { 195 + "version": "2.0.5", 196 + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 197 + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", 198 + "dev": true, 199 + "engines": { 200 + "node": ">= 8" 201 + } 202 + }, 203 + "node_modules/@nodelib/fs.walk": { 204 + "version": "1.2.8", 205 + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 206 + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 207 + "dev": true, 208 + "dependencies": { 209 + "@nodelib/fs.scandir": "2.1.5", 210 + "fastq": "^1.6.0" 211 + }, 212 + "engines": { 213 + "node": ">= 8" 214 + } 215 + }, 216 + "node_modules/@types/json-schema": { 217 + "version": "7.0.11", 218 + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", 219 + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", 220 + "dev": true 221 + }, 222 + "node_modules/@types/node": { 223 + "version": "18.15.11", 224 + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.11.tgz", 225 + "integrity": "sha512-E5Kwq2n4SbMzQOn6wnmBjuK9ouqlURrcZDVfbo9ftDDTFt3nk7ZKK4GMOzoYgnpQJKcxwQw+lGaBvvlMo0qN/Q==", 226 + "dev": true 227 + }, 228 + "node_modules/@types/semver": { 229 + "version": "7.3.13", 230 + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", 231 + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", 232 + "dev": true 233 + }, 234 + "node_modules/@typescript-eslint/eslint-plugin": { 235 + "version": "5.57.1", 236 + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.57.1.tgz", 237 + "integrity": "sha512-1MeobQkQ9tztuleT3v72XmY0XuKXVXusAhryoLuU5YZ+mXoYKZP9SQ7Flulh1NX4DTjpGTc2b/eMu4u7M7dhnQ==", 238 + "dev": true, 239 + "dependencies": { 240 + "@eslint-community/regexpp": "^4.4.0", 241 + "@typescript-eslint/scope-manager": "5.57.1", 242 + "@typescript-eslint/type-utils": "5.57.1", 243 + "@typescript-eslint/utils": "5.57.1", 244 + "debug": "^4.3.4", 245 + "grapheme-splitter": "^1.0.4", 246 + "ignore": "^5.2.0", 247 + "natural-compare-lite": "^1.4.0", 248 + "semver": "^7.3.7", 249 + "tsutils": "^3.21.0" 250 + }, 251 + "engines": { 252 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 253 + }, 254 + "funding": { 255 + "type": "opencollective", 256 + "url": "https://opencollective.com/typescript-eslint" 257 + }, 258 + "peerDependencies": { 259 + "@typescript-eslint/parser": "^5.0.0", 260 + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" 261 + }, 262 + "peerDependenciesMeta": { 263 + "typescript": { 264 + "optional": true 265 + } 266 + } 267 + }, 268 + "node_modules/@typescript-eslint/parser": { 269 + "version": "5.57.1", 270 + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.57.1.tgz", 271 + "integrity": "sha512-hlA0BLeVSA/wBPKdPGxoVr9Pp6GutGoY380FEhbVi0Ph4WNe8kLvqIRx76RSQt1lynZKfrXKs0/XeEk4zZycuA==", 272 + "dev": true, 273 + "dependencies": { 274 + "@typescript-eslint/scope-manager": "5.57.1", 275 + "@typescript-eslint/types": "5.57.1", 276 + "@typescript-eslint/typescript-estree": "5.57.1", 277 + "debug": "^4.3.4" 278 + }, 279 + "engines": { 280 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 281 + }, 282 + "funding": { 283 + "type": "opencollective", 284 + "url": "https://opencollective.com/typescript-eslint" 285 + }, 286 + "peerDependencies": { 287 + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" 288 + }, 289 + "peerDependenciesMeta": { 290 + "typescript": { 291 + "optional": true 292 + } 293 + } 294 + }, 295 + "node_modules/@typescript-eslint/scope-manager": { 296 + "version": "5.57.1", 297 + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.57.1.tgz", 298 + "integrity": "sha512-N/RrBwEUKMIYxSKl0oDK5sFVHd6VI7p9K5MyUlVYAY6dyNb/wHUqndkTd3XhpGlXgnQsBkRZuu4f9kAHghvgPw==", 299 + "dev": true, 300 + "dependencies": { 301 + "@typescript-eslint/types": "5.57.1", 302 + "@typescript-eslint/visitor-keys": "5.57.1" 303 + }, 304 + "engines": { 305 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 306 + }, 307 + "funding": { 308 + "type": "opencollective", 309 + "url": "https://opencollective.com/typescript-eslint" 310 + } 311 + }, 312 + "node_modules/@typescript-eslint/type-utils": { 313 + "version": "5.57.1", 314 + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.57.1.tgz", 315 + "integrity": "sha512-/RIPQyx60Pt6ga86hKXesXkJ2WOS4UemFrmmq/7eOyiYjYv/MUSHPlkhU6k9T9W1ytnTJueqASW+wOmW4KrViw==", 316 + "dev": true, 317 + "dependencies": { 318 + "@typescript-eslint/typescript-estree": "5.57.1", 319 + "@typescript-eslint/utils": "5.57.1", 320 + "debug": "^4.3.4", 321 + "tsutils": "^3.21.0" 322 + }, 323 + "engines": { 324 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 325 + }, 326 + "funding": { 327 + "type": "opencollective", 328 + "url": "https://opencollective.com/typescript-eslint" 329 + }, 330 + "peerDependencies": { 331 + "eslint": "*" 332 + }, 333 + "peerDependenciesMeta": { 334 + "typescript": { 335 + "optional": true 336 + } 337 + } 338 + }, 339 + "node_modules/@typescript-eslint/types": { 340 + "version": "5.57.1", 341 + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.57.1.tgz", 342 + "integrity": "sha512-bSs4LOgyV3bJ08F5RDqO2KXqg3WAdwHCu06zOqcQ6vqbTJizyBhuh1o1ImC69X4bV2g1OJxbH71PJqiO7Y1RuA==", 343 + "dev": true, 344 + "engines": { 345 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 346 + }, 347 + "funding": { 348 + "type": "opencollective", 349 + "url": "https://opencollective.com/typescript-eslint" 350 + } 351 + }, 352 + "node_modules/@typescript-eslint/typescript-estree": { 353 + "version": "5.57.1", 354 + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.57.1.tgz", 355 + "integrity": "sha512-A2MZqD8gNT0qHKbk2wRspg7cHbCDCk2tcqt6ScCFLr5Ru8cn+TCfM786DjPhqwseiS+PrYwcXht5ztpEQ6TFTw==", 356 + "dev": true, 357 + "dependencies": { 358 + "@typescript-eslint/types": "5.57.1", 359 + "@typescript-eslint/visitor-keys": "5.57.1", 360 + "debug": "^4.3.4", 361 + "globby": "^11.1.0", 362 + "is-glob": "^4.0.3", 363 + "semver": "^7.3.7", 364 + "tsutils": "^3.21.0" 365 + }, 366 + "engines": { 367 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 368 + }, 369 + "funding": { 370 + "type": "opencollective", 371 + "url": "https://opencollective.com/typescript-eslint" 372 + }, 373 + "peerDependenciesMeta": { 374 + "typescript": { 375 + "optional": true 376 + } 377 + } 378 + }, 379 + "node_modules/@typescript-eslint/utils": { 380 + "version": "5.57.1", 381 + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.57.1.tgz", 382 + "integrity": "sha512-kN6vzzf9NkEtawECqze6v99LtmDiUJCVpvieTFA1uL7/jDghiJGubGZ5csicYHU1Xoqb3oH/R5cN5df6W41Nfg==", 383 + "dev": true, 384 + "dependencies": { 385 + "@eslint-community/eslint-utils": "^4.2.0", 386 + "@types/json-schema": "^7.0.9", 387 + "@types/semver": "^7.3.12", 388 + "@typescript-eslint/scope-manager": "5.57.1", 389 + "@typescript-eslint/types": "5.57.1", 390 + "@typescript-eslint/typescript-estree": "5.57.1", 391 + "eslint-scope": "^5.1.1", 392 + "semver": "^7.3.7" 393 + }, 394 + "engines": { 395 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 396 + }, 397 + "funding": { 398 + "type": "opencollective", 399 + "url": "https://opencollective.com/typescript-eslint" 400 + }, 401 + "peerDependencies": { 402 + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" 403 + } 404 + }, 405 + "node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { 406 + "version": "5.1.1", 407 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", 408 + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", 409 + "dev": true, 410 + "dependencies": { 411 + "esrecurse": "^4.3.0", 412 + "estraverse": "^4.1.1" 413 + }, 414 + "engines": { 415 + "node": ">=8.0.0" 416 + } 417 + }, 418 + "node_modules/@typescript-eslint/utils/node_modules/estraverse": { 419 + "version": "4.3.0", 420 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", 421 + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", 422 + "dev": true, 423 + "engines": { 424 + "node": ">=4.0" 425 + } 426 + }, 427 + "node_modules/@typescript-eslint/visitor-keys": { 428 + "version": "5.57.1", 429 + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.57.1.tgz", 430 + "integrity": "sha512-RjQrAniDU0CEk5r7iphkm731zKlFiUjvcBS2yHAg8WWqFMCaCrD0rKEVOMUyMMcbGPZ0bPp56srkGWrgfZqLRA==", 431 + "dev": true, 432 + "dependencies": { 433 + "@typescript-eslint/types": "5.57.1", 434 + "eslint-visitor-keys": "^3.3.0" 435 + }, 436 + "engines": { 437 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 438 + }, 439 + "funding": { 440 + "type": "opencollective", 441 + "url": "https://opencollective.com/typescript-eslint" 442 + } 443 + }, 444 + "node_modules/acorn": { 445 + "version": "8.8.2", 446 + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", 447 + "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", 448 + "dev": true, 449 + "bin": { 450 + "acorn": "bin/acorn" 451 + }, 452 + "engines": { 453 + "node": ">=0.4.0" 454 + } 455 + }, 456 + "node_modules/acorn-jsx": { 457 + "version": "5.3.2", 458 + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", 459 + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", 460 + "dev": true, 461 + "peerDependencies": { 462 + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" 463 + } 464 + }, 465 + "node_modules/ajv": { 466 + "version": "6.12.6", 467 + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", 468 + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", 469 + "dev": true, 470 + "dependencies": { 471 + "fast-deep-equal": "^3.1.1", 472 + "fast-json-stable-stringify": "^2.0.0", 473 + "json-schema-traverse": "^0.4.1", 474 + "uri-js": "^4.2.2" 475 + }, 476 + "funding": { 477 + "type": "github", 478 + "url": "https://github.com/sponsors/epoberezkin" 479 + } 480 + }, 481 + "node_modules/ansi-regex": { 482 + "version": "5.0.1", 483 + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 484 + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 485 + "dev": true, 486 + "engines": { 487 + "node": ">=8" 488 + } 489 + }, 490 + "node_modules/ansi-styles": { 491 + "version": "4.3.0", 492 + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 493 + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 494 + "dev": true, 495 + "dependencies": { 496 + "color-convert": "^2.0.1" 497 + }, 498 + "engines": { 499 + "node": ">=8" 500 + }, 501 + "funding": { 502 + "url": "https://github.com/chalk/ansi-styles?sponsor=1" 503 + } 504 + }, 505 + "node_modules/argparse": { 506 + "version": "2.0.1", 507 + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", 508 + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", 509 + "dev": true 510 + }, 511 + "node_modules/array-union": { 512 + "version": "2.1.0", 513 + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", 514 + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", 515 + "dev": true, 516 + "engines": { 517 + "node": ">=8" 518 + } 519 + }, 520 + "node_modules/balanced-match": { 521 + "version": "1.0.2", 522 + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 523 + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 524 + "dev": true 525 + }, 526 + "node_modules/brace-expansion": { 527 + "version": "1.1.11", 528 + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 529 + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 530 + "dev": true, 531 + "dependencies": { 532 + "balanced-match": "^1.0.0", 533 + "concat-map": "0.0.1" 534 + } 535 + }, 536 + "node_modules/braces": { 537 + "version": "3.0.2", 538 + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 539 + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 540 + "dev": true, 541 + "dependencies": { 542 + "fill-range": "^7.0.1" 543 + }, 544 + "engines": { 545 + "node": ">=8" 546 + } 547 + }, 548 + "node_modules/callsites": { 549 + "version": "3.1.0", 550 + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 551 + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", 552 + "dev": true, 553 + "engines": { 554 + "node": ">=6" 555 + } 556 + }, 557 + "node_modules/chalk": { 558 + "version": "4.1.2", 559 + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 560 + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 561 + "dev": true, 562 + "dependencies": { 563 + "ansi-styles": "^4.1.0", 564 + "supports-color": "^7.1.0" 565 + }, 566 + "engines": { 567 + "node": ">=10" 568 + }, 569 + "funding": { 570 + "url": "https://github.com/chalk/chalk?sponsor=1" 571 + } 572 + }, 573 + "node_modules/color-convert": { 574 + "version": "2.0.1", 575 + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 576 + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 577 + "dev": true, 578 + "dependencies": { 579 + "color-name": "~1.1.4" 580 + }, 581 + "engines": { 582 + "node": ">=7.0.0" 583 + } 584 + }, 585 + "node_modules/color-name": { 586 + "version": "1.1.4", 587 + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 588 + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 589 + "dev": true 590 + }, 591 + "node_modules/concat-map": { 592 + "version": "0.0.1", 593 + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 594 + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", 595 + "dev": true 596 + }, 597 + "node_modules/cross-spawn": { 598 + "version": "7.0.3", 599 + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", 600 + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", 601 + "dev": true, 602 + "dependencies": { 603 + "path-key": "^3.1.0", 604 + "shebang-command": "^2.0.0", 605 + "which": "^2.0.1" 606 + }, 607 + "engines": { 608 + "node": ">= 8" 609 + } 610 + }, 611 + "node_modules/debug": { 612 + "version": "4.3.4", 613 + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 614 + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 615 + "dev": true, 616 + "dependencies": { 617 + "ms": "2.1.2" 618 + }, 619 + "engines": { 620 + "node": ">=6.0" 621 + }, 622 + "peerDependenciesMeta": { 623 + "supports-color": { 624 + "optional": true 625 + } 626 + } 627 + }, 628 + "node_modules/deep-is": { 629 + "version": "0.1.4", 630 + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", 631 + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", 632 + "dev": true 633 + }, 634 + "node_modules/dir-glob": { 635 + "version": "3.0.1", 636 + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", 637 + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", 638 + "dev": true, 639 + "dependencies": { 640 + "path-type": "^4.0.0" 641 + }, 642 + "engines": { 643 + "node": ">=8" 644 + } 645 + }, 646 + "node_modules/doctrine": { 647 + "version": "3.0.0", 648 + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", 649 + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", 650 + "dev": true, 651 + "dependencies": { 652 + "esutils": "^2.0.2" 653 + }, 654 + "engines": { 655 + "node": ">=6.0.0" 656 + } 657 + }, 658 + "node_modules/dotenv": { 659 + "version": "16.0.3", 660 + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", 661 + "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==", 662 + "engines": { 663 + "node": ">=12" 664 + } 665 + }, 666 + "node_modules/escape-string-regexp": { 667 + "version": "4.0.0", 668 + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", 669 + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", 670 + "dev": true, 671 + "engines": { 672 + "node": ">=10" 673 + }, 674 + "funding": { 675 + "url": "https://github.com/sponsors/sindresorhus" 676 + } 677 + }, 678 + "node_modules/eslint": { 679 + "version": "8.38.0", 680 + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.38.0.tgz", 681 + "integrity": "sha512-pIdsD2jwlUGf/U38Jv97t8lq6HpaU/G9NKbYmpWpZGw3LdTNhZLbJePqxOXGB5+JEKfOPU/XLxYxFh03nr1KTg==", 682 + "dev": true, 683 + "dependencies": { 684 + "@eslint-community/eslint-utils": "^4.2.0", 685 + "@eslint-community/regexpp": "^4.4.0", 686 + "@eslint/eslintrc": "^2.0.2", 687 + "@eslint/js": "8.38.0", 688 + "@humanwhocodes/config-array": "^0.11.8", 689 + "@humanwhocodes/module-importer": "^1.0.1", 690 + "@nodelib/fs.walk": "^1.2.8", 691 + "ajv": "^6.10.0", 692 + "chalk": "^4.0.0", 693 + "cross-spawn": "^7.0.2", 694 + "debug": "^4.3.2", 695 + "doctrine": "^3.0.0", 696 + "escape-string-regexp": "^4.0.0", 697 + "eslint-scope": "^7.1.1", 698 + "eslint-visitor-keys": "^3.4.0", 699 + "espree": "^9.5.1", 700 + "esquery": "^1.4.2", 701 + "esutils": "^2.0.2", 702 + "fast-deep-equal": "^3.1.3", 703 + "file-entry-cache": "^6.0.1", 704 + "find-up": "^5.0.0", 705 + "glob-parent": "^6.0.2", 706 + "globals": "^13.19.0", 707 + "grapheme-splitter": "^1.0.4", 708 + "ignore": "^5.2.0", 709 + "import-fresh": "^3.0.0", 710 + "imurmurhash": "^0.1.4", 711 + "is-glob": "^4.0.0", 712 + "is-path-inside": "^3.0.3", 713 + "js-sdsl": "^4.1.4", 714 + "js-yaml": "^4.1.0", 715 + "json-stable-stringify-without-jsonify": "^1.0.1", 716 + "levn": "^0.4.1", 717 + "lodash.merge": "^4.6.2", 718 + "minimatch": "^3.1.2", 719 + "natural-compare": "^1.4.0", 720 + "optionator": "^0.9.1", 721 + "strip-ansi": "^6.0.1", 722 + "strip-json-comments": "^3.1.0", 723 + "text-table": "^0.2.0" 724 + }, 725 + "bin": { 726 + "eslint": "bin/eslint.js" 727 + }, 728 + "engines": { 729 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 730 + }, 731 + "funding": { 732 + "url": "https://opencollective.com/eslint" 733 + } 734 + }, 735 + "node_modules/eslint-scope": { 736 + "version": "7.1.1", 737 + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", 738 + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", 739 + "dev": true, 740 + "dependencies": { 741 + "esrecurse": "^4.3.0", 742 + "estraverse": "^5.2.0" 743 + }, 744 + "engines": { 745 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 746 + } 747 + }, 748 + "node_modules/eslint-visitor-keys": { 749 + "version": "3.4.0", 750 + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.0.tgz", 751 + "integrity": "sha512-HPpKPUBQcAsZOsHAFwTtIKcYlCje62XB7SEAcxjtmW6TD1WVpkS6i6/hOVtTZIl4zGj/mBqpFVGvaDneik+VoQ==", 752 + "dev": true, 753 + "engines": { 754 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 755 + }, 756 + "funding": { 757 + "url": "https://opencollective.com/eslint" 758 + } 759 + }, 760 + "node_modules/espree": { 761 + "version": "9.5.1", 762 + "resolved": "https://registry.npmjs.org/espree/-/espree-9.5.1.tgz", 763 + "integrity": "sha512-5yxtHSZXRSW5pvv3hAlXM5+/Oswi1AUFqBmbibKb5s6bp3rGIDkyXU6xCoyuuLhijr4SFwPrXRoZjz0AZDN9tg==", 764 + "dev": true, 765 + "dependencies": { 766 + "acorn": "^8.8.0", 767 + "acorn-jsx": "^5.3.2", 768 + "eslint-visitor-keys": "^3.4.0" 769 + }, 770 + "engines": { 771 + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" 772 + }, 773 + "funding": { 774 + "url": "https://opencollective.com/eslint" 775 + } 776 + }, 777 + "node_modules/esquery": { 778 + "version": "1.5.0", 779 + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", 780 + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", 781 + "dev": true, 782 + "dependencies": { 783 + "estraverse": "^5.1.0" 784 + }, 785 + "engines": { 786 + "node": ">=0.10" 787 + } 788 + }, 789 + "node_modules/esrecurse": { 790 + "version": "4.3.0", 791 + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", 792 + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", 793 + "dev": true, 794 + "dependencies": { 795 + "estraverse": "^5.2.0" 796 + }, 797 + "engines": { 798 + "node": ">=4.0" 799 + } 800 + }, 801 + "node_modules/estraverse": { 802 + "version": "5.3.0", 803 + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", 804 + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", 805 + "dev": true, 806 + "engines": { 807 + "node": ">=4.0" 808 + } 809 + }, 810 + "node_modules/esutils": { 811 + "version": "2.0.3", 812 + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", 813 + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", 814 + "dev": true, 815 + "engines": { 816 + "node": ">=0.10.0" 817 + } 818 + }, 819 + "node_modules/fast-deep-equal": { 820 + "version": "3.1.3", 821 + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", 822 + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", 823 + "dev": true 824 + }, 825 + "node_modules/fast-glob": { 826 + "version": "3.2.12", 827 + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", 828 + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", 829 + "dev": true, 830 + "dependencies": { 831 + "@nodelib/fs.stat": "^2.0.2", 832 + "@nodelib/fs.walk": "^1.2.3", 833 + "glob-parent": "^5.1.2", 834 + "merge2": "^1.3.0", 835 + "micromatch": "^4.0.4" 836 + }, 837 + "engines": { 838 + "node": ">=8.6.0" 839 + } 840 + }, 841 + "node_modules/fast-glob/node_modules/glob-parent": { 842 + "version": "5.1.2", 843 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 844 + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 845 + "dev": true, 846 + "dependencies": { 847 + "is-glob": "^4.0.1" 848 + }, 849 + "engines": { 850 + "node": ">= 6" 851 + } 852 + }, 853 + "node_modules/fast-json-stable-stringify": { 854 + "version": "2.1.0", 855 + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", 856 + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", 857 + "dev": true 858 + }, 859 + "node_modules/fast-levenshtein": { 860 + "version": "2.0.6", 861 + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", 862 + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", 863 + "dev": true 864 + }, 865 + "node_modules/fastq": { 866 + "version": "1.15.0", 867 + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", 868 + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", 869 + "dev": true, 870 + "dependencies": { 871 + "reusify": "^1.0.4" 872 + } 873 + }, 874 + "node_modules/file-entry-cache": { 875 + "version": "6.0.1", 876 + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", 877 + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", 878 + "dev": true, 879 + "dependencies": { 880 + "flat-cache": "^3.0.4" 881 + }, 882 + "engines": { 883 + "node": "^10.12.0 || >=12.0.0" 884 + } 885 + }, 886 + "node_modules/fill-range": { 887 + "version": "7.0.1", 888 + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 889 + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 890 + "dev": true, 891 + "dependencies": { 892 + "to-regex-range": "^5.0.1" 893 + }, 894 + "engines": { 895 + "node": ">=8" 896 + } 897 + }, 898 + "node_modules/find-up": { 899 + "version": "5.0.0", 900 + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", 901 + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", 902 + "dev": true, 903 + "dependencies": { 904 + "locate-path": "^6.0.0", 905 + "path-exists": "^4.0.0" 906 + }, 907 + "engines": { 908 + "node": ">=10" 909 + }, 910 + "funding": { 911 + "url": "https://github.com/sponsors/sindresorhus" 912 + } 913 + }, 914 + "node_modules/flat-cache": { 915 + "version": "3.0.4", 916 + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", 917 + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", 918 + "dev": true, 919 + "dependencies": { 920 + "flatted": "^3.1.0", 921 + "rimraf": "^3.0.2" 922 + }, 923 + "engines": { 924 + "node": "^10.12.0 || >=12.0.0" 925 + } 926 + }, 927 + "node_modules/flatted": { 928 + "version": "3.2.7", 929 + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", 930 + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", 931 + "dev": true 932 + }, 933 + "node_modules/fs.realpath": { 934 + "version": "1.0.0", 935 + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 936 + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", 937 + "dev": true 938 + }, 939 + "node_modules/fuse.js": { 940 + "version": "6.6.2", 941 + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz", 942 + "integrity": "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==", 943 + "engines": { 944 + "node": ">=10" 945 + } 946 + }, 947 + "node_modules/glob": { 948 + "version": "7.2.3", 949 + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", 950 + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", 951 + "dev": true, 952 + "dependencies": { 953 + "fs.realpath": "^1.0.0", 954 + "inflight": "^1.0.4", 955 + "inherits": "2", 956 + "minimatch": "^3.1.1", 957 + "once": "^1.3.0", 958 + "path-is-absolute": "^1.0.0" 959 + }, 960 + "engines": { 961 + "node": "*" 962 + }, 963 + "funding": { 964 + "url": "https://github.com/sponsors/isaacs" 965 + } 966 + }, 967 + "node_modules/glob-parent": { 968 + "version": "6.0.2", 969 + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 970 + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 971 + "dev": true, 972 + "dependencies": { 973 + "is-glob": "^4.0.3" 974 + }, 975 + "engines": { 976 + "node": ">=10.13.0" 977 + } 978 + }, 979 + "node_modules/globals": { 980 + "version": "13.20.0", 981 + "resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz", 982 + "integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==", 983 + "dev": true, 984 + "dependencies": { 985 + "type-fest": "^0.20.2" 986 + }, 987 + "engines": { 988 + "node": ">=8" 989 + }, 990 + "funding": { 991 + "url": "https://github.com/sponsors/sindresorhus" 992 + } 993 + }, 994 + "node_modules/globby": { 995 + "version": "11.1.0", 996 + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", 997 + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", 998 + "dev": true, 999 + "dependencies": { 1000 + "array-union": "^2.1.0", 1001 + "dir-glob": "^3.0.1", 1002 + "fast-glob": "^3.2.9", 1003 + "ignore": "^5.2.0", 1004 + "merge2": "^1.4.1", 1005 + "slash": "^3.0.0" 1006 + }, 1007 + "engines": { 1008 + "node": ">=10" 1009 + }, 1010 + "funding": { 1011 + "url": "https://github.com/sponsors/sindresorhus" 1012 + } 1013 + }, 1014 + "node_modules/grapheme-splitter": { 1015 + "version": "1.0.4", 1016 + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", 1017 + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", 1018 + "dev": true 1019 + }, 1020 + "node_modules/has-flag": { 1021 + "version": "4.0.0", 1022 + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1023 + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", 1024 + "dev": true, 1025 + "engines": { 1026 + "node": ">=8" 1027 + } 1028 + }, 1029 + "node_modules/ignore": { 1030 + "version": "5.2.4", 1031 + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", 1032 + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", 1033 + "dev": true, 1034 + "engines": { 1035 + "node": ">= 4" 1036 + } 1037 + }, 1038 + "node_modules/import-fresh": { 1039 + "version": "3.3.0", 1040 + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 1041 + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 1042 + "dev": true, 1043 + "dependencies": { 1044 + "parent-module": "^1.0.0", 1045 + "resolve-from": "^4.0.0" 1046 + }, 1047 + "engines": { 1048 + "node": ">=6" 1049 + }, 1050 + "funding": { 1051 + "url": "https://github.com/sponsors/sindresorhus" 1052 + } 1053 + }, 1054 + "node_modules/imurmurhash": { 1055 + "version": "0.1.4", 1056 + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", 1057 + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", 1058 + "dev": true, 1059 + "engines": { 1060 + "node": ">=0.8.19" 1061 + } 1062 + }, 1063 + "node_modules/inflight": { 1064 + "version": "1.0.6", 1065 + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 1066 + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", 1067 + "dev": true, 1068 + "dependencies": { 1069 + "once": "^1.3.0", 1070 + "wrappy": "1" 1071 + } 1072 + }, 1073 + "node_modules/inherits": { 1074 + "version": "2.0.4", 1075 + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1076 + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", 1077 + "dev": true 1078 + }, 1079 + "node_modules/is-extglob": { 1080 + "version": "2.1.1", 1081 + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1082 + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1083 + "dev": true, 1084 + "engines": { 1085 + "node": ">=0.10.0" 1086 + } 1087 + }, 1088 + "node_modules/is-glob": { 1089 + "version": "4.0.3", 1090 + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1091 + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1092 + "dev": true, 1093 + "dependencies": { 1094 + "is-extglob": "^2.1.1" 1095 + }, 1096 + "engines": { 1097 + "node": ">=0.10.0" 1098 + } 1099 + }, 1100 + "node_modules/is-number": { 1101 + "version": "7.0.0", 1102 + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1103 + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1104 + "dev": true, 1105 + "engines": { 1106 + "node": ">=0.12.0" 1107 + } 1108 + }, 1109 + "node_modules/is-path-inside": { 1110 + "version": "3.0.3", 1111 + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", 1112 + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", 1113 + "dev": true, 1114 + "engines": { 1115 + "node": ">=8" 1116 + } 1117 + }, 1118 + "node_modules/isexe": { 1119 + "version": "2.0.0", 1120 + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", 1121 + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", 1122 + "dev": true 1123 + }, 1124 + "node_modules/iso-datestring-validator": { 1125 + "version": "2.2.2", 1126 + "resolved": "https://registry.npmjs.org/iso-datestring-validator/-/iso-datestring-validator-2.2.2.tgz", 1127 + "integrity": "sha512-yLEMkBbLZTlVQqOnQ4FiMujR6T4DEcCb1xizmvXS+OxuhwcbtynoosRzdMA69zZCShCNAbi+gJ71FxZBBXx1SA==" 1128 + }, 1129 + "node_modules/js-sdsl": { 1130 + "version": "4.4.0", 1131 + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.0.tgz", 1132 + "integrity": "sha512-FfVSdx6pJ41Oa+CF7RDaFmTnCaFhua+SNYQX74riGOpl96x+2jQCqEfQ2bnXu/5DPCqlRuiqyvTJM0Qjz26IVg==", 1133 + "dev": true, 1134 + "funding": { 1135 + "type": "opencollective", 1136 + "url": "https://opencollective.com/js-sdsl" 1137 + } 1138 + }, 1139 + "node_modules/js-yaml": { 1140 + "version": "4.1.0", 1141 + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", 1142 + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", 1143 + "dev": true, 1144 + "dependencies": { 1145 + "argparse": "^2.0.1" 1146 + }, 1147 + "bin": { 1148 + "js-yaml": "bin/js-yaml.js" 1149 + } 1150 + }, 1151 + "node_modules/json-schema-traverse": { 1152 + "version": "0.4.1", 1153 + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", 1154 + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", 1155 + "dev": true 1156 + }, 1157 + "node_modules/json-stable-stringify-without-jsonify": { 1158 + "version": "1.0.1", 1159 + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", 1160 + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", 1161 + "dev": true 1162 + }, 1163 + "node_modules/levn": { 1164 + "version": "0.4.1", 1165 + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", 1166 + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", 1167 + "dev": true, 1168 + "dependencies": { 1169 + "prelude-ls": "^1.2.1", 1170 + "type-check": "~0.4.0" 1171 + }, 1172 + "engines": { 1173 + "node": ">= 0.8.0" 1174 + } 1175 + }, 1176 + "node_modules/locate-path": { 1177 + "version": "6.0.0", 1178 + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", 1179 + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", 1180 + "dev": true, 1181 + "dependencies": { 1182 + "p-locate": "^5.0.0" 1183 + }, 1184 + "engines": { 1185 + "node": ">=10" 1186 + }, 1187 + "funding": { 1188 + "url": "https://github.com/sponsors/sindresorhus" 1189 + } 1190 + }, 1191 + "node_modules/lodash.merge": { 1192 + "version": "4.6.2", 1193 + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", 1194 + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", 1195 + "dev": true 1196 + }, 1197 + "node_modules/lru-cache": { 1198 + "version": "6.0.0", 1199 + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", 1200 + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", 1201 + "dev": true, 1202 + "dependencies": { 1203 + "yallist": "^4.0.0" 1204 + }, 1205 + "engines": { 1206 + "node": ">=10" 1207 + } 1208 + }, 1209 + "node_modules/merge2": { 1210 + "version": "1.4.1", 1211 + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1212 + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", 1213 + "dev": true, 1214 + "engines": { 1215 + "node": ">= 8" 1216 + } 1217 + }, 1218 + "node_modules/micromatch": { 1219 + "version": "4.0.5", 1220 + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1221 + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1222 + "dev": true, 1223 + "dependencies": { 1224 + "braces": "^3.0.2", 1225 + "picomatch": "^2.3.1" 1226 + }, 1227 + "engines": { 1228 + "node": ">=8.6" 1229 + } 1230 + }, 1231 + "node_modules/minimatch": { 1232 + "version": "3.1.2", 1233 + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1234 + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1235 + "dev": true, 1236 + "dependencies": { 1237 + "brace-expansion": "^1.1.7" 1238 + }, 1239 + "engines": { 1240 + "node": "*" 1241 + } 1242 + }, 1243 + "node_modules/ms": { 1244 + "version": "2.1.2", 1245 + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1246 + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1247 + "dev": true 1248 + }, 1249 + "node_modules/multiformats": { 1250 + "version": "9.9.0", 1251 + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", 1252 + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" 1253 + }, 1254 + "node_modules/natural-compare": { 1255 + "version": "1.4.0", 1256 + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", 1257 + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", 1258 + "dev": true 1259 + }, 1260 + "node_modules/natural-compare-lite": { 1261 + "version": "1.4.0", 1262 + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", 1263 + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", 1264 + "dev": true 1265 + }, 1266 + "node_modules/once": { 1267 + "version": "1.4.0", 1268 + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 1269 + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", 1270 + "dev": true, 1271 + "dependencies": { 1272 + "wrappy": "1" 1273 + } 1274 + }, 1275 + "node_modules/optionator": { 1276 + "version": "0.9.1", 1277 + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", 1278 + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", 1279 + "dev": true, 1280 + "dependencies": { 1281 + "deep-is": "^0.1.3", 1282 + "fast-levenshtein": "^2.0.6", 1283 + "levn": "^0.4.1", 1284 + "prelude-ls": "^1.2.1", 1285 + "type-check": "^0.4.0", 1286 + "word-wrap": "^1.2.3" 1287 + }, 1288 + "engines": { 1289 + "node": ">= 0.8.0" 1290 + } 1291 + }, 1292 + "node_modules/p-limit": { 1293 + "version": "3.1.0", 1294 + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", 1295 + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", 1296 + "dev": true, 1297 + "dependencies": { 1298 + "yocto-queue": "^0.1.0" 1299 + }, 1300 + "engines": { 1301 + "node": ">=10" 1302 + }, 1303 + "funding": { 1304 + "url": "https://github.com/sponsors/sindresorhus" 1305 + } 1306 + }, 1307 + "node_modules/p-locate": { 1308 + "version": "5.0.0", 1309 + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", 1310 + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", 1311 + "dev": true, 1312 + "dependencies": { 1313 + "p-limit": "^3.0.2" 1314 + }, 1315 + "engines": { 1316 + "node": ">=10" 1317 + }, 1318 + "funding": { 1319 + "url": "https://github.com/sponsors/sindresorhus" 1320 + } 1321 + }, 1322 + "node_modules/parent-module": { 1323 + "version": "1.0.1", 1324 + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1325 + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1326 + "dev": true, 1327 + "dependencies": { 1328 + "callsites": "^3.0.0" 1329 + }, 1330 + "engines": { 1331 + "node": ">=6" 1332 + } 1333 + }, 1334 + "node_modules/path-exists": { 1335 + "version": "4.0.0", 1336 + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", 1337 + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", 1338 + "dev": true, 1339 + "engines": { 1340 + "node": ">=8" 1341 + } 1342 + }, 1343 + "node_modules/path-is-absolute": { 1344 + "version": "1.0.1", 1345 + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 1346 + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", 1347 + "dev": true, 1348 + "engines": { 1349 + "node": ">=0.10.0" 1350 + } 1351 + }, 1352 + "node_modules/path-key": { 1353 + "version": "3.1.1", 1354 + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", 1355 + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", 1356 + "dev": true, 1357 + "engines": { 1358 + "node": ">=8" 1359 + } 1360 + }, 1361 + "node_modules/path-type": { 1362 + "version": "4.0.0", 1363 + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1364 + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", 1365 + "dev": true, 1366 + "engines": { 1367 + "node": ">=8" 1368 + } 1369 + }, 1370 + "node_modules/picomatch": { 1371 + "version": "2.3.1", 1372 + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1373 + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1374 + "dev": true, 1375 + "engines": { 1376 + "node": ">=8.6" 1377 + }, 1378 + "funding": { 1379 + "url": "https://github.com/sponsors/jonschlinkert" 1380 + } 1381 + }, 1382 + "node_modules/prelude-ls": { 1383 + "version": "1.2.1", 1384 + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", 1385 + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", 1386 + "dev": true, 1387 + "engines": { 1388 + "node": ">= 0.8.0" 1389 + } 1390 + }, 1391 + "node_modules/prettier": { 1392 + "version": "2.8.7", 1393 + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.7.tgz", 1394 + "integrity": "sha512-yPngTo3aXUUmyuTjeTUT75txrf+aMh9FiD7q9ZE/i6r0bPb22g4FsE6Y338PQX1bmfy08i9QQCB7/rcUAVntfw==", 1395 + "dev": true, 1396 + "bin": { 1397 + "prettier": "bin-prettier.js" 1398 + }, 1399 + "engines": { 1400 + "node": ">=10.13.0" 1401 + }, 1402 + "funding": { 1403 + "url": "https://github.com/prettier/prettier?sponsor=1" 1404 + } 1405 + }, 1406 + "node_modules/punycode": { 1407 + "version": "2.3.0", 1408 + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", 1409 + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", 1410 + "dev": true, 1411 + "engines": { 1412 + "node": ">=6" 1413 + } 1414 + }, 1415 + "node_modules/queue-microtask": { 1416 + "version": "1.2.3", 1417 + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1418 + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", 1419 + "dev": true, 1420 + "funding": [ 1421 + { 1422 + "type": "github", 1423 + "url": "https://github.com/sponsors/feross" 1424 + }, 1425 + { 1426 + "type": "patreon", 1427 + "url": "https://www.patreon.com/feross" 1428 + }, 1429 + { 1430 + "type": "consulting", 1431 + "url": "https://feross.org/support" 1432 + } 1433 + ] 1434 + }, 1435 + "node_modules/resolve-from": { 1436 + "version": "4.0.0", 1437 + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1438 + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", 1439 + "dev": true, 1440 + "engines": { 1441 + "node": ">=4" 1442 + } 1443 + }, 1444 + "node_modules/reusify": { 1445 + "version": "1.0.4", 1446 + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1447 + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", 1448 + "dev": true, 1449 + "engines": { 1450 + "iojs": ">=1.0.0", 1451 + "node": ">=0.10.0" 1452 + } 1453 + }, 1454 + "node_modules/rimraf": { 1455 + "version": "3.0.2", 1456 + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", 1457 + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", 1458 + "dev": true, 1459 + "dependencies": { 1460 + "glob": "^7.1.3" 1461 + }, 1462 + "bin": { 1463 + "rimraf": "bin.js" 1464 + }, 1465 + "funding": { 1466 + "url": "https://github.com/sponsors/isaacs" 1467 + } 1468 + }, 1469 + "node_modules/run-parallel": { 1470 + "version": "1.2.0", 1471 + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1472 + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1473 + "dev": true, 1474 + "funding": [ 1475 + { 1476 + "type": "github", 1477 + "url": "https://github.com/sponsors/feross" 1478 + }, 1479 + { 1480 + "type": "patreon", 1481 + "url": "https://www.patreon.com/feross" 1482 + }, 1483 + { 1484 + "type": "consulting", 1485 + "url": "https://feross.org/support" 1486 + } 1487 + ], 1488 + "dependencies": { 1489 + "queue-microtask": "^1.2.2" 1490 + } 1491 + }, 1492 + "node_modules/rxjs": { 1493 + "version": "7.8.0", 1494 + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", 1495 + "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", 1496 + "optional": true, 1497 + "dependencies": { 1498 + "tslib": "^2.1.0" 1499 + } 1500 + }, 1501 + "node_modules/semver": { 1502 + "version": "7.3.8", 1503 + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", 1504 + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", 1505 + "dev": true, 1506 + "dependencies": { 1507 + "lru-cache": "^6.0.0" 1508 + }, 1509 + "bin": { 1510 + "semver": "bin/semver.js" 1511 + }, 1512 + "engines": { 1513 + "node": ">=10" 1514 + } 1515 + }, 1516 + "node_modules/shebang-command": { 1517 + "version": "2.0.0", 1518 + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", 1519 + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", 1520 + "dev": true, 1521 + "dependencies": { 1522 + "shebang-regex": "^3.0.0" 1523 + }, 1524 + "engines": { 1525 + "node": ">=8" 1526 + } 1527 + }, 1528 + "node_modules/shebang-regex": { 1529 + "version": "3.0.0", 1530 + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", 1531 + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", 1532 + "dev": true, 1533 + "engines": { 1534 + "node": ">=8" 1535 + } 1536 + }, 1537 + "node_modules/slash": { 1538 + "version": "3.0.0", 1539 + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", 1540 + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", 1541 + "dev": true, 1542 + "engines": { 1543 + "node": ">=8" 1544 + } 1545 + }, 1546 + "node_modules/strip-ansi": { 1547 + "version": "6.0.1", 1548 + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1549 + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1550 + "dev": true, 1551 + "dependencies": { 1552 + "ansi-regex": "^5.0.1" 1553 + }, 1554 + "engines": { 1555 + "node": ">=8" 1556 + } 1557 + }, 1558 + "node_modules/strip-json-comments": { 1559 + "version": "3.1.1", 1560 + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", 1561 + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", 1562 + "dev": true, 1563 + "engines": { 1564 + "node": ">=8" 1565 + }, 1566 + "funding": { 1567 + "url": "https://github.com/sponsors/sindresorhus" 1568 + } 1569 + }, 1570 + "node_modules/supports-color": { 1571 + "version": "7.2.0", 1572 + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1573 + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1574 + "dev": true, 1575 + "dependencies": { 1576 + "has-flag": "^4.0.0" 1577 + }, 1578 + "engines": { 1579 + "node": ">=8" 1580 + } 1581 + }, 1582 + "node_modules/text-table": { 1583 + "version": "0.2.0", 1584 + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", 1585 + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", 1586 + "dev": true 1587 + }, 1588 + "node_modules/tlds": { 1589 + "version": "1.238.0", 1590 + "resolved": "https://registry.npmjs.org/tlds/-/tlds-1.238.0.tgz", 1591 + "integrity": "sha512-lFPF9pZFhLrPodaJ0wt9QIN0l8jOxqmUezGZnm7BfkDSVd9q667oVIJukLVzhF+4oW7uDlrLlfJrL5yu9RWwew==", 1592 + "bin": { 1593 + "tlds": "bin.js" 1594 + } 1595 + }, 1596 + "node_modules/to-regex-range": { 1597 + "version": "5.0.1", 1598 + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1599 + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1600 + "dev": true, 1601 + "dependencies": { 1602 + "is-number": "^7.0.0" 1603 + }, 1604 + "engines": { 1605 + "node": ">=8.0" 1606 + } 1607 + }, 1608 + "node_modules/tslib": { 1609 + "version": "2.5.0", 1610 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", 1611 + "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", 1612 + "optional": true 1613 + }, 1614 + "node_modules/tsutils": { 1615 + "version": "3.21.0", 1616 + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", 1617 + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", 1618 + "dev": true, 1619 + "dependencies": { 1620 + "tslib": "^1.8.1" 1621 + }, 1622 + "engines": { 1623 + "node": ">= 6" 1624 + }, 1625 + "peerDependencies": { 1626 + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" 1627 + } 1628 + }, 1629 + "node_modules/tsutils/node_modules/tslib": { 1630 + "version": "1.14.1", 1631 + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 1632 + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 1633 + "dev": true 1634 + }, 1635 + "node_modules/type-check": { 1636 + "version": "0.4.0", 1637 + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", 1638 + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", 1639 + "dev": true, 1640 + "dependencies": { 1641 + "prelude-ls": "^1.2.1" 1642 + }, 1643 + "engines": { 1644 + "node": ">= 0.8.0" 1645 + } 1646 + }, 1647 + "node_modules/type-fest": { 1648 + "version": "0.20.2", 1649 + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", 1650 + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", 1651 + "dev": true, 1652 + "engines": { 1653 + "node": ">=10" 1654 + }, 1655 + "funding": { 1656 + "url": "https://github.com/sponsors/sindresorhus" 1657 + } 1658 + }, 1659 + "node_modules/typed-emitter": { 1660 + "version": "2.1.0", 1661 + "resolved": "https://registry.npmjs.org/typed-emitter/-/typed-emitter-2.1.0.tgz", 1662 + "integrity": "sha512-g/KzbYKbH5C2vPkaXGu8DJlHrGKHLsM25Zg9WuC9pMGfuvT+X25tZQWo5fK1BjBm8+UrVE9LDCvaY0CQk+fXDA==", 1663 + "optionalDependencies": { 1664 + "rxjs": "*" 1665 + } 1666 + }, 1667 + "node_modules/typescript": { 1668 + "version": "5.0.4", 1669 + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", 1670 + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", 1671 + "dev": true, 1672 + "bin": { 1673 + "tsc": "bin/tsc", 1674 + "tsserver": "bin/tsserver" 1675 + }, 1676 + "engines": { 1677 + "node": ">=12.20" 1678 + } 1679 + }, 1680 + "node_modules/uint8arrays": { 1681 + "version": "3.0.0", 1682 + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.0.0.tgz", 1683 + "integrity": "sha512-HRCx0q6O9Bfbp+HHSfQQKD7wU70+lydKVt4EghkdOvlK/NlrF90z+eXV34mUd48rNvVJXwkrMSPpCATkct8fJA==", 1684 + "dependencies": { 1685 + "multiformats": "^9.4.2" 1686 + } 1687 + }, 1688 + "node_modules/uri-js": { 1689 + "version": "4.4.1", 1690 + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", 1691 + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", 1692 + "dev": true, 1693 + "dependencies": { 1694 + "punycode": "^2.1.0" 1695 + } 1696 + }, 1697 + "node_modules/which": { 1698 + "version": "2.0.2", 1699 + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", 1700 + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", 1701 + "dev": true, 1702 + "dependencies": { 1703 + "isexe": "^2.0.0" 1704 + }, 1705 + "bin": { 1706 + "node-which": "bin/node-which" 1707 + }, 1708 + "engines": { 1709 + "node": ">= 8" 1710 + } 1711 + }, 1712 + "node_modules/word-wrap": { 1713 + "version": "1.2.3", 1714 + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", 1715 + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", 1716 + "dev": true, 1717 + "engines": { 1718 + "node": ">=0.10.0" 1719 + } 1720 + }, 1721 + "node_modules/wrappy": { 1722 + "version": "1.0.2", 1723 + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 1724 + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", 1725 + "dev": true 1726 + }, 1727 + "node_modules/yallist": { 1728 + "version": "4.0.0", 1729 + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", 1730 + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", 1731 + "dev": true 1732 + }, 1733 + "node_modules/yocto-queue": { 1734 + "version": "0.1.0", 1735 + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", 1736 + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", 1737 + "dev": true, 1738 + "engines": { 1739 + "node": ">=10" 1740 + }, 1741 + "funding": { 1742 + "url": "https://github.com/sponsors/sindresorhus" 1743 + } 1744 + }, 1745 + "node_modules/zod": { 1746 + "version": "3.21.4", 1747 + "resolved": "https://registry.npmjs.org/zod/-/zod-3.21.4.tgz", 1748 + "integrity": "sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==", 1749 + "funding": { 1750 + "url": "https://github.com/sponsors/colinhacks" 1751 + } 1752 + } 1753 + } 1754 + }
+26
package.json
··· 1 + { 2 + "name": "songofsongs-bot-bsky", 3 + "version": "1.0.0", 4 + "description": "", 5 + "main": "index.js", 6 + "scripts": { 7 + "start": "ts-node-esm index.ts" 8 + }, 9 + "keywords": [], 10 + "author": "", 11 + "type": "module", 12 + "license": "ISC", 13 + "dependencies": { 14 + "@atproto/api": "^0.2.5", 15 + "dotenv": "^16.0.3", 16 + "fuse.js": "^6.6.2" 17 + }, 18 + "devDependencies": { 19 + "@types/node": "^18.15.11", 20 + "@typescript-eslint/eslint-plugin": "^5.57.1", 21 + "@typescript-eslint/parser": "^5.57.1", 22 + "eslint": "^8.38.0", 23 + "prettier": "^2.8.7", 24 + "typescript": "^5.0.4" 25 + } 26 + }
+109
tsconfig.json
··· 1 + { 2 + "compilerOptions": { 3 + /* Visit https://aka.ms/tsconfig to read more about this file */ 4 + 5 + /* Projects */ 6 + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ 7 + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ 8 + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ 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": "esnext" /* 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 legacy experimental 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 + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ 26 + 27 + /* Modules */ 28 + "module": "esnext" /* Specify what module code is generated. */, 29 + // "rootDir": "./", /* Specify the root folder within your source files. */ 30 + "moduleResolution": "nodenext" /* Specify how TypeScript looks up a file from a given module specifier. */, 31 + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ 32 + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ 33 + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ 34 + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ 35 + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ 36 + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ 37 + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ 38 + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ 39 + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ 40 + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ 41 + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ 42 + // "resolveJsonModule": true, /* Enable importing .json files. */ 43 + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ 44 + // "noResolve": true, /* Disallow 'import's, 'require's or '<reference>'s from expanding the number of files TypeScript should add to a project. */ 45 + 46 + /* JavaScript Support */ 47 + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ 48 + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ 49 + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ 50 + 51 + /* Emit */ 52 + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ 53 + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ 54 + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ 55 + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ 56 + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ 57 + // "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. */ 58 + // "outDir": "./", /* Specify an output folder for all emitted files. */ 59 + // "removeComments": true, /* Disable emitting comments. */ 60 + // "noEmit": true, /* Disable emitting files from a compilation. */ 61 + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ 62 + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ 63 + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ 64 + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ 65 + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ 66 + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ 67 + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ 68 + // "newLine": "crlf", /* Set the newline character for emitting files. */ 69 + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ 70 + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ 71 + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ 72 + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ 73 + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ 74 + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ 75 + 76 + /* Interop Constraints */ 77 + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ 78 + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ 79 + "allowSyntheticDefaultImports": true /* Allow 'import x from y' when a module doesn't have a default export. */, 80 + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */, 81 + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ 82 + "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, 83 + 84 + /* Type Checking */ 85 + "strict": true /* Enable all strict type-checking options. */, 86 + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ 87 + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ 88 + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ 89 + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ 90 + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ 91 + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ 92 + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ 93 + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ 94 + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ 95 + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ 96 + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ 97 + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ 98 + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ 99 + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ 100 + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ 101 + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ 102 + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ 103 + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ 104 + 105 + /* Completeness */ 106 + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ 107 + "skipLibCheck": true /* Skip type checking all .d.ts files. */ 108 + } 109 + }