1import{c as $,n as k,a as E,v as y,d as M,b as I}from"./shared-D7yvlAvd.js";import{i as a}from"./index-D0sRTEVV.js";import"./react-vendor-CMEOvUwD.js";import"./utils-vendor-D5kfuW3Y.js";import"./i18n-vendor-T6WqKCYf.js";function H(e,t,o={}){return"users"in e&&"memos"in e?D(e,t,o):"memos"in e&&Array.isArray(e.memos)?R(e,o):{success:!1,errors:[a("errors.invalidData")],warnings:[],stats:{total:0,converted:0,failed:1,localAttachmentsSkipped:0,articlesConverted:0}}}function R(e,t){const o=[],n=[],c=[];let r=0,s=0;const l=x(e.memos),m=e.memos.filter(f=>!l.has(f.name)),p=F(m,"REFERENCE"),d=m.reduce((f,i)=>f+(Array.isArray(i.reactions)?i.reactions.length:0),0);m.forEach((f,i)=>{try{const{note:u,skippedLocalAttachments:h}=z(f,t,e.sourceAccount);u.attachments.length===0&&!u.content.trim()&&(u.content="",s++),c.push(u),r+=h}catch(u){o.push(a("errors.memosConvert",{index:i+1,error:u.message}))}}),r>0&&n.push(a("warnings.memosLocalAttachments",{count:r})),s>0&&n.push(a("warnings.emptyNotes",{count:s})),l.size>0&&n.push(a("warnings.memosComments",{count:l.size})),p>0&&n.push(a("warnings.memosReferences",{count:p})),d>0&&n.push(a("warnings.memosReactions",{count:d}));const g=M(c);return{success:o.length===0,data:{formatVersion:2,articles:[],notes:g},errors:o,warnings:n,stats:{total:m.length,converted:g.length,failed:o.length,localAttachmentsSkipped:r,articlesConverted:0}}}function D(e,t,o={}){const n=[],c=[],r=[];let s=0;if(!e.memos||!Array.isArray(e.memos))return{success:!1,errors:[a("errors.noMemos")],warnings:[],stats:{total:0,converted:0,failed:0,localAttachmentsSkipped:0,articlesConverted:0}};if(!e.users||!Array.isArray(e.users))return{success:!1,errors:[a("errors.noMemosUsers")],warnings:[],stats:{total:0,converted:0,failed:0,localAttachmentsSkipped:0,articlesConverted:0}};const l=e.users,m=Array.isArray(e.attachments)?e.attachments:[];let p=e.memos;if(t!==void 0&&(p=e.memos.filter(i=>i.creator_id===t)),p.length===0)return{success:!1,errors:[a("errors.noSelectedMemos")],warnings:[],stats:{total:0,converted:0,failed:0,localAttachmentsSkipped:0,articlesConverted:0}};const d=i=>{const u=l.find(h=>h.id===i);return{username:u?.username||`user_${i}`,nickname:u?.nickname||`User ${i}`,avatar:u?.avatar_url||null}};let g=0;p.forEach((i,u)=>{try{const h=m.filter(N=>N.memo_id===i.id),v=typeof i.content=="string"?i.content:"";if(!v.trim()&&h.length===0||!i.visibility){n.push(a("errors.memosMissingFields",{index:u+1}));return}const _=o.preserveVisibility?O(i.visibility):"private",C=d(i.creator_id),L=e.sourceAccount??`${C.username}:${i.creator_id}`,w=$({provider:"memos",accountKey:L,externalKey:i.uid||String(i.id),sourceUpdatedAt:new Date(i.updated_ts*1e3).toISOString()}),{attachments:b,skippedCount:U}=T(h,w);s+=U;const A={id:y(),title:"",tags:E(i.payload?.tags,v),content:k(v,o),state:_,archived:i.row_status!=="NORMAL",authorid:i.creator_id.toString(),articleId:null,pin:i.pinned,editor:"normal",createdAt:new Date(i.created_ts*1e3).toISOString(),updatedAt:new Date(i.updated_ts*1e3).toISOString(),author:C,attachments:b,reactions:[],source:w};A.attachments.length===0&&!A.content.trim()&&(A.content="",g++),r.push(A)}catch(h){n.push(a("errors.memosConvert",{index:u+1,error:h.message}))}}),s>0&&c.push(a("warnings.memosLocalAttachments",{count:s})),g>0&&c.push(a("warnings.emptyNotes",{count:g}));const f=M(r);return{success:n.length===0,data:{formatVersion:2,articles:[],notes:f},errors:n,warnings:c,stats:{total:p.length,converted:f.length,failed:n.length,localAttachmentsSkipped:s,articlesConverted:0}}}function T(e,t){const o=e.filter(r=>r.storage_type==="LOCAL"||!r.reference);return{attachments:e.filter(r=>r.storage_type!=="LOCAL"&&r.reference).map((r,s)=>({id:y(),url:r.reference,compressUrl:r.reference,userid:"",roteid:"",storage:"REMOTE",details:{key:r.filename,size:r.size,mtime:new Date(r.created_ts*1e3).toISOString(),mimetype:r.type||"application/octet-stream",compressKey:""},createdAt:new Date(r.created_ts*1e3).toISOString(),updatedAt:new Date(r.updated_ts*1e3).toISOString(),sortIndex:0,source:I(t,String(r.uid??r.id??r.reference??s))})),skippedCount:o.length}}function z(e,t,o){const n=t.preserveVisibility?O(e.visibility):"private",c=$({provider:"memos",accountKey:o??e.creator,externalKey:e.name,sourceUpdatedAt:e.updateTime}),{attachments:r,skippedCount:s}=q(e.attachments,c,o);
1return{note:{id:y(),title:"",tags:E([...e.tags??[],...e.property?.tags??[]],e.content),content:V(k(e.content,t),e.location),state:n,archived:e.state!=="NORMAL",authorid:S(e.creator),articleId:null,pin:e.pinned,editor:"normal",createdAt:K(e.displayTime)??e.createTime,updatedAt:e.updateTime,author:{username:`user_${S(e.creator)}`,nickname:`User ${S(e.creator)}`,avatar:null},attachments:r,reactions:[],source:c},skippedLocalAttachments:s}}function x(e){const t=new Set;return e.forEach(o=>{(Array.isArray(o.relations)?o.relations:[]).forEach(n=>{n?.type==="COMMENT"&&typeof n?.memo?.name=="string"&&t.add(n.memo.name)})}),t}function F(e,t){const o=new Set;return e.forEach(n=>{(Array.isArray(n.relations)?n.relations:[]).forEach(c=>{if(c?.type!==t)return;const r=c?.memo?.name,s=c?.relatedMemo?.name;typeof r=="string"&&typeof s=="string"&&o.add(`${t}:${r}:${s}`)})}),o.size}function K(e){return typeof e=="string"&&Number.isFinite(Date.parse(e))?e:void 0}function V(e,t){if(!t||typeof t!="object")return e;const o=typeof t.placeholder=="string"?t.placeholder.trim():"",n=t.latitude,c=t.longitude,r=typeof n=="number"&&Number.isFinite(n)&&n>=-90&&n<=90&&typeof c=="number"&&Number.isFinite(c)&&c>=-180&&c<=180;if(!o&&!r)return e;const s=P(o||`${n}, ${c}`),l=r?`ð [${s}](https://www.openstreetmap.org/?mlat=${n}&mlon=${c}#map=15/${n}/${c})`:`ð ${s}`;return e.trim()?`${e.trimEnd()} 2 3${l}`:l}function P(e){return e.replace(/([\\[\]])/gu,"\\$1")}function O(e){switch(e.toUpperCase()){case"PUBLIC":return"public";case"PRIVATE":return"private";case"PROTECTED":return"private";default:return"private"}}function S(e){const t=e.match(/users\/(\d+)/);return t?t[1]:y()}function q(e,t,o){const n=Array.isArray(e)?e:[],r=n.filter(s=>/^(image|video)\//iu.test(String(s.type||s.mimetype||""))).flatMap((s,l)=>{const m=B(s.externalLink||s.url),p=m?void 0:j(o,s),d=m??p;return d?{id:y(),url:d,compressUrl:d,userid:"",roteid:"",storage:"REMOTE",details:{key:s.filename||s.name||"",size:s.size||0,mtime:new Date().toISOString(),mimetype:s.type||s.mimetype||"application/octet-stream",compressKey:"",previewRequiresAuthorization:!!p},createdAt:new Date().toISOString(),updatedAt:new Date().toISOString(),sortIndex:0,source:I(t,String(s.name??s.id??d??l))}:[]});return{attachments:r,skippedCount:n.length-r.length}}function B(e){return typeof e=="string"&&/^https?:\/\//iu.test(e)?e:void 0}function j(e,t){if(!e||typeof t.name!="string"||!/^attachments\/[A-Za-z0-9_-]+$/u.test(t.name)||typeof t.filename!="string"||!t.filename)return;const o=t.name.split("/").map(encodeURIComponent).join("/");return`${e.replace(/\/+$/u,"")}/file/${o}/${encodeURIComponent(t.filename)}`}export{H as convertMemosToRote};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.