585aaec7500a3ccf3fd6c9529fdb288f817f14e8
3 const kPathParameter
= Symbol('kSqueepDingusRouterPathParameter');
4 const parameters
= new Map();
6 * De-duplicating factory of minimal-objects to track the named-parameter parts of path definitions.
8 * @property {String} parameter
10 class PathParameter
extends null {
11 constructor(parameter
) {
12 if (!parameter
|| typeof(parameter
) !== 'string') {
13 throw new RangeError('parameter must be string');
15 if (parameters
.has(parameter
)) {
16 return parameters
.get(parameter
);
18 const pathParameter
= Object
.create(PathParameter
.prototype);
19 pathParameter
[kPathParameter
] = parameter
; // eslint-disable-line security/detect-object-injection
20 parameters
.set(parameter
, pathParameter
);
21 Object
.freeze(pathParameter
);
26 * Return the parameter name.
29 return this[kPathParameter
];// eslint-disable-line security/detect-object-injection
36 return `{${this.constructor.name} ${this.parameter}}`; // eslint-disable-line security/detect-object-injection
40 * Clear the de-duplication table, for tests.
43 this.parameters
.clear();
46 PathParameter
.kPathParameter
= kPathParameter
;
47 PathParameter
.parameters
= parameters
;
49 module
.exports
= PathParameter
;