3 const parameters
= new Map();
5 * De-duplicating factory of minimal-objects to track the named-parameter parts of path definitions.
7 class PathParameter
extends null {
8 static #parameters
= parameters
;
12 * @param {string} parameter name
13 * @returns {PathParameter} frozen parameter object
15 constructor(parameter
) {
16 if (!parameter
|| typeof(parameter
) !== 'string') {
17 throw new RangeError('parameter must be string');
20 if (PathParameter
.#parameters
.has(parameter
)) {
21 return PathParameter
.#parameters
.get(parameter
); // NOSONAR
24 const pathParameter
= Object
.create(PathParameter
.prototype);
25 pathParameter
.parameter
= parameter
;
26 Object
.freeze(pathParameter
);
27 PathParameter
.#parameters
.set(parameter
, pathParameter
);
28 return pathParameter
; // NOSONAR
32 * @returns {string} parameter string
35 return this.parameter
;
39 * @returns {string} parameter string
42 return this.parameter
;
46 * Clear the de-duplication table, for tests.
49 PathParameter
.#parameters
.clear();
53 module
.exports
= PathParameter
;