graphql-modules
Version:
Create reusable, maintainable, testable and extendable GraphQL modules
45 lines (44 loc) • 1.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Key = void 0;
const utils_1 = require("./utils");
const forward_ref_1 = require("./forward-ref");
class Key {
constructor(token, id) {
this.token = token;
this.id = id;
if (!token) {
throw new Error('Token must be defined!');
}
}
/**
* Returns a stringified token.
*/
get displayName() {
return (0, utils_1.stringify)(this.token);
}
static get(token) {
return _globalKeyRegistry.get((0, forward_ref_1.resolveForwardRef)(token));
}
}
exports.Key = Key;
class GlobalKeyRegistry {
constructor() {
this._allKeys = new Map();
}
get(token) {
if (token instanceof Key) {
return token;
}
if (this._allKeys.has(token)) {
return this._allKeys.get(token);
}
const newKey = new Key(token, _globalKeyRegistry.numberOfKeys);
this._allKeys.set(token, newKey);
return newKey;
}
get numberOfKeys() {
return this._allKeys.size;
}
}
const _globalKeyRegistry = new GlobalKeyRegistry();