appos 0.3.0-0 → 0.3.1-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node --import=appos/instrumentation --no-warnings
1
+ #!/usr/bin/env node
2
2
  import{sql as e}from"drizzle-orm";import{pgTable as t}from"drizzle-orm/pg-core";function n(){let n=t(`accounts`,t=>({id:t.text(`id`).primaryKey().default(e`uuidv7()`),accessToken:t.text(`access_token`),accessTokenExpiresAt:t.timestamp(`access_token_expires_at`,{mode:`string`,withTimezone:!0}),accountId:t.text(`account_id`).notNull(),createdAt:t.timestamp(`created_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull(),idToken:t.text(`id_token`),providerId:t.text(`provider_id`).notNull(),password:t.text(`password`),userId:t.text(`user_id`).notNull().references(()=>l.id,{onDelete:`cascade`}),refreshToken:t.text(`refresh_token`),refreshTokenExpiresAt:t.timestamp(`refresh_token_expires_at`,{mode:`string`,withTimezone:!0}),scope:t.text(`scope`),updatedAt:t.timestamp(`updated_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull()}),e=>[]),r=t(`api_keys`,t=>({id:t.text(`id`).primaryKey().default(e`uuidv7()`),name:t.text(`name`),enabled:t.boolean(`enabled`).default(!0),expiresAt:t.timestamp(`expires_at`,{mode:`string`,withTimezone:!0}),key:t.text(`key`).notNull(),lastRefillAt:t.timestamp(`last_refill_at`,{mode:`string`,withTimezone:!0}),lastRequest:t.timestamp(`last_request`,{mode:`string`,withTimezone:!0}),lastUsedAt:t.timestamp(`last_used_at`,{mode:`string`,withTimezone:!0}),metadata:t.text(`metadata`),permissions:t.text(`permissions`),prefix:t.text(`prefix`),rateLimitEnabled:t.boolean(`rate_limit_enabled`).default(!0),rateLimitTimeWindow:t.integer(`rate_limit_time_window`).default(864e5),rateLimitMax:t.integer(`rate_limit_max`).default(10),refillInterval:t.integer(`refill_interval`),refillAmount:t.integer(`refill_amount`),requestCount:t.integer(`request_count`),remaining:t.integer(`remaining`),start:t.text(`start`),userId:t.text(`user_id`).notNull().references(()=>l.id,{onDelete:`cascade`}),createdAt:t.timestamp(`created_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull(),updatedAt:t.timestamp(`updated_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull()}),e=>[]),i=t(`invitations`,t=>({id:t.text(`id`).primaryKey().default(e`uuidv7()`),email:t.text(`email`).notNull(),expiresAt:t.timestamp(`expires_at`,{mode:`string`,withTimezone:!0}).notNull(),inviterId:t.text(`inviter_id`).notNull().references(()=>l.id,{onDelete:`cascade`}),organizationId:t.text(`organization_id`).notNull().references(()=>o.id,{onDelete:`cascade`}),role:t.text(`role`),status:t.text(`status`).default(`pending`).notNull(),teamId:t.text(`team_id`),createdAt:t.timestamp(`created_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull(),updatedAt:t.timestamp(`updated_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull()}),e=>[]),a=t(`members`,t=>({id:t.text(`id`).primaryKey().default(e`uuidv7()`),organizationId:t.text(`organization_id`).notNull().references(()=>o.id,{onDelete:`cascade`}),role:t.text(`role`).default(`member`).notNull(),userId:t.text(`user_id`).notNull().references(()=>l.id,{onDelete:`cascade`}),createdAt:t.timestamp(`created_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull()}),e=>[]),o=t(`organizations`,t=>({id:t.text(`id`).primaryKey().default(e`uuidv7()`),name:t.text(`name`).notNull(),slug:t.text(`slug`).unique(),logo:t.text(`logo`),createdAt:t.timestamp(`created_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull(),updatedAt:t.timestamp(`updated_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull(),metadata:t.text(`metadata`)}),e=>[]),s=t(`sessions`,t=>({id:t.text(`id`).primaryKey().default(e`uuidv7()`),activeOrganizationId:t.text(`active_organization_id`).references(()=>o.id,{onDelete:`set null`}),activeTeamId:t.text(`active_team_id`),createdAt:t.timestamp(`created_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull(),expiresAt:t.timestamp(`expires_at`,{mode:`string`,withTimezone:!0}).notNull(),impersonatedBy:t.text(`impersonated_by`).references(()=>l.id,{onDelete:`set null`}),ipAddress:t.text(`ip_address`),token:t.text(`token`).notNull().unique(),updatedAt:t.timestamp(`updated_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull(),userAgent:t.text(`user_agent`),userId:t.text(`user_id`).notNull().references(()=>l.id,{onDelete:`cascade`})}),e=>[]),c=t(`sso_providers`,t=>({id:t.text(`id`).primaryKey().default(e`uuidv7()`),domain:t.text(`domain`).notNull(),issuer:t.text(`issuer`).notNull(),oidcConfig:t.text(`oidc_config`),organizationId:t.text(`organization_id`).references(()=>o.id,{onDelete:`cascade`}),providerId:t.text(`provider_id`).notNull().unique(),samlConfig:t.text(`saml_config`),userId:t.text(`user_id`).references(()=>l.id,{onDelete:`cascade`})}),e=>[]),l=t(`users`,t=>({id:t.text(`id`).primaryKey().default(e`uuidv7()`),banExpires:t.timestamp(`ban_expires`,{mode:`string`,withTimezone:!0}),banReason:t.text(`ban_reason`),banned:t.boolean(`banned`).default(!1),createdAt:t.timestamp(`created_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull(),displayUsername:t.text(`display_username`),email:t.text(`email`).notNull().unique(),emailVerified:t.boolean(`email_verified`).default(!1).notNull(),image:t.text(`image`),isAnonymous:t.boolean(`is_anonymous`),lastLoginMethod:t.text(`last_login_method`),name:t.text(`name`).notNull(),phoneNumber:t.text(`phone_number`).unique(),phoneNumberVerified:t.boolean(`phone_number_verified`),role:t.text(`role`),twoFactorEnabled:t.boolean(`two_factor_enabled`).default(!1),updatedAt:t.timestamp(`updated_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull(),username:t.text(`username`).unique()}),e=>[]),u=t(`teams`,t=>({id:t.text(`id`).primaryKey().default(e`uuidv7()`),name:t.text(`name`).notNull(),organizationId:t.text(`organization_id`).notNull().references(()=>o.id,{onDelete:`cascade`}),createdAt:t.timestamp(`created_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull(),updatedAt:t.timestamp(`updated_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull()}),e=>[]),d=t(`team_members`,t=>({id:t.text(`id`).primaryKey().default(e`uuidv7()`),teamId:t.text(`team_id`).notNull().references(()=>u.id,{onDelete:`cascade`}),userId:t.text(`user_id`).notNull().references(()=>l.id,{onDelete:`cascade`}),createdAt:t.timestamp(`created_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull()}),e=>[]),f=t(`two_factors`,t=>({id:t.text(`id`).primaryKey().default(e`uuidv7()`),secret:t.text(`secret`).notNull(),backupCodes:t.text(`backup_codes`).notNull(),userId:t.text(`user_id`).notNull().references(()=>l.id,{onDelete:`cascade`})}),e=>[]),p=t(`verifications`,t=>({id:t.text(`id`).primaryKey().default(e`uuidv7()`),createdAt:t.timestamp(`created_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull(),expiresAt:t.timestamp(`expires_at`,{mode:`string`,withTimezone:!0}).notNull(),identifier:t.text(`identifier`).notNull(),updatedAt:t.timestamp(`updated_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull(),value:t.text(`value`).notNull()}),e=>[]);return{tables:{accounts:n,apiKeys:r,auditLogs:t(`audit_logs`,t=>({id:t.text(`id`).primaryKey().default(e`uuidv7()`),tableName:t.text(`table_name`),action:t.text(`action`).notNull(),customAction:t.text(`custom_action`),oldData:t.jsonb(`old_data`),newData:t.jsonb(`new_data`),metadata:t.jsonb(`metadata`),organizationId:t.text(`organization_id`).references(()=>o.id,{onDelete:`set null`}),userId:t.text(`user_id`).references(()=>l.id,{onDelete:`set null`}),sessionId:t.text(`session_id`).references(()=>s.id,{onDelete:`set null`}),requestId:t.text(`request_id`),createdAt:t.timestamp(`created_at`,{mode:`string`,withTimezone:!0}).default(e`NOW()`).notNull()}),e=>[]),invitations:i,members:a,organizations:o,sessions:s,ssoProviders:c,teams:u,teamMembers:d,twoFactors:f,users:l,verifications:p},relations:e=>({users:{sessions:e.many.sessions({from:e.users.id,to:e.sessions.userId}),accounts:e.many.accounts({from:e.users.id,to:e.accounts.userId}),apiKeys:e.many.apiKeys({from:e.users.id,to:e.apiKeys.userId}),memberships:e.many.members({from:e.users.id,to:e.members.userId}),invitations:e.many.invitations({from:e.users.id,to:e.invitations.inviterId}),ssoProvider:e.one.ssoProviders({from:e.users.id,to:e.ssoProviders.userId}),twoFactor:e.one.twoFactors({from:e.users.id,to:e.twoFactors.userId})},sessions:{user:e.one.users({from:e.sessions.userId,to:e.users.id})},accounts:{user:e.one.users({from:e.accounts.userId,to:e.users.id})},apiKeys:{user:e.one.users({from:e.apiKeys.userId,to:e.users.id})},organizations:{members:e.many.members({from:e.organizations.id,to:e.members.organizationId}),invitations:e.many.invitations({from:e.organizations.id,to:e.invitations.organizationId}),teams:e.many.teams({from:e.organizations.id,to:e.teams.organizationId})},members:{organization:e.one.organizations({from:e.members.organizationId,to:e.organizations.id}),user:e.one.users({from:e.members.userId,to:e.users.id})},invitations:{organization:e.one.organizations({from:e.invitations.organizationId,to:e.organizations.id}),inviter:e.one.users({from:e.invitations.inviterId,to:e.users.id})},teams:{organization:e.one.organizations({from:e.teams.organizationId,to:e.organizations.id})},ssoProviders:{user:e.one.users({from:e.ssoProviders.userId,to:e.users.id})},verifications:{},twoFactors:{user:e.one.users({from:e.twoFactors.userId,to:e.users.id})},auditLogs:{organization:e.one.organizations({from:e.auditLogs.organizationId,to:e.organizations.id}),user:e.one.users({from:e.auditLogs.userId,to:e.users.id}),session:e.one.sessions({from:e.auditLogs.sessionId,to:e.sessions.id})}})}}export{n as t};
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node --import=appos/instrumentation --no-warnings
1
+ #!/usr/bin/env node
2
2
  import{createRequire as e}from"node:module";import{spawn as t}from"node:child_process";import{dirname as n,join as r}from"node:path";const i=r(n(e(import.meta.url).resolve(`concurrently/package.json`)),`dist`,`bin`,`concurrently.js`);t(process.execPath,[i,...process.argv.slice(2)],{stdio:`inherit`}).on(`exit`,e=>process.exit(e??0));export{};
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node --import=appos/instrumentation --no-warnings
2
- import{c as e,i as t,s as n}from"./workflow-CsbetKWL.mjs";import{basename as r,join as i}from"node:path";import{glob as a}from"node:fs/promises";import{camelCase as o}from"es-toolkit";import{z as s}from"zod";import{createClient as c}from"redis";function l(e){let t=null,n=null;return{inputSchema:e.input,get name(){return n},register(e,r){t=e,n=r},async emit(r){if(!t||!n)throw Error(`Event not registered. Ensure the worker is started before emitting events.`);let i=e.input.parse(r),a={container:t,input:i};await e.run(a),t.eventBus.publish(n,i).catch(e=>{t.logger.error({err:e,event:n},`Redis publish failed`)})},async subscribe(r){if(!t||!n)throw Error(`Event not registered. Ensure the worker is started before subscribing.`);return t.eventBus.subscribe(n,async i=>{let a=e.input.parse(i),o={container:t,input:a};try{await r(o)}catch(e){t.logger.error({err:e,event:n},`Event subscription handler error`)}})}}}const u=l({input:s.object({action:s.enum([`INSERT`,`UPDATE`,`DELETE`]),newData:s.record(s.string(),s.unknown()).nullable(),oldData:s.record(s.string(),s.unknown()).nullable(),organizationId:s.string().nullable(),tableName:s.string(),timestamp:s.string(),userId:s.string().nullable()}),async run(){}});function d(e){return o(r(e,`.ts`))}async function f(r){let{container:o}=r,s=r.eventsDir??i(process.cwd(),t,n);u.register(o,`dbChanges`);let c=await Array.fromAsync(a(`${s}/**/*.${e}`,{exclude:[`**/*.test.ts`,`**/*.spec.ts`,`**/*.test.js`,`**/*.spec.js`]}));for(let e of c){let t=await import(e);if(t.default&&typeof t.default==`object`&&`emit`in t.default&&`subscribe`in t.default){let n=d(e);t.default.register(o,n)}}}export{f as n,u as t};
1
+ #!/usr/bin/env node
2
+ import{c as e,i as t,s as n}from"./workflow-BNUZrj4F.mjs";import{basename as r,join as i}from"node:path";import{glob as a}from"node:fs/promises";import{camelCase as o}from"es-toolkit";import{z as s}from"zod";import{createClient as c}from"redis";function l(e){let t=null,n=null;return{inputSchema:e.input,get name(){return n},register(e,r){t=e,n=r},async emit(r){if(!t||!n)throw Error(`Event not registered. Ensure the worker is started before emitting events.`);let i=e.input.parse(r),a={container:t,input:i};await e.run(a),t.eventBus.publish(n,i).catch(e=>{t.logger.error({err:e,event:n},`Redis publish failed`)})},async subscribe(r){if(!t||!n)throw Error(`Event not registered. Ensure the worker is started before subscribing.`);return t.eventBus.subscribe(n,async i=>{let a=e.input.parse(i),o={container:t,input:a};try{await r(o)}catch(e){t.logger.error({err:e,event:n},`Event subscription handler error`)}})}}}const u=l({input:s.object({action:s.enum([`INSERT`,`UPDATE`,`DELETE`]),newData:s.record(s.string(),s.unknown()).nullable(),oldData:s.record(s.string(),s.unknown()).nullable(),organizationId:s.string().nullable(),tableName:s.string(),timestamp:s.string(),userId:s.string().nullable()}),async run(){}});function d(e){return o(r(e,`.ts`))}async function f(r){let{container:o}=r,s=r.eventsDir??i(process.cwd(),t,n);u.register(o,`dbChanges`);let c=await Array.fromAsync(a(`${s}/**/*.${e}`,{exclude:[`**/*.test.ts`,`**/*.spec.ts`,`**/*.test.js`,`**/*.spec.js`]}));for(let e of c){let t=await import(e);if(t.default&&typeof t.default==`object`&&`emit`in t.default&&`subscribe`in t.default){let n=d(e);t.default.register(o,n)}}}export{f as n,u as t};
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node --import=appos/instrumentation --no-warnings
2
- import{n as e}from"./workflow-CsbetKWL.mjs";import{join as t}from"node:path";import n from"zod";import{ALL_FORMATS as r,BlobSource as i,Input as a}from"mediabunny";const o=e({input:n.object({blobId:n.string()}),async run({container:e,input:{blobId:n},step:o}){let s=await o(`fetch-blob`,async()=>e.storage.primary.getBlob(n));if(!s)throw Error(`Blob ${n} not found`);let c=await o(`download-blob`,async()=>e.storage.primary.downloadBlob(n));if(!c)throw Error(`Failed to download blob ${n}`);let l={};return s.contentType?.startsWith(`image/`)?l=await o(`extract-image-metadata`,async()=>{let e=(await import(`sharp`)).default,t=await e(c).metadata();return{width:t.width,height:t.height,format:t.format,hasAlpha:t.hasAlpha,space:t.space}}):s.contentType?.startsWith(`video/`)||s.contentType?.startsWith(`audio/`)?l=await o(`extract-media-metadata`,async()=>{let e=new Uint8Array(c),t=new a({source:new i(new Blob([e],{type:s.contentType||`video/mp4`})),formats:r}),n=await t.computeDuration(),o=await t.getMetadataTags(),l={},u={},d=!1,f=!1;try{let e=await t.getPrimaryVideoTrack();if(e){d=!0;let t=e.displayWidth&&e.displayHeight?e.displayWidth/e.displayHeight:null;l={width:e.displayWidth,height:e.displayHeight,rotation:e.rotation,angle:e.rotation,displayAspectRatio:t}}}catch{}try{let e=await t.getPrimaryAudioTrack();e&&(f=!0,u={sampleRate:e.sampleRate,channels:e.numberOfChannels})}catch{}return{duration:n,video:d,audio:f,...l,...u,tags:o}}):s.contentType===`application/pdf`&&(l=await o(`extract-pdf-metadata`,async()=>{try{let e=await import(`pdfjs-dist/legacy/build/pdf.mjs`),n=`${t(process.cwd(),`node_modules/pdfjs-dist/standard_fonts`)}/`,r=await e.getDocument({data:new Uint8Array(c),standardFontDataUrl:n}).promise,i=await r.getMetadata(),a=(await r.getPage(1)).getViewport({scale:1}),o=i.info;return{pageCount:r.numPages,width:a.width,height:a.height,title:o?.Title||null,author:o?.Author||null,subject:o?.Subject||null,keywords:o?.Keywords||null,creator:o?.Creator||null,producer:o?.Producer||null,creationDate:o?.CreationDate||null,modificationDate:o?.ModDate||null,pdfVersion:o?.PDFFormatVersion||null}}catch(t){return e.logger.error({error:t,errorMessage:t instanceof Error?t.message:String(t),errorStack:t instanceof Error?t.stack:void 0,errorCode:t?.code,blobId:n},`Failed to extract PDF metadata`),{error:`Failed to extract PDF metadata`,errorMessage:t instanceof Error?t.message:String(t)}}})),await o(`save-metadata`,async()=>{await e.storage.primary.updateBlobMetadata(n,{...l,analyzed:!0})}),e.logger.info({blobId:n,metadata:l},`Metadata extracted`),{...l,analyzed:!0}}});export{o as extractBlobMetadata};
1
+ #!/usr/bin/env node
2
+ import{n as e}from"./workflow-BNUZrj4F.mjs";import{join as t}from"node:path";import n from"zod";import{ALL_FORMATS as r,BlobSource as i,Input as a}from"mediabunny";const o=e({input:n.object({blobId:n.string()}),async run({container:e,input:{blobId:n},step:o}){let s=await o(`fetch-blob`,async()=>e.storage.primary.getBlob(n));if(!s)throw Error(`Blob ${n} not found`);let c=await o(`download-blob`,async()=>e.storage.primary.downloadBlob(n));if(!c)throw Error(`Failed to download blob ${n}`);let l={};return s.contentType?.startsWith(`image/`)?l=await o(`extract-image-metadata`,async()=>{let e=(await import(`sharp`)).default,t=await e(c).metadata();return{width:t.width,height:t.height,format:t.format,hasAlpha:t.hasAlpha,space:t.space}}):s.contentType?.startsWith(`video/`)||s.contentType?.startsWith(`audio/`)?l=await o(`extract-media-metadata`,async()=>{let e=new Uint8Array(c),t=new a({source:new i(new Blob([e],{type:s.contentType||`video/mp4`})),formats:r}),n=await t.computeDuration(),o=await t.getMetadataTags(),l={},u={},d=!1,f=!1;try{let e=await t.getPrimaryVideoTrack();if(e){d=!0;let t=e.displayWidth&&e.displayHeight?e.displayWidth/e.displayHeight:null;l={width:e.displayWidth,height:e.displayHeight,rotation:e.rotation,angle:e.rotation,displayAspectRatio:t}}}catch{}try{let e=await t.getPrimaryAudioTrack();e&&(f=!0,u={sampleRate:e.sampleRate,channels:e.numberOfChannels})}catch{}return{duration:n,video:d,audio:f,...l,...u,tags:o}}):s.contentType===`application/pdf`&&(l=await o(`extract-pdf-metadata`,async()=>{try{let e=await import(`pdfjs-dist/legacy/build/pdf.mjs`),n=`${t(process.cwd(),`node_modules/pdfjs-dist/standard_fonts`)}/`,r=await e.getDocument({data:new Uint8Array(c),standardFontDataUrl:n}).promise,i=await r.getMetadata(),a=(await r.getPage(1)).getViewport({scale:1}),o=i.info;return{pageCount:r.numPages,width:a.width,height:a.height,title:o?.Title||null,author:o?.Author||null,subject:o?.Subject||null,keywords:o?.Keywords||null,creator:o?.Creator||null,producer:o?.Producer||null,creationDate:o?.CreationDate||null,modificationDate:o?.ModDate||null,pdfVersion:o?.PDFFormatVersion||null}}catch(t){return e.logger.error({error:t,errorMessage:t instanceof Error?t.message:String(t),errorStack:t instanceof Error?t.stack:void 0,errorCode:t?.code,blobId:n},`Failed to extract PDF metadata`),{error:`Failed to extract PDF metadata`,errorMessage:t instanceof Error?t.message:String(t)}}})),await o(`save-metadata`,async()=>{await e.storage.primary.updateBlobMetadata(n,{...l,analyzed:!0})}),e.logger.info({blobId:n,metadata:l},`Metadata extracted`),{...l,analyzed:!0}}});export{o as extractBlobMetadata};
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node --import=appos/instrumentation --no-warnings
2
- import{n as e}from"./workflow-CsbetKWL.mjs";import{z as t}from"zod";const n=t.object({width:t.number().optional(),height:t.number().optional(),fit:t.enum([`cover`,`contain`,`fill`,`inside`,`outside`]).optional(),position:t.enum([`top`,`right top`,`right`,`right bottom`,`bottom`,`left bottom`,`left`,`left top`,`centre`]).optional(),kernel:t.enum([`nearest`,`linear`,`cubic`,`mitchell`,`lanczos2`,`lanczos3`]).optional()}),r=t.object({resize:n.optional(),rotate:t.number().optional(),flip:t.boolean().optional(),flop:t.boolean().optional(),sharpen:t.boolean().optional(),blur:t.number().optional(),grayscale:t.boolean().optional(),format:t.enum([`jpeg`,`png`,`webp`,`avif`,`gif`]).optional(),quality:t.number().min(1).max(100).optional(),preview:t.literal(!0).optional()}),i=e({input:t.object({blobId:t.string(),transformations:r}),async run({container:e,input:{blobId:t,transformations:n},step:r}){if(!await r(`fetch-blob`,async()=>e.storage.primary.getBlob(t)))throw Error(`Blob ${t} not found`);let i=await r(`download-blob`,async()=>e.storage.primary.downloadBlob(t));if(!i)throw Error(`Failed to download blob ${t}`);let a=await r(`apply-transformations`,async()=>{let e=(await import(`sharp`)).default,t=e(i);return n.resize&&(t=t.resize({width:n.resize.width,height:n.resize.height,fit:n.resize.fit,position:n.resize.position,kernel:n.resize.kernel})),n.rotate!==void 0&&(t=t.rotate(n.rotate)),n.flip&&(t=t.flip()),n.flop&&(t=t.flop()),n.sharpen&&(t=t.sharpen()),n.blur!==void 0&&(t=t.blur(n.blur)),n.grayscale&&(t=t.grayscale()),n.format&&(t=t.toFormat(n.format,{quality:n.quality})),t.toBuffer()}),o=await r(`store-variant`,async()=>e.storage.primary.createVariant(t,n,a));return e.logger.info({blobId:t,variantId:o.id},`Image variant generated`),o}});export{i as generateImageVariant};
1
+ #!/usr/bin/env node
2
+ import{n as e}from"./workflow-BNUZrj4F.mjs";import{z as t}from"zod";const n=t.object({width:t.number().optional(),height:t.number().optional(),fit:t.enum([`cover`,`contain`,`fill`,`inside`,`outside`]).optional(),position:t.enum([`top`,`right top`,`right`,`right bottom`,`bottom`,`left bottom`,`left`,`left top`,`centre`]).optional(),kernel:t.enum([`nearest`,`linear`,`cubic`,`mitchell`,`lanczos2`,`lanczos3`]).optional()}),r=t.object({resize:n.optional(),rotate:t.number().optional(),flip:t.boolean().optional(),flop:t.boolean().optional(),sharpen:t.boolean().optional(),blur:t.number().optional(),grayscale:t.boolean().optional(),format:t.enum([`jpeg`,`png`,`webp`,`avif`,`gif`]).optional(),quality:t.number().min(1).max(100).optional(),preview:t.literal(!0).optional()}),i=e({input:t.object({blobId:t.string(),transformations:r}),async run({container:e,input:{blobId:t,transformations:n},step:r}){if(!await r(`fetch-blob`,async()=>e.storage.primary.getBlob(t)))throw Error(`Blob ${t} not found`);let i=await r(`download-blob`,async()=>e.storage.primary.downloadBlob(t));if(!i)throw Error(`Failed to download blob ${t}`);let a=await r(`apply-transformations`,async()=>{let e=(await import(`sharp`)).default,t=e(i);return n.resize&&(t=t.resize({width:n.resize.width,height:n.resize.height,fit:n.resize.fit,position:n.resize.position,kernel:n.resize.kernel})),n.rotate!==void 0&&(t=t.rotate(n.rotate)),n.flip&&(t=t.flip()),n.flop&&(t=t.flop()),n.sharpen&&(t=t.sharpen()),n.blur!==void 0&&(t=t.blur(n.blur)),n.grayscale&&(t=t.grayscale()),n.format&&(t=t.toFormat(n.format,{quality:n.quality})),t.toBuffer()}),o=await r(`store-variant`,async()=>e.storage.primary.createVariant(t,n,a));return e.logger.info({blobId:t,variantId:o.id},`Image variant generated`),o}});export{i as generateImageVariant};
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node --import=appos/instrumentation --no-warnings
2
- import{n as e}from"./workflow-CsbetKWL.mjs";import{spawn as t}from"node:child_process";import{join as n}from"node:path";import r from"zod";const i=e({input:r.object({blobId:r.string(),timeInSeconds:r.number().optional()}),async run({container:e,input:{blobId:r,timeInSeconds:i=1},step:a}){let o=await a(`fetch-blob`,async()=>e.storage.primary.getBlob(r));if(!o)throw Error(`Blob ${r} not found`);let s=await a(`download-blob`,async()=>e.storage.primary.downloadBlob(r));if(!s)throw Error(`Failed to download blob ${r}`);let c=null;if(o.contentType?.startsWith(`video/`))c=await a(`generate-video-preview`,async()=>new Promise((n,a)=>{try{let o=t(`ffmpeg`,[`-i`,`pipe:0`,`-ss`,i.toString(),`-frames:v`,`1`,`-f`,`image2pipe`,`-c:v`,`png`,`pipe:1`]),c=[],l=[];o.stdout.on(`data`,e=>{c.push(e)}),o.stderr.on(`data`,e=>{l.push(e)}),o.on(`close`,async t=>{if(t===0)try{let e=Buffer.concat(c),t=(await import(`sharp`)).default;n(await t(e).jpeg({quality:80}).toBuffer())}catch(t){e.logger.error({error:t,blobId:r},`Failed to convert video frame to JPEG`),a(t)}else{let n=Buffer.concat(l).toString(),i=Error(`FFmpeg exited with code ${t}: ${n}`);e.logger.error({error:i,blobId:r,code:t,stderr:n},`Failed to generate video preview`),a(i)}}),o.on(`error`,t=>{e.logger.error({error:t,blobId:r},`Failed to spawn FFmpeg process`),a(t)}),o.stdin.on(`error`,t=>{t.code!==`EPIPE`&&e.logger.error({error:t,blobId:r},`Failed to write to FFmpeg stdin`)}),o.stdin.write(s),o.stdin.end()}catch(t){e.logger.error({error:t,blobId:r},`Failed to generate video preview`),a(t)}}));else if(o.contentType===`application/pdf`)c=await a(`generate-pdf-preview`,async()=>{try{let e=await import(`pdfjs-dist/legacy/build/pdf.mjs`),{createCanvas:t}=await import(`canvas`),r=(await import(`sharp`)).default,i=`${n(process.cwd(),`node_modules/pdfjs-dist/standard_fonts`)}/`,a=await(await e.getDocument({data:new Uint8Array(s),standardFontDataUrl:i}).promise).getPage(1),o=a.getViewport({scale:2}),c=t(o.width,o.height),l=c.getContext(`2d`);return await a.render({canvasContext:l,viewport:o,canvas:c}).promise,await r(c.toBuffer(`image/png`)).resize(800,800,{fit:`inside`,withoutEnlargement:!0}).jpeg({quality:85}).toBuffer()}catch(t){throw e.logger.error({error:t,errorMessage:t instanceof Error?t.message:String(t),errorStack:t instanceof Error?t.stack:void 0,errorCode:t?.code,blobId:r},`Failed to generate PDF preview`),t}});else if(o.contentType?.startsWith(`image/`))c=await a(`generate-image-preview`,async()=>{let e=(await import(`sharp`)).default;return await e(s).resize(800,800,{fit:`inside`,withoutEnlargement:!0}).jpeg({quality:85}).toBuffer()});else throw Error(`Preview generation not supported for content type: ${o.contentType}`);let l=await a(`store-preview`,async()=>await e.storage.primary.createVariant(r,{preview:!0},c));return e.logger.info({blobId:r,previewId:l.id,contentType:o.contentType},`Preview generated`),l}});export{i as generatePreview};
1
+ #!/usr/bin/env node
2
+ import{n as e}from"./workflow-BNUZrj4F.mjs";import{spawn as t}from"node:child_process";import{join as n}from"node:path";import r from"zod";const i=e({input:r.object({blobId:r.string(),timeInSeconds:r.number().optional()}),async run({container:e,input:{blobId:r,timeInSeconds:i=1},step:a}){let o=await a(`fetch-blob`,async()=>e.storage.primary.getBlob(r));if(!o)throw Error(`Blob ${r} not found`);let s=await a(`download-blob`,async()=>e.storage.primary.downloadBlob(r));if(!s)throw Error(`Failed to download blob ${r}`);let c=null;if(o.contentType?.startsWith(`video/`))c=await a(`generate-video-preview`,async()=>new Promise((n,a)=>{try{let o=t(`ffmpeg`,[`-i`,`pipe:0`,`-ss`,i.toString(),`-frames:v`,`1`,`-f`,`image2pipe`,`-c:v`,`png`,`pipe:1`]),c=[],l=[];o.stdout.on(`data`,e=>{c.push(e)}),o.stderr.on(`data`,e=>{l.push(e)}),o.on(`close`,async t=>{if(t===0)try{let e=Buffer.concat(c),t=(await import(`sharp`)).default;n(await t(e).jpeg({quality:80}).toBuffer())}catch(t){e.logger.error({error:t,blobId:r},`Failed to convert video frame to JPEG`),a(t)}else{let n=Buffer.concat(l).toString(),i=Error(`FFmpeg exited with code ${t}: ${n}`);e.logger.error({error:i,blobId:r,code:t,stderr:n},`Failed to generate video preview`),a(i)}}),o.on(`error`,t=>{e.logger.error({error:t,blobId:r},`Failed to spawn FFmpeg process`),a(t)}),o.stdin.on(`error`,t=>{t.code!==`EPIPE`&&e.logger.error({error:t,blobId:r},`Failed to write to FFmpeg stdin`)}),o.stdin.write(s),o.stdin.end()}catch(t){e.logger.error({error:t,blobId:r},`Failed to generate video preview`),a(t)}}));else if(o.contentType===`application/pdf`)c=await a(`generate-pdf-preview`,async()=>{try{let e=await import(`pdfjs-dist/legacy/build/pdf.mjs`),{createCanvas:t}=await import(`canvas`),r=(await import(`sharp`)).default,i=`${n(process.cwd(),`node_modules/pdfjs-dist/standard_fonts`)}/`,a=await(await e.getDocument({data:new Uint8Array(s),standardFontDataUrl:i}).promise).getPage(1),o=a.getViewport({scale:2}),c=t(o.width,o.height),l=c.getContext(`2d`);return await a.render({canvasContext:l,viewport:o,canvas:c}).promise,await r(c.toBuffer(`image/png`)).resize(800,800,{fit:`inside`,withoutEnlargement:!0}).jpeg({quality:85}).toBuffer()}catch(t){throw e.logger.error({error:t,errorMessage:t instanceof Error?t.message:String(t),errorStack:t instanceof Error?t.stack:void 0,errorCode:t?.code,blobId:r},`Failed to generate PDF preview`),t}});else if(o.contentType?.startsWith(`image/`))c=await a(`generate-image-preview`,async()=>{let e=(await import(`sharp`)).default;return await e(s).resize(800,800,{fit:`inside`,withoutEnlargement:!0}).jpeg({quality:85}).toBuffer()});else throw Error(`Preview generation not supported for content type: ${o.contentType}`);let l=await a(`store-preview`,async()=>await e.storage.primary.createVariant(r,{preview:!0},c));return e.logger.info({blobId:r,previewId:l.id,contentType:o.contentType},`Preview generated`),l}});export{i as generatePreview};
package/dist/bin/main.mjs CHANGED
@@ -1,5 +1,5 @@
1
- #!/usr/bin/env node --import=appos/instrumentation --no-warnings
2
- import{n as loadEvents}from"./event-Su-wo96Y.mjs";import{a as COMMANDS_DIR,c as FILE_EXT,i as APPOS_DIR,l as PUBLIC_DIR,o as DATABASES_DIR,r as loadWorkflows,u as ROUTES_DIR}from"./workflow-CsbetKWL.mjs";import{createRequire,register}from"node:module";import{spawn}from"node:child_process";import path,{basename,dirname,join,resolve}from"node:path";import fs from"node:fs";import{DBOS}from"@dbos-inc/dbos-sdk";import colors from"picocolors";import fs$1,{access,cp,glob,mkdir,rm,writeFile}from"node:fs/promises";import{camelCase}from"es-toolkit";import{z}from"zod";import{createClient}from"redis";import*as p from"@clack/prompts";import*as esbuild from"esbuild";import{generateDrizzleJson,generateMigration}from"drizzle-kit/api-postgres";import{migrate}from"drizzle-orm/node-postgres/migrator";import{sql}from"drizzle-orm";import"drizzle-orm/node-postgres";import"pg";import{diag}from"@opentelemetry/api";import{ATTR_SERVICE_NAME,ATTR_SERVICE_VERSION}from"@opentelemetry/semantic-conventions";import{resourceFromAttributes}from"@opentelemetry/resources";import*as fs$2 from"fs";import*as path$1 from"path";import{Readable}from"stream";import*as zlib from"zlib";import*as repl from"node:repl";import{toNodeHandler}from"better-auth/node";import cors from"cors";import{rateLimit}from"express-rate-limit";import helmet from"helmet";import{RedisStore}from"rate-limit-redis";import express from"ultimate-express";import{getNodeAutoInstrumentations}from"@opentelemetry/auto-instrumentations-node";import{OTLPTraceExporter}from"@opentelemetry/exporter-trace-otlp-http";import{PinoInstrumentation}from"@opentelemetry/instrumentation-pino";import{NodeSDK}from"@opentelemetry/sdk-node";import{BatchSpanProcessor}from"@opentelemetry/sdk-trace-node";import{remixRoutesOptionAdapter}from"@react-router/remix-routes-option-adapter";import{isEmpty}from"es-toolkit/compat";import{flatRoutes}from"remix-flat-routes";import{createDocument}from"zod-openapi";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__esmMin=(fn,res)=>()=>(fn&&(res=fn(fn=0)),res),__commonJSMin=(cb,mod)=>()=>(mod||cb((mod={exports:{}}).exports,mod),mod.exports),__export=(all,symbols)=>{let target={};for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0});return symbols&&__defProp(target,Symbol.toStringTag,{value:`Module`}),target},__copyProps=(to,from,except,desc)=>{if(from&&typeof from==`object`||typeof from==`function`)for(var keys=__getOwnPropNames(from),i=0,n=keys.length,key;i<n;i++)key=keys[i],!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:(k=>from[k]).bind(null,key),enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__reExport=(target,mod,secondTarget)=>(__copyProps(target,mod,`default`),secondTarget&&__copyProps(secondTarget,mod,`default`)),__toCommonJS=mod=>__hasOwnProp.call(mod,`module.exports`)?mod[`module.exports`]:__copyProps(__defProp({},`__esModule`,{value:!0}),mod),__require=createRequire(import.meta.url);function defineCommandContext(args,opts,container){return{args,ask:p.text,cancel(message=`Cancelled`){p.cancel(message),process.exit(0)},choice:p.select,async cleanup(){for(let[,db]of Object.entries(container.db))await db.$client.end();for(let[,cache]of Object.entries(container.cache))await cache.disconnect();await container.eventBus.close(),container.logger.flush()},comment(message){p.log.message(colors.dim(message))},confirm:p.confirm,container,error(message){p.log.error(message)},async exec(command,args$1){return new Promise((resolve$1,reject)=>{let proc=spawn(command,args$1,{stdio:[`inherit`,`pipe`,`pipe`],cwd:process.cwd()}),stderr=``;proc.stderr?.on(`data`,data=>{stderr+=data.toString()}),proc.on(`close`,code=>{code===0?resolve$1():reject(Error(stderr||`Command failed with exit code ${code}`))}),proc.on(`error`,reject)})},fail(message){p.log.error(message),p.outro(colors.red(`Failed`)),process.exit(1)},group:p.group,info(message){p.log.info(message)},intro(title){p.intro(title)},isCancel:p.isCancel,line(message){p.log.message(message)},multiselect:p.multiselect,note(message,title){p.note(message,title)},opts,outro(message=`Done`){p.outro(message)},secret:p.password,async spinner(message,fn){let s=p.spinner();s.start(message);try{let result=await fn();return s.stop(message),result}catch(error){throw s.stop(message,1),error}},step(message){p.log.step(message)},success(message){p.log.success(message)},table(headers,rows){let colWidths=headers.map((h,i)=>Math.max(h.length,...rows.map(r=>(r[i]||``).length))),lines=[headers.map((h,i)=>h.padEnd(colWidths[i])).join(` │ `),colWidths.map(w=>`─`.repeat(w)).join(`─┼─`),...rows.map(row=>row.map((cell,i)=>(cell||``).padEnd(colWidths[i])).join(` │ `))];p.note(lines.join(`
1
+ #!/usr/bin/env node
2
+ import{n as loadEvents}from"./event-8JibGFH_.mjs";import{a as COMMANDS_DIR,c as FILE_EXT,i as APPOS_DIR,l as PUBLIC_DIR,o as DATABASES_DIR,r as loadWorkflows,u as ROUTES_DIR}from"./workflow-BNUZrj4F.mjs";import{createRequire,register}from"node:module";import{spawn}from"node:child_process";import path,{basename,dirname,join,resolve}from"node:path";import fs from"node:fs";import{DBOS}from"@dbos-inc/dbos-sdk";import colors from"picocolors";import fs$1,{access,cp,glob,mkdir,rm,writeFile}from"node:fs/promises";import{camelCase}from"es-toolkit";import{z}from"zod";import{createClient}from"redis";import*as p from"@clack/prompts";import*as esbuild from"esbuild";import{generateDrizzleJson,generateMigration}from"drizzle-kit/api-postgres";import{migrate}from"drizzle-orm/node-postgres/migrator";import{sql}from"drizzle-orm";import"drizzle-orm/node-postgres";import"pg";import{diag}from"@opentelemetry/api";import{ATTR_SERVICE_NAME,ATTR_SERVICE_VERSION}from"@opentelemetry/semantic-conventions";import{resourceFromAttributes}from"@opentelemetry/resources";import*as fs$2 from"fs";import*as path$1 from"path";import{Readable}from"stream";import*as zlib from"zlib";import*as repl from"node:repl";import{toNodeHandler}from"better-auth/node";import cors from"cors";import{rateLimit}from"express-rate-limit";import helmet from"helmet";import{RedisStore}from"rate-limit-redis";import express from"ultimate-express";import{getNodeAutoInstrumentations}from"@opentelemetry/auto-instrumentations-node";import{OTLPTraceExporter}from"@opentelemetry/exporter-trace-otlp-http";import{PinoInstrumentation}from"@opentelemetry/instrumentation-pino";import{NodeSDK}from"@opentelemetry/sdk-node";import{BatchSpanProcessor}from"@opentelemetry/sdk-trace-node";import{remixRoutesOptionAdapter}from"@react-router/remix-routes-option-adapter";import{isEmpty}from"es-toolkit/compat";import{flatRoutes}from"remix-flat-routes";import{createDocument}from"zod-openapi";var __defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__hasOwnProp=Object.prototype.hasOwnProperty,__esmMin=(fn,res)=>()=>(fn&&(res=fn(fn=0)),res),__commonJSMin=(cb,mod)=>()=>(mod||cb((mod={exports:{}}).exports,mod),mod.exports),__export=(all,symbols)=>{let target={};for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0});return symbols&&__defProp(target,Symbol.toStringTag,{value:`Module`}),target},__copyProps=(to,from,except,desc)=>{if(from&&typeof from==`object`||typeof from==`function`)for(var keys=__getOwnPropNames(from),i=0,n=keys.length,key;i<n;i++)key=keys[i],!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:(k=>from[k]).bind(null,key),enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__reExport=(target,mod,secondTarget)=>(__copyProps(target,mod,`default`),secondTarget&&__copyProps(secondTarget,mod,`default`)),__toCommonJS=mod=>__hasOwnProp.call(mod,`module.exports`)?mod[`module.exports`]:__copyProps(__defProp({},`__esModule`,{value:!0}),mod),__require=createRequire(import.meta.url);function defineCommandContext(args,opts,container){return{args,ask:p.text,cancel(message=`Cancelled`){p.cancel(message),process.exit(0)},choice:p.select,async cleanup(){for(let[,db]of Object.entries(container.db))await db.$client.end();for(let[,cache]of Object.entries(container.cache))await cache.disconnect();await container.eventBus.close(),container.logger.flush()},comment(message){p.log.message(colors.dim(message))},confirm:p.confirm,container,error(message){p.log.error(message)},async exec(command,args$1){return new Promise((resolve$1,reject)=>{let proc=spawn(command,args$1,{stdio:[`inherit`,`pipe`,`pipe`],cwd:process.cwd()}),stderr=``;proc.stderr?.on(`data`,data=>{stderr+=data.toString()}),proc.on(`close`,code=>{code===0?resolve$1():reject(Error(stderr||`Command failed with exit code ${code}`))}),proc.on(`error`,reject)})},fail(message){p.log.error(message),p.outro(colors.red(`Failed`)),process.exit(1)},group:p.group,info(message){p.log.info(message)},intro(title){p.intro(title)},isCancel:p.isCancel,line(message){p.log.message(message)},multiselect:p.multiselect,note(message,title){p.note(message,title)},opts,outro(message=`Done`){p.outro(message)},secret:p.password,async spinner(message,fn){let s=p.spinner();s.start(message);try{let result=await fn();return s.stop(message),result}catch(error){throw s.stop(message,1),error}},step(message){p.log.step(message)},success(message){p.log.success(message)},table(headers,rows){let colWidths=headers.map((h,i)=>Math.max(h.length,...rows.map(r=>(r[i]||``).length))),lines=[headers.map((h,i)=>h.padEnd(colWidths[i])).join(` │ `),colWidths.map(w=>`─`.repeat(w)).join(`─┼─`),...rows.map(row=>row.map((cell,i)=>(cell||``).padEnd(colWidths[i])).join(` │ `))];p.note(lines.join(`
3
3
  `))},async task(name,fn){let start=Date.now(),result=await fn(),elapsed=Date.now()-start,maxWidth=45,suffix=`${elapsed}ms DONE`,dots=`.`.repeat(Math.max(1,45-name.length-suffix.length));return p.log.message(`${name} ${colors.dim(dots)} ${colors.green(suffix)}`,{symbol:colors.green(`◆`)}),result},taskStatus(name,status){let dots=`.`.repeat(Math.max(1,45-name.length-status.length));p.log.message(`${name} ${colors.dim(dots)} ${colors.dim(status)}`,{symbol:colors.dim(`◇`)})},warn(message){p.log.warn(message)}}}function defineCommand(def){return{aliases:def.aliases||[],description:def.description,args:def.args||[],opts:def.opts||{},run:def.run}}async function collectEntryPoints(){let entryPoints=[];try{await access(`./main.ts`),entryPoints.push(`./main.ts`)}catch{}for await(let file of glob(`./api/**/*.ts`))file.endsWith(`.test.ts`)||file.endsWith(`.spec.ts`)||file.includes(`/__fixtures__/`)||file.includes(`/databases/`)||entryPoints.push(file);return entryPoints}var build_default=defineCommand({description:`Build the application for production deployment`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`build`);let entryPoints=await collectEntryPoints();ctx.step(`Found ${entryPoints.length} entry points`),await ctx.spinner(`Building production bundle`,async()=>{await rm(`./dist`,{recursive:!0,force:!0}),await esbuild.build({entryPoints,outdir:`./dist`,outbase:`.`,bundle:!0,platform:`node`,format:`esm`,minify:!0,splitting:!0,sourcemap:!0,packages:`external`,target:`node24`}),await cp(`./api/databases`,`./dist/api/databases`,{recursive:!0})}),ctx.success(`Built to ./dist`),ctx.outro()}});const migrationsSchema=`public`;function defineMigrationOpts(name,type=`schema`){let folder=type===`schema`?`schema-migrations`:`data-migrations`,table=type===`schema`?`schema-migrations`:`data-migrations`;return{migrationsFolder:`${join(APPOS_DIR,DATABASES_DIR)}/${name}/${folder}`,migrationsSchema:`public`,migrationsTable:table}}var require_error=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.getDBOSErrorCode=exports.DBOSInvalidQueuePriorityError=exports.DBOSQueueDuplicatedError=exports.QueueDedupIDDuplicated=exports.DBOSAwaitedWorkflowCancelledError=exports.DBOSUnexpectedStepError=exports.DBOSConflictingRegistrationError=exports.DBOSWorkflowCancelledError=exports.DBOSMaxStepRetriesError=exports.DBOSConflictingWorkflowError=exports.DBOSInvalidWorkflowTransitionError=exports.DBOSExecutorNotInitializedError=exports.DBOSMaxRecoveryAttemptsExceededError=exports.DBOSFailLoadOperationsError=exports.DBOSNonExistentWorkflowError=exports.DBOSDebuggerError=exports.DBOSConfigKeyTypeError=exports.DBOSNotAuthorizedError=exports.DBOSDataValidationError=exports.DBOSNotRegisteredError=exports.DBOSWorkflowConflictError=exports.DBOSInitializationError=exports.DBOSError=exports.isDataValidationError=void 0;function isDataValidationError(e){let dbosErrorCode=e?.dbosErrorCode;return dbosErrorCode?dbosErrorCode===DataValidationError:!1}exports.isDataValidationError=isDataValidationError;var DBOSError=class extends Error{dbosErrorCode;constructor(msg,dbosErrorCode=1){super(msg),this.dbosErrorCode=dbosErrorCode}};exports.DBOSError=DBOSError;let InitializationError=3;exports.DBOSInitializationError=class extends DBOSError{error;constructor(msg,error){super(msg,3),this.error=error}};let ConflictingWFIDError=5;exports.DBOSWorkflowConflictError=class extends DBOSError{constructor(workflowID){super(`Conflicting WF ID ${workflowID}`,5)}};let NotRegisteredError=6;exports.DBOSNotRegisteredError=class extends DBOSError{constructor(name,fullmsg){let msg=fullmsg??`Operation (Name: ${name}) not registered`;super(msg,6)}};let DataValidationError=9;exports.DBOSDataValidationError=class extends DBOSError{constructor(msg){super(msg,9)}};let NotAuthorizedError=12;exports.DBOSNotAuthorizedError=class extends DBOSError{status;constructor(msg,status=403){super(msg,12),this.status=status}};let ConfigKeyTypeError=14;exports.DBOSConfigKeyTypeError=class extends DBOSError{constructor(configKey,expectedType,actualType){super(`${configKey} should be of type ${expectedType}, but got ${actualType}`,14)}};let DebuggerError=15;exports.DBOSDebuggerError=class extends DBOSError{constructor(msg){super(`DEBUGGER: `+msg,15)}};let NonExistentWorkflowError=16;exports.DBOSNonExistentWorkflowError=class extends DBOSError{constructor(msg){super(msg,16)}};let FailLoadOperationsError=17;exports.DBOSFailLoadOperationsError=class extends DBOSError{constructor(msg){super(msg,17)}};let MaxRecoveryAttemptsExceededError=18;exports.DBOSMaxRecoveryAttemptsExceededError=class extends DBOSError{constructor(workflowID,maxRetries){super(`Workflow ${workflowID} has exceeded its maximum of ${maxRetries} execution or recovery attempts. Further attempts to execute or recover it will fail.`,18)}};let ExecutorNotInitializedError=20;exports.DBOSExecutorNotInitializedError=class extends DBOSError{constructor(){super(`DBOS not initialized`,20)}};let InvalidWorkflowTransition=21;exports.DBOSInvalidWorkflowTransitionError=class extends DBOSError{constructor(msg){super(msg??`Invalid workflow state`,21)}};let ConflictingWorkflowError=22;exports.DBOSConflictingWorkflowError=class extends DBOSError{constructor(workflowID,msg){super(`Conflicting workflow invocation with the same ID (${workflowID}): ${msg}`,22)}};let MaximumRetriesError=23;exports.DBOSMaxStepRetriesError=class extends DBOSError{errors;constructor(stepName,maxRetries,errors){let formattedErrors=errors.map((error,index)=>`Error ${index+1}: ${error.message}`).join(`. `);super(`Step ${stepName} has exceeded its maximum of ${maxRetries} retries. Previous errors: ${formattedErrors}`,23),this.errors=errors}};let WorkFlowCancelled=24;exports.DBOSWorkflowCancelledError=class extends DBOSError{workflowID;constructor(workflowID){super(`Workflow ${workflowID} has been cancelled`,24),this.workflowID=workflowID}};let ConflictingRegistrationError=25;exports.DBOSConflictingRegistrationError=class extends DBOSError{constructor(msg){super(msg,25)}};let UnexpectedStep=26;exports.DBOSUnexpectedStepError=class extends DBOSError{workflowID;stepID;expectedName;constructor(workflowID,stepID,expectedName,recordedName){super(`During execution of workflow ${workflowID} step ${stepID}, function ${recordedName} was recorded when ${expectedName} was expected. Check that your workflow is deterministic.`,26),this.workflowID=workflowID,this.stepID=stepID,this.expectedName=expectedName}};let TargetWorkFlowCancelled=27;exports.DBOSAwaitedWorkflowCancelledError=class extends DBOSError{workflowID;constructor(workflowID){super(`Awaited ${workflowID} was cancelled`,27),this.workflowID=workflowID}},exports.QueueDedupIDDuplicated=28,exports.DBOSQueueDuplicatedError=class extends DBOSError{workflowID;queue;deduplicationID;constructor(workflowID,queue,deduplicationID){super(`Workflow ${workflowID} was deduplicated due to an existing workflow in queue ${queue} with deduplication ID ${deduplicationID}.`,exports.QueueDedupIDDuplicated),this.workflowID=workflowID,this.queue=queue,this.deduplicationID=deduplicationID}};let InvalidQueuePriority=29;exports.DBOSInvalidQueuePriorityError=class extends DBOSError{priority;min;max;constructor(priority,min,max){super(`Invalid priority ${priority}. Priority must be between ${min} and ${max}.`,29),this.priority=priority,this.min=min,this.max=max}};function getDBOSErrorCode(e){if(e&&typeof e==`object`&&`dbosErrorCode`in e){let code=e.dbosErrorCode;return typeof code==`number`?code:void 0}}exports.getDBOSErrorCode=getDBOSErrorCode})),require_utils$3=__commonJSMin((exports=>{var __importDefault=exports&&exports.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,`__esModule`,{value:!0}),exports.getClientConfig=exports.interceptStreams=exports.exhaustiveCheckGuard=exports.serializeFunctionInputOutput=exports.DBOSJSON=exports.SERIALIZER_MARKER_VALUE=exports.SERIALIZER_MARKER_KEY=exports.DBOSJSONLegacy=exports.DBOSReviver=exports.DBOSReplacer=exports.cancellableSleep=exports.DEBOUNCER_WORKLOW_NAME=exports.INTERNAL_QUEUE_NAME=exports.sleepms=exports.globalParams=exports.defaultEnableOTLP=exports.readFile=exports.registerSerializationRecipe=void 0;let node_fs_1=__importDefault(__require(`node:fs`)),node_path_1=__importDefault(__require(`node:path`)),superjson_1=__importDefault(__require(`superjson`));function registerSerializationRecipe(r){superjson_1.default.registerCustom(r,r.name)}exports.registerSerializationRecipe=registerSerializationRecipe,registerSerializationRecipe({isApplicable:v=>Buffer.isBuffer(v),serialize:v=>Array.from(v),deserialize:v=>Buffer.from(v),name:`Buffer`});async function readFile(path$2,encoding=`utf8`){return await node_fs_1.default.promises.readFile(path$2,{encoding})}exports.readFile=readFile;function loadDbosVersion(){try{function findPackageRoot(start){if(typeof start==`string`&&(start.endsWith(node_path_1.default.sep)||(start+=node_path_1.default.sep),start=start.split(node_path_1.default.sep)),start.length===0)throw Error(`package.json not found in path`);start.pop();let dir=start.join(node_path_1.default.sep);return node_fs_1.default.existsSync(node_path_1.default.join(dir,`package.json`))?dir:findPackageRoot(start)}return __require(node_path_1.default.join(findPackageRoot(__dirname),`package.json`)).version}catch{return`unknown`}}function defaultEnableOTLP(){return process.env.DBOS__CLOUD===`true`}exports.defaultEnableOTLP=defaultEnableOTLP,exports.globalParams={appVersion:process.env.DBOS__APPVERSION||``,wasComputed:!1,executorID:process.env.DBOS__VMID||`local`,appID:process.env.DBOS__APPID||``,enableOTLP:defaultEnableOTLP(),dbosVersion:loadDbosVersion()},exports.sleepms=ms=>new Promise(r=>setTimeout(r,ms)),exports.INTERNAL_QUEUE_NAME=`_dbos_internal_queue`,exports.DEBOUNCER_WORKLOW_NAME=`_dbos_debouncer_workflow`;function cancellableSleep(ms){let timeoutId,resolvePromise,resolved=!1;return{promise:new Promise(resolve$1=>{resolvePromise=()=>{resolved||(resolved=!0,resolve$1(),timeoutId=void 0)},timeoutId=setTimeout(resolvePromise,ms)}),cancel:()=>{timeoutId&&(clearTimeout(timeoutId),timeoutId=void 0,resolvePromise())}}}exports.cancellableSleep=cancellableSleep;function DBOSReplacer(key,value){let actualValue=this[key];return actualValue instanceof Date?{dbos_type:`dbos_Date`,dbos_data:actualValue.toISOString()}:typeof actualValue==`bigint`?{dbos_type:`dbos_BigInt`,dbos_data:actualValue.toString()}:value}exports.DBOSReplacer=DBOSReplacer;function isSerializedBuffer(value){return typeof value==`object`&&!!value&&value.type===`Buffer`}function isSerializedDate(value){return typeof value==`object`&&!!value&&value.dbos_type===`dbos_Date`}function isSerializedBigInt(value){return typeof value==`object`&&!!value&&value.dbos_type===`dbos_BigInt`}function DBOSReviver(_key,value){switch(!0){case isSerializedBuffer(value):return Buffer.from(value.data);case isSerializedDate(value):return new Date(Date.parse(value.dbos_data));case isSerializedBigInt(value):return BigInt(value.dbos_data);default:return value}}exports.DBOSReviver=DBOSReviver,exports.DBOSJSONLegacy={parse:text=>text===null?null:JSON.parse(text,DBOSReviver),stringify:value=>JSON.stringify(value,DBOSReplacer)},exports.SERIALIZER_MARKER_KEY=`__dbos_serializer`,exports.SERIALIZER_MARKER_VALUE=`superjson`;let SERIALIZER_MARKER_STRING=`"${exports.SERIALIZER_MARKER_KEY}":"${exports.SERIALIZER_MARKER_VALUE}"`;function isDBOSBrandedSuperjsonRecord(obj){return typeof obj==`object`&&!!obj&&exports.SERIALIZER_MARKER_KEY in obj&&obj[exports.SERIALIZER_MARKER_KEY]===exports.SERIALIZER_MARKER_VALUE&&`json`in obj}function sjstringify(value){let serialized=superjson_1.default.serialize(value);return JSON.stringify({...serialized,[exports.SERIALIZER_MARKER_KEY]:exports.SERIALIZER_MARKER_VALUE})}exports.DBOSJSON={parse:text=>{if(text==null)return null;if(text.includes(SERIALIZER_MARKER_STRING)){let vanillaParsed=JSON.parse(text);if(isDBOSBrandedSuperjsonRecord(vanillaParsed))return superjson_1.default.deserialize(vanillaParsed)}return exports.DBOSJSONLegacy.parse(text)},stringify:sjstringify};function serializeFunctionInputOutput(value,path$2=[]){let stringified=exports.DBOSJSON.stringify(value),deserialized=exports.DBOSJSON.parse(stringified);return isObjectish(deserialized)&&attachFunctionStubs(value,deserialized,path$2),{deserialized,stringified}}exports.serializeFunctionInputOutput=serializeFunctionInputOutput;function attachFunctionStubs(original,deserialized,path$2=[]){let seen=new WeakSet,pairQueue=[{o:original,d:deserialized,p:path$2}];for(;pairQueue.length;){let{o,d,p:p$1}=pairQueue.pop();if(!seen.has(o)){seen.add(o);for(let key of collectFunctionKeys(o))key in d||defineThrowingStub(d,key,p$1);for(let key of getAllKeys(o))try{let childO=o[key],childD=d[key];if(!shouldRecurse(childO,childD))continue;pairQueue.push({o:childO,d:childD,p:[...p$1,key]})}catch{}if(o instanceof Map&&d instanceof Map)for(let[k,vO]of o){let vD=d.get(k);if(shouldRecurse(vO,vD)){let step=isIndexableKey(k)?String(k):`[MapValue]`;pairQueue.push({o:vO,d:vD,p:[...p$1,step]})}}if(o instanceof Set&&d instanceof Set){let arrO=Array.from(o),arrD=Array.from(d);for(let i=0;i<Math.min(arrO.length,arrD.length);i++){let vO=arrO[i],vD=arrD[i];shouldRecurse(vO,vD)&&pairQueue.push({o:vO,d:vD,p:[...p$1,i]})}}}}}function isObjectish(v){return typeof v==`object`&&!!v||typeof v==`function`}function defineThrowingStub(target,key,path$2){let stub=function(..._args){throw Error(`Attempted to call '${String(key)}' at path ${formatPath(path$2)} on an object that is a serialized function input our output value. Functions are not preserved through serialization; see 'DBOS.registerSerialization'. `)};try{Object.defineProperty(target,key,{value:stub,configurable:!0,writable:!1,enumerable:!1})}catch{target[key]=stub}}function shouldRecurse(a,b){return!(!a||!b||typeof a!=`object`||typeof b!=`object`||[Date,RegExp,WeakMap,WeakSet,ArrayBuffer,DataView].some(t=>a instanceof t))}function getAllKeys(obj){let names=Object.getOwnPropertyNames(obj),syms=Object.getOwnPropertySymbols(obj);return[...names,...syms]}function collectFunctionKeys(obj){let keys=new Set;for(let k of getAllKeys(obj)){let d=Object.getOwnPropertyDescriptor(obj,k);d&&`value`in d&&typeof d.value==`function`&&keys.add(k)}let proto=Object.getPrototypeOf(obj);for(;proto&&proto!==Object.prototype;){for(let k of Object.getOwnPropertyNames(proto)){if(k===`constructor`)continue;let d=Object.getOwnPropertyDescriptor(proto,k);d&&`value`in d&&typeof d.value==`function`&&keys.add(k)}proto=Object.getPrototypeOf(proto)}return Array.from(keys)}function formatPath(path$2){return path$2.length===0?`(root)`:path$2.map(seg=>typeof seg==`number`?`[${seg}]`:typeof seg==`symbol`?`[${String(seg)}]`:/^<?[A-Za-z_$][A-Za-z0-9_$]*>?$/.test(seg)?`.${seg}`:`[${JSON.stringify(seg)}]`).join(``).replace(/^\./,``)}function isIndexableKey(k){return typeof k==`string`||typeof k==`number`}function exhaustiveCheckGuard(_){throw Error(`Exaustive matching is not applied`)}exports.exhaustiveCheckGuard=exhaustiveCheckGuard;let originalStdoutWrite=process.stdout.write.bind(process.stdout),originalStderrWrite=process.stderr.write.bind(process.stderr);function interceptStreams(onMessage){let intercept=(stream,originalWrite)=>(chunk,encodingOrCb,cb)=>(onMessage(chunk.toString(),stream),typeof encodingOrCb==`function`?originalWrite(chunk,encodingOrCb):originalWrite(chunk,encodingOrCb,cb));process.stdout.write=intercept(`stdout`,originalStdoutWrite),process.stderr.write=intercept(`stderr`,originalStderrWrite)}exports.interceptStreams=interceptStreams;function getClientConfig(databaseUrl){let connectionString=typeof databaseUrl==`string`?databaseUrl:databaseUrl.toString(),timeout=getTimeout(typeof databaseUrl==`string`?new URL(databaseUrl):databaseUrl);return{connectionString,connectionTimeoutMillis:timeout?timeout*1e3:1e4};function getTimeout(url$1){try{let $timeout=url$1.searchParams.get(`connect_timeout`);return $timeout?Number.parseInt($timeout,10):void 0}catch{return}}}exports.getClientConfig=getClientConfig})),require_context=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.runInStepContext=exports.runWithDataSourceContext=exports.runWithParentContext=exports.runWithTopContext=exports.functionIDGetIncrement=exports.getNextWFID=exports.getCurrentContextStore=exports.isInWorkflowCtx=void 0;let async_hooks_1$1=__require(`async_hooks`),error_1=require_error(),dbos_executor_1=require_dbos_executor();function isWithinWorkflowCtx(ctx){return ctx.workflowId!==void 0}function isInStepCtx(ctx){return ctx.workflowId===void 0?!1:!!ctx.curStepFunctionId}function isInTxnCtx(ctx){return ctx.workflowId===void 0?!1:!!ctx.curTxFunctionId}function isInWorkflowCtx(ctx){return!(!isWithinWorkflowCtx(ctx)||isInStepCtx(ctx)||isInTxnCtx(ctx))}exports.isInWorkflowCtx=isInWorkflowCtx;let asyncLocalCtx=new async_hooks_1$1.AsyncLocalStorage;function getCurrentContextStore(){return asyncLocalCtx.getStore()}exports.getCurrentContextStore=getCurrentContextStore;function getNextWFID(assignedID){let wfId=assignedID;if(!wfId){let pctx=getCurrentContextStore(),nextID=pctx?.idAssignedForNextWorkflow;nextID&&(wfId=nextID,pctx.idAssignedForNextWorkflow=void 0)}return wfId}exports.getNextWFID=getNextWFID;function functionIDGetIncrement(){let pctx=getCurrentContextStore();if(!pctx)throw new error_1.DBOSInvalidWorkflowTransitionError(`Attempt to get a call ID number outside of a workflow`);if(!isInWorkflowCtx(pctx))throw new error_1.DBOSInvalidWorkflowTransitionError(`Attempt to get a call ID number in a workflow that is already in a call`);return pctx.curWFFunctionId===void 0&&(pctx.curWFFunctionId=0),pctx.curWFFunctionId++}exports.functionIDGetIncrement=functionIDGetIncrement;async function runWithTopContext(ctx,callback){return await asyncLocalCtx.run(ctx,callback)}exports.runWithTopContext=runWithTopContext;async function runWithParentContext(pctx,ctx,callback){return await asyncLocalCtx.run({...pctx,...ctx,parentCtx:pctx},callback)}exports.runWithParentContext=runWithParentContext;async function runWithDataSourceContext(callnum,callback){let pctx=getCurrentContextStore()??{};return await asyncLocalCtx.run({...pctx,curTxFunctionId:callnum,parentCtx:pctx,logger:dbos_executor_1.DBOSExecutor.globalInstance.ctxLogger},callback)}exports.runWithDataSourceContext=runWithDataSourceContext;async function runInStepContext(pctx,stepID,maxAttempts,currentAttempt,callback){if(!pctx||!isInWorkflowCtx(pctx))throw new error_1.DBOSInvalidWorkflowTransitionError;return await runWithParentContext(pctx,{stepStatus:{stepID,currentAttempt,maxAttempts:currentAttempt?maxAttempts:void 0},curStepFunctionId:stepID,parentCtx:pctx,logger:dbos_executor_1.DBOSExecutor.globalInstance.ctxLogger},callback)}exports.runInStepContext=runInStepContext})),require_AbstractAsyncHooksContextManager=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.AbstractAsyncHooksContextManager=void 0;let events_1=__require(`events`),ADD_LISTENER_METHODS=[`addListener`,`on`,`once`,`prependListener`,`prependOnceListener`];exports.AbstractAsyncHooksContextManager=class{bind(context$1,target){return target instanceof events_1.EventEmitter?this._bindEventEmitter(context$1,target):typeof target==`function`?this._bindFunction(context$1,target):target}_bindFunction(context$1,target){let manager=this,contextWrapper=function(...args){return manager.with(context$1,()=>target.apply(this,args))};return Object.defineProperty(contextWrapper,`length`,{enumerable:!1,configurable:!0,writable:!1,value:target.length}),contextWrapper}_bindEventEmitter(context$1,ee){return this._getPatchMap(ee)===void 0?(this._createPatchMap(ee),ADD_LISTENER_METHODS.forEach(methodName=>{ee[methodName]!==void 0&&(ee[methodName]=this._patchAddListener(ee,ee[methodName],context$1))}),typeof ee.removeListener==`function`&&(ee.removeListener=this._patchRemoveListener(ee,ee.removeListener)),typeof ee.off==`function`&&(ee.off=this._patchRemoveListener(ee,ee.off)),typeof ee.removeAllListeners==`function`&&(ee.removeAllListeners=this._patchRemoveAllListeners(ee,ee.removeAllListeners)),ee):ee}_patchRemoveListener(ee,original){let contextManager=this;return function(event,listener){let events=contextManager._getPatchMap(ee)?.[event];if(events===void 0)return original.call(this,event,listener);let patchedListener=events.get(listener);return original.call(this,event,patchedListener||listener)}}_patchRemoveAllListeners(ee,original){let contextManager=this;return function(event){let map=contextManager._getPatchMap(ee);return map!==void 0&&(arguments.length===0?contextManager._createPatchMap(ee):map[event]!==void 0&&delete map[event]),original.apply(this,arguments)}}_patchAddListener(ee,original,context$1){let contextManager=this;return function(event,listener){if(contextManager._wrapped)return original.call(this,event,listener);let map=contextManager._getPatchMap(ee);map===void 0&&(map=contextManager._createPatchMap(ee));let listeners=map[event];listeners===void 0&&(listeners=new WeakMap,map[event]=listeners);let patchedListener=contextManager.bind(context$1,listener);listeners.set(listener,patchedListener),contextManager._wrapped=!0;try{return original.call(this,event,patchedListener)}finally{contextManager._wrapped=!1}}}_createPatchMap(ee){let map=Object.create(null);return ee[this._kOtListeners]=map,map}_getPatchMap(ee){return ee[this._kOtListeners]}_kOtListeners=Symbol(`OtListeners`);_wrapped=!1}})),require_AsyncHooksContextManager=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.AsyncHooksContextManager=void 0;let api_1$26=__require(`@opentelemetry/api`),asyncHooks=__require(`async_hooks`),AbstractAsyncHooksContextManager_1=require_AbstractAsyncHooksContextManager();exports.AsyncHooksContextManager=class extends AbstractAsyncHooksContextManager_1.AbstractAsyncHooksContextManager{_asyncHook;_contexts=new Map;_stack=[];constructor(){super(),this._asyncHook=asyncHooks.createHook({init:this._init.bind(this),before:this._before.bind(this),after:this._after.bind(this),destroy:this._destroy.bind(this),promiseResolve:this._destroy.bind(this)})}active(){return this._stack[this._stack.length-1]??api_1$26.ROOT_CONTEXT}with(context$1,fn,thisArg,...args){this._enterContext(context$1);try{return fn.call(thisArg,...args)}finally{this._exitContext()}}enable(){return this._asyncHook.enable(),this}disable(){return this._asyncHook.disable(),this._contexts.clear(),this._stack=[],this}_init(uid,type){if(type===`TIMERWRAP`)return;let context$1=this._stack[this._stack.length-1];context$1!==void 0&&this._contexts.set(uid,context$1)}_destroy(uid){this._contexts.delete(uid)}_before(uid){let context$1=this._contexts.get(uid);context$1!==void 0&&this._enterContext(context$1)}_after(){this._exitContext()}_enterContext(context$1){this._stack.push(context$1)}_exitContext(){this._stack.pop()}}})),require_AsyncLocalStorageContextManager=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.AsyncLocalStorageContextManager=void 0;let api_1$25=__require(`@opentelemetry/api`),async_hooks_1=__require(`async_hooks`),AbstractAsyncHooksContextManager_1=require_AbstractAsyncHooksContextManager();exports.AsyncLocalStorageContextManager=class extends AbstractAsyncHooksContextManager_1.AbstractAsyncHooksContextManager{_asyncLocalStorage;constructor(){super(),this._asyncLocalStorage=new async_hooks_1.AsyncLocalStorage}active(){return this._asyncLocalStorage.getStore()??api_1$25.ROOT_CONTEXT}with(context$1,fn,thisArg,...args){let cb=thisArg==null?fn:fn.bind(thisArg);return this._asyncLocalStorage.run(context$1,cb,...args)}enable(){return this}disable(){return this._asyncLocalStorage.disable(),this}}})),require_src$9=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.AsyncLocalStorageContextManager=exports.AsyncHooksContextManager=void 0;var AsyncHooksContextManager_1=require_AsyncHooksContextManager();Object.defineProperty(exports,`AsyncHooksContextManager`,{enumerable:!0,get:function(){return AsyncHooksContextManager_1.AsyncHooksContextManager}});var AsyncLocalStorageContextManager_1=require_AsyncLocalStorageContextManager();Object.defineProperty(exports,`AsyncLocalStorageContextManager`,{enumerable:!0,get:function(){return AsyncLocalStorageContextManager_1.AsyncLocalStorageContextManager}})})),require_suppress_tracing=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.isTracingSuppressed=exports.unsuppressTracing=exports.suppressTracing=void 0;let SUPPRESS_TRACING_KEY=(0,__require(`@opentelemetry/api`).createContextKey)(`OpenTelemetry SDK Context Key SUPPRESS_TRACING`);function suppressTracing(context$1){return context$1.setValue(SUPPRESS_TRACING_KEY,!0)}exports.suppressTracing=suppressTracing;function unsuppressTracing(context$1){return context$1.deleteValue(SUPPRESS_TRACING_KEY)}exports.unsuppressTracing=unsuppressTracing;function isTracingSuppressed(context$1){return context$1.getValue(SUPPRESS_TRACING_KEY)===!0}exports.isTracingSuppressed=isTracingSuppressed})),require_constants$1=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.BAGGAGE_MAX_TOTAL_LENGTH=exports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS=exports.BAGGAGE_MAX_NAME_VALUE_PAIRS=exports.BAGGAGE_HEADER=exports.BAGGAGE_ITEMS_SEPARATOR=exports.BAGGAGE_PROPERTIES_SEPARATOR=exports.BAGGAGE_KEY_PAIR_SEPARATOR=void 0,exports.BAGGAGE_KEY_PAIR_SEPARATOR=`=`,exports.BAGGAGE_PROPERTIES_SEPARATOR=`;`,exports.BAGGAGE_ITEMS_SEPARATOR=`,`,exports.BAGGAGE_HEADER=`baggage`,exports.BAGGAGE_MAX_NAME_VALUE_PAIRS=180,exports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS=4096,exports.BAGGAGE_MAX_TOTAL_LENGTH=8192})),require_utils$2=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.parseKeyPairsIntoRecord=exports.parsePairKeyValue=exports.getKeyPairs=exports.serializeKeyPairs=void 0;let api_1$24=__require(`@opentelemetry/api`),constants_1=require_constants$1();function serializeKeyPairs(keyPairs){return keyPairs.reduce((hValue,current)=>{let value=`${hValue}${hValue===``?``:constants_1.BAGGAGE_ITEMS_SEPARATOR}${current}`;return value.length>constants_1.BAGGAGE_MAX_TOTAL_LENGTH?hValue:value},``)}exports.serializeKeyPairs=serializeKeyPairs;function getKeyPairs(baggage){return baggage.getAllEntries().map(([key,value])=>{let entry=`${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;return value.metadata!==void 0&&(entry+=constants_1.BAGGAGE_PROPERTIES_SEPARATOR+value.metadata.toString()),entry})}exports.getKeyPairs=getKeyPairs;function parsePairKeyValue(entry){let valueProps=entry.split(constants_1.BAGGAGE_PROPERTIES_SEPARATOR);if(valueProps.length<=0)return;let keyPairPart=valueProps.shift();if(!keyPairPart)return;let separatorIndex=keyPairPart.indexOf(constants_1.BAGGAGE_KEY_PAIR_SEPARATOR);if(separatorIndex<=0)return;let key=decodeURIComponent(keyPairPart.substring(0,separatorIndex).trim()),value=decodeURIComponent(keyPairPart.substring(separatorIndex+1).trim()),metadata;return valueProps.length>0&&(metadata=(0,api_1$24.baggageEntryMetadataFromString)(valueProps.join(constants_1.BAGGAGE_PROPERTIES_SEPARATOR))),{key,value,metadata}}exports.parsePairKeyValue=parsePairKeyValue;function parseKeyPairsIntoRecord(value){let result={};return typeof value==`string`&&value.length>0&&value.split(constants_1.BAGGAGE_ITEMS_SEPARATOR).forEach(entry=>{let keyPair=parsePairKeyValue(entry);keyPair!==void 0&&keyPair.value.length>0&&(result[keyPair.key]=keyPair.value)}),result}exports.parseKeyPairsIntoRecord=parseKeyPairsIntoRecord})),require_W3CBaggagePropagator=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.W3CBaggagePropagator=void 0;let api_1$23=__require(`@opentelemetry/api`),suppress_tracing_1=require_suppress_tracing(),constants_1=require_constants$1(),utils_1=require_utils$2();exports.W3CBaggagePropagator=class{inject(context$1,carrier,setter){let baggage=api_1$23.propagation.getBaggage(context$1);if(!baggage||(0,suppress_tracing_1.isTracingSuppressed)(context$1))return;let keyPairs=(0,utils_1.getKeyPairs)(baggage).filter(pair=>pair.length<=constants_1.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS).slice(0,constants_1.BAGGAGE_MAX_NAME_VALUE_PAIRS),headerValue=(0,utils_1.serializeKeyPairs)(keyPairs);headerValue.length>0&&setter.set(carrier,constants_1.BAGGAGE_HEADER,headerValue)}extract(context$1,carrier,getter){let headerValue=getter.get(carrier,constants_1.BAGGAGE_HEADER),baggageString=Array.isArray(headerValue)?headerValue.join(constants_1.BAGGAGE_ITEMS_SEPARATOR):headerValue;if(!baggageString)return context$1;let baggage={};return baggageString.length===0||(baggageString.split(constants_1.BAGGAGE_ITEMS_SEPARATOR).forEach(entry=>{let keyPair=(0,utils_1.parsePairKeyValue)(entry);if(keyPair){let baggageEntry={value:keyPair.value};keyPair.metadata&&(baggageEntry.metadata=keyPair.metadata),baggage[keyPair.key]=baggageEntry}}),Object.entries(baggage).length===0)?context$1:api_1$23.propagation.setBaggage(context$1,api_1$23.propagation.createBaggage(baggage))}fields(){return[constants_1.BAGGAGE_HEADER]}}})),require_anchored_clock=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.AnchoredClock=void 0,exports.AnchoredClock=class{_monotonicClock;_epochMillis;_performanceMillis;constructor(systemClock,monotonicClock){this._monotonicClock=monotonicClock,this._epochMillis=systemClock.now(),this._performanceMillis=monotonicClock.now()}now(){let delta=this._monotonicClock.now()-this._performanceMillis;return this._epochMillis+delta}}})),require_attributes=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.isAttributeValue=exports.isAttributeKey=exports.sanitizeAttributes=void 0;let api_1$22=__require(`@opentelemetry/api`);function sanitizeAttributes(attributes){let out={};if(typeof attributes!=`object`||!attributes)return out;for(let key in attributes){if(!Object.prototype.hasOwnProperty.call(attributes,key))continue;if(!isAttributeKey(key)){api_1$22.diag.warn(`Invalid attribute key: ${key}`);continue}let val=attributes[key];if(!isAttributeValue(val)){api_1$22.diag.warn(`Invalid attribute value set for key: ${key}`);continue}Array.isArray(val)?out[key]=val.slice():out[key]=val}return out}exports.sanitizeAttributes=sanitizeAttributes;function isAttributeKey(key){return typeof key==`string`&&key!==``}exports.isAttributeKey=isAttributeKey;function isAttributeValue(val){return val==null?!0:Array.isArray(val)?isHomogeneousAttributeValueArray(val):isValidPrimitiveAttributeValueType(typeof val)}exports.isAttributeValue=isAttributeValue;function isHomogeneousAttributeValueArray(arr){let type;for(let element of arr){if(element==null)continue;let elementType=typeof element;if(elementType!==type){if(!type){if(isValidPrimitiveAttributeValueType(elementType)){type=elementType;continue}return!1}return!1}}return!0}function isValidPrimitiveAttributeValueType(valType){switch(valType){case`number`:case`boolean`:case`string`:return!0}return!1}})),require_logging_error_handler=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.loggingErrorHandler=void 0;let api_1$21=__require(`@opentelemetry/api`);function loggingErrorHandler(){return ex=>{api_1$21.diag.error(stringifyException(ex))}}exports.loggingErrorHandler=loggingErrorHandler;function stringifyException(ex){return typeof ex==`string`?ex:JSON.stringify(flattenException(ex))}function flattenException(ex){let result={},current=ex;for(;current!==null;)Object.getOwnPropertyNames(current).forEach(propertyName=>{if(result[propertyName])return;let value=current[propertyName];value&&(result[propertyName]=String(value))}),current=Object.getPrototypeOf(current);return result}})),require_global_error_handler=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.globalErrorHandler=exports.setGlobalErrorHandler=void 0;let delegateHandler=(0,require_logging_error_handler().loggingErrorHandler)();function setGlobalErrorHandler(handler){delegateHandler=handler}exports.setGlobalErrorHandler=setGlobalErrorHandler;function globalErrorHandler(ex){try{delegateHandler(ex)}catch{}}exports.globalErrorHandler=globalErrorHandler})),require_environment=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.getStringListFromEnv=exports.getBooleanFromEnv=exports.getStringFromEnv=exports.getNumberFromEnv=void 0;let api_1$20=__require(`@opentelemetry/api`),util_1=__require(`util`);function getNumberFromEnv(key){let raw=process.env[key];if(raw==null||raw.trim()===``)return;let value=Number(raw);if(isNaN(value)){api_1$20.diag.warn(`Unknown value ${(0,util_1.inspect)(raw)} for ${key}, expected a number, using defaults`);return}return value}exports.getNumberFromEnv=getNumberFromEnv;function getStringFromEnv(key){let raw=process.env[key];if(!(raw==null||raw.trim()===``))return raw}exports.getStringFromEnv=getStringFromEnv;function getBooleanFromEnv(key){let raw=process.env[key]?.trim().toLowerCase();return raw==null||raw===``?!1:raw===`true`?!0:(raw===`false`||api_1$20.diag.warn(`Unknown value ${(0,util_1.inspect)(raw)} for ${key}, expected 'true' or 'false', falling back to 'false' (default)`),!1)}exports.getBooleanFromEnv=getBooleanFromEnv;function getStringListFromEnv(key){return getStringFromEnv(key)?.split(`,`).map(v=>v.trim()).filter(s=>s!==``)}exports.getStringListFromEnv=getStringListFromEnv})),require_globalThis$1=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports._globalThis=void 0,exports._globalThis=typeof globalThis==`object`?globalThis:global})),require_performance=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.otperformance=void 0,exports.otperformance=__require(`perf_hooks`).performance})),require_version=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.VERSION=void 0,exports.VERSION=`2.2.0`})),require_semconv=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.ATTR_PROCESS_RUNTIME_NAME=void 0,exports.ATTR_PROCESS_RUNTIME_NAME=`process.runtime.name`})),require_sdk_info=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.SDK_INFO=void 0;let version_1=require_version(),semantic_conventions_1$1=__require(`@opentelemetry/semantic-conventions`),semconv_1=require_semconv();exports.SDK_INFO={[semantic_conventions_1$1.ATTR_TELEMETRY_SDK_NAME]:`opentelemetry`,[semconv_1.ATTR_PROCESS_RUNTIME_NAME]:`node`,[semantic_conventions_1$1.ATTR_TELEMETRY_SDK_LANGUAGE]:semantic_conventions_1$1.TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,[semantic_conventions_1$1.ATTR_TELEMETRY_SDK_VERSION]:version_1.VERSION}})),require_node$5=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.SDK_INFO=exports.otperformance=exports._globalThis=exports.getStringListFromEnv=exports.getNumberFromEnv=exports.getBooleanFromEnv=exports.getStringFromEnv=void 0;var environment_1=require_environment();Object.defineProperty(exports,`getStringFromEnv`,{enumerable:!0,get:function(){return environment_1.getStringFromEnv}}),Object.defineProperty(exports,`getBooleanFromEnv`,{enumerable:!0,get:function(){return environment_1.getBooleanFromEnv}}),Object.defineProperty(exports,`getNumberFromEnv`,{enumerable:!0,get:function(){return environment_1.getNumberFromEnv}}),Object.defineProperty(exports,`getStringListFromEnv`,{enumerable:!0,get:function(){return environment_1.getStringListFromEnv}});var globalThis_1=require_globalThis$1();Object.defineProperty(exports,`_globalThis`,{enumerable:!0,get:function(){return globalThis_1._globalThis}});var performance_1=require_performance();Object.defineProperty(exports,`otperformance`,{enumerable:!0,get:function(){return performance_1.otperformance}});var sdk_info_1=require_sdk_info();Object.defineProperty(exports,`SDK_INFO`,{enumerable:!0,get:function(){return sdk_info_1.SDK_INFO}})})),require_platform$5=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.getStringListFromEnv=exports.getNumberFromEnv=exports.getStringFromEnv=exports.getBooleanFromEnv=exports.otperformance=exports._globalThis=exports.SDK_INFO=void 0;var node_1=require_node$5();Object.defineProperty(exports,`SDK_INFO`,{enumerable:!0,get:function(){return node_1.SDK_INFO}}),Object.defineProperty(exports,`_globalThis`,{enumerable:!0,get:function(){return node_1._globalThis}}),Object.defineProperty(exports,`otperformance`,{enumerable:!0,get:function(){return node_1.otperformance}}),Object.defineProperty(exports,`getBooleanFromEnv`,{enumerable:!0,get:function(){return node_1.getBooleanFromEnv}}),Object.defineProperty(exports,`getStringFromEnv`,{enumerable:!0,get:function(){return node_1.getStringFromEnv}}),Object.defineProperty(exports,`getNumberFromEnv`,{enumerable:!0,get:function(){return node_1.getNumberFromEnv}}),Object.defineProperty(exports,`getStringListFromEnv`,{enumerable:!0,get:function(){return node_1.getStringListFromEnv}})})),require_time=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.addHrTimes=exports.isTimeInput=exports.isTimeInputHrTime=exports.hrTimeToMicroseconds=exports.hrTimeToMilliseconds=exports.hrTimeToNanoseconds=exports.hrTimeToTimeStamp=exports.hrTimeDuration=exports.timeInputToHrTime=exports.hrTime=exports.getTimeOrigin=exports.millisToHrTime=void 0;let platform_1=require_platform$5(),NANOSECOND_DIGITS=9,MILLISECONDS_TO_NANOSECONDS=10**6,SECOND_TO_NANOSECONDS=10**9;function millisToHrTime(epochMillis){let epochSeconds=epochMillis/1e3;return[Math.trunc(epochSeconds),Math.round(epochMillis%1e3*MILLISECONDS_TO_NANOSECONDS)]}exports.millisToHrTime=millisToHrTime;function getTimeOrigin(){let timeOrigin=platform_1.otperformance.timeOrigin;if(typeof timeOrigin!=`number`){let perf=platform_1.otperformance;timeOrigin=perf.timing&&perf.timing.fetchStart}return timeOrigin}exports.getTimeOrigin=getTimeOrigin;function hrTime(performanceNow){return addHrTimes(millisToHrTime(getTimeOrigin()),millisToHrTime(typeof performanceNow==`number`?performanceNow:platform_1.otperformance.now()))}exports.hrTime=hrTime;function timeInputToHrTime(time){if(isTimeInputHrTime(time))return time;if(typeof time==`number`)return time<getTimeOrigin()?hrTime(time):millisToHrTime(time);if(time instanceof Date)return millisToHrTime(time.getTime());throw TypeError(`Invalid input type`)}exports.timeInputToHrTime=timeInputToHrTime;function hrTimeDuration(startTime,endTime){let seconds=endTime[0]-startTime[0],nanos=endTime[1]-startTime[1];return nanos<0&&(--seconds,nanos+=SECOND_TO_NANOSECONDS),[seconds,nanos]}exports.hrTimeDuration=hrTimeDuration;function hrTimeToTimeStamp(time){let precision=9,tmp=`${`0`.repeat(9)}${time[1]}Z`,nanoString=tmp.substring(tmp.length-9-1);return new Date(time[0]*1e3).toISOString().replace(`000Z`,nanoString)}exports.hrTimeToTimeStamp=hrTimeToTimeStamp;function hrTimeToNanoseconds(time){return time[0]*SECOND_TO_NANOSECONDS+time[1]}exports.hrTimeToNanoseconds=hrTimeToNanoseconds;function hrTimeToMilliseconds(time){return time[0]*1e3+time[1]/1e6}exports.hrTimeToMilliseconds=hrTimeToMilliseconds;function hrTimeToMicroseconds(time){return time[0]*1e6+time[1]/1e3}exports.hrTimeToMicroseconds=hrTimeToMicroseconds;function isTimeInputHrTime(value){return Array.isArray(value)&&value.length===2&&typeof value[0]==`number`&&typeof value[1]==`number`}exports.isTimeInputHrTime=isTimeInputHrTime;function isTimeInput(value){return isTimeInputHrTime(value)||typeof value==`number`||value instanceof Date}exports.isTimeInput=isTimeInput;function addHrTimes(time1,time2){let out=[time1[0]+time2[0],time1[1]+time2[1]];return out[1]>=SECOND_TO_NANOSECONDS&&(out[1]-=SECOND_TO_NANOSECONDS,out[0]+=1),out}exports.addHrTimes=addHrTimes})),require_timer_util=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.unrefTimer=void 0;function unrefTimer(timer){typeof timer!=`number`&&timer.unref()}exports.unrefTimer=unrefTimer})),require_ExportResult=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.ExportResultCode=void 0,(function(ExportResultCode$1){ExportResultCode$1[ExportResultCode$1.SUCCESS=0]=`SUCCESS`,ExportResultCode$1[ExportResultCode$1.FAILED=1]=`FAILED`})(exports.ExportResultCode||={})})),require_composite=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.CompositePropagator=void 0;let api_1$19=__require(`@opentelemetry/api`);exports.CompositePropagator=class{_propagators;_fields;constructor(config={}){this._propagators=config.propagators??[],this._fields=Array.from(new Set(this._propagators.map(p$1=>typeof p$1.fields==`function`?p$1.fields():[]).reduce((x,y)=>x.concat(y),[])))}inject(context$1,carrier,setter){for(let propagator of this._propagators)try{propagator.inject(context$1,carrier,setter)}catch(err){api_1$19.diag.warn(`Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`)}}extract(context$1,carrier,getter){return this._propagators.reduce((ctx,propagator)=>{try{return propagator.extract(ctx,carrier,getter)}catch(err){api_1$19.diag.warn(`Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`)}return ctx},context$1)}fields(){return this._fields.slice()}}})),require_validators=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.validateValue=exports.validateKey=void 0;let VALID_KEY_CHAR_RANGE=`[_0-9a-z-*/]`,VALID_KEY=`[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`,VALID_VENDOR_KEY=`[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`,VALID_KEY_REGEX=RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`),VALID_VALUE_BASE_REGEX=/^[ -~]{0,255}[!-~]$/,INVALID_VALUE_COMMA_EQUAL_REGEX=/,|=/;function validateKey(key){return VALID_KEY_REGEX.test(key)}exports.validateKey=validateKey;function validateValue(value){return VALID_VALUE_BASE_REGEX.test(value)&&!INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)}exports.validateValue=validateValue})),require_TraceState=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.TraceState=void 0;let validators_1=require_validators(),MAX_TRACE_STATE_ITEMS=32,MAX_TRACE_STATE_LEN=512,LIST_MEMBERS_SEPARATOR=`,`,LIST_MEMBER_KEY_VALUE_SPLITTER=`=`;exports.TraceState=class TraceState{_internalState=new Map;constructor(rawTraceState){rawTraceState&&this._parse(rawTraceState)}set(key,value){let traceState=this._clone();return traceState._internalState.has(key)&&traceState._internalState.delete(key),traceState._internalState.set(key,value),traceState}unset(key){let traceState=this._clone();return traceState._internalState.delete(key),traceState}get(key){return this._internalState.get(key)}serialize(){return this._keys().reduce((agg,key)=>(agg.push(key+`=`+this.get(key)),agg),[]).join(`,`)}_parse(rawTraceState){rawTraceState.length>512||(this._internalState=rawTraceState.split(`,`).reverse().reduce((agg,part)=>{let listMember=part.trim(),i=listMember.indexOf(`=`);if(i!==-1){let key=listMember.slice(0,i),value=listMember.slice(i+1,part.length);(0,validators_1.validateKey)(key)&&(0,validators_1.validateValue)(value)&&agg.set(key,value)}return agg},new Map),this._internalState.size>32&&(this._internalState=new Map(Array.from(this._internalState.entries()).reverse().slice(0,32))))}_keys(){return Array.from(this._internalState.keys()).reverse()}_clone(){let traceState=new TraceState;return traceState._internalState=new Map(this._internalState),traceState}}})),require_W3CTraceContextPropagator=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.W3CTraceContextPropagator=exports.parseTraceParent=exports.TRACE_STATE_HEADER=exports.TRACE_PARENT_HEADER=void 0;let api_1$18=__require(`@opentelemetry/api`),suppress_tracing_1=require_suppress_tracing(),TraceState_1=require_TraceState();exports.TRACE_PARENT_HEADER=`traceparent`,exports.TRACE_STATE_HEADER=`tracestate`;let VERSION=`00`,TRACE_PARENT_REGEX=RegExp(`^\\s?((?!ff)[\\da-f]{2})-((?![0]{32})[\\da-f]{32})-((?![0]{16})[\\da-f]{16})-([\\da-f]{2})(-.*)?\\s?$`);function parseTraceParent(traceParent){let match=TRACE_PARENT_REGEX.exec(traceParent);return!match||match[1]===`00`&&match[5]?null:{traceId:match[2],spanId:match[3],traceFlags:parseInt(match[4],16)}}exports.parseTraceParent=parseTraceParent,exports.W3CTraceContextPropagator=class{inject(context$1,carrier,setter){let spanContext=api_1$18.trace.getSpanContext(context$1);if(!spanContext||(0,suppress_tracing_1.isTracingSuppressed)(context$1)||!(0,api_1$18.isSpanContextValid)(spanContext))return;let traceParent=`00-${spanContext.traceId}-${spanContext.spanId}-0${Number(spanContext.traceFlags||api_1$18.TraceFlags.NONE).toString(16)}`;setter.set(carrier,exports.TRACE_PARENT_HEADER,traceParent),spanContext.traceState&&setter.set(carrier,exports.TRACE_STATE_HEADER,spanContext.traceState.serialize())}extract(context$1,carrier,getter){let traceParentHeader=getter.get(carrier,exports.TRACE_PARENT_HEADER);if(!traceParentHeader)return context$1;let traceParent=Array.isArray(traceParentHeader)?traceParentHeader[0]:traceParentHeader;if(typeof traceParent!=`string`)return context$1;let spanContext=parseTraceParent(traceParent);if(!spanContext)return context$1;spanContext.isRemote=!0;let traceStateHeader=getter.get(carrier,exports.TRACE_STATE_HEADER);if(traceStateHeader){let state=Array.isArray(traceStateHeader)?traceStateHeader.join(`,`):traceStateHeader;spanContext.traceState=new TraceState_1.TraceState(typeof state==`string`?state:void 0)}return api_1$18.trace.setSpanContext(context$1,spanContext)}fields(){return[exports.TRACE_PARENT_HEADER,exports.TRACE_STATE_HEADER]}}})),require_rpc_metadata=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.getRPCMetadata=exports.deleteRPCMetadata=exports.setRPCMetadata=exports.RPCType=void 0;let RPC_METADATA_KEY=(0,__require(`@opentelemetry/api`).createContextKey)(`OpenTelemetry SDK Context Key RPC_METADATA`);(function(RPCType){RPCType.HTTP=`http`})(exports.RPCType||={});function setRPCMetadata(context$1,meta){return context$1.setValue(RPC_METADATA_KEY,meta)}exports.setRPCMetadata=setRPCMetadata;function deleteRPCMetadata(context$1){return context$1.deleteValue(RPC_METADATA_KEY)}exports.deleteRPCMetadata=deleteRPCMetadata;function getRPCMetadata(context$1){return context$1.getValue(RPC_METADATA_KEY)}exports.getRPCMetadata=getRPCMetadata})),require_lodash_merge=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.isPlainObject=void 0;let objectTag=`[object Object]`,nullTag=`[object Null]`,undefinedTag=`[object Undefined]`,funcToString=Function.prototype.toString,objectCtorString=funcToString.call(Object),getPrototypeOf=Object.getPrototypeOf,objectProto=Object.prototype,hasOwnProperty=objectProto.hasOwnProperty,symToStringTag=Symbol?Symbol.toStringTag:void 0,nativeObjectToString=objectProto.toString;function isPlainObject(value){if(!isObjectLike(value)||baseGetTag(value)!==`[object Object]`)return!1;let proto=getPrototypeOf(value);if(proto===null)return!0;let Ctor=hasOwnProperty.call(proto,`constructor`)&&proto.constructor;return typeof Ctor==`function`&&Ctor instanceof Ctor&&funcToString.call(Ctor)===objectCtorString}exports.isPlainObject=isPlainObject;function isObjectLike(value){return typeof value==`object`&&!!value}function baseGetTag(value){return value==null?value===void 0?`[object Undefined]`:`[object Null]`:symToStringTag&&symToStringTag in Object(value)?getRawTag(value):objectToString(value)}function getRawTag(value){let isOwn=hasOwnProperty.call(value,symToStringTag),tag=value[symToStringTag],unmasked=!1;try{value[symToStringTag]=void 0,unmasked=!0}catch{}let result=nativeObjectToString.call(value);return unmasked&&(isOwn?value[symToStringTag]=tag:delete value[symToStringTag]),result}function objectToString(value){return nativeObjectToString.call(value)}})),require_merge=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.merge=void 0;let lodash_merge_1=require_lodash_merge(),MAX_LEVEL=20;function merge(...args){let result=args.shift(),objects=new WeakMap;for(;args.length>0;)result=mergeTwoObjects(result,args.shift(),0,objects);return result}exports.merge=merge;function takeValue(value){return isArray(value)?value.slice():value}function mergeTwoObjects(one,two,level=0,objects){let result;if(!(level>20)){if(level++,isPrimitive(one)||isPrimitive(two)||isFunction(two))result=takeValue(two);else if(isArray(one)){if(result=one.slice(),isArray(two))for(let i=0,j=two.length;i<j;i++)result.push(takeValue(two[i]));else if(isObject(two)){let keys=Object.keys(two);for(let i=0,j=keys.length;i<j;i++){let key=keys[i];result[key]=takeValue(two[key])}}}else if(isObject(one))if(isObject(two)){if(!shouldMerge(one,two))return two;result=Object.assign({},one);let keys=Object.keys(two);for(let i=0,j=keys.length;i<j;i++){let key=keys[i],twoValue=two[key];if(isPrimitive(twoValue))twoValue===void 0?delete result[key]:result[key]=twoValue;else{let obj1=result[key],obj2=twoValue;if(wasObjectReferenced(one,key,objects)||wasObjectReferenced(two,key,objects))delete result[key];else{if(isObject(obj1)&&isObject(obj2)){let arr1=objects.get(obj1)||[],arr2=objects.get(obj2)||[];arr1.push({obj:one,key}),arr2.push({obj:two,key}),objects.set(obj1,arr1),objects.set(obj2,arr2)}result[key]=mergeTwoObjects(result[key],twoValue,level,objects)}}}}else result=two;return result}}function wasObjectReferenced(obj,key,objects){let arr=objects.get(obj[key])||[];for(let i=0,j=arr.length;i<j;i++){let info=arr[i];if(info.key===key&&info.obj===obj)return!0}return!1}function isArray(value){return Array.isArray(value)}function isFunction(value){return typeof value==`function`}function isObject(value){return!isPrimitive(value)&&!isArray(value)&&!isFunction(value)&&typeof value==`object`}function isPrimitive(value){return typeof value==`string`||typeof value==`number`||typeof value==`boolean`||value===void 0||value instanceof Date||value instanceof RegExp||value===null}function shouldMerge(one,two){return!(!(0,lodash_merge_1.isPlainObject)(one)||!(0,lodash_merge_1.isPlainObject)(two))}})),require_timeout=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.callWithTimeout=exports.TimeoutError=void 0;var TimeoutError=class TimeoutError extends Error{constructor(message){super(message),Object.setPrototypeOf(this,TimeoutError.prototype)}};exports.TimeoutError=TimeoutError;function callWithTimeout(promise,timeout){let timeoutHandle,timeoutPromise=new Promise(function(_resolve,reject){timeoutHandle=setTimeout(function(){reject(new TimeoutError(`Operation timed out.`))},timeout)});return Promise.race([promise,timeoutPromise]).then(result=>(clearTimeout(timeoutHandle),result),reason=>{throw clearTimeout(timeoutHandle),reason})}exports.callWithTimeout=callWithTimeout})),require_url=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.isUrlIgnored=exports.urlMatches=void 0;function urlMatches(url$1,urlToMatch){return typeof urlToMatch==`string`?url$1===urlToMatch:!!url$1.match(urlToMatch)}exports.urlMatches=urlMatches;function isUrlIgnored(url$1,ignoredUrls){if(!ignoredUrls)return!1;for(let ignoreUrl of ignoredUrls)if(urlMatches(url$1,ignoreUrl))return!0;return!1}exports.isUrlIgnored=isUrlIgnored})),require_promise=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.Deferred=void 0,exports.Deferred=class{_promise;_resolve;_reject;constructor(){this._promise=new Promise((resolve$1,reject)=>{this._resolve=resolve$1,this._reject=reject})}get promise(){return this._promise}resolve(val){this._resolve(val)}reject(err){this._reject(err)}}})),require_callback=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.BindOnceFuture=void 0;let promise_1=require_promise();exports.BindOnceFuture=class{_callback;_that;_isCalled=!1;_deferred=new promise_1.Deferred;constructor(_callback,_that){this._callback=_callback,this._that=_that}get isCalled(){return this._isCalled}get promise(){return this._deferred.promise}call(...args){if(!this._isCalled){this._isCalled=!0;try{Promise.resolve(this._callback.call(this._that,...args)).then(val=>this._deferred.resolve(val),err=>this._deferred.reject(err))}catch(err){this._deferred.reject(err)}}return this._deferred.promise}}})),require_configuration=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.diagLogLevelFromString=void 0;let api_1$17=__require(`@opentelemetry/api`),logLevelMap={ALL:api_1$17.DiagLogLevel.ALL,VERBOSE:api_1$17.DiagLogLevel.VERBOSE,DEBUG:api_1$17.DiagLogLevel.DEBUG,INFO:api_1$17.DiagLogLevel.INFO,WARN:api_1$17.DiagLogLevel.WARN,ERROR:api_1$17.DiagLogLevel.ERROR,NONE:api_1$17.DiagLogLevel.NONE};function diagLogLevelFromString(value){return value==null?void 0:logLevelMap[value.toUpperCase()]??(api_1$17.diag.warn(`Unknown log level "${value}", expected one of ${Object.keys(logLevelMap)}, using default`),api_1$17.DiagLogLevel.INFO)}exports.diagLogLevelFromString=diagLogLevelFromString})),require_exporter=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports._export=void 0;let api_1$16=__require(`@opentelemetry/api`),suppress_tracing_1=require_suppress_tracing();function _export(exporter,arg){return new Promise(resolve$1=>{api_1$16.context.with((0,suppress_tracing_1.suppressTracing)(api_1$16.context.active()),()=>{exporter.export(arg,result=>{resolve$1(result)})})})}exports._export=_export})),require_src$8=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.internal=exports.diagLogLevelFromString=exports.BindOnceFuture=exports.urlMatches=exports.isUrlIgnored=exports.callWithTimeout=exports.TimeoutError=exports.merge=exports.TraceState=exports.unsuppressTracing=exports.suppressTracing=exports.isTracingSuppressed=exports.setRPCMetadata=exports.getRPCMetadata=exports.deleteRPCMetadata=exports.RPCType=exports.parseTraceParent=exports.W3CTraceContextPropagator=exports.TRACE_STATE_HEADER=exports.TRACE_PARENT_HEADER=exports.CompositePropagator=exports.otperformance=exports.getStringListFromEnv=exports.getNumberFromEnv=exports.getBooleanFromEnv=exports.getStringFromEnv=exports._globalThis=exports.SDK_INFO=exports.parseKeyPairsIntoRecord=exports.ExportResultCode=exports.unrefTimer=exports.timeInputToHrTime=exports.millisToHrTime=exports.isTimeInputHrTime=exports.isTimeInput=exports.hrTimeToTimeStamp=exports.hrTimeToNanoseconds=exports.hrTimeToMilliseconds=exports.hrTimeToMicroseconds=exports.hrTimeDuration=exports.hrTime=exports.getTimeOrigin=exports.addHrTimes=exports.loggingErrorHandler=exports.setGlobalErrorHandler=exports.globalErrorHandler=exports.sanitizeAttributes=exports.isAttributeValue=exports.AnchoredClock=exports.W3CBaggagePropagator=void 0;var W3CBaggagePropagator_1=require_W3CBaggagePropagator();Object.defineProperty(exports,`W3CBaggagePropagator`,{enumerable:!0,get:function(){return W3CBaggagePropagator_1.W3CBaggagePropagator}});var anchored_clock_1=require_anchored_clock();Object.defineProperty(exports,`AnchoredClock`,{enumerable:!0,get:function(){return anchored_clock_1.AnchoredClock}});var attributes_1=require_attributes();Object.defineProperty(exports,`isAttributeValue`,{enumerable:!0,get:function(){return attributes_1.isAttributeValue}}),Object.defineProperty(exports,`sanitizeAttributes`,{enumerable:!0,get:function(){return attributes_1.sanitizeAttributes}});var global_error_handler_1=require_global_error_handler();Object.defineProperty(exports,`globalErrorHandler`,{enumerable:!0,get:function(){return global_error_handler_1.globalErrorHandler}}),Object.defineProperty(exports,`setGlobalErrorHandler`,{enumerable:!0,get:function(){return global_error_handler_1.setGlobalErrorHandler}});var logging_error_handler_1=require_logging_error_handler();Object.defineProperty(exports,`loggingErrorHandler`,{enumerable:!0,get:function(){return logging_error_handler_1.loggingErrorHandler}});var time_1=require_time();Object.defineProperty(exports,`addHrTimes`,{enumerable:!0,get:function(){return time_1.addHrTimes}}),Object.defineProperty(exports,`getTimeOrigin`,{enumerable:!0,get:function(){return time_1.getTimeOrigin}}),Object.defineProperty(exports,`hrTime`,{enumerable:!0,get:function(){return time_1.hrTime}}),Object.defineProperty(exports,`hrTimeDuration`,{enumerable:!0,get:function(){return time_1.hrTimeDuration}}),Object.defineProperty(exports,`hrTimeToMicroseconds`,{enumerable:!0,get:function(){return time_1.hrTimeToMicroseconds}}),Object.defineProperty(exports,`hrTimeToMilliseconds`,{enumerable:!0,get:function(){return time_1.hrTimeToMilliseconds}}),Object.defineProperty(exports,`hrTimeToNanoseconds`,{enumerable:!0,get:function(){return time_1.hrTimeToNanoseconds}}),Object.defineProperty(exports,`hrTimeToTimeStamp`,{enumerable:!0,get:function(){return time_1.hrTimeToTimeStamp}}),Object.defineProperty(exports,`isTimeInput`,{enumerable:!0,get:function(){return time_1.isTimeInput}}),Object.defineProperty(exports,`isTimeInputHrTime`,{enumerable:!0,get:function(){return time_1.isTimeInputHrTime}}),Object.defineProperty(exports,`millisToHrTime`,{enumerable:!0,get:function(){return time_1.millisToHrTime}}),Object.defineProperty(exports,`timeInputToHrTime`,{enumerable:!0,get:function(){return time_1.timeInputToHrTime}});var timer_util_1=require_timer_util();Object.defineProperty(exports,`unrefTimer`,{enumerable:!0,get:function(){return timer_util_1.unrefTimer}});var ExportResult_1=require_ExportResult();Object.defineProperty(exports,`ExportResultCode`,{enumerable:!0,get:function(){return ExportResult_1.ExportResultCode}});var utils_1=require_utils$2();Object.defineProperty(exports,`parseKeyPairsIntoRecord`,{enumerable:!0,get:function(){return utils_1.parseKeyPairsIntoRecord}});var platform_1=require_platform$5();Object.defineProperty(exports,`SDK_INFO`,{enumerable:!0,get:function(){return platform_1.SDK_INFO}}),Object.defineProperty(exports,`_globalThis`,{enumerable:!0,get:function(){return platform_1._globalThis}}),Object.defineProperty(exports,`getStringFromEnv`,{enumerable:!0,get:function(){return platform_1.getStringFromEnv}}),Object.defineProperty(exports,`getBooleanFromEnv`,{enumerable:!0,get:function(){return platform_1.getBooleanFromEnv}}),Object.defineProperty(exports,`getNumberFromEnv`,{enumerable:!0,get:function(){return platform_1.getNumberFromEnv}}),Object.defineProperty(exports,`getStringListFromEnv`,{enumerable:!0,get:function(){return platform_1.getStringListFromEnv}}),Object.defineProperty(exports,`otperformance`,{enumerable:!0,get:function(){return platform_1.otperformance}});var composite_1=require_composite();Object.defineProperty(exports,`CompositePropagator`,{enumerable:!0,get:function(){return composite_1.CompositePropagator}});var W3CTraceContextPropagator_1=require_W3CTraceContextPropagator();Object.defineProperty(exports,`TRACE_PARENT_HEADER`,{enumerable:!0,get:function(){return W3CTraceContextPropagator_1.TRACE_PARENT_HEADER}}),Object.defineProperty(exports,`TRACE_STATE_HEADER`,{enumerable:!0,get:function(){return W3CTraceContextPropagator_1.TRACE_STATE_HEADER}}),Object.defineProperty(exports,`W3CTraceContextPropagator`,{enumerable:!0,get:function(){return W3CTraceContextPropagator_1.W3CTraceContextPropagator}}),Object.defineProperty(exports,`parseTraceParent`,{enumerable:!0,get:function(){return W3CTraceContextPropagator_1.parseTraceParent}});var rpc_metadata_1=require_rpc_metadata();Object.defineProperty(exports,`RPCType`,{enumerable:!0,get:function(){return rpc_metadata_1.RPCType}}),Object.defineProperty(exports,`deleteRPCMetadata`,{enumerable:!0,get:function(){return rpc_metadata_1.deleteRPCMetadata}}),Object.defineProperty(exports,`getRPCMetadata`,{enumerable:!0,get:function(){return rpc_metadata_1.getRPCMetadata}}),Object.defineProperty(exports,`setRPCMetadata`,{enumerable:!0,get:function(){return rpc_metadata_1.setRPCMetadata}});var suppress_tracing_1=require_suppress_tracing();Object.defineProperty(exports,`isTracingSuppressed`,{enumerable:!0,get:function(){return suppress_tracing_1.isTracingSuppressed}}),Object.defineProperty(exports,`suppressTracing`,{enumerable:!0,get:function(){return suppress_tracing_1.suppressTracing}}),Object.defineProperty(exports,`unsuppressTracing`,{enumerable:!0,get:function(){return suppress_tracing_1.unsuppressTracing}});var TraceState_1=require_TraceState();Object.defineProperty(exports,`TraceState`,{enumerable:!0,get:function(){return TraceState_1.TraceState}});var merge_1=require_merge();Object.defineProperty(exports,`merge`,{enumerable:!0,get:function(){return merge_1.merge}});var timeout_1=require_timeout();Object.defineProperty(exports,`TimeoutError`,{enumerable:!0,get:function(){return timeout_1.TimeoutError}}),Object.defineProperty(exports,`callWithTimeout`,{enumerable:!0,get:function(){return timeout_1.callWithTimeout}});var url_1=require_url();Object.defineProperty(exports,`isUrlIgnored`,{enumerable:!0,get:function(){return url_1.isUrlIgnored}}),Object.defineProperty(exports,`urlMatches`,{enumerable:!0,get:function(){return url_1.urlMatches}});var callback_1=require_callback();Object.defineProperty(exports,`BindOnceFuture`,{enumerable:!0,get:function(){return callback_1.BindOnceFuture}});var configuration_1=require_configuration();Object.defineProperty(exports,`diagLogLevelFromString`,{enumerable:!0,get:function(){return configuration_1.diagLogLevelFromString}}),exports.internal={_export:require_exporter()._export}})),require_enums=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.ExceptionEventName=void 0,exports.ExceptionEventName=`exception`})),require_Span=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.SpanImpl=void 0;let api_1$15=__require(`@opentelemetry/api`),core_1=require_src$8(),semantic_conventions_1=__require(`@opentelemetry/semantic-conventions`),enums_1=require_enums();exports.SpanImpl=class{_spanContext;kind;parentSpanContext;attributes={};links=[];events=[];startTime;resource;instrumentationScope;_droppedAttributesCount=0;_droppedEventsCount=0;_droppedLinksCount=0;name;status={code:api_1$15.SpanStatusCode.UNSET};endTime=[0,0];_ended=!1;_duration=[-1,-1];_spanProcessor;_spanLimits;_attributeValueLengthLimit;_performanceStartTime;_performanceOffset;_startTimeProvided;constructor(opts){let now=Date.now();this._spanContext=opts.spanContext,this._performanceStartTime=core_1.otperformance.now(),this._performanceOffset=now-(this._performanceStartTime+(0,core_1.getTimeOrigin)()),this._startTimeProvided=opts.startTime!=null,this._spanLimits=opts.spanLimits,this._attributeValueLengthLimit=this._spanLimits.attributeValueLengthLimit||0,this._spanProcessor=opts.spanProcessor,this.name=opts.name,this.parentSpanContext=opts.parentSpanContext,this.kind=opts.kind,this.links=opts.links||[],this.startTime=this._getTime(opts.startTime??now),this.resource=opts.resource,this.instrumentationScope=opts.scope,opts.attributes!=null&&this.setAttributes(opts.attributes),this._spanProcessor.onStart(this,opts.context)}spanContext(){return this._spanContext}setAttribute(key,value){if(value==null||this._isSpanEnded())return this;if(key.length===0)return api_1$15.diag.warn(`Invalid attribute key: ${key}`),this;if(!(0,core_1.isAttributeValue)(value))return api_1$15.diag.warn(`Invalid attribute value set for key: ${key}`),this;let{attributeCountLimit}=this._spanLimits;return attributeCountLimit!==void 0&&Object.keys(this.attributes).length>=attributeCountLimit&&!Object.prototype.hasOwnProperty.call(this.attributes,key)?(this._droppedAttributesCount++,this):(this.attributes[key]=this._truncateToSize(value),this)}setAttributes(attributes){for(let[k,v]of Object.entries(attributes))this.setAttribute(k,v);return this}addEvent(name,attributesOrStartTime,timeStamp){if(this._isSpanEnded())return this;let{eventCountLimit}=this._spanLimits;if(eventCountLimit===0)return api_1$15.diag.warn(`No events allowed.`),this._droppedEventsCount++,this;eventCountLimit!==void 0&&this.events.length>=eventCountLimit&&(this._droppedEventsCount===0&&api_1$15.diag.debug(`Dropping extra events.`),this.events.shift(),this._droppedEventsCount++),(0,core_1.isTimeInput)(attributesOrStartTime)&&((0,core_1.isTimeInput)(timeStamp)||(timeStamp=attributesOrStartTime),attributesOrStartTime=void 0);let attributes=(0,core_1.sanitizeAttributes)(attributesOrStartTime);return this.events.push({name,attributes,time:this._getTime(timeStamp),droppedAttributesCount:0}),this}addLink(link){return this.links.push(link),this}addLinks(links){return this.links.push(...links),this}setStatus(status){return this._isSpanEnded()?this:(this.status={...status},this.status.message!=null&&typeof status.message!=`string`&&(api_1$15.diag.warn(`Dropping invalid status.message of type '${typeof status.message}', expected 'string'`),delete this.status.message),this)}updateName(name){return this._isSpanEnded()||(this.name=name),this}end(endTime){if(this._isSpanEnded()){api_1$15.diag.error(`${this.name} ${this._spanContext.traceId}-${this._spanContext.spanId} - You can only call end() on a span once.`);return}this._ended=!0,this.endTime=this._getTime(endTime),this._duration=(0,core_1.hrTimeDuration)(this.startTime,this.endTime),this._duration[0]<0&&(api_1$15.diag.warn(`Inconsistent start and end time, startTime > endTime. Setting span duration to 0ms.`,this.startTime,this.endTime),this.endTime=this.startTime.slice(),this._duration=[0,0]),this._droppedEventsCount>0&&api_1$15.diag.warn(`Dropped ${this._droppedEventsCount} events because eventCountLimit reached`),this._spanProcessor.onEnd(this)}_getTime(inp){if(typeof inp==`number`&&inp<=core_1.otperformance.now())return(0,core_1.hrTime)(inp+this._performanceOffset);if(typeof inp==`number`)return(0,core_1.millisToHrTime)(inp);if(inp instanceof Date)return(0,core_1.millisToHrTime)(inp.getTime());if((0,core_1.isTimeInputHrTime)(inp))return inp;if(this._startTimeProvided)return(0,core_1.millisToHrTime)(Date.now());let msDuration=core_1.otperformance.now()-this._performanceStartTime;return(0,core_1.addHrTimes)(this.startTime,(0,core_1.millisToHrTime)(msDuration))}isRecording(){return this._ended===!1}recordException(exception,time){let attributes={};typeof exception==`string`?attributes[semantic_conventions_1.ATTR_EXCEPTION_MESSAGE]=exception:exception&&(exception.code?attributes[semantic_conventions_1.ATTR_EXCEPTION_TYPE]=exception.code.toString():exception.name&&(attributes[semantic_conventions_1.ATTR_EXCEPTION_TYPE]=exception.name),exception.message&&(attributes[semantic_conventions_1.ATTR_EXCEPTION_MESSAGE]=exception.message),exception.stack&&(attributes[semantic_conventions_1.ATTR_EXCEPTION_STACKTRACE]=exception.stack)),attributes[semantic_conventions_1.ATTR_EXCEPTION_TYPE]||attributes[semantic_conventions_1.ATTR_EXCEPTION_MESSAGE]?this.addEvent(enums_1.ExceptionEventName,attributes,time):api_1$15.diag.warn(`Failed to record an exception ${exception}`)}get duration(){return this._duration}get ended(){return this._ended}get droppedAttributesCount(){return this._droppedAttributesCount}get droppedEventsCount(){return this._droppedEventsCount}get droppedLinksCount(){return this._droppedLinksCount}_isSpanEnded(){if(this._ended){let error=Error(`Operation attempted on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`);api_1$15.diag.warn(`Cannot execute the operation on ended Span {traceId: ${this._spanContext.traceId}, spanId: ${this._spanContext.spanId}}`,error)}return this._ended}_truncateToLimitUtil(value,limit){return value.length<=limit?value:value.substring(0,limit)}_truncateToSize(value){let limit=this._attributeValueLengthLimit;return limit<=0?(api_1$15.diag.warn(`Attribute value limit must be positive, got ${limit}`),value):typeof value==`string`?this._truncateToLimitUtil(value,limit):Array.isArray(value)?value.map(val=>typeof val==`string`?this._truncateToLimitUtil(val,limit):val):value}}})),require_Sampler=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.SamplingDecision=void 0,(function(SamplingDecision){SamplingDecision[SamplingDecision.NOT_RECORD=0]=`NOT_RECORD`,SamplingDecision[SamplingDecision.RECORD=1]=`RECORD`,SamplingDecision[SamplingDecision.RECORD_AND_SAMPLED=2]=`RECORD_AND_SAMPLED`})(exports.SamplingDecision||={})})),require_AlwaysOffSampler=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.AlwaysOffSampler=void 0;let Sampler_1=require_Sampler();exports.AlwaysOffSampler=class{shouldSample(){return{decision:Sampler_1.SamplingDecision.NOT_RECORD}}toString(){return`AlwaysOffSampler`}}})),require_AlwaysOnSampler=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.AlwaysOnSampler=void 0;let Sampler_1=require_Sampler();exports.AlwaysOnSampler=class{shouldSample(){return{decision:Sampler_1.SamplingDecision.RECORD_AND_SAMPLED}}toString(){return`AlwaysOnSampler`}}})),require_ParentBasedSampler=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.ParentBasedSampler=void 0;let api_1$14=__require(`@opentelemetry/api`),core_1=require_src$8(),AlwaysOffSampler_1=require_AlwaysOffSampler(),AlwaysOnSampler_1=require_AlwaysOnSampler();exports.ParentBasedSampler=class{_root;_remoteParentSampled;_remoteParentNotSampled;_localParentSampled;_localParentNotSampled;constructor(config){this._root=config.root,this._root||=((0,core_1.globalErrorHandler)(Error(`ParentBasedSampler must have a root sampler configured`)),new AlwaysOnSampler_1.AlwaysOnSampler),this._remoteParentSampled=config.remoteParentSampled??new AlwaysOnSampler_1.AlwaysOnSampler,this._remoteParentNotSampled=config.remoteParentNotSampled??new AlwaysOffSampler_1.AlwaysOffSampler,this._localParentSampled=config.localParentSampled??new AlwaysOnSampler_1.AlwaysOnSampler,this._localParentNotSampled=config.localParentNotSampled??new AlwaysOffSampler_1.AlwaysOffSampler}shouldSample(context$1,traceId,spanName,spanKind,attributes,links){let parentContext=api_1$14.trace.getSpanContext(context$1);return!parentContext||!(0,api_1$14.isSpanContextValid)(parentContext)?this._root.shouldSample(context$1,traceId,spanName,spanKind,attributes,links):parentContext.isRemote?parentContext.traceFlags&api_1$14.TraceFlags.SAMPLED?this._remoteParentSampled.shouldSample(context$1,traceId,spanName,spanKind,attributes,links):this._remoteParentNotSampled.shouldSample(context$1,traceId,spanName,spanKind,attributes,links):parentContext.traceFlags&api_1$14.TraceFlags.SAMPLED?this._localParentSampled.shouldSample(context$1,traceId,spanName,spanKind,attributes,links):this._localParentNotSampled.shouldSample(context$1,traceId,spanName,spanKind,attributes,links)}toString(){return`ParentBased{root=${this._root.toString()}, remoteParentSampled=${this._remoteParentSampled.toString()}, remoteParentNotSampled=${this._remoteParentNotSampled.toString()}, localParentSampled=${this._localParentSampled.toString()}, localParentNotSampled=${this._localParentNotSampled.toString()}}`}}})),require_TraceIdRatioBasedSampler=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.TraceIdRatioBasedSampler=void 0;let api_1$13=__require(`@opentelemetry/api`),Sampler_1=require_Sampler();exports.TraceIdRatioBasedSampler=class{_ratio;_upperBound;constructor(_ratio=0){this._ratio=_ratio,this._ratio=this._normalize(_ratio),this._upperBound=Math.floor(this._ratio*4294967295)}shouldSample(context$1,traceId){return{decision:(0,api_1$13.isValidTraceId)(traceId)&&this._accumulate(traceId)<this._upperBound?Sampler_1.SamplingDecision.RECORD_AND_SAMPLED:Sampler_1.SamplingDecision.NOT_RECORD}}toString(){return`TraceIdRatioBased{${this._ratio}}`}_normalize(ratio){return typeof ratio!=`number`||isNaN(ratio)?0:ratio>=1?1:ratio<=0?0:ratio}_accumulate(traceId){let accumulation=0;for(let i=0;i<traceId.length/8;i++){let pos=i*8,part=parseInt(traceId.slice(pos,pos+8),16);accumulation=(accumulation^part)>>>0}return accumulation}}})),require_config$2=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.buildSamplerFromEnv=exports.loadDefaultConfig=void 0;let api_1$12=__require(`@opentelemetry/api`),core_1=require_src$8(),AlwaysOffSampler_1=require_AlwaysOffSampler(),AlwaysOnSampler_1=require_AlwaysOnSampler(),ParentBasedSampler_1=require_ParentBasedSampler(),TraceIdRatioBasedSampler_1=require_TraceIdRatioBasedSampler();var TracesSamplerValues;(function(TracesSamplerValues){TracesSamplerValues.AlwaysOff=`always_off`,TracesSamplerValues.AlwaysOn=`always_on`,TracesSamplerValues.ParentBasedAlwaysOff=`parentbased_always_off`,TracesSamplerValues.ParentBasedAlwaysOn=`parentbased_always_on`,TracesSamplerValues.ParentBasedTraceIdRatio=`parentbased_traceidratio`,TracesSamplerValues.TraceIdRatio=`traceidratio`})(TracesSamplerValues||={});let DEFAULT_RATIO=1;function loadDefaultConfig(){return{sampler:buildSamplerFromEnv(),forceFlushTimeoutMillis:3e4,generalLimits:{attributeValueLengthLimit:(0,core_1.getNumberFromEnv)(`OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT`)??1/0,attributeCountLimit:(0,core_1.getNumberFromEnv)(`OTEL_ATTRIBUTE_COUNT_LIMIT`)??128},spanLimits:{attributeValueLengthLimit:(0,core_1.getNumberFromEnv)(`OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT`)??1/0,attributeCountLimit:(0,core_1.getNumberFromEnv)(`OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT`)??128,linkCountLimit:(0,core_1.getNumberFromEnv)(`OTEL_SPAN_LINK_COUNT_LIMIT`)??128,eventCountLimit:(0,core_1.getNumberFromEnv)(`OTEL_SPAN_EVENT_COUNT_LIMIT`)??128,attributePerEventCountLimit:(0,core_1.getNumberFromEnv)(`OTEL_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT`)??128,attributePerLinkCountLimit:(0,core_1.getNumberFromEnv)(`OTEL_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT`)??128}}}exports.loadDefaultConfig=loadDefaultConfig;function buildSamplerFromEnv(){let sampler=(0,core_1.getStringFromEnv)(`OTEL_TRACES_SAMPLER`)??TracesSamplerValues.ParentBasedAlwaysOn;switch(sampler){case TracesSamplerValues.AlwaysOn:return new AlwaysOnSampler_1.AlwaysOnSampler;case TracesSamplerValues.AlwaysOff:return new AlwaysOffSampler_1.AlwaysOffSampler;case TracesSamplerValues.ParentBasedAlwaysOn:return new ParentBasedSampler_1.ParentBasedSampler({root:new AlwaysOnSampler_1.AlwaysOnSampler});case TracesSamplerValues.ParentBasedAlwaysOff:return new ParentBasedSampler_1.ParentBasedSampler({root:new AlwaysOffSampler_1.AlwaysOffSampler});case TracesSamplerValues.TraceIdRatio:return new TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv());case TracesSamplerValues.ParentBasedTraceIdRatio:return new ParentBasedSampler_1.ParentBasedSampler({root:new TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler(getSamplerProbabilityFromEnv())});default:return api_1$12.diag.error(`OTEL_TRACES_SAMPLER value "${sampler}" invalid, defaulting to "${TracesSamplerValues.ParentBasedAlwaysOn}".`),new ParentBasedSampler_1.ParentBasedSampler({root:new AlwaysOnSampler_1.AlwaysOnSampler})}}exports.buildSamplerFromEnv=buildSamplerFromEnv;function getSamplerProbabilityFromEnv(){let probability=(0,core_1.getNumberFromEnv)(`OTEL_TRACES_SAMPLER_ARG`);return probability==null?(api_1$12.diag.error(`OTEL_TRACES_SAMPLER_ARG is blank, defaulting to 1.`),1):probability<0||probability>1?(api_1$12.diag.error(`OTEL_TRACES_SAMPLER_ARG=${probability} was given, but it is out of range ([0..1]), defaulting to 1.`),1):probability}})),require_utility=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.reconfigureLimits=exports.mergeConfig=exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT=exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT=void 0;let config_1=require_config$2(),core_1=require_src$8();exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT=128,exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT=1/0;function mergeConfig(userConfig){let perInstanceDefaults={sampler:(0,config_1.buildSamplerFromEnv)()},DEFAULT_CONFIG=(0,config_1.loadDefaultConfig)(),target=Object.assign({},DEFAULT_CONFIG,perInstanceDefaults,userConfig);return target.generalLimits=Object.assign({},DEFAULT_CONFIG.generalLimits,userConfig.generalLimits||{}),target.spanLimits=Object.assign({},DEFAULT_CONFIG.spanLimits,userConfig.spanLimits||{}),target}exports.mergeConfig=mergeConfig;function reconfigureLimits(userConfig){let spanLimits=Object.assign({},userConfig.spanLimits);return spanLimits.attributeCountLimit=userConfig.spanLimits?.attributeCountLimit??userConfig.generalLimits?.attributeCountLimit??(0,core_1.getNumberFromEnv)(`OTEL_SPAN_ATTRIBUTE_COUNT_LIMIT`)??(0,core_1.getNumberFromEnv)(`OTEL_ATTRIBUTE_COUNT_LIMIT`)??exports.DEFAULT_ATTRIBUTE_COUNT_LIMIT,spanLimits.attributeValueLengthLimit=userConfig.spanLimits?.attributeValueLengthLimit??userConfig.generalLimits?.attributeValueLengthLimit??(0,core_1.getNumberFromEnv)(`OTEL_SPAN_ATTRIBUTE_VALUE_LENGTH_LIMIT`)??(0,core_1.getNumberFromEnv)(`OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT`)??exports.DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT,Object.assign({},userConfig,{spanLimits})}exports.reconfigureLimits=reconfigureLimits})),require_BatchSpanProcessorBase=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.BatchSpanProcessorBase=void 0;let api_1$11=__require(`@opentelemetry/api`),core_1=require_src$8();exports.BatchSpanProcessorBase=class{_exporter;_maxExportBatchSize;_maxQueueSize;_scheduledDelayMillis;_exportTimeoutMillis;_isExporting=!1;_finishedSpans=[];_timer;_shutdownOnce;_droppedSpansCount=0;constructor(_exporter,config){this._exporter=_exporter,this._maxExportBatchSize=typeof config?.maxExportBatchSize==`number`?config.maxExportBatchSize:(0,core_1.getNumberFromEnv)(`OTEL_BSP_MAX_EXPORT_BATCH_SIZE`)??512,this._maxQueueSize=typeof config?.maxQueueSize==`number`?config.maxQueueSize:(0,core_1.getNumberFromEnv)(`OTEL_BSP_MAX_QUEUE_SIZE`)??2048,this._scheduledDelayMillis=typeof config?.scheduledDelayMillis==`number`?config.scheduledDelayMillis:(0,core_1.getNumberFromEnv)(`OTEL_BSP_SCHEDULE_DELAY`)??5e3,this._exportTimeoutMillis=typeof config?.exportTimeoutMillis==`number`?config.exportTimeoutMillis:(0,core_1.getNumberFromEnv)(`OTEL_BSP_EXPORT_TIMEOUT`)??3e4,this._shutdownOnce=new core_1.BindOnceFuture(this._shutdown,this),this._maxExportBatchSize>this._maxQueueSize&&(api_1$11.diag.warn(`BatchSpanProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize`),this._maxExportBatchSize=this._maxQueueSize)}forceFlush(){return this._shutdownOnce.isCalled?this._shutdownOnce.promise:this._flushAll()}onStart(_span,_parentContext){}onEnd(span){this._shutdownOnce.isCalled||(span.spanContext().traceFlags&api_1$11.TraceFlags.SAMPLED)!==0&&this._addToBuffer(span)}shutdown(){return this._shutdownOnce.call()}_shutdown(){return Promise.resolve().then(()=>this.onShutdown()).then(()=>this._flushAll()).then(()=>this._exporter.shutdown())}_addToBuffer(span){if(this._finishedSpans.length>=this._maxQueueSize){this._droppedSpansCount===0&&api_1$11.diag.debug(`maxQueueSize reached, dropping spans`),this._droppedSpansCount++;return}this._droppedSpansCount>0&&(api_1$11.diag.warn(`Dropped ${this._droppedSpansCount} spans because maxQueueSize reached`),this._droppedSpansCount=0),this._finishedSpans.push(span),this._maybeStartTimer()}_flushAll(){return new Promise((resolve$1,reject)=>{let promises=[],count=Math.ceil(this._finishedSpans.length/this._maxExportBatchSize);for(let i=0,j=count;i<j;i++)promises.push(this._flushOneBatch());Promise.all(promises).then(()=>{resolve$1()}).catch(reject)})}_flushOneBatch(){return this._clearTimer(),this._finishedSpans.length===0?Promise.resolve():new Promise((resolve$1,reject)=>{let timer=setTimeout(()=>{reject(Error(`Timeout`))},this._exportTimeoutMillis);api_1$11.context.with((0,core_1.suppressTracing)(api_1$11.context.active()),()=>{let spans;this._finishedSpans.length<=this._maxExportBatchSize?(spans=this._finishedSpans,this._finishedSpans=[]):spans=this._finishedSpans.splice(0,this._maxExportBatchSize);let doExport=()=>this._exporter.export(spans,result=>{clearTimeout(timer),result.code===core_1.ExportResultCode.SUCCESS?resolve$1():reject(result.error??Error(`BatchSpanProcessor: span export failed`))}),pendingResources=null;for(let i=0,len=spans.length;i<len;i++){let span=spans[i];span.resource.asyncAttributesPending&&span.resource.waitForAsyncAttributes&&(pendingResources??=[],pendingResources.push(span.resource.waitForAsyncAttributes()))}pendingResources===null?doExport():Promise.all(pendingResources).then(doExport,err=>{(0,core_1.globalErrorHandler)(err),reject(err)})})})}_maybeStartTimer(){if(this._isExporting)return;let flush=()=>{this._isExporting=!0,this._flushOneBatch().finally(()=>{this._isExporting=!1,this._finishedSpans.length>0&&(this._clearTimer(),this._maybeStartTimer())}).catch(e=>{this._isExporting=!1,(0,core_1.globalErrorHandler)(e)})};if(this._finishedSpans.length>=this._maxExportBatchSize)return flush();this._timer===void 0&&(this._timer=setTimeout(()=>flush(),this._scheduledDelayMillis),typeof this._timer!=`number`&&this._timer.unref())}_clearTimer(){this._timer!==void 0&&(clearTimeout(this._timer),this._timer=void 0)}}})),require_BatchSpanProcessor=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.BatchSpanProcessor=void 0;let BatchSpanProcessorBase_1=require_BatchSpanProcessorBase();exports.BatchSpanProcessor=class extends BatchSpanProcessorBase_1.BatchSpanProcessorBase{onShutdown(){}}})),require_RandomIdGenerator=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.RandomIdGenerator=void 0;let SPAN_ID_BYTES=8,TRACE_ID_BYTES=16;exports.RandomIdGenerator=class{generateTraceId=getIdGenerator(16);generateSpanId=getIdGenerator(8)};let SHARED_BUFFER=Buffer.allocUnsafe(16);function getIdGenerator(bytes){return function(){for(let i=0;i<bytes/4;i++)SHARED_BUFFER.writeUInt32BE(Math.random()*2**32>>>0,i*4);for(let i=0;i<bytes&&!(SHARED_BUFFER[i]>0);i++)i===bytes-1&&(SHARED_BUFFER[bytes-1]=1);return SHARED_BUFFER.toString(`hex`,0,bytes)}}})),require_node$4=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.RandomIdGenerator=exports.BatchSpanProcessor=void 0;var BatchSpanProcessor_1=require_BatchSpanProcessor();Object.defineProperty(exports,`BatchSpanProcessor`,{enumerable:!0,get:function(){return BatchSpanProcessor_1.BatchSpanProcessor}});var RandomIdGenerator_1=require_RandomIdGenerator();Object.defineProperty(exports,`RandomIdGenerator`,{enumerable:!0,get:function(){return RandomIdGenerator_1.RandomIdGenerator}})})),require_platform$4=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.RandomIdGenerator=exports.BatchSpanProcessor=void 0;var node_1=require_node$4();Object.defineProperty(exports,`BatchSpanProcessor`,{enumerable:!0,get:function(){return node_1.BatchSpanProcessor}}),Object.defineProperty(exports,`RandomIdGenerator`,{enumerable:!0,get:function(){return node_1.RandomIdGenerator}})})),require_Tracer=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.Tracer=void 0;let api$5=__require(`@opentelemetry/api`),core_1=require_src$8(),Span_1=require_Span(),utility_1=require_utility(),platform_1=require_platform$4();exports.Tracer=class{_sampler;_generalLimits;_spanLimits;_idGenerator;instrumentationScope;_resource;_spanProcessor;constructor(instrumentationScope,config,resource,spanProcessor){let localConfig=(0,utility_1.mergeConfig)(config);this._sampler=localConfig.sampler,this._generalLimits=localConfig.generalLimits,this._spanLimits=localConfig.spanLimits,this._idGenerator=config.idGenerator||new platform_1.RandomIdGenerator,this._resource=resource,this._spanProcessor=spanProcessor,this.instrumentationScope=instrumentationScope}startSpan(name,options={},context$1=api$5.context.active()){options.root&&(context$1=api$5.trace.deleteSpan(context$1));let parentSpan=api$5.trace.getSpan(context$1);if((0,core_1.isTracingSuppressed)(context$1))return api$5.diag.debug(`Instrumentation suppressed, returning Noop Span`),api$5.trace.wrapSpanContext(api$5.INVALID_SPAN_CONTEXT);let parentSpanContext=parentSpan?.spanContext(),spanId=this._idGenerator.generateSpanId(),validParentSpanContext,traceId,traceState;!parentSpanContext||!api$5.trace.isSpanContextValid(parentSpanContext)?traceId=this._idGenerator.generateTraceId():(traceId=parentSpanContext.traceId,traceState=parentSpanContext.traceState,validParentSpanContext=parentSpanContext);let spanKind=options.kind??api$5.SpanKind.INTERNAL,links=(options.links??[]).map(link=>({context:link.context,attributes:(0,core_1.sanitizeAttributes)(link.attributes)})),attributes=(0,core_1.sanitizeAttributes)(options.attributes),samplingResult=this._sampler.shouldSample(context$1,traceId,name,spanKind,attributes,links);traceState=samplingResult.traceState??traceState;let traceFlags=samplingResult.decision===api$5.SamplingDecision.RECORD_AND_SAMPLED?api$5.TraceFlags.SAMPLED:api$5.TraceFlags.NONE,spanContext={traceId,spanId,traceFlags,traceState};if(samplingResult.decision===api$5.SamplingDecision.NOT_RECORD)return api$5.diag.debug(`Recording is off, propagating context in a non-recording span`),api$5.trace.wrapSpanContext(spanContext);let initAttributes=(0,core_1.sanitizeAttributes)(Object.assign(attributes,samplingResult.attributes));return new Span_1.SpanImpl({resource:this._resource,scope:this.instrumentationScope,context:context$1,spanContext,name,kind:spanKind,links,parentSpanContext:validParentSpanContext,attributes:initAttributes,startTime:options.startTime,spanProcessor:this._spanProcessor,spanLimits:this._spanLimits})}startActiveSpan(name,arg2,arg3,arg4){let opts,ctx,fn;if(arguments.length<2)return;arguments.length===2?fn=arg2:arguments.length===3?(opts=arg2,fn=arg3):(opts=arg2,ctx=arg3,fn=arg4);let parentContext=ctx??api$5.context.active(),span=this.startSpan(name,opts,parentContext),contextWithSpanSet=api$5.trace.setSpan(parentContext,span);return api$5.context.with(contextWithSpanSet,fn,void 0,span)}getGeneralLimits(){return this._generalLimits}getSpanLimits(){return this._spanLimits}}})),require_MultiSpanProcessor=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.MultiSpanProcessor=void 0;let core_1=require_src$8();exports.MultiSpanProcessor=class{_spanProcessors;constructor(_spanProcessors){this._spanProcessors=_spanProcessors}forceFlush(){let promises=[];for(let spanProcessor of this._spanProcessors)promises.push(spanProcessor.forceFlush());return new Promise(resolve$1=>{Promise.all(promises).then(()=>{resolve$1()}).catch(error=>{(0,core_1.globalErrorHandler)(error||Error(`MultiSpanProcessor: forceFlush failed`)),resolve$1()})})}onStart(span,context$1){for(let spanProcessor of this._spanProcessors)spanProcessor.onStart(span,context$1)}onEnd(span){for(let spanProcessor of this._spanProcessors)spanProcessor.onEnd(span)}shutdown(){let promises=[];for(let spanProcessor of this._spanProcessors)promises.push(spanProcessor.shutdown());return new Promise((resolve$1,reject)=>{Promise.all(promises).then(()=>{resolve$1()},reject)})}}})),require_BasicTracerProvider=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.BasicTracerProvider=exports.ForceFlushState=void 0;let core_1=require_src$8(),resources_1$2=__require(`@opentelemetry/resources`),Tracer_1=require_Tracer(),config_1=require_config$2(),MultiSpanProcessor_1=require_MultiSpanProcessor(),utility_1=require_utility();var ForceFlushState;(function(ForceFlushState){ForceFlushState[ForceFlushState.resolved=0]=`resolved`,ForceFlushState[ForceFlushState.timeout=1]=`timeout`,ForceFlushState[ForceFlushState.error=2]=`error`,ForceFlushState[ForceFlushState.unresolved=3]=`unresolved`})(ForceFlushState=exports.ForceFlushState||={}),exports.BasicTracerProvider=class{_config;_tracers=new Map;_resource;_activeSpanProcessor;constructor(config={}){let mergedConfig=(0,core_1.merge)({},(0,config_1.loadDefaultConfig)(),(0,utility_1.reconfigureLimits)(config));this._resource=mergedConfig.resource??(0,resources_1$2.defaultResource)(),this._config=Object.assign({},mergedConfig,{resource:this._resource});let spanProcessors=[];config.spanProcessors?.length&&spanProcessors.push(...config.spanProcessors),this._activeSpanProcessor=new MultiSpanProcessor_1.MultiSpanProcessor(spanProcessors)}getTracer(name,version$1,options){let key=`${name}@${version$1||``}:${options?.schemaUrl||``}`;return this._tracers.has(key)||this._tracers.set(key,new Tracer_1.Tracer({name,version:version$1,schemaUrl:options?.schemaUrl},this._config,this._resource,this._activeSpanProcessor)),this._tracers.get(key)}forceFlush(){let timeout=this._config.forceFlushTimeoutMillis,promises=this._activeSpanProcessor._spanProcessors.map(spanProcessor=>new Promise(resolve$1=>{let state,timeoutInterval=setTimeout(()=>{resolve$1(Error(`Span processor did not completed within timeout period of ${timeout} ms`)),state=ForceFlushState.timeout},timeout);spanProcessor.forceFlush().then(()=>{clearTimeout(timeoutInterval),state!==ForceFlushState.timeout&&(state=ForceFlushState.resolved,resolve$1(state))}).catch(error=>{clearTimeout(timeoutInterval),state=ForceFlushState.error,resolve$1(error)})}));return new Promise((resolve$1,reject)=>{Promise.all(promises).then(results=>{let errors=results.filter(result=>result!==ForceFlushState.resolved);errors.length>0?reject(errors):resolve$1()}).catch(error=>reject([error]))})}shutdown(){return this._activeSpanProcessor.shutdown()}}})),require_ConsoleSpanExporter=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.ConsoleSpanExporter=void 0;let core_1=require_src$8();exports.ConsoleSpanExporter=class{export(spans,resultCallback){return this._sendSpans(spans,resultCallback)}shutdown(){return this._sendSpans([]),this.forceFlush()}forceFlush(){return Promise.resolve()}_exportInfo(span){return{resource:{attributes:span.resource.attributes},instrumentationScope:span.instrumentationScope,traceId:span.spanContext().traceId,parentSpanContext:span.parentSpanContext,traceState:span.spanContext().traceState?.serialize(),name:span.name,id:span.spanContext().spanId,kind:span.kind,timestamp:(0,core_1.hrTimeToMicroseconds)(span.startTime),duration:(0,core_1.hrTimeToMicroseconds)(span.duration),attributes:span.attributes,status:span.status,events:span.events,links:span.links}}_sendSpans(spans,done){for(let span of spans)console.dir(this._exportInfo(span),{depth:3});if(done)return done({code:core_1.ExportResultCode.SUCCESS})}}})),require_InMemorySpanExporter=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.InMemorySpanExporter=void 0;let core_1=require_src$8();exports.InMemorySpanExporter=class{_finishedSpans=[];_stopped=!1;export(spans,resultCallback){if(this._stopped)return resultCallback({code:core_1.ExportResultCode.FAILED,error:Error(`Exporter has been stopped`)});this._finishedSpans.push(...spans),setTimeout(()=>resultCallback({code:core_1.ExportResultCode.SUCCESS}),0)}shutdown(){return this._stopped=!0,this._finishedSpans=[],this.forceFlush()}forceFlush(){return Promise.resolve()}reset(){this._finishedSpans=[]}getFinishedSpans(){return this._finishedSpans}}})),require_SimpleSpanProcessor=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.SimpleSpanProcessor=void 0;let api_1$10=__require(`@opentelemetry/api`),core_1=require_src$8();exports.SimpleSpanProcessor=class{_exporter;_shutdownOnce;_pendingExports;constructor(_exporter){this._exporter=_exporter,this._shutdownOnce=new core_1.BindOnceFuture(this._shutdown,this),this._pendingExports=new Set}async forceFlush(){await Promise.all(Array.from(this._pendingExports)),this._exporter.forceFlush&&await this._exporter.forceFlush()}onStart(_span,_parentContext){}onEnd(span){if(this._shutdownOnce.isCalled||(span.spanContext().traceFlags&api_1$10.TraceFlags.SAMPLED)===0)return;let pendingExport=this._doExport(span).catch(err=>(0,core_1.globalErrorHandler)(err));this._pendingExports.add(pendingExport),pendingExport.finally(()=>this._pendingExports.delete(pendingExport))}async _doExport(span){span.resource.asyncAttributesPending&&await span.resource.waitForAsyncAttributes?.();let result=await core_1.internal._export(this._exporter,[span]);if(result.code!==core_1.ExportResultCode.SUCCESS)throw result.error??Error(`SimpleSpanProcessor: span export failed (status ${result})`)}shutdown(){return this._shutdownOnce.call()}_shutdown(){return this._exporter.shutdown()}}})),require_NoopSpanProcessor=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.NoopSpanProcessor=void 0,exports.NoopSpanProcessor=class{onStart(_span,_context){}onEnd(_span){}shutdown(){return Promise.resolve()}forceFlush(){return Promise.resolve()}}})),require_src$7=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.SamplingDecision=exports.TraceIdRatioBasedSampler=exports.ParentBasedSampler=exports.AlwaysOnSampler=exports.AlwaysOffSampler=exports.NoopSpanProcessor=exports.SimpleSpanProcessor=exports.InMemorySpanExporter=exports.ConsoleSpanExporter=exports.RandomIdGenerator=exports.BatchSpanProcessor=exports.BasicTracerProvider=void 0;var BasicTracerProvider_1=require_BasicTracerProvider();Object.defineProperty(exports,`BasicTracerProvider`,{enumerable:!0,get:function(){return BasicTracerProvider_1.BasicTracerProvider}});var platform_1=require_platform$4();Object.defineProperty(exports,`BatchSpanProcessor`,{enumerable:!0,get:function(){return platform_1.BatchSpanProcessor}}),Object.defineProperty(exports,`RandomIdGenerator`,{enumerable:!0,get:function(){return platform_1.RandomIdGenerator}});var ConsoleSpanExporter_1=require_ConsoleSpanExporter();Object.defineProperty(exports,`ConsoleSpanExporter`,{enumerable:!0,get:function(){return ConsoleSpanExporter_1.ConsoleSpanExporter}});var InMemorySpanExporter_1=require_InMemorySpanExporter();Object.defineProperty(exports,`InMemorySpanExporter`,{enumerable:!0,get:function(){return InMemorySpanExporter_1.InMemorySpanExporter}});var SimpleSpanProcessor_1=require_SimpleSpanProcessor();Object.defineProperty(exports,`SimpleSpanProcessor`,{enumerable:!0,get:function(){return SimpleSpanProcessor_1.SimpleSpanProcessor}});var NoopSpanProcessor_1=require_NoopSpanProcessor();Object.defineProperty(exports,`NoopSpanProcessor`,{enumerable:!0,get:function(){return NoopSpanProcessor_1.NoopSpanProcessor}});var AlwaysOffSampler_1=require_AlwaysOffSampler();Object.defineProperty(exports,`AlwaysOffSampler`,{enumerable:!0,get:function(){return AlwaysOffSampler_1.AlwaysOffSampler}});var AlwaysOnSampler_1=require_AlwaysOnSampler();Object.defineProperty(exports,`AlwaysOnSampler`,{enumerable:!0,get:function(){return AlwaysOnSampler_1.AlwaysOnSampler}});var ParentBasedSampler_1=require_ParentBasedSampler();Object.defineProperty(exports,`ParentBasedSampler`,{enumerable:!0,get:function(){return ParentBasedSampler_1.ParentBasedSampler}});var TraceIdRatioBasedSampler_1=require_TraceIdRatioBasedSampler();Object.defineProperty(exports,`TraceIdRatioBasedSampler`,{enumerable:!0,get:function(){return TraceIdRatioBasedSampler_1.TraceIdRatioBasedSampler}});var Sampler_1=require_Sampler();Object.defineProperty(exports,`SamplingDecision`,{enumerable:!0,get:function(){return Sampler_1.SamplingDecision}})})),require_traces=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.Tracer=exports.installTraceContextManager=exports.isTraceContextWorking=exports.getActiveSpan=exports.runWithTrace=exports.SpanStatusCode=void 0;let utils_1=require_utils$3();var SpanStatusCode;(function(SpanStatusCode$1){SpanStatusCode$1[SpanStatusCode$1.UNSET=0]=`UNSET`,SpanStatusCode$1[SpanStatusCode$1.OK=1]=`OK`,SpanStatusCode$1[SpanStatusCode$1.ERROR=2]=`ERROR`})(SpanStatusCode||(exports.SpanStatusCode=SpanStatusCode={}));var StubSpan=class{attributes={};setStatus(_status){return this}setAttribute(_key,_attribute){return this}addEvent(_name,_attributesOrStartTime,_timeStamp){return this}};function runWithTrace(span,func){if(!utils_1.globalParams.enableOTLP)return func();let{context:context$1,trace:trace$1}=__require(`@opentelemetry/api`);return context$1.with(trace$1.setSpan(context$1.active(),span),func)}exports.runWithTrace=runWithTrace;function getActiveSpan(){if(!utils_1.globalParams.enableOTLP)return;let{trace:trace$1}=__require(`@opentelemetry/api`);return trace$1.getActiveSpan()}exports.getActiveSpan=getActiveSpan;function isTraceContextWorking(){if(!utils_1.globalParams.enableOTLP)return!1;let{context:context$1,trace:trace$1}=__require(`@opentelemetry/api`),span=trace$1.getTracer(`otel-bootstrap-check`).startSpan(`probe`),testContext=trace$1.setSpan(context$1.active(),span),visible;return context$1.with(testContext,()=>{visible=trace$1.getSpan(context$1.active())===span}),span.end?.(),visible===!0}exports.isTraceContextWorking=isTraceContextWorking;function installTraceContextManager(appName=`dbos`){if(!utils_1.globalParams.enableOTLP)return;let{AsyncLocalStorageContextManager}=require_src$9(),{context:context$1,trace:trace$1}=__require(`@opentelemetry/api`),{BasicTracerProvider}=require_src$7(),contextManager=new AsyncLocalStorageContextManager;contextManager.enable(),context$1.setGlobalContextManager(contextManager);let provider=new BasicTracerProvider({resource:{attributes:{"service.name":appName}}});trace$1.setGlobalTracerProvider(provider)}exports.installTraceContextManager=installTraceContextManager,exports.Tracer=class{telemetryCollector;applicationID;executorID;constructor(telemetryCollector,appName=`dbos`){if(this.telemetryCollector=telemetryCollector,this.applicationID=utils_1.globalParams.appID,this.executorID=utils_1.globalParams.executorID,!utils_1.globalParams.enableOTLP)return;let{trace:trace$1}=__require(`@opentelemetry/api`),{BasicTracerProvider}=require_src$7(),tracer=new BasicTracerProvider({resource:{attributes:{"service.name":appName}}});trace$1.setGlobalTracerProvider(tracer)}startSpanWithContext(spanContext,name,attributes){if(!utils_1.globalParams.enableOTLP)return new StubSpan;let opentelemetry=__require(`@opentelemetry/api`),tracer=opentelemetry.trace.getTracer(`dbos-tracer`),ctx=opentelemetry.trace.setSpanContext(opentelemetry.context.active(),spanContext);return tracer.startSpan(name,{startTime:performance.now(),attributes},ctx)}startSpan(name,attributes,inputSpan){if(!utils_1.globalParams.enableOTLP)return new StubSpan;let parentSpan=inputSpan,opentelemetry=__require(`@opentelemetry/api`),{hrTime}=require_src$8(),tracer=opentelemetry.trace.getTracer(`dbos-tracer`),startTime=hrTime(performance.now());if(parentSpan){let ctx=opentelemetry.trace.setSpan(opentelemetry.context.active(),parentSpan);return tracer.startSpan(name,{startTime,attributes},ctx)}else return tracer.startSpan(name,{startTime,attributes})}endSpan(inputSpan){if(!utils_1.globalParams.enableOTLP)return;let{hrTime}=require_src$8(),span=inputSpan;span.setAttributes({applicationID:this.applicationID,applicationVersion:utils_1.globalParams.appVersion}),span.attributes&&!(`executorID`in span.attributes)&&span.setAttribute(`executorID`,this.executorID),span.end(hrTime(performance.now())),this.telemetryCollector.push(span)}}})),require_LogRecord=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.SeverityNumber=void 0,(function(SeverityNumber){SeverityNumber[SeverityNumber.UNSPECIFIED=0]=`UNSPECIFIED`,SeverityNumber[SeverityNumber.TRACE=1]=`TRACE`,SeverityNumber[SeverityNumber.TRACE2=2]=`TRACE2`,SeverityNumber[SeverityNumber.TRACE3=3]=`TRACE3`,SeverityNumber[SeverityNumber.TRACE4=4]=`TRACE4`,SeverityNumber[SeverityNumber.DEBUG=5]=`DEBUG`,SeverityNumber[SeverityNumber.DEBUG2=6]=`DEBUG2`,SeverityNumber[SeverityNumber.DEBUG3=7]=`DEBUG3`,SeverityNumber[SeverityNumber.DEBUG4=8]=`DEBUG4`,SeverityNumber[SeverityNumber.INFO=9]=`INFO`,SeverityNumber[SeverityNumber.INFO2=10]=`INFO2`,SeverityNumber[SeverityNumber.INFO3=11]=`INFO3`,SeverityNumber[SeverityNumber.INFO4=12]=`INFO4`,SeverityNumber[SeverityNumber.WARN=13]=`WARN`,SeverityNumber[SeverityNumber.WARN2=14]=`WARN2`,SeverityNumber[SeverityNumber.WARN3=15]=`WARN3`,SeverityNumber[SeverityNumber.WARN4=16]=`WARN4`,SeverityNumber[SeverityNumber.ERROR=17]=`ERROR`,SeverityNumber[SeverityNumber.ERROR2=18]=`ERROR2`,SeverityNumber[SeverityNumber.ERROR3=19]=`ERROR3`,SeverityNumber[SeverityNumber.ERROR4=20]=`ERROR4`,SeverityNumber[SeverityNumber.FATAL=21]=`FATAL`,SeverityNumber[SeverityNumber.FATAL2=22]=`FATAL2`,SeverityNumber[SeverityNumber.FATAL3=23]=`FATAL3`,SeverityNumber[SeverityNumber.FATAL4=24]=`FATAL4`})(exports.SeverityNumber||={})})),require_NoopLogger=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.NOOP_LOGGER=exports.NoopLogger=void 0;var NoopLogger=class{emit(_logRecord){}};exports.NoopLogger=NoopLogger,exports.NOOP_LOGGER=new NoopLogger})),require_NoopLoggerProvider=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.NOOP_LOGGER_PROVIDER=exports.NoopLoggerProvider=void 0;let NoopLogger_1=require_NoopLogger();var NoopLoggerProvider=class{getLogger(_name,_version,_options){return new NoopLogger_1.NoopLogger}};exports.NoopLoggerProvider=NoopLoggerProvider,exports.NOOP_LOGGER_PROVIDER=new NoopLoggerProvider})),require_ProxyLogger=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.ProxyLogger=void 0;let NoopLogger_1=require_NoopLogger();exports.ProxyLogger=class{constructor(_provider,name,version$1,options){this._provider=_provider,this.name=name,this.version=version$1,this.options=options}emit(logRecord){this._getLogger().emit(logRecord)}_getLogger(){if(this._delegate)return this._delegate;let logger=this._provider._getDelegateLogger(this.name,this.version,this.options);return logger?(this._delegate=logger,this._delegate):NoopLogger_1.NOOP_LOGGER}}})),require_ProxyLoggerProvider=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.ProxyLoggerProvider=void 0;let NoopLoggerProvider_1=require_NoopLoggerProvider(),ProxyLogger_1=require_ProxyLogger();exports.ProxyLoggerProvider=class{getLogger(name,version$1,options){var _a;return this._getDelegateLogger(name,version$1,options)??new ProxyLogger_1.ProxyLogger(this,name,version$1,options)}_getDelegate(){var _a;return this._delegate??NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER}_setDelegate(delegate){this._delegate=delegate}_getDelegateLogger(name,version$1,options){var _a;return this._delegate?.getLogger(name,version$1,options)}}})),require_globalThis=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports._globalThis=void 0,exports._globalThis=typeof globalThis==`object`?globalThis:global})),require_node$3=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports._globalThis=void 0;var globalThis_1=require_globalThis();Object.defineProperty(exports,`_globalThis`,{enumerable:!0,get:function(){return globalThis_1._globalThis}})})),require_platform$3=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports._globalThis=void 0;var node_1=require_node$3();Object.defineProperty(exports,`_globalThis`,{enumerable:!0,get:function(){return node_1._globalThis}})})),require_global_utils=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.API_BACKWARDS_COMPATIBILITY_VERSION=exports.makeGetter=exports._global=exports.GLOBAL_LOGS_API_KEY=void 0;let platform_1=require_platform$3();exports.GLOBAL_LOGS_API_KEY=Symbol.for(`io.opentelemetry.js.api.logs`),exports._global=platform_1._globalThis;function makeGetter(requiredVersion,instance,fallback){return version$1=>version$1===requiredVersion?instance:fallback}exports.makeGetter=makeGetter,exports.API_BACKWARDS_COMPATIBILITY_VERSION=1})),require_logs$3=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.LogsAPI=void 0;let global_utils_1=require_global_utils(),NoopLoggerProvider_1=require_NoopLoggerProvider(),ProxyLoggerProvider_1=require_ProxyLoggerProvider();exports.LogsAPI=class LogsAPI{constructor(){this._proxyLoggerProvider=new ProxyLoggerProvider_1.ProxyLoggerProvider}static getInstance(){return this._instance||=new LogsAPI,this._instance}setGlobalLoggerProvider(provider){return global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]?this.getLoggerProvider():(global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]=(0,global_utils_1.makeGetter)(global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION,provider,NoopLoggerProvider_1.NOOP_LOGGER_PROVIDER),this._proxyLoggerProvider._setDelegate(provider),provider)}getLoggerProvider(){var _a,_b;return global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY]?.call(global_utils_1._global,global_utils_1.API_BACKWARDS_COMPATIBILITY_VERSION)??this._proxyLoggerProvider}getLogger(name,version$1,options){return this.getLoggerProvider().getLogger(name,version$1,options)}disable(){delete global_utils_1._global[global_utils_1.GLOBAL_LOGS_API_KEY],this._proxyLoggerProvider=new ProxyLoggerProvider_1.ProxyLoggerProvider}}})),require_src$6=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.logs=exports.ProxyLoggerProvider=exports.NoopLogger=exports.NOOP_LOGGER=exports.SeverityNumber=void 0;var LogRecord_1=require_LogRecord();Object.defineProperty(exports,`SeverityNumber`,{enumerable:!0,get:function(){return LogRecord_1.SeverityNumber}});var NoopLogger_1=require_NoopLogger();Object.defineProperty(exports,`NOOP_LOGGER`,{enumerable:!0,get:function(){return NoopLogger_1.NOOP_LOGGER}}),Object.defineProperty(exports,`NoopLogger`,{enumerable:!0,get:function(){return NoopLogger_1.NoopLogger}});var ProxyLoggerProvider_1=require_ProxyLoggerProvider();Object.defineProperty(exports,`ProxyLoggerProvider`,{enumerable:!0,get:function(){return ProxyLoggerProvider_1.ProxyLoggerProvider}}),exports.logs=require_logs$3().LogsAPI.getInstance()})),require_LogRecordImpl=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.LogRecordImpl=void 0;let api$4=__require(`@opentelemetry/api`),core_1=require_src$8();exports.LogRecordImpl=class{hrTime;hrTimeObserved;spanContext;resource;instrumentationScope;attributes={};_severityText;_severityNumber;_body;_eventName;totalAttributesCount=0;_isReadonly=!1;_logRecordLimits;set severityText(severityText){this._isLogRecordReadonly()||(this._severityText=severityText)}get severityText(){return this._severityText}set severityNumber(severityNumber){this._isLogRecordReadonly()||(this._severityNumber=severityNumber)}get severityNumber(){return this._severityNumber}set body(body){this._isLogRecordReadonly()||(this._body=body)}get body(){return this._body}get eventName(){return this._eventName}set eventName(eventName){this._isLogRecordReadonly()||(this._eventName=eventName)}get droppedAttributesCount(){return this.totalAttributesCount-Object.keys(this.attributes).length}constructor(_sharedState,instrumentationScope,logRecord){let{timestamp,observedTimestamp,eventName,severityNumber,severityText,body,attributes={},context:context$1}=logRecord,now=Date.now();if(this.hrTime=(0,core_1.timeInputToHrTime)(timestamp??now),this.hrTimeObserved=(0,core_1.timeInputToHrTime)(observedTimestamp??now),context$1){let spanContext=api$4.trace.getSpanContext(context$1);spanContext&&api$4.isSpanContextValid(spanContext)&&(this.spanContext=spanContext)}this.severityNumber=severityNumber,this.severityText=severityText,this.body=body,this.resource=_sharedState.resource,this.instrumentationScope=instrumentationScope,this._logRecordLimits=_sharedState.logRecordLimits,this._eventName=eventName,this.setAttributes(attributes)}setAttribute(key,value){return this._isLogRecordReadonly()||value===null?this:key.length===0?(api$4.diag.warn(`Invalid attribute key: ${key}`),this):!(0,core_1.isAttributeValue)(value)&&!(typeof value==`object`&&!Array.isArray(value)&&Object.keys(value).length>0)?(api$4.diag.warn(`Invalid attribute value set for key: ${key}`),this):(this.totalAttributesCount+=1,Object.keys(this.attributes).length>=this._logRecordLimits.attributeCountLimit&&!Object.prototype.hasOwnProperty.call(this.attributes,key)?(this.droppedAttributesCount===1&&api$4.diag.warn(`Dropping extra attributes.`),this):((0,core_1.isAttributeValue)(value)?this.attributes[key]=this._truncateToSize(value):this.attributes[key]=value,this))}setAttributes(attributes){for(let[k,v]of Object.entries(attributes))this.setAttribute(k,v);return this}setBody(body){return this.body=body,this}setEventName(eventName){return this.eventName=eventName,this}setSeverityNumber(severityNumber){return this.severityNumber=severityNumber,this}setSeverityText(severityText){return this.severityText=severityText,this}_makeReadonly(){this._isReadonly=!0}_truncateToSize(value){let limit=this._logRecordLimits.attributeValueLengthLimit;return limit<=0?(api$4.diag.warn(`Attribute value limit must be positive, got ${limit}`),value):typeof value==`string`?this._truncateToLimitUtil(value,limit):Array.isArray(value)?value.map(val=>typeof val==`string`?this._truncateToLimitUtil(val,limit):val):value}_truncateToLimitUtil(value,limit){return value.length<=limit?value:value.substring(0,limit)}_isLogRecordReadonly(){return this._isReadonly&&api$4.diag.warn(`Can not execute the operation on emitted log record`),this._isReadonly}}})),require_Logger=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.Logger=void 0;let api_1$9=__require(`@opentelemetry/api`),LogRecordImpl_1=require_LogRecordImpl();exports.Logger=class{instrumentationScope;_sharedState;constructor(instrumentationScope,_sharedState){this.instrumentationScope=instrumentationScope,this._sharedState=_sharedState}emit(logRecord){let currentContext=logRecord.context||api_1$9.context.active(),logRecordInstance=new LogRecordImpl_1.LogRecordImpl(this._sharedState,this.instrumentationScope,{context:currentContext,...logRecord});this._sharedState.activeProcessor.onEmit(logRecordInstance,currentContext),logRecordInstance._makeReadonly()}}})),require_config$1=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.reconfigureLimits=exports.loadDefaultConfig=void 0;let core_1=require_src$8();function loadDefaultConfig(){return{forceFlushTimeoutMillis:3e4,logRecordLimits:{attributeValueLengthLimit:(0,core_1.getNumberFromEnv)(`OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT`)??1/0,attributeCountLimit:(0,core_1.getNumberFromEnv)(`OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT`)??128},includeTraceContext:!0}}exports.loadDefaultConfig=loadDefaultConfig;function reconfigureLimits(logRecordLimits){return{attributeCountLimit:logRecordLimits.attributeCountLimit??(0,core_1.getNumberFromEnv)(`OTEL_LOGRECORD_ATTRIBUTE_COUNT_LIMIT`)??(0,core_1.getNumberFromEnv)(`OTEL_ATTRIBUTE_COUNT_LIMIT`)??128,attributeValueLengthLimit:logRecordLimits.attributeValueLengthLimit??(0,core_1.getNumberFromEnv)(`OTEL_LOGRECORD_ATTRIBUTE_VALUE_LENGTH_LIMIT`)??(0,core_1.getNumberFromEnv)(`OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT`)??1/0}}exports.reconfigureLimits=reconfigureLimits})),require_NoopLogRecordProcessor=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.NoopLogRecordProcessor=void 0,exports.NoopLogRecordProcessor=class{forceFlush(){return Promise.resolve()}onEmit(_logRecord,_context){}shutdown(){return Promise.resolve()}}})),require_MultiLogRecordProcessor=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.MultiLogRecordProcessor=void 0;let core_1=require_src$8();exports.MultiLogRecordProcessor=class{processors;forceFlushTimeoutMillis;constructor(processors,forceFlushTimeoutMillis){this.processors=processors,this.forceFlushTimeoutMillis=forceFlushTimeoutMillis}async forceFlush(){let timeout=this.forceFlushTimeoutMillis;await Promise.all(this.processors.map(processor=>(0,core_1.callWithTimeout)(processor.forceFlush(),timeout)))}onEmit(logRecord,context$1){this.processors.forEach(processors=>processors.onEmit(logRecord,context$1))}async shutdown(){await Promise.all(this.processors.map(processor=>processor.shutdown()))}}})),require_LoggerProviderSharedState=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.LoggerProviderSharedState=void 0;let NoopLogRecordProcessor_1=require_NoopLogRecordProcessor(),MultiLogRecordProcessor_1=require_MultiLogRecordProcessor();exports.LoggerProviderSharedState=class{resource;forceFlushTimeoutMillis;logRecordLimits;processors;loggers=new Map;activeProcessor;registeredLogRecordProcessors=[];constructor(resource,forceFlushTimeoutMillis,logRecordLimits,processors){this.resource=resource,this.forceFlushTimeoutMillis=forceFlushTimeoutMillis,this.logRecordLimits=logRecordLimits,this.processors=processors,processors.length>0?(this.registeredLogRecordProcessors=processors,this.activeProcessor=new MultiLogRecordProcessor_1.MultiLogRecordProcessor(this.registeredLogRecordProcessors,this.forceFlushTimeoutMillis)):this.activeProcessor=new NoopLogRecordProcessor_1.NoopLogRecordProcessor}}})),require_LoggerProvider=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.LoggerProvider=exports.DEFAULT_LOGGER_NAME=void 0;let api_1$8=__require(`@opentelemetry/api`),api_logs_1=require_src$6(),resources_1$1=__require(`@opentelemetry/resources`),core_1=require_src$8(),Logger_1=require_Logger(),config_1=require_config$1(),LoggerProviderSharedState_1=require_LoggerProviderSharedState();exports.DEFAULT_LOGGER_NAME=`unknown`,exports.LoggerProvider=class{_shutdownOnce;_sharedState;constructor(config={}){let mergedConfig=(0,core_1.merge)({},(0,config_1.loadDefaultConfig)(),config),resource=config.resource??(0,resources_1$1.defaultResource)();this._sharedState=new LoggerProviderSharedState_1.LoggerProviderSharedState(resource,mergedConfig.forceFlushTimeoutMillis,(0,config_1.reconfigureLimits)(mergedConfig.logRecordLimits),config?.processors??[]),this._shutdownOnce=new core_1.BindOnceFuture(this._shutdown,this)}getLogger(name,version$1,options){if(this._shutdownOnce.isCalled)return api_1$8.diag.warn(`A shutdown LoggerProvider cannot provide a Logger`),api_logs_1.NOOP_LOGGER;name||api_1$8.diag.warn(`Logger requested without instrumentation scope name.`);let loggerName=name||exports.DEFAULT_LOGGER_NAME,key=`${loggerName}@${version$1||``}:${options?.schemaUrl||``}`;return this._sharedState.loggers.has(key)||this._sharedState.loggers.set(key,new Logger_1.Logger({name:loggerName,version:version$1,schemaUrl:options?.schemaUrl},this._sharedState)),this._sharedState.loggers.get(key)}forceFlush(){return this._shutdownOnce.isCalled?(api_1$8.diag.warn(`invalid attempt to force flush after LoggerProvider shutdown`),this._shutdownOnce.promise):this._sharedState.activeProcessor.forceFlush()}shutdown(){return this._shutdownOnce.isCalled?(api_1$8.diag.warn(`shutdown may only be called once per LoggerProvider`),this._shutdownOnce.promise):this._shutdownOnce.call()}_shutdown(){return this._sharedState.activeProcessor.shutdown()}}})),require_ConsoleLogRecordExporter=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.ConsoleLogRecordExporter=void 0;let core_1=require_src$8();exports.ConsoleLogRecordExporter=class{export(logs,resultCallback){this._sendLogRecords(logs,resultCallback)}shutdown(){return Promise.resolve()}_exportInfo(logRecord){return{resource:{attributes:logRecord.resource.attributes},instrumentationScope:logRecord.instrumentationScope,timestamp:(0,core_1.hrTimeToMicroseconds)(logRecord.hrTime),traceId:logRecord.spanContext?.traceId,spanId:logRecord.spanContext?.spanId,traceFlags:logRecord.spanContext?.traceFlags,severityText:logRecord.severityText,severityNumber:logRecord.severityNumber,body:logRecord.body,attributes:logRecord.attributes}}_sendLogRecords(logRecords,done){for(let logRecord of logRecords)console.dir(this._exportInfo(logRecord),{depth:3});done?.({code:core_1.ExportResultCode.SUCCESS})}}})),require_SimpleLogRecordProcessor=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.SimpleLogRecordProcessor=void 0;let core_1=require_src$8();exports.SimpleLogRecordProcessor=class{_exporter;_shutdownOnce;_unresolvedExports;constructor(_exporter){this._exporter=_exporter,this._shutdownOnce=new core_1.BindOnceFuture(this._shutdown,this),this._unresolvedExports=new Set}onEmit(logRecord){if(this._shutdownOnce.isCalled)return;let doExport=()=>core_1.internal._export(this._exporter,[logRecord]).then(result=>{result.code!==core_1.ExportResultCode.SUCCESS&&(0,core_1.globalErrorHandler)(result.error??Error(`SimpleLogRecordProcessor: log record export failed (status ${result})`))}).catch(core_1.globalErrorHandler);if(logRecord.resource.asyncAttributesPending){let exportPromise=logRecord.resource.waitForAsyncAttributes?.().then(()=>(this._unresolvedExports.delete(exportPromise),doExport()),core_1.globalErrorHandler);exportPromise!=null&&this._unresolvedExports.add(exportPromise)}else doExport()}async forceFlush(){await Promise.all(Array.from(this._unresolvedExports))}shutdown(){return this._shutdownOnce.call()}_shutdown(){return this._exporter.shutdown()}}})),require_InMemoryLogRecordExporter=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.InMemoryLogRecordExporter=void 0;let core_1=require_src$8();exports.InMemoryLogRecordExporter=class{_finishedLogRecords=[];_stopped=!1;export(logs,resultCallback){if(this._stopped)return resultCallback({code:core_1.ExportResultCode.FAILED,error:Error(`Exporter has been stopped`)});this._finishedLogRecords.push(...logs),resultCallback({code:core_1.ExportResultCode.SUCCESS})}shutdown(){return this._stopped=!0,this.reset(),Promise.resolve()}getFinishedLogRecords(){return this._finishedLogRecords}reset(){this._finishedLogRecords=[]}}})),require_BatchLogRecordProcessorBase=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.BatchLogRecordProcessorBase=void 0;let api_1$7=__require(`@opentelemetry/api`),core_1=require_src$8();exports.BatchLogRecordProcessorBase=class{_exporter;_maxExportBatchSize;_maxQueueSize;_scheduledDelayMillis;_exportTimeoutMillis;_isExporting=!1;_finishedLogRecords=[];_timer;_shutdownOnce;constructor(_exporter,config){this._exporter=_exporter,this._maxExportBatchSize=config?.maxExportBatchSize??(0,core_1.getNumberFromEnv)(`OTEL_BLRP_MAX_EXPORT_BATCH_SIZE`)??512,this._maxQueueSize=config?.maxQueueSize??(0,core_1.getNumberFromEnv)(`OTEL_BLRP_MAX_QUEUE_SIZE`)??2048,this._scheduledDelayMillis=config?.scheduledDelayMillis??(0,core_1.getNumberFromEnv)(`OTEL_BLRP_SCHEDULE_DELAY`)??5e3,this._exportTimeoutMillis=config?.exportTimeoutMillis??(0,core_1.getNumberFromEnv)(`OTEL_BLRP_EXPORT_TIMEOUT`)??3e4,this._shutdownOnce=new core_1.BindOnceFuture(this._shutdown,this),this._maxExportBatchSize>this._maxQueueSize&&(api_1$7.diag.warn(`BatchLogRecordProcessor: maxExportBatchSize must be smaller or equal to maxQueueSize, setting maxExportBatchSize to match maxQueueSize`),this._maxExportBatchSize=this._maxQueueSize)}onEmit(logRecord){this._shutdownOnce.isCalled||this._addToBuffer(logRecord)}forceFlush(){return this._shutdownOnce.isCalled?this._shutdownOnce.promise:this._flushAll()}shutdown(){return this._shutdownOnce.call()}async _shutdown(){this.onShutdown(),await this._flushAll(),await this._exporter.shutdown()}_addToBuffer(logRecord){this._finishedLogRecords.length>=this._maxQueueSize||(this._finishedLogRecords.push(logRecord),this._maybeStartTimer())}_flushAll(){return new Promise((resolve$1,reject)=>{let promises=[],batchCount=Math.ceil(this._finishedLogRecords.length/this._maxExportBatchSize);for(let i=0;i<batchCount;i++)promises.push(this._flushOneBatch());Promise.all(promises).then(()=>{resolve$1()}).catch(reject)})}_flushOneBatch(){return this._clearTimer(),this._finishedLogRecords.length===0?Promise.resolve():new Promise((resolve$1,reject)=>{(0,core_1.callWithTimeout)(this._export(this._finishedLogRecords.splice(0,this._maxExportBatchSize)),this._exportTimeoutMillis).then(()=>resolve$1()).catch(reject)})}_maybeStartTimer(){if(this._isExporting)return;let flush=()=>{this._isExporting=!0,this._flushOneBatch().then(()=>{this._isExporting=!1,this._finishedLogRecords.length>0&&(this._clearTimer(),this._maybeStartTimer())}).catch(e=>{this._isExporting=!1,(0,core_1.globalErrorHandler)(e)})};if(this._finishedLogRecords.length>=this._maxExportBatchSize)return flush();this._timer===void 0&&(this._timer=setTimeout(()=>flush(),this._scheduledDelayMillis),typeof this._timer!=`number`&&this._timer.unref())}_clearTimer(){this._timer!==void 0&&(clearTimeout(this._timer),this._timer=void 0)}_export(logRecords){let doExport=()=>core_1.internal._export(this._exporter,logRecords).then(result=>{result.code!==core_1.ExportResultCode.SUCCESS&&(0,core_1.globalErrorHandler)(result.error??Error(`BatchLogRecordProcessor: log record export failed (status ${result})`))}).catch(core_1.globalErrorHandler),pendingResources=logRecords.map(logRecord=>logRecord.resource).filter(resource=>resource.asyncAttributesPending);return pendingResources.length===0?doExport():Promise.all(pendingResources.map(resource=>resource.waitForAsyncAttributes?.())).then(doExport,core_1.globalErrorHandler)}}})),require_BatchLogRecordProcessor=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.BatchLogRecordProcessor=void 0;let BatchLogRecordProcessorBase_1=require_BatchLogRecordProcessorBase();exports.BatchLogRecordProcessor=class extends BatchLogRecordProcessorBase_1.BatchLogRecordProcessorBase{onShutdown(){}}})),require_node$2=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.BatchLogRecordProcessor=void 0;var BatchLogRecordProcessor_1=require_BatchLogRecordProcessor();Object.defineProperty(exports,`BatchLogRecordProcessor`,{enumerable:!0,get:function(){return BatchLogRecordProcessor_1.BatchLogRecordProcessor}})})),require_platform$2=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.BatchLogRecordProcessor=void 0;var node_1=require_node$2();Object.defineProperty(exports,`BatchLogRecordProcessor`,{enumerable:!0,get:function(){return node_1.BatchLogRecordProcessor}})})),require_src$5=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.BatchLogRecordProcessor=exports.InMemoryLogRecordExporter=exports.SimpleLogRecordProcessor=exports.ConsoleLogRecordExporter=exports.LoggerProvider=void 0;var LoggerProvider_1=require_LoggerProvider();Object.defineProperty(exports,`LoggerProvider`,{enumerable:!0,get:function(){return LoggerProvider_1.LoggerProvider}});var ConsoleLogRecordExporter_1=require_ConsoleLogRecordExporter();Object.defineProperty(exports,`ConsoleLogRecordExporter`,{enumerable:!0,get:function(){return ConsoleLogRecordExporter_1.ConsoleLogRecordExporter}});var SimpleLogRecordProcessor_1=require_SimpleLogRecordProcessor();Object.defineProperty(exports,`SimpleLogRecordProcessor`,{enumerable:!0,get:function(){return SimpleLogRecordProcessor_1.SimpleLogRecordProcessor}});var InMemoryLogRecordExporter_1=require_InMemoryLogRecordExporter();Object.defineProperty(exports,`InMemoryLogRecordExporter`,{enumerable:!0,get:function(){return InMemoryLogRecordExporter_1.InMemoryLogRecordExporter}});var platform_1=require_platform$2();Object.defineProperty(exports,`BatchLogRecordProcessor`,{enumerable:!0,get:function(){return platform_1.BatchLogRecordProcessor}})})),require_logs$2=__commonJSMin((exports=>{Object.defineProperty(exports,`__esModule`,{value:!0}),exports.DBOSConsoleLogger=exports.DBOSContextualLogger=exports.GlobalLogger=void 0;let utils_1=require_utils$3();var SeverityNumber;(function(SeverityNumber){SeverityNumber[SeverityNumber.UNSPECIFIED=0]=`UNSPECIFIED`,SeverityNumber[SeverityNumber.TRACE=1]=`TRACE`,SeverityNumber[SeverityNumber.TRACE2=2]=`TRACE2`,SeverityNumber[SeverityNumber.TRACE3=3]=`TRACE3`,SeverityNumber[SeverityNumber.TRACE4=4]=`TRACE4`,SeverityNumber[SeverityNumber.DEBUG=5]=`DEBUG`,SeverityNumber[SeverityNumber.DEBUG2=6]=`DEBUG2`,SeverityNumber[SeverityNumber.DEBUG3=7]=`DEBUG3`,SeverityNumber[SeverityNumber.DEBUG4=8]=`DEBUG4`,SeverityNumber[SeverityNumber.INFO=9]=`INFO`,SeverityNumber[SeverityNumber.INFO2=10]=`INFO2`,SeverityNumber[SeverityNumber.INFO3=11]=`INFO3`,SeverityNumber[SeverityNumber.INFO4=12]=`INFO4`,SeverityNumber[SeverityNumber.WARN=13]=`WARN`,SeverityNumber[SeverityNumber.WARN2=14]=`WARN2`,SeverityNumber[SeverityNumber.WARN3=15]=`WARN3`,SeverityNumber[SeverityNumber.WARN4=16]=`WARN4`,SeverityNumber[SeverityNumber.ERROR=17]=`ERROR`,SeverityNumber[SeverityNumber.ERROR2=18]=`ERROR2`,SeverityNumber[SeverityNumber.ERROR3=19]=`ERROR3`,SeverityNumber[SeverityNumber.ERROR4=20]=`ERROR4`,SeverityNumber[SeverityNumber.FATAL=21]=`FATAL`,SeverityNumber[SeverityNumber.FATAL2=22]=`FATAL2`,SeverityNumber[SeverityNumber.FATAL3=23]=`FATAL3`,SeverityNumber[SeverityNumber.FATAL4=24]=`FATAL4`})(SeverityNumber||={}),exports.GlobalLogger=class{telemetryCollector;logger;addContextMetadata;isLogging=!1;constructor(telemetryCollector,config,appName=`dbos`){if(this.telemetryCollector=telemetryCollector,this.addContextMetadata=config?.addContextMetadata||!1,!utils_1.globalParams.enableOTLP){this.logger=new DBOSConsoleLogger(config??{});return}let TransportStream=__require(`winston-transport`);class OTLPLogQueueTransport extends TransportStream{telemetryCollector;name=`OTLPLogQueueTransport`;otelLogger;applicationID;executorID;constructor(telemetryCollector$1,logLevel){super(),this.telemetryCollector=telemetryCollector$1,this.level=logLevel;let{LoggerProvider}=require_src$5(),logRecordProcessor={forceFlush:async()=>{},onEmit(logRecord){telemetryCollector$1.push(logRecord)},shutdown:async()=>{}};this.otelLogger=new LoggerProvider({resource:{attributes:{"service.name":appName}},processors:[logRecordProcessor]}).getLogger(`dbos-logger`),this.applicationID=utils_1.globalParams.appID,this.executorID=utils_1.globalParams.executorID}log(info,callback){let{level,message,stack,span}=info,levelToSeverityNumber={error:SeverityNumber.ERROR,warn:SeverityNumber.WARN,info:SeverityNumber.INFO,debug:SeverityNumber.DEBUG};this.otelLogger.emit({severityNumber:levelToSeverityNumber[level],severityText:level,body:message,timestamp:performance.now(),observedTimestamp:performance.now(),attributes:{...span?.attributes,traceId:span?.spanContext()?.traceId,spanId:span?.spanContext()?.spanId,stack,applicationID:this.applicationID,applicationVersion:utils_1.globalParams.appVersion,executorID:this.executorID}}),callback()}}let{transports,createLogger}=__require(`winston`),winstonTransports=[];winstonTransports.push(new transports.Console({format:getConsoleFormat(),level:config?.logLevel||`info`,silent:config?.silent||!1,forceConsole:config?.forceConsole||!1}));let otlpTransport;utils_1.globalParams.enableOTLP&&this.telemetryCollector?.exporter&&(otlpTransport=new OTLPLogQueueTransport(this.telemetryCollector,config?.logLevel||`info`),winstonTransports.push(otlpTransport)),this.logger=createLogger({transports:winstonTransports}),utils_1.globalParams.enableOTLP&&process.env.DBOS__CAPTURE_STD!==`false`&&this.telemetryCollector?.exporter&&(0,utils_1.interceptStreams)((msg,stream)=>{stream===`stdout`?this.isLogging||otlpTransport?.log({level:`info`,message:msg.trim()},()=>{}):this.isLogging||otlpTransport?.log({level:`error`,message:msg.trim(),stack:Error().stack},()=>{})})}info(logEntry,metadata){this.isLogging=!0,typeof logEntry==`string`?this.logger.info(logEntry,metadata):this.logger.info(utils_1.DBOSJSON.stringify(logEntry),metadata),this.isLogging=!1}debug(logEntry,metadata){this.isLogging=!0,typeof logEntry==`string`?this.logger.debug(logEntry,metadata):this.logger.debug(utils_1.DBOSJSON.stringify(logEntry),metadata),this.isLogging=!1}warn(logEntry,metadata){this.isLogging=!0,typeof logEntry==`string`?this.logger.warn(logEntry,metadata):this.logger.warn(utils_1.DBOSJSON.stringify(logEntry),metadata),this.isLogging=!1}error(inputError,metadata){this.isLogging=!0,inputError instanceof Error?this.logger.error(inputError.message,{...metadata,stack:inputError.stack}):typeof inputError==`string`?this.logger.error(inputError,{...metadata,stack:Error().stack}):this.logger.error(utils_1.DBOSJSON.stringify(inputError),{...metadata,stack:Error().stack}),this.isLogging=!1}async destroy(){await this.telemetryCollector?.destroy()}},exports.DBOSContextualLogger=class{globalLogger;ctx;includeContextMetadata;constructor(globalLogger,ctx){this.globalLogger=globalLogger,this.ctx=ctx,this.includeContextMetadata=this.globalLogger.addContextMetadata}info(logEntry,metadata){this.globalLogger.info(logEntry,{includeContextMetadata:this.includeContextMetadata,span:this.ctx(),...metadata})}debug(logEntry,metadata){this.globalLogger.debug(logEntry,{includeContextMetadata:this.includeContextMetadata,span:this.ctx(),...metadata})}warn(logEntry,metadata){this.globalLogger.warn(logEntry,{includeContextMetadata:this.includeContextMetadata,span:this.ctx(),...metadata})}error(inputError,metadata){this.globalLogger.error(inputError,{includeContextMetadata:this.includeContextMetadata,span:this.ctx(),...metadata})}};var DBOSConsoleLogger=class{config;constructor(config){this.config=config}info(logEntry,_metadata){console.log(logEntry)}debug(logEntry,_metadata){this.config.logLevel===`debug`&&console.debug(logEntry)}warn(logEntry,_metadata){console.warn(logEntry)}error(inputError,metadata){inputError instanceof Error?console.error(inputError):metadata?.stack?console.error(inputError,`
