Repository URL to install this package:
|
Version:
1.1.21 ▾
|
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.toSymbolFor = toSymbolFor;
exports.WellKnown = exports.SYMBOLS = void 0;
var _deps = require("../deps");
var _symbol = require("../types/primitive/symbol");
var _omni = require("../types/@omni");
// import { isString } from 'exotic/types/primitive/string'
// import { isNumber } from 'exotic/types/primitive/number'
// import { isSymbol } from 'exotic/types/primitive/symbol'
// import { isStringOrNumber } from 'exotic/types/@omni'
// import WellKnown from 'exoticdeps'
// const isStringOrNumber = x => isString(x) || isNumber(x)
const WellKnown = Symbol; // @NOTE all start with @@
exports.WellKnown = WellKnown;
const $ = x => Symbol.for(`@@${x}`);
const SYMBOL_STRINGS = (0, _deps.freeze)(['PARENT', 'INFERRED', 'INFERRED_DEFAULT', 'DEFAULT', 'SUPPORTS', 'FROM', 'TO', 'TYPE', 'COERCERS', 'UNKNOWN', 'EMPTY', 'IGNORE', 'SPECIES', 'NATIVE']); // array + array => {[values]: values}
const SYMBOLS = (0, _deps.freeze)((0, _deps.zip)(SYMBOL_STRINGS, SYMBOL_STRINGS)); // @TODO function toSymbol() {}
exports.SYMBOLS = SYMBOLS;
function toSymbolFor(sig) {
if ((0, _symbol.isSymbol)(sig)) {
return sig;
} else if (!(0, _omni.isStringOrNumber)(sig)) {
return $(sig);
} else if (WellKnown[sig]) {
return WellKnown[sig];
} else {
const caps = sig.startsWith('@@') ? sig.toUpperCase().replace('@@', '') : sig.toUpperCase(); // SYMBOLS[caps]
return SYMBOL_STRINGS.includes(caps) ? $(caps) : $(sig);
}
} // Object.assign(toSymbolFor, WellKnown)
// --- export default exports