@sapphire/lexure 1.1.11-next.3d59d8ea → 1.1.11-next.42db0795
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/ArgumentStream.ts","../../src/lib/lexer/streams/parameters/BaseParameter.ts","../../src/lib/lexer/streams/parameters/QuotedParameter.ts","../../src/lib/lexer/streams/parameters/WordParameter.ts","../../src/lib/lexer/streams/raw/TokenStream.ts","../../src/lib/lexer/streams/ParameterStream.ts","../../src/lib/lexer/Lexer.ts","../../src/lib/parser/ParserResult.ts","../../src/lib/parser/strategies/EmptyStrategy.ts","../../src/lib/parser/Parser.ts","../../src/lib/parser/strategies/PrefixedStrategy.ts","../../src/lib/util/util.ts"],"names":["Option","result","Result","TokenType"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Option, Result } from '@sapphire/result';\nimport type { Parameter } from './lexer/streams/ParameterStream';\nimport type { ParserResult } from './parser/ParserResult';\n\nexport class ArgumentStream {\n\tpublic readonly results: ParserResult;\n\tpublic state: ArgumentStream.State;\n\n\tpublic constructor(results: ParserResult) {\n\t\tthis.results = results;\n\t\tthis.state = { used: new Set(), position: 0 };\n\t}\n\n\t/**\n\t * Whether or not all ordered parameters were used.\n\t */\n\tpublic get finished() {\n\t\treturn this.used === this.length;\n\t}\n\n\t/**\n\t * The amount of ordered parameters.\n\t */\n\tpublic get length() {\n\t\treturn this.results.ordered.length;\n\t}\n\n\t/**\n\t * The remaining amount of ordered parameters.\n\t */\n\tpublic get remaining() {\n\t\treturn this.length - this.used;\n\t}\n\n\t/**\n\t * The amount of ordered parameters that have been used.\n\t */\n\tpublic get used() {\n\t\treturn this.state.used.size;\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(args.single());\n\t * // Ok { value: '1' }\n\t *\n\t * console.log(args.single());\n\t * // Ok { value: '2' }\n\t *\n\t * console.log(args.single());\n\t * // Ok { value: '3' }\n\t *\n\t * console.log(args.single());\n\t * // None\n\t * ```\n\t *\n\t * @returns The value, if any.\n\t */\n\tpublic single(): Option<string> {\n\t\tif (this.finished) return Option.none;\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tthis.state.used.add(this.state.position);\n\t\treturn Option.some(this.results.ordered[this.state.position++].value);\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token, but only if it could be transformed.\n\t *\n\t * @note This does not support asynchronous results, refer to {@link singleMapAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * const parse = (value) => {\n\t * const number = Number(value);\n\t * return Number.isNaN(number) ? Option.none : Option.some(number);\n\t * };\n\t *\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // Some { value: 1 }\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // Some { value: 2 }\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // Some { value: 3 }\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // None\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate The predicate that determines the parameter's mapped value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the mapping failed. Defaults to `false`.\n\t * @returns The mapped value, if any.\n\t */\n\tpublic singleMap<T>(predicate: (value: string) => Option<T>, useAnyways = false): Option<T> {\n\t\tif (this.finished) return Option.none;\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isSome() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token, but only if it could be transformed.\n\t *\n\t * @note This is an asynchronous variant of {@link singleMap}.\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate The predicate that determines the parameter's mapped value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the mapping failed. Defaults to `false`.\n\t * @returns The mapped value, if any.\n\t */\n\tpublic async singleMapAsync<T>(predicate: (value: string) => Promise<Option<T>>, useAnyways = false): Promise<Option<T>> {\n\t\tif (this.finished) return Option.none;\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = await predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isSome() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Finds and retrieves the next unused parameter and transforms it.\n\t *\n\t * @note This is a variant of {@link findMap} that returns the errors on failure.\n\t * @note This does not support asynchronous results, refer to {@link singleParseAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * const parse = (value) => {\n\t * const number = Number(value);\n\t * return Number.isNaN(number)\n\t * ? Result.err(`Could not parse ${value} to a number`)\n\t * : Result.ok(number);\n\t * };\n\t *\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Ok { value: 1 }\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Ok { value: 2 }\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Ok { value: 3 }\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Err { error: null }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate The predicate that determines the parameter's transformed value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the transformation failed. Defaults to `false`.\n\t * @returns The transformed value, if any.\n\t */\n\tpublic singleParse<T, E>(predicate: (value: string) => Result<T, E>, useAnyways = false): Result<T, E | null> {\n\t\tif (this.finished) return Result.err(null);\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isOk() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token, but only if it could be transformed.\n\t *\n\t * @note This is an asynchronous variant of {@link singleParse}.\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate The predicate that determines the parameter's mapped value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the mapping failed. Defaults to `false`.\n\t * @returns The mapped value, if any.\n\t */\n\tpublic async singleParseAsync<T, E>(predicate: (value: string) => Promise<Result<T, E>>, useAnyways = false): Promise<Result<T, E | null>> {\n\t\tif (this.finished) return Result.err(null);\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = await predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isOk() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `true`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This does not support asynchronous results, refer to {@link findAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `true`. If such an element is found, find immediately returns a `Option.some`\n\t * with that element value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic find(predicate: (value: string) => boolean, from = this.state.position): Option<string> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn Option.some(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `true`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This is an asynchronous variant of {@link find}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `true`. If such an element is found, find immediately returns a `Option.some`\n\t * with that element value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic async findAsync(predicate: (value: string) => Promise<boolean>, from = this.state.position): Promise<Option<string>> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (await predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn Option.some(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `Some`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This does not support asynchronous results, refer to {@link findMapAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `Some`. If such an element is found, find immediately returns the returned\n\t * value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic findMap<T>(predicate: (value: string) => Option<T>, from = this.state.position): Option<T> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = predicate(parameter);\n\t\t\tif (result.isSome()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `Some`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This is an asynchronous variant of {@link findMap}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `Some`. If such an element is found, find immediately returns the returned\n\t * value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic async findMapAsync<T>(predicate: (value: string) => Promise<Option<T>>, from = this.state.position): Promise<Option<T>> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = await predicate(parameter);\n\t\t\tif (result.isSome()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Finds and retrieves the first unused parameter that could be transformed.\n\t *\n\t * @note This is a variant of {@link findMap} that returns the errors on failure.\n\t * @note This does not support asynchronous results, refer to {@link findParseAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * const parse = (value) => {\n\t * const number = Number(value);\n\t * return Number.isNaN(number)\n\t * ? Result.err(`Could not parse ${value} to a number`)\n\t * : Result.ok(number);\n\t * };\n\t *\n\t * // Suppose args are from 'ba 1 cc'.\n\t *\n\t * console.log(args.findParse(parse));\n\t * // Ok { value: 1 }\n\t *\n\t * console.log(args.findParse(parse));\n\t * // Err {\n\t * // error: [\n\t * // 'Could not parse ba to a number',\n\t * // 'Could not parse cc to a number'\n\t * // ]\n\t * // }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate `findParse` calls `predicate` once for each unused ordered parameter, in ascending order, until\n\t * it finds one where `predicate` returns `Ok`. If such an element is found, `findParse` immediately returns the\n\t * returned value. Otherwise, `findParse` returns `Result.Err` with all the returned errors.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic findParse<T, E>(predicate: (value: string) => Result<T, E>, from = this.state.position): Result<T, E[]> {\n\t\tconst errors: E[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = predicate(parameter);\n\t\t\tif (result.isOk()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result as Result.Ok<T>;\n\t\t\t}\n\n\t\t\terrors.push(result.unwrapErr());\n\t\t}\n\n\t\treturn Result.err(errors);\n\t}\n\n\t/**\n\t * Finds and retrieves the first unused parameter that could be transformed.\n\t *\n\t * @note This is a variant of {@link findMapAsync} that returns the errors on failure.\n\t * @note This is an asynchronous variant of {@link findParse}.\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate `findParse` calls `predicate` once for each unused ordered parameter, in ascending order, until\n\t * it finds one where `predicate` returns `Ok`. If such an element is found, `findParse` immediately returns the\n\t * returned value. Otherwise, `findParse` returns `Result.Err` with all the returned errors.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic async findParseAsync<T, E>(predicate: (value: string) => Promise<Result<T, E>>, from = this.state.position): Promise<Result<T, E[]>> {\n\t\tconst errors: E[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = await predicate(parameter);\n\t\t\tif (result.isOk()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result as Result.Ok<T>;\n\t\t\t}\n\n\t\t\terrors.push(result.unwrapErr());\n\t\t}\n\n\t\treturn Result.err(errors);\n\t}\n\n\t/**\n\t * Retrieves multiple unused parameters.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(join(args.many().unwrap()));\n\t * // '1 2 3'\n\t * ```\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(join(args.many(2).unwrap()));\n\t * // '1 2'\n\t * ```\n\t *\n\t * @param limit The maximum amount of parameters to retrieve, defaults to `Infinity`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The unused parameters within the range.\n\t */\n\tpublic many(limit = Infinity, from = this.state.position): Option<Parameter[]> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: Parameter[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\t// If the current parameter was already used, skip:\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\t// Mark current parameter as used, and push it to the resulting array:\n\t\t\tthis.state.used.add(i);\n\t\t\tparameters.push(this.results.ordered[i]);\n\n\t\t\t// If the parameters reached the limit, break the loop:\n\t\t\tif (parameters.length >= limit) break;\n\t\t}\n\n\t\treturn parameters.length ? Option.some(parameters) : Option.none;\n\t}\n\n\tpublic filter(predicate: (value: string) => boolean, from = this.state.position): Option<string[]> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: string[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\tpublic async filterAsync(predicate: (value: string) => Promise<boolean>, from = this.state.position): Promise<Option<string[]>> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: string[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (await predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\tpublic filterMap<T>(predicate: (value: string) => Option<T>, from = this.state.position): Option<T[]> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: T[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = predicate(parameter);\n\t\t\tresult.inspect((value) => {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(value);\n\t\t\t});\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\tpublic async filterMapAsync<T>(predicate: (value: string) => Promise<Option<T>>, from = this.state.position): Promise<Option<T[]>> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: T[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = await predicate(parameter);\n\t\t\tresult.inspect((value) => {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(value);\n\t\t\t});\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\t/**\n\t * Checks whether any of the flags were given.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '--f --g':\n\t *\n\t * console.log(args.flag('f'));\n\t * // true\n\t *\n\t * console.log(args.flag('g', 'h'));\n\t * // true\n\t *\n\t * console.log(args.flag('h'));\n\t * // false\n\t * ```\n\t *\n\t * @param keys The names of the flags to check.\n\t * @returns Whether or not any of the flags were given.\n\t */\n\tpublic flag(...keys: readonly string[]): boolean {\n\t\treturn keys.some((key) => this.results.flags.has(key));\n\t}\n\n\t/**\n\t * Gets the last value of any option. When there are multiple names, the last value of the last found name is given.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '--a=1 --b=2 --c=3'.\n\t * console.log(args.option('a'));\n\t * // Some { value: '1' }\n\t *\n\t * console.log(args.option('b', 'c'));\n\t * // Some { value: '3' }\n\t *\n\t * console.log(args.option('d'));\n\t * // None {}\n\t * ```\n\t *\n\t * @param keys The names of the options to check.\n\t * @returns The last value of the option, if any.\n\t */\n\tpublic option(...keys: readonly string[]): Option<string> {\n\t\treturn this.options(...keys).map((values) => values.at(-1)!);\n\t}\n\n\t/**\n\t * Gets all values from all options.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '--a=1 --a=1 --b=2 --c=3'.\n\t * console.log(args.option('a'));\n\t * // Some { value: ['1', '1'] }\n\t *\n\t * console.log(args.option('b', 'c'));\n\t * // Some { value: ['2', '3'] }\n\t *\n\t * console.log(args.option('d'));\n\t * // None {}\n\t * ```\n\t *\n\t * @param keys The names of the options to check.\n\t * @returns The values from all the options concatenated, if any.\n\t */\n\tpublic options(...keys: readonly string[]): Option<readonly string[]> {\n\t\tconst entries: string[] = [];\n\t\tfor (const key of keys) {\n\t\t\tconst values = this.results.options.get(key);\n\t\t\tif (values) entries.push(...values);\n\t\t}\n\n\t\treturn entries.length ? Option.some(entries) : Option.none;\n\t}\n\n\tpublic save(): ArgumentStream.State {\n\t\treturn {\n\t\t\tused: new Set(this.state.used),\n\t\t\tposition: this.state.position\n\t\t};\n\t}\n\n\tpublic restore(state: ArgumentStream.State) {\n\t\tthis.state = state;\n\t}\n\n\tpublic reset() {\n\t\tthis.restore({ used: new Set(), position: 0 });\n\t}\n}\n\nexport namespace ArgumentStream {\n\texport interface State {\n\t\tused: Set<number>;\n\t\tposition: number;\n\t}\n}\n","export abstract class BaseParameter {\n\tpublic readonly separators: readonly string[];\n\n\tpublic constructor(separators: readonly string[]) {\n\t\tthis.separators = separators;\n\t}\n\n\tpublic get leading(): string {\n\t\treturn this.separators.join('');\n\t}\n\n\tpublic abstract get raw(): string;\n}\n","import type { QuotedToken } from '../raw/TokenStream';\nimport { BaseParameter } from './BaseParameter';\n\nexport class QuotedParameter extends BaseParameter {\n\tpublic readonly value: string;\n\tpublic readonly open: string;\n\tpublic readonly close: string;\n\n\tpublic constructor(separators: readonly string[], part: Omit<QuotedToken, 'type'>) {\n\t\tsuper(separators);\n\t\tthis.value = part.value;\n\t\tthis.open = part.open;\n\t\tthis.close = part.close;\n\t}\n\n\tpublic get raw() {\n\t\treturn `${this.open}${this.value}${this.close}`;\n\t}\n}\n","import type { WordToken } from '../raw/TokenStream';\nimport { BaseParameter } from './BaseParameter';\n\nexport class WordParameter extends BaseParameter {\n\tpublic readonly value: string;\n\n\tpublic constructor(separators: readonly string[], part: Omit<WordToken, 'type'>) {\n\t\tsuper(separators);\n\t\tthis.value = part.value;\n\t}\n\n\tpublic get raw() {\n\t\treturn this.value;\n\t}\n}\n","import type { Lexer } from '../../Lexer';\n\nexport class TokenStream implements Iterable<Token> {\n\tprivate readonly input: string;\n\tprivate readonly quotes: readonly [string, string][];\n\tprivate readonly separator: string;\n\tprivate position = 0;\n\n\tpublic constructor(lexer: Lexer, input: string) {\n\t\tthis.quotes = lexer.quotes;\n\t\tthis.separator = lexer.separator;\n\t\tthis.input = input;\n\t}\n\n\tpublic get finished() {\n\t\treturn this.position >= this.input.length;\n\t}\n\n\tpublic *[Symbol.iterator](): Iterator<Token> {\n\t\twhile (!this.finished) {\n\t\t\tyield this.getPossibleSeparator() ?? this.getPossibleQuotedArgument() ?? this.getParameter();\n\t\t}\n\t}\n\n\tprivate getPossibleSeparator(): SeparatorToken | null {\n\t\tif (this.input.startsWith(this.separator, this.position)) {\n\t\t\tthis.position += this.separator.length;\n\t\t\treturn { type: TokenType.Separator, value: this.separator };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate getPossibleQuotedArgument(): QuotedToken | null {\n\t\tfor (const [open, close] of this.quotes) {\n\t\t\tif (!this.input.startsWith(open, this.position)) continue;\n\n\t\t\tconst end = this.input.indexOf(close, this.position + open.length);\n\t\t\tif (end === -1) continue;\n\n\t\t\tconst value = this.input.slice(this.position + open.length, end);\n\t\t\tthis.position = end + close.length;\n\n\t\t\treturn { type: TokenType.Quoted, value, open, close };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate getParameter(): WordToken {\n\t\tconst index = this.input.indexOf(this.separator, this.position);\n\t\tconst value = index === -1 ? this.input.slice(this.position) : this.input.slice(this.position, index);\n\t\tthis.position += value.length;\n\t\treturn { type: TokenType.Parameter, value };\n\t}\n}\n\nexport enum TokenType {\n\tParameter,\n\tQuoted,\n\tSeparator\n}\n\nexport type Token = WordToken | QuotedToken | SeparatorToken;\n\nexport interface WordToken {\n\treadonly type: TokenType.Parameter;\n\treadonly value: string;\n}\n\nexport interface QuotedToken {\n\treadonly type: TokenType.Quoted;\n\treadonly value: string;\n\treadonly open: string;\n\treadonly close: string;\n}\n\nexport interface SeparatorToken {\n\treadonly type: TokenType.Separator;\n\treadonly value: string;\n}\n","import { QuotedParameter } from './parameters/QuotedParameter';\nimport { WordParameter } from './parameters/WordParameter';\nimport { TokenType, type Token } from './raw/TokenStream';\n\nexport class ParameterStream {\n\tprivate readonly stream: Iterable<Token>;\n\tprivate separators: string[] = [];\n\n\tpublic constructor(stream: Iterable<Token>) {\n\t\tthis.stream = stream;\n\t}\n\n\tpublic *[Symbol.iterator](): Iterator<Parameter, string[]> {\n\t\tfor (const part of this.stream) {\n\t\t\tif (part.type === TokenType.Separator) {\n\t\t\t\tthis.separators.push(part.value);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tyield part.type === TokenType.Quoted ? new QuotedParameter(this.separators, part) : new WordParameter(this.separators, part);\n\t\t\tthis.separators = [];\n\t\t}\n\n\t\treturn this.separators;\n\t}\n}\n\nexport type Parameter = QuotedParameter | WordParameter;\n","import { ParameterStream } from './streams/ParameterStream';\nimport { TokenStream } from './streams/raw/TokenStream';\n\nexport class Lexer {\n\tpublic readonly quotes: readonly [open: string, close: string][];\n\tpublic readonly separator: string;\n\n\tpublic constructor(options: Lexer.Options = {}) {\n\t\tthis.quotes = options.quotes ?? [];\n\t\tthis.separator = options.separator ?? ' ';\n\t}\n\n\tpublic run(input: string) {\n\t\treturn new ParameterStream(this.raw(input));\n\t}\n\n\tpublic raw(input: string) {\n\t\treturn new TokenStream(this, input);\n\t}\n}\n\nexport namespace Lexer {\n\texport interface Options {\n\t\tseparator?: string;\n\t\tquotes?: readonly [open: string, close: string][];\n\t}\n}\n","import type { Parameter } from '../lexer/streams/ParameterStream';\nimport type { Parser } from './Parser';\nimport type { IUnorderedStrategy } from './strategies/IUnorderedStrategy';\n\nexport class ParserResult {\n\tpublic readonly ordered: Parameter[] = [];\n\tpublic readonly flags = new Set<string>();\n\tpublic readonly options = new Map<string, string[]>();\n\tprivate readonly strategy: IUnorderedStrategy;\n\n\tpublic constructor(parser: Parser) {\n\t\tthis.strategy = parser.strategy;\n\t}\n\n\tpublic parse(parameters: Iterable<Parameter>) {\n\t\tfor (const parameter of parameters) {\n\t\t\tthis.parsePossibleFlag(parameter) || this.parsePossibleOptions(parameter) || this.parseOrdered(parameter);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprivate parsePossibleFlag(parameter: Parameter): boolean {\n\t\treturn this.strategy\n\t\t\t.matchFlag(parameter.value)\n\t\t\t.inspect((value) => this.flags.add(value))\n\t\t\t.isSome();\n\t}\n\n\tprivate parsePossibleOptions(parameter: Parameter): boolean {\n\t\treturn this.strategy\n\t\t\t.matchOption(parameter.value)\n\t\t\t.inspect(([key, value]) => {\n\t\t\t\tconst existing = this.options.get(key);\n\t\t\t\tif (existing) existing.push(value);\n\t\t\t\telse this.options.set(key, [value]);\n\t\t\t})\n\t\t\t.isSome();\n\t}\n\n\tprivate parseOrdered(parameter: Parameter): boolean {\n\t\tthis.ordered.push(parameter);\n\t\treturn true;\n\t}\n}\n","import { Option } from '@sapphire/result';\nimport type { IUnorderedStrategy } from './IUnorderedStrategy';\n\nexport class EmptyStrategy implements IUnorderedStrategy {\n\tpublic matchFlag(): Option<string> {\n\t\treturn Option.none;\n\t}\n\n\tpublic matchOption(): Option<readonly [key: string, value: string]> {\n\t\treturn Option.none;\n\t}\n}\n","import type { Parameter } from '../lexer/streams/ParameterStream';\nimport type { IUnorderedStrategy } from './strategies/IUnorderedStrategy';\nimport { ParserResult } from './ParserResult';\nimport { EmptyStrategy } from './strategies/EmptyStrategy';\n\nexport class Parser {\n\tpublic strategy: IUnorderedStrategy;\n\n\tpublic constructor(strategy?: IUnorderedStrategy) {\n\t\tthis.strategy = strategy ?? new EmptyStrategy();\n\t}\n\n\tpublic setUnorderedStrategy(strategy: IUnorderedStrategy) {\n\t\tthis.strategy = strategy;\n\t\treturn this;\n\t}\n\n\tpublic run(input: Iterable<Parameter>): ParserResult {\n\t\treturn new ParserResult(this).parse(input);\n\t}\n}\n","import { Option } from '@sapphire/result';\nimport type { IUnorderedStrategy } from './IUnorderedStrategy';\n\nexport class PrefixedStrategy implements IUnorderedStrategy {\n\tpublic readonly prefixes: readonly string[];\n\tpublic readonly separators: readonly string[];\n\n\tpublic constructor(prefixes: readonly string[], separators: readonly string[]) {\n\t\tthis.prefixes = prefixes;\n\t\tthis.separators = separators;\n\t}\n\n\tpublic matchFlag(input: string): Option<string> {\n\t\tconst prefix = this.prefixes.find((x) => input.startsWith(x));\n\n\t\t// If the prefix is missing, return None:\n\t\tif (!prefix) return Option.none;\n\n\t\t// If the separator is present, return None:\n\t\tif (this.separators.some((x) => input.includes(x, prefix.length))) return Option.none;\n\n\t\treturn Option.some(input.slice(prefix.length));\n\t}\n\n\tpublic matchOption(input: string): Option<readonly [key: string, value: string]> {\n\t\tconst prefix = this.prefixes.find((x) => input.startsWith(x));\n\n\t\t// If the prefix is missing, return None:\n\t\tif (!prefix) return Option.none;\n\n\t\tfor (const separator of this.separators) {\n\t\t\tconst index = input.indexOf(separator, prefix.length + 1);\n\n\t\t\t// If the separator is missing, skip:\n\t\t\tif (index === -1) continue;\n\n\t\t\t// If the separator is present, but has no value, return None:\n\t\t\tif (index + separator.length === input.length) return Option.none;\n\n\t\t\tconst key = input.slice(prefix.length, index);\n\t\t\tconst value = input.slice(index + separator.length);\n\t\t\treturn Option.some([key, value] as const);\n\t\t}\n\n\t\treturn Option.none;\n\t}\n}\n","import type { Parameter } from '../lexer/streams/ParameterStream';\n\n/**\n * Joins the parameters by their `leading` value, using the `value` property.\n * @seealso {@link joinRaw} for the version using `raw` instead of `value`.\n * @param parameters The parameters to join.\n * @returns The result of joining the parameters.\n */\nexport function join(parameters: readonly Parameter[]) {\n\tif (parameters.length === 0) return '';\n\tif (parameters.length === 1) return parameters[0].value;\n\n\tlet output = parameters[0].value;\n\tfor (let i = 1; i < parameters.length; i++) {\n\t\tconst parameter = parameters[i];\n\t\toutput += parameter.leading + parameter.value;\n\t}\n\n\treturn output;\n}\n\n/**\n * Joins the parameters by their `leading` value, using the `raw` property.\n * @seealso {@link join} for the version using `value` instead of `raw`.\n * @param parameters The parameters to join.\n * @returns The result of joining the parameters.\n */\nexport function joinRaw(parameters: readonly Parameter[]) {\n\tif (parameters.length === 0) return '';\n\tif (parameters.length === 1) return parameters[0].raw;\n\n\tlet output = parameters[0].raw;\n\tfor (let i = 1; i < parameters.length; i++) {\n\t\tconst parameter = parameters[i];\n\t\toutput += parameter.leading + parameter.raw;\n\t}\n\n\treturn output;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/lib/ArgumentStream.ts","../../src/lib/lexer/streams/parameters/BaseParameter.ts","../../src/lib/lexer/streams/parameters/QuotedParameter.ts","../../src/lib/lexer/streams/parameters/WordParameter.ts","../../src/lib/lexer/streams/raw/TokenStream.ts","../../src/lib/lexer/streams/ParameterStream.ts","../../src/lib/lexer/Lexer.ts","../../src/lib/parser/ParserResult.ts","../../src/lib/parser/strategies/EmptyStrategy.ts","../../src/lib/parser/Parser.ts","../../src/lib/parser/strategies/PrefixedStrategy.ts","../../src/lib/util/util.ts"],"names":["Option","result","Result","TokenType"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Option, Result } from '@sapphire/result';\nimport type { Parameter } from './lexer/streams/ParameterStream';\nimport type { ParserResult } from './parser/ParserResult';\n\nexport class ArgumentStream {\n\tpublic readonly results: ParserResult;\n\tpublic state: ArgumentStream.State;\n\n\tpublic constructor(results: ParserResult) {\n\t\tthis.results = results;\n\t\tthis.state = { used: new Set(), position: 0 };\n\t}\n\n\t/**\n\t * Whether or not all ordered parameters were used.\n\t */\n\tpublic get finished() {\n\t\treturn this.used === this.length;\n\t}\n\n\t/**\n\t * The amount of ordered parameters.\n\t */\n\tpublic get length() {\n\t\treturn this.results.ordered.length;\n\t}\n\n\t/**\n\t * The remaining amount of ordered parameters.\n\t */\n\tpublic get remaining() {\n\t\treturn this.length - this.used;\n\t}\n\n\t/**\n\t * The amount of ordered parameters that have been used.\n\t */\n\tpublic get used() {\n\t\treturn this.state.used.size;\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(args.single());\n\t * // Ok { value: '1' }\n\t *\n\t * console.log(args.single());\n\t * // Ok { value: '2' }\n\t *\n\t * console.log(args.single());\n\t * // Ok { value: '3' }\n\t *\n\t * console.log(args.single());\n\t * // None\n\t * ```\n\t *\n\t * @returns The value, if any.\n\t */\n\tpublic single(): Option<string> {\n\t\tif (this.finished) return Option.none;\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tthis.state.used.add(this.state.position);\n\t\treturn Option.some(this.results.ordered[this.state.position++].value);\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token, but only if it could be transformed.\n\t *\n\t * @note This does not support asynchronous results, refer to {@link singleMapAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * const parse = (value) => {\n\t * const number = Number(value);\n\t * return Number.isNaN(number) ? Option.none : Option.some(number);\n\t * };\n\t *\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // Some { value: 1 }\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // Some { value: 2 }\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // Some { value: 3 }\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // None\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate The predicate that determines the parameter's mapped value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the mapping failed. Defaults to `false`.\n\t * @returns The mapped value, if any.\n\t */\n\tpublic singleMap<T>(predicate: (value: string) => Option<T>, useAnyways = false): Option<T> {\n\t\tif (this.finished) return Option.none;\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isSome() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token, but only if it could be transformed.\n\t *\n\t * @note This is an asynchronous variant of {@link singleMap}.\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate The predicate that determines the parameter's mapped value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the mapping failed. Defaults to `false`.\n\t * @returns The mapped value, if any.\n\t */\n\tpublic async singleMapAsync<T>(predicate: (value: string) => Promise<Option<T>>, useAnyways = false): Promise<Option<T>> {\n\t\tif (this.finished) return Option.none;\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = await predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isSome() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Finds and retrieves the next unused parameter and transforms it.\n\t *\n\t * @note This is a variant of {@link findMap} that returns the errors on failure.\n\t * @note This does not support asynchronous results, refer to {@link singleParseAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * const parse = (value) => {\n\t * const number = Number(value);\n\t * return Number.isNaN(number)\n\t * ? Result.err(`Could not parse ${value} to a number`)\n\t * : Result.ok(number);\n\t * };\n\t *\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Ok { value: 1 }\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Ok { value: 2 }\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Ok { value: 3 }\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Err { error: null }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate The predicate that determines the parameter's transformed value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the transformation failed. Defaults to `false`.\n\t * @returns The transformed value, if any.\n\t */\n\tpublic singleParse<T, E>(predicate: (value: string) => Result<T, E>, useAnyways = false): Result<T, E | null> {\n\t\tif (this.finished) return Result.err(null);\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isOk() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token, but only if it could be transformed.\n\t *\n\t * @note This is an asynchronous variant of {@link singleParse}.\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate The predicate that determines the parameter's mapped value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the mapping failed. Defaults to `false`.\n\t * @returns The mapped value, if any.\n\t */\n\tpublic async singleParseAsync<T, E>(predicate: (value: string) => Promise<Result<T, E>>, useAnyways = false): Promise<Result<T, E | null>> {\n\t\tif (this.finished) return Result.err(null);\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = await predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isOk() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `true`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This does not support asynchronous results, refer to {@link findAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `true`. If such an element is found, find immediately returns a `Option.some`\n\t * with that element value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic find(predicate: (value: string) => boolean, from = this.state.position): Option<string> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn Option.some(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `true`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This is an asynchronous variant of {@link find}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `true`. If such an element is found, find immediately returns a `Option.some`\n\t * with that element value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic async findAsync(predicate: (value: string) => Promise<boolean>, from = this.state.position): Promise<Option<string>> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (await predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn Option.some(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `Some`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This does not support asynchronous results, refer to {@link findMapAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `Some`. If such an element is found, find immediately returns the returned\n\t * value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic findMap<T>(predicate: (value: string) => Option<T>, from = this.state.position): Option<T> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = predicate(parameter);\n\t\t\tif (result.isSome()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `Some`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This is an asynchronous variant of {@link findMap}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `Some`. If such an element is found, find immediately returns the returned\n\t * value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic async findMapAsync<T>(predicate: (value: string) => Promise<Option<T>>, from = this.state.position): Promise<Option<T>> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = await predicate(parameter);\n\t\t\tif (result.isSome()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Finds and retrieves the first unused parameter that could be transformed.\n\t *\n\t * @note This is a variant of {@link findMap} that returns the errors on failure.\n\t * @note This does not support asynchronous results, refer to {@link findParseAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * const parse = (value) => {\n\t * const number = Number(value);\n\t * return Number.isNaN(number)\n\t * ? Result.err(`Could not parse ${value} to a number`)\n\t * : Result.ok(number);\n\t * };\n\t *\n\t * // Suppose args are from 'ba 1 cc'.\n\t *\n\t * console.log(args.findParse(parse));\n\t * // Ok { value: 1 }\n\t *\n\t * console.log(args.findParse(parse));\n\t * // Err {\n\t * // error: [\n\t * // 'Could not parse ba to a number',\n\t * // 'Could not parse cc to a number'\n\t * // ]\n\t * // }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate `findParse` calls `predicate` once for each unused ordered parameter, in ascending order, until\n\t * it finds one where `predicate` returns `Ok`. If such an element is found, `findParse` immediately returns the\n\t * returned value. Otherwise, `findParse` returns `Result.Err` with all the returned errors.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic findParse<T, E>(predicate: (value: string) => Result<T, E>, from = this.state.position): Result<T, E[]> {\n\t\tconst errors: E[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = predicate(parameter);\n\t\t\tif (result.isOk()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result as Result.Ok<T>;\n\t\t\t}\n\n\t\t\terrors.push(result.unwrapErr());\n\t\t}\n\n\t\treturn Result.err(errors);\n\t}\n\n\t/**\n\t * Finds and retrieves the first unused parameter that could be transformed.\n\t *\n\t * @note This is a variant of {@link findMapAsync} that returns the errors on failure.\n\t * @note This is an asynchronous variant of {@link findParse}.\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate `findParse` calls `predicate` once for each unused ordered parameter, in ascending order, until\n\t * it finds one where `predicate` returns `Ok`. If such an element is found, `findParse` immediately returns the\n\t * returned value. Otherwise, `findParse` returns `Result.Err` with all the returned errors.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic async findParseAsync<T, E>(predicate: (value: string) => Promise<Result<T, E>>, from = this.state.position): Promise<Result<T, E[]>> {\n\t\tconst errors: E[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = await predicate(parameter);\n\t\t\tif (result.isOk()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result as Result.Ok<T>;\n\t\t\t}\n\n\t\t\terrors.push(result.unwrapErr());\n\t\t}\n\n\t\treturn Result.err(errors);\n\t}\n\n\t/**\n\t * Retrieves multiple unused parameters.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(join(args.many().unwrap()));\n\t * // '1 2 3'\n\t * ```\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(join(args.many(2).unwrap()));\n\t * // '1 2'\n\t * ```\n\t *\n\t * @param limit The maximum amount of parameters to retrieve, defaults to `Infinity`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The unused parameters within the range.\n\t */\n\tpublic many(limit = Infinity, from = this.state.position): Option<Parameter[]> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: Parameter[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\t// If the current parameter was already used, skip:\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\t// Mark current parameter as used, and push it to the resulting array:\n\t\t\tthis.state.used.add(i);\n\t\t\tparameters.push(this.results.ordered[i]);\n\n\t\t\t// If the parameters reached the limit, break the loop:\n\t\t\tif (parameters.length >= limit) break;\n\t\t}\n\n\t\treturn parameters.length ? Option.some(parameters) : Option.none;\n\t}\n\n\tpublic filter(predicate: (value: string) => boolean, from = this.state.position): Option<string[]> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: string[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\tpublic async filterAsync(predicate: (value: string) => Promise<boolean>, from = this.state.position): Promise<Option<string[]>> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: string[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (await predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\tpublic filterMap<T>(predicate: (value: string) => Option<T>, from = this.state.position): Option<T[]> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: T[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = predicate(parameter);\n\t\t\tresult.inspect((value) => {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(value);\n\t\t\t});\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\tpublic async filterMapAsync<T>(predicate: (value: string) => Promise<Option<T>>, from = this.state.position): Promise<Option<T[]>> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: T[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = await predicate(parameter);\n\t\t\tresult.inspect((value) => {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(value);\n\t\t\t});\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\t/**\n\t * Checks whether any of the flags were given.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '--f --g':\n\t *\n\t * console.log(args.flag('f'));\n\t * // true\n\t *\n\t * console.log(args.flag('g', 'h'));\n\t * // true\n\t *\n\t * console.log(args.flag('h'));\n\t * // false\n\t * ```\n\t *\n\t * @param keys The names of the flags to check.\n\t * @returns Whether or not any of the flags were given.\n\t */\n\tpublic flag(...keys: readonly string[]): boolean {\n\t\treturn keys.some((key) => this.results.flags.has(key));\n\t}\n\n\t/**\n\t * Gets the last value of any option. When there are multiple names, the last value of the last found name is given.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '--a=1 --b=2 --c=3'.\n\t * console.log(args.option('a'));\n\t * // Some { value: '1' }\n\t *\n\t * console.log(args.option('b', 'c'));\n\t * // Some { value: '3' }\n\t *\n\t * console.log(args.option('d'));\n\t * // None {}\n\t * ```\n\t *\n\t * @param keys The names of the options to check.\n\t * @returns The last value of the option, if any.\n\t */\n\tpublic option(...keys: readonly string[]): Option<string> {\n\t\treturn this.options(...keys).map((values) => values.at(-1)!);\n\t}\n\n\t/**\n\t * Gets all values from all options.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '--a=1 --a=1 --b=2 --c=3'.\n\t * console.log(args.option('a'));\n\t * // Some { value: ['1', '1'] }\n\t *\n\t * console.log(args.option('b', 'c'));\n\t * // Some { value: ['2', '3'] }\n\t *\n\t * console.log(args.option('d'));\n\t * // None {}\n\t * ```\n\t *\n\t * @param keys The names of the options to check.\n\t * @returns The values from all the options concatenated, if any.\n\t */\n\tpublic options(...keys: readonly string[]): Option<readonly string[]> {\n\t\tconst entries: string[] = [];\n\t\tfor (const key of keys) {\n\t\t\tconst values = this.results.options.get(key);\n\t\t\tif (values) entries.push(...values);\n\t\t}\n\n\t\treturn entries.length ? Option.some(entries) : Option.none;\n\t}\n\n\tpublic save(): ArgumentStream.State {\n\t\treturn {\n\t\t\tused: new Set(this.state.used),\n\t\t\tposition: this.state.position\n\t\t};\n\t}\n\n\tpublic restore(state: ArgumentStream.State) {\n\t\tthis.state = state;\n\t}\n\n\tpublic reset() {\n\t\tthis.restore({ used: new Set(), position: 0 });\n\t}\n}\n\nexport namespace ArgumentStream {\n\texport interface State {\n\t\tused: Set<number>;\n\t\tposition: number;\n\t}\n}\n","export abstract class BaseParameter {\n\tpublic readonly separators: readonly string[];\n\n\tpublic constructor(separators: readonly string[]) {\n\t\tthis.separators = separators;\n\t}\n\n\tpublic get leading(): string {\n\t\treturn this.separators.join('');\n\t}\n\n\tpublic abstract get raw(): string;\n}\n","import type { QuotedToken } from '../raw/TokenStream';\nimport { BaseParameter } from './BaseParameter';\n\nexport class QuotedParameter extends BaseParameter {\n\tpublic readonly value: string;\n\tpublic readonly open: string;\n\tpublic readonly close: string;\n\n\tpublic constructor(separators: readonly string[], part: Omit<QuotedToken, 'type'>) {\n\t\tsuper(separators);\n\t\tthis.value = part.value;\n\t\tthis.open = part.open;\n\t\tthis.close = part.close;\n\t}\n\n\tpublic get raw() {\n\t\treturn `${this.open}${this.value}${this.close}`;\n\t}\n}\n","import type { WordToken } from '../raw/TokenStream';\nimport { BaseParameter } from './BaseParameter';\n\nexport class WordParameter extends BaseParameter {\n\tpublic readonly value: string;\n\n\tpublic constructor(separators: readonly string[], part: Omit<WordToken, 'type'>) {\n\t\tsuper(separators);\n\t\tthis.value = part.value;\n\t}\n\n\tpublic get raw() {\n\t\treturn this.value;\n\t}\n}\n","import type { Lexer } from '../../Lexer';\n\nexport class TokenStream implements Iterable<Token> {\n\tprivate readonly input: string;\n\tprivate readonly quotes: readonly [string, string][];\n\tprivate readonly separator: string;\n\tprivate position = 0;\n\n\tpublic constructor(lexer: Lexer, input: string) {\n\t\tthis.quotes = lexer.quotes;\n\t\tthis.separator = lexer.separator;\n\t\tthis.input = input;\n\t}\n\n\tpublic get finished() {\n\t\treturn this.position >= this.input.length;\n\t}\n\n\tpublic *[Symbol.iterator](): Iterator<Token> {\n\t\twhile (!this.finished) {\n\t\t\tyield this.getPossibleSeparator() ?? this.getPossibleQuotedArgument() ?? this.getParameter();\n\t\t}\n\t}\n\n\tprivate getPossibleSeparator(): SeparatorToken | null {\n\t\tif (this.input.startsWith(this.separator, this.position)) {\n\t\t\tthis.position += this.separator.length;\n\t\t\treturn { type: TokenType.Separator, value: this.separator };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate getPossibleQuotedArgument(): QuotedToken | null {\n\t\tfor (const [open, close] of this.quotes) {\n\t\t\tif (!this.input.startsWith(open, this.position)) continue;\n\n\t\t\tconst end = this.input.indexOf(close, this.position + open.length);\n\t\t\tif (end === -1) continue;\n\n\t\t\tconst value = this.input.slice(this.position + open.length, end);\n\t\t\tthis.position = end + close.length;\n\n\t\t\treturn { type: TokenType.Quoted, value, open, close };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate getParameter(): WordToken {\n\t\tconst index = this.input.indexOf(this.separator, this.position);\n\t\tconst value = index === -1 ? this.input.slice(this.position) : this.input.slice(this.position, index);\n\t\tthis.position += value.length;\n\t\treturn { type: TokenType.Parameter, value };\n\t}\n}\n\nexport enum TokenType {\n\tParameter,\n\tQuoted,\n\tSeparator\n}\n\nexport type Token = WordToken | QuotedToken | SeparatorToken;\n\nexport interface WordToken {\n\treadonly type: TokenType.Parameter;\n\treadonly value: string;\n}\n\nexport interface QuotedToken {\n\treadonly type: TokenType.Quoted;\n\treadonly value: string;\n\treadonly open: string;\n\treadonly close: string;\n}\n\nexport interface SeparatorToken {\n\treadonly type: TokenType.Separator;\n\treadonly value: string;\n}\n","import { QuotedParameter } from './parameters/QuotedParameter';\nimport { WordParameter } from './parameters/WordParameter';\nimport { TokenType, type Token } from './raw/TokenStream';\n\nexport class ParameterStream {\n\tprivate readonly stream: Iterable<Token>;\n\tprivate separators: string[] = [];\n\n\tpublic constructor(stream: Iterable<Token>) {\n\t\tthis.stream = stream;\n\t}\n\n\tpublic *[Symbol.iterator](): Iterator<Parameter, string[]> {\n\t\tfor (const part of this.stream) {\n\t\t\tif (part.type === TokenType.Separator) {\n\t\t\t\tthis.separators.push(part.value);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tyield part.type === TokenType.Quoted ? new QuotedParameter(this.separators, part) : new WordParameter(this.separators, part);\n\t\t\tthis.separators = [];\n\t\t}\n\n\t\treturn this.separators;\n\t}\n}\n\nexport type Parameter = QuotedParameter | WordParameter;\n","import { ParameterStream } from './streams/ParameterStream';\nimport { TokenStream } from './streams/raw/TokenStream';\n\nexport class Lexer {\n\tpublic readonly quotes: readonly [open: string, close: string][];\n\tpublic readonly separator: string;\n\n\tpublic constructor(options: Lexer.Options = {}) {\n\t\tthis.quotes = options.quotes ?? [];\n\t\tthis.separator = options.separator ?? ' ';\n\t}\n\n\tpublic run(input: string) {\n\t\treturn new ParameterStream(this.raw(input));\n\t}\n\n\tpublic raw(input: string) {\n\t\treturn new TokenStream(this, input);\n\t}\n}\n\nexport namespace Lexer {\n\texport interface Options {\n\t\tseparator?: string;\n\t\tquotes?: readonly [open: string, close: string][];\n\t}\n}\n","import type { Parameter } from '../lexer/streams/ParameterStream';\nimport type { Parser } from './Parser';\nimport type { IUnorderedStrategy } from './strategies/IUnorderedStrategy';\n\nexport class ParserResult {\n\tpublic readonly ordered: Parameter[] = [];\n\tpublic readonly flags = new Set<string>();\n\tpublic readonly options = new Map<string, string[]>();\n\tprivate readonly strategy: IUnorderedStrategy;\n\n\tpublic constructor(parser: Parser) {\n\t\tthis.strategy = parser.strategy;\n\t}\n\n\tpublic parse(parameters: Iterable<Parameter>) {\n\t\tfor (const parameter of parameters) {\n\t\t\tthis.parsePossibleFlag(parameter) || this.parsePossibleOptions(parameter) || this.parseOrdered(parameter);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprivate parsePossibleFlag(parameter: Parameter): boolean {\n\t\treturn this.strategy\n\t\t\t.matchFlag(parameter.value)\n\t\t\t.inspect((value) => this.flags.add(value))\n\t\t\t.isSome();\n\t}\n\n\tprivate parsePossibleOptions(parameter: Parameter): boolean {\n\t\treturn this.strategy\n\t\t\t.matchOption(parameter.value)\n\t\t\t.inspect(([key, value]) => {\n\t\t\t\tconst existing = this.options.get(key);\n\t\t\t\tif (existing) existing.push(value);\n\t\t\t\telse this.options.set(key, [value]);\n\t\t\t})\n\t\t\t.isSome();\n\t}\n\n\tprivate parseOrdered(parameter: Parameter): boolean {\n\t\tthis.ordered.push(parameter);\n\t\treturn true;\n\t}\n}\n","import { Option } from '@sapphire/result';\nimport type { IUnorderedStrategy } from './IUnorderedStrategy';\n\nexport class EmptyStrategy implements IUnorderedStrategy {\n\tpublic matchFlag(): Option<string> {\n\t\treturn Option.none;\n\t}\n\n\tpublic matchOption(): Option<readonly [key: string, value: string]> {\n\t\treturn Option.none;\n\t}\n}\n","import type { Parameter } from '../lexer/streams/ParameterStream';\nimport type { IUnorderedStrategy } from './strategies/IUnorderedStrategy';\nimport { ParserResult } from './ParserResult';\nimport { EmptyStrategy } from './strategies/EmptyStrategy';\n\nexport class Parser {\n\tpublic strategy: IUnorderedStrategy;\n\n\tpublic constructor(strategy?: IUnorderedStrategy) {\n\t\tthis.strategy = strategy ?? new EmptyStrategy();\n\t}\n\n\tpublic setUnorderedStrategy(strategy: IUnorderedStrategy) {\n\t\tthis.strategy = strategy;\n\t\treturn this;\n\t}\n\n\tpublic run(input: Iterable<Parameter>): ParserResult {\n\t\treturn new ParserResult(this).parse(input);\n\t}\n}\n","import { Option } from '@sapphire/result';\nimport type { IUnorderedStrategy } from './IUnorderedStrategy';\n\nexport class PrefixedStrategy implements IUnorderedStrategy {\n\tpublic readonly prefixes: readonly string[];\n\tpublic readonly separators: readonly string[];\n\n\tpublic constructor(prefixes: readonly string[], separators: readonly string[]) {\n\t\tthis.prefixes = prefixes;\n\t\tthis.separators = separators;\n\t}\n\n\tpublic matchFlag(input: string): Option<string> {\n\t\tconst prefix = this.prefixes.find((x) => input.startsWith(x));\n\n\t\t// If the prefix is missing, return None:\n\t\tif (!prefix) return Option.none;\n\n\t\t// If the separator is present, return None:\n\t\tif (this.separators.some((x) => input.includes(x, prefix.length))) return Option.none;\n\n\t\treturn Option.some(input.slice(prefix.length));\n\t}\n\n\tpublic matchOption(input: string): Option<readonly [key: string, value: string]> {\n\t\tconst prefix = this.prefixes.find((x) => input.startsWith(x));\n\n\t\t// If the prefix is missing, return None:\n\t\tif (!prefix) return Option.none;\n\n\t\tfor (const separator of this.separators) {\n\t\t\tconst index = input.indexOf(separator, prefix.length + 1);\n\n\t\t\t// If the separator is missing, skip:\n\t\t\tif (index === -1) continue;\n\n\t\t\t// If the separator is present, but has no value, return None:\n\t\t\tif (index + separator.length === input.length) return Option.none;\n\n\t\t\tconst key = input.slice(prefix.length, index);\n\t\t\tconst value = input.slice(index + separator.length);\n\t\t\treturn Option.some([key, value] as const);\n\t\t}\n\n\t\treturn Option.none;\n\t}\n}\n","import type { Parameter } from '../lexer/streams/ParameterStream';\n\n/**\n * Joins the parameters by their `leading` value, using the `value` property.\n * @seealso {@link joinRaw} for the version using `raw` instead of `value`.\n * @param parameters The parameters to join.\n * @returns The result of joining the parameters.\n */\nexport function join(parameters: readonly Parameter[]) {\n\tif (parameters.length === 0) return '';\n\tif (parameters.length === 1) return parameters[0].value;\n\n\tlet output = parameters[0].value;\n\tfor (let i = 1; i < parameters.length; i++) {\n\t\tconst parameter = parameters[i];\n\t\toutput += parameter.leading + parameter.value;\n\t}\n\n\treturn output;\n}\n\n/**\n * Joins the parameters by their `leading` value, using the `raw` property.\n * @seealso {@link join} for the version using `value` instead of `raw`.\n * @param parameters The parameters to join.\n * @returns The result of joining the parameters.\n */\nexport function joinRaw(parameters: readonly Parameter[]) {\n\tif (parameters.length === 0) return '';\n\tif (parameters.length === 1) return parameters[0].raw;\n\n\tlet output = parameters[0].raw;\n\tfor (let i = 1; i < parameters.length; i++) {\n\t\tconst parameter = parameters[i];\n\t\toutput += parameter.leading + parameter.raw;\n\t}\n\n\treturn output;\n}\n"]}
|
package/dist/esm/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/ArgumentStream.ts","../../src/lib/lexer/streams/parameters/BaseParameter.ts","../../src/lib/lexer/streams/parameters/QuotedParameter.ts","../../src/lib/lexer/streams/parameters/WordParameter.ts","../../src/lib/lexer/streams/raw/TokenStream.ts","../../src/lib/lexer/streams/ParameterStream.ts","../../src/lib/lexer/Lexer.ts","../../src/lib/parser/ParserResult.ts","../../src/lib/parser/strategies/EmptyStrategy.ts","../../src/lib/parser/Parser.ts","../../src/lib/parser/strategies/PrefixedStrategy.ts","../../src/lib/util/util.ts"],"names":["TokenType","Option"],"mappings":"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","file":"index.mjs","sourcesContent":["import { Option, Result } from '@sapphire/result';\nimport type { Parameter } from './lexer/streams/ParameterStream';\nimport type { ParserResult } from './parser/ParserResult';\n\nexport class ArgumentStream {\n\tpublic readonly results: ParserResult;\n\tpublic state: ArgumentStream.State;\n\n\tpublic constructor(results: ParserResult) {\n\t\tthis.results = results;\n\t\tthis.state = { used: new Set(), position: 0 };\n\t}\n\n\t/**\n\t * Whether or not all ordered parameters were used.\n\t */\n\tpublic get finished() {\n\t\treturn this.used === this.length;\n\t}\n\n\t/**\n\t * The amount of ordered parameters.\n\t */\n\tpublic get length() {\n\t\treturn this.results.ordered.length;\n\t}\n\n\t/**\n\t * The remaining amount of ordered parameters.\n\t */\n\tpublic get remaining() {\n\t\treturn this.length - this.used;\n\t}\n\n\t/**\n\t * The amount of ordered parameters that have been used.\n\t */\n\tpublic get used() {\n\t\treturn this.state.used.size;\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(args.single());\n\t * // Ok { value: '1' }\n\t *\n\t * console.log(args.single());\n\t * // Ok { value: '2' }\n\t *\n\t * console.log(args.single());\n\t * // Ok { value: '3' }\n\t *\n\t * console.log(args.single());\n\t * // None\n\t * ```\n\t *\n\t * @returns The value, if any.\n\t */\n\tpublic single(): Option<string> {\n\t\tif (this.finished) return Option.none;\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tthis.state.used.add(this.state.position);\n\t\treturn Option.some(this.results.ordered[this.state.position++].value);\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token, but only if it could be transformed.\n\t *\n\t * @note This does not support asynchronous results, refer to {@link singleMapAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * const parse = (value) => {\n\t * const number = Number(value);\n\t * return Number.isNaN(number) ? Option.none : Option.some(number);\n\t * };\n\t *\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // Some { value: 1 }\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // Some { value: 2 }\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // Some { value: 3 }\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // None\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate The predicate that determines the parameter's mapped value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the mapping failed. Defaults to `false`.\n\t * @returns The mapped value, if any.\n\t */\n\tpublic singleMap<T>(predicate: (value: string) => Option<T>, useAnyways = false): Option<T> {\n\t\tif (this.finished) return Option.none;\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isSome() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token, but only if it could be transformed.\n\t *\n\t * @note This is an asynchronous variant of {@link singleMap}.\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate The predicate that determines the parameter's mapped value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the mapping failed. Defaults to `false`.\n\t * @returns The mapped value, if any.\n\t */\n\tpublic async singleMapAsync<T>(predicate: (value: string) => Promise<Option<T>>, useAnyways = false): Promise<Option<T>> {\n\t\tif (this.finished) return Option.none;\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = await predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isSome() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Finds and retrieves the next unused parameter and transforms it.\n\t *\n\t * @note This is a variant of {@link findMap} that returns the errors on failure.\n\t * @note This does not support asynchronous results, refer to {@link singleParseAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * const parse = (value) => {\n\t * const number = Number(value);\n\t * return Number.isNaN(number)\n\t * ? Result.err(`Could not parse ${value} to a number`)\n\t * : Result.ok(number);\n\t * };\n\t *\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Ok { value: 1 }\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Ok { value: 2 }\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Ok { value: 3 }\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Err { error: null }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate The predicate that determines the parameter's transformed value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the transformation failed. Defaults to `false`.\n\t * @returns The transformed value, if any.\n\t */\n\tpublic singleParse<T, E>(predicate: (value: string) => Result<T, E>, useAnyways = false): Result<T, E | null> {\n\t\tif (this.finished) return Result.err(null);\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isOk() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token, but only if it could be transformed.\n\t *\n\t * @note This is an asynchronous variant of {@link singleParse}.\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate The predicate that determines the parameter's mapped value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the mapping failed. Defaults to `false`.\n\t * @returns The mapped value, if any.\n\t */\n\tpublic async singleParseAsync<T, E>(predicate: (value: string) => Promise<Result<T, E>>, useAnyways = false): Promise<Result<T, E | null>> {\n\t\tif (this.finished) return Result.err(null);\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = await predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isOk() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `true`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This does not support asynchronous results, refer to {@link findAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `true`. If such an element is found, find immediately returns a `Option.some`\n\t * with that element value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic find(predicate: (value: string) => boolean, from = this.state.position): Option<string> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn Option.some(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `true`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This is an asynchronous variant of {@link find}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `true`. If such an element is found, find immediately returns a `Option.some`\n\t * with that element value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic async findAsync(predicate: (value: string) => Promise<boolean>, from = this.state.position): Promise<Option<string>> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (await predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn Option.some(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `Some`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This does not support asynchronous results, refer to {@link findMapAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `Some`. If such an element is found, find immediately returns the returned\n\t * value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic findMap<T>(predicate: (value: string) => Option<T>, from = this.state.position): Option<T> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = predicate(parameter);\n\t\t\tif (result.isSome()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `Some`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This is an asynchronous variant of {@link findMap}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `Some`. If such an element is found, find immediately returns the returned\n\t * value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic async findMapAsync<T>(predicate: (value: string) => Promise<Option<T>>, from = this.state.position): Promise<Option<T>> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = await predicate(parameter);\n\t\t\tif (result.isSome()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Finds and retrieves the first unused parameter that could be transformed.\n\t *\n\t * @note This is a variant of {@link findMap} that returns the errors on failure.\n\t * @note This does not support asynchronous results, refer to {@link findParseAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * const parse = (value) => {\n\t * const number = Number(value);\n\t * return Number.isNaN(number)\n\t * ? Result.err(`Could not parse ${value} to a number`)\n\t * : Result.ok(number);\n\t * };\n\t *\n\t * // Suppose args are from 'ba 1 cc'.\n\t *\n\t * console.log(args.findParse(parse));\n\t * // Ok { value: 1 }\n\t *\n\t * console.log(args.findParse(parse));\n\t * // Err {\n\t * // error: [\n\t * // 'Could not parse ba to a number',\n\t * // 'Could not parse cc to a number'\n\t * // ]\n\t * // }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate `findParse` calls `predicate` once for each unused ordered parameter, in ascending order, until\n\t * it finds one where `predicate` returns `Ok`. If such an element is found, `findParse` immediately returns the\n\t * returned value. Otherwise, `findParse` returns `Result.Err` with all the returned errors.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic findParse<T, E>(predicate: (value: string) => Result<T, E>, from = this.state.position): Result<T, E[]> {\n\t\tconst errors: E[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = predicate(parameter);\n\t\t\tif (result.isOk()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result as Result.Ok<T>;\n\t\t\t}\n\n\t\t\terrors.push(result.unwrapErr());\n\t\t}\n\n\t\treturn Result.err(errors);\n\t}\n\n\t/**\n\t * Finds and retrieves the first unused parameter that could be transformed.\n\t *\n\t * @note This is a variant of {@link findMapAsync} that returns the errors on failure.\n\t * @note This is an asynchronous variant of {@link findParse}.\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate `findParse` calls `predicate` once for each unused ordered parameter, in ascending order, until\n\t * it finds one where `predicate` returns `Ok`. If such an element is found, `findParse` immediately returns the\n\t * returned value. Otherwise, `findParse` returns `Result.Err` with all the returned errors.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic async findParseAsync<T, E>(predicate: (value: string) => Promise<Result<T, E>>, from = this.state.position): Promise<Result<T, E[]>> {\n\t\tconst errors: E[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = await predicate(parameter);\n\t\t\tif (result.isOk()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result as Result.Ok<T>;\n\t\t\t}\n\n\t\t\terrors.push(result.unwrapErr());\n\t\t}\n\n\t\treturn Result.err(errors);\n\t}\n\n\t/**\n\t * Retrieves multiple unused parameters.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(join(args.many().unwrap()));\n\t * // '1 2 3'\n\t * ```\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(join(args.many(2).unwrap()));\n\t * // '1 2'\n\t * ```\n\t *\n\t * @param limit The maximum amount of parameters to retrieve, defaults to `Infinity`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The unused parameters within the range.\n\t */\n\tpublic many(limit = Infinity, from = this.state.position): Option<Parameter[]> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: Parameter[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\t// If the current parameter was already used, skip:\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\t// Mark current parameter as used, and push it to the resulting array:\n\t\t\tthis.state.used.add(i);\n\t\t\tparameters.push(this.results.ordered[i]);\n\n\t\t\t// If the parameters reached the limit, break the loop:\n\t\t\tif (parameters.length >= limit) break;\n\t\t}\n\n\t\treturn parameters.length ? Option.some(parameters) : Option.none;\n\t}\n\n\tpublic filter(predicate: (value: string) => boolean, from = this.state.position): Option<string[]> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: string[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\tpublic async filterAsync(predicate: (value: string) => Promise<boolean>, from = this.state.position): Promise<Option<string[]>> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: string[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (await predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\tpublic filterMap<T>(predicate: (value: string) => Option<T>, from = this.state.position): Option<T[]> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: T[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = predicate(parameter);\n\t\t\tresult.inspect((value) => {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(value);\n\t\t\t});\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\tpublic async filterMapAsync<T>(predicate: (value: string) => Promise<Option<T>>, from = this.state.position): Promise<Option<T[]>> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: T[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = await predicate(parameter);\n\t\t\tresult.inspect((value) => {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(value);\n\t\t\t});\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\t/**\n\t * Checks whether any of the flags were given.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '--f --g':\n\t *\n\t * console.log(args.flag('f'));\n\t * // true\n\t *\n\t * console.log(args.flag('g', 'h'));\n\t * // true\n\t *\n\t * console.log(args.flag('h'));\n\t * // false\n\t * ```\n\t *\n\t * @param keys The names of the flags to check.\n\t * @returns Whether or not any of the flags were given.\n\t */\n\tpublic flag(...keys: readonly string[]): boolean {\n\t\treturn keys.some((key) => this.results.flags.has(key));\n\t}\n\n\t/**\n\t * Gets the last value of any option. When there are multiple names, the last value of the last found name is given.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '--a=1 --b=2 --c=3'.\n\t * console.log(args.option('a'));\n\t * // Some { value: '1' }\n\t *\n\t * console.log(args.option('b', 'c'));\n\t * // Some { value: '3' }\n\t *\n\t * console.log(args.option('d'));\n\t * // None {}\n\t * ```\n\t *\n\t * @param keys The names of the options to check.\n\t * @returns The last value of the option, if any.\n\t */\n\tpublic option(...keys: readonly string[]): Option<string> {\n\t\treturn this.options(...keys).map((values) => values.at(-1)!);\n\t}\n\n\t/**\n\t * Gets all values from all options.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '--a=1 --a=1 --b=2 --c=3'.\n\t * console.log(args.option('a'));\n\t * // Some { value: ['1', '1'] }\n\t *\n\t * console.log(args.option('b', 'c'));\n\t * // Some { value: ['2', '3'] }\n\t *\n\t * console.log(args.option('d'));\n\t * // None {}\n\t * ```\n\t *\n\t * @param keys The names of the options to check.\n\t * @returns The values from all the options concatenated, if any.\n\t */\n\tpublic options(...keys: readonly string[]): Option<readonly string[]> {\n\t\tconst entries: string[] = [];\n\t\tfor (const key of keys) {\n\t\t\tconst values = this.results.options.get(key);\n\t\t\tif (values) entries.push(...values);\n\t\t}\n\n\t\treturn entries.length ? Option.some(entries) : Option.none;\n\t}\n\n\tpublic save(): ArgumentStream.State {\n\t\treturn {\n\t\t\tused: new Set(this.state.used),\n\t\t\tposition: this.state.position\n\t\t};\n\t}\n\n\tpublic restore(state: ArgumentStream.State) {\n\t\tthis.state = state;\n\t}\n\n\tpublic reset() {\n\t\tthis.restore({ used: new Set(), position: 0 });\n\t}\n}\n\nexport namespace ArgumentStream {\n\texport interface State {\n\t\tused: Set<number>;\n\t\tposition: number;\n\t}\n}\n","export abstract class BaseParameter {\n\tpublic readonly separators: readonly string[];\n\n\tpublic constructor(separators: readonly string[]) {\n\t\tthis.separators = separators;\n\t}\n\n\tpublic get leading(): string {\n\t\treturn this.separators.join('');\n\t}\n\n\tpublic abstract get raw(): string;\n}\n","import type { QuotedToken } from '../raw/TokenStream';\nimport { BaseParameter } from './BaseParameter';\n\nexport class QuotedParameter extends BaseParameter {\n\tpublic readonly value: string;\n\tpublic readonly open: string;\n\tpublic readonly close: string;\n\n\tpublic constructor(separators: readonly string[], part: Omit<QuotedToken, 'type'>) {\n\t\tsuper(separators);\n\t\tthis.value = part.value;\n\t\tthis.open = part.open;\n\t\tthis.close = part.close;\n\t}\n\n\tpublic get raw() {\n\t\treturn `${this.open}${this.value}${this.close}`;\n\t}\n}\n","import type { WordToken } from '../raw/TokenStream';\nimport { BaseParameter } from './BaseParameter';\n\nexport class WordParameter extends BaseParameter {\n\tpublic readonly value: string;\n\n\tpublic constructor(separators: readonly string[], part: Omit<WordToken, 'type'>) {\n\t\tsuper(separators);\n\t\tthis.value = part.value;\n\t}\n\n\tpublic get raw() {\n\t\treturn this.value;\n\t}\n}\n","import type { Lexer } from '../../Lexer';\n\nexport class TokenStream implements Iterable<Token> {\n\tprivate readonly input: string;\n\tprivate readonly quotes: readonly [string, string][];\n\tprivate readonly separator: string;\n\tprivate position = 0;\n\n\tpublic constructor(lexer: Lexer, input: string) {\n\t\tthis.quotes = lexer.quotes;\n\t\tthis.separator = lexer.separator;\n\t\tthis.input = input;\n\t}\n\n\tpublic get finished() {\n\t\treturn this.position >= this.input.length;\n\t}\n\n\tpublic *[Symbol.iterator](): Iterator<Token> {\n\t\twhile (!this.finished) {\n\t\t\tyield this.getPossibleSeparator() ?? this.getPossibleQuotedArgument() ?? this.getParameter();\n\t\t}\n\t}\n\n\tprivate getPossibleSeparator(): SeparatorToken | null {\n\t\tif (this.input.startsWith(this.separator, this.position)) {\n\t\t\tthis.position += this.separator.length;\n\t\t\treturn { type: TokenType.Separator, value: this.separator };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate getPossibleQuotedArgument(): QuotedToken | null {\n\t\tfor (const [open, close] of this.quotes) {\n\t\t\tif (!this.input.startsWith(open, this.position)) continue;\n\n\t\t\tconst end = this.input.indexOf(close, this.position + open.length);\n\t\t\tif (end === -1) continue;\n\n\t\t\tconst value = this.input.slice(this.position + open.length, end);\n\t\t\tthis.position = end + close.length;\n\n\t\t\treturn { type: TokenType.Quoted, value, open, close };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate getParameter(): WordToken {\n\t\tconst index = this.input.indexOf(this.separator, this.position);\n\t\tconst value = index === -1 ? this.input.slice(this.position) : this.input.slice(this.position, index);\n\t\tthis.position += value.length;\n\t\treturn { type: TokenType.Parameter, value };\n\t}\n}\n\nexport enum TokenType {\n\tParameter,\n\tQuoted,\n\tSeparator\n}\n\nexport type Token = WordToken | QuotedToken | SeparatorToken;\n\nexport interface WordToken {\n\treadonly type: TokenType.Parameter;\n\treadonly value: string;\n}\n\nexport interface QuotedToken {\n\treadonly type: TokenType.Quoted;\n\treadonly value: string;\n\treadonly open: string;\n\treadonly close: string;\n}\n\nexport interface SeparatorToken {\n\treadonly type: TokenType.Separator;\n\treadonly value: string;\n}\n","import { QuotedParameter } from './parameters/QuotedParameter';\nimport { WordParameter } from './parameters/WordParameter';\nimport { TokenType, type Token } from './raw/TokenStream';\n\nexport class ParameterStream {\n\tprivate readonly stream: Iterable<Token>;\n\tprivate separators: string[] = [];\n\n\tpublic constructor(stream: Iterable<Token>) {\n\t\tthis.stream = stream;\n\t}\n\n\tpublic *[Symbol.iterator](): Iterator<Parameter, string[]> {\n\t\tfor (const part of this.stream) {\n\t\t\tif (part.type === TokenType.Separator) {\n\t\t\t\tthis.separators.push(part.value);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tyield part.type === TokenType.Quoted ? new QuotedParameter(this.separators, part) : new WordParameter(this.separators, part);\n\t\t\tthis.separators = [];\n\t\t}\n\n\t\treturn this.separators;\n\t}\n}\n\nexport type Parameter = QuotedParameter | WordParameter;\n","import { ParameterStream } from './streams/ParameterStream';\nimport { TokenStream } from './streams/raw/TokenStream';\n\nexport class Lexer {\n\tpublic readonly quotes: readonly [open: string, close: string][];\n\tpublic readonly separator: string;\n\n\tpublic constructor(options: Lexer.Options = {}) {\n\t\tthis.quotes = options.quotes ?? [];\n\t\tthis.separator = options.separator ?? ' ';\n\t}\n\n\tpublic run(input: string) {\n\t\treturn new ParameterStream(this.raw(input));\n\t}\n\n\tpublic raw(input: string) {\n\t\treturn new TokenStream(this, input);\n\t}\n}\n\nexport namespace Lexer {\n\texport interface Options {\n\t\tseparator?: string;\n\t\tquotes?: readonly [open: string, close: string][];\n\t}\n}\n","import type { Parameter } from '../lexer/streams/ParameterStream';\nimport type { Parser } from './Parser';\nimport type { IUnorderedStrategy } from './strategies/IUnorderedStrategy';\n\nexport class ParserResult {\n\tpublic readonly ordered: Parameter[] = [];\n\tpublic readonly flags = new Set<string>();\n\tpublic readonly options = new Map<string, string[]>();\n\tprivate readonly strategy: IUnorderedStrategy;\n\n\tpublic constructor(parser: Parser) {\n\t\tthis.strategy = parser.strategy;\n\t}\n\n\tpublic parse(parameters: Iterable<Parameter>) {\n\t\tfor (const parameter of parameters) {\n\t\t\tthis.parsePossibleFlag(parameter) || this.parsePossibleOptions(parameter) || this.parseOrdered(parameter);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprivate parsePossibleFlag(parameter: Parameter): boolean {\n\t\treturn this.strategy\n\t\t\t.matchFlag(parameter.value)\n\t\t\t.inspect((value) => this.flags.add(value))\n\t\t\t.isSome();\n\t}\n\n\tprivate parsePossibleOptions(parameter: Parameter): boolean {\n\t\treturn this.strategy\n\t\t\t.matchOption(parameter.value)\n\t\t\t.inspect(([key, value]) => {\n\t\t\t\tconst existing = this.options.get(key);\n\t\t\t\tif (existing) existing.push(value);\n\t\t\t\telse this.options.set(key, [value]);\n\t\t\t})\n\t\t\t.isSome();\n\t}\n\n\tprivate parseOrdered(parameter: Parameter): boolean {\n\t\tthis.ordered.push(parameter);\n\t\treturn true;\n\t}\n}\n","import { Option } from '@sapphire/result';\nimport type { IUnorderedStrategy } from './IUnorderedStrategy';\n\nexport class EmptyStrategy implements IUnorderedStrategy {\n\tpublic matchFlag(): Option<string> {\n\t\treturn Option.none;\n\t}\n\n\tpublic matchOption(): Option<readonly [key: string, value: string]> {\n\t\treturn Option.none;\n\t}\n}\n","import type { Parameter } from '../lexer/streams/ParameterStream';\nimport type { IUnorderedStrategy } from './strategies/IUnorderedStrategy';\nimport { ParserResult } from './ParserResult';\nimport { EmptyStrategy } from './strategies/EmptyStrategy';\n\nexport class Parser {\n\tpublic strategy: IUnorderedStrategy;\n\n\tpublic constructor(strategy?: IUnorderedStrategy) {\n\t\tthis.strategy = strategy ?? new EmptyStrategy();\n\t}\n\n\tpublic setUnorderedStrategy(strategy: IUnorderedStrategy) {\n\t\tthis.strategy = strategy;\n\t\treturn this;\n\t}\n\n\tpublic run(input: Iterable<Parameter>): ParserResult {\n\t\treturn new ParserResult(this).parse(input);\n\t}\n}\n","import { Option } from '@sapphire/result';\nimport type { IUnorderedStrategy } from './IUnorderedStrategy';\n\nexport class PrefixedStrategy implements IUnorderedStrategy {\n\tpublic readonly prefixes: readonly string[];\n\tpublic readonly separators: readonly string[];\n\n\tpublic constructor(prefixes: readonly string[], separators: readonly string[]) {\n\t\tthis.prefixes = prefixes;\n\t\tthis.separators = separators;\n\t}\n\n\tpublic matchFlag(input: string): Option<string> {\n\t\tconst prefix = this.prefixes.find((x) => input.startsWith(x));\n\n\t\t// If the prefix is missing, return None:\n\t\tif (!prefix) return Option.none;\n\n\t\t// If the separator is present, return None:\n\t\tif (this.separators.some((x) => input.includes(x, prefix.length))) return Option.none;\n\n\t\treturn Option.some(input.slice(prefix.length));\n\t}\n\n\tpublic matchOption(input: string): Option<readonly [key: string, value: string]> {\n\t\tconst prefix = this.prefixes.find((x) => input.startsWith(x));\n\n\t\t// If the prefix is missing, return None:\n\t\tif (!prefix) return Option.none;\n\n\t\tfor (const separator of this.separators) {\n\t\t\tconst index = input.indexOf(separator, prefix.length + 1);\n\n\t\t\t// If the separator is missing, skip:\n\t\t\tif (index === -1) continue;\n\n\t\t\t// If the separator is present, but has no value, return None:\n\t\t\tif (index + separator.length === input.length) return Option.none;\n\n\t\t\tconst key = input.slice(prefix.length, index);\n\t\t\tconst value = input.slice(index + separator.length);\n\t\t\treturn Option.some([key, value] as const);\n\t\t}\n\n\t\treturn Option.none;\n\t}\n}\n","import type { Parameter } from '../lexer/streams/ParameterStream';\n\n/**\n * Joins the parameters by their `leading` value, using the `value` property.\n * @seealso {@link joinRaw} for the version using `raw` instead of `value`.\n * @param parameters The parameters to join.\n * @returns The result of joining the parameters.\n */\nexport function join(parameters: readonly Parameter[]) {\n\tif (parameters.length === 0) return '';\n\tif (parameters.length === 1) return parameters[0].value;\n\n\tlet output = parameters[0].value;\n\tfor (let i = 1; i < parameters.length; i++) {\n\t\tconst parameter = parameters[i];\n\t\toutput += parameter.leading + parameter.value;\n\t}\n\n\treturn output;\n}\n\n/**\n * Joins the parameters by their `leading` value, using the `raw` property.\n * @seealso {@link join} for the version using `value` instead of `raw`.\n * @param parameters The parameters to join.\n * @returns The result of joining the parameters.\n */\nexport function joinRaw(parameters: readonly Parameter[]) {\n\tif (parameters.length === 0) return '';\n\tif (parameters.length === 1) return parameters[0].raw;\n\n\tlet output = parameters[0].raw;\n\tfor (let i = 1; i < parameters.length; i++) {\n\t\tconst parameter = parameters[i];\n\t\toutput += parameter.leading + parameter.raw;\n\t}\n\n\treturn output;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/lib/ArgumentStream.ts","../../src/lib/lexer/streams/parameters/BaseParameter.ts","../../src/lib/lexer/streams/parameters/QuotedParameter.ts","../../src/lib/lexer/streams/parameters/WordParameter.ts","../../src/lib/lexer/streams/raw/TokenStream.ts","../../src/lib/lexer/streams/ParameterStream.ts","../../src/lib/lexer/Lexer.ts","../../src/lib/parser/ParserResult.ts","../../src/lib/parser/strategies/EmptyStrategy.ts","../../src/lib/parser/Parser.ts","../../src/lib/parser/strategies/PrefixedStrategy.ts","../../src/lib/util/util.ts"],"names":["TokenType","Option"],"mappings":"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","file":"index.mjs","sourcesContent":["import { Option, Result } from '@sapphire/result';\nimport type { Parameter } from './lexer/streams/ParameterStream';\nimport type { ParserResult } from './parser/ParserResult';\n\nexport class ArgumentStream {\n\tpublic readonly results: ParserResult;\n\tpublic state: ArgumentStream.State;\n\n\tpublic constructor(results: ParserResult) {\n\t\tthis.results = results;\n\t\tthis.state = { used: new Set(), position: 0 };\n\t}\n\n\t/**\n\t * Whether or not all ordered parameters were used.\n\t */\n\tpublic get finished() {\n\t\treturn this.used === this.length;\n\t}\n\n\t/**\n\t * The amount of ordered parameters.\n\t */\n\tpublic get length() {\n\t\treturn this.results.ordered.length;\n\t}\n\n\t/**\n\t * The remaining amount of ordered parameters.\n\t */\n\tpublic get remaining() {\n\t\treturn this.length - this.used;\n\t}\n\n\t/**\n\t * The amount of ordered parameters that have been used.\n\t */\n\tpublic get used() {\n\t\treturn this.state.used.size;\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(args.single());\n\t * // Ok { value: '1' }\n\t *\n\t * console.log(args.single());\n\t * // Ok { value: '2' }\n\t *\n\t * console.log(args.single());\n\t * // Ok { value: '3' }\n\t *\n\t * console.log(args.single());\n\t * // None\n\t * ```\n\t *\n\t * @returns The value, if any.\n\t */\n\tpublic single(): Option<string> {\n\t\tif (this.finished) return Option.none;\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tthis.state.used.add(this.state.position);\n\t\treturn Option.some(this.results.ordered[this.state.position++].value);\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token, but only if it could be transformed.\n\t *\n\t * @note This does not support asynchronous results, refer to {@link singleMapAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * const parse = (value) => {\n\t * const number = Number(value);\n\t * return Number.isNaN(number) ? Option.none : Option.some(number);\n\t * };\n\t *\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // Some { value: 1 }\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // Some { value: 2 }\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // Some { value: 3 }\n\t *\n\t * console.log(args.singleMap(parse));\n\t * // None\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate The predicate that determines the parameter's mapped value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the mapping failed. Defaults to `false`.\n\t * @returns The mapped value, if any.\n\t */\n\tpublic singleMap<T>(predicate: (value: string) => Option<T>, useAnyways = false): Option<T> {\n\t\tif (this.finished) return Option.none;\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isSome() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token, but only if it could be transformed.\n\t *\n\t * @note This is an asynchronous variant of {@link singleMap}.\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate The predicate that determines the parameter's mapped value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the mapping failed. Defaults to `false`.\n\t * @returns The mapped value, if any.\n\t */\n\tpublic async singleMapAsync<T>(predicate: (value: string) => Promise<Option<T>>, useAnyways = false): Promise<Option<T>> {\n\t\tif (this.finished) return Option.none;\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = await predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isSome() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Finds and retrieves the next unused parameter and transforms it.\n\t *\n\t * @note This is a variant of {@link findMap} that returns the errors on failure.\n\t * @note This does not support asynchronous results, refer to {@link singleParseAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * const parse = (value) => {\n\t * const number = Number(value);\n\t * return Number.isNaN(number)\n\t * ? Result.err(`Could not parse ${value} to a number`)\n\t * : Result.ok(number);\n\t * };\n\t *\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Ok { value: 1 }\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Ok { value: 2 }\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Ok { value: 3 }\n\t *\n\t * console.log(args.singleParse(parse));\n\t * // Err { error: null }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate The predicate that determines the parameter's transformed value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the transformation failed. Defaults to `false`.\n\t * @returns The transformed value, if any.\n\t */\n\tpublic singleParse<T, E>(predicate: (value: string) => Result<T, E>, useAnyways = false): Result<T, E | null> {\n\t\tif (this.finished) return Result.err(null);\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isOk() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Retrieves the value of the next unused ordered token, but only if it could be transformed.\n\t *\n\t * @note This is an asynchronous variant of {@link singleParse}.\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate The predicate that determines the parameter's mapped value, or nothing if failed.\n\t * @param useAnyways Whether to consider the parameter used even if the mapping failed. Defaults to `false`.\n\t * @returns The mapped value, if any.\n\t */\n\tpublic async singleParseAsync<T, E>(predicate: (value: string) => Promise<Result<T, E>>, useAnyways = false): Promise<Result<T, E | null>> {\n\t\tif (this.finished) return Result.err(null);\n\n\t\twhile (this.state.used.has(this.state.position)) {\n\t\t\t++this.state.position;\n\t\t}\n\n\t\tconst result = await predicate(this.results.ordered[this.state.position].value);\n\t\tif (result.isOk() || useAnyways) {\n\t\t\tthis.state.used.add(this.state.position);\n\t\t\t++this.state.position;\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `true`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This does not support asynchronous results, refer to {@link findAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `true`. If such an element is found, find immediately returns a `Option.some`\n\t * with that element value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic find(predicate: (value: string) => boolean, from = this.state.position): Option<string> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn Option.some(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `true`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This is an asynchronous variant of {@link find}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `true`. If such an element is found, find immediately returns a `Option.some`\n\t * with that element value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic async findAsync(predicate: (value: string) => Promise<boolean>, from = this.state.position): Promise<Option<string>> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (await predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn Option.some(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `Some`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This does not support asynchronous results, refer to {@link findMapAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `Some`. If such an element is found, find immediately returns the returned\n\t * value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic findMap<T>(predicate: (value: string) => Option<T>, from = this.state.position): Option<T> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = predicate(parameter);\n\t\t\tif (result.isSome()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Returns the value of the first element in the array within `Option.some` where `predicate` returns `Some`, and\n\t * `Option.none` otherwise.\n\t *\n\t * @note This is an asynchronous variant of {@link findMap}.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Suppose args are from 'ba aa cc'.\n\t *\n\t * console.log(args.find((value) => value.startsWith('a')));\n\t * // Some { value: 'aa' }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @param predicate find calls `predicate` once for each unused ordered parameter, in ascending order, until it\n\t * finds one where `predicate` returns `Some`. If such an element is found, find immediately returns the returned\n\t * value. Otherwise, find returns `Option.none`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic async findMapAsync<T>(predicate: (value: string) => Promise<Option<T>>, from = this.state.position): Promise<Option<T>> {\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = await predicate(parameter);\n\t\t\tif (result.isSome()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result;\n\t\t\t}\n\t\t}\n\n\t\treturn Option.none;\n\t}\n\n\t/**\n\t * Finds and retrieves the first unused parameter that could be transformed.\n\t *\n\t * @note This is a variant of {@link findMap} that returns the errors on failure.\n\t * @note This does not support asynchronous results, refer to {@link findParseAsync}.\n\t *\n\t * @example\n\t * ```typescript\n\t * const parse = (value) => {\n\t * const number = Number(value);\n\t * return Number.isNaN(number)\n\t * ? Result.err(`Could not parse ${value} to a number`)\n\t * : Result.ok(number);\n\t * };\n\t *\n\t * // Suppose args are from 'ba 1 cc'.\n\t *\n\t * console.log(args.findParse(parse));\n\t * // Ok { value: 1 }\n\t *\n\t * console.log(args.findParse(parse));\n\t * // Err {\n\t * // error: [\n\t * // 'Could not parse ba to a number',\n\t * // 'Could not parse cc to a number'\n\t * // ]\n\t * // }\n\t * ```\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate `findParse` calls `predicate` once for each unused ordered parameter, in ascending order, until\n\t * it finds one where `predicate` returns `Ok`. If such an element is found, `findParse` immediately returns the\n\t * returned value. Otherwise, `findParse` returns `Result.Err` with all the returned errors.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic findParse<T, E>(predicate: (value: string) => Result<T, E>, from = this.state.position): Result<T, E[]> {\n\t\tconst errors: E[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = predicate(parameter);\n\t\t\tif (result.isOk()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result as Result.Ok<T>;\n\t\t\t}\n\n\t\t\terrors.push(result.unwrapErr());\n\t\t}\n\n\t\treturn Result.err(errors);\n\t}\n\n\t/**\n\t * Finds and retrieves the first unused parameter that could be transformed.\n\t *\n\t * @note This is a variant of {@link findMapAsync} that returns the errors on failure.\n\t * @note This is an asynchronous variant of {@link findParse}.\n\t *\n\t * @typeparam T The output type.\n\t * @typeparam E The error type.\n\t * @param predicate `findParse` calls `predicate` once for each unused ordered parameter, in ascending order, until\n\t * it finds one where `predicate` returns `Ok`. If such an element is found, `findParse` immediately returns the\n\t * returned value. Otherwise, `findParse` returns `Result.Err` with all the returned errors.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The found parameter's value.\n\t */\n\tpublic async findParseAsync<T, E>(predicate: (value: string) => Promise<Result<T, E>>, from = this.state.position): Promise<Result<T, E[]>> {\n\t\tconst errors: E[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = await predicate(parameter);\n\t\t\tif (result.isOk()) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\treturn result as Result.Ok<T>;\n\t\t\t}\n\n\t\t\terrors.push(result.unwrapErr());\n\t\t}\n\n\t\treturn Result.err(errors);\n\t}\n\n\t/**\n\t * Retrieves multiple unused parameters.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(join(args.many().unwrap()));\n\t * // '1 2 3'\n\t * ```\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '1 2 3':\n\t *\n\t * console.log(join(args.many(2).unwrap()));\n\t * // '1 2'\n\t * ```\n\t *\n\t * @param limit The maximum amount of parameters to retrieve, defaults to `Infinity`.\n\t * @param from The position where to start looking for unused parameters, defaults to current position.\n\t * @returns The unused parameters within the range.\n\t */\n\tpublic many(limit = Infinity, from = this.state.position): Option<Parameter[]> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: Parameter[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\t// If the current parameter was already used, skip:\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\t// Mark current parameter as used, and push it to the resulting array:\n\t\t\tthis.state.used.add(i);\n\t\t\tparameters.push(this.results.ordered[i]);\n\n\t\t\t// If the parameters reached the limit, break the loop:\n\t\t\tif (parameters.length >= limit) break;\n\t\t}\n\n\t\treturn parameters.length ? Option.some(parameters) : Option.none;\n\t}\n\n\tpublic filter(predicate: (value: string) => boolean, from = this.state.position): Option<string[]> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: string[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\tpublic async filterAsync(predicate: (value: string) => Promise<boolean>, from = this.state.position): Promise<Option<string[]>> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: string[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tif (await predicate(parameter)) {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(parameter);\n\t\t\t}\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\tpublic filterMap<T>(predicate: (value: string) => Option<T>, from = this.state.position): Option<T[]> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: T[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = predicate(parameter);\n\t\t\tresult.inspect((value) => {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(value);\n\t\t\t});\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\tpublic async filterMapAsync<T>(predicate: (value: string) => Promise<Option<T>>, from = this.state.position): Promise<Option<T[]>> {\n\t\tif (this.finished) return Option.none;\n\n\t\tconst parameters: T[] = [];\n\t\tfor (let i = from; i < this.length; ++i) {\n\t\t\tif (this.state.used.has(i)) continue;\n\n\t\t\tconst parameter = this.results.ordered[i].value;\n\t\t\tconst result = await predicate(parameter);\n\t\t\tresult.inspect((value) => {\n\t\t\t\tthis.state.used.add(i);\n\t\t\t\tparameters.push(value);\n\t\t\t});\n\t\t}\n\n\t\treturn Option.some(parameters);\n\t}\n\n\t/**\n\t * Checks whether any of the flags were given.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '--f --g':\n\t *\n\t * console.log(args.flag('f'));\n\t * // true\n\t *\n\t * console.log(args.flag('g', 'h'));\n\t * // true\n\t *\n\t * console.log(args.flag('h'));\n\t * // false\n\t * ```\n\t *\n\t * @param keys The names of the flags to check.\n\t * @returns Whether or not any of the flags were given.\n\t */\n\tpublic flag(...keys: readonly string[]): boolean {\n\t\treturn keys.some((key) => this.results.flags.has(key));\n\t}\n\n\t/**\n\t * Gets the last value of any option. When there are multiple names, the last value of the last found name is given.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '--a=1 --b=2 --c=3'.\n\t * console.log(args.option('a'));\n\t * // Some { value: '1' }\n\t *\n\t * console.log(args.option('b', 'c'));\n\t * // Some { value: '3' }\n\t *\n\t * console.log(args.option('d'));\n\t * // None {}\n\t * ```\n\t *\n\t * @param keys The names of the options to check.\n\t * @returns The last value of the option, if any.\n\t */\n\tpublic option(...keys: readonly string[]): Option<string> {\n\t\treturn this.options(...keys).map((values) => values.at(-1)!);\n\t}\n\n\t/**\n\t * Gets all values from all options.\n\t *\n\t * @example\n\t * ```typescript\n\t * // Assume args are '--a=1 --a=1 --b=2 --c=3'.\n\t * console.log(args.option('a'));\n\t * // Some { value: ['1', '1'] }\n\t *\n\t * console.log(args.option('b', 'c'));\n\t * // Some { value: ['2', '3'] }\n\t *\n\t * console.log(args.option('d'));\n\t * // None {}\n\t * ```\n\t *\n\t * @param keys The names of the options to check.\n\t * @returns The values from all the options concatenated, if any.\n\t */\n\tpublic options(...keys: readonly string[]): Option<readonly string[]> {\n\t\tconst entries: string[] = [];\n\t\tfor (const key of keys) {\n\t\t\tconst values = this.results.options.get(key);\n\t\t\tif (values) entries.push(...values);\n\t\t}\n\n\t\treturn entries.length ? Option.some(entries) : Option.none;\n\t}\n\n\tpublic save(): ArgumentStream.State {\n\t\treturn {\n\t\t\tused: new Set(this.state.used),\n\t\t\tposition: this.state.position\n\t\t};\n\t}\n\n\tpublic restore(state: ArgumentStream.State) {\n\t\tthis.state = state;\n\t}\n\n\tpublic reset() {\n\t\tthis.restore({ used: new Set(), position: 0 });\n\t}\n}\n\nexport namespace ArgumentStream {\n\texport interface State {\n\t\tused: Set<number>;\n\t\tposition: number;\n\t}\n}\n","export abstract class BaseParameter {\n\tpublic readonly separators: readonly string[];\n\n\tpublic constructor(separators: readonly string[]) {\n\t\tthis.separators = separators;\n\t}\n\n\tpublic get leading(): string {\n\t\treturn this.separators.join('');\n\t}\n\n\tpublic abstract get raw(): string;\n}\n","import type { QuotedToken } from '../raw/TokenStream';\nimport { BaseParameter } from './BaseParameter';\n\nexport class QuotedParameter extends BaseParameter {\n\tpublic readonly value: string;\n\tpublic readonly open: string;\n\tpublic readonly close: string;\n\n\tpublic constructor(separators: readonly string[], part: Omit<QuotedToken, 'type'>) {\n\t\tsuper(separators);\n\t\tthis.value = part.value;\n\t\tthis.open = part.open;\n\t\tthis.close = part.close;\n\t}\n\n\tpublic get raw() {\n\t\treturn `${this.open}${this.value}${this.close}`;\n\t}\n}\n","import type { WordToken } from '../raw/TokenStream';\nimport { BaseParameter } from './BaseParameter';\n\nexport class WordParameter extends BaseParameter {\n\tpublic readonly value: string;\n\n\tpublic constructor(separators: readonly string[], part: Omit<WordToken, 'type'>) {\n\t\tsuper(separators);\n\t\tthis.value = part.value;\n\t}\n\n\tpublic get raw() {\n\t\treturn this.value;\n\t}\n}\n","import type { Lexer } from '../../Lexer';\n\nexport class TokenStream implements Iterable<Token> {\n\tprivate readonly input: string;\n\tprivate readonly quotes: readonly [string, string][];\n\tprivate readonly separator: string;\n\tprivate position = 0;\n\n\tpublic constructor(lexer: Lexer, input: string) {\n\t\tthis.quotes = lexer.quotes;\n\t\tthis.separator = lexer.separator;\n\t\tthis.input = input;\n\t}\n\n\tpublic get finished() {\n\t\treturn this.position >= this.input.length;\n\t}\n\n\tpublic *[Symbol.iterator](): Iterator<Token> {\n\t\twhile (!this.finished) {\n\t\t\tyield this.getPossibleSeparator() ?? this.getPossibleQuotedArgument() ?? this.getParameter();\n\t\t}\n\t}\n\n\tprivate getPossibleSeparator(): SeparatorToken | null {\n\t\tif (this.input.startsWith(this.separator, this.position)) {\n\t\t\tthis.position += this.separator.length;\n\t\t\treturn { type: TokenType.Separator, value: this.separator };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate getPossibleQuotedArgument(): QuotedToken | null {\n\t\tfor (const [open, close] of this.quotes) {\n\t\t\tif (!this.input.startsWith(open, this.position)) continue;\n\n\t\t\tconst end = this.input.indexOf(close, this.position + open.length);\n\t\t\tif (end === -1) continue;\n\n\t\t\tconst value = this.input.slice(this.position + open.length, end);\n\t\t\tthis.position = end + close.length;\n\n\t\t\treturn { type: TokenType.Quoted, value, open, close };\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tprivate getParameter(): WordToken {\n\t\tconst index = this.input.indexOf(this.separator, this.position);\n\t\tconst value = index === -1 ? this.input.slice(this.position) : this.input.slice(this.position, index);\n\t\tthis.position += value.length;\n\t\treturn { type: TokenType.Parameter, value };\n\t}\n}\n\nexport enum TokenType {\n\tParameter,\n\tQuoted,\n\tSeparator\n}\n\nexport type Token = WordToken | QuotedToken | SeparatorToken;\n\nexport interface WordToken {\n\treadonly type: TokenType.Parameter;\n\treadonly value: string;\n}\n\nexport interface QuotedToken {\n\treadonly type: TokenType.Quoted;\n\treadonly value: string;\n\treadonly open: string;\n\treadonly close: string;\n}\n\nexport interface SeparatorToken {\n\treadonly type: TokenType.Separator;\n\treadonly value: string;\n}\n","import { QuotedParameter } from './parameters/QuotedParameter';\nimport { WordParameter } from './parameters/WordParameter';\nimport { TokenType, type Token } from './raw/TokenStream';\n\nexport class ParameterStream {\n\tprivate readonly stream: Iterable<Token>;\n\tprivate separators: string[] = [];\n\n\tpublic constructor(stream: Iterable<Token>) {\n\t\tthis.stream = stream;\n\t}\n\n\tpublic *[Symbol.iterator](): Iterator<Parameter, string[]> {\n\t\tfor (const part of this.stream) {\n\t\t\tif (part.type === TokenType.Separator) {\n\t\t\t\tthis.separators.push(part.value);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tyield part.type === TokenType.Quoted ? new QuotedParameter(this.separators, part) : new WordParameter(this.separators, part);\n\t\t\tthis.separators = [];\n\t\t}\n\n\t\treturn this.separators;\n\t}\n}\n\nexport type Parameter = QuotedParameter | WordParameter;\n","import { ParameterStream } from './streams/ParameterStream';\nimport { TokenStream } from './streams/raw/TokenStream';\n\nexport class Lexer {\n\tpublic readonly quotes: readonly [open: string, close: string][];\n\tpublic readonly separator: string;\n\n\tpublic constructor(options: Lexer.Options = {}) {\n\t\tthis.quotes = options.quotes ?? [];\n\t\tthis.separator = options.separator ?? ' ';\n\t}\n\n\tpublic run(input: string) {\n\t\treturn new ParameterStream(this.raw(input));\n\t}\n\n\tpublic raw(input: string) {\n\t\treturn new TokenStream(this, input);\n\t}\n}\n\nexport namespace Lexer {\n\texport interface Options {\n\t\tseparator?: string;\n\t\tquotes?: readonly [open: string, close: string][];\n\t}\n}\n","import type { Parameter } from '../lexer/streams/ParameterStream';\nimport type { Parser } from './Parser';\nimport type { IUnorderedStrategy } from './strategies/IUnorderedStrategy';\n\nexport class ParserResult {\n\tpublic readonly ordered: Parameter[] = [];\n\tpublic readonly flags = new Set<string>();\n\tpublic readonly options = new Map<string, string[]>();\n\tprivate readonly strategy: IUnorderedStrategy;\n\n\tpublic constructor(parser: Parser) {\n\t\tthis.strategy = parser.strategy;\n\t}\n\n\tpublic parse(parameters: Iterable<Parameter>) {\n\t\tfor (const parameter of parameters) {\n\t\t\tthis.parsePossibleFlag(parameter) || this.parsePossibleOptions(parameter) || this.parseOrdered(parameter);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tprivate parsePossibleFlag(parameter: Parameter): boolean {\n\t\treturn this.strategy\n\t\t\t.matchFlag(parameter.value)\n\t\t\t.inspect((value) => this.flags.add(value))\n\t\t\t.isSome();\n\t}\n\n\tprivate parsePossibleOptions(parameter: Parameter): boolean {\n\t\treturn this.strategy\n\t\t\t.matchOption(parameter.value)\n\t\t\t.inspect(([key, value]) => {\n\t\t\t\tconst existing = this.options.get(key);\n\t\t\t\tif (existing) existing.push(value);\n\t\t\t\telse this.options.set(key, [value]);\n\t\t\t})\n\t\t\t.isSome();\n\t}\n\n\tprivate parseOrdered(parameter: Parameter): boolean {\n\t\tthis.ordered.push(parameter);\n\t\treturn true;\n\t}\n}\n","import { Option } from '@sapphire/result';\nimport type { IUnorderedStrategy } from './IUnorderedStrategy';\n\nexport class EmptyStrategy implements IUnorderedStrategy {\n\tpublic matchFlag(): Option<string> {\n\t\treturn Option.none;\n\t}\n\n\tpublic matchOption(): Option<readonly [key: string, value: string]> {\n\t\treturn Option.none;\n\t}\n}\n","import type { Parameter } from '../lexer/streams/ParameterStream';\nimport type { IUnorderedStrategy } from './strategies/IUnorderedStrategy';\nimport { ParserResult } from './ParserResult';\nimport { EmptyStrategy } from './strategies/EmptyStrategy';\n\nexport class Parser {\n\tpublic strategy: IUnorderedStrategy;\n\n\tpublic constructor(strategy?: IUnorderedStrategy) {\n\t\tthis.strategy = strategy ?? new EmptyStrategy();\n\t}\n\n\tpublic setUnorderedStrategy(strategy: IUnorderedStrategy) {\n\t\tthis.strategy = strategy;\n\t\treturn this;\n\t}\n\n\tpublic run(input: Iterable<Parameter>): ParserResult {\n\t\treturn new ParserResult(this).parse(input);\n\t}\n}\n","import { Option } from '@sapphire/result';\nimport type { IUnorderedStrategy } from './IUnorderedStrategy';\n\nexport class PrefixedStrategy implements IUnorderedStrategy {\n\tpublic readonly prefixes: readonly string[];\n\tpublic readonly separators: readonly string[];\n\n\tpublic constructor(prefixes: readonly string[], separators: readonly string[]) {\n\t\tthis.prefixes = prefixes;\n\t\tthis.separators = separators;\n\t}\n\n\tpublic matchFlag(input: string): Option<string> {\n\t\tconst prefix = this.prefixes.find((x) => input.startsWith(x));\n\n\t\t// If the prefix is missing, return None:\n\t\tif (!prefix) return Option.none;\n\n\t\t// If the separator is present, return None:\n\t\tif (this.separators.some((x) => input.includes(x, prefix.length))) return Option.none;\n\n\t\treturn Option.some(input.slice(prefix.length));\n\t}\n\n\tpublic matchOption(input: string): Option<readonly [key: string, value: string]> {\n\t\tconst prefix = this.prefixes.find((x) => input.startsWith(x));\n\n\t\t// If the prefix is missing, return None:\n\t\tif (!prefix) return Option.none;\n\n\t\tfor (const separator of this.separators) {\n\t\t\tconst index = input.indexOf(separator, prefix.length + 1);\n\n\t\t\t// If the separator is missing, skip:\n\t\t\tif (index === -1) continue;\n\n\t\t\t// If the separator is present, but has no value, return None:\n\t\t\tif (index + separator.length === input.length) return Option.none;\n\n\t\t\tconst key = input.slice(prefix.length, index);\n\t\t\tconst value = input.slice(index + separator.length);\n\t\t\treturn Option.some([key, value] as const);\n\t\t}\n\n\t\treturn Option.none;\n\t}\n}\n","import type { Parameter } from '../lexer/streams/ParameterStream';\n\n/**\n * Joins the parameters by their `leading` value, using the `value` property.\n * @seealso {@link joinRaw} for the version using `raw` instead of `value`.\n * @param parameters The parameters to join.\n * @returns The result of joining the parameters.\n */\nexport function join(parameters: readonly Parameter[]) {\n\tif (parameters.length === 0) return '';\n\tif (parameters.length === 1) return parameters[0].value;\n\n\tlet output = parameters[0].value;\n\tfor (let i = 1; i < parameters.length; i++) {\n\t\tconst parameter = parameters[i];\n\t\toutput += parameter.leading + parameter.value;\n\t}\n\n\treturn output;\n}\n\n/**\n * Joins the parameters by their `leading` value, using the `raw` property.\n * @seealso {@link join} for the version using `value` instead of `raw`.\n * @param parameters The parameters to join.\n * @returns The result of joining the parameters.\n */\nexport function joinRaw(parameters: readonly Parameter[]) {\n\tif (parameters.length === 0) return '';\n\tif (parameters.length === 1) return parameters[0].raw;\n\n\tlet output = parameters[0].raw;\n\tfor (let i = 1; i < parameters.length; i++) {\n\t\tconst parameter = parameters[i];\n\t\toutput += parameter.leading + parameter.raw;\n\t}\n\n\treturn output;\n}\n"]}
|
|
@@ -1887,7 +1887,7 @@ var SapphireLexure = (function (exports) {
|
|
|
1887
1887
|
var Option = _Option;
|
|
1888
1888
|
var { some, none } = Option;
|
|
1889
1889
|
function resolve2(value) {
|
|
1890
|
-
if (value === null || value ===
|
|
1890
|
+
if (value === null || value === undefined) return none;
|
|
1891
1891
|
if (Option.isOption(value)) return value;
|
|
1892
1892
|
return some(value);
|
|
1893
1893
|
}
|