4
4
  `,metadata.stack):console.error(inputError)}};exports.DBOSConsoleLogger=DBOSConsoleLogger;function getConsoleFormat(){let{format}=__require(`winston`);return format.combine(format.errors({stack:!0}),format.timestamp(),format.colorize(),format.printf(info=>{let{timestamp,level,message,stack}=info,applicationVersion=utils_1.globalParams.appVersion,ts=typeof timestamp==`string`?timestamp.slice(0,19).replace(`T`,` `):void 0,formattedStack=typeof stack==`string`?stack?.split(`
5
5
  `).slice(1).join(`
@@ -335,4 +335,4 @@ export default async function seed(container: AppOS.Container) {}
335
335
  `;async function exists(filePath){try{return await fs$1.access(filePath),!0}catch{return!1}}async function findLatestSnapshot(migrationsFolder){if(!await exists(migrationsFolder))return null;let migrationDirs=(await fs$1.readdir(migrationsFolder,{withFileTypes:!0})).filter(e=>e.isDirectory()&&/^\d{14}_/.test(e.name)).map(e=>e.name).sort().reverse();if(migrationDirs.length===0)return null;let snapshotPath=path.join(migrationsFolder,migrationDirs[0],`snapshot.json`);if(!await exists(snapshotPath))return null;let content=await fs$1.readFile(snapshotPath,`utf-8`);return JSON.parse(content)}async function ensureDatabaseScaffolding(dbName){let dbFolder=path.join(process.cwd(),APPOS_DIR,DATABASES_DIR,dbName);await exists(dbFolder)||await fs$1.mkdir(dbFolder,{recursive:!0});let schemaPath=path.join(dbFolder,`schema.ts`);await exists(schemaPath)||await fs$1.writeFile(schemaPath,SCHEMA_TEMPLATE(dbName));let relationsPath=path.join(dbFolder,`relations.ts`);await exists(relationsPath)||await fs$1.writeFile(relationsPath,RELATIONS_TEMPLATE(dbName));let seedPath=path.join(dbFolder,`seed.ts`);await exists(seedPath)||await fs$1.writeFile(seedPath,SEED_TEMPLATE(dbName));let schemaMigrationsFolder=path.join(dbFolder,`schema-migrations`);await exists(schemaMigrationsFolder)||await fs$1.mkdir(schemaMigrationsFolder,{recursive:!0});let dataMigrationsFolder=path.join(dbFolder,`data-migrations`);await exists(dataMigrationsFolder)||await fs$1.mkdir(dataMigrationsFolder,{recursive:!0})}async function generateDataMigrations(opts){let{ctx}=opts,{container}=ctx,databaseNames=Object.keys(container.db);if(ctx.info(`Generating data migration`),databaseNames.length===0){ctx.info(`No databases available`);return}let selectedDb=await ctx.choice({message:`Select database`,options:databaseNames.map(name=>({value:name,label:name}))});ctx.isCancel(selectedDb)&&ctx.cancel();let dbName=selectedDb;await ensureDatabaseScaffolding(dbName);let{migrationsFolder}=defineMigrationOpts(dbName,`data`),migrationFile=await ctx.task(dbName,async()=>{let migrationTag=`${new Date().toISOString().replace(/[-:T]/g,``).slice(0,14)}_${generateMigrationName()}`,migrationFolder=path.join(migrationsFolder,migrationTag);await fs$1.mkdir(migrationFolder,{recursive:!0});let file=path.join(migrationFolder,`migration.sql`);return await fs$1.writeFile(file,`-- Write your data migration SQL here
336
336
  `),file});ctx.success(migrationFile)}async function generateMigrations(opts){let{ctx,migrationType}=opts,{container}=ctx;if(migrationType===`data`){await generateDataMigrations(opts);return}let databaseNames=Object.keys(container.db);if(ctx.info(`Generating ${migrationType} migrations`),databaseNames.length===0){ctx.info(`Nothing to generate`);return}for(let name of databaseNames)await ensureDatabaseScaffolding(name);let createdAny=!1;for(let name of databaseNames){let schemaPath=path.join(process.cwd(),APPOS_DIR,DATABASES_DIR,name,`schema.ts`),{migrationsFolder}=defineMigrationOpts(name,migrationType);try{let schemaModule=await import(schemaPath),schema=schemaModule.default||schemaModule,prevJson=await findLatestSnapshot(migrationsFolder)??await generateDrizzleJson({}),currentJson=await generateDrizzleJson(schema),migrationStatements=await generateMigration(prevJson,currentJson);if(!migrationStatements||migrationStatements.length===0){ctx.taskStatus(name,`no changes`);continue}let migrationFile=await ctx.task(name,async()=>{let migrationTag=`${new Date().toISOString().replace(/[-:T]/g,``).slice(0,14)}_${generateMigrationName()}`,migrationFolder=path.join(migrationsFolder,migrationTag);await fs$1.mkdir(migrationFolder,{recursive:!0});let sqlContent=`${migrationStatements.join(`;
337
337
 
338
- `)};`,file=path.join(migrationFolder,`migration.sql`),snapshotFile=path.join(migrationFolder,`snapshot.json`);return await fs$1.writeFile(file,sqlContent),await fs$1.writeFile(snapshotFile,JSON.stringify(currentJson,null,2)),file});ctx.success(migrationFile),createdAny=!0}catch(error){ctx.fail(error instanceof Error?error.message:String(error))}}createdAny||ctx.info(`Nothing to generate`)}async function runMigrations(opts){let{ctx,migrationType}=opts,{container}=ctx,databaseNames=Object.keys(container.db),originalLogLevel=container.logger.level;container.logger.level=`silent`,migrationType===`schema`&&await(0,import_system_database.ensureSystemDatabase)(container.worker.dbUrl,container.logger);let hasAnyMigrations=(await Promise.all(databaseNames.map(async name=>{let{migrationsFolder}=defineMigrationOpts(name,migrationType);return exists(migrationsFolder)}))).some(Boolean);if(databaseNames.length===0||!hasAnyMigrations){ctx.info(`Nothing to migrate`),container.logger.level=originalLogLevel;return}for(let name of databaseNames){let db=container.db[name],migrationOpts=defineMigrationOpts(name,migrationType);if(await exists(migrationOpts.migrationsFolder))try{await ctx.task(name,async()=>{await migrate(db,migrationOpts)})}catch(error){ctx.fail(error instanceof Error?error.message:String(error))}}container.logger.level=originalLogLevel}async function runSeeds(opts){let{ctx}=opts,{container}=ctx,databaseNames=Object.keys(container.db);if(databaseNames.length===0){ctx.info(`Nothing to seed`);return}for(let name of databaseNames)await ensureDatabaseScaffolding(name);for(let name of databaseNames){let seedPath=path.join(process.cwd(),APPOS_DIR,DATABASES_DIR,name,`seed.ts`);try{await ctx.task(name,async()=>{let seedModule=await import(seedPath),seedFn=seedModule.default||seedModule.seed;if(typeof seedFn!=`function`)throw Error(`seed file does not export a function`);await seedFn(container)})}catch(error){ctx.fail(error instanceof Error?error.message:String(error))}}}var gen_default$1=defineCommand({description:`Generate database data migrations`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`db:data:gen`),await generateMigrations({ctx,migrationType:`data`}),await ctx.cleanup(),ctx.outro()}}),migrate_default$1=defineCommand({description:`Run pending database data migrations`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`db:data:migrate`),await runMigrations({ctx,migrationType:`data`}),await ctx.cleanup(),ctx.outro()}}),gen_default=defineCommand({description:`Generate database schema migrations from schema changes`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`db:schema:gen`),await generateMigrations({ctx,migrationType:`schema`}),await ctx.cleanup(),ctx.outro()}}),migrate_default=defineCommand({description:`Run pending database schema migrations`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`db:schema:migrate`),await runMigrations({ctx,migrationType:`schema`}),await ctx.cleanup(),ctx.outro()}}),seed_default=defineCommand({description:`Seed databases with initial data`,args:z.tuple([]),opts:z.object({}),async run(ctx){await runSeeds({ctx}),await ctx.cleanup()}}),down_default=defineCommand({description:`Teardown the infrastructure`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`down`);try{await ctx.spinner(`Stopping containers`,()=>ctx.exec(`docker`,[`compose`,`--profile=infra`,`down`,`--remove-orphans`,`--timeout=0`]))}catch(error){ctx.fail(error instanceof Error?error.message:String(error))}ctx.outro()}}),preview_default=defineCommand({description:`Preview the application`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`preview`),ctx.step(`Starting containers (Ctrl+C to stop)`);let proc=spawn(`docker`,[`compose`,`--profile=app`,`up`,`--build`],{stdio:`inherit`,cwd:process.cwd()}),isShuttingDown=!1,cleanup=async()=>{if(!isShuttingDown){isShuttingDown=!0,proc.kill(`SIGTERM`),ctx.step(`Stopping containers`);try{await ctx.exec(`docker`,[`compose`,`--profile=app`,`down`,`--remove-orphans`,`--timeout=0`])}catch{}process.exit(0)}};process.on(`SIGINT`,cleanup),process.on(`SIGTERM`,cleanup),proc.on(`close`,()=>{isShuttingDown||cleanup()}),await new Promise(()=>{})}}),version=`0.3.0-0`;const runtimeInfo$1=`(AppOS v${version} | Node ${process.version})`;var repl_default=defineCommand({description:`Start an interactive REPL with container access`,aliases:[`r`],args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`repl`);let{container}=ctx,available=[],dbNames=Object.keys(container.db);dbNames.length>0&&available.push(`container.db.{${dbNames.join(`, `)}}`);let cacheNames=Object.keys(container.cache);cacheNames.length>0&&available.push(`container.cache.{${cacheNames.join(`, `)}}`);let otherKeys=Object.keys(container).filter(k=>k!==`db`&&k!==`cache`).map(k=>`container.${k}`);available.push(...otherKeys),ctx.info(`Starting REPL ${runtimeInfo$1}`),ctx.info(`Available: ${available.join(`, `)}`),ctx.line(``);let replServer=repl.start({prompt:`appos(${container.config.APP_NAME})> `,useColors:!0,useGlobal:!0,breakEvalOnSigint:!0});replServer.context.container=container,replServer.on(`exit`,async()=>{await ctx.cleanup(),ctx.info(`Bye`),process.exit(0)}),await new Promise(()=>{})}}),reset_default=defineCommand({description:`Reset the infrastructure`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`reset`);try{await ctx.spinner(`Stopping containers`,()=>ctx.exec(`docker`,[`compose`,`--profile=infra`,`down`,`--remove-orphans`,`--timeout=0`]))}catch(error){ctx.fail(error instanceof Error?error.message:String(error))}try{await ctx.spinner(`Starting containers`,()=>ctx.exec(`docker`,[`compose`,`--profile=infra`,`up`,`--wait`]))}catch(error){ctx.fail(error instanceof Error?error.message:String(error))}ctx.step(`Running schema migrations`),await runMigrations({ctx,migrationType:`schema`}),ctx.step(`Seeding databases`),await runSeeds({ctx}),await ctx.cleanup(),ctx.outro()}});function getErrorStatus(error){if(error&&typeof error==`object`&&`status`in error){let status=error.status;if(typeof status==`number`)return status}return error instanceof SyntaxError?400:500}function defineErrorHandlerMiddleware(logger){return(error,req,res,next)=>{let userAgent=req.headers[`user-agent`];if(logger.error({error:error.message,stack:error.stack,url:req.url,method:req.method,userAgent:typeof userAgent==`string`?userAgent:userAgent?.[0],ip:req.ip},`Unhandled request error`),res.headersSent)return next(error);let isDevelopment=process.env.NODE_ENV!==`production`;res.status(getErrorStatus(error)).json({error:`Internal server error`,...isDevelopment&&{message:error.message,stack:error.stack}})}}function defineHealthMiddleware(path$2=`/health`){return(req,res,next)=>{if(req.path!==path$2)return next();res.status(200).json({status:`healthy`,timestamp:new Date().toISOString(),uptime:process.uptime()})}}function defineI18nMiddleware(i18n){return(req,res,next)=>{let acceptLanguage=req.headers[`accept-language`],detectedLng=`en`;if(acceptLanguage){let parsed=acceptLanguage.split(`,`)[0].split(`;`)[0].trim();parsed&&parsed.length>0&&(detectedLng=parsed)}req.dir=i18n.dir(detectedLng),req.language=detectedLng,req.languages=i18n.languages,req.t=i18n.getFixedT(detectedLng),next()}}var instrumentation_exports={};import*as import__opentelemetry_api from"@opentelemetry/api";__reExport(instrumentation_exports,import__opentelemetry_api),register(`@opentelemetry/instrumentation/hook.mjs`,import.meta.url);const service={name:process.env.APP_NAME||`appos`,version:process.env.APP_VERSION||`development`};new NodeSDK({resource:resourceFromAttributes({[ATTR_SERVICE_NAME]:service.name,[ATTR_SERVICE_VERSION]:service.version}),spanProcessors:[new BatchSpanProcessor(new OTLPTraceExporter({url:process.env.OTEL_EXPORTER_OTLP_ENDPOINT||`http://localhost:4318/v1/traces`,headers:process.env.OTEL_EXPORTER_OTLP_HEADERS?JSON.parse(process.env.OTEL_EXPORTER_OTLP_HEADERS):void 0}))],instrumentations:[getNodeAutoInstrumentations({"@opentelemetry/instrumentation-fs":{enabled:!1},"@opentelemetry/instrumentation-dns":{enabled:!1}}),new PinoInstrumentation({logHook:(_span,record)=>{record[`service.name`]=service.name}})]}).start();const CF_COUNTRY_HEADER=`cf-ipcountry`;function extractRequestMetadata(req,config){config?.injectCountry&&!req.headers[CF_COUNTRY_HEADER]&&(req.headers[CF_COUNTRY_HEADER]=config.injectCountry);let forwardedFor=req.headers[`x-forwarded-for`],ipAddress;ipAddress=typeof forwardedFor==`string`?forwardedFor.split(`,`)[0].trim():Array.isArray(forwardedFor)&&forwardedFor.length>0?forwardedFor[0].split(`,`)[0].trim():req.socket.remoteAddress||``;let userAgent=req.headers[`user-agent`]||``,country=req.headers[CF_COUNTRY_HEADER]||``;return{ipAddress,userAgent,country}}function defineRequestLoggerMiddleware(logger,config){let tracer;try{tracer=instrumentation_exports.trace.getTracer(`request-logger`)}catch(error){logger.warn({error},`Failed to initialize OpenTelemetry tracer`),tracer=null}return(req,res,next)=>{let metadata=extractRequestMetadata(req,config);req.metadata=metadata;let startTime=Date.now(),span=null,requestId;if(tracer)try{span=tracer.startSpan(`${req.method} ${req.path}`,{kind:instrumentation_exports.SpanKind.SERVER,attributes:{"http.method":req.method,"http.url":req.url,"http.target":req.path,"http.host":(typeof req.headers.host==`string`?req.headers.host:req.headers[`:authority`])||`unknown`,"http.scheme":req.protocol,"http.user_agent":metadata.userAgent||`unknown`,"http.client_ip":metadata.ipAddress,"http.client_country":metadata.country}}),requestId=span.spanContext().traceId}catch(error){logger.warn({error},`Failed to create OpenTelemetry span`),span=null,requestId=crypto.randomUUID()}else logger.info(`OpenTelemetry tracer not available, skipping span creation`),span=null,requestId=crypto.randomUUID();let ctx=span?instrumentation_exports.trace.setSpan(instrumentation_exports.context.active(),span):instrumentation_exports.context.active(),skipLogging=(path$2=>path$2.startsWith(`/@`)||path$2.startsWith(`/node_modules/`)||path$2.startsWith(`/assets/`)||path$2.startsWith(`/public/`)||path$2.match(/\.(js|css|ico|png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot|map)$/)||path$2.includes(`/locales/`)||path$2.endsWith(`.ts`)||path$2.endsWith(`.tsx`)||path$2.endsWith(`.json`))(req.path);res.setHeader(`X-Request-Id`,requestId),req.requestId=requestId,res.on(`finish`,()=>{let duration=Date.now()-startTime;if(span)try{span.setAttributes({"http.status_code":res.statusCode,"http.response_content_length":res.get(`content-length`)||0}),res.statusCode>=400?span.setStatus({code:instrumentation_exports.SpanStatusCode.ERROR,message:`HTTP ${res.statusCode}`}):span.setStatus({code:instrumentation_exports.SpanStatusCode.OK}),span.end()}catch(error){logger.warn({error},`Failed to update OpenTelemetry span`)}skipLogging||instrumentation_exports.context.with(ctx,()=>{logger.info({requestId,method:req.method,url:req.path,status:res.statusCode,duration:`${duration}ms`},`Request completed`)})}),res.on(`close`,()=>{if(!(res.writableEnded||res.finished)){let duration=Date.now()-startTime;if(span)try{span.setStatus({code:instrumentation_exports.SpanStatusCode.ERROR,message:`Request closed unexpectedly`}),span.end()}catch(error){logger.warn({error},`Failed to update OpenTelemetry span`)}skipLogging||instrumentation_exports.context.with(ctx,()=>{logger.warn({requestId,method:req.method,url:req.path,duration:`${duration}ms`},`Request closed unexpectedly`)})}});let originalNext=next;next=error=>{if(error){let duration=Date.now()-startTime;if(span)try{span.recordException(error),span.setStatus({code:instrumentation_exports.SpanStatusCode.ERROR,message:error instanceof Error?error.message:String(error)}),span.end()}catch(spanError){logger.warn({error:spanError},`Failed to record exception in span`)}skipLogging||instrumentation_exports.context.with(ctx,()=>{logger.error({requestId,method:req.method,url:req.path,status:res.statusCode||500,duration:`${duration}ms`,error:error instanceof Error?error.message:String(error)},`Request failed`)})}originalNext(error)},instrumentation_exports.context.with(ctx,()=>next())}}function defineShutdownMiddleware(logger,isShuttingDown){return(req,res,next)=>{if(isShuttingDown()){logger.info({url:req.url,method:req.method},`Rejecting request during shutdown`),res.status(503).set(`Connection`,`close`).json({error:`Server is shutting down`});return}next()}}function defineTimeoutMiddleware(logger,timeoutMs=3e4){return(req,res,next)=>{let timeoutFired=!1,timeoutId=setTimeout(()=>{timeoutFired=!0,logger.warn({url:req.url,method:req.method,timeout:timeoutMs},`Request timeout`),res.headersSent||res.status(408).json({error:`Request timeout`}),res.removeListener(`finish`,clearTimeoutHandler),res.removeListener(`close`,clearTimeoutHandler)},timeoutMs),clearTimeoutHandler=()=>{timeoutFired||clearTimeout(timeoutId)};res.on(`finish`,clearTimeoutHandler),res.on(`close`,clearTimeoutHandler),next()}}function getMiddlewareName(filename){return camelCase(basename(filename,`.ts`).replace(/^\d+_/,``))}async function loadMiddleware(middlewareDir,container,app){try{await fs$1.access(middlewareDir)}catch{return}let files=[];for await(let file of glob(`${middlewareDir}/**/*.${FILE_EXT}`))!file.endsWith(`.test.ts`)&&!file.endsWith(`.spec.ts`)&&!file.endsWith(`.test.js`)&&!file.endsWith(`.spec.js`)&&files.push(file);files.sort((a,b)=>basename(a).localeCompare(basename(b)));for(let file of files)try{let middleware=(await import(file)).default;if(middleware&&typeof middleware.handler==`function`){let name=middleware.name??getMiddlewareName(file);container.logger.debug({name,file},`Loading user middleware`),app.use(middleware.handler(container))}else container.logger.warn({file},`Middleware file missing default export with handler function`)}catch(err){throw container.logger.error({file,error:err instanceof Error?err.message:err},`Failed to load middleware`),err}}const outputDir=resolve(PUBLIC_DIR,`openapi`);function extractVersion(path$2){return path$2.match(/^\/(v\d+)/)?.[1]}function convertToOpenAPIPath(reactRouterPath){return reactRouterPath.replace(/:(\w+)/g,`{$1}`)}function buildPathObject(path$2,spec){let openApiPath=convertToOpenAPIPath(path$2),methodConfig={summary:spec.summary,description:spec.description};(spec.request?.params||spec.request?.query||spec.request?.headers)&&(methodConfig.requestParams={},spec.request.params&&(methodConfig.requestParams.path=spec.request.params),spec.request.query&&(methodConfig.requestParams.query=spec.request.query),spec.request.headers&&(methodConfig.requestParams.header=spec.request.headers)),spec.request?.body&&(methodConfig.requestBody={content:{"application/json":{schema:spec.request.body}}}),methodConfig.responses={};for(let[statusCode,response]of Object.entries(spec.responses))methodConfig.responses[statusCode]={description:response.description,content:{"application/json":{schema:response.content[`application/json`].schema}}};return{path:openApiPath,config:methodConfig}}function generateOpenAPIDocument(routes,version$1,config){let paths={};for(let route of routes){if(route.version!==version$1)continue;let apiPath=route.path.replace(`/${version$1}`,``)||`/`;for(let spec of route.openAPISpec){let{path:openApiPath,config:methodConfig}=buildPathObject(apiPath,spec);paths[openApiPath]||(paths[openApiPath]={}),paths[openApiPath][spec.method]=methodConfig}}return createDocument({openapi:`3.1.0`,info:config?.info||{title:`API ${version$1.toUpperCase()}`,version:version$1.replace(`v`,``),description:`OpenAPI specification for ${version$1} API`},servers:config?.servers||[{url:`http://localhost:8000/${version$1}`,description:process.env.NODE_ENV===`production`?`Production server`:`Development server`}],paths})}async function scanAPIRoutes(container){let fullPath=resolve(APPOS_DIR,ROUTES_DIR);try{await access(fullPath)}catch(error){return container.logger.error({error},`OpenAPI routes directory not found`),[]}let routeManifest=await remixRoutesOptionAdapter(defineRoutes=>flatRoutes(ROUTES_DIR,defineRoutes,{appDir:APPOS_DIR,ignoredRouteFiles:[`**/.*`,`**/*.{spec,test}.{ts,tsx}`,`**/*-????????.{js,ts}`]})),routes=[];for(let[routeId,route]of Object.entries(routeManifest)){let absolutePath=resolve(APPOS_DIR,route.file).replace(/.ts$/,process.env.NODE_ENV===`production`?`.js`:`.ts`);try{let exported=(await import(absolutePath)).default;if(!exported||isEmpty(exported)||/\/openapi.(j|t)s$/.test(absolutePath))continue;if(!exported?.handlers&&!exported?.openAPISpec){container.logger.warn(`Missing default export with 'defineOpenAPI' for '${APPOS_DIR}/${route.file}'`);continue}let routePath=`/${route.path}`;routes.push({path:routePath,filePath:absolutePath,handlers:exported.handlers,openAPISpec:exported.openAPISpec,version:extractVersion(routePath)})}catch(error){container.logger.error(error,`Error loading route ${route.file}:`)}}return routes}function registerRoutes(app,routes){for(let route of routes)for(let[method,handler]of Object.entries(route.handlers))app[method.toLowerCase()](route.path,handler)}async function loadVersionConfig(container,version$1){let configPath=resolve(APPOS_DIR,ROUTES_DIR,`${version$1}+/openapi.${FILE_EXT}`);try{let configFn=(await import(configPath)).default;return configFn?configFn(container):void 0}catch{return}}async function writeOpenAPISpecs(container,routes){let versions=[...new Set(routes.map(r=>r.version).filter(Boolean))];versions.length>0&&await mkdir(outputDir,{recursive:!0});for(let version$1 of versions){let doc=generateOpenAPIDocument(routes,version$1,await loadVersionConfig(container,version$1));await writeFile(join(outputDir,`${version$1}.json`),JSON.stringify(doc,null,2),`utf-8`)}}async function loadAndRegisterAPIRoutes(app){let routes=await scanAPIRoutes(app.locals.container);registerRoutes(app,routes),process.env.NODE_ENV!==`production`&&await writeOpenAPISpecs(app.locals.container,routes)}async function defineServer({container}){let isShuttingDown=!1,{host=`0.0.0.0`,port,timeout=3e4,bodyLimit=`1mb`,healthPath=`/health`,cors:corsConfig,helmet:helmetConfig,rateLimit:rateLimitConfigs,redisUrl}=container.server,app=express();app.locals.container=container;let redisClient=null;if(redisUrl&&rateLimitConfigs)try{redisClient=createClient({url:redisUrl}),redisClient.on(`error`,err=>{container.logger.error({error:err.message},`Redis client error`)}),await redisClient.connect(),container.logger.info(`Connected to Redis for rate limiting`)}catch(err){container.logger.error({error:err instanceof Error?err.message:err},`Failed to connect to Redis, falling back to in-memory rate limiting`),redisClient=null}if(app.use(defineShutdownMiddleware(container.logger,()=>isShuttingDown),defineTimeoutMiddleware(container.logger,timeout),defineRequestLoggerMiddleware(container.logger),defineHealthMiddleware(healthPath)),helmetConfig!==void 0&&app.use(helmet(helmetConfig)),corsConfig!==void 0&&app.use(cors(corsConfig)),rateLimitConfigs)for(let[index,config]of rateLimitConfigs.entries()){let limiter=rateLimit({windowMs:config.windowMs??60*1e3,limit:config.limit??100,standardHeaders:config.standardHeaders??`draft-8`,legacyHeaders:config.legacyHeaders??!1,skip:config.skip,keyGenerator:config.keyGenerator,handler:config.handler,message:config.message,statusCode:config.statusCode,requestPropertyName:config.requestPropertyName,skipFailedRequests:config.skipFailedRequests,skipSuccessfulRequests:config.skipSuccessfulRequests,requestWasSuccessful:config.requestWasSuccessful,validate:config.validate,store:redisClient?new RedisStore({sendCommand:(...args)=>redisClient.sendCommand(args),prefix:`rl:${index}:`}):config.store});app.use(limiter)}if(app.use(defineI18nMiddleware(container.i18n),express.json({limit:bodyLimit}),express.urlencoded({extended:!0,limit:bodyLimit})),await loadMiddleware(join(process.cwd(),`api`,`middleware`),container,app),app.get(`/`,(_req,res)=>{res.json({message:`${container.config.APP_NAME} server is running.`})}).all(`${container.auth.options.basePath}/*`,toNodeHandler(container.auth)),await loadAndRegisterAPIRoutes(app),app.use(express.static(resolve(PUBLIC_DIR))),process.env.NODE_ENV!==`production`){let{defineYouchErrorHandler}=await import(`./youch-handler-Jj6i1XIT.mjs`);app.use(defineYouchErrorHandler(container.logger))}else app.use(defineErrorHandlerMiddleware(container.logger));return{app,host,port,async start(){await new Promise((resolve$1,reject)=>{try{app.listen(port,host,()=>{resolve$1()})}catch(err){reject(err)}})},async close(){if(isShuttingDown=!0,app.uwsApp.close(),redisClient)try{await redisClient.destroy()}catch(err){container.logger.warn({error:err instanceof Error?err.message:err},`Error disconnecting from Redis`)}}}}function defineWorker(){return{async start(){await DBOS.launch()},async close(){await DBOS.shutdown()}}}const runtimeInfo=`(AppOS v${version} | Node ${process.version})`;var start_default=defineCommand({description:`Start the HTTP server and/or DBOS workflow worker`,aliases:[`s`],args:z.tuple([]),opts:z.object({service:z.enum([`server`,`worker`]).optional().meta({short:`s`,description:`Start only a specific service (default: both)`})}),async run(ctx){let{container,opts}=ctx,{logger}=container,startServer=!opts.service||opts.service===`server`,startWorker=!opts.service||opts.service===`worker`,server=null,worker=null,isShuttingDown=!1,shutdown=async signal=>{if(!isShuttingDown){isShuttingDown=!0,logger.info(`Shutdown initiated (${signal})`);try{server&&(await server.close(),logger.info(`HTTP server stopped`)),worker&&(await worker.close(),logger.info(`DBOS worker stopped`)),await ctx.cleanup()}catch(error){logger.error({error},`Shutdown error`)}process.exit(0)}};process.on(`SIGINT`,()=>shutdown(`SIGINT`)),process.on(`SIGTERM`,()=>shutdown(`SIGTERM`)),startWorker&&(worker=defineWorker(),await worker.start(),logger.info(`DBOS worker ready ${runtimeInfo}`)),startServer&&(server=await defineServer({container}),await server.start(),logger.info(`HTTP server ready at http://${server.host}:${server.port} ${runtimeInfo}`))}}),up_default=defineCommand({description:`Setup the infrastructure`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`up`);try{await ctx.spinner(`Starting containers`,()=>ctx.exec(`docker`,[`compose`,`--profile=infra`,`up`,`--wait`]))}catch(error){ctx.fail(error instanceof Error?error.message:String(error))}ctx.step(`Running schema migrations`),await runMigrations({ctx,migrationType:`schema`}),ctx.step(`Seeding databases`),await runSeeds({ctx}),await ctx.cleanup(),ctx.outro()}});const BUILTIN_COMMANDS={build:build_default,"db:data:gen":gen_default$1,"db:data:migrate":migrate_default$1,"db:schema:gen":gen_default,"db:schema:migrate":migrate_default,"db:seed":seed_default,down:down_default,preview:preview_default,repl:repl_default,reset:reset_default,start:start_default,up:up_default};function scanCommands(dir,baseDir=dir){let files=[];try{let entries=fs.readdirSync(dir,{withFileTypes:!0});for(let entry of entries){let fullPath=path.join(dir,entry.name);entry.isDirectory()?files.push(...scanCommands(fullPath,baseDir)):entry.isFile()&&entry.name.endsWith(`.${FILE_EXT}`)&&!/\.(spec|test)\.[jt]sx?$/.test(entry.name)&&files.push(fullPath)}}catch{}return files}function pathToCommandName(filePath,commandsDir){return path.relative(commandsDir,filePath).replace(RegExp(`\\.${FILE_EXT}$`),``).replace(/\//g,`:`)}async function parseCommand(rawArgs,command){let parsedOptions={},positionalArgs=[],shortOptionMap=new Map;if(command.opts&&`shape`in command.opts){let schemaShape=command.opts.shape;for(let[key,value]of Object.entries(schemaShape)){let meta=value.meta?.();meta?.short&&typeof meta.short==`string`&&shortOptionMap.set(meta.short,key)}}for(let i=0;i<rawArgs.length;i++){let arg=rawArgs[i];if(arg.startsWith(`--`)){let[key,...valueParts]=arg.slice(2).split(`=`);if(valueParts.length>0)parsedOptions[key]=valueParts.join(`=`);else{let nextArg=rawArgs[i+1];nextArg&&!nextArg.startsWith(`-`)?(parsedOptions[key]=nextArg,i++):parsedOptions[key]=!0}}else if(arg.startsWith(`-`)&&arg.length>1){let shortOptions=arg.slice(1);if(shortOptions.length>1)for(let shortOpt of shortOptions){let longOpt=shortOptionMap.get(shortOpt);longOpt&&(parsedOptions[longOpt]=!0)}else{let shortOpt=shortOptions,longOpt=shortOptionMap.get(shortOpt)||shortOpt,nextArg=rawArgs[i+1];nextArg&&!nextArg.startsWith(`-`)?(parsedOptions[longOpt]=nextArg,i++):parsedOptions[longOpt]=!0}}else positionalArgs.push(arg)}let options={};if(command.opts&&`safeParse`in command.opts){let result=command.opts.safeParse(parsedOptions);if(!result.success){for(let issue of result.error.issues){let field=issue.path.join(`.`);console.error(colors.red(`Error:\n --${field} => ${issue.message.toLowerCase()}`))}process.exit(1)}options=result.data}let args=[];if(command.args&&`safeParse`in command.args){let result=command.args.safeParse(positionalArgs);if(!result.success){for(let issue of result.error.issues){let field=issue.path.join(`.`);console.error(colors.red(`Error:\n ${field} => ${issue.message.toLowerCase()}`))}process.exit(1)}args=result.data}return{args,options}}function showHelp(container,commands){console.log(`${colors.bold(container.config.APP_NAME)} - ${container.config.APP_DESC}\n`),console.log(`Commands:`);let maxLength=0;for(let[name,cmd]of commands){let aliasesText=cmd.aliases&&cmd.aliases.length>0?` (${cmd.aliases.join(`, `)})`:``,totalLength=name.length+aliasesText.length;maxLength=Math.max(maxLength,totalLength)}maxLength+=8;for(let[name,cmd]of commands){let aliasesText=cmd.aliases&&cmd.aliases.length>0?` (${cmd.aliases.join(`, `)})`:``,aliases=cmd.aliases&&cmd.aliases.length>0?colors.dim(` (${cmd.aliases.join(`, `)})`):``,nameWithAliases=`${colors.cyan(name)}${aliases}`,plainLength=name.length+aliasesText.length,padding=` `.repeat(Math.max(0,maxLength-plainLength));console.log(` ${nameWithAliases}${padding}${cmd.description||`No description`}`)}}function showCommandHelp(commandName,command){console.log(`${command.description||`No description`}`),console.log();let usage=`Usage: ${colors.cyan(commandName)}`;if(command.args){let def=command.args._def,typeName=def?.typeName||def?.type;if(typeName===`ZodTuple`||typeName===`tuple`){let items=def.items||[];for(let item of items){let zodItem=item,name=zodItem.meta?.()?.name||zodItem._def?.description||`arg`,isOptional=zodItem.isOptional?.()??!1;usage+=isOptional?` [${name}]`:` <${name}>`}if(def.rest){let restDesc=def.rest._def?.description||`args`;usage+=` [${restDesc}...]`}}else if(typeName===`ZodArray`||typeName===`array`){let displayName=command.args.meta?.()?.name||`args`,minItems=def.minLength?.value||0;minItems===0?usage+=` [${displayName}...]`:minItems===1?usage+=` <${displayName}>`:usage+=` <${displayName}...>`}}if(command.opts&&(usage+=` [options]`),console.log(usage),console.log(),command.args){let def=command.args._def,typeName=def?.typeName||def?.type;if(typeName===`ZodTuple`||typeName===`tuple`||typeName===`ZodArray`||typeName===`array`){if(console.log(`Arguments:`),typeName===`ZodTuple`||typeName===`tuple`){let items=def.items||[];for(let i=0;i<items.length;i++){let item=items[i],meta=item.meta?.(),name=meta?.name||item._def?.description||`arg${i+1}`,description=meta?.description||item._def?.description||name,required=item.isOptional?.()??!1?``:` (required)`;console.log(` ${colors.cyan(name)}${colors.dim(required)}\t\t${description}`)}if(def.rest){let restDesc=def.rest._def?.description||`additional args`;console.log(` ${colors.cyan(`${restDesc}...`)}\t\t${restDesc}`)}}else{let meta=command.args.meta?.(),displayName=meta?.name||`args`,description=meta?.description||``,minItems=def.minLength?.value||0,argDisplay=displayName;(minItems===0||minItems>1)&&(argDisplay=`${displayName}...`);let required=minItems>0?` (required)`:``;console.log(` ${colors.cyan(argDisplay)}${colors.dim(required)}\t\t${description}`)}console.log()}}if(console.log(`Options:`),console.log(` ${colors.cyan(`-h, --help`)}\t\t\tShow help for this command`),command.opts&&`shape`in command.opts){let schemaShape=command.opts.shape;for(let[key,schema]of Object.entries(schemaShape)){let zodType=schema,meta=zodType.meta?.(),isOptional=zodType.isOptional?.()??!0,isBoolean=zodType._def?.typeName===`ZodBoolean`,short=meta?.short?`-${meta.short}, `:` `,long=`--${key}`,value=isBoolean?``:` <value>`,required=isOptional?``:` (required)`,defaultValue=zodType._def?.defaultValue,defaultStr=defaultValue===void 0?``:`(default: ${JSON.stringify(defaultValue)})`,description=meta?.description||``;console.log(` ${colors.cyan(short+long+value)}\t\t${description} ${colors.dim(required+defaultStr)}`)}}}async function loadCommands(commandsDir,commands,aliases){let commandFiles=scanCommands(commandsDir);for(let filePath of commandFiles)try{let command=(await import(filePath)).default;if(command&&typeof command==`object`&&`run`in command){let commandName=pathToCommandName(filePath,commandsDir);if(commands.set(commandName,command),command.aliases)for(let alias of command.aliases)aliases.set(alias,commandName)}}catch(error){console.warn(colors.yellow(`Warning: Could not load command from ${filePath}: ${error instanceof Error?error.message:String(error)}`))}}async function defineCli(opts){let commands=new Map,aliases=new Map;for(let[name,command]of Object.entries(BUILTIN_COMMANDS))if(commands.set(name,command),command.aliases)for(let alias of command.aliases)aliases.set(alias,name);return await loadCommands(opts.commandsDir,commands,aliases),await loadEvents({container:opts.container}),DBOS.setConfig({name:opts.container.config.APP_NAME,runAdminServer:!1,systemDatabaseUrl:opts.container.worker.dbUrl}),await loadWorkflows({container:opts.container,dbos:DBOS}),{async run(args=process.argv.slice(2)){let[cmdName,...cmdArgs]=args;if(!cmdName||cmdName===`--help`||cmdName===`-h`){showHelp(opts.container,commands);return}let resolvedName=aliases.get(cmdName)||cmdName,command=commands.get(resolvedName);if(command||(console.error(colors.red(`Unknown command: ${cmdName}\n`)),showHelp(opts.container,commands),process.exit(1)),cmdArgs.includes(`--help`)||cmdArgs.includes(`-h`)){showCommandHelp(resolvedName,command);return}try{let{args:parsedArgs,options}=await parseCommand(cmdArgs,command),ctx=defineCommandContext(parsedArgs,options,opts.container);await command.run(ctx)}catch(error){error instanceof Error&&(console.error(colors.red(`Error:`),error.message),(error.message.includes(`argument`)||error.message.includes(`Invalid arguments`))&&(console.log(),console.log(`Run '${colors.cyan(`${resolvedName} --help`)}' to see usage information.`))),process.exit(1)}},showHelp(){showHelp(opts.container,commands)},showCommandHelp(command){showCommandHelp(Array.from(commands.entries()).find(([_,cmd])=>cmd===command)?.[0]||`unknown`,command)}}}const require$1=createRequire(import.meta.url),{GlobalLogger}=require$1(join(dirname(dirname(dirname(require$1.resolve(`@dbos-inc/dbos-sdk`)))),`dist/src/telemetry/logs`));async function main(){let{defineContainer}=await import(join(process.cwd(),APPOS_DIR,`main.${FILE_EXT}`)),container=await defineContainer();GlobalLogger.prototype.info=(logEntry,metadata)=>{if(typeof logEntry==`string`){if(logEntry.startsWith(`Initializing DBOS`)||logEntry.startsWith(`System Database URL:`)||logEntry.startsWith(`Executor ID:`)||logEntry.startsWith(`Application version:`)||logEntry.startsWith(`No workflows to recover from application`)||logEntry.startsWith(`DBOS launched!`))return;container.logger.info(metadata,logEntry)}else container.logger.info(metadata,JSON.stringify(logEntry))},await(await defineCli({container,commandsDir:join(process.cwd(),APPOS_DIR,COMMANDS_DIR)})).run(process.argv.slice(2))}try{await main()}catch(err){console.error(err),process.exit(1)}export{};
338
+ `)};`,file=path.join(migrationFolder,`migration.sql`),snapshotFile=path.join(migrationFolder,`snapshot.json`);return await fs$1.writeFile(file,sqlContent),await fs$1.writeFile(snapshotFile,JSON.stringify(currentJson,null,2)),file});ctx.success(migrationFile),createdAny=!0}catch(error){ctx.fail(error instanceof Error?error.message:String(error))}}createdAny||ctx.info(`Nothing to generate`)}async function runMigrations(opts){let{ctx,migrationType}=opts,{container}=ctx,databaseNames=Object.keys(container.db),originalLogLevel=container.logger.level;container.logger.level=`silent`,migrationType===`schema`&&await(0,import_system_database.ensureSystemDatabase)(container.worker.dbUrl,container.logger);let hasAnyMigrations=(await Promise.all(databaseNames.map(async name=>{let{migrationsFolder}=defineMigrationOpts(name,migrationType);return exists(migrationsFolder)}))).some(Boolean);if(databaseNames.length===0||!hasAnyMigrations){ctx.info(`Nothing to migrate`),container.logger.level=originalLogLevel;return}for(let name of databaseNames){let db=container.db[name],migrationOpts=defineMigrationOpts(name,migrationType);if(await exists(migrationOpts.migrationsFolder))try{await ctx.task(name,async()=>{await migrate(db,migrationOpts)})}catch(error){ctx.fail(error instanceof Error?error.message:String(error))}}container.logger.level=originalLogLevel}async function runSeeds(opts){let{ctx}=opts,{container}=ctx,databaseNames=Object.keys(container.db);if(databaseNames.length===0){ctx.info(`Nothing to seed`);return}for(let name of databaseNames)await ensureDatabaseScaffolding(name);for(let name of databaseNames){let seedPath=path.join(process.cwd(),APPOS_DIR,DATABASES_DIR,name,`seed.ts`);try{await ctx.task(name,async()=>{let seedModule=await import(seedPath),seedFn=seedModule.default||seedModule.seed;if(typeof seedFn!=`function`)throw Error(`seed file does not export a function`);await seedFn(container)})}catch(error){ctx.fail(error instanceof Error?error.message:String(error))}}}var gen_default$1=defineCommand({description:`Generate database data migrations`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`db:data:gen`),await generateMigrations({ctx,migrationType:`data`}),await ctx.cleanup(),ctx.outro()}}),migrate_default$1=defineCommand({description:`Run pending database data migrations`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`db:data:migrate`),await runMigrations({ctx,migrationType:`data`}),await ctx.cleanup(),ctx.outro()}}),gen_default=defineCommand({description:`Generate database schema migrations from schema changes`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`db:schema:gen`),await generateMigrations({ctx,migrationType:`schema`}),await ctx.cleanup(),ctx.outro()}}),migrate_default=defineCommand({description:`Run pending database schema migrations`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`db:schema:migrate`),await runMigrations({ctx,migrationType:`schema`}),await ctx.cleanup(),ctx.outro()}}),seed_default=defineCommand({description:`Seed databases with initial data`,args:z.tuple([]),opts:z.object({}),async run(ctx){await runSeeds({ctx}),await ctx.cleanup()}}),down_default=defineCommand({description:`Teardown the infrastructure`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`down`);try{await ctx.spinner(`Stopping containers`,()=>ctx.exec(`docker`,[`compose`,`--profile=infra`,`down`,`--remove-orphans`,`--timeout=0`]))}catch(error){ctx.fail(error instanceof Error?error.message:String(error))}ctx.outro()}}),preview_default=defineCommand({description:`Preview the application`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`preview`),ctx.step(`Starting containers (Ctrl+C to stop)`);let proc=spawn(`docker`,[`compose`,`--profile=app`,`up`,`--build`],{stdio:`inherit`,cwd:process.cwd()}),isShuttingDown=!1,cleanup=async()=>{if(!isShuttingDown){isShuttingDown=!0,proc.kill(`SIGTERM`),ctx.step(`Stopping containers`);try{await ctx.exec(`docker`,[`compose`,`--profile=app`,`down`,`--remove-orphans`,`--timeout=0`])}catch{}process.exit(0)}};process.on(`SIGINT`,cleanup),process.on(`SIGTERM`,cleanup),proc.on(`close`,()=>{isShuttingDown||cleanup()}),await new Promise(()=>{})}}),version=`0.3.1-0`;const runtimeInfo$1=`(AppOS v${version} | Node ${process.version})`;var repl_default=defineCommand({description:`Start an interactive REPL with container access`,aliases:[`r`],args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`repl`);let{container}=ctx,available=[],dbNames=Object.keys(container.db);dbNames.length>0&&available.push(`container.db.{${dbNames.join(`, `)}}`);let cacheNames=Object.keys(container.cache);cacheNames.length>0&&available.push(`container.cache.{${cacheNames.join(`, `)}}`);let storageNames=Object.keys(container.storage);storageNames.length>0&&available.push(`container.storage.{${storageNames.join(`, `)}}`);let otherKeys=Object.keys(container).filter(k=>k!==`db`&&k!==`cache`&&k!==`storage`).map(k=>`container.${k}`);available.push(...otherKeys),ctx.info(`Starting REPL ${runtimeInfo$1}`),ctx.info(`Available: ${available.join(`, `)}`),ctx.line(``);let replServer=repl.start({prompt:`appos(${container.config.APP_NAME})> `,useColors:!0,useGlobal:!0,breakEvalOnSigint:!0});replServer.context.container=container,replServer.on(`exit`,async()=>{await ctx.cleanup(),ctx.info(`Bye`),process.exit(0)}),await new Promise(()=>{})}}),reset_default=defineCommand({description:`Reset the infrastructure`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`reset`);try{await ctx.spinner(`Stopping containers`,()=>ctx.exec(`docker`,[`compose`,`--profile=infra`,`down`,`--remove-orphans`,`--timeout=0`]))}catch(error){ctx.fail(error instanceof Error?error.message:String(error))}try{await ctx.spinner(`Starting containers`,()=>ctx.exec(`docker`,[`compose`,`--profile=infra`,`up`,`--wait`]))}catch(error){ctx.fail(error instanceof Error?error.message:String(error))}ctx.step(`Running schema migrations`),await runMigrations({ctx,migrationType:`schema`}),ctx.step(`Seeding databases`),await runSeeds({ctx}),await ctx.cleanup(),ctx.outro()}});function getErrorStatus(error){if(error&&typeof error==`object`&&`status`in error){let status=error.status;if(typeof status==`number`)return status}return error instanceof SyntaxError?400:500}function defineErrorHandlerMiddleware(logger){return(error,req,res,next)=>{let userAgent=req.headers[`user-agent`];if(logger.error({error:error.message,stack:error.stack,url:req.url,method:req.method,userAgent:typeof userAgent==`string`?userAgent:userAgent?.[0],ip:req.ip},`Unhandled request error`),res.headersSent)return next(error);let isDevelopment=process.env.NODE_ENV!==`production`;res.status(getErrorStatus(error)).json({error:`Internal server error`,...isDevelopment&&{message:error.message,stack:error.stack}})}}function defineHealthMiddleware(path$2=`/health`){return(req,res,next)=>{if(req.path!==path$2)return next();res.status(200).json({status:`healthy`,timestamp:new Date().toISOString(),uptime:process.uptime()})}}function defineI18nMiddleware(i18n){return(req,res,next)=>{let acceptLanguage=req.headers[`accept-language`],detectedLng=`en`;if(acceptLanguage){let parsed=acceptLanguage.split(`,`)[0].split(`;`)[0].trim();parsed&&parsed.length>0&&(detectedLng=parsed)}req.dir=i18n.dir(detectedLng),req.language=detectedLng,req.languages=i18n.languages,req.t=i18n.getFixedT(detectedLng),next()}}var instrumentation_exports={};import*as import__opentelemetry_api from"@opentelemetry/api";__reExport(instrumentation_exports,import__opentelemetry_api),register(`@opentelemetry/instrumentation/hook.mjs`,import.meta.url);const service={name:process.env.APP_NAME||`appos`,version:process.env.APP_VERSION||`development`};new NodeSDK({resource:resourceFromAttributes({[ATTR_SERVICE_NAME]:service.name,[ATTR_SERVICE_VERSION]:service.version}),spanProcessors:[new BatchSpanProcessor(new OTLPTraceExporter({url:process.env.OTEL_EXPORTER_OTLP_ENDPOINT||`http://localhost:4318/v1/traces`,headers:process.env.OTEL_EXPORTER_OTLP_HEADERS?JSON.parse(process.env.OTEL_EXPORTER_OTLP_HEADERS):void 0}))],instrumentations:[getNodeAutoInstrumentations({"@opentelemetry/instrumentation-fs":{enabled:!1},"@opentelemetry/instrumentation-dns":{enabled:!1}}),new PinoInstrumentation({logHook:(_span,record)=>{record[`service.name`]=service.name}})]}).start();const CF_COUNTRY_HEADER=`cf-ipcountry`;function extractRequestMetadata(req,config){config?.injectCountry&&!req.headers[CF_COUNTRY_HEADER]&&(req.headers[CF_COUNTRY_HEADER]=config.injectCountry);let forwardedFor=req.headers[`x-forwarded-for`],ipAddress;ipAddress=typeof forwardedFor==`string`?forwardedFor.split(`,`)[0].trim():Array.isArray(forwardedFor)&&forwardedFor.length>0?forwardedFor[0].split(`,`)[0].trim():req.socket.remoteAddress||``;let userAgent=req.headers[`user-agent`]||``,country=req.headers[CF_COUNTRY_HEADER]||``;return{ipAddress,userAgent,country}}function defineRequestLoggerMiddleware(logger,config){let tracer;try{tracer=instrumentation_exports.trace.getTracer(`request-logger`)}catch(error){logger.warn({error},`Failed to initialize OpenTelemetry tracer`),tracer=null}return(req,res,next)=>{let metadata=extractRequestMetadata(req,config);req.metadata=metadata;let startTime=Date.now(),span=null,requestId;if(tracer)try{span=tracer.startSpan(`${req.method} ${req.path}`,{kind:instrumentation_exports.SpanKind.SERVER,attributes:{"http.method":req.method,"http.url":req.url,"http.target":req.path,"http.host":(typeof req.headers.host==`string`?req.headers.host:req.headers[`:authority`])||`unknown`,"http.scheme":req.protocol,"http.user_agent":metadata.userAgent||`unknown`,"http.client_ip":metadata.ipAddress,"http.client_country":metadata.country}}),requestId=span.spanContext().traceId}catch(error){logger.warn({error},`Failed to create OpenTelemetry span`),span=null,requestId=crypto.randomUUID()}else logger.info(`OpenTelemetry tracer not available, skipping span creation`),span=null,requestId=crypto.randomUUID();let ctx=span?instrumentation_exports.trace.setSpan(instrumentation_exports.context.active(),span):instrumentation_exports.context.active(),skipLogging=(path$2=>path$2.startsWith(`/@`)||path$2.startsWith(`/node_modules/`)||path$2.startsWith(`/assets/`)||path$2.startsWith(`/public/`)||path$2.match(/\.(js|css|ico|png|jpg|jpeg|gif|svg|woff|woff2|ttf|eot|map)$/)||path$2.includes(`/locales/`)||path$2.endsWith(`.ts`)||path$2.endsWith(`.tsx`)||path$2.endsWith(`.json`))(req.path);res.setHeader(`X-Request-Id`,requestId),req.requestId=requestId,res.on(`finish`,()=>{let duration=Date.now()-startTime;if(span)try{span.setAttributes({"http.status_code":res.statusCode,"http.response_content_length":res.get(`content-length`)||0}),res.statusCode>=400?span.setStatus({code:instrumentation_exports.SpanStatusCode.ERROR,message:`HTTP ${res.statusCode}`}):span.setStatus({code:instrumentation_exports.SpanStatusCode.OK}),span.end()}catch(error){logger.warn({error},`Failed to update OpenTelemetry span`)}skipLogging||instrumentation_exports.context.with(ctx,()=>{logger.info({requestId,method:req.method,url:req.path,status:res.statusCode,duration:`${duration}ms`},`Request completed`)})}),res.on(`close`,()=>{if(!(res.writableEnded||res.finished)){let duration=Date.now()-startTime;if(span)try{span.setStatus({code:instrumentation_exports.SpanStatusCode.ERROR,message:`Request closed unexpectedly`}),span.end()}catch(error){logger.warn({error},`Failed to update OpenTelemetry span`)}skipLogging||instrumentation_exports.context.with(ctx,()=>{logger.warn({requestId,method:req.method,url:req.path,duration:`${duration}ms`},`Request closed unexpectedly`)})}});let originalNext=next;next=error=>{if(error){let duration=Date.now()-startTime;if(span)try{span.recordException(error),span.setStatus({code:instrumentation_exports.SpanStatusCode.ERROR,message:error instanceof Error?error.message:String(error)}),span.end()}catch(spanError){logger.warn({error:spanError},`Failed to record exception in span`)}skipLogging||instrumentation_exports.context.with(ctx,()=>{logger.error({requestId,method:req.method,url:req.path,status:res.statusCode||500,duration:`${duration}ms`,error:error instanceof Error?error.message:String(error)},`Request failed`)})}originalNext(error)},instrumentation_exports.context.with(ctx,()=>next())}}function defineShutdownMiddleware(logger,isShuttingDown){return(req,res,next)=>{if(isShuttingDown()){logger.info({url:req.url,method:req.method},`Rejecting request during shutdown`),res.status(503).set(`Connection`,`close`).json({error:`Server is shutting down`});return}next()}}function defineTimeoutMiddleware(logger,timeoutMs=3e4){return(req,res,next)=>{let timeoutFired=!1,timeoutId=setTimeout(()=>{timeoutFired=!0,logger.warn({url:req.url,method:req.method,timeout:timeoutMs},`Request timeout`),res.headersSent||res.status(408).json({error:`Request timeout`}),res.removeListener(`finish`,clearTimeoutHandler),res.removeListener(`close`,clearTimeoutHandler)},timeoutMs),clearTimeoutHandler=()=>{timeoutFired||clearTimeout(timeoutId)};res.on(`finish`,clearTimeoutHandler),res.on(`close`,clearTimeoutHandler),next()}}function getMiddlewareName(filename){return camelCase(basename(filename,`.ts`).replace(/^\d+_/,``))}async function loadMiddleware(middlewareDir,container,app){try{await fs$1.access(middlewareDir)}catch{return}let files=[];for await(let file of glob(`${middlewareDir}/**/*.${FILE_EXT}`))!file.endsWith(`.test.ts`)&&!file.endsWith(`.spec.ts`)&&!file.endsWith(`.test.js`)&&!file.endsWith(`.spec.js`)&&files.push(file);files.sort((a,b)=>basename(a).localeCompare(basename(b)));for(let file of files)try{let middleware=(await import(file)).default;if(middleware&&typeof middleware.handler==`function`){let name=middleware.name??getMiddlewareName(file);container.logger.debug({name,file},`Loading user middleware`),app.use(middleware.handler(container))}else container.logger.warn({file},`Middleware file missing default export with handler function`)}catch(err){throw container.logger.error({file,error:err instanceof Error?err.message:err},`Failed to load middleware`),err}}const outputDir=resolve(PUBLIC_DIR,`openapi`);function extractVersion(path$2){return path$2.match(/^\/(v\d+)/)?.[1]}function convertToOpenAPIPath(reactRouterPath){return reactRouterPath.replace(/:(\w+)/g,`{$1}`)}function buildPathObject(path$2,spec){let openApiPath=convertToOpenAPIPath(path$2),methodConfig={summary:spec.summary,description:spec.description};(spec.request?.params||spec.request?.query||spec.request?.headers)&&(methodConfig.requestParams={},spec.request.params&&(methodConfig.requestParams.path=spec.request.params),spec.request.query&&(methodConfig.requestParams.query=spec.request.query),spec.request.headers&&(methodConfig.requestParams.header=spec.request.headers)),spec.request?.body&&(methodConfig.requestBody={content:{"application/json":{schema:spec.request.body}}}),methodConfig.responses={};for(let[statusCode,response]of Object.entries(spec.responses))methodConfig.responses[statusCode]={description:response.description,content:{"application/json":{schema:response.content[`application/json`].schema}}};return{path:openApiPath,config:methodConfig}}function generateOpenAPIDocument(routes,version$1,config){let paths={};for(let route of routes){if(route.version!==version$1)continue;let apiPath=route.path.replace(`/${version$1}`,``)||`/`;for(let spec of route.openAPISpec){let{path:openApiPath,config:methodConfig}=buildPathObject(apiPath,spec);paths[openApiPath]||(paths[openApiPath]={}),paths[openApiPath][spec.method]=methodConfig}}return createDocument({openapi:`3.1.0`,info:config?.info||{title:`API ${version$1.toUpperCase()}`,version:version$1.replace(`v`,``),description:`OpenAPI specification for ${version$1} API`},servers:config?.servers||[{url:`http://localhost:8000/${version$1}`,description:process.env.NODE_ENV===`production`?`Production server`:`Development server`}],paths})}async function scanAPIRoutes(container){let fullPath=resolve(APPOS_DIR,ROUTES_DIR);try{await access(fullPath)}catch(error){return container.logger.error({error},`OpenAPI routes directory not found`),[]}let routeManifest=await remixRoutesOptionAdapter(defineRoutes=>flatRoutes(ROUTES_DIR,defineRoutes,{appDir:APPOS_DIR,ignoredRouteFiles:[`**/.*`,`**/*.{spec,test}.{ts,tsx}`,`**/*-????????.{js,ts}`]})),routes=[];for(let[routeId,route]of Object.entries(routeManifest)){let absolutePath=resolve(APPOS_DIR,route.file).replace(/.ts$/,process.env.NODE_ENV===`production`?`.js`:`.ts`);try{let exported=(await import(absolutePath)).default;if(!exported||isEmpty(exported)||/\/openapi.(j|t)s$/.test(absolutePath))continue;if(!exported?.handlers&&!exported?.openAPISpec){container.logger.warn(`Missing default export with 'defineOpenAPI' for '${APPOS_DIR}/${route.file}'`);continue}let routePath=`/${route.path}`;routes.push({path:routePath,filePath:absolutePath,handlers:exported.handlers,openAPISpec:exported.openAPISpec,version:extractVersion(routePath)})}catch(error){container.logger.error(error,`Error loading route ${route.file}:`)}}return routes}function registerRoutes(app,routes){for(let route of routes)for(let[method,handler]of Object.entries(route.handlers))app[method.toLowerCase()](route.path,handler)}async function loadVersionConfig(container,version$1){let configPath=resolve(APPOS_DIR,ROUTES_DIR,`${version$1}+/openapi.${FILE_EXT}`);try{let configFn=(await import(configPath)).default;return configFn?configFn(container):void 0}catch{return}}async function writeOpenAPISpecs(container,routes){let versions=[...new Set(routes.map(r=>r.version).filter(Boolean))];versions.length>0&&await mkdir(outputDir,{recursive:!0});for(let version$1 of versions){let doc=generateOpenAPIDocument(routes,version$1,await loadVersionConfig(container,version$1));await writeFile(join(outputDir,`${version$1}.json`),JSON.stringify(doc,null,2),`utf-8`)}}async function loadAndRegisterAPIRoutes(app){let routes=await scanAPIRoutes(app.locals.container);registerRoutes(app,routes),process.env.NODE_ENV!==`production`&&await writeOpenAPISpecs(app.locals.container,routes)}async function defineServer({container}){let isShuttingDown=!1,{host=`0.0.0.0`,port,timeout=3e4,bodyLimit=`1mb`,healthPath=`/health`,cors:corsConfig,helmet:helmetConfig,rateLimit:rateLimitConfigs,redisUrl}=container.server,app=express();app.locals.container=container;let redisClient=null;if(redisUrl&&rateLimitConfigs)try{redisClient=createClient({url:redisUrl}),redisClient.on(`error`,err=>{container.logger.error({error:err.message},`Redis client error`)}),await redisClient.connect(),container.logger.info(`Connected to Redis for rate limiting`)}catch(err){container.logger.error({error:err instanceof Error?err.message:err},`Failed to connect to Redis, falling back to in-memory rate limiting`),redisClient=null}if(app.use(defineShutdownMiddleware(container.logger,()=>isShuttingDown),defineTimeoutMiddleware(container.logger,timeout),defineRequestLoggerMiddleware(container.logger),defineHealthMiddleware(healthPath)),helmetConfig!==void 0&&app.use(helmet(helmetConfig)),corsConfig!==void 0&&app.use(cors(corsConfig)),rateLimitConfigs)for(let[index,config]of rateLimitConfigs.entries()){let limiter=rateLimit({windowMs:config.windowMs??60*1e3,limit:config.limit??100,standardHeaders:config.standardHeaders??`draft-8`,legacyHeaders:config.legacyHeaders??!1,skip:config.skip,keyGenerator:config.keyGenerator,handler:config.handler,message:config.message,statusCode:config.statusCode,requestPropertyName:config.requestPropertyName,skipFailedRequests:config.skipFailedRequests,skipSuccessfulRequests:config.skipSuccessfulRequests,requestWasSuccessful:config.requestWasSuccessful,validate:config.validate,store:redisClient?new RedisStore({sendCommand:(...args)=>redisClient.sendCommand(args),prefix:`rl:${index}:`}):config.store});app.use(limiter)}if(app.use(defineI18nMiddleware(container.i18n),express.json({limit:bodyLimit}),express.urlencoded({extended:!0,limit:bodyLimit})),await loadMiddleware(join(process.cwd(),`api`,`middleware`),container,app),app.get(`/`,(_req,res)=>{res.json({message:`${container.config.APP_NAME} server is running.`})}).all(`${container.auth.options.basePath}/*`,toNodeHandler(container.auth)),await loadAndRegisterAPIRoutes(app),app.use(express.static(resolve(PUBLIC_DIR))),process.env.NODE_ENV!==`production`){let{defineYouchErrorHandler}=await import(`./youch-handler-BadUgHb0.mjs`);app.use(defineYouchErrorHandler(container.logger))}else app.use(defineErrorHandlerMiddleware(container.logger));return{app,host,port,async start(){await new Promise((resolve$1,reject)=>{try{app.listen(port,host,()=>{resolve$1()})}catch(err){reject(err)}})},async close(){if(isShuttingDown=!0,app.uwsApp.close(),redisClient)try{await redisClient.destroy()}catch(err){container.logger.warn({error:err instanceof Error?err.message:err},`Error disconnecting from Redis`)}}}}function defineWorker(){return{async start(){await DBOS.launch()},async close(){await DBOS.shutdown()}}}const runtimeInfo=`(AppOS v${version} | Node ${process.version})`;var start_default=defineCommand({description:`Start the HTTP server and/or DBOS workflow worker`,aliases:[`s`],args:z.tuple([]),opts:z.object({service:z.enum([`server`,`worker`]).optional().meta({short:`s`,description:`Start only a specific service (default: both)`})}),async run(ctx){let{container,opts}=ctx,{logger}=container,startServer=!opts.service||opts.service===`server`,startWorker=!opts.service||opts.service===`worker`,server=null,worker=null,isShuttingDown=!1,shutdown=async signal=>{if(!isShuttingDown){isShuttingDown=!0,logger.info(`Shutdown initiated (${signal})`);try{server&&(await server.close(),logger.info(`HTTP server stopped`)),worker&&(await worker.close(),logger.info(`DBOS worker stopped`)),await ctx.cleanup()}catch(error){logger.error({error},`Shutdown error`)}process.exit(0)}};process.on(`SIGINT`,()=>shutdown(`SIGINT`)),process.on(`SIGTERM`,()=>shutdown(`SIGTERM`)),startWorker&&(worker=defineWorker(),await worker.start(),logger.info(`DBOS worker ready ${runtimeInfo}`)),startServer&&(server=await defineServer({container}),await server.start(),logger.info(`HTTP server ready at http://${server.host}:${server.port} ${runtimeInfo}`))}}),up_default=defineCommand({description:`Setup the infrastructure`,args:z.tuple([]),opts:z.object({}),async run(ctx){ctx.intro(`up`);try{await ctx.spinner(`Starting containers`,()=>ctx.exec(`docker`,[`compose`,`--profile=infra`,`up`,`--wait`]))}catch(error){ctx.fail(error instanceof Error?error.message:String(error))}ctx.step(`Running schema migrations`),await runMigrations({ctx,migrationType:`schema`}),ctx.step(`Seeding databases`),await runSeeds({ctx}),await ctx.cleanup(),ctx.outro()}});const BUILTIN_COMMANDS={build:build_default,"db:data:gen":gen_default$1,"db:data:migrate":migrate_default$1,"db:schema:gen":gen_default,"db:schema:migrate":migrate_default,"db:seed":seed_default,down:down_default,preview:preview_default,repl:repl_default,reset:reset_default,start:start_default,up:up_default};function scanCommands(dir,baseDir=dir){let files=[];try{let entries=fs.readdirSync(dir,{withFileTypes:!0});for(let entry of entries){let fullPath=path.join(dir,entry.name);entry.isDirectory()?files.push(...scanCommands(fullPath,baseDir)):entry.isFile()&&entry.name.endsWith(`.${FILE_EXT}`)&&!/\.(spec|test)\.[jt]sx?$/.test(entry.name)&&files.push(fullPath)}}catch{}return files}function pathToCommandName(filePath,commandsDir){return path.relative(commandsDir,filePath).replace(RegExp(`\\.${FILE_EXT}$`),``).replace(/\//g,`:`)}async function parseCommand(rawArgs,command){let parsedOptions={},positionalArgs=[],shortOptionMap=new Map;if(command.opts&&`shape`in command.opts){let schemaShape=command.opts.shape;for(let[key,value]of Object.entries(schemaShape)){let meta=value.meta?.();meta?.short&&typeof meta.short==`string`&&shortOptionMap.set(meta.short,key)}}for(let i=0;i<rawArgs.length;i++){let arg=rawArgs[i];if(arg.startsWith(`--`)){let[key,...valueParts]=arg.slice(2).split(`=`);if(valueParts.length>0)parsedOptions[key]=valueParts.join(`=`);else{let nextArg=rawArgs[i+1];nextArg&&!nextArg.startsWith(`-`)?(parsedOptions[key]=nextArg,i++):parsedOptions[key]=!0}}else if(arg.startsWith(`-`)&&arg.length>1){let shortOptions=arg.slice(1);if(shortOptions.length>1)for(let shortOpt of shortOptions){let longOpt=shortOptionMap.get(shortOpt);longOpt&&(parsedOptions[longOpt]=!0)}else{let shortOpt=shortOptions,longOpt=shortOptionMap.get(shortOpt)||shortOpt,nextArg=rawArgs[i+1];nextArg&&!nextArg.startsWith(`-`)?(parsedOptions[longOpt]=nextArg,i++):parsedOptions[longOpt]=!0}}else positionalArgs.push(arg)}let options={};if(command.opts&&`safeParse`in command.opts){let result=command.opts.safeParse(parsedOptions);if(!result.success){for(let issue of result.error.issues){let field=issue.path.join(`.`);console.error(colors.red(`Error:\n --${field} => ${issue.message.toLowerCase()}`))}process.exit(1)}options=result.data}let args=[];if(command.args&&`safeParse`in command.args){let result=command.args.safeParse(positionalArgs);if(!result.success){for(let issue of result.error.issues){let field=issue.path.join(`.`);console.error(colors.red(`Error:\n ${field} => ${issue.message.toLowerCase()}`))}process.exit(1)}args=result.data}return{args,options}}function showHelp(container,commands){console.log(`${colors.bold(container.config.APP_NAME)} - ${container.config.APP_DESC}\n`),console.log(`Commands:`);let maxLength=0;for(let[name,cmd]of commands){let aliasesText=cmd.aliases&&cmd.aliases.length>0?` (${cmd.aliases.join(`, `)})`:``,totalLength=name.length+aliasesText.length;maxLength=Math.max(maxLength,totalLength)}maxLength+=8;for(let[name,cmd]of commands){let aliasesText=cmd.aliases&&cmd.aliases.length>0?` (${cmd.aliases.join(`, `)})`:``,aliases=cmd.aliases&&cmd.aliases.length>0?colors.dim(` (${cmd.aliases.join(`, `)})`):``,nameWithAliases=`${colors.cyan(name)}${aliases}`,plainLength=name.length+aliasesText.length,padding=` `.repeat(Math.max(0,maxLength-plainLength));console.log(` ${nameWithAliases}${padding}${cmd.description||`No description`}`)}}function showCommandHelp(commandName,command){console.log(`${command.description||`No description`}`),console.log();let usage=`Usage: ${colors.cyan(commandName)}`;if(command.args){let def=command.args._def,typeName=def?.typeName||def?.type;if(typeName===`ZodTuple`||typeName===`tuple`){let items=def.items||[];for(let item of items){let zodItem=item,name=zodItem.meta?.()?.name||zodItem._def?.description||`arg`,isOptional=zodItem.isOptional?.()??!1;usage+=isOptional?` [${name}]`:` <${name}>`}if(def.rest){let restDesc=def.rest._def?.description||`args`;usage+=` [${restDesc}...]`}}else if(typeName===`ZodArray`||typeName===`array`){let displayName=command.args.meta?.()?.name||`args`,minItems=def.minLength?.value||0;minItems===0?usage+=` [${displayName}...]`:minItems===1?usage+=` <${displayName}>`:usage+=` <${displayName}...>`}}if(command.opts&&(usage+=` [options]`),console.log(usage),console.log(),command.args){let def=command.args._def,typeName=def?.typeName||def?.type;if(typeName===`ZodTuple`||typeName===`tuple`||typeName===`ZodArray`||typeName===`array`){if(console.log(`Arguments:`),typeName===`ZodTuple`||typeName===`tuple`){let items=def.items||[];for(let i=0;i<items.length;i++){let item=items[i],meta=item.meta?.(),name=meta?.name||item._def?.description||`arg${i+1}`,description=meta?.description||item._def?.description||name,required=item.isOptional?.()??!1?``:` (required)`;console.log(` ${colors.cyan(name)}${colors.dim(required)}\t\t${description}`)}if(def.rest){let restDesc=def.rest._def?.description||`additional args`;console.log(` ${colors.cyan(`${restDesc}...`)}\t\t${restDesc}`)}}else{let meta=command.args.meta?.(),displayName=meta?.name||`args`,description=meta?.description||``,minItems=def.minLength?.value||0,argDisplay=displayName;(minItems===0||minItems>1)&&(argDisplay=`${displayName}...`);let required=minItems>0?` (required)`:``;console.log(` ${colors.cyan(argDisplay)}${colors.dim(required)}\t\t${description}`)}console.log()}}if(console.log(`Options:`),console.log(` ${colors.cyan(`-h, --help`)}\t\t\tShow help for this command`),command.opts&&`shape`in command.opts){let schemaShape=command.opts.shape;for(let[key,schema]of Object.entries(schemaShape)){let zodType=schema,meta=zodType.meta?.(),isOptional=zodType.isOptional?.()??!0,isBoolean=zodType._def?.typeName===`ZodBoolean`,short=meta?.short?`-${meta.short}, `:` `,long=`--${key}`,value=isBoolean?``:` <value>`,required=isOptional?``:` (required)`,defaultValue=zodType._def?.defaultValue,defaultStr=defaultValue===void 0?``:`(default: ${JSON.stringify(defaultValue)})`,description=meta?.description||``;console.log(` ${colors.cyan(short+long+value)}\t\t${description} ${colors.dim(required+defaultStr)}`)}}}async function loadCommands(commandsDir,commands,aliases){let commandFiles=scanCommands(commandsDir);for(let filePath of commandFiles)try{let command=(await import(filePath)).default;if(command&&typeof command==`object`&&`run`in command){let commandName=pathToCommandName(filePath,commandsDir);if(commands.set(commandName,command),command.aliases)for(let alias of command.aliases)aliases.set(alias,commandName)}}catch(error){console.warn(colors.yellow(`Warning: Could not load command from ${filePath}: ${error instanceof Error?error.message:String(error)}`))}}async function defineCli(opts){let commands=new Map,aliases=new Map;for(let[name,command]of Object.entries(BUILTIN_COMMANDS))if(commands.set(name,command),command.aliases)for(let alias of command.aliases)aliases.set(alias,name);return await loadCommands(opts.commandsDir,commands,aliases),await loadEvents({container:opts.container}),DBOS.setConfig({name:opts.container.config.APP_NAME,runAdminServer:!1,systemDatabaseUrl:opts.container.worker.dbUrl}),await loadWorkflows({container:opts.container,dbos:DBOS}),{async run(args=process.argv.slice(2)){let[cmdName,...cmdArgs]=args;if(!cmdName||cmdName===`--help`||cmdName===`-h`){showHelp(opts.container,commands);return}let resolvedName=aliases.get(cmdName)||cmdName,command=commands.get(resolvedName);if(command||(console.error(colors.red(`Unknown command: ${cmdName}\n`)),showHelp(opts.container,commands),process.exit(1)),cmdArgs.includes(`--help`)||cmdArgs.includes(`-h`)){showCommandHelp(resolvedName,command);return}try{let{args:parsedArgs,options}=await parseCommand(cmdArgs,command),ctx=defineCommandContext(parsedArgs,options,opts.container);await command.run(ctx)}catch(error){error instanceof Error&&(console.error(colors.red(`Error:`),error.message),(error.message.includes(`argument`)||error.message.includes(`Invalid arguments`))&&(console.log(),console.log(`Run '${colors.cyan(`${resolvedName} --help`)}' to see usage information.`))),process.exit(1)}},showHelp(){showHelp(opts.container,commands)},showCommandHelp(command){showCommandHelp(Array.from(commands.entries()).find(([_,cmd])=>cmd===command)?.[0]||`unknown`,command)}}}const require$1=createRequire(import.meta.url),{GlobalLogger}=require$1(join(dirname(dirname(dirname(require$1.resolve(`@dbos-inc/dbos-sdk`)))),`dist/src/telemetry/logs`));async function main(){let{defineContainer}=await import(join(process.cwd(),APPOS_DIR,`main.${FILE_EXT}`)),container=await defineContainer();GlobalLogger.prototype.info=(logEntry,metadata)=>{if(typeof logEntry==`string`){if(logEntry.startsWith(`Initializing DBOS`)||logEntry.startsWith(`System Database URL:`)||logEntry.startsWith(`Executor ID:`)||logEntry.startsWith(`Application version:`)||logEntry.startsWith(`No workflows to recover from application`)||logEntry.startsWith(`DBOS launched!`))return;container.logger.info(metadata,logEntry)}else container.logger.info(metadata,JSON.stringify(logEntry))},await(await defineCli({container,commandsDir:join(process.cwd(),APPOS_DIR,COMMANDS_DIR)})).run(process.argv.slice(2))}try{await main()}catch(err){console.error(err),process.exit(1)}export{};
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node --import=appos/instrumentation --no-warnings
2
- import{n as e}from"./workflow-CsbetKWL.mjs";import t from"zod";const n=e({input:t.object({attachmentIds:t.array(t.string()).min(1)}),async run({container:e,input:{attachmentIds:t},step:n}){let r=await n(`fetch-attachments`,async()=>(await e.storage.primary.getAttachmentsByIds(t)).filter(e=>e.blob!==null).map(e=>({attachmentId:e.id,blobId:e.blob.id})));return await n(`delete-attachments`,async()=>{for(let{attachmentId:t}of r)await e.storage.primary.deleteAttachment(t)}),await n(`delete-blobs`,async()=>{for(let{blobId:t}of r)await e.storage.primary.deleteBlob(t)}),e.logger.info({attachmentIds:t,blobCount:r.length},`Attachments and blobs purged`),{purgedCount:r.length}}});export{n as purgeAttachment};
1
+ #!/usr/bin/env node
2
+ import{n as e}from"./workflow-BNUZrj4F.mjs";import t from"zod";const n=e({input:t.object({attachmentIds:t.array(t.string()).min(1)}),async run({container:e,input:{attachmentIds:t},step:n}){let r=await n(`fetch-attachments`,async()=>(await e.storage.primary.getAttachmentsByIds(t)).filter(e=>e.blob!==null).map(e=>({attachmentId:e.id,blobId:e.blob.id})));return await n(`delete-attachments`,async()=>{for(let{attachmentId:t}of r)await e.storage.primary.deleteAttachment(t)}),await n(`delete-blobs`,async()=>{for(let{blobId:t}of r)await e.storage.primary.deleteBlob(t)}),e.logger.info({attachmentIds:t,blobCount:r.length},`Attachments and blobs purged`),{purgedCount:r.length}}});export{n as purgeAttachment};
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node --import=appos/instrumentation --no-warnings
2
- import{t as e}from"./workflow-CsbetKWL.mjs";import{t}from"./auth-schema-7KeUwlcd.mjs";import{lt as n}from"drizzle-orm";const r=t();function i(t=`0 0 * * *`){return e({crontab:t,async run({container:e,step:t,scheduledTime:i}){let a=e.auth.auditLog?.retentionDays??90,o=new Date(i);o.setDate(o.getDate()-a);let s=o.toISOString(),c=await t(`delete-old-logs`,async()=>{let{auditLogs:t}=r.tables;return(await e.db.primary.delete(t).where(n(t.createdAt,s)).returning({id:t.id})).length});e.logger.info({deletedCount:c,retentionDays:a,cutoffDate:s},`Audit log purge completed`)}})}export{i as definePurgeAuditLogs};
1
+ #!/usr/bin/env node
2
+ import{t as e}from"./workflow-BNUZrj4F.mjs";import{t}from"./auth-schema-Va0CYicu.mjs";import{lt as n}from"drizzle-orm";const r=t();function i(t=`0 0 * * *`){return e({crontab:t,async run({container:e,step:t,scheduledTime:i}){let a=e.auth.auditLog?.retentionDays??90,o=new Date(i);o.setDate(o.getDate()-a);let s=o.toISOString(),c=await t(`delete-old-logs`,async()=>{let{auditLogs:t}=r.tables;return(await e.db.primary.delete(t).where(n(t.createdAt,s)).returning({id:t.id})).length});e.logger.info({deletedCount:c,retentionDays:a,cutoffDate:s},`Audit log purge completed`)}})}export{i as definePurgeAuditLogs};
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node --import=appos/instrumentation --no-warnings
2
- import{t as e}from"./workflow-CsbetKWL.mjs";function t(t=`0 0 * * *`){return e({crontab:t,async run({container:e,step:t}){let n=new Date(Date.now()-2880*60*1e3).toISOString(),r=await t(`fetch-unattached-blobs`,async()=>e.storage.primary.getUnattachedBlobs({olderThan:n})),i=await t(`fetch-pending-blobs`,async()=>e.storage.primary.getPendingBlobs(n)),a=[...r,...i],o=0;for(let n of a)await t(`delete-blob`,async()=>{await e.storage.primary.deleteBlob(n.id),o++});e.logger.info({purgedCount:o,unattachedCount:r.length,pendingCount:i.length},`Orphaned blobs purged`)}})}export{t as definePurgeUnattachedBlobs};
1
+ #!/usr/bin/env node
2
+ import{t as e}from"./workflow-BNUZrj4F.mjs";function t(t=`0 0 * * *`){return e({crontab:t,async run({container:e,step:t}){let n=new Date(Date.now()-2880*60*1e3).toISOString(),r=await t(`fetch-unattached-blobs`,async()=>e.storage.primary.getUnattachedBlobs({olderThan:n})),i=await t(`fetch-pending-blobs`,async()=>e.storage.primary.getPendingBlobs(n)),a=[...r,...i],o=0;for(let n of a)await t(`delete-blob`,async()=>{await e.storage.primary.deleteBlob(n.id),o++});e.logger.info({purgedCount:o,unattachedCount:r.length,pendingCount:i.length},`Orphaned blobs purged`)}})}export{t as definePurgeUnattachedBlobs};
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node --import=appos/instrumentation --no-warnings
2
- import{t as e}from"./event-Su-wo96Y.mjs";import{n as t}from"./workflow-CsbetKWL.mjs";import{t as n}from"./auth-schema-7KeUwlcd.mjs";import{z as r}from"zod";const i=n(),a=r.object({changes:r.array(r.object({_table:r.string(),old:r.record(r.string(),r.unknown()).nullable(),new:r.record(r.string(),r.unknown()).nullable()})),dbName:r.string(),organizationId:r.string().nullable(),requestId:r.string(),sessionId:r.string().nullable(),userId:r.string().nullable()});function o(e){return e.old===null?`INSERT`:e.new===null?`DELETE`:`UPDATE`}const s=t({input:a,async run({container:t,step:n,input:r}){let{dbName:a,changes:s,organizationId:c,userId:l,sessionId:u,requestId:d}=r;if(s.length===0)return{processed:0,audited:0,published:0};let f=new Date().toISOString(),p=0,m=0;for(let r of s){let s=r._table,h=o(r),g=`${a}.${s}`;t.auth.shouldAudit(g)&&(await n(`audit:${g}`,async()=>{await t.db.primary.insert(i.tables.auditLogs).values({tableName:g,action:h,oldData:r.old,newData:r.new,organizationId:c,userId:l,sessionId:u,requestId:d,createdAt:f})}),p++),await n(`event:${g}`,async()=>{await e.emit({action:h,oldData:r.old,newData:r.new,organizationId:c,tableName:g,timestamp:f,userId:l})}),m++}return{processed:s.length,audited:p,published:m}}});export{s as trackDbChanges};
1
+ #!/usr/bin/env node
2
+ import{t as e}from"./event-8JibGFH_.mjs";import{n as t}from"./workflow-BNUZrj4F.mjs";import{t as n}from"./auth-schema-Va0CYicu.mjs";import{z as r}from"zod";const i=n(),a=r.object({changes:r.array(r.object({_table:r.string(),old:r.record(r.string(),r.unknown()).nullable(),new:r.record(r.string(),r.unknown()).nullable()})),dbName:r.string(),organizationId:r.string().nullable(),requestId:r.string(),sessionId:r.string().nullable(),userId:r.string().nullable()});function o(e){return e.old===null?`INSERT`:e.new===null?`DELETE`:`UPDATE`}const s=t({input:a,async run({container:t,step:n,input:r}){let{dbName:a,changes:s,organizationId:c,userId:l,sessionId:u,requestId:d}=r;if(s.length===0)return{processed:0,audited:0,published:0};let f=new Date().toISOString(),p=0,m=0;for(let r of s){let s=r._table,h=o(r),g=`${a}.${s}`;t.auth.shouldAudit(g)&&(await n(`audit:${g}`,async()=>{await t.db.primary.insert(i.tables.auditLogs).values({tableName:g,action:h,oldData:r.old,newData:r.new,organizationId:c,userId:l,sessionId:u,requestId:d,createdAt:f})}),p++),await n(`event:${g}`,async()=>{await e.emit({action:h,oldData:r.old,newData:r.new,organizationId:c,tableName:g,timestamp:f,userId:l})}),m++}return{processed:s.length,audited:p,published:m}}});export{s as trackDbChanges};
package/dist/bin/vite.mjs CHANGED
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node --import=appos/instrumentation --no-warnings
1
+ #!/usr/bin/env node
2
2
  import{createRequire as e}from"node:module";import{spawn as t}from"node:child_process";import{dirname as n,join as r}from"node:path";const i=r(n(e(import.meta.url).resolve(`vite/package.json`)),`bin`,`vite.js`);t(process.execPath,[i,...process.argv.slice(2)],{stdio:`inherit`}).on(`exit`,e=>process.exit(e??0));export{};
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node --import=appos/instrumentation --no-warnings
1
+ #!/usr/bin/env node
2
2
  import{createRequire as e}from"node:module";import{spawn as t}from"node:child_process";import{dirname as n,join as r}from"node:path";const i=r(n(e(import.meta.url).resolve(`vitest/package.json`)),`vitest.mjs`);t(process.execPath,[i,...process.argv.slice(2)],{stdio:`inherit`}).on(`exit`,e=>process.exit(e??0));export{};
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node --import=appos/instrumentation --no-warnings
2
- import{basename as e,join as t}from"node:path";import{glob as n}from"node:fs/promises";import{camelCase as r}from"es-toolkit";const i=`api`,a=`databases`,o=`routes`,s=`events`,c=`commands`,l=`public`,u=process.env.NODE_ENV===`production`?`js`:`ts`;function d(e){let t=null,n=null,r=null,i=null,a=async i=>{if(!t||!r)throw Error(`Workflow "${n}" not registered`);let a=r,o=a.workflowID;if(!o)throw Error(`DBOS.workflowID is not available in this context`);let s={container:t,workflowId:o,input:i,step:(e,t)=>a.runStep(t,{name:e})};return e.run(s)};return{inputSchema:e.input,get name(){return n},register(o,s,c){t=o,n=s,r=c,i=c.registerWorkflow(a,{name:s,...e.config})},async start(t){if(!i||!n||!r)throw Error(`Workflow not registered. Ensure the worker is started before triggering workflows.`);let a=e.input.parse(t),o=await r.startWorkflow(i)(a);return{workflowId:o.workflowID,getStatus:()=>o.getStatus(),getResult:()=>o.getResult()}}}}function f(e){let t=null,n=null,r=null,i=async(i,a)=>{if(!t||!r)throw Error(`Workflow "${n}" not registered`);let o=r,s=o.workflowID;if(!s)throw Error(`DBOS.workflowID is not available in this context`);let c={container:t,workflowId:s,scheduledTime:i,step:(e,t)=>o.runStep(t,{name:e})};return e.run(c)};return{crontab:e.crontab,get name(){return n},register(a,o,s){t=a,n=o,r=s,s.registerScheduled(s.registerWorkflow(i,{name:o}),{crontab:e.crontab})}}}function p(t){return r(e(t,`.ts`))}async function m(e){let{container:r,dbos:i}=e,a=e.workflowsDir??t(process.cwd(),`api`,`workflows`),o=(e,t)=>{try{e.register(r,t,i)}catch(e){if(!(e instanceof Error)||!e.message.includes(`already registered`))throw e}},{extractBlobMetadata:s}=await import(`./extract-blob-metadata-CPnQ5z-I.mjs`),{generateImageVariant:c}=await import(`./generate-image-variant-0jPXp8Gu.mjs`),{generatePreview:l}=await import(`./generate-preview-QDAk8NkM.mjs`),{purgeAttachment:d}=await import(`./purge-attachment-BNMcVoEh.mjs`),{trackDbChanges:f}=await import(`./track-db-changes-BUCo-YXD.mjs`),{definePurgeAuditLogs:m}=await import(`./purge-audit-logs-C6bh2l3g.mjs`),{definePurgeUnattachedBlobs:h}=await import(`./purge-unattached-blobs-CmLk3lNK.mjs`);o(s,`extractBlobMetadata`),o(c,`generateImageVariant`),o(l,`generatePreview`),o(d,`purgeAttachment`),o(f,`trackDbChanges`),o(m(r.auth.auditLog?.purgeCron),`purgeAuditLogs`),o(h(r.storage.primary.purgeCron),`purgeUnattachedBlobs`);let g=await Array.fromAsync(n(`${a}/**/*.${u}`,{exclude:[`**/*.test.ts`,`**/*.spec.ts`,`**/*.test.js`,`**/*.spec.js`]}));for(let e of g){let t=await import(e);if(t.default&&typeof t.default==`object`&&`register`in t.default){let n=p(e);o(t.default,n)}}}export{c as a,u as c,i,l,d as n,a as o,m as r,s,f as t,o as u};
1
+ #!/usr/bin/env node
2
+ import{basename as e,join as t}from"node:path";import{glob as n}from"node:fs/promises";import{camelCase as r}from"es-toolkit";const i=`api`,a=`databases`,o=`routes`,s=`events`,c=`commands`,l=`public`,u=process.env.NODE_ENV===`production`?`js`:`ts`;function d(e){let t=null,n=null,r=null,i=null,a=async i=>{if(!t||!r)throw Error(`Workflow "${n}" not registered`);let a=r,o=a.workflowID;if(!o)throw Error(`DBOS.workflowID is not available in this context`);let s={container:t,workflowId:o,input:i,step:(e,t)=>a.runStep(t,{name:e})};return e.run(s)};return{inputSchema:e.input,get name(){return n},register(o,s,c){t=o,n=s,r=c,i=c.registerWorkflow(a,{name:s,...e.config})},async start(t){if(!i||!n||!r)throw Error(`Workflow not registered. Ensure the worker is started before triggering workflows.`);let a=e.input.parse(t),o=await r.startWorkflow(i)(a);return{workflowId:o.workflowID,getStatus:()=>o.getStatus(),getResult:()=>o.getResult()}}}}function f(e){let t=null,n=null,r=null,i=async(i,a)=>{if(!t||!r)throw Error(`Workflow "${n}" not registered`);let o=r,s=o.workflowID;if(!s)throw Error(`DBOS.workflowID is not available in this context`);let c={container:t,workflowId:s,scheduledTime:i,step:(e,t)=>o.runStep(t,{name:e})};return e.run(c)};return{crontab:e.crontab,get name(){return n},register(a,o,s){t=a,n=o,r=s,s.registerScheduled(s.registerWorkflow(i,{name:o}),{crontab:e.crontab})}}}function p(t){return r(e(t,`.ts`))}async function m(e){let{container:r,dbos:i}=e,a=e.workflowsDir??t(process.cwd(),`api`,`workflows`),o=(e,t)=>{try{e.register(r,t,i)}catch(e){if(!(e instanceof Error)||!e.message.includes(`already registered`))throw e}},{extractBlobMetadata:s}=await import(`./extract-blob-metadata-DjPfHtQ2.mjs`),{generateImageVariant:c}=await import(`./generate-image-variant-D5VDFyWj.mjs`),{generatePreview:l}=await import(`./generate-preview-Dssw7w5U.mjs`),{purgeAttachment:d}=await import(`./purge-attachment-BBPzIxwt.mjs`),{trackDbChanges:f}=await import(`./track-db-changes-CFykw_YO.mjs`),{definePurgeAuditLogs:m}=await import(`./purge-audit-logs-BeZy3IFM.mjs`),{definePurgeUnattachedBlobs:h}=await import(`./purge-unattached-blobs-Duvv8Izd.mjs`);o(s,`extractBlobMetadata`),o(c,`generateImageVariant`),o(l,`generatePreview`),o(d,`purgeAttachment`),o(f,`trackDbChanges`),o(m(r.auth.auditLog?.purgeCron),`purgeAuditLogs`),o(h(r.storage.primary.purgeCron),`purgeUnattachedBlobs`);let g=await Array.fromAsync(n(`${a}/**/*.${u}`,{exclude:[`**/*.test.ts`,`**/*.spec.ts`,`**/*.test.js`,`**/*.spec.js`]}));for(let e of g){let t=await import(e);if(t.default&&typeof t.default==`object`&&`register`in t.default){let n=p(e);o(t.default,n)}}}export{c as a,u as c,i,l,d as n,a as o,m as r,s,f as t,o as u};
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node --import=appos/instrumentation --no-warnings
1
+ #!/usr/bin/env node
2
2
  function e(e){if(e&&typeof e==`object`&&`status`in e){let t=e.status;if(typeof t==`number`)return t}return e instanceof SyntaxError?400:500}function t(t,n={}){return async(r,i,a,o)=>{if(process.env.NODE_ENV===`production`)return o(r);try{let{default:t}=await import(`youch`),o=new t(r,i);o.addLink(e=>`<a href="${`https://stackoverflow.com/search?q=${encodeURIComponent(e)}`}" target="_blank" title="Search on StackOverflow">Search Stack Overflow</a>`),o.addLink(e=>`<a href="${`https://www.google.com/search?q=${encodeURIComponent(e)}`}" target="_blank" title="Search on Google">Search Google</a>`);let s=await o.toHTML().then(e=>n.theme===`dark`?e.replace(`<style>`,`<style>body { background: #1a1a1a; color: #f0f0f0; }`):e);a.writeHead(e(r),{"content-type":`text/html`}),a.end(s)}catch(n){t.error({error:n instanceof Error?n.message:n,originalError:r instanceof Error?r.message:r},`Failed to render Youch error page`),a.status(e(r)).json({error:{message:r instanceof Error?r.message:`Internal server error`,...process.env.NODE_ENV!==`production`&&{stack:r instanceof Error?r.stack:void 0}}})}}}export{t as defineYouchErrorHandler};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "appos",
3
- "version": "0.3.0-0",
3
+ "version": "0.3.1-0",
4
4
  "type": "module",
5
5
  "scripts": {
6
6
  "release": "release-it",