velloo 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/canvas/assets/index-B1OD0Yz5.css +2 -0
- package/canvas/assets/index-BWYFx2Rr.js +29 -0
- package/canvas/assets/lucide-all-Bcm80WFX.js +1 -0
- package/canvas/index.html +2 -2
- package/{chunk-t8xk4thc.js → chunk-00t0bz7x.js} +1 -1
- package/{chunk-c5zjen06.js → chunk-0446t32z.js} +1 -1
- package/{chunk-2fgfex9b.js → chunk-2dm4x17z.js} +1 -1
- package/{chunk-33r6266k.js → chunk-2h24va0j.js} +1 -1
- package/{chunk-jtsn41cs.js → chunk-2jbhv7vh.js} +1 -1
- package/{chunk-t4zss1tk.js → chunk-2y9nnzpr.js} +1 -1
- package/{chunk-nc5k1ez4.js → chunk-5ywkk7d6.js} +1 -1
- package/{chunk-25j8vgpa.js → chunk-6zr596r2.js} +1 -1
- package/{chunk-nte0t7v3.js → chunk-7a45tn73.js} +1 -1
- package/{chunk-sn9vg42q.js → chunk-7gtvstne.js} +1 -1
- package/{chunk-0r80246c.js → chunk-7xffbj5h.js} +1 -1
- package/{chunk-c6hywdvq.js → chunk-8t5phg0s.js} +1 -1
- package/{chunk-y0rwf1ze.js → chunk-91pajfnm.js} +1 -1
- package/{chunk-c4fym47a.js → chunk-a9mgvspm.js} +1 -1
- package/{chunk-ys3s5gaa.js → chunk-aa3str7g.js} +1 -1
- package/{chunk-8krqgzny.js → chunk-b4jy4hcd.js} +1 -1
- package/{chunk-e56eb38j.js → chunk-b58pnj20.js} +1 -1
- package/{chunk-38ev3cp3.js → chunk-b7famda5.js} +1 -1
- package/{chunk-vbe2r4kv.js → chunk-cejmmx3r.js} +1 -1
- package/{chunk-v0syg2hx.js → chunk-db7mf114.js} +1 -1
- package/{chunk-46xykc71.js → chunk-dj1pp4e3.js} +1 -1
- package/{chunk-hzjzmkp6.js → chunk-e6nhc3ay.js} +1 -1
- package/{chunk-tqwe5tc3.js → chunk-f5g45xed.js} +1 -1
- package/{chunk-n5acf0s3.js → chunk-hsrg23gd.js} +1 -1
- package/{chunk-rsy246re.js → chunk-hv52a6hf.js} +1 -1
- package/{chunk-bhx8k09w.js → chunk-j5axqyan.js} +1 -1
- package/{chunk-3gbmq4jz.js → chunk-jep31ffe.js} +1 -1
- package/{chunk-7cktk5qr.js → chunk-jwzhhhzn.js} +1 -1
- package/{chunk-zkn1m8tw.js → chunk-k3dpwjx4.js} +1 -1
- package/{chunk-cdxy4xzs.js → chunk-km3z2czq.js} +1 -1
- package/chunk-m1wp8cpt.js +2 -0
- package/{chunk-8g5ghy46.js → chunk-mcymwefw.js} +1 -1
- package/{chunk-6z0kpe65.js → chunk-n0kx20s2.js} +1 -1
- package/{chunk-tkvb3wb8.js → chunk-npsg7btt.js} +1 -1
- package/{chunk-5qd2ykvw.js → chunk-nwf2kn41.js} +1 -1
- package/{chunk-vh4144az.js → chunk-ph94nrc8.js} +1 -1
- package/chunk-phz993p3.js +2 -0
- package/{chunk-09385g5r.js → chunk-py6sjyzk.js} +1 -1
- package/{chunk-egccxmed.js → chunk-qan5dnjt.js} +11 -11
- package/{chunk-z1r0sc3k.js → chunk-r03aywsb.js} +1 -1
- package/{chunk-yjmawrv5.js → chunk-r5d0jsnd.js} +1 -1
- package/{chunk-js6mz7h1.js → chunk-r9ekd92e.js} +1 -1
- package/{chunk-8sfx5x8k.js → chunk-rfrbnw8r.js} +1 -1
- package/{chunk-1tdh4h14.js → chunk-shac6bat.js} +1 -1
- package/{chunk-syg6k8m0.js → chunk-t4zvcece.js} +1 -1
- package/{chunk-8yz604tw.js → chunk-t9ygewjx.js} +1 -1
- package/{chunk-6qfyem23.js → chunk-tarws372.js} +1 -1
- package/{chunk-4rvmpsda.js → chunk-tr49kraa.js} +1 -1
- package/{chunk-3kqtny5t.js → chunk-vjrn10xr.js} +1 -1
- package/{chunk-k10n8na7.js → chunk-xbhxzdat.js} +1 -1
- package/{chunk-8yadb6xz.js → chunk-yfttm20w.js} +1 -1
- package/chunk-yghypth2.js +2 -0
- package/chunk-ykdx12na.js +4 -0
- package/{chunk-q4d60wr3.js → chunk-zqtz23xk.js} +1 -1
- package/cli.js +1 -1
- package/package.json +1 -1
- package/pkgs/schema/src/comment.ts +12 -0
- package/pkgs/schema/src/index.ts +1 -0
- package/canvas/assets/index-CSSyvzzo.css +0 -2
- package/canvas/assets/index-MXiDRs_Q.js +0 -29
- package/canvas/assets/lucide-all-BSrW0hTo.js +0 -1
- package/chunk-cgzhcvsj.js +0 -2
- package/chunk-gsne0ap4.js +0 -2
- package/chunk-njhdn9j0.js +0 -4
- package/chunk-va9v9y5m.js +0 -2
package/chunk-cgzhcvsj.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{upgrade_default,migrateFolder2}from"./chunk-e56eb38j.js";import"./chunk-pjtg3wnm.js";import"./chunk-3kqtny5t.js";import"./chunk-8sfx5x8k.js";import"./chunk-46xykc71.js";import"./chunk-1tdh4h14.js";import"./chunk-80fjfyha.js";import"./chunk-egccxmed.js";import"./chunk-c4fym47a.js";import"./chunk-25j8vgpa.js";import"./chunk-gsne0ap4.js";import"./chunk-tkvb3wb8.js";import"./chunk-q4d60wr3.js";import"./chunk-s23gtejf.js";import"./chunk-nte0t7v3.js";export{upgrade_default as default,migrateFolder2 as migrateFolder};
|
package/chunk-gsne0ap4.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{NEVER,string,number,boolean,_null,unknown,array,object,strictObject,union,record,_enum,literal,preprocess,FrameSchemeSchema,MAX_BOARD_NAME_LENGTH,NodeIdSchema,RepoComponentRefSchema,NodeSchema,SnippetParamSchema}from"./chunk-nte0t7v3.js";var Visibility=_enum(["public","private"]),AuthConfigResponseSchema=object({appUrl:string().optional(),issuer:string().optional(),clientId:string().optional()}),HealthResponseSchema=object({ok:boolean().optional(),db:object({ok:boolean().optional()}).optional(),blob:object({ok:boolean().optional()}).optional()}),AccountResponseSchema=object({email:string(),name:string().optional(),tier:string().optional(),creditMicros:number().nullable().optional()});function protectedSharesAllowed(tier){return tier!=="free"}var PROTECTED_SHARES_UNAVAILABLE="private and password-protected links need a paid plan \u2014 free accounts publish public links only";function teamOnlyAllowed(tier){return tier===void 0||tier==="business"||tier==="enterprise"}var GUESTS_UNAVAILABLE="sharing a board with guests needs a paid plan \u2014 upgrade your plan to invite guests",PublishSlotSchema=object({slug:string(),url:string(),title:string(),teamId:string().nullable(),visibility:Visibility,passwordProtected:boolean(),latestVersionId:string().nullable(),lastPublishedAt:string().nullable(),context:object({boardIds:array(string()),selectionFingerprint:string().nullable(),contextKnown:boolean(),repo:string().nullable(),branch:string().nullable()})}),PublishDestinationsResponseSchema=object({effectiveTeamId:string().nullable(),slots:array(PublishSlotSchema)}),LinkAudienceEntrySchema=object({type:_enum(["organization","team","account"]),id:string(),name:string().optional()}),LinkResponseSchema=object({slug:string(),visibility:Visibility.optional(),passwordProtected:boolean().optional(),audience:array(LinkAudienceEntrySchema).optional(),publicComments:boolean().optional()}),LinkAccessResponseSchema=object({visibility:Visibility,passwordProtected:boolean(),audience:array(LinkAudienceEntrySchema).optional(),publicComments:boolean().optional()}),VersionUploadResponseSchema=object({files:number(),bytes:number(),url:string(),tier:string().optional(),history:object({retained:boolean(),versions:number(),pruned:number()}).optional()}),PublishedDesignSchema=object({slug:string(),title:string().nullable(),url:string(),visibility:Visibility,passwordProtected:boolean(),canManage:boolean(),mine:boolean(),ownerEmail:string().nullable().optional(),ownerName:string().nullable().optional(),teamName:string().nullable().optional(),audience:array(LinkAudienceEntrySchema).optional(),publicComments:boolean().optional(),guestCount:number().optional(),git:object({repo:string().optional(),branch:string().optional()}).nullable().optional(),published:boolean(),lastPublishedAt:string().nullable()}),PublishedDesignsResponseSchema=object({links:array(PublishedDesignSchema).optional()}),TeamSchema=object({id:string(),name:string(),isDefault:boolean().optional(),role:string().optional(),canPublish:boolean().optional(),canManage:boolean().optional()}),TeamsResponseSchema=object({teams:array(TeamSchema)}),GuestSchema=object({id:string(),name:string().nullable(),email:string().optional(),createdAt:string(),lastSeenAt:string().nullable(),linkExpiresAt:string().nullable().optional()}),GuestsResponseSchema=object({guests:array(GuestSchema)}),GuestInviteResponseSchema=object({guest:GuestSchema,delivery:object({sent:boolean(),reason:string().optional()}),guestUrl:string().optional()}),GuestLinkResponseSchema=object({guestUrl:string()}),DeviceCodeResponseSchema=object({device_code:string(),user_code:string(),verification_uri:string(),verification_uri_complete:string(),expires_in:number(),interval:number()}),DeviceTokenResponseSchema=object({access_token:string().optional(),error:string().optional(),error_description:string().optional()}),CliTokenResponseSchema=object({token:string(),email:string()}),IntentPriceSchema=object({intent:string(),summary:string(),priceMicros:number(),output:_enum(["image","svg"]),aspects:array(string()),defaultAspect:string(),reference:_enum(["forbidden","optional","required"])}),IntentCatalogResponseSchema=object({intents:array(IntentPriceSchema),maxCount:number().optional()}),GeneratedAssetPayloadSchema=object({kind:_enum(["image","svg"]),dataUrl:string()}),GenerateResponseSchema=object({id:string(),intent:string().optional(),chargedMicros:number(),balanceMicros:number(),assets:array(GeneratedAssetPayloadSchema).min(1).optional(),kind:_enum(["image","svg"]).optional(),dataUrl:string().optional()}).transform((r,ctx)=>{let assets=r.assets??(r.dataUrl&&r.kind?[{kind:r.kind,dataUrl:r.dataUrl}]:null);if(!assets)return ctx.addIssue({code:"custom",message:"no assets in the generation reply"}),NEVER;return{id:r.id,intent:r.intent??"",assets,chargedMicros:r.chargedMicros,balanceMicros:r.balanceMicros}}),FeedbackIssuerResponseSchema=object({scheme:string(),publicKey:string()}),FeedbackSignaturesResponseSchema=object({signatures:array(string())});var ACTIVITY_EVENT_TYPE="activity",SocketFrameSchema=union([object({type:literal("screen-changed"),screenId:string().min(1)}),object({type:literal("board-changed"),boardId:string().min(1)}),object({type:literal("theme-changed")}),object({type:literal("snippet-changed"),snippetId:string().min(1)}),object({type:literal("annotations-changed"),screenId:string().min(1)}),object({type:literal("notes-changed"),boardId:string().min(1)}),object({type:literal("comments-changed"),boardId:string().min(1),scope:_enum(["local","shared"])}),object({type:literal("config-changed")}),object({type:literal("folder-reloaded")}),object({type:literal("reload-error"),source:string(),message:string()}),object({type:literal(ACTIVITY_EVENT_TYPE)}).loose()]);var CLOUD_ERROR_CODES=["bad_request","unauthorized","sign_in_required","insufficient_credits","forbidden","not_found","conflict","payload_too_large","unsupported_media_type","rate_limited","generation_failed","billing_upstream","unavailable","storage_unavailable","internal"];function isCloudErrorCode(value){return typeof value==="string"&&CLOUD_ERROR_CODES.includes(value)}var unreachable=(error,opts={})=>({kind:"Unreachable",detail:error instanceof Error?error.message:String(error),...opts.url!==void 0?{url:opts.url}:{},...opts.timedOut?{timedOut:!0}:{}}),httpFailure=(operation,status,detail,code)=>({kind:"HttpFailure",operation,status,detail:detail&&detail.length>0?detail:"unknown",...code!==void 0?{code}:{}}),loggedOut=(detail)=>detail===void 0?{kind:"LoggedOut"}:{kind:"LoggedOut",detail},protocolViolation=(detail)=>({kind:"ProtocolViolation",detail}),uploadRaceLost=()=>({kind:"UploadRaceLost"}),insecureCloudUrl=(url)=>({kind:"InsecureCloudUrl",url}),invalidRequest=(detail)=>({kind:"InvalidRequest",detail});async function readFailure(res){let body=await res.json().catch(()=>{return});if(!body||typeof body!=="object")return{detail:"unknown"};let{message,error}=body,detail=typeof message==="string"&&message.length>0?message:"unknown";return isCloudErrorCode(error)?{detail,code:error}:{detail}}function cloudFailure(operation,status,detail,code){if(status!==401&&code!=="unauthorized")return httpFailure(operation,status,detail,code);return loggedOut(detail&&detail.length>0&&detail!=="unknown"?`velloo-cloud rejected the stored credential (${detail})`:"velloo-cloud rejected the stored credential")}async function httpFailureFrom(operation,res){let{detail,code}=await readFailure(res);return cloudFailure(operation,res.status,detail,code)}function boardLimitFrom(error){if(error.kind!=="HttpFailure"||error.status!==403)return null;let match=/\bthe (\w+) plan is limited to (\d+) active cloud boards\b/.exec(error.detail);if(!match?.[1]||!match[2])return null;return{tier:match[1],limit:Number(match[2])}}function describeBoardLimit({tier,limit}){return`the ${tier} plan keeps ${limit} board${limit===1?"":"s"} published at a time \u2014 take one down to publish another`}var serverTrouble=(status)=>status>=500?" \u2014 the cloud is having trouble; check its status or try again later":"";function describeCloudError(error){switch(error.kind){case"Unreachable":{let target=error.url?`cannot reach ${error.url}`:"cannot reach the cloud";return error.timedOut?`${target} \u2014 timed out (${error.detail}); check your connection and try again`:`${target} (${error.detail}) \u2014 check your connection and try again`}case"HttpFailure":return`${error.operation} failed (${error.status}): ${error.detail}${serverTrouble(error.status)}`;case"LoggedOut":return error.detail?`${error.detail} \u2014 run \`velloo login\``:"you are signed out \u2014 run `velloo login`";case"ProtocolViolation":return`${error.detail} \u2014 this is a bug; please report it`;case"UploadRaceLost":return"upload confirmation was lost and the retry found the publish slot changed \u2014 "+"the publish may have succeeded; check your published boards before retrying";case"InsecureCloudUrl":return`refusing to send credentials to ${error.url} over an insecure connection`;case"InvalidRequest":return error.detail;default:{let exhaustive=error;return"the cloud request failed"}}}function ok(value){return{ok:!0,value}}function err(error){return{ok:!1,error}}function map(r,fn){return r.ok?ok(fn(r.value)):r}async function tryCatchAsync(fn,onError){try{return ok(await fn())}catch(thrown){return err(onError(thrown))}}function*$(r){if(!r.ok)throw yield r,Error("unreachable: generator resumed after err");return r.value}async function DoAsync(gen){let iter=gen(),step=await iter.next();while(!step.done){let r=step.value;if(!r.ok)return r;step=await iter.next(r.value)}return ok(step.value)}async function cloudJson(res,schema,operation){let body;try{body=await res.json()}catch(error){return err(protocolViolation(`${operation}: the cloud's response was not JSON (${error instanceof Error?error.message:String(error)})`))}let parsed=schema.safeParse(body);if(!parsed.success)return err(protocolViolation(`${operation}: the cloud's response did not match the protocol`));return ok(parsed.data)}async function cloudFetch(url,schema,opts){let{operation,token,timeoutMs,...init}=opts,res;try{res=await fetch(url,{...init,headers:{...token!==void 0?{authorization:`Bearer ${token}`}:{},...init.headers},...timeoutMs!==void 0?{signal:AbortSignal.timeout(timeoutMs)}:{}})}catch(error){let timedOut=error instanceof Error&&error.name==="TimeoutError";return err(unreachable(error,{url,...timedOut?{timedOut:!0}:{}}))}if(!res.ok)return err(await httpFailureFrom(operation,res));return cloudJson(res,schema,operation)}var PathArraySchema=array(number()),IdLocatorSchema=string().regex(/^@[a-zA-Z][a-zA-Z0-9_-]*$/,{message:"id locator must match /^@[a-zA-Z][a-zA-Z0-9_-]*$/"}),jsonTolerant=(schema)=>preprocess((v)=>{if(typeof v==="string"){let t=v.trim();if(t.startsWith("[")||t.startsWith("{"))try{return JSON.parse(t)}catch{}}return v},schema),singularTolerant=(schema)=>preprocess((v)=>typeof v==="object"&&v!==null&&!Array.isArray(v)?[v]:v,schema),LocatorSchema=jsonTolerant(union([PathArraySchema,IdLocatorSchema])).describe('Node address: an "@id" like "@hero-cta", or an index path from the root ([0,2,1])'),LocatorOrRootSchema=LocatorSchema.default([]),InnerPathSchema=string().describe('Body node: "@id" (preferred \u2014 survives restructures), a dotted index path ("0.2"), or "" for the root'),PatchRecordSchema=record(string(),unknown());var invalid=(message,issues)=>issues===void 0?{ok:!1,message}:{ok:!1,message,issues},ScreenId=string().min(1),BoardId=string().min(1),FrameId=string().min(1),SnippetId=string().min(1),FramePatchSchema=strictObject({x:number().optional(),y:number().optional(),w:number().int().positive().optional(),h:number().int().positive().optional(),label:string().nullable().optional(),group:string().nullable().optional(),scheme:FrameSchemeSchema.nullable().optional()}),EmitAsSchema=object({name:string().min(1),importPath:string().min(1)}).describe("Mark the node a host-component facade: the canvas renders the subtree, emit_code emits <name /> from importPath instead."),AnnotationPositionSchema=union([object({x:number(),y:number()}),literal("auto")]),addNodeShape={screenId:ScreenId,parentPath:LocatorOrRootSchema,componentRef:string().min(1),id:NodeIdSchema.optional(),props:PatchRecordSchema.optional(),children:jsonTolerant(union([array(NodeSchema),string(),number()])).optional(),index:number().int().nonnegative().optional(),emitAs:EmitAsSchema.optional(),repo:RepoComponentRefSchema.optional().describe("Place an app component by identity (importPath + exportName [+ member]) when it isn't in list_components' repo catalog yet")},AddNodeBody=strictObject(addNodeShape);function normalizeAddNode(input){let{children,...rest}=input;if(typeof children==="string"||typeof children==="number")return invalid("add_node: `children` must be an array of nodes.",[{code:"invalid_type",expected:"array",path:["children"]}]);let props=input.props;return{ok:!0,args:{...rest,...props===void 0?{}:{props},...children===void 0?{}:{children}}}}var StylePayloadSchema=jsonTolerant(union([string(),PatchRecordSchema,_null()])).describe("Native style channel: a className string (Tailwind), an object of properties (sx / style), or null to clear"),PropsPatchEntrySchema=object({path:LocatorSchema,propPatch:PatchRecordSchema.optional(),style:StylePayloadSchema.optional()}).refine((e)=>e.propPatch!==void 0||e.style!==void 0,{message:"each patch needs propPatch, style, or both"}),GestureSchema=string().max(64).optional().describe("Opaque id of the drag this write belongs to; merges its undo steps into one"),updatePropsShape={screenId:ScreenId,patches:jsonTolerant(singularTolerant(array(PropsPatchEntrySchema).min(1))).describe("One entry per node; length 1 for a single edit"),gesture:GestureSchema},UpdatePropsBody=strictObject(updatePropsShape),applyClassesShape={screenId:ScreenId,path:LocatorOrRootSchema,classes:string(),gesture:GestureSchema},ApplyClassesBody=strictObject(applyClassesShape),removeNodeShape={screenId:ScreenId,path:LocatorSchema},RemoveNodeBody=strictObject(removeNodeShape),moveNodeShape={screenId:ScreenId,fromPath:LocatorSchema,toParent:LocatorSchema,toIndex:number().int().nonnegative().optional()},MoveNodeBody=strictObject(moveNodeShape),setNodeIdShape={screenId:ScreenId,path:LocatorSchema,id:NodeIdSchema.nullable()},SetNodeIdBody=strictObject(setNodeIdShape),RoutePath=string().trim().min(1).transform((value)=>value.startsWith("/")?value:`/${value}`),addScreenShape={name:string().min(1),id:string().min(1).optional(),fromScreenId:string().min(1).optional(),tree:NodeSchema.optional(),route:RoutePath.optional()},AddScreenBody=strictObject(addScreenShape),removeScreenShape={screenId:ScreenId},RemoveScreenBody=strictObject(removeScreenShape),setScreenTreeShape={screenId:ScreenId,tree:NodeSchema},SetScreenTreeBody=strictObject(setScreenTreeShape),updateScreenShape={screenId:ScreenId,patch:object({name:string().min(1).optional(),route:RoutePath.nullable().optional()})},UpdateScreenBody=strictObject(updateScreenShape),addBoardShape={name:string().min(1).max(MAX_BOARD_NAME_LENGTH),id:string().min(1).optional(),group:string().min(1).optional()},AddBoardBody=strictObject(addBoardShape),updateBoardShape={boardId:BoardId,patch:object({name:string().min(1).max(MAX_BOARD_NAME_LENGTH).optional(),theme:string().min(1).nullable().optional(),archived:boolean().optional(),group:string().min(1).nullable().optional()})},UpdateBoardBody=strictObject(updateBoardShape),removeBoardShape={boardId:BoardId},RemoveBoardBody=strictObject(removeBoardShape),reorderBoardsShape={order:array(string().min(1))},ReorderBoardsBody=strictObject(reorderBoardsShape),addBoardGroupShape={name:string().min(1),color:string().min(1).optional()},AddBoardGroupBody=strictObject(addBoardGroupShape),updateBoardGroupShape={groupId:string().min(1),patch:object({name:string().min(1).optional(),color:string().min(1).nullable().optional()})},UpdateBoardGroupBody=strictObject(updateBoardGroupShape),removeBoardGroupShape={groupId:string().min(1)},RemoveBoardGroupBody=strictObject(removeBoardGroupShape),reorderBoardGroupsShape={order:array(string().min(1))},ReorderBoardGroupsBody=strictObject(reorderBoardGroupsShape),addFrameShape={boardId:BoardId,screenId:ScreenId,x:number().optional(),y:number().optional(),w:number().int().positive(),h:number().int().positive(),label:string().optional(),group:string().optional(),id:string().min(1).optional()},AddFrameBody=strictObject(addFrameShape),FramePatchEntrySchema=preprocess((v)=>{if(typeof v!=="object"||v===null||Array.isArray(v)||"patch"in v)return v;let{frameId,...patch}=v;return Object.keys(patch).length>0?{frameId,patch}:v},object({frameId:FrameId,patch:FramePatchSchema})),updateFrameShape={boardId:BoardId,patches:jsonTolerant(singularTolerant(array(FramePatchEntrySchema).min(1))).describe("One entry per frame; length 1 for a single edit")},UpdateFrameBody=strictObject(updateFrameShape),removeFrameShape={boardId:BoardId,frameId:FrameId},RemoveFrameBody=strictObject(removeFrameShape),moveFrameShape={boardId:BoardId,frameId:FrameId,toBoardId:BoardId,x:number().optional(),y:number().optional()},MoveFrameBody=strictObject(moveFrameShape),addSnippetShape={name:string().min(1),id:string().min(1).optional(),params:array(SnippetParamSchema).default([]),tree:NodeSchema},AddSnippetBody=strictObject(addSnippetShape),updateSnippetShape={snippetId:SnippetId,patch:object({name:string().min(1).optional(),params:array(SnippetParamSchema).optional(),tree:NodeSchema.optional(),innerPatch:object({innerPath:InnerPathSchema,propPatch:PatchRecordSchema}).optional()})},UpdateSnippetBody=strictObject(updateSnippetShape),removeSnippetShape={snippetId:SnippetId},RemoveSnippetBody=strictObject(removeSnippetShape),instantiateSnippetShape={screenId:ScreenId,parentPath:LocatorOrRootSchema,snippetId:SnippetId,id:NodeIdSchema.optional(),args:PatchRecordSchema.optional(),extraClassName:string().optional().describe("One-off classes layered onto the snippet body's root, for this instance"),overrides:record(string(),object({props:PatchRecordSchema})).optional(),index:number().int().nonnegative().optional()},InstantiateSnippetBody=strictObject(instantiateSnippetShape),overrideSnippetPropsShape={screenId:ScreenId,path:LocatorSchema,innerPath:InnerPathSchema,propPatch:PatchRecordSchema},OverrideSnippetPropsBody=strictObject(overrideSnippetPropsShape),updateSnippetArgsShape={screenId:ScreenId,path:LocatorSchema,argPatch:PatchRecordSchema.default({}),extraClassName:string().nullable().optional(),gesture:GestureSchema},UpdateSnippetArgsBody=strictObject(updateSnippetArgsShape),updateSnippetInstanceShape={screenId:ScreenId,path:LocatorSchema,argPatch:PatchRecordSchema.optional(),extraClassName:string().nullable().optional(),innerPath:InnerPathSchema.optional(),propPatch:PatchRecordSchema.optional()},UpdateSnippetInstanceBody=strictObject(updateSnippetInstanceShape);function normalizeUpdateSnippetInstance(input){let wantsArgs=input.argPatch!==void 0||input.extraClassName!==void 0,hasInner=input.innerPath!==void 0,hasPatch=input.propPatch!==void 0;if(hasInner!==hasPatch)return invalid("update_snippet_instance: innerPath and propPatch go together.");if(!wantsArgs&&!hasInner)return invalid("update_snippet_instance: pass argPatch, extraClassName, or innerPath+propPatch.");let plan={};if(wantsArgs)plan.args={screenId:input.screenId,path:input.path,argPatch:input.argPatch??{},...input.extraClassName!==void 0?{extraClassName:input.extraClassName}:{}};if(hasInner&&input.innerPath!==void 0&&input.propPatch!==void 0)plan.override={screenId:input.screenId,path:input.path,innerPath:input.innerPath,propPatch:input.propPatch};return{ok:!0,args:plan}}var addAnnotationShape={screenId:ScreenId,target:object({locator:LocatorSchema}),body:string(),position:AnnotationPositionSchema.optional(),collapsed:boolean().optional()},AddAnnotationBody=strictObject(addAnnotationShape),updateAnnotationShape={screenId:ScreenId,annotationId:string().min(1),patch:object({body:string().optional(),position:AnnotationPositionSchema.optional(),collapsed:boolean().nullable().optional()})},UpdateAnnotationBody=strictObject(updateAnnotationShape),removeAnnotationShape={screenId:ScreenId,annotationId:string().min(1)},RemoveAnnotationBody=strictObject(removeAnnotationShape),NoteAttachmentSchema=object({frameId:FrameId,screenId:ScreenId,locator:LocatorSchema}),addNoteShape={boardId:BoardId,x:number().optional(),y:number().optional(),width:number().positive().optional(),body:string(),attachment:NoteAttachmentSchema.optional()},AddNoteBody=object(addNoteShape).refine((a)=>a.attachment!==void 0||a.x!==void 0&&a.y!==void 0,{message:"A note without an attachment needs x and y",path:["x"]}),updateNoteShape={boardId:BoardId,noteId:string().min(1),patch:object({x:number().optional(),y:number().optional(),width:number().positive().optional(),body:string().optional()})},UpdateNoteBody=strictObject(updateNoteShape),removeNoteShape={boardId:BoardId,noteId:string().min(1)},RemoveNoteBody=strictObject(removeNoteShape),updateViewportPresetsShape={presets:array(object({name:string().min(1),w:number().int().positive(),h:number().int().positive()}))},UpdateViewportPresetsBody=strictObject(updateViewportPresetsShape),updateDefaultsShape={defaultBoard:string().min(1).nullable().optional(),defaultScreen:string().min(1).nullable().optional()},UpdateDefaultsBody=strictObject(updateDefaultsShape),updateCodegenShape={componentsAlias:string().nullable().optional()},UpdateCodegenBody=strictObject(updateCodegenShape),updateDesignNameShape={name:string()},UpdateDesignNameBody=strictObject(updateDesignNameShape),updateFeedbackShape={enabled:boolean().optional(),contactOk:boolean().optional()},UpdateFeedbackBody=strictObject(updateFeedbackShape);export{ok,err,map,tryCatchAsync,$,DoAsync,isCloudErrorCode,AuthConfigResponseSchema,HealthResponseSchema,AccountResponseSchema,protectedSharesAllowed,PROTECTED_SHARES_UNAVAILABLE,teamOnlyAllowed,GUESTS_UNAVAILABLE,PublishDestinationsResponseSchema,LinkResponseSchema,LinkAccessResponseSchema,VersionUploadResponseSchema,PublishedDesignsResponseSchema,TeamsResponseSchema,GuestsResponseSchema,GuestInviteResponseSchema,GuestLinkResponseSchema,DeviceCodeResponseSchema,DeviceTokenResponseSchema,CliTokenResponseSchema,IntentCatalogResponseSchema,GenerateResponseSchema,FeedbackIssuerResponseSchema,FeedbackSignaturesResponseSchema,unreachable,loggedOut,protocolViolation,uploadRaceLost,insecureCloudUrl,invalidRequest,readFailure,cloudFailure,httpFailureFrom,boardLimitFrom,describeBoardLimit,describeCloudError,cloudJson,cloudFetch,LocatorSchema,AddNodeBody,normalizeAddNode,updatePropsShape,UpdatePropsBody,ApplyClassesBody,removeNodeShape,RemoveNodeBody,moveNodeShape,MoveNodeBody,setNodeIdShape,SetNodeIdBody,addScreenShape,AddScreenBody,removeScreenShape,RemoveScreenBody,SetScreenTreeBody,updateScreenShape,addBoardShape,AddBoardBody,updateBoardShape,UpdateBoardBody,removeBoardShape,RemoveBoardBody,reorderBoardsShape,ReorderBoardsBody,AddBoardGroupBody,UpdateBoardGroupBody,RemoveBoardGroupBody,ReorderBoardGroupsBody,addFrameShape,AddFrameBody,updateFrameShape,UpdateFrameBody,removeFrameShape,RemoveFrameBody,MoveFrameBody,addSnippetShape,AddSnippetBody,updateSnippetShape,UpdateSnippetBody,removeSnippetShape,RemoveSnippetBody,InstantiateSnippetBody,UpdateSnippetArgsBody,updateSnippetInstanceShape,UpdateSnippetInstanceBody,normalizeUpdateSnippetInstance,AddAnnotationBody,UpdateAnnotationBody,RemoveAnnotationBody,AddNoteBody,UpdateNoteBody,RemoveNoteBody,updateViewportPresetsShape,UpdateViewportPresetsBody,UpdateDefaultsBody,UpdateCodegenBody,UpdateDesignNameBody,UpdateFeedbackBody};
|
package/chunk-njhdn9j0.js
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{AuthConfigResponseSchema,AccountResponseSchema,DeviceCodeResponseSchema,DeviceTokenResponseSchema,CliTokenResponseSchema,readFailure}from"./chunk-gsne0ap4.js";import{string,object,record,literal}from"./chunk-nte0t7v3.js";import{openUrl}from"./chunk-hggap8fq.js";import{isSecureCloudUrl,assertSecureCloudUrl}from"./chunk-25j8vgpa.js";import{chmod,mkdir,readFile,writeFile}from"fs/promises";import{homedir}from"os";import{dirname,join}from"path";var CloudCredentialSchema=object({token:string().min(1),email:string().min(1)}),CredentialsFileSchema=object({version:literal(1),clouds:record(string(),CloudCredentialSchema)}),credentialsPath=()=>process.env.VELLOO_CREDENTIALS_PATH??join(homedir(),".velloo","credentials.json"),normalizeCloudUrl=(url)=>url.replace(/\/+$/,"");async function readAll(){try{let parsed=CredentialsFileSchema.safeParse(JSON.parse(await readFile(credentialsPath(),"utf8")));if(parsed.success)return parsed.data}catch{}return{version:1,clouds:{}}}async function loadCredential(cloudUrl){return(await readAll()).clouds[normalizeCloudUrl(cloudUrl)]??null}async function listCredentials(){return(await readAll()).clouds}async function saveCredential(cloudUrl,cred){let all=await readAll();return all.clouds[normalizeCloudUrl(cloudUrl)]=cred,writeAll(all)}async function deleteCredential(cloudUrl){let all=await readAll(),key=normalizeCloudUrl(cloudUrl);if(!(key in all.clouds))return!1;return delete all.clouds[key],await writeAll(all),!0}async function clearCredentials(){let all=await readAll(),count=Object.keys(all.clouds).length;if(count===0)return 0;return await writeAll({version:1,clouds:{}}),count}async function writeAll(all){let path=credentialsPath();return await mkdir(dirname(path),{recursive:!0,mode:448}),await writeFile(path,`${JSON.stringify(all,null,2)}
|
|
3
|
-
`,{mode:384}),await chmod(path,384),path}import{hostname}from"os";async function fetchAccount(cloudUrl,token,timeoutMs=8000){if(!isSecureCloudUrl(cloudUrl))return{status:"unreachable"};let res=await fetch(`${cloudUrl}/v1/me`,{headers:{authorization:`Bearer ${token}`},signal:AbortSignal.timeout(timeoutMs)}).catch(()=>null);if(!res)return{status:"unreachable"};if(res.status===401||res.status===403)return{status:"rejected"};if(!res.ok)return{status:"unreachable"};let parsed=AccountResponseSchema.safeParse(await res.json().catch(()=>null));if(!parsed.success)return{status:"unreachable"};let body=parsed.data;return{status:"ok",account:{email:body.email,...body.name?{name:body.name}:{},...body.tier?{tier:body.tier}:{},...body.creditMicros!==void 0?{creditMicros:body.creditMicros}:{}}}}async function verifyCredential(cloudUrl,token,timeoutMs=8000){let found=await fetchAccount(cloudUrl,token,timeoutMs);return found.status==="ok"?found.account.email:null}async function revokeCredential(cloudUrl,token,timeoutMs=5000){if(!isSecureCloudUrl(cloudUrl))return!1;return(await fetch(`${cloudUrl}/v1/auth/cli-token`,{method:"DELETE",headers:{authorization:`Bearer ${token}`},signal:AbortSignal.timeout(timeoutMs)}).catch(()=>null))?.ok??!1}var sleepCancelable=(ms,signal)=>new Promise((resolve,reject)=>{if(signal.aborted){reject(Error("cancelled"));return}let timer=setTimeout(resolve,ms);signal.addEventListener("abort",()=>{clearTimeout(timer),reject(Error("cancelled"))},{once:!0})});async function performDeviceLogin(cloudUrl,onPrompt,signal){assertSecureCloudUrl(cloudUrl);let configRes=await fetch(`${cloudUrl}/v1/auth/config`).catch(()=>null);if(!configRes?.ok)throw Error(`cannot reach ${cloudUrl} \u2014 is velloo-cloud up?`);let config=AuthConfigResponseSchema.safeParse(await configRes.json().catch(()=>null)),issuer=config.success?config.data.issuer:void 0,clientId=config.success?config.data.clientId:void 0;if(issuer===void 0||clientId===void 0)throw Error(`${cloudUrl} does not advertise a sign-in service \u2014 is velloo-cloud current?`);let codeRes=await fetch(`${issuer}/api/auth/device/code`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({client_id:clientId})}).catch(()=>null);if(!codeRes?.ok)throw Error(`the auth service at ${issuer} is not answering \u2014 is it up?`);let deviceBody=DeviceCodeResponseSchema.safeParse(await codeRes.json().catch(()=>null));if(!deviceBody.success)throw Error(`the auth service at ${issuer} answered something this velloo can't read`);let device=deviceBody.data;await onPrompt({verificationUrl:device.verification_uri_complete,userCode:device.user_code,expiresIn:device.expires_in}),openUrl(device.verification_uri_complete);let deadline=Date.now()+device.expires_in*1000,intervalMs=Math.max(1,device.interval)*1000,accessToken=null,abortSignal=signal??new AbortController().signal;while(Date.now()<deadline){await sleepCancelable(intervalMs,abortSignal);let res=await fetch(`${issuer}/api/auth/device/token`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:device.device_code,client_id:clientId}),signal:abortSignal}),polled=DeviceTokenResponseSchema.safeParse(await res.json().catch(()=>({}))),body=polled.success?polled.data:{};if(body.access_token){accessToken=body.access_token;break}if(body.error==="authorization_pending")continue;if(body.error==="slow_down"){intervalMs+=5000;continue}throw Error(body.error_description??body.error??"device authorization failed")}if(!accessToken)throw Error("the sign-in code expired \u2014 run velloo login again");let label=hostname().trim().slice(0,80),exchangeRes=await fetch(`${cloudUrl}/v1/auth/cli-token`,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({accessToken,...label?{label}:{}})});if(exchangeRes.status!==201){let{detail}=await readFailure(exchangeRes);throw Error(`token exchange failed (${exchangeRes.status}): ${detail}`)}let exchanged=CliTokenResponseSchema.safeParse(await exchangeRes.json().catch(()=>null));if(!exchanged.success)throw Error(`${cloudUrl} returned a sign-in token this velloo can't read`);return exchanged.data}
|
|
4
|
-
export{normalizeCloudUrl,loadCredential,listCredentials,saveCredential,deleteCredential,clearCredentials,fetchAccount,verifyCredential,revokeCredential,performDeviceLogin};
|
package/chunk-va9v9y5m.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
// @bun
|
|
2
|
-
import{init_default,runInit2}from"./chunk-5qd2ykvw.js";import"./chunk-38ev3cp3.js";import"./chunk-3kqtny5t.js";import"./chunk-8sfx5x8k.js";import"./chunk-46xykc71.js";import"./chunk-njhdn9j0.js";import"./chunk-v0syg2hx.js";import"./chunk-vh4144az.js";import"./chunk-2fgfex9b.js";import"./chunk-1tdh4h14.js";import"./chunk-80fjfyha.js";import"./chunk-egccxmed.js";import"./chunk-c4fym47a.js";import"./chunk-25j8vgpa.js";import"./chunk-gsne0ap4.js";import"./chunk-tkvb3wb8.js";import"./chunk-z1r0sc3k.js";import"./chunk-q4d60wr3.js";import"./chunk-s23gtejf.js";import"./chunk-nte0t7v3.js";import"./chunk-cvn689d5.js";export{init_default as default,runInit2 as runInit};
|