{"version":3,"file":"encode.cjs","sources":["../../src/encoders/sanity/decode.ts","../../src/encoders/sanity/encode.ts"],"sourcesContent":["import {type PatchOperations} from '@sanity/client'\n\nimport {type SetIfMissingOp, type SetOp} from '../../mutations/operations/types'\nimport {\n  type IdentifiedSanityDocument,\n  type Mutation,\n  type NodePatch,\n  type SanityDocumentBase,\n} from '../../mutations/types'\nimport {parse as parsePath} from '../../path/parser/parse'\nimport {\n  type Insert,\n  type SanityCreateIfNotExistsMutation,\n  type SanityCreateMutation,\n  type SanityCreateOrReplaceMutation,\n  type SanityDecPatch,\n  type SanityDeleteMutation,\n  type SanityDiffMatchPatch,\n  type SanityIncPatch,\n  type SanityInsertPatch,\n  type SanityMutation,\n  type SanityPatch,\n  type SanitySetIfMissingPatch,\n  type SanitySetPatch,\n  type SanityUnsetPatch,\n} from './types'\n\nexport type {Mutation, SanityDocumentBase}\n\nfunction isCreateIfNotExistsMutation(\n  sanityMutation: SanityMutation,\n): sanityMutation is SanityCreateIfNotExistsMutation {\n  return 'createIfNotExists' in sanityMutation\n}\n\nfunction isCreateOrReplaceMutation<Doc extends IdentifiedSanityDocument>(\n  sanityMutation: SanityMutation,\n): sanityMutation is SanityCreateOrReplaceMutation<Doc> {\n  return 'createOrReplace' in sanityMutation\n}\n\nfunction isCreateMutation<Doc extends SanityDocumentBase>(\n  sanityMutation: SanityMutation<Doc>,\n): sanityMutation is SanityCreateMutation<Doc> {\n  return 'create' in sanityMutation\n}\n\nfunction isDeleteMutation(\n  sanityMutation: SanityMutation<any>,\n): sanityMutation is SanityDeleteMutation {\n  return 'delete' in sanityMutation\n}\n\nfunction isPatchMutation(sanityMutation: SanityMutation): sanityMutation is {\n  patch: SanityPatch\n} {\n  return 'patch' in sanityMutation\n}\n\nfunction isSetPatch(\n  sanityPatch: PatchOperations,\n): sanityPatch is SanitySetPatch {\n  return 'set' in sanityPatch\n}\n\nfunction isSetIfMissingPatch(\n  sanityPatch: SanityPatch,\n): sanityPatch is SanitySetIfMissingPatch {\n  return 'setIfMissing' in sanityPatch\n}\n\nfunction isDiffMatchPatch(\n  sanityPatch: SanityPatch,\n): sanityPatch is SanityDiffMatchPatch {\n  return 'diffMatchPatch' in sanityPatch\n}\n\nfunction isUnsetPatch(\n  sanityPatch: SanityPatch,\n): sanityPatch is SanityUnsetPatch {\n  return 'unset' in sanityPatch\n}\n\nfunction isIncPatch(sanityPatch: SanityPatch): sanityPatch is SanityIncPatch {\n  return 'inc' in sanityPatch\n}\n\nfunction isDecPatch(sanityPatch: SanityPatch): sanityPatch is SanityDecPatch {\n  return 'inc' in sanityPatch\n}\n\nfunction isInsertPatch(\n  sanityPatch: SanityPatch,\n): sanityPatch is SanityInsertPatch {\n  return 'insert' in sanityPatch\n}\n\nexport function decodeAll<Doc extends SanityDocumentBase>(\n  sanityMutations: SanityMutation<Doc>[],\n) {\n  return sanityMutations.map(decodeMutation)\n}\n\nexport function decode<Doc extends SanityDocumentBase>(\n  encodedMutation: SanityMutation<Doc>,\n) {\n  return decodeMutation(encodedMutation)\n}\n\nfunction decodeMutation<Doc extends SanityDocumentBase>(\n  encodedMutation: SanityMutation<Doc>,\n): Mutation {\n  if (isCreateIfNotExistsMutation(encodedMutation)) {\n    return {\n      type: 'createIfNotExists',\n      document: encodedMutation.createIfNotExists,\n    }\n  }\n  if (isCreateOrReplaceMutation(encodedMutation)) {\n    return {\n      type: 'createOrReplace',\n      document: encodedMutation.createOrReplace,\n    }\n  }\n  if (isCreateMutation(encodedMutation)) {\n    return {type: 'create', document: encodedMutation.create}\n  }\n  if (isDeleteMutation(encodedMutation)) {\n    return {id: encodedMutation.delete.id, type: 'delete'}\n  }\n  if (isPatchMutation(encodedMutation)) {\n    return {\n      type: 'patch',\n      id: encodedMutation.patch.id,\n      patches: decodeNodePatches(encodedMutation.patch),\n    }\n  }\n  throw new Error(`Unknown mutation: ${JSON.stringify(encodedMutation)}`)\n}\n\nconst POSITION_KEYS = ['before', 'replace', 'after'] as const\n\nfunction getInsertPosition(insert: Insert) {\n  const positions = POSITION_KEYS.filter(k => k in insert)\n  if (positions.length > 1) {\n    throw new Error(\n      `Insert patch is ambiguous. Should only contain one of: ${POSITION_KEYS.join(\n        ', ',\n      )}, instead found ${positions.join(', ')}`,\n    )\n  }\n  return positions[0]\n}\n\nfunction decodeNodePatches<T>(patch: SanityPatch): NodePatch<any, any>[] {\n  // If multiple patches are included, then the order of execution is as follows\n  // set, setIfMissing, unset, inc, dec, insert.\n  // order is defined here: https://www.sanity.io/docs/http-mutations#2f480b2baca5\n  return [\n    ...getSetPatches(patch),\n    ...getSetIfMissingPatches(patch),\n    ...getUnsetPatches(patch),\n    ...getIncPatches(patch),\n    ...getDecPatches(patch),\n    ...getInsertPatches(patch),\n    ...getDiffMatchPatchPatches(patch),\n  ]\n}\n\nfunction getSetPatches(patch: PatchOperations): NodePatch<any[], SetOp<any>>[] {\n  return isSetPatch(patch)\n    ? Object.keys(patch.set).map(path => ({\n        path: parsePath(path),\n        op: {type: 'set', value: patch.set[path]},\n      }))\n    : []\n}\n\nfunction getSetIfMissingPatches(\n  patch: SanityPatch,\n): NodePatch<any[], SetIfMissingOp<any>>[] {\n  return isSetIfMissingPatch(patch)\n    ? Object.keys(patch.setIfMissing).map(path => ({\n        path: parsePath(path),\n        op: {type: 'setIfMissing', value: patch.setIfMissing[path]},\n      }))\n    : []\n}\n\nfunction getDiffMatchPatchPatches(patch: SanityPatch) {\n  return isDiffMatchPatch(patch)\n    ? Object.keys(patch.diffMatchPatch).map(path => ({\n        path: parsePath(path),\n        op: {type: 'diffMatchPatch', value: patch.diffMatchPatch[path]},\n      }))\n    : []\n}\n\nfunction getUnsetPatches(patch: SanityPatch) {\n  return isUnsetPatch(patch)\n    ? patch.unset.map(path => ({\n        path: parsePath(path),\n        op: {type: 'unset'},\n      }))\n    : []\n}\n\nfunction getIncPatches(patch: SanityPatch) {\n  return isIncPatch(patch)\n    ? Object.keys(patch.inc).map(path => ({\n        path: parsePath(path),\n        op: {type: 'inc', amount: patch.inc[path]},\n      }))\n    : []\n}\n\nfunction getDecPatches(patch: SanityPatch) {\n  return isDecPatch(patch)\n    ? Object.keys(patch.dec).map(path => ({\n        path: parsePath(path),\n        op: {type: 'dec', amount: patch.dec[path]},\n      }))\n    : []\n}\n\nfunction getInsertPatches(patch: SanityPatch) {\n  if (!isInsertPatch(patch)) {\n    return []\n  }\n  const position = getInsertPosition(patch.insert)\n  if (!position) {\n    throw new Error('Insert patch missing position')\n  }\n\n  const path: string[] = parsePath((patch.insert as any)[position]!)\n  const referenceItem = path.pop()\n\n  const op =\n    position === 'replace'\n      ? {\n          type: 'insert',\n          position: position,\n          referenceItem,\n          items: patch.insert.items,\n        }\n      : {\n          type: 'insert',\n          position: position,\n          referenceItem,\n          items: patch.insert.items,\n        }\n\n  return [{path, op}]\n}\n","import {type PatchMutationOperation} from '@sanity/client'\n\nimport {\n  type Mutation,\n  type NodePatch,\n  type Transaction,\n} from '../../mutations/types'\nimport {stringify as stringifyPath} from '../../path/parser/stringify'\nimport {type SanityMutation} from './types'\n\nexport function encode(mutation: Mutation): SanityMutation[] | SanityMutation {\n  return encodeMutation(mutation)\n}\n\nexport function encodeAll(mutations: Mutation[]): SanityMutation[] {\n  return mutations.flatMap(encode)\n}\n\nexport function encodeTransaction(transaction: Transaction) {\n  return {\n    transactionId: transaction.id,\n    mutations: encodeAll(transaction.mutations),\n  }\n}\n\nexport function encodeMutation(\n  mutation: Mutation,\n): SanityMutation[] | SanityMutation {\n  switch (mutation.type) {\n    case 'create':\n      return {[mutation.type]: mutation.document}\n    case 'createIfNotExists':\n      return {[mutation.type]: mutation.document}\n    case 'createOrReplace':\n      return {[mutation.type]: mutation.document}\n    case 'delete':\n      return {\n        delete: {id: mutation.id},\n      }\n    case 'patch': {\n      const ifRevisionID = mutation.options?.ifRevision\n      return mutation.patches.map(patch => {\n        return {\n          patch: {\n            id: mutation.id,\n            ...(ifRevisionID && {ifRevisionID}),\n            ...encodePatch(patch),\n          },\n        } as {id: string; patch: PatchMutationOperation}\n      })\n    }\n  }\n}\n\nexport function encodePatch(patch: NodePatch) {\n  const {path, op} = patch\n  if (op.type === 'unset') {\n    return {unset: [stringifyPath(path)]}\n  }\n  if (op.type === 'insert') {\n    return {\n      insert: {\n        [op.position]: stringifyPath([...path, op.referenceItem]),\n        items: op.items,\n      },\n    }\n  }\n  if (op.type === 'diffMatchPatch') {\n    return {diffMatchPatch: {[stringifyPath(path)]: op.value}}\n  }\n  if (op.type === 'inc') {\n    return {inc: {[stringifyPath(path)]: op.amount}}\n  }\n  if (op.type === 'dec') {\n    return {dec: {[stringifyPath(path)]: op.amount}}\n  }\n  if (op.type === 'set' || op.type === 'setIfMissing') {\n    return {[op.type]: {[stringifyPath(path)]: op.value}}\n  }\n  if (op.type === 'truncate') {\n    const range = [\n      op.startIndex,\n      typeof op.endIndex === 'number' ? op.endIndex : '',\n    ].join(':')\n\n    return {unset: [`${stringifyPath(path)}[${range}]`]}\n  }\n  if (op.type === 'upsert') {\n    // note: upsert currently not supported by sanity, so will always insert at reference position\n    return {\n      unset: op.items.map(item =>\n        stringifyPath([...path, {_key: (item as any)._key}]),\n      ),\n      insert: {\n        [op.position]: stringifyPath([...path, op.referenceItem]),\n        items: op.items,\n      },\n    }\n  }\n  if (op.type === 'assign') {\n    return {\n      set: Object.fromEntries(\n        Object.keys(op.value).map(key => [\n          stringifyPath(path.concat(key)),\n          op.value[key as keyof typeof op.value],\n        ]),\n      ),\n    }\n  }\n  if (op.type === 'unassign') {\n    return {\n      unset: op.keys.map(key => stringifyPath(path.concat(key))),\n    }\n  }\n  if (op.type === 'replace') {\n    return {\n      insert: {\n        replace: stringifyPath(path.concat(op.referenceItem)),\n        items: op.items,\n      },\n    }\n  }\n  if (op.type === 'remove') {\n    return {\n      unset: [stringifyPath(path.concat(op.referenceItem))],\n    }\n  }\n  if (op.type === 'insertIfMissing') {\n    // note: insertIfMissing currently not supported by sanity, so will always insert at reference position\n    throw new Error('Patch type insertIfMissing is not supported by Sanity')\n  }\n  //@ts-expect-error all cases should be covered\n  throw new Error(`Unknown operation type ${op.type}`)\n}\n"],"names":["parsePath","stringifyPath"],"mappings":"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"}