24 lines
		
	
	
		
			556 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			556 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
var d              = require("d")
 | 
						|
  , validateSymbol = require("../../../validate-symbol");
 | 
						|
 | 
						|
var registry = Object.create(null);
 | 
						|
 | 
						|
module.exports = function (SymbolPolyfill) {
 | 
						|
	return Object.defineProperties(SymbolPolyfill, {
 | 
						|
		for: d(function (key) {
 | 
						|
			if (registry[key]) return registry[key];
 | 
						|
			return (registry[key] = SymbolPolyfill(String(key)));
 | 
						|
		}),
 | 
						|
		keyFor: d(function (symbol) {
 | 
						|
			var key;
 | 
						|
			validateSymbol(symbol);
 | 
						|
			for (key in registry) {
 | 
						|
				if (registry[key] === symbol) return key;
 | 
						|
			}
 | 
						|
			return undefined;
 | 
						|
		})
 | 
						|
	});
 | 
						|
};
 |