|
|
'use strict'; |
|
|
|
|
|
Object.defineProperty(exports, '__esModule', { |
|
|
value: true |
|
|
}); |
|
|
exports.isImmutableList = isImmutableList; |
|
|
exports.isImmutableOrderedKeyed = isImmutableOrderedKeyed; |
|
|
exports.isImmutableOrderedSet = isImmutableOrderedSet; |
|
|
exports.isImmutableRecord = isImmutableRecord; |
|
|
exports.isImmutableUnorderedKeyed = isImmutableUnorderedKeyed; |
|
|
exports.isImmutableUnorderedSet = isImmutableUnorderedSet; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@'; |
|
|
const IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@'; |
|
|
const IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@'; |
|
|
const IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@'; |
|
|
const IS_RECORD_SYMBOL = '@@__IMMUTABLE_RECORD__@@'; |
|
|
function isObjectLiteral(source) { |
|
|
return source != null && typeof source === 'object' && !Array.isArray(source); |
|
|
} |
|
|
function isImmutableUnorderedKeyed(source) { |
|
|
return Boolean( |
|
|
source && |
|
|
isObjectLiteral(source) && |
|
|
source[IS_KEYED_SENTINEL] && |
|
|
!source[IS_ORDERED_SENTINEL] |
|
|
); |
|
|
} |
|
|
function isImmutableUnorderedSet(source) { |
|
|
return Boolean( |
|
|
source && |
|
|
isObjectLiteral(source) && |
|
|
source[IS_SET_SENTINEL] && |
|
|
!source[IS_ORDERED_SENTINEL] |
|
|
); |
|
|
} |
|
|
function isImmutableList(source) { |
|
|
return Boolean(source && isObjectLiteral(source) && source[IS_LIST_SENTINEL]); |
|
|
} |
|
|
function isImmutableOrderedKeyed(source) { |
|
|
return Boolean( |
|
|
source && |
|
|
isObjectLiteral(source) && |
|
|
source[IS_KEYED_SENTINEL] && |
|
|
source[IS_ORDERED_SENTINEL] |
|
|
); |
|
|
} |
|
|
function isImmutableOrderedSet(source) { |
|
|
return Boolean( |
|
|
source && |
|
|
isObjectLiteral(source) && |
|
|
source[IS_SET_SENTINEL] && |
|
|
source[IS_ORDERED_SENTINEL] |
|
|
); |
|
|
} |
|
|
function isImmutableRecord(source) { |
|
|
return Boolean(source && isObjectLiteral(source) && source[IS_RECORD_SYMBOL]); |
|
|
} |
|
|
|