X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=lib%2Frouter%2Fpath-parameter.js;h=81405948a2ea951b5b404aa4bc1bbe78153df117;hb=37851c9ecba9fae65bdc603a45daaeb83c182547;hp=585aaec7500a3ccf3fd6c9529fdb288f817f14e8;hpb=9fe1e9b22b8e753c44dec77d1dee3d0061b2e991;p=squeep-api-dingus diff --git a/lib/router/path-parameter.js b/lib/router/path-parameter.js index 585aaec..8140594 100644 --- a/lib/router/path-parameter.js +++ b/lib/router/path-parameter.js @@ -1,6 +1,5 @@ 'use strict'; -const kPathParameter = Symbol('kSqueepDingusRouterPathParameter'); const parameters = new Map(); /** * De-duplicating factory of minimal-objects to track the named-parameter parts of path definitions. @@ -8,42 +7,44 @@ const parameters = new Map(); * @property {String} parameter */ class PathParameter extends null { + static #parameters = parameters; + constructor(parameter) { if (!parameter || typeof(parameter) !== 'string') { throw new RangeError('parameter must be string'); } - if (parameters.has(parameter)) { - return parameters.get(parameter); + + if (PathParameter.#parameters.has(parameter)) { + return PathParameter.#parameters.get(parameter); // NOSONAR } + const pathParameter = Object.create(PathParameter.prototype); - pathParameter[kPathParameter] = parameter; // eslint-disable-line security/detect-object-injection - parameters.set(parameter, pathParameter); + pathParameter.parameter = parameter; Object.freeze(pathParameter); - return pathParameter; + PathParameter.#parameters.set(parameter, pathParameter); + return pathParameter; // NOSONAR } /** - * Return the parameter name. + * @returns {String} */ - get parameter() { - return this[kPathParameter];// eslint-disable-line security/detect-object-injection + toString() { + return this.parameter; } /** * @returns {String} */ - toString() { - return `{${this.constructor.name} ${this.parameter}}`; // eslint-disable-line security/detect-object-injection + toJSON() { + return this.parameter; } /** * Clear the de-duplication table, for tests. */ static _flush() { - this.parameters.clear(); + PathParameter.#parameters.clear(); } } -PathParameter.kPathParameter = kPathParameter; -PathParameter.parameters = parameters; -module.exports = PathParameter; \ No newline at end of file +module.exports = PathParameter;