diff options
Diffstat (limited to 'cli/bench/testdata/npm/hono/dist/router/reg-exp-router/trie.js')
-rw-r--r-- | cli/bench/testdata/npm/hono/dist/router/reg-exp-router/trie.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/cli/bench/testdata/npm/hono/dist/router/reg-exp-router/trie.js b/cli/bench/testdata/npm/hono/dist/router/reg-exp-router/trie.js new file mode 100644 index 000000000..dfcc657f3 --- /dev/null +++ b/cli/bench/testdata/npm/hono/dist/router/reg-exp-router/trie.js @@ -0,0 +1,42 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Trie = void 0; +const node_1 = require("./node"); +class Trie { + constructor({ reverse } = { reverse: false }) { + this.context = { varIndex: 0 }; + this.root = new node_1.Node({ reverse }); + } + insert(path, index) { + const paramMap = []; + /** + * - pattern (:label, :label{0-9]+}, ...) + * - /* wildcard + * - character + */ + const tokens = path.match(/(?::[^\/]+)|(?:\/\*$)|./g); + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + this.root.insert(tokens, index, paramMap, this.context); + return paramMap; + } + buildRegExp() { + let regexp = this.root.buildRegExpStr(); + let captureIndex = 0; + const indexReplacementMap = []; + const paramReplacementMap = []; + regexp = regexp.replace(/#(\d+)|@(\d+)|\.\*\$/g, (_, handlerIndex, paramIndex) => { + if (typeof handlerIndex !== 'undefined') { + indexReplacementMap[++captureIndex] = Number(handlerIndex); + return '$()'; + } + if (typeof paramIndex !== 'undefined') { + paramReplacementMap[Number(paramIndex)] = ++captureIndex; + return ''; + } + return ''; + }); + return [new RegExp(`^${regexp}`), indexReplacementMap, paramReplacementMap]; + } +} +exports.Trie = Trie; |