X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Frouter%2Fpath-parameter.js;fp=lib%2Frouter%2Fpath-parameter.js;h=81405948a2ea951b5b404aa4bc1bbe78153df117;hb=c19f9a34ec7ae311e025118e51705842e31e7066;hp=3c6f1cb1f6e1c3a28129ee9bf0adbfe988192c05;hpb=3293f36e84d5fd2626fbb44525517e689e01401d;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;