@aiquants/daily-report 0.30.0 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var p=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var Y=Object.prototype.hasOwnProperty;var q=(t,r)=>{for(var n in r)p(t,n,{get:r[n],enumerable:!0})},F=(t,r,n,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of z(r))!Y.call(t,i)&&i!==n&&p(t,i,{get:()=>r[i],enumerable:!(o=V(r,i))||o.enumerable});return t};var K=t=>F(p({},"__esModule",{value:!0}),t);var ee={};q(ee,{DAILY_REPORT_ATTACHMENT_THUMBNAIL_VARIANTS:()=>u,DAILY_REPORT_SSE_CURSOR_PARAM:()=>H,DAILY_REPORT_SSE_HEARTBEAT_MS:()=>U,DAILY_REPORT_SSE_TERMINAL_EVENTS:()=>O,buildDailyReportAttachmentUrl:()=>E,commentAddMessageSchema:()=>D,commentDeleteMessageSchema:()=>b,connectedMessageSchema:()=>h,dailyReportDetailSchema:()=>s,dailyReportExternalCommentSchema:()=>c,dailyReportInterviewerSchema:()=>d,dailyReportLabelDefSchema:()=>y,dailyReportPostedCommentSchema:()=>m,dailyReportSseMessageSchema:()=>j,isDailyReportAttachmentThumbnailVariant:()=>l,isDailyReportSseStreamId:()=>$,isIdsStreamChunkLine:()=>P,mergeComments:()=>N,normalizeBusinessDateKey:()=>L,parseDailyReportAttachmentQuery:()=>M,reportCreateMessageSchema:()=>f,reportDeleteMessageSchema:()=>I,reportPublishMessageSchema:()=>S,reportUpdateMessageSchema:()=>x,statusUpdateMessageSchema:()=>g});module.exports=K(ee);var u=Object.freeze({tile:Object.freeze({maxWidth:480,maxHeight:320})}),l=t=>Object.hasOwn(u,t);var A="download",T="thumbnail",_="1",E=(t,r,n)=>{let o=`${t}/attachment/${encodeURIComponent(r)}`;switch(n.kind){case"inline":return o;case"download":return`${o}?${new URLSearchParams({[A]:_})}`;case"thumbnail":return`${o}?${new URLSearchParams({[T]:n.variant})}`}},M=t=>{let r=t.getAll(T),n=t.getAll(A);if(r.length>0&&n.length>0)return{kind:"invalid",reason:"conflict"};if(r.length>0){let[o]=r;return r.length===1&&l(o)?{kind:"thumbnail",variant:o}:{kind:"invalid",reason:"thumbnail_variant"}}return n.length>0?n.length===1&&n[0]===_?{kind:"download"}:{kind:"invalid",reason:"download_value"}:{kind:"inline"}};var Q=/^\d{4}-\d{2}-\d{2}$/,W=/^\d{4}\/\d{2}\/\d{2}$/,C=t=>t<10?`0${t}`:`${t}`,k=t=>{if(Number.isNaN(t.getTime()))return null;let r=t.getFullYear(),n=C(t.getMonth()+1),o=C(t.getDate());return`${r}-${n}-${o}`};var L=t=>{if(t==null)return null;if(t instanceof Date)return k(t);let r=t.trim();if(r==="")return null;if(Q.test(r))return r;if(W.test(r))return r.replaceAll("/","-");let n=new Date(r);return k(n)};var J=t=>typeof t=="string"?JSON.stringify(t):typeof t=="number"||typeof t=="boolean"||t===null||t===void 0?String(t):Array.isArray(t)?"array":typeof t,w=(t,r,n)=>new RangeError(`[daily-report] ${t} must be ${r}; got ${J(n)}`);var N=(t,r,n,o)=>{if(typeof o!="string"||o.trim()==="")throw w("mergeComments: unknownAuthorName","a non-blank string",o);let i=t.map((a,B)=>({id:`legacy-${B}`,authorName:a.name||o,content:a.text||"",isMine:!1,color:a.color||void 0,isLegacy:!0})),v=r.map(a=>({id:a.id,authorName:a.userName||o,content:a.content??"",createdAt:a.createdAt??"",isMine:n?a.userId===n:a.isMine,isLegacy:!1}));return[...i,...v]};var G=t=>{if(typeof t!="object"||t===null)return"unknown";let r=t;return typeof r.kind=="string"?r.kind==="chunk"?"chunk":r.kind==="error"?"error":"unknown":Array.isArray(r.items)?"chunk":typeof r.error=="string"?"error":"unknown"},P=t=>G(t)==="chunk";var e=require("zod"),O=["auth-required","forbidden","resync-required"],U=15e3,H="lastEventId",X=/^\d{1,15}-\d{1,15}$/,$=t=>X.test(t),d=e.z.object({name:e.z.string().nullish(),affiliation:e.z.string().nullish()}),c=e.z.object({name:e.z.string().nullish(),text:e.z.string().nullish(),color:e.z.string().nullish()}),y=e.z.object({id:e.z.number(),name:e.z.string().nullish(),color:e.z.string().nullish()}),m=e.z.object({id:e.z.number(),userId:e.z.string().nullish(),userName:e.z.string().nullish(),content:e.z.string().nullish(),createdAt:e.z.string().nullish(),isMine:e.z.boolean()}),Z=e.z.object({id:e.z.string(),fileName:e.z.string(),fileType:e.z.string().nullable(),fileSize:e.z.number().nullable(),createdAt:e.z.string().nullable(),state:e.z.enum(["present","absent","unknown"]),hasThumbnail:e.z.boolean().default(!1)}),s=e.z.object({reportHubId:e.z.number(),date:e.z.string().nullish(),createdAt:e.z.string().nullish(),author:e.z.string().nullish(),userId:e.z.string().nullish(),sourceType:e.z.string().nullish(),employeeName:e.z.string().nullish(),updatedBy:e.z.string().nullish(),updatedAt:e.z.string().nullish(),category:e.z.string().nullish(),creationCategory:e.z.string().nullish(),visitTimeFrom:e.z.string().nullish(),visitTimeTo:e.z.string().nullish(),customerName:e.z.string().nullish(),interviewers:e.z.array(d),subject:e.z.string().nullish(),content:e.z.string().nullish(),externalComments:e.z.array(c),isRead:e.z.boolean(),isStarred:e.z.boolean(),labels:e.z.array(y),postedComments:e.z.array(m),attachments:e.z.array(Z).default([])}),h=e.z.object({type:e.z.literal("connected")}),g=e.z.object({type:e.z.literal("status-update"),reportHubId:e.z.number(),statusType:e.z.enum(["star","read"]),value:e.z.boolean(),clientTempId:e.z.string(),recipientRawUserId:e.z.number().optional()}),R=e.z.string().optional(),D=e.z.object({type:e.z.literal("comment-add"),reportHubId:e.z.number(),comment:m,clientTempId:e.z.string(),recipientRawUserId:e.z.number().optional(),sourceType:R}),b=e.z.object({type:e.z.literal("comment-delete"),reportHubId:e.z.number(),commentId:e.z.number(),clientTempId:e.z.string(),recipientRawUserId:e.z.number().optional(),sourceType:R}),f=e.z.object({type:e.z.literal("report-create"),reportHubId:e.z.number(),report:s,clientTempId:e.z.string(),recipientRawUserId:e.z.number().optional()}),x=e.z.object({type:e.z.literal("report-update"),reportHubId:e.z.number(),report:s,clientTempId:e.z.string(),recipientRawUserId:e.z.number().optional()}),S=e.z.object({type:e.z.literal("report-publish"),reportHubId:e.z.number(),report:s,clientTempId:e.z.string(),recipientRawUserId:e.z.number().optional()}),I=e.z.object({type:e.z.literal("report-delete"),reportHubId:e.z.number(),clientTempId:e.z.string(),sourceType:R}),j=e.z.discriminatedUnion("type",[h,g,D,b,f,x,S,I]);0&&(module.exports={DAILY_REPORT_ATTACHMENT_THUMBNAIL_VARIANTS,DAILY_REPORT_SSE_CURSOR_PARAM,DAILY_REPORT_SSE_HEARTBEAT_MS,DAILY_REPORT_SSE_TERMINAL_EVENTS,buildDailyReportAttachmentUrl,commentAddMessageSchema,commentDeleteMessageSchema,connectedMessageSchema,dailyReportDetailSchema,dailyReportExternalCommentSchema,dailyReportInterviewerSchema,dailyReportLabelDefSchema,dailyReportPostedCommentSchema,dailyReportSseMessageSchema,isDailyReportAttachmentThumbnailVariant,isDailyReportSseStreamId,isIdsStreamChunkLine,mergeComments,normalizeBusinessDateKey,parseDailyReportAttachmentQuery,reportCreateMessageSchema,reportDeleteMessageSchema,reportPublishMessageSchema,reportUpdateMessageSchema,statusUpdateMessageSchema});
1
+ "use strict";var d=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var Y=Object.getOwnPropertyNames;var z=Object.prototype.hasOwnProperty;var F=(t,r)=>{for(var n in r)d(t,n,{get:r[n],enumerable:!0})},K=(t,r,n,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let i of Y(r))!z.call(t,i)&&i!==n&&d(t,i,{get:()=>r[i],enumerable:!(o=V(r,i))||o.enumerable});return t};var q=t=>K(d({},"__esModule",{value:!0}),t);var te={};F(te,{DAILY_REPORT_ATTACHMENT_THUMBNAIL_VARIANTS:()=>y,DAILY_REPORT_SSE_CURSOR_PARAM:()=>B,DAILY_REPORT_SSE_HEARTBEAT_MS:()=>$,DAILY_REPORT_SSE_TERMINAL_EVENTS:()=>H,buildDailyReportAttachmentUrl:()=>k,commentAddMessageSchema:()=>f,commentDeleteMessageSchema:()=>S,connectedMessageSchema:()=>D,dailyReportDetailSchema:()=>l,dailyReportExternalCommentSchema:()=>g,dailyReportInterviewerSchema:()=>h,dailyReportLabelDefSchema:()=>R,dailyReportPostedCommentSchema:()=>c,dailyReportSseMessageSchema:()=>v,isDailyReportAttachmentThumbnailVariant:()=>p,isDailyReportSseStreamId:()=>j,isIdsStreamChunkLine:()=>O,mergeComments:()=>P,normalizeBusinessDateKey:()=>w,parseDailyReportAttachmentQuery:()=>N,reportCreateMessageSchema:()=>I,reportDeleteMessageSchema:()=>_,reportPublishMessageSchema:()=>T,reportUpdateMessageSchema:()=>A,statusUpdateMessageSchema:()=>b});module.exports=q(te);var y=Object.freeze({tile:Object.freeze({maxWidth:480,maxHeight:320})}),p=t=>Object.hasOwn(y,t);var E="download",C="thumbnail",M="1",k=(t,r,n)=>{let o=`${t}/attachment/${encodeURIComponent(r)}`;switch(n.kind){case"inline":return o;case"download":return`${o}?${new URLSearchParams({[E]:M})}`;case"thumbnail":return`${o}?${new URLSearchParams({[C]:n.variant})}`}},N=t=>{let r=t.getAll(C),n=t.getAll(E);if(r.length>0&&n.length>0)return{kind:"invalid",reason:"conflict"};if(r.length>0){let[o]=r;return r.length===1&&p(o)?{kind:"thumbnail",variant:o}:{kind:"invalid",reason:"thumbnail_variant"}}return n.length>0?n.length===1&&n[0]===M?{kind:"download"}:{kind:"invalid",reason:"download_value"}:{kind:"inline"}};var Q=/^(\d{4})([-/])(\d{2})\2(\d{2})$/;var L=t=>t<10?`0${t}`:`${t}`,W=t=>{if(Number.isNaN(t.getTime()))return null;let r=t.getFullYear(),n=L(t.getMonth()+1),o=L(t.getDate());return`${r}-${n}-${o}`},J=t=>{let r=Q.exec(t);if(r===null)return null;let[,n,,o,i]=r,s=Number(n),a=Number(o),m=Number(i);if(s<1)return null;let u=new Date(0);return u.setUTCFullYear(s,a-1,m),u.getUTCFullYear()!==s||u.getUTCMonth()!==a-1||u.getUTCDate()!==m?null:`${n}-${o}-${i}`};var w=t=>t==null?null:t instanceof Date?W(t):J(t);var G=t=>typeof t=="string"?JSON.stringify(t):typeof t=="number"||typeof t=="boolean"||t===null||t===void 0?String(t):Array.isArray(t)?"array":typeof t,U=(t,r,n)=>new RangeError(`[daily-report] ${t} must be ${r}; got ${G(n)}`);var P=(t,r,n,o)=>{if(typeof o!="string"||o.trim()==="")throw U("mergeComments: unknownAuthorName","a non-blank string",o);let i=t.map((a,m)=>({id:`legacy-${m}`,authorName:a.name||o,content:a.text||"",isMine:!1,color:a.color||void 0,isLegacy:!0})),s=r.map(a=>({id:a.id,authorName:a.userName||o,content:a.content??"",createdAt:a.createdAt??"",isMine:n?a.userId===n:a.isMine,isLegacy:!1}));return[...i,...s]};var X=t=>{if(typeof t!="object"||t===null)return"unknown";let r=t;return typeof r.kind=="string"?r.kind==="chunk"?"chunk":r.kind==="error"?"error":"unknown":Array.isArray(r.items)?"chunk":typeof r.error=="string"?"error":"unknown"},O=t=>X(t)==="chunk";var e=require("zod"),H=["auth-required","forbidden","resync-required"],$=15e3,B="lastEventId",Z=/^\d{1,15}-\d{1,15}$/,j=t=>Z.test(t),h=e.z.object({name:e.z.string().nullish(),affiliation:e.z.string().nullish()}),g=e.z.object({name:e.z.string().nullish(),text:e.z.string().nullish(),color:e.z.string().nullish()}),R=e.z.object({id:e.z.number(),name:e.z.string().nullish(),color:e.z.string().nullish()}),c=e.z.object({id:e.z.number(),userId:e.z.string().nullish(),userName:e.z.string().nullish(),content:e.z.string().nullish(),createdAt:e.z.string().nullish(),isMine:e.z.boolean()}),ee=e.z.object({id:e.z.string(),fileName:e.z.string(),fileType:e.z.string().nullable(),fileSize:e.z.number().nullable(),createdAt:e.z.string().nullable(),state:e.z.enum(["present","absent","unknown"]),hasThumbnail:e.z.boolean().default(!1)}),l=e.z.object({reportHubId:e.z.number(),date:e.z.string().nullish(),createdAt:e.z.string().nullish(),author:e.z.string().nullish(),userId:e.z.string().nullish(),sourceType:e.z.string().nullish(),employeeName:e.z.string().nullish(),updatedBy:e.z.string().nullish(),updatedAt:e.z.string().nullish(),category:e.z.string().nullish(),creationCategory:e.z.string().nullish(),visitTimeFrom:e.z.string().nullish(),visitTimeTo:e.z.string().nullish(),customerName:e.z.string().nullish(),interviewers:e.z.array(h),subject:e.z.string().nullish(),content:e.z.string().nullish(),externalComments:e.z.array(g),isRead:e.z.boolean(),isStarred:e.z.boolean(),labels:e.z.array(R),postedComments:e.z.array(c),attachments:e.z.array(ee).default([])}),D=e.z.object({type:e.z.literal("connected")}),b=e.z.object({type:e.z.literal("status-update"),reportHubId:e.z.number(),statusType:e.z.enum(["star","read"]),value:e.z.boolean(),clientTempId:e.z.string(),recipientRawUserId:e.z.number().optional()}),x=e.z.string().optional(),f=e.z.object({type:e.z.literal("comment-add"),reportHubId:e.z.number(),comment:c,clientTempId:e.z.string(),recipientRawUserId:e.z.number().optional(),sourceType:x}),S=e.z.object({type:e.z.literal("comment-delete"),reportHubId:e.z.number(),commentId:e.z.number(),clientTempId:e.z.string(),recipientRawUserId:e.z.number().optional(),sourceType:x}),I=e.z.object({type:e.z.literal("report-create"),reportHubId:e.z.number(),report:l,clientTempId:e.z.string(),recipientRawUserId:e.z.number().optional()}),A=e.z.object({type:e.z.literal("report-update"),reportHubId:e.z.number(),report:l,clientTempId:e.z.string(),recipientRawUserId:e.z.number().optional()}),T=e.z.object({type:e.z.literal("report-publish"),reportHubId:e.z.number(),report:l,clientTempId:e.z.string(),recipientRawUserId:e.z.number().optional()}),_=e.z.object({type:e.z.literal("report-delete"),reportHubId:e.z.number(),clientTempId:e.z.string(),sourceType:x}),v=e.z.discriminatedUnion("type",[D,b,f,S,I,A,T,_]);0&&(module.exports={DAILY_REPORT_ATTACHMENT_THUMBNAIL_VARIANTS,DAILY_REPORT_SSE_CURSOR_PARAM,DAILY_REPORT_SSE_HEARTBEAT_MS,DAILY_REPORT_SSE_TERMINAL_EVENTS,buildDailyReportAttachmentUrl,commentAddMessageSchema,commentDeleteMessageSchema,connectedMessageSchema,dailyReportDetailSchema,dailyReportExternalCommentSchema,dailyReportInterviewerSchema,dailyReportLabelDefSchema,dailyReportPostedCommentSchema,dailyReportSseMessageSchema,isDailyReportAttachmentThumbnailVariant,isDailyReportSseStreamId,isIdsStreamChunkLine,mergeComments,normalizeBusinessDateKey,parseDailyReportAttachmentQuery,reportCreateMessageSchema,reportDeleteMessageSchema,reportPublishMessageSchema,reportUpdateMessageSchema,statusUpdateMessageSchema});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- var p=Object.freeze({tile:Object.freeze({maxWidth:480,maxHeight:320})}),s=t=>Object.hasOwn(p,t);var u="download",d="thumbnail",c="1",L=(t,r,n)=>{let o=`${t}/attachment/${encodeURIComponent(r)}`;switch(n.kind){case"inline":return o;case"download":return`${o}?${new URLSearchParams({[u]:c})}`;case"thumbnail":return`${o}?${new URLSearchParams({[d]:n.variant})}`}},w=t=>{let r=t.getAll(d),n=t.getAll(u);if(r.length>0&&n.length>0)return{kind:"invalid",reason:"conflict"};if(r.length>0){let[o]=r;return r.length===1&&s(o)?{kind:"thumbnail",variant:o}:{kind:"invalid",reason:"thumbnail_variant"}}return n.length>0?n.length===1&&n[0]===c?{kind:"download"}:{kind:"invalid",reason:"download_value"}:{kind:"inline"}};var N=/^\d{4}-\d{2}-\d{2}$/,P=/^\d{4}\/\d{2}\/\d{2}$/,y=t=>t<10?`0${t}`:`${t}`,h=t=>{if(Number.isNaN(t.getTime()))return null;let r=t.getFullYear(),n=y(t.getMonth()+1),o=y(t.getDate());return`${r}-${n}-${o}`};var O=t=>{if(t==null)return null;if(t instanceof Date)return h(t);let r=t.trim();if(r==="")return null;if(N.test(r))return r;if(P.test(r))return r.replaceAll("/","-");let n=new Date(r);return h(n)};var U=t=>typeof t=="string"?JSON.stringify(t):typeof t=="number"||typeof t=="boolean"||t===null||t===void 0?String(t):Array.isArray(t)?"array":typeof t,g=(t,r,n)=>new RangeError(`[daily-report] ${t} must be ${r}; got ${U(n)}`);var H=(t,r,n,o)=>{if(typeof o!="string"||o.trim()==="")throw g("mergeComments: unknownAuthorName","a non-blank string",o);let M=t.map((a,k)=>({id:`legacy-${k}`,authorName:a.name||o,content:a.text||"",isMine:!1,color:a.color||void 0,isLegacy:!0})),C=r.map(a=>({id:a.id,authorName:a.userName||o,content:a.content??"",createdAt:a.createdAt??"",isMine:n?a.userId===n:a.isMine,isLegacy:!1}));return[...M,...C]};var $=t=>{if(typeof t!="object"||t===null)return"unknown";let r=t;return typeof r.kind=="string"?r.kind==="chunk"?"chunk":r.kind==="error"?"error":"unknown":Array.isArray(r.items)?"chunk":typeof r.error=="string"?"error":"unknown"},j=t=>$(t)==="chunk";import{z as e}from"zod";var v=["auth-required","forbidden","resync-required"],B=15e3,V="lastEventId",z=/^\d{1,15}-\d{1,15}$/,Y=t=>z.test(t),R=e.object({name:e.string().nullish(),affiliation:e.string().nullish()}),D=e.object({name:e.string().nullish(),text:e.string().nullish(),color:e.string().nullish()}),b=e.object({id:e.number(),name:e.string().nullish(),color:e.string().nullish()}),l=e.object({id:e.number(),userId:e.string().nullish(),userName:e.string().nullish(),content:e.string().nullish(),createdAt:e.string().nullish(),isMine:e.boolean()}),q=e.object({id:e.string(),fileName:e.string(),fileType:e.string().nullable(),fileSize:e.number().nullable(),createdAt:e.string().nullable(),state:e.enum(["present","absent","unknown"]),hasThumbnail:e.boolean().default(!1)}),i=e.object({reportHubId:e.number(),date:e.string().nullish(),createdAt:e.string().nullish(),author:e.string().nullish(),userId:e.string().nullish(),sourceType:e.string().nullish(),employeeName:e.string().nullish(),updatedBy:e.string().nullish(),updatedAt:e.string().nullish(),category:e.string().nullish(),creationCategory:e.string().nullish(),visitTimeFrom:e.string().nullish(),visitTimeTo:e.string().nullish(),customerName:e.string().nullish(),interviewers:e.array(R),subject:e.string().nullish(),content:e.string().nullish(),externalComments:e.array(D),isRead:e.boolean(),isStarred:e.boolean(),labels:e.array(b),postedComments:e.array(l),attachments:e.array(q).default([])}),f=e.object({type:e.literal("connected")}),x=e.object({type:e.literal("status-update"),reportHubId:e.number(),statusType:e.enum(["star","read"]),value:e.boolean(),clientTempId:e.string(),recipientRawUserId:e.number().optional()}),m=e.string().optional(),S=e.object({type:e.literal("comment-add"),reportHubId:e.number(),comment:l,clientTempId:e.string(),recipientRawUserId:e.number().optional(),sourceType:m}),I=e.object({type:e.literal("comment-delete"),reportHubId:e.number(),commentId:e.number(),clientTempId:e.string(),recipientRawUserId:e.number().optional(),sourceType:m}),A=e.object({type:e.literal("report-create"),reportHubId:e.number(),report:i,clientTempId:e.string(),recipientRawUserId:e.number().optional()}),T=e.object({type:e.literal("report-update"),reportHubId:e.number(),report:i,clientTempId:e.string(),recipientRawUserId:e.number().optional()}),_=e.object({type:e.literal("report-publish"),reportHubId:e.number(),report:i,clientTempId:e.string(),recipientRawUserId:e.number().optional()}),E=e.object({type:e.literal("report-delete"),reportHubId:e.number(),clientTempId:e.string(),sourceType:m}),F=e.discriminatedUnion("type",[f,x,S,I,A,T,_,E]);export{p as DAILY_REPORT_ATTACHMENT_THUMBNAIL_VARIANTS,V as DAILY_REPORT_SSE_CURSOR_PARAM,B as DAILY_REPORT_SSE_HEARTBEAT_MS,v as DAILY_REPORT_SSE_TERMINAL_EVENTS,L as buildDailyReportAttachmentUrl,S as commentAddMessageSchema,I as commentDeleteMessageSchema,f as connectedMessageSchema,i as dailyReportDetailSchema,D as dailyReportExternalCommentSchema,R as dailyReportInterviewerSchema,b as dailyReportLabelDefSchema,l as dailyReportPostedCommentSchema,F as dailyReportSseMessageSchema,s as isDailyReportAttachmentThumbnailVariant,Y as isDailyReportSseStreamId,j as isIdsStreamChunkLine,H as mergeComments,O as normalizeBusinessDateKey,w as parseDailyReportAttachmentQuery,A as reportCreateMessageSchema,E as reportDeleteMessageSchema,_ as reportPublishMessageSchema,T as reportUpdateMessageSchema,x as statusUpdateMessageSchema};
1
+ var y=Object.freeze({tile:Object.freeze({maxWidth:480,maxHeight:320})}),p=t=>Object.hasOwn(y,t);var h="download",g="thumbnail",R="1",N=(t,r,n)=>{let o=`${t}/attachment/${encodeURIComponent(r)}`;switch(n.kind){case"inline":return o;case"download":return`${o}?${new URLSearchParams({[h]:R})}`;case"thumbnail":return`${o}?${new URLSearchParams({[g]:n.variant})}`}},L=t=>{let r=t.getAll(g),n=t.getAll(h);if(r.length>0&&n.length>0)return{kind:"invalid",reason:"conflict"};if(r.length>0){let[o]=r;return r.length===1&&p(o)?{kind:"thumbnail",variant:o}:{kind:"invalid",reason:"thumbnail_variant"}}return n.length>0?n.length===1&&n[0]===R?{kind:"download"}:{kind:"invalid",reason:"download_value"}:{kind:"inline"}};var w=/^(\d{4})([-/])(\d{2})\2(\d{2})$/;var D=t=>t<10?`0${t}`:`${t}`,U=t=>{if(Number.isNaN(t.getTime()))return null;let r=t.getFullYear(),n=D(t.getMonth()+1),o=D(t.getDate());return`${r}-${n}-${o}`},P=t=>{let r=w.exec(t);if(r===null)return null;let[,n,,o,s]=r,i=Number(n),a=Number(o),l=Number(s);if(i<1)return null;let m=new Date(0);return m.setUTCFullYear(i,a-1,l),m.getUTCFullYear()!==i||m.getUTCMonth()!==a-1||m.getUTCDate()!==l?null:`${n}-${o}-${s}`};var O=t=>t==null?null:t instanceof Date?U(t):P(t);var H=t=>typeof t=="string"?JSON.stringify(t):typeof t=="number"||typeof t=="boolean"||t===null||t===void 0?String(t):Array.isArray(t)?"array":typeof t,b=(t,r,n)=>new RangeError(`[daily-report] ${t} must be ${r}; got ${H(n)}`);var $=(t,r,n,o)=>{if(typeof o!="string"||o.trim()==="")throw b("mergeComments: unknownAuthorName","a non-blank string",o);let s=t.map((a,l)=>({id:`legacy-${l}`,authorName:a.name||o,content:a.text||"",isMine:!1,color:a.color||void 0,isLegacy:!0})),i=r.map(a=>({id:a.id,authorName:a.userName||o,content:a.content??"",createdAt:a.createdAt??"",isMine:n?a.userId===n:a.isMine,isLegacy:!1}));return[...s,...i]};var B=t=>{if(typeof t!="object"||t===null)return"unknown";let r=t;return typeof r.kind=="string"?r.kind==="chunk"?"chunk":r.kind==="error"?"error":"unknown":Array.isArray(r.items)?"chunk":typeof r.error=="string"?"error":"unknown"},j=t=>B(t)==="chunk";import{z as e}from"zod";var v=["auth-required","forbidden","resync-required"],V=15e3,Y="lastEventId",z=/^\d{1,15}-\d{1,15}$/,F=t=>z.test(t),x=e.object({name:e.string().nullish(),affiliation:e.string().nullish()}),f=e.object({name:e.string().nullish(),text:e.string().nullish(),color:e.string().nullish()}),S=e.object({id:e.number(),name:e.string().nullish(),color:e.string().nullish()}),c=e.object({id:e.number(),userId:e.string().nullish(),userName:e.string().nullish(),content:e.string().nullish(),createdAt:e.string().nullish(),isMine:e.boolean()}),K=e.object({id:e.string(),fileName:e.string(),fileType:e.string().nullable(),fileSize:e.number().nullable(),createdAt:e.string().nullable(),state:e.enum(["present","absent","unknown"]),hasThumbnail:e.boolean().default(!1)}),u=e.object({reportHubId:e.number(),date:e.string().nullish(),createdAt:e.string().nullish(),author:e.string().nullish(),userId:e.string().nullish(),sourceType:e.string().nullish(),employeeName:e.string().nullish(),updatedBy:e.string().nullish(),updatedAt:e.string().nullish(),category:e.string().nullish(),creationCategory:e.string().nullish(),visitTimeFrom:e.string().nullish(),visitTimeTo:e.string().nullish(),customerName:e.string().nullish(),interviewers:e.array(x),subject:e.string().nullish(),content:e.string().nullish(),externalComments:e.array(f),isRead:e.boolean(),isStarred:e.boolean(),labels:e.array(S),postedComments:e.array(c),attachments:e.array(K).default([])}),I=e.object({type:e.literal("connected")}),A=e.object({type:e.literal("status-update"),reportHubId:e.number(),statusType:e.enum(["star","read"]),value:e.boolean(),clientTempId:e.string(),recipientRawUserId:e.number().optional()}),d=e.string().optional(),T=e.object({type:e.literal("comment-add"),reportHubId:e.number(),comment:c,clientTempId:e.string(),recipientRawUserId:e.number().optional(),sourceType:d}),_=e.object({type:e.literal("comment-delete"),reportHubId:e.number(),commentId:e.number(),clientTempId:e.string(),recipientRawUserId:e.number().optional(),sourceType:d}),E=e.object({type:e.literal("report-create"),reportHubId:e.number(),report:u,clientTempId:e.string(),recipientRawUserId:e.number().optional()}),C=e.object({type:e.literal("report-update"),reportHubId:e.number(),report:u,clientTempId:e.string(),recipientRawUserId:e.number().optional()}),M=e.object({type:e.literal("report-publish"),reportHubId:e.number(),report:u,clientTempId:e.string(),recipientRawUserId:e.number().optional()}),k=e.object({type:e.literal("report-delete"),reportHubId:e.number(),clientTempId:e.string(),sourceType:d}),q=e.discriminatedUnion("type",[I,A,T,_,E,C,M,k]);export{y as DAILY_REPORT_ATTACHMENT_THUMBNAIL_VARIANTS,Y as DAILY_REPORT_SSE_CURSOR_PARAM,V as DAILY_REPORT_SSE_HEARTBEAT_MS,v as DAILY_REPORT_SSE_TERMINAL_EVENTS,N as buildDailyReportAttachmentUrl,T as commentAddMessageSchema,_ as commentDeleteMessageSchema,I as connectedMessageSchema,u as dailyReportDetailSchema,f as dailyReportExternalCommentSchema,x as dailyReportInterviewerSchema,S as dailyReportLabelDefSchema,c as dailyReportPostedCommentSchema,q as dailyReportSseMessageSchema,p as isDailyReportAttachmentThumbnailVariant,F as isDailyReportSseStreamId,j as isIdsStreamChunkLine,$ as mergeComments,O as normalizeBusinessDateKey,L as parseDailyReportAttachmentQuery,E as reportCreateMessageSchema,k as reportDeleteMessageSchema,M as reportPublishMessageSchema,C as reportUpdateMessageSchema,A as statusUpdateMessageSchema};
package/dist/server.js CHANGED
@@ -1,5 +1,5 @@
1
- "use strict";var Bt=Object.defineProperty;var Ea=Object.getOwnPropertyDescriptor;var Ia=Object.getOwnPropertyNames;var xa=Object.prototype.hasOwnProperty;var mr=e=>{throw TypeError(e)};var Ca=(e,t)=>{for(var r in t)Bt(e,r,{get:t[r],enumerable:!0})},Ma=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Ia(t))!xa.call(e,a)&&a!==r&&Bt(e,a,{get:()=>t[a],enumerable:!(n=Ea(t,a))||n.enumerable});return e};var va=e=>Ma(Bt({},"__esModule",{value:!0}),e);var pr=(e,t,r)=>t.has(e)||mr("Cannot "+r);var Ke=(e,t,r)=>(pr(e,t,"read from private field"),r?r.call(e):t.get(e)),Ut=(e,t,r)=>t.has(e)?mr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Ht=(e,t,r,n)=>(pr(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var vi={};Ca(vi,{DAILY_REPORT_ATTACHMENT_THUMBNAIL_MAX_OUTPUT_BYTES:()=>At,DAILY_REPORT_ATTACHMENT_THUMBNAIL_OUTPUT_MEDIA_TYPES:()=>St,DAILY_REPORT_SHARP_THUMBNAIL_DECODE_BUDGET_BYTES:()=>sr,DAILY_REPORT_SHARP_THUMBNAIL_DECODE_WORK_MODEL:()=>at,DAILY_REPORT_SHARP_THUMBNAIL_WORKING_SET_MODEL:()=>lr,DAILY_REPORT_SSE_CATCH_UP_BATCH:()=>Mt,DAILY_REPORT_SSE_VISIBILITY_REFRESH_MS:()=>ir,DailyReportSseReader:()=>je,DailyReportViewerScope:()=>pe,SqlResultCache:()=>He,createDailyReportHandlers:()=>vt,createDailyReportServer:()=>Mi,createDailyReportService:()=>Pt,createEpochStore:()=>ut,createSharpThumbnailRenderer:()=>ma,defineDailyReportSchema:()=>Xn,generateETag:()=>Ve,isStreamIdLte:()=>we,jsonResponseWithETag:()=>ce,predictSharpThumbnailWorkingSetBytes:()=>da,transformJsonArray:()=>Kn});module.exports=va(vi);var ee=()=>Math.floor(performance.now());var ut=e=>({async getEpoch(t){try{let r=await e?.getClient();if(!r)return null;let n=await r.get(t);return n?Number(n):0}catch{return null}},async incrementEpoch(t){try{let r=await e?.getClient();if(!r)return;await r.incr(t)}catch{}}}),He=class{constructor(t,r){this.config=t;this.epochStore=r;this.buckets=new Map;this.inFlight=new Map;this.maybeRefreshAhead=t=>{let r=t.refreshAheadRatio;if(r===void 0)return;let{cacheKey:n}=t,a=this.buckets.get(n);if(!a)return;let o=t.ttlMsOverride??this.config.defaultTtlMs;if(o-(a.expireAt-ee())<o*r||this.inFlight.has(n))return;let i;i=(async()=>{let R=t.epochKey?await this.epochStore.getEpoch(t.epochKey):null,s=await t.fetcher();return this.inFlight.get(n)===i&&this.buckets.set(n,{records:s,expireAt:ee()+o,epoch:R}),s})(),this.inFlight.set(n,i),i.catch(()=>{}).finally(()=>{this.inFlight.get(n)===i&&this.inFlight.delete(n)})};this.getOrFetch=async t=>{let{cacheKey:r,forceRefresh:n,snapshot:a}=t,o=this.buckets.get(r);if(n&&(this.buckets.delete(r),this.inFlight.delete(r)),!n&&o&&o.expireAt>ee())if(t.epochKey){let i=await this.epochStore.getEpoch(t.epochKey);if(i===null||o.epoch===i)return this.maybeRefreshAhead(t),a?o.records.map(R=>structuredClone(R)):o.records;this.buckets.delete(r)}else return this.maybeRefreshAhead(t),a?o.records.map(i=>structuredClone(i)):o.records;if(!n&&this.inFlight.has(r)){let i=await this.inFlight.get(r);return a?i.map(R=>structuredClone(R)):i}let l;l=(async()=>{let i=t.epochKey?await this.epochStore.getEpoch(t.epochKey):null;t.onFetchStart?.();let R=await t.fetcher();if(n||this.inFlight.get(r)===l){let s=ee()+(t.ttlMsOverride??this.config.defaultTtlMs);this.buckets.set(r,{records:R,expireAt:s,epoch:i}),this.buckets.size>500&&this.cleanExpired()}return R})(),n||this.inFlight.set(r,l);try{let i=await l;return a?i.map(R=>structuredClone(R)):i}finally{this.inFlight.get(r)===l&&this.inFlight.delete(r)}};this.clearAll=()=>{this.buckets.clear(),this.inFlight.clear()};this.invalidatePrefix=t=>{for(let r of this.buckets.keys())r.startsWith(t)&&this.buckets.delete(r);for(let r of this.inFlight.keys())r.startsWith(t)&&this.inFlight.delete(r)}}cleanExpired(){let t=ee();for(let[r,n]of this.buckets.entries())n.expireAt<=t&&this.buckets.delete(r)}};var Pa=/^\d{4}-\d{2}-\d{2}$/,ka=/^\d{4}\/\d{2}\/\d{2}$/,yr=e=>e<10?`0${e}`:`${e}`,hr=e=>{if(Number.isNaN(e.getTime()))return null;let t=e.getFullYear(),r=yr(e.getMonth()+1),n=yr(e.getDate());return`${t}-${r}-${n}`};var ie=e=>{if(e==null)return null;if(e instanceof Date)return hr(e);let t=e.trim();if(t==="")return null;if(Pa.test(t))return t;if(ka.test(t))return t.replaceAll("/","-");let r=new Date(t);return hr(r)};var ct="ids-stream";var $t=e=>{let t=2166136261,r=-624069552;for(let n of e){let a=n.reportHubId;t^=a&255,t=Math.imul(t,16777619),t^=a>>>8&255,t=Math.imul(t,16777619),t^=a>>>16&255,t=Math.imul(t,16777619),t^=a>>>24&255,t=Math.imul(t,16777619),r^=a>>>24&255,r=Math.imul(r,16777619),r^=a>>>16&255,r=Math.imul(r,16777619),r^=a>>>8&255,r=Math.imul(r,16777619),r^=a&255,r=Math.imul(r,16777619);let o=n.businessDate;if(o===null)t^=1,t=Math.imul(t,16777619),r^=1,r=Math.imul(r,16777619);else for(let l=0;l<o.length;l++){let i=o.charCodeAt(l);t^=i&255,t=Math.imul(t,16777619),r^=i&255,r=Math.imul(r,16777619)}}return t^=e.length,t=Math.imul(t,16777619),r^=e.length,r=Math.imul(r,16777619),((t>>>0).toString(16).padStart(8,"0")+(r>>>0).toString(16).padStart(8,"0")).replace(/^0+(?=.)/,"")},dt=(e,t)=>e.businessDate!==t.businessDate?e.businessDate===null?1:t.businessDate===null||e.businessDate>t.businessDate?-1:1:t.reportHubId-e.reportHubId,fr=e=>{for(let t=1;t<e.length;t++)if(dt(e[t-1],e[t])>0)return!1;return!0};var Rr=(e,t)=>{let r=e.findIndex(n=>dt({businessDate:n.businessDate,reportHubId:n.reportHubId},t)>0);return r===-1?e.length:r};var ue=(e,t,r=console)=>{let n=a=>typeof a=="string"?[`${t} ${a}`]:[t,a];return{debug:(a,...o)=>{e<=0&&r.debug(...n(a),...o)},info:(a,...o)=>{e<=1&&r.info(...n(a),...o)},warn:(a,...o)=>{e<=2&&r.warn(...n(a),...o)},error:(a,...o)=>{e<=3&&r.error(...n(a),...o)}}};var Ft=Object.freeze({tile:Object.freeze({maxWidth:480,maxHeight:320})}),gr=e=>Object.hasOwn(Ft,e);var La="download",Na="thumbnail",Oa="1";var qt=e=>{let t=e.getAll(Na),r=e.getAll(La);if(t.length>0&&r.length>0)return{kind:"invalid",reason:"conflict"};if(t.length>0){let[n]=t;return t.length===1&&gr(n)?{kind:"thumbnail",variant:n}:{kind:"invalid",reason:"thumbnail_variant"}}return r.length>0?r.length===1&&r[0]===Oa?{kind:"download"}:{kind:"invalid",reason:"download_value"}:{kind:"inline"}};var he=(e,t)=>{let r=setTimeout(e,t);return r.unref?.(),r};var mt=e=>{let{windowMs:t,tallies:r,writeSuppressed:n}=e,a=new Map,o=l=>{let i={since:new Date().toISOString(),count:0,tallies:Object.fromEntries(r.map(s=>[s,0]))};a.set(l,i),he(()=>{a.delete(l),i.count>0&&n(l,i)},t)};return{record:(l,i,R)=>{let s=a.get(l);if(s!==void 0){s.count+=1,s.tallies[i]+=1;return}R(),o(l)}}};var Yt="Cross-site request rejected",Ba="Not Found",Ua=new Set(["same-origin","none"]),Ha=new Set(["GET","HEAD","OPTIONS"]),Sr=(e,t)=>new Response(JSON.stringify({error:{message:t}}),{status:e,headers:{"Content-Type":"application/json","Cache-Control":"no-store","X-Content-Type-Options":"nosniff"}}),$a=()=>Sr(403,Yt),pt=()=>Sr(404,Ba),$e=Object.freeze({navigable:()=>!1,frameworkDataRefusal:()=>null,crossSiteRejection:$a}),Ar=e=>new URL(e.url).pathname.endsWith(".data"),Fa=e=>{let t=e.headers.get("Origin");return t===null?!0:URL.canParse(t)&&new URL(t).host===new URL(e.url).host},Tr=(e,t)=>{let r=e.headers.get("Sec-Fetch-Site");return r===null?!(Ha.has(e.method)||Fa(e)):Ua.has(r)?!1:!(e.method==="GET"&&e.headers.get("Sec-Fetch-Mode")==="navigate"&&e.headers.get("Sec-Fetch-Dest")==="document"&&t.navigable(e))},br=["api","action","sse","attachment"],qa=6e4,Va="refusals",Ya=32,za=/^[a-z-]+$/,Vt=e=>{if(e===null)return"-";let t=e.slice(0,Ya);return za.test(t)&&t===e?e:JSON.stringify(t)},Dr=e=>{let t=mt({windowMs:qa,tallies:br,writeSuppressed:(r,{count:n,since:a,tallies:o})=>{e.warn(`cross_site_rejected_suppressed count=${n} since=${a} routes=${br.map(l=>`${l}:${o[l]}`).join(",")}`)}});return(r,n)=>{let a=()=>{let{headers:o}=n;e.warn(`cross_site_rejected route=${r} site=${Vt(o.get("Sec-Fetch-Site"))} mode=${Vt(o.get("Sec-Fetch-Mode"))} dest=${Vt(o.get("Sec-Fetch-Dest"))} method=${n.method}`)};t.record(Va,r,a)}};var wr=(e,t)=>(r,n)=>{let a=n?"markAttachmentPresent":"markAttachmentMissing";e[a](r).catch(o=>{t.error(`${a} failed attachment=${r} message=${o instanceof Error?o.message:"unknown"}`)})};var ja=6e4/1e3,Wa=5e3/1e3,Ja=new Map([[429,ja],[503,Wa]]),xe=e=>{let t=Ja.get(e);return t===void 0?{}:{"Retry-After":String(t)}},Er="Too many requests",Ga="same-origin",Ka="SAMEORIGIN",Fe=Object.freeze({"X-Content-Type-Options":"nosniff","Cross-Origin-Resource-Policy":Ga,"X-Frame-Options":Ka}),yt=(e,t,r)=>{let n=new Headers({"Content-Type":"application/json","Cache-Control":"no-store",...r.extraHeaders,...Fe});return r.cookie&&n.append("Set-Cookie",r.cookie),new Response(JSON.stringify({error:{message:t}}),{status:e,headers:n})},Ir=(e,t)=>{if(e===null)return!1;for(let r of e.split(",")){let n=r.trim();if((n.startsWith("W/")?n.slice(2):n)===t)return!0}return!1},xr=new Set(["image/png","image/jpeg","image/gif","image/webp","application/pdf","text/plain"]),Xa=/^[\x20-\x7E]+$/,Qa=/^[\w.+-]+\/[\w.+-]+/,zt=e=>e&&Xa.test(e)&&Qa.test(e)?e:null,Cr=e=>encodeURIComponent(e).replace(/['()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`),Mr=e=>e.replace(/[^\x20-\x7E]/g,"_").replace(/["\\]/g,"_"),ht={404:"Attachment not found",413:"Attachment too large",502:"Attachment storage unavailable",503:"Attachment storage busy",504:"Attachment storage timed out"},vr={not_found:404,denied:404,invalid_path:404,too_large:413,unavailable:502,busy:503,deadline:504},ft=e=>typeof e=="string"&&Object.hasOwn(vr,e),Rt=e=>vr[e],Ce="Attachment request failed";var Za=e=>typeof e=="string"?JSON.stringify(e):typeof e=="number"||typeof e=="boolean"||e===null||e===void 0?String(e):Array.isArray(e)?"array":typeof e,qe=(e,t,r)=>new RangeError(`[daily-report] ${e} must be ${t}; got ${Za(r)}`),gt=(e,t)=>new TypeError(`[daily-report] ${e} must be ${t}`);var Pr=32*1024*1024,eo=60,to=4,ro=120,no=2,ao=8*1024*1024,ye=(e,t,r)=>{if(typeof t=="number"&&Number.isSafeInteger(t)&&t>=r)return t;throw qe(e,`an integer >= ${r}`,t)},Me=(e,t,r,n)=>t===void 0?n:ye(e,t,r),oo=[["attachmentThumbnailRenderer",["readAttachment","attachmentIdCodec"]],["readAttachment",["attachmentIdCodec"]],["attachmentIdCodec",["readAttachment"]],["attachmentMaxBytes",["readAttachment"]],["attachmentRateLimitPerMinute",["readAttachment"]],["attachmentConcurrency",["readAttachment"]],["attachmentThumbnailRateLimitPerMinute",["attachmentThumbnailRenderer"]],["attachmentThumbnailConcurrency",["attachmentThumbnailRenderer"]],["attachmentThumbnailCacheBytes",["attachmentThumbnailRenderer"]]],jt=e=>{for(let[t,r]of oo){if(e[t]===void 0)continue;let n=r.find(a=>e[a]===void 0);if(n!==void 0)throw gt(n,`injected when ${t} is given`)}},kr=(e,t)=>(jt({attachmentIdCodec:t.idCodec,readAttachment:t.readAttachment,attachmentThumbnailRenderer:t.thumbnailRenderer,attachmentRateLimitPerMinute:e.attachmentRateLimitPerMinute,attachmentConcurrency:e.attachmentConcurrency,attachmentThumbnailRateLimitPerMinute:e.attachmentThumbnailRateLimitPerMinute,attachmentThumbnailConcurrency:e.attachmentThumbnailConcurrency,attachmentThumbnailCacheBytes:e.attachmentThumbnailCacheBytes}),Object.freeze({originalRateLimitPerMinute:Me("attachmentRateLimitPerMinute",e.attachmentRateLimitPerMinute,1,eo),originalConcurrency:Me("attachmentConcurrency",e.attachmentConcurrency,1,to),thumbnailRateLimitPerMinute:Me("attachmentThumbnailRateLimitPerMinute",e.attachmentThumbnailRateLimitPerMinute,1,ro),thumbnailConcurrency:Me("attachmentThumbnailConcurrency",e.attachmentThumbnailConcurrency,1,no),thumbnailCacheBytes:Me("attachmentThumbnailCacheBytes",e.attachmentThumbnailCacheBytes,0,ao)}));var bt=e=>{let t=ye("limit",e.limit,1),r=ye("maxHeldPerOwner",e.maxHeldPerOwner,1),n=e.queue===null?null:{max:ye("queue.max",e.queue.max,0),maxPerOwner:ye("queue.maxPerOwner",e.queue.maxPerOwner,0),maxWaitMs:ye("queue.maxWaitMs",e.queue.maxWaitMs,1)},a=0,o=[],l=new Map,i=new Map,R=(m,T)=>m.get(T)??0,s=(m,T,A)=>{let S=R(m,T)+A;S<=0?m.delete(T):m.set(T,S)},_=m=>R(i,m)<r,y=m=>(a+=1,s(i,m,1),h(m)),I=()=>{for(;a<t;){let m=o.findIndex(A=>_(A.owner));if(m<0)return;let[T]=o.splice(m,1);s(l,T.owner,-1),T.grant(y(T.owner))}},h=m=>{let T=!1;return()=>{T||(T=!0,a-=1,s(i,m,-1),I())}};return{acquire:(m,T)=>{if(T.aborted)return Promise.resolve(null);if(a<t&&_(m))return Promise.resolve(y(m));if(n===null||o.length>=n.max||R(l,m)>=n.maxPerOwner)return Promise.resolve(null);let{maxWaitMs:A}=n,S=x=>{let H=()=>{let B=o.indexOf(v);B<0||(o.splice(B,1),s(l,m,-1),U(),x(null))},D=he(H,A),U=()=>{clearTimeout(D),T.removeEventListener("abort",H)},v={owner:m,grant:B=>{U(),x(B)}};o.push(v),s(l,m,1),T.addEventListener("abort",H,{once:!0})};return new Promise(S)}}};var io=1024,so=6e4,lo=e=>{ye("limitPerMinute",e,1);let t=new Map,r=(a,o)=>{o<=a.lastRefillMs||(a.tokens=Math.min(e,a.tokens+(o-a.lastRefillMs)*e/6e4),a.lastRefillMs=o)},n=(a,o)=>{let l=t.get(a);l&&t.delete(a);let i=l??{tokens:e,lastRefillMs:o};r(i,o),t.set(a,i);for(let R of t.keys()){if(t.size<=io)break;t.delete(R)}return i};return{consume:(a,o)=>{let l=n(a,o);return l.tokens<1?!1:(l.tokens-=1,!0)},refund:(a,o,l)=>{let i=t.get(a);i&&(r(i,o),i.tokens=Math.min(e,i.tokens+l))}}},Xe=e=>{let{reason:t,logger:r}=e,n=lo(e.limitPerMinute),a=e.variant===null?"":` variant=${e.variant}`,o=mt({windowMs:so,tallies:[t],writeSuppressed:(l,{count:i,since:R})=>{r.warn(`${t}_suppressed count=${i} since=${R} viewer=${l}${a}`)}});return{spend:({attachmentId:l,internalUserId:i,fail:R})=>n.consume(i,ee())?null:(o.record(i,t,()=>r.warn(`429 attachment=${l} viewer=${i}${a} reason=${t}`)),R(429,Er,xe(429))),refund:(l,i)=>{n.refund(l,ee(),i)}}};var uo=256*1024,Lr=6e4,co=e=>Math.ceil(e/2),mo=new Uint8Array(new ArrayBuffer(0)),po=(e,t)=>{let r=e,n=0,a,o=()=>{clearTimeout(a),r=mo,t()},l=i=>{clearTimeout(a),a=he(()=>{i.error(new Error(`attachment body idle for ${Lr} ms`)),o()},Lr)};return new ReadableStream({start(i){l(i)},pull(i){let R=Math.min(n+uo,r.byteLength);if(R>n&&i.enqueue(r.slice(n,R)),n=R,n>=r.byteLength){i.close(),o();return}l(i)},cancel(){o()}},{highWaterMark:0})},Nr=e=>{let{service:t,encodeUserId:r,resolveViewerScope:n,logger:a,recordObjectState:o}=e,l=t.attachmentDelivery,i=Xe({reason:"rate_limit",limitPerMinute:e.rateLimitPerMinute,logger:a,variant:null}),R=bt({limit:e.concurrency,maxHeldPerOwner:co(e.concurrency),queue:null});return async s=>{let{request:_,delivery:y,attachmentId:I,internalUserId:h,readAttachment:m,cookie:T,fail:A}=s,S=l.maxBytes,x=i.spend(s);if(x)return x;let H=await n(_),D=await t.getAttachmentForUser(H,I,h);if(!D)return a.warn(`404 attachment=${I} viewer=${h} reason=not_visible`),A(404,"Attachment not found");if(D.fileSize!=null&&D.fileSize>S)return a.warn(`413 attachment=${I} viewer=${h} reason=db_size`),A(413,"Attachment too large");let U=await R.acquire(h,_.signal);if(!U)return _.signal.aborted?(a.info(`503 attachment=${I} viewer=${h} reason=aborted`),A(503,"Attachment request aborted")):(a.warn(`503 attachment=${I} viewer=${h} reason=concurrency`),A(503,"Too many concurrent downloads",xe(503)));let v=!1;try{let B=_.method==="HEAD",k=await m(D.filePath,{maxBytes:S,head:B,principal:r(h),signal:_.signal});if(_.signal.aborted)return a.info(`503 attachment=${I} viewer=${h} reason=aborted`),A(503,"Attachment request aborted");if(!k.ok){if(!ft(k.reason))return a.error(`500 attachment=${I} viewer=${h} reason=port_contract code=failure_reason`),A(500,Ce);let V=Rt(k.reason);return k.reason==="not_found"&&o(I,!1),a.warn(`${V} attachment=${I} viewer=${h} reason=${k.reason} code=${k.code??"-"}`),A(V,ht[V],xe(V))}if(k.bytes.byteLength>S)return a.error(`500 attachment=${I} viewer=${h} reason=port_contract code=over_max_bytes`),A(500,Ce);let F=zt(D.fileType)??zt(k.contentType),C=F!==null&&xr.has(F),P=C?F:"application/octet-stream",$=C&&y.kind!=="download"?"inline":"attachment",M=k.size??k.bytes.byteLength,L=new Headers({"Content-Type":P,"Content-Length":String(M),"Content-Disposition":`${$}; filename="${Mr(D.fileName)}"; filename*=UTF-8''${Cr(D.fileName)}`,"Cache-Control":"private, no-store","Content-Security-Policy":"default-src 'none'; sandbox",...Fe});return T&&L.append("Set-Cookie",T),o(I,!0),a.info(`200 attachment=${I} viewer=${h} type=${P} disposition=${$} bytes=${M}`),B?new Response(null,{status:200,headers:L}):(v=!0,new Response(po(k.bytes,U),{status:200,headers:L}))}finally{v||U()}}};var me=Object.freeze({queueWaitMs:3e4,readMs:3e4,renderMs:1e4,transferMarginMs:5e3}),Rs=me.queueWaitMs+me.readMs+me.renderMs+me.transferMarginMs;var Or=require("crypto"),Ve=e=>{let t=JSON.stringify(e);return`"${(0,Or.createHash)("sha256").update(t).digest("hex")}"`};var Hr=require("buffer"),$r=new Set([194,198,202,206]),yo=new Set([192,193,194,195]),Fr=216,ho=217,qr=218,fo=4,Ro=64,go=2,Br=8,Ur=28,De=12,Wt=8,bo=20,Vr=De+Wt+10,So=2,Se=(e,t)=>e[t]<<8|e[t+1],Ye=(e,t,r)=>{let n=0;for(let a=r-1;a>=0;a-=1)n=n*256+e[t+a];return n},fe=(e,t,r)=>{if(e.byteLength<t+r.length)return!1;for(let n=0;n<r.length;n+=1)if(e[t+n]!==r.charCodeAt(n))return!1;return!0},Yr=e=>e>=192&&e<=207&&e!==196&&e!==200&&e!==204,zr=e=>({marker:0,body:0,length:0,end:0,stepsLeft:e}),jr=e=>(e.stepsLeft-=1,e.stepsLeft>=0),Wr=e=>e[0]===255&&e[1]===Fr,Jr=(e,t,r)=>{let n=t;for(;;){if(n>=e.byteLength||e[n]!==255)return null;do{if(!jr(r))return null;n+=1}while(n<e.byteLength&&e[n]===255);if(n>=e.byteLength)return null;let a=e[n];if(n+=1,a===ho)return"eoi";if(a===0||a===Fr)return null;if(a===1||a>=208&&a<=215)continue;if(n+2>e.byteLength)return null;let o=Se(e,n),l=n+o;return o<2||l>e.byteLength?null:(r.marker=a,r.body=n+2,r.length=o,r.end=l,"segment")}},Ao=(e,t,r)=>{let n=e.byteLength,a=t;for(;;){let o=e.indexOf(255,a);if(o<0)return n;for(;;){if(!jr(r))return null;if(o+1>=n)return n;let l=e[o+1];if(l===255)o+=1;else if(l===0||l>=208&&l<=215){if(o+=2,o>=n||e[o]!==255)break}else return o}a=o}},Gr=(e,{marker:t,body:r,length:n})=>{if(n<8)return null;let a=Se(e,r+1),o=Se(e,r+3),l=e[r+5];if(o===0||a===0||l===0||n!==8+3*l)return null;let i=[];for(let R=0;R<l;R+=1){let s=e[r+7+3*R],_=s>>4,y=s&15;if(_<1||_>4||y<1||y>4)return null;i.push({id:e[r+6+3*R],horizontal:_,vertical:y})}return{marker:t,width:o,height:a,components:i}},Kr=(e,{body:t,length:r})=>{if(r<3)return null;let n=e[t];return n<1||n>fo||r!==6+2*n?null:Array.from({length:n},(a,o)=>e[t+1+2*o])},Xr=(e,t)=>({width:e.width,height:e.height,components:e.components.map(({horizontal:r,vertical:n})=>({horizontal:r,vertical:n})),multiScan:$r.has(e.marker)||t<e.components.length}),Jt=e=>{if(!Wr(e))return null;let t=zr(e.byteLength),r=null;for(let n=2;;){if(Jr(e,n,t)!=="segment")return null;if(Yr(t.marker)){if(r!==null||(r=Gr(e,t),r===null))return null}else if(t.marker===qr){if(r===null)return null;let a=Kr(e,t);return a===null?null:Xr(r,a.length)}n=t.end}},Qr=e=>{let t=Math.max(...e.components.map(n=>n.horizontal)),r=Math.max(...e.components.map(n=>n.vertical));return e.components.map(({horizontal:n,vertical:a})=>{let o=Math.ceil(e.width*n/(t*Br)),l=Math.ceil(e.height*a/(r*Br));return Math.ceil(o/n)*n*Math.ceil(l/a)*a})},Zr=e=>e.multiScan?Qr(e).reduce((r,n)=>r+n,0)*Ro*go:0,To=896,en=(e,{maxBlockVisits:t,maxWalkSteps:r})=>{if(!Wr(e))return null;let n=Hr.Buffer.from(e.buffer,e.byteOffset,e.byteLength),a=zr(r),o=null,l=null,i=new Map,R=0,s=0,_=0;for(let y=2;;){let I=Jr(e,y,a);if(I===null)return null;if(I==="eoi")return l===null?null:{header:l,blockVisits:s};if(y=a.end,Yr(a.marker)){if(o!==null||!yo.has(a.marker)||(o=Gr(e,a),o===null))return null;let h=Qr(o);i=new Map;for(let[m,T]of o.components.entries()){let A=i.get(T.id);i.set(T.id,A===void 0?h[m]:Math.max(A,h[m]))}R=o.components.length*($r.has(o.marker)?To:1)}else if(a.marker===qr){if(o===null||_===R)return null;let h=Kr(e,a);if(h===null)return null;for(let T of h){let A=i.get(T);if(A===void 0)return null;s+=A}if(_+=1,l===null&&(l=Xr(o,h.length)),s>t||!l.multiScan)return{header:l,blockVisits:s};let m=Ao(n,a.end,a);if(m===null)return null;y=m}}},tn=e=>{if(e.byteLength<24||Se(e,8)!==0||Se(e,10)!==13||!fe(e,12,"IHDR"))return null;let t=Se(e,16)*65536+Se(e,18),r=Se(e,20)*65536+Se(e,22);return t===0||r===0||t>2147483647||r>2147483647?null:{width:t,height:r}},Do=e=>{if(fe(e,De,"VP8 ")){if(e.byteLength<30||(e[20]&1)!==0||e[23]!==157||e[24]!==1||e[25]!==42)return null;let t=Ye(e,26,2)&16383,r=Ye(e,28,2)&16383;return t===0||r===0?null:{width:t,height:r}}if(fe(e,De,"VP8L")){if(e.byteLength<25||e[20]!==47)return null;let t=Ye(e,21,4);return{width:(t&16383)+1,height:Math.floor(t/16384)%16384+1}}return fe(e,De,"VP8X")?e.byteLength<Vr?null:{width:Ye(e,24,3)+1,height:Ye(e,27,3)+1}:null},rn=e=>{if(tn(e)===null||e.byteLength<=Ur)return null;switch(e[Ur]){case 0:return!1;case 1:return!0;default:return null}},nn=(e,t)=>{if(fe(e,De,"VP8 "))return"lossy";if(fe(e,De,"VP8L"))return"lossless";if(!fe(e,De,"VP8X")||e.byteLength<Vr)return null;if((e[bo]&So)!==0)return"animated";let r=!1,n=t;for(let a=De;a+Wt<=e.byteLength;){if(n-=1,n<0)return null;if(fe(e,a,"VP8L"))return"lossless";if(fe(e,a,"VP8 "))return r?"lossy-alpha":"lossy";fe(e,a,"ALPH")&&(r=!0);let o=Ye(e,a+4,4);a+=Wt+o+o%2}return null},an={png:tn,jpeg:Jt,webp:Do};var St=Object.freeze(["image/webp","image/jpeg","image/png"]),At=1024*1024;var wo=new Set(["image/png","image/jpeg","image/gif","image/webp"]),_o={"image/webp":"webp","image/jpeg":"jpeg","image/png":"png"},Eo=new Set(St),Io=e=>typeof e=="string"&&Eo.has(e),xo=256,Tt=(e,t)=>e.fileType===null||!wo.has(e.fileType)?!1:e.fileSize===null||e.fileSize<=t,Co=[137,80,78,71,13,10,26,10],Mo=[255,216,255],vo=[[71,73,70,56,55,97],[71,73,70,56,57,97]],Po=[82,73,70,70],ko=[87,69,66,80],Qe=(e,t,r)=>{if(e.byteLength<r+t.length)return!1;for(let[n,a]of t.entries())if(e[r+n]!==a)return!1;return!0},Gt=e=>{if(Qe(e,Co,0))return"png";if(Qe(e,Mo,0))return"jpeg";for(let t of vo)if(Qe(e,t,0))return"gif";return Qe(e,Po,0)&&Qe(e,ko,8)?"webp":null},on=e=>{let t=JSON.stringify([e.rendererId,e.box.maxWidth,e.box.maxHeight,e.attachmentId,e.filePath,e.fileType,e.fileSize]);return{key:t,etag:Ve([t])}},sn=(e,t)=>{if(!Io(e.contentType))return"content_type";if(!(e.bytes instanceof Uint8Array))return"bytes";if(e.bytes.byteLength===0)return"empty";if(e.bytes.byteLength>At)return"too_large";let r=_o[e.contentType];if(Gt(e.bytes)!==r)return"signature";let n=an[r](e.bytes);return n===null||n.width>t.maxWidth||n.height>t.maxHeight?"dimensions":null},ln=e=>{ye("maxBytes",e.maxBytes,0),ye("maxEntries",e.maxEntries,0);let t=new Map,r=0,n=a=>{let o=t.get(a);o&&(t.delete(a),r-=o.weight)};return{get:a=>{let o=t.get(a);if(o)return t.delete(a),t.set(a,o),o.entry},set:(a,o)=>{n(a);let l=(o.kind==="thumbnail"?o.bytes.byteLength:0)+xo;if(l>e.maxBytes||e.maxEntries===0)return;let i=o.kind==="thumbnail"?{kind:"thumbnail",bytes:o.bytes.slice(),contentType:o.contentType}:o;t.set(a,{entry:i,weight:l}),r+=l;for(let R of t.keys()){if(r<=e.maxBytes&&t.size<=e.maxEntries)break;n(R)}}}};var un=()=>{let e=new Map;return{join:(t,r,n)=>{let a=()=>{let R=new AbortController,s=()=>{e.get(t)?.controller===R&&e.delete(t)},y={promise:n(R.signal).finally(s),controller:R,waiters:0};return e.set(t,y),y},o=e.get(t)??a();o.waiters+=1;let l=()=>{o.waiters-=1,!(o.waiters>0)&&(o.controller.abort(),e.get(t)===o&&e.delete(t))};r.aborted?l():r.addEventListener("abort",l,{once:!0});let i=()=>{r.removeEventListener("abort",l)};return o.promise.finally(i)}}};var Kt=e=>{let{budgetMs:t,flightSignal:r,call:n,onOverrun:a,onStuck:o}=e,l=ee(),i=new AbortController,R=!1,s,_,y=()=>{o(ee()-l)},I=D=>{s=he(()=>{R=!0,D({timedOut:!0}),_=he(y,t),i.abort(new DOMException(`stage exceeded its ${t} ms budget`,"TimeoutError"))},t)},h=new Promise(I),m=AbortSignal.any([r,i.signal]),T=D=>{D(n(m))},A=new Promise(T),S=D=>(clearTimeout(s),clearTimeout(_),R&&a(ee()-l,D.kind==="error"?{error:D.error}:null),D),x=A.then(D=>S({kind:"value",value:D}),D=>S({kind:"error",error:D}));return{outcome:Promise.race([A.then(D=>({timedOut:!1,value:D})),h]),settled:x}};var ve={404:"Attachment not found",500:Ce,502:"Thumbnail unavailable",503:"Thumbnail temporarily unavailable",504:"Thumbnail storage timed out"},cn=(e,t)=>{if(typeof e!="object"||e===null)return{failure:{kind:"failure",status:500,reason:"port_contract",code:"result"}};let r=e;if(!r.ok)return r.reason==="unsupported"?{entry:{kind:"unrenderable",reason:"unsupported"}}:r.reason==="failed"?{failure:{kind:"failure",status:502,reason:"render_failed"}}:{failure:{kind:"failure",status:500,reason:"port_contract",code:"failure_reason"}};let n=sn(r,t);return n!==null?{failure:{kind:"failure",status:500,reason:"port_contract",code:n}}:{entry:{kind:"thumbnail",bytes:r.bytes,contentType:r.contentType}}},Lo=e=>{let t=new AbortController,r=()=>{t.abort()},n=he(r,me.queueWaitMs);return e.addEventListener("abort",r,{once:!0}),e.aborted&&r(),{signal:t.signal,end:()=>{clearTimeout(n),e.removeEventListener("abort",r)}}},dn=()=>{},No=(e,t)=>t.aborted?Promise.resolve():new Promise(r=>{let n=()=>{t.removeEventListener("abort",n),r()};t.addEventListener("abort",n,{once:!0}),e.then(n)}),mn=e=>{let{gate:t,cache:r,maxBytes:n,encodeUserId:a,recordObjectState:o,logger:l}=e,i=new Map,R=(h,m)=>{let T=m.then(dn,dn);i.set(h,T);let A=()=>{i.get(h)===T&&i.delete(h)};T.then(A)},s=async(h,m)=>{let T=i.get(h.key);if(T===void 0)return t.acquire(h.owner,m);let A=Lo(m);try{if(await No(T,A.signal),A.signal.aborted)return null;let S=r.get(h.key);return S!==void 0?{...S,identity:"verified"}:await t.acquire(h.owner,A.signal)}finally{A.end()}},_=(h,m)=>{if(h.fileSize===null)return m.kind==="exact"?"verified":"unrecorded";if(m.kind==="exact"?m.bytes===h.fileSize:h.fileSize>m.maxBytes)return"verified";let A=m.kind==="exact"?String(m.bytes):`>${m.maxBytes}`;return l.warn(`size_mismatch expected=${h.fileSize} got=${A} attachment=${h.attachmentId} viewer=${h.owner} variant=thumbnail`),"unverified"},y=(h,m)=>(T,A)=>{let S=A===null?"":` message=${A.error instanceof Error?A.error.message:"unknown"}`;l.warn(`${h}_overrun ms=${T} attachment=${m.attachmentId} viewer=${m.owner} variant=thumbnail${S}`)},I=(h,m)=>T=>{l.warn(`${h}_stuck ms=${T} attachment=${m.attachmentId} viewer=${m.owner} variant=thumbnail`)};return async(h,m)=>{let T=await s(h,m);if(T===null)return{kind:"failure",status:503,reason:m.aborted?"aborted":"queue"};if(typeof T!="function")return T;let A=T,S=null;try{if(m.aborted)return{kind:"failure",status:503,reason:"aborted"};let x=r.get(h.key);if(x!==void 0)return{...x,identity:"verified"};let H=Kt({budgetMs:me.readMs,flightSignal:m,call:Y=>h.readAttachment(h.filePath,{maxBytes:n,head:!1,principal:a(h.owner),signal:Y}),onOverrun:y("read",h),onStuck:I("read",h)}),D=await H.outcome;if(D.timedOut)return S=H.settled,m.aborted?{kind:"failure",status:503,reason:"aborted"}:{kind:"failure",status:504,reason:"read_timeout"};if(m.aborted)return{kind:"failure",status:503,reason:"aborted"};let U=D.value;if(!U.ok&&U.reason!=="too_large")return ft(U.reason)?(U.reason==="not_found"&&o(h.attachmentId,!1),{kind:"failure",status:Rt(U.reason),reason:U.reason,code:U.code}):{kind:"failure",status:500,reason:"port_contract",code:"failure_reason"};if(U.ok&&U.bytes.byteLength>n)return{kind:"failure",status:500,reason:"port_contract",code:"over_max_bytes"};let v=_(h,U.ok?{kind:"exact",bytes:U.bytes.byteLength}:{kind:"over",maxBytes:n}),B=Y=>{v==="verified"&&r.set(h.key,Y)},k=Y=>(B(Y),{...Y,identity:v});if(!U.ok)return k({kind:"unrenderable",reason:"too_large"});let F=Gt(U.bytes);if(F===null)return k({kind:"unrenderable",reason:"signature"});let C=Kt({budgetMs:me.renderMs,flightSignal:m,call:Y=>h.renderer.render(U.bytes,{format:F,maxWidth:h.box.maxWidth,maxHeight:h.box.maxHeight,signal:Y}),onOverrun:y("render",h),onStuck:I("render",h)}),P=Y=>{if(Y.kind==="error")return;let te=cn(Y.value,h.box);"entry"in te&&B(te.entry)},$=null,M=()=>($===null&&($=C.settled.then(P),R(h.key,$)),$);m.addEventListener("abort",M,{once:!0});let L=await C.outcome.finally(()=>m.removeEventListener("abort",M));if(L.timedOut||m.aborted)return S=M(),m.aborted?{kind:"failure",status:503,reason:"aborted"}:{kind:"failure",status:502,reason:"render_timeout"};let V=cn(L.value,h.box);return"entry"in V?k(V.entry):V.failure}finally{S===null?A():S.then(A,A)}}};var hn=10,Oo=1/hn,pn=1-Oo,Bo=1024,Uo=64,Ho=8,yn="private, no-cache",$o="no-store",Fo=Object.freeze({verified:"",unverified:" identity=unverified",unrecorded:" size=unrecorded"}),qo=e=>{switch(e.status){case 404:case 502:case 504:return"warn";case 500:return"error";case 503:return e.reason==="aborted"?"info":"warn"}},fn=e=>{let{service:t,encodeUserId:r,resolveViewerScope:n,logger:a,recordObjectState:o}=e,l=t.attachmentDelivery,i=Xe({reason:"rate_limit",limitPerMinute:e.rateLimitPerMinute,logger:a,variant:"thumbnail"}),R=Xe({reason:"revalidation_rate_limit",limitPerMinute:e.rateLimitPerMinute*hn,logger:a,variant:"thumbnail"}),s=bt({limit:e.concurrency,maxHeldPerOwner:e.concurrency,queue:{max:Uo,maxPerOwner:Ho,maxWaitMs:me.queueWaitMs}}),_=ln({maxBytes:e.cacheBytes,maxEntries:Bo}),y=un(),I=mn({gate:s,cache:_,maxBytes:l.maxBytes,encodeUserId:r,recordObjectState:o,logger:a}),h=(A,S,x,H)=>{let D=`attachment=${A.attachmentId} viewer=${A.internalUserId} variant=thumbnail cache=${H}`;if(S.kind==="failure")return a[qo(S)](`${S.status} ${D} reason=${S.reason} code=${S.code??"-"}`),A.fail(S.status,ve[S.status],xe(S.status));let U=Fo[S.identity];if(S.kind==="unrenderable")return a.info(`404 ${D} reason=${S.reason}${U}`),A.fail(404,ve[404]);let v=S.identity==="verified"?{"Cache-Control":yn,ETag:x}:{"Cache-Control":$o},B=new Headers({"Content-Type":S.contentType,"Content-Length":String(S.bytes.byteLength),...v,"Content-Security-Policy":"default-src 'none'; sandbox",...Fe});return A.cookie&&B.append("Set-Cookie",A.cookie),a.info(`200 ${D} type=${S.contentType} bytes=${S.bytes.byteLength}${U}`),new Response(S.bytes,{status:200,headers:B})},m=A=>i.spend(A),T=(A,S)=>S?R.spend(A):m(A);return async(A,S)=>{let{request:x,attachmentId:H,internalUserId:D,readAttachment:U,cookie:v,fail:B}=A,k=Ft[S],F=l.thumbnailRenderer;if(!F)return B(404,ve[404]);let C=x.headers.get("If-None-Match"),P=C!==null,$=T(A,P);if($)return $;let M=await n(x),L=await t.getAttachmentForUser(M,H,D),Y=L!==null&&Tt(L,l.maxBytes)?on({rendererId:F.id,box:k,attachmentId:H,filePath:L.filePath,fileType:L.fileType,fileSize:L.fileSize}):null;if(Y&&Ir(C,Y.etag)){let re=new Headers({"Cache-Control":yn,ETag:Y.etag,...Fe});return v&&re.append("Set-Cookie",v),a.info(`304 attachment=${H} viewer=${D} variant=thumbnail cache=revalidated`),new Response(null,{status:304,headers:re})}if(P){let re=m(A);if(re)return re}if(!L)return a.warn(`404 attachment=${H} viewer=${D} variant=thumbnail reason=not_visible`),B(404,ve[404]);if(!Y)return i.refund(D,pn),a.info(`404 attachment=${H} viewer=${D} variant=thumbnail reason=not_eligible`),B(404,ve[404]);let{key:te,etag:G}=Y,de=_.get(te);if(de)return i.refund(D,pn),h(A,{...de,identity:"verified"},G,"hit");let Ee=re=>I({key:te,attachmentId:H,filePath:L.filePath,fileSize:L.fileSize,box:k,owner:D,readAttachment:U,renderer:F},re),Q;try{Q=await y.join(te,x.signal,Ee)}catch(re){return a.error(`500 attachment=${H} viewer=${D} variant=thumbnail cache=miss reason=port_exception message=${re instanceof Error?re.message:"unknown"}`),B(500,ve[500])}return h(A,Q,G,"miss")}};var Vo='[daily-report] params.token must be passed by the route that mounts attachment.loader; declare a "token" route parameter ({apiBasePath}/attachment/{token})',Yo=()=>yt(403,Yt,{cookie:null}),Rn=Object.freeze({navigable:e=>{let{kind:t}=qt(new URL(e.url).searchParams);return t==="inline"||t==="download"},frameworkDataRefusal:()=>yt(404,ht[404],{cookie:null}),crossSiteRejection:Yo}),gn=e=>{let{authenticate:t,service:r,encodeUserId:n,resolveViewerScope:a,logger:o}=e,l=r.attachmentDelivery,i=kr(e.tuning,l),R={service:r,encodeUserId:n,resolveViewerScope:a,logger:o,recordObjectState:wr(r,o)},s=Nr({...R,rateLimitPerMinute:i.originalRateLimitPerMinute,concurrency:i.originalConcurrency}),_=fn({...R,rateLimitPerMinute:i.thumbnailRateLimitPerMinute,concurrency:i.thumbnailConcurrency,cacheBytes:i.thumbnailCacheBytes});return async({request:y,params:I})=>{let h=null,m=(T,A,S={})=>yt(T,A,{cookie:h,extraHeaders:S});try{let{user:T,cookie:A}=await t(y,{failureRedirect:null});if(h=A??null,!T)return m(401,"Unauthorized");let S=qt(new URL(y.url).searchParams);if(S.kind==="invalid")return m(400,"Invalid attachment request");if(S.kind==="thumbnail"&&y.method!=="GET")return m(405,"Method not allowed",{Allow:"GET"});if(y.method!=="GET"&&y.method!=="HEAD")return m(405,"Method not allowed",{Allow:"GET, HEAD"});let{idCodec:x,readAttachment:H}=l;if(!(x&&H))return m(404,"Attachment not found");if(I.token===void 0)throw new Error(Vo);let D=x.decode(I.token);if(D===null||!Number.isSafeInteger(D)||D<=0)return m(400,"Invalid attachment token");let U=await r.getUserIdByExternalId(T.id);if(!U)return m(403,"Forbidden");let v={request:y,delivery:S,attachmentId:D,internalUserId:U,readAttachment:H,cookie:h,fail:m};return S.kind==="thumbnail"?await _(v,S.variant):await s(v)}catch(T){if(T instanceof Response)throw T;return o.error(`500 attachment=? viewer=? reason=unexpected message=${T instanceof Error?T.message:"unknown"}`),m(500,Ce)}}};var zo=ue(1,"[Response]"),ce=(e,t,r,n=200,a=zo)=>{let o=Ve(r),l=e.headers.get("If-None-Match");a.info(`[jsonResponseWithETag] ETag: ${o}, If-None-Match: ${l}`);let i=new Headers({"Content-Type":"application/json","Cache-Control":"private, max-age=0, must-revalidate","X-Content-Type-Options":"nosniff","X-Frame-Options":"DENY","Content-Security-Policy":"default-src 'none'",ETag:o});return t&&i.append("Set-Cookie",t),e.method==="GET"&&n===200&&l===o?new Response(null,{status:304,headers:i}):new Response(JSON.stringify(r),{status:n,headers:i})};var wt=e=>e.method==="HEAD"?AbortSignal.abort():e.signal,bn=Object.freeze(["GET","HEAD"]);var _t=30,Dn=4e3,jo="stream interrupted by server error",Wo=/^\d{4}-\d{2}-\d{2}$/,Jo=15e3,wn=Symbol("ids-stream-heartbeat"),Sn=()=>{},Et=e=>e.return(void 0).then(Sn,Sn),Go=()=>{let e;return{fired:new Promise(r=>{e=setTimeout(()=>r(wn),Jo)}),stop:()=>clearTimeout(e)}},Ko=/^[0-9a-f]{1,16}$/,_n=Object.freeze({...$e,frameworkDataRefusal:({params:e})=>e.endpoint===ct?pt():null}),Xo=e=>{let t=e.searchParams.get("cursor_report_hub_id"),r=e.searchParams.get("cursor_business_date"),n=e.searchParams.get("cursor_snapshot"),a=n!==null&&Ko.test(n)?n:null;if(t===null)return r===null?{cursor:null,snapshot:a}:{invalid:!0};let o=Number.parseInt(t,10);return!Number.isSafeInteger(o)||String(o)!==t||o<=0?{invalid:!0}:r===null?{cursor:{businessDate:null,reportHubId:o},snapshot:a}:Wo.test(r)?{cursor:{businessDate:r,reportHubId:o},snapshot:a}:{invalid:!0}};async function*An(e,t,r,n){let a=t?Rr(e,t):0,o=!0;for(;;){let l=e.slice(a,a+(o?r:Dn));a+=l.length;let i=a>=e.length,R=l[l.length-1];if(yield{kind:"chunk",items:l,nextCursor:i||!R?null:{businessDate:R.businessDate,reportHubId:R.reportHubId},isLast:i,...o?{total:e.length}:{},...o?{streamAnchor:n.streamAnchor}:{},snapshot:n.snapshot,...o&&n.restarted?{restarted:!0}:{}},o=!1,i)return}}var En=e=>{let t=new Headers({"Content-Type":"application/x-ndjson; charset=utf-8","Cache-Control":"private, no-cache, no-transform","X-Content-Type-Options":"nosniff"});return e&&t.append("Set-Cookie",e),t},Tn=(e,t,r,n)=>{let a=new TextEncoder,o=!1,l=null,i=new ReadableStream({async pull(R){if(o||r.aborted){await Et(t);try{R.close()}catch{}return}let s=Go();try{l===null&&(l=t.next());let _=await Promise.race([l,s.fired]);if(s.stop(),_===wn){if(o||r.aborted){await Et(t);try{R.close()}catch{}return}R.enqueue(a.encode(`
2
- `));return}l=null;let{value:y,done:I}=_;if(I){R.close();return}if(o||r.aborted){await Et(t);try{R.close()}catch{}return}R.enqueue(a.encode(`${JSON.stringify(y)}
3
- `))}catch(_){if(s.stop(),l=null,o||r.aborted)return;n.error(`ids-stream emission failed: ${_ instanceof Error?_.message:String(_)}`);try{let y={kind:"error",error:jo};R.enqueue(a.encode(`${JSON.stringify(y)}
4
- `)),R.close()}catch{}}},cancel(){o=!0,Et(t)}});return new Response(i,{status:200,headers:En(e)})},In=e=>{let{service:t,logger:r}=e;return{methods:bn,handle:async(n,a,o,l,i)=>{let R=Xo(n);if("invalid"in R)return ce(o,a,{error:{message:"Invalid cursor"}},400);let s=wt(o);if(s.aborted)return new Response(null,{status:200,headers:En(a)});let _=n.searchParams.get("forceRefresh")==="true",y=!1,I=null,h=null,m=new Promise((S,x)=>{I=S,h=x});m.catch(()=>{});let T=t.getDailyReportIdsByExternalId(i,l.id,{forceRefresh:_,onFetchStart:R.cursor?void 0:()=>{y=!0,t.readSseStreamAnchor().then(S=>t.getDailyReportIdsFirstPageByExternalId(i,l.id,_t).then(x=>({items:x,streamAnchor:S}))).then(S=>I?.(S),S=>h?.(S))}});if(T.catch(()=>{}),R.cursor){let{items:S,streamAnchor:x}=await T,H=$t(S),D=R.snapshot!==null&&R.snapshot===H;return Tn(a,An(S,D?R.cursor:null,_t,{snapshot:H,restarted:!D,streamAnchor:x}),s,r)}let A=(async function*(){let S=await Promise.race([T.then(D=>({kind:"full",source:D}),D=>({kind:"full-error",error:D})),m.then(D=>({kind:"page",page:D}),()=>({kind:"page-error"}))]),x=null,H=!1;if(S.kind==="full")x=S.source;else if(S.kind==="page"){let{items:D,streamAnchor:U}=S.page;if(D.length<_t){yield{kind:"chunk",items:D,nextCursor:null,isLast:!0,total:D.length,streamAnchor:U};return}yield{kind:"chunk",items:D,nextCursor:null,isLast:!1,provisional:!0},H=!0}else if(S.kind==="full-error"&&y){let D=await m.catch(()=>null);D&&D.items.length>0&&(yield{kind:"chunk",items:D.items,nextCursor:null,isLast:!1,provisional:!0})}x===null&&(x=await T),yield*An(x.items,null,H?Dn:_t,{snapshot:$t(x.items),streamAnchor:x.streamAnchor})})();return Tn(a,A,s,r)}}};var Yn=require("@aiquants/sse"),_e=require("@aiquants/sse/server");var b=require("zod");var xn=15e3,Cn="lastEventId",Qo=/^\d{1,15}-\d{1,15}$/,Mn=e=>Qo.test(e),Zo=b.z.object({name:b.z.string().nullish(),affiliation:b.z.string().nullish()}),ei=b.z.object({name:b.z.string().nullish(),text:b.z.string().nullish(),color:b.z.string().nullish()}),ti=b.z.object({id:b.z.number(),name:b.z.string().nullish(),color:b.z.string().nullish()}),vn=b.z.object({id:b.z.number(),userId:b.z.string().nullish(),userName:b.z.string().nullish(),content:b.z.string().nullish(),createdAt:b.z.string().nullish(),isMine:b.z.boolean()}),ri=b.z.object({id:b.z.string(),fileName:b.z.string(),fileType:b.z.string().nullable(),fileSize:b.z.number().nullable(),createdAt:b.z.string().nullable(),state:b.z.enum(["present","absent","unknown"]),hasThumbnail:b.z.boolean().default(!1)}),Xt=b.z.object({reportHubId:b.z.number(),date:b.z.string().nullish(),createdAt:b.z.string().nullish(),author:b.z.string().nullish(),userId:b.z.string().nullish(),sourceType:b.z.string().nullish(),employeeName:b.z.string().nullish(),updatedBy:b.z.string().nullish(),updatedAt:b.z.string().nullish(),category:b.z.string().nullish(),creationCategory:b.z.string().nullish(),visitTimeFrom:b.z.string().nullish(),visitTimeTo:b.z.string().nullish(),customerName:b.z.string().nullish(),interviewers:b.z.array(Zo),subject:b.z.string().nullish(),content:b.z.string().nullish(),externalComments:b.z.array(ei),isRead:b.z.boolean(),isStarred:b.z.boolean(),labels:b.z.array(ti),postedComments:b.z.array(vn),attachments:b.z.array(ri).default([])}),ni=b.z.object({type:b.z.literal("connected")}),It=b.z.object({type:b.z.literal("status-update"),reportHubId:b.z.number(),statusType:b.z.enum(["star","read"]),value:b.z.boolean(),clientTempId:b.z.string(),recipientRawUserId:b.z.number().optional()}),Qt=b.z.string().optional(),Zt=b.z.object({type:b.z.literal("comment-add"),reportHubId:b.z.number(),comment:vn,clientTempId:b.z.string(),recipientRawUserId:b.z.number().optional(),sourceType:Qt}),er=b.z.object({type:b.z.literal("comment-delete"),reportHubId:b.z.number(),commentId:b.z.number(),clientTempId:b.z.string(),recipientRawUserId:b.z.number().optional(),sourceType:Qt}),tr=b.z.object({type:b.z.literal("report-create"),reportHubId:b.z.number(),report:Xt,clientTempId:b.z.string(),recipientRawUserId:b.z.number().optional()}),rr=b.z.object({type:b.z.literal("report-update"),reportHubId:b.z.number(),report:Xt,clientTempId:b.z.string(),recipientRawUserId:b.z.number().optional()}),nr=b.z.object({type:b.z.literal("report-publish"),reportHubId:b.z.number(),report:Xt,clientTempId:b.z.string(),recipientRawUserId:b.z.number().optional()}),ar=b.z.object({type:b.z.literal("report-delete"),reportHubId:b.z.number(),clientTempId:b.z.string(),sourceType:Qt}),Pn=b.z.discriminatedUnion("type",[ni,It,Zt,er,tr,rr,nr,ar]);var Bn=require("@aiquants/sse"),Un=require("@aiquants/sse/shared-source");var Pe="daily-report:ids:",ke="daily-report:business-date:",xt=(e,t)=>`${e}st:${t}`,or=e=>`${Pe}user:${e}:`,kn=(e,t)=>xt(or(e),t),ai=e=>`${ke}${e}:`,Ln=(e,t)=>xt(ai(e),t),Ze=e=>`daily-report:date:${e}:user:`,ze=(e,t)=>`${Ze(e)}${t}:`,Nn=(e,t,r)=>xt(ze(e,t),r),Re=e=>`daily-report:detail:${e}:user:`,Ct=(e,t)=>`${Re(e)}${t}:`,On=(e,t,r)=>xt(Ct(e,t),r);var we=(e,t)=>{let[r,n]=e.split("-").map(Number),[a,o]=t.split("-").map(Number);return r!==a?r<a:n<=o},oi=5e3,ii=100,je=class{constructor(t){this.config=t;this._lastId=null;this._positioning=null;this._generation=0;this._logger=t.logger??ue(1,"[SSE Reader]"),this._source=this._createSource()}ready(){return this._position().then(()=>{})}subscribe(t,r){return this._source.subscribe({next:n=>{this._lastId=n.id,t(n)},error:n=>r(n instanceof Error?n:new Error(String(n)))})}async destroy(){await this._source.dispose(),this._generation+=1,this._positioning=null,this._lastId=null,this._source=this._createSource()}_position(){if(this._lastId!==null)return Promise.resolve(this._lastId);if(this._positioning===null){let t=this._generation;this._positioning=this._readTail().then(r=>{if(t!==this._generation)throw new Error("SSE reader was destroyed while the stream tail was being read");return this._positioning=null,this._lastId=r,r},r=>{throw t===this._generation&&(this._positioning=null),r})}return this._positioning}async _readTail(){let t=await this.config.redis?.getClient();if(!t)throw new Error("Failed to get Redis client to read the SSE stream tail");let r=await t.xRevRange(this.config.streamKey,"+","-",{COUNT:1});return r.length>0?r[0].id:"0-0"}_createSource(){return(0,Un.createSharedSource)({start:t=>this._start(t),lingerMs:0,replay:"none",runtime:Bn.systemSseRuntime,onListenerError:t=>this._logger.error("SSE reader subscriber threw:",t),onStopError:t=>this._logger.error("SSE reader failed to stop:",t)})}async _start(t){let r=await this._position(),n=await this.config.redis?.createClient();if(!n)throw new Error("Failed to create Redis client for SSE reader");n.on("error",l=>{this._logger.error("Redis client error:",l)});let a=!1,o=this._readLoop(n,t,r,()=>a);return async()=>{if(a=!0,n.isOpen)try{await n.quit()}catch{}await o}}async _readLoop(t,r,n,a){let o=n;try{for(;!a()&&t.isOpen;){let l=await t.xRead([{key:this.config.streamKey,id:o}],{BLOCK:oi,COUNT:ii});if(l)for(let i of l)for(let R of i.messages)o=R.id,this._invalidateCaches(R.message),r.next({id:R.id,message:R.message})}}catch(l){a()||(this._logger.error("xRead loop error:",l),r.fail(l instanceof Error?l:new Error(String(l))));return}a()||r.fail(new Error("Redis client for SSE reader closed unexpectedly"))}_invalidateCaches(t){try{let r=t?.data?JSON.parse(t.data):null,n=r?.type;if((n==="report-create"||n==="report-delete"||n==="report-publish")&&this.config.cache.invalidatePrefix(Pe),n==="comment-add"||n==="comment-delete"||n==="status-update"){let a=r?.reportHubId;typeof a=="number"&&this.config.cache.invalidatePrefix(Re(a))}}catch{}}};var tt=require("drizzle-orm");var si="",li=64,ui=e=>e.toLowerCase(),ci=e=>e.trim().toLowerCase();function Hn(e){if(e==null)return null;if(!Array.isArray(e))return new Set;let t=new Set;for(let r of e){if(typeof r!="string")continue;let n=ci(r);n.length>0&&t.add(n)}return t}function ge(e,t){return e===null?!0:t==null?!1:e.has(ui(t))}function Le(e){return e!==null&&e.size===0}function Fn(e,t){if(t!==null)return t.size===0?tt.sql`1 = 0`:(0,tt.inArray)(tt.sql`LOWER(${e})`,[...t])}var We,Je,et=class et{constructor(t,r){Ut(this,We);Ut(this,Je);Ht(this,We,t),Ht(this,Je,r)}get visible(){return Ke(this,We)===null?null:new Set(Ke(this,We))}get commentable(){return Ke(this,Je)===null?null:new Set(Ke(this,Je))}static restrictTo(t){let r=typeof t=="object"&&t!==null&&"read"in t,n=Hn(r?t.read:t),a=r?t.comment:void 0;if(a===void 0)return new et(n,n);let o=Hn(a),l=new Set;for(let i of o??[])n.has(i)&&l.add(i);return new et(n,l)}static unrestricted(t){return new et(null,null)}};We=new WeakMap,Je=new WeakMap;var pe=et;function rt(e){let t=$n(e.visible),r=$n(e.commentable);return t===r?t:`d:${t.length}:${t}${r}`}function $n(e){if(e===null)return"all";if(e.size===0)return"none";let t=[...e].sort().map(n=>`${n.length}:${n}`).join(si);if(t.length<=li)return`s:${t}`;let r=2166136261;for(let n=0;n<t.length;n++)r^=t.charCodeAt(n),r=Math.imul(r,16777619);return`sh:${(r>>>0).toString(16)}`}var zn=Object.freeze({...$e,frameworkDataRefusal:pt}),qn=864e5,di={baseMs:2e3,jitterMs:8e3},ir=6e4,Mt=1e3,jn=JSON.stringify({type:"connected"}),Vn="0-0",mi=(e,t,r,n)=>{if(r===null&&n===null)return!0;let a=typeof t.sourceType=="string"?t.sourceType:void 0;switch(e.type){case"connected":case"status-update":return!0;case"report-create":case"report-update":case"report-publish":return ge(r,e.report.sourceType);case"comment-add":case"comment-delete":return ge(n,a??"Internal");case"report-delete":return ge(r,a)}},pi=["externalComments","postedComments"],yi=(e,t,r)=>{if(r===null||e.type!=="report-create"&&e.type!=="report-update"&&e.type!=="report-publish"||ge(r,e.report.sourceType))return!1;let n=t.report;for(let a of pi)n[a]=[];return!0},hi=(e,t)=>{e.writeEvent({event:null,id:t,data:jn})},fi=(e,t,r,n,a)=>{if(r.data)try{let o=JSON.parse(r.data),l=Pn.safeParse(o);if(!l.success){a.error("SSE message validation failed:",l.error.format());return}let i=l.data,R=typeof o.recipientRawUserId=="number"?o.recipientRawUserId:void 0;if((i.type==="status-update"||R!==void 0)&&R!==n.internalUserId||!mi(i,o,n.visibleSet,n.commentableSet)){hi(e,t);return}let _=yi(i,o,n.commentableSet),y;if("recipientRawUserId"in o){let{recipientRawUserId:I,...h}=o;y=JSON.stringify(h)}else _?y=JSON.stringify(o):y=r.data;e.writeEvent({event:null,id:t,data:y})}catch(o){a.error(`[SSE:${n.internalUserId}] processEntry error:`,o)}},Wn=e=>{let{authenticate:t,service:r,resolveViewerScope:n,redis:a,sseReader:o,streamKey:l,logger:i}=e,R=async(s,_)=>{let{request:y,internalUserId:I,cursor:h}=_,m=_.initialScope.visible,T=_.initialScope.commentable,A=0,S=setInterval(()=>{let P=++A;n(y,"refresh").then($=>{P===A&&(m=$.visible,T=$.commentable)})},ir);s.onClose(()=>clearInterval(S));let x=h===null?Vn:h,H=h!==null&&a!==void 0,D=[],U=null,v=P=>{we(P.id,x)||(x=P.id,fi(s,P.id,P.message,{internalUserId:I,visibleSet:m,commentableSet:T},i))},B=async(P,$)=>{let[M]=await P.xRange(l,"-","+",{COUNT:1});return M!==void 0&&!we(M.id,$)},k=async(P,$)=>{if(await B(P,$))return!1;let M=$;for(;;){let L=await P.xRange(l,M,"+",{COUNT:Mt}),V=L[0];if(V!==void 0&&V.id!==M&&await B(P,M))return!1;for(let te of L){if(U!==null&&we(U,te.id))return!0;v(te)}let Y=L.at(-1);if(L.length<Mt||Y===void 0||s.isClosed())return!0;M=Y.id}},F=o.subscribe(P=>{if(!H){v(P);return}we(P.id,x)||(U===null&&(U=P.id),D.push(P))},P=>{i.error(`[SSE:${I}] Fan-Out reader error:`,P),s.close()});if(s.onClose(F),h===null){await o.ready();try{let P=await a?.getClient();if(P){let $=await P.xRevRange(l,"+","-",{COUNT:1});$.length>0&&!we($[0].id,x)&&(x=$[0].id)}}catch{}}if(s.writeEvent({event:null,id:x===Vn?null:x,data:jn}),(0,_e.startSseHeartbeat)(s,{intervalMs:xn,retry:di,runtime:Yn.systemSseRuntime}),h===null||a===void 0)return;await o.ready();let C=await a.getClient();if(C===void 0)throw new Error("redis client unavailable for the SSE catch-up");if(!await k(C,h)){s.writeRetry(qn),s.writeEvent({event:"resync-required",id:null,data:""}),s.close();return}H=!1;for(let P of D.splice(0))v(P)};return async({request:s,params:_})=>{let y,I=()=>{let m=new Headers;return y!==void 0&&m.append("Set-Cookie",y),m},h=m=>(0,_e.terminalStreamResponse)(m,{data:"",retryMs:qn,headers:I()});try{let m=await t(s,{failureRedirect:null});y=m.cookie;let{user:T}=m;if(!T)return h("auth-required");let A=await r.getUserIdByExternalId(T.id);if(!A)return h("forbidden");if(_.endpoint!=="updates")return new Response("Not Found",{status:404,headers:I()});let S=(0,_e.readLastEventId)(s,Cn);if(S!==null&&!Mn(S))return i.warn(`[SSE:${A}] malformed resume cursor; asking the client to resync`),h("resync-required");let x=await n(s,"initial");return(0,_e.createSseResponse)({requestSignal:wt(s),headers:I(),onError:(H,D)=>i.error(`[SSE:${A}] ${D} failed:`,H),produce:H=>R(H,{request:s,internalUserId:A,cursor:S,initialScope:x})})}catch(m){if(m instanceof Response)throw m;let T=m instanceof Error?m:new Error(String(m));return i.error(`500 sse name=${T.name} message=${T.message}`),new Response("Internal Server Error",{status:500,headers:I()})}}};var Ri=(e,t)=>{let r=new Headers({"Content-Type":"application/json"});return t?.setCookie&&r.append("Set-Cookie",t.setCookie),new Response(JSON.stringify(e),{status:t?.status??200,headers:r})},Jn=Object.freeze(["GET"]),gi=e=>{let[t,r,n]=e.split("-").map(Number),a=new Date(0);return a.setUTCFullYear(t,r-1,n),a.getUTCFullYear()===t&&a.getUTCMonth()===r-1&&a.getUTCDate()===n};function vt(e){let{authenticate:t,service:r,encodeUserId:n,redis:a,sseReader:o,streamKey:l}=e,i=e.loginRedirectPath??"/auth/login",R=e.logger??ue(3,"[DailyReportAPI]"),s=e.logger??ue(3,"[DailyReportVisibility]"),_=e.logger??ue(1,"[DailyReportSSE]"),y=e.logger??ue(1,"[DailyReportAttachment]"),I=e.logger??ue(2,"[DailyReportIsolation]"),h=async(v,B="initial")=>{let k=e.resolveVisibleSourceTypes;if(!k)return pe.unrestricted("no visibility port injected: this deployment does not restrict by source type");try{let F=await k(v,{reason:B});return F==null?pe.unrestricted("visibility port returned null/undefined: this deployment opts out of source-type filtering"):pe.restrictTo(F)}catch(F){return s.error("resolveVisibleSourceTypes threw; failing closed (deny all)",F),pe.restrictTo([])}},m=async({request:v})=>{let{user:B,cookie:k}=await t(v,{failureRedirect:i}),F=new Headers;k&&F.append("Set-Cookie",k);let C=await r.getUserIdByExternalId(B.id),P=C?n(C):null;return{data:{user:B,userId:P},headers:F}},T={"business-date":{methods:Jn,handle:async(v,B,k,F,C)=>{let P=ie(v.searchParams.get("businessDate")),$=v.searchParams.get("forceRefresh")==="true";if(P===null||!gi(P))return ce(k,B,{error:{message:"Invalid business date"}},400);let M=await r.getDailyReportsByBusinessDateByExternalId(C,P,F.id,{forceRefresh:$});return ce(k,B,{businessDate:P,reports:M},200)}},[ct]:In({service:r,logger:R}),report:{methods:Jn,handle:async(v,B,k,F,C)=>{let P=v.searchParams.get("reportHubId"),$=v.searchParams.get("forceRefresh")==="true",M=P?Number.parseInt(P,10):NaN;if(!Number.isFinite(M)||M<=0)return ce(k,B,{error:{message:"Invalid reportHubId"}},400);let L=await r.getDailyReportDetailByIdByExternalId(C,M,F.id,{snapshot:!0,forceRefresh:$});return L?ce(k,B,{report:L},200):ce(k,B,{error:{message:"Report not found"}},404)}}},A=async({request:v,params:B})=>{let{user:k,cookie:F}=await t(v,{failureRedirect:null}),C=F??null;if(!k)return ce(v,C,{error:{message:"Unauthorized"}},401);let P=B.endpoint,$=P!==void 0&&Object.hasOwn(T,P)?T[P]:void 0;if($===void 0)return ce(v,C,{error:{message:"Unknown endpoint"}},404);if(!$.methods.includes(v.method)){let L=ce(v,C,{error:{message:"Method not allowed"}},405);return L.headers.set("Allow",$.methods.join(", ")),L}let M=ee();try{let L=new URL(v.url),V=await h(v);return await $.handle(L,C,v,k,V)}catch(L){let V=ee()-M,Y=L instanceof Error?L:new Error(String(L));return R.error(`500 endpoint=${P} elapsed=${V}ms name=${Y.name} code=${"code"in Y?Y.code:"N/A"} message=${Y.message}`),R.error("Stack:",Y.stack),ce(v,C,{error:{message:"Internal Server Error"}},500)}},S=async({request:v,params:B})=>{let{user:k,cookie:F}=await t(v,{failureRedirect:null}),C=($,M)=>Ri($,{...M,setCookie:F});if(!k)return C({error:"Unauthorized"},{status:401});let P=ee();try{if(B.endpoint!=="action")return C({error:"Unknown endpoint"},{status:404});let M=await r.getUserIdByExternalId(k.id);if(!M)return C({error:"User not found"},{status:404});let L=await h(v),V=await v.formData(),Y=V.get("intent"),te=V.get("reportHubId"),G=te?Number(te):NaN,de=V.get("businessDate"),Ee=Number(V.get("operationTimestamp")),Q=V.get("clientTempId");if(Y==="clearCache")return e.enableDevCacheClear?(await r.clearCache(),C({status:"OK",intent:"clearCache"})):C({error:"Invalid intent"},{status:400});if(!Q)return C({error:"clientTempId required"},{status:400});if(Y!=="create"&&(!G||Number.isNaN(G)))return C({error:"Invalid reportHubId"},{status:400});let re=async(z,K,le)=>{let ot=V.get(K);if(ot===null)return C({error:`${K} required`},{status:400});try{let Ae=await le(ot==="true");return C({status:"OK",intent:z,updatedStatus:{isStarred:Ae.isStarred,isRead:Ae.isRead},operationTimestamp:Ee,reportHubId:String(G),clientTempId:Q})}catch(Ae){if(Ae instanceof Error&&Ae.message==="Not Found")return C({error:"Report not found"},{status:404});throw Ae}};switch(Y){case"create":{if(!de)return C({error:"businessDate required"},{status:400});let z=await r.createDailyReport(M,de,Q);return C({status:"OK",intent:"create",report:z,reportHubId:String(z.reportHubId),clientTempId:Q})}case"update":{let z=V.get("title"),K=V.get("content");try{return await r.updateDailyReport(G,M,{title:z,content:K},Q),C({status:"OK",intent:"update",reportHubId:String(G),clientTempId:Q})}catch(le){if(le instanceof Error){if(le.message==="Unauthorized")return C({error:"Unauthorized"},{status:403});if(le.message==="Not Found")return C({error:"Report not found"},{status:404})}throw le}}case"publish":try{let z=await r.publishDailyReport(G,M,Q);return C({status:"OK",intent:"publish",reportHubId:String(G),clientTempId:Q,report:z})}catch(z){if(z instanceof Error){if(z.message==="Unauthorized")return C({error:"Unauthorized"},{status:403});if(z.message==="Not Found")return C({error:"Report not found"},{status:404})}throw z}case"delete":try{return await r.deleteDailyReport(G,M,Q),C({status:"OK",intent:"delete",reportHubId:String(G),clientTempId:Q})}catch(z){if(z instanceof Error){if(z.message==="Unauthorized")return C({error:"Unauthorized"},{status:403});if(z.message==="Not Found")return C({error:"Report not found"},{status:404})}throw z}case"toggleStar":return await re("toggleStar","isStarred",z=>r.setStarStatus(L,M,G,de,z,Q));case"toggleRead":return await re("toggleRead","isRead",z=>r.setReadStatus(L,M,G,de,z,Q));case"addComment":{let z=V.get("content");if(!z)return C({error:"Content required"},{status:400});try{let K=await r.addComment(L,M,G,z,de,Q),le={...K,userId:K.userId};return C({status:"OK",intent:"addComment",newComment:le,reportHubId:String(G),clientTempId:Q})}catch(K){if(K instanceof Error){if(K.message==="Not Found")return C({error:"Report not found"},{status:404});if(K.message.startsWith("Comments are restricted"))return C({error:"Comments are restricted for this report"},{status:403})}throw K}}case"deleteComment":{let z=Number(V.get("commentId"));if(!z||Number.isNaN(z))return C({error:"Invalid commentId"},{status:400});try{return await r.deleteComment(L,M,G,z,de,Q),C({status:"OK",reportHubId:String(G),deletedCommentId:String(z),clientTempId:Q})}catch(K){if(K instanceof Error){if(K.message==="Unauthorized")return C({error:"Unauthorized"},{status:403});if(K.message==="Not Found")return C({error:"Comment not found"},{status:404})}throw K}}default:return C({error:"Invalid intent"},{status:400})}}catch($){if($ instanceof Response)throw $;let M=ee()-P,L=$ instanceof Error?$:new Error(String($));return R.error(`500 action elapsed=${M}ms name=${L.name} message=${L.message}`),R.error("Stack:",L.stack),C({error:"Internal Server Error"},{status:500})}},x=Wn({authenticate:t,service:r,resolveViewerScope:h,redis:a,sseReader:o,streamKey:l,logger:_}),H=gn({authenticate:t,service:r,encodeUserId:n,resolveViewerScope:h,logger:y,tuning:e}),D=Dr(I),U=(v,B,k)=>async F=>{let C=Ar(F.request)?B.frameworkDataRefusal(F):null;if(C!==null)throw C;return Tr(F.request,B)?(D(v,F.request),B.crossSiteRejection()):k(F)};return{index:{loader:m},api:{loader:U("api",_n,A),action:U("action",$e,S)},sse:{loader:U("sse",zn,x)},attachment:{loader:U("attachment",Rn,H)}}}var Gn=require("@aiquants/mssql"),u=require("drizzle-orm");var Ne=e=>(0,u.getColumns)(e),bi=e=>{if(e!==void 0){if(typeof e!="object"||e===null)throw qe("attachmentThumbnailRenderer","an object with id and render",e);if(e.render===void 0)throw gt("attachmentThumbnailRenderer.render","a function");if(typeof e.render!="function")throw qe("attachmentThumbnailRenderer.render","a function",e.render);if(typeof e.id!="string"||e.id.trim()==="")throw qe("attachmentThumbnailRenderer.id","a non-blank string naming the rendering pipeline version",e.id);return e}},se=(e,t)=>{if(!e)return null;let r=e instanceof Date?e:new Date(e);if(Number.isNaN(r.getTime()))return typeof e=="string"?e:null;let n=r.getFullYear(),a=n<0?`-${String(-n).padStart(4,"0")}`:String(n).padStart(4,"0"),o=String(r.getMonth()+1).padStart(2,"0"),l=String(r.getDate()).padStart(2,"0");if(t==="YYYY-MM-DD")return`${a}-${o}-${l}`;let i=String(r.getHours()).padStart(2,"0"),R=String(r.getMinutes()).padStart(2,"0"),s=String(r.getSeconds()).padStart(2,"0");return`${a}-${o}-${l} ${i}:${R}:${s}`};function Pt(e){let{db:t,tables:r,userTable:n,resolveUserId:a,encodeUserId:o,redis:l,cache:i,epochs:R}=e,{hub:s,internal:_,comment:y,label:I,hubLabel:h,userStatus:m}=r,T=e.externalSources??[],A=e.draftLabelNames&&e.draftLabelNames.length>0?e.draftLabelNames:[e.draftLabelName??"\u4E0B\u66F8\u304D"],S=A[0]??"\u4E0B\u66F8\u304D",x=e.logger??ue(1,"[DailyReportService]");jt({attachmentIdCodec:e.attachmentIdCodec,readAttachment:e.readAttachment,attachmentThumbnailRenderer:e.attachmentThumbnailRenderer,attachmentMaxBytes:e.attachmentMaxBytes});let H=Object.freeze({idCodec:e.attachmentIdCodec,readAttachment:e.readAttachment,thumbnailRenderer:bi(e.attachmentThumbnailRenderer),maxBytes:Me("attachmentMaxBytes",e.attachmentMaxBytes,1,Pr)}),D=c=>(0,Gn.runWithTransactionRetry)(d=>t.transaction(p=>d(()=>c(p))),e.transactionRetry),U=e.idsTtlMs??18e4,v="daily-report:ids:epoch",B=e.businessDateTtlMs??3e5,k="daily-report:date-epoch:",F="daily-report:detail-epoch:",P=`${e.streamKey??"daily-report:sse-stream"}:v2`,$=e.streamMaxLen??1e4,M=c=>R.incrementEpoch(c),L=c=>Fn(s.sourceType,c),V=async(c,d)=>{let p=await l?.getClient();if(!p){x.warn(`[SSE] Redis client unavailable (${d})`);return}let g=ee();try{await p.xAdd(P,"*",{data:JSON.stringify(c)},{TRIM:{strategy:"MAXLEN",strategyModifier:"~",threshold:$}});let w=ee()-g;w>1e3&&x.warn(`[SSE] Slow publish (${d}): ${w}ms`)}catch(w){x.error(`[SSE] Redis publish failed (${d}):`,w)}},Y=async()=>{try{let c=await l?.getClient();if(c===void 0)return null;let[d]=await c.xRevRange(P,"+","-",{COUNT:1});return d===void 0?null:d.id}catch(c){return x.error("[DailyReportService] SSE stream anchor read failed",c),null}},te=c=>c==null||c===""?null:/^\d+$/.test(c)?o(Number(c)):c,G=()=>{let c={};for(let d of T)c[`ext_${d.sourceType}`]=Ne(d.table);return c},de=c=>{let d=c;for(let p of T)d=d.leftJoin(p.table,(0,u.and)((0,u.eq)(s.sourceType,p.sourceType),(0,u.eq)(s.sourceIdNum,p.idColumn)));return d},Ee=(c,d,p)=>{let{hub:g,internal:w}=d,O=g.summary,E=[],N=null,q=null,J=null,j=null,X=null,ne=null,Be=[],Te=T.find(W=>W.sourceType===g.sourceType),Ue=Te?d[`ext_${Te.sourceType}`]:void 0;if(Te&&Ue){let W=Te.mapRow(Ue);W.content!==void 0&&(O=W.content),W.employeeName!==void 0&&(ne=W.employeeName),W.category!==void 0&&(N=W.category),W.creationCategory!==void 0&&(q=W.creationCategory),W.visitTimeFrom!==void 0&&(J=W.visitTimeFrom),W.visitTimeTo!==void 0&&(j=W.visitTimeTo),W.customerName!==void 0&&(X=W.customerName),W.interviewers!==void 0&&(E=W.interviewers),W.externalComments!==void 0&&(Be=W.externalComments)}else g.sourceType==="Internal"&&w&&(O=w.body);let be=(d.labels??[]).map(W=>({id:W.id,name:W.name,color:W.color})),ae=d.postedCommentRows??[],Z=ge(c.commentable,g.sourceType),oe=q?A.includes(q):!1,Ot=Oe?.[0]??null;return oe&&Ot&&!be.some(W=>W.id===Ot)&&be.push({id:Ot,name:S,color:null}),{reportHubId:g.id,date:se(g.businessDate,"YYYY-MM-DD"),author:d.creatorName??te(g.createdBy)??"",userId:g.userId?o(g.userId):"",sourceType:g.sourceType??"Internal",createdAt:se(g.createdAt,"YYYY-MM-DD HH:mm:ss"),updatedAt:se(g.updatedAt,"YYYY-MM-DD HH:mm:ss"),updatedBy:te(g.updatedBy),employeeName:ne??d.creatorName??te(g.createdBy),category:N,creationCategory:q,visitTimeFrom:J,visitTimeTo:j,customerName:X,interviewers:E,subject:g.title,content:O,externalComments:Z?Be:[],isRead:d.isRead??!1,isStarred:d.isStarred??!1,labels:be,postedComments:ae.filter(W=>Z||p!==void 0&&W.userId===p).map(W=>({...W,userId:o(W.userId),isMine:p?W.userId===p:!1})),attachments:d.attachments}},Q=async(c,d)=>{let p=(0,u.aliasedTable)(h,"draft_label"),g=await Ie();return(await t.select({reportHubId:s.id,businessDate:s.businessDate,sourceType:s.sourceType}).from(s).leftJoin(p,(0,u.and)((0,u.eq)(p.hubId,s.id),(0,u.inArray)(p.labelId,g))).where((0,u.and)((0,u.isNull)(s.deletedAt),(0,u.or)((0,u.eq)(s.userId,d),(0,u.isNull)(s.userId),(0,u.isNull)(p.hubId)),L(c.visible))).orderBy((0,u.desc)(s.businessDate),(0,u.desc)(s.id))).map(O=>({...O,businessDate:se(O.businessDate,"YYYY-MM-DD")}))},re=async(c,d,p)=>{let g=await le(d);if(!g)return[];if(Le(c.visible))return[];let w=(0,u.aliasedTable)(h,"draft_label"),O=await Ie();return(await t.select({reportHubId:s.id,businessDate:s.businessDate,sourceType:s.sourceType}).top(p).from(s).leftJoin(w,(0,u.and)((0,u.eq)(w.hubId,s.id),(0,u.inArray)(w.labelId,O))).where((0,u.and)((0,u.isNull)(s.deletedAt),(0,u.or)((0,u.eq)(s.userId,g),(0,u.isNull)(s.userId),(0,u.isNull)(w.hubId)),L(c.visible))).orderBy((0,u.desc)(s.businessDate),(0,u.desc)(s.id))).map(N=>({...N,businessDate:se(N.businessDate,"YYYY-MM-DD")}))},z=async(c,d)=>{let p=await de(t.select({hub:Ne(s),internal:Ne(_),creatorName:n.displayName,...G()}).from(s)).leftJoin(_,(0,u.eq)(s.id,_.hubId)).leftJoin(n,(0,u.eq)(s.userId,n.id)).where((0,u.and)((0,u.eq)(s.businessDate,u.sql`${d}`),(0,u.isNull)(s.deletedAt),L(c.visible))).orderBy((0,u.desc)(s.id)),g=await st(p.map(w=>w.hub.id));return p.map(w=>Ee(c,{...w,attachments:g.get(w.hub.id)??[]}))},K=new Map,le=async c=>{if(!e.disableUserIdCache&&K.has(c))return K.get(c)??null;let d=await a(c);return d!==null&&!e.disableUserIdCache&&K.set(c,d),d},ot=async(c,d,{forceRefresh:p=!1,snapshot:g=!1,ttlMsOverride:w,onFetchStart:O}={})=>{let E=await le(d);if(!E)return{items:[],streamAnchor:null};if(Le(c.visible))return{items:[],streamAnchor:await Y()};let N=kn(E,rt(c)),[q]=await i.getOrFetch({cacheKey:N,fetcher:async()=>{let J=await Y(),j=await Q(c,E);return fr(j)?[{items:j,streamAnchor:J}]:(x.warn("[DailyReportService] ids array is not in stream order; re-sorting (check SQL ORDER BY vs compareIdsStreamOrder, or concurrent row movement during the scan)"),[{items:[...j].sort(dt),streamAnchor:J}])},onFetchStart:O,forceRefresh:p,snapshot:g,ttlMsOverride:w??U,epochKey:v,refreshAheadRatio:.5});if(q===void 0)throw new Error("[DailyReportService] ids cache returned no record");return q},Ae=(c,d,{forceRefresh:p=!1,snapshot:g=!1,ttlMsOverride:w}={})=>{let O=ie(d);return O?Le(c.visible)?Promise.resolve([]):i.getOrFetch({cacheKey:Ln(O,rt(c)),fetcher:()=>z(c,O),forceRefresh:p,snapshot:g,ttlMsOverride:w??B}):Promise.resolve([])},Oe=null,it=async()=>(Oe!==null||(Oe=(await t.select({id:I.id}).from(I).where((0,u.inArray)(I.name,A)).orderBy(I.id)).map(d=>d.id)),Oe),Ie=async()=>{let c=await it();return c.length>0?c:[-1]},kt=async()=>{let c=await it();if(c.length===0)return null;let[d]=await t.select({id:I.id}).top(1).from(I).where((0,u.eq)(I.name,S));return d?.id??c[0]},pa=(c,d)=>d!=null?"absent":c!=null?"present":"unknown",st=async c=>{let d=new Map,p=r.attachment,g=H.idCodec;if(c.length===0||!p||!g)return d;let w=H.thumbnailRenderer!==void 0&&H.readAttachment!==void 0,O=await t.select({id:p.id,hubId:p.hubId,fileName:p.fileName,fileType:p.fileType,fileSize:p.fileSize,createdAt:p.createdAt,objectCheckedAt:p.objectCheckedAt,objectMissingAt:p.objectMissingAt}).from(p).where((0,u.inArray)(p.hubId,c)).orderBy((0,u.asc)(p.createdAt),(0,u.asc)(p.id));for(let E of O){let N=E.fileType?String(E.fileType):null,q=E.fileSize!=null?Number(E.fileSize):null,J=pa(E.objectCheckedAt,E.objectMissingAt),j={id:g.encode(Number(E.id)),fileName:String(E.fileName),fileType:N,fileSize:q,createdAt:se(E.createdAt,"YYYY-MM-DD HH:mm:ss"),state:J,hasThumbnail:w&&J!=="absent"&&Tt({fileType:N,fileSize:q},H.maxBytes)},X=d.get(Number(E.hubId));X?X.push(j):d.set(Number(E.hubId),[j])}return d},ya=async(c,d,p)=>{let g=r.attachment;if(!g||Le(c.visible))return null;let w=await Ie(),O=(0,u.aliasedTable)(h,"draft_label");return(await t.select({fileName:g.fileName,filePath:g.filePath,fileType:g.fileType,fileSize:g.fileSize}).top(1).from(g).innerJoin(s,(0,u.eq)(s.id,g.hubId)).leftJoin(O,(0,u.and)((0,u.eq)(O.hubId,s.id),(0,u.inArray)(O.labelId,w))).where((0,u.and)((0,u.eq)(g.id,d),(0,u.isNull)(s.deletedAt),(0,u.or)((0,u.eq)(s.userId,p),(0,u.isNull)(O.hubId)),L(c.visible))))[0]??null},ha=async c=>{let d=r.attachment;if(!d)return;let p=new Date;try{await t.update(d).set({objectCheckedAt:p,objectMissingAt:p,updatedAt:p}).where((0,u.eq)(d.id,c))}catch(g){x.error("markAttachmentMissing failed",g)}},fa=async c=>{let d=r.attachment;if(!d)return;let p=new Date;try{await t.update(d).set({objectCheckedAt:p,objectMissingAt:null,updatedAt:p}).where((0,u.eq)(d.id,c))}catch(g){x.error("markAttachmentPresent failed",g)}},Ra=async(c,d,p,{forceRefresh:g=!1,snapshot:w=!1,ttlMsOverride:O}={})=>{let E=await le(p);if(!E)return[];let N=ie(d);if(!N)return[];if(Le(c.visible))return[];let q=Nn(N,E,rt(c));return i.getOrFetch({cacheKey:q,fetcher:async()=>{let J=await Ie(),j=(0,u.aliasedTable)(h,"draft_label"),X=await de(t.select({hub:Ne(s),internal:Ne(_),isRead:m.isRead,isStarred:m.isStarred,creatorName:n.displayName,...G()}).from(s)).leftJoin(_,(0,u.eq)(s.id,_.hubId)).leftJoin(m,(0,u.and)((0,u.eq)(s.id,m.hubId),(0,u.eq)(m.userId,E))).leftJoin(j,(0,u.and)((0,u.eq)(j.hubId,s.id),(0,u.inArray)(j.labelId,J))).leftJoin(n,(0,u.eq)(s.userId,n.id)).where((0,u.and)((0,u.eq)(s.businessDate,u.sql`${N}`),(0,u.isNull)(s.deletedAt),(0,u.or)((0,u.eq)(s.userId,E),(0,u.isNull)(j.hubId)),L(c.visible))).orderBy((0,u.desc)(s.id));if(X.length===0)return[];let ne=X.map(Z=>Z.hub.id),Be=await t.select({hubId:h.hubId,id:I.id,name:I.name,color:I.color}).from(h).innerJoin(I,(0,u.eq)(h.labelId,I.id)).where((0,u.inArray)(h.hubId,ne)),Te=await t.select({hubId:y.hubId,id:y.id,body:y.body,createdAt:y.createdAt,userId:y.userId,userName:n.displayName}).from(y).leftJoin(n,(0,u.eq)(y.userId,n.id)).where((0,u.inArray)(y.hubId,ne)).orderBy((0,u.asc)(y.createdAt)),Ue=await st(ne),be=new Map,ae=new Map;for(let Z of Be){let oe=be.get(Z.hubId);oe||(oe=[],be.set(Z.hubId,oe)),oe.push({id:Z.id,name:Z.name,color:Z.color})}for(let Z of Te){let oe=ae.get(Z.hubId);oe||(oe=[],ae.set(Z.hubId,oe)),oe.push({id:Z.id,content:Z.body,createdAt:se(Z.createdAt,"YYYY-MM-DD HH:mm:ss")||"",userId:Z.userId,userName:Z.userName||""})}return X.map(Z=>{let oe=Z.hub.id;return Ee(c,{...Z,attachments:Ue.get(oe)??[],labels:be.get(oe)||[],postedCommentRows:ae.get(oe)||[]},E)})},forceRefresh:g,snapshot:w,ttlMsOverride:O??B,epochKey:`${k}${N}`})},Ge=async(c,d,p,{forceRefresh:g=!1,snapshot:w=!1,ttlMsOverride:O}={})=>{if(Le(c.visible))return null;let E=On(d,p,rt(c));return(await i.getOrFetch({cacheKey:E,fetcher:async()=>{let q=await Ie(),J=(0,u.aliasedTable)(h,"draft_label"),j=await de(t.select({hub:Ne(s),internal:Ne(_),isRead:m.isRead,isStarred:m.isStarred,creatorName:n.displayName,...G()}).from(s)).leftJoin(_,(0,u.eq)(s.id,_.hubId)).leftJoin(m,(0,u.and)((0,u.eq)(s.id,m.hubId),(0,u.eq)(m.userId,p))).leftJoin(J,(0,u.and)((0,u.eq)(J.hubId,s.id),(0,u.inArray)(J.labelId,q))).leftJoin(n,(0,u.eq)(s.userId,n.id)).where((0,u.and)((0,u.eq)(s.id,d),(0,u.isNull)(s.deletedAt),(0,u.or)((0,u.eq)(s.userId,p),(0,u.isNull)(J.hubId)),L(c.visible)));if(j.length===0)return[];let X=j[0].hub.id,ne=await t.select({id:I.id,name:I.name,color:I.color}).from(h).innerJoin(I,(0,u.eq)(h.labelId,I.id)).where((0,u.eq)(h.hubId,X)),Be=await t.select({id:y.id,body:y.body,createdAt:y.createdAt,userId:y.userId,userName:n.displayName}).from(y).leftJoin(n,(0,u.eq)(y.userId,n.id)).where((0,u.eq)(y.hubId,X)).orderBy((0,u.asc)(y.createdAt)),Te=await st([X]),Ue=ne.map(ae=>({id:ae.id,name:ae.name,color:ae.color})),be=Be.map(ae=>({id:ae.id,content:ae.body,createdAt:se(ae.createdAt,"YYYY-MM-DD HH:mm:ss")||"",userId:ae.userId,userName:ae.userName||""}));return[Ee(c,{...j[0],attachments:Te.get(X)??[],labels:Ue,postedCommentRows:be},p)]},forceRefresh:g,snapshot:w,ttlMsOverride:O??B,epochKey:`${F}${d}`}))[0]??null},ga=async(c,d,p,g={})=>{let w=await le(p);return w?Ge(c,d,w,g):null},ba=async(c,d)=>{let p=await Ie(),g=(0,u.aliasedTable)(h,"draft_label"),[w]=await t.select({sourceType:s.sourceType,deletedAt:s.deletedAt}).top(1).from(s).leftJoin(g,(0,u.and)((0,u.eq)(g.hubId,s.id),(0,u.inArray)(g.labelId,p))).where((0,u.and)((0,u.eq)(s.id,c),(0,u.or)((0,u.eq)(s.userId,d),(0,u.isNull)(g.hubId))));return w??null},Lt=async(c,d,p)=>{let g=await ba(d,p);if(!g||g.deletedAt||!ge(c.visible,g.sourceType))throw new Error("Not Found")},Sa=async(c,d,p,g,w,O)=>{await Lt(c,p,d);let E=await t.select().top(1).from(m).where((0,u.and)((0,u.eq)(m.hubId,p),(0,u.eq)(m.userId,d))),N;if(E.length>0?E[0].isStarred!==w?N=(await t.update(m).set({isStarred:w,updatedAt:new Date,updatedBy:String(d)}).output().where((0,u.and)((0,u.eq)(m.hubId,p),(0,u.eq)(m.userId,d))))[0]:N=E[0]:N=(await t.insert(m).output().values({hubId:p,userId:d,isStarred:w,isRead:!1,createdAt:new Date,createdBy:String(d),updatedAt:new Date,updatedBy:String(d)}))[0],g){let q=ie(g);q&&(i.invalidatePrefix(ze(q,d)),await M(`${k}${q}`))}return i.invalidatePrefix(Ct(p,d)),await M(`${F}${p}`),await V(It.parse({type:"status-update",reportHubId:p,recipientRawUserId:d,statusType:"star",value:w,clientTempId:O}),"setStarStatus"),N},Aa=async(c,d,p,g,w,O)=>{await Lt(c,p,d);let E=await t.select().top(1).from(m).where((0,u.and)((0,u.eq)(m.hubId,p),(0,u.eq)(m.userId,d))),N;if(E.length>0?E[0].isRead!==w?N=(await t.update(m).set({isRead:w,updatedAt:new Date,updatedBy:String(d)}).output().where((0,u.and)((0,u.eq)(m.hubId,p),(0,u.eq)(m.userId,d))))[0]:N=E[0]:N=(await t.insert(m).output().values({hubId:p,userId:d,isRead:w,isStarred:!1,createdAt:new Date,createdBy:String(d),updatedAt:new Date,updatedBy:String(d)}))[0],g){let q=ie(g);q&&(i.invalidatePrefix(ze(q,d)),await M(`${k}${q}`))}return i.invalidatePrefix(Ct(p,d)),await M(`${F}${p}`),await V(It.parse({type:"status-update",reportHubId:p,recipientRawUserId:d,statusType:"read",value:w,clientTempId:O}),"setReadStatus"),N},ur=async(c,d)=>{if(d===null)return;let p=await Ie(),[g]=await t.select({hubId:h.hubId}).top(1).from(h).where((0,u.and)((0,u.eq)(h.hubId,c),(0,u.inArray)(h.labelId,p)));return g?d:void 0},Ta=async(c,d,p,g,w,O)=>{let[E]=await t.select({sourceType:s.sourceType,deletedAt:s.deletedAt,userId:s.userId}).top(1).from(s).where((0,u.eq)(s.id,p));if(!E||E.deletedAt)throw new Error("Not Found");if(await Lt(c,p,d),!ge(c.commentable,E.sourceType))throw new Error("Comments are restricted by the viewer's comment permission");if(E.sourceType.toLowerCase()!=="internal")throw new Error("Comments are restricted for external daily report sources");let N=await ur(p,E.userId),[q]=await t.insert(y).output().values({hubId:p,userId:d,body:g,createdAt:new Date,createdBy:String(d),updatedAt:new Date,updatedBy:String(d)}),[J]=await t.select({displayName:n.displayName}).top(1).from(n).where((0,u.eq)(n.id,d)),j=J?.displayName??"";if(w){let ne=ie(w);ne&&(i.invalidatePrefix(Ze(ne)),await M(`${k}${ne}`))}i.invalidatePrefix(Re(p)),await M(`${F}${p}`);let X={id:q.id,userId:o(q.userId),userName:j,content:q.body,createdAt:se(q.createdAt,"YYYY-MM-DD HH:mm:ss")??"",isMine:!0};return await V(Zt.parse({type:"comment-add",reportHubId:p,comment:X,clientTempId:O,recipientRawUserId:N,sourceType:E.sourceType}),"addComment"),X},Da=async(c,d)=>await c.select().top(1).from(y).where((0,u.eq)(y.id,d)),wa=async(c,d,p,g,w,O)=>{let E=await Da(t,g);if(E.length===0)throw new Error("Not Found");if(E[0].hubId!==p)throw new Error("Not Found");let[N]=await t.select({userId:s.userId,sourceType:s.sourceType}).top(1).from(s).where((0,u.eq)(s.id,E[0].hubId));if(!(N&&ge(c.visible,N.sourceType)))throw new Error("Not Found");if(E[0].userId!==d)throw new Error("Unauthorized");let q=await ur(p,N.userId);if(await t.delete(y).where((0,u.eq)(y.id,g)),w){let J=ie(w);J&&(i.invalidatePrefix(Ze(J)),await M(`${k}${J}`))}i.invalidatePrefix(Re(p)),await M(`${F}${p}`),await V(er.parse({type:"comment-delete",reportHubId:p,commentId:g,clientTempId:O,recipientRawUserId:q,sourceType:N?.sourceType}),"deleteComment")},_a=async(c,d,p)=>{x.info("createDailyReport called",{userId:c,businessDate:d});let[g]=await t.select({displayName:n.displayName}).from(n).where((0,u.eq)(n.id,c)),w=g?.displayName??o(c);try{let O=await D(async q=>{x.info("Starting transaction");let J=`internal-temp-${Date.now()}-${Math.random()}`,[j]=await q.insert(s).output().values({sourceType:"Internal",sourceId:J,businessDate:new Date(d),userId:c,title:"(\u7121\u984C)",createdAt:new Date,createdBy:String(c),updatedAt:new Date,updatedBy:String(c)});await q.update(s).set({sourceId:String(j.id)}).where((0,u.eq)(s.id,j.id)),x.info("Hub created",j),await q.insert(_).values({hubId:j.id,body:"",createdAt:new Date,createdBy:String(c),updatedAt:new Date,updatedBy:String(c)}),x.info("Internal created"),x.info("Calling getDraftLabelId");let X=await kt();x.info("draftLabelId",X);let ne=[];return X&&(await q.insert(h).values({hubId:j.id,labelId:X,createdAt:new Date,createdBy:String(c)}),ne.push({id:X,name:S,color:null})),x.info("Label assigned"),{reportHubId:j.id,date:d,createdAt:se(j.createdAt,"YYYY-MM-DD HH:mm:ss"),author:w,userId:o(c),sourceType:"Internal",employeeName:w,updatedBy:o(c),updatedAt:se(j.updatedAt,"YYYY-MM-DD HH:mm:ss"),category:null,creationCategory:null,visitTimeFrom:null,visitTimeTo:null,customerName:null,interviewers:[],subject:j.title,content:"",externalComments:[],isRead:!0,isStarred:!1,labels:ne,postedComments:[],attachments:[]}}),E=ie(d);E&&i.invalidatePrefix(ze(E,c)),i.invalidatePrefix(ke),i.invalidatePrefix(or(c)),await M(v),E&&await M(`${k}${E}`);let N=await Ge(pe.unrestricted("post-write self read: the writer always sees the row they just wrote"),O.reportHubId,c,{forceRefresh:!0});if(N){let q=await it(),J=N.labels.some(j=>q.includes(j.id));await V(tr.parse({type:"report-create",reportHubId:N.reportHubId,report:N,clientTempId:p,recipientRawUserId:J?c:void 0}),"createDailyReport")}return N??O}catch(O){throw x.error("Error in createDailyReport",O),O}},lt=async(c,d)=>await c.select().top(1).from(s).where((0,u.eq)(s.id,d)),Nt=async(c,d,p)=>{await c.update(s).set(p).where((0,u.eq)(s.id,d))},cr=async(c,d,p)=>{await c.update(_).set(p).where((0,u.eq)(_.hubId,d))},dr=async(c,d,p)=>{await c.delete(h).where((0,u.and)((0,u.eq)(h.hubId,d),(0,u.eq)(h.labelId,p)))};return{streamKey:P,streamMaxLen:$,attachmentDelivery:H,clearCache:async()=>{i.clearAll(),K.clear(),Oe=null,R&&await M(v),x.info("[DailyReportService] Server-side DB/SQL caches cleared successfully.")},invalidateHubReadCaches:async(c,d)=>{i.invalidatePrefix(ke),i.invalidatePrefix(Pe),await M(v);for(let p of new Set(c))i.invalidatePrefix(Re(p)),await M(`${F}${p}`);for(let p of new Set(d)){let g=ie(p);g&&await M(`${k}${g}`)}},getUserIdByExternalId:le,getDailyReportIdsByExternalId:ot,getDailyReportIdsFirstPageByExternalId:re,readSseStreamAnchor:Y,getDailyReportsByBusinessDate:Ae,getDailyReportsByBusinessDateByExternalId:Ra,getDailyReportDetailById:Ge,getDailyReportDetailByIdByExternalId:ga,getDraftLabelId:kt,getAttachmentsByHubIds:st,getAttachmentForUser:ya,markAttachmentMissing:ha,markAttachmentPresent:fa,setStarStatus:Sa,setReadStatus:Aa,addComment:Ta,deleteComment:wa,createDailyReport:_a,updateDailyReport:async(c,d,p,g)=>{let w=await lt(t,c);if(!w.length||w[0].deletedAt)throw new Error("Not Found");if(w[0].userId!==d)throw new Error("Unauthorized");await D(async N=>{p.title!==void 0&&await Nt(N,c,{title:p.title,updatedAt:new Date,updatedBy:String(d)}),p.content!==void 0&&await cr(N,c,{body:p.content,updatedAt:new Date,updatedBy:String(d)})}),i.invalidatePrefix(Re(c)),i.invalidatePrefix(ke),await M(`${F}${c}`);let O=ie(se(w[0].businessDate,"YYYY-MM-DD"));O&&(i.invalidatePrefix(Ze(O)),await M(`${k}${O}`));let E=await Ge(pe.unrestricted("post-write self read: the writer always sees the row they just wrote"),c,d,{forceRefresh:!0});if(E){let N=await it(),q=E.labels.some(J=>N.includes(J.id));await V(rr.parse({type:"report-update",reportHubId:E.reportHubId,report:E,clientTempId:g,recipientRawUserId:q?d:void 0}),"updateDailyReport")}},publishDailyReport:async(c,d,p)=>{let g=await lt(t,c);if(!g.length)throw new Error("Not Found");if(g[0].userId!==d)throw new Error("Unauthorized");let w=await kt();if(!w)return null;if(await dr(t,c,w),i.invalidatePrefix(Re(c)),i.invalidatePrefix(ke),i.invalidatePrefix(Pe),await M(v),g[0].businessDate){let N=ie(se(g[0].businessDate,"YYYY-MM-DD"));N&&await M(`${k}${N}`)}let O=ie(se(g[0].businessDate,"YYYY-MM-DD"));O&&i.invalidatePrefix(ze(O,d));let E=await Ge(pe.unrestricted("post-write self read: the writer always sees the row they just wrote"),c,d,{forceRefresh:!0});return E&&await V(nr.parse({type:"report-publish",reportHubId:E.reportHubId,report:E,clientTempId:p}),"publishDailyReport"),E??null},deleteDailyReport:async(c,d,p)=>{let g=await lt(t,c);if(!g.length||g[0].deletedAt)throw new Error("Not Found");if(g[0].userId!==d)throw new Error("Unauthorized");if(await Nt(t,c,{deletedAt:new Date,deletedBy:String(d),updatedAt:new Date,updatedBy:String(d)}),i.invalidatePrefix(Re(c)),i.invalidatePrefix(ke),i.invalidatePrefix(Pe),await M(v),g[0].businessDate){let w=ie(se(g[0].businessDate,"YYYY-MM-DD"));w&&await M(`${k}${w}`)}await V(ar.parse({type:"report-delete",reportHubId:c,clientTempId:p,sourceType:g[0].sourceType}),"deleteDailyReport")},findDailyReportHubById:lt,updateDailyReportHub:Nt,updateDailyReportInternal:cr,deleteDailyReportLabel:dr}}var Si=ue(1,"[DailyReportExternalSource]"),Kn=(e,t,r,n=Si)=>{if(!e)return[];try{let a=JSON.parse(e);return Array.isArray(a)?a.map(r).filter(o=>o!==null):(n.warn(`Unexpected ${t} format: not an array`),[])}catch(a){return n.warn(`Failed to parse ${t}:`,a),[]}};var nt=require("drizzle-orm"),f=require("drizzle-orm/mssql-core");function Xn(e,t){let r=(0,f.mssqlSchema)(e),n=t.userTable,a=r.table("DailyReportHub",{id:(0,f.bigint)("id",{mode:"number"}).identity().notNull(),sourceType:(0,f.nvarchar)("source_type",{length:20}).notNull(),sourceId:(0,f.nvarchar)("source_id",{length:100}).notNull(),sourceIdNum:(0,f.bigint)("source_id_num",{mode:"number"}).generatedAlwaysAs(nt.sql`TRY_CAST(source_id AS BIGINT)`),businessDate:(0,f.date)("business_date"),userId:(0,f.bigint)("user_id",{mode:"number"}),title:(0,f.nvarchar)("title",{length:200}),summary:(0,f.nvarchar)("summary",{length:"max"}),createdAt:(0,f.datetime2)("created_at").notNull(),createdBy:(0,f.nvarchar)("created_by",{length:50}).notNull(),updatedAt:(0,f.datetime2)("updated_at").notNull(),updatedBy:(0,f.nvarchar)("updated_by",{length:50}).notNull(),deletedAt:(0,f.datetime2)("deleted_at"),deletedBy:(0,f.nvarchar)("deleted_by",{length:50})},y=>[(0,f.primaryKey)({name:`${e}_DailyReportHub_pk`,columns:[y.id]}),(0,f.foreignKey)({name:`${e}_DailyReportHub_user_id_fk`,columns:[y.userId],foreignColumns:[n.id]}),(0,f.index)(`${e}_DailyReportHub_business_date_index`).on(y.businessDate),(0,f.index)(`${e}_DailyReportHub_updated_at_index`).on(y.updatedAt),(0,f.index)(`${e}_DailyReportHub_source_index`).on(y.sourceType,y.sourceId),(0,f.index)(`${e}_DailyReportHub_user_id_index`).on(y.userId),(0,f.index)(`${e}_DailyReportHub_business_date_id_index`).on((0,nt.desc)(y.businessDate),(0,nt.desc)(y.id)),(0,f.index)(`${e}_DailyReportHub_deleted_at_index`).on(y.deletedAt)]),o=r.table("DailyReportInternal",{hubId:(0,f.bigint)("hub_id",{mode:"number"}).notNull(),body:(0,f.nvarchar)("body",{length:"max"}),metadata:(0,f.nvarchar)("metadata",{length:"max"}),createdAt:(0,f.datetime2)("created_at").notNull(),createdBy:(0,f.nvarchar)("created_by",{length:50}).notNull(),updatedAt:(0,f.datetime2)("updated_at").notNull(),updatedBy:(0,f.nvarchar)("updated_by",{length:50}).notNull()},y=>[(0,f.primaryKey)({name:`${e}_DailyReportInternal_pk`,columns:[y.hubId]}),(0,f.foreignKey)({name:`${e}_DailyReportInternal_hub_id_fk`,columns:[y.hubId],foreignColumns:[a.id]})]),l=r.table("DailyReportComment",{id:(0,f.bigint)("id",{mode:"number"}).identity().notNull(),hubId:(0,f.bigint)("hub_id",{mode:"number"}).notNull(),userId:(0,f.bigint)("user_id",{mode:"number"}).notNull(),body:(0,f.nvarchar)("body",{length:"max"}).notNull(),createdAt:(0,f.datetime2)("created_at").notNull(),createdBy:(0,f.nvarchar)("created_by",{length:50}).notNull(),updatedAt:(0,f.datetime2)("updated_at").notNull(),updatedBy:(0,f.nvarchar)("updated_by",{length:50}).notNull()},y=>[(0,f.primaryKey)({name:`${e}_DailyReportComment_pk`,columns:[y.id]}),(0,f.foreignKey)({name:`${e}_DailyReportComment_hub_id_fk`,columns:[y.hubId],foreignColumns:[a.id]}),(0,f.foreignKey)({name:`${e}_DailyReportComment_user_id_fk`,columns:[y.userId],foreignColumns:[n.id]}),(0,f.index)(`${e}_DailyReportComment_hub_id_index`).on(y.hubId)]),i=r.table("DailyReportLabel",{id:(0,f.bigint)("id",{mode:"number"}).identity().notNull(),userId:(0,f.bigint)("user_id",{mode:"number"}),name:(0,f.nvarchar)("name",{length:50}).notNull(),color:(0,f.nvarchar)("color",{length:20}),sortOrder:(0,f.int)("sort_order"),createdAt:(0,f.datetime2)("created_at").notNull(),createdBy:(0,f.nvarchar)("created_by",{length:50}).notNull(),updatedAt:(0,f.datetime2)("updated_at").notNull(),updatedBy:(0,f.nvarchar)("updated_by",{length:50}).notNull()},y=>[(0,f.primaryKey)({name:`${e}_DailyReportLabel_pk`,columns:[y.id]}),(0,f.foreignKey)({name:`${e}_DailyReportLabel_user_id_fk`,columns:[y.userId],foreignColumns:[n.id]})]),R=r.table("DailyReportHub_Label",{hubId:(0,f.bigint)("hub_id",{mode:"number"}).notNull(),labelId:(0,f.bigint)("label_id",{mode:"number"}).notNull(),createdAt:(0,f.datetime2)("created_at").notNull(),createdBy:(0,f.nvarchar)("created_by",{length:50}).notNull()},y=>[(0,f.primaryKey)({name:`${e}_DailyReportHub_Label_pk`,columns:[y.hubId,y.labelId]}),(0,f.foreignKey)({name:`${e}_DailyReportHub_Label_hub_id_fk`,columns:[y.hubId],foreignColumns:[a.id]}),(0,f.foreignKey)({name:`${e}_DailyReportHub_Label_label_id_fk`,columns:[y.labelId],foreignColumns:[i.id]})]),s=r.table("DailyReportUserStatus",{hubId:(0,f.bigint)("hub_id",{mode:"number"}).notNull(),userId:(0,f.bigint)("user_id",{mode:"number"}).notNull(),isRead:(0,f.bit)("is_read").default(!1).notNull(),isStarred:(0,f.bit)("is_starred").default(!1).notNull(),createdAt:(0,f.datetime2)("created_at").notNull(),createdBy:(0,f.nvarchar)("created_by",{length:50}).notNull(),updatedAt:(0,f.datetime2)("updated_at").notNull(),updatedBy:(0,f.nvarchar)("updated_by",{length:50}).notNull()},y=>[(0,f.primaryKey)({name:`${e}_DailyReportUserStatus_pk`,columns:[y.hubId,y.userId]}),(0,f.foreignKey)({name:`${e}_DailyReportUserStatus_hub_id_fk`,columns:[y.hubId],foreignColumns:[a.id]}),(0,f.foreignKey)({name:`${e}_DailyReportUserStatus_user_id_fk`,columns:[y.userId],foreignColumns:[n.id]})]),_=r.table("DailyReportAttachment",{id:(0,f.bigint)("id",{mode:"number"}).identity().notNull(),hubId:(0,f.bigint)("hub_id",{mode:"number"}).notNull(),uploadedBy:(0,f.bigint)("uploaded_by",{mode:"number"}),sourceKey:(0,f.nvarchar)("source_key",{length:200}).notNull(),fileName:(0,f.nvarchar)("file_name",{length:255}).notNull(),filePath:(0,f.nvarchar)("file_path",{length:"max"}).notNull(),fileType:(0,f.nvarchar)("file_type",{length:100}),fileSize:(0,f.bigint)("file_size",{mode:"number"}),objectCheckedAt:(0,f.datetime2)("object_checked_at"),objectMissingAt:(0,f.datetime2)("object_missing_at"),createdAt:(0,f.datetime2)("created_at").notNull(),createdBy:(0,f.nvarchar)("created_by",{length:50}).notNull(),updatedAt:(0,f.datetime2)("updated_at").notNull(),updatedBy:(0,f.nvarchar)("updated_by",{length:50}).notNull()},y=>[(0,f.primaryKey)({name:`${e}_DailyReportAttachment_pk`,columns:[y.id]}),(0,f.foreignKey)({name:`${e}_DailyReportAttachment_hub_id_fk`,columns:[y.hubId],foreignColumns:[a.id]}),(0,f.foreignKey)({name:`${e}_DailyReportAttachment_uploaded_by_fk`,columns:[y.uploadedBy],foreignColumns:[n.id]}),(0,f.uniqueIndex)(`${e}_DailyReportAttachment_source_unique`).on(y.hubId,y.sourceKey),(0,f.index)(`${e}_DailyReportAttachment_hub_id_index`).on(y.hubId,y.createdAt)]);return{hub:a,internal:o,comment:l,attachment:_,label:i,hubLabel:R,userStatus:s}}var Ai=5e7,sr=2e8,Ti=1,lr=Object.freeze({fixedBytes:4*1024*1024,pipelineRows:2048,wholeImageBuffer:Object.freeze({"jpeg-single-scan":Object.freeze({kind:"none"}),"jpeg-multi-scan":Object.freeze({kind:"jpeg-coefficients"}),png:Object.freeze({kind:"none"}),"png-interlaced":Object.freeze({kind:"decoded-raster"}),gif:Object.freeze({kind:"canvas",bytesPerPixel:4}),"webp-lossy":Object.freeze({kind:"none"}),"webp-lossy-alpha":Object.freeze({kind:"canvas",bytesPerPixel:5}),"webp-lossless":Object.freeze({kind:"canvas",bytesPerPixel:4}),"webp-animated":Object.freeze({kind:"canvas",bytesPerPixel:9})})}),Qn=125,Zn=4,ea=16,ta=50,ra=2,at=Object.freeze({renderMs:me.renderMs,nanosecondsPerBlockVisit:Qn,margin:Zn,maxBlockVisits:Math.floor(me.renderMs*1e6/(Qn*Zn)),walkBudgetMs:ea,nanosecondsPerWalkStep:ta,walkMargin:ra,maxWalkSteps:Math.floor(ea*1e6/(ta*ra))}),Di=new Map([["uchar",1],["char",1],["ushort",2],["short",2],["uint",4],["int",4],["float",4],["complex",8],["double",8]]),na=75,aa=4,oa="#ffffff",wi=1,_i={png:"VipsForeignLoadPngBuffer",jpeg:"VipsForeignLoadJpegBuffer",gif:"VipsForeignLoadNsgifBuffer",webp:"VipsForeignLoadWebpBuffer"},Ei=[/out of memory/i,/insufficient memory/i,/memory allocation|allocation failed/i,/(?:cannot|could not|unable to|failed to) allocate/i,/picture memory error/i,/unable to create thread|error creating thread|resource temporarily unavailable/i,/too many open files|no space left on device/i,/\b(?:ENOMEM|EAGAIN|EMFILE|ENFILE|ENOSPC)\b/],ia=Object.freeze({ok:!1,reason:"failed"}),sa=Object.freeze({ok:!1,reason:"unsupported"}),la=e=>({layout:e.multiScan?"jpeg-multi-scan":"jpeg-single-scan",coefficientBytes:Zr(e)}),ua=(e,t)=>{switch(t){case"jpeg":{let r=Jt(e);return r===null?null:la(r)}case"png":{let r=rn(e);return r===null?null:{layout:r?"png-interlaced":"png",coefficientBytes:0}}case"gif":return{layout:"gif",coefficientBytes:0};case"webp":{let r=nn(e,at.maxWalkSteps);return r===null?null:{layout:`webp-${r}`,coefficientBytes:0}}}},ca=(e,t)=>{let r=Di.get(t.depth);if(r===void 0)return null;let n=t.channels*r,a=lr,o=a.wholeImageBuffer[e.layout];return(o.kind==="none"?0:o.kind==="decoded-raster"?t.width*t.height*n:o.kind==="jpeg-coefficients"?e.coefficientBytes:t.width*t.height*o.bytesPerPixel)+a.pipelineRows*t.width*n+a.fixedBytes},da=(e,t,r)=>{let n=ua(e,t);return n===null?null:ca(n,r)},Ii=e=>e!==null&&e<=sr,xi=(e,t)=>{if(t!=="jpeg")return ua(e,t);let r=en(e,at);return r===null||r.blockVisits>at.maxBlockVisits?null:la(r.header)},Ci=e=>{let t=e instanceof Error?e.message:"";return Ei.some(r=>r.test(t))?"failed":"unsupported"},ma=e=>{e.cache(!1),e.concurrency(Ti),e.block({operation:["VipsForeignLoad"]}),e.unblock({operation:Object.values(_i)});let t=async(n,a,o,l,i)=>{let R=xi(n,a);if(R===null)return sa;try{let s=e(n,{limitInputPixels:Ai,animated:!1});if(!Ii(ca(R,await s.metadata())))return sa;if(i.aborted)return ia;let _=await s.rotate().resize({width:o,height:l,fit:"inside",withoutEnlargement:!0}).flatten({background:oa}).webp({quality:na,effort:aa}).toBuffer();return{ok:!0,bytes:new Uint8Array(_),contentType:"image/webp"}}catch(s){return{ok:!1,reason:Ci(s)}}},r=async(n,{format:a,maxWidth:o,maxHeight:l,signal:i})=>i.aborted?ia:t(n,a,o,l,i);return{id:`sharp-${e.versions.sharp}/vips-${e.versions.vips}/webp-q${na}-e${aa}/flatten-${oa}/v${wi}`,render:r}};function Mi(e){e.redis||(e.logger??console).warn("[DailyReport] redis provider is not injected: cross-worker cache invalidation is disabled (staleness is bounded only by TTL) and SSE publishing is skipped.");let t=ut(e.redis),r=new He({defaultTtlMs:e.cacheDefaultTtlMs??6e4},t),n=Pt({...e,cache:r,epochs:t}),a=new je({redis:e.redis,streamKey:n.streamKey,cache:r,logger:e.logger}),o=vt({authenticate:e.authenticate,resolveVisibleSourceTypes:e.resolveVisibleSourceTypes,service:n,encodeUserId:e.encodeUserId,attachmentRateLimitPerMinute:e.attachmentRateLimitPerMinute,attachmentConcurrency:e.attachmentConcurrency,attachmentThumbnailRateLimitPerMinute:e.attachmentThumbnailRateLimitPerMinute,attachmentThumbnailConcurrency:e.attachmentThumbnailConcurrency,attachmentThumbnailCacheBytes:e.attachmentThumbnailCacheBytes,redis:e.redis,sseReader:a,streamKey:n.streamKey,loginRedirectPath:e.loginRedirectPath,enableDevCacheClear:e.enableDevCacheClear,logger:e.logger});return{service:n,cache:r,epochs:t,sseReader:a,streamKey:n.streamKey,knownSourceTypes:[...new Set(["Internal",...(e.externalSources??[]).map(l=>l.sourceType)])],...o}}0&&(module.exports={DAILY_REPORT_ATTACHMENT_THUMBNAIL_MAX_OUTPUT_BYTES,DAILY_REPORT_ATTACHMENT_THUMBNAIL_OUTPUT_MEDIA_TYPES,DAILY_REPORT_SHARP_THUMBNAIL_DECODE_BUDGET_BYTES,DAILY_REPORT_SHARP_THUMBNAIL_DECODE_WORK_MODEL,DAILY_REPORT_SHARP_THUMBNAIL_WORKING_SET_MODEL,DAILY_REPORT_SSE_CATCH_UP_BATCH,DAILY_REPORT_SSE_VISIBILITY_REFRESH_MS,DailyReportSseReader,DailyReportViewerScope,SqlResultCache,createDailyReportHandlers,createDailyReportServer,createDailyReportService,createEpochStore,createSharpThumbnailRenderer,defineDailyReportSchema,generateETag,isStreamIdLte,jsonResponseWithETag,predictSharpThumbnailWorkingSetBytes,transformJsonArray});
1
+ "use strict";var Ft=Object.defineProperty;var Mo=Object.getOwnPropertyDescriptor;var ko=Object.getOwnPropertyNames;var Lo=Object.prototype.hasOwnProperty;var gr=e=>{throw TypeError(e)};var No=(e,t)=>{for(var r in t)Ft(e,r,{get:t[r],enumerable:!0})},Oo=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ko(t))!Lo.call(e,o)&&o!==r&&Ft(e,o,{get:()=>t[o],enumerable:!(n=Mo(t,o))||n.enumerable});return e};var Bo=e=>Oo(Ft({},"__esModule",{value:!0}),e);var br=(e,t,r)=>t.has(e)||gr("Cannot "+r);var Xe=(e,t,r)=>(br(e,t,"read from private field"),r?r.call(e):t.get(e)),qt=(e,t,r)=>t.has(e)?gr("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(e):t.set(e,r),Yt=(e,t,r,n)=>(br(e,t,"write to private field"),n?n.call(e,r):t.set(e,r),r);var qi={};No(qi,{DAILY_REPORT_ATTACHMENT_THUMBNAIL_MAX_OUTPUT_BYTES:()=>Et,DAILY_REPORT_ATTACHMENT_THUMBNAIL_OUTPUT_MEDIA_TYPES:()=>_t,DAILY_REPORT_SHARP_THUMBNAIL_DECODE_BUDGET_BYTES:()=>pr,DAILY_REPORT_SHARP_THUMBNAIL_DECODE_WORK_MODEL:()=>st,DAILY_REPORT_SHARP_THUMBNAIL_WORKING_SET_MODEL:()=>yr,DAILY_REPORT_SSE_CATCH_UP_BATCH:()=>Lt,DAILY_REPORT_SSE_VISIBILITY_REFRESH_MS:()=>mr,DailyReportSseReader:()=>We,DailyReportViewerScope:()=>le,SqlResultCache:()=>Fe,createDailyReportHandlers:()=>Nt,createDailyReportServer:()=>Fi,createDailyReportService:()=>Ot,createEpochStore:()=>dt,createSharpThumbnailRenderer:()=>Ro,defineDailyReportSchema:()=>to,generateETag:()=>Ve,isStreamIdLte:()=>Ee,jsonResponseWithETag:()=>ae,predictSharpThumbnailWorkingSetBytes:()=>fo,transformJsonArray:()=>eo});module.exports=Bo(qi);var X=()=>Math.floor(performance.now());var dt=e=>({async getEpoch(t){try{let r=await e?.getClient();if(!r)return null;let n=await r.get(t);return n?Number(n):0}catch{return null}},async incrementEpoch(t){try{let r=await e?.getClient();if(!r)return;await r.incr(t)}catch{}}}),Fe=class{constructor(t,r){this.config=t;this.epochStore=r;this.buckets=new Map;this.inFlight=new Map;this.maybeRefreshAhead=t=>{let r=t.refreshAheadRatio;if(r===void 0)return;let{cacheKey:n}=t,o=this.buckets.get(n);if(!o)return;let a=t.ttlMsOverride??this.config.defaultTtlMs;if(a-(o.expireAt-X())<a*r||this.inFlight.has(n))return;let i;i=(async()=>{let f=t.epochKey?await this.epochStore.getEpoch(t.epochKey):null,s=await t.fetcher();return this.inFlight.get(n)===i&&this.buckets.set(n,{records:s,expireAt:X()+a,epoch:f}),s})(),this.inFlight.set(n,i),i.catch(()=>{}).finally(()=>{this.inFlight.get(n)===i&&this.inFlight.delete(n)})};this.getOrFetch=async t=>{let{cacheKey:r,forceRefresh:n,snapshot:o}=t,a=this.buckets.get(r);if(n&&(this.buckets.delete(r),this.inFlight.delete(r)),!n&&a&&a.expireAt>X())if(t.epochKey){let i=await this.epochStore.getEpoch(t.epochKey);if(i===null||a.epoch===i)return this.maybeRefreshAhead(t),o?a.records.map(f=>structuredClone(f)):a.records;this.buckets.delete(r)}else return this.maybeRefreshAhead(t),o?a.records.map(i=>structuredClone(i)):a.records;if(!n&&this.inFlight.has(r)){let i=await this.inFlight.get(r);return o?i.map(f=>structuredClone(f)):i}let l;l=(async()=>{let i=t.epochKey?await this.epochStore.getEpoch(t.epochKey):null;t.onFetchStart?.();let f=await t.fetcher();if(n||this.inFlight.get(r)===l){let s=X()+(t.ttlMsOverride??this.config.defaultTtlMs);this.buckets.set(r,{records:f,expireAt:s,epoch:i}),this.buckets.size>500&&this.cleanExpired()}return f})(),n||this.inFlight.set(r,l);try{let i=await l;return o?i.map(f=>structuredClone(f)):i}finally{this.inFlight.get(r)===l&&this.inFlight.delete(r)}};this.clearAll=()=>{this.buckets.clear(),this.inFlight.clear()};this.invalidatePrefix=t=>{for(let r of this.buckets.keys())r.startsWith(t)&&this.buckets.delete(r);for(let r of this.inFlight.keys())r.startsWith(t)&&this.inFlight.delete(r)}}cleanExpired(){let t=X();for(let[r,n]of this.buckets.entries())n.expireAt<=t&&this.buckets.delete(r)}};var Uo=/^(\d{4})([-/])(\d{2})\2(\d{2})$/;var Sr=e=>e<10?`0${e}`:`${e}`,Ho=e=>{if(Number.isNaN(e.getTime()))return null;let t=e.getFullYear(),r=Sr(e.getMonth()+1),n=Sr(e.getDate());return`${t}-${r}-${n}`},Qe=e=>{let t=Uo.exec(e);if(t===null)return null;let[,r,,n,o]=t,a=Number(r),l=Number(n),i=Number(o);if(a<1)return null;let f=new Date(0);return f.setUTCFullYear(a,l-1,i),f.getUTCFullYear()!==a||f.getUTCMonth()!==l-1||f.getUTCDate()!==i?null:`${r}-${n}-${o}`},mt=e=>Qe(e)===e;var ce=e=>e==null?null:e instanceof Date?Ho(e):Qe(e);var pt="ids-stream";var Vt=e=>{let t=2166136261,r=-624069552;for(let n of e){let o=n.reportHubId;t^=o&255,t=Math.imul(t,16777619),t^=o>>>8&255,t=Math.imul(t,16777619),t^=o>>>16&255,t=Math.imul(t,16777619),t^=o>>>24&255,t=Math.imul(t,16777619),r^=o>>>24&255,r=Math.imul(r,16777619),r^=o>>>16&255,r=Math.imul(r,16777619),r^=o>>>8&255,r=Math.imul(r,16777619),r^=o&255,r=Math.imul(r,16777619);let a=n.businessDate;if(a===null)t^=1,t=Math.imul(t,16777619),r^=1,r=Math.imul(r,16777619);else for(let l=0;l<a.length;l++){let i=a.charCodeAt(l);t^=i&255,t=Math.imul(t,16777619),r^=i&255,r=Math.imul(r,16777619)}}return t^=e.length,t=Math.imul(t,16777619),r^=e.length,r=Math.imul(r,16777619),((t>>>0).toString(16).padStart(8,"0")+(r>>>0).toString(16).padStart(8,"0")).replace(/^0+(?=.)/,"")},yt=(e,t)=>e.businessDate!==t.businessDate?e.businessDate===null?1:t.businessDate===null||e.businessDate>t.businessDate?-1:1:t.reportHubId-e.reportHubId,Ar=e=>{for(let t=1;t<e.length;t++)if(yt(e[t-1],e[t])>0)return!1;return!0};var Tr=(e,t)=>{let r=e.findIndex(n=>yt({businessDate:n.businessDate,reportHubId:n.reportHubId},t)>0);return r===-1?e.length:r};var oe=(e,t,r=console)=>{let n=o=>typeof o=="string"?[`${t} ${o}`]:[t,o];return{debug:(o,...a)=>{e<=0&&r.debug(...n(o),...a)},info:(o,...a)=>{e<=1&&r.info(...n(o),...a)},warn:(o,...a)=>{e<=2&&r.warn(...n(o),...a)},error:(o,...a)=>{e<=3&&r.error(...n(o),...a)}}};var ht=Object.freeze({"business-date":"json",[pt]:"stream",report:"json"}),Dr=Object.freeze({json:Object.freeze(["GET"]),stream:Object.freeze(["GET","HEAD"])}),zt=e=>e!==void 0&&Object.hasOwn(ht,e);var jt=Object.freeze({tile:Object.freeze({maxWidth:480,maxHeight:320})}),_r=e=>Object.hasOwn(jt,e);var $o="download",Fo="thumbnail",qo="1";var Wt=e=>{let t=e.getAll(Fo),r=e.getAll($o);if(t.length>0&&r.length>0)return{kind:"invalid",reason:"conflict"};if(t.length>0){let[n]=t;return t.length===1&&_r(n)?{kind:"thumbnail",variant:n}:{kind:"invalid",reason:"thumbnail_variant"}}return r.length>0?r.length===1&&r[0]===qo?{kind:"download"}:{kind:"invalid",reason:"download_value"}:{kind:"inline"}};var me=(e,t)=>{let r=setTimeout(e,t);return r.unref?.(),r};var ft=e=>{let{windowMs:t,tallies:r,writeSuppressed:n}=e,o=new Map,a=l=>{let i={since:new Date().toISOString(),count:0,tallies:Object.fromEntries(r.map(s=>[s,0]))};o.set(l,i),me(()=>{o.delete(l),i.count>0&&n(l,i)},t)};return{record:(l,i,f)=>{let s=o.get(l);if(s!==void 0){s.count+=1,s.tallies[i]+=1;return}f(),a(l)}}};var Kt="Cross-site request rejected",Yo="Not Found",Vo=new Set(["same-origin","none"]),zo=new Set(["GET","HEAD","OPTIONS"]),Er=["api","action","sse","attachment"],wr=(e,t)=>new Response(JSON.stringify({error:{message:t}}),{status:e,headers:{"Content-Type":"application/json","Cache-Control":"no-store","X-Content-Type-Options":"nosniff"}}),jo=()=>wr(403,Kt),Rt=()=>wr(404,Yo),Ze=Object.freeze({navigable:()=>!1,frameworkDataRefusal:()=>null,crossSiteRejection:jo}),Ir=e=>new URL(e.url).pathname.endsWith(".data"),Wo=e=>{let t=e.headers.get("Origin");return t===null?!0:URL.canParse(t)&&new URL(t).host===new URL(e.url).host},xr=(e,t)=>{let r=e.headers.get("Sec-Fetch-Site");return r===null?!(zo.has(e.method)||Wo(e)):Vo.has(r)?!1:!(e.method==="GET"&&e.headers.get("Sec-Fetch-Mode")==="navigate"&&e.headers.get("Sec-Fetch-Dest")==="document"&&t.navigable(e))},Jo=6e4,Ko="refusals",Go=32,Xo=/^[a-z-]+$/,Jt=e=>{if(e===null)return"-";let t=e.slice(0,Go);return Xo.test(t)&&t===e?e:JSON.stringify(t)},Cr=e=>{let t=ft({windowMs:Jo,tallies:Er,writeSuppressed:(r,{count:n,since:o,tallies:a})=>{e.warn(`cross_site_rejected_suppressed count=${n} since=${o} routes=${Er.map(l=>`${l}:${a[l]}`).join(",")}`)}});return(r,n)=>{let o=()=>{let{headers:a}=n;e.warn(`cross_site_rejected route=${r} site=${Jt(a.get("Sec-Fetch-Site"))} mode=${Jt(a.get("Sec-Fetch-Mode"))} dest=${Jt(a.get("Sec-Fetch-Dest"))} method=${n.method}`)};t.record(Ko,r,o)}};var Qo=/^[1-9][0-9]*$/,Zo=/^(?:0|[1-9][0-9]*)$/,Gt=e=>Number.isSafeInteger(e)&&e>0,qe=e=>{if(e===null||!Qo.test(e))return null;let t=Number(e);return Gt(t)?t:null},vr=e=>{if(e===null||!Zo.test(e))return null;let t=Number(e);return Number.isSafeInteger(t)?t:null},Ce=(e,t)=>{let r=e.get(t);return r===null||typeof r=="string"?r:""};var Pr=(e,t)=>(r,n)=>{let o=n?"markAttachmentPresent":"markAttachmentMissing";e[o](r).catch(a=>{t.error(`${o} failed attachment=${r} message=${a instanceof Error?a.message:"unknown"}`)})};var ea=6e4/1e3,ta=5e3/1e3,ra=new Map([[429,ea],[503,ta]]),ve=e=>{let t=ra.get(e);return t===void 0?{}:{"Retry-After":String(t)}},kr="Too many requests",na="same-origin",oa="SAMEORIGIN",Ye=Object.freeze({"X-Content-Type-Options":"nosniff","Cross-Origin-Resource-Policy":na,"X-Frame-Options":oa}),gt=(e,t,r)=>{let n=new Headers({"Content-Type":"application/json","Cache-Control":"no-store",...r.extraHeaders,...Ye});return r.cookie&&n.append("Set-Cookie",r.cookie),new Response(JSON.stringify({error:{message:t}}),{status:e,headers:n})},Lr=(e,t)=>{if(e===null)return!1;for(let r of e.split(",")){let n=r.trim();if((n.startsWith("W/")?n.slice(2):n)===t)return!0}return!1},Nr=new Set(["image/png","image/jpeg","image/gif","image/webp","application/pdf","text/plain"]),aa=/^[\x20-\x7E]+$/,ia=/^[\w.+-]+\/[\w.+-]+/,Xt=e=>e&&aa.test(e)&&ia.test(e)?e:null,Or=e=>encodeURIComponent(e).replace(/['()*]/g,t=>`%${t.charCodeAt(0).toString(16).toUpperCase()}`),Br=e=>e.replace(/[^\x20-\x7E]/g,"_").replace(/["\\]/g,"_"),bt={404:"Attachment not found",413:"Attachment too large",502:"Attachment storage unavailable",503:"Attachment storage busy",504:"Attachment storage timed out"},Ur={not_found:404,denied:404,invalid_path:404,too_large:413,unavailable:502,busy:503,deadline:504},St=e=>typeof e=="string"&&Object.hasOwn(Ur,e),At=e=>Ur[e],De="Attachment request failed";var sa=e=>typeof e=="string"?JSON.stringify(e):typeof e=="number"||typeof e=="boolean"||e===null||e===void 0?String(e):Array.isArray(e)?"array":typeof e,Pe=(e,t,r)=>new RangeError(`[daily-report] ${e} must be ${t}; got ${sa(r)}`),Tt=(e,t)=>new TypeError(`[daily-report] ${e} must be ${t}`);var Hr=32*1024*1024,la=60,ua=4,ca=120,da=2,ma=8*1024*1024,de=(e,t,r)=>{if(typeof t=="number"&&Number.isSafeInteger(t)&&t>=r)return t;throw Pe(e,`an integer >= ${r}`,t)},Me=(e,t,r,n)=>t===void 0?n:de(e,t,r),pa=[["attachmentThumbnailRenderer",["readAttachment","attachmentIdCodec"]],["readAttachment",["attachmentIdCodec"]],["attachmentIdCodec",["readAttachment"]],["attachmentMaxBytes",["readAttachment"]],["attachmentRateLimitPerMinute",["readAttachment"]],["attachmentConcurrency",["readAttachment"]],["attachmentThumbnailRateLimitPerMinute",["attachmentThumbnailRenderer"]],["attachmentThumbnailConcurrency",["attachmentThumbnailRenderer"]],["attachmentThumbnailCacheBytes",["attachmentThumbnailRenderer"]]],Qt=e=>{for(let[t,r]of pa){if(e[t]===void 0)continue;let n=r.find(o=>e[o]===void 0);if(n!==void 0)throw Tt(n,`injected when ${t} is given`)}},$r=(e,t)=>(Qt({attachmentIdCodec:t.idCodec,readAttachment:t.readAttachment,attachmentThumbnailRenderer:t.thumbnailRenderer,attachmentRateLimitPerMinute:e.attachmentRateLimitPerMinute,attachmentConcurrency:e.attachmentConcurrency,attachmentThumbnailRateLimitPerMinute:e.attachmentThumbnailRateLimitPerMinute,attachmentThumbnailConcurrency:e.attachmentThumbnailConcurrency,attachmentThumbnailCacheBytes:e.attachmentThumbnailCacheBytes}),Object.freeze({originalRateLimitPerMinute:Me("attachmentRateLimitPerMinute",e.attachmentRateLimitPerMinute,1,la),originalConcurrency:Me("attachmentConcurrency",e.attachmentConcurrency,1,ua),thumbnailRateLimitPerMinute:Me("attachmentThumbnailRateLimitPerMinute",e.attachmentThumbnailRateLimitPerMinute,1,ca),thumbnailConcurrency:Me("attachmentThumbnailConcurrency",e.attachmentThumbnailConcurrency,1,da),thumbnailCacheBytes:Me("attachmentThumbnailCacheBytes",e.attachmentThumbnailCacheBytes,0,ma)}));var Dt=e=>{let t=de("limit",e.limit,1),r=de("maxHeldPerOwner",e.maxHeldPerOwner,1),n=e.queue===null?null:{max:de("queue.max",e.queue.max,0),maxPerOwner:de("queue.maxPerOwner",e.queue.maxPerOwner,0),maxWaitMs:de("queue.maxWaitMs",e.queue.maxWaitMs,1)},o=0,a=[],l=new Map,i=new Map,f=(m,T)=>m.get(T)??0,s=(m,T,A)=>{let S=f(m,T)+A;S<=0?m.delete(T):m.set(T,S)},E=m=>f(i,m)<r,h=m=>(o+=1,s(i,m,1),y(m)),I=()=>{for(;o<t;){let m=a.findIndex(A=>E(A.owner));if(m<0)return;let[T]=a.splice(m,1);s(l,T.owner,-1),T.grant(h(T.owner))}},y=m=>{let T=!1;return()=>{T||(T=!0,o-=1,s(i,m,-1),I())}};return{acquire:(m,T)=>{if(T.aborted)return Promise.resolve(null);if(o<t&&E(m))return Promise.resolve(h(m));if(n===null||a.length>=n.max||f(l,m)>=n.maxPerOwner)return Promise.resolve(null);let{maxWaitMs:A}=n,S=x=>{let $=()=>{let v=a.indexOf(C);v<0||(a.splice(v,1),s(l,m,-1),H(),x(null))},D=me($,A),H=()=>{clearTimeout(D),T.removeEventListener("abort",$)},C={owner:m,grant:v=>{H(),x(v)}};a.push(C),s(l,m,1),T.addEventListener("abort",$,{once:!0})};return new Promise(S)}}};var ya=1024,ha=6e4,fa=e=>{de("limitPerMinute",e,1);let t=new Map,r=(o,a)=>{a<=o.lastRefillMs||(o.tokens=Math.min(e,o.tokens+(a-o.lastRefillMs)*e/6e4),o.lastRefillMs=a)},n=(o,a)=>{let l=t.get(o);l&&t.delete(o);let i=l??{tokens:e,lastRefillMs:a};r(i,a),t.set(o,i);for(let f of t.keys()){if(t.size<=ya)break;t.delete(f)}return i};return{consume:(o,a)=>{let l=n(o,a);return l.tokens<1?!1:(l.tokens-=1,!0)},refund:(o,a,l)=>{let i=t.get(o);i&&(r(i,a),i.tokens=Math.min(e,i.tokens+l))}}},et=e=>{let{reason:t,logger:r}=e,n=fa(e.limitPerMinute),o=e.variant===null?"":` variant=${e.variant}`,a=ft({windowMs:ha,tallies:[t],writeSuppressed:(l,{count:i,since:f})=>{r.warn(`${t}_suppressed count=${i} since=${f} viewer=${l}${o}`)}});return{spend:({attachmentId:l,internalUserId:i,fail:f})=>n.consume(i,X())?null:(a.record(i,t,()=>r.warn(`429 attachment=${l} viewer=${i}${o} reason=${t}`)),f(429,kr,ve(429))),refund:(l,i)=>{n.refund(l,X(),i)}}};var Ra=256*1024,Fr=6e4,ga=e=>Math.ceil(e/2),ba=new Uint8Array(new ArrayBuffer(0)),Sa=(e,t)=>{let r=e,n=0,o,a=()=>{clearTimeout(o),r=ba,t()},l=i=>{clearTimeout(o),o=me(()=>{i.error(new Error(`attachment body idle for ${Fr} ms`)),a()},Fr)};return new ReadableStream({start(i){l(i)},pull(i){let f=Math.min(n+Ra,r.byteLength);if(f>n&&i.enqueue(r.slice(n,f)),n=f,n>=r.byteLength){i.close(),a();return}l(i)},cancel(){a()}},{highWaterMark:0})},qr=e=>{let{service:t,encodeUserId:r,resolveViewerScope:n,logger:o,recordObjectState:a}=e,l=t.attachmentDelivery,i=et({reason:"rate_limit",limitPerMinute:e.rateLimitPerMinute,logger:o,variant:null}),f=Dt({limit:e.concurrency,maxHeldPerOwner:ga(e.concurrency),queue:null});return async s=>{let{request:E,delivery:h,attachmentId:I,internalUserId:y,readAttachment:m,cookie:T,fail:A}=s,S=l.maxBytes,x=i.spend(s);if(x)return x;let $=await n(E),D=await t.getAttachmentForUser($,I,y);if(!D)return o.warn(`404 attachment=${I} viewer=${y} reason=not_visible`),A(404,"Attachment not found");if(D.fileSize!=null&&D.fileSize>S)return o.warn(`413 attachment=${I} viewer=${y} reason=db_size`),A(413,"Attachment too large");let H=await f.acquire(y,E.signal);if(!H)return E.signal.aborted?(o.info(`503 attachment=${I} viewer=${y} reason=aborted`),A(503,"Attachment request aborted")):(o.warn(`503 attachment=${I} viewer=${y} reason=concurrency`),A(503,"Too many concurrent downloads",ve(503)));let C=!1;try{let v=await m(D.filePath,{maxBytes:S,head:E.method==="HEAD",principal:r(y),signal:E.signal});if(E.signal.aborted)return o.info(`503 attachment=${I} viewer=${y} reason=aborted`),A(503,"Attachment request aborted");if(!v.ok){if(!St(v.reason))return o.error(`500 attachment=${I} viewer=${y} reason=port_contract code=failure_reason`),A(500,De);let V=At(v.reason);return v.reason==="not_found"&&a(I,!1),o.warn(`${V} attachment=${I} viewer=${y} reason=${v.reason} code=${v.code??"-"}`),A(V,bt[V],ve(V))}if(v.bytes.byteLength>S)return o.error(`500 attachment=${I} viewer=${y} reason=port_contract code=over_max_bytes`),A(500,De);let O=E.method==="HEAD";if(!O&&v.size!==void 0&&v.size!==v.bytes.byteLength)return o.error(`500 attachment=${I} viewer=${y} reason=port_contract code=size_mismatch`),A(500,De);let q=Xt(D.fileType)??Xt(v.contentType),P=q!==null&&Nr.has(q),k=P?q:"application/octet-stream",N=P&&h.kind!=="download"?"inline":"attachment",M=O?v.size:v.bytes.byteLength,L=new Headers({"Content-Type":k,"Content-Disposition":`${N}; filename="${Br(D.fileName)}"; filename*=UTF-8''${Or(D.fileName)}`,"Cache-Control":"private, no-store","Content-Security-Policy":"default-src 'none'; sandbox",...Ye});return M!==void 0&&L.set("Content-Length",String(M)),T&&L.append("Set-Cookie",T),a(I,!0),o.info(`200 attachment=${I} viewer=${y} type=${k} disposition=${N} bytes=${M??"-"}`),O?new Response(null,{status:200,headers:L}):(C=!0,new Response(Sa(v.bytes,H),{status:200,headers:L}))}finally{C||H()}}};var se=Object.freeze({queueWaitMs:3e4,readMs:3e4,renderMs:1e4,transferMarginMs:5e3}),Ps=se.queueWaitMs+se.readMs+se.renderMs+se.transferMarginMs;var Yr=require("crypto"),Ve=e=>{let t=JSON.stringify(e);return`"${(0,Yr.createHash)("sha256").update(t).digest("hex")}"`};var jr=require("buffer"),Wr=new Set([194,198,202,206]),Aa=new Set([192,193,194,195]),Jr=216,Ta=217,Kr=218,Da=4,_a=64,Ea=2,Vr=8,zr=28,_e=12,Zt=8,wa=20,Gr=_e+Zt+10,Ia=2,ge=(e,t)=>e[t]<<8|e[t+1],ze=(e,t,r)=>{let n=0;for(let o=r-1;o>=0;o-=1)n=n*256+e[t+o];return n},ye=(e,t,r)=>{if(e.byteLength<t+r.length)return!1;for(let n=0;n<r.length;n+=1)if(e[t+n]!==r.charCodeAt(n))return!1;return!0},Xr=e=>e>=192&&e<=207&&e!==196&&e!==200&&e!==204,Qr=e=>({marker:0,body:0,length:0,end:0,stepsLeft:e}),Zr=e=>(e.stepsLeft-=1,e.stepsLeft>=0),en=e=>e[0]===255&&e[1]===Jr,tn=(e,t,r)=>{let n=t;for(;;){if(n>=e.byteLength||e[n]!==255)return null;do{if(!Zr(r))return null;n+=1}while(n<e.byteLength&&e[n]===255);if(n>=e.byteLength)return null;let o=e[n];if(n+=1,o===Ta)return"eoi";if(o===0||o===Jr)return null;if(o===1||o>=208&&o<=215)continue;if(n+2>e.byteLength)return null;let a=ge(e,n),l=n+a;return a<2||l>e.byteLength?null:(r.marker=o,r.body=n+2,r.length=a,r.end=l,"segment")}},xa=(e,t,r)=>{let n=e.byteLength,o=t;for(;;){let a=e.indexOf(255,o);if(a<0)return n;for(;;){if(!Zr(r))return null;if(a+1>=n)return n;let l=e[a+1];if(l===255)a+=1;else if(l===0||l>=208&&l<=215){if(a+=2,a>=n||e[a]!==255)break}else return a}o=a}},rn=(e,{marker:t,body:r,length:n})=>{if(n<8)return null;let o=ge(e,r+1),a=ge(e,r+3),l=e[r+5];if(a===0||o===0||l===0||n!==8+3*l)return null;let i=[];for(let f=0;f<l;f+=1){let s=e[r+7+3*f],E=s>>4,h=s&15;if(E<1||E>4||h<1||h>4)return null;i.push({id:e[r+6+3*f],horizontal:E,vertical:h})}return{marker:t,width:a,height:o,components:i}},nn=(e,{body:t,length:r})=>{if(r<3)return null;let n=e[t];return n<1||n>Da||r!==6+2*n?null:Array.from({length:n},(o,a)=>e[t+1+2*a])},on=(e,t)=>({width:e.width,height:e.height,components:e.components.map(({horizontal:r,vertical:n})=>({horizontal:r,vertical:n})),multiScan:Wr.has(e.marker)||t<e.components.length}),er=e=>{if(!en(e))return null;let t=Qr(e.byteLength),r=null;for(let n=2;;){if(tn(e,n,t)!=="segment")return null;if(Xr(t.marker)){if(r!==null||(r=rn(e,t),r===null))return null}else if(t.marker===Kr){if(r===null)return null;let o=nn(e,t);return o===null?null:on(r,o.length)}n=t.end}},an=e=>{let t=Math.max(...e.components.map(n=>n.horizontal)),r=Math.max(...e.components.map(n=>n.vertical));return e.components.map(({horizontal:n,vertical:o})=>{let a=Math.ceil(e.width*n/(t*Vr)),l=Math.ceil(e.height*o/(r*Vr));return Math.ceil(a/n)*n*Math.ceil(l/o)*o})},sn=e=>e.multiScan?an(e).reduce((r,n)=>r+n,0)*_a*Ea:0,Ca=896,ln=(e,{maxBlockVisits:t,maxWalkSteps:r})=>{if(!en(e))return null;let n=jr.Buffer.from(e.buffer,e.byteOffset,e.byteLength),o=Qr(r),a=null,l=null,i=new Map,f=0,s=0,E=0;for(let h=2;;){let I=tn(e,h,o);if(I===null)return null;if(I==="eoi")return l===null?null:{header:l,blockVisits:s};if(h=o.end,Xr(o.marker)){if(a!==null||!Aa.has(o.marker)||(a=rn(e,o),a===null))return null;let y=an(a);i=new Map;for(let[m,T]of a.components.entries()){let A=i.get(T.id);i.set(T.id,A===void 0?y[m]:Math.max(A,y[m]))}f=a.components.length*(Wr.has(a.marker)?Ca:1)}else if(o.marker===Kr){if(a===null||E===f)return null;let y=nn(e,o);if(y===null)return null;for(let T of y){let A=i.get(T);if(A===void 0)return null;s+=A}if(E+=1,l===null&&(l=on(a,y.length)),s>t||!l.multiScan)return{header:l,blockVisits:s};let m=xa(n,o.end,o);if(m===null)return null;h=m}}},un=e=>{if(e.byteLength<24||ge(e,8)!==0||ge(e,10)!==13||!ye(e,12,"IHDR"))return null;let t=ge(e,16)*65536+ge(e,18),r=ge(e,20)*65536+ge(e,22);return t===0||r===0||t>2147483647||r>2147483647?null:{width:t,height:r}},va=e=>{if(ye(e,_e,"VP8 ")){if(e.byteLength<30||(e[20]&1)!==0||e[23]!==157||e[24]!==1||e[25]!==42)return null;let t=ze(e,26,2)&16383,r=ze(e,28,2)&16383;return t===0||r===0?null:{width:t,height:r}}if(ye(e,_e,"VP8L")){if(e.byteLength<25||e[20]!==47)return null;let t=ze(e,21,4);return{width:(t&16383)+1,height:Math.floor(t/16384)%16384+1}}return ye(e,_e,"VP8X")?e.byteLength<Gr?null:{width:ze(e,24,3)+1,height:ze(e,27,3)+1}:null},cn=e=>{if(un(e)===null||e.byteLength<=zr)return null;switch(e[zr]){case 0:return!1;case 1:return!0;default:return null}},dn=(e,t)=>{if(ye(e,_e,"VP8 "))return"lossy";if(ye(e,_e,"VP8L"))return"lossless";if(!ye(e,_e,"VP8X")||e.byteLength<Gr)return null;if((e[wa]&Ia)!==0)return"animated";let r=!1,n=t;for(let o=_e;o+Zt<=e.byteLength;){if(n-=1,n<0)return null;if(ye(e,o,"VP8L"))return"lossless";if(ye(e,o,"VP8 "))return r?"lossy-alpha":"lossy";ye(e,o,"ALPH")&&(r=!0);let a=ze(e,o+4,4);o+=Zt+a+a%2}return null},mn={png:un,jpeg:er,webp:va};var _t=Object.freeze(["image/webp","image/jpeg","image/png"]),Et=1024*1024;var Pa=new Set(["image/png","image/jpeg","image/gif","image/webp"]),Ma={"image/webp":"webp","image/jpeg":"jpeg","image/png":"png"},ka=new Set(_t),La=e=>typeof e=="string"&&ka.has(e),Na=256,wt=(e,t)=>e.fileType===null||!Pa.has(e.fileType)?!1:e.fileSize===null||e.fileSize<=t,Oa=[137,80,78,71,13,10,26,10],Ba=[255,216,255],Ua=[[71,73,70,56,55,97],[71,73,70,56,57,97]],Ha=[82,73,70,70],$a=[87,69,66,80],tt=(e,t,r)=>{if(e.byteLength<r+t.length)return!1;for(let[n,o]of t.entries())if(e[r+n]!==o)return!1;return!0},tr=e=>{if(tt(e,Oa,0))return"png";if(tt(e,Ba,0))return"jpeg";for(let t of Ua)if(tt(e,t,0))return"gif";return tt(e,Ha,0)&&tt(e,$a,8)?"webp":null},pn=e=>{let t=JSON.stringify([e.rendererId,e.box.maxWidth,e.box.maxHeight,e.attachmentId,e.filePath,e.fileType,e.fileSize]);return{key:t,etag:Ve([t])}},yn=(e,t)=>{if(!La(e.contentType))return"content_type";if(!(e.bytes instanceof Uint8Array))return"bytes";if(e.bytes.byteLength===0)return"empty";if(e.bytes.byteLength>Et)return"too_large";let r=Ma[e.contentType];if(tr(e.bytes)!==r)return"signature";let n=mn[r](e.bytes);return n===null||n.width>t.maxWidth||n.height>t.maxHeight?"dimensions":null},hn=e=>{de("maxBytes",e.maxBytes,0),de("maxEntries",e.maxEntries,0);let t=new Map,r=0,n=o=>{let a=t.get(o);a&&(t.delete(o),r-=a.weight)};return{get:o=>{let a=t.get(o);if(a)return t.delete(o),t.set(o,a),a.entry},set:(o,a)=>{n(o);let l=(a.kind==="thumbnail"?a.bytes.byteLength:0)+Na;if(l>e.maxBytes||e.maxEntries===0)return;let i=a.kind==="thumbnail"?{kind:"thumbnail",bytes:a.bytes.slice(),contentType:a.contentType}:a;t.set(o,{entry:i,weight:l}),r+=l;for(let f of t.keys()){if(r<=e.maxBytes&&t.size<=e.maxEntries)break;n(f)}}}};var fn=()=>{let e=new Map;return{join:(t,r,n)=>{let o=()=>{let f=new AbortController,s=()=>{e.get(t)?.controller===f&&e.delete(t)},h={promise:n(f.signal).finally(s),controller:f,waiters:0};return e.set(t,h),h},a=e.get(t)??o();a.waiters+=1;let l=()=>{a.waiters-=1,!(a.waiters>0)&&(a.controller.abort(),e.get(t)===a&&e.delete(t))};r.aborted?l():r.addEventListener("abort",l,{once:!0});let i=()=>{r.removeEventListener("abort",l)};return a.promise.finally(i)}}};var rr=e=>{let{budgetMs:t,flightSignal:r,call:n,onOverrun:o,onStuck:a}=e,l=X(),i=new AbortController,f=!1,s,E,h=()=>{a(X()-l)},I=D=>{s=me(()=>{f=!0,D({timedOut:!0}),E=me(h,t),i.abort(new DOMException(`stage exceeded its ${t} ms budget`,"TimeoutError"))},t)},y=new Promise(I),m=AbortSignal.any([r,i.signal]),T=D=>{D(n(m))},A=new Promise(T),S=D=>(clearTimeout(s),clearTimeout(E),f&&o(X()-l,D.kind==="error"?{error:D.error}:null),D),x=A.then(D=>S({kind:"value",value:D}),D=>S({kind:"error",error:D}));return{outcome:Promise.race([A.then(D=>({timedOut:!1,value:D})),y]),settled:x}};var ke={404:"Attachment not found",500:De,502:"Thumbnail unavailable",503:"Thumbnail temporarily unavailable",504:"Thumbnail storage timed out"},Rn=(e,t)=>{if(typeof e!="object"||e===null)return{failure:{kind:"failure",status:500,reason:"port_contract",code:"result"}};let r=e;if(!r.ok)return r.reason==="unsupported"?{entry:{kind:"unrenderable",reason:"unsupported"}}:r.reason==="failed"?{failure:{kind:"failure",status:502,reason:"render_failed"}}:{failure:{kind:"failure",status:500,reason:"port_contract",code:"failure_reason"}};let n=yn(r,t);return n!==null?{failure:{kind:"failure",status:500,reason:"port_contract",code:n}}:{entry:{kind:"thumbnail",bytes:r.bytes,contentType:r.contentType}}},Fa=e=>{let t=new AbortController,r=()=>{t.abort()},n=me(r,se.queueWaitMs);return e.addEventListener("abort",r,{once:!0}),e.aborted&&r(),{signal:t.signal,end:()=>{clearTimeout(n),e.removeEventListener("abort",r)}}},gn=()=>{},qa=(e,t)=>t.aborted?Promise.resolve():new Promise(r=>{let n=()=>{t.removeEventListener("abort",n),r()};t.addEventListener("abort",n,{once:!0}),e.then(n)}),bn=e=>{let{gate:t,cache:r,maxBytes:n,encodeUserId:o,recordObjectState:a,logger:l}=e,i=new Map,f=(y,m)=>{let T=m.then(gn,gn);i.set(y,T);let A=()=>{i.get(y)===T&&i.delete(y)};T.then(A)},s=async(y,m)=>{let T=i.get(y.key);if(T===void 0)return t.acquire(y.owner,m);let A=Fa(m);try{if(await qa(T,A.signal),A.signal.aborted)return null;let S=r.get(y.key);return S!==void 0?{...S,identity:"verified"}:await t.acquire(y.owner,A.signal)}finally{A.end()}},E=(y,m)=>{if(y.fileSize===null)return m.kind==="exact"?"verified":"unrecorded";if(m.kind==="exact"?m.bytes===y.fileSize:y.fileSize>m.maxBytes)return"verified";let A=m.kind==="exact"?String(m.bytes):`>${m.maxBytes}`;return l.warn(`size_mismatch expected=${y.fileSize} got=${A} attachment=${y.attachmentId} viewer=${y.owner} variant=thumbnail`),"unverified"},h=(y,m)=>(T,A)=>{let S=A===null?"":` message=${A.error instanceof Error?A.error.message:"unknown"}`;l.warn(`${y}_overrun ms=${T} attachment=${m.attachmentId} viewer=${m.owner} variant=thumbnail${S}`)},I=(y,m)=>T=>{l.warn(`${y}_stuck ms=${T} attachment=${m.attachmentId} viewer=${m.owner} variant=thumbnail`)};return async(y,m)=>{let T=await s(y,m);if(T===null)return{kind:"failure",status:503,reason:m.aborted?"aborted":"queue"};if(typeof T!="function")return T;let A=T,S=null;try{if(m.aborted)return{kind:"failure",status:503,reason:"aborted"};let x=r.get(y.key);if(x!==void 0)return{...x,identity:"verified"};let $=rr({budgetMs:se.readMs,flightSignal:m,call:z=>y.readAttachment(y.filePath,{maxBytes:n,head:!1,principal:o(y.owner),signal:z}),onOverrun:h("read",y),onStuck:I("read",y)}),D=await $.outcome;if(D.timedOut)return S=$.settled,m.aborted?{kind:"failure",status:503,reason:"aborted"}:{kind:"failure",status:504,reason:"read_timeout"};if(m.aborted)return{kind:"failure",status:503,reason:"aborted"};let H=D.value;if(!H.ok&&H.reason!=="too_large")return St(H.reason)?(H.reason==="not_found"&&a(y.attachmentId,!1),{kind:"failure",status:At(H.reason),reason:H.reason,code:H.code}):{kind:"failure",status:500,reason:"port_contract",code:"failure_reason"};if(H.ok&&H.bytes.byteLength>n)return{kind:"failure",status:500,reason:"port_contract",code:"over_max_bytes"};let C=E(y,H.ok?{kind:"exact",bytes:H.bytes.byteLength}:{kind:"over",maxBytes:n}),v=z=>{C==="verified"&&r.set(y.key,z)},O=z=>(v(z),{...z,identity:C});if(!H.ok)return O({kind:"unrenderable",reason:"too_large"});let q=tr(H.bytes);if(q===null)return O({kind:"unrenderable",reason:"signature"});let P=rr({budgetMs:se.renderMs,flightSignal:m,call:z=>y.renderer.render(H.bytes,{format:q,maxWidth:y.box.maxWidth,maxHeight:y.box.maxHeight,signal:z}),onOverrun:h("render",y),onStuck:I("render",y)}),k=z=>{if(z.kind==="error")return;let J=Rn(z.value,y.box);"entry"in J&&v(J.entry)},N=null,M=()=>(N===null&&(N=P.settled.then(k),f(y.key,N)),N);m.addEventListener("abort",M,{once:!0});let L=await P.outcome.finally(()=>m.removeEventListener("abort",M));if(L.timedOut||m.aborted)return S=M(),m.aborted?{kind:"failure",status:503,reason:"aborted"}:{kind:"failure",status:502,reason:"render_timeout"};let V=Rn(L.value,y.box);return"entry"in V?O(V.entry):V.failure}finally{S===null?A():S.then(A,A)}}};var Tn=10,Ya=1/Tn,Sn=1-Ya,Va=1024,za=64,ja=8,An="private, no-cache",Wa="no-store",Ja=Object.freeze({verified:"",unverified:" identity=unverified",unrecorded:" size=unrecorded"}),Ka=e=>{switch(e.status){case 404:case 502:case 504:return"warn";case 500:return"error";case 503:return e.reason==="aborted"?"info":"warn"}},Dn=e=>{let{service:t,encodeUserId:r,resolveViewerScope:n,logger:o,recordObjectState:a}=e,l=t.attachmentDelivery,i=et({reason:"rate_limit",limitPerMinute:e.rateLimitPerMinute,logger:o,variant:"thumbnail"}),f=et({reason:"revalidation_rate_limit",limitPerMinute:e.rateLimitPerMinute*Tn,logger:o,variant:"thumbnail"}),s=Dt({limit:e.concurrency,maxHeldPerOwner:e.concurrency,queue:{max:za,maxPerOwner:ja,maxWaitMs:se.queueWaitMs}}),E=hn({maxBytes:e.cacheBytes,maxEntries:Va}),h=fn(),I=bn({gate:s,cache:E,maxBytes:l.maxBytes,encodeUserId:r,recordObjectState:a,logger:o}),y=(A,S,x,$)=>{let D=`attachment=${A.attachmentId} viewer=${A.internalUserId} variant=thumbnail cache=${$}`;if(S.kind==="failure")return o[Ka(S)](`${S.status} ${D} reason=${S.reason} code=${S.code??"-"}`),A.fail(S.status,ke[S.status],ve(S.status));let H=Ja[S.identity];if(S.kind==="unrenderable")return o.info(`404 ${D} reason=${S.reason}${H}`),A.fail(404,ke[404]);let C=S.identity==="verified"?{"Cache-Control":An,ETag:x}:{"Cache-Control":Wa},v=new Headers({"Content-Type":S.contentType,"Content-Length":String(S.bytes.byteLength),...C,"Content-Security-Policy":"default-src 'none'; sandbox",...Ye});return A.cookie&&v.append("Set-Cookie",A.cookie),o.info(`200 ${D} type=${S.contentType} bytes=${S.bytes.byteLength}${H}`),new Response(S.bytes,{status:200,headers:v})},m=A=>i.spend(A),T=(A,S)=>S?f.spend(A):m(A);return async(A,S)=>{let{request:x,attachmentId:$,internalUserId:D,readAttachment:H,cookie:C,fail:v}=A,O=jt[S],q=l.thumbnailRenderer;if(!q)return v(404,ke[404]);let P=x.headers.get("If-None-Match"),k=P!==null,N=T(A,k);if(N)return N;let M=await n(x),L=await t.getAttachmentForUser(M,$,D),z=L!==null&&wt(L,l.maxBytes)?pn({rendererId:q.id,box:O,attachmentId:$,filePath:L.filePath,fileType:L.fileType,fileSize:L.fileSize}):null;if(z&&Lr(P,z.etag)){let F=new Headers({"Cache-Control":An,ETag:z.etag,...Ye});return C&&F.append("Set-Cookie",C),o.info(`304 attachment=${$} viewer=${D} variant=thumbnail cache=revalidated`),new Response(null,{status:304,headers:F})}if(k){let F=m(A);if(F)return F}if(!L)return o.warn(`404 attachment=${$} viewer=${D} variant=thumbnail reason=not_visible`),v(404,ke[404]);if(!z)return i.refund(D,Sn),o.info(`404 attachment=${$} viewer=${D} variant=thumbnail reason=not_eligible`),v(404,ke[404]);let{key:J,etag:be}=z,Q=E.get(J);if(Q)return i.refund(D,Sn),y(A,{...Q,identity:"verified"},be,"hit");let pe=F=>I({key:J,attachmentId:$,filePath:L.filePath,fileSize:L.fileSize,box:O,owner:D,readAttachment:H,renderer:q},F),Ie;try{Ie=await h.join(J,x.signal,pe)}catch(F){return o.error(`500 attachment=${$} viewer=${D} variant=thumbnail cache=miss reason=port_exception message=${F instanceof Error?F.message:"unknown"}`),v(500,ke[500])}return y(A,Ie,be,"miss")}};var Ga='[daily-report] params.token must be passed by the route that mounts attachment.loader; declare a "token" route parameter ({apiBasePath}/attachment/{token})',Xa=()=>gt(403,Kt,{cookie:null}),_n=Object.freeze({route:"attachment",navigable:e=>{let{kind:t}=Wt(new URL(e.url).searchParams);return t==="inline"||t==="download"},frameworkDataRefusal:()=>gt(404,bt[404],{cookie:null}),crossSiteRejection:Xa}),En=e=>{let{authenticate:t,service:r,encodeUserId:n,resolveViewerScope:o,logger:a}=e,l=r.attachmentDelivery,i=$r(e.tuning,l),f={service:r,encodeUserId:n,resolveViewerScope:o,logger:a,recordObjectState:Pr(r,a)},s=qr({...f,rateLimitPerMinute:i.originalRateLimitPerMinute,concurrency:i.originalConcurrency}),E=Dn({...f,rateLimitPerMinute:i.thumbnailRateLimitPerMinute,concurrency:i.thumbnailConcurrency,cacheBytes:i.thumbnailCacheBytes});return async({request:h,params:I})=>{let y=null,m=(T,A,S={})=>gt(T,A,{cookie:y,extraHeaders:S});try{let{user:T,cookie:A}=await t(h,{failureRedirect:null});if(y=A??null,!T)return m(401,"Unauthorized");let S=Wt(new URL(h.url).searchParams);if(S.kind==="invalid")return m(400,"Invalid attachment request");if(S.kind==="thumbnail"&&h.method!=="GET")return m(405,"Method not allowed",{Allow:"GET"});if(h.method!=="GET"&&h.method!=="HEAD")return m(405,"Method not allowed",{Allow:"GET, HEAD"});let{idCodec:x,readAttachment:$}=l;if(!(x&&$))return m(404,"Attachment not found");if(I.token===void 0)throw new Error(Ga);let D=x.decode(I.token);if(D===null||!Gt(D))return m(400,"Invalid attachment token");let H=await r.getUserIdByExternalId(T.id);if(!H)return m(403,"Forbidden");let C={request:h,delivery:S,attachmentId:D,internalUserId:H,readAttachment:$,cookie:y,fail:m};return S.kind==="thumbnail"?await E(C,S.variant):await s(C)}catch(T){if(T instanceof Response)throw T;return a.error(`500 attachment=? viewer=? reason=unexpected message=${T instanceof Error?T.message:"unknown"}`),m(500,De)}}};var Qa=oe(1,"[Response]"),ae=(e,t,r,n=200,o=Qa)=>{let a=Ve(r),l=e.headers.get("If-None-Match");o.info(`[jsonResponseWithETag] ETag: ${a}, If-None-Match: ${l}`);let i=new Headers({"Content-Type":"application/json","Cache-Control":"private, max-age=0, must-revalidate","X-Content-Type-Options":"nosniff","X-Frame-Options":"DENY","Content-Security-Policy":"default-src 'none'",ETag:a});return t&&i.append("Set-Cookie",t),e.method==="GET"&&n===200&&l===a?new Response(null,{status:304,headers:i}):new Response(JSON.stringify(r),{status:n,headers:i})};var xt=e=>e.method==="HEAD"?AbortSignal.abort():e.signal;var Ct=30,Cn=4e3,Za="stream interrupted by server error",ei=15e3,vn=Symbol("ids-stream-heartbeat"),wn=()=>{},vt=e=>e.return(void 0).then(wn,wn),ti=()=>{let e;return{fired:new Promise(r=>{e=setTimeout(()=>r(vn),ei)}),stop:()=>clearTimeout(e)}},ri=/^[0-9a-f]{1,16}$/,ni=e=>{let t=e.searchParams.get("cursor_report_hub_id"),r=e.searchParams.get("cursor_business_date"),n=e.searchParams.get("cursor_snapshot"),o=n!==null&&ri.test(n)?n:null;if(t===null)return r===null?{cursor:null,snapshot:o}:{invalid:!0};let a=qe(t);return a===null?{invalid:!0}:r===null?{cursor:{businessDate:null,reportHubId:a},snapshot:o}:mt(r)?{cursor:{businessDate:r,reportHubId:a},snapshot:o}:{invalid:!0}};async function*In(e,t,r,n){let o=t?Tr(e,t):0,a=!0;for(;;){let l=e.slice(o,o+(a?r:Cn));o+=l.length;let i=o>=e.length,f=l[l.length-1];if(yield{kind:"chunk",items:l,nextCursor:i||!f?null:{businessDate:f.businessDate,reportHubId:f.reportHubId},isLast:i,...a?{total:e.length}:{},...a?{streamAnchor:n.streamAnchor}:{},snapshot:n.snapshot,...a&&n.restarted?{restarted:!0}:{}},a=!1,i)return}}var Pn=e=>{let t=new Headers({"Content-Type":"application/x-ndjson; charset=utf-8","Cache-Control":"private, no-cache, no-transform","X-Content-Type-Options":"nosniff"});return e&&t.append("Set-Cookie",e),t},xn=(e,t,r,n)=>{let o=new TextEncoder,a=!1,l=null,i=new ReadableStream({async pull(f){if(a||r.aborted){await vt(t);try{f.close()}catch{}return}let s=ti();try{l===null&&(l=t.next());let E=await Promise.race([l,s.fired]);if(s.stop(),E===vn){if(a||r.aborted){await vt(t);try{f.close()}catch{}return}f.enqueue(o.encode(`
2
+ `));return}l=null;let{value:h,done:I}=E;if(I){f.close();return}if(a||r.aborted){await vt(t);try{f.close()}catch{}return}f.enqueue(o.encode(`${JSON.stringify(h)}
3
+ `))}catch(E){if(s.stop(),l=null,a||r.aborted)return;n.error(`ids-stream emission failed: ${E instanceof Error?E.message:String(E)}`);try{let h={kind:"error",error:Za};f.enqueue(o.encode(`${JSON.stringify(h)}
4
+ `)),f.close()}catch{}}},cancel(){a=!0,vt(t)}});return new Response(i,{status:200,headers:Pn(e)})},Mn=e=>{let{service:t,logger:r}=e;return async(n,o,a,l,i)=>{let f=ni(n);if("invalid"in f)return ae(a,o,{error:{message:"Invalid cursor"}},400);let s=xt(a);if(s.aborted)return new Response(null,{status:200,headers:Pn(o)});let E=n.searchParams.get("forceRefresh")==="true",h=!1,I=null,y=null,m=new Promise((S,x)=>{I=S,y=x});m.catch(()=>{});let T=t.getDailyReportIdsByExternalId(i,l.id,{forceRefresh:E,onFetchStart:f.cursor?void 0:()=>{h=!0,t.readSseStreamAnchor().then(S=>t.getDailyReportIdsFirstPageByExternalId(i,l.id,Ct).then(x=>({items:x,streamAnchor:S}))).then(S=>I?.(S),S=>y?.(S))}});if(T.catch(()=>{}),f.cursor){let{items:S,streamAnchor:x}=await T,$=Vt(S),D=f.snapshot!==null&&f.snapshot===$;return xn(o,In(S,D?f.cursor:null,Ct,{snapshot:$,restarted:!D,streamAnchor:x}),s,r)}let A=(async function*(){let S=await Promise.race([T.then(D=>({kind:"full",source:D}),D=>({kind:"full-error",error:D})),m.then(D=>({kind:"page",page:D}),()=>({kind:"page-error"}))]),x=null,$=!1;if(S.kind==="full")x=S.source;else if(S.kind==="page"){let{items:D,streamAnchor:H}=S.page;if(D.length<Ct){yield{kind:"chunk",items:D,nextCursor:null,isLast:!0,total:D.length,streamAnchor:H};return}yield{kind:"chunk",items:D,nextCursor:null,isLast:!1,provisional:!0},$=!0}else if(S.kind==="full-error"&&h){let D=await m.catch(()=>null);D&&D.items.length>0&&(yield{kind:"chunk",items:D.items,nextCursor:null,isLast:!1,provisional:!0})}x===null&&(x=await T),yield*In(x.items,null,$?Cn:Ct,{snapshot:Vt(x.items),streamAnchor:x.streamAnchor})})();return xn(o,A,s,r)}};var Kn=require("@aiquants/sse"),we=require("@aiquants/sse/server");var b=require("zod");var kn=15e3,Ln="lastEventId",oi=/^\d{1,15}-\d{1,15}$/,Nn=e=>oi.test(e),ai=b.z.object({name:b.z.string().nullish(),affiliation:b.z.string().nullish()}),ii=b.z.object({name:b.z.string().nullish(),text:b.z.string().nullish(),color:b.z.string().nullish()}),si=b.z.object({id:b.z.number(),name:b.z.string().nullish(),color:b.z.string().nullish()}),On=b.z.object({id:b.z.number(),userId:b.z.string().nullish(),userName:b.z.string().nullish(),content:b.z.string().nullish(),createdAt:b.z.string().nullish(),isMine:b.z.boolean()}),li=b.z.object({id:b.z.string(),fileName:b.z.string(),fileType:b.z.string().nullable(),fileSize:b.z.number().nullable(),createdAt:b.z.string().nullable(),state:b.z.enum(["present","absent","unknown"]),hasThumbnail:b.z.boolean().default(!1)}),nr=b.z.object({reportHubId:b.z.number(),date:b.z.string().nullish(),createdAt:b.z.string().nullish(),author:b.z.string().nullish(),userId:b.z.string().nullish(),sourceType:b.z.string().nullish(),employeeName:b.z.string().nullish(),updatedBy:b.z.string().nullish(),updatedAt:b.z.string().nullish(),category:b.z.string().nullish(),creationCategory:b.z.string().nullish(),visitTimeFrom:b.z.string().nullish(),visitTimeTo:b.z.string().nullish(),customerName:b.z.string().nullish(),interviewers:b.z.array(ai),subject:b.z.string().nullish(),content:b.z.string().nullish(),externalComments:b.z.array(ii),isRead:b.z.boolean(),isStarred:b.z.boolean(),labels:b.z.array(si),postedComments:b.z.array(On),attachments:b.z.array(li).default([])}),ui=b.z.object({type:b.z.literal("connected")}),Pt=b.z.object({type:b.z.literal("status-update"),reportHubId:b.z.number(),statusType:b.z.enum(["star","read"]),value:b.z.boolean(),clientTempId:b.z.string(),recipientRawUserId:b.z.number().optional()}),or=b.z.string().optional(),ar=b.z.object({type:b.z.literal("comment-add"),reportHubId:b.z.number(),comment:On,clientTempId:b.z.string(),recipientRawUserId:b.z.number().optional(),sourceType:or}),ir=b.z.object({type:b.z.literal("comment-delete"),reportHubId:b.z.number(),commentId:b.z.number(),clientTempId:b.z.string(),recipientRawUserId:b.z.number().optional(),sourceType:or}),sr=b.z.object({type:b.z.literal("report-create"),reportHubId:b.z.number(),report:nr,clientTempId:b.z.string(),recipientRawUserId:b.z.number().optional()}),lr=b.z.object({type:b.z.literal("report-update"),reportHubId:b.z.number(),report:nr,clientTempId:b.z.string(),recipientRawUserId:b.z.number().optional()}),ur=b.z.object({type:b.z.literal("report-publish"),reportHubId:b.z.number(),report:nr,clientTempId:b.z.string(),recipientRawUserId:b.z.number().optional()}),cr=b.z.object({type:b.z.literal("report-delete"),reportHubId:b.z.number(),clientTempId:b.z.string(),sourceType:or}),Bn=b.z.discriminatedUnion("type",[ui,Pt,ar,ir,sr,lr,ur,cr]);var qn=require("@aiquants/sse"),Yn=require("@aiquants/sse/shared-source");var Le="daily-report:ids:",Ne="daily-report:business-date:",Mt=(e,t)=>`${e}st:${t}`,dr=e=>`${Le}user:${e}:`,Un=(e,t)=>Mt(dr(e),t),ci=e=>`${Ne}${e}:`,Hn=(e,t)=>Mt(ci(e),t),rt=e=>`daily-report:date:${e}:user:`,je=(e,t)=>`${rt(e)}${t}:`,$n=(e,t,r)=>Mt(je(e,t),r),he=e=>`daily-report:detail:${e}:user:`,kt=(e,t)=>`${he(e)}${t}:`,Fn=(e,t,r)=>Mt(kt(e,t),r);var Ee=(e,t)=>{let[r,n]=e.split("-").map(Number),[o,a]=t.split("-").map(Number);return r!==o?r<o:n<=a},di=5e3,mi=100,We=class{constructor(t){this.config=t;this._lastId=null;this._positioning=null;this._generation=0;this._logger=t.logger??oe(1,"[SSE Reader]"),this._source=this._createSource()}ready(){return this._position().then(()=>{})}subscribe(t,r){return this._source.subscribe({next:n=>{this._lastId=n.id,t(n)},error:n=>r(n instanceof Error?n:new Error(String(n)))})}async destroy(){await this._source.dispose(),this._generation+=1,this._positioning=null,this._lastId=null,this._source=this._createSource()}_position(){if(this._lastId!==null)return Promise.resolve(this._lastId);if(this._positioning===null){let t=this._generation;this._positioning=this._readTail().then(r=>{if(t!==this._generation)throw new Error("SSE reader was destroyed while the stream tail was being read");return this._positioning=null,this._lastId=r,r},r=>{throw t===this._generation&&(this._positioning=null),r})}return this._positioning}async _readTail(){let t=await this.config.redis?.getClient();if(!t)throw new Error("Failed to get Redis client to read the SSE stream tail");let r=await t.xRevRange(this.config.streamKey,"+","-",{COUNT:1});return r.length>0?r[0].id:"0-0"}_createSource(){return(0,Yn.createSharedSource)({start:t=>this._start(t),lingerMs:0,replay:"none",runtime:qn.systemSseRuntime,onListenerError:t=>this._logger.error("SSE reader subscriber threw:",t),onStopError:t=>this._logger.error("SSE reader failed to stop:",t)})}async _start(t){let r=await this._position(),n=await this.config.redis?.createClient();if(!n)throw new Error("Failed to create Redis client for SSE reader");n.on("error",l=>{this._logger.error("Redis client error:",l)});let o=!1,a=this._readLoop(n,t,r,()=>o);return async()=>{if(o=!0,n.isOpen)try{await n.quit()}catch{}await a}}async _readLoop(t,r,n,o){let a=n;try{for(;!o()&&t.isOpen;){let l=await t.xRead([{key:this.config.streamKey,id:a}],{BLOCK:di,COUNT:mi});if(l)for(let i of l)for(let f of i.messages)a=f.id,this._invalidateCaches(f.message),r.next({id:f.id,message:f.message})}}catch(l){o()||(this._logger.error("xRead loop error:",l),r.fail(l instanceof Error?l:new Error(String(l))));return}o()||r.fail(new Error("Redis client for SSE reader closed unexpectedly"))}_invalidateCaches(t){try{let r=t?.data?JSON.parse(t.data):null,n=r?.type;if((n==="report-create"||n==="report-delete"||n==="report-publish")&&this.config.cache.invalidatePrefix(Le),n==="comment-add"||n==="comment-delete"||n==="status-update"){let o=r?.reportHubId;typeof o=="number"&&this.config.cache.invalidatePrefix(he(o))}}catch{}}};var ot=require("drizzle-orm");var pi="",yi=64,hi=e=>e.toLowerCase(),fi=e=>e.trim().toLowerCase();function Vn(e){if(e==null)return null;if(!Array.isArray(e))return new Set;let t=new Set;for(let r of e){if(typeof r!="string")continue;let n=fi(r);n.length>0&&t.add(n)}return t}function fe(e,t){return e===null?!0:t==null?!1:e.has(hi(t))}function Oe(e){return e!==null&&e.size===0}function jn(e,t){if(t!==null)return t.size===0?ot.sql`1 = 0`:(0,ot.inArray)(ot.sql`LOWER(${e})`,[...t])}var Je,Ke,nt=class nt{constructor(t,r){qt(this,Je);qt(this,Ke);Yt(this,Je,t),Yt(this,Ke,r)}get visible(){return Xe(this,Je)===null?null:new Set(Xe(this,Je))}get commentable(){return Xe(this,Ke)===null?null:new Set(Xe(this,Ke))}static restrictTo(t){let r=typeof t=="object"&&t!==null&&"read"in t,n=Vn(r?t.read:t),o=r?t.comment:void 0;if(o===void 0)return new nt(n,n);let a=Vn(o),l=new Set;for(let i of a??[])n.has(i)&&l.add(i);return new nt(n,l)}static unrestricted(t){return new nt(null,null)}};Je=new WeakMap,Ke=new WeakMap;var le=nt;function at(e){let t=zn(e.visible),r=zn(e.commentable);return t===r?t:`d:${t.length}:${t}${r}`}function zn(e){if(e===null)return"all";if(e.size===0)return"none";let t=[...e].sort().map(n=>`${n.length}:${n}`).join(pi);if(t.length<=yi)return`s:${t}`;let r=2166136261;for(let n=0;n<t.length;n++)r^=t.charCodeAt(n),r=Math.imul(r,16777619);return`sh:${(r>>>0).toString(16)}`}var Gn=Object.freeze({...Ze,route:"sse",frameworkDataRefusal:Rt}),Wn=864e5,Ri={baseMs:2e3,jitterMs:8e3},mr=6e4,Lt=1e3,Xn=JSON.stringify({type:"connected"}),Jn="0-0",gi=(e,t,r,n)=>{if(r===null&&n===null)return!0;let o=typeof t.sourceType=="string"?t.sourceType:void 0;switch(e.type){case"connected":case"status-update":return!0;case"report-create":case"report-update":case"report-publish":return fe(r,e.report.sourceType);case"comment-add":case"comment-delete":return fe(n,o??"Internal");case"report-delete":return fe(r,o)}},bi=["externalComments","postedComments"],Si=(e,t,r)=>{if(r===null||e.type!=="report-create"&&e.type!=="report-update"&&e.type!=="report-publish"||fe(r,e.report.sourceType))return!1;let n=t.report;for(let o of bi)n[o]=[];return!0},Ai=(e,t)=>{e.writeEvent({event:null,id:t,data:Xn})},Ti=(e,t,r,n,o)=>{if(r.data)try{let a=JSON.parse(r.data),l=Bn.safeParse(a);if(!l.success){o.error("SSE message validation failed:",l.error.format());return}let i=l.data,f=typeof a.recipientRawUserId=="number"?a.recipientRawUserId:void 0;if((i.type==="status-update"||f!==void 0)&&f!==n.internalUserId||!gi(i,a,n.visibleSet,n.commentableSet)){Ai(e,t);return}let E=Si(i,a,n.commentableSet),h;if("recipientRawUserId"in a){let{recipientRawUserId:I,...y}=a;h=JSON.stringify(y)}else E?h=JSON.stringify(a):h=r.data;e.writeEvent({event:null,id:t,data:h})}catch(a){o.error(`[SSE:${n.internalUserId}] processEntry error:`,a)}},Qn=e=>{let{authenticate:t,service:r,resolveViewerScope:n,redis:o,sseReader:a,streamKey:l,logger:i}=e,f=async(s,E)=>{let{request:h,internalUserId:I,cursor:y}=E,m=E.initialScope.visible,T=E.initialScope.commentable,A=0,S=setInterval(()=>{let k=++A;n(h,"refresh").then(N=>{k===A&&(m=N.visible,T=N.commentable)})},mr);s.onClose(()=>clearInterval(S));let x=y===null?Jn:y,$=y!==null&&o!==void 0,D=[],H=null,C=k=>{Ee(k.id,x)||(x=k.id,Ti(s,k.id,k.message,{internalUserId:I,visibleSet:m,commentableSet:T},i))},v=async(k,N)=>{let[M]=await k.xRange(l,"-","+",{COUNT:1});return M!==void 0&&!Ee(M.id,N)},O=async(k,N)=>{if(await v(k,N))return!1;let M=N;for(;;){let L=await k.xRange(l,M,"+",{COUNT:Lt}),V=L[0];if(V!==void 0&&V.id!==M&&await v(k,M))return!1;for(let J of L){if(H!==null&&Ee(H,J.id))return!0;C(J)}let z=L.at(-1);if(L.length<Lt||z===void 0||s.isClosed())return!0;M=z.id}},q=a.subscribe(k=>{if(!$){C(k);return}Ee(k.id,x)||(H===null&&(H=k.id),D.push(k))},k=>{i.error(`[SSE:${I}] Fan-Out reader error:`,k),s.close()});if(s.onClose(q),y===null){await a.ready();try{let k=await o?.getClient();if(k){let N=await k.xRevRange(l,"+","-",{COUNT:1});N.length>0&&!Ee(N[0].id,x)&&(x=N[0].id)}}catch{}}if(s.writeEvent({event:null,id:x===Jn?null:x,data:Xn}),(0,we.startSseHeartbeat)(s,{intervalMs:kn,retry:Ri,runtime:Kn.systemSseRuntime}),y===null||o===void 0)return;await a.ready();let P=await o.getClient();if(P===void 0)throw new Error("redis client unavailable for the SSE catch-up");if(!await O(P,y)){s.writeRetry(Wn),s.writeEvent({event:"resync-required",id:null,data:""}),s.close();return}$=!1;for(let k of D.splice(0))C(k)};return async({request:s,params:E})=>{let h,I=()=>{let m=new Headers;return h!==void 0&&m.append("Set-Cookie",h),m},y=m=>(0,we.terminalStreamResponse)(m,{data:"",retryMs:Wn,headers:I()});try{let m=await t(s,{failureRedirect:null});h=m.cookie;let{user:T}=m;if(!T)return y("auth-required");let A=await r.getUserIdByExternalId(T.id);if(!A)return y("forbidden");if(E.endpoint!=="updates")return new Response("Not Found",{status:404,headers:I()});let S=(0,we.readLastEventId)(s,Ln);if(S!==null&&!Nn(S))return i.warn(`[SSE:${A}] malformed resume cursor; asking the client to resync`),y("resync-required");let x=await n(s,"initial");return(0,we.createSseResponse)({requestSignal:xt(s),headers:I(),onError:($,D)=>i.error(`[SSE:${A}] ${D} failed:`,$),produce:$=>f($,{request:s,internalUserId:A,cursor:S,initialScope:x})})}catch(m){if(m instanceof Response)throw m;let T=m instanceof Error?m:new Error(String(m));return i.error(`500 sse name=${T.name} message=${T.message}`),new Response("Internal Server Error",{status:500,headers:I()})}}};var Di=(e,t)=>{let r=new Headers({"Content-Type":"application/json"});return t?.setCookie&&r.append("Set-Cookie",t.setCookie),new Response(JSON.stringify(e),{status:t?.status??200,headers:r})},_i=Object.freeze({...Ze,route:"api",frameworkDataRefusal:({params:e})=>zt(e.endpoint)&&ht[e.endpoint]==="stream"?Rt():null}),Ei=Object.freeze({...Ze,route:"action"}),wi=new Set(["update","publish","delete","toggleStar","toggleRead","addComment"]),Ii=e=>e!==null&&wi.has(e),xi=e=>{let t=Ce(e,"intent"),r=Ce(e,"businessDate"),n=r===null?null:Qe(r);if(r!==null&&n===null)return{error:"Invalid businessDate"};let o=Ce(e,"operationTimestamp"),a=vr(o);if(o!==null&&a===null)return{error:"Invalid operationTimestamp"};if(t==="clearCache")return{command:{intent:t}};let l=Ce(e,"clientTempId");if(!l)return{error:"clientTempId required"};if(t==="create")return n===null?{error:"businessDate required"}:{command:{intent:t,clientTempId:l,businessDate:n,operationTimestamp:a}};let i=qe(Ce(e,"reportHubId"));if(i===null)return{error:"Invalid reportHubId"};if(t==="deleteComment"){let f=qe(Ce(e,"commentId"));return f===null?{error:"Invalid commentId"}:{command:{intent:t,clientTempId:l,businessDate:n,operationTimestamp:a,reportHubId:i,commentId:f}}}return Ii(t)?{command:{intent:t,clientTempId:l,businessDate:n,operationTimestamp:a,reportHubId:i}}:{error:"Invalid intent"}},Ci=async e=>{try{return await e.formData()}catch{return null}};function Nt(e){let{authenticate:t,service:r,encodeUserId:n,redis:o,sseReader:a,streamKey:l}=e,i=e.loginRedirectPath??"/auth/login",f=e.logger??oe(3,"[DailyReportAPI]"),s=e.logger??oe(3,"[DailyReportVisibility]"),E=e.logger??oe(1,"[DailyReportSSE]"),h=e.logger??oe(1,"[DailyReportAttachment]"),I=e.logger??oe(2,"[DailyReportIsolation]"),y=async(C,v="initial")=>{let O=e.resolveVisibleSourceTypes;if(!O)return le.unrestricted("no visibility port injected: this deployment does not restrict by source type");try{let q=await O(C,{reason:v});return q==null?le.unrestricted("visibility port returned null/undefined: this deployment opts out of source-type filtering"):le.restrictTo(q)}catch(q){return s.error("resolveVisibleSourceTypes threw; failing closed (deny all)",q),le.restrictTo([])}},m=async({request:C})=>{let{user:v,cookie:O}=await t(C,{failureRedirect:i}),q=new Headers;O&&q.append("Set-Cookie",O);let P=await r.getUserIdByExternalId(v.id),k=P?n(P):null;return{data:{user:v,userId:k},headers:q}},T={"business-date":async(C,v,O,q,P)=>{let k=C.searchParams.get("businessDate"),N=k===null?null:Qe(k);if(N===null)return ae(O,v,{error:{message:"Invalid business date"}},400);let M=C.searchParams.get("forceRefresh")==="true",L=await r.getDailyReportsByBusinessDateByExternalId(P,N,q.id,{forceRefresh:M});return ae(O,v,{businessDate:N,reports:L},200)},[pt]:Mn({service:r,logger:f}),report:async(C,v,O,q,P)=>{let k=qe(C.searchParams.get("reportHubId"));if(k===null)return ae(O,v,{error:{message:"Invalid reportHubId"}},400);let N=C.searchParams.get("forceRefresh")==="true",M=await r.getDailyReportDetailByIdByExternalId(P,k,q.id,{snapshot:!0,forceRefresh:N});return M?ae(O,v,{report:M},200):ae(O,v,{error:{message:"Report not found"}},404)}},A=async({request:C,params:v})=>{let{user:O,cookie:q}=await t(C,{failureRedirect:null}),P=q??null;if(!O)return ae(C,P,{error:{message:"Unauthorized"}},401);let k=v.endpoint;if(!zt(k))return ae(C,P,{error:{message:"Unknown endpoint"}},404);let N=Dr[ht[k]];if(!N.includes(C.method)){let L=ae(C,P,{error:{message:"Method not allowed"}},405);return L.headers.set("Allow",N.join(", ")),L}let M=X();try{let L=new URL(C.url),V=await y(C);return await T[k](L,P,C,O,V)}catch(L){let V=X()-M,z=L instanceof Error?L:new Error(String(L));return f.error(`500 endpoint=${k} elapsed=${V}ms name=${z.name} code=${"code"in z?z.code:"N/A"} message=${z.message}`),f.error("Stack:",z.stack),ae(C,P,{error:{message:"Internal Server Error"}},500)}},S=async({request:C,params:v})=>{let{user:O,cookie:q}=await t(C,{failureRedirect:null}),P=(N,M)=>Di(N,{...M,setCookie:q});if(!O)return P({error:"Unauthorized"},{status:401});let k=X();try{if(v.endpoint!=="action")return P({error:"Unknown endpoint"},{status:404});let N=await Ci(C);if(N===null)return P({error:"Invalid form"},{status:400});let M=xi(N);if("error"in M)return P({error:M.error},{status:400});let{command:L}=M,V=await r.getUserIdByExternalId(O.id);if(!V)return P({error:"User not found"},{status:404});let z=await y(C);if(L.intent==="clearCache")return e.enableDevCacheClear?(await r.clearCache(),P({status:"OK",intent:"clearCache"})):P({error:"Invalid intent"},{status:400});let{clientTempId:J,operationTimestamp:be}=L;if(L.intent==="create"){let F=await r.createDailyReport(V,L.businessDate,J);return P({status:"OK",intent:"create",report:F,reportHubId:String(F.reportHubId),clientTempId:J})}let{reportHubId:Q,businessDate:pe}=L,Ie=async(F,ee,ie)=>{let Se=N.get(ee);if(Se===null)return P({error:`${ee} required`},{status:400});try{let Ae=await ie(Se==="true");return P({status:"OK",intent:F,updatedStatus:{isStarred:Ae.isStarred,isRead:Ae.isRead},operationTimestamp:be,reportHubId:String(Q),clientTempId:J})}catch(Ae){if(Ae instanceof Error&&Ae.message==="Not Found")return P({error:"Report not found"},{status:404});throw Ae}};switch(L.intent){case"update":{let F=N.get("title"),ee=N.get("content");try{return await r.updateDailyReport(Q,V,{title:F,content:ee},J),P({status:"OK",intent:"update",reportHubId:String(Q),clientTempId:J})}catch(ie){if(ie instanceof Error){if(ie.message==="Unauthorized")return P({error:"Unauthorized"},{status:403});if(ie.message==="Not Found")return P({error:"Report not found"},{status:404})}throw ie}}case"publish":try{let F=await r.publishDailyReport(Q,V,J);return P({status:"OK",intent:"publish",reportHubId:String(Q),clientTempId:J,report:F})}catch(F){if(F instanceof Error){if(F.message==="Unauthorized")return P({error:"Unauthorized"},{status:403});if(F.message==="Not Found")return P({error:"Report not found"},{status:404})}throw F}case"delete":try{return await r.deleteDailyReport(Q,V,J),P({status:"OK",intent:"delete",reportHubId:String(Q),clientTempId:J})}catch(F){if(F instanceof Error){if(F.message==="Unauthorized")return P({error:"Unauthorized"},{status:403});if(F.message==="Not Found")return P({error:"Report not found"},{status:404})}throw F}case"toggleStar":return await Ie("toggleStar","isStarred",F=>r.setStarStatus(z,V,Q,pe,F,J));case"toggleRead":return await Ie("toggleRead","isRead",F=>r.setReadStatus(z,V,Q,pe,F,J));case"addComment":{let F=N.get("content");if(!F)return P({error:"Content required"},{status:400});try{let ee=await r.addComment(z,V,Q,F,pe,J),ie={...ee,userId:ee.userId};return P({status:"OK",intent:"addComment",newComment:ie,reportHubId:String(Q),clientTempId:J})}catch(ee){if(ee instanceof Error){if(ee.message==="Not Found")return P({error:"Report not found"},{status:404});if(ee.message.startsWith("Comments are restricted"))return P({error:"Comments are restricted for this report"},{status:403})}throw ee}}case"deleteComment":{let{commentId:F}=L;try{return await r.deleteComment(z,V,Q,F,pe,J),P({status:"OK",reportHubId:String(Q),deletedCommentId:String(F),clientTempId:J})}catch(ee){if(ee instanceof Error){if(ee.message==="Unauthorized")return P({error:"Unauthorized"},{status:403});if(ee.message==="Not Found")return P({error:"Comment not found"},{status:404})}throw ee}}}}catch(N){if(N instanceof Response)throw N;let M=X()-k,L=N instanceof Error?N:new Error(String(N));return f.error(`500 action elapsed=${M}ms name=${L.name} message=${L.message}`),f.error("Stack:",L.stack),P({error:"Internal Server Error"},{status:500})}},x=Qn({authenticate:t,service:r,resolveViewerScope:y,redis:o,sseReader:a,streamKey:l,logger:E}),$=En({authenticate:t,service:r,encodeUserId:n,resolveViewerScope:y,logger:h,tuning:e}),D=Cr(I),H=(C,v)=>async O=>{let q=Ir(O.request)?C.frameworkDataRefusal(O):null;if(q!==null)throw q;return xr(O.request,C)?(D(C.route,O.request),C.crossSiteRejection()):v(O)};return{index:{loader:m},api:{loader:H(_i,A),action:H(Ei,S)},sse:{loader:H(Gn,x)},attachment:{loader:H(_n,$)}}}var Zn=require("@aiquants/mssql"),u=require("drizzle-orm");var Be=e=>(0,u.getColumns)(e),vi=e=>{if(e!==void 0){if(typeof e!="object"||e===null)throw Pe("attachmentThumbnailRenderer","an object with id and render",e);if(e.render===void 0)throw Tt("attachmentThumbnailRenderer.render","a function");if(typeof e.render!="function")throw Pe("attachmentThumbnailRenderer.render","a function",e.render);if(typeof e.id!="string"||e.id.trim()==="")throw Pe("attachmentThumbnailRenderer.id","a non-blank string naming the rendering pipeline version",e.id);return e}},ne=(e,t)=>{if(!e)return null;let r=e instanceof Date?e:new Date(e);if(Number.isNaN(r.getTime()))return typeof e=="string"?e:null;let n=r.getFullYear(),o=n<0?`-${String(-n).padStart(4,"0")}`:String(n).padStart(4,"0"),a=String(r.getMonth()+1).padStart(2,"0"),l=String(r.getDate()).padStart(2,"0");if(t==="YYYY-MM-DD")return`${o}-${a}-${l}`;let i=String(r.getHours()).padStart(2,"0"),f=String(r.getMinutes()).padStart(2,"0"),s=String(r.getSeconds()).padStart(2,"0");return`${o}-${a}-${l} ${i}:${f}:${s}`};function Ot(e){let{db:t,tables:r,userTable:n,resolveUserId:o,encodeUserId:a,redis:l,cache:i,epochs:f}=e,{hub:s,internal:E,comment:h,label:I,hubLabel:y,userStatus:m}=r,T=e.externalSources??[],A=e.draftLabelNames&&e.draftLabelNames.length>0?e.draftLabelNames:[e.draftLabelName??"\u4E0B\u66F8\u304D"],S=A[0]??"\u4E0B\u66F8\u304D",x=e.logger??oe(1,"[DailyReportService]");Qt({attachmentIdCodec:e.attachmentIdCodec,readAttachment:e.readAttachment,attachmentThumbnailRenderer:e.attachmentThumbnailRenderer,attachmentMaxBytes:e.attachmentMaxBytes});let $=Object.freeze({idCodec:e.attachmentIdCodec,readAttachment:e.readAttachment,thumbnailRenderer:vi(e.attachmentThumbnailRenderer),maxBytes:Me("attachmentMaxBytes",e.attachmentMaxBytes,1,Hr)}),D=d=>(0,Zn.runWithTransactionRetry)(c=>t.transaction(p=>c(()=>d(p))),e.transactionRetry),H=e.idsTtlMs??18e4,C="daily-report:ids:epoch",v=e.businessDateTtlMs??3e5,O="daily-report:date-epoch:",q="daily-report:detail-epoch:",k=`${e.streamKey??"daily-report:sse-stream"}:v2`,N=e.streamMaxLen??1e4,M=d=>f.incrementEpoch(d),L=d=>jn(s.sourceType,d),V=async(d,c)=>{let p=await l?.getClient();if(!p){x.warn(`[SSE] Redis client unavailable (${c})`);return}let g=X();try{await p.xAdd(k,"*",{data:JSON.stringify(d)},{TRIM:{strategy:"MAXLEN",strategyModifier:"~",threshold:N}});let _=X()-g;_>1e3&&x.warn(`[SSE] Slow publish (${c}): ${_}ms`)}catch(_){x.error(`[SSE] Redis publish failed (${c}):`,_)}},z=async()=>{try{let d=await l?.getClient();if(d===void 0)return null;let[c]=await d.xRevRange(k,"+","-",{COUNT:1});return c===void 0?null:c.id}catch(d){return x.error("[DailyReportService] SSE stream anchor read failed",d),null}},J=d=>d==null||d===""?null:/^\d+$/.test(d)?a(Number(d)):d,be=()=>{let d={};for(let c of T)d[`ext_${c.sourceType}`]=Be(c.table);return d},Q=d=>{let c=d;for(let p of T)c=c.leftJoin(p.table,(0,u.and)((0,u.eq)(s.sourceType,p.sourceType),(0,u.eq)(s.sourceIdNum,p.idColumn)));return c},pe=(d,c,p)=>{let{hub:g,internal:_}=c,U=g.summary,w=[],B=null,Y=null,j=null,K=null,Z=null,ue=null,He=[],Te=T.find(W=>W.sourceType===g.sourceType),$e=Te?c[`ext_${Te.sourceType}`]:void 0;if(Te&&$e){let W=Te.mapRow($e);W.content!==void 0&&(U=W.content),W.employeeName!==void 0&&(ue=W.employeeName),W.category!==void 0&&(B=W.category),W.creationCategory!==void 0&&(Y=W.creationCategory),W.visitTimeFrom!==void 0&&(j=W.visitTimeFrom),W.visitTimeTo!==void 0&&(K=W.visitTimeTo),W.customerName!==void 0&&(Z=W.customerName),W.interviewers!==void 0&&(w=W.interviewers),W.externalComments!==void 0&&(He=W.externalComments)}else g.sourceType==="Internal"&&_&&(U=_.body);let Re=(c.labels??[]).map(W=>({id:W.id,name:W.name,color:W.color})),te=c.postedCommentRows??[],G=fe(d.commentable,g.sourceType),re=Y?A.includes(Y):!1,$t=Ue?.[0]??null;return re&&$t&&!Re.some(W=>W.id===$t)&&Re.push({id:$t,name:S,color:null}),{reportHubId:g.id,date:ne(g.businessDate,"YYYY-MM-DD"),author:c.creatorName??J(g.createdBy)??"",userId:g.userId?a(g.userId):"",sourceType:g.sourceType??"Internal",createdAt:ne(g.createdAt,"YYYY-MM-DD HH:mm:ss"),updatedAt:ne(g.updatedAt,"YYYY-MM-DD HH:mm:ss"),updatedBy:J(g.updatedBy),employeeName:ue??c.creatorName??J(g.createdBy),category:B,creationCategory:Y,visitTimeFrom:j,visitTimeTo:K,customerName:Z,interviewers:w,subject:g.title,content:U,externalComments:G?He:[],isRead:c.isRead??!1,isStarred:c.isStarred??!1,labels:Re,postedComments:te.filter(W=>G||p!==void 0&&W.userId===p).map(W=>({...W,userId:a(W.userId),isMine:p?W.userId===p:!1})),attachments:c.attachments}},Ie=async(d,c)=>{let p=(0,u.aliasedTable)(y,"draft_label"),g=await xe();return(await t.select({reportHubId:s.id,businessDate:s.businessDate,sourceType:s.sourceType}).from(s).leftJoin(p,(0,u.and)((0,u.eq)(p.hubId,s.id),(0,u.inArray)(p.labelId,g))).where((0,u.and)((0,u.isNull)(s.deletedAt),(0,u.or)((0,u.eq)(s.userId,c),(0,u.isNull)(s.userId),(0,u.isNull)(p.hubId)),L(d.visible))).orderBy((0,u.desc)(s.businessDate),(0,u.desc)(s.id))).map(U=>({...U,businessDate:ne(U.businessDate,"YYYY-MM-DD")}))},F=async(d,c,p)=>{let g=await Se(c);if(!g)return[];if(Oe(d.visible))return[];let _=(0,u.aliasedTable)(y,"draft_label"),U=await xe();return(await t.select({reportHubId:s.id,businessDate:s.businessDate,sourceType:s.sourceType}).top(p).from(s).leftJoin(_,(0,u.and)((0,u.eq)(_.hubId,s.id),(0,u.inArray)(_.labelId,U))).where((0,u.and)((0,u.isNull)(s.deletedAt),(0,u.or)((0,u.eq)(s.userId,g),(0,u.isNull)(s.userId),(0,u.isNull)(_.hubId)),L(d.visible))).orderBy((0,u.desc)(s.businessDate),(0,u.desc)(s.id))).map(B=>({...B,businessDate:ne(B.businessDate,"YYYY-MM-DD")}))},ee=async(d,c)=>{let p=await Q(t.select({hub:Be(s),internal:Be(E),creatorName:n.displayName,...be()}).from(s)).leftJoin(E,(0,u.eq)(s.id,E.hubId)).leftJoin(n,(0,u.eq)(s.userId,n.id)).where((0,u.and)((0,u.eq)(s.businessDate,u.sql`${c}`),(0,u.isNull)(s.deletedAt),L(d.visible))).orderBy((0,u.desc)(s.id)),g=await ut(p.map(_=>_.hub.id));return p.map(_=>pe(d,{..._,attachments:g.get(_.hub.id)??[]}))},ie=new Map,Se=async d=>{if(!e.disableUserIdCache&&ie.has(d))return ie.get(d)??null;let c=await o(d);return c!==null&&!e.disableUserIdCache&&ie.set(d,c),c},Ae=async(d,c,{forceRefresh:p=!1,snapshot:g=!1,ttlMsOverride:_,onFetchStart:U}={})=>{let w=await Se(c);if(!w)return{items:[],streamAnchor:null};if(Oe(d.visible))return{items:[],streamAnchor:await z()};let B=Un(w,at(d)),[Y]=await i.getOrFetch({cacheKey:B,fetcher:async()=>{let j=await z(),K=await Ie(d,w);return Ar(K)?[{items:K,streamAnchor:j}]:(x.warn("[DailyReportService] ids array is not in stream order; re-sorting (check SQL ORDER BY vs compareIdsStreamOrder, or concurrent row movement during the scan)"),[{items:[...K].sort(yt),streamAnchor:j}])},onFetchStart:U,forceRefresh:p,snapshot:g,ttlMsOverride:_??H,epochKey:C,refreshAheadRatio:.5});if(Y===void 0)throw new Error("[DailyReportService] ids cache returned no record");return Y},go=(d,c,{forceRefresh:p=!1,snapshot:g=!1,ttlMsOverride:_}={})=>{let U=ce(c);return U?Oe(d.visible)?Promise.resolve([]):i.getOrFetch({cacheKey:Hn(U,at(d)),fetcher:()=>ee(d,U),forceRefresh:p,snapshot:g,ttlMsOverride:_??v}):Promise.resolve([])},Ue=null,lt=async()=>(Ue!==null||(Ue=(await t.select({id:I.id}).from(I).where((0,u.inArray)(I.name,A)).orderBy(I.id)).map(c=>c.id)),Ue),xe=async()=>{let d=await lt();return d.length>0?d:[-1]},Bt=async()=>{let d=await lt();if(d.length===0)return null;let[c]=await t.select({id:I.id}).top(1).from(I).where((0,u.eq)(I.name,S));return c?.id??d[0]},bo=(d,c)=>c!=null?"absent":d!=null?"present":"unknown",ut=async d=>{let c=new Map,p=r.attachment,g=$.idCodec;if(d.length===0||!p||!g)return c;let _=$.thumbnailRenderer!==void 0&&$.readAttachment!==void 0,U=await t.select({id:p.id,hubId:p.hubId,fileName:p.fileName,fileType:p.fileType,fileSize:p.fileSize,createdAt:p.createdAt,objectCheckedAt:p.objectCheckedAt,objectMissingAt:p.objectMissingAt}).from(p).where((0,u.inArray)(p.hubId,d)).orderBy((0,u.asc)(p.createdAt),(0,u.asc)(p.id));for(let w of U){let B=w.fileType?String(w.fileType):null,Y=w.fileSize!=null?Number(w.fileSize):null,j=bo(w.objectCheckedAt,w.objectMissingAt),K={id:g.encode(Number(w.id)),fileName:String(w.fileName),fileType:B,fileSize:Y,createdAt:ne(w.createdAt,"YYYY-MM-DD HH:mm:ss"),state:j,hasThumbnail:_&&j!=="absent"&&wt({fileType:B,fileSize:Y},$.maxBytes)},Z=c.get(Number(w.hubId));Z?Z.push(K):c.set(Number(w.hubId),[K])}return c},So=async(d,c,p)=>{let g=r.attachment;if(!g||Oe(d.visible))return null;let _=await xe(),U=(0,u.aliasedTable)(y,"draft_label");return(await t.select({fileName:g.fileName,filePath:g.filePath,fileType:g.fileType,fileSize:g.fileSize}).top(1).from(g).innerJoin(s,(0,u.eq)(s.id,g.hubId)).leftJoin(U,(0,u.and)((0,u.eq)(U.hubId,s.id),(0,u.inArray)(U.labelId,_))).where((0,u.and)((0,u.eq)(g.id,c),(0,u.isNull)(s.deletedAt),(0,u.or)((0,u.eq)(s.userId,p),(0,u.isNull)(U.hubId)),L(d.visible))))[0]??null},Ao=async d=>{let c=r.attachment;if(!c)return;let p=new Date;try{await t.update(c).set({objectCheckedAt:p,objectMissingAt:p,updatedAt:p}).where((0,u.eq)(c.id,d))}catch(g){x.error("markAttachmentMissing failed",g)}},To=async d=>{let c=r.attachment;if(!c)return;let p=new Date;try{await t.update(c).set({objectCheckedAt:p,objectMissingAt:null,updatedAt:p}).where((0,u.eq)(c.id,d))}catch(g){x.error("markAttachmentPresent failed",g)}},Do=async(d,c,p,{forceRefresh:g=!1,snapshot:_=!1,ttlMsOverride:U}={})=>{let w=await Se(p);if(!w)return[];let B=ce(c);if(!B)return[];if(Oe(d.visible))return[];let Y=$n(B,w,at(d));return i.getOrFetch({cacheKey:Y,fetcher:async()=>{let j=await xe(),K=(0,u.aliasedTable)(y,"draft_label"),Z=await Q(t.select({hub:Be(s),internal:Be(E),isRead:m.isRead,isStarred:m.isStarred,creatorName:n.displayName,...be()}).from(s)).leftJoin(E,(0,u.eq)(s.id,E.hubId)).leftJoin(m,(0,u.and)((0,u.eq)(s.id,m.hubId),(0,u.eq)(m.userId,w))).leftJoin(K,(0,u.and)((0,u.eq)(K.hubId,s.id),(0,u.inArray)(K.labelId,j))).leftJoin(n,(0,u.eq)(s.userId,n.id)).where((0,u.and)((0,u.eq)(s.businessDate,u.sql`${B}`),(0,u.isNull)(s.deletedAt),(0,u.or)((0,u.eq)(s.userId,w),(0,u.isNull)(K.hubId)),L(d.visible))).orderBy((0,u.desc)(s.id));if(Z.length===0)return[];let ue=Z.map(G=>G.hub.id),He=await t.select({hubId:y.hubId,id:I.id,name:I.name,color:I.color}).from(y).innerJoin(I,(0,u.eq)(y.labelId,I.id)).where((0,u.inArray)(y.hubId,ue)),Te=await t.select({hubId:h.hubId,id:h.id,body:h.body,createdAt:h.createdAt,userId:h.userId,userName:n.displayName}).from(h).leftJoin(n,(0,u.eq)(h.userId,n.id)).where((0,u.inArray)(h.hubId,ue)).orderBy((0,u.asc)(h.createdAt)),$e=await ut(ue),Re=new Map,te=new Map;for(let G of He){let re=Re.get(G.hubId);re||(re=[],Re.set(G.hubId,re)),re.push({id:G.id,name:G.name,color:G.color})}for(let G of Te){let re=te.get(G.hubId);re||(re=[],te.set(G.hubId,re)),re.push({id:G.id,content:G.body,createdAt:ne(G.createdAt,"YYYY-MM-DD HH:mm:ss")||"",userId:G.userId,userName:G.userName||""})}return Z.map(G=>{let re=G.hub.id;return pe(d,{...G,attachments:$e.get(re)??[],labels:Re.get(re)||[],postedCommentRows:te.get(re)||[]},w)})},forceRefresh:g,snapshot:_,ttlMsOverride:U??v,epochKey:`${O}${B}`})},Ge=async(d,c,p,{forceRefresh:g=!1,snapshot:_=!1,ttlMsOverride:U}={})=>{if(Oe(d.visible))return null;let w=Fn(c,p,at(d));return(await i.getOrFetch({cacheKey:w,fetcher:async()=>{let Y=await xe(),j=(0,u.aliasedTable)(y,"draft_label"),K=await Q(t.select({hub:Be(s),internal:Be(E),isRead:m.isRead,isStarred:m.isStarred,creatorName:n.displayName,...be()}).from(s)).leftJoin(E,(0,u.eq)(s.id,E.hubId)).leftJoin(m,(0,u.and)((0,u.eq)(s.id,m.hubId),(0,u.eq)(m.userId,p))).leftJoin(j,(0,u.and)((0,u.eq)(j.hubId,s.id),(0,u.inArray)(j.labelId,Y))).leftJoin(n,(0,u.eq)(s.userId,n.id)).where((0,u.and)((0,u.eq)(s.id,c),(0,u.isNull)(s.deletedAt),(0,u.or)((0,u.eq)(s.userId,p),(0,u.isNull)(j.hubId)),L(d.visible)));if(K.length===0)return[];let Z=K[0].hub.id,ue=await t.select({id:I.id,name:I.name,color:I.color}).from(y).innerJoin(I,(0,u.eq)(y.labelId,I.id)).where((0,u.eq)(y.hubId,Z)),He=await t.select({id:h.id,body:h.body,createdAt:h.createdAt,userId:h.userId,userName:n.displayName}).from(h).leftJoin(n,(0,u.eq)(h.userId,n.id)).where((0,u.eq)(h.hubId,Z)).orderBy((0,u.asc)(h.createdAt)),Te=await ut([Z]),$e=ue.map(te=>({id:te.id,name:te.name,color:te.color})),Re=He.map(te=>({id:te.id,content:te.body,createdAt:ne(te.createdAt,"YYYY-MM-DD HH:mm:ss")||"",userId:te.userId,userName:te.userName||""}));return[pe(d,{...K[0],attachments:Te.get(Z)??[],labels:$e,postedCommentRows:Re},p)]},forceRefresh:g,snapshot:_,ttlMsOverride:U??v,epochKey:`${q}${c}`}))[0]??null},_o=async(d,c,p,g={})=>{let _=await Se(p);return _?Ge(d,c,_,g):null},Eo=async(d,c)=>{let p=await xe(),g=(0,u.aliasedTable)(y,"draft_label"),[_]=await t.select({sourceType:s.sourceType,deletedAt:s.deletedAt}).top(1).from(s).leftJoin(g,(0,u.and)((0,u.eq)(g.hubId,s.id),(0,u.inArray)(g.labelId,p))).where((0,u.and)((0,u.eq)(s.id,d),(0,u.or)((0,u.eq)(s.userId,c),(0,u.isNull)(g.hubId))));return _??null},Ut=async(d,c,p)=>{let g=await Eo(c,p);if(!g||g.deletedAt||!fe(d.visible,g.sourceType))throw new Error("Not Found")},wo=async(d,c,p,g,_,U)=>{await Ut(d,p,c);let w=await t.select().top(1).from(m).where((0,u.and)((0,u.eq)(m.hubId,p),(0,u.eq)(m.userId,c))),B;if(w.length>0?w[0].isStarred!==_?B=(await t.update(m).set({isStarred:_,updatedAt:new Date,updatedBy:String(c)}).output().where((0,u.and)((0,u.eq)(m.hubId,p),(0,u.eq)(m.userId,c))))[0]:B=w[0]:B=(await t.insert(m).output().values({hubId:p,userId:c,isStarred:_,isRead:!1,createdAt:new Date,createdBy:String(c),updatedAt:new Date,updatedBy:String(c)}))[0],g){let Y=ce(g);Y&&(i.invalidatePrefix(je(Y,c)),await M(`${O}${Y}`))}return i.invalidatePrefix(kt(p,c)),await M(`${q}${p}`),await V(Pt.parse({type:"status-update",reportHubId:p,recipientRawUserId:c,statusType:"star",value:_,clientTempId:U}),"setStarStatus"),B},Io=async(d,c,p,g,_,U)=>{await Ut(d,p,c);let w=await t.select().top(1).from(m).where((0,u.and)((0,u.eq)(m.hubId,p),(0,u.eq)(m.userId,c))),B;if(w.length>0?w[0].isRead!==_?B=(await t.update(m).set({isRead:_,updatedAt:new Date,updatedBy:String(c)}).output().where((0,u.and)((0,u.eq)(m.hubId,p),(0,u.eq)(m.userId,c))))[0]:B=w[0]:B=(await t.insert(m).output().values({hubId:p,userId:c,isRead:_,isStarred:!1,createdAt:new Date,createdBy:String(c),updatedAt:new Date,updatedBy:String(c)}))[0],g){let Y=ce(g);Y&&(i.invalidatePrefix(je(Y,c)),await M(`${O}${Y}`))}return i.invalidatePrefix(kt(p,c)),await M(`${q}${p}`),await V(Pt.parse({type:"status-update",reportHubId:p,recipientRawUserId:c,statusType:"read",value:_,clientTempId:U}),"setReadStatus"),B},hr=async(d,c)=>{if(c===null)return;let p=await xe(),[g]=await t.select({hubId:y.hubId}).top(1).from(y).where((0,u.and)((0,u.eq)(y.hubId,d),(0,u.inArray)(y.labelId,p)));return g?c:void 0},xo=async(d,c,p,g,_,U)=>{let[w]=await t.select({sourceType:s.sourceType,deletedAt:s.deletedAt,userId:s.userId}).top(1).from(s).where((0,u.eq)(s.id,p));if(!w||w.deletedAt)throw new Error("Not Found");if(await Ut(d,p,c),!fe(d.commentable,w.sourceType))throw new Error("Comments are restricted by the viewer's comment permission");if(w.sourceType.toLowerCase()!=="internal")throw new Error("Comments are restricted for external daily report sources");let B=await hr(p,w.userId),[Y]=await t.insert(h).output().values({hubId:p,userId:c,body:g,createdAt:new Date,createdBy:String(c),updatedAt:new Date,updatedBy:String(c)}),[j]=await t.select({displayName:n.displayName}).top(1).from(n).where((0,u.eq)(n.id,c)),K=j?.displayName??"";if(_){let ue=ce(_);ue&&(i.invalidatePrefix(rt(ue)),await M(`${O}${ue}`))}i.invalidatePrefix(he(p)),await M(`${q}${p}`);let Z={id:Y.id,userId:a(Y.userId),userName:K,content:Y.body,createdAt:ne(Y.createdAt,"YYYY-MM-DD HH:mm:ss")??"",isMine:!0};return await V(ar.parse({type:"comment-add",reportHubId:p,comment:Z,clientTempId:U,recipientRawUserId:B,sourceType:w.sourceType}),"addComment"),Z},Co=async(d,c)=>await d.select().top(1).from(h).where((0,u.eq)(h.id,c)),vo=async(d,c,p,g,_,U)=>{let w=await Co(t,g);if(w.length===0)throw new Error("Not Found");if(w[0].hubId!==p)throw new Error("Not Found");let[B]=await t.select({userId:s.userId,sourceType:s.sourceType}).top(1).from(s).where((0,u.eq)(s.id,w[0].hubId));if(!(B&&fe(d.visible,B.sourceType)))throw new Error("Not Found");if(w[0].userId!==c)throw new Error("Unauthorized");let Y=await hr(p,B.userId);if(await t.delete(h).where((0,u.eq)(h.id,g)),_){let j=ce(_);j&&(i.invalidatePrefix(rt(j)),await M(`${O}${j}`))}i.invalidatePrefix(he(p)),await M(`${q}${p}`),await V(ir.parse({type:"comment-delete",reportHubId:p,commentId:g,clientTempId:U,recipientRawUserId:Y,sourceType:B?.sourceType}),"deleteComment")},Po=async(d,c,p)=>{if(!mt(c))throw Pe("createDailyReport: businessDate","a business-date key in the canonical form YYYY-MM-DD naming a day from 0001-01-01 to 9999-12-31",c);x.info("createDailyReport called",{userId:d,businessDate:c});let[g]=await t.select({displayName:n.displayName}).from(n).where((0,u.eq)(n.id,d)),_=g?.displayName??a(d);try{let U=await D(async B=>{x.info("Starting transaction");let Y=`internal-temp-${Date.now()}-${Math.random()}`,[j]=await B.insert(s).output().values({sourceType:"Internal",sourceId:Y,businessDate:new Date(`${c}T00:00:00Z`),userId:d,title:"(\u7121\u984C)",createdAt:new Date,createdBy:String(d),updatedAt:new Date,updatedBy:String(d)});await B.update(s).set({sourceId:String(j.id)}).where((0,u.eq)(s.id,j.id)),x.info("Hub created",j),await B.insert(E).values({hubId:j.id,body:"",createdAt:new Date,createdBy:String(d),updatedAt:new Date,updatedBy:String(d)}),x.info("Internal created"),x.info("Calling getDraftLabelId");let K=await Bt();x.info("draftLabelId",K);let Z=[];return K&&(await B.insert(y).values({hubId:j.id,labelId:K,createdAt:new Date,createdBy:String(d)}),Z.push({id:K,name:S,color:null})),x.info("Label assigned"),{reportHubId:j.id,date:c,createdAt:ne(j.createdAt,"YYYY-MM-DD HH:mm:ss"),author:_,userId:a(d),sourceType:"Internal",employeeName:_,updatedBy:a(d),updatedAt:ne(j.updatedAt,"YYYY-MM-DD HH:mm:ss"),category:null,creationCategory:null,visitTimeFrom:null,visitTimeTo:null,customerName:null,interviewers:[],subject:j.title,content:"",externalComments:[],isRead:!0,isStarred:!1,labels:Z,postedComments:[],attachments:[]}});i.invalidatePrefix(je(c,d)),i.invalidatePrefix(Ne),i.invalidatePrefix(dr(d)),await M(C),await M(`${O}${c}`);let w=await Ge(le.unrestricted("post-write self read: the writer always sees the row they just wrote"),U.reportHubId,d,{forceRefresh:!0});if(w){let B=await lt(),Y=w.labels.some(j=>B.includes(j.id));await V(sr.parse({type:"report-create",reportHubId:w.reportHubId,report:w,clientTempId:p,recipientRawUserId:Y?d:void 0}),"createDailyReport")}return w??U}catch(U){throw x.error("Error in createDailyReport",U),U}},ct=async(d,c)=>await d.select().top(1).from(s).where((0,u.eq)(s.id,c)),Ht=async(d,c,p)=>{await d.update(s).set(p).where((0,u.eq)(s.id,c))},fr=async(d,c,p)=>{await d.update(E).set(p).where((0,u.eq)(E.hubId,c))},Rr=async(d,c,p)=>{await d.delete(y).where((0,u.and)((0,u.eq)(y.hubId,c),(0,u.eq)(y.labelId,p)))};return{streamKey:k,streamMaxLen:N,attachmentDelivery:$,clearCache:async()=>{i.clearAll(),ie.clear(),Ue=null,f&&await M(C),x.info("[DailyReportService] Server-side DB/SQL caches cleared successfully.")},invalidateHubReadCaches:async(d,c)=>{i.invalidatePrefix(Ne),i.invalidatePrefix(Le),await M(C);for(let p of new Set(d))i.invalidatePrefix(he(p)),await M(`${q}${p}`);for(let p of new Set(c)){let g=ce(p);g&&await M(`${O}${g}`)}},getUserIdByExternalId:Se,getDailyReportIdsByExternalId:Ae,getDailyReportIdsFirstPageByExternalId:F,readSseStreamAnchor:z,getDailyReportsByBusinessDate:go,getDailyReportsByBusinessDateByExternalId:Do,getDailyReportDetailById:Ge,getDailyReportDetailByIdByExternalId:_o,getDraftLabelId:Bt,getAttachmentsByHubIds:ut,getAttachmentForUser:So,markAttachmentMissing:Ao,markAttachmentPresent:To,setStarStatus:wo,setReadStatus:Io,addComment:xo,deleteComment:vo,createDailyReport:Po,updateDailyReport:async(d,c,p,g)=>{let _=await ct(t,d);if(!_.length||_[0].deletedAt)throw new Error("Not Found");if(_[0].userId!==c)throw new Error("Unauthorized");await D(async B=>{p.title!==void 0&&await Ht(B,d,{title:p.title,updatedAt:new Date,updatedBy:String(c)}),p.content!==void 0&&await fr(B,d,{body:p.content,updatedAt:new Date,updatedBy:String(c)})}),i.invalidatePrefix(he(d)),i.invalidatePrefix(Ne),await M(`${q}${d}`);let U=ce(ne(_[0].businessDate,"YYYY-MM-DD"));U&&(i.invalidatePrefix(rt(U)),await M(`${O}${U}`));let w=await Ge(le.unrestricted("post-write self read: the writer always sees the row they just wrote"),d,c,{forceRefresh:!0});if(w){let B=await lt(),Y=w.labels.some(j=>B.includes(j.id));await V(lr.parse({type:"report-update",reportHubId:w.reportHubId,report:w,clientTempId:g,recipientRawUserId:Y?c:void 0}),"updateDailyReport")}},publishDailyReport:async(d,c,p)=>{let g=await ct(t,d);if(!g.length)throw new Error("Not Found");if(g[0].userId!==c)throw new Error("Unauthorized");let _=await Bt();if(!_)return null;if(await Rr(t,d,_),i.invalidatePrefix(he(d)),i.invalidatePrefix(Ne),i.invalidatePrefix(Le),await M(C),g[0].businessDate){let B=ce(ne(g[0].businessDate,"YYYY-MM-DD"));B&&await M(`${O}${B}`)}let U=ce(ne(g[0].businessDate,"YYYY-MM-DD"));U&&i.invalidatePrefix(je(U,c));let w=await Ge(le.unrestricted("post-write self read: the writer always sees the row they just wrote"),d,c,{forceRefresh:!0});return w&&await V(ur.parse({type:"report-publish",reportHubId:w.reportHubId,report:w,clientTempId:p}),"publishDailyReport"),w??null},deleteDailyReport:async(d,c,p)=>{let g=await ct(t,d);if(!g.length||g[0].deletedAt)throw new Error("Not Found");if(g[0].userId!==c)throw new Error("Unauthorized");if(await Ht(t,d,{deletedAt:new Date,deletedBy:String(c),updatedAt:new Date,updatedBy:String(c)}),i.invalidatePrefix(he(d)),i.invalidatePrefix(Ne),i.invalidatePrefix(Le),await M(C),g[0].businessDate){let _=ce(ne(g[0].businessDate,"YYYY-MM-DD"));_&&await M(`${O}${_}`)}await V(cr.parse({type:"report-delete",reportHubId:d,clientTempId:p,sourceType:g[0].sourceType}),"deleteDailyReport")},findDailyReportHubById:ct,updateDailyReportHub:Ht,updateDailyReportInternal:fr,deleteDailyReportLabel:Rr}}var Pi=oe(1,"[DailyReportExternalSource]"),eo=(e,t,r,n=Pi)=>{if(!e)return[];try{let o=JSON.parse(e);return Array.isArray(o)?o.map(r).filter(a=>a!==null):(n.warn(`Unexpected ${t} format: not an array`),[])}catch(o){return n.warn(`Failed to parse ${t}:`,o),[]}};var it=require("drizzle-orm"),R=require("drizzle-orm/mssql-core");function to(e,t){let r=(0,R.mssqlSchema)(e),n=t.userTable,o=r.table("DailyReportHub",{id:(0,R.bigint)("id",{mode:"number"}).identity().notNull(),sourceType:(0,R.nvarchar)("source_type",{length:20}).notNull(),sourceId:(0,R.nvarchar)("source_id",{length:100}).notNull(),sourceIdNum:(0,R.bigint)("source_id_num",{mode:"number"}).generatedAlwaysAs(it.sql`TRY_CAST(source_id AS BIGINT)`),businessDate:(0,R.date)("business_date"),userId:(0,R.bigint)("user_id",{mode:"number"}),title:(0,R.nvarchar)("title",{length:200}),summary:(0,R.nvarchar)("summary",{length:"max"}),createdAt:(0,R.datetime2)("created_at").notNull(),createdBy:(0,R.nvarchar)("created_by",{length:50}).notNull(),updatedAt:(0,R.datetime2)("updated_at").notNull(),updatedBy:(0,R.nvarchar)("updated_by",{length:50}).notNull(),deletedAt:(0,R.datetime2)("deleted_at"),deletedBy:(0,R.nvarchar)("deleted_by",{length:50})},h=>[(0,R.primaryKey)({name:`${e}_DailyReportHub_pk`,columns:[h.id]}),(0,R.foreignKey)({name:`${e}_DailyReportHub_user_id_fk`,columns:[h.userId],foreignColumns:[n.id]}),(0,R.index)(`${e}_DailyReportHub_business_date_index`).on(h.businessDate),(0,R.index)(`${e}_DailyReportHub_updated_at_index`).on(h.updatedAt),(0,R.index)(`${e}_DailyReportHub_source_index`).on(h.sourceType,h.sourceId),(0,R.index)(`${e}_DailyReportHub_user_id_index`).on(h.userId),(0,R.index)(`${e}_DailyReportHub_business_date_id_index`).on((0,it.desc)(h.businessDate),(0,it.desc)(h.id)),(0,R.index)(`${e}_DailyReportHub_deleted_at_index`).on(h.deletedAt)]),a=r.table("DailyReportInternal",{hubId:(0,R.bigint)("hub_id",{mode:"number"}).notNull(),body:(0,R.nvarchar)("body",{length:"max"}),metadata:(0,R.nvarchar)("metadata",{length:"max"}),createdAt:(0,R.datetime2)("created_at").notNull(),createdBy:(0,R.nvarchar)("created_by",{length:50}).notNull(),updatedAt:(0,R.datetime2)("updated_at").notNull(),updatedBy:(0,R.nvarchar)("updated_by",{length:50}).notNull()},h=>[(0,R.primaryKey)({name:`${e}_DailyReportInternal_pk`,columns:[h.hubId]}),(0,R.foreignKey)({name:`${e}_DailyReportInternal_hub_id_fk`,columns:[h.hubId],foreignColumns:[o.id]})]),l=r.table("DailyReportComment",{id:(0,R.bigint)("id",{mode:"number"}).identity().notNull(),hubId:(0,R.bigint)("hub_id",{mode:"number"}).notNull(),userId:(0,R.bigint)("user_id",{mode:"number"}).notNull(),body:(0,R.nvarchar)("body",{length:"max"}).notNull(),createdAt:(0,R.datetime2)("created_at").notNull(),createdBy:(0,R.nvarchar)("created_by",{length:50}).notNull(),updatedAt:(0,R.datetime2)("updated_at").notNull(),updatedBy:(0,R.nvarchar)("updated_by",{length:50}).notNull()},h=>[(0,R.primaryKey)({name:`${e}_DailyReportComment_pk`,columns:[h.id]}),(0,R.foreignKey)({name:`${e}_DailyReportComment_hub_id_fk`,columns:[h.hubId],foreignColumns:[o.id]}),(0,R.foreignKey)({name:`${e}_DailyReportComment_user_id_fk`,columns:[h.userId],foreignColumns:[n.id]}),(0,R.index)(`${e}_DailyReportComment_hub_id_index`).on(h.hubId)]),i=r.table("DailyReportLabel",{id:(0,R.bigint)("id",{mode:"number"}).identity().notNull(),userId:(0,R.bigint)("user_id",{mode:"number"}),name:(0,R.nvarchar)("name",{length:50}).notNull(),color:(0,R.nvarchar)("color",{length:20}),sortOrder:(0,R.int)("sort_order"),createdAt:(0,R.datetime2)("created_at").notNull(),createdBy:(0,R.nvarchar)("created_by",{length:50}).notNull(),updatedAt:(0,R.datetime2)("updated_at").notNull(),updatedBy:(0,R.nvarchar)("updated_by",{length:50}).notNull()},h=>[(0,R.primaryKey)({name:`${e}_DailyReportLabel_pk`,columns:[h.id]}),(0,R.foreignKey)({name:`${e}_DailyReportLabel_user_id_fk`,columns:[h.userId],foreignColumns:[n.id]})]),f=r.table("DailyReportHub_Label",{hubId:(0,R.bigint)("hub_id",{mode:"number"}).notNull(),labelId:(0,R.bigint)("label_id",{mode:"number"}).notNull(),createdAt:(0,R.datetime2)("created_at").notNull(),createdBy:(0,R.nvarchar)("created_by",{length:50}).notNull()},h=>[(0,R.primaryKey)({name:`${e}_DailyReportHub_Label_pk`,columns:[h.hubId,h.labelId]}),(0,R.foreignKey)({name:`${e}_DailyReportHub_Label_hub_id_fk`,columns:[h.hubId],foreignColumns:[o.id]}),(0,R.foreignKey)({name:`${e}_DailyReportHub_Label_label_id_fk`,columns:[h.labelId],foreignColumns:[i.id]})]),s=r.table("DailyReportUserStatus",{hubId:(0,R.bigint)("hub_id",{mode:"number"}).notNull(),userId:(0,R.bigint)("user_id",{mode:"number"}).notNull(),isRead:(0,R.bit)("is_read").default(!1).notNull(),isStarred:(0,R.bit)("is_starred").default(!1).notNull(),createdAt:(0,R.datetime2)("created_at").notNull(),createdBy:(0,R.nvarchar)("created_by",{length:50}).notNull(),updatedAt:(0,R.datetime2)("updated_at").notNull(),updatedBy:(0,R.nvarchar)("updated_by",{length:50}).notNull()},h=>[(0,R.primaryKey)({name:`${e}_DailyReportUserStatus_pk`,columns:[h.hubId,h.userId]}),(0,R.foreignKey)({name:`${e}_DailyReportUserStatus_hub_id_fk`,columns:[h.hubId],foreignColumns:[o.id]}),(0,R.foreignKey)({name:`${e}_DailyReportUserStatus_user_id_fk`,columns:[h.userId],foreignColumns:[n.id]})]),E=r.table("DailyReportAttachment",{id:(0,R.bigint)("id",{mode:"number"}).identity().notNull(),hubId:(0,R.bigint)("hub_id",{mode:"number"}).notNull(),uploadedBy:(0,R.bigint)("uploaded_by",{mode:"number"}),sourceKey:(0,R.nvarchar)("source_key",{length:200}).notNull(),fileName:(0,R.nvarchar)("file_name",{length:255}).notNull(),filePath:(0,R.nvarchar)("file_path",{length:"max"}).notNull(),fileType:(0,R.nvarchar)("file_type",{length:100}),fileSize:(0,R.bigint)("file_size",{mode:"number"}),objectCheckedAt:(0,R.datetime2)("object_checked_at"),objectMissingAt:(0,R.datetime2)("object_missing_at"),createdAt:(0,R.datetime2)("created_at").notNull(),createdBy:(0,R.nvarchar)("created_by",{length:50}).notNull(),updatedAt:(0,R.datetime2)("updated_at").notNull(),updatedBy:(0,R.nvarchar)("updated_by",{length:50}).notNull()},h=>[(0,R.primaryKey)({name:`${e}_DailyReportAttachment_pk`,columns:[h.id]}),(0,R.foreignKey)({name:`${e}_DailyReportAttachment_hub_id_fk`,columns:[h.hubId],foreignColumns:[o.id]}),(0,R.foreignKey)({name:`${e}_DailyReportAttachment_uploaded_by_fk`,columns:[h.uploadedBy],foreignColumns:[n.id]}),(0,R.uniqueIndex)(`${e}_DailyReportAttachment_source_unique`).on(h.hubId,h.sourceKey),(0,R.index)(`${e}_DailyReportAttachment_hub_id_index`).on(h.hubId,h.createdAt)]);return{hub:o,internal:a,comment:l,attachment:E,label:i,hubLabel:f,userStatus:s}}var Mi=5e7,pr=2e8,ki=1,yr=Object.freeze({fixedBytes:4*1024*1024,pipelineRows:2048,wholeImageBuffer:Object.freeze({"jpeg-single-scan":Object.freeze({kind:"none"}),"jpeg-multi-scan":Object.freeze({kind:"jpeg-coefficients"}),png:Object.freeze({kind:"none"}),"png-interlaced":Object.freeze({kind:"decoded-raster"}),gif:Object.freeze({kind:"canvas",bytesPerPixel:4}),"webp-lossy":Object.freeze({kind:"none"}),"webp-lossy-alpha":Object.freeze({kind:"canvas",bytesPerPixel:5}),"webp-lossless":Object.freeze({kind:"canvas",bytesPerPixel:4}),"webp-animated":Object.freeze({kind:"canvas",bytesPerPixel:9})})}),ro=125,no=4,oo=16,ao=50,io=2,st=Object.freeze({renderMs:se.renderMs,nanosecondsPerBlockVisit:ro,margin:no,maxBlockVisits:Math.floor(se.renderMs*1e6/(ro*no)),walkBudgetMs:oo,nanosecondsPerWalkStep:ao,walkMargin:io,maxWalkSteps:Math.floor(oo*1e6/(ao*io))}),Li=new Map([["uchar",1],["char",1],["ushort",2],["short",2],["uint",4],["int",4],["float",4],["complex",8],["double",8]]),so=75,lo=4,uo="#ffffff",Ni=1,Oi={png:"VipsForeignLoadPngBuffer",jpeg:"VipsForeignLoadJpegBuffer",gif:"VipsForeignLoadNsgifBuffer",webp:"VipsForeignLoadWebpBuffer"},Bi=[/out of memory/i,/insufficient memory/i,/memory allocation|allocation failed/i,/(?:cannot|could not|unable to|failed to) allocate/i,/picture memory error/i,/unable to create thread|error creating thread|resource temporarily unavailable/i,/too many open files|no space left on device/i,/\b(?:ENOMEM|EAGAIN|EMFILE|ENFILE|ENOSPC)\b/],co=Object.freeze({ok:!1,reason:"failed"}),mo=Object.freeze({ok:!1,reason:"unsupported"}),po=e=>({layout:e.multiScan?"jpeg-multi-scan":"jpeg-single-scan",coefficientBytes:sn(e)}),yo=(e,t)=>{switch(t){case"jpeg":{let r=er(e);return r===null?null:po(r)}case"png":{let r=cn(e);return r===null?null:{layout:r?"png-interlaced":"png",coefficientBytes:0}}case"gif":return{layout:"gif",coefficientBytes:0};case"webp":{let r=dn(e,st.maxWalkSteps);return r===null?null:{layout:`webp-${r}`,coefficientBytes:0}}}},ho=(e,t)=>{let r=Li.get(t.depth);if(r===void 0)return null;let n=t.channels*r,o=yr,a=o.wholeImageBuffer[e.layout];return(a.kind==="none"?0:a.kind==="decoded-raster"?t.width*t.height*n:a.kind==="jpeg-coefficients"?e.coefficientBytes:t.width*t.height*a.bytesPerPixel)+o.pipelineRows*t.width*n+o.fixedBytes},fo=(e,t,r)=>{let n=yo(e,t);return n===null?null:ho(n,r)},Ui=e=>e!==null&&e<=pr,Hi=(e,t)=>{if(t!=="jpeg")return yo(e,t);let r=ln(e,st);return r===null||r.blockVisits>st.maxBlockVisits?null:po(r.header)},$i=e=>{let t=e instanceof Error?e.message:"";return Bi.some(r=>r.test(t))?"failed":"unsupported"},Ro=e=>{e.cache(!1),e.concurrency(ki),e.block({operation:["VipsForeignLoad"]}),e.unblock({operation:Object.values(Oi)});let t=async(n,o,a,l,i)=>{let f=Hi(n,o);if(f===null)return mo;try{let s=e(n,{limitInputPixels:Mi,animated:!1});if(!Ui(ho(f,await s.metadata())))return mo;if(i.aborted)return co;let E=await s.rotate().resize({width:a,height:l,fit:"inside",withoutEnlargement:!0}).flatten({background:uo}).webp({quality:so,effort:lo}).toBuffer();return{ok:!0,bytes:new Uint8Array(E),contentType:"image/webp"}}catch(s){return{ok:!1,reason:$i(s)}}},r=async(n,{format:o,maxWidth:a,maxHeight:l,signal:i})=>i.aborted?co:t(n,o,a,l,i);return{id:`sharp-${e.versions.sharp}/vips-${e.versions.vips}/webp-q${so}-e${lo}/flatten-${uo}/v${Ni}`,render:r}};function Fi(e){e.redis||(e.logger??console).warn("[DailyReport] redis provider is not injected: cross-worker cache invalidation is disabled (staleness is bounded only by TTL) and SSE publishing is skipped.");let t=dt(e.redis),r=new Fe({defaultTtlMs:e.cacheDefaultTtlMs??6e4},t),n=Ot({...e,cache:r,epochs:t}),o=new We({redis:e.redis,streamKey:n.streamKey,cache:r,logger:e.logger}),a=Nt({authenticate:e.authenticate,resolveVisibleSourceTypes:e.resolveVisibleSourceTypes,service:n,encodeUserId:e.encodeUserId,attachmentRateLimitPerMinute:e.attachmentRateLimitPerMinute,attachmentConcurrency:e.attachmentConcurrency,attachmentThumbnailRateLimitPerMinute:e.attachmentThumbnailRateLimitPerMinute,attachmentThumbnailConcurrency:e.attachmentThumbnailConcurrency,attachmentThumbnailCacheBytes:e.attachmentThumbnailCacheBytes,redis:e.redis,sseReader:o,streamKey:n.streamKey,loginRedirectPath:e.loginRedirectPath,enableDevCacheClear:e.enableDevCacheClear,logger:e.logger});return{service:n,cache:r,epochs:t,sseReader:o,streamKey:n.streamKey,knownSourceTypes:[...new Set(["Internal",...(e.externalSources??[]).map(l=>l.sourceType)])],...a}}0&&(module.exports={DAILY_REPORT_ATTACHMENT_THUMBNAIL_MAX_OUTPUT_BYTES,DAILY_REPORT_ATTACHMENT_THUMBNAIL_OUTPUT_MEDIA_TYPES,DAILY_REPORT_SHARP_THUMBNAIL_DECODE_BUDGET_BYTES,DAILY_REPORT_SHARP_THUMBNAIL_DECODE_WORK_MODEL,DAILY_REPORT_SHARP_THUMBNAIL_WORKING_SET_MODEL,DAILY_REPORT_SSE_CATCH_UP_BATCH,DAILY_REPORT_SSE_VISIBILITY_REFRESH_MS,DailyReportSseReader,DailyReportViewerScope,SqlResultCache,createDailyReportHandlers,createDailyReportServer,createDailyReportService,createEpochStore,createSharpThumbnailRenderer,defineDailyReportSchema,generateETag,isStreamIdLte,jsonResponseWithETag,predictSharpThumbnailWorkingSetBytes,transformJsonArray});
5
5
  /* v8 ignore next -- @preserve 到達不能: 時間切れと中断の購読はどちらも cleanup で同時に外れ、枠を渡すときも先に cleanup するので、列にいない待機者でここへは来ない。それでも splice(-1) が別の待機者を消さないよう残す */