import { $NAME, $CONSTRUCTOR, MetaContext, MetaObject } from '../../MetaContext'; import { $ASSIGN, primitiveAssign } from '../../operations/base/$assign'; import { $CLONE, primitiveWrapperClone } from '../../operations/base/$clone'; import { $COMPARE, primitiveWrapperCompare } from '../../operations/base/$compare'; import { $CONSTRUCT, genericConstruct } from '../../operations/base/$construct'; import { $DUMP, primitiveWrapperDump } from '../../operations/base/$dump'; import { $EQUAL, primitiveWrapperEqual } from '../../operations/base/$equal'; import { $HASH, HashString } from '../../operations/base/$hash'; import { $RESTORE, $CREATE, primitiveWrapperRestore, primitiveWrapperCreate } from '../../operations/base/$restore'; import { $SERIALIZE, genericSerialize } from '../../operations/base/$serialize'; import { $STRINGIFY, deepStringify, quoteString, stringifyObjectLikeWrapper } from '../../operations/base/$stringify'; export const $assign = primitiveAssign; export const $clone = primitiveWrapperClone; export const $compare = primitiveWrapperCompare; export const $construct = genericConstruct; export const $create = primitiveWrapperCreate; export const $dump = primitiveWrapperDump; export const $equal = primitiveWrapperEqual; export function $hash(this: MetaObject, obj: String, seed: number, context: MetaContext & HashString) { return context.hashString(obj.valueOf(), seed); } export const $restore = primitiveWrapperRestore; export const $serialize = genericSerialize; export const $stringify = deepStringify((obj: String) => quoteString(String(obj)), stringifyObjectLikeWrapper); export const $constructor = String; export const $name = 'String'; export const $tag = { [$CONSTRUCTOR]: $constructor, [$NAME]: $name }; export default { [$CONSTRUCTOR]: $constructor, [$NAME]: $name, [$ASSIGN]: $assign, [$CLONE]: $clone, [$COMPARE]: $compare, [$CONSTRUCT]: $construct, [$CREATE]: $create, [$DUMP]: $dump, [$EQUAL]: $equal, [$HASH]: $hash, [$RESTORE]: $restore, [$SERIALIZE]: $serialize, [$STRINGIFY]: $stringify };