@oddington/sdk 0.1.18 → 0.1.19

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
@@ -73,7 +73,7 @@ end`},cmapHexFormat=function(){var values2=[];for(var _i=0;_i<arguments.length;_
73
73
  `}var padding=1;var bounds={x:borderWidth+padding,y:borderWidth+padding,width:width-(borderWidth+padding)*2,height:height-(borderWidth+padding)*2};var _d=layoutMultilineText(text4,{alignment:TextAlignment.Left,fontSize:widgetFontSize!==null&&widgetFontSize!==undefined?widgetFontSize:fieldFontSize,font,bounds}),lines=_d.lines,fontSize=_d.fontSize,lineHeight=_d.lineHeight;var selectedLines=[];for(var idx4=0,len3=lines.length;idx4<len3;idx4++){var line=lines[idx4];if(selected.includes(line.text))selectedLines.push(idx4)}var blue=rgb(153/255,193/255,218/255);var textColor=(_b=widgetColor!==null&&widgetColor!==undefined?widgetColor:fieldColor)!==null&&_b!==undefined?_b:black;if(widgetColor||widgetFontSize!==undefined){updateDefaultAppearance(widget,textColor,font,fontSize)}else{updateDefaultAppearance(optionList.acroField,textColor,font,fontSize)}return __spreadArrays(rotate,drawOptionList({x:0+borderWidth/2,y:0+borderWidth/2,width:width-borderWidth,height:height-borderWidth,borderWidth:borderWidth!==null&&borderWidth!==undefined?borderWidth:0,borderColor,textColor,font:font.name,fontSize,color:normalBackgroundColor,textLines:lines,lineHeight,selectedColor:blue,selectedLines,padding}))};var init_appearances=__esm(()=>{init_tslib_es62();init_operations();init_colors();init_rotations();init_layout();init_alignment();init_operators();init_utils2();tfRegex2=/\/([^\0\t\n\f\r\ ]+)[\0\t\n\f\r\ ]+(\d*\.\d+|\d+)[\0\t\n\f\r\ ]+Tf/;colorRegex=/(\d*\.\d+|\d+)[\0\t\n\f\r\ ]*(\d*\.\d+|\d+)?[\0\t\n\f\r\ ]*(\d*\.\d+|\d+)?[\0\t\n\f\r\ ]*(\d*\.\d+|\d+)?[\0\t\n\f\r\ ]+(g|rg|k)/});var PDFEmbeddedPage,PDFEmbeddedPage_default;var init_PDFEmbeddedPage=__esm(()=>{init_tslib_es62();init_PDFDocument();init_core();init_utils2();PDFEmbeddedPage=function(){function PDFEmbeddedPage2(ref,doc,embedder){this.alreadyEmbedded=false;assertIs(ref,"ref",[[PDFRef_default,"PDFRef"]]);assertIs(doc,"doc",[[PDFDocument_default,"PDFDocument"]]);assertIs(embedder,"embedder",[[PDFPageEmbedder_default,"PDFPageEmbedder"]]);this.ref=ref;this.doc=doc;this.width=embedder.width;this.height=embedder.height;this.embedder=embedder}PDFEmbeddedPage2.prototype.scale=function(factor){assertIs(factor,"factor",["number"]);return{width:this.width*factor,height:this.height*factor}};PDFEmbeddedPage2.prototype.size=function(){return this.scale(1)};PDFEmbeddedPage2.prototype.embed=function(){return __awaiter(this,undefined,undefined,function(){return __generator(this,function(_a){switch(_a.label){case 0:if(!!this.alreadyEmbedded)return[3,2];return[4,this.embedder.embedIntoContext(this.doc.context,this.ref)];case 1:_a.sent();this.alreadyEmbedded=true;_a.label=2;case 2:return[2]}})})};PDFEmbeddedPage2.of=function(ref,doc,embedder){return new PDFEmbeddedPage2(ref,doc,embedder)};return PDFEmbeddedPage2}();PDFEmbeddedPage_default=PDFEmbeddedPage});var PDFFont,PDFFont_default;var init_PDFFont=__esm(()=>{init_tslib_es62();init_PDFDocument();init_core();init_utils2();PDFFont=function(){function PDFFont2(ref,doc,embedder){this.modified=true;assertIs(ref,"ref",[[PDFRef_default,"PDFRef"]]);assertIs(doc,"doc",[[PDFDocument_default,"PDFDocument"]]);assertIs(embedder,"embedder",[[CustomFontEmbedder_default,"CustomFontEmbedder"],[StandardFontEmbedder_default,"StandardFontEmbedder"]]);this.ref=ref;this.doc=doc;this.name=embedder.fontName;this.embedder=embedder}PDFFont2.prototype.encodeText=function(text4){assertIs(text4,"text",["string"]);this.modified=true;return this.embedder.encodeText(text4)};PDFFont2.prototype.widthOfTextAtSize=function(text4,size){assertIs(text4,"text",["string"]);assertIs(size,"size",["number"]);return this.embedder.widthOfTextAtSize(text4,size)};PDFFont2.prototype.heightAtSize=function(size,options){var _a;assertIs(size,"size",["number"]);assertOrUndefined(options===null||options===undefined?undefined:options.descender,"options.descender",["boolean"]);return this.embedder.heightOfFontAtSize(size,{descender:(_a=options===null||options===undefined?undefined:options.descender)!==null&&_a!==undefined?_a:true})};PDFFont2.prototype.sizeAtHeight=function(height){assertIs(height,"height",["number"]);return this.embedder.sizeOfFontAtHeight(height)};PDFFont2.prototype.getCharacterSet=function(){if(this.embedder instanceof StandardFontEmbedder_default){return this.embedder.encoding.supportedCodePoints}else{return this.embedder.font.characterSet}};PDFFont2.prototype.embed=function(){return __awaiter(this,undefined,undefined,function(){return __generator(this,function(_a){switch(_a.label){case 0:if(!this.modified)return[3,2];return[4,this.embedder.embedIntoContext(this.doc.context,this.ref)];case 1:_a.sent();this.modified=false;_a.label=2;case 2:return[2]}})})};PDFFont2.of=function(ref,doc,embedder){return new PDFFont2(ref,doc,embedder)};return PDFFont2}();PDFFont_default=PDFFont});var PDFImage,PDFImage_default;var init_PDFImage=__esm(()=>{init_tslib_es62();init_PDFDocument();init_core();init_utils2();PDFImage=function(){function PDFImage2(ref,doc,embedder){assertIs(ref,"ref",[[PDFRef_default,"PDFRef"]]);assertIs(doc,"doc",[[PDFDocument_default,"PDFDocument"]]);assertIs(embedder,"embedder",[[JpegEmbedder_default,"JpegEmbedder"],[PngEmbedder_default,"PngEmbedder"]]);this.ref=ref;this.doc=doc;this.width=embedder.width;this.height=embedder.height;this.embedder=embedder}PDFImage2.prototype.scale=function(factor){assertIs(factor,"factor",["number"]);return{width:this.width*factor,height:this.height*factor}};PDFImage2.prototype.scaleToFit=function(width,height){assertIs(width,"width",["number"]);assertIs(height,"height",["number"]);var imgWidthScale=width/this.width;var imgHeightScale=height/this.height;var scale2=Math.min(imgWidthScale,imgHeightScale);return this.scale(scale2)};PDFImage2.prototype.size=function(){return this.scale(1)};PDFImage2.prototype.embed=function(){return __awaiter(this,undefined,undefined,function(){var _a,doc,ref;return __generator(this,function(_b){switch(_b.label){case 0:if(!this.embedder)return[2];if(!this.embedTask){_a=this,doc=_a.doc,ref=_a.ref;this.embedTask=this.embedder.embedIntoContext(doc.context,ref)}return[4,this.embedTask];case 1:_b.sent();this.embedder=undefined;return[2]}})})};PDFImage2.of=function(ref,doc,embedder){return new PDFImage2(ref,doc,embedder)};return PDFImage2}();PDFImage_default=PDFImage});var ImageAlignment;var init_alignment2=__esm(()=>{(function(ImageAlignment2){ImageAlignment2[ImageAlignment2["Left"]=0]="Left";ImageAlignment2[ImageAlignment2["Center"]=1]="Center";ImageAlignment2[ImageAlignment2["Right"]=2]="Right"})(ImageAlignment||(ImageAlignment={}))});var init_image=__esm(()=>{init_alignment2()});var assertFieldAppearanceOptions=function(options){assertOrUndefined(options===null||options===undefined?undefined:options.x,"options.x",["number"]);assertOrUndefined(options===null||options===undefined?undefined:options.y,"options.y",["number"]);assertOrUndefined(options===null||options===undefined?undefined:options.width,"options.width",["number"]);assertOrUndefined(options===null||options===undefined?undefined:options.height,"options.height",["number"]);assertOrUndefined(options===null||options===undefined?undefined:options.textColor,"options.textColor",[[Object,"Color"]]);assertOrUndefined(options===null||options===undefined?undefined:options.backgroundColor,"options.backgroundColor",[[Object,"Color"]]);assertOrUndefined(options===null||options===undefined?undefined:options.borderColor,"options.borderColor",[[Object,"Color"]]);assertOrUndefined(options===null||options===undefined?undefined:options.borderWidth,"options.borderWidth",["number"]);assertOrUndefined(options===null||options===undefined?undefined:options.rotate,"options.rotate",[[Object,"Rotation"]])},PDFField,PDFField_default;var init_PDFField=__esm(()=>{init_tslib_es62();init_PDFDocument();init_colors();init_rotations();init_core();init_utils2();init_image();init_operations();PDFField=function(){function PDFField2(acroField,ref,doc){assertIs(acroField,"acroField",[[PDFAcroTerminal_default,"PDFAcroTerminal"]]);assertIs(ref,"ref",[[PDFRef_default,"PDFRef"]]);assertIs(doc,"doc",[[PDFDocument_default,"PDFDocument"]]);this.acroField=acroField;this.ref=ref;this.doc=doc}PDFField2.prototype.getName=function(){var _a;return(_a=this.acroField.getFullyQualifiedName())!==null&&_a!==undefined?_a:""};PDFField2.prototype.isReadOnly=function(){return this.acroField.hasFlag(AcroFieldFlags.ReadOnly)};PDFField2.prototype.enableReadOnly=function(){this.acroField.setFlagTo(AcroFieldFlags.ReadOnly,true)};PDFField2.prototype.disableReadOnly=function(){this.acroField.setFlagTo(AcroFieldFlags.ReadOnly,false)};PDFField2.prototype.isRequired=function(){return this.acroField.hasFlag(AcroFieldFlags.Required)};PDFField2.prototype.enableRequired=function(){this.acroField.setFlagTo(AcroFieldFlags.Required,true)};PDFField2.prototype.disableRequired=function(){this.acroField.setFlagTo(AcroFieldFlags.Required,false)};PDFField2.prototype.isExported=function(){return!this.acroField.hasFlag(AcroFieldFlags.NoExport)};PDFField2.prototype.enableExporting=function(){this.acroField.setFlagTo(AcroFieldFlags.NoExport,false)};PDFField2.prototype.disableExporting=function(){this.acroField.setFlagTo(AcroFieldFlags.NoExport,true)};PDFField2.prototype.needsAppearancesUpdate=function(){throw new MethodNotImplementedError(this.constructor.name,"needsAppearancesUpdate")};PDFField2.prototype.defaultUpdateAppearances=function(_font){throw new MethodNotImplementedError(this.constructor.name,"defaultUpdateAppearances")};PDFField2.prototype.markAsDirty=function(){this.doc.getForm().markFieldAsDirty(this.ref)};PDFField2.prototype.markAsClean=function(){this.doc.getForm().markFieldAsClean(this.ref)};PDFField2.prototype.isDirty=function(){return this.doc.getForm().fieldIsDirty(this.ref)};PDFField2.prototype.createWidget=function(options){var _a;var textColor=options.textColor;var backgroundColor=options.backgroundColor;var borderColor=options.borderColor;var borderWidth=options.borderWidth;var degreesAngle=toDegrees(options.rotate);var caption=options.caption;var x=options.x;var y=options.y;var width=options.width+borderWidth;var height=options.height+borderWidth;var hidden=Boolean(options.hidden);var pageRef=options.page;assertMultiple(degreesAngle,"degreesAngle",90);var widget=PDFWidgetAnnotation_default.create(this.doc.context,this.ref);var rect=rotateRectangle({x,y,width,height},borderWidth,degreesAngle);widget.setRectangle(rect);if(pageRef)widget.setP(pageRef);var ac=widget.getOrCreateAppearanceCharacteristics();if(backgroundColor){ac.setBackgroundColor(colorToComponents(backgroundColor))}ac.setRotation(degreesAngle);if(caption)ac.setCaptions({normal:caption});if(borderColor)ac.setBorderColor(colorToComponents(borderColor));var bs=widget.getOrCreateBorderStyle();if(borderWidth!==undefined)bs.setWidth(borderWidth);widget.setFlagTo(AnnotationFlags.Print,true);widget.setFlagTo(AnnotationFlags.Hidden,hidden);widget.setFlagTo(AnnotationFlags.Invisible,false);if(textColor){var da=(_a=this.acroField.getDefaultAppearance())!==null&&_a!==undefined?_a:"";var newDa=da+`
74
74
  `+setFillingColor(textColor).toString();this.acroField.setDefaultAppearance(newDa)}return widget};PDFField2.prototype.updateWidgetAppearanceWithFont=function(widget,font,_a){var{normal,rollover,down}=_a;this.updateWidgetAppearances(widget,{normal:this.createAppearanceStream(widget,normal,font),rollover:rollover&&this.createAppearanceStream(widget,rollover,font),down:down&&this.createAppearanceStream(widget,down,font)})};PDFField2.prototype.updateOnOffWidgetAppearance=function(widget,onValue,_a){var{normal,rollover,down}=_a;this.updateWidgetAppearances(widget,{normal:this.createAppearanceDict(widget,normal,onValue),rollover:rollover&&this.createAppearanceDict(widget,rollover,onValue),down:down&&this.createAppearanceDict(widget,down,onValue)})};PDFField2.prototype.updateWidgetAppearances=function(widget,_a){var{normal,rollover,down}=_a;widget.setNormalAppearance(normal);if(rollover){widget.setRolloverAppearance(rollover)}else{widget.removeRolloverAppearance()}if(down){widget.setDownAppearance(down)}else{widget.removeDownAppearance()}};PDFField2.prototype.createAppearanceStream=function(widget,appearance,font){var _a;var context2=this.acroField.dict.context;var _b=widget.getRectangle(),width=_b.width,height=_b.height;var Resources=font&&{Font:(_a={},_a[font.name]=font.ref,_a)};var stream2=context2.formXObject(appearance,{Resources,BBox:context2.obj([0,0,width,height]),Matrix:context2.obj([1,0,0,1,0,0])});var streamRef=context2.register(stream2);return streamRef};PDFField2.prototype.createImageAppearanceStream=function(widget,image,alignment2){var _a;var _b;var context2=this.acroField.dict.context;var rectangle2=widget.getRectangle();var ap=widget.getAppearanceCharacteristics();var bs=widget.getBorderStyle();var borderWidth=(_b=bs===null||bs===undefined?undefined:bs.getWidth())!==null&&_b!==undefined?_b:0;var rotation=reduceRotation(ap===null||ap===undefined?undefined:ap.getRotation());var rotate=rotateInPlace(__assign(__assign({},rectangle2),{rotation}));var adj=adjustDimsForRotation(rectangle2,rotation);var imageDims=image.scaleToFit(adj.width-borderWidth*2,adj.height-borderWidth*2);var options={x:borderWidth,y:borderWidth,width:imageDims.width,height:imageDims.height,rotate:degrees(0),xSkew:degrees(0),ySkew:degrees(0)};if(alignment2===ImageAlignment.Center){options.x+=(adj.width-borderWidth*2)/2-imageDims.width/2;options.y+=(adj.height-borderWidth*2)/2-imageDims.height/2}else if(alignment2===ImageAlignment.Right){options.x=adj.width-borderWidth-imageDims.width;options.y=adj.height-borderWidth-imageDims.height}var imageName=this.doc.context.addRandomSuffix("Image",10);var appearance=__spreadArrays(rotate,drawImage(imageName,options));var Resources={XObject:(_a={},_a[imageName]=image.ref,_a)};var stream2=context2.formXObject(appearance,{Resources,BBox:context2.obj([0,0,rectangle2.width,rectangle2.height]),Matrix:context2.obj([1,0,0,1,0,0])});return context2.register(stream2)};PDFField2.prototype.createAppearanceDict=function(widget,appearance,onValue){var context2=this.acroField.dict.context;var onStreamRef=this.createAppearanceStream(widget,appearance.on);var offStreamRef=this.createAppearanceStream(widget,appearance.off);var appearanceDict=context2.obj({});appearanceDict.set(onValue,onStreamRef);appearanceDict.set(PDFName_default.of("Off"),offStreamRef);return appearanceDict};return PDFField2}();PDFField_default=PDFField});var PDFCheckBox,PDFCheckBox_default;var init_PDFCheckBox=__esm(()=>{init_tslib_es62();init_PDFPage();init_appearances();init_colors();init_rotations();init_PDFField();init_core();init_utils2();PDFCheckBox=function(_super){__extends(PDFCheckBox2,_super);function PDFCheckBox2(acroCheckBox,ref,doc){var _this=_super.call(this,acroCheckBox,ref,doc)||this;assertIs(acroCheckBox,"acroCheckBox",[[PDFAcroCheckBox_default,"PDFAcroCheckBox"]]);_this.acroField=acroCheckBox;return _this}PDFCheckBox2.prototype.check=function(){var _a;var onValue=(_a=this.acroField.getOnValue())!==null&&_a!==undefined?_a:PDFName_default.of("Yes");this.markAsDirty();this.acroField.setValue(onValue)};PDFCheckBox2.prototype.uncheck=function(){this.markAsDirty();this.acroField.setValue(PDFName_default.of("Off"))};PDFCheckBox2.prototype.isChecked=function(){var onValue=this.acroField.getOnValue();return!!onValue&&onValue===this.acroField.getValue()};PDFCheckBox2.prototype.addToPage=function(page,options){var _a,_b,_c,_d,_e,_f;assertIs(page,"page",[[PDFPage_default,"PDFPage"]]);assertFieldAppearanceOptions(options);if(!options)options={};if(!("textColor"in options))options.textColor=rgb(0,0,0);if(!("backgroundColor"in options))options.backgroundColor=rgb(1,1,1);if(!("borderColor"in options))options.borderColor=rgb(0,0,0);if(!("borderWidth"in options))options.borderWidth=1;var widget=this.createWidget({x:(_a=options.x)!==null&&_a!==undefined?_a:0,y:(_b=options.y)!==null&&_b!==undefined?_b:0,width:(_c=options.width)!==null&&_c!==undefined?_c:50,height:(_d=options.height)!==null&&_d!==undefined?_d:50,textColor:options.textColor,backgroundColor:options.backgroundColor,borderColor:options.borderColor,borderWidth:(_e=options.borderWidth)!==null&&_e!==undefined?_e:0,rotate:(_f=options.rotate)!==null&&_f!==undefined?_f:degrees(0),hidden:options.hidden,page:page.ref});var widgetRef=this.doc.context.register(widget.dict);this.acroField.addWidget(widgetRef);widget.setAppearanceState(PDFName_default.of("Off"));this.updateWidgetAppearance(widget,PDFName_default.of("Yes"));page.node.addAnnot(widgetRef)};PDFCheckBox2.prototype.needsAppearancesUpdate=function(){var _a;var widgets=this.acroField.getWidgets();for(var idx4=0,len3=widgets.length;idx4<len3;idx4++){var widget=widgets[idx4];var state=widget.getAppearanceState();var normal=(_a=widget.getAppearances())===null||_a===undefined?undefined:_a.normal;if(!(normal instanceof PDFDict_default))return true;if(state&&!normal.has(state))return true}return false};PDFCheckBox2.prototype.defaultUpdateAppearances=function(){this.updateAppearances()};PDFCheckBox2.prototype.updateAppearances=function(provider2){var _a;assertOrUndefined(provider2,"provider",[Function]);var widgets=this.acroField.getWidgets();for(var idx4=0,len3=widgets.length;idx4<len3;idx4++){var widget=widgets[idx4];var onValue=(_a=widget.getOnValue())!==null&&_a!==undefined?_a:PDFName_default.of("Yes");if(!onValue)continue;this.updateWidgetAppearance(widget,onValue,provider2)}this.markAsClean()};PDFCheckBox2.prototype.updateWidgetAppearance=function(widget,onValue,provider2){var apProvider=provider2!==null&&provider2!==undefined?provider2:defaultCheckBoxAppearanceProvider;var appearances=normalizeAppearance(apProvider(this,widget));this.updateOnOffWidgetAppearance(widget,onValue,appearances)};PDFCheckBox2.of=function(acroCheckBox,ref,doc){return new PDFCheckBox2(acroCheckBox,ref,doc)};return PDFCheckBox2}(PDFField_default);PDFCheckBox_default=PDFCheckBox});var PDFDropdown,PDFDropdown_default;var init_PDFDropdown=__esm(()=>{init_tslib_es62();init_PDFPage();init_PDFFont();init_PDFField();init_appearances();init_colors();init_rotations();init_core();init_utils2();PDFDropdown=function(_super){__extends(PDFDropdown2,_super);function PDFDropdown2(acroComboBox,ref,doc){var _this=_super.call(this,acroComboBox,ref,doc)||this;assertIs(acroComboBox,"acroComboBox",[[PDFAcroComboBox_default,"PDFAcroComboBox"]]);_this.acroField=acroComboBox;return _this}PDFDropdown2.prototype.getOptions=function(){var rawOptions=this.acroField.getOptions();var options=new Array(rawOptions.length);for(var idx4=0,len3=options.length;idx4<len3;idx4++){var _a=rawOptions[idx4],display=_a.display,value=_a.value;options[idx4]=(display!==null&&display!==undefined?display:value).decodeText()}return options};PDFDropdown2.prototype.getSelected=function(){var values2=this.acroField.getValues();var selected=new Array(values2.length);for(var idx4=0,len3=values2.length;idx4<len3;idx4++){selected[idx4]=values2[idx4].decodeText()}return selected};PDFDropdown2.prototype.setOptions=function(options){assertIs(options,"options",[Array]);var optionObjects=new Array(options.length);for(var idx4=0,len3=options.length;idx4<len3;idx4++){optionObjects[idx4]={value:PDFHexString_default.fromText(options[idx4])}}this.acroField.setOptions(optionObjects)};PDFDropdown2.prototype.addOptions=function(options){assertIs(options,"options",["string",Array]);var optionsArr=Array.isArray(options)?options:[options];var existingOptions=this.acroField.getOptions();var newOptions=new Array(optionsArr.length);for(var idx4=0,len3=optionsArr.length;idx4<len3;idx4++){newOptions[idx4]={value:PDFHexString_default.fromText(optionsArr[idx4])}}this.acroField.setOptions(existingOptions.concat(newOptions))};PDFDropdown2.prototype.select=function(options,merge){if(merge===undefined){merge=false}assertIs(options,"options",["string",Array]);assertIs(merge,"merge",["boolean"]);var optionsArr=Array.isArray(options)?options:[options];var validOptions=this.getOptions();var hasCustomOption=optionsArr.find(function(option){return!validOptions.includes(option)});if(hasCustomOption)this.enableEditing();this.markAsDirty();if(optionsArr.length>1||optionsArr.length===1&&merge){this.enableMultiselect()}var values2=new Array(optionsArr.length);for(var idx4=0,len3=optionsArr.length;idx4<len3;idx4++){values2[idx4]=PDFHexString_default.fromText(optionsArr[idx4])}if(merge){var existingValues=this.acroField.getValues();this.acroField.setValues(existingValues.concat(values2))}else{this.acroField.setValues(values2)}};PDFDropdown2.prototype.clear=function(){this.markAsDirty();this.acroField.setValues([])};PDFDropdown2.prototype.setFontSize=function(fontSize){assertPositive(fontSize,"fontSize");this.acroField.setFontSize(fontSize);this.markAsDirty()};PDFDropdown2.prototype.isEditable=function(){return this.acroField.hasFlag(AcroChoiceFlags.Edit)};PDFDropdown2.prototype.enableEditing=function(){this.acroField.setFlagTo(AcroChoiceFlags.Edit,true)};PDFDropdown2.prototype.disableEditing=function(){this.acroField.setFlagTo(AcroChoiceFlags.Edit,false)};PDFDropdown2.prototype.isSorted=function(){return this.acroField.hasFlag(AcroChoiceFlags.Sort)};PDFDropdown2.prototype.enableSorting=function(){this.acroField.setFlagTo(AcroChoiceFlags.Sort,true)};PDFDropdown2.prototype.disableSorting=function(){this.acroField.setFlagTo(AcroChoiceFlags.Sort,false)};PDFDropdown2.prototype.isMultiselect=function(){return this.acroField.hasFlag(AcroChoiceFlags.MultiSelect)};PDFDropdown2.prototype.enableMultiselect=function(){this.acroField.setFlagTo(AcroChoiceFlags.MultiSelect,true)};PDFDropdown2.prototype.disableMultiselect=function(){this.acroField.setFlagTo(AcroChoiceFlags.MultiSelect,false)};PDFDropdown2.prototype.isSpellChecked=function(){return!this.acroField.hasFlag(AcroChoiceFlags.DoNotSpellCheck)};PDFDropdown2.prototype.enableSpellChecking=function(){this.acroField.setFlagTo(AcroChoiceFlags.DoNotSpellCheck,false)};PDFDropdown2.prototype.disableSpellChecking=function(){this.acroField.setFlagTo(AcroChoiceFlags.DoNotSpellCheck,true)};PDFDropdown2.prototype.isSelectOnClick=function(){return this.acroField.hasFlag(AcroChoiceFlags.CommitOnSelChange)};PDFDropdown2.prototype.enableSelectOnClick=function(){this.acroField.setFlagTo(AcroChoiceFlags.CommitOnSelChange,true)};PDFDropdown2.prototype.disableSelectOnClick=function(){this.acroField.setFlagTo(AcroChoiceFlags.CommitOnSelChange,false)};PDFDropdown2.prototype.addToPage=function(page,options){var _a,_b,_c,_d,_e,_f,_g;assertIs(page,"page",[[PDFPage_default,"PDFPage"]]);assertFieldAppearanceOptions(options);if(!options)options={};if(!("textColor"in options))options.textColor=rgb(0,0,0);if(!("backgroundColor"in options))options.backgroundColor=rgb(1,1,1);if(!("borderColor"in options))options.borderColor=rgb(0,0,0);if(!("borderWidth"in options))options.borderWidth=1;var widget=this.createWidget({x:(_a=options.x)!==null&&_a!==undefined?_a:0,y:(_b=options.y)!==null&&_b!==undefined?_b:0,width:(_c=options.width)!==null&&_c!==undefined?_c:200,height:(_d=options.height)!==null&&_d!==undefined?_d:50,textColor:options.textColor,backgroundColor:options.backgroundColor,borderColor:options.borderColor,borderWidth:(_e=options.borderWidth)!==null&&_e!==undefined?_e:0,rotate:(_f=options.rotate)!==null&&_f!==undefined?_f:degrees(0),hidden:options.hidden,page:page.ref});var widgetRef=this.doc.context.register(widget.dict);this.acroField.addWidget(widgetRef);var font=(_g=options.font)!==null&&_g!==undefined?_g:this.doc.getForm().getDefaultFont();this.updateWidgetAppearance(widget,font);page.node.addAnnot(widgetRef)};PDFDropdown2.prototype.needsAppearancesUpdate=function(){var _a;if(this.isDirty())return true;var widgets=this.acroField.getWidgets();for(var idx4=0,len3=widgets.length;idx4<len3;idx4++){var widget=widgets[idx4];var hasAppearances=((_a=widget.getAppearances())===null||_a===undefined?undefined:_a.normal)instanceof PDFStream_default;if(!hasAppearances)return true}return false};PDFDropdown2.prototype.defaultUpdateAppearances=function(font){assertIs(font,"font",[[PDFFont_default,"PDFFont"]]);this.updateAppearances(font)};PDFDropdown2.prototype.updateAppearances=function(font,provider2){assertIs(font,"font",[[PDFFont_default,"PDFFont"]]);assertOrUndefined(provider2,"provider",[Function]);var widgets=this.acroField.getWidgets();for(var idx4=0,len3=widgets.length;idx4<len3;idx4++){var widget=widgets[idx4];this.updateWidgetAppearance(widget,font,provider2)}this.markAsClean()};PDFDropdown2.prototype.updateWidgetAppearance=function(widget,font,provider2){var apProvider=provider2!==null&&provider2!==undefined?provider2:defaultDropdownAppearanceProvider;var appearances=normalizeAppearance(apProvider(this,widget,font));this.updateWidgetAppearanceWithFont(widget,font,appearances)};PDFDropdown2.of=function(acroComboBox,ref,doc){return new PDFDropdown2(acroComboBox,ref,doc)};return PDFDropdown2}(PDFField_default);PDFDropdown_default=PDFDropdown});var PDFOptionList,PDFOptionList_default;var init_PDFOptionList=__esm(()=>{init_tslib_es62();init_PDFPage();init_PDFFont();init_PDFField();init_appearances();init_colors();init_rotations();init_core();init_utils2();PDFOptionList=function(_super){__extends(PDFOptionList2,_super);function PDFOptionList2(acroListBox,ref,doc){var _this=_super.call(this,acroListBox,ref,doc)||this;assertIs(acroListBox,"acroListBox",[[PDFAcroListBox_default,"PDFAcroListBox"]]);_this.acroField=acroListBox;return _this}PDFOptionList2.prototype.getOptions=function(){var rawOptions=this.acroField.getOptions();var options=new Array(rawOptions.length);for(var idx4=0,len3=options.length;idx4<len3;idx4++){var _a=rawOptions[idx4],display=_a.display,value=_a.value;options[idx4]=(display!==null&&display!==undefined?display:value).decodeText()}return options};PDFOptionList2.prototype.getSelected=function(){var values2=this.acroField.getValues();var selected=new Array(values2.length);for(var idx4=0,len3=values2.length;idx4<len3;idx4++){selected[idx4]=values2[idx4].decodeText()}return selected};PDFOptionList2.prototype.setOptions=function(options){assertIs(options,"options",[Array]);this.markAsDirty();var optionObjects=new Array(options.length);for(var idx4=0,len3=options.length;idx4<len3;idx4++){optionObjects[idx4]={value:PDFHexString_default.fromText(options[idx4])}}this.acroField.setOptions(optionObjects)};PDFOptionList2.prototype.addOptions=function(options){assertIs(options,"options",["string",Array]);this.markAsDirty();var optionsArr=Array.isArray(options)?options:[options];var existingOptions=this.acroField.getOptions();var newOptions=new Array(optionsArr.length);for(var idx4=0,len3=optionsArr.length;idx4<len3;idx4++){newOptions[idx4]={value:PDFHexString_default.fromText(optionsArr[idx4])}}this.acroField.setOptions(existingOptions.concat(newOptions))};PDFOptionList2.prototype.select=function(options,merge){if(merge===undefined){merge=false}assertIs(options,"options",["string",Array]);assertIs(merge,"merge",["boolean"]);var optionsArr=Array.isArray(options)?options:[options];var validOptions=this.getOptions();assertIsSubset(optionsArr,"option",validOptions);this.markAsDirty();if(optionsArr.length>1||optionsArr.length===1&&merge){this.enableMultiselect()}var values2=new Array(optionsArr.length);for(var idx4=0,len3=optionsArr.length;idx4<len3;idx4++){values2[idx4]=PDFHexString_default.fromText(optionsArr[idx4])}if(merge){var existingValues=this.acroField.getValues();this.acroField.setValues(existingValues.concat(values2))}else{this.acroField.setValues(values2)}};PDFOptionList2.prototype.clear=function(){this.markAsDirty();this.acroField.setValues([])};PDFOptionList2.prototype.setFontSize=function(fontSize){assertPositive(fontSize,"fontSize");this.acroField.setFontSize(fontSize);this.markAsDirty()};PDFOptionList2.prototype.isSorted=function(){return this.acroField.hasFlag(AcroChoiceFlags.Sort)};PDFOptionList2.prototype.enableSorting=function(){this.acroField.setFlagTo(AcroChoiceFlags.Sort,true)};PDFOptionList2.prototype.disableSorting=function(){this.acroField.setFlagTo(AcroChoiceFlags.Sort,false)};PDFOptionList2.prototype.isMultiselect=function(){return this.acroField.hasFlag(AcroChoiceFlags.MultiSelect)};PDFOptionList2.prototype.enableMultiselect=function(){this.acroField.setFlagTo(AcroChoiceFlags.MultiSelect,true)};PDFOptionList2.prototype.disableMultiselect=function(){this.acroField.setFlagTo(AcroChoiceFlags.MultiSelect,false)};PDFOptionList2.prototype.isSelectOnClick=function(){return this.acroField.hasFlag(AcroChoiceFlags.CommitOnSelChange)};PDFOptionList2.prototype.enableSelectOnClick=function(){this.acroField.setFlagTo(AcroChoiceFlags.CommitOnSelChange,true)};PDFOptionList2.prototype.disableSelectOnClick=function(){this.acroField.setFlagTo(AcroChoiceFlags.CommitOnSelChange,false)};PDFOptionList2.prototype.addToPage=function(page,options){var _a,_b,_c,_d,_e,_f,_g;assertIs(page,"page",[[PDFPage_default,"PDFPage"]]);assertFieldAppearanceOptions(options);if(!options)options={};if(!("textColor"in options))options.textColor=rgb(0,0,0);if(!("backgroundColor"in options))options.backgroundColor=rgb(1,1,1);if(!("borderColor"in options))options.borderColor=rgb(0,0,0);if(!("borderWidth"in options))options.borderWidth=1;var widget=this.createWidget({x:(_a=options.x)!==null&&_a!==undefined?_a:0,y:(_b=options.y)!==null&&_b!==undefined?_b:0,width:(_c=options.width)!==null&&_c!==undefined?_c:200,height:(_d=options.height)!==null&&_d!==undefined?_d:100,textColor:options.textColor,backgroundColor:options.backgroundColor,borderColor:options.borderColor,borderWidth:(_e=options.borderWidth)!==null&&_e!==undefined?_e:0,rotate:(_f=options.rotate)!==null&&_f!==undefined?_f:degrees(0),hidden:options.hidden,page:page.ref});var widgetRef=this.doc.context.register(widget.dict);this.acroField.addWidget(widgetRef);var font=(_g=options.font)!==null&&_g!==undefined?_g:this.doc.getForm().getDefaultFont();this.updateWidgetAppearance(widget,font);page.node.addAnnot(widgetRef)};PDFOptionList2.prototype.needsAppearancesUpdate=function(){var _a;if(this.isDirty())return true;var widgets=this.acroField.getWidgets();for(var idx4=0,len3=widgets.length;idx4<len3;idx4++){var widget=widgets[idx4];var hasAppearances=((_a=widget.getAppearances())===null||_a===undefined?undefined:_a.normal)instanceof PDFStream_default;if(!hasAppearances)return true}return false};PDFOptionList2.prototype.defaultUpdateAppearances=function(font){assertIs(font,"font",[[PDFFont_default,"PDFFont"]]);this.updateAppearances(font)};PDFOptionList2.prototype.updateAppearances=function(font,provider2){assertIs(font,"font",[[PDFFont_default,"PDFFont"]]);assertOrUndefined(provider2,"provider",[Function]);var widgets=this.acroField.getWidgets();for(var idx4=0,len3=widgets.length;idx4<len3;idx4++){var widget=widgets[idx4];this.updateWidgetAppearance(widget,font,provider2)}this.markAsClean()};PDFOptionList2.prototype.updateWidgetAppearance=function(widget,font,provider2){var apProvider=provider2!==null&&provider2!==undefined?provider2:defaultOptionListAppearanceProvider;var appearances=normalizeAppearance(apProvider(this,widget,font));this.updateWidgetAppearanceWithFont(widget,font,appearances)};PDFOptionList2.of=function(acroListBox,ref,doc){return new PDFOptionList2(acroListBox,ref,doc)};return PDFOptionList2}(PDFField_default);PDFOptionList_default=PDFOptionList});var PDFRadioGroup,PDFRadioGroup_default;var init_PDFRadioGroup=__esm(()=>{init_tslib_es62();init_PDFPage();init_PDFField();init_appearances();init_colors();init_rotations();init_core();init_utils2();PDFRadioGroup=function(_super){__extends(PDFRadioGroup2,_super);function PDFRadioGroup2(acroRadioButton,ref,doc){var _this=_super.call(this,acroRadioButton,ref,doc)||this;assertIs(acroRadioButton,"acroRadioButton",[[PDFAcroRadioButton_default,"PDFAcroRadioButton"]]);_this.acroField=acroRadioButton;return _this}PDFRadioGroup2.prototype.getOptions=function(){var exportValues=this.acroField.getExportValues();if(exportValues){var exportOptions=new Array(exportValues.length);for(var idx4=0,len3=exportValues.length;idx4<len3;idx4++){exportOptions[idx4]=exportValues[idx4].decodeText()}return exportOptions}var onValues=this.acroField.getOnValues();var onOptions=new Array(onValues.length);for(var idx4=0,len3=onOptions.length;idx4<len3;idx4++){onOptions[idx4]=onValues[idx4].decodeText()}return onOptions};PDFRadioGroup2.prototype.getSelected=function(){var value=this.acroField.getValue();if(value===PDFName_default.of("Off"))return;var exportValues=this.acroField.getExportValues();if(exportValues){var onValues=this.acroField.getOnValues();for(var idx4=0,len3=onValues.length;idx4<len3;idx4++){if(onValues[idx4]===value)return exportValues[idx4].decodeText()}}return value.decodeText()};PDFRadioGroup2.prototype.select=function(option){assertIs(option,"option",["string"]);var validOptions=this.getOptions();assertIsOneOf(option,"option",validOptions);this.markAsDirty();var onValues=this.acroField.getOnValues();var exportValues=this.acroField.getExportValues();if(exportValues){for(var idx4=0,len3=exportValues.length;idx4<len3;idx4++){if(exportValues[idx4].decodeText()===option){this.acroField.setValue(onValues[idx4])}}}else{for(var idx4=0,len3=onValues.length;idx4<len3;idx4++){var value=onValues[idx4];if(value.decodeText()===option)this.acroField.setValue(value)}}};PDFRadioGroup2.prototype.clear=function(){this.markAsDirty();this.acroField.setValue(PDFName_default.of("Off"))};PDFRadioGroup2.prototype.isOffToggleable=function(){return!this.acroField.hasFlag(AcroButtonFlags.NoToggleToOff)};PDFRadioGroup2.prototype.enableOffToggling=function(){this.acroField.setFlagTo(AcroButtonFlags.NoToggleToOff,false)};PDFRadioGroup2.prototype.disableOffToggling=function(){this.acroField.setFlagTo(AcroButtonFlags.NoToggleToOff,true)};PDFRadioGroup2.prototype.isMutuallyExclusive=function(){return!this.acroField.hasFlag(AcroButtonFlags.RadiosInUnison)};PDFRadioGroup2.prototype.enableMutualExclusion=function(){this.acroField.setFlagTo(AcroButtonFlags.RadiosInUnison,false)};PDFRadioGroup2.prototype.disableMutualExclusion=function(){this.acroField.setFlagTo(AcroButtonFlags.RadiosInUnison,true)};PDFRadioGroup2.prototype.addOptionToPage=function(option,page,options){var _a,_b,_c,_d,_e,_f,_g,_h,_j;assertIs(option,"option",["string"]);assertIs(page,"page",[[PDFPage_default,"PDFPage"]]);assertFieldAppearanceOptions(options);var widget=this.createWidget({x:(_a=options===null||options===undefined?undefined:options.x)!==null&&_a!==undefined?_a:0,y:(_b=options===null||options===undefined?undefined:options.y)!==null&&_b!==undefined?_b:0,width:(_c=options===null||options===undefined?undefined:options.width)!==null&&_c!==undefined?_c:50,height:(_d=options===null||options===undefined?undefined:options.height)!==null&&_d!==undefined?_d:50,textColor:(_e=options===null||options===undefined?undefined:options.textColor)!==null&&_e!==undefined?_e:rgb(0,0,0),backgroundColor:(_f=options===null||options===undefined?undefined:options.backgroundColor)!==null&&_f!==undefined?_f:rgb(1,1,1),borderColor:(_g=options===null||options===undefined?undefined:options.borderColor)!==null&&_g!==undefined?_g:rgb(0,0,0),borderWidth:(_h=options===null||options===undefined?undefined:options.borderWidth)!==null&&_h!==undefined?_h:1,rotate:(_j=options===null||options===undefined?undefined:options.rotate)!==null&&_j!==undefined?_j:degrees(0),hidden:options===null||options===undefined?undefined:options.hidden,page:page.ref});var widgetRef=this.doc.context.register(widget.dict);var apStateValue=this.acroField.addWidgetWithOpt(widgetRef,PDFHexString_default.fromText(option),!this.isMutuallyExclusive());widget.setAppearanceState(PDFName_default.of("Off"));this.updateWidgetAppearance(widget,apStateValue);page.node.addAnnot(widgetRef)};PDFRadioGroup2.prototype.needsAppearancesUpdate=function(){var _a;var widgets=this.acroField.getWidgets();for(var idx4=0,len3=widgets.length;idx4<len3;idx4++){var widget=widgets[idx4];var state=widget.getAppearanceState();var normal=(_a=widget.getAppearances())===null||_a===undefined?undefined:_a.normal;if(!(normal instanceof PDFDict_default))return true;if(state&&!normal.has(state))return true}return false};PDFRadioGroup2.prototype.defaultUpdateAppearances=function(){this.updateAppearances()};PDFRadioGroup2.prototype.updateAppearances=function(provider2){assertOrUndefined(provider2,"provider",[Function]);var widgets=this.acroField.getWidgets();for(var idx4=0,len3=widgets.length;idx4<len3;idx4++){var widget=widgets[idx4];var onValue=widget.getOnValue();if(!onValue)continue;this.updateWidgetAppearance(widget,onValue,provider2)}};PDFRadioGroup2.prototype.updateWidgetAppearance=function(widget,onValue,provider2){var apProvider=provider2!==null&&provider2!==undefined?provider2:defaultRadioGroupAppearanceProvider;var appearances=normalizeAppearance(apProvider(this,widget));this.updateOnOffWidgetAppearance(widget,onValue,appearances)};PDFRadioGroup2.of=function(acroRadioButton,ref,doc){return new PDFRadioGroup2(acroRadioButton,ref,doc)};return PDFRadioGroup2}(PDFField_default);PDFRadioGroup_default=PDFRadioGroup});var PDFSignature,PDFSignature_default;var init_PDFSignature=__esm(()=>{init_tslib_es62();init_PDFField();init_core();init_utils2();PDFSignature=function(_super){__extends(PDFSignature2,_super);function PDFSignature2(acroSignature,ref,doc){var _this=_super.call(this,acroSignature,ref,doc)||this;assertIs(acroSignature,"acroSignature",[[PDFAcroSignature_default,"PDFAcroSignature"]]);_this.acroField=acroSignature;return _this}PDFSignature2.prototype.needsAppearancesUpdate=function(){return false};PDFSignature2.of=function(acroSignature,ref,doc){return new PDFSignature2(acroSignature,ref,doc)};return PDFSignature2}(PDFField_default);PDFSignature_default=PDFSignature});var PDFTextField,PDFTextField_default;var init_PDFTextField=__esm(()=>{init_tslib_es62();init_PDFPage();init_PDFFont();init_PDFField();init_appearances();init_colors();init_rotations();init_errors3();init_alignment2();init_alignment();init_core();init_utils2();PDFTextField=function(_super){__extends(PDFTextField2,_super);function PDFTextField2(acroText,ref,doc){var _this=_super.call(this,acroText,ref,doc)||this;assertIs(acroText,"acroText",[[PDFAcroText_default,"PDFAcroText"]]);_this.acroField=acroText;return _this}PDFTextField2.prototype.getText=function(){var value=this.acroField.getValue();if(!value&&this.isRichFormatted()){throw new RichTextFieldReadError(this.getName())}return value===null||value===undefined?undefined:value.decodeText()};PDFTextField2.prototype.setText=function(text4){assertOrUndefined(text4,"text",["string"]);var maxLength=this.getMaxLength();if(maxLength!==undefined&&text4&&text4.length>maxLength){throw new ExceededMaxLengthError(text4.length,maxLength,this.getName())}this.markAsDirty();this.disableRichFormatting();if(text4){this.acroField.setValue(PDFHexString_default.fromText(text4))}else{this.acroField.removeValue()}};PDFTextField2.prototype.getAlignment=function(){var quadding=this.acroField.getQuadding();return quadding===0?TextAlignment.Left:quadding===1?TextAlignment.Center:quadding===2?TextAlignment.Right:TextAlignment.Left};PDFTextField2.prototype.setAlignment=function(alignment2){assertIsOneOf(alignment2,"alignment",TextAlignment);this.markAsDirty();this.acroField.setQuadding(alignment2)};PDFTextField2.prototype.getMaxLength=function(){return this.acroField.getMaxLength()};PDFTextField2.prototype.setMaxLength=function(maxLength){assertRangeOrUndefined(maxLength,"maxLength",0,Number.MAX_SAFE_INTEGER);this.markAsDirty();if(maxLength===undefined){this.acroField.removeMaxLength()}else{var text4=this.getText();if(text4&&text4.length>maxLength){throw new InvalidMaxLengthError(text4.length,maxLength,this.getName())}this.acroField.setMaxLength(maxLength)}};PDFTextField2.prototype.removeMaxLength=function(){this.markAsDirty();this.acroField.removeMaxLength()};PDFTextField2.prototype.setImage=function(image){var fieldAlignment=this.getAlignment();var alignment2=fieldAlignment===TextAlignment.Center?ImageAlignment.Center:fieldAlignment===TextAlignment.Right?ImageAlignment.Right:ImageAlignment.Left;var widgets=this.acroField.getWidgets();for(var idx4=0,len3=widgets.length;idx4<len3;idx4++){var widget=widgets[idx4];var streamRef=this.createImageAppearanceStream(widget,image,alignment2);this.updateWidgetAppearances(widget,{normal:streamRef})}this.markAsClean()};PDFTextField2.prototype.setFontSize=function(fontSize){assertPositive(fontSize,"fontSize");this.acroField.setFontSize(fontSize);this.markAsDirty()};PDFTextField2.prototype.isMultiline=function(){return this.acroField.hasFlag(AcroTextFlags.Multiline)};PDFTextField2.prototype.enableMultiline=function(){this.markAsDirty();this.acroField.setFlagTo(AcroTextFlags.Multiline,true)};PDFTextField2.prototype.disableMultiline=function(){this.markAsDirty();this.acroField.setFlagTo(AcroTextFlags.Multiline,false)};PDFTextField2.prototype.isPassword=function(){return this.acroField.hasFlag(AcroTextFlags.Password)};PDFTextField2.prototype.enablePassword=function(){this.acroField.setFlagTo(AcroTextFlags.Password,true)};PDFTextField2.prototype.disablePassword=function(){this.acroField.setFlagTo(AcroTextFlags.Password,false)};PDFTextField2.prototype.isFileSelector=function(){return this.acroField.hasFlag(AcroTextFlags.FileSelect)};PDFTextField2.prototype.enableFileSelection=function(){this.acroField.setFlagTo(AcroTextFlags.FileSelect,true)};PDFTextField2.prototype.disableFileSelection=function(){this.acroField.setFlagTo(AcroTextFlags.FileSelect,false)};PDFTextField2.prototype.isSpellChecked=function(){return!this.acroField.hasFlag(AcroTextFlags.DoNotSpellCheck)};PDFTextField2.prototype.enableSpellChecking=function(){this.acroField.setFlagTo(AcroTextFlags.DoNotSpellCheck,false)};PDFTextField2.prototype.disableSpellChecking=function(){this.acroField.setFlagTo(AcroTextFlags.DoNotSpellCheck,true)};PDFTextField2.prototype.isScrollable=function(){return!this.acroField.hasFlag(AcroTextFlags.DoNotScroll)};PDFTextField2.prototype.enableScrolling=function(){this.acroField.setFlagTo(AcroTextFlags.DoNotScroll,false)};PDFTextField2.prototype.disableScrolling=function(){this.acroField.setFlagTo(AcroTextFlags.DoNotScroll,true)};PDFTextField2.prototype.isCombed=function(){return this.acroField.hasFlag(AcroTextFlags.Comb)&&!this.isMultiline()&&!this.isPassword()&&!this.isFileSelector()&&this.getMaxLength()!==undefined};PDFTextField2.prototype.enableCombing=function(){if(this.getMaxLength()===undefined){var msg="PDFTextFields must have a max length in order to be combed";console.warn(msg)}this.markAsDirty();this.disableMultiline();this.disablePassword();this.disableFileSelection();this.acroField.setFlagTo(AcroTextFlags.Comb,true)};PDFTextField2.prototype.disableCombing=function(){this.markAsDirty();this.acroField.setFlagTo(AcroTextFlags.Comb,false)};PDFTextField2.prototype.isRichFormatted=function(){return this.acroField.hasFlag(AcroTextFlags.RichText)};PDFTextField2.prototype.enableRichFormatting=function(){this.acroField.setFlagTo(AcroTextFlags.RichText,true)};PDFTextField2.prototype.disableRichFormatting=function(){this.acroField.setFlagTo(AcroTextFlags.RichText,false)};PDFTextField2.prototype.addToPage=function(page,options){var _a,_b,_c,_d,_e,_f,_g;assertIs(page,"page",[[PDFPage_default,"PDFPage"]]);assertFieldAppearanceOptions(options);if(!options)options={};if(!("textColor"in options))options.textColor=rgb(0,0,0);if(!("backgroundColor"in options))options.backgroundColor=rgb(1,1,1);if(!("borderColor"in options))options.borderColor=rgb(0,0,0);if(!("borderWidth"in options))options.borderWidth=1;var widget=this.createWidget({x:(_a=options.x)!==null&&_a!==undefined?_a:0,y:(_b=options.y)!==null&&_b!==undefined?_b:0,width:(_c=options.width)!==null&&_c!==undefined?_c:200,height:(_d=options.height)!==null&&_d!==undefined?_d:50,textColor:options.textColor,backgroundColor:options.backgroundColor,borderColor:options.borderColor,borderWidth:(_e=options.borderWidth)!==null&&_e!==undefined?_e:0,rotate:(_f=options.rotate)!==null&&_f!==undefined?_f:degrees(0),hidden:options.hidden,page:page.ref});var widgetRef=this.doc.context.register(widget.dict);this.acroField.addWidget(widgetRef);var font=(_g=options.font)!==null&&_g!==undefined?_g:this.doc.getForm().getDefaultFont();this.updateWidgetAppearance(widget,font);page.node.addAnnot(widgetRef)};PDFTextField2.prototype.needsAppearancesUpdate=function(){var _a;if(this.isDirty())return true;var widgets=this.acroField.getWidgets();for(var idx4=0,len3=widgets.length;idx4<len3;idx4++){var widget=widgets[idx4];var hasAppearances=((_a=widget.getAppearances())===null||_a===undefined?undefined:_a.normal)instanceof PDFStream_default;if(!hasAppearances)return true}return false};PDFTextField2.prototype.defaultUpdateAppearances=function(font){assertIs(font,"font",[[PDFFont_default,"PDFFont"]]);this.updateAppearances(font)};PDFTextField2.prototype.updateAppearances=function(font,provider2){assertIs(font,"font",[[PDFFont_default,"PDFFont"]]);assertOrUndefined(provider2,"provider",[Function]);var widgets=this.acroField.getWidgets();for(var idx4=0,len3=widgets.length;idx4<len3;idx4++){var widget=widgets[idx4];this.updateWidgetAppearance(widget,font,provider2)}this.markAsClean()};PDFTextField2.prototype.updateWidgetAppearance=function(widget,font,provider2){var apProvider=provider2!==null&&provider2!==undefined?provider2:defaultTextFieldAppearanceProvider;var appearances=normalizeAppearance(apProvider(this,widget,font));this.updateWidgetAppearanceWithFont(widget,font,appearances)};PDFTextField2.of=function(acroText,ref,doc){return new PDFTextField2(acroText,ref,doc)};return PDFTextField2}(PDFField_default);PDFTextField_default=PDFTextField});var StandardFonts;var init_StandardFonts=__esm(()=>{(function(StandardFonts2){StandardFonts2["Courier"]="Courier";StandardFonts2["CourierBold"]="Courier-Bold";StandardFonts2["CourierOblique"]="Courier-Oblique";StandardFonts2["CourierBoldOblique"]="Courier-BoldOblique";StandardFonts2["Helvetica"]="Helvetica";StandardFonts2["HelveticaBold"]="Helvetica-Bold";StandardFonts2["HelveticaOblique"]="Helvetica-Oblique";StandardFonts2["HelveticaBoldOblique"]="Helvetica-BoldOblique";StandardFonts2["TimesRoman"]="Times-Roman";StandardFonts2["TimesRomanBold"]="Times-Bold";StandardFonts2["TimesRomanItalic"]="Times-Italic";StandardFonts2["TimesRomanBoldItalic"]="Times-BoldItalic";StandardFonts2["Symbol"]="Symbol";StandardFonts2["ZapfDingbats"]="ZapfDingbats"})(StandardFonts||(StandardFonts={}))});var PDFForm,PDFForm_default,convertToPDFField=function(field,ref,doc){if(field instanceof PDFAcroPushButton_default)return PDFButton_default.of(field,ref,doc);if(field instanceof PDFAcroCheckBox_default)return PDFCheckBox_default.of(field,ref,doc);if(field instanceof PDFAcroComboBox_default)return PDFDropdown_default.of(field,ref,doc);if(field instanceof PDFAcroListBox_default)return PDFOptionList_default.of(field,ref,doc);if(field instanceof PDFAcroText_default)return PDFTextField_default.of(field,ref,doc);if(field instanceof PDFAcroRadioButton_default){return PDFRadioGroup_default.of(field,ref,doc)}if(field instanceof PDFAcroSignature_default){return PDFSignature_default.of(field,ref,doc)}return},splitFieldName=function(fullyQualifiedName){if(fullyQualifiedName.length===0){throw new Error("PDF field names must not be empty strings")}var parts=fullyQualifiedName.split(".");for(var idx4=0,len3=parts.length;idx4<len3;idx4++){if(parts[idx4]===""){throw new Error('Periods in PDF field names must be separated by at least one character: "'+fullyQualifiedName+'"')}}if(parts.length===1)return{nonTerminal:[],terminal:parts[0]};return{nonTerminal:parts.slice(0,parts.length-1),terminal:parts[parts.length-1]}},addFieldToParent=function(_a,_b,partialName){var parent=_a[0],parentRef=_a[1];var field=_b[0],fieldRef=_b[1];var entries=parent.normalizedEntries();var fields5=createPDFAcroFields("Kids"in entries?entries.Kids:entries.Fields);for(var idx4=0,len3=fields5.length;idx4<len3;idx4++){if(fields5[idx4][0].getPartialName()===partialName){throw new FieldAlreadyExistsError(partialName)}}parent.addField(fieldRef);field.setParent(parentRef)};var init_PDFForm=__esm(()=>{init_tslib_es62();init_PDFDocument();init_PDFButton();init_PDFCheckBox();init_PDFDropdown();init_PDFOptionList();init_PDFRadioGroup();init_PDFSignature();init_PDFTextField();init_errors3();init_PDFFont();init_StandardFonts();init_operations();init_operators();init_core();init_utils2();PDFForm=function(){function PDFForm2(acroForm,doc){var _this=this;this.embedDefaultFont=function(){return _this.doc.embedStandardFont(StandardFonts.Helvetica)};assertIs(acroForm,"acroForm",[[PDFAcroForm_default,"PDFAcroForm"]]);assertIs(doc,"doc",[[PDFDocument_default,"PDFDocument"]]);this.acroForm=acroForm;this.doc=doc;this.dirtyFields=new Set;this.defaultFontCache=Cache_default.populatedBy(this.embedDefaultFont)}PDFForm2.prototype.hasXFA=function(){return this.acroForm.dict.has(PDFName_default.of("XFA"))};PDFForm2.prototype.deleteXFA=function(){this.acroForm.dict.delete(PDFName_default.of("XFA"))};PDFForm2.prototype.getFields=function(){var allFields=this.acroForm.getAllFields();var fields5=[];for(var idx4=0,len3=allFields.length;idx4<len3;idx4++){var _a=allFields[idx4],acroField=_a[0],ref=_a[1];var field=convertToPDFField(acroField,ref,this.doc);if(field)fields5.push(field)}return fields5};PDFForm2.prototype.getFieldMaybe=function(name){assertIs(name,"name",["string"]);var fields5=this.getFields();for(var idx4=0,len3=fields5.length;idx4<len3;idx4++){var field=fields5[idx4];if(field.getName()===name)return field}return};PDFForm2.prototype.getField=function(name){assertIs(name,"name",["string"]);var field=this.getFieldMaybe(name);if(field)return field;throw new NoSuchFieldError(name)};PDFForm2.prototype.getButton=function(name){assertIs(name,"name",["string"]);var field=this.getField(name);if(field instanceof PDFButton_default)return field;throw new UnexpectedFieldTypeError(name,PDFButton_default,field)};PDFForm2.prototype.getCheckBox=function(name){assertIs(name,"name",["string"]);var field=this.getField(name);if(field instanceof PDFCheckBox_default)return field;throw new UnexpectedFieldTypeError(name,PDFCheckBox_default,field)};PDFForm2.prototype.getDropdown=function(name){assertIs(name,"name",["string"]);var field=this.getField(name);if(field instanceof PDFDropdown_default)return field;throw new UnexpectedFieldTypeError(name,PDFDropdown_default,field)};PDFForm2.prototype.getOptionList=function(name){assertIs(name,"name",["string"]);var field=this.getField(name);if(field instanceof PDFOptionList_default)return field;throw new UnexpectedFieldTypeError(name,PDFOptionList_default,field)};PDFForm2.prototype.getRadioGroup=function(name){assertIs(name,"name",["string"]);var field=this.getField(name);if(field instanceof PDFRadioGroup_default)return field;throw new UnexpectedFieldTypeError(name,PDFRadioGroup_default,field)};PDFForm2.prototype.getSignature=function(name){assertIs(name,"name",["string"]);var field=this.getField(name);if(field instanceof PDFSignature_default)return field;throw new UnexpectedFieldTypeError(name,PDFSignature_default,field)};PDFForm2.prototype.getTextField=function(name){assertIs(name,"name",["string"]);var field=this.getField(name);if(field instanceof PDFTextField_default)return field;throw new UnexpectedFieldTypeError(name,PDFTextField_default,field)};PDFForm2.prototype.createButton=function(name){assertIs(name,"name",["string"]);var nameParts=splitFieldName(name);var parent=this.findOrCreateNonTerminals(nameParts.nonTerminal);var button=PDFAcroPushButton_default.create(this.doc.context);button.setPartialName(nameParts.terminal);addFieldToParent(parent,[button,button.ref],nameParts.terminal);return PDFButton_default.of(button,button.ref,this.doc)};PDFForm2.prototype.createCheckBox=function(name){assertIs(name,"name",["string"]);var nameParts=splitFieldName(name);var parent=this.findOrCreateNonTerminals(nameParts.nonTerminal);var checkBox=PDFAcroCheckBox_default.create(this.doc.context);checkBox.setPartialName(nameParts.terminal);addFieldToParent(parent,[checkBox,checkBox.ref],nameParts.terminal);return PDFCheckBox_default.of(checkBox,checkBox.ref,this.doc)};PDFForm2.prototype.createDropdown=function(name){assertIs(name,"name",["string"]);var nameParts=splitFieldName(name);var parent=this.findOrCreateNonTerminals(nameParts.nonTerminal);var comboBox=PDFAcroComboBox_default.create(this.doc.context);comboBox.setPartialName(nameParts.terminal);addFieldToParent(parent,[comboBox,comboBox.ref],nameParts.terminal);return PDFDropdown_default.of(comboBox,comboBox.ref,this.doc)};PDFForm2.prototype.createOptionList=function(name){assertIs(name,"name",["string"]);var nameParts=splitFieldName(name);var parent=this.findOrCreateNonTerminals(nameParts.nonTerminal);var listBox=PDFAcroListBox_default.create(this.doc.context);listBox.setPartialName(nameParts.terminal);addFieldToParent(parent,[listBox,listBox.ref],nameParts.terminal);return PDFOptionList_default.of(listBox,listBox.ref,this.doc)};PDFForm2.prototype.createRadioGroup=function(name){assertIs(name,"name",["string"]);var nameParts=splitFieldName(name);var parent=this.findOrCreateNonTerminals(nameParts.nonTerminal);var radioButton=PDFAcroRadioButton_default.create(this.doc.context);radioButton.setPartialName(nameParts.terminal);addFieldToParent(parent,[radioButton,radioButton.ref],nameParts.terminal);return PDFRadioGroup_default.of(radioButton,radioButton.ref,this.doc)};PDFForm2.prototype.createTextField=function(name){assertIs(name,"name",["string"]);var nameParts=splitFieldName(name);var parent=this.findOrCreateNonTerminals(nameParts.nonTerminal);var text4=PDFAcroText_default.create(this.doc.context);text4.setPartialName(nameParts.terminal);addFieldToParent(parent,[text4,text4.ref],nameParts.terminal);return PDFTextField_default.of(text4,text4.ref,this.doc)};PDFForm2.prototype.flatten=function(options){if(options===undefined){options={updateFieldAppearances:true}}if(options.updateFieldAppearances){this.updateFieldAppearances()}var fields5=this.getFields();for(var i3=0,lenFields=fields5.length;i3<lenFields;i3++){var field=fields5[i3];var widgets=field.acroField.getWidgets();for(var j=0,lenWidgets=widgets.length;j<lenWidgets;j++){var widget=widgets[j];var page=this.findWidgetPage(widget);var widgetRef=this.findWidgetAppearanceRef(field,widget);var xObjectKey=page.node.newXObject("FlatWidget",widgetRef);var rectangle2=widget.getRectangle();var operators=__spreadArrays([pushGraphicsState(),translate(rectangle2.x,rectangle2.y)],rotateInPlace(__assign(__assign({},rectangle2),{rotation:0})),[drawObject(xObjectKey),popGraphicsState()]).filter(Boolean);page.pushOperators.apply(page,operators)}this.removeField(field)}};PDFForm2.prototype.removeField=function(field){var widgets=field.acroField.getWidgets();var pages=new Set;for(var i3=0,len3=widgets.length;i3<len3;i3++){var widget=widgets[i3];var widgetRef=this.findWidgetAppearanceRef(field,widget);var page=this.findWidgetPage(widget);pages.add(page);page.node.removeAnnot(widgetRef)}pages.forEach(function(page2){return page2.node.removeAnnot(field.ref)});this.acroForm.removeField(field.acroField);var fieldKids=field.acroField.normalizedEntries().Kids;var kidsCount=fieldKids.size();for(var childIndex=0;childIndex<kidsCount;childIndex++){var child=fieldKids.get(childIndex);if(child instanceof PDFRef_default){this.doc.context.delete(child)}}this.doc.context.delete(field.ref)};PDFForm2.prototype.updateFieldAppearances=function(font){assertOrUndefined(font,"font",[[PDFFont_default,"PDFFont"]]);font=font!==null&&font!==undefined?font:this.getDefaultFont();var fields5=this.getFields();for(var idx4=0,len3=fields5.length;idx4<len3;idx4++){var field=fields5[idx4];if(field.needsAppearancesUpdate()){field.defaultUpdateAppearances(font)}}};PDFForm2.prototype.markFieldAsDirty=function(fieldRef){assertOrUndefined(fieldRef,"fieldRef",[[PDFRef_default,"PDFRef"]]);this.dirtyFields.add(fieldRef)};PDFForm2.prototype.markFieldAsClean=function(fieldRef){assertOrUndefined(fieldRef,"fieldRef",[[PDFRef_default,"PDFRef"]]);this.dirtyFields.delete(fieldRef)};PDFForm2.prototype.fieldIsDirty=function(fieldRef){assertOrUndefined(fieldRef,"fieldRef",[[PDFRef_default,"PDFRef"]]);return this.dirtyFields.has(fieldRef)};PDFForm2.prototype.getDefaultFont=function(){return this.defaultFontCache.access()};PDFForm2.prototype.findWidgetPage=function(widget){var pageRef=widget.P();var page=this.doc.getPages().find(function(x){return x.ref===pageRef});if(page===undefined){var widgetRef=this.doc.context.getObjectRef(widget.dict);if(widgetRef===undefined){throw new Error("Could not find PDFRef for PDFObject")}page=this.doc.findPageForAnnotationRef(widgetRef);if(page===undefined){throw new Error("Could not find page for PDFRef "+widgetRef)}}return page};PDFForm2.prototype.findWidgetAppearanceRef=function(field,widget){var _a;var refOrDict=widget.getNormalAppearance();if(refOrDict instanceof PDFDict_default&&(field instanceof PDFCheckBox_default||field instanceof PDFRadioGroup_default)){var value=field.acroField.getValue();var ref=(_a=refOrDict.get(value))!==null&&_a!==undefined?_a:refOrDict.get(PDFName_default.of("Off"));if(ref instanceof PDFRef_default){refOrDict=ref}}if(!(refOrDict instanceof PDFRef_default)){var name_1=field.getName();throw new Error("Failed to extract appearance ref for: "+name_1)}return refOrDict};PDFForm2.prototype.findOrCreateNonTerminals=function(partialNames){var nonTerminal=[this.acroForm];for(var idx4=0,len3=partialNames.length;idx4<len3;idx4++){var namePart=partialNames[idx4];if(!namePart)throw new InvalidFieldNamePartError(namePart);var parent_1=nonTerminal[0],parentRef=nonTerminal[1];var res=this.findNonTerminal(namePart,parent_1);if(res){nonTerminal=res}else{var node=PDFAcroNonTerminal_default.create(this.doc.context);node.setPartialName(namePart);node.setParent(parentRef);var nodeRef=this.doc.context.register(node.dict);parent_1.addField(nodeRef);nonTerminal=[node,nodeRef]}}return nonTerminal};PDFForm2.prototype.findNonTerminal=function(partialName,parent){var fields5=parent instanceof PDFAcroForm_default?this.acroForm.getFields():createPDFAcroFields(parent.Kids());for(var idx4=0,len3=fields5.length;idx4<len3;idx4++){var _a=fields5[idx4],field=_a[0],ref=_a[1];if(field.getPartialName()===partialName){if(field instanceof PDFAcroNonTerminal_default)return[field,ref];throw new FieldAlreadyExistsError(partialName)}}return};PDFForm2.of=function(acroForm,doc){return new PDFForm2(acroForm,doc)};return PDFForm2}();PDFForm_default=PDFForm});var PageSizes;var init_sizes=__esm(()=>{PageSizes={"4A0":[4767.87,6740.79],"2A0":[3370.39,4767.87],A0:[2383.94,3370.39],A1:[1683.78,2383.94],A2:[1190.55,1683.78],A3:[841.89,1190.55],A4:[595.28,841.89],A5:[419.53,595.28],A6:[297.64,419.53],A7:[209.76,297.64],A8:[147.4,209.76],A9:[104.88,147.4],A10:[73.7,104.88],B0:[2834.65,4008.19],B1:[2004.09,2834.65],B2:[1417.32,2004.09],B3:[1000.63,1417.32],B4:[708.66,1000.63],B5:[498.9,708.66],B6:[354.33,498.9],B7:[249.45,354.33],B8:[175.75,249.45],B9:[124.72,175.75],B10:[87.87,124.72],C0:[2599.37,3676.54],C1:[1836.85,2599.37],C2:[1298.27,1836.85],C3:[918.43,1298.27],C4:[649.13,918.43],C5:[459.21,649.13],C6:[323.15,459.21],C7:[229.61,323.15],C8:[161.57,229.61],C9:[113.39,161.57],C10:[79.37,113.39],RA0:[2437.8,3458.27],RA1:[1729.13,2437.8],RA2:[1218.9,1729.13],RA3:[864.57,1218.9],RA4:[609.45,864.57],SRA0:[2551.18,3628.35],SRA1:[1814.17,2551.18],SRA2:[1275.59,1814.17],SRA3:[907.09,1275.59],SRA4:[637.8,907.09],Executive:[521.86,756],Folio:[612,936],Legal:[612,1008],Letter:[612,792],Tabloid:[792,1224]}});var ParseSpeeds;var init_PDFDocumentOptions=__esm(()=>{(function(ParseSpeeds2){ParseSpeeds2[ParseSpeeds2["Fastest"]=Infinity]="Fastest";ParseSpeeds2[ParseSpeeds2["Fast"]=1500]="Fast";ParseSpeeds2[ParseSpeeds2["Medium"]=500]="Medium";ParseSpeeds2[ParseSpeeds2["Slow"]=100]="Slow"})(ParseSpeeds||(ParseSpeeds={}))});var PDFEmbeddedFile,PDFEmbeddedFile_default;var init_PDFEmbeddedFile=__esm(()=>{init_tslib_es62();init_core();PDFEmbeddedFile=function(){function PDFEmbeddedFile2(ref,doc,embedder){this.alreadyEmbedded=false;this.ref=ref;this.doc=doc;this.embedder=embedder}PDFEmbeddedFile2.prototype.embed=function(){return __awaiter(this,undefined,undefined,function(){var ref,Names,EmbeddedFiles,EFNames,AF;return __generator(this,function(_a){switch(_a.label){case 0:if(!!this.alreadyEmbedded)return[3,2];return[4,this.embedder.embedIntoContext(this.doc.context,this.ref)];case 1:ref=_a.sent();if(!this.doc.catalog.has(PDFName_default.of("Names"))){this.doc.catalog.set(PDFName_default.of("Names"),this.doc.context.obj({}))}Names=this.doc.catalog.lookup(PDFName_default.of("Names"),PDFDict_default);if(!Names.has(PDFName_default.of("EmbeddedFiles"))){Names.set(PDFName_default.of("EmbeddedFiles"),this.doc.context.obj({}))}EmbeddedFiles=Names.lookup(PDFName_default.of("EmbeddedFiles"),PDFDict_default);if(!EmbeddedFiles.has(PDFName_default.of("Names"))){EmbeddedFiles.set(PDFName_default.of("Names"),this.doc.context.obj([]))}EFNames=EmbeddedFiles.lookup(PDFName_default.of("Names"),PDFArray_default);EFNames.push(PDFHexString_default.fromText(this.embedder.fileName));EFNames.push(ref);if(!this.doc.catalog.has(PDFName_default.of("AF"))){this.doc.catalog.set(PDFName_default.of("AF"),this.doc.context.obj([]))}AF=this.doc.catalog.lookup(PDFName_default.of("AF"),PDFArray_default);AF.push(ref);this.alreadyEmbedded=true;_a.label=2;case 2:return[2]}})})};PDFEmbeddedFile2.of=function(ref,doc,embedder){return new PDFEmbeddedFile2(ref,doc,embedder)};return PDFEmbeddedFile2}();PDFEmbeddedFile_default=PDFEmbeddedFile});var PDFJavaScript,PDFJavaScript_default;var init_PDFJavaScript=__esm(()=>{init_tslib_es62();init_core();PDFJavaScript=function(){function PDFJavaScript2(ref,doc,embedder){this.alreadyEmbedded=false;this.ref=ref;this.doc=doc;this.embedder=embedder}PDFJavaScript2.prototype.embed=function(){return __awaiter(this,undefined,undefined,function(){var _a,catalog,context2,ref,Names,Javascript,JSNames;return __generator(this,function(_b){switch(_b.label){case 0:if(!!this.alreadyEmbedded)return[3,2];_a=this.doc,catalog=_a.catalog,context2=_a.context;return[4,this.embedder.embedIntoContext(this.doc.context,this.ref)];case 1:ref=_b.sent();if(!catalog.has(PDFName_default.of("Names"))){catalog.set(PDFName_default.of("Names"),context2.obj({}))}Names=catalog.lookup(PDFName_default.of("Names"),PDFDict_default);if(!Names.has(PDFName_default.of("JavaScript"))){Names.set(PDFName_default.of("JavaScript"),context2.obj({}))}Javascript=Names.lookup(PDFName_default.of("JavaScript"),PDFDict_default);if(!Javascript.has(PDFName_default.of("Names"))){Javascript.set(PDFName_default.of("Names"),context2.obj([]))}JSNames=Javascript.lookup(PDFName_default.of("Names"),PDFArray_default);JSNames.push(PDFHexString_default.fromText(this.embedder.scriptName));JSNames.push(ref);this.alreadyEmbedded=true;_b.label=2;case 2:return[2]}})})};PDFJavaScript2.of=function(ref,doc,embedder){return new PDFJavaScript2(ref,doc,embedder)};return PDFJavaScript2}();PDFJavaScript_default=PDFJavaScript});var JavaScriptEmbedder,JavaScriptEmbedder_default;var init_JavaScriptEmbedder=__esm(()=>{init_tslib_es62();init_PDFHexString();JavaScriptEmbedder=function(){function JavaScriptEmbedder2(script,scriptName){this.script=script;this.scriptName=scriptName}JavaScriptEmbedder2.for=function(script,scriptName){return new JavaScriptEmbedder2(script,scriptName)};JavaScriptEmbedder2.prototype.embedIntoContext=function(context2,ref){return __awaiter(this,undefined,undefined,function(){var jsActionDict;return __generator(this,function(_a){jsActionDict=context2.obj({Type:"Action",S:"JavaScript",JS:PDFHexString_default.fromText(this.script)});if(ref){context2.assign(ref,jsActionDict);return[2,ref]}else{return[2,context2.register(jsActionDict)]}return[2]})})};return JavaScriptEmbedder2}();JavaScriptEmbedder_default=JavaScriptEmbedder});function assertIsLiteralOrHexString(pdfObject){if(!(pdfObject instanceof PDFHexString_default)&&!(pdfObject instanceof PDFString_default)){throw new UnexpectedObjectTypeError([PDFHexString_default,PDFString_default],pdfObject)}}var PDFDocument,PDFDocument_default;var init_PDFDocument=__esm(()=>{init_tslib_es62();init_errors3();init_PDFEmbeddedPage();init_PDFFont();init_PDFImage();init_PDFPage();init_PDFForm();init_sizes();init_core();init_PDFDocumentOptions();init_utils2();init_FileEmbedder();init_PDFEmbeddedFile();init_PDFJavaScript();init_JavaScriptEmbedder();PDFDocument=function(){function PDFDocument2(context2,ignoreEncryption,updateMetadata){var _this=this;this.defaultWordBreaks=[" "];this.computePages=function(){var pages=[];_this.catalog.Pages().traverse(function(node,ref){if(node instanceof PDFPageLeaf_default){var page=_this.pageMap.get(node);if(!page){page=PDFPage_default.of(node,ref,_this);_this.pageMap.set(node,page)}pages.push(page)}});return pages};this.getOrCreateForm=function(){var acroForm=_this.catalog.getOrCreateAcroForm();return PDFForm_default.of(acroForm,_this)};assertIs(context2,"context",[[PDFContext_default,"PDFContext"]]);assertIs(ignoreEncryption,"ignoreEncryption",["boolean"]);this.context=context2;this.catalog=context2.lookup(context2.trailerInfo.Root);this.isEncrypted=!!context2.lookup(context2.trailerInfo.Encrypt);this.pageCache=Cache_default.populatedBy(this.computePages);this.pageMap=new Map;this.formCache=Cache_default.populatedBy(this.getOrCreateForm);this.fonts=[];this.images=[];this.embeddedPages=[];this.embeddedFiles=[];this.javaScripts=[];if(!ignoreEncryption&&this.isEncrypted)throw new EncryptedPDFError;if(updateMetadata)this.updateInfoDict()}PDFDocument2.load=function(pdf,options){if(options===undefined){options={}}return __awaiter(this,undefined,undefined,function(){var _a,ignoreEncryption,_b,parseSpeed,_c,throwOnInvalidObject,_d,updateMetadata,_e,capNumbers,bytes,context2;return __generator(this,function(_f){switch(_f.label){case 0:_a=options.ignoreEncryption,ignoreEncryption=_a===undefined?false:_a,_b=options.parseSpeed,parseSpeed=_b===undefined?ParseSpeeds.Slow:_b,_c=options.throwOnInvalidObject,throwOnInvalidObject=_c===undefined?false:_c,_d=options.updateMetadata,updateMetadata=_d===undefined?true:_d,_e=options.capNumbers,capNumbers=_e===undefined?false:_e;assertIs(pdf,"pdf",["string",Uint8Array,ArrayBuffer]);assertIs(ignoreEncryption,"ignoreEncryption",["boolean"]);assertIs(parseSpeed,"parseSpeed",["number"]);assertIs(throwOnInvalidObject,"throwOnInvalidObject",["boolean"]);bytes=toUint8Array(pdf);return[4,PDFParser_default.forBytesWithOptions(bytes,parseSpeed,throwOnInvalidObject,capNumbers).parseDocument()];case 1:context2=_f.sent();return[2,new PDFDocument2(context2,ignoreEncryption,updateMetadata)]}})})};PDFDocument2.create=function(options){if(options===undefined){options={}}return __awaiter(this,undefined,undefined,function(){var _a,updateMetadata,context2,pageTree,pageTreeRef,catalog;return __generator(this,function(_b){_a=options.updateMetadata,updateMetadata=_a===undefined?true:_a;context2=PDFContext_default.create();pageTree=PDFPageTree_default.withContext(context2);pageTreeRef=context2.register(pageTree);catalog=PDFCatalog_default.withContextAndPages(context2,pageTreeRef);context2.trailerInfo.Root=context2.register(catalog);return[2,new PDFDocument2(context2,false,updateMetadata)]})})};PDFDocument2.prototype.registerFontkit=function(fontkit){this.fontkit=fontkit};PDFDocument2.prototype.getForm=function(){var form=this.formCache.access();if(form.hasXFA()){console.warn("Removing XFA form data as pdf-lib does not support reading or writing XFA");form.deleteXFA()}return form};PDFDocument2.prototype.getTitle=function(){var title=this.getInfoDict().lookup(PDFName_default.Title);if(!title)return;assertIsLiteralOrHexString(title);return title.decodeText()};PDFDocument2.prototype.getAuthor=function(){var author=this.getInfoDict().lookup(PDFName_default.Author);if(!author)return;assertIsLiteralOrHexString(author);return author.decodeText()};PDFDocument2.prototype.getSubject=function(){var subject=this.getInfoDict().lookup(PDFName_default.Subject);if(!subject)return;assertIsLiteralOrHexString(subject);return subject.decodeText()};PDFDocument2.prototype.getKeywords=function(){var keywords=this.getInfoDict().lookup(PDFName_default.Keywords);if(!keywords)return;assertIsLiteralOrHexString(keywords);return keywords.decodeText()};PDFDocument2.prototype.getCreator=function(){var creator=this.getInfoDict().lookup(PDFName_default.Creator);if(!creator)return;assertIsLiteralOrHexString(creator);return creator.decodeText()};PDFDocument2.prototype.getProducer=function(){var producer=this.getInfoDict().lookup(PDFName_default.Producer);if(!producer)return;assertIsLiteralOrHexString(producer);return producer.decodeText()};PDFDocument2.prototype.getCreationDate=function(){var creationDate=this.getInfoDict().lookup(PDFName_default.CreationDate);if(!creationDate)return;assertIsLiteralOrHexString(creationDate);return creationDate.decodeDate()};PDFDocument2.prototype.getModificationDate=function(){var modificationDate=this.getInfoDict().lookup(PDFName_default.ModDate);if(!modificationDate)return;assertIsLiteralOrHexString(modificationDate);return modificationDate.decodeDate()};PDFDocument2.prototype.setTitle=function(title,options){assertIs(title,"title",["string"]);var key=PDFName_default.of("Title");this.getInfoDict().set(key,PDFHexString_default.fromText(title));if(options===null||options===undefined?undefined:options.showInWindowTitleBar){var prefs=this.catalog.getOrCreateViewerPreferences();prefs.setDisplayDocTitle(true)}};PDFDocument2.prototype.setAuthor=function(author){assertIs(author,"author",["string"]);var key=PDFName_default.of("Author");this.getInfoDict().set(key,PDFHexString_default.fromText(author))};PDFDocument2.prototype.setSubject=function(subject){assertIs(subject,"author",["string"]);var key=PDFName_default.of("Subject");this.getInfoDict().set(key,PDFHexString_default.fromText(subject))};PDFDocument2.prototype.setKeywords=function(keywords){assertIs(keywords,"keywords",[Array]);var key=PDFName_default.of("Keywords");this.getInfoDict().set(key,PDFHexString_default.fromText(keywords.join(" ")))};PDFDocument2.prototype.setCreator=function(creator){assertIs(creator,"creator",["string"]);var key=PDFName_default.of("Creator");this.getInfoDict().set(key,PDFHexString_default.fromText(creator))};PDFDocument2.prototype.setProducer=function(producer){assertIs(producer,"creator",["string"]);var key=PDFName_default.of("Producer");this.getInfoDict().set(key,PDFHexString_default.fromText(producer))};PDFDocument2.prototype.setLanguage=function(language){assertIs(language,"language",["string"]);var key=PDFName_default.of("Lang");this.catalog.set(key,PDFString_default.of(language))};PDFDocument2.prototype.setCreationDate=function(creationDate){assertIs(creationDate,"creationDate",[[Date,"Date"]]);var key=PDFName_default.of("CreationDate");this.getInfoDict().set(key,PDFString_default.fromDate(creationDate))};PDFDocument2.prototype.setModificationDate=function(modificationDate){assertIs(modificationDate,"modificationDate",[[Date,"Date"]]);var key=PDFName_default.of("ModDate");this.getInfoDict().set(key,PDFString_default.fromDate(modificationDate))};PDFDocument2.prototype.getPageCount=function(){if(this.pageCount===undefined)this.pageCount=this.getPages().length;return this.pageCount};PDFDocument2.prototype.getPages=function(){return this.pageCache.access()};PDFDocument2.prototype.getPage=function(index){var pages=this.getPages();assertRange(index,"index",0,pages.length-1);return pages[index]};PDFDocument2.prototype.getPageIndices=function(){return range(0,this.getPageCount())};PDFDocument2.prototype.removePage=function(index){var pageCount=this.getPageCount();if(this.pageCount===0)throw new RemovePageFromEmptyDocumentError;assertRange(index,"index",0,pageCount-1);this.catalog.removeLeafNode(index);this.pageCount=pageCount-1};PDFDocument2.prototype.addPage=function(page){assertIs(page,"page",["undefined",[PDFPage_default,"PDFPage"],Array]);return this.insertPage(this.getPageCount(),page)};PDFDocument2.prototype.insertPage=function(index,page){var pageCount=this.getPageCount();assertRange(index,"index",0,pageCount);assertIs(page,"page",["undefined",[PDFPage_default,"PDFPage"],Array]);if(!page||Array.isArray(page)){var dims=Array.isArray(page)?page:PageSizes.A4;page=PDFPage_default.create(this);page.setSize.apply(page,dims)}else if(page.doc!==this){throw new ForeignPageError}var parentRef=this.catalog.insertLeafNode(page.ref,index);page.node.setParent(parentRef);this.pageMap.set(page.node,page);this.pageCache.invalidate();this.pageCount=pageCount+1;return page};PDFDocument2.prototype.copyPages=function(srcDoc,indices){return __awaiter(this,undefined,undefined,function(){var copier,srcPages,copiedPages,idx4,len3,srcPage,copiedPage,ref;return __generator(this,function(_a){switch(_a.label){case 0:assertIs(srcDoc,"srcDoc",[[PDFDocument2,"PDFDocument"]]);assertIs(indices,"indices",[Array]);return[4,srcDoc.flush()];case 1:_a.sent();copier=PDFObjectCopier_default.for(srcDoc.context,this.context);srcPages=srcDoc.getPages();copiedPages=new Array(indices.length);for(idx4=0,len3=indices.length;idx4<len3;idx4++){srcPage=srcPages[indices[idx4]];copiedPage=copier.copy(srcPage.node);ref=this.context.register(copiedPage);copiedPages[idx4]=PDFPage_default.of(copiedPage,ref,this)}return[2,copiedPages]}})})};PDFDocument2.prototype.copy=function(){return __awaiter(this,undefined,undefined,function(){var pdfCopy,contentPages,idx4,len3;return __generator(this,function(_a){switch(_a.label){case 0:return[4,PDFDocument2.create()];case 1:pdfCopy=_a.sent();return[4,pdfCopy.copyPages(this,this.getPageIndices())];case 2:contentPages=_a.sent();for(idx4=0,len3=contentPages.length;idx4<len3;idx4++){pdfCopy.addPage(contentPages[idx4])}if(this.getAuthor()!==undefined){pdfCopy.setAuthor(this.getAuthor())}if(this.getCreationDate()!==undefined){pdfCopy.setCreationDate(this.getCreationDate())}if(this.getCreator()!==undefined){pdfCopy.setCreator(this.getCreator())}if(this.getModificationDate()!==undefined){pdfCopy.setModificationDate(this.getModificationDate())}if(this.getProducer()!==undefined){pdfCopy.setProducer(this.getProducer())}if(this.getSubject()!==undefined){pdfCopy.setSubject(this.getSubject())}if(this.getTitle()!==undefined){pdfCopy.setTitle(this.getTitle())}pdfCopy.defaultWordBreaks=this.defaultWordBreaks;return[2,pdfCopy]}})})};PDFDocument2.prototype.addJavaScript=function(name,script){assertIs(name,"name",["string"]);assertIs(script,"script",["string"]);var embedder=JavaScriptEmbedder_default.for(script,name);var ref=this.context.nextRef();var javaScript=PDFJavaScript_default.of(ref,this,embedder);this.javaScripts.push(javaScript)};PDFDocument2.prototype.attach=function(attachment,name,options){if(options===undefined){options={}}return __awaiter(this,undefined,undefined,function(){var bytes,embedder,ref,embeddedFile;return __generator(this,function(_a){assertIs(attachment,"attachment",["string",Uint8Array,ArrayBuffer]);assertIs(name,"name",["string"]);assertOrUndefined(options.mimeType,"mimeType",["string"]);assertOrUndefined(options.description,"description",["string"]);assertOrUndefined(options.creationDate,"options.creationDate",[Date]);assertOrUndefined(options.modificationDate,"options.modificationDate",[Date]);assertIsOneOfOrUndefined(options.afRelationship,"options.afRelationship",AFRelationship);bytes=toUint8Array(attachment);embedder=FileEmbedder_default.for(bytes,name,options);ref=this.context.nextRef();embeddedFile=PDFEmbeddedFile_default.of(ref,this,embedder);this.embeddedFiles.push(embeddedFile);return[2]})})};PDFDocument2.prototype.embedFont=function(font,options){if(options===undefined){options={}}return __awaiter(this,undefined,undefined,function(){var _a,subset,customName,features,embedder,bytes,fontkit,_b,ref,pdfFont;return __generator(this,function(_c){switch(_c.label){case 0:_a=options.subset,subset=_a===undefined?false:_a,customName=options.customName,features=options.features;assertIs(font,"font",["string",Uint8Array,ArrayBuffer]);assertIs(subset,"subset",["boolean"]);if(!isStandardFont(font))return[3,1];embedder=StandardFontEmbedder_default.for(font,customName);return[3,7];case 1:if(!canBeConvertedToUint8Array(font))return[3,6];bytes=toUint8Array(font);fontkit=this.assertFontkit();if(!subset)return[3,3];return[4,CustomFontSubsetEmbedder_default.for(fontkit,bytes,customName,features)];case 2:_b=_c.sent();return[3,5];case 3:return[4,CustomFontEmbedder_default.for(fontkit,bytes,customName,features)];case 4:_b=_c.sent();_c.label=5;case 5:embedder=_b;return[3,7];case 6:throw new TypeError("`font` must be one of `StandardFonts | string | Uint8Array | ArrayBuffer`");case 7:ref=this.context.nextRef();pdfFont=PDFFont_default.of(ref,this,embedder);this.fonts.push(pdfFont);return[2,pdfFont]}})})};PDFDocument2.prototype.embedStandardFont=function(font,customName){assertIs(font,"font",["string"]);if(!isStandardFont(font)){throw new TypeError("`font` must be one of type `StandardFonts`")}var embedder=StandardFontEmbedder_default.for(font,customName);var ref=this.context.nextRef();var pdfFont=PDFFont_default.of(ref,this,embedder);this.fonts.push(pdfFont);return pdfFont};PDFDocument2.prototype.embedJpg=function(jpg){return __awaiter(this,undefined,undefined,function(){var bytes,embedder,ref,pdfImage;return __generator(this,function(_a){switch(_a.label){case 0:assertIs(jpg,"jpg",["string",Uint8Array,ArrayBuffer]);bytes=toUint8Array(jpg);return[4,JpegEmbedder_default.for(bytes)];case 1:embedder=_a.sent();ref=this.context.nextRef();pdfImage=PDFImage_default.of(ref,this,embedder);this.images.push(pdfImage);return[2,pdfImage]}})})};PDFDocument2.prototype.embedPng=function(png){return __awaiter(this,undefined,undefined,function(){var bytes,embedder,ref,pdfImage;return __generator(this,function(_a){switch(_a.label){case 0:assertIs(png,"png",["string",Uint8Array,ArrayBuffer]);bytes=toUint8Array(png);return[4,PngEmbedder_default.for(bytes)];case 1:embedder=_a.sent();ref=this.context.nextRef();pdfImage=PDFImage_default.of(ref,this,embedder);this.images.push(pdfImage);return[2,pdfImage]}})})};PDFDocument2.prototype.embedPdf=function(pdf,indices){if(indices===undefined){indices=[0]}return __awaiter(this,undefined,undefined,function(){var srcDoc,_a,srcPages;return __generator(this,function(_b){switch(_b.label){case 0:assertIs(pdf,"pdf",["string",Uint8Array,ArrayBuffer,[PDFDocument2,"PDFDocument"]]);assertIs(indices,"indices",[Array]);if(!(pdf instanceof PDFDocument2))return[3,1];_a=pdf;return[3,3];case 1:return[4,PDFDocument2.load(pdf)];case 2:_a=_b.sent();_b.label=3;case 3:srcDoc=_a;srcPages=pluckIndices(srcDoc.getPages(),indices);return[2,this.embedPages(srcPages)]}})})};PDFDocument2.prototype.embedPage=function(page,boundingBox,transformationMatrix){return __awaiter(this,undefined,undefined,function(){var embeddedPage;return __generator(this,function(_a){switch(_a.label){case 0:assertIs(page,"page",[[PDFPage_default,"PDFPage"]]);return[4,this.embedPages([page],[boundingBox],[transformationMatrix])];case 1:embeddedPage=_a.sent()[0];return[2,embeddedPage]}})})};PDFDocument2.prototype.embedPages=function(pages,boundingBoxes,transformationMatrices){if(boundingBoxes===undefined){boundingBoxes=[]}if(transformationMatrices===undefined){transformationMatrices=[]}return __awaiter(this,undefined,undefined,function(){var idx4,len3,currPage,nextPage,context2,maybeCopyPage,embeddedPages,idx4,len3,page,box,matrix,embedder,ref;var _a;return __generator(this,function(_b){switch(_b.label){case 0:if(pages.length===0)return[2,[]];for(idx4=0,len3=pages.length-1;idx4<len3;idx4++){currPage=pages[idx4];nextPage=pages[idx4+1];if(currPage.node.context!==nextPage.node.context){throw new PageEmbeddingMismatchedContextError}}context2=pages[0].node.context;maybeCopyPage=context2===this.context?function(p){return p}:PDFObjectCopier_default.for(context2,this.context).copy;embeddedPages=new Array(pages.length);idx4=0,len3=pages.length;_b.label=1;case 1:if(!(idx4<len3))return[3,4];page=maybeCopyPage(pages[idx4].node);box=boundingBoxes[idx4];matrix=transformationMatrices[idx4];return[4,PDFPageEmbedder_default.for(page,box,matrix)];case 2:embedder=_b.sent();ref=this.context.nextRef();embeddedPages[idx4]=PDFEmbeddedPage_default.of(ref,this,embedder);_b.label=3;case 3:idx4++;return[3,1];case 4:(_a=this.embeddedPages).push.apply(_a,embeddedPages);return[2,embeddedPages]}})})};PDFDocument2.prototype.flush=function(){return __awaiter(this,undefined,undefined,function(){return __generator(this,function(_a){switch(_a.label){case 0:return[4,this.embedAll(this.fonts)];case 1:_a.sent();return[4,this.embedAll(this.images)];case 2:_a.sent();return[4,this.embedAll(this.embeddedPages)];case 3:_a.sent();return[4,this.embedAll(this.embeddedFiles)];case 4:_a.sent();return[4,this.embedAll(this.javaScripts)];case 5:_a.sent();return[2]}})})};PDFDocument2.prototype.save=function(options){if(options===undefined){options={}}return __awaiter(this,undefined,undefined,function(){var _a,useObjectStreams,_b,addDefaultPage,_c,objectsPerTick,_d,updateFieldAppearances,form,Writer;return __generator(this,function(_e){switch(_e.label){case 0:_a=options.useObjectStreams,useObjectStreams=_a===undefined?true:_a,_b=options.addDefaultPage,addDefaultPage=_b===undefined?true:_b,_c=options.objectsPerTick,objectsPerTick=_c===undefined?50:_c,_d=options.updateFieldAppearances,updateFieldAppearances=_d===undefined?true:_d;assertIs(useObjectStreams,"useObjectStreams",["boolean"]);assertIs(addDefaultPage,"addDefaultPage",["boolean"]);assertIs(objectsPerTick,"objectsPerTick",["number"]);assertIs(updateFieldAppearances,"updateFieldAppearances",["boolean"]);if(addDefaultPage&&this.getPageCount()===0)this.addPage();if(updateFieldAppearances){form=this.formCache.getValue();if(form)form.updateFieldAppearances()}return[4,this.flush()];case 1:_e.sent();Writer=useObjectStreams?PDFStreamWriter_default:PDFWriter_default;return[2,Writer.forContext(this.context,objectsPerTick).serializeToBuffer()]}})})};PDFDocument2.prototype.saveAsBase64=function(options){if(options===undefined){options={}}return __awaiter(this,undefined,undefined,function(){var _a,dataUri,otherOptions,bytes,base642;return __generator(this,function(_b){switch(_b.label){case 0:_a=options.dataUri,dataUri=_a===undefined?false:_a,otherOptions=__rest2(options,["dataUri"]);assertIs(dataUri,"dataUri",["boolean"]);return[4,this.save(otherOptions)];case 1:bytes=_b.sent();base642=encodeToBase64(bytes);return[2,dataUri?"data:application/pdf;base64,"+base642:base642]}})})};PDFDocument2.prototype.findPageForAnnotationRef=function(ref){var pages=this.getPages();for(var idx4=0,len3=pages.length;idx4<len3;idx4++){var page=pages[idx4];var annotations=page.node.Annots();if((annotations===null||annotations===undefined?undefined:annotations.indexOf(ref))!==undefined){return page}}return};PDFDocument2.prototype.embedAll=function(embeddables){return __awaiter(this,undefined,undefined,function(){var idx4,len3;return __generator(this,function(_a){switch(_a.label){case 0:idx4=0,len3=embeddables.length;_a.label=1;case 1:if(!(idx4<len3))return[3,4];return[4,embeddables[idx4].embed()];case 2:_a.sent();_a.label=3;case 3:idx4++;return[3,1];case 4:return[2]}})})};PDFDocument2.prototype.updateInfoDict=function(){var pdfLib="pdf-lib (https://github.com/Hopding/pdf-lib)";var now=new Date;var info=this.getInfoDict();this.setProducer(pdfLib);this.setModificationDate(now);if(!info.get(PDFName_default.of("Creator")))this.setCreator(pdfLib);if(!info.get(PDFName_default.of("CreationDate")))this.setCreationDate(now)};PDFDocument2.prototype.getInfoDict=function(){var existingInfo=this.context.lookup(this.context.trailerInfo.Info);if(existingInfo instanceof PDFDict_default)return existingInfo;var newInfo=this.context.obj({});this.context.trailerInfo.Info=this.context.register(newInfo);return newInfo};PDFDocument2.prototype.assertFontkit=function(){if(!this.fontkit)throw new FontkitNotRegisteredError;return this.fontkit};return PDFDocument2}();PDFDocument_default=PDFDocument});var BlendMode;var init_PDFPageOptions=__esm(()=>{(function(BlendMode2){BlendMode2["Normal"]="Normal";BlendMode2["Multiply"]="Multiply";BlendMode2["Screen"]="Screen";BlendMode2["Overlay"]="Overlay";BlendMode2["Darken"]="Darken";BlendMode2["Lighten"]="Lighten";BlendMode2["ColorDodge"]="ColorDodge";BlendMode2["ColorBurn"]="ColorBurn";BlendMode2["HardLight"]="HardLight";BlendMode2["SoftLight"]="SoftLight";BlendMode2["Difference"]="Difference";BlendMode2["Exclusion"]="Exclusion"})(BlendMode||(BlendMode={}))});var PDFPage,PDFPage_default;var init_PDFPage=__esm(()=>{init_tslib_es62();init_colors();init_operations();init_operators();init_PDFDocument();init_PDFEmbeddedPage();init_PDFFont();init_PDFImage();init_PDFPageOptions();init_rotations();init_StandardFonts();init_core();init_utils2();PDFPage=function(){function PDFPage2(leafNode,ref,doc){this.fontSize=24;this.fontColor=rgb(0,0,0);this.lineHeight=24;this.x=0;this.y=0;assertIs(leafNode,"leafNode",[[PDFPageLeaf_default,"PDFPageLeaf"]]);assertIs(ref,"ref",[[PDFRef_default,"PDFRef"]]);assertIs(doc,"doc",[[PDFDocument_default,"PDFDocument"]]);this.node=leafNode;this.ref=ref;this.doc=doc}PDFPage2.prototype.setRotation=function(angle){var degreesAngle=toDegrees(angle);assertMultiple(degreesAngle,"degreesAngle",90);this.node.set(PDFName_default.of("Rotate"),this.doc.context.obj(degreesAngle))};PDFPage2.prototype.getRotation=function(){var Rotate=this.node.Rotate();return degrees(Rotate?Rotate.asNumber():0)};PDFPage2.prototype.setSize=function(width,height){assertIs(width,"width",["number"]);assertIs(height,"height",["number"]);var mediaBox=this.getMediaBox();this.setMediaBox(mediaBox.x,mediaBox.y,width,height);var cropBox=this.getCropBox();var bleedBox=this.getBleedBox();var trimBox=this.getTrimBox();var artBox=this.getArtBox();var hasCropBox=this.node.CropBox();var hasBleedBox=this.node.BleedBox();var hasTrimBox=this.node.TrimBox();var hasArtBox=this.node.ArtBox();if(hasCropBox&&rectanglesAreEqual(cropBox,mediaBox)){this.setCropBox(mediaBox.x,mediaBox.y,width,height)}if(hasBleedBox&&rectanglesAreEqual(bleedBox,mediaBox)){this.setBleedBox(mediaBox.x,mediaBox.y,width,height)}if(hasTrimBox&&rectanglesAreEqual(trimBox,mediaBox)){this.setTrimBox(mediaBox.x,mediaBox.y,width,height)}if(hasArtBox&&rectanglesAreEqual(artBox,mediaBox)){this.setArtBox(mediaBox.x,mediaBox.y,width,height)}};PDFPage2.prototype.setWidth=function(width){assertIs(width,"width",["number"]);this.setSize(width,this.getSize().height)};PDFPage2.prototype.setHeight=function(height){assertIs(height,"height",["number"]);this.setSize(this.getSize().width,height)};PDFPage2.prototype.setMediaBox=function(x,y,width,height){assertIs(x,"x",["number"]);assertIs(y,"y",["number"]);assertIs(width,"width",["number"]);assertIs(height,"height",["number"]);var mediaBox=this.doc.context.obj([x,y,x+width,y+height]);this.node.set(PDFName_default.MediaBox,mediaBox)};PDFPage2.prototype.setCropBox=function(x,y,width,height){assertIs(x,"x",["number"]);assertIs(y,"y",["number"]);assertIs(width,"width",["number"]);assertIs(height,"height",["number"]);var cropBox=this.doc.context.obj([x,y,x+width,y+height]);this.node.set(PDFName_default.CropBox,cropBox)};PDFPage2.prototype.setBleedBox=function(x,y,width,height){assertIs(x,"x",["number"]);assertIs(y,"y",["number"]);assertIs(width,"width",["number"]);assertIs(height,"height",["number"]);var bleedBox=this.doc.context.obj([x,y,x+width,y+height]);this.node.set(PDFName_default.BleedBox,bleedBox)};PDFPage2.prototype.setTrimBox=function(x,y,width,height){assertIs(x,"x",["number"]);assertIs(y,"y",["number"]);assertIs(width,"width",["number"]);assertIs(height,"height",["number"]);var trimBox=this.doc.context.obj([x,y,x+width,y+height]);this.node.set(PDFName_default.TrimBox,trimBox)};PDFPage2.prototype.setArtBox=function(x,y,width,height){assertIs(x,"x",["number"]);assertIs(y,"y",["number"]);assertIs(width,"width",["number"]);assertIs(height,"height",["number"]);var artBox=this.doc.context.obj([x,y,x+width,y+height]);this.node.set(PDFName_default.ArtBox,artBox)};PDFPage2.prototype.getSize=function(){var _a=this.getMediaBox(),width=_a.width,height=_a.height;return{width,height}};PDFPage2.prototype.getWidth=function(){return this.getSize().width};PDFPage2.prototype.getHeight=function(){return this.getSize().height};PDFPage2.prototype.getMediaBox=function(){var mediaBox=this.node.MediaBox();return mediaBox.asRectangle()};PDFPage2.prototype.getCropBox=function(){var _a;var cropBox=this.node.CropBox();return(_a=cropBox===null||cropBox===undefined?undefined:cropBox.asRectangle())!==null&&_a!==undefined?_a:this.getMediaBox()};PDFPage2.prototype.getBleedBox=function(){var _a;var bleedBox=this.node.BleedBox();return(_a=bleedBox===null||bleedBox===undefined?undefined:bleedBox.asRectangle())!==null&&_a!==undefined?_a:this.getCropBox()};PDFPage2.prototype.getTrimBox=function(){var _a;var trimBox=this.node.TrimBox();return(_a=trimBox===null||trimBox===undefined?undefined:trimBox.asRectangle())!==null&&_a!==undefined?_a:this.getCropBox()};PDFPage2.prototype.getArtBox=function(){var _a;var artBox=this.node.ArtBox();return(_a=artBox===null||artBox===undefined?undefined:artBox.asRectangle())!==null&&_a!==undefined?_a:this.getCropBox()};PDFPage2.prototype.translateContent=function(x,y){assertIs(x,"x",["number"]);assertIs(y,"y",["number"]);this.node.normalize();this.getContentStream();var start=this.createContentStream(pushGraphicsState(),translate(x,y));var startRef=this.doc.context.register(start);var end=this.createContentStream(popGraphicsState());var endRef=this.doc.context.register(end);this.node.wrapContentStreams(startRef,endRef)};PDFPage2.prototype.scale=function(x,y){assertIs(x,"x",["number"]);assertIs(y,"y",["number"]);this.setSize(this.getWidth()*x,this.getHeight()*y);this.scaleContent(x,y);this.scaleAnnotations(x,y)};PDFPage2.prototype.scaleContent=function(x,y){assertIs(x,"x",["number"]);assertIs(y,"y",["number"]);this.node.normalize();this.getContentStream();var start=this.createContentStream(pushGraphicsState(),scale(x,y));var startRef=this.doc.context.register(start);var end=this.createContentStream(popGraphicsState());var endRef=this.doc.context.register(end);this.node.wrapContentStreams(startRef,endRef)};PDFPage2.prototype.scaleAnnotations=function(x,y){assertIs(x,"x",["number"]);assertIs(y,"y",["number"]);var annots=this.node.Annots();if(!annots)return;for(var idx4=0;idx4<annots.size();idx4++){var annot=annots.lookup(idx4);if(annot instanceof PDFDict_default)this.scaleAnnot(annot,x,y)}};PDFPage2.prototype.resetPosition=function(){this.getContentStream(false);this.x=0;this.y=0};PDFPage2.prototype.setFont=function(font){assertIs(font,"font",[[PDFFont_default,"PDFFont"]]);this.font=font;this.fontKey=this.node.newFontDictionary(this.font.name,this.font.ref)};PDFPage2.prototype.setFontSize=function(fontSize){assertIs(fontSize,"fontSize",["number"]);this.fontSize=fontSize};PDFPage2.prototype.setFontColor=function(fontColor){assertIs(fontColor,"fontColor",[[Object,"Color"]]);this.fontColor=fontColor};PDFPage2.prototype.setLineHeight=function(lineHeight){assertIs(lineHeight,"lineHeight",["number"]);this.lineHeight=lineHeight};PDFPage2.prototype.getPosition=function(){return{x:this.x,y:this.y}};PDFPage2.prototype.getX=function(){return this.x};PDFPage2.prototype.getY=function(){return this.y};PDFPage2.prototype.moveTo=function(x,y){assertIs(x,"x",["number"]);assertIs(y,"y",["number"]);this.x=x;this.y=y};PDFPage2.prototype.moveDown=function(yDecrease){assertIs(yDecrease,"yDecrease",["number"]);this.y-=yDecrease};PDFPage2.prototype.moveUp=function(yIncrease){assertIs(yIncrease,"yIncrease",["number"]);this.y+=yIncrease};PDFPage2.prototype.moveLeft=function(xDecrease){assertIs(xDecrease,"xDecrease",["number"]);this.x-=xDecrease};PDFPage2.prototype.moveRight=function(xIncrease){assertIs(xIncrease,"xIncrease",["number"]);this.x+=xIncrease};PDFPage2.prototype.pushOperators=function(){var operator=[];for(var _i=0;_i<arguments.length;_i++){operator[_i]=arguments[_i]}assertEachIs(operator,"operator",[[PDFOperator_default,"PDFOperator"]]);var contentStream=this.getContentStream();contentStream.push.apply(contentStream,operator)};PDFPage2.prototype.drawText=function(text4,options){var _a,_b,_c,_d,_e,_f,_g;if(options===undefined){options={}}assertIs(text4,"text",["string"]);assertOrUndefined(options.color,"options.color",[[Object,"Color"]]);assertRangeOrUndefined(options.opacity,"opacity.opacity",0,1);assertOrUndefined(options.font,"options.font",[[PDFFont_default,"PDFFont"]]);assertOrUndefined(options.size,"options.size",["number"]);assertOrUndefined(options.rotate,"options.rotate",[[Object,"Rotation"]]);assertOrUndefined(options.xSkew,"options.xSkew",[[Object,"Rotation"]]);assertOrUndefined(options.ySkew,"options.ySkew",[[Object,"Rotation"]]);assertOrUndefined(options.x,"options.x",["number"]);assertOrUndefined(options.y,"options.y",["number"]);assertOrUndefined(options.lineHeight,"options.lineHeight",["number"]);assertOrUndefined(options.maxWidth,"options.maxWidth",["number"]);assertOrUndefined(options.wordBreaks,"options.wordBreaks",[Array]);assertIsOneOfOrUndefined(options.blendMode,"options.blendMode",BlendMode);var _h=this.setOrEmbedFont(options.font),oldFont=_h.oldFont,newFont=_h.newFont,newFontKey=_h.newFontKey;var fontSize=options.size||this.fontSize;var wordBreaks=options.wordBreaks||this.doc.defaultWordBreaks;var textWidth=function(t){return newFont.widthOfTextAtSize(t,fontSize)};var lines=options.maxWidth===undefined?lineSplit(cleanText(text4)):breakTextIntoLines(text4,wordBreaks,options.maxWidth,textWidth);var encodedLines=new Array(lines.length);for(var idx4=0,len3=lines.length;idx4<len3;idx4++){encodedLines[idx4]=newFont.encodeText(lines[idx4])}var graphicsStateKey=this.maybeEmbedGraphicsState({opacity:options.opacity,blendMode:options.blendMode});var contentStream=this.getContentStream();contentStream.push.apply(contentStream,drawLinesOfText(encodedLines,{color:(_a=options.color)!==null&&_a!==undefined?_a:this.fontColor,font:newFontKey,size:fontSize,rotate:(_b=options.rotate)!==null&&_b!==undefined?_b:degrees(0),xSkew:(_c=options.xSkew)!==null&&_c!==undefined?_c:degrees(0),ySkew:(_d=options.ySkew)!==null&&_d!==undefined?_d:degrees(0),x:(_e=options.x)!==null&&_e!==undefined?_e:this.x,y:(_f=options.y)!==null&&_f!==undefined?_f:this.y,lineHeight:(_g=options.lineHeight)!==null&&_g!==undefined?_g:this.lineHeight,graphicsState:graphicsStateKey}));if(options.font){if(oldFont)this.setFont(oldFont);else this.resetFont()}};PDFPage2.prototype.drawImage=function(image,options){var _a,_b,_c,_d,_e,_f,_g;if(options===undefined){options={}}assertIs(image,"image",[[PDFImage_default,"PDFImage"]]);assertOrUndefined(options.x,"options.x",["number"]);assertOrUndefined(options.y,"options.y",["number"]);assertOrUndefined(options.width,"options.width",["number"]);assertOrUndefined(options.height,"options.height",["number"]);assertOrUndefined(options.rotate,"options.rotate",[[Object,"Rotation"]]);assertOrUndefined(options.xSkew,"options.xSkew",[[Object,"Rotation"]]);assertOrUndefined(options.ySkew,"options.ySkew",[[Object,"Rotation"]]);assertRangeOrUndefined(options.opacity,"opacity.opacity",0,1);assertIsOneOfOrUndefined(options.blendMode,"options.blendMode",BlendMode);var xObjectKey=this.node.newXObject("Image",image.ref);var graphicsStateKey=this.maybeEmbedGraphicsState({opacity:options.opacity,blendMode:options.blendMode});var contentStream=this.getContentStream();contentStream.push.apply(contentStream,drawImage(xObjectKey,{x:(_a=options.x)!==null&&_a!==undefined?_a:this.x,y:(_b=options.y)!==null&&_b!==undefined?_b:this.y,width:(_c=options.width)!==null&&_c!==undefined?_c:image.size().width,height:(_d=options.height)!==null&&_d!==undefined?_d:image.size().height,rotate:(_e=options.rotate)!==null&&_e!==undefined?_e:degrees(0),xSkew:(_f=options.xSkew)!==null&&_f!==undefined?_f:degrees(0),ySkew:(_g=options.ySkew)!==null&&_g!==undefined?_g:degrees(0),graphicsState:graphicsStateKey}))};PDFPage2.prototype.drawPage=function(embeddedPage,options){var _a,_b,_c,_d,_e;if(options===undefined){options={}}assertIs(embeddedPage,"embeddedPage",[[PDFEmbeddedPage_default,"PDFEmbeddedPage"]]);assertOrUndefined(options.x,"options.x",["number"]);assertOrUndefined(options.y,"options.y",["number"]);assertOrUndefined(options.xScale,"options.xScale",["number"]);assertOrUndefined(options.yScale,"options.yScale",["number"]);assertOrUndefined(options.width,"options.width",["number"]);assertOrUndefined(options.height,"options.height",["number"]);assertOrUndefined(options.rotate,"options.rotate",[[Object,"Rotation"]]);assertOrUndefined(options.xSkew,"options.xSkew",[[Object,"Rotation"]]);assertOrUndefined(options.ySkew,"options.ySkew",[[Object,"Rotation"]]);assertRangeOrUndefined(options.opacity,"opacity.opacity",0,1);assertIsOneOfOrUndefined(options.blendMode,"options.blendMode",BlendMode);var xObjectKey=this.node.newXObject("EmbeddedPdfPage",embeddedPage.ref);var graphicsStateKey=this.maybeEmbedGraphicsState({opacity:options.opacity,blendMode:options.blendMode});var xScale=options.width!==undefined?options.width/embeddedPage.width:options.xScale!==undefined?options.xScale:1;var yScale=options.height!==undefined?options.height/embeddedPage.height:options.yScale!==undefined?options.yScale:1;var contentStream=this.getContentStream();contentStream.push.apply(contentStream,drawPage(xObjectKey,{x:(_a=options.x)!==null&&_a!==undefined?_a:this.x,y:(_b=options.y)!==null&&_b!==undefined?_b:this.y,xScale,yScale,rotate:(_c=options.rotate)!==null&&_c!==undefined?_c:degrees(0),xSkew:(_d=options.xSkew)!==null&&_d!==undefined?_d:degrees(0),ySkew:(_e=options.ySkew)!==null&&_e!==undefined?_e:degrees(0),graphicsState:graphicsStateKey}))};PDFPage2.prototype.drawSvgPath=function(path,options){var _a,_b,_c,_d,_e,_f,_g,_h,_j;if(options===undefined){options={}}assertIs(path,"path",["string"]);assertOrUndefined(options.x,"options.x",["number"]);assertOrUndefined(options.y,"options.y",["number"]);assertOrUndefined(options.scale,"options.scale",["number"]);assertOrUndefined(options.rotate,"options.rotate",[[Object,"Rotation"]]);assertOrUndefined(options.borderWidth,"options.borderWidth",["number"]);assertOrUndefined(options.color,"options.color",[[Object,"Color"]]);assertRangeOrUndefined(options.opacity,"opacity.opacity",0,1);assertOrUndefined(options.borderColor,"options.borderColor",[[Object,"Color"]]);assertOrUndefined(options.borderDashArray,"options.borderDashArray",[Array]);assertOrUndefined(options.borderDashPhase,"options.borderDashPhase",["number"]);assertIsOneOfOrUndefined(options.borderLineCap,"options.borderLineCap",LineCapStyle);assertRangeOrUndefined(options.borderOpacity,"options.borderOpacity",0,1);assertIsOneOfOrUndefined(options.blendMode,"options.blendMode",BlendMode);var graphicsStateKey=this.maybeEmbedGraphicsState({opacity:options.opacity,borderOpacity:options.borderOpacity,blendMode:options.blendMode});if(!("color"in options)&&!("borderColor"in options)){options.borderColor=rgb(0,0,0)}var contentStream=this.getContentStream();contentStream.push.apply(contentStream,drawSvgPath(path,{x:(_a=options.x)!==null&&_a!==undefined?_a:this.x,y:(_b=options.y)!==null&&_b!==undefined?_b:this.y,scale:options.scale,rotate:(_c=options.rotate)!==null&&_c!==undefined?_c:degrees(0),color:(_d=options.color)!==null&&_d!==undefined?_d:undefined,borderColor:(_e=options.borderColor)!==null&&_e!==undefined?_e:undefined,borderWidth:(_f=options.borderWidth)!==null&&_f!==undefined?_f:0,borderDashArray:(_g=options.borderDashArray)!==null&&_g!==undefined?_g:undefined,borderDashPhase:(_h=options.borderDashPhase)!==null&&_h!==undefined?_h:undefined,borderLineCap:(_j=options.borderLineCap)!==null&&_j!==undefined?_j:undefined,graphicsState:graphicsStateKey}))};PDFPage2.prototype.drawLine=function(options){var _a,_b,_c,_d,_e;assertIs(options.start,"options.start",[[Object,"{ x: number, y: number }"]]);assertIs(options.end,"options.end",[[Object,"{ x: number, y: number }"]]);assertIs(options.start.x,"options.start.x",["number"]);assertIs(options.start.y,"options.start.y",["number"]);assertIs(options.end.x,"options.end.x",["number"]);assertIs(options.end.y,"options.end.y",["number"]);assertOrUndefined(options.thickness,"options.thickness",["number"]);assertOrUndefined(options.color,"options.color",[[Object,"Color"]]);assertOrUndefined(options.dashArray,"options.dashArray",[Array]);assertOrUndefined(options.dashPhase,"options.dashPhase",["number"]);assertIsOneOfOrUndefined(options.lineCap,"options.lineCap",LineCapStyle);assertRangeOrUndefined(options.opacity,"opacity.opacity",0,1);assertIsOneOfOrUndefined(options.blendMode,"options.blendMode",BlendMode);var graphicsStateKey=this.maybeEmbedGraphicsState({borderOpacity:options.opacity,blendMode:options.blendMode});if(!("color"in options)){options.color=rgb(0,0,0)}var contentStream=this.getContentStream();contentStream.push.apply(contentStream,drawLine({start:options.start,end:options.end,thickness:(_a=options.thickness)!==null&&_a!==undefined?_a:1,color:(_b=options.color)!==null&&_b!==undefined?_b:undefined,dashArray:(_c=options.dashArray)!==null&&_c!==undefined?_c:undefined,dashPhase:(_d=options.dashPhase)!==null&&_d!==undefined?_d:undefined,lineCap:(_e=options.lineCap)!==null&&_e!==undefined?_e:undefined,graphicsState:graphicsStateKey}))};PDFPage2.prototype.drawRectangle=function(options){var _a,_b,_c,_d,_e,_f,_g,_h,_j,_k,_l,_m,_o;if(options===undefined){options={}}assertOrUndefined(options.x,"options.x",["number"]);assertOrUndefined(options.y,"options.y",["number"]);assertOrUndefined(options.width,"options.width",["number"]);assertOrUndefined(options.height,"options.height",["number"]);assertOrUndefined(options.rotate,"options.rotate",[[Object,"Rotation"]]);assertOrUndefined(options.xSkew,"options.xSkew",[[Object,"Rotation"]]);assertOrUndefined(options.ySkew,"options.ySkew",[[Object,"Rotation"]]);assertOrUndefined(options.borderWidth,"options.borderWidth",["number"]);assertOrUndefined(options.color,"options.color",[[Object,"Color"]]);assertRangeOrUndefined(options.opacity,"opacity.opacity",0,1);assertOrUndefined(options.borderColor,"options.borderColor",[[Object,"Color"]]);assertOrUndefined(options.borderDashArray,"options.borderDashArray",[Array]);assertOrUndefined(options.borderDashPhase,"options.borderDashPhase",["number"]);assertIsOneOfOrUndefined(options.borderLineCap,"options.borderLineCap",LineCapStyle);assertRangeOrUndefined(options.borderOpacity,"options.borderOpacity",0,1);assertIsOneOfOrUndefined(options.blendMode,"options.blendMode",BlendMode);var graphicsStateKey=this.maybeEmbedGraphicsState({opacity:options.opacity,borderOpacity:options.borderOpacity,blendMode:options.blendMode});if(!("color"in options)&&!("borderColor"in options)){options.color=rgb(0,0,0)}var contentStream=this.getContentStream();contentStream.push.apply(contentStream,drawRectangle({x:(_a=options.x)!==null&&_a!==undefined?_a:this.x,y:(_b=options.y)!==null&&_b!==undefined?_b:this.y,width:(_c=options.width)!==null&&_c!==undefined?_c:150,height:(_d=options.height)!==null&&_d!==undefined?_d:100,rotate:(_e=options.rotate)!==null&&_e!==undefined?_e:degrees(0),xSkew:(_f=options.xSkew)!==null&&_f!==undefined?_f:degrees(0),ySkew:(_g=options.ySkew)!==null&&_g!==undefined?_g:degrees(0),borderWidth:(_h=options.borderWidth)!==null&&_h!==undefined?_h:0,color:(_j=options.color)!==null&&_j!==undefined?_j:undefined,borderColor:(_k=options.borderColor)!==null&&_k!==undefined?_k:undefined,borderDashArray:(_l=options.borderDashArray)!==null&&_l!==undefined?_l:undefined,borderDashPhase:(_m=options.borderDashPhase)!==null&&_m!==undefined?_m:undefined,graphicsState:graphicsStateKey,borderLineCap:(_o=options.borderLineCap)!==null&&_o!==undefined?_o:undefined}))};PDFPage2.prototype.drawSquare=function(options){if(options===undefined){options={}}var size=options.size;assertOrUndefined(size,"size",["number"]);this.drawRectangle(__assign(__assign({},options),{width:size,height:size}))};PDFPage2.prototype.drawEllipse=function(options){var _a,_b,_c,_d,_e,_f,_g,_h,_j,_k,_l;if(options===undefined){options={}}assertOrUndefined(options.x,"options.x",["number"]);assertOrUndefined(options.y,"options.y",["number"]);assertOrUndefined(options.xScale,"options.xScale",["number"]);assertOrUndefined(options.yScale,"options.yScale",["number"]);assertOrUndefined(options.rotate,"options.rotate",[[Object,"Rotation"]]);assertOrUndefined(options.color,"options.color",[[Object,"Color"]]);assertRangeOrUndefined(options.opacity,"opacity.opacity",0,1);assertOrUndefined(options.borderColor,"options.borderColor",[[Object,"Color"]]);assertRangeOrUndefined(options.borderOpacity,"options.borderOpacity",0,1);assertOrUndefined(options.borderWidth,"options.borderWidth",["number"]);assertOrUndefined(options.borderDashArray,"options.borderDashArray",[Array]);assertOrUndefined(options.borderDashPhase,"options.borderDashPhase",["number"]);assertIsOneOfOrUndefined(options.borderLineCap,"options.borderLineCap",LineCapStyle);assertIsOneOfOrUndefined(options.blendMode,"options.blendMode",BlendMode);var graphicsStateKey=this.maybeEmbedGraphicsState({opacity:options.opacity,borderOpacity:options.borderOpacity,blendMode:options.blendMode});if(!("color"in options)&&!("borderColor"in options)){options.color=rgb(0,0,0)}var contentStream=this.getContentStream();contentStream.push.apply(contentStream,drawEllipse({x:(_a=options.x)!==null&&_a!==undefined?_a:this.x,y:(_b=options.y)!==null&&_b!==undefined?_b:this.y,xScale:(_c=options.xScale)!==null&&_c!==undefined?_c:100,yScale:(_d=options.yScale)!==null&&_d!==undefined?_d:100,rotate:(_e=options.rotate)!==null&&_e!==undefined?_e:undefined,color:(_f=options.color)!==null&&_f!==undefined?_f:undefined,borderColor:(_g=options.borderColor)!==null&&_g!==undefined?_g:undefined,borderWidth:(_h=options.borderWidth)!==null&&_h!==undefined?_h:0,borderDashArray:(_j=options.borderDashArray)!==null&&_j!==undefined?_j:undefined,borderDashPhase:(_k=options.borderDashPhase)!==null&&_k!==undefined?_k:undefined,borderLineCap:(_l=options.borderLineCap)!==null&&_l!==undefined?_l:undefined,graphicsState:graphicsStateKey}))};PDFPage2.prototype.drawCircle=function(options){if(options===undefined){options={}}var _a=options.size,size=_a===undefined?100:_a;assertOrUndefined(size,"size",["number"]);this.drawEllipse(__assign(__assign({},options),{xScale:size,yScale:size}))};PDFPage2.prototype.setOrEmbedFont=function(font){var oldFont=this.font;var oldFontKey=this.fontKey;if(font)this.setFont(font);else this.getFont();var newFont=this.font;var newFontKey=this.fontKey;return{oldFont,oldFontKey,newFont,newFontKey}};PDFPage2.prototype.getFont=function(){if(!this.font||!this.fontKey){var font=this.doc.embedStandardFont(StandardFonts.Helvetica);this.setFont(font)}return[this.font,this.fontKey]};PDFPage2.prototype.resetFont=function(){this.font=undefined;this.fontKey=undefined};PDFPage2.prototype.getContentStream=function(useExisting){if(useExisting===undefined){useExisting=true}if(useExisting&&this.contentStream)return this.contentStream;this.contentStream=this.createContentStream();this.contentStreamRef=this.doc.context.register(this.contentStream);this.node.addContentStream(this.contentStreamRef);return this.contentStream};PDFPage2.prototype.createContentStream=function(){var operators=[];for(var _i=0;_i<arguments.length;_i++){operators[_i]=arguments[_i]}var dict=this.doc.context.obj({});var contentStream=PDFContentStream_default.of(dict,operators);return contentStream};PDFPage2.prototype.maybeEmbedGraphicsState=function(options){var{opacity,borderOpacity,blendMode}=options;if(opacity===undefined&&borderOpacity===undefined&&blendMode===undefined){return}var graphicsState=this.doc.context.obj({Type:"ExtGState",ca:opacity,CA:borderOpacity,BM:blendMode});var key=this.node.newExtGState("GS",graphicsState);return key};PDFPage2.prototype.scaleAnnot=function(annot,x,y){var selectors=["RD","CL","Vertices","QuadPoints","L","Rect"];for(var idx4=0,len3=selectors.length;idx4<len3;idx4++){var list=annot.lookup(PDFName_default.of(selectors[idx4]));if(list instanceof PDFArray_default)list.scalePDFNumbers(x,y)}var inkLists=annot.lookup(PDFName_default.of("InkList"));if(inkLists instanceof PDFArray_default){for(var idx4=0,len3=inkLists.size();idx4<len3;idx4++){var arr=inkLists.lookup(idx4);if(arr instanceof PDFArray_default)arr.scalePDFNumbers(x,y)}}};PDFPage2.of=function(leafNode,ref,doc){return new PDFPage2(leafNode,ref,doc)};PDFPage2.create=function(doc){assertIs(doc,"doc",[[PDFDocument_default,"PDFDocument"]]);var dummyRef=PDFRef_default.of(-1);var pageLeaf=PDFPageLeaf_default.withContextAndParent(doc.context,dummyRef);var pageRef=doc.context.register(pageLeaf);return new PDFPage2(pageLeaf,pageRef,doc)};return PDFPage2}();PDFPage_default=PDFPage});var PDFButton,PDFButton_default;var init_PDFButton=__esm(()=>{init_tslib_es62();init_PDFPage();init_PDFFont();init_alignment2();init_appearances();init_PDFField();init_colors();init_rotations();init_core();init_utils2();PDFButton=function(_super){__extends(PDFButton2,_super);function PDFButton2(acroPushButton,ref,doc){var _this=_super.call(this,acroPushButton,ref,doc)||this;assertIs(acroPushButton,"acroButton",[[PDFAcroPushButton_default,"PDFAcroPushButton"]]);_this.acroField=acroPushButton;return _this}PDFButton2.prototype.setImage=function(image,alignment2){if(alignment2===undefined){alignment2=ImageAlignment.Center}var widgets=this.acroField.getWidgets();for(var idx4=0,len3=widgets.length;idx4<len3;idx4++){var widget=widgets[idx4];var streamRef=this.createImageAppearanceStream(widget,image,alignment2);this.updateWidgetAppearances(widget,{normal:streamRef})}this.markAsClean()};PDFButton2.prototype.setFontSize=function(fontSize){assertPositive(fontSize,"fontSize");this.acroField.setFontSize(fontSize);this.markAsDirty()};PDFButton2.prototype.addToPage=function(text4,page,options){var _a,_b,_c,_d,_e,_f,_g,_h,_j,_k,_l;assertOrUndefined(text4,"text",["string"]);assertOrUndefined(page,"page",[[PDFPage_default,"PDFPage"]]);assertFieldAppearanceOptions(options);var widget=this.createWidget({x:((_a=options===null||options===undefined?undefined:options.x)!==null&&_a!==undefined?_a:0)-((_b=options===null||options===undefined?undefined:options.borderWidth)!==null&&_b!==undefined?_b:0)/2,y:((_c=options===null||options===undefined?undefined:options.y)!==null&&_c!==undefined?_c:0)-((_d=options===null||options===undefined?undefined:options.borderWidth)!==null&&_d!==undefined?_d:0)/2,width:(_e=options===null||options===undefined?undefined:options.width)!==null&&_e!==undefined?_e:100,height:(_f=options===null||options===undefined?undefined:options.height)!==null&&_f!==undefined?_f:50,textColor:(_g=options===null||options===undefined?undefined:options.textColor)!==null&&_g!==undefined?_g:rgb(0,0,0),backgroundColor:(_h=options===null||options===undefined?undefined:options.backgroundColor)!==null&&_h!==undefined?_h:rgb(0.75,0.75,0.75),borderColor:options===null||options===undefined?undefined:options.borderColor,borderWidth:(_j=options===null||options===undefined?undefined:options.borderWidth)!==null&&_j!==undefined?_j:0,rotate:(_k=options===null||options===undefined?undefined:options.rotate)!==null&&_k!==undefined?_k:degrees(0),caption:text4,hidden:options===null||options===undefined?undefined:options.hidden,page:page.ref});var widgetRef=this.doc.context.register(widget.dict);this.acroField.addWidget(widgetRef);var font=(_l=options===null||options===undefined?undefined:options.font)!==null&&_l!==undefined?_l:this.doc.getForm().getDefaultFont();this.updateWidgetAppearance(widget,font);page.node.addAnnot(widgetRef)};PDFButton2.prototype.needsAppearancesUpdate=function(){var _a;if(this.isDirty())return true;var widgets=this.acroField.getWidgets();for(var idx4=0,len3=widgets.length;idx4<len3;idx4++){var widget=widgets[idx4];var hasAppearances=((_a=widget.getAppearances())===null||_a===undefined?undefined:_a.normal)instanceof PDFStream_default;if(!hasAppearances)return true}return false};PDFButton2.prototype.defaultUpdateAppearances=function(font){assertIs(font,"font",[[PDFFont_default,"PDFFont"]]);this.updateAppearances(font)};PDFButton2.prototype.updateAppearances=function(font,provider2){assertIs(font,"font",[[PDFFont_default,"PDFFont"]]);assertOrUndefined(provider2,"provider",[Function]);var widgets=this.acroField.getWidgets();for(var idx4=0,len3=widgets.length;idx4<len3;idx4++){var widget=widgets[idx4];this.updateWidgetAppearance(widget,font,provider2)}};PDFButton2.prototype.updateWidgetAppearance=function(widget,font,provider2){var apProvider=provider2!==null&&provider2!==undefined?provider2:defaultButtonAppearanceProvider;var appearances=normalizeAppearance(apProvider(this,widget,font));this.updateWidgetAppearanceWithFont(widget,font,appearances)};PDFButton2.of=function(acroPushButton,ref,doc){return new PDFButton2(acroPushButton,ref,doc)};return PDFButton2}(PDFField_default);PDFButton_default=PDFButton});var init_form=__esm(()=>{init_PDFButton();init_PDFCheckBox();init_PDFDropdown();init_PDFField();init_PDFForm();init_PDFOptionList();init_PDFRadioGroup();init_PDFSignature();init_PDFTextField();init_appearances()});var init_text=__esm(()=>{init_alignment();init_layout()});var init_api=__esm(()=>{init_PDFDocument();init_PDFFont();init_PDFImage();init_PDFPage();init_PDFEmbeddedPage();init_PDFJavaScript();init_form();init_text();init_colors();init_errors3();init_image();init_objects2();init_operations();init_operators();init_rotations();init_sizes();init_PDFPageOptions();init_PDFDocumentOptions();init_StandardFonts()});var exports_es={};__export(exports_es,{waitForTick:()=>waitForTick,values:()=>values,utf8Encode:()=>utf8Encode,utf16Encode:()=>utf16Encode,utf16Decode:()=>utf16Decode,typedArrayFor:()=>typedArrayFor,translate:()=>translate,toUint8Array:()=>toUint8Array,toRadians:()=>toRadians,toHexStringOfMinLength:()=>toHexStringOfMinLength,toHexString:()=>toHexString,toDegrees:()=>toDegrees,toCodePoint:()=>toCodePoint,toCharCode:()=>toCharCode,sum:()=>sum,stroke:()=>stroke,square:()=>square,sortedUniq:()=>sortedUniq,skewRadians:()=>skewRadians,skewDegrees:()=>skewDegrees,sizeInBytes:()=>sizeInBytes,singleQuote:()=>singleQuote,showText:()=>showText,setWordSpacing:()=>setWordSpacing,setTextRise:()=>setTextRise,setTextRenderingMode:()=>setTextRenderingMode,setTextMatrix:()=>setTextMatrix,setStrokingRgbColor:()=>setStrokingRgbColor,setStrokingGrayscaleColor:()=>setStrokingGrayscaleColor,setStrokingColor:()=>setStrokingColor,setStrokingCmykColor:()=>setStrokingCmykColor,setLineWidth:()=>setLineWidth,setLineJoin:()=>setLineJoin,setLineHeight:()=>setLineHeight,setLineCap:()=>setLineCap,setGraphicsState:()=>setGraphicsState,setFontAndSize:()=>setFontAndSize,setFillingRgbColor:()=>setFillingRgbColor,setFillingGrayscaleColor:()=>setFillingGrayscaleColor,setFillingColor:()=>setFillingColor,setFillingCmykColor:()=>setFillingCmykColor,setDashPattern:()=>setDashPattern,setCharacterSqueeze:()=>setCharacterSqueeze,setCharacterSpacing:()=>setCharacterSpacing,scale:()=>scale,rotateRectangle:()=>rotateRectangle,rotateRadians:()=>rotateRadians,rotateInPlace:()=>rotateInPlace,rotateDegrees:()=>rotateDegrees,rotateAndSkewTextRadiansAndTranslate:()=>rotateAndSkewTextRadiansAndTranslate,rotateAndSkewTextDegreesAndTranslate:()=>rotateAndSkewTextDegreesAndTranslate,rgb:()=>rgb,reverseArray:()=>reverseArray,restoreDashPattern:()=>restoreDashPattern,reduceRotation:()=>reduceRotation,rectanglesAreEqual:()=>rectanglesAreEqual,rectangle:()=>rectangle,range:()=>range,radiansToDegrees:()=>radiansToDegrees,radians:()=>radians,pushGraphicsState:()=>pushGraphicsState,popGraphicsState:()=>popGraphicsState,pluckIndices:()=>pluckIndices,pdfDocEncodingDecode:()=>pdfDocEncodingDecode,parseDate:()=>parseDate,padStart:()=>padStart,numberToString:()=>numberToString,normalizeAppearance:()=>normalizeAppearance,nextLine:()=>nextLine,newlineChars:()=>newlineChars,moveTo:()=>moveTo,moveText:()=>moveText,mergeUint8Arrays:()=>mergeUint8Arrays,mergeLines:()=>mergeLines,mergeIntoTypedArray:()=>mergeIntoTypedArray,lowSurrogate:()=>lowSurrogate,lineTo:()=>lineTo,lineSplit:()=>lineSplit,layoutSinglelineText:()=>layoutSinglelineText,layoutMultilineText:()=>layoutMultilineText,layoutCombedText:()=>layoutCombedText,last:()=>last,isWithinBMP:()=>isWithinBMP,isType:()=>isType,isStandardFont:()=>isStandardFont,isNewlineChar:()=>isNewlineChar,highSurrogate:()=>highSurrogate,hasUtf16BOM:()=>hasUtf16BOM,hasSurrogates:()=>hasSurrogates,grayscale:()=>grayscale,getType:()=>getType,findLastMatch:()=>findLastMatch,fillAndStroke:()=>fillAndStroke,fill:()=>fill,escapedNewlineChars:()=>escapedNewlineChars,escapeRegExp:()=>escapeRegExp,error:()=>error,endText:()=>endText,endPath:()=>endPath,endMarkedContent:()=>endMarkedContent,encodeToBase64:()=>encodeToBase64,drawTextLines:()=>drawTextLines,drawTextField:()=>drawTextField,drawText:()=>drawText,drawSvgPath:()=>drawSvgPath,drawRectangle:()=>drawRectangle,drawRadioButton:()=>drawRadioButton,drawPage:()=>drawPage,drawOptionList:()=>drawOptionList,drawObject:()=>drawObject,drawLinesOfText:()=>drawLinesOfText,drawLine:()=>drawLine,drawImage:()=>drawImage,drawEllipsePath:()=>drawEllipsePath,drawEllipse:()=>drawEllipse,drawCheckMark:()=>drawCheckMark,drawCheckBox:()=>drawCheckBox,drawButton:()=>drawButton,degreesToRadians:()=>degreesToRadians,degrees:()=>degrees,defaultTextFieldAppearanceProvider:()=>defaultTextFieldAppearanceProvider,defaultRadioGroupAppearanceProvider:()=>defaultRadioGroupAppearanceProvider,defaultOptionListAppearanceProvider:()=>defaultOptionListAppearanceProvider,defaultDropdownAppearanceProvider:()=>defaultDropdownAppearanceProvider,defaultCheckBoxAppearanceProvider:()=>defaultCheckBoxAppearanceProvider,defaultButtonAppearanceProvider:()=>defaultButtonAppearanceProvider,decodePDFRawStream:()=>decodePDFRawStream,decodeFromBase64DataUri:()=>decodeFromBase64DataUri,decodeFromBase64:()=>decodeFromBase64,createValueErrorMsg:()=>createValueErrorMsg,createTypeErrorMsg:()=>createTypeErrorMsg,createPDFAcroFields:()=>createPDFAcroFields,createPDFAcroField:()=>createPDFAcroField,copyStringIntoBuffer:()=>copyStringIntoBuffer,concatTransformationMatrix:()=>concatTransformationMatrix,componentsToColor:()=>componentsToColor,colorToComponents:()=>colorToComponents,cmyk:()=>cmyk,closePath:()=>closePath,clipEvenOdd:()=>clipEvenOdd,clip:()=>clip,cleanText:()=>cleanText,charSplit:()=>charSplit,charFromHexCode:()=>charFromHexCode,charFromCode:()=>charFromCode,charAtIndex:()=>charAtIndex,canBeConvertedToUint8Array:()=>canBeConvertedToUint8Array,bytesFor:()=>bytesFor,byAscendingId:()=>byAscendingId,breakTextIntoLines:()=>breakTextIntoLines,beginText:()=>beginText,beginMarkedContent:()=>beginMarkedContent,backtick:()=>backtick,assertRangeOrUndefined:()=>assertRangeOrUndefined,assertRange:()=>assertRange,assertPositive:()=>assertPositive,assertOrUndefined:()=>assertOrUndefined,assertMultiple:()=>assertMultiple,assertIsSubset:()=>assertIsSubset,assertIsOneOfOrUndefined:()=>assertIsOneOfOrUndefined,assertIsOneOf:()=>assertIsOneOf,assertIs:()=>assertIs,assertInteger:()=>assertInteger,assertEachIs:()=>assertEachIs,asPDFNumber:()=>asPDFNumber,asPDFName:()=>asPDFName,asNumber:()=>asNumber,arrayAsString:()=>arrayAsString,appendQuadraticCurve:()=>appendQuadraticCurve,appendBezierCurve:()=>appendBezierCurve,adjustDimsForRotation:()=>adjustDimsForRotation,addRandomSuffix:()=>addRandomSuffix,ViewerPreferences:()=>ViewerPreferences_default,UnsupportedEncodingError:()=>UnsupportedEncodingError,UnrecognizedStreamTypeError:()=>UnrecognizedStreamTypeError,UnexpectedObjectTypeError:()=>UnexpectedObjectTypeError,UnexpectedFieldTypeError:()=>UnexpectedFieldTypeError,UnbalancedParenthesisError:()=>UnbalancedParenthesisError,TextRenderingMode:()=>TextRenderingMode,TextAlignment:()=>TextAlignment,StandardFonts:()=>StandardFonts,StandardFontValues:()=>StandardFontValues,StandardFontEmbedder:()=>StandardFontEmbedder_default,StalledParserError:()=>StalledParserError,RotationTypes:()=>RotationTypes,RichTextFieldReadError:()=>RichTextFieldReadError,ReparseError:()=>ReparseError,RemovePageFromEmptyDocumentError:()=>RemovePageFromEmptyDocumentError,ReadingDirection:()=>ReadingDirection,PrivateConstructorError:()=>PrivateConstructorError,PrintScaling:()=>PrintScaling,PngEmbedder:()=>PngEmbedder_default,ParseSpeeds:()=>ParseSpeeds,PageSizes:()=>PageSizes,PageEmbeddingMismatchedContextError:()=>PageEmbeddingMismatchedContextError,PDFXRefStreamParser:()=>PDFXRefStreamParser_default,PDFWriter:()=>PDFWriter_default,PDFWidgetAnnotation:()=>PDFWidgetAnnotation_default,PDFTrailerDict:()=>PDFTrailerDict_default,PDFTrailer:()=>PDFTrailer_default,PDFTextField:()=>PDFTextField_default,PDFString:()=>PDFString_default,PDFStreamWriter:()=>PDFStreamWriter_default,PDFStreamParsingError:()=>PDFStreamParsingError,PDFStream:()=>PDFStream_default,PDFSignature:()=>PDFSignature_default,PDFRef:()=>PDFRef_default,PDFRawStream:()=>PDFRawStream_default,PDFRadioGroup:()=>PDFRadioGroup_default,PDFParsingError:()=>PDFParsingError,PDFParser:()=>PDFParser_default,PDFPageTree:()=>PDFPageTree_default,PDFPageLeaf:()=>PDFPageLeaf_default,PDFPageEmbedder:()=>PDFPageEmbedder_default,PDFPage:()=>PDFPage_default,PDFOptionList:()=>PDFOptionList_default,PDFOperatorNames:()=>PDFOperatorNames_default,PDFOperator:()=>PDFOperator_default,PDFObjectStreamParser:()=>PDFObjectStreamParser_default,PDFObjectStream:()=>PDFObjectStream_default,PDFObjectParsingError:()=>PDFObjectParsingError,PDFObjectParser:()=>PDFObjectParser_default,PDFObjectCopier:()=>PDFObjectCopier_default,PDFObject:()=>PDFObject_default,PDFNumber:()=>PDFNumber_default,PDFNull:()=>PDFNull_default,PDFName:()=>PDFName_default,PDFJavaScript:()=>PDFJavaScript_default,PDFInvalidObjectParsingError:()=>PDFInvalidObjectParsingError,PDFInvalidObject:()=>PDFInvalidObject_default,PDFImage:()=>PDFImage_default,PDFHexString:()=>PDFHexString_default,PDFHeader:()=>PDFHeader_default,PDFForm:()=>PDFForm_default,PDFFont:()=>PDFFont_default,PDFFlateStream:()=>PDFFlateStream_default,PDFField:()=>PDFField_default,PDFEmbeddedPage:()=>PDFEmbeddedPage_default,PDFDropdown:()=>PDFDropdown_default,PDFDocument:()=>PDFDocument_default,PDFDict:()=>PDFDict_default,PDFCrossRefStream:()=>PDFCrossRefStream_default,PDFCrossRefSection:()=>PDFCrossRefSection_default,PDFContext:()=>PDFContext_default,PDFContentStream:()=>PDFContentStream_default,PDFCheckBox:()=>PDFCheckBox_default,PDFCatalog:()=>PDFCatalog_default,PDFButton:()=>PDFButton_default,PDFBool:()=>PDFBool_default,PDFArrayIsNotRectangleError:()=>PDFArrayIsNotRectangleError,PDFArray:()=>PDFArray_default,PDFAnnotation:()=>PDFAnnotation_default,PDFAcroText:()=>PDFAcroText_default,PDFAcroTerminal:()=>PDFAcroTerminal_default,PDFAcroSignature:()=>PDFAcroSignature_default,PDFAcroRadioButton:()=>PDFAcroRadioButton_default,PDFAcroPushButton:()=>PDFAcroPushButton_default,PDFAcroNonTerminal:()=>PDFAcroNonTerminal_default,PDFAcroListBox:()=>PDFAcroListBox_default,PDFAcroForm:()=>PDFAcroForm_default,PDFAcroField:()=>PDFAcroField_default,PDFAcroComboBox:()=>PDFAcroComboBox_default,PDFAcroChoice:()=>PDFAcroChoice_default,PDFAcroCheckBox:()=>PDFAcroCheckBox_default,PDFAcroButton:()=>PDFAcroButton_default,NumberParsingError:()=>NumberParsingError,NonFullScreenPageMode:()=>NonFullScreenPageMode,NoSuchFieldError:()=>NoSuchFieldError,NextByteAssertionError:()=>NextByteAssertionError,MultiSelectValueError:()=>MultiSelectValueError,MissingTfOperatorError:()=>MissingTfOperatorError,MissingPageContentsEmbeddingError:()=>MissingPageContentsEmbeddingError,MissingPDFHeaderError:()=>MissingPDFHeaderError,MissingOnValueCheckError:()=>MissingOnValueCheckError,MissingKeywordError:()=>MissingKeywordError,MissingDAEntryError:()=>MissingDAEntryError,MissingCatalogError:()=>MissingCatalogError,MethodNotImplementedError:()=>MethodNotImplementedError,LineJoinStyle:()=>LineJoinStyle,LineCapStyle:()=>LineCapStyle,JpegEmbedder:()=>JpegEmbedder_default,InvalidTargetIndexError:()=>InvalidTargetIndexError,InvalidPDFDateStringError:()=>InvalidPDFDateStringError,InvalidMaxLengthError:()=>InvalidMaxLengthError,InvalidFieldNamePartError:()=>InvalidFieldNamePartError,InvalidAcroFieldValueError:()=>InvalidAcroFieldValueError,IndexOutOfBoundsError:()=>IndexOutOfBoundsError,ImageAlignment:()=>ImageAlignment,ForeignPageError:()=>ForeignPageError,FontkitNotRegisteredError:()=>FontkitNotRegisteredError,FileEmbedder:()=>FileEmbedder_default,FieldExistsAsNonTerminalError:()=>FieldExistsAsNonTerminalError,FieldAlreadyExistsError:()=>FieldAlreadyExistsError,ExceededMaxLengthError:()=>ExceededMaxLengthError,EncryptedPDFError:()=>EncryptedPDFError,Duplex:()=>Duplex,CustomFontSubsetEmbedder:()=>CustomFontSubsetEmbedder_default,CustomFontEmbedder:()=>CustomFontEmbedder_default,CorruptPageTreeError:()=>CorruptPageTreeError,CombedTextLayoutError:()=>CombedTextLayoutError,ColorTypes:()=>ColorTypes,CharCodes:()=>CharCodes_default,Cache:()=>Cache_default,BlendMode:()=>BlendMode,AppearanceCharacteristics:()=>AppearanceCharacteristics_default,AnnotationFlags:()=>AnnotationFlags,AcroTextFlags:()=>AcroTextFlags,AcroFieldFlags:()=>AcroFieldFlags,AcroChoiceFlags:()=>AcroChoiceFlags,AcroButtonFlags:()=>AcroButtonFlags,AFRelationship:()=>AFRelationship});var init_es2=__esm(()=>{init_api();init_core();init_utils2()});function validateFileAddOptions(value){const v=serializable(value);if(!v||typeof v!=="object"||Array.isArray(v)||Object.keys(v).some((k)=>!["path","name","csv"].includes(k))||typeof v.path!=="string"||!v.path||v.path!==v.path.trim()||/[\\\x00-\x1f]/.test(v.path)||v.path.split("/").some((part)=>!part||part==="."||part==="..")||/^[A-Za-z]:/.test(v.path))throw new InboxContractError("File path must be relative to the configured working root");if(v.name!==undefined&&(typeof v.name!=="string"||!v.name||v.name!==v.name.trim()||v.name.length>255||/[\x00-\x1f\x7f/\\]/.test(v.name)))throw new InboxContractError("File name must be a safe filename");if(v.csv!==undefined)validateCsvHints(v.csv);return v}function validateCsvHints(value){const v=serializable(value);if(!v||typeof v!=="object"||Array.isArray(v)||Object.keys(v).some((k)=>!["encoding","delimiter","headerRow"].includes(k))||v.encoding!==undefined&&!["utf-8","windows-1252"].includes(v.encoding)||v.delimiter!==undefined&&![",",";","\t"].includes(v.delimiter)||v.headerRow!==undefined&&(!Number.isSafeInteger(v.headerRow)||v.headerRow<0))throw new InboxContractError("Invalid CSV parsing hints");return v}function csvRows(bytes,details){let decoded;try{decoded=new TextDecoder(details.encoding,{fatal:true}).decode(bytes)}catch{throw new InboxContractError("CSV does not match its encoding")}if(/[\x00-\x08\x0b\x0c\x0e-\x1f]/.test(decoded))throw new InboxContractError("CSV contains binary bytes");let rows;try{rows=parseDelimitedText(decoded,details.delimiter)}catch{throw new InboxContractError("CSV contains malformed quoted fields")}if(details.headerRow>=rows.length||rows[details.headerRow].every((cell)=>!cell.trim())||delimitedDataRowCount(rows,details.headerRow)!==details.dataRows||rows.slice(details.headerRow+1).some((row)=>row.length!==rows[details.headerRow].length))throw new InboxContractError("CSV header, column shape or row count differs from bytes");return rows}async function pdfDetails(bytes){if(!/^%PDF-(1\.[0-7]|2\.0)[\r\n]/.test(new TextDecoder().decode(bytes.slice(0,16)))||!/%%EOF\s*$/.test(new TextDecoder().decode(bytes.slice(-1024))))throw new InboxContractError("PDF signature or end marker is missing");try{const{PDFDocument:PDFDocument2}=await Promise.resolve().then(() => (init_es2(),exports_es));const pdf=await PDFDocument2.load(bytes,{updateMetadata:false,throwOnInvalidObject:true});const pages=pdf.getPages();if(!pages.length||pages.some((page)=>!Number.isFinite(page.getWidth())||!Number.isFinite(page.getHeight())||page.getWidth()<=0||page.getHeight()<=0))throw new Error("Invalid page tree");return{kind:"pdf",pages:pages.length}}catch{throw new InboxContractError("PDF bytes could not be verified")}}async function deriveInboxFile(bytes,name,csv){if(bytes.length>26214400)throw new InboxContractError("File exceeds supported size");let details={kind:"other"},mediaType="application/octet-stream";const isPdf=new TextDecoder().decode(bytes.slice(0,5))==="%PDF-";if(isPdf){if(csv)throw new InboxContractError("CSV hints do not match PDF bytes");try{details=await pdfDetails(bytes);mediaType="application/pdf"}catch{}}else if(csv||/\.csv$/i.test(name)){const hints=csv===undefined?{}:validateCsvHints(csv);let encoding=hints.encoding;if(!encoding){try{new TextDecoder("utf-8",{fatal:true}).decode(bytes);encoding="utf-8"}catch{encoding="windows-1252"}}const decoded=new TextDecoder(encoding,{fatal:true}).decode(bytes),headerRow=hints.headerRow??0;const delimiters=hints.delimiter?[hints.delimiter]:[",",";","\t"];const candidates=delimiters.flatMap((delimiter)=>{try{const rows=parseDelimitedText(decoded,delimiter);const d={kind:"csv",encoding,delimiter,headerRow,dataRows:delimitedDataRowCount(rows,headerRow)};csvRows(bytes,d);return[{details:d,width:rows[headerRow].length}]}catch{return[]}}).sort((a,b)=>b.width-a.width);if(!candidates.length||!csv&&candidates[0].width<2){if(csv)throw new InboxContractError("CSV hints do not match file bytes")}else{details=candidates[0].details;mediaType="text/csv"}}const sha2562=[...new Uint8Array(await crypto.subtle.digest("SHA-256",Uint8Array.from(bytes)))].map((n)=>n.toString(16).padStart(2,"0")).join("");const{id:_id,...file2}=validateInboxFile({id:crypto.randomUUID(),name,mediaType,size:bytes.length,sha256:sha2562,details});return file2}async function verifyInboxFile(bytes,value){const file2=validateInboxFile(value);const derived=await deriveInboxFile(bytes,file2.name,file2.details.kind==="csv"?{encoding:file2.details.encoding,delimiter:file2.details.delimiter,headerRow:file2.details.headerRow}:undefined);const expectedDetails=file2.details.kind==="pdf"&&file2.details.pages===undefined&&derived.details.kind==="pdf"?{kind:"pdf"}:derived.details;if(file2.sha256!==derived.sha256||file2.size!==derived.size||file2.mediaType!==derived.mediaType||JSON.stringify(file2.details)!==JSON.stringify(expectedDetails))throw new InboxContractError("Retained file integrity or type metadata changed");return file2}var init_inbox_files=__esm(()=>{init_inbox_contract()});var exports_inbox_publication_file={};__export(exports_inbox_publication_file,{readInboxPublicationFile:()=>readInboxPublicationFile});async function readInboxPublicationFile(checkout,options){const{readFile,realpath}=await import("node:fs/promises");const{isAbsolute,relative,resolve,sep}=await import("node:path");const{path}=validateFileAddOptions(options);const root=await realpath(checkout),file2=await realpath(resolve(root,path));const rel=relative(root,file2);if(rel===".."||rel.startsWith(`..${sep}`)||isAbsolute(rel))throw new Error("Inbox file escapes working root");return new Uint8Array(await readFile(file2))}var init_inbox_publication_file=__esm(()=>{init_inbox_files()});init_inbox_contract();var REPOSITORY=/^[a-z0-9][a-z0-9._/-]{0,127}$/;function validRepositoryAlias(value){return typeof value==="string"&&REPOSITORY.test(value)&&!value.includes("//")&&!value.includes("..")}var RECORD_READ_INPUT_LIMIT=1024*1024;var RECORD_CAPTURE_OUTPUT_LIMIT=25*1024*1024;function validRecordRef(value){return typeof value==="string"&&value.length<=512&&/^[_a-zA-Z0-9][a-zA-Z0-9_-]*(\/[_a-zA-Z0-9][a-zA-Z0-9_-]*)+$/.test(value)}function validateRecordRead(value){if(!value||typeof value!=="object"||Array.isArray(value))throw new InboxContractError("Invalid selected-record read");const input=value;if(Object.keys(input).some((key)=>!["repository","refs","atCommit"].includes(key))||!validRepositoryAlias(input.repository)||!Array.isArray(input.refs)||!input.refs.length||input.refs.length>1e4||input.refs.some((ref)=>!validRecordRef(ref))||new Set(input.refs).size!==input.refs.length||input.atCommit!==undefined&&(typeof input.atCommit!=="string"||!/^[0-9a-f]{40}$/.test(input.atCommit)))throw new InboxContractError("Invalid selected-record read");return{repository:input.repository,refs:[...input.refs],...input.atCommit===undefined?{}:{atCommit:input.atCommit}}}class FileOperationError extends Error{code;status;retryable;constructor(code,status,retryable=false){super(code);this.code=code;this.status=status;this.retryable=retryable}}var FILE_ID_PATTERN=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;var FILE_ORIGINAL_MAX_BYTES=5*1024**3;function parseFileDescriptor(value){const invalid=()=>{throw new FileOperationError("unavailable",503,true)};if(!value||typeof value!=="object"||Array.isArray(value))return invalid();const f=value;if(Object.keys(f).sort().join(",")!=="details,enrichments,id,mediaType,name,path,sha256,size"||typeof f.id!=="string"||!FILE_ID_PATTERN.test(f.id)||!safeFileName(f.name)||!safeFilePath(f.path)||!Number.isSafeInteger(f.size)||f.size<0||f.size>FILE_ORIGINAL_MAX_BYTES||typeof f.sha256!=="string"||!/^[0-9a-f]{64}$/.test(f.sha256)||!f.enrichments||typeof f.enrichments!=="object"||Array.isArray(f.enrichments)||!f.details||typeof f.details!=="object"||Array.isArray(f.details))return invalid();const d=f.details;if(d.kind==="other"){if(Object.keys(d).length!==1||f.mediaType!=="application/octet-stream")return invalid()}else if(d.kind==="csv"){if(Object.keys(d).sort().join(",")!=="dataRows,delimiter,encoding,headerRow,kind"||f.mediaType!=="text/csv"||!["utf-8","windows-1252"].includes(d.encoding)||![",",";","\t"].includes(d.delimiter)||!Number.isSafeInteger(d.headerRow)||d.headerRow<1||!Number.isSafeInteger(d.dataRows)||d.dataRows<0)return invalid()}else if(d.kind==="pdf"){if(f.mediaType!=="application/pdf"||Object.keys(d).some((key)=>!["kind","pages"].includes(key))||"pages"in d&&(!Number.isSafeInteger(d.pages)||d.pages<1))return invalid()}else return invalid();for(const[name,descriptor]of Object.entries(f.enrichments)){if(!safeEnrichmentName(name))return invalid();parseEnrichmentDescriptor(descriptor)}if(new TextEncoder().encode(JSON.stringify(f)).byteLength>16*1024)return invalid();return f}function parseEnrichmentDescriptor(value){const invalid=()=>{throw new FileOperationError("unavailable",503,true)};if(!value||typeof value!=="object"||Array.isArray(value))return invalid();const d=value;if(Object.keys(d).sort().join(",")!=="mediaType,sha256,size"||!["application/octet-stream","text/plain","text/markdown","application/json"].includes(d.mediaType)||!Number.isSafeInteger(d.size)||d.size<0||d.size>16*1024*1024||typeof d.sha256!=="string"||!/^[0-9a-f]{64}$/.test(d.sha256))return invalid();return d}function safeEnrichmentName(value){return safeFileName(value)&&!/^original(?:\.|$)/i.test(value)}function parseFileEnrichMetadata(value,maxBytes){const invalid=()=>{throw new FileOperationError("invalid_input",400)};if(!value||typeof value!=="object"||Array.isArray(value))return invalid();const d=value;if(Object.keys(d).some((key)=>!["name","size","mediaType","replace"].includes(key))||!safeEnrichmentName(d.name)||!Number.isSafeInteger(d.size)||d.size<0||d.mediaType!==undefined&&(typeof d.mediaType!=="string"||d.mediaType.length>255||/[\u0000-\u001f\u007f]/.test(d.mediaType))||d.replace!==undefined&&(typeof d.replace!=="string"||!/^[0-9a-f]{64}$/.test(d.replace)))return invalid();if(d.size>maxBytes)throw new FileOperationError("request_too_large",413);return d}function safeFileName(value){return typeof value==="string"&&value.length>0&&value.length<=255&&value===value.trim()&&value!=="."&&value!==".."&&!/[\u0000-\u001f\u007f-\u009f/\\:*?"<>|]/u.test(value)&&!/[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/.test(value)&&!/[. ]$/.test(value)&&!/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)/i.test(value)}function safeFilePath(value){return typeof value==="string"&&value.length<=1024&&value.split("/").every(safeFileName)}function parseFileCreateMetadata(value,maxBytes){const invalid=()=>{throw new FileOperationError("invalid_input",400)};if(!value||typeof value!=="object"||Array.isArray(value))return invalid();const input=value;if(Object.keys(input).some((key)=>!["name","path","storage","csv","inputMediaType","size","requestKey"].includes(key)))return invalid();const path=input.path===undefined?"Files":input.path;if(!safeFileName(input.name)||!safeFilePath(path)||path.split("/")[0].toLowerCase()===".os")return invalid();if(input.storage!==undefined&&input.storage!=="remote"&&input.storage!=="local")return invalid();if(input.inputMediaType!==undefined&&input.inputMediaType!=="application/pdf")return invalid();if(!Number.isSafeInteger(input.size)||input.size<0)return invalid();if(input.size>maxBytes)throw new FileOperationError("request_too_large",413);if(typeof input.requestKey!=="string"||input.requestKey.length<1||input.requestKey.length>256||input.requestKey!==input.requestKey.trim()||/[\u0000-\u001f\u007f]/.test(input.requestKey))return invalid();let csv;if(input.csv!==undefined){if(!input.csv||typeof input.csv!=="object"||Array.isArray(input.csv))return invalid();const hints=input.csv;if(Object.keys(hints).some((key)=>!["encoding","delimiter","headerRow"].includes(key)))return invalid();const encoding=hints.encoding===undefined?"utf-8":hints.encoding;const delimiter=hints.delimiter===undefined?",":hints.delimiter;const headerRow=hints.headerRow===undefined?1:hints.headerRow;if(encoding!=="utf-8"&&encoding!=="windows-1252"||![",",";","\t"].includes(delimiter)||!Number.isSafeInteger(headerRow)||headerRow<1||headerRow>1e5)return invalid();csv={encoding,delimiter,headerRow}}return{name:input.name,path,...input.storage?{storage:input.storage}:{},...input.inputMediaType==="application/pdf"?{inputMediaType:input.inputMediaType}:{},...csv?{csv}:{},size:input.size,requestKey:input.requestKey}}class AppRoutineContractError extends Error{code;constructor(code){super(code);this.code=code}}var propertyName=/^[a-z][A-Za-z0-9]*(?![\s\S])/;var stepId=/^[a-z0-9]+(?:-[a-z0-9]+)*(?![\s\S])/;var routineName=/^[a-z0-9][a-z0-9-]{0,62}(?![\s\S])/;var owns=(value,key)=>Object.hasOwn(value,key);var invalidContract=()=>{throw new AppRoutineContractError("invalid_contract")};var invalidValue=()=>{throw new AppRoutineContractError("invalid_value")};function record(value){return value!==null&&typeof value==="object"&&!Array.isArray(value)&&(Object.getPrototypeOf(value)===Object.prototype||Object.getPrototypeOf(value)===null)}function fields2(value,required,optional=[]){return required.every((key)=>owns(value,key))&&Object.keys(value).every((key)=>required.includes(key)||optional.includes(key))}function denseArray(value){return Array.isArray(value)&&Object.keys(value).length===value.length&&Array.from({length:value.length},(_,index)=>owns(value,String(index))).every(Boolean)}function parseAppRoutineContract(value){let properties=0;function schema(value2,depth=1){if(depth>8||!record(value2))return invalidContract();switch(value2.type){case"object":{if(!fields2(value2,["type","properties","additionalProperties"],["required"])||value2.additionalProperties!==false||!record(value2.properties))return invalidContract();const entries=Object.entries(value2.properties);properties+=entries.length;if(properties>64||entries.some(([key])=>!propertyName.test(key)))return invalidContract();let required;if(owns(value2,"required")){if(!denseArray(value2.required)||value2.required.some((key)=>typeof key!=="string"||!owns(value2.properties,key))||new Set(value2.required).size!==value2.required.length)return invalidContract();required=[...value2.required]}return{type:"object",properties:Object.fromEntries(entries.map(([key,child])=>[key,schema(child,depth+1)])),...required===undefined?{}:{required},additionalProperties:false}}case"array":if(!fields2(value2,["type","items","maxItems"])||!Number.isSafeInteger(value2.maxItems)||value2.maxItems<1||value2.maxItems>64)return invalidContract();return{type:"array",items:schema(value2.items,depth+1),maxItems:value2.maxItems};case"boolean":case"file":if(!fields2(value2,["type"]))return invalidContract();return{type:value2.type};case"string":if(!fields2(value2,["type"],["maxLength"])||owns(value2,"maxLength")&&(!Number.isSafeInteger(value2.maxLength)||value2.maxLength<0||value2.maxLength>4096))return invalidContract();return{type:"string",...owns(value2,"maxLength")?{maxLength:value2.maxLength}:{}};case"integer":case"number":{const validNumber=value2.type==="integer"?Number.isSafeInteger:Number.isFinite;if(!fields2(value2,["type"],["minimum","maximum"])||owns(value2,"minimum")&&!validNumber(value2.minimum)||owns(value2,"maximum")&&!validNumber(value2.maximum)||owns(value2,"minimum")&&owns(value2,"maximum")&&value2.minimum>value2.maximum)return invalidContract();return{type:value2.type,...owns(value2,"minimum")?{minimum:value2.minimum}:{},...owns(value2,"maximum")?{maximum:value2.maximum}:{}}}default:return invalidContract()}}if(!record(value)||!fields2(value,["routine","input","steps"],["result"])||typeof value.routine!=="string"||!routineName.test(value.routine)||!denseArray(value.steps)||value.steps.length<1||value.steps.length>64)return invalidContract();const input=schema(value.input);const result=owns(value,"result")?schema(value.result):undefined;const ids=new Set;const steps=value.steps.map((step)=>{if(!record(step)||!fields2(step,["id"],["summary"])||typeof step.id!=="string"||!stepId.test(step.id)||ids.has(step.id))return invalidContract();ids.add(step.id);return{id:step.id,...owns(step,"summary")?{summary:schema(step.summary)}:{}}});return{routine:value.routine,input,steps,...result===undefined?{}:{result}}}function jsonData(value,ancestors=new Set){if(value===null||typeof value==="string"||typeof value==="boolean"||typeof value==="number"&&Number.isFinite(value))return;if(!record(value)&&!denseArray(value))return invalidValue();if(ancestors.has(value))return invalidValue();ancestors.add(value);for(const child of Object.values(value))jsonData(child,ancestors);ancestors.delete(value)}function validateRoutineSchemaValue(schema,value){switch(schema.type){case"object":if(!record(value)||(schema.required??[]).some((key)=>!owns(value,key))||Object.keys(value).some((key)=>!owns(schema.properties,key)))return invalidValue();for(const[key,child]of Object.entries(value))validateRoutineSchemaValue(schema.properties[key],child);return;case"array":if(!denseArray(value)||value.length>schema.maxItems)return invalidValue();for(const child of value)validateRoutineSchemaValue(schema.items,child);return;case"boolean":if(typeof value!=="boolean")return invalidValue();return;case"string":if(typeof value!=="string"||Array.from(value).length>(schema.maxLength??4096))return invalidValue();return;case"integer":case"number":if(typeof value!=="number"||!(schema.type==="integer"?Number.isSafeInteger(value):Number.isFinite(value))||schema.minimum!==undefined&&value<schema.minimum||schema.maximum!==undefined&&value>schema.maximum)return invalidValue();return;case"file":try{jsonData(value);parseFileDescriptor(value)}catch{return invalidValue()}}}function boundedValue(schema,value){validateRoutineSchemaValue(schema,value);if(new TextEncoder().encode(JSON.stringify(value)).byteLength>16*1024)return invalidValue()}function validateAppRoutineInput(contract,value){boundedValue(contract.input,value)}function validateAppRoutineResult(contract,value){if(contract.result===undefined){if(value!==undefined)return invalidValue()}else boundedValue(contract.result,value)}function validateAppRoutineStep(contract,id2,summary){const step=contract.steps.find((step2)=>step2.id===id2);if(!step)return invalidValue();if(step.summary===undefined){if(summary!==undefined)return invalidValue()}else validateRoutineSchemaValue(step.summary,summary)}var LIMIT=256*1024;var invalid=()=>{throw new AppRoutineContractError("invalid_value")};var invalidContract2=()=>{throw new AppRoutineContractError("invalid_contract")};var empty={type:"object",properties:{},required:[],additionalProperties:false};function freeze(value){if(value!==null&&typeof value==="object"){for(const child of Object.values(value))freeze(child);Object.freeze(value)}return value}function json(value,ancestors=new Set){if(value===null||typeof value==="string"||typeof value==="boolean"||typeof value==="number"&&Number.isFinite(value))return;if(!value||typeof value!=="object"||ancestors.has(value))return invalid();const array2=Array.isArray(value);if(!array2&&Object.getPrototypeOf(value)!==Object.prototype&&Object.getPrototypeOf(value)!==null)return invalid();const keys2=Reflect.ownKeys(value);if(array2&&(keys2.length!==value.length+1||!Array.from({length:value.length},(_,index)=>Object.hasOwn(value,index)).every(Boolean)))return invalid();ancestors.add(value);for(const key of keys2){if(array2&&key==="length")continue;if(typeof key!=="string")return invalid();const descriptor=Object.getOwnPropertyDescriptor(value,key);if(!descriptor.enumerable||!Object.hasOwn(descriptor,"value"))return invalid();json(descriptor.value,ancestors)}ancestors.delete(value)}function capture(schema,value){json(value);validateRoutineSchemaValue(schema,value);const encoded=JSON.stringify(value);if(new TextEncoder().encode(encoded).byteLength>LIMIT)return invalid();return freeze(JSON.parse(encoded))}function declaration(value){try{json(value)}catch{return invalidContract2()}return freeze(parseAppRoutineContract({routine:"definition",input:value,steps:[{id:"inspect"}]}).input)}var schema={object(properties){return declaration({type:"object",properties,required:Object.keys(properties),additionalProperties:false})},array(items,options){return declaration({type:"array",items,maxItems:options.maxItems})},string(options={}){return declaration({type:"string",...options})},integer(options={}){return declaration({type:"integer",...options})},number(options={}){return declaration({type:"number",...options})},boolean(){return declaration({type:"boolean"})}};var file=()=>declaration({type:"file"});var definitions=new WeakMap;var defineRoutine=(definition)=>{if(!definition||typeof definition!=="object"||Object.getPrototypeOf(definition)!==Object.prototype||Reflect.ownKeys(definition).some((key)=>typeof key!=="string"||!["input","steps","result","run"].includes(key)||!Object.getOwnPropertyDescriptor(definition,key).enumerable||!Object.hasOwn(Object.getOwnPropertyDescriptor(definition,key),"value"))||typeof definition.run!=="function")return invalidContract2();try{for(const key of["input","steps","result"]){if(definition[key]!==undefined)json(definition[key])}}catch{return invalidContract2()}if(definition.steps!==undefined&&(!definition.steps||typeof definition.steps!=="object"||Array.isArray(definition.steps)))return invalidContract2();const steps=definition.steps===undefined?[]:Object.entries(definition.steps).map(([id2,summary])=>({id:id2,...summary===null?{}:{summary}}));const parsed=parseAppRoutineContract({routine:"definition",input:definition.input===undefined?empty:definition.input,steps:steps.length?steps:[{id:"inspect"}],...definition.result===undefined?{}:{result:definition.result}});const contract=freeze({input:parsed.input,steps:steps.length?parsed.steps:[],...parsed.result===undefined?{}:{result:parsed.result}});const captured=Object.freeze({...definition,...definition.input===undefined?{}:{input:contract.input},...definition.steps===undefined?{}:{steps:freeze(Object.fromEntries(contract.steps.map((step)=>[step.id,step.summary??null])))},...definition.result===undefined?{}:{result:contract.result},run:(input,os)=>executeRoutineDefinition(captured,input,os)});definitions.set(captured,{contract,run:definition.run});return captured};function inspectRoutineDefinition(definition){if(!definition||typeof definition!=="object")return invalidContract2();const registered=definitions.get(definition);if(!registered)return invalidContract2();return registered.contract}function captureRoutineInput(definition,input){return capture(inspectRoutineDefinition(definition).input,input)}async function executeRoutineDefinition(definition,input,runtime){const captured=captureRoutineInput(definition,input);const{contract,run}=definitions.get(definition);let active=true,broken=false;let reports=Promise.resolve();const os=Object.freeze({...runtime,run:freeze({...runtime.run}),async artifact(input2){if(!active)throw new Error("Run authority ended");if(!runtime.artifact)throw new Error("Run artifact transport unavailable");return runtime.artifact(input2)},step(id2,...summary){if(!active||broken||summary.length>1){broken=true;return Promise.reject(new AppRoutineContractError("invalid_value"))}let value;try{const step=contract.steps.find((step2)=>step2.id===id2);if(!step)return invalid();if(step.summary===undefined){if(summary.length)return invalid()}else value=capture(step.summary,summary[0])}catch(error){broken=true;return Promise.reject(error)}const report=reports.then(()=>{if(broken)return invalid();return runtime.step(id2,value)});reports=report.catch(()=>{broken=true});return report}});try{const result=await run(captured,os);active=false;await reports;if(broken)return invalid();if(contract.result!==undefined)return capture(contract.result,result);if(result!==undefined)return invalid();return}finally{active=false}}class DataOperationError extends Error{code;retryable;effect;component;constructor(code,retryable=false,effect,component){super(`Data operation failed: ${code}`);this.code=code;this.retryable=retryable;this.effect=effect;this.component=component;this.name="DataOperationError"}}var invalid2=()=>{throw new DataOperationError("invalid_query")};var historyText=(value)=>typeof value==="string"&&!/[\u0000\uD800-\uDFFF]/u.test(value);function historyVersion(value){return historyText(value)&&value.length>0&&new TextEncoder().encode(value).length<=1024&&!/[\u0000-\u001f\u007f-\u009f]/.test(value)&&!/^[0-9a-f]{40}$/i.test(value)}function historyProperties(value){if(!value||typeof value!=="object"||Array.isArray(value)||![Object.prototype,null].includes(Object.getPrototypeOf(value)))return invalid2();const descriptors=Object.getOwnPropertyDescriptors(value);if(Reflect.ownKeys(value).some((key)=>typeof key!=="string"||!descriptors[key]?.enumerable||!Object.hasOwn(descriptors[key],"value")))return invalid2();return descriptors}var historyCollection=(value)=>typeof value==="string"&&value.length<=512&&/^[_a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(value);var historyCursor=(value)=>typeof value==="string"&&value.length<=128*1024&&/^history-cursor-v1\.[A-Za-z0-9_-]{1,64}\.[A-Za-z0-9_-]{16}\.[A-Za-z0-9_-]+$/.test(value);function historyArray(value){if(!Array.isArray(value)||Object.getPrototypeOf(value)!==Array.prototype)return invalid2();const descriptors=Object.getOwnPropertyDescriptors(value);if(Reflect.ownKeys(value).length!==value.length+1)return invalid2();const result=[];for(let i=0;i<value.length;i++){const descriptor=descriptors[i];if(!descriptor?.enumerable||!Object.hasOwn(descriptor,"value"))return invalid2();result.push(descriptor.value)}return result}function captureOptions(value,changes){if(value===undefined)return{};const descriptors=historyProperties(value),result={};const allowed=changes?["collections","refs","from","through","limit","after"]:["limit","before"];if(Object.keys(descriptors).some((key)=>!allowed.includes(key)))return invalid2();for(const key of allowed){if(!Object.hasOwn(descriptors,key))continue;const scalar=descriptors[key].value;if(key==="collections"||key==="refs"){const values=historyArray(scalar);if(!values.length||values.length>(key==="collections"?16:100)||!values.every(key==="collections"?historyCollection:validRecordRef)||new Set(values).size!==values.length)return invalid2();result[key]=values}else if(key==="limit"){if(!Number.isInteger(scalar)||scalar<1||scalar>(changes?500:100))return invalid2();result.limit=scalar}else{if(!(key==="after"?historyCursor(scalar):historyVersion(scalar)))return invalid2();result[key]=scalar}}return result}var captureHistoryListOptions=(value)=>captureOptions(value,false);var captureHistoryChangesOptions=(value)=>captureOptions(value,true);function captureHistoryInstant(value){if(!historyText(value)||value.length>1024)return invalid2();const match=/^(\d{4})-(\d{2})-(\d{2})[Tt](\d{2}):(\d{2}):(\d{2})(?:\.\d+)?([Zz]|([+-])(\d{2}):(\d{2}))$/.exec(value);if(!match)return invalid2();const[year,month,day,hour,minute,second]=match.slice(1,7).map(Number);const days=new Date(Date.UTC(year,month,0));days.setUTCFullYear(year);if(year<1||month<1||month>12||day<1||day>days.getUTCDate()||hour>23||minute>59||second>59||Number(match[9]??0)>23||Number(match[10]??0)>59)return invalid2();return value}var invalid3=()=>{throw new DataOperationError("invalid_query")};function captureRecordsSearchInput(query,options){if(!historyText(query))return invalid3();const length=[...query.trim()].length;if(length<1||length>256)return invalid3();if(options===undefined)return{query};const descriptors=historyProperties(options);if(Object.keys(descriptors).some((key)=>!["collections","limit"].includes(key)))return invalid3();const captured={};if(Object.hasOwn(descriptors,"collections")){const supplied=descriptors.collections.value;if(!Array.isArray(supplied)||supplied.length<1||supplied.length>16||Reflect.ownKeys(supplied).length!==supplied.length+1)return invalid3();const collections=[];for(let index=0;index<supplied.length;index++){const descriptor=Object.getOwnPropertyDescriptor(supplied,String(index));if(!descriptor?.enumerable||!Object.hasOwn(descriptor,"value")||!historyText(descriptor.value))return invalid3();collections.push(descriptor.value)}if(new Set(collections).size!==collections.length)return invalid3();captured.collections=collections}if(Object.hasOwn(descriptors,"limit")){const supplied=descriptors.limit.value;if(!Number.isInteger(supplied)||supplied<1||supplied>100)return invalid3();captured.limit=supplied}return{query,options:captured}}var DATA_REQUEST_LIMIT=256*1024;var invalidChange=()=>{throw new DataOperationError("invalid_change",false,"unapplied")};function mapping(value){try{historyProperties(value);return value}catch{return invalidChange()}}function captureValue(value,ancestors=new Set,depth=0){if(value===null||typeof value==="string"||typeof value==="boolean"||typeof value==="number"&&Number.isFinite(value))return value;if(!value||typeof value!=="object"||ancestors.has(value)||depth>32)return invalidChange();ancestors.add(value);try{if(Array.isArray(value)){if(value.length>1e5||Object.keys(value).length!==value.length||Object.getOwnPropertySymbols(value).length)return invalidChange();return Array.from(value,(item)=>captureValue(item,ancestors,depth+1))}return Object.fromEntries(Object.entries(mapping(value)).map(([key,item])=>{if(["__proto__","constructor","prototype"].includes(key))return invalidChange();return[key,captureValue(item,ancestors,depth+1)]}))}finally{ancestors.delete(value)}}function captureDataDelete(record2){const identity=mapping(record2);if(!validRecordRef(identity.$ref)||typeof identity.$version!=="string"||!identity.$version.length||identity.$version.length>512)return invalidChange();return{ref:identity.$ref,expectedVersion:identity.$version}}function captureDataUpdate(record2,set){const identity=captureDataDelete(record2),fields3=mapping(set);if(!Object.keys(fields3).length||Object.keys(fields3).some((key)=>key.startsWith("$")||["id","type"].includes(key)))return invalidChange();return{...identity,set:captureValue(fields3)}}function captureIdentities(value,update,allowEmpty=true){if(!Array.isArray(value)||!allowEmpty&&!value.length||value.length>1e4)return invalidChange();const captured=value.map((item)=>{const row=mapping(item);if(Object.keys(row).sort().join(",")!==(update?"expectedVersion,ref,set":"expectedVersion,ref"))return invalidChange();const identity={$ref:row.ref,$version:row.expectedVersion};return update?captureDataUpdate(identity,row.set):captureDataDelete(identity)});if(new Set(captured.map((item)=>item.ref)).size!==captured.length)return invalidChange();return captured}function captureDataUpdates(value,allowEmpty=false){return captureIdentities(value,true,allowEmpty)}function captureDataCreate(value){const row=mapping(value);if(!validRecordRef(row.$ref)||Object.keys(row).some((key)=>key.startsWith("$")&&!["$ref","$filing"].includes(key)))return invalidChange();const{$ref:ref,$filing,...fields3}=row;let filing;if($filing!==undefined){const components=mapping($filing);if(Object.entries(components).some(([name,value2])=>!/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(name)||["constructor","prototype"].includes(name)||typeof value2!=="string"||!/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(value2)))return invalidChange();filing={...components}}return{ref,fields:captureValue(fields3),...filing?{filing}:{}}}function captureDataChanges(updatesValue,createsValue=[],deletesValue=[]){const updates=captureDataUpdates(updatesValue,true);if(!Array.isArray(createsValue)||createsValue.length>1e4)return invalidChange();const creates=createsValue.map((item)=>{const row=mapping(item);if(Object.keys(row).some((key)=>!["ref","fields","filing"].includes(key))||!Object.hasOwn(row,"ref")||!Object.hasOwn(row,"fields"))return invalidChange();const fields3=mapping(row.fields);if(Object.keys(fields3).some((key)=>key.startsWith("$")))return invalidChange();return captureDataCreate({...fields3,$ref:row.ref,...Object.hasOwn(row,"filing")?{$filing:row.filing}:{}})});const deletes=captureIdentities(deletesValue,false);const refs=[...updates,...creates,...deletes].map((item)=>item.ref);if(!refs.length||refs.length>1e4||new Set(refs).size!==refs.length)return invalidChange();return{updates,creates,deletes}}function checkDataRequestSize(input){if(new TextEncoder().encode(JSON.stringify(input)).byteLength>DATA_REQUEST_LIMIT)throw new DataOperationError("request_too_large",false,"unapplied")}function dataTransportError(status,value){const failures={400:["invalid_query","invalid_change"],401:["unauthenticated"],403:["access_denied"],409:["conflict","publication_pending"],413:["request_too_large"],429:["capacity"],503:["unavailable","publication_pending"]};const error=value&&typeof value==="object"&&"error"in value?value.error:undefined;const row=error&&typeof error==="object"?error:undefined;const code=failures[status]?.find((allowed)=>allowed===row?.code)??"unavailable";const effect=["unapplied","uncertain","applied"].includes(String(row?.effect))?row.effect:undefined;return new DataOperationError(code,["capacity","unavailable","publication_pending"].includes(code),code==="conflict"?"unapplied":effect,code==="invalid_change"&&typeof row?.component==="string"&&/^[a-zA-Z][a-zA-Z0-9_-]{0,127}$/.test(row.component)?row.component:undefined)}var AUTH_ORIGIN="https://auth.oddington.ai";function oddingtonOrigin(environment=process.env){const value=environment.ODDINGTON_OS_ORIGIN??AUTH_ORIGIN;const url=new URL(value);if(url.protocol!=="https:"&&url.hostname!=="127.0.0.1")throw new Error("ODDINGTON_OS_ORIGIN must use HTTPS");return url.origin}var nodeRequest;var nodeReadable;if(typeof __ODDINGTON_BROWSER__==="undefined"||!__ODDINGTON_BROWSER__){({request:nodeRequest}=await import("node:http"));({Readable:nodeReadable}=await import("node:stream"))}function privateRoutineRequest(environment=typeof __ODDINGTON_BROWSER__!=="undefined"&&__ODDINGTON_BROWSER__?{}:typeof process==="undefined"?{}:process.env){if(typeof __ODDINGTON_BROWSER__!=="undefined"&&__ODDINGTON_BROWSER__)return;const prepared=["ODDINGTON_ROUTINE_LOCAL","ODDINGTON_ROUTINE_LOCAL_SOCKET","ODDINGTON_ROUTINE_LOCAL_TOKEN"].some((key)=>environment[key]!==undefined);const managed=["ODDINGTON_FILES_SOCKET","ODDINGTON_FILES_TOKEN"].some((key)=>environment[key]!==undefined);if(!prepared&&!managed)return;const socket=prepared?environment.ODDINGTON_ROUTINE_LOCAL_SOCKET:environment.ODDINGTON_FILES_SOCKET;const token=prepared?environment.ODDINGTON_ROUTINE_LOCAL_TOKEN:environment.ODDINGTON_FILES_TOKEN;const request=localRoutineRequest(prepared?environment:{ODDINGTON_ROUTINE_LOCAL:"1",ODDINGTON_ROUTINE_LOCAL_SOCKET:socket,ODDINGTON_ROUTINE_LOCAL_TOKEN:token});const isCurrent=()=>prepared?environment.ODDINGTON_ROUTINE_LOCAL==="1"&&environment.ODDINGTON_ROUTINE_LOCAL_SOCKET===socket&&environment.ODDINGTON_ROUTINE_LOCAL_TOKEN===token:environment.ODDINGTON_FILES_SOCKET===socket&&environment.ODDINGTON_FILES_TOKEN===token;if(!nodeRequest||!nodeReadable)throw new Error("Files transport unavailable");const httpRequest=nodeRequest,Readable=nodeReadable;const files=async(suffix,init,signal)=>{if(!isCurrent())throw new FileOperationError("unsupported_context",400);const tcp=/^tcp:\/\/127\.0\.0\.1:([1-9][0-9]{0,4})$/.exec(socket);const endpoint=tcp?{hostname:"127.0.0.1",port:Number(tcp[1])}:{socketPath:socket};const id2=crypto.randomUUID();if(init.body instanceof ReadableStream||suffix===""&&init.method==="POST"){await new Promise((resolve,reject)=>{const admission=httpRequest({...endpoint,path:"/files/admit",method:"POST",timeout:30000,signal,agent:false,headers:{...Object.fromEntries(new Headers(init.headers)),authorization:`Bearer ${token}`,"x-oddington-files-suffix":encodeURIComponent(suffix),"x-oddington-files-method":init.method??"GET"}},(response)=>{const bytes=Buffer.alloc(16384);let size=0;response.on("data",(chunk)=>{size+=chunk.length;if(size>16384)response.destroy(new Error("Files admission result exceeds supported size"));else bytes.set(chunk,size-chunk.length)});response.once("error",reject);response.once("end",()=>{if(response.statusCode===204){resolve();return}try{const value=JSON.parse(bytes.subarray(0,size).toString());const code=value?.error?.code;const status=response.statusCode??503;if(["invalid_input","request_too_large","unsupported_context","access_denied","capacity","unavailable"].includes(code))reject(new FileOperationError(code,status,code==="capacity"||code==="unavailable"));else reject(new FileOperationError("unavailable",503,true))}catch{reject(new FileOperationError("unavailable",503,true))}})});admission.once("error",()=>reject(new FileOperationError("unavailable",503,true)));admission.once("timeout",()=>admission.destroy(new Error("Files admission stalled")));admission.end()});if(!isCurrent())throw new FileOperationError("unsupported_context",400)}let cancellation;const cancelCall=()=>cancellation??=new Promise((resolve,reject)=>{const cancel=httpRequest({...endpoint,path:"/files/cancel",method:"POST",timeout:30000,headers:{authorization:`Bearer ${token}`,"x-oddington-files-call":id2}},(response)=>{response.resume();response.once("end",resolve);response.once("error",reject)});cancel.once("error",reject);cancel.once("timeout",()=>cancel.destroy(new Error("Files cancellation stalled")));cancel.end()});let pumping=Promise.resolve();let sourceReader;const result=new Promise((resolve,reject)=>{const call=httpRequest({...endpoint,path:"/files/stream",method:"POST",headers:{...Object.fromEntries(new Headers(init.headers)),authorization:`Bearer ${token}`,"x-oddington-files-call":id2,"x-oddington-files-suffix":encodeURIComponent(suffix),"x-oddington-files-method":init.method??"GET"},signal,timeout:30000,agent:false},async(response)=>{try{call.setTimeout(0);if((response.statusCode??503)>=400){await sourceReader?.cancel().catch(()=>{});call.end()}await pumping;if(!isCurrent()){response.destroy();reject(new FileOperationError("unsupported_context",400));return}const headers=new Headers;for(const[key,value]of Object.entries(response.headers))if(value!==undefined)headers.set(key,Array.isArray(value)?value.join(", "):value);const source=Readable.toWeb(response,{strategy:{highWaterMark:65536,size:(chunk)=>chunk.byteLength}});const reader=source.getReader();if(response.statusCode===204){const timer=setTimeout(()=>response.destroy(new Error("Files completion stalled")),30000);try{if(!(await reader.read()).done)throw new FileOperationError("unavailable",503,true);if(!isCurrent())throw new FileOperationError("unsupported_context",400);resolve(new Response(null,{status:204,headers}))}finally{clearTimeout(timer);reader.releaseLock()}return}let closed=false;const body=new ReadableStream({async pull(controller){let timer;try{if(!isCurrent())throw new FileOperationError("unsupported_context",400);timer=setTimeout(()=>response.destroy(new Error("Files delivery stalled")),30000);const next=await reader.read();if(closed)return;if(next.done){closed=true;reader.releaseLock();controller.close()}else controller.enqueue(next.value)}catch(error){closed=true;controller.error(error);await cancelCall().catch(()=>{});response.socket?.destroy();response.destroy();await reader.cancel(error).catch(()=>{});reader.releaseLock()}finally{clearTimeout(timer)}},async cancel(reason){closed=true;await cancelCall().catch(()=>{});response.socket?.destroy();response.destroy();call.destroy();await reader.cancel(reason).catch(()=>{});reader.releaseLock()}},{highWaterMark:0});resolve(new Response(body,{status:response.statusCode??503,headers}))}catch(error){response.destroy();reject(error instanceof FileOperationError?error:new FileOperationError("unavailable",503,true))}});call.on("error",(error)=>{cancelCall().catch(()=>{});reject(error instanceof FileOperationError?error:new FileOperationError("unavailable",503,true))});call.on("timeout",()=>call.destroy(new Error("Files I/O stalled")));call.on("information",()=>call.setTimeout(30000));if(init.body instanceof ReadableStream){call.flushHeaders();const reader=sourceReader=init.body.getReader();const abort=()=>{reader.cancel(signal.reason).catch(()=>{})};signal.addEventListener("abort",abort,{once:true});call.once("close",abort);pumping=(async()=>{try{for(;;){const next=await reader.read();if(next.done)break;if(!(next.value instanceof Uint8Array))throw new FileOperationError("invalid_input",400);if(!isCurrent())throw new FileOperationError("unsupported_context",400);for(let offset=0;offset<next.value.byteLength;offset+=262144){if(call.destroyed)throw new Error("Files parent disconnected");await new Promise((done,fail2)=>{const closed=()=>fail2(new Error("Files parent disconnected"));call.once("close",closed);call.write(next.value.subarray(offset,offset+262144),(error)=>{call.removeListener("close",closed);error?fail2(error):done()})})}}call.end()}catch(error){call.destroy(error instanceof Error?error:new Error("Files transport failed"))}finally{await reader.cancel().catch(()=>{});signal.removeEventListener("abort",abort);call.removeListener("close",abort);reader.releaseLock()}})()}else call.end(init.body===undefined?undefined:Buffer.from(init.body))});try{return await result}finally{await pumping}};return{request,files,isCurrent,identity:`private:${socket}`}}function localRoutineRequest(environment=typeof __ODDINGTON_BROWSER__!=="undefined"&&__ODDINGTON_BROWSER__?{}:typeof process==="undefined"?{}:process.env){if(typeof __ODDINGTON_BROWSER__==="undefined"||!__ODDINGTON_BROWSER__){const{ODDINGTON_ROUTINE_LOCAL:mode,ODDINGTON_ROUTINE_LOCAL_SOCKET:socket,ODDINGTON_ROUTINE_LOCAL_TOKEN:token}=environment;if(mode===undefined&&socket===undefined&&token===undefined)return;if(mode!=="1"||!socket||!token||!/^[0-9a-f]{64}$/.test(token))throw new Error("Preparation transport unavailable; nothing can publish");const tcp=/^tcp:\/\/127\.0\.0\.1:([1-9][0-9]{0,4})$/.exec(socket);const endpoint=tcp&&tcp[0]===socket&&Number(tcp[1])<=65535?{hostname:"127.0.0.1",port:Number(tcp[1])}:socket.startsWith("/")&&!socket.startsWith("//")&&!socket.includes("\x00")?{socketPath:socket}:undefined;if(!endpoint)throw new Error("Preparation transport unavailable; nothing can publish");return async(operation,input)=>{const{request}=await import("node:http");return await new Promise((resolve,reject)=>{const call=request({...endpoint,path:`/${operation}`,method:"POST",headers:{"content-type":"application/json",authorization:`Bearer ${token}`},timeout:120000},(response)=>{const bytes=Buffer.alloc(33554432);let size=0;response.on("data",(chunk)=>{size+=chunk.length;if(size>33554432){response.destroy();reject(new Error("Local result exceeds supported size"))}else bytes.set(chunk,size-chunk.length)});response.on("error",reject);response.on("end",()=>{try{const result=JSON.parse(bytes.subarray(0,size).toString());if(response.statusCode!==200){if(operation==="files/request"){const error=result.error;const status=response.statusCode??503;const codes=["invalid_input","unsupported_context","unauthenticated","access_denied","request_too_large","conflict","local_only","integrity","unavailable","capacity","method_not_allowed"];if(error?.code&&codes.includes(error.code))throw new FileOperationError(error.code,status,error.code==="capacity"||error.code==="unavailable");throw new FileOperationError("unavailable",503,true)}if(operation==="data/query"){throw dataTransportError(response.statusCode??0,result)}throw new Error(typeof result.error==="string"?result.error:"Preparation failed")}resolve(result)}catch(error){reject(error)}})});call.on("error",()=>reject(operation==="data/query"?dataTransportError(503,{error:{code:"unavailable"}}):new Error("Preparation transport unavailable; nothing was published")));call.on("timeout",()=>call.destroy(new Error("Preparation timed out")));call.end(JSON.stringify(input))})}}}var installed;var ended=false;function routineTransport(){if(ended||installed&&!installed.isCurrent())throw new Error("Routine authority ended");return installed}var memberContext;function installMemberContext(resolve){memberContext=resolve;return()=>{if(memberContext===resolve)memberContext=undefined}}async function resolveAppContext(){const host=memberContext;if(!host)throw new Error("App context unavailable.");const context=await host();if(host!==memberContext||!context.isCurrent()||context.expiresAt<=Date.now()||context.kind!=="local"&&(typeof context.accessToken!=="string"||!/^[^\s]{1,8192}$/.test(context.accessToken))){throw new Error("App context unavailable.")}return context}async function resolveDataContext(){try{if(typeof __ODDINGTON_BROWSER__==="undefined"||!__ODDINGTON_BROWSER__){const installed2=routineTransport();if(installed2)return{local:installed2.request};const local=localRoutineRequest();if(local)return{local};const managed=privateRoutineRequest();if(managed)return{local:managed.request}}const host=memberContext;if(host!==undefined){const context=await host();if(host!==memberContext||!context.isCurrent()||context.expiresAt<=Date.now())throw new Error;if(context.kind==="local")return{local:context.requestData};if(!context||!Number.isFinite(context.expiresAt)||context.expiresAt<=Date.now()||typeof context.accessToken!=="string"||!/^[^\s]{1,8192}$/.test(context.accessToken))throw new Error;return checked(context.workspace,context.endpoint,{authorization:`Bearer ${context.accessToken}`})}if(typeof __ODDINGTON_BROWSER__==="undefined"||!__ODDINGTON_BROWSER__){const environment=typeof process==="undefined"?undefined:process.env;if(!environment||!/^[0-9a-f]{64}$/.test(environment.ODDINGTON_ROUTINE_RUN??""))throw new Error;return checked(environment.ODDINGTON_ROUTINE_WORKSPACE,oddingtonOrigin(environment),{"x-oddington-run":environment.ODDINGTON_ROUTINE_RUN})}throw new Error}catch{throw new DataOperationError("context_unavailable")}}async function resolveFilesContext(){try{const environment=typeof __ODDINGTON_BROWSER__!=="undefined"&&__ODDINGTON_BROWSER__?{}:typeof process==="undefined"?{}:process.env;if(typeof __ODDINGTON_BROWSER__==="undefined"||!__ODDINGTON_BROWSER__){const installed2=routineTransport();if(installed2)return{url:"private:installed",headers:{},isCurrent:installed2.isCurrent,local:installed2.request,localFiles:installed2.files};const local=privateRoutineRequest(environment);if(local)return{url:local.identity,headers:{},isCurrent:local.isCurrent,local:local.request,localFiles:local.files}}const host=memberContext;if(host){const context=await host();if(context.kind==="local")throw new Error;if(!Number.isFinite(context.expiresAt)||context.expiresAt<=Date.now()||typeof context.accessToken!=="string"||!/^[^\s]{1,8192}$/.test(context.accessToken))throw new Error;return{...filesContext(context.workspace,context.endpoint,{authorization:`Bearer ${context.accessToken}`}),isCurrent:context.isCurrent,local:undefined,localFiles:undefined}}if(typeof __ODDINGTON_BROWSER__==="undefined"||!__ODDINGTON_BROWSER__){if(!/^[0-9a-f]{64}$/.test(environment.ODDINGTON_ROUTINE_RUN??""))throw new Error;const workspace=environment.ODDINGTON_ROUTINE_WORKSPACE;return{...filesContext(workspace,`https://${workspace}.oddington.ai`,{"x-oddington-run":environment.ODDINGTON_ROUTINE_RUN}),local:undefined,localFiles:undefined}}throw new Error}catch{throw new FileOperationError("unsupported_context",400)}}function filesContext(workspace,endpoint,headers){if(!workspace||!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(workspace)||workspace.length>63||["auth","www","api","os"].includes(workspace)||endpoint!==`https://${workspace}.oddington.ai`)throw new Error;return{url:`${endpoint}/api/files`,headers:{...headers,"x-oddington-workspace":workspace},isCurrent:()=>true}}function checked(workspace,endpoint,headers){if(!workspace||!/^[a-z0-9][a-z0-9-]{0,127}$/.test(workspace))throw new Error;const origin=new URL(endpoint);if(origin.protocol!=="https:"||origin.username||origin.password||origin.search||origin.hash||origin.pathname!=="/")throw new Error;return{url:`${origin.origin}/api/data`,headers:{...headers,"x-oddington-workspace":workspace}}}var data={repository(repository){async function send(input){const context=await resolveDataContext();const envelope={repository,...input};checkDataRequestSize(envelope);if("local"in context)return await context.local("data/query",envelope);try{const response=await fetch(context.url,{method:"POST",redirect:"error",cache:"no-store",headers:{"content-type":"application/json",...context.headers},body:JSON.stringify(envelope)});const result=await response.json();if(!response.ok){throw dataTransportError(response.status,result)}return result}catch(error){if(error instanceof DataOperationError)throw error;throw new DataOperationError("unavailable",true)}}return{collections:{list:()=>send({operation:"collections.list"}),schema:(name)=>send({operation:"collections.schema",name})},records:{select:(query)=>send({operation:"records.select",query}),search:async(query,options)=>send({operation:"records.search",...captureRecordsSearchInput(query,options)})},history:{list:async(options)=>send({operation:"history.list",options:captureHistoryListOptions(options)}),at:async(instant)=>send({operation:"history.at",instant:captureHistoryInstant(instant)}),changes:async(options)=>send({operation:"history.changes",options:captureHistoryChangesOptions(options)})},changes(){let updates=[],creates=[],deletes=[],publicationId;let pending,confirmed;const assertMutable=()=>{if(publicationId)throw new DataOperationError("invalid_change",false,"unapplied")};const snapshot=(nextUpdates=updates,nextCreates=creates,nextDeletes=deletes)=>{const{updates:updates2,creates:creates2,deletes:deletes2}=captureDataChanges(nextUpdates,nextCreates,nextDeletes);const input={updates:updates2,...creates2.length?{creates:creates2}:{},...deletes2.length?{deletes:deletes2}:{}};checkDataRequestSize({repository,operation:"changes.publish",...input,publicationId:publicationId??"00000000-0000-4000-8000-000000000000"});return input};return{create(record2){assertMutable();const next=[...creates,captureDataCreate(record2)];snapshot(updates,next,deletes);creates=next},update(record2,set){assertMutable();const next=[...updates,captureDataUpdate(record2,set)];snapshot(next,creates,deletes);updates=next},delete(record2){assertMutable();const next=[...deletes,captureDataDelete(record2)];snapshot(updates,creates,next);deletes=next},async validate(){await send({operation:"changes.validate",...snapshot()})},publish(){if(confirmed)return Promise.resolve(structuredClone(confirmed));if(!pending){let captured;try{captured=snapshot()}catch(error){return Promise.reject(error)}publicationId??=routineTransport()?.key("data")??crypto.randomUUID();pending=send({operation:"changes.publish",...captured,publicationId}).then((result)=>{confirmed=structuredClone(result);return result}).catch((error)=>{if(error instanceof DataOperationError)throw new DataOperationError(error.code,error.retryable,error.effect??(["unavailable","publication_pending"].includes(error.code)?"uncertain":"unapplied"),error.component);throw new DataOperationError("unavailable",true,"uncertain")}).finally(()=>{pending=undefined})}return pending.then((result)=>structuredClone(result))}}}}}};var MAX_BYTES=16*1024*1024;var PART_BYTES=8*1024*1024;var METADATA_BYTES=4096;var RESULT_BYTES=16*1024;var CONTROL_RESULT_BYTES=128*1024;var TIMEOUT_MS=30000;var MAX_ACTIVE=4;var ATTEMPTS=2;var active=0;var invalid4=()=>new FileOperationError("invalid_input",400);var unavailable=()=>new FileOperationError("unavailable",503,true);var failures={400:["invalid_input","unsupported_context"],401:["unauthenticated"],403:["access_denied"],405:["method_not_allowed"],409:["conflict","local_only"],413:["request_too_large"],429:["capacity"],503:["integrity","unavailable"]};async function boundedBytes(stream,limit){if(!stream)return new Uint8Array;const reader=stream.getReader();const bytes=new Uint8Array(limit);let size=0;try{for(;;){const{done,value}=await reader.read();if(done)break;if(!(value instanceof Uint8Array))throw invalid4();size+=value.byteLength;if(size>limit)throw new FileOperationError("request_too_large",413);bytes.set(value,size-value.byteLength)}}finally{reader.releaseLock()}return bytes.slice(0,size)}async function timed(work,parent,timeout=TIMEOUT_MS){const controller=new AbortController;let timer;let abort;const expiry=new Promise((_,reject)=>{abort=()=>{controller.abort();reject(unavailable())};timer=setTimeout(abort,timeout);parent?.addEventListener("abort",abort,{once:true});if(parent?.aborted)abort()});try{return await Promise.race([work(controller.signal),expiry])}finally{clearTimeout(timer);parent?.removeEventListener("abort",abort)}}async function result(response,maximum=RESULT_BYTES){try{const bytes=await boundedBytes(response.body,maximum);return JSON.parse(new TextDecoder("utf-8",{fatal:true}).decode(bytes))}catch{throw unavailable()}}async function hostedContent(url,init,parent,upstream=fetch){const delivery=new AbortController;const abort=()=>delivery.abort(parent.reason);parent.addEventListener("abort",abort,{once:true});if(parent.aborted)abort();const detach=()=>parent.removeEventListener("abort",abort);try{const response=await upstream(url,{...init,signal:delivery.signal});if(delivery.signal.aborted){response.body?.cancel().catch(()=>{});throw unavailable()}if(!response.body){detach();return response}const source=response.body;let reader;let settled=false;const cancel=async(reason)=>{if(settled)return;settled=true;detach();delivery.abort(reason);try{await(reader?reader.cancel(reason):source.cancel(reason))}catch(error){if(error!==delivery.signal.reason&&!(error instanceof Error&&error.name==="AbortError"))throw error}finally{reader?.releaseLock()}};const body=new ReadableStream({async pull(controller){try{reader??=source.getReader();const{done,value}=await reader.read();if(settled)return;if(done){settled=true;detach();reader.releaseLock();controller.close()}else controller.enqueue(value)}catch(error){if(settled)return;controller.error(error);await cancel(error).catch(()=>{})}},cancel},{highWaterMark:0});const wrapped=new Response(body,{status:response.status,statusText:response.statusText,headers:response.headers});for(const key of["url","redirected","type"])Object.defineProperty(wrapped,key,{value:response[key]});return wrapped}catch(error){detach();delivery.abort(error);throw error}}async function send(suffix,init,descriptor,initial,parent){const original=initial;const checkCurrent=(context=original)=>{if(parent?.aborted)throw unavailable();if(!original.isCurrent()||context.url!==original.url)throw new FileOperationError("unsupported_context",400)};for(let attempt=0;attempt<ATTEMPTS;attempt++){checkCurrent();const context=await resolveFilesContext();checkCurrent(context);try{const response=(typeof __ODDINGTON_BROWSER__==="undefined"||!__ODDINGTON_BROWSER__)&&context.localFiles?await context.localFiles(suffix,init,parent):await(async()=>{const url=`${context.url}${suffix}`;const request={...init,signal:parent,headers:{...context.headers,...init.headers},redirect:"error",cache:"no-store"};return descriptor?fetch(url,request):hostedContent(url,request,parent)})();if(!response.ok){const value2=await result(response);const error=value2&&typeof value2==="object"&&"error"in value2?value2.error:undefined;const received=error&&typeof error==="object"&&"code"in error?error.code:undefined;const code=failures[response.status]?.find((code2)=>code2===received);throw code?new FileOperationError(code,response.status,code==="capacity"||code==="unavailable"):unavailable()}if(response.status!==(descriptor===204?204:200)||descriptor===204&&response.body!==null){response.body?.cancel().catch(()=>{});throw unavailable()}try{checkCurrent()}catch(error){response.body?.cancel().catch(()=>{});throw error}if(descriptor===204)return;if(!descriptor)return response;const value=await result(response,descriptor==="control"?CONTROL_RESULT_BYTES:RESULT_BYTES);if(descriptor==="control"){checkCurrent();return value}let parsed;if(descriptor==="enrichment"){if(!value||typeof value!=="object"||Array.isArray(value))throw unavailable();const{name,...metadata}=value;if(!safeEnrichmentName(name))throw unavailable();parsed={name,...parseEnrichmentDescriptor(metadata)}}else parsed=parseFileDescriptor(value);checkCurrent();return parsed}catch(error){const failure=error instanceof FileOperationError?error:unavailable();if(init.body instanceof ReadableStream||!failure.retryable||attempt+1===ATTEMPTS)throw failure}}throw unavailable()}function idPath(id2){if(typeof id2!=="string"||!FILE_ID_PATTERN.test(id2))throw invalid4();return`/${id2}`}async function multipartCreate(input,metadata,exchange,release=()=>{active--},upload){const route=upload?`${idPath(upload.file.id)}/upload/multipart`:"/multipart";let ticket;let reader;let chunk,offset=0;const receipts=[];const pending=new Set;const request=(work,timeout=TIMEOUT_MS)=>timed((signal)=>{const task=work(signal);pending.add(task);task.then(()=>pending.delete(task),()=>pending.delete(task));return task},undefined,timeout);const control=(body)=>({method:"POST",headers:{"content-type":"application/json",...ticket?{"x-oddington-transfer":ticket}:{}},body:JSON.stringify(body)});try{const start=await request((signal)=>exchange(`${route}/start`,control(upload?.file??metadata),"control",signal));if(!start||typeof start!=="object"||Array.isArray(start))throw unavailable();const session=start;if(Object.keys(session).sort().join(",")!=="partBytes,ticket"||session.partBytes!==PART_BYTES||typeof session.ticket!=="string"||!session.ticket||session.ticket.length>64*1024)throw unavailable();ticket=session.ticket;if(input.file instanceof ReadableStream)reader=input.file.getReader();let lastProgress=Date.now();const next=async()=>{try{if(Date.now()-lastProgress>=TIMEOUT_MS)throw unavailable();const value=await request(()=>reader.read(),Math.max(1,TIMEOUT_MS-(Date.now()-lastProgress)));if(value.value?.byteLength)lastProgress=Date.now();return value}catch(error){await reader.cancel(error).catch(()=>{});throw error}};for(let sent=0,partNumber=1;sent<metadata.size||metadata.size===0&&partNumber===1;partNumber++){const length=Math.min(PART_BYTES,metadata.size-sent);let part;if(input.file instanceof Uint8Array)part=input.file.subarray(sent,sent+length).slice();else if(input.file instanceof Blob){const slice=input.file.slice(sent,sent+length);part=new Uint8Array(await request(()=>slice.arrayBuffer()))}else{part=new Uint8Array(length);let filled=0;while(filled<length){if(!chunk||offset===chunk.byteLength){chunk=undefined;offset=0;const value2=await next();if(value2.done)throw invalid4();if(!(value2.value instanceof Uint8Array))throw invalid4();chunk=value2.value;if(chunk.byteLength>metadata.size-sent-filled)throw invalid4()}const take=Math.min(length-filled,chunk.byteLength-offset);part.set(chunk.subarray(offset,offset+take),filled);filled+=take;offset+=take;if(offset===chunk.byteLength){chunk=undefined;offset=0}}}if(part.byteLength!==length)throw invalid4();if(reader&&sent+length===metadata.size){lastProgress=Date.now();for(;;){const value2=await next();if(value2.done)break;if(!(value2.value instanceof Uint8Array)||value2.value.byteLength)throw invalid4()}}const value=await request((signal)=>exchange(`${route}/part`,{method:"POST",headers:{"content-type":"application/octet-stream","x-oddington-transfer":ticket,"x-oddington-part":String(partNumber)},body:part.buffer},"control",signal));part=undefined;const receipt=value;if(!receipt||typeof receipt!=="object"||Object.keys(receipt).sort().join(",")!=="etag,partNumber"||receipt.partNumber!==partNumber||typeof receipt.etag!=="string"||!receipt.etag||receipt.etag.length>256||/[\u0000-\u001f\u007f]/.test(receipt.etag))throw unavailable();receipts.push({partNumber,etag:receipt.etag});sent+=length;lastProgress=Date.now()}if(upload)for(const name of Object.keys(upload.file.enrichments)){const bytes=await request(()=>upload.enrichment(name));if(bytes.byteLength!==upload.file.enrichments[name].size||bytes.byteLength>MAX_BYTES)throw invalid4();await request((signal)=>exchange(`${route}/enrichments/${encodeURIComponent(name)}`,{method:"POST",headers:{"content-type":"application/octet-stream","x-oddington-transfer":ticket},body:bytes.buffer.slice(bytes.byteOffset,bytes.byteOffset+bytes.byteLength)},"control",signal))}await upload?.beforeComplete();const completion=control({parts:receipts});if(new TextEncoder().encode(completion.body).byteLength>128*1024)throw unavailable();return parseFileDescriptor(await request((signal)=>exchange(`${route}/complete`,completion,true,signal),TIMEOUT_MS+Math.ceil(metadata.size/(1024*1024))*1000))}catch(error){if(reader)await reader.cancel(error).catch(()=>{});if(ticket)await request((signal)=>exchange(`${route}/abort`,control({}),"control",signal)).catch(()=>{});throw error instanceof FileOperationError?error:unavailable()}finally{chunk=undefined;reader?.releaseLock();if(pending.size)Promise.allSettled([...pending]).then(release);else release()}}async function operation(work,initial,parent){const context=initial??await resolveFilesContext();if(active>=MAX_ACTIVE)throw new FileOperationError("capacity",429,true);active++;const execute=async(signal)=>{try{return await work(context,signal)}finally{active--}};if((typeof __ODDINGTON_BROWSER__==="undefined"||!__ODDINGTON_BROWSER__)&&context.localFiles)return execute(parent??new AbortController().signal);return timed(execute,parent).catch((error)=>{throw error instanceof FileOperationError?error:unavailable()})}function contentPath(id2,name){const path=idPath(id2);if(name===undefined)return`${path}/content`;if(!safeEnrichmentName(name))throw invalid4();return`${path}/enrichments/${encodeURIComponent(name)}/content`}async function read(id2,names){const context=await resolveFilesContext();idPath(id2);if(names===undefined||typeof names==="string"){const path=contentPath(id2,names);return operation((context2,signal)=>send(path,{method:"GET"},false,context2,signal),context)}if(!Array.isArray(names))throw invalid4();const distinct=[];const seen=new Set;for(const name of names){if(typeof name!=="string"||!safeEnrichmentName(name))throw invalid4();if(seen.has(name))continue;if(seen.size===16)throw invalid4();seen.add(name);distinct.push(name)}const paths=distinct.map((name)=>contentPath(id2,name));return timed(async(parent)=>{const responses={};try{for(let i=0;i<paths.length;i++){const response=await operation((context2,signal)=>send(paths[i],{method:"GET"},false,context2,signal),context,parent);Object.defineProperty(responses,distinct[i],{value:response,enumerable:true})}if(!context.isCurrent())throw new FileOperationError("unsupported_context",400);return responses}catch(error){for(const response of Object.values(responses))response.body?.cancel().catch(()=>{});throw error}})}var files={delete(id2){return operation((context,signal)=>send(idPath(id2),{method:"DELETE"},204,context,signal))},async upload(id2){return operation(async(context,signal)=>{const file2=await send(`${idPath(id2)}/upload`,{method:"POST"},true,context,signal);if(file2.id!==id2)throw unavailable();return file2})},async create(input,options){const context=await resolveFilesContext();if(!input||typeof input!=="object"||Array.isArray(input)||Object.keys(input).some((key)=>!["file","size","path","name","storage","csv"].includes(key))||options!==undefined&&(!options||typeof options!=="object"||Array.isArray(options)||Object.keys(options).some((key)=>key!=="requestKey")))throw invalid4();const blob=input.file instanceof Blob;const array2=input.file instanceof Uint8Array;const stream=input.file instanceof ReadableStream;if(!blob&&!array2&&!stream)throw invalid4();const intrinsic=blob?input.file.size:array2?input.file.byteLength:undefined;if(intrinsic!==undefined&&input.size!==undefined&&input.size!==intrinsic)throw invalid4();let name=input.name;if(name===undefined&&blob&&"name"in input.file&&typeof input.file.name==="string"){name=typeof globalThis.File!=="undefined"&&input.file instanceof globalThis.File?input.file.name:input.file.name.split(/[\\/]/).at(-1)}const metadata=parseFileCreateMetadata({name,size:intrinsic??input.size,path:input.path,storage:input.storage,csv:input.csv,...blob&&input.file.type==="application/pdf"?{inputMediaType:"application/pdf"}:{},requestKey:options?.requestKey===undefined?routineTransport()?.key("files")??crypto.randomUUID():options.requestKey},FILE_ORIGINAL_MAX_BYTES);if(!context.local&&metadata.storage==="local")throw new FileOperationError("unsupported_context",400);const header=encodeURIComponent(JSON.stringify(metadata));if(new TextEncoder().encode(header).byteLength>METADATA_BYTES)throw invalid4();if(active>=MAX_ACTIVE)throw new FileOperationError("capacity",429,true);active++;if((typeof __ODDINGTON_BROWSER__==="undefined"||!__ODDINGTON_BROWSER__)&&context.localFiles&&!routineTransport()&&metadata.size>MAX_BYTES){const controller=new AbortController;const file2=input.file;let offset=0;const body=file2 instanceof ReadableStream?file2:file2 instanceof Blob?file2.stream():new ReadableStream({pull(controller2){if(offset===file2.byteLength){controller2.close();return}const end=Math.min(offset+256*1024,file2.byteLength);controller2.enqueue(file2.subarray(offset,end));offset=end}},{highWaterMark:0});try{return await send("",{method:"POST",headers:{"content-type":"application/octet-stream","x-oddington-file":header},body},true,context,controller.signal)}finally{active--}}if(metadata.size>MAX_BYTES)return multipartCreate(input,metadata,(suffix,init,kind,signal)=>kind===true?send(suffix,init,true,context,signal):send(suffix,init,"control",context,signal));return timed(async(signal)=>{try{const bytes=array2?input.file.slice():await boundedBytes(blob?input.file.stream():input.file,metadata.size);if(bytes.byteLength!==metadata.size)throw invalid4();if(signal.aborted)throw unavailable();return await send("",{method:"POST",headers:{"content-type":"application/octet-stream","x-oddington-file":header},body:bytes.buffer},true,context,signal)}finally{active--}}).catch((error)=>{throw error instanceof FileOperationError?error:unavailable()})},async enrich(input){const context=await resolveFilesContext();if(!input||typeof input!=="object"||Array.isArray(input)||Object.keys(input).some((key)=>!["file","name","content","mediaType","replace"].includes(key))||typeof input.content!=="string"&&!(input.content instanceof Uint8Array))throw invalid4();const path=`${idPath(input.file)}/enrichments`;if(typeof input.content==="string"?input.content.length>MAX_BYTES:input.content.byteLength>MAX_BYTES)throw new FileOperationError("request_too_large",413);return operation(async(context2,signal)=>{let bytes;if(typeof input.content==="string"){const buffer=new Uint8Array(Math.min(MAX_BYTES,input.content.length*3));const encoded=new TextEncoder().encodeInto(input.content,buffer);if(encoded.read!==input.content.length)throw new FileOperationError("request_too_large",413);bytes=buffer.slice(0,encoded.written)}else bytes=input.content.slice();const metadata=parseFileEnrichMetadata({name:input.name,size:bytes.byteLength,...input.mediaType===undefined?{}:{mediaType:input.mediaType},...input.replace===undefined?{}:{replace:input.replace}},MAX_BYTES);const header=encodeURIComponent(JSON.stringify(metadata));if(new TextEncoder().encode(header).byteLength>METADATA_BYTES)throw invalid4();const result2=await send(path,{method:"POST",headers:{"content-type":"application/octet-stream","x-oddington-enrichment":header},body:bytes.buffer},"enrichment",context2,signal);if(result2.name!==metadata.name)throw unavailable();return result2},context)},async get(id2){return operation((context,signal)=>send(idPath(id2),{method:"GET"},true,context,signal))},read};function validGoogleScopes(value){return Array.isArray(value)&&value.length>0&&value.length<=32&&value.every((scope)=>typeof scope==="string"&&scope.length<=256&&/^(https:\/\/www\.googleapis\.com\/auth\/[A-Za-z0-9._-]+|https:\/\/mail\.google\.com\/|openid|email|profile)$/.test(scope))&&new Set(value).size===value.length}var ROUTINE_CONNECTION_CREDENTIALS_ENV="ODDINGTON_ROUTINE_CONNECTION_CREDENTIALS";var connectionUuid=(v)=>typeof v==="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/.test(v);function parseConnectionLease(raw,now=Date.now()){const v=raw;if(!v||typeof v!=="object"||Array.isArray(v)||!connectionUuid(v.connectionId)||!connectionUuid(v.runId)||typeof v.name!=="string"||!/^[a-z0-9][a-z0-9-]{0,62}$/.test(v.name)||typeof v.accessToken!=="string"||!/^[A-Za-z0-9._~+/-]{1,8192}={0,2}$/.test(v.accessToken))throw new Error("Invalid connection credential");if(v.provider==="gmail"){if(Object.keys(v).sort().join(",")!=="accessToken,accountEmail,connectionId,expiresAt,name,provider,runId,scopes"||typeof v.accountEmail!=="string"||!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v.accountEmail)||!validGoogleScopes(v.scopes)||typeof v.expiresAt!=="string"||!Number.isFinite(Date.parse(v.expiresAt))||Date.parse(v.expiresAt)<=now+60000||Date.parse(v.expiresAt)>now+3600000)throw new Error("Invalid connection credential");return v}if(v.provider==="airtable"&&Object.keys(v).sort().join(",")==="accessToken,baseId,connectionId,name,provider,runExpiresAt,runId"&&typeof v.baseId==="string"&&/^app[A-Za-z0-9]+$/.test(v.baseId)&&typeof v.runExpiresAt==="string"&&Number.isFinite(Date.parse(v.runExpiresAt))&&Date.parse(v.runExpiresAt)>now+60000&&Date.parse(v.runExpiresAt)<=now+15*60000)return v;throw new Error("Invalid connection credential")}init_inbox_contract();class AirtableOperationError extends Error{effect;receipts;constructor(message,effect="unapplied",receipts=[]){super(message);this.effect=effect;this.receipts=receipts;this.name="AirtableOperationError"}}var recordId=(v)=>typeof v==="string"&&/^rec[A-Za-z0-9]+$/.test(v);var tableId=(v)=>typeof v==="string"&&/^tbl[A-Za-z0-9]+$/.test(v);function fail2(message){throw new AirtableOperationError(message)}function object2(v){if(!v||typeof v!=="object"||Array.isArray(v)||![null,Object.prototype].includes(Object.getPrototypeOf(v)))fail2("Invalid Airtable data");return v}function keys2(v,allowed,required=allowed){if(Object.keys(v).some((k)=>!allowed.includes(k))||required.some((k)=>!Object.hasOwn(v,k)))fail2("Invalid Airtable input")}function text2(v){return typeof v==="string"&&v.length>0&&v.length<=1024}function fields3(v,nonempty=false){const result2=object2(v);if(nonempty&&!Object.keys(result2).length||Object.keys(result2).some((k)=>!text2(k)))fail2("Invalid Airtable fields");try{return serializable(result2)}catch{return fail2("Invalid Airtable fields")}}function record2(v){const r=object2(v);if(!recordId(r.id)||r.createdTime!==undefined&&(typeof r.createdTime!=="string"||!Number.isFinite(Date.parse(r.createdTime))))fail2("Malformed Airtable record");return{id:r.id,...r.createdTime===undefined?{}:{createdTime:r.createdTime},fields:fields3(r.fields)}}function equal(a,b){if(a===b)return true;if(!a||!b||typeof a!=="object"||typeof b!=="object"||Array.isArray(a)!==Array.isArray(b))return false;const left=Object.keys(a),right=Object.keys(b);return left.length===right.length&&left.every((k)=>Object.hasOwn(b,k)&&equal(a[k],b[k]))}function createConnections(transport){return{airtable(name){if(typeof name!=="string"||!/^[a-z0-9][a-z0-9-]{0,62}$/.test(name))fail2("Invalid Airtable connection name");const call=(operation2,input)=>transport(name,operation2,input);return{tables:{list:async()=>await call("tables.list",{})},records:{list:async(input)=>await call("records.list",input),get:async(input)=>await call("records.get",input),create:async(input)=>await call("records.create",input),update:async(input)=>await call("records.update",input),delete:async(input)=>await call("records.delete",input)}}}}}async function executeAirtableOperation(authority,operation2,raw,options={}){const{name,baseId,accessToken}=authority;if(!/^[a-z0-9][a-z0-9-]{0,62}$/.test(name)||!/^app[A-Za-z0-9]+$/.test(baseId)||!/^[A-Za-z0-9._~+/-]{1,8192}={0,2}$/.test(accessToken))fail2("Airtable connection unavailable");let input;try{input=object2(serializable(raw))}catch{return fail2("Invalid Airtable input")}const mutation=["records.create","records.update","records.delete"].includes(operation2);const receipt=(ids2)=>({provider:"airtable",connection:`airtable/${name}`,baseId,table:input.table,operation:operation2.slice(8),records:ids2.map((id2)=>({id:id2}))});async function request(path2,init={},write=false){let response;try{response=await(options.fetch??fetch)(`https://api.airtable.com/v0/${path2}`,{...init,headers:{authorization:`Bearer ${accessToken}`,"content-type":"application/json"},redirect:"manual",signal:options.signal?AbortSignal.any([options.signal,AbortSignal.timeout(15000)]):AbortSignal.timeout(15000)})}catch{throw new AirtableOperationError("Airtable request acknowledgment unavailable",write?"uncertain":"unapplied")}if(!response.ok){await response.body?.cancel().catch(()=>{});throw new AirtableOperationError("Airtable request rejected",write&&(response.status>=500||response.status===408||response.status<400)?"uncertain":"unapplied")}try{if(!response.headers.get("content-type")?.toLowerCase().includes("application/json"))throw new Error;const value=object2(await response.json());const safe=serializable(value);if(Object.hasOwn(value,"error")||JSON.stringify(safe).includes(accessToken))throw new Error;return value}catch{throw new AirtableOperationError("Malformed Airtable acknowledgment",write?"uncertain":"unapplied")}}if(operation2==="tables.list"){keys2(input,[]);const tables=[],seen=new Set;let offset;do{const query2=new URLSearchParams(offset?{offset}:{});const page=await request(`meta/bases/${baseId}/tables?${query2}`);if(!Array.isArray(page.tables))fail2("Malformed Airtable tables");for(const value of page.tables){const t=object2(value);if(!tableId(t.id)||!text2(t.name)||!text2(t.primaryFieldId)||!Array.isArray(t.fields)||tables.some((existing)=>existing.id===t.id))fail2("Malformed Airtable table");const metadata=t.fields.map((value2)=>{const f=object2(value2);if(typeof f.id!=="string"||!/^fld[A-Za-z0-9]+$/.test(f.id)||!text2(f.name)||!text2(f.type))fail2("Malformed Airtable field");return{id:f.id,name:f.name,type:f.type,...f.options===undefined?{}:{options:serializable(f.options)}}});if(!metadata.some((f)=>f.id===t.primaryFieldId)||new Set(metadata.map((f)=>f.id)).size!==metadata.length)fail2("Malformed Airtable fields");tables.push({id:t.id,name:t.name,primaryFieldId:t.primaryFieldId,fields:metadata})}offset=nextOffset(page.offset,seen)}while(offset);return tables}if(!text2(input.table)||input.table==="."||input.table==="..")fail2("Invalid Airtable table");if(mutation&&!tableId(input.table))fail2("Airtable writes require a stable table ID");const path=`${baseId}/${encodeURIComponent(input.table)}`;if(operation2==="records.get"){keys2(input,["table","id"]);if(!recordId(input.id))fail2("Invalid Airtable record ID");const result3=record2(await request(`${path}/${input.id}`));if(result3.id!==input.id)fail2("Malformed Airtable record");return result3}if(operation2==="records.list"){keys2(input,["table","fields"],["table"]);if(input.fields!==undefined&&(!Array.isArray(input.fields)||!input.fields.length||input.fields.some((f)=>!text2(f))||new Set(input.fields).size!==input.fields.length))fail2("Invalid Airtable field selection");const records2=[],ids2=new Set,seen=new Set;let offset;do{const query2=new URLSearchParams;for(const field of input.fields??[])query2.append("fields[]",field);if(offset)query2.set("offset",offset);const page=await request(`${path}?${query2}`);if(!Array.isArray(page.records))fail2("Malformed Airtable records");for(const value of page.records){const r=record2(value);if(ids2.has(r.id))fail2("Malformed Airtable pagination");ids2.add(r.id);records2.push(r)}offset=nextOffset(page.offset,seen)}while(offset);return records2}if(!mutation)fail2("Unsupported Airtable operation");keys2(input,["table","records"]);if(!Array.isArray(input.records)||!input.records.length||input.records.length>10)fail2("Invalid Airtable batch");const kind=operation2.slice(8),ids=new Set;const records=input.records.map((value)=>{const r=object2(value);keys2(r,kind==="create"?["fields"]:kind==="update"?["id","expected","set"]:["id","expected"]);if(kind==="create")return{fields:fields3(r.fields,true)};if(!recordId(r.id)||ids.has(r.id))fail2("Invalid Airtable batch record ID");ids.add(r.id);const set=kind==="update"?fields3(r.set,true):undefined;if(set&&Object.values(set).some((value2)=>value2===null))fail2("Airtable guard null cannot be an update value");return{id:r.id,expected:fields3(r.expected),...set?{set}:{}}});for(const r of records){if(!("id"in r))continue;const current=record2(await request(`${path}/${r.id}`));if(current.id!==r.id)fail2("Malformed Airtable record");for(const[key,value]of Object.entries(r.expected)){if(value===null?Object.hasOwn(current.fields,key):!Object.hasOwn(current.fields,key)||!equal(current.fields[key],value))fail2("Airtable reviewed values are stale")}}await options.beforeMutation?.();const query=new URLSearchParams;if(kind==="delete")for(const id2 of ids)query.append("records[]",id2);const result2=await request(`${path}${kind==="delete"?`?${query}`:""}`,{method:kind==="create"?"POST":kind==="update"?"PATCH":"DELETE",...kind==="delete"?{}:{body:JSON.stringify({records:records.map((r)=>("id"in r)?{id:r.id,fields:r.set}:r)})}},true);const acknowledged=[],returned=[];try{if(!Array.isArray(result2.records))throw new Error;for(const value of result2.records){const r=object2(value);if(!recordId(r.id)||acknowledged.includes(r.id)||kind!=="create"&&!ids.has(r.id)||kind==="delete"&&r.deleted!==true)throw new Error;acknowledged.push(r.id);if(kind!=="delete")returned.push(record2(r))}if(acknowledged.length!==records.length)throw new Error}catch{throw new AirtableOperationError("Incomplete Airtable mutation acknowledgment",acknowledged.length?"partial":"uncertain",acknowledged.length?[receipt(acknowledged)]:[])}return{receipt:receipt(acknowledged),...kind==="delete"?{}:{records:returned}}}function nextOffset(value,seen){if(value===undefined)return;if(!text2(value)||seen.has(value))fail2("Malformed Airtable pagination");seen.add(value);return value}init_inbox_contract();var MANAGED_CONNECTION_CAPABILITY_ENV="ODDINGTON_MANAGED_CONNECTION_CAPABILITY";function managedConnections(capability){const endpoint=new URL(capability.endpoint);if(endpoint.protocol!=="http:"||endpoint.hostname!=="127.0.0.1"||!endpoint.port||endpoint.pathname!=="/"||endpoint.search||endpoint.hash||endpoint.username||endpoint.password||!/^[0-9a-f-]{36}$/.test(capability.token))throw new AirtableOperationError("Airtable capability unavailable");const transport=async(name,operation2,input)=>{let safeInput;try{safeInput=serializable(input)}catch{safeInput=null}try{const response=await fetch(new URL("airtable",endpoint),{method:"POST",redirect:"error",headers:{authorization:`Bearer ${capability.token}`,"content-type":"application/json"},body:JSON.stringify({name,operation:operation2,input:safeInput}),signal:AbortSignal.timeout(125000)});const value=await response.json();if(!response.ok)throw new AirtableOperationError("Airtable operation failed; the execution retains its evidence",value.effect==="partial"||value.effect==="uncertain"?value.effect:"unapplied",value.receipts??[]);return value}catch(error){if(error instanceof AirtableOperationError)throw error;throw new AirtableOperationError("Airtable parent acknowledgment unavailable",["records.create","records.update","records.delete"].includes(operation2)?"uncertain":"unapplied")}};return createConnections(transport)}var observer;function observeLocalRoutineEffects(value){observer=value}async function reportLocalRoutineEffect(value){await observer?.(value)}init_inbox_contract();var connections=createConnections(async(name,operation2,input)=>{try{const installed2=routineTransport();if(installed2)return await installed2.request("airtable",{name,operation:operation2,input:serializable(input)});const managed=process.env[MANAGED_CONNECTION_CAPABILITY_ENV];if(managed){const client=managedConnections(JSON.parse(managed)).airtable(name);if(operation2==="tables.list")return await client.tables.list();return await client.records[operation2.slice(8)](input)}const raw=JSON.parse(process.env[ROUTINE_CONNECTION_CREDENTIALS_ENV]??"[]");if(!Array.isArray(raw))throw new Error;const leases=raw.map((value)=>parseConnectionLease(value));if(leases.some((lease2)=>lease2.provider!=="airtable")||new Set(leases.map((lease2)=>lease2.name)).size!==leases.length)throw new Error;const lease=leases.find((lease2)=>lease2.name===name);if(!lease||lease.provider!=="airtable")throw new Error;const writing=["records.create","records.update","records.delete"].includes(operation2);const captured=serializable(input);let result2;try{result2=await executeAirtableOperation(lease,operation2,captured)}catch(error){if(writing&&error instanceof AirtableOperationError)await reportLocalRoutineEffect({type:"effect",connection:`airtable/${name}`,operation:operation2,input:captured,effect:error.effect,receipts:error.receipts});throw error}if(writing)await reportLocalRoutineEffect({type:"effect",connection:`airtable/${name}`,operation:operation2,input:captured,effect:"confirmed",receipts:[result2.receipt]});return result2}catch(error){if(error instanceof AirtableOperationError)throw error;throw new AirtableOperationError("Airtable connection unavailable")}});var LOCAL_ROUTINE_VALUE_BYTES=256*1024;if((typeof __ODDINGTON_BROWSER__==="undefined"||!__ODDINGTON_BROWSER__)&&typeof process!=="undefined"&&process.env.ODDINGTON_LOCAL_ROUTINE_HOST==="1"){Object.defineProperty(globalThis,Symbol.for("oddington.private.local-routine-host"),{value:async()=>{const{readSync,closeSync}=await import("node:fs");const{Socket}=await import("node:net");const{pathToFileURL}=await import("node:url");const chunks=[];let size=0;for(;;){const chunk=Buffer.alloc(4096),count=readSync(4,chunk,0,chunk.length,null);if(!count)break;if((size+=count)>524288)throw new Error("Invalid routine bootstrap");chunks.push(chunk.subarray(0,count))}closeSync(4);const bootstrap=JSON.parse(new TextDecoder("utf-8",{fatal:true}).decode(Buffer.concat(chunks)));const channel=new Socket({fd:3,readable:true,writable:true});let sequence=0,broken=false,settled=false;let pending;let buffer="";const fail3=()=>{broken=true;pending?.reject();pending=undefined;channel.destroy();if(!settled){if(process.platform!=="win32"){try{process.kill(-process.pid,"SIGKILL")}catch{}}process.exit(1)}};channel.on("error",fail3);channel.on("end",fail3);channel.on("close",fail3);channel.on("data",(bytes)=>{buffer+=bytes.toString("utf8");if(Buffer.byteLength(buffer)>1024)return fail3();const end=buffer.indexOf(`
75
75
  `);if(end<0)return;try{const ack=JSON.parse(buffer.slice(0,end));if(end!==buffer.length-1||!pending||Object.keys(ack).sort().join(",")!=="accepted,sequence"||ack.sequence!==pending.sequence||ack.accepted!==true)return fail3();buffer="";pending.resolve();pending=undefined}catch{fail3()}});const sendReport=async(value)=>{if(broken||pending)throw new Error("Routine reporting unavailable");const frame=JSON.stringify({...value,sequence:++sequence});if(Buffer.byteLength(frame)>LOCAL_ROUTINE_VALUE_BYTES+65536)throw new Error("Routine reporting unavailable");await new Promise((resolve,reject)=>{const timeout=setTimeout(fail3,30000);pending={sequence,resolve(){clearTimeout(timeout);resolve()},reject(){clearTimeout(timeout);reject(new Error("Routine reporting unavailable"))}};channel.write(`${frame}
76
- `,(error)=>{if(error)fail3()})})};let reporting=Promise.resolve();const report=(value)=>{const captured=structuredClone(value);const next=reporting.then(()=>sendReport(captured));reporting=next;return next};const flush=(stream)=>new Promise((resolve)=>{let timer,settled2=false;const complete=()=>{if(settled2)return;settled2=true;if(timer)clearTimeout(timer);resolve()};timer=setTimeout(complete,1000);if(stream.destroyed||stream.writableEnded)complete();else stream.write("",complete)});let exitCode=0;try{const definition=(await import(pathToFileURL(bootstrap.entry).href)).default;const contract=inspectRoutineDefinition(definition);const input=captureRoutineInput(definition,bootstrap.input);if(bootstrap.mode==="inspect")await report({type:"contract",contract});else if(bootstrap.mode==="execute"&&typeof bootstrap.runId==="string"){if(JSON.stringify(contract)!==JSON.stringify(bootstrap.contract))throw new Error("Routine definition changed");observeLocalRoutineEffects(report);const result2=await executeRoutineDefinition(definition,input,{run:{id:bootstrap.runId},data,files,connections,inbox:routinePublicationClient(),step:async(id2,summary)=>report({type:"step",id:id2,...summary===undefined?{}:{summary}})});await report({type:"finish",...result2===undefined?{}:{result:result2}})}else throw new Error("Invalid routine bootstrap")}catch{exitCode=1}finally{settled=true;observeLocalRoutineEffects(undefined);if(exitCode===0)channel.end();else channel.destroy();await Promise.allSettled([flush(process.stdout),flush(process.stderr)]);process.exit(exitCode)}}})}init_inbox_contract();var RECORD_WRITE_INPUT_LIMIT=8*1024*1024;class RoutineRecordWriteError extends Error{effect;constructor(message,effect){super(message);this.effect=effect;this.name="RoutineRecordWriteError"}}function validateRecordWrite(value){const input=serializable(value);if(!input||Array.isArray(input)||typeof input!=="object"||Object.keys(input).sort().join(",")!=="records,repository"||!validRepositoryAlias(input.repository)||!Array.isArray(input.records)||!input.records.length||input.records.length>1e4||new Set(input.records.map((edit)=>edit?.ref)).size!==input.records.length)throw new InboxContractError("Invalid record update batch");for(const edit of input.records){if(!edit||Array.isArray(edit)||typeof edit!=="object"||!validRecordRef(edit.ref))throw new InboxContractError("Invalid record edit");if("expectedVersion"in edit){if(Object.keys(edit).sort().join(",")!=="expectedVersion,ref,set"||typeof edit.expectedVersion!=="string"||!/^record-v1:[0-9a-f]{64}$/.test(edit.expectedVersion)||!edit.set||Array.isArray(edit.set)||typeof edit.set!=="object"||!Object.keys(edit.set).length)throw new InboxContractError("Invalid record edit");continue}if(Object.keys(edit).sort().join(",")!=="fields,path,ref"||typeof edit.path!=="string"||!validCreatePath(edit.path)||!edit.fields||Array.isArray(edit.fields)||typeof edit.fields!=="object"||!Object.keys(edit.fields).length)throw new InboxContractError("Invalid record creation")}return structuredClone(input)}function validateRecordUpdate(value){const input=validateRecordWrite(value);if(input.records.some((record3)=>!("expectedVersion"in record3)))throw new InboxContractError("Record creation is unavailable for this operation");return input}function validateRecordDelete(value){const input=serializable(value);if(!input||Array.isArray(input)||typeof input!=="object"||Object.keys(input).sort().join(",")!=="records,repository"||!validRepositoryAlias(input.repository)||!Array.isArray(input.records)||!input.records.length||input.records.length>1e4||new Set(input.records.map((record3)=>record3?.ref)).size!==input.records.length)throw new InboxContractError("Invalid record deletion batch");for(const record3 of input.records){if(!record3||Array.isArray(record3)||typeof record3!=="object"||Object.keys(record3).sort().join(",")!=="expectedVersion,ref"||!validRecordRef(record3.ref)||typeof record3.expectedVersion!=="string"||!/^record-v1:[0-9a-f]{64}$/.test(record3.expectedVersion))throw new InboxContractError("Invalid record deletion")}return structuredClone(input)}function validateRecordChange(value){const input=serializable(value);if(!input||Array.isArray(input)||typeof input!=="object"||Object.keys(input).sort().join(",")!=="records,repository"||!validRepositoryAlias(input.repository)||!Array.isArray(input.records)||!input.records.length||input.records.length>1e4||new Set(input.records.map((record3)=>record3?.ref)).size!==input.records.length||new TextEncoder().encode(JSON.stringify(input)).byteLength>RECORD_WRITE_INPUT_LIMIT)throw new InboxContractError("Invalid record change batch");const writes=[],deletes=[];for(const record3 of input.records){if(!record3||typeof record3!=="object"||Array.isArray(record3))throw new InboxContractError("Invalid record change");if("set"in record3||"fields"in record3)writes.push(record3);else deletes.push(record3)}if(writes.length)validateRecordWrite({repository:input.repository,records:writes});if(deletes.length)validateRecordDelete({repository:input.repository,records:deletes});return structuredClone(input)}function validateRoutineRecordWrite(value){const body=serializable(value);if(!body||typeof body!=="object"||Array.isArray(body)||Object.keys(body).sort().join(",")!=="input,requestKey"||typeof body.requestKey!=="string"||!body.requestKey.trim()||body.requestKey!==body.requestKey.trim()||body.requestKey.length>512)throw new InboxContractError("A stable routine request key is required");return{input:validateRecordChange(body.input),requestKey:body.requestKey}}function validCreatePath(value){return value===value.trim()&&value.endsWith(".md")&&!value.startsWith("/")&&value.split("/").every((segment)=>!!segment&&![".",".."].includes(segment)&&/^[a-zA-Z0-9_.-]+$/.test(segment))}class InboxOperationError extends Error{status;reason;constructor(status,reason){super(reason==="conflict"?"This question already has an accepted answer":reason==="unavailable"?"Inbox request unavailable. Retry the same action.":reason==="invalid_input"?"Invalid Inbox request":"Inbox access unavailable");this.status=status;this.reason=reason}}var INBOX_RESULT_BYTES=8*1024*1024;var INBOX_INPUT_BYTES=8192;var INBOX_LOCAL_INPUT_BYTES=256*1024;var INBOX_UUID=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function isAppQuestionOperation(operation2){return operation2==="questions.list"||operation2==="questions.answer"||operation2==="questions.searchRecords"}var operations={current:[],"items.list":[],"questions.list":[],"items.read":["itemId"],"items.see":["itemId"],"items.markDigestRead":["itemId"],"items.rename":["itemId","revision","title"],"items.setLifecycle":["itemId","revision","lifecycle"],"items.listRecipientCandidates":["itemId"],"items.addRecipient":["itemId","personId"],"questions.answer":["itemId","revision","questionId","response"],"questions.searchRecords":["itemId","revision","questionId","query"],"files.read":["itemId","fileId"]};function assert(value){if(!value)throw new Error("Invalid Inbox result")}function object3(value){assert(value&&typeof value==="object"&&!Array.isArray(value)&&[Object.prototype,null].includes(Object.getPrototypeOf(value))&&Reflect.ownKeys(value).every((key)=>{const descriptor=typeof key==="string"?Object.getOwnPropertyDescriptor(value,key):undefined;return!!descriptor?.enumerable&&"value"in descriptor}));return value}function keys3(value,allowed,required=allowed){assert(Object.keys(value).every((key)=>allowed.includes(key))&&required.every((key)=>Object.hasOwn(value,key)))}function text3(value,empty2=false){return typeof value==="string"&&(empty2||!!value.trim())}function id2(value){return typeof value==="string"&&INBOX_UUID.test(value)}function integer(value,minimum=1){return Number.isSafeInteger(value)&&Number(value)>=minimum}function date(value){return text3(value)&&Number.isFinite(Date.parse(value))}function optionalDate(value){return value===null||date(value)}function array2(value){assert(Array.isArray(value)&&Object.getPrototypeOf(value)===Array.prototype&&Reflect.ownKeys(value).length===value.length+1&&value.every((_entry,index)=>{const descriptor=Object.getOwnPropertyDescriptor(value,String(index));return!!descriptor?.enumerable&&"value"in descriptor}));return value}function json2(value,ancestors=new Set){if(value===null||typeof value==="boolean"||typeof value==="string"||typeof value==="number"&&Number.isFinite(value))return value;assert(value&&typeof value==="object"&&!ancestors.has(value));ancestors.add(value);try{if(Array.isArray(value))return array2(value).map((entry)=>json2(entry,ancestors));return Object.fromEntries(Object.entries(object3(value)).map(([key,entry])=>[key,json2(entry,ancestors)]))}finally{ancestors.delete(value)}}function recordReference(value){const record3=object3(value);keys3(record3,["repository","ref"]);assert(text3(record3.repository)&&record3.repository===record3.repository.trim()&&/^[a-z0-9][a-z0-9._/-]{0,127}$/.test(record3.repository)&&!/\.\.|\/\//.test(record3.repository)&&text3(record3.ref)&&record3.ref===record3.ref.trim()&&record3.ref.length<=512&&/^[_a-zA-Z0-9][a-zA-Z0-9_-]*(\/[_a-zA-Z0-9][a-zA-Z0-9_-]*)+$/.test(record3.ref));return record3}function responseDefinition(value){const definition=object3(value);keys3(definition,["type","source"]);assert(definition.type==="selection");const source=object3(definition.source);if(source.type==="authored"){keys3(source,["type","options","suggestions","search"],["type","options"]);const options=array2(source.options);assert(options.length>0);const values=options.map((value2)=>{const option=object3(value2);keys3(option,["value","label","description","note"],["value","label"]);assert(text3(option.value)&&option.value===option.value.trim()&&text3(option.label));if("description"in option)assert(text3(option.description));if("note"in option){const note=object3(option.note);keys3(note,["placeholder"]);assert(text3(note.placeholder))}return option.value});assert(new Set(values).size===values.length);if("search"in source||"suggestions"in source){const search=object3(source.search);keys3(search,["triggerLabel","placeholder","emptyLabel"]);assert(text3(search.triggerLabel)&&text3(search.placeholder)&&text3(search.emptyLabel));const suggestions2=array2(source.suggestions);assert(suggestions2.length<=8&&suggestions2.every((value2)=>text3(value2)&&values.includes(value2))&&new Set(suggestions2).size===suggestions2.length)}else assert(options.length<=9);return}assert(source.type==="records");keys3(source,["type","collection","refPrefix","where","display","suggestions"],["type","collection","display"]);const collection=object3(source.collection);keys3(collection,["repository","name"]);recordReference({repository:collection.repository,ref:"records/example"});assert(text3(collection.name)&&/^[a-zA-Z0-9_-]+(?:\/[a-zA-Z0-9_-]+)*$/.test(collection.name));if("refPrefix"in source)assert(text3(source.refPrefix)&&source.refPrefix.length<=512&&/^[_a-zA-Z0-9][a-zA-Z0-9_-]*(\/[_a-zA-Z0-9][a-zA-Z0-9_-]*)*\/$/.test(source.refPrefix));const where=object3(source.where??{});assert(Object.entries(where).every(([name,value2])=>/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(name)&&!["constructor","prototype"].includes(name)&&(value2===null||typeof value2==="string"||typeof value2==="boolean"||typeof value2==="number"&&Number.isFinite(value2))));const display=object3(source.display);keys3(display,["labelFields"]);const labels=array2(display.labelFields);assert(labels.length>0&&labels.length<=2&&new Set(labels).size===labels.length&&labels.every((value2)=>text3(value2)&&/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(value2)));const suggestions=array2(source.suggestions??[]);const refs=suggestions.map((value2)=>{const suggestion=object3(value2);keys3(suggestion,["record","reason"],["record"]);const record3=recordReference(suggestion.record);assert(record3.repository===collection.repository);if("reason"in suggestion)assert(text3(suggestion.reason));return record3.ref});assert(suggestions.length<=8&&new Set(refs).size===refs.length)}function inboxFile(value){const file2=object3(value);keys3(file2,["id","name","mediaType","size","sha256","details"]);assert(id2(file2.id)&&text3(file2.name)&&!/[\x00-\x1f\x7f/\\]/.test(file2.name)&&text3(file2.mediaType)&&/^[a-z0-9!#$&^_.+-]+\/[a-z0-9!#$&^_.+-]+$/.test(file2.mediaType)&&integer(file2.size,0)&&file2.size<=25*1024*1024&&typeof file2.sha256==="string"&&/^[0-9a-f]{64}$/.test(file2.sha256));const details=object3(file2.details);if(details.kind==="csv"){keys3(details,["kind","encoding","delimiter","headerRow","dataRows"]);assert(file2.mediaType==="text/csv"&&["utf-8","windows-1252"].includes(String(details.encoding))&&[",",";","\t"].includes(String(details.delimiter))&&integer(details.headerRow,0)&&integer(details.dataRows,0))}else if(details.kind==="pdf"){keys3(details,["kind","pages"],["kind"]);assert(file2.mediaType==="application/pdf"&&(!("pages"in details)||integer(details.pages)))}else{keys3(details,["kind"]);assert(details.kind==="other"&&!["text/csv","application/pdf"].includes(file2.mediaType))}}function fields4(value){const labels=array2(value).map((value2)=>{const field=object3(value2);keys3(field,["label","value"]);assert(text3(field.label)&&text3(field.value));return field.label});assert(new Set(labels).size===labels.length)}function block(value){const entry=object3(value);if(entry.kind==="rich-text"){keys3(entry,["kind","markdown"]);assert(text3(entry.markdown));return}if(entry.kind==="asks"){keys3(entry,["kind","problem","asks"]);const asks=array2(entry.asks);assert(text3(entry.problem)&&asks.length>0&&asks.every(id2)&&new Set(asks).size===asks.length);return}assert(["record","records","files"].includes(String(entry.kind)));keys3(entry,["kind","label","initiallyExpanded",...entry.kind==="record"?["record","view"]:entry.kind==="records"?["records","view"]:["files"]],["kind","label",entry.kind==="record"?"record":entry.kind==="records"?"records":"files"]);assert(text3(entry.label)&&(!("initiallyExpanded"in entry)||typeof entry.initiallyExpanded==="boolean")&&(!("view"in entry)||text3(entry.view)&&entry.view===entry.view.trim()));if(entry.kind==="record"){const record3=object3(entry.record);keys3(record3,["ref","title","fields"]);assert(text3(record3.ref)&&record3.ref===record3.ref.trim()&&text3(record3.title));fields4(record3.fields);return}if(entry.kind==="records"){const records=array2(entry.records);const refs=records.map((value2)=>{const record3=object3(value2);keys3(record3,["ref","title","description","facts","view"],["ref","title"]);assert(text3(record3.ref)&&record3.ref===record3.ref.trim()&&text3(record3.title));if("description"in record3)assert(text3(record3.description));if("facts"in record3)fields4(record3.facts);if("view"in record3)assert(text3(record3.view)&&record3.view===record3.view.trim());return record3.ref});assert(records.length>0&&new Set(refs).size===refs.length);return}const files2=array2(entry.files);files2.forEach(inboxFile);assert(files2.length>0&&new Set(files2.map((value2)=>object3(value2).id)).size===files2.length)}function response(value){const answer=object3(value);assert(Object.keys(answer).every((key)=>["selection","note"].includes(key)));if(typeof answer.selection==="string")assert(text3(answer.selection)&&answer.selection===answer.selection.trim());else recordReference(answer.selection);if(Object.hasOwn(answer,"note"))assert(text3(answer.note));return answer}function parseInboxRequest(value){try{const envelope=object3(value);assert(Object.keys(envelope).sort().join(",")==="input,operation");assert(typeof envelope.operation==="string"&&Object.hasOwn(operations,envelope.operation));const operation2=envelope.operation;const input=object3(envelope.input);const required=operations[operation2];assert(required.every((key)=>Object.hasOwn(input,key))&&Object.keys(input).every((key)=>required.includes(key)||operation2==="questions.searchRecords"&&key==="selected"||(operation2==="items.list"||operation2==="questions.list")&&key==="beforeNumber"));for(const key of["itemId","personId","fileId"])if(key in input)assert(id2(input[key]));if("revision"in input)assert(integer(input.revision));if("beforeNumber"in input)assert(integer(input.beforeNumber));if("questionId"in input)assert(text3(input.questionId)&&input.questionId===input.questionId.trim());if("title"in input)assert(text3(input.title));if("lifecycle"in input)assert(input.lifecycle==="open"||input.lifecycle==="closed");if("query"in input)assert(text3(input.query,true)&&input.query.length<=256);if("selected"in input)recordReference(input.selected);if("response"in input)response(input.response);assert(new TextEncoder().encode(JSON.stringify(envelope)).byteLength<=INBOX_INPUT_BYTES);return{operation:operation2,input}}catch{throw new InboxOperationError(400,"invalid_input")}}function parseInboxCurrent(value){const current=object3(value),workspace=object3(current.workspace),viewer=object3(current.viewer);assert(id2(workspace.id)&&text3(workspace.slug)&&/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(workspace.slug)&&text3(workspace.name)&&text3(workspace.locale)&&text3(workspace.timezone));assert(id2(viewer.id)&&text3(viewer.name)&&text3(viewer.email));return{workspace:{id:workspace.id,slug:workspace.slug,name:workspace.name,locale:workspace.locale,timezone:workspace.timezone},viewer:{id:viewer.id,name:viewer.name,email:viewer.email}}}function parseInboxItem(value){const item=object3(json2(value));assert(id2(item.id)&&id2(item.workspaceId)&&integer(item.number)&&integer(item.revision)&&integer(item.activityVersion,0)&&["ask","digest"].includes(String(item.kind))&&["open","closed"].includes(String(item.lifecycle))&&text3(item.title)&&text3(item.description,true)&&text3(item.author)&&date(item.publishedAt)&&optionalDate(item.seenAt)&&optionalDate(item.digestReadAt));if(item.outcome!==null)assert(text3(object3(item.outcome).outcome));array2(item.body).forEach(block);array2(item.views).forEach((value2)=>{const view=object3(value2);assert(text3(view.id)&&text3(view.view)&&text3(view.implementation));json2(view.input)});array2(item.people).forEach((value2)=>{const person=object3(value2);assert(id2(person.id)&&text3(person.name))});array2(item.questions).forEach((value2)=>{const question2=object3(value2);assert(text3(question2.id)&&id2(question2.to)&&text3(question2.prompt)&&(question2.instructions===null||text3(question2.instructions,true))&&typeof question2.available==="boolean");responseDefinition(question2.response);assert(array2(question2.allowedResponders).every(id2));if(question2.acceptedResponse!==null){const accepted=object3(question2.acceptedResponse);assert(id2(accepted.id)&&id2(accepted.userId)&&date(accepted.acceptedAt));response(accepted.response);if(accepted.label===null)delete accepted.label;else if("label"in accepted)assert(text3(accepted.label));if("acceptanceOrder"in accepted)assert(integer(accepted.acceptanceOrder))}if(question2.execution!==null){const execution=object3(question2.execution);assert(id2(execution.id)&&["pending","running","completed","failed"].includes(String(execution.state))&&integer(execution.attempt,0));if("consequence"in execution){const consequence=object3(execution.consequence);assert(["pending","running","applied","no-write","stopped","partial","uncertain"].includes(String(consequence.state))&&(consequence.phase===null||["loading","invoking","committing"].includes(String(consequence.phase)))&&date(consequence.updatedAt)&&typeof consequence.needsReconciliation==="boolean"&&(consequence.reason===null||text3(consequence.reason,true)));array2(consequence.evidence).forEach((value3)=>{const receipt=object3(value3);assert(text3(receipt.repository)&&text3(receipt.commit)&&text3(receipt.diff,true))})}}});array2(item.linkedAsks).forEach((value2)=>{const linked=object3(value2);assert(id2(linked.id));if(linked.state==="unavailable")assert(typeof linked.done==="boolean");else{assert(["yours","done","open","theirs"].includes(String(linked.state))&&text3(linked.title));if(linked.state==="theirs"){const assignee=object3(linked.assignee);assert(id2(assignee.id)&&text3(assignee.name))}}});array2(item.activity).forEach((value2)=>{const event=object3(value2);assert(integer(event.id)&&text3(event.type)&&(event.actorId===null||id2(event.actorId))&&(event.questionId===null||text3(event.questionId))&&integer(event.revision)&&date(event.createdAt));object3(event.data)});array2(item.work).forEach((value2)=>{const work=object3(value2);assert(id2(work.id)&&text3(work.questionId)&&text3(work.reason)&&optionalDate(work.settledAt))});return item}function parseAnswerableQuestion(value){const entry=object3(json2(value));keys3(entry,["item","origin","question","recordRefs"]);const item=object3(entry.item);keys3(item,["id","number","revision","title","href"]);assert(id2(item.id)&&integer(item.number)&&integer(item.revision)&&text3(item.title)&&text3(item.href));const link=new URL(item.href);const slug=link.hostname.slice(0,-".oddington.ai".length);assert(link.hostname.endsWith(".oddington.ai")&&slug.length<=63&&/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(slug)&&!["auth","www","api","os"].includes(slug)&&item.href===`https://${slug}.oddington.ai/inbox/${item.id}`);const origin=object3(entry.origin);keys3(origin,["routine"]);assert(text3(origin.routine)&&origin.routine===origin.routine.trim());const question2=object3(entry.question);keys3(question2,["id","prompt","instructions","response"]);assert(text3(question2.id)&&question2.id===question2.id.trim()&&text3(question2.prompt)&&(question2.instructions===null||text3(question2.instructions,true)));responseDefinition(question2.response);const refs=array2(entry.recordRefs);assert(refs.every((ref)=>text3(ref)&&ref===ref.trim())&&new Set(refs).size===refs.length);return entry}function parseInboxAcceptance(value){const accepted=object3(value);assert(id2(accepted.responseId)&&date(accepted.acceptedAt));if("executionId"in accepted)assert(id2(accepted.executionId));if("acceptanceOrder"in accepted)assert(integer(accepted.acceptanceOrder));if("label"in accepted)assert(text3(accepted.label));return accepted}function parseInboxResult(operation2,value){if(operation2==="current")return parseInboxCurrent(value);if(operation2==="questions.list"){const page=object3(value);keys3(page,["questions","nextBeforeNumber"]);const questions=array2(page.questions).map(parseAnswerableQuestion);assert(page.nextBeforeNumber===null||integer(page.nextBeforeNumber));return{questions,nextBeforeNumber:page.nextBeforeNumber}}if(operation2==="items.read")return parseInboxItem(value);if(operation2==="items.list"){const page=object3(value);const items=array2(page.items).map(parseInboxItem);assert(items.length<=100&&(page.nextBeforeNumber===null||integer(page.nextBeforeNumber)));return{items,nextBeforeNumber:page.nextBeforeNumber}}if(operation2==="items.see"){assert(date(value));return}if(operation2==="items.markDigestRead"){const read2=object3(value);assert(integer(read2.activityId)&&date(read2.readAt));return read2}if(operation2==="items.rename"||operation2==="items.setLifecycle"){const update=object3(value);const item=parseInboxItem(update.item);assert((update.activityId===null||integer(update.activityId))&&optionalDate(update.changedAt));return{...update,item}}if(operation2==="items.listRecipientCandidates"){const candidates=array2(value);candidates.forEach((value2)=>{const person=object3(value2);assert(id2(person.id)&&text3(person.name)&&text3(person.email))});assert(new Set(candidates.map((value2)=>object3(value2).id)).size===candidates.length);return candidates}if(operation2==="items.addRecipient"){const addition=object3(value);const item=parseInboxItem(addition.item);assert(id2(addition.addedPersonId)&&item.people.some((person)=>person.id===addition.addedPersonId));return{...addition,item}}if(operation2==="questions.answer")return parseInboxAcceptance(value);if(operation2==="questions.searchRecords"){const result2=object3(value);assert(text3(result2.recordType)&&integer(result2.eligibleCount,0)&&integer(result2.matchCount,0)&&Number(result2.matchCount)<=Number(result2.eligibleCount));const labeled=(value2)=>{const record3=object3(value2);recordReference({repository:record3.repository,ref:record3.ref});assert(text3(record3.label));if("reason"in record3)assert(text3(record3.reason))};array2(result2.matches).forEach(labeled);array2(result2.suggestions).forEach(labeled);if("selected"in result2)labeled(result2.selected);return result2}throw new Error("File content is not a JSON result")}async function limitedBody(request,limit,timeoutMs){if(!request.body)return new Uint8Array;const reader=request.body.getReader();let expired=false;const timer=timeoutMs===undefined?undefined:setTimeout(()=>{expired=true;reader.cancel().catch(()=>{})},timeoutMs);const chunks=[];let length=0;try{while(true){const{done,value}=await reader.read();if(done)break;length+=value.byteLength;if(length>limit){await reader.cancel();return}chunks.push(value)}if(expired)return;const contents=new Uint8Array(length);let offset=0;for(const chunk of chunks){contents.set(chunk,offset);offset+=chunk.byteLength}return contents}finally{if(timer!==undefined)clearTimeout(timer)}}var UUID=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function parseInboxHostContext(value){if(!value||typeof value!=="object"||Array.isArray(value))throw new Error("Inbox context unavailable");const v=value;if(v.kind!=="inbox"&&v.kind!=="focused"||Object.keys(v).sort().join(",")!==(v.kind==="inbox"?"generation,kind,memberId,workspaceId":"appId,generation,kind,memberId,workspaceId")||typeof v.workspaceId!=="string"||!UUID.test(v.workspaceId)||typeof v.memberId!=="string"||!UUID.test(v.memberId)||typeof v.generation!=="string"||!UUID.test(v.generation)||v.kind==="focused"&&(typeof v.appId!=="string"||!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(v.appId)))throw new Error("Inbox context unavailable");const base={workspaceId:v.workspaceId,memberId:v.memberId,generation:v.generation};return Object.freeze(v.kind==="inbox"?{...base,kind:"inbox"}:{...base,kind:"focused",appId:v.appId})}class InboxContextError extends Error{status;constructor(status){super("Inbox context unavailable");this.status=status}}var contexts=new WeakMap;function resolveHostedInboxContext(host){if(!host.binding||!host.memberId)throw new Error("Inbox context unavailable");let resolve=contexts.get(host.binding);if(!resolve){resolve=hostedInboxContext();contexts.set(host.binding,resolve)}return resolve({...host,memberId:host.memberId})}function hostedInboxContext(){let installed2;let revision=0,issued=0,settled=0;return async(host)=>{const started=++issued;const check=()=>{if(!host.isCurrent()||host.expiresAt<=Date.now())throw new Error("Inbox context unavailable")};check();const response2=await fetch(`${host.endpoint}/api/inbox/context`,{method:"GET",headers:{authorization:`Bearer ${host.accessToken}`},credentials:"omit",redirect:"error",cache:"no-store",signal:AbortSignal.timeout(15000)});try{check();if(response2.status===401||response2.status===403){installed2=undefined;revision++;settled=Math.max(settled,started)}if(!response2.ok||response2.status!==200)throw new InboxContextError(response2.status);const bytes=await limitedBody(response2,4096);check();if(!bytes)throw new Error("Inbox context unavailable");const context=parseInboxHostContext(JSON.parse(new TextDecoder("utf-8",{fatal:true}).decode(bytes)));if(context.memberId!==host.memberId)throw new Error("Inbox context unavailable");if(JSON.stringify(installed2)!==JSON.stringify(context)){if(started<settled)throw new Error("Inbox context unavailable");installed2=context;revision++}settled=Math.max(settled,started);const current=revision;return Object.freeze({context,isCurrent:()=>host.isCurrent()&&host.expiresAt>Date.now()&&current===revision})}finally{response2.body?.cancel().catch(()=>{})}}}var sessionKey="_os.app.session";var responseChecks=new WeakMap;class AppResponseReadError extends Error{}class AppContextDenied extends Error{}class AppRenewalUnavailable extends Error{}async function appResponse(response2,maximum,signal){if(signal.aborted||!response2.body||response2.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase()!=="application/json")throw new Error;const reader=response2.body.getReader();const abort=()=>{reader.cancel().catch(()=>{})};signal.addEventListener("abort",abort,{once:true});let bytes=0,text4="";const decoder=new TextDecoder("utf-8",{fatal:true});try{while(true){let chunk;try{chunk=await reader.read()}catch{throw new AppResponseReadError}if(signal.aborted)throw new Error;if(chunk.done){const value=JSON.parse(text4+decoder.decode());await responseChecks.get(response2)?.(value);if(signal.aborted)throw new Error;return value}bytes+=chunk.value.byteLength;if(bytes>maximum){abort();throw new Error}text4+=decoder.decode(chunk.value,{stream:true})}}finally{signal.removeEventListener("abort",abort);reader.releaseLock()}}function isAppOrigin(value){try{const url=new URL(value);return url.protocol==="http:"&&url.hostname==="127.0.0.1"&&Boolean(url.port)&&url.port!=="0"&&url.origin===value}catch{return false}}function appContext(origin,active2){let binding;let credential;let denied=false;const controller=new AbortController;let expiry;let startup;let renewalTimer;let renewal;let observation;let resolution2;let disposed=false;const stored=()=>globalThis.localStorage.getItem(sessionKey);const alive=()=>{try{return!denied&&!disposed&&active2()&&globalThis.location.origin===origin&&(!binding||binding.expiresAt>Date.now())}catch{return false}};const cancel=()=>{controller.abort();clearTimeout(expiry);clearTimeout(startup);clearTimeout(renewalTimer);clearInterval(monitor);globalThis.removeEventListener?.("storage",storageChanged)};const invalidate=()=>{denied=true;cancel();try{if(!disposed&&active2()&&globalThis.location.origin===origin&&(!credential||globalThis.localStorage.getItem(sessionKey)===credential)){globalThis.localStorage.removeItem(sessionKey)}}catch{}};const current=()=>{try{return alive()&&stored()===credential}catch{return false}};const sameSession=(value)=>!binding||value.appId===binding.appId&&value.memberId===binding.memberId&&value.workspace===binding.workspace&&value.sessionId===binding.sessionId;const bounded=(value)=>validBinding(value)&&value.expiresAt>Date.now()&&value.expiresAt<=Date.now()+600000&&sameSession(value);async function proof(candidate,signal=controller.signal){if(!alive()||!/^[A-Za-z0-9_-]{43}$/.test(candidate))throw new Error;const url=`${origin}/_os/app/context`;const response2=await fetch(url,{credentials:"omit",redirect:"error",cache:"no-store",referrerPolicy:"no-referrer",headers:{authorization:`Bearer ${candidate}`},signal});if(response2.redirected||response2.url&&response2.url!==url)throw new Error;if(response2.status===401||response2.status===403)throw new AppContextDenied;if(!response2.ok)throw new Error;const value=await appResponse(response2,4096,signal);if(!alive()||!bounded(value))throw new Error;return value}function install(value,candidate){binding={...value};credential=candidate;clearTimeout(expiry);clearTimeout(renewalTimer);const remaining=binding.expiresAt-Date.now();expiry=setTimeout(invalidate,remaining);renewalTimer=setTimeout(()=>{renew()},remaining-Math.min(60000,remaining/5))}async function synchronize(){if(!alive())throw new Error;if(!credential)return;if(stored()===credential)return;if(!binding)throw new Error;if(observation)return observation;observation=(async()=>{while(alive()){const candidate=stored();if(!candidate)throw new Error;let value;try{value=await proof(candidate)}catch{if(stored()!==candidate)continue;throw new Error}if(stored()!==candidate)continue;install(value,candidate);return}throw new Error})();try{await observation}catch{invalidate();throw new Error("Local app context unavailable.")}finally{observation=undefined}}async function renew(){if(renewal||!binding||!alive())return;renewal=(async()=>{const deadline=binding.expiresAt;const requestController=new AbortController;const abort=()=>requestController.abort();controller.signal.addEventListener("abort",abort,{once:true});const timeout=setTimeout(abort,Math.min(20000,deadline-Date.now()));const previous=credential;try{await synchronize();if(credential!==previous)return;const url=`${origin}/_os/app/renew`;let response2;try{response2=await fetch(url,{method:"POST",credentials:"omit",redirect:"error",cache:"no-store",referrerPolicy:"no-referrer",signal:requestController.signal,headers:{authorization:`Bearer ${previous}`}})}catch{throw new AppRenewalUnavailable}if(response2.redirected||response2.url&&response2.url!==url)throw new Error;const value=await appResponse(response2,4096,requestController.signal);if(response2.status===503&&value&&typeof value==="object"&&!Array.isArray(value)&&Object.keys(value).join(",")==="error"&&"error"in value&&value.error==="renewal_unavailable")throw new AppRenewalUnavailable;if(response2.status===403&&value&&typeof value==="object"&&!Array.isArray(value)&&Object.keys(value).join(",")==="error"&&"error"in value&&value.error==="renewal_conflict"){while(alive()&&stored()===previous&&!requestController.signal.aborted){await new Promise((resolve2,reject)=>{const abortWait=()=>{clearTimeout(timer);reject(new Error)};const timer=setTimeout(()=>{requestController.signal.removeEventListener("abort",abortWait);resolve2()},100);requestController.signal.addEventListener("abort",abortWait,{once:true})})}if(requestController.signal.aborted)throw new Error;await synchronize();return}if(!response2.ok)throw new Error;if(!alive()||Date.now()>=deadline||!value||typeof value!=="object"||Array.isArray(value)||Object.keys(value).sort().join(",")!=="context,credential")throw new Error;const result2=value;if(!bounded(result2.context)||typeof result2.credential!=="string"||!/^[A-Za-z0-9_-]{43}$/.test(result2.credential)||result2.credential===previous)throw new Error;if(stored()!==previous){await synchronize();return}globalThis.localStorage.setItem(sessionKey,result2.credential);install(result2.context,result2.credential)}catch(error){try{if(alive()&&stored()&&stored()!==previous){await synchronize();return}}catch{}try{if(alive()&&stored()&&stored()!==previous){await synchronize();return}}catch{}if((error instanceof AppRenewalUnavailable||error instanceof AppResponseReadError||requestController.signal.aborted)&&current()&&Date.now()<deadline){renewalTimer=setTimeout(()=>{renew()},Math.min(5000,(deadline-Date.now())/5))}else invalidate()}finally{clearTimeout(timeout);controller.signal.removeEventListener("abort",abort)}})();try{await renewal}finally{renewal=undefined}}const storageChanged=()=>{if(!credential)return;if(!alive()){invalidate();return}synchronize().catch(invalidate)};const monitor=setInterval(()=>{storageChanged()},100);globalThis.addEventListener?.("storage",storageChanged);const dispose=()=>{disposed=true;cancel()};async function requestData(operation2,input){try{if(operation2!=="data/query"||!current())throw new Error;const url=`${origin}/_os/app/data`;const admitted=credential;const response2=await fetch(url,{method:"POST",credentials:"omit",redirect:"error",cache:"no-store",referrerPolicy:"no-referrer",signal:controller.signal,headers:{"content-type":"application/json",authorization:`Bearer ${credential}`},body:JSON.stringify(input)});await synchronize();while(alive()&&stored()!==credential)await synchronize();if(!current()||response2.redirected||response2.url&&response2.url!==url)throw new Error;if(response2.status===401||response2.status===403){if(admitted===credential)invalidate();throw new DataOperationError("access_denied")}const result2=await appResponse(response2,Number.MAX_SAFE_INTEGER,controller.signal);await synchronize();while(alive()&&stored()!==credential)await synchronize();if(!current())throw new Error;if(!response2.ok)throw dataTransportError(response2.status,result2);return result2}catch(error){if(error instanceof DataOperationError)throw error;if(!current()||controller.signal.aborted)throw new DataOperationError("context_unavailable");throw new DataOperationError("unavailable",true)}}async function requestInbox(operation2,input){if(!["questions.list","questions.answer","questions.searchRecords"].includes(operation2))throw new Error("Inbox operation unavailable");return requestChecked(`${origin}/_os/app/inbox`,{method:"POST",body:JSON.stringify({operation:operation2,input})},true)}async function requestRoutine(key,suffix,init={}){return requestChecked(`${origin}/_os/app/routines/${encodeURIComponent(key)}/${suffix}`,init)}async function requestChecked(url,init,inbox=false){if(!current()){invalidate();throw new Error("Local app context unavailable.")}const admitted=credential;const response2=await fetch(url,{...init,credentials:"omit",redirect:"error",cache:"no-store",referrerPolicy:"no-referrer",signal:controller.signal,headers:{...init.body===undefined?{}:{"content-type":"application/json"},authorization:`Bearer ${credential}`}});await synchronize();while(alive()&&stored()!==credential)await synchronize();if(!current()||response2.redirected||response2.url&&response2.url!==url){invalidate();throw new Error("Local app context unavailable.")}if((response2.status===401||!inbox&&response2.status===403)&&admitted===credential)invalidate();responseChecks.set(response2,async(value)=>{await synchronize();while(alive()&&stored()!==credential)await synchronize();if(admitted===credential&&value&&typeof value==="object"&&"error"in value&&value.error==="authority_unavailable")invalidate()});return response2}function context(){const issued=credential;return{kind:"local",...binding,get expiresAt(){return binding.expiresAt},isCurrent:current,signal:controller.signal,invalidate:()=>{if(issued===credential)invalidate()},requestRoutine,requestData,requestInbox,requestAvailability:(key)=>requestRoutine(key,"availability",{method:"GET"})}}const resolveOnce=async()=>{let attempted;try{if(denied||!active2()||globalThis.location.origin!==origin)throw new Error;if(credential)await synchronize();const candidate=stored();if(!candidate||!/^[A-Za-z0-9_-]{43}$/.test(candidate))throw new Error;credential=candidate;attempted=candidate;if(!current())throw new Error;const value=await proof(candidate);if(stored()!==candidate||credential!==candidate){if(!binding)binding={...value};await synchronize();return context()}if(!current())throw new Error;if(binding&&value.expiresAt>binding.expiresAt)throw new Error;if(!binding||value.expiresAt!==binding.expiresAt)install(value,candidate);return context()}catch(error){try{if(binding&&current()&&attempted&&attempted!==credential)return context();if(binding&&alive()&&stored()&&stored()!==credential){await synchronize();return context()}}catch{}if(error instanceof AppContextDenied&&binding&&alive()&&renewal)throw new Error("Local app context unavailable.");invalidate();throw new Error("Local app context unavailable.")}};const resolve=()=>{if(resolution2)return resolution2;resolution2=resolveOnce().finally(()=>{resolution2=undefined});return resolution2};const start=()=>{startup=setTimeout(()=>{if(alive()&&!resolution2&&!binding)resolve().catch(()=>{})},0)};return{resolve,start,invalidate,dispose}}function validBinding(value){if(!value||typeof value!=="object"||Array.isArray(value)||Object.keys(value).sort().join(",")!=="appId,expiresAt,memberId,sessionId,workspace")return false;const binding=value;return typeof binding.appId==="string"&&/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(binding.appId)&&typeof binding.workspace==="string"&&/^[a-z0-9][a-z0-9-]{0,62}$/.test(binding.workspace)&&typeof binding.memberId==="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(binding.memberId)&&typeof binding.sessionId==="string"&&/^[A-Za-z0-9_-]{43}$/.test(binding.sessionId)&&typeof binding.expiresAt==="number"&&Number.isFinite(binding.expiresAt)}var unavailable2=()=>new InboxOperationError(503,"unavailable");var stale=()=>new InboxOperationError(401,"authority_unavailable");function hostFailure(error,context){if(!context.isCurrent()||context.expiresAt<=Date.now()||error instanceof InboxContextError&&error.status===401)return stale();return error instanceof InboxContextError&&error.status===403?new InboxOperationError(403,"access_denied"):unavailable2()}async function send2(operation2,input){const envelope=parseInboxRequest({operation:operation2,input});let context;try{context=await resolveAppContext()}catch{throw stale()}if(context.kind==="local"){if(!isAppQuestionOperation(operation2))throw new InboxOperationError(403,"access_denied");const check2=()=>{if(!context.isCurrent()||context.signal.aborted||context.expiresAt<=Date.now())throw stale()};try{const response2=await context.requestInbox(operation2,envelope.input);const value=await appResponse(response2,INBOX_RESULT_BYTES,context.signal);check2();if(!response2.ok)throw new InboxOperationError([400,401,403,409].includes(response2.status)?response2.status:503,response2.status===400?"invalid_input":response2.status===401?"authority_unavailable":response2.status===403?"access_denied":response2.status===409?"conflict":"unavailable");if(response2.status!==200)throw unavailable2();const parsed=parseInboxResult(operation2,value);check2();if(operation2==="questions.answer"&&typeof envelope.input.response.selection==="object"&&!parsed.label?.trim())throw unavailable2();return parsed}catch(error){check2();throw error instanceof InboxOperationError?error:unavailable2()}}if(context.endpoint!==`https://${context.workspace}.oddington.ai`||["auth","www","api","os"].includes(context.workspace))throw stale();let host;try{host=await resolveHostedInboxContext(context)}catch(error){throw hostFailure(error,context)}if(!host)throw unavailable2();const check=()=>{if(!context.isCurrent()||!host.isCurrent()||!Number.isFinite(context.expiresAt)||context.expiresAt<=Date.now())throw stale()};check();if(host.context.kind==="focused"&&!isAppQuestionOperation(operation2))throw new InboxOperationError(403,"access_denied");try{const response2=await fetch(`${context.endpoint}/api/inbox`,{method:"POST",headers:{authorization:`Bearer ${context.accessToken}`,"content-type":"application/json"},body:JSON.stringify(envelope),redirect:"error",cache:"no-store",signal:AbortSignal.timeout(30000)});try{check()}catch(error){response2.body?.cancel().catch(()=>{});throw error}if(!response2.ok){response2.body?.cancel().catch(()=>{});throw new InboxOperationError([400,401,403,409].includes(response2.status)?response2.status:503,response2.status===400?"invalid_input":response2.status===401?"authority_unavailable":response2.status===403?"access_denied":response2.status===409?"conflict":"unavailable")}if(response2.status!==200){response2.body?.cancel().catch(()=>{});throw unavailable2()}if(operation2==="files.read"){if(!response2.body)throw unavailable2();const source=response2.body;let reader;let size=0;const cancel=async(reason)=>{try{await(reader?reader.cancel(reason):source.cancel(reason))}finally{reader?.releaseLock()}};const body=new ReadableStream({async pull(controller){try{check();reader??=source.getReader();const next=await reader.read();check();if(next.done){reader.releaseLock();controller.close();return}size+=next.value.byteLength;if(size>25*1024*1024)throw unavailable2();controller.enqueue(next.value)}catch(error){controller.error(error);await cancel(error).catch(()=>{})}},cancel},{highWaterMark:0});return new Response(body,{status:response2.status,headers:response2.headers})}const bytes=await limitedBody(response2,INBOX_RESULT_BYTES);check();if(!bytes)throw unavailable2();const value=JSON.parse(new TextDecoder("utf-8",{fatal:true}).decode(bytes));const parsed=parseInboxResult(operation2,value);check();if(operation2==="current"&&parsed.workspace.slug!==context.workspace)throw unavailable2();if("itemId"in envelope.input){const item=operation2==="items.read"?parsed:operation2==="items.rename"||operation2==="items.setLifecycle"||operation2==="items.addRecipient"?parsed.item:undefined;if(item&&(item.id!==envelope.input.itemId||("revision"in envelope.input)&&item.revision!==envelope.input.revision))throw unavailable2();if(operation2==="items.addRecipient"&&parsed.addedPersonId!==envelope.input.personId)throw unavailable2();if(operation2==="questions.answer"&&typeof envelope.input.response.selection==="object"&&!parsed.label?.trim())throw unavailable2()}return parsed}catch(error){check();throw error instanceof InboxOperationError?error:unavailable2()}}var inbox={current:async()=>await send2("current",{}),items:{async list(){const items=[];let beforeNumber;let initial;try{initial=await resolveAppContext()}catch{throw stale()}let host;try{host=initial.kind!=="local"&&await resolveHostedInboxContext(initial)}catch(error){throw hostFailure(error,initial)}if(initial.kind==="local")throw new InboxOperationError(403,"access_denied");if(!host)throw unavailable2();const check=()=>{if(!initial.isCurrent()||!host.isCurrent()||initial.expiresAt<=Date.now())throw stale()};do{check();const page=await send2("items.list",beforeNumber===undefined?{}:{beforeNumber});check();if(beforeNumber!==undefined&&(page.items.some((item)=>item.number>=beforeNumber)||page.nextBeforeNumber!==null&&page.nextBeforeNumber>=beforeNumber))throw unavailable2();items.push(...page.items);if(page.nextBeforeNumber===null)return items;beforeNumber=page.nextBeforeNumber}while(true)},read:async(itemId)=>await send2("items.read",{itemId}),see:async(itemId)=>{await send2("items.see",{itemId})},markDigestRead:async(itemId)=>await send2("items.markDigestRead",{itemId}),rename:async(input)=>await send2("items.rename",input),setLifecycle:async(input)=>await send2("items.setLifecycle",input),listRecipientCandidates:async(itemId)=>await send2("items.listRecipientCandidates",{itemId}),addRecipient:async(input)=>await send2("items.addRecipient",input)},questions:{async list(){const questions=[];let beforeNumber;let initial;try{initial=await resolveAppContext()}catch{throw stale()}let host;try{host=initial.kind!=="local"&&await resolveHostedInboxContext(initial)}catch(error){throw hostFailure(error,initial)}if(initial.kind!=="local"&&!host)throw unavailable2();const check=()=>{if(!initial.isCurrent()||host&&!host.isCurrent()||initial.expiresAt<=Date.now())throw stale()};do{check();const page=await send2("questions.list",beforeNumber===undefined?{}:{beforeNumber});check();if(page.questions.some((question2)=>question2.item.href!==`https://${initial.workspace}.oddington.ai/inbox/${question2.item.id}`)||beforeNumber!==undefined&&(page.questions.some((question2)=>question2.item.number>=beforeNumber)||page.nextBeforeNumber!==null&&page.nextBeforeNumber>=beforeNumber))throw unavailable2();questions.push(...page.questions);if(page.nextBeforeNumber===null)return questions;beforeNumber=page.nextBeforeNumber}while(true)},answer:async(input)=>await send2("questions.answer",input),searchRecords:async(input)=>await send2("questions.searchRecords",input)},files:{read:async(input)=>await send2("files.read",input)}};var sources=new WeakMap;function registerBrowserAuth(handle,source){sources.set(handle,source)}function browserAuthSource(handle){return sources.get(handle)}var installedDispose;function init({auth:input}){installedDispose?.();const registered=browserAuthSource(input);const auth=registered??input;if(!registered&&input&&"getState"in input||typeof auth?.getSession!=="function"||typeof auth?.onAuthStateChange!=="function"){installedDispose=installMemberContext(async()=>{throw new Error("Hosted Data context unavailable.")});return}let endpoint;let workspace;let localOrigin;try{const url=new URL(globalThis.location.origin);if(isAppOrigin(globalThis.location.origin))localOrigin=url.origin;const slug=url.hostname.endsWith(".oddington.ai")?url.hostname.slice(0,-".oddington.ai".length):"";if(url.protocol==="https:"&&!url.port&&!url.username&&!url.password&&!url.search&&!url.hash&&url.pathname==="/"&&/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/.test(slug)&&slug!=="auth"){endpoint=url.origin;workspace=slug}}catch{}let active2=true;let revision=0;let person;let token;const binding={};const local=localOrigin?appContext(localOrigin,()=>active2):undefined;let subscription;let stopDisposal;const resolve=async()=>{if(local)return local.resolve();if(!active2||!endpoint||!workspace||globalThis.location.origin!==endpoint)throw new Error("Hosted Data context unavailable.");const started=revision;const{data:{session},error}=await auth.getSession();if(!active2||globalThis.location.origin!==endpoint||started!==revision||error||!session||person!==undefined&&person!==session.user.id){throw new Error("Hosted Data context unavailable.")}const expiresAt=(session.expires_at??0)*1000;if(!Number.isFinite(expiresAt)||expiresAt<=Date.now()||!session.user.id){throw new Error("Hosted Data context unavailable.")}person=session.user.id;const isCurrent=()=>active2&&globalThis.location.origin===endpoint&&revision===started&&person===session.user.id;return{workspace,endpoint,accessToken:session.access_token,expiresAt,isCurrent,memberId:session.user.id,binding}};const uninstall=installMemberContext(resolve);const dispose=()=>{if(!active2)return;active2=false;local?.dispose();revision++;subscription?.unsubscribe();stopDisposal?.();uninstall();if(installedDispose===dispose)installedDispose=undefined};installedDispose=dispose;stopDisposal=registered?.onDispose(dispose);if(!active2)return;subscription=auth.onAuthStateChange((event,session)=>{const next=session?.user.id??null;if(event==="SIGNED_OUT"||person!==undefined&&next!==person||registered&&person!==undefined&&event==="SIGNED_IN"&&token!==session?.access_token){revision++;local?.invalidate()}person=next;token=session?.access_token}).data.subscription;local?.start()}var os={init};var CLI_CALLBACK="http://127.0.0.1:53682/oauth/callback";function authorizationConfiguration(value){const setup=value;if(!setup||typeof setup.clientId!=="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(setup.clientId)||setup.redirectUri!==CLI_CALLBACK||!Array.isArray(setup.scopes)||setup.scopes.length!==1||setup.scopes[0]!=="email")throw new Error("Unavailable");return{clientId:setup.clientId,redirectUri:CLI_CALLBACK,scopes:["email"]}}function authorizationDetails(value,id3,setup,userId,account){const details=value;if(!details||details.authorization_id!==id3||details.redirect_uri!==setup.redirectUri||details.client?.id!==setup.clientId||typeof details.client.name!=="string"||!details.client.name.trim()||details.client.name.length>128||/[\x00-\x1f\x7f]/.test(details.client.name)||details.user?.id!==userId||details.user.email!==account.email||typeof details.scope!=="string"||details.scope.trim()!=="email")return Object.freeze({status:"invalid"});return Object.freeze({status:"consent",clientName:details.client.name.trim(),account,scopes:Object.freeze([...setup.scopes]),callbackAddress:new URL(setup.redirectUri).host})}function authorizationReturn(value,decision){const returnUrl=value?.redirect_url;if(typeof returnUrl!=="string"||returnUrl.length>8192||!returnUrl.startsWith(`${CLI_CALLBACK}?`)||/[\x00-\x20\x7f]/.test(returnUrl))return Object.freeze({status:"invalid"});try{const url=new URL(returnUrl);if(url.origin+url.pathname!==CLI_CALLBACK||url.username||url.password||url.hash)return Object.freeze({status:"invalid"});const parameters=url.searchParams;const allowed=["code","state","error","error_description","error_uri"];for(const key of parameters.keys()){if(!allowed.includes(key)||parameters.getAll(key).length!==1)return Object.freeze({status:"invalid"})}const code=parameters.get("code");const error=parameters.get("error");if(!parameters.get("state")||Boolean(code)===Boolean(error)||decision==="deny"&&!error||decision==="approve"&&!code||parameters.has("code")&&!code||parameters.has("error")&&!error||code&&(parameters.has("error_description")||parameters.has("error_uri")))return Object.freeze({status:"invalid"});return Object.freeze({status:"return",returnUrl})}catch{return Object.freeze({status:"invalid"})}}function authorizationFailure(error){const status=error?.status;return Object.freeze({status:status===404||status===410||status===400?"expired":status===401?"signed_out":status===403||status===422?"invalid":"unavailable"})}function createBrowserAuth(runtime){const coordinators=new Map;function publish(c,state){c.state=Object.freeze(state);for(const listener of c.listeners){try{listener(c.state)}catch{}}}function notify(c,event){for(const listener of c.sessions){try{listener(event,event==="SIGNED_OUT"?null:c.session)}catch{}}}function expire(c){if(!c.active||!c.session&&c.state.status==="expired")return;c.revision++;if(c.timer)clearTimeout(c.timer);c.session=null;publish(c,{status:"expired"});notify(c,"SIGNED_OUT")}function accept(c,event,session){if(!c.active)return;if(event==="INITIAL_SESSION"&&c.state.status!=="initializing")return;if(event==="TOKEN_REFRESHED"&&!c.session&&c.state.status!=="initializing")return;const replaced=c.session?.user?.id!==session?.user?.id||event==="SIGNED_OUT"||!!(event==="SIGNED_IN"&&c.session&&session?.access_token!==c.session.access_token);if(replaced)c.revision++;if(c.timer)clearTimeout(c.timer);const pending=c.state.pending;if(!session){c.session=null;publish(c,{status:c.state.status==="expired"?"expired":"signed_out",...pending?{pending}:{}});notify(c,"SIGNED_OUT");return}if(!validSession(session)){c.session=session;expire(c);return}c.session=session;const email=typeof session.user.email==="string"?session.user.email.trim():"";const metadata=session.user.user_metadata;const displayName=["name","full_name","first_name"].map((key)=>metadata?.[key]).find((value)=>typeof value==="string"&&value.trim());const name=displayName?.trim()||email;const account=!replaced&&c.state.account?.email===email&&c.state.account.displayName===name?c.state.account:Object.freeze({email,displayName:name});publish(c,{status:"signed_in",account,...pending?{pending}:{}});notify(c,event);const checkExpiry=()=>{if(!c.active||!c.session)return;const remaining=c.session.expires_at*1000-Date.now();if(remaining<=0)expire(c);else c.timer=setTimeout(checkExpiry,Math.min(remaining,2147483647))};checkExpiry()}function validSession(session){return typeof session.access_token==="string"&&/^[^\s]{1,8192}$/.test(session.access_token)&&typeof session.user?.id==="string"&&!!session.user.id&&Number.isFinite(session.expires_at)&&session.expires_at*1000>Date.now()}function createCoordinator(origin){const c={state:Object.freeze({status:"initializing"}),session:null,revision:0,active:true,refs:0,listeners:new Set,sessions:new Set,ready:Promise.resolve()};c.ready=(async()=>{const revision=c.revision;try{if(!allowedOrigin(origin))throw runtime.failure("unavailable");const response2=await fetch(`${origin}/api/auth`,{method:"GET",credentials:"same-origin",redirect:"error",cache:"no-store"});if(!response2.ok)throw runtime.failure("unavailable");const configuration=validateConfiguration(await response2.json());if(configuration.authorization&&origin!=="https://auth.oddington.ai"&&origin!=="http://127.0.0.1:5176")throw runtime.failure("unavailable");c.authorization=configuration.authorization;if(!c.active||globalThis.location?.origin!==origin)return;c.provider=await runtime.provider(configuration,{revision:()=>c.revision,current:(revision2)=>current(c,origin,revision2),canPersistSession:()=>c.active&&(c.state.status==="initializing"||!!c.session||c.state.pending==="verify_code"),canAuthorize:(accessToken)=>current(c,origin,c.revision)&&!!c.session&&c.session.access_token===accessToken&&c.state.pending!=="sign_out"});if(!c.active||globalThis.location?.origin!==origin){c.provider.dispose();return}const subscription=c.provider.onAuthStateChange((event,session)=>{if(c.state.status==="initializing"&&c.state.pending==="sign_out")return;accept(c,event,session)}).data.subscription;c.unsubscribe=()=>subscription.unsubscribe();const started=c.revision;const{data:data2,error}=await c.provider.getSession();if(!current(c,origin,started))return;if(error){if(terminalSessionFailure(error))expire(c);else if(!c.session||!validSession(c.session))publish(c,{status:"unavailable",error:"unavailable"})}else if(c.state.pending!=="sign_out")accept(c,"INITIAL_SESSION",data2.session)}catch{if(current(c,origin,revision))publish(c,{status:"unavailable",error:"unavailable"})}})();return c}function current(c,origin,revision){if(c.session&&!validSession(c.session))expire(c);return c.active&&c.revision===revision&&globalThis.location?.origin===origin}return{create(){const origin=globalThis.location?.origin??"";let c=coordinators.get(origin);if(!c){c=createCoordinator(origin);coordinators.set(origin,c)}const coordinator=c;coordinator.refs++;let active2=true;let ownedAction;let authorizationId;let authorizationGeneration=0;let inspected;const observers=new Set;const sessionObservers=new Set;const disposalObservers=new Set;let lastState=coordinator.state;const observation=(state)=>{lastState=state;for(const listener of observers){try{listener(state)}catch{}}};coordinator.listeners.add(observation);const assertActive=()=>{if(!active2)throw runtime.failure("disposed")};async function action(kind,work){assertActive();if(coordinator.action&&kind!=="sign_out")throw runtime.failure("busy");if(kind==="sign_out"&&coordinator.state.pending==="sign_out")throw runtime.failure("busy");if(kind==="sign_out"){coordinator.revision++;notify(coordinator,"SIGNED_OUT")}const marker={};coordinator.action=marker;ownedAction=marker;const revision=coordinator.revision;publish(coordinator,{...coordinator.state,error:undefined,pending:kind});try{await coordinator.ready;assertActive();if(!coordinator.provider||!coordinator.active||globalThis.location?.origin!==origin)throw runtime.failure("unavailable");if(!current(coordinator,origin,revision))throw runtime.failure("stale");if(coordinator.action!==marker)throw runtime.failure("stale");await work(coordinator.provider);assertActive();if(coordinator.action!==marker)throw runtime.failure("stale");if(!current(coordinator,origin,revision)&&kind!=="verify_code"&&kind!=="sign_out")throw runtime.failure("stale")}catch(error){const reason=!active2?"disposed":!current(coordinator,origin,revision)?"stale":safeReason(error)??"unavailable";if(active2&&current(coordinator,origin,revision))publish(coordinator,{...coordinator.state,error:reason});throw runtime.failure(reason)}finally{if(coordinator.action===marker){coordinator.action=undefined;if(coordinator.active){publish(coordinator,{...coordinator.state,pending:undefined});if(kind==="sign_out"&&coordinator.session)notify(coordinator,"TOKEN_REFRESHED")}}if(ownedAction===marker)ownedAction=undefined}}async function authorize(kind,id3){if(!active2)return Object.freeze({status:"disposed"});if(id3!==authorizationId){authorizationId=id3;authorizationGeneration++;inspected=undefined}if(!id3)return Object.freeze({status:"missing"});if(typeof id3!=="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(id3))return Object.freeze({status:"invalid"});const generation=authorizationGeneration;await coordinator.ready;if(!active2)return Object.freeze({status:"disposed"});if(generation!==authorizationGeneration)return Object.freeze({status:"stale"});const revision=coordinator.revision;if(!current(coordinator,origin,revision))return Object.freeze({status:"stale"});if(!coordinator.session||coordinator.state.pending==="sign_out")return Object.freeze({status:coordinator.state.status==="expired"?"expired":coordinator.state.status==="unavailable"?"unavailable":"signed_out"});if(!coordinator.authorization||!coordinator.provider)return Object.freeze({status:"unavailable"});if(coordinator.action)return Object.freeze({status:"busy"});if(kind!=="get"&&(!inspected||inspected.id!==id3||inspected.revision!==revision))return Object.freeze({status:"stale"});if(kind!=="get"&&inspected?.result.status!=="consent")return inspected.result;const marker={};coordinator.action=marker;ownedAction=marker;const requestCurrent=()=>active2&&generation===authorizationGeneration&&current(coordinator,origin,revision)&&coordinator.action===marker&&!!coordinator.session&&coordinator.state.pending!=="sign_out";const stale2=()=>Object.freeze({status:active2?"stale":"disposed"});try{const provider=coordinator.provider;const response2=await provider.authorization.get(id3,requestCurrent);if(!requestCurrent())return stale2();if(response2.error){inspected=undefined;const failure=authorizationFailure(response2.error);if(failure.status==="signed_out")expire(coordinator);return failure}const account=coordinator.state.account;const result2=response2.data&&typeof response2.data==="object"&&"redirect_url"in response2.data?authorizationReturn(response2.data):authorizationDetails(response2.data,id3,coordinator.authorization,coordinator.session.user.id,account);inspected={id:id3,revision,result:result2};if(kind==="get"||result2.status!=="consent")return result2;if(!requestCurrent())return stale2();const decision=await provider.authorization[kind](id3,requestCurrent);if(!requestCurrent())return stale2();const returned=decision.error?authorizationFailure(decision.error):authorizationReturn(decision.data,kind);if(returned.status==="signed_out")expire(coordinator);inspected={id:id3,revision,result:returned};return returned}catch(error){if(!requestCurrent())return stale2();inspected=undefined;if(safeReason(error)==="stale")return stale2();return Object.freeze({status:"unavailable"})}finally{if(coordinator.action===marker)coordinator.action=undefined;if(ownedAction===marker)ownedAction=undefined}}const handle=Object.freeze({authorization:Object.freeze({get:(id3)=>authorize("get",id3),approve:(id3)=>authorize("approve",id3),deny:(id3)=>authorize("deny",id3)}),getState(){if(active2&&coordinator.session&&!validSession(coordinator.session))expire(coordinator);return lastState},subscribe(listener){assertActive();observers.add(listener);return()=>{observers.delete(listener)}},async sendCode(email){assertActive();if(!validEmail(email))throw runtime.failure("invalid_input");await action("send_code",async(provider)=>{const{error}=await provider.signInWithOtp({email:email.trim(),options:{shouldCreateUser:false}});if(error&&!accountRefusal(error))throw runtime.failure("unavailable")})},async verifyCode(email,code){assertActive();if(!validEmail(email)||typeof code!=="string"||!/^\d{6}$/.test(code))throw runtime.failure("invalid_input");await action("verify_code",async(provider)=>{const revision=coordinator.revision;const{data:data2,error}=await provider.verifyOtp({email:email.trim(),token:code,type:"email"});if(error)throw runtime.failure(accountRefusal(error)?"invalid_code":"unavailable");if(!data2.session||!validSession(data2.session))throw runtime.failure("invalid_code");if(!current(coordinator,origin,revision)&&(coordinator.session?.access_token!==data2.session.access_token||coordinator.revision!==revision+1||coordinator.state.pending!=="verify_code"))throw runtime.failure("stale");accept(coordinator,"SIGNED_IN",data2.session)})},async signOut(){assertActive();await action("sign_out",async(provider)=>{const revision=coordinator.revision;const{error}=await provider.signOut({scope:"local"});if(error)throw runtime.failure("unavailable");if(!current(coordinator,origin,revision)&&coordinator.session)throw runtime.failure("stale");accept(coordinator,"SIGNED_OUT",null)})},dispose(){if(!active2)return;active2=false;authorizationGeneration++;inspected=undefined;if(ownedAction&&coordinator.action===ownedAction)coordinator.revision++;observers.clear();coordinator.listeners.delete(observation);for(const listener of disposalObservers){try{listener()}catch{}}disposalObservers.clear();for(const listener of sessionObservers)coordinator.sessions.delete(listener);sessionObservers.clear();if(--coordinator.refs===0){coordinator.active=false;coordinator.revision++;if(coordinator.timer)clearTimeout(coordinator.timer);coordinator.unsubscribe?.();coordinator.provider?.dispose();coordinator.provider=undefined;coordinator.session=null;coordinator.listeners.clear();coordinator.sessions.clear();coordinators.delete(origin)}}});registerBrowserAuth(handle,{onDispose(callback){if(!active2){callback();return()=>{}}disposalObservers.add(callback);return()=>{disposalObservers.delete(callback)}},async getSession(){assertActive();await coordinator.ready;assertActive();const revision=coordinator.revision;if(!current(coordinator,origin,revision)||!coordinator.provider||!coordinator.session||coordinator.state.pending==="sign_out")return{data:{session:null},error:null};let result2;try{result2=await coordinator.provider.getSession()}catch{result2={data:{session:null},error:runtime.failure("unavailable")}}if(!active2||!current(coordinator,origin,revision))return{data:{session:null},error:runtime.failure("stale")};if(result2.error){if(!terminalSessionFailure(result2.error)&&coordinator.session&&validSession(coordinator.session))return{data:{session:coordinator.session},error:null};expire(coordinator);return{data:{session:null},error:runtime.failure("unavailable")}}accept(coordinator,"TOKEN_REFRESHED",result2.data.session);return{data:{session:coordinator.session},error:null}},onAuthStateChange(callback){if(!active2){callback("SIGNED_OUT",null);return{data:{subscription:{unsubscribe(){}}}}}const listener=(event,session)=>callback(event,session);coordinator.sessions.add(listener);sessionObservers.add(listener);callback("INITIAL_SESSION",coordinator.session);return{data:{subscription:{unsubscribe(){coordinator.sessions.delete(listener);sessionObservers.delete(listener)}}}}}});return handle}}}function safeReason(error){const reason=error?.reason;return["invalid_input","invalid_code","unavailable","busy","stale","disposed"].includes(reason)?reason:undefined}function accountRefusal(error){return[400,401,403,404,422].includes(error?.status??0)}function terminalSessionFailure(error){return[400,401,403,404,422].includes(error?.status??0)}function validEmail(email){return typeof email==="string"&&email.length<=320&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email.trim())}function allowedOrigin(origin){if(origin==="http://127.0.0.1:5176"||origin==="https://auth.oddington.ai")return true;try{const url=new URL(origin);const slug=url.hostname.endsWith(".oddington.ai")?url.hostname.slice(0,-".oddington.ai".length):"";return slug.length<=63&&/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(slug)&&!["auth","api","os","www"].includes(slug)&&origin===`https://${slug}.oddington.ai`}catch{return false}}function validateConfiguration(value){const configuration=value;if(!configuration||typeof configuration.providerUrl!=="string"||typeof configuration.publishableKey!=="string")throw new Error("Unavailable");const url=new URL(configuration.providerUrl);if(url.origin!==configuration.providerUrl||url.protocol!=="https:"||url.username||url.password||url.port||!configuration.publishableKey)throw new Error("Unavailable");return{providerUrl:url.origin,publishableKey:configuration.publishableKey,...configuration.authorization===undefined?{}:{authorization:authorizationConfiguration(configuration.authorization)}}}class BrowserAuthError extends Error{reason;constructor(reason){super(`Browser authentication failed: ${reason}`);this.reason=reason;this.name="BrowserAuthError"}}async function provider(configuration,guard){const{AuthClient:AuthClient2}=await Promise.resolve().then(() => (init_auth_provider(),exports_auth_provider));if(!guard.current(guard.revision()))throw new BrowserAuthError("stale");const provenance=new Map;let removalRevision;let authorizationRequest;let authorizationQueue=Promise.resolve();const storage=globalThis.localStorage;const client=new AuthClient2({url:`${configuration.providerUrl}/auth/v1`,headers:{apikey:configuration.publishableKey,Authorization:`Bearer ${configuration.publishableKey}`},storageKey:`sb-${new URL(configuration.providerUrl).hostname.split(".")[0]}-auth-token`,persistSession:true,autoRefreshToken:true,detectSessionInUrl:false,storage:{getItem:(key)=>storage.getItem(key),removeItem(key){if(!guard.current(removalRevision??guard.revision()))throw new BrowserAuthError("stale");storage.removeItem(key)},setItem(key,value){const token=JSON.parse(value).access_token;const revision=token?provenance.get(token):undefined;if(!guard.current(revision??guard.revision())||token&&!guard.canPersistSession())throw new BrowserAuthError("stale");storage.setItem(key,value)}},fetch:Object.assign(async(input,init2)=>{const revision=guard.revision();const request=String(input).startsWith(`${configuration.providerUrl}/auth/v1/oauth/authorizations/`)?authorizationRequest:undefined;const rejectStale=()=>{if(request)request.rejected=true;throw new BrowserAuthError("stale")};if(request&&(!request.current()||!guard.canAuthorize(new Headers(init2?.headers).get("authorization")?.replace(/^Bearer /,"")??"")))rejectStale();const response2=await fetch(input,{...init2,redirect:"error"});const body=await response2.arrayBuffer();if(!guard.current(revision)||request&&!request.current())rejectStale();const result2=new Response([204,205,304].includes(response2.status)?null:body,{status:response2.status,statusText:response2.statusText,headers:response2.headers});const json3=result2.json.bind(result2);result2.json=async()=>{const value=await json3();if(!guard.current(revision)||request&&!request.current())rejectStale();if(value&&typeof value.access_token==="string")provenance.set(value.access_token,revision);return value};return result2},{preconnect:fetch.preconnect})});async function authorization(kind,id3,current){const previous=authorizationQueue;let release;authorizationQueue=new Promise((resolve)=>{release=resolve});await previous;const request={current,rejected:false};authorizationRequest=request;try{if(!current())throw new BrowserAuthError("stale");const result2=await(kind==="get"?client.oauth.getAuthorizationDetails(id3):kind==="approve"?client.oauth.approveAuthorization(id3,{skipBrowserRedirect:true}):client.oauth.denyAuthorization(id3,{skipBrowserRedirect:true}));if(request.rejected||!current())throw new BrowserAuthError("stale");return result2}catch(error){if(request.rejected||!current())throw new BrowserAuthError("stale");throw error}finally{authorizationRequest=undefined;release()}}return{authorization:{get:(id3,current)=>authorization("get",id3,current),approve:(id3,current)=>authorization("approve",id3,current),deny:(id3,current)=>authorization("deny",id3,current)},getSession:()=>client.getSession(),onAuthStateChange:(callback)=>client.onAuthStateChange((event,session)=>{const revision=session?provenance.get(session.access_token):undefined;if(revision!==undefined&&!guard.current(revision))return;callback(event,session);if(session)provenance.delete(session.access_token)}),signInWithOtp:(input)=>client.signInWithOtp(input),verifyOtp:(input)=>client.verifyOtp(input),async signOut(input){removalRevision=guard.revision();try{return await client.signOut(input)}finally{removalRevision=undefined}},dispose(){provenance.clear();client.dispose()}}}var auth=createBrowserAuth({provider,failure:(reason)=>new BrowserAuthError(reason)});var identifier=/^[a-z0-9]+(?:-[a-z0-9]+)*(?![\s\S])/;var uuid=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;var isReason=(value)=>value==="not_enabled"||value==="authority_unavailable"||value==="execution_unavailable"||value==="invalid_input";class AppRoutineError extends Error{reason;constructor(reason){super(reason);this.reason=reason;this.name="AppRoutineError"}}function fail3(reason){throw new AppRoutineError(reason)}function object4(value){return Boolean(value)&&typeof value==="object"&&!Array.isArray(value)}function keys4(value,expected){return Object.keys(value).sort().join(",")===expected}function current(context){if(!context.isCurrent()||context.signal.aborted)fail3("authority_unavailable")}async function body(context,response2,maximum){try{const value=await appResponse(response2,maximum,context.signal);current(context);if(!response2.ok){if(object4(value)&&keys4(value,"error")&&isReason(value.error)){if(value.error==="authority_unavailable")context.invalidate();fail3(value.error)}fail3("authority_unavailable")}return value}catch(error){current(context);if(error instanceof AppResponseReadError)throw error;if(error instanceof AppRoutineError)throw error;return fail3("execution_unavailable")}}function descriptor(value,key){if(!object4(value)||!keys4(value,"after,key,routine,runId")||value.key!==key||typeof value.runId!=="string"||!uuid.test(value.runId)||value.after!==0||typeof value.routine!=="string"||!identifier.test(value.routine))fail3("execution_unavailable");return value}function safeValue(value,depth=0){if(depth>32)return false;if(value===null||typeof value==="string"||typeof value==="boolean")return true;if(typeof value==="number")return Number.isFinite(value);if(Array.isArray(value))return value.every((item)=>safeValue(item,depth+1));return object4(value)&&Object.entries(value).every(([key,item])=>!["__proto__","constructor","prototype"].includes(key)&&safeValue(item,depth+1))}function event(value,run,steps){if(!object4(value)||value.runId!==run.runId||value.key!==run.key||value.routine!==run.routine||!Number.isSafeInteger(value.sequence)||value.sequence<1||new TextEncoder().encode(JSON.stringify(value)).byteLength>16*1024)fail3("execution_unavailable");const common="key,routine,runId,sequence,";if(value.type==="started"&&keys4(value,common+"type")&&value.sequence===1)return{type:"started"};if(value.type==="step"&&typeof value.id==="string"&&identifier.test(value.id)&&(!steps||steps.includes(value.id))&&keys4(value,"id,"+common+(Object.hasOwn(value,"summary")?"summary,type":"type"))&&(!Object.hasOwn(value,"summary")||safeValue(value.summary))){return{type:"step",id:value.id,...Object.hasOwn(value,"summary")?{summary:value.summary}:{}}}if(value.type==="finished"){if(value.state==="succeeded"&&keys4(value,"key,"+(Object.hasOwn(value,"result")?"result,":"")+"routine,runId,sequence,state,type")&&(!Object.hasOwn(value,"result")||safeValue(value.result))){return{type:"finished",state:"succeeded",...Object.hasOwn(value,"result")?{result:value.result}:{}}}if(value.state==="failed"&&value.error==="execution_failed"&&keys4(value,"error,"+common+"state,type")){return{type:"finished",state:"failed",error:"execution_failed"}}if(value.state==="cancelled"&&keys4(value,common+"state,type"))return{type:"finished",state:"cancelled"}}return fail3("execution_unavailable")}async function pause(context,delay){current(context);await new Promise((resolve,reject)=>{const abort=()=>{clearTimeout(timer);reject(new AppRoutineError("authority_unavailable"))};const timer=setTimeout(()=>{context.signal.removeEventListener("abort",abort);resolve()},delay);context.signal.addEventListener("abort",abort,{once:true})});current(context)}function handle(context,run,steps){return Object.freeze({async*events(...args){if(args.length)fail3("invalid_input");let cursor=0,terminal=false,delay=100,retainedBytes=0;const seen=[];while(!terminal){current(context);let response2;try{response2=await context.requestRoutine(run.key,`runs/${run.runId}/events?after=${cursor}`)}catch{current(context);await pause(context,delay);delay=Math.min(delay*2,2000);continue}if(response2.status>=500){await response2.body?.cancel();await pause(context,delay);delay=Math.min(delay*2,2000);continue}let value;try{value=await body(context,response2,80*1024)}catch(error){if(!(error instanceof AppResponseReadError))throw error;await pause(context,delay);delay=Math.min(delay*2,2000);continue}if(!object4(value)||!keys4(value,"after,events,terminal")||!Array.isArray(value.events)||value.events.length>256||typeof value.terminal!=="boolean"||!Number.isSafeInteger(value.after))fail3("execution_unavailable");const delivery=[];for(const raw of value.events){const publicEvent=event(raw,run,steps);const encoded=JSON.stringify(raw);const sequence=raw.sequence;if(sequence<=cursor){if(seen[sequence-1]!==encoded)fail3("execution_unavailable");continue}if(terminal||sequence!==cursor+1||sequence>256||(cursor===0?publicEvent.type!=="started":publicEvent.type==="started"))fail3("execution_unavailable");retainedBytes+=new TextEncoder().encode(encoded).byteLength;if(retainedBytes>1024*1024)fail3("execution_unavailable");seen.push(encoded);cursor=sequence;terminal=publicEvent.type==="finished";delivery.push(publicEvent)}if(value.after!==cursor||value.terminal!==terminal)fail3("execution_unavailable");for(const item of delivery){current(context);yield item}delay=100;if(!terminal)await pause(context,delivery.length?100:250)}},async cancel(...args){if(args.length)fail3("invalid_input");try{const value=await body(context,await context.requestRoutine(run.key,`runs/${run.runId}/cancel`,{method:"POST"}),1024);if(!object4(value)||!keys4(value,"cancelled")||value.cancelled!==true)fail3("execution_unavailable")}catch(error){current(context);if(error instanceof AppRoutineError)throw error;fail3("execution_unavailable")}}})}async function appRoutineOperation(key,input,recover){let context;try{if(!identifier.test(key))fail3("authority_unavailable");const resolved=await resolveAppContext();if(resolved.kind!=="local")fail3("execution_unavailable");context=resolved;if(recover){const value2=await body(context,await context.requestRoutine(key,"runs"),16*1024);if(!object4(value2)||!keys4(value2,"runs")||!Array.isArray(value2.runs)||value2.runs.length>20)fail3("execution_unavailable");const runs=value2.runs.map((run)=>descriptor(run,key));if(new Set(runs.map((run)=>run.runId)).size!==runs.length||new Set(runs.map((run)=>run.routine)).size>1)fail3("execution_unavailable");return runs.map((run)=>handle(resolved,run))}const available=await body(context,await context.requestAvailability(key),16*1024);if(object4(available)&&keys4(available,"available,reason")&&available.available===false&&isReason(available.reason))fail3(available.reason);if(!object4(available)||!keys4(available,"available,steps")||available.available!==true||!Array.isArray(available.steps)||available.steps.length<1||available.steps.length>64||!available.steps.every((step)=>typeof step==="string"&&identifier.test(step))||new Set(available.steps).size!==available.steps.length)fail3("execution_unavailable");const steps=[...available.steps];let encoded;try{encoded=JSON.stringify(input);if(encoded===undefined||new TextEncoder().encode(encoded).byteLength>16*1024)fail3("invalid_input")}catch{fail3("invalid_input")}const value=await body(context,await context.requestRoutine(key,"runs",{method:"POST",body:`{"input":${encoded}}`}),16*1024);return handle(context,descriptor(value,key),steps)}catch(error){if(context)current(context);if(error instanceof AppRoutineError)throw error;return fail3(context?"execution_unavailable":"authority_unavailable")}}var authorityUnavailable=()=>({available:false,reason:"authority_unavailable"});var MAX_RESPONSE_BYTES=16*1024;async function availability(key){try{if(!/^[a-z0-9]+(?:-[a-z0-9]+)*(?![\s\S])/.test(key))return authorityUnavailable();const context=await resolveAppContext();if(context.kind!=="local")return{available:false,reason:"execution_unavailable"};const response2=await context.requestAvailability(key);if(!response2.ok||response2.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase()!=="application/json"){return authorityUnavailable()}const value=await appResponse(response2,MAX_RESPONSE_BYTES,context.signal);if(!context.isCurrent())return authorityUnavailable();if(!value||typeof value!=="object"||Array.isArray(value))return authorityUnavailable();const result2=value;if(result2.available===false&&Object.keys(result2).sort().join(",")==="available,reason"&&(result2.reason==="not_enabled"||result2.reason==="authority_unavailable"||result2.reason==="execution_unavailable")){return{available:false,reason:result2.reason}}if(result2.available!==true||Object.keys(result2).sort().join(",")!=="available,steps"||!Array.isArray(result2.steps)||result2.steps.length<1||result2.steps.length>64||!result2.steps.every((step)=>typeof step==="string"&&/^[a-z0-9]+(?:-[a-z0-9]+)*(?![\s\S])/.test(step))||new Set(result2.steps).size!==result2.steps.length)return authorityUnavailable();return{available:true,steps:[...result2.steps]}}catch{return authorityUnavailable()}}var app=Object.freeze({routines:new Proxy(Object.create(null),{get(_target,key){if(typeof key!=="string")return;return Object.freeze({availability:(...args)=>args.length?Promise.resolve(authorityUnavailable()):availability(key),run:(...args)=>args.length===1?appRoutineOperation(key,args[0],false):Promise.reject(new AppRoutineError("invalid_input")),recover:(...args)=>args.length===0?appRoutineOperation(key,undefined,true):Promise.reject(new AppRoutineError("invalid_input"))})},set:()=>false,defineProperty:()=>false,deleteProperty:()=>false})});var LIMIT2=16*1024;var context;var unavailable3=()=>new Error("App routine reporting unavailable");function freeze2(value){if(value!==null&&typeof value==="object"){for(const child of Object.values(value))freeze2(child);Object.freeze(value)}return value}if((typeof __ODDINGTON_BROWSER__==="undefined"||!__ODDINGTON_BROWSER__)&&typeof process!=="undefined"&&process.env.ODDINGTON_APP_RUN!==undefined){let fail4=function(){broken=true;pending?.reject(unavailable3());pending=undefined;channel.destroy()},report=function(value){let frame;try{frame=JSON.stringify({...value,sequence:++sequence});if(Buffer.byteLength(frame)>LIMIT2)return rejected()}catch{return rejected()}const operation2=queue.then(async()=>{if(broken)throw unavailable3();await new Promise((resolve,reject)=>{const timeout=setTimeout(fail4,30000);pending={sequence:JSON.parse(frame).sequence,resolve(){clearTimeout(timeout);resolve()},reject(error){clearTimeout(timeout);reject(error)}};channel.ref();channel.write(`${frame}
76
+ `,(error)=>{if(error)fail3()})})};let reporting=Promise.resolve();const report=(value)=>{const captured=structuredClone(value);const next=reporting.then(()=>sendReport(captured));reporting=next;return next};const flush=(stream)=>new Promise((resolve)=>{let timer,settled2=false;const complete=()=>{if(settled2)return;settled2=true;if(timer)clearTimeout(timer);resolve()};timer=setTimeout(complete,1000);if(stream.destroyed||stream.writableEnded)complete();else stream.write("",complete)});let exitCode=0;try{const definition=(await import(pathToFileURL(bootstrap.entry).href)).default;const contract=inspectRoutineDefinition(definition);const input=captureRoutineInput(definition,bootstrap.input);if(bootstrap.mode==="inspect")await report({type:"contract",contract});else if(bootstrap.mode==="execute"&&typeof bootstrap.runId==="string"){if(JSON.stringify(contract)!==JSON.stringify(bootstrap.contract))throw new Error("Routine definition changed");observeLocalRoutineEffects(report);const result2=await executeRoutineDefinition(definition,input,{run:{id:bootstrap.runId},data,files,connections,inbox:routinePublicationClient(),step:async(id2,summary)=>report({type:"step",id:id2,...summary===undefined?{}:{summary}})});await report({type:"finish",...result2===undefined?{}:{result:result2}})}else throw new Error("Invalid routine bootstrap")}catch{exitCode=1}finally{settled=true;observeLocalRoutineEffects(undefined);if(exitCode===0)channel.end();else channel.destroy();await Promise.allSettled([flush(process.stdout),flush(process.stderr)]);process.exit(exitCode)}}})}init_inbox_contract();var RECORD_WRITE_INPUT_LIMIT=8*1024*1024;class RoutineRecordWriteError extends Error{effect;constructor(message,effect){super(message);this.effect=effect;this.name="RoutineRecordWriteError"}}function validateRecordWrite(value){const input=serializable(value);if(!input||Array.isArray(input)||typeof input!=="object"||Object.keys(input).sort().join(",")!=="records,repository"||!validRepositoryAlias(input.repository)||!Array.isArray(input.records)||!input.records.length||input.records.length>1e4||new Set(input.records.map((edit)=>edit?.ref)).size!==input.records.length)throw new InboxContractError("Invalid record update batch");for(const edit of input.records){if(!edit||Array.isArray(edit)||typeof edit!=="object"||!validRecordRef(edit.ref))throw new InboxContractError("Invalid record edit");if("expectedVersion"in edit){if(Object.keys(edit).sort().join(",")!=="expectedVersion,ref,set"||typeof edit.expectedVersion!=="string"||!/^record-v1:[0-9a-f]{64}$/.test(edit.expectedVersion)||!edit.set||Array.isArray(edit.set)||typeof edit.set!=="object"||!Object.keys(edit.set).length)throw new InboxContractError("Invalid record edit");continue}if(Object.keys(edit).sort().join(",")!=="fields,path,ref"||typeof edit.path!=="string"||!validCreatePath(edit.path)||!edit.fields||Array.isArray(edit.fields)||typeof edit.fields!=="object"||!Object.keys(edit.fields).length)throw new InboxContractError("Invalid record creation")}return structuredClone(input)}function validateRecordUpdate(value){const input=validateRecordWrite(value);if(input.records.some((record3)=>!("expectedVersion"in record3)))throw new InboxContractError("Record creation is unavailable for this operation");return input}function validateRecordDelete(value){const input=serializable(value);if(!input||Array.isArray(input)||typeof input!=="object"||Object.keys(input).sort().join(",")!=="records,repository"||!validRepositoryAlias(input.repository)||!Array.isArray(input.records)||!input.records.length||input.records.length>1e4||new Set(input.records.map((record3)=>record3?.ref)).size!==input.records.length)throw new InboxContractError("Invalid record deletion batch");for(const record3 of input.records){if(!record3||Array.isArray(record3)||typeof record3!=="object"||Object.keys(record3).sort().join(",")!=="expectedVersion,ref"||!validRecordRef(record3.ref)||typeof record3.expectedVersion!=="string"||!/^record-v1:[0-9a-f]{64}$/.test(record3.expectedVersion))throw new InboxContractError("Invalid record deletion")}return structuredClone(input)}function validateRecordChange(value){const input=serializable(value);if(!input||Array.isArray(input)||typeof input!=="object"||Object.keys(input).sort().join(",")!=="records,repository"||!validRepositoryAlias(input.repository)||!Array.isArray(input.records)||!input.records.length||input.records.length>1e4||new Set(input.records.map((record3)=>record3?.ref)).size!==input.records.length||new TextEncoder().encode(JSON.stringify(input)).byteLength>RECORD_WRITE_INPUT_LIMIT)throw new InboxContractError("Invalid record change batch");const writes=[],deletes=[];for(const record3 of input.records){if(!record3||typeof record3!=="object"||Array.isArray(record3))throw new InboxContractError("Invalid record change");if("set"in record3||"fields"in record3)writes.push(record3);else deletes.push(record3)}if(writes.length)validateRecordWrite({repository:input.repository,records:writes});if(deletes.length)validateRecordDelete({repository:input.repository,records:deletes});return structuredClone(input)}function validateRoutineRecordWrite(value){const body=serializable(value);if(!body||typeof body!=="object"||Array.isArray(body)||Object.keys(body).sort().join(",")!=="input,requestKey"||typeof body.requestKey!=="string"||!body.requestKey.trim()||body.requestKey!==body.requestKey.trim()||body.requestKey.length>512)throw new InboxContractError("A stable routine request key is required");return{input:validateRecordChange(body.input),requestKey:body.requestKey}}function validCreatePath(value){return value===value.trim()&&value.endsWith(".md")&&!value.startsWith("/")&&value.split("/").every((segment)=>!!segment&&![".",".."].includes(segment)&&/^[a-zA-Z0-9_.-]+$/.test(segment))}class InboxOperationError extends Error{status;reason;constructor(status,reason){super(reason==="conflict"?"This question already has an accepted answer":reason==="unavailable"?"Inbox request unavailable. Retry the same action.":reason==="invalid_input"?"Invalid Inbox request":"Inbox access unavailable");this.status=status;this.reason=reason}}var INBOX_RESULT_BYTES=8*1024*1024;var INBOX_INPUT_BYTES=8192;var INBOX_LOCAL_INPUT_BYTES=256*1024;var INBOX_UUID=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function isAppQuestionOperation(operation2){return operation2==="questions.list"||operation2==="questions.answer"||operation2==="questions.searchRecords"}var operations={current:[],"items.list":[],"questions.list":[],"items.read":["itemId"],"items.see":["itemId"],"items.markDigestRead":["itemId"],"items.rename":["itemId","revision","title"],"items.setLifecycle":["itemId","revision","lifecycle"],"items.listRecipientCandidates":["itemId"],"items.addRecipient":["itemId","personId"],"questions.answer":["itemId","revision","questionId","response"],"questions.searchRecords":["itemId","revision","questionId","query"],"files.read":["itemId","fileId"]};function assert(value){if(!value)throw new Error("Invalid Inbox result")}function object3(value){assert(value&&typeof value==="object"&&!Array.isArray(value)&&[Object.prototype,null].includes(Object.getPrototypeOf(value))&&Reflect.ownKeys(value).every((key)=>{const descriptor=typeof key==="string"?Object.getOwnPropertyDescriptor(value,key):undefined;return!!descriptor?.enumerable&&"value"in descriptor}));return value}function keys3(value,allowed,required=allowed){assert(Object.keys(value).every((key)=>allowed.includes(key))&&required.every((key)=>Object.hasOwn(value,key)))}function text3(value,empty2=false){return typeof value==="string"&&(empty2||!!value.trim())}function id2(value){return typeof value==="string"&&INBOX_UUID.test(value)}function integer(value,minimum=1){return Number.isSafeInteger(value)&&Number(value)>=minimum}function date(value){return text3(value)&&Number.isFinite(Date.parse(value))}function optionalDate(value){return value===null||date(value)}function array2(value){assert(Array.isArray(value)&&Object.getPrototypeOf(value)===Array.prototype&&Reflect.ownKeys(value).length===value.length+1&&value.every((_entry,index)=>{const descriptor=Object.getOwnPropertyDescriptor(value,String(index));return!!descriptor?.enumerable&&"value"in descriptor}));return value}function json2(value,ancestors=new Set){if(value===null||typeof value==="boolean"||typeof value==="string"||typeof value==="number"&&Number.isFinite(value))return value;assert(value&&typeof value==="object"&&!ancestors.has(value));ancestors.add(value);try{if(Array.isArray(value))return array2(value).map((entry)=>json2(entry,ancestors));return Object.fromEntries(Object.entries(object3(value)).map(([key,entry])=>[key,json2(entry,ancestors)]))}finally{ancestors.delete(value)}}function recordReference(value){const record3=object3(value);keys3(record3,["repository","ref"]);assert(text3(record3.repository)&&record3.repository===record3.repository.trim()&&/^[a-z0-9][a-z0-9._/-]{0,127}$/.test(record3.repository)&&!/\.\.|\/\//.test(record3.repository)&&text3(record3.ref)&&record3.ref===record3.ref.trim()&&record3.ref.length<=512&&/^[_a-zA-Z0-9][a-zA-Z0-9_-]*(\/[_a-zA-Z0-9][a-zA-Z0-9_-]*)+$/.test(record3.ref));return record3}function responseDefinition(value){const definition=object3(value);keys3(definition,["type","source"]);assert(definition.type==="selection");const source=object3(definition.source);if(source.type==="authored"){keys3(source,["type","options","suggestions","search"],["type","options"]);const options=array2(source.options);assert(options.length>0);const values=options.map((value2)=>{const option=object3(value2);keys3(option,["value","label","description","note"],["value","label"]);assert(text3(option.value)&&option.value===option.value.trim()&&text3(option.label));if("description"in option)assert(text3(option.description));if("note"in option){const note=object3(option.note);keys3(note,["placeholder"]);assert(text3(note.placeholder))}return option.value});assert(new Set(values).size===values.length);if("search"in source||"suggestions"in source){const search=object3(source.search);keys3(search,["triggerLabel","placeholder","emptyLabel"]);assert(text3(search.triggerLabel)&&text3(search.placeholder)&&text3(search.emptyLabel));const suggestions2=array2(source.suggestions);assert(suggestions2.length<=8&&suggestions2.every((value2)=>text3(value2)&&values.includes(value2))&&new Set(suggestions2).size===suggestions2.length)}else assert(options.length<=9);return}assert(source.type==="records");keys3(source,["type","collection","refPrefix","where","display","suggestions"],["type","collection","display"]);const collection=object3(source.collection);keys3(collection,["repository","name"]);recordReference({repository:collection.repository,ref:"records/example"});assert(text3(collection.name)&&/^[a-zA-Z0-9_-]+(?:\/[a-zA-Z0-9_-]+)*$/.test(collection.name));if("refPrefix"in source)assert(text3(source.refPrefix)&&source.refPrefix.length<=512&&/^[_a-zA-Z0-9][a-zA-Z0-9_-]*(\/[_a-zA-Z0-9][a-zA-Z0-9_-]*)*\/$/.test(source.refPrefix));const where=object3(source.where??{});assert(Object.entries(where).every(([name,value2])=>/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(name)&&!["constructor","prototype"].includes(name)&&(value2===null||typeof value2==="string"||typeof value2==="boolean"||typeof value2==="number"&&Number.isFinite(value2))));const display=object3(source.display);keys3(display,["labelFields"]);const labels=array2(display.labelFields);assert(labels.length>0&&labels.length<=2&&new Set(labels).size===labels.length&&labels.every((value2)=>text3(value2)&&/^[a-zA-Z][a-zA-Z0-9_-]*$/.test(value2)));const suggestions=array2(source.suggestions??[]);const refs=suggestions.map((value2)=>{const suggestion=object3(value2);keys3(suggestion,["record","reason"],["record"]);const record3=recordReference(suggestion.record);assert(record3.repository===collection.repository);if("reason"in suggestion)assert(text3(suggestion.reason));return record3.ref});assert(suggestions.length<=8&&new Set(refs).size===refs.length)}function inboxFile(value){const file2=object3(value);keys3(file2,["id","name","mediaType","size","sha256","details"]);assert(id2(file2.id)&&text3(file2.name)&&!/[\x00-\x1f\x7f/\\]/.test(file2.name)&&text3(file2.mediaType)&&/^[a-z0-9!#$&^_.+-]+\/[a-z0-9!#$&^_.+-]+$/.test(file2.mediaType)&&integer(file2.size,0)&&file2.size<=25*1024*1024&&typeof file2.sha256==="string"&&/^[0-9a-f]{64}$/.test(file2.sha256));const details=object3(file2.details);if(details.kind==="csv"){keys3(details,["kind","encoding","delimiter","headerRow","dataRows"]);assert(file2.mediaType==="text/csv"&&["utf-8","windows-1252"].includes(String(details.encoding))&&[",",";","\t"].includes(String(details.delimiter))&&integer(details.headerRow,0)&&integer(details.dataRows,0))}else if(details.kind==="pdf"){keys3(details,["kind","pages"],["kind"]);assert(file2.mediaType==="application/pdf"&&(!("pages"in details)||integer(details.pages)))}else{keys3(details,["kind"]);assert(details.kind==="other"&&!["text/csv","application/pdf"].includes(file2.mediaType))}}function fields4(value){const labels=array2(value).map((value2)=>{const field=object3(value2);keys3(field,["label","value"]);assert(text3(field.label)&&text3(field.value));return field.label});assert(new Set(labels).size===labels.length)}function block(value){const entry=object3(value);if(entry.kind==="rich-text"){keys3(entry,["kind","markdown"]);assert(text3(entry.markdown));return}if(entry.kind==="asks"){keys3(entry,["kind","problem","asks"]);const asks=array2(entry.asks);assert(text3(entry.problem)&&asks.length>0&&asks.every(id2)&&new Set(asks).size===asks.length);return}assert(["record","records","files"].includes(String(entry.kind)));keys3(entry,["kind","label","initiallyExpanded",...entry.kind==="record"?["record","view"]:entry.kind==="records"?["records","view"]:["files"]],["kind","label",entry.kind==="record"?"record":entry.kind==="records"?"records":"files"]);assert(text3(entry.label)&&(!("initiallyExpanded"in entry)||typeof entry.initiallyExpanded==="boolean")&&(!("view"in entry)||text3(entry.view)&&entry.view===entry.view.trim()));if(entry.kind==="record"){const record3=object3(entry.record);keys3(record3,["ref","title","fields"]);assert(text3(record3.ref)&&record3.ref===record3.ref.trim()&&text3(record3.title));fields4(record3.fields);return}if(entry.kind==="records"){const records=array2(entry.records);const refs=records.map((value2)=>{const record3=object3(value2);keys3(record3,["ref","title","description","facts","view"],["ref","title"]);assert(text3(record3.ref)&&record3.ref===record3.ref.trim()&&text3(record3.title));if("description"in record3)assert(text3(record3.description));if("facts"in record3)fields4(record3.facts);if("view"in record3)assert(text3(record3.view)&&record3.view===record3.view.trim());return record3.ref});assert(records.length>0&&new Set(refs).size===refs.length);return}const files2=array2(entry.files);files2.forEach(inboxFile);assert(files2.length>0&&new Set(files2.map((value2)=>object3(value2).id)).size===files2.length)}function response(value){const answer=object3(value);assert(Object.keys(answer).every((key)=>["selection","note"].includes(key)));if(typeof answer.selection==="string")assert(text3(answer.selection)&&answer.selection===answer.selection.trim());else recordReference(answer.selection);if(Object.hasOwn(answer,"note"))assert(text3(answer.note));return answer}function parseInboxRequest(value){try{const envelope=object3(value);assert(Object.keys(envelope).sort().join(",")==="input,operation");assert(typeof envelope.operation==="string"&&Object.hasOwn(operations,envelope.operation));const operation2=envelope.operation;const input=object3(envelope.input);const required=operations[operation2];assert(required.every((key)=>Object.hasOwn(input,key))&&Object.keys(input).every((key)=>required.includes(key)||operation2==="questions.searchRecords"&&key==="selected"||(operation2==="items.list"||operation2==="questions.list")&&key==="beforeNumber"));for(const key of["itemId","personId","fileId"])if(key in input)assert(id2(input[key]));if("revision"in input)assert(integer(input.revision));if("beforeNumber"in input)assert(integer(input.beforeNumber));if("questionId"in input)assert(text3(input.questionId)&&input.questionId===input.questionId.trim());if("title"in input)assert(text3(input.title));if("lifecycle"in input)assert(input.lifecycle==="open"||input.lifecycle==="closed");if("query"in input)assert(text3(input.query,true)&&input.query.length<=256);if("selected"in input)recordReference(input.selected);if("response"in input)response(input.response);assert(new TextEncoder().encode(JSON.stringify(envelope)).byteLength<=INBOX_INPUT_BYTES);return{operation:operation2,input}}catch{throw new InboxOperationError(400,"invalid_input")}}function parseInboxCurrent(value){const current=object3(value),workspace=object3(current.workspace),viewer=object3(current.viewer);assert(id2(workspace.id)&&text3(workspace.slug)&&/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(workspace.slug)&&text3(workspace.name)&&text3(workspace.locale)&&text3(workspace.timezone));assert(id2(viewer.id)&&text3(viewer.name)&&text3(viewer.email));return{workspace:{id:workspace.id,slug:workspace.slug,name:workspace.name,locale:workspace.locale,timezone:workspace.timezone},viewer:{id:viewer.id,name:viewer.name,email:viewer.email}}}function parseInboxItem(value){const item=object3(json2(value));assert(id2(item.id)&&id2(item.workspaceId)&&integer(item.number)&&integer(item.revision)&&integer(item.activityVersion,0)&&["ask","digest"].includes(String(item.kind))&&["open","closed"].includes(String(item.lifecycle))&&text3(item.title)&&text3(item.description,true)&&text3(item.author)&&date(item.publishedAt)&&optionalDate(item.seenAt)&&optionalDate(item.digestReadAt));if(item.outcome!==null)assert(text3(object3(item.outcome).outcome));array2(item.body).forEach(block);array2(item.views).forEach((value2)=>{const view=object3(value2);assert(text3(view.id)&&text3(view.view)&&text3(view.implementation));json2(view.input)});array2(item.people).forEach((value2)=>{const person=object3(value2);assert(id2(person.id)&&text3(person.name))});array2(item.questions).forEach((value2)=>{const question2=object3(value2);assert(text3(question2.id)&&id2(question2.to)&&text3(question2.prompt)&&(question2.instructions===null||text3(question2.instructions,true))&&typeof question2.available==="boolean");responseDefinition(question2.response);assert(array2(question2.allowedResponders).every(id2));if(question2.acceptedResponse!==null){const accepted=object3(question2.acceptedResponse);assert(id2(accepted.id)&&id2(accepted.userId)&&date(accepted.acceptedAt));response(accepted.response);if(accepted.label===null)delete accepted.label;else if("label"in accepted)assert(text3(accepted.label));if("acceptanceOrder"in accepted)assert(integer(accepted.acceptanceOrder))}if(question2.execution!==null){const execution=object3(question2.execution);assert(id2(execution.id)&&["pending","running","completed","failed"].includes(String(execution.state))&&integer(execution.attempt,0));if("consequence"in execution){const consequence=object3(execution.consequence);assert(["pending","running","applied","no-write","stopped","partial","uncertain"].includes(String(consequence.state))&&(consequence.phase===null||["loading","invoking","committing"].includes(String(consequence.phase)))&&date(consequence.updatedAt)&&typeof consequence.needsReconciliation==="boolean"&&(consequence.reason===null||text3(consequence.reason,true)));array2(consequence.evidence).forEach((value3)=>{const receipt=object3(value3);assert(text3(receipt.repository)&&text3(receipt.commit)&&text3(receipt.diff,true))})}}});array2(item.linkedAsks).forEach((value2)=>{const linked=object3(value2);assert(id2(linked.id));if(linked.state==="unavailable")assert(typeof linked.done==="boolean");else{assert(["yours","done","open","theirs"].includes(String(linked.state))&&text3(linked.title));if(linked.state==="theirs"){const assignee=object3(linked.assignee);assert(id2(assignee.id)&&text3(assignee.name))}}});array2(item.activity).forEach((value2)=>{const event=object3(value2);assert(integer(event.id)&&text3(event.type)&&(event.actorId===null||id2(event.actorId))&&(event.questionId===null||text3(event.questionId))&&integer(event.revision)&&date(event.createdAt));object3(event.data)});array2(item.work).forEach((value2)=>{const work=object3(value2);assert(id2(work.id)&&text3(work.questionId)&&text3(work.reason)&&optionalDate(work.settledAt))});return item}function parseAnswerableQuestion(value){const entry=object3(json2(value));keys3(entry,["item","origin","question","recordRefs"]);const item=object3(entry.item);keys3(item,["id","number","revision","title","href"]);assert(id2(item.id)&&integer(item.number)&&integer(item.revision)&&text3(item.title)&&text3(item.href));const link=new URL(item.href);const slug=link.hostname.slice(0,-".oddington.ai".length);assert(link.hostname.endsWith(".oddington.ai")&&slug.length<=63&&/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(slug)&&!["auth","www","api","os"].includes(slug)&&item.href===`https://${slug}.oddington.ai/inbox/${item.id}`);const origin=object3(entry.origin);keys3(origin,["routine"]);assert(text3(origin.routine)&&origin.routine===origin.routine.trim());const question2=object3(entry.question);keys3(question2,["id","prompt","instructions","response"]);assert(text3(question2.id)&&question2.id===question2.id.trim()&&text3(question2.prompt)&&(question2.instructions===null||text3(question2.instructions,true)));responseDefinition(question2.response);const refs=array2(entry.recordRefs);assert(refs.every((ref)=>text3(ref)&&ref===ref.trim())&&new Set(refs).size===refs.length);return entry}function parseInboxAcceptance(value){const accepted=object3(value);assert(id2(accepted.responseId)&&date(accepted.acceptedAt));if("executionId"in accepted)assert(id2(accepted.executionId));if("acceptanceOrder"in accepted)assert(integer(accepted.acceptanceOrder));if("label"in accepted)assert(text3(accepted.label));return accepted}function parseInboxResult(operation2,value){if(operation2==="current")return parseInboxCurrent(value);if(operation2==="questions.list"){const page=object3(value);keys3(page,["questions","nextBeforeNumber"]);const questions=array2(page.questions).map(parseAnswerableQuestion);assert(page.nextBeforeNumber===null||integer(page.nextBeforeNumber));return{questions,nextBeforeNumber:page.nextBeforeNumber}}if(operation2==="items.read")return parseInboxItem(value);if(operation2==="items.list"){const page=object3(value);const items=array2(page.items).map(parseInboxItem);assert(items.length<=100&&(page.nextBeforeNumber===null||integer(page.nextBeforeNumber)));return{items,nextBeforeNumber:page.nextBeforeNumber}}if(operation2==="items.see"){assert(date(value));return}if(operation2==="items.markDigestRead"){const read2=object3(value);assert(integer(read2.activityId)&&date(read2.readAt));return read2}if(operation2==="items.rename"||operation2==="items.setLifecycle"){const update=object3(value);const item=parseInboxItem(update.item);assert((update.activityId===null||integer(update.activityId))&&optionalDate(update.changedAt));return{...update,item}}if(operation2==="items.listRecipientCandidates"){const candidates=array2(value);candidates.forEach((value2)=>{const person=object3(value2);assert(id2(person.id)&&text3(person.name)&&text3(person.email))});assert(new Set(candidates.map((value2)=>object3(value2).id)).size===candidates.length);return candidates}if(operation2==="items.addRecipient"){const addition=object3(value);const item=parseInboxItem(addition.item);assert(id2(addition.addedPersonId)&&item.people.some((person)=>person.id===addition.addedPersonId));return{...addition,item}}if(operation2==="questions.answer")return parseInboxAcceptance(value);if(operation2==="questions.searchRecords"){const result2=object3(value);assert(text3(result2.recordType)&&integer(result2.eligibleCount,0)&&integer(result2.matchCount,0)&&Number(result2.matchCount)<=Number(result2.eligibleCount));const labeled=(value2)=>{const record3=object3(value2);recordReference({repository:record3.repository,ref:record3.ref});assert(text3(record3.label));if("reason"in record3)assert(text3(record3.reason))};array2(result2.matches).forEach(labeled);array2(result2.suggestions).forEach(labeled);if("selected"in result2)labeled(result2.selected);return result2}throw new Error("File content is not a JSON result")}async function limitedBody(request,limit,timeoutMs){if(!request.body)return new Uint8Array;const reader=request.body.getReader();let expired=false;const timer=timeoutMs===undefined?undefined:setTimeout(()=>{expired=true;reader.cancel().catch(()=>{})},timeoutMs);const chunks=[];let length=0;try{while(true){const{done,value}=await reader.read();if(done)break;length+=value.byteLength;if(length>limit){await reader.cancel();return}chunks.push(value)}if(expired)return;const contents=new Uint8Array(length);let offset=0;for(const chunk of chunks){contents.set(chunk,offset);offset+=chunk.byteLength}return contents}finally{if(timer!==undefined)clearTimeout(timer)}}var UUID=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function parseInboxHostContext(value){if(!value||typeof value!=="object"||Array.isArray(value))throw new Error("Inbox context unavailable");const v=value;if(v.kind!=="inbox"&&v.kind!=="focused"||Object.keys(v).sort().join(",")!==(v.kind==="inbox"?"generation,kind,memberId,workspaceId":"appId,generation,kind,memberId,workspaceId")||typeof v.workspaceId!=="string"||!UUID.test(v.workspaceId)||typeof v.memberId!=="string"||!UUID.test(v.memberId)||typeof v.generation!=="string"||!UUID.test(v.generation)||v.kind==="focused"&&(typeof v.appId!=="string"||!/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(v.appId)))throw new Error("Inbox context unavailable");const base={workspaceId:v.workspaceId,memberId:v.memberId,generation:v.generation};return Object.freeze(v.kind==="inbox"?{...base,kind:"inbox"}:{...base,kind:"focused",appId:v.appId})}class InboxContextError extends Error{status;constructor(status){super("Inbox context unavailable");this.status=status}}var contexts=new WeakMap;function resolveHostedInboxContext(host){if(!host.binding||!host.memberId)throw new Error("Inbox context unavailable");let resolve=contexts.get(host.binding);if(!resolve){resolve=hostedInboxContext();contexts.set(host.binding,resolve)}return resolve({...host,memberId:host.memberId})}function hostedInboxContext(){let installed2;let revision=0,issued=0,settled=0;return async(host)=>{const started=++issued;const check=()=>{if(!host.isCurrent()||host.expiresAt<=Date.now())throw new Error("Inbox context unavailable")};check();const response2=await fetch(`${host.endpoint}/api/inbox/context`,{method:"GET",headers:{authorization:`Bearer ${host.accessToken}`},credentials:"omit",redirect:"error",cache:"no-store",signal:AbortSignal.timeout(15000)});try{check();if(response2.status===401||response2.status===403){installed2=undefined;revision++;settled=Math.max(settled,started)}if(!response2.ok||response2.status!==200)throw new InboxContextError(response2.status);const bytes=await limitedBody(response2,4096);check();if(!bytes)throw new Error("Inbox context unavailable");const context=parseInboxHostContext(JSON.parse(new TextDecoder("utf-8",{fatal:true}).decode(bytes)));if(context.memberId!==host.memberId)throw new Error("Inbox context unavailable");if(JSON.stringify(installed2)!==JSON.stringify(context)){if(started<settled)throw new Error("Inbox context unavailable");installed2=context;revision++}settled=Math.max(settled,started);const current=revision;return Object.freeze({context,isCurrent:()=>host.isCurrent()&&host.expiresAt>Date.now()&&current===revision})}finally{response2.body?.cancel().catch(()=>{})}}}var sessionKey="_os.app.session";var responseChecks=new WeakMap;class AppResponseReadError extends Error{}class AppContextDenied extends Error{}class AppRenewalUnavailable extends Error{}async function untilAborted(work,signal){if(signal.aborted){work.catch(()=>{});throw new AppRenewalUnavailable}let abort;const cancelled=new Promise((_resolve,reject)=>{abort=()=>reject(new AppRenewalUnavailable);signal.addEventListener("abort",abort,{once:true})});try{return await Promise.race([work,cancelled])}finally{signal.removeEventListener("abort",abort)}}async function appResponse(response2,maximum,signal){if(signal.aborted||!response2.body||response2.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase()!=="application/json")throw new Error;const reader=response2.body.getReader();const abort=()=>{reader.cancel().catch(()=>{})};signal.addEventListener("abort",abort,{once:true});let bytes=0,text4="";const decoder=new TextDecoder("utf-8",{fatal:true});try{while(true){let chunk;try{chunk=await reader.read()}catch{throw new AppResponseReadError}if(signal.aborted)throw new Error;if(chunk.done){const value=JSON.parse(text4+decoder.decode());await responseChecks.get(response2)?.(value);if(signal.aborted)throw new Error;return value}bytes+=chunk.value.byteLength;if(bytes>maximum){abort();throw new Error}text4+=decoder.decode(chunk.value,{stream:true})}}finally{signal.removeEventListener("abort",abort);reader.releaseLock()}}function isAppOrigin(value){try{const url=new URL(value);return url.protocol==="http:"&&url.hostname==="127.0.0.1"&&Boolean(url.port)&&url.port!=="0"&&url.origin===value}catch{return false}}function appContext(origin,active2){let binding;let credential;let pair;let serialized;let denied=false;const controller=new AbortController;let access=new AbortController;let expiry;let startup;let renewalTimer;let renewal;let observation;let resolution2;let disposed=false;const stored=()=>globalThis.localStorage.getItem(sessionKey);const alive=()=>{try{return!denied&&!disposed&&active2()&&globalThis.location.origin===origin}catch{return false}};const cancel=()=>{controller.abort();access.abort();clearTimeout(expiry);clearTimeout(startup);clearTimeout(renewalTimer);clearInterval(monitor);globalThis.removeEventListener?.("storage",storageChanged);for(const event of["pageshow","focus","visibilitychange"])globalThis.removeEventListener?.(event,wake)};const invalidate=()=>{denied=true;cancel();try{if(!disposed&&active2()&&globalThis.location.origin===origin&&(!serialized||globalThis.localStorage.getItem(sessionKey)===serialized)){globalThis.localStorage.removeItem(sessionKey)}}catch{}};const current=()=>{try{return alive()&&!!binding&&binding.expiresAt>Date.now()&&stored()===serialized}catch{return false}};const sameSession=(value)=>!binding||["appId","memberId","workspace","sessionId"].every((key)=>value[key]===binding[key]);const bounded=(value)=>validBinding(value)&&value.expiresAt>Date.now()&&value.expiresAt<=Date.now()+600000&&sameSession(value);const readPair=(candidate)=>{const value=JSON.parse(candidate??"null");if(!validPair(value)||value.context.expiresAt>Date.now()+600000||!sameSession(value.context))throw new Error;return value};const expireAccess=()=>{if(binding&&binding.expiresAt<=Date.now())access.abort()};async function send2(path,candidate,signal,init={}){const url=`${origin}/_os/app/${path}`;let response2;try{response2=await fetch(url,{...init,credentials:"omit",redirect:"error",cache:"no-store",referrerPolicy:"no-referrer",signal,headers:{...init.body===undefined?{}:{"content-type":"application/json"},authorization:`Bearer ${candidate}`}})}catch{throw new AppRenewalUnavailable}if(response2.redirected||response2.url&&response2.url!==url)throw new Error;return response2}async function proof(candidate,signal=controller.signal){if(!alive()||!validProof(candidate))throw new Error;const response2=await send2("context",candidate,signal);if(response2.status===401||response2.status===403)throw new AppContextDenied;if(response2.status>=500)throw new AppRenewalUnavailable;if(!response2.ok)throw new Error;const value=await appResponse(response2,4096,signal);if(!alive()||!bounded(value))throw new Error;return value}function install(value,candidate,raw){expireAccess();if(access.signal.aborted)access=new AbortController;binding={...value};pair=candidate;credential=candidate.credential;serialized=raw;clearTimeout(expiry);clearTimeout(renewalTimer);const remaining=binding.expiresAt-Date.now();expiry=setTimeout(expireAccess,remaining);renewalTimer=setTimeout(()=>{renew().catch(()=>{})},remaining-Math.min(60000,remaining/5))}async function synchronize(signal=controller.signal){if(!alive())throw new Error;if(signal.aborted)throw new AppRenewalUnavailable;if(!credential)return;if(stored()===serialized)return;if(!binding)throw new Error;if(observation)return untilAborted(observation,signal);observation=(async()=>{while(alive()){const candidate=stored();if(!candidate)throw new Error;let value;let replacement;try{replacement=readPair(candidate);value=await proof(replacement.credential,signal)}catch(error){if(stored()!==candidate)continue;throw error}if(stored()!==candidate)continue;if(value.expiresAt!==replacement.context.expiresAt)throw new Error;install(value,replacement,candidate);return}throw new Error})();const observed=observation;try{await untilAborted(observed,signal)}catch(error){if(!(error instanceof AppRenewalUnavailable||error instanceof AppResponseReadError))invalidate();throw error}finally{if(observation===observed)observation=undefined}}async function renew(){if(renewal)return renewal;if(!binding||!pair||!alive())throw new Error;renewal=(async()=>{const requestController=new AbortController;const abort=()=>requestController.abort();controller.signal.addEventListener("abort",abort,{once:true});const timeout=setTimeout(abort,20000);const previous=serialized;try{await synchronize(requestController.signal);if(serialized!==previous)return;const response2=await send2("renew",pair.renewalCredential,requestController.signal,{method:"POST"});const value=await appResponse(response2,4096,requestController.signal);if(response2.status===503&&value&&typeof value==="object"&&!Array.isArray(value)&&Object.keys(value).join(",")==="error"&&"error"in value&&value.error==="renewal_unavailable")throw new AppRenewalUnavailable;if(response2.status===403&&value&&typeof value==="object"&&!Array.isArray(value)&&Object.keys(value).join(",")==="error"&&"error"in value&&value.error==="renewal_conflict"){while(alive()&&stored()===previous&&!requestController.signal.aborted){await new Promise((resolve2,reject)=>{const abortWait=()=>{clearTimeout(timer);reject(new Error)};const timer=setTimeout(()=>{requestController.signal.removeEventListener("abort",abortWait);resolve2()},100);requestController.signal.addEventListener("abort",abortWait,{once:true})})}if(requestController.signal.aborted)throw new Error;await synchronize(requestController.signal);return}if(!response2.ok)throw new Error;if(!alive()||!validPair(value)||!bounded(value.context)||new Set([value.credential,value.renewalCredential,pair.credential,pair.renewalCredential]).size!==4)throw new Error;if(stored()!==previous){await synchronize(requestController.signal);return}const raw=JSON.stringify(value);globalThis.localStorage.setItem(sessionKey,raw);install(value.context,value,raw)}catch(error){try{if(alive()&&stored()&&stored()!==previous){await synchronize(requestController.signal);return}}catch{}if((error instanceof AppRenewalUnavailable||error instanceof AppResponseReadError||requestController.signal.aborted)&&alive()){if(current())renewalTimer=setTimeout(()=>{renew().catch(()=>{})},Math.min(5000,(binding.expiresAt-Date.now())/5))}else invalidate();throw new AppRenewalUnavailable}finally{clearTimeout(timeout);controller.signal.removeEventListener("abort",abort)}})();try{await renewal}finally{renewal=undefined}}const storageChanged=()=>{if(!credential)return;if(!alive()){invalidate();return}expireAccess();synchronize().catch(()=>{})};const monitor=setInterval(()=>{storageChanged()},100);globalThis.addEventListener?.("storage",storageChanged);const wake=()=>{if(alive())resolve().catch(()=>{})};for(const event of["pageshow","focus","visibilitychange"])globalThis.addEventListener?.(event,wake);const dispose=()=>{disposed=true;cancel()};async function settledAccess(signal){await synchronize();while(alive()&&stored()!==serialized)await synchronize();if(signal.aborted||!current())throw new Error}async function requestData(operation2,input){try{if(operation2!=="data/query"||!current())throw new Error;const admitted=credential;const signal=access.signal;const response2=await send2("data",credential,signal,{method:"POST",body:JSON.stringify(input)});await settledAccess(signal);if(response2.status===401||response2.status===403){if(admitted===credential&&current())invalidate();throw new DataOperationError("access_denied")}const result2=await appResponse(response2,Number.MAX_SAFE_INTEGER,signal);await settledAccess(signal);if(!response2.ok)throw dataTransportError(response2.status,result2);return result2}catch(error){if(error instanceof DataOperationError)throw error;if(!current()||controller.signal.aborted)throw new DataOperationError("context_unavailable");throw new DataOperationError("unavailable",true)}}async function requestInbox(operation2,input){if(!["questions.list","questions.answer","questions.searchRecords"].includes(operation2))throw new Error("Inbox operation unavailable");return requestChecked("inbox",{method:"POST",body:JSON.stringify({operation:operation2,input})},true)}async function requestRoutine(key,suffix,init={}){return requestChecked(`routines/${encodeURIComponent(key)}/${suffix}`,init)}async function requestChecked(path,init,inbox=false){if(!current())throw new Error("Local app context unavailable.");const admitted=credential;const signal=access.signal;const response2=await send2(path,credential,signal,init);await settledAccess(signal);if((response2.status===401||!inbox&&response2.status===403)&&admitted===credential&&current())invalidate();responseChecks.set(response2,async(value)=>{await settledAccess(signal);if(admitted===credential&&current()&&value&&typeof value==="object"&&"error"in value&&value.error==="authority_unavailable")invalidate()});return response2}function context(){const issued=credential;const signal=access.signal;return{kind:"local",...binding,get expiresAt(){return binding.expiresAt},isCurrent:()=>!signal.aborted&&current(),signal,invalidate:()=>{if(issued===credential&&current())invalidate()},requestRoutine,requestData,requestInbox,requestAvailability:(key)=>requestRoutine(key,"availability",{method:"GET"})}}const resolveOnce=async()=>{let attempted;try{if(!alive())throw new Error;if(!pair){const candidate2=stored();const retained2=readPair(candidate2);pair=retained2;binding={...retained2.context};credential=retained2.credential;serialized=candidate2}expireAccess();if(binding.expiresAt<=Date.now()){await renew();if(!current())throw new AppRenewalUnavailable;return context()}await synchronize();const candidate=stored();const retained=readPair(candidate);attempted=candidate??undefined;if(!current())throw new AppRenewalUnavailable;const value=await proof(retained.credential);if(stored()!==candidate||serialized!==candidate){await synchronize();return context()}if(!current())throw new Error;if(expiry&&binding&&value.expiresAt>binding.expiresAt)throw new Error;if(!expiry||value.expiresAt!==binding.expiresAt)install(value,retained,candidate);return context()}catch(error){if(alive()&&error instanceof AppRenewalUnavailable)throw new Error;try{if(binding&&current()&&attempted&&attempted!==serialized)return context();if(binding&&alive()&&stored()&&stored()!==serialized){await synchronize();return context()}}catch{}if(error instanceof AppContextDenied&&binding&&alive()&&renewal)throw new Error;if(alive()&&(error instanceof AppResponseReadError||pair&&stored()===serialized&&!current()))throw new Error;invalidate();throw new Error}};const resolve=()=>{if(resolution2)return resolution2;resolution2=resolveOnce().finally(()=>{resolution2=undefined});return resolution2};const start=()=>{startup=setTimeout(()=>{if(alive()&&!resolution2&&!binding)resolve().catch(()=>{})},0)};return{resolve,start,invalidate,dispose}}function validProof(value){return typeof value==="string"&&/^[A-Za-z0-9_-]{43}$/.test(value)}function validBinding(value){if(!value||typeof value!=="object"||Array.isArray(value)||Object.keys(value).sort().join(",")!=="appId,expiresAt,memberId,sessionId,workspace")return false;const binding=value;return typeof binding.appId==="string"&&/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(binding.appId)&&typeof binding.workspace==="string"&&/^[a-z0-9][a-z0-9-]{0,62}$/.test(binding.workspace)&&typeof binding.memberId==="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(binding.memberId)&&validProof(binding.sessionId)&&typeof binding.expiresAt==="number"&&Number.isFinite(binding.expiresAt)}function validPair(value){if(!value||typeof value!=="object"||Array.isArray(value)||Object.keys(value).sort().join(",")!=="context,credential,renewalCredential")return false;const pair=value;return validProof(pair.credential)&&validProof(pair.renewalCredential)&&pair.credential!==pair.renewalCredential&&validBinding(pair.context)}var unavailable2=()=>new InboxOperationError(503,"unavailable");var stale=()=>new InboxOperationError(401,"authority_unavailable");function hostFailure(error,context){if(!context.isCurrent()||context.expiresAt<=Date.now()||error instanceof InboxContextError&&error.status===401)return stale();return error instanceof InboxContextError&&error.status===403?new InboxOperationError(403,"access_denied"):unavailable2()}async function send2(operation2,input){const envelope=parseInboxRequest({operation:operation2,input});let context;try{context=await resolveAppContext()}catch{throw stale()}if(context.kind==="local"){if(!isAppQuestionOperation(operation2))throw new InboxOperationError(403,"access_denied");const check2=()=>{if(!context.isCurrent()||context.signal.aborted||context.expiresAt<=Date.now())throw stale()};try{const response2=await context.requestInbox(operation2,envelope.input);const value=await appResponse(response2,INBOX_RESULT_BYTES,context.signal);check2();if(!response2.ok)throw new InboxOperationError([400,401,403,409].includes(response2.status)?response2.status:503,response2.status===400?"invalid_input":response2.status===401?"authority_unavailable":response2.status===403?"access_denied":response2.status===409?"conflict":"unavailable");if(response2.status!==200)throw unavailable2();const parsed=parseInboxResult(operation2,value);check2();if(operation2==="questions.answer"&&typeof envelope.input.response.selection==="object"&&!parsed.label?.trim())throw unavailable2();return parsed}catch(error){check2();throw error instanceof InboxOperationError?error:unavailable2()}}if(context.endpoint!==`https://${context.workspace}.oddington.ai`||["auth","www","api","os"].includes(context.workspace))throw stale();let host;try{host=await resolveHostedInboxContext(context)}catch(error){throw hostFailure(error,context)}if(!host)throw unavailable2();const check=()=>{if(!context.isCurrent()||!host.isCurrent()||!Number.isFinite(context.expiresAt)||context.expiresAt<=Date.now())throw stale()};check();if(host.context.kind==="focused"&&!isAppQuestionOperation(operation2))throw new InboxOperationError(403,"access_denied");try{const response2=await fetch(`${context.endpoint}/api/inbox`,{method:"POST",headers:{authorization:`Bearer ${context.accessToken}`,"content-type":"application/json"},body:JSON.stringify(envelope),redirect:"error",cache:"no-store",signal:AbortSignal.timeout(30000)});try{check()}catch(error){response2.body?.cancel().catch(()=>{});throw error}if(!response2.ok){response2.body?.cancel().catch(()=>{});throw new InboxOperationError([400,401,403,409].includes(response2.status)?response2.status:503,response2.status===400?"invalid_input":response2.status===401?"authority_unavailable":response2.status===403?"access_denied":response2.status===409?"conflict":"unavailable")}if(response2.status!==200){response2.body?.cancel().catch(()=>{});throw unavailable2()}if(operation2==="files.read"){if(!response2.body)throw unavailable2();const source=response2.body;let reader;let size=0;const cancel=async(reason)=>{try{await(reader?reader.cancel(reason):source.cancel(reason))}finally{reader?.releaseLock()}};const body=new ReadableStream({async pull(controller){try{check();reader??=source.getReader();const next=await reader.read();check();if(next.done){reader.releaseLock();controller.close();return}size+=next.value.byteLength;if(size>25*1024*1024)throw unavailable2();controller.enqueue(next.value)}catch(error){controller.error(error);await cancel(error).catch(()=>{})}},cancel},{highWaterMark:0});return new Response(body,{status:response2.status,headers:response2.headers})}const bytes=await limitedBody(response2,INBOX_RESULT_BYTES);check();if(!bytes)throw unavailable2();const value=JSON.parse(new TextDecoder("utf-8",{fatal:true}).decode(bytes));const parsed=parseInboxResult(operation2,value);check();if(operation2==="current"&&parsed.workspace.slug!==context.workspace)throw unavailable2();if("itemId"in envelope.input){const item=operation2==="items.read"?parsed:operation2==="items.rename"||operation2==="items.setLifecycle"||operation2==="items.addRecipient"?parsed.item:undefined;if(item&&(item.id!==envelope.input.itemId||("revision"in envelope.input)&&item.revision!==envelope.input.revision))throw unavailable2();if(operation2==="items.addRecipient"&&parsed.addedPersonId!==envelope.input.personId)throw unavailable2();if(operation2==="questions.answer"&&typeof envelope.input.response.selection==="object"&&!parsed.label?.trim())throw unavailable2()}return parsed}catch(error){check();throw error instanceof InboxOperationError?error:unavailable2()}}var inbox={current:async()=>await send2("current",{}),items:{async list(){const items=[];let beforeNumber;let initial;try{initial=await resolveAppContext()}catch{throw stale()}let host;try{host=initial.kind!=="local"&&await resolveHostedInboxContext(initial)}catch(error){throw hostFailure(error,initial)}if(initial.kind==="local")throw new InboxOperationError(403,"access_denied");if(!host)throw unavailable2();const check=()=>{if(!initial.isCurrent()||!host.isCurrent()||initial.expiresAt<=Date.now())throw stale()};do{check();const page=await send2("items.list",beforeNumber===undefined?{}:{beforeNumber});check();if(beforeNumber!==undefined&&(page.items.some((item)=>item.number>=beforeNumber)||page.nextBeforeNumber!==null&&page.nextBeforeNumber>=beforeNumber))throw unavailable2();items.push(...page.items);if(page.nextBeforeNumber===null)return items;beforeNumber=page.nextBeforeNumber}while(true)},read:async(itemId)=>await send2("items.read",{itemId}),see:async(itemId)=>{await send2("items.see",{itemId})},markDigestRead:async(itemId)=>await send2("items.markDigestRead",{itemId}),rename:async(input)=>await send2("items.rename",input),setLifecycle:async(input)=>await send2("items.setLifecycle",input),listRecipientCandidates:async(itemId)=>await send2("items.listRecipientCandidates",{itemId}),addRecipient:async(input)=>await send2("items.addRecipient",input)},questions:{async list(){const questions=[];let beforeNumber;let initial;try{initial=await resolveAppContext()}catch{throw stale()}let host;try{host=initial.kind!=="local"&&await resolveHostedInboxContext(initial)}catch(error){throw hostFailure(error,initial)}if(initial.kind!=="local"&&!host)throw unavailable2();const check=()=>{if(!initial.isCurrent()||host&&!host.isCurrent()||initial.expiresAt<=Date.now())throw stale()};do{check();const page=await send2("questions.list",beforeNumber===undefined?{}:{beforeNumber});check();if(page.questions.some((question2)=>question2.item.href!==`https://${initial.workspace}.oddington.ai/inbox/${question2.item.id}`)||beforeNumber!==undefined&&(page.questions.some((question2)=>question2.item.number>=beforeNumber)||page.nextBeforeNumber!==null&&page.nextBeforeNumber>=beforeNumber))throw unavailable2();questions.push(...page.questions);if(page.nextBeforeNumber===null)return questions;beforeNumber=page.nextBeforeNumber}while(true)},answer:async(input)=>await send2("questions.answer",input),searchRecords:async(input)=>await send2("questions.searchRecords",input)},files:{read:async(input)=>await send2("files.read",input)}};var sources=new WeakMap;function registerBrowserAuth(handle,source){sources.set(handle,source)}function browserAuthSource(handle){return sources.get(handle)}var installedDispose;function init({auth:input}){installedDispose?.();const registered=browserAuthSource(input);const auth=registered??input;if(!registered&&input&&"getState"in input||typeof auth?.getSession!=="function"||typeof auth?.onAuthStateChange!=="function"){installedDispose=installMemberContext(async()=>{throw new Error("Hosted Data context unavailable.")});return}let endpoint;let workspace;let localOrigin;try{const url=new URL(globalThis.location.origin);if(isAppOrigin(globalThis.location.origin))localOrigin=url.origin;const slug=url.hostname.endsWith(".oddington.ai")?url.hostname.slice(0,-".oddington.ai".length):"";if(url.protocol==="https:"&&!url.port&&!url.username&&!url.password&&!url.search&&!url.hash&&url.pathname==="/"&&/^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/.test(slug)&&slug!=="auth"){endpoint=url.origin;workspace=slug}}catch{}let active2=true;let revision=0;let person;let token;const binding={};const local=localOrigin?appContext(localOrigin,()=>active2):undefined;let subscription;let stopDisposal;const resolve=async()=>{if(local)return local.resolve();if(!active2||!endpoint||!workspace||globalThis.location.origin!==endpoint)throw new Error("Hosted Data context unavailable.");const started=revision;const{data:{session},error}=await auth.getSession();if(!active2||globalThis.location.origin!==endpoint||started!==revision||error||!session||person!==undefined&&person!==session.user.id){throw new Error("Hosted Data context unavailable.")}const expiresAt=(session.expires_at??0)*1000;if(!Number.isFinite(expiresAt)||expiresAt<=Date.now()||!session.user.id){throw new Error("Hosted Data context unavailable.")}person=session.user.id;const isCurrent=()=>active2&&globalThis.location.origin===endpoint&&revision===started&&person===session.user.id;return{workspace,endpoint,accessToken:session.access_token,expiresAt,isCurrent,memberId:session.user.id,binding}};const uninstall=installMemberContext(resolve);const dispose=()=>{if(!active2)return;active2=false;local?.dispose();revision++;subscription?.unsubscribe();stopDisposal?.();uninstall();if(installedDispose===dispose)installedDispose=undefined};installedDispose=dispose;stopDisposal=registered?.onDispose(dispose);if(!active2)return;subscription=auth.onAuthStateChange((event,session)=>{const next=session?.user.id??null;if(event==="SIGNED_OUT"||person!==undefined&&next!==person||registered&&person!==undefined&&event==="SIGNED_IN"&&token!==session?.access_token){revision++;local?.invalidate()}person=next;token=session?.access_token}).data.subscription;local?.start()}var os={init};var CLI_CALLBACK="http://127.0.0.1:53682/oauth/callback";function authorizationConfiguration(value){const setup=value;if(!setup||typeof setup.clientId!=="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(setup.clientId)||setup.redirectUri!==CLI_CALLBACK||!Array.isArray(setup.scopes)||setup.scopes.length!==1||setup.scopes[0]!=="email")throw new Error("Unavailable");return{clientId:setup.clientId,redirectUri:CLI_CALLBACK,scopes:["email"]}}function authorizationDetails(value,id3,setup,userId,account){const details=value;if(!details||details.authorization_id!==id3||details.redirect_uri!==setup.redirectUri||details.client?.id!==setup.clientId||typeof details.client.name!=="string"||!details.client.name.trim()||details.client.name.length>128||/[\x00-\x1f\x7f]/.test(details.client.name)||details.user?.id!==userId||details.user.email!==account.email||typeof details.scope!=="string"||details.scope.trim()!=="email")return Object.freeze({status:"invalid"});return Object.freeze({status:"consent",clientName:details.client.name.trim(),account,scopes:Object.freeze([...setup.scopes]),callbackAddress:new URL(setup.redirectUri).host})}function authorizationReturn(value,decision){const returnUrl=value?.redirect_url;if(typeof returnUrl!=="string"||returnUrl.length>8192||!returnUrl.startsWith(`${CLI_CALLBACK}?`)||/[\x00-\x20\x7f]/.test(returnUrl))return Object.freeze({status:"invalid"});try{const url=new URL(returnUrl);if(url.origin+url.pathname!==CLI_CALLBACK||url.username||url.password||url.hash)return Object.freeze({status:"invalid"});const parameters=url.searchParams;const allowed=["code","state","error","error_description","error_uri"];for(const key of parameters.keys()){if(!allowed.includes(key)||parameters.getAll(key).length!==1)return Object.freeze({status:"invalid"})}const code=parameters.get("code");const error=parameters.get("error");if(!parameters.get("state")||Boolean(code)===Boolean(error)||decision==="deny"&&!error||decision==="approve"&&!code||parameters.has("code")&&!code||parameters.has("error")&&!error||code&&(parameters.has("error_description")||parameters.has("error_uri")))return Object.freeze({status:"invalid"});return Object.freeze({status:"return",returnUrl})}catch{return Object.freeze({status:"invalid"})}}function authorizationFailure(error){const status=error?.status;return Object.freeze({status:status===404||status===410||status===400?"expired":status===401?"signed_out":status===403||status===422?"invalid":"unavailable"})}function createBrowserAuth(runtime){const coordinators=new Map;function publish(c,state){c.state=Object.freeze(state);for(const listener of c.listeners){try{listener(c.state)}catch{}}}function notify(c,event){for(const listener of c.sessions){try{listener(event,event==="SIGNED_OUT"?null:c.session)}catch{}}}function expire(c){if(!c.active||!c.session&&c.state.status==="expired")return;c.revision++;if(c.timer)clearTimeout(c.timer);c.session=null;publish(c,{status:"expired"});notify(c,"SIGNED_OUT")}function accept(c,event,session){if(!c.active)return;if(event==="INITIAL_SESSION"&&c.state.status!=="initializing")return;if(event==="TOKEN_REFRESHED"&&!c.session&&c.state.status!=="initializing")return;const replaced=c.session?.user?.id!==session?.user?.id||event==="SIGNED_OUT"||!!(event==="SIGNED_IN"&&c.session&&session?.access_token!==c.session.access_token);if(replaced)c.revision++;if(c.timer)clearTimeout(c.timer);const pending=c.state.pending;if(!session){c.session=null;publish(c,{status:c.state.status==="expired"?"expired":"signed_out",...pending?{pending}:{}});notify(c,"SIGNED_OUT");return}if(!validSession(session)){c.session=session;expire(c);return}c.session=session;const email=typeof session.user.email==="string"?session.user.email.trim():"";const metadata=session.user.user_metadata;const displayName=["name","full_name","first_name"].map((key)=>metadata?.[key]).find((value)=>typeof value==="string"&&value.trim());const name=displayName?.trim()||email;const account=!replaced&&c.state.account?.email===email&&c.state.account.displayName===name?c.state.account:Object.freeze({email,displayName:name});publish(c,{status:"signed_in",account,...pending?{pending}:{}});notify(c,event);const checkExpiry=()=>{if(!c.active||!c.session)return;const remaining=c.session.expires_at*1000-Date.now();if(remaining<=0)expire(c);else c.timer=setTimeout(checkExpiry,Math.min(remaining,2147483647))};checkExpiry()}function validSession(session){return typeof session.access_token==="string"&&/^[^\s]{1,8192}$/.test(session.access_token)&&typeof session.user?.id==="string"&&!!session.user.id&&Number.isFinite(session.expires_at)&&session.expires_at*1000>Date.now()}function createCoordinator(origin){const c={state:Object.freeze({status:"initializing"}),session:null,revision:0,active:true,refs:0,listeners:new Set,sessions:new Set,ready:Promise.resolve()};c.ready=(async()=>{const revision=c.revision;try{if(!allowedOrigin(origin))throw runtime.failure("unavailable");const response2=await fetch(`${origin}/api/auth`,{method:"GET",credentials:"same-origin",redirect:"error",cache:"no-store"});if(!response2.ok)throw runtime.failure("unavailable");const configuration=validateConfiguration(await response2.json());if(configuration.authorization&&origin!=="https://auth.oddington.ai"&&origin!=="http://127.0.0.1:5176")throw runtime.failure("unavailable");c.authorization=configuration.authorization;if(!c.active||globalThis.location?.origin!==origin)return;c.provider=await runtime.provider(configuration,{revision:()=>c.revision,current:(revision2)=>current(c,origin,revision2),canPersistSession:()=>c.active&&(c.state.status==="initializing"||!!c.session||c.state.pending==="verify_code"),canAuthorize:(accessToken)=>current(c,origin,c.revision)&&!!c.session&&c.session.access_token===accessToken&&c.state.pending!=="sign_out"});if(!c.active||globalThis.location?.origin!==origin){c.provider.dispose();return}const subscription=c.provider.onAuthStateChange((event,session)=>{if(c.state.status==="initializing"&&c.state.pending==="sign_out")return;accept(c,event,session)}).data.subscription;c.unsubscribe=()=>subscription.unsubscribe();const started=c.revision;const{data:data2,error}=await c.provider.getSession();if(!current(c,origin,started))return;if(error){if(terminalSessionFailure(error))expire(c);else if(!c.session||!validSession(c.session))publish(c,{status:"unavailable",error:"unavailable"})}else if(c.state.pending!=="sign_out")accept(c,"INITIAL_SESSION",data2.session)}catch{if(current(c,origin,revision))publish(c,{status:"unavailable",error:"unavailable"})}})();return c}function current(c,origin,revision){if(c.session&&!validSession(c.session))expire(c);return c.active&&c.revision===revision&&globalThis.location?.origin===origin}return{create(){const origin=globalThis.location?.origin??"";let c=coordinators.get(origin);if(!c){c=createCoordinator(origin);coordinators.set(origin,c)}const coordinator=c;coordinator.refs++;let active2=true;let ownedAction;let authorizationId;let authorizationGeneration=0;let inspected;const observers=new Set;const sessionObservers=new Set;const disposalObservers=new Set;let lastState=coordinator.state;const observation=(state)=>{lastState=state;for(const listener of observers){try{listener(state)}catch{}}};coordinator.listeners.add(observation);const assertActive=()=>{if(!active2)throw runtime.failure("disposed")};async function action(kind,work){assertActive();if(coordinator.action&&kind!=="sign_out")throw runtime.failure("busy");if(kind==="sign_out"&&coordinator.state.pending==="sign_out")throw runtime.failure("busy");if(kind==="sign_out"){coordinator.revision++;notify(coordinator,"SIGNED_OUT")}const marker={};coordinator.action=marker;ownedAction=marker;const revision=coordinator.revision;publish(coordinator,{...coordinator.state,error:undefined,pending:kind});try{await coordinator.ready;assertActive();if(!coordinator.provider||!coordinator.active||globalThis.location?.origin!==origin)throw runtime.failure("unavailable");if(!current(coordinator,origin,revision))throw runtime.failure("stale");if(coordinator.action!==marker)throw runtime.failure("stale");await work(coordinator.provider);assertActive();if(coordinator.action!==marker)throw runtime.failure("stale");if(!current(coordinator,origin,revision)&&kind!=="verify_code"&&kind!=="sign_out")throw runtime.failure("stale")}catch(error){const reason=!active2?"disposed":!current(coordinator,origin,revision)?"stale":safeReason(error)??"unavailable";if(active2&&current(coordinator,origin,revision))publish(coordinator,{...coordinator.state,error:reason});throw runtime.failure(reason)}finally{if(coordinator.action===marker){coordinator.action=undefined;if(coordinator.active){publish(coordinator,{...coordinator.state,pending:undefined});if(kind==="sign_out"&&coordinator.session)notify(coordinator,"TOKEN_REFRESHED")}}if(ownedAction===marker)ownedAction=undefined}}async function authorize(kind,id3){if(!active2)return Object.freeze({status:"disposed"});if(id3!==authorizationId){authorizationId=id3;authorizationGeneration++;inspected=undefined}if(!id3)return Object.freeze({status:"missing"});if(typeof id3!=="string"||!/^[A-Za-z0-9_-]{1,128}$/.test(id3))return Object.freeze({status:"invalid"});const generation=authorizationGeneration;await coordinator.ready;if(!active2)return Object.freeze({status:"disposed"});if(generation!==authorizationGeneration)return Object.freeze({status:"stale"});const revision=coordinator.revision;if(!current(coordinator,origin,revision))return Object.freeze({status:"stale"});if(!coordinator.session||coordinator.state.pending==="sign_out")return Object.freeze({status:coordinator.state.status==="expired"?"expired":coordinator.state.status==="unavailable"?"unavailable":"signed_out"});if(!coordinator.authorization||!coordinator.provider)return Object.freeze({status:"unavailable"});if(coordinator.action)return Object.freeze({status:"busy"});if(kind!=="get"&&(!inspected||inspected.id!==id3||inspected.revision!==revision))return Object.freeze({status:"stale"});if(kind!=="get"&&inspected?.result.status!=="consent")return inspected.result;const marker={};coordinator.action=marker;ownedAction=marker;const requestCurrent=()=>active2&&generation===authorizationGeneration&&current(coordinator,origin,revision)&&coordinator.action===marker&&!!coordinator.session&&coordinator.state.pending!=="sign_out";const stale2=()=>Object.freeze({status:active2?"stale":"disposed"});try{const provider=coordinator.provider;const response2=await provider.authorization.get(id3,requestCurrent);if(!requestCurrent())return stale2();if(response2.error){inspected=undefined;const failure=authorizationFailure(response2.error);if(failure.status==="signed_out")expire(coordinator);return failure}const account=coordinator.state.account;const result2=response2.data&&typeof response2.data==="object"&&"redirect_url"in response2.data?authorizationReturn(response2.data):authorizationDetails(response2.data,id3,coordinator.authorization,coordinator.session.user.id,account);inspected={id:id3,revision,result:result2};if(kind==="get"||result2.status!=="consent")return result2;if(!requestCurrent())return stale2();const decision=await provider.authorization[kind](id3,requestCurrent);if(!requestCurrent())return stale2();const returned=decision.error?authorizationFailure(decision.error):authorizationReturn(decision.data,kind);if(returned.status==="signed_out")expire(coordinator);inspected={id:id3,revision,result:returned};return returned}catch(error){if(!requestCurrent())return stale2();inspected=undefined;if(safeReason(error)==="stale")return stale2();return Object.freeze({status:"unavailable"})}finally{if(coordinator.action===marker)coordinator.action=undefined;if(ownedAction===marker)ownedAction=undefined}}const handle=Object.freeze({authorization:Object.freeze({get:(id3)=>authorize("get",id3),approve:(id3)=>authorize("approve",id3),deny:(id3)=>authorize("deny",id3)}),getState(){if(active2&&coordinator.session&&!validSession(coordinator.session))expire(coordinator);return lastState},subscribe(listener){assertActive();observers.add(listener);return()=>{observers.delete(listener)}},async sendCode(email){assertActive();if(!validEmail(email))throw runtime.failure("invalid_input");await action("send_code",async(provider)=>{const{error}=await provider.signInWithOtp({email:email.trim(),options:{shouldCreateUser:false}});if(error&&!accountRefusal(error))throw runtime.failure("unavailable")})},async verifyCode(email,code){assertActive();if(!validEmail(email)||typeof code!=="string"||!/^\d{6}$/.test(code))throw runtime.failure("invalid_input");await action("verify_code",async(provider)=>{const revision=coordinator.revision;const{data:data2,error}=await provider.verifyOtp({email:email.trim(),token:code,type:"email"});if(error)throw runtime.failure(accountRefusal(error)?"invalid_code":"unavailable");if(!data2.session||!validSession(data2.session))throw runtime.failure("invalid_code");if(!current(coordinator,origin,revision)&&(coordinator.session?.access_token!==data2.session.access_token||coordinator.revision!==revision+1||coordinator.state.pending!=="verify_code"))throw runtime.failure("stale");accept(coordinator,"SIGNED_IN",data2.session)})},async signOut(){assertActive();await action("sign_out",async(provider)=>{const revision=coordinator.revision;const{error}=await provider.signOut({scope:"local"});if(error)throw runtime.failure("unavailable");if(!current(coordinator,origin,revision)&&coordinator.session)throw runtime.failure("stale");accept(coordinator,"SIGNED_OUT",null)})},dispose(){if(!active2)return;active2=false;authorizationGeneration++;inspected=undefined;if(ownedAction&&coordinator.action===ownedAction)coordinator.revision++;observers.clear();coordinator.listeners.delete(observation);for(const listener of disposalObservers){try{listener()}catch{}}disposalObservers.clear();for(const listener of sessionObservers)coordinator.sessions.delete(listener);sessionObservers.clear();if(--coordinator.refs===0){coordinator.active=false;coordinator.revision++;if(coordinator.timer)clearTimeout(coordinator.timer);coordinator.unsubscribe?.();coordinator.provider?.dispose();coordinator.provider=undefined;coordinator.session=null;coordinator.listeners.clear();coordinator.sessions.clear();coordinators.delete(origin)}}});registerBrowserAuth(handle,{onDispose(callback){if(!active2){callback();return()=>{}}disposalObservers.add(callback);return()=>{disposalObservers.delete(callback)}},async getSession(){assertActive();await coordinator.ready;assertActive();const revision=coordinator.revision;if(!current(coordinator,origin,revision)||!coordinator.provider||!coordinator.session||coordinator.state.pending==="sign_out")return{data:{session:null},error:null};let result2;try{result2=await coordinator.provider.getSession()}catch{result2={data:{session:null},error:runtime.failure("unavailable")}}if(!active2||!current(coordinator,origin,revision))return{data:{session:null},error:runtime.failure("stale")};if(result2.error){if(!terminalSessionFailure(result2.error)&&coordinator.session&&validSession(coordinator.session))return{data:{session:coordinator.session},error:null};expire(coordinator);return{data:{session:null},error:runtime.failure("unavailable")}}accept(coordinator,"TOKEN_REFRESHED",result2.data.session);return{data:{session:coordinator.session},error:null}},onAuthStateChange(callback){if(!active2){callback("SIGNED_OUT",null);return{data:{subscription:{unsubscribe(){}}}}}const listener=(event,session)=>callback(event,session);coordinator.sessions.add(listener);sessionObservers.add(listener);callback("INITIAL_SESSION",coordinator.session);return{data:{subscription:{unsubscribe(){coordinator.sessions.delete(listener);sessionObservers.delete(listener)}}}}}});return handle}}}function safeReason(error){const reason=error?.reason;return["invalid_input","invalid_code","unavailable","busy","stale","disposed"].includes(reason)?reason:undefined}function accountRefusal(error){return[400,401,403,404,422].includes(error?.status??0)}function terminalSessionFailure(error){return[400,401,403,404,422].includes(error?.status??0)}function validEmail(email){return typeof email==="string"&&email.length<=320&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email.trim())}function allowedOrigin(origin){if(origin==="http://127.0.0.1:5176"||origin==="https://auth.oddington.ai")return true;try{const url=new URL(origin);const slug=url.hostname.endsWith(".oddington.ai")?url.hostname.slice(0,-".oddington.ai".length):"";return slug.length<=63&&/^[a-z0-9]+(?:-[a-z0-9]+)*$/.test(slug)&&!["auth","api","os","www"].includes(slug)&&origin===`https://${slug}.oddington.ai`}catch{return false}}function validateConfiguration(value){const configuration=value;if(!configuration||typeof configuration.providerUrl!=="string"||typeof configuration.publishableKey!=="string")throw new Error("Unavailable");const url=new URL(configuration.providerUrl);if(url.origin!==configuration.providerUrl||url.protocol!=="https:"||url.username||url.password||url.port||!configuration.publishableKey)throw new Error("Unavailable");return{providerUrl:url.origin,publishableKey:configuration.publishableKey,...configuration.authorization===undefined?{}:{authorization:authorizationConfiguration(configuration.authorization)}}}class BrowserAuthError extends Error{reason;constructor(reason){super(`Browser authentication failed: ${reason}`);this.reason=reason;this.name="BrowserAuthError"}}async function provider(configuration,guard){const{AuthClient:AuthClient2}=await Promise.resolve().then(() => (init_auth_provider(),exports_auth_provider));if(!guard.current(guard.revision()))throw new BrowserAuthError("stale");const provenance=new Map;let removalRevision;let authorizationRequest;let authorizationQueue=Promise.resolve();const storage=globalThis.localStorage;const client=new AuthClient2({url:`${configuration.providerUrl}/auth/v1`,headers:{apikey:configuration.publishableKey,Authorization:`Bearer ${configuration.publishableKey}`},storageKey:`sb-${new URL(configuration.providerUrl).hostname.split(".")[0]}-auth-token`,persistSession:true,autoRefreshToken:true,detectSessionInUrl:false,storage:{getItem:(key)=>storage.getItem(key),removeItem(key){if(!guard.current(removalRevision??guard.revision()))throw new BrowserAuthError("stale");storage.removeItem(key)},setItem(key,value){const token=JSON.parse(value).access_token;const revision=token?provenance.get(token):undefined;if(!guard.current(revision??guard.revision())||token&&!guard.canPersistSession())throw new BrowserAuthError("stale");storage.setItem(key,value)}},fetch:Object.assign(async(input,init2)=>{const revision=guard.revision();const request=String(input).startsWith(`${configuration.providerUrl}/auth/v1/oauth/authorizations/`)?authorizationRequest:undefined;const rejectStale=()=>{if(request)request.rejected=true;throw new BrowserAuthError("stale")};if(request&&(!request.current()||!guard.canAuthorize(new Headers(init2?.headers).get("authorization")?.replace(/^Bearer /,"")??"")))rejectStale();const response2=await fetch(input,{...init2,redirect:"error"});const body=await response2.arrayBuffer();if(!guard.current(revision)||request&&!request.current())rejectStale();const result2=new Response([204,205,304].includes(response2.status)?null:body,{status:response2.status,statusText:response2.statusText,headers:response2.headers});const json3=result2.json.bind(result2);result2.json=async()=>{const value=await json3();if(!guard.current(revision)||request&&!request.current())rejectStale();if(value&&typeof value.access_token==="string")provenance.set(value.access_token,revision);return value};return result2},{preconnect:fetch.preconnect})});async function authorization(kind,id3,current){const previous=authorizationQueue;let release;authorizationQueue=new Promise((resolve)=>{release=resolve});await previous;const request={current,rejected:false};authorizationRequest=request;try{if(!current())throw new BrowserAuthError("stale");const result2=await(kind==="get"?client.oauth.getAuthorizationDetails(id3):kind==="approve"?client.oauth.approveAuthorization(id3,{skipBrowserRedirect:true}):client.oauth.denyAuthorization(id3,{skipBrowserRedirect:true}));if(request.rejected||!current())throw new BrowserAuthError("stale");return result2}catch(error){if(request.rejected||!current())throw new BrowserAuthError("stale");throw error}finally{authorizationRequest=undefined;release()}}return{authorization:{get:(id3,current)=>authorization("get",id3,current),approve:(id3,current)=>authorization("approve",id3,current),deny:(id3,current)=>authorization("deny",id3,current)},getSession:()=>client.getSession(),onAuthStateChange:(callback)=>client.onAuthStateChange((event,session)=>{const revision=session?provenance.get(session.access_token):undefined;if(revision!==undefined&&!guard.current(revision))return;callback(event,session);if(session)provenance.delete(session.access_token)}),signInWithOtp:(input)=>client.signInWithOtp(input),verifyOtp:(input)=>client.verifyOtp(input),async signOut(input){removalRevision=guard.revision();try{return await client.signOut(input)}finally{removalRevision=undefined}},dispose(){provenance.clear();client.dispose()}}}var auth=createBrowserAuth({provider,failure:(reason)=>new BrowserAuthError(reason)});var identifier=/^[a-z0-9]+(?:-[a-z0-9]+)*(?![\s\S])/;var uuid=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;var isReason=(value)=>value==="not_enabled"||value==="authority_unavailable"||value==="execution_unavailable"||value==="invalid_input";class AppRoutineError extends Error{reason;constructor(reason){super(reason);this.reason=reason;this.name="AppRoutineError"}}function fail3(reason){throw new AppRoutineError(reason)}function object4(value){return Boolean(value)&&typeof value==="object"&&!Array.isArray(value)}function keys4(value,expected){return Object.keys(value).sort().join(",")===expected}function current(context){if(!context.isCurrent()||context.signal.aborted)fail3("authority_unavailable")}async function body(context,response2,maximum){try{const value=await appResponse(response2,maximum,context.signal);current(context);if(!response2.ok){if(object4(value)&&keys4(value,"error")&&isReason(value.error)){if(value.error==="authority_unavailable")context.invalidate();fail3(value.error)}fail3("authority_unavailable")}return value}catch(error){current(context);if(error instanceof AppResponseReadError)throw error;if(error instanceof AppRoutineError)throw error;return fail3("execution_unavailable")}}function descriptor(value,key){if(!object4(value)||!keys4(value,"after,key,routine,runId")||value.key!==key||typeof value.runId!=="string"||!uuid.test(value.runId)||value.after!==0||typeof value.routine!=="string"||!identifier.test(value.routine))fail3("execution_unavailable");return value}function safeValue(value,depth=0){if(depth>32)return false;if(value===null||typeof value==="string"||typeof value==="boolean")return true;if(typeof value==="number")return Number.isFinite(value);if(Array.isArray(value))return value.every((item)=>safeValue(item,depth+1));return object4(value)&&Object.entries(value).every(([key,item])=>!["__proto__","constructor","prototype"].includes(key)&&safeValue(item,depth+1))}function event(value,run,steps){if(!object4(value)||value.runId!==run.runId||value.key!==run.key||value.routine!==run.routine||!Number.isSafeInteger(value.sequence)||value.sequence<1||new TextEncoder().encode(JSON.stringify(value)).byteLength>16*1024)fail3("execution_unavailable");const common="key,routine,runId,sequence,";if(value.type==="started"&&keys4(value,common+"type")&&value.sequence===1)return{type:"started"};if(value.type==="step"&&typeof value.id==="string"&&identifier.test(value.id)&&(!steps||steps.includes(value.id))&&keys4(value,"id,"+common+(Object.hasOwn(value,"summary")?"summary,type":"type"))&&(!Object.hasOwn(value,"summary")||safeValue(value.summary))){return{type:"step",id:value.id,...Object.hasOwn(value,"summary")?{summary:value.summary}:{}}}if(value.type==="finished"){if(value.state==="succeeded"&&keys4(value,"key,"+(Object.hasOwn(value,"result")?"result,":"")+"routine,runId,sequence,state,type")&&(!Object.hasOwn(value,"result")||safeValue(value.result))){return{type:"finished",state:"succeeded",...Object.hasOwn(value,"result")?{result:value.result}:{}}}if(value.state==="failed"&&value.error==="execution_failed"&&keys4(value,"error,"+common+"state,type")){return{type:"finished",state:"failed",error:"execution_failed"}}if(value.state==="cancelled"&&keys4(value,common+"state,type"))return{type:"finished",state:"cancelled"}}return fail3("execution_unavailable")}async function pause(context,delay){current(context);await new Promise((resolve,reject)=>{const abort=()=>{clearTimeout(timer);reject(new AppRoutineError("authority_unavailable"))};const timer=setTimeout(()=>{context.signal.removeEventListener("abort",abort);resolve()},delay);context.signal.addEventListener("abort",abort,{once:true})});current(context)}function handle(context,run,steps){return Object.freeze({async*events(...args){if(args.length)fail3("invalid_input");let cursor=0,terminal=false,delay=100,retainedBytes=0;const seen=[];while(!terminal){current(context);let response2;try{response2=await context.requestRoutine(run.key,`runs/${run.runId}/events?after=${cursor}`)}catch{current(context);await pause(context,delay);delay=Math.min(delay*2,2000);continue}if(response2.status>=500){await response2.body?.cancel();await pause(context,delay);delay=Math.min(delay*2,2000);continue}let value;try{value=await body(context,response2,80*1024)}catch(error){if(!(error instanceof AppResponseReadError))throw error;await pause(context,delay);delay=Math.min(delay*2,2000);continue}if(!object4(value)||!keys4(value,"after,events,terminal")||!Array.isArray(value.events)||value.events.length>256||typeof value.terminal!=="boolean"||!Number.isSafeInteger(value.after))fail3("execution_unavailable");const delivery=[];for(const raw of value.events){const publicEvent=event(raw,run,steps);const encoded=JSON.stringify(raw);const sequence=raw.sequence;if(sequence<=cursor){if(seen[sequence-1]!==encoded)fail3("execution_unavailable");continue}if(terminal||sequence!==cursor+1||sequence>256||(cursor===0?publicEvent.type!=="started":publicEvent.type==="started"))fail3("execution_unavailable");retainedBytes+=new TextEncoder().encode(encoded).byteLength;if(retainedBytes>1024*1024)fail3("execution_unavailable");seen.push(encoded);cursor=sequence;terminal=publicEvent.type==="finished";delivery.push(publicEvent)}if(value.after!==cursor||value.terminal!==terminal)fail3("execution_unavailable");for(const item of delivery){current(context);yield item}delay=100;if(!terminal)await pause(context,delivery.length?100:250)}},async cancel(...args){if(args.length)fail3("invalid_input");try{const value=await body(context,await context.requestRoutine(run.key,`runs/${run.runId}/cancel`,{method:"POST"}),1024);if(!object4(value)||!keys4(value,"cancelled")||value.cancelled!==true)fail3("execution_unavailable")}catch(error){current(context);if(error instanceof AppRoutineError)throw error;fail3("execution_unavailable")}}})}async function appRoutineOperation(key,input,recover){let context;try{if(!identifier.test(key))fail3("authority_unavailable");const resolved=await resolveAppContext();if(resolved.kind!=="local")fail3("execution_unavailable");context=resolved;if(recover){const value2=await body(context,await context.requestRoutine(key,"runs"),16*1024);if(!object4(value2)||!keys4(value2,"runs")||!Array.isArray(value2.runs)||value2.runs.length>20)fail3("execution_unavailable");const runs=value2.runs.map((run)=>descriptor(run,key));if(new Set(runs.map((run)=>run.runId)).size!==runs.length||new Set(runs.map((run)=>run.routine)).size>1)fail3("execution_unavailable");return runs.map((run)=>handle(resolved,run))}const available=await body(context,await context.requestAvailability(key),16*1024);if(object4(available)&&keys4(available,"available,reason")&&available.available===false&&isReason(available.reason))fail3(available.reason);if(!object4(available)||!keys4(available,"available,steps")||available.available!==true||!Array.isArray(available.steps)||available.steps.length<1||available.steps.length>64||!available.steps.every((step)=>typeof step==="string"&&identifier.test(step))||new Set(available.steps).size!==available.steps.length)fail3("execution_unavailable");const steps=[...available.steps];let encoded;try{encoded=JSON.stringify(input);if(encoded===undefined||new TextEncoder().encode(encoded).byteLength>16*1024)fail3("invalid_input")}catch{fail3("invalid_input")}const value=await body(context,await context.requestRoutine(key,"runs",{method:"POST",body:`{"input":${encoded}}`}),16*1024);return handle(context,descriptor(value,key),steps)}catch(error){if(context)current(context);if(error instanceof AppRoutineError)throw error;return fail3(context?"execution_unavailable":"authority_unavailable")}}var authorityUnavailable=()=>({available:false,reason:"authority_unavailable"});var MAX_RESPONSE_BYTES=16*1024;async function availability(key){try{if(!/^[a-z0-9]+(?:-[a-z0-9]+)*(?![\s\S])/.test(key))return authorityUnavailable();const context=await resolveAppContext();if(context.kind!=="local")return{available:false,reason:"execution_unavailable"};const response2=await context.requestAvailability(key);if(!response2.ok||response2.headers.get("content-type")?.split(";")[0]?.trim().toLowerCase()!=="application/json"){return authorityUnavailable()}const value=await appResponse(response2,MAX_RESPONSE_BYTES,context.signal);if(!context.isCurrent())return authorityUnavailable();if(!value||typeof value!=="object"||Array.isArray(value))return authorityUnavailable();const result2=value;if(result2.available===false&&Object.keys(result2).sort().join(",")==="available,reason"&&(result2.reason==="not_enabled"||result2.reason==="authority_unavailable"||result2.reason==="execution_unavailable")){return{available:false,reason:result2.reason}}if(result2.available!==true||Object.keys(result2).sort().join(",")!=="available,steps"||!Array.isArray(result2.steps)||result2.steps.length<1||result2.steps.length>64||!result2.steps.every((step)=>typeof step==="string"&&/^[a-z0-9]+(?:-[a-z0-9]+)*(?![\s\S])/.test(step))||new Set(result2.steps).size!==result2.steps.length)return authorityUnavailable();return{available:true,steps:[...result2.steps]}}catch{return authorityUnavailable()}}var app=Object.freeze({routines:new Proxy(Object.create(null),{get(_target,key){if(typeof key!=="string")return;return Object.freeze({availability:(...args)=>args.length?Promise.resolve(authorityUnavailable()):availability(key),run:(...args)=>args.length===1?appRoutineOperation(key,args[0],false):Promise.reject(new AppRoutineError("invalid_input")),recover:(...args)=>args.length===0?appRoutineOperation(key,undefined,true):Promise.reject(new AppRoutineError("invalid_input"))})},set:()=>false,defineProperty:()=>false,deleteProperty:()=>false})});var LIMIT2=16*1024;var context;var unavailable3=()=>new Error("App routine reporting unavailable");function freeze2(value){if(value!==null&&typeof value==="object"){for(const child of Object.values(value))freeze2(child);Object.freeze(value)}return value}if((typeof __ODDINGTON_BROWSER__==="undefined"||!__ODDINGTON_BROWSER__)&&typeof process!=="undefined"&&process.env.ODDINGTON_APP_RUN!==undefined){let fail4=function(){broken=true;pending?.reject(unavailable3());pending=undefined;channel.destroy()},report=function(value){let frame;try{frame=JSON.stringify({...value,sequence:++sequence});if(Buffer.byteLength(frame)>LIMIT2)return rejected()}catch{return rejected()}const operation2=queue.then(async()=>{if(broken)throw unavailable3();await new Promise((resolve,reject)=>{const timeout=setTimeout(fail4,30000);pending={sequence:JSON.parse(frame).sequence,resolve(){clearTimeout(timeout);resolve()},reject(error){clearTimeout(timeout);reject(error)}};channel.ref();channel.write(`${frame}
77
77
  `,(error)=>{if(error)fail4()})})});queue=operation2.catch(()=>{});return operation2},rejected=function(){if(!broken)channel.end(`{"type":"invalid"}
78
78
  `);broken=true;pending?.reject(unavailable3());pending=undefined;return Promise.reject(unavailable3())};if(process.env.ODDINGTON_APP_RUN!=="1")throw unavailable3();const{readSync,closeSync}=await import("node:fs");const{Socket}=await import("node:net");let bootstrap;try{const chunks=[];let size=0;for(;;){const bytes2=new Uint8Array(4096);const count=readSync(4,bytes2,0,bytes2.length,null);if(!count)break;size+=count;if(size>131072)throw unavailable3();chunks.push(bytes2.slice(0,count))}closeSync(4);const bytes=new Uint8Array(size);let offset=0;for(const chunk of chunks){bytes.set(chunk,offset);offset+=chunk.length}bootstrap=JSON.parse(new TextDecoder("utf-8",{fatal:true}).decode(bytes));if(!bootstrap||Object.keys(bootstrap).sort().join(",")!=="contract,input")throw unavailable3()}catch{throw unavailable3()}const contract=parseAppRoutineContract(bootstrap.contract);validateAppRoutineInput(contract,bootstrap.input);const input=freeze2(bootstrap.input);const channel=new Socket({fd:3,readable:true,writable:true});channel.unref();let broken=false,finishing=false,sequence=0;let pending;let buffer="";channel.on("error",fail4);channel.on("close",fail4);channel.on("end",fail4);channel.on("data",(bytes)=>{buffer+=bytes.toString("utf8");if(Buffer.byteLength(buffer)>1024)return fail4();const end=buffer.indexOf(`
79
79
  `);if(end<0)return;try{const ack=JSON.parse(buffer.slice(0,end));if(end!==buffer.length-1||!pending||!ack||Object.keys(ack).sort().join(",")!=="accepted,sequence"||ack.sequence!==pending.sequence||ack.accepted!==true)return fail4();buffer="";pending.resolve();pending=undefined;channel.unref()}catch{fail4()}});let queue=Promise.resolve();context={input,step(id3,...summary){if(finishing||broken||summary.length>1)return rejected();try{validateAppRoutineStep(contract,id3,summary[0])}catch{return rejected()}return report({type:"step",id:id3,...summary.length?{summary:summary[0]}:{}})},finish(...result2){if(finishing||broken||result2.length>1)return rejected();finishing=true;try{validateAppRoutineResult(contract,result2[0])}catch{return rejected()}return report({type:"finish",...result2.length?{result:result2[0]}:{}})}};Object.freeze(context)}var appRun={current(){return context}};init_inbox_contract();init_inbox_contract();init_inbox_contract();init_inbox_files();init_inbox_contract();init_inbox_contract();var PREPARED_RECORD_INPUT_LIMIT=64*1024*1024;function routineDataEnvelope(command){return"preflight"in command?{operation:"changes.validate",captured:command.preflight}:("apply"in command)?{operation:"changes.publish",captured:command.apply}:{operation:"changes.publish",request:command}}function routinePublicationClient(options={}){const environment=typeof __ODDINGTON_BROWSER__!=="undefined"&&__ODDINGTON_BROWSER__?{}:typeof process==="undefined"?{}:process.env;const installed2=routineTransport();const local=installed2?.request??localRoutineRequest(environment);const workspace=installed2?"installed":options.workspace??environment.ODDINGTON_ROUTINE_WORKSPACE;const capability=options.capability??environment.ODDINGTON_ROUTINE_RUN;if(!workspace||!/^[a-z0-9][a-z0-9-]*$/.test(workspace)||capability!==undefined&&!/^[0-9a-f]{64}$/.test(capability))throw new Error("A workspace and valid optional routine capability are required");const workingRoot=options.workingRoot??environment.ODDINGTON_INBOX_WORKING_ROOT??(typeof __ODDINGTON_BROWSER__!=="undefined"&&__ODDINGTON_BROWSER__?undefined:typeof process==="undefined"?undefined:process.cwd());const headers=capability?{"x-oddington-run":capability}:{};const request=options.request??(capability?async(path,init2)=>{if(path==="/api/data")return fetch(`https://${workspace}.oddington.ai/api/data`,{...init2,redirect:"error"});const origin=`https://${workspace}.oddington.ai`;const target=new URL(path,`${origin}/`);if(workspace.length>63||["auth","www","api","os"].includes(workspace)||target.origin!==origin||target.search||target.hash||target.username||target.password||!/^\/api\/inbox\/(check|publish|resolve|files)$/.test(path)||init2?.method!=="POST")throw new Error("Invalid routine endpoint");return fetch(target,{...init2,redirect:"error"})}:async()=>{throw new Error("Member publication requires a host-supplied request")});async function send3(operation2,body2){if(local)return await local(operation2,body2);const writing=operation2==="records/update";const reading=operation2==="records/read";const response2=await request(writing||reading?"/api/data":`/api/inbox/${operation2}`,{method:"POST",headers:{"content-type":"application/json",...headers,...writing||reading?{"x-oddington-workspace":workspace,"x-oddington-captured-records":"1"}:{}},body:JSON.stringify(writing?routineDataEnvelope(validateRoutineRecordWrite(body2)):reading?{operation:"records.select",request:validateRecordRead(body2)}:body2)});const result2=await response2.json();if(!response2.ok&&operation2==="records/update")throw new RoutineRecordWriteError(result2.error??"Could not confirm routine preparation",result2.effect??"uncertain");if(!response2.ok)throw new Error(result2.error??"Could not confirm routine publication");return result2}const transport={async publish(body2){return await send3("publish",body2)},async resolve(body2){await send3("resolve",body2)}};async function readRecords(input){return await send3("records/read",validateRecordRead(input))}return{...createInboxPublisher(transport),readRecords,repository:{readRecords,async writeRecords(input,options2){if(!capability&&!installed2)throw new Error("A trusted routine launch is required");return await send3("records/update",validateRoutineRecordWrite({input,requestKey:options2?.requestKey}))},async updateRecords(input,options2){if(!capability&&!installed2)throw new Error("A trusted routine launch is required");return await send3("records/update",validateRoutineRecordWrite({input:validateRecordUpdate(input),requestKey:options2?.requestKey}))},async deleteRecords(input,options2){if(!capability&&!installed2)throw new Error("A trusted routine launch is required");return await send3("records/update",validateRoutineRecordWrite({input:validateRecordDelete(input),requestKey:options2?.requestKey}))}},files:{async add(value){const input=validateFileAddOptions(value);if(local)return validateInboxFile(await local("files/add",input));if(!workingRoot)throw new Error("Inbox file reads require a working root");if(typeof __ODDINGTON_BROWSER__==="undefined"||!__ODDINGTON_BROWSER__){const{readInboxPublicationFile:readInboxPublicationFile2}=await Promise.resolve().then(() => (init_inbox_publication_file(),exports_inbox_publication_file));const bytes=await readInboxPublicationFile2(workingRoot,input);const name=input.name??input.path.split("/").at(-1);const response2=await request("/api/inbox/files",{method:"POST",headers:{"content-type":"application/octet-stream",...headers,"x-oddington-file":JSON.stringify({name,...input.csv?{csv:input.csv}:{}})},body:Uint8Array.from(bytes).buffer});const result2=await response2.json();if(!response2.ok)throw new Error(result2.error??"Could not retain file");return await verifyInboxFile(bytes,validateInboxFile(result2))}throw new Error("Inbox file reads require a Node working root")}},async check(body2){await send3("check",{requestKey:body2.requestKey,item:validatePublication(body2.item)})}}}export{selection,schema,routinePublicationClient,richTextBlock,respond,resolveAsk,recordsBlock,recordBlock,question,os,inbox,files,fileBlock,file,defineRoutine,defineHandler,data,continueAsk,connections,auth,asksBlock,appRun,app,RoutineRecordWriteError,InboxOperationError,InboxContractError,FileOperationError,DataOperationError,BrowserAuthError,AppRoutineError,AirtableOperationError};