X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=lib%2Frouter%2Fpath-parameter.js;h=81405948a2ea951b5b404aa4bc1bbe78153df117;hb=031c170bdaf1d9c331e6f6fc701ce6540c0e6941;hp=3c6f1cb1f6e1c3a28129ee9bf0adbfe988192c05;hpb=ad464818fe8f839bea962f57bcdca4fe26c92ce7;p=squeep-api-dingus diff --git a/lib/router/path-parameter.js b/lib/router/path-parameter.js index 3c6f1cb..8140594 100644 --- a/lib/router/path-parameter.js +++ b/lib/router/path-parameter.js @@ -7,34 +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.parameter = parameter; - parameters.set(parameter, pathParameter); Object.freeze(pathParameter); - return pathParameter; + PathParameter.#parameters.set(parameter, pathParameter); + return pathParameter; // NOSONAR } /** * @returns {String} */ toString() { - return `{${this.constructor.name} ${this.parameter}}`; + return this.parameter; + } + + /** + * @returns {String} + */ + toJSON() { + return this.parameter; } /** * Clear the de-duplication table, for tests. */ static _flush() { - this.parameters.clear(); + PathParameter.#parameters.clear(); } } -PathParameter.parameters = parameters; -module.exports = PathParameter; \ No newline at end of file +module.exports = PathParameter;