UNPKG

@sapphire/plugin-api

Version:

Plugin for @sapphire/framework to expose a REST API

1 lines 3.02 kB
{"version":3,"sources":["../../../../../src/lib/structures/router/RouterNode.ts"],"names":[],"mappings":";;;AAAA,IAAA,QAAA;AAKO,IAAM,WAAA,GAAN,MAAM,WAAW,CAAA;AAAA,EAWhB,YAAY,MAAsB,EAAA;AAPzC;AAAA;AAAA;AAAA,IAAgB,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AAKhB;AAAA;AAAA;AAAA,IAAS,YAAA,CAAA,IAAA,EAAA,QAAA,EAAW,IAAI,UAA8B,EAAA,CAAA;AAGrD,IAAA,IAAA,CAAK,MAAS,GAAA,MAAA;AAAA;AACf,EAEA,IAAW,IAAO,GAAA;AACjB,IAAA,OAAO,KAAK,MAAO,CAAA,IAAA;AAAA;AACpB,EAEO,kBAAkB,KAAkD,EAAA;AAC1E,IAAA,MAAM,aAAqC,EAAC;AAE5C,IAAA,IAAI,SAA8B,IAAK,CAAA,MAAA;AACvC,IAAI,IAAA,KAAA,GAAQ,MAAM,MAAS,GAAA,CAAA;AAC3B,IAAG,GAAA;AACF,MAAA,IAAI,OAAO,OAAS,EAAA,UAAA,CAAW,OAAO,IAAI,CAAA,GAAI,MAAM,KAAK,CAAA;AAEzD,MAAA,MAAA,GAAS,MAAO,CAAA,MAAA;AAChB,MAAE,EAAA,KAAA;AAAA,KACM,QAAA,MAAA;AAET,IAAO,OAAA,UAAA;AAAA;AACR,EAEO,IAAI,MAAkC,EAAA;AAC5C,IAAA,OAAO,YAAK,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,GAAI,CAAA,MAAM,CAAK,IAAA,IAAA;AAAA;AACrC,EAEO,GAAA,CAAI,QAAoB,KAAoB,EAAA;AAClD,IAAK,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,GAAI,CAAA,MAAA,EAAQ,KAAK,CAAA;AAC/B,IAAO,OAAA,IAAA;AAAA;AACR,EAEO,MAAA,CAAO,QAAoB,KAAuB,EAAA;AACxD,IAAA,MAAM,QAAW,GAAA,YAAA,CAAA,IAAA,EAAK,QAAS,CAAA,CAAA,GAAA,CAAI,MAAM,CAAA;AACzC,IAAA,IAAI,aAAa,KAAO,EAAA;AACvB,MAAK,YAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAS,OAAO,MAAM,CAAA;AAC3B,MAAO,OAAA,IAAA;AAAA;AAGR,IAAO,OAAA,KAAA;AAAA;AACR,EAEO,OAAwC,GAAA;AAC9C,IAAO,OAAA,YAAA,CAAA,IAAA,EAAK,UAAS,IAAK,EAAA;AAAA;AAE5B,CAAA;AA/CU,QAAA,GAAA,IAAA,OAAA,EAAA;AATc,MAAA,CAAA,WAAA,EAAA,YAAA,CAAA;AAAjB,IAAM,UAAN,GAAA","file":"RouterNode.mjs","sourcesContent":["import { Collection } from 'discord.js';\nimport type { Route } from '../Route';\nimport type { MethodName } from '../http/HttpMethods';\nimport type { RouterBranch } from './RouterBranch';\n\nexport class RouterNode {\n\t/**\n\t * The branch containing this node.\n\t */\n\tpublic readonly parent: RouterBranch;\n\n\t/**\n\t * The methods this node supports.\n\t */\n\treadonly #methods = new Collection<MethodName, Route>();\n\n\tpublic constructor(parent: RouterBranch) {\n\t\tthis.parent = parent;\n\t}\n\n\tpublic get path() {\n\t\treturn this.parent.path;\n\t}\n\n\tpublic extractParameters(parts: readonly string[]): Record<string, string> {\n\t\tconst parameters: Record<string, string> = {};\n\n\t\tlet branch: RouterBranch | null = this.parent;\n\t\tlet index = parts.length - 1;\n\t\tdo {\n\t\t\tif (branch.dynamic) parameters[branch.name] = parts[index];\n\n\t\t\tbranch = branch.parent;\n\t\t\t--index;\n\t\t} while (branch);\n\n\t\treturn parameters;\n\t}\n\n\tpublic get(method: MethodName): Route | null {\n\t\treturn this.#methods.get(method) ?? null;\n\t}\n\n\tpublic set(method: MethodName, route: Route): this {\n\t\tthis.#methods.set(method, route);\n\t\treturn this;\n\t}\n\n\tpublic delete(method: MethodName, route: Route): boolean {\n\t\tconst existing = this.#methods.get(method);\n\t\tif (existing === route) {\n\t\t\tthis.#methods.delete(method);\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tpublic methods(): IterableIterator<MethodName> {\n\t\treturn this.#methods.keys();\n\t}\n}\n"]}