@lightspeed/crane 3.4.4-rc.1 → 3.4.4-rc.3

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/CHANGELOG.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # Changelog
2
2
 
3
- ## 3.4.4 - 2026-05-29
3
+ ## 3.4.4 - 2026-06-01
4
4
 
5
5
  ### Changed
6
6
 
7
7
  - Updated dependencies
8
- - @lightspeed/crane-api@2.4.0
8
+ - @lightspeed/crane-api@2.3.3
9
9
 
10
10
  ## 3.4.3 - 2026-05-21
11
11
 
package/dist/cli.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import*as pt from"fs";import C,{existsSync as H,readFileSync as on,statSync as Qe,promises as rn,writeFileSync as sn,createReadStream as pi,mkdtempSync as fi,mkdirSync as hi,rmSync as co}from"fs";import*as ft from"path";import z,{resolve as S,dirname as uo,relative as lo,basename as mi,sep as an,parse as po,join as ee}from"path";import Ei from"cac";import{green as ce,yellow as gi,red as _i,gray as yi}from"kolorist";import ke from"prompts";import fo from"adm-zip";import{glob as I,globSync as ho}from"glob";import ue from"typescript";import{normalizePath as Si,build as ge,defineConfig as ht,createServer as Ti}from"vite";import{SectionTypeEnum as _e,BackgroundStyleEnum as cn,ButtonAppearanceEnum as Oi,ButtonSizeEnum as Ii,ButtonShapeEnum as wi,OverlayTypeEnum as mt,DesignEditorType as q,PluginTypeEnum as te,ConfigTypeEnum as N}from"@lightspeed/crane-api";import*as F from"process";import Et from"process";import{JSONPath as vi}from"jsonpath-plus";import{readFile as un,writeFile as Ci}from"fs/promises";import{pathToFileURL as mo,URL as Ri}from"url";import ln,{AxiosError as Eo}from"axios";import bi from"tinycolor2";import{builtinModules as go}from"module";import{viteExternalsPlugin as _o}from"vite-plugin-externals";import Ai from"vite-plugin-compression";import Ni from"@vitejs/plugin-vue";import $i from"vite-tsconfig-paths";import Di from"vite-plugin-checker";import{encode as Li}from"@jridgewell/sourcemap-codec";import{promisify as yo}from"node:util";import So from"node:zlib";import D from"node:fs";import V from"node:path";import j from"node:process";import ki from"micromatch";import{fileURLToPath as Pi}from"node:url";import{ConcurrencyManager as zi}from"axios-concurrency";import{inc as ji}from"semver";import Ui from"cli-progress";import{WebSocketServer as Fi,WebSocket as Mi}from"ws";import*as Gi from"os";import{spawnSync as xi}from"child_process";const Bi="3.4.4-rc.1",G={[_e.SECTION]:{source:"sections",dist:"dist/sections"},[_e.HEADER]:{source:"headers",dist:"dist/headers"},[_e.FOOTER]:{source:"footers",dist:"dist/footers"}};var R=(e=>(e[e.Server=0]="Server",e[e.Client=1]="Client",e[e.ClientChunks=2]="ClientChunks",e[e.ClientAsset=3]="ClientAsset",e[e.Asset=4]="Asset",e[e.TemplateAsset=5]="TemplateAsset",e[e.Dependency=6]="Dependency",e[e.SourceCode=7]="SourceCode",e[e.LayoutClient=8]="LayoutClient",e[e.LayoutAsset=9]="LayoutAsset",e[e.SlotServer=10]="SlotServer",e[e.SlotClient=11]="SlotClient",e[e.SlotClientChunks=12]="SlotClientChunks",e[e.SlotClientAsset=13]="SlotClientAsset",e[e.CollectionAsset=14]="CollectionAsset",e))(R||{});function Pe(e){const t={};for(const[n,o]of Object.entries(e)){let r={...o};if(o.type==="DECK"&&o.cards&&typeof o.cards=="object"&&"defaultCardContent"in o.cards){const s=o.cards;s.defaultCardContent?.settings&&(r={...r,cards:{...s,defaultCardContent:{...s.defaultCardContent,settings:Pe(s.defaultCardContent.settings)}}})}if(o.type==="ACCORDION"&&o.cards&&typeof o.cards=="object"&&!("defaultCardContent"in o.cards)){const s=o.cards,i={};for(const[a,c]of Object.entries(s))c.editors?i[a]={...c,editors:Pe(c.editors)}:i[a]=c;r={...r,cards:i}}if(r.defaults&&typeof r.defaults=="object"&&!("type"in r.defaults)){const s=Object.assign({type:r.type},r.defaults);r={...r,defaults:s}}t[n]=r}return t}function l(e,t,n){function o(a,c){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:c,constr:i,traits:new Set},enumerable:!1}),a._zod.traits.has(e))return;a._zod.traits.add(e),t(a,c);const u=i.prototype,d=Object.keys(u);for(let m=0;m<d.length;m++){const y=d[m];y in a||(a[y]=u[y].bind(a))}}const r=n?.Parent??Object;class s extends r{}Object.defineProperty(s,"name",{value:e});function i(a){var c;const u=n?.Parent?new s:this;o(u,a),(c=u._zod).deferred??(c.deferred=[]);for(const d of u._zod.deferred)d();return u}return Object.defineProperty(i,"init",{value:o}),Object.defineProperty(i,Symbol.hasInstance,{value:a=>n?.Parent&&a instanceof n.Parent?!0:a?._zod?.traits?.has(e)}),Object.defineProperty(i,"name",{value:e}),i}class ze extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class To extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}}const dn={};function ye(e){return e&&Object.assign(dn,e),dn}function Oo(e){const t=Object.values(e).filter(o=>typeof o=="number");return Object.entries(e).filter(([o,r])=>t.indexOf(+o)===-1).map(([o,r])=>r)}function pn(e,t){return typeof t=="bigint"?t.toString():t}function gt(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function fn(e){return e==null}function hn(e){const t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}function Zi(e,t){const n=(e.toString().split(".")[1]||"").length,o=t.toString();let r=(o.split(".")[1]||"").length;if(r===0&&/\d?e-\d?/.test(o)){const c=o.match(/\d?e-(\d?)/);c?.[1]&&(r=Number.parseInt(c[1]))}const s=n>r?n:r,i=Number.parseInt(e.toFixed(s).replace(".","")),a=Number.parseInt(t.toFixed(s).replace(".",""));return i%a/10**s}const Io=Symbol("evaluating");function b(e,t,n){let o;Object.defineProperty(e,t,{get(){if(o!==Io)return o===void 0&&(o=Io,o=n()),o},set(r){Object.defineProperty(e,t,{value:r})},configurable:!0})}function be(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function Ie(...e){const t={};for(const n of e){const o=Object.getOwnPropertyDescriptors(n);Object.assign(t,o)}return Object.defineProperties({},t)}function wo(e){return JSON.stringify(e)}function Hi(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}const vo="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function qe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}const Vi=gt(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const e=Function;return new e(""),!0}catch{return!1}});function je(e){if(qe(e)===!1)return!1;const t=e.constructor;if(t===void 0||typeof t!="function")return!0;const n=t.prototype;return!(qe(n)===!1||Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")===!1)}function Co(e){return je(e)?{...e}:Array.isArray(e)?[...e]:e}const Wi=new Set(["string","number","symbol"]);function Ue(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function we(e,t,n){const o=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(o._zod.parent=e),o}function g(e){const t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function Yi(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}const Ki={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Ji(e,t){const n=e._zod.def,o=n.checks;if(o&&o.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const s=Ie(e._zod.def,{get shape(){const i={};for(const a in t){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&(i[a]=n.shape[a])}return be(this,"shape",i),i},checks:[]});return we(e,s)}function Xi(e,t){const n=e._zod.def,o=n.checks;if(o&&o.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const s=Ie(e._zod.def,{get shape(){const i={...e._zod.def.shape};for(const a in t){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&delete i[a]}return be(this,"shape",i),i},checks:[]});return we(e,s)}function Qi(e,t){if(!je(t))throw new Error("Invalid input to extend: expected a plain object");const n=e._zod.def.checks;if(n&&n.length>0){const s=e._zod.def.shape;for(const i in t)if(Object.getOwnPropertyDescriptor(s,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const r=Ie(e._zod.def,{get shape(){const s={...e._zod.def.shape,...t};return be(this,"shape",s),s}});return we(e,r)}function qi(e,t){if(!je(t))throw new Error("Invalid input to safeExtend: expected a plain object");const n=Ie(e._zod.def,{get shape(){const o={...e._zod.def.shape,...t};return be(this,"shape",o),o}});return we(e,n)}function ea(e,t){const n=Ie(e._zod.def,{get shape(){const o={...e._zod.def.shape,...t._zod.def.shape};return be(this,"shape",o),o},get catchall(){return t._zod.def.catchall},checks:[]});return we(e,n)}function ta(e,t,n){const r=t._zod.def.checks;if(r&&r.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const i=Ie(t._zod.def,{get shape(){const a=t._zod.def.shape,c={...a};if(n)for(const u in n){if(!(u in a))throw new Error(`Unrecognized key: "${u}"`);n[u]&&(c[u]=e?new e({type:"optional",innerType:a[u]}):a[u])}else for(const u in a)c[u]=e?new e({type:"optional",innerType:a[u]}):a[u];return be(this,"shape",c),c},checks:[]});return we(t,i)}function na(e,t,n){const o=Ie(t._zod.def,{get shape(){const r=t._zod.def.shape,s={...r};if(n)for(const i in n){if(!(i in s))throw new Error(`Unrecognized key: "${i}"`);n[i]&&(s[i]=new e({type:"nonoptional",innerType:r[i]}))}else for(const i in r)s[i]=new e({type:"nonoptional",innerType:r[i]});return be(this,"shape",s),s}});return we(t,o)}function Fe(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function Me(e,t){return t.map(n=>{var o;return(o=n).path??(o.path=[]),n.path.unshift(e),n})}function _t(e){return typeof e=="string"?e:e?.message}function ve(e,t,n){const o={...e,path:e.path??[]};if(!e.message){const r=_t(e.inst?._zod.def?.error?.(e))??_t(t?.error?.(e))??_t(n.customError?.(e))??_t(n.localeError?.(e))??"Invalid input";o.message=r}return delete o.inst,delete o.continue,t?.reportInput||delete o.input,o}function mn(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function et(...e){const[t,n,o]=e;return typeof t=="string"?{message:t,code:"custom",input:n,inst:o}:{...t}}const Ro=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,pn,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},bo=l("$ZodError",Ro),Ao=l("$ZodError",Ro,{Parent:Error});function oa(e,t=n=>n.message){const n={},o=[];for(const r of e.issues)r.path.length>0?(n[r.path[0]]=n[r.path[0]]||[],n[r.path[0]].push(t(r))):o.push(t(r));return{formErrors:o,fieldErrors:n}}function ra(e,t=n=>n.message){const n={_errors:[]},o=r=>{for(const s of r.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(i=>o({issues:i}));else if(s.code==="invalid_key")o({issues:s.issues});else if(s.code==="invalid_element")o({issues:s.issues});else if(s.path.length===0)n._errors.push(t(s));else{let i=n,a=0;for(;a<s.path.length;){const c=s.path[a];a===s.path.length-1?(i[c]=i[c]||{_errors:[]},i[c]._errors.push(t(s))):i[c]=i[c]||{_errors:[]},i=i[c],a++}}};return o(e),n}const En=e=>(t,n,o,r)=>{const s=o?Object.assign(o,{async:!1}):{async:!1},i=t._zod.run({value:n,issues:[]},s);if(i instanceof Promise)throw new ze;if(i.issues.length){const a=new(r?.Err??e)(i.issues.map(c=>ve(c,s,ye())));throw vo(a,r?.callee),a}return i.value},gn=e=>async(t,n,o,r)=>{const s=o?Object.assign(o,{async:!0}):{async:!0};let i=t._zod.run({value:n,issues:[]},s);if(i instanceof Promise&&(i=await i),i.issues.length){const a=new(r?.Err??e)(i.issues.map(c=>ve(c,s,ye())));throw vo(a,r?.callee),a}return i.value},yt=e=>(t,n,o)=>{const r=o?{...o,async:!1}:{async:!1},s=t._zod.run({value:n,issues:[]},r);if(s instanceof Promise)throw new ze;return s.issues.length?{success:!1,error:new(e??bo)(s.issues.map(i=>ve(i,r,ye())))}:{success:!0,data:s.value}},sa=yt(Ao),St=e=>async(t,n,o)=>{const r=o?Object.assign(o,{async:!0}):{async:!0};let s=t._zod.run({value:n,issues:[]},r);return s instanceof Promise&&(s=await s),s.issues.length?{success:!1,error:new e(s.issues.map(i=>ve(i,r,ye())))}:{success:!0,data:s.value}},ia=St(Ao),aa=e=>(t,n,o)=>{const r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return En(e)(t,n,r)},ca=e=>(t,n,o)=>En(e)(t,n,o),ua=e=>async(t,n,o)=>{const r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return gn(e)(t,n,r)},la=e=>async(t,n,o)=>gn(e)(t,n,o),da=e=>(t,n,o)=>{const r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return yt(e)(t,n,r)},pa=e=>(t,n,o)=>yt(e)(t,n,o),fa=e=>async(t,n,o)=>{const r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return St(e)(t,n,r)},ha=e=>async(t,n,o)=>St(e)(t,n,o),ma=/^[cC][^\s-]{8,}$/,Ea=/^[0-9a-z]+$/,ga=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,_a=/^[0-9a-vA-V]{20}$/,ya=/^[A-Za-z0-9]{27}$/,Sa=/^[a-zA-Z0-9_-]{21}$/,Ta=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Oa=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,No=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Ia=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,wa="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function va(){return new RegExp(wa,"u")}const Ca=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Ra=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,ba=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Aa=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Na=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,$o=/^[A-Za-z0-9_-]*$/,$a=/^\+[1-9]\d{6,14}$/,Do="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",Da=new RegExp(`^${Do}$`);function Lo(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function La(e){return new RegExp(`^${Lo(e)}$`)}function ka(e){const t=Lo({precision:e.precision}),n=["Z"];e.local&&n.push(""),e.offset&&n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const o=`${t}(?:${n.join("|")})`;return new RegExp(`^${Do}T(?:${o})$`)}const Pa=e=>{const t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},za=/^-?\d+$/,ko=/^-?\d+(?:\.\d+)?$/,ja=/^(?:true|false)$/i,Ua=/^[^A-Z]*$/,Fa=/^[^a-z]*$/,J=l("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Po={number:"number",bigint:"bigint",object:"date"},zo=l("$ZodCheckLessThan",(e,t)=>{J.init(e,t);const n=Po[typeof t.value];e._zod.onattach.push(o=>{const r=o._zod.bag,s=(t.inclusive?r.maximum:r.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<s&&(t.inclusive?r.maximum=t.value:r.exclusiveMaximum=t.value)}),e._zod.check=o=>{(t.inclusive?o.value<=t.value:o.value<t.value)||o.issues.push({origin:n,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:o.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),jo=l("$ZodCheckGreaterThan",(e,t)=>{J.init(e,t);const n=Po[typeof t.value];e._zod.onattach.push(o=>{const r=o._zod.bag,s=(t.inclusive?r.minimum:r.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>s&&(t.inclusive?r.minimum=t.value:r.exclusiveMinimum=t.value)}),e._zod.check=o=>{(t.inclusive?o.value>=t.value:o.value>t.value)||o.issues.push({origin:n,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:o.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Ma=l("$ZodCheckMultipleOf",(e,t)=>{J.init(e,t),e._zod.onattach.push(n=>{var o;(o=n._zod.bag).multipleOf??(o.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof n.value=="bigint"?n.value%t.value===BigInt(0):Zi(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Ga=l("$ZodCheckNumberFormat",(e,t)=>{J.init(e,t),t.format=t.format||"float64";const n=t.format?.includes("int"),o=n?"int":"number",[r,s]=Ki[t.format];e._zod.onattach.push(i=>{const a=i._zod.bag;a.format=t.format,a.minimum=r,a.maximum=s,n&&(a.pattern=za)}),e._zod.check=i=>{const a=i.value;if(n){if(!Number.isInteger(a)){i.issues.push({expected:o,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});return}if(!Number.isSafeInteger(a)){a>0?i.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:o,inclusive:!0,continue:!t.abort}):i.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:o,inclusive:!0,continue:!t.abort});return}}a<r&&i.issues.push({origin:"number",input:a,code:"too_small",minimum:r,inclusive:!0,inst:e,continue:!t.abort}),a>s&&i.issues.push({origin:"number",input:a,code:"too_big",maximum:s,inclusive:!0,inst:e,continue:!t.abort})}}),xa=l("$ZodCheckMaxLength",(e,t)=>{var n;J.init(e,t),(n=e._zod.def).when??(n.when=o=>{const r=o.value;return!fn(r)&&r.length!==void 0}),e._zod.onattach.push(o=>{const r=o._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<r&&(o._zod.bag.maximum=t.maximum)}),e._zod.check=o=>{const r=o.value;if(r.length<=t.maximum)return;const i=mn(r);o.issues.push({origin:i,code:"too_big",maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Ba=l("$ZodCheckMinLength",(e,t)=>{var n;J.init(e,t),(n=e._zod.def).when??(n.when=o=>{const r=o.value;return!fn(r)&&r.length!==void 0}),e._zod.onattach.push(o=>{const r=o._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>r&&(o._zod.bag.minimum=t.minimum)}),e._zod.check=o=>{const r=o.value;if(r.length>=t.minimum)return;const i=mn(r);o.issues.push({origin:i,code:"too_small",minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Za=l("$ZodCheckLengthEquals",(e,t)=>{var n;J.init(e,t),(n=e._zod.def).when??(n.when=o=>{const r=o.value;return!fn(r)&&r.length!==void 0}),e._zod.onattach.push(o=>{const r=o._zod.bag;r.minimum=t.length,r.maximum=t.length,r.length=t.length}),e._zod.check=o=>{const r=o.value,s=r.length;if(s===t.length)return;const i=mn(r),a=s>t.length;o.issues.push({origin:i,...a?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:o.value,inst:e,continue:!t.abort})}}),Tt=l("$ZodCheckStringFormat",(e,t)=>{var n,o;J.init(e,t),e._zod.onattach.push(r=>{const s=r._zod.bag;s.format=t.format,t.pattern&&(s.patterns??(s.patterns=new Set),s.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:t.format,input:r.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(o=e._zod).check??(o.check=()=>{})}),Ha=l("$ZodCheckRegex",(e,t)=>{Tt.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Va=l("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Ua),Tt.init(e,t)}),Wa=l("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Fa),Tt.init(e,t)}),Ya=l("$ZodCheckIncludes",(e,t)=>{J.init(e,t);const n=Ue(t.includes),o=new RegExp(typeof t.position=="number"?`^.{${t.position}}${n}`:n);t.pattern=o,e._zod.onattach.push(r=>{const s=r._zod.bag;s.patterns??(s.patterns=new Set),s.patterns.add(o)}),e._zod.check=r=>{r.value.includes(t.includes,t.position)||r.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:r.value,inst:e,continue:!t.abort})}}),Ka=l("$ZodCheckStartsWith",(e,t)=>{J.init(e,t);const n=new RegExp(`^${Ue(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.onattach.push(o=>{const r=o._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(n)}),e._zod.check=o=>{o.value.startsWith(t.prefix)||o.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:o.value,inst:e,continue:!t.abort})}}),Ja=l("$ZodCheckEndsWith",(e,t)=>{J.init(e,t);const n=new RegExp(`.*${Ue(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.onattach.push(o=>{const r=o._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(n)}),e._zod.check=o=>{o.value.endsWith(t.suffix)||o.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:o.value,inst:e,continue:!t.abort})}}),Xa=l("$ZodCheckOverwrite",(e,t)=>{J.init(e,t),e._zod.check=n=>{n.value=t.tx(n.value)}});class Qa{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}const o=t.split(`
1
+ import*as pt from"fs";import C,{existsSync as H,readFileSync as on,statSync as Qe,promises as rn,writeFileSync as sn,createReadStream as pi,mkdtempSync as fi,mkdirSync as hi,rmSync as co}from"fs";import*as ft from"path";import z,{resolve as S,dirname as uo,relative as lo,basename as mi,sep as an,parse as po,join as ee}from"path";import Ei from"cac";import{green as ce,yellow as gi,red as _i,gray as yi}from"kolorist";import ke from"prompts";import fo from"adm-zip";import{glob as I,globSync as ho}from"glob";import ue from"typescript";import{normalizePath as Si,build as ge,defineConfig as ht,createServer as Ti}from"vite";import{SectionTypeEnum as _e,BackgroundStyleEnum as cn,ButtonAppearanceEnum as Oi,ButtonSizeEnum as Ii,ButtonShapeEnum as wi,OverlayTypeEnum as mt,DesignEditorType as q,PluginTypeEnum as te,ConfigTypeEnum as N}from"@lightspeed/crane-api";import*as F from"process";import Et from"process";import{JSONPath as vi}from"jsonpath-plus";import{readFile as un,writeFile as Ci}from"fs/promises";import{pathToFileURL as mo,URL as Ri}from"url";import ln,{AxiosError as Eo}from"axios";import bi from"tinycolor2";import{builtinModules as go}from"module";import{viteExternalsPlugin as _o}from"vite-plugin-externals";import Ai from"vite-plugin-compression";import Ni from"@vitejs/plugin-vue";import $i from"vite-tsconfig-paths";import Di from"vite-plugin-checker";import{encode as Li}from"@jridgewell/sourcemap-codec";import{promisify as yo}from"node:util";import So from"node:zlib";import D from"node:fs";import V from"node:path";import j from"node:process";import ki from"micromatch";import{fileURLToPath as Pi}from"node:url";import{ConcurrencyManager as zi}from"axios-concurrency";import{inc as ji}from"semver";import Ui from"cli-progress";import{WebSocketServer as Fi,WebSocket as Mi}from"ws";import*as Gi from"os";import{spawnSync as xi}from"child_process";const Bi="3.4.4-rc.3",G={[_e.SECTION]:{source:"sections",dist:"dist/sections"},[_e.HEADER]:{source:"headers",dist:"dist/headers"},[_e.FOOTER]:{source:"footers",dist:"dist/footers"}};var R=(e=>(e[e.Server=0]="Server",e[e.Client=1]="Client",e[e.ClientChunks=2]="ClientChunks",e[e.ClientAsset=3]="ClientAsset",e[e.Asset=4]="Asset",e[e.TemplateAsset=5]="TemplateAsset",e[e.Dependency=6]="Dependency",e[e.SourceCode=7]="SourceCode",e[e.LayoutClient=8]="LayoutClient",e[e.LayoutAsset=9]="LayoutAsset",e[e.SlotServer=10]="SlotServer",e[e.SlotClient=11]="SlotClient",e[e.SlotClientChunks=12]="SlotClientChunks",e[e.SlotClientAsset=13]="SlotClientAsset",e[e.CollectionAsset=14]="CollectionAsset",e))(R||{});function Pe(e){const t={};for(const[n,o]of Object.entries(e)){let r={...o};if(o.type==="DECK"&&o.cards&&typeof o.cards=="object"&&"defaultCardContent"in o.cards){const s=o.cards;s.defaultCardContent?.settings&&(r={...r,cards:{...s,defaultCardContent:{...s.defaultCardContent,settings:Pe(s.defaultCardContent.settings)}}})}if(o.type==="ACCORDION"&&o.cards&&typeof o.cards=="object"&&!("defaultCardContent"in o.cards)){const s=o.cards,i={};for(const[a,c]of Object.entries(s))c.editors?i[a]={...c,editors:Pe(c.editors)}:i[a]=c;r={...r,cards:i}}if(r.defaults&&typeof r.defaults=="object"&&!("type"in r.defaults)){const s=Object.assign({type:r.type},r.defaults);r={...r,defaults:s}}t[n]=r}return t}function l(e,t,n){function o(a,c){if(a._zod||Object.defineProperty(a,"_zod",{value:{def:c,constr:i,traits:new Set},enumerable:!1}),a._zod.traits.has(e))return;a._zod.traits.add(e),t(a,c);const u=i.prototype,d=Object.keys(u);for(let m=0;m<d.length;m++){const y=d[m];y in a||(a[y]=u[y].bind(a))}}const r=n?.Parent??Object;class s extends r{}Object.defineProperty(s,"name",{value:e});function i(a){var c;const u=n?.Parent?new s:this;o(u,a),(c=u._zod).deferred??(c.deferred=[]);for(const d of u._zod.deferred)d();return u}return Object.defineProperty(i,"init",{value:o}),Object.defineProperty(i,Symbol.hasInstance,{value:a=>n?.Parent&&a instanceof n.Parent?!0:a?._zod?.traits?.has(e)}),Object.defineProperty(i,"name",{value:e}),i}class ze extends Error{constructor(){super("Encountered Promise during synchronous parse. Use .parseAsync() instead.")}}class To extends Error{constructor(t){super(`Encountered unidirectional transform during encode: ${t}`),this.name="ZodEncodeError"}}const dn={};function ye(e){return e&&Object.assign(dn,e),dn}function Oo(e){const t=Object.values(e).filter(o=>typeof o=="number");return Object.entries(e).filter(([o,r])=>t.indexOf(+o)===-1).map(([o,r])=>r)}function pn(e,t){return typeof t=="bigint"?t.toString():t}function gt(e){return{get value(){{const t=e();return Object.defineProperty(this,"value",{value:t}),t}}}}function fn(e){return e==null}function hn(e){const t=e.startsWith("^")?1:0,n=e.endsWith("$")?e.length-1:e.length;return e.slice(t,n)}function Zi(e,t){const n=(e.toString().split(".")[1]||"").length,o=t.toString();let r=(o.split(".")[1]||"").length;if(r===0&&/\d?e-\d?/.test(o)){const c=o.match(/\d?e-(\d?)/);c?.[1]&&(r=Number.parseInt(c[1]))}const s=n>r?n:r,i=Number.parseInt(e.toFixed(s).replace(".","")),a=Number.parseInt(t.toFixed(s).replace(".",""));return i%a/10**s}const Io=Symbol("evaluating");function b(e,t,n){let o;Object.defineProperty(e,t,{get(){if(o!==Io)return o===void 0&&(o=Io,o=n()),o},set(r){Object.defineProperty(e,t,{value:r})},configurable:!0})}function be(e,t,n){Object.defineProperty(e,t,{value:n,writable:!0,enumerable:!0,configurable:!0})}function Ie(...e){const t={};for(const n of e){const o=Object.getOwnPropertyDescriptors(n);Object.assign(t,o)}return Object.defineProperties({},t)}function wo(e){return JSON.stringify(e)}function Hi(e){return e.toLowerCase().trim().replace(/[^\w\s-]/g,"").replace(/[\s_-]+/g,"-").replace(/^-+|-+$/g,"")}const vo="captureStackTrace"in Error?Error.captureStackTrace:(...e)=>{};function qe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}const Vi=gt(()=>{if(typeof navigator<"u"&&navigator?.userAgent?.includes("Cloudflare"))return!1;try{const e=Function;return new e(""),!0}catch{return!1}});function je(e){if(qe(e)===!1)return!1;const t=e.constructor;if(t===void 0||typeof t!="function")return!0;const n=t.prototype;return!(qe(n)===!1||Object.prototype.hasOwnProperty.call(n,"isPrototypeOf")===!1)}function Co(e){return je(e)?{...e}:Array.isArray(e)?[...e]:e}const Wi=new Set(["string","number","symbol"]);function Ue(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function we(e,t,n){const o=new e._zod.constr(t??e._zod.def);return(!t||n?.parent)&&(o._zod.parent=e),o}function g(e){const t=e;if(!t)return{};if(typeof t=="string")return{error:()=>t};if(t?.message!==void 0){if(t?.error!==void 0)throw new Error("Cannot specify both `message` and `error` params");t.error=t.message}return delete t.message,typeof t.error=="string"?{...t,error:()=>t.error}:t}function Yi(e){return Object.keys(e).filter(t=>e[t]._zod.optin==="optional"&&e[t]._zod.optout==="optional")}const Ki={safeint:[Number.MIN_SAFE_INTEGER,Number.MAX_SAFE_INTEGER],int32:[-2147483648,2147483647],uint32:[0,4294967295],float32:[-34028234663852886e22,34028234663852886e22],float64:[-Number.MAX_VALUE,Number.MAX_VALUE]};function Ji(e,t){const n=e._zod.def,o=n.checks;if(o&&o.length>0)throw new Error(".pick() cannot be used on object schemas containing refinements");const s=Ie(e._zod.def,{get shape(){const i={};for(const a in t){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&(i[a]=n.shape[a])}return be(this,"shape",i),i},checks:[]});return we(e,s)}function Xi(e,t){const n=e._zod.def,o=n.checks;if(o&&o.length>0)throw new Error(".omit() cannot be used on object schemas containing refinements");const s=Ie(e._zod.def,{get shape(){const i={...e._zod.def.shape};for(const a in t){if(!(a in n.shape))throw new Error(`Unrecognized key: "${a}"`);t[a]&&delete i[a]}return be(this,"shape",i),i},checks:[]});return we(e,s)}function Qi(e,t){if(!je(t))throw new Error("Invalid input to extend: expected a plain object");const n=e._zod.def.checks;if(n&&n.length>0){const s=e._zod.def.shape;for(const i in t)if(Object.getOwnPropertyDescriptor(s,i)!==void 0)throw new Error("Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.")}const r=Ie(e._zod.def,{get shape(){const s={...e._zod.def.shape,...t};return be(this,"shape",s),s}});return we(e,r)}function qi(e,t){if(!je(t))throw new Error("Invalid input to safeExtend: expected a plain object");const n=Ie(e._zod.def,{get shape(){const o={...e._zod.def.shape,...t};return be(this,"shape",o),o}});return we(e,n)}function ea(e,t){const n=Ie(e._zod.def,{get shape(){const o={...e._zod.def.shape,...t._zod.def.shape};return be(this,"shape",o),o},get catchall(){return t._zod.def.catchall},checks:[]});return we(e,n)}function ta(e,t,n){const r=t._zod.def.checks;if(r&&r.length>0)throw new Error(".partial() cannot be used on object schemas containing refinements");const i=Ie(t._zod.def,{get shape(){const a=t._zod.def.shape,c={...a};if(n)for(const u in n){if(!(u in a))throw new Error(`Unrecognized key: "${u}"`);n[u]&&(c[u]=e?new e({type:"optional",innerType:a[u]}):a[u])}else for(const u in a)c[u]=e?new e({type:"optional",innerType:a[u]}):a[u];return be(this,"shape",c),c},checks:[]});return we(t,i)}function na(e,t,n){const o=Ie(t._zod.def,{get shape(){const r=t._zod.def.shape,s={...r};if(n)for(const i in n){if(!(i in s))throw new Error(`Unrecognized key: "${i}"`);n[i]&&(s[i]=new e({type:"nonoptional",innerType:r[i]}))}else for(const i in r)s[i]=new e({type:"nonoptional",innerType:r[i]});return be(this,"shape",s),s}});return we(t,o)}function Fe(e,t=0){if(e.aborted===!0)return!0;for(let n=t;n<e.issues.length;n++)if(e.issues[n]?.continue!==!0)return!0;return!1}function Me(e,t){return t.map(n=>{var o;return(o=n).path??(o.path=[]),n.path.unshift(e),n})}function _t(e){return typeof e=="string"?e:e?.message}function ve(e,t,n){const o={...e,path:e.path??[]};if(!e.message){const r=_t(e.inst?._zod.def?.error?.(e))??_t(t?.error?.(e))??_t(n.customError?.(e))??_t(n.localeError?.(e))??"Invalid input";o.message=r}return delete o.inst,delete o.continue,t?.reportInput||delete o.input,o}function mn(e){return Array.isArray(e)?"array":typeof e=="string"?"string":"unknown"}function et(...e){const[t,n,o]=e;return typeof t=="string"?{message:t,code:"custom",input:n,inst:o}:{...t}}const Ro=(e,t)=>{e.name="$ZodError",Object.defineProperty(e,"_zod",{value:e._zod,enumerable:!1}),Object.defineProperty(e,"issues",{value:t,enumerable:!1}),e.message=JSON.stringify(t,pn,2),Object.defineProperty(e,"toString",{value:()=>e.message,enumerable:!1})},bo=l("$ZodError",Ro),Ao=l("$ZodError",Ro,{Parent:Error});function oa(e,t=n=>n.message){const n={},o=[];for(const r of e.issues)r.path.length>0?(n[r.path[0]]=n[r.path[0]]||[],n[r.path[0]].push(t(r))):o.push(t(r));return{formErrors:o,fieldErrors:n}}function ra(e,t=n=>n.message){const n={_errors:[]},o=r=>{for(const s of r.issues)if(s.code==="invalid_union"&&s.errors.length)s.errors.map(i=>o({issues:i}));else if(s.code==="invalid_key")o({issues:s.issues});else if(s.code==="invalid_element")o({issues:s.issues});else if(s.path.length===0)n._errors.push(t(s));else{let i=n,a=0;for(;a<s.path.length;){const c=s.path[a];a===s.path.length-1?(i[c]=i[c]||{_errors:[]},i[c]._errors.push(t(s))):i[c]=i[c]||{_errors:[]},i=i[c],a++}}};return o(e),n}const En=e=>(t,n,o,r)=>{const s=o?Object.assign(o,{async:!1}):{async:!1},i=t._zod.run({value:n,issues:[]},s);if(i instanceof Promise)throw new ze;if(i.issues.length){const a=new(r?.Err??e)(i.issues.map(c=>ve(c,s,ye())));throw vo(a,r?.callee),a}return i.value},gn=e=>async(t,n,o,r)=>{const s=o?Object.assign(o,{async:!0}):{async:!0};let i=t._zod.run({value:n,issues:[]},s);if(i instanceof Promise&&(i=await i),i.issues.length){const a=new(r?.Err??e)(i.issues.map(c=>ve(c,s,ye())));throw vo(a,r?.callee),a}return i.value},yt=e=>(t,n,o)=>{const r=o?{...o,async:!1}:{async:!1},s=t._zod.run({value:n,issues:[]},r);if(s instanceof Promise)throw new ze;return s.issues.length?{success:!1,error:new(e??bo)(s.issues.map(i=>ve(i,r,ye())))}:{success:!0,data:s.value}},sa=yt(Ao),St=e=>async(t,n,o)=>{const r=o?Object.assign(o,{async:!0}):{async:!0};let s=t._zod.run({value:n,issues:[]},r);return s instanceof Promise&&(s=await s),s.issues.length?{success:!1,error:new e(s.issues.map(i=>ve(i,r,ye())))}:{success:!0,data:s.value}},ia=St(Ao),aa=e=>(t,n,o)=>{const r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return En(e)(t,n,r)},ca=e=>(t,n,o)=>En(e)(t,n,o),ua=e=>async(t,n,o)=>{const r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return gn(e)(t,n,r)},la=e=>async(t,n,o)=>gn(e)(t,n,o),da=e=>(t,n,o)=>{const r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return yt(e)(t,n,r)},pa=e=>(t,n,o)=>yt(e)(t,n,o),fa=e=>async(t,n,o)=>{const r=o?Object.assign(o,{direction:"backward"}):{direction:"backward"};return St(e)(t,n,r)},ha=e=>async(t,n,o)=>St(e)(t,n,o),ma=/^[cC][^\s-]{8,}$/,Ea=/^[0-9a-z]+$/,ga=/^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/,_a=/^[0-9a-vA-V]{20}$/,ya=/^[A-Za-z0-9]{27}$/,Sa=/^[a-zA-Z0-9_-]{21}$/,Ta=/^P(?:(\d+W)|(?!.*W)(?=\d|T\d)(\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+([.,]\d+)?S)?)?)$/,Oa=/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/,No=e=>e?new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${e}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`):/^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/,Ia=/^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$/,wa="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";function va(){return new RegExp(wa,"u")}const Ca=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Ra=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/,ba=/^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/([0-9]|[1-2][0-9]|3[0-2])$/,Aa=/^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Na=/^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/,$o=/^[A-Za-z0-9_-]*$/,$a=/^\+[1-9]\d{6,14}$/,Do="(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))",Da=new RegExp(`^${Do}$`);function Lo(e){const t="(?:[01]\\d|2[0-3]):[0-5]\\d";return typeof e.precision=="number"?e.precision===-1?`${t}`:e.precision===0?`${t}:[0-5]\\d`:`${t}:[0-5]\\d\\.\\d{${e.precision}}`:`${t}(?::[0-5]\\d(?:\\.\\d+)?)?`}function La(e){return new RegExp(`^${Lo(e)}$`)}function ka(e){const t=Lo({precision:e.precision}),n=["Z"];e.local&&n.push(""),e.offset&&n.push("([+-](?:[01]\\d|2[0-3]):[0-5]\\d)");const o=`${t}(?:${n.join("|")})`;return new RegExp(`^${Do}T(?:${o})$`)}const Pa=e=>{const t=e?`[\\s\\S]{${e?.minimum??0},${e?.maximum??""}}`:"[\\s\\S]*";return new RegExp(`^${t}$`)},za=/^-?\d+$/,ko=/^-?\d+(?:\.\d+)?$/,ja=/^(?:true|false)$/i,Ua=/^[^A-Z]*$/,Fa=/^[^a-z]*$/,J=l("$ZodCheck",(e,t)=>{var n;e._zod??(e._zod={}),e._zod.def=t,(n=e._zod).onattach??(n.onattach=[])}),Po={number:"number",bigint:"bigint",object:"date"},zo=l("$ZodCheckLessThan",(e,t)=>{J.init(e,t);const n=Po[typeof t.value];e._zod.onattach.push(o=>{const r=o._zod.bag,s=(t.inclusive?r.maximum:r.exclusiveMaximum)??Number.POSITIVE_INFINITY;t.value<s&&(t.inclusive?r.maximum=t.value:r.exclusiveMaximum=t.value)}),e._zod.check=o=>{(t.inclusive?o.value<=t.value:o.value<t.value)||o.issues.push({origin:n,code:"too_big",maximum:typeof t.value=="object"?t.value.getTime():t.value,input:o.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),jo=l("$ZodCheckGreaterThan",(e,t)=>{J.init(e,t);const n=Po[typeof t.value];e._zod.onattach.push(o=>{const r=o._zod.bag,s=(t.inclusive?r.minimum:r.exclusiveMinimum)??Number.NEGATIVE_INFINITY;t.value>s&&(t.inclusive?r.minimum=t.value:r.exclusiveMinimum=t.value)}),e._zod.check=o=>{(t.inclusive?o.value>=t.value:o.value>t.value)||o.issues.push({origin:n,code:"too_small",minimum:typeof t.value=="object"?t.value.getTime():t.value,input:o.value,inclusive:t.inclusive,inst:e,continue:!t.abort})}}),Ma=l("$ZodCheckMultipleOf",(e,t)=>{J.init(e,t),e._zod.onattach.push(n=>{var o;(o=n._zod.bag).multipleOf??(o.multipleOf=t.value)}),e._zod.check=n=>{if(typeof n.value!=typeof t.value)throw new Error("Cannot mix number and bigint in multiple_of check.");(typeof n.value=="bigint"?n.value%t.value===BigInt(0):Zi(n.value,t.value)===0)||n.issues.push({origin:typeof n.value,code:"not_multiple_of",divisor:t.value,input:n.value,inst:e,continue:!t.abort})}}),Ga=l("$ZodCheckNumberFormat",(e,t)=>{J.init(e,t),t.format=t.format||"float64";const n=t.format?.includes("int"),o=n?"int":"number",[r,s]=Ki[t.format];e._zod.onattach.push(i=>{const a=i._zod.bag;a.format=t.format,a.minimum=r,a.maximum=s,n&&(a.pattern=za)}),e._zod.check=i=>{const a=i.value;if(n){if(!Number.isInteger(a)){i.issues.push({expected:o,format:t.format,code:"invalid_type",continue:!1,input:a,inst:e});return}if(!Number.isSafeInteger(a)){a>0?i.issues.push({input:a,code:"too_big",maximum:Number.MAX_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:o,inclusive:!0,continue:!t.abort}):i.issues.push({input:a,code:"too_small",minimum:Number.MIN_SAFE_INTEGER,note:"Integers must be within the safe integer range.",inst:e,origin:o,inclusive:!0,continue:!t.abort});return}}a<r&&i.issues.push({origin:"number",input:a,code:"too_small",minimum:r,inclusive:!0,inst:e,continue:!t.abort}),a>s&&i.issues.push({origin:"number",input:a,code:"too_big",maximum:s,inclusive:!0,inst:e,continue:!t.abort})}}),xa=l("$ZodCheckMaxLength",(e,t)=>{var n;J.init(e,t),(n=e._zod.def).when??(n.when=o=>{const r=o.value;return!fn(r)&&r.length!==void 0}),e._zod.onattach.push(o=>{const r=o._zod.bag.maximum??Number.POSITIVE_INFINITY;t.maximum<r&&(o._zod.bag.maximum=t.maximum)}),e._zod.check=o=>{const r=o.value;if(r.length<=t.maximum)return;const i=mn(r);o.issues.push({origin:i,code:"too_big",maximum:t.maximum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Ba=l("$ZodCheckMinLength",(e,t)=>{var n;J.init(e,t),(n=e._zod.def).when??(n.when=o=>{const r=o.value;return!fn(r)&&r.length!==void 0}),e._zod.onattach.push(o=>{const r=o._zod.bag.minimum??Number.NEGATIVE_INFINITY;t.minimum>r&&(o._zod.bag.minimum=t.minimum)}),e._zod.check=o=>{const r=o.value;if(r.length>=t.minimum)return;const i=mn(r);o.issues.push({origin:i,code:"too_small",minimum:t.minimum,inclusive:!0,input:r,inst:e,continue:!t.abort})}}),Za=l("$ZodCheckLengthEquals",(e,t)=>{var n;J.init(e,t),(n=e._zod.def).when??(n.when=o=>{const r=o.value;return!fn(r)&&r.length!==void 0}),e._zod.onattach.push(o=>{const r=o._zod.bag;r.minimum=t.length,r.maximum=t.length,r.length=t.length}),e._zod.check=o=>{const r=o.value,s=r.length;if(s===t.length)return;const i=mn(r),a=s>t.length;o.issues.push({origin:i,...a?{code:"too_big",maximum:t.length}:{code:"too_small",minimum:t.length},inclusive:!0,exact:!0,input:o.value,inst:e,continue:!t.abort})}}),Tt=l("$ZodCheckStringFormat",(e,t)=>{var n,o;J.init(e,t),e._zod.onattach.push(r=>{const s=r._zod.bag;s.format=t.format,t.pattern&&(s.patterns??(s.patterns=new Set),s.patterns.add(t.pattern))}),t.pattern?(n=e._zod).check??(n.check=r=>{t.pattern.lastIndex=0,!t.pattern.test(r.value)&&r.issues.push({origin:"string",code:"invalid_format",format:t.format,input:r.value,...t.pattern?{pattern:t.pattern.toString()}:{},inst:e,continue:!t.abort})}):(o=e._zod).check??(o.check=()=>{})}),Ha=l("$ZodCheckRegex",(e,t)=>{Tt.init(e,t),e._zod.check=n=>{t.pattern.lastIndex=0,!t.pattern.test(n.value)&&n.issues.push({origin:"string",code:"invalid_format",format:"regex",input:n.value,pattern:t.pattern.toString(),inst:e,continue:!t.abort})}}),Va=l("$ZodCheckLowerCase",(e,t)=>{t.pattern??(t.pattern=Ua),Tt.init(e,t)}),Wa=l("$ZodCheckUpperCase",(e,t)=>{t.pattern??(t.pattern=Fa),Tt.init(e,t)}),Ya=l("$ZodCheckIncludes",(e,t)=>{J.init(e,t);const n=Ue(t.includes),o=new RegExp(typeof t.position=="number"?`^.{${t.position}}${n}`:n);t.pattern=o,e._zod.onattach.push(r=>{const s=r._zod.bag;s.patterns??(s.patterns=new Set),s.patterns.add(o)}),e._zod.check=r=>{r.value.includes(t.includes,t.position)||r.issues.push({origin:"string",code:"invalid_format",format:"includes",includes:t.includes,input:r.value,inst:e,continue:!t.abort})}}),Ka=l("$ZodCheckStartsWith",(e,t)=>{J.init(e,t);const n=new RegExp(`^${Ue(t.prefix)}.*`);t.pattern??(t.pattern=n),e._zod.onattach.push(o=>{const r=o._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(n)}),e._zod.check=o=>{o.value.startsWith(t.prefix)||o.issues.push({origin:"string",code:"invalid_format",format:"starts_with",prefix:t.prefix,input:o.value,inst:e,continue:!t.abort})}}),Ja=l("$ZodCheckEndsWith",(e,t)=>{J.init(e,t);const n=new RegExp(`.*${Ue(t.suffix)}$`);t.pattern??(t.pattern=n),e._zod.onattach.push(o=>{const r=o._zod.bag;r.patterns??(r.patterns=new Set),r.patterns.add(n)}),e._zod.check=o=>{o.value.endsWith(t.suffix)||o.issues.push({origin:"string",code:"invalid_format",format:"ends_with",suffix:t.suffix,input:o.value,inst:e,continue:!t.abort})}}),Xa=l("$ZodCheckOverwrite",(e,t)=>{J.init(e,t),e._zod.check=n=>{n.value=t.tx(n.value)}});class Qa{constructor(t=[]){this.content=[],this.indent=0,this&&(this.args=t)}indented(t){this.indent+=1,t(this),this.indent-=1}write(t){if(typeof t=="function"){t(this,{execution:"sync"}),t(this,{execution:"async"});return}const o=t.split(`
2
2
  `).filter(i=>i),r=Math.min(...o.map(i=>i.length-i.trimStart().length)),s=o.map(i=>i.slice(r)).map(i=>" ".repeat(this.indent*2)+i);for(const i of s)this.content.push(i)}compile(){const t=Function,n=this?.args,r=[...(this?.content??[""]).map(s=>` ${s}`)];return new t(...n,r.join(`
3
3
  `))}}const qa={major:4,minor:3,patch:6},L=l("$ZodType",(e,t)=>{var n;e??(e={}),e._zod.def=t,e._zod.bag=e._zod.bag||{},e._zod.version=qa;const o=[...e._zod.def.checks??[]];e._zod.traits.has("$ZodCheck")&&o.unshift(e);for(const r of o)for(const s of r._zod.onattach)s(e);if(o.length===0)(n=e._zod).deferred??(n.deferred=[]),e._zod.deferred?.push(()=>{e._zod.run=e._zod.parse});else{const r=(i,a,c)=>{let u=Fe(i),d;for(const m of a){if(m._zod.def.when){if(!m._zod.def.when(i))continue}else if(u)continue;const y=i.issues.length,T=m._zod.check(i);if(T instanceof Promise&&c?.async===!1)throw new ze;if(d||T instanceof Promise)d=(d??Promise.resolve()).then(async()=>{await T,i.issues.length!==y&&(u||(u=Fe(i,y)))});else{if(i.issues.length===y)continue;u||(u=Fe(i,y))}}return d?d.then(()=>i):i},s=(i,a,c)=>{if(Fe(i))return i.aborted=!0,i;const u=r(a,o,c);if(u instanceof Promise){if(c.async===!1)throw new ze;return u.then(d=>e._zod.parse(d,c))}return e._zod.parse(u,c)};e._zod.run=(i,a)=>{if(a.skipChecks)return e._zod.parse(i,a);if(a.direction==="backward"){const u=e._zod.parse({value:i.value,issues:[]},{...a,skipChecks:!0});return u instanceof Promise?u.then(d=>s(d,i,a)):s(u,i,a)}const c=e._zod.parse(i,a);if(c instanceof Promise){if(a.async===!1)throw new ze;return c.then(u=>r(u,o,a))}return r(c,o,a)}}b(e,"~standard",()=>({validate:r=>{try{const s=sa(e,r);return s.success?{value:s.data}:{issues:s.error?.issues}}catch{return ia(e,r).then(i=>i.success?{value:i.data}:{issues:i.error?.issues})}},vendor:"zod",version:1}))}),_n=l("$ZodString",(e,t)=>{L.init(e,t),e._zod.pattern=[...e?._zod.bag?.patterns??[]].pop()??Pa(e._zod.bag),e._zod.parse=(n,o)=>{if(t.coerce)try{n.value=String(n.value)}catch{}return typeof n.value=="string"||n.issues.push({expected:"string",code:"invalid_type",input:n.value,inst:e}),n}}),$=l("$ZodStringFormat",(e,t)=>{Tt.init(e,t),_n.init(e,t)}),ec=l("$ZodGUID",(e,t)=>{t.pattern??(t.pattern=Oa),$.init(e,t)}),tc=l("$ZodUUID",(e,t)=>{if(t.version){const o={v1:1,v2:2,v3:3,v4:4,v5:5,v6:6,v7:7,v8:8}[t.version];if(o===void 0)throw new Error(`Invalid UUID version: "${t.version}"`);t.pattern??(t.pattern=No(o))}else t.pattern??(t.pattern=No());$.init(e,t)}),nc=l("$ZodEmail",(e,t)=>{t.pattern??(t.pattern=Ia),$.init(e,t)}),oc=l("$ZodURL",(e,t)=>{$.init(e,t),e._zod.check=n=>{try{const o=n.value.trim(),r=new URL(o);t.hostname&&(t.hostname.lastIndex=0,t.hostname.test(r.hostname)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid hostname",pattern:t.hostname.source,input:n.value,inst:e,continue:!t.abort})),t.protocol&&(t.protocol.lastIndex=0,t.protocol.test(r.protocol.endsWith(":")?r.protocol.slice(0,-1):r.protocol)||n.issues.push({code:"invalid_format",format:"url",note:"Invalid protocol",pattern:t.protocol.source,input:n.value,inst:e,continue:!t.abort})),t.normalize?n.value=r.href:n.value=o;return}catch{n.issues.push({code:"invalid_format",format:"url",input:n.value,inst:e,continue:!t.abort})}}}),rc=l("$ZodEmoji",(e,t)=>{t.pattern??(t.pattern=va()),$.init(e,t)}),sc=l("$ZodNanoID",(e,t)=>{t.pattern??(t.pattern=Sa),$.init(e,t)}),ic=l("$ZodCUID",(e,t)=>{t.pattern??(t.pattern=ma),$.init(e,t)}),ac=l("$ZodCUID2",(e,t)=>{t.pattern??(t.pattern=Ea),$.init(e,t)}),cc=l("$ZodULID",(e,t)=>{t.pattern??(t.pattern=ga),$.init(e,t)}),uc=l("$ZodXID",(e,t)=>{t.pattern??(t.pattern=_a),$.init(e,t)}),lc=l("$ZodKSUID",(e,t)=>{t.pattern??(t.pattern=ya),$.init(e,t)}),dc=l("$ZodISODateTime",(e,t)=>{t.pattern??(t.pattern=ka(t)),$.init(e,t)}),pc=l("$ZodISODate",(e,t)=>{t.pattern??(t.pattern=Da),$.init(e,t)}),fc=l("$ZodISOTime",(e,t)=>{t.pattern??(t.pattern=La(t)),$.init(e,t)}),hc=l("$ZodISODuration",(e,t)=>{t.pattern??(t.pattern=Ta),$.init(e,t)}),mc=l("$ZodIPv4",(e,t)=>{t.pattern??(t.pattern=Ca),$.init(e,t),e._zod.bag.format="ipv4"}),Ec=l("$ZodIPv6",(e,t)=>{t.pattern??(t.pattern=Ra),$.init(e,t),e._zod.bag.format="ipv6",e._zod.check=n=>{try{new URL(`http://[${n.value}]`)}catch{n.issues.push({code:"invalid_format",format:"ipv6",input:n.value,inst:e,continue:!t.abort})}}}),gc=l("$ZodCIDRv4",(e,t)=>{t.pattern??(t.pattern=ba),$.init(e,t)}),_c=l("$ZodCIDRv6",(e,t)=>{t.pattern??(t.pattern=Aa),$.init(e,t),e._zod.check=n=>{const o=n.value.split("/");try{if(o.length!==2)throw new Error;const[r,s]=o;if(!s)throw new Error;const i=Number(s);if(`${i}`!==s)throw new Error;if(i<0||i>128)throw new Error;new URL(`http://[${r}]`)}catch{n.issues.push({code:"invalid_format",format:"cidrv6",input:n.value,inst:e,continue:!t.abort})}}});function Uo(e){if(e==="")return!0;if(e.length%4!==0)return!1;try{return atob(e),!0}catch{return!1}}const yc=l("$ZodBase64",(e,t)=>{t.pattern??(t.pattern=Na),$.init(e,t),e._zod.bag.contentEncoding="base64",e._zod.check=n=>{Uo(n.value)||n.issues.push({code:"invalid_format",format:"base64",input:n.value,inst:e,continue:!t.abort})}});function Sc(e){if(!$o.test(e))return!1;const t=e.replace(/[-_]/g,o=>o==="-"?"+":"/"),n=t.padEnd(Math.ceil(t.length/4)*4,"=");return Uo(n)}const Tc=l("$ZodBase64URL",(e,t)=>{t.pattern??(t.pattern=$o),$.init(e,t),e._zod.bag.contentEncoding="base64url",e._zod.check=n=>{Sc(n.value)||n.issues.push({code:"invalid_format",format:"base64url",input:n.value,inst:e,continue:!t.abort})}}),Oc=l("$ZodE164",(e,t)=>{t.pattern??(t.pattern=$a),$.init(e,t)});function Ic(e,t=null){try{const n=e.split(".");if(n.length!==3)return!1;const[o]=n;if(!o)return!1;const r=JSON.parse(atob(o));return!("typ"in r&&r?.typ!=="JWT"||!r.alg||t&&(!("alg"in r)||r.alg!==t))}catch{return!1}}const wc=l("$ZodJWT",(e,t)=>{$.init(e,t),e._zod.check=n=>{Ic(n.value,t.alg)||n.issues.push({code:"invalid_format",format:"jwt",input:n.value,inst:e,continue:!t.abort})}}),Fo=l("$ZodNumber",(e,t)=>{L.init(e,t),e._zod.pattern=e._zod.bag.pattern??ko,e._zod.parse=(n,o)=>{if(t.coerce)try{n.value=Number(n.value)}catch{}const r=n.value;if(typeof r=="number"&&!Number.isNaN(r)&&Number.isFinite(r))return n;const s=typeof r=="number"?Number.isNaN(r)?"NaN":Number.isFinite(r)?void 0:"Infinity":void 0;return n.issues.push({expected:"number",code:"invalid_type",input:r,inst:e,...s?{received:s}:{}}),n}}),vc=l("$ZodNumberFormat",(e,t)=>{Ga.init(e,t),Fo.init(e,t)}),Cc=l("$ZodBoolean",(e,t)=>{L.init(e,t),e._zod.pattern=ja,e._zod.parse=(n,o)=>{if(t.coerce)try{n.value=!!n.value}catch{}const r=n.value;return typeof r=="boolean"||n.issues.push({expected:"boolean",code:"invalid_type",input:r,inst:e}),n}}),Rc=l("$ZodUnknown",(e,t)=>{L.init(e,t),e._zod.parse=n=>n}),bc=l("$ZodNever",(e,t)=>{L.init(e,t),e._zod.parse=(n,o)=>(n.issues.push({expected:"never",code:"invalid_type",input:n.value,inst:e}),n)});function Mo(e,t,n){e.issues.length&&t.issues.push(...Me(n,e.issues)),t.value[n]=e.value}const Ac=l("$ZodArray",(e,t)=>{L.init(e,t),e._zod.parse=(n,o)=>{const r=n.value;if(!Array.isArray(r))return n.issues.push({expected:"array",code:"invalid_type",input:r,inst:e}),n;n.value=Array(r.length);const s=[];for(let i=0;i<r.length;i++){const a=r[i],c=t.element._zod.run({value:a,issues:[]},o);c instanceof Promise?s.push(c.then(u=>Mo(u,n,i))):Mo(c,n,i)}return s.length?Promise.all(s).then(()=>n):n}});function Ot(e,t,n,o,r){if(e.issues.length){if(r&&!(n in o))return;t.issues.push(...Me(n,e.issues))}e.value===void 0?n in o&&(t.value[n]=void 0):t.value[n]=e.value}function Go(e){const t=Object.keys(e.shape);for(const o of t)if(!e.shape?.[o]?._zod?.traits?.has("$ZodType"))throw new Error(`Invalid element at key "${o}": expected a Zod schema`);const n=Yi(e.shape);return{...e,keys:t,keySet:new Set(t),numKeys:t.length,optionalKeys:new Set(n)}}function xo(e,t,n,o,r,s){const i=[],a=r.keySet,c=r.catchall._zod,u=c.def.type,d=c.optout==="optional";for(const m in t){if(a.has(m))continue;if(u==="never"){i.push(m);continue}const y=c.run({value:t[m],issues:[]},o);y instanceof Promise?e.push(y.then(T=>Ot(T,n,m,t,d))):Ot(y,n,m,t,d)}return i.length&&n.issues.push({code:"unrecognized_keys",keys:i,input:t,inst:s}),e.length?Promise.all(e).then(()=>n):n}const Nc=l("$ZodObject",(e,t)=>{if(L.init(e,t),!Object.getOwnPropertyDescriptor(t,"shape")?.get){const a=t.shape;Object.defineProperty(t,"shape",{get:()=>{const c={...a};return Object.defineProperty(t,"shape",{value:c}),c}})}const o=gt(()=>Go(t));b(e._zod,"propValues",()=>{const a=t.shape,c={};for(const u in a){const d=a[u]._zod;if(d.values){c[u]??(c[u]=new Set);for(const m of d.values)c[u].add(m)}}return c});const r=qe,s=t.catchall;let i;e._zod.parse=(a,c)=>{i??(i=o.value);const u=a.value;if(!r(u))return a.issues.push({expected:"object",code:"invalid_type",input:u,inst:e}),a;a.value={};const d=[],m=i.shape;for(const y of i.keys){const T=m[y],Z=T._zod.optout==="optional",B=T._zod.run({value:u[y],issues:[]},c);B instanceof Promise?d.push(B.then(dt=>Ot(dt,a,y,u,Z))):Ot(B,a,y,u,Z)}return s?xo(d,u,a,c,o.value,e):d.length?Promise.all(d).then(()=>a):a}}),$c=l("$ZodObjectJIT",(e,t)=>{Nc.init(e,t);const n=e._zod.parse,o=gt(()=>Go(t)),r=y=>{const T=new Qa(["shape","payload","ctx"]),Z=o.value,B=fe=>{const K=wo(fe);return`shape[${K}]._zod.run({ value: input[${K}], issues: [] }, ctx)`};T.write("const input = payload.value;");const dt=Object.create(null);let ui=0;for(const fe of Z.keys)dt[fe]=`key_${ui++}`;T.write("const newResult = {};");for(const fe of Z.keys){const K=dt[fe],ae=wo(fe),di=y[fe]?._zod?.optout==="optional";T.write(`const ${K} = ${B(fe)};`),di?T.write(`
4
4
  if (${K}.issues.length) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lightspeed/crane",
3
- "version": "3.4.4-rc.1",
3
+ "version": "3.4.4-rc.3",
4
4
  "type": "module",
5
5
  "bin": "bin/crane.js",
6
6
  "main": "./dist/app.mjs",
@@ -65,7 +65,7 @@
65
65
  },
66
66
  "dependencies": {
67
67
  "@jridgewell/sourcemap-codec": "^1.5.4",
68
- "@lightspeed/crane-api": "2.4.0-rc.0",
68
+ "@lightspeed/crane-api": "2.3.3-rc.1",
69
69
  "@lightspeed/eslint-config-crane": "1.1.3",
70
70
  "@types/micromatch": "^4.0.8",
71
71
  "@types/prompts": "^2.4.2",
@@ -1 +1,248 @@
1
- export default {} as const;
1
+ import { design } from '@lightspeed/crane-api';
2
+
3
+ export default {
4
+ mainProductInfo: design.info({
5
+ label: '$label.main_product_info.title',
6
+ description: '$label.main_product_info.description',
7
+ }),
8
+ mainProductInfoAccordion: design.accordion({
9
+ items: {
10
+ sku: {
11
+ label: '$label.main_product_info.sku',
12
+ editors: {
13
+ showProductSku: design.toggle({
14
+ label: '$label.main_product_info.show_sku',
15
+ defaults: { enabled: false },
16
+ }),
17
+ },
18
+ },
19
+ loyalty: {
20
+ label: '$label.main_product_info.loyalty',
21
+ editors: {
22
+ showLoyalty: design.toggle({
23
+ label: '$label.main_product_info.show_loyalty',
24
+ defaults: { enabled: true },
25
+ }),
26
+ loyaltyInfo: design.info({
27
+ label: '$label.main_product_info.loyalty_note_label',
28
+ description: '$label.main_product_info.loyalty_note',
29
+ }),
30
+ },
31
+ },
32
+ imageGallery: {
33
+ label: '$label.image_gallery',
34
+ editors: {
35
+ galleryLayout: design.selectbox({
36
+ label: '$label.image_gallery.image_placement',
37
+ options: [
38
+ { value: 'IMAGE_SINGLE_THUMBNAILS_HORIZONTAL', label: '$label.image_gallery.horizontal' },
39
+ { value: 'IMAGE_SINGLE_THUMBNAILS_VERTICAL', label: '$label.image_gallery.vertical' },
40
+ { value: 'IMAGE_FEED', label: '$label.image_gallery.full_images' },
41
+ ],
42
+ defaults: { value: 'IMAGE_SINGLE_THUMBNAILS_HORIZONTAL' },
43
+ }),
44
+ showProductPhotoZoom: design.toggle({
45
+ label: '$label.image_gallery.zoom_image',
46
+ defaults: { enabled: true },
47
+ }),
48
+ showAltTextAsDescription: design.toggle({
49
+ label: '$label.image_gallery.show_alt_text',
50
+ defaults: { enabled: false },
51
+ }),
52
+ },
53
+ },
54
+ colorSwatches: {
55
+ label: '$label.color_swatches',
56
+ editors: {
57
+ optionSize: design.selectbox({
58
+ label: '$label.color_swatches.size',
59
+ description: '$label.color_swatches.description',
60
+ options: [
61
+ { value: 'SMALL', label: '$label.color_swatches.size.small' },
62
+ { value: 'MEDIUM', label: '$label.color_swatches.size.medium' },
63
+ { value: 'LARGE', label: '$label.color_swatches.size.large' },
64
+ ],
65
+ defaults: { value: 'MEDIUM' },
66
+ }),
67
+ optionShape: design.selectbox({
68
+ label: '$label.color_swatches.shape',
69
+ options: [
70
+ { value: 'CIRCLE', label: '$label.color_swatches.shape.circle' },
71
+ { value: 'SQUARE', label: '$label.color_swatches.shape.square' },
72
+ { value: 'ROUNDED_SQUARE', label: '$label.color_swatches.shape.rounded_square' },
73
+ ],
74
+ defaults: { value: 'CIRCLE' },
75
+ }),
76
+ },
77
+ },
78
+ addToBagButton: {
79
+ label: '$label.add_to_bag_button',
80
+ editors: {
81
+ showInStockLabel: design.toggle({
82
+ label: '$label.add_to_bag_button.stock_availability',
83
+ defaults: { enabled: true },
84
+ }),
85
+ showNumberOfItemsInStock: design.toggle({
86
+ label: '$label.add_to_bag_button.number_of_items',
87
+ defaults: { enabled: true },
88
+ }),
89
+ showQuantity: design.toggle({
90
+ label: '$label.add_to_bag_button.product_quantity',
91
+ defaults: { enabled: true },
92
+ }),
93
+ },
94
+ },
95
+ navigation: {
96
+ label: '$label.navigation',
97
+ editors: {
98
+ breadcrumbsPosition: design.selectbox({
99
+ label: '$label.navigation.breadcrumbs',
100
+ options: [
101
+ { value: 'PRODUCT_DETAILS_SIDEBAR', label: '$label.navigation.breadcrumbs.in_sidebar' },
102
+ { value: 'NAVIGATION_CONTAINER', label: '$label.navigation.breadcrumbs.in_header' },
103
+ { value: 'DO_NOT_SHOW', label: '$label.navigation.breadcrumbs.do_not_show' },
104
+ ],
105
+ defaults: { value: 'PRODUCT_DETAILS_SIDEBAR' },
106
+ }),
107
+ showNavigationArrows: design.toggle({
108
+ label: '$label.navigation.show_arrows',
109
+ defaults: { enabled: true },
110
+ }),
111
+ },
112
+ },
113
+ },
114
+ }),
115
+ additionalProductInfo: design.info({
116
+ label: '$label.additional_product_info.title',
117
+ description: '$label.additional_product_info.description',
118
+ }),
119
+ additionalProductInfoAccordion: design.accordion({
120
+ sortable: true,
121
+ items: {
122
+ outletsStock: {
123
+ label: '$label.outlets_stock',
124
+ positionFieldName: 'positionOutletInventory',
125
+ editors: {
126
+ showOutlets: design.toggle({
127
+ label: '$label.outlets_stock.list_outlets',
128
+ defaults: { enabled: true },
129
+ }),
130
+ showProductsQuantity: design.toggle({
131
+ label: '$label.outlets_stock.number_of_items',
132
+ defaults: { enabled: true },
133
+ }),
134
+ },
135
+ },
136
+ estimatedDeliveryTime: {
137
+ label: '$label.estimated_delivery_time',
138
+ positionFieldName: 'positionDeliveryTime',
139
+ editors: {
140
+ showDeliveryTime: design.selectbox({
141
+ label: '$label.estimated_delivery_time.display',
142
+ description: '$label.estimated_delivery_time.description',
143
+ options: [
144
+ { value: 'true', label: '$label.show' },
145
+ { value: 'false', label: '$label.do_not_show' },
146
+ ],
147
+ defaults: { value: 'true' },
148
+ }),
149
+ showDeliveryTimeInfo: design.info({
150
+ label: '$label.estimated_delivery_time.info_label',
151
+ description: '$label.estimated_delivery_time.info_description',
152
+ button: {
153
+ label: '$label.learn_more',
154
+ link: 'https://support.ecwid.com/hc/en-us/articles/4918760191388-Informing-customers-about-an-estimated-delivery-or-pickup-date',
155
+ },
156
+ }),
157
+ },
158
+ },
159
+ wholesalePrices: {
160
+ label: '$label.wholesale_prices',
161
+ positionFieldName: 'positionWholesalePrices',
162
+ editors: {
163
+ showWholesalePrices: design.selectbox({
164
+ label: '$label.wholesale_prices.display',
165
+ description: '$label.wholesale_prices.description',
166
+ options: [
167
+ { value: 'true', label: '$label.show' },
168
+ { value: 'false', label: '$label.do_not_show' },
169
+ ],
170
+ defaults: { value: 'true' },
171
+ }),
172
+ showWholesalePricesInfo: design.info({
173
+ label: '$label.wholesale_prices.info_label',
174
+ description: '$label.wholesale_prices.info_description',
175
+ button: {
176
+ label: '$label.learn_more',
177
+ link: 'https://support.ecwid.com/hc/en-us/articles/207807055-Setting-up-bulk-discount-pricing',
178
+ },
179
+ }),
180
+ },
181
+ },
182
+ productReviews: {
183
+ label: '$label.product_reviews',
184
+ positionFieldName: 'positionReviewSection',
185
+ editors: {
186
+ showReviewSection: design.toggle({
187
+ label: '$label.product_reviews.show',
188
+ defaults: { enabled: true },
189
+ }),
190
+ showReviewsSectionInOneCardView: design.selectbox({
191
+ label: '$label.product_reviews.section_view',
192
+ options: [
193
+ { value: 'true', label: '$label.product_reviews.one_card' },
194
+ { value: 'false', label: '$label.product_reviews.multiple_cards' },
195
+ ],
196
+ defaults: { value: 'true' },
197
+ }),
198
+ },
199
+ },
200
+ favoritesButton: {
201
+ label: '$label.favorites_button',
202
+ positionFieldName: 'positionSaveForLater',
203
+ editors: {
204
+ favoritesEnabled: design.selectbox({
205
+ label: '$label.favorites_button.display',
206
+ options: [
207
+ { value: 'true', label: '$label.show' },
208
+ { value: 'false', label: '$label.do_not_show' },
209
+ ],
210
+ defaults: { value: 'true' },
211
+ }),
212
+ },
213
+ },
214
+ shareButtons: {
215
+ label: '$label.share_buttons',
216
+ positionFieldName: 'positionShareButtons',
217
+ editors: {
218
+ showShareButtons: design.selectbox({
219
+ label: '$label.share_buttons.display',
220
+ options: [
221
+ { value: 'true', label: '$label.show' },
222
+ { value: 'false', label: '$label.do_not_show' },
223
+ ],
224
+ defaults: { value: 'true' },
225
+ }),
226
+ },
227
+ },
228
+ productDetails: {
229
+ label: '$label.product_details',
230
+ positionFieldName: 'positionProductDescription',
231
+ editors: {
232
+ showWeight: design.toggle({
233
+ label: '$label.product_details.weight',
234
+ defaults: { enabled: true },
235
+ }),
236
+ showAttributes: design.toggle({
237
+ label: '$label.product_details.attributes',
238
+ defaults: { enabled: true },
239
+ }),
240
+ showProductDescription: design.toggle({
241
+ label: '$label.product_details.description_toggle',
242
+ defaults: { enabled: true },
243
+ }),
244
+ },
245
+ },
246
+ },
247
+ }),
248
+ };
@@ -1 +1,34 @@
1
- export default [] as const;
1
+ import { layout } from '@lightspeed/crane-api';
2
+
3
+ export default [
4
+ layout.init({
5
+ layoutId: 'TWO_COLUMNS_SIDEBAR_ON_THE_RIGHT_DESCRIPTION_UNDER_IMAGE',
6
+ layoutIcon: 'TWO_COLUMNS_SIDEBAR_ON_THE_RIGHT_DESCRIPTION_UNDER_IMAGE',
7
+ selectedContentSettings: [],
8
+ selectedDesignSettings: [],
9
+ }),
10
+ layout.init({
11
+ layoutId: 'TWO_COLUMNS_SIDEBAR_ON_THE_RIGHT',
12
+ layoutIcon: 'TWO_COLUMNS_SIDEBAR_ON_THE_RIGHT',
13
+ selectedContentSettings: [],
14
+ selectedDesignSettings: [],
15
+ }),
16
+ layout.init({
17
+ layoutId: 'THREE_COLUMNS_SIDEBAR_ON_THE_RIGHT',
18
+ layoutIcon: 'THREE_COLUMNS_SIDEBAR_ON_THE_RIGHT',
19
+ selectedContentSettings: [],
20
+ selectedDesignSettings: [],
21
+ }),
22
+ layout.init({
23
+ layoutId: 'TWO_COLUMNS_SIDEBAR_ON_THE_LEFT',
24
+ layoutIcon: 'TWO_COLUMNS_SIDEBAR_ON_THE_LEFT',
25
+ selectedContentSettings: [],
26
+ selectedDesignSettings: [],
27
+ }),
28
+ layout.init({
29
+ layoutId: 'THREE_COLUMNS_SIDEBAR_ON_THE_LEFT',
30
+ layoutIcon: 'THREE_COLUMNS_SIDEBAR_ON_THE_LEFT',
31
+ selectedContentSettings: [],
32
+ selectedDesignSettings: [],
33
+ }),
34
+ ];
@@ -1 +1,261 @@
1
- export default {} as const;
1
+ import { translation } from '@lightspeed/crane-api';
2
+
3
+ export default translation.init({
4
+ en: {
5
+ '$label.main_product_info.title': 'Main product information',
6
+ '$label.main_product_info.description': 'Information such as name, SKU, subtitle, price, '
7
+ + 'and product options remains fixed. Layout and appearance of these elements cannot be changed.',
8
+ '$label.main_product_info.sku': 'SKU',
9
+ '$label.main_product_info.show_sku': 'Show SKU',
10
+ '$label.main_product_info.loyalty': 'Loyalty',
11
+ '$label.main_product_info.show_loyalty': 'Show Loyalty bonuses',
12
+ '$label.main_product_info.loyalty_note_label': '',
13
+ '$label.main_product_info.loyalty_note': 'You can manage your Loyalty settings in X-Series admin panel '
14
+ + '→ Settings → Loyalty page.',
15
+
16
+ '$label.additional_product_info.title': 'Additional product information',
17
+ '$label.additional_product_info.description': 'Additional information appears in the same '
18
+ + 'order as on the product page. You can edit and rearrange these settings to help customers '
19
+ + 'better understand the product.',
20
+
21
+ '$label.show': 'Show',
22
+ '$label.do_not_show': 'Do not show',
23
+ '$label.learn_more': 'Learn more',
24
+
25
+ '$label.image_gallery': 'Image gallery',
26
+ '$label.image_gallery.image_placement': 'Image placement',
27
+ '$label.image_gallery.horizontal': 'Horizontal',
28
+ '$label.image_gallery.vertical': 'Vertical',
29
+ '$label.image_gallery.full_images': 'Full size images',
30
+ '$label.image_gallery.zoom_image': 'Zoom image on hover',
31
+ '$label.image_gallery.show_alt_text': 'Show image alt text as description',
32
+
33
+ '$label.color_swatches': 'Color swatches',
34
+ '$label.color_swatches.description': 'Color swatch settings are also applied to the product card in the catalog.',
35
+ '$label.color_swatches.size': 'Size',
36
+ '$label.color_swatches.size.small': 'Small',
37
+ '$label.color_swatches.size.medium': 'Medium',
38
+ '$label.color_swatches.size.large': 'Large',
39
+ '$label.color_swatches.shape': 'Shape',
40
+ '$label.color_swatches.shape.circle': 'Circle',
41
+ '$label.color_swatches.shape.square': 'Square',
42
+ '$label.color_swatches.shape.rounded_square': 'Rounded Square',
43
+
44
+ '$label.add_to_bag_button': '"Add to Bag" Button',
45
+ '$label.add_to_bag_button.stock_availability': 'Stock availability',
46
+ '$label.add_to_bag_button.number_of_items': 'Number of items',
47
+ '$label.add_to_bag_button.product_quantity': 'Product quantity',
48
+
49
+ '$label.navigation': 'Navigation',
50
+ '$label.navigation.breadcrumbs': 'Breadcrumbs',
51
+ '$label.navigation.breadcrumbs.in_sidebar': 'Show in sidebar',
52
+ '$label.navigation.breadcrumbs.in_header': 'Show in header',
53
+ '$label.navigation.breadcrumbs.do_not_show': 'Do not show',
54
+ '$label.navigation.show_arrows': 'Show navigation arrows',
55
+
56
+ '$label.outlets_stock': 'Outlets & Stock',
57
+ '$label.outlets_stock.list_outlets': 'List of available outlets',
58
+ '$label.outlets_stock.number_of_items': 'Number of items in stock',
59
+
60
+ '$label.estimated_delivery_time': 'Estimated delivery time',
61
+ '$label.estimated_delivery_time.display': 'Display estimated delivery time',
62
+ '$label.estimated_delivery_time.description': 'To manage the estimated delivery time, go to the control panel.',
63
+ '$label.estimated_delivery_time.info_label': '',
64
+ '$label.estimated_delivery_time.info_description': '',
65
+
66
+ '$label.wholesale_prices': 'Wholesale prices',
67
+ '$label.wholesale_prices.display': 'Display wholesale prices',
68
+ '$label.wholesale_prices.description': 'To manage the wholesale prices, go to the control panel.',
69
+ '$label.wholesale_prices.info_label': '',
70
+ '$label.wholesale_prices.info_description': '',
71
+
72
+ '$label.product_reviews': 'Product reviews',
73
+ '$label.product_reviews.show': 'Show product reviews',
74
+ '$label.product_reviews.section_view': 'Section view',
75
+ '$label.product_reviews.one_card': 'One card',
76
+ '$label.product_reviews.multiple_cards': 'Multiple cards',
77
+
78
+ '$label.favorites_button': 'Favorites button',
79
+ '$label.favorites_button.display': 'Display favorites button',
80
+
81
+ '$label.share_buttons': 'Share buttons',
82
+ '$label.share_buttons.display': 'Display share buttons',
83
+
84
+ '$label.product_details': 'Product details',
85
+ '$label.product_details.weight': 'Weight',
86
+ '$label.product_details.attributes': 'Product attributes',
87
+ '$label.product_details.description_toggle': 'Product description',
88
+ },
89
+
90
+ nl: {
91
+ '$label.main_product_info.title': 'Belangrijkste productinformatie',
92
+ '$label.main_product_info.description': 'Informatie zoals naam, SKU, ondertitel, prijs '
93
+ + 'en productopties blijft vast. De lay-out en het uiterlijk van deze elementen kunnen niet worden gewijzigd.',
94
+ '$label.main_product_info.sku': 'SKU',
95
+ '$label.main_product_info.show_sku': 'SKU tonen',
96
+ '$label.main_product_info.loyalty': 'Loyalty',
97
+ '$label.main_product_info.show_loyalty': 'Loyalty-bonussen tonen',
98
+ '$label.main_product_info.loyalty_note_label': '',
99
+ '$label.main_product_info.loyalty_note': 'U kunt uw Loyalty-instellingen beheren in het X-Series-beheerpaneel '
100
+ + '→ Instellingen → Loyalty-pagina.',
101
+
102
+ '$label.additional_product_info.title': 'Aanvullende productinformatie',
103
+ '$label.additional_product_info.description': 'Aanvullende informatie verschijnt in dezelfde '
104
+ + 'volgorde als op de productpagina. U kunt deze instellingen bewerken en herschikken om klanten '
105
+ + 'het product beter te laten begrijpen.',
106
+
107
+ '$label.show': 'Tonen',
108
+ '$label.do_not_show': 'Niet tonen',
109
+ '$label.learn_more': 'Meer informatie',
110
+
111
+ '$label.image_gallery': 'Afbeeldingengalerij',
112
+ '$label.image_gallery.image_placement': 'Afbeeldingsplaatsing',
113
+ '$label.image_gallery.horizontal': 'Horizontaal',
114
+ '$label.image_gallery.vertical': 'Verticaal',
115
+ '$label.image_gallery.full_images': 'Afbeeldingen op volledig formaat',
116
+ '$label.image_gallery.zoom_image': 'Afbeelding zoomen bij aanwijzen',
117
+ '$label.image_gallery.show_alt_text': 'Alt-tekst van afbeelding als beschrijving tonen',
118
+
119
+ '$label.color_swatches': 'Kleurstalen',
120
+ '$label.color_swatches.description': 'Kleurstalinstellingen worden ook toegepast op de productkaart in de catalogus.',
121
+ '$label.color_swatches.size': 'Grootte',
122
+ '$label.color_swatches.size.small': 'Klein',
123
+ '$label.color_swatches.size.medium': 'Gemiddeld',
124
+ '$label.color_swatches.size.large': 'Groot',
125
+ '$label.color_swatches.shape': 'Vorm',
126
+ '$label.color_swatches.shape.circle': 'Cirkel',
127
+ '$label.color_swatches.shape.square': 'Vierkant',
128
+ '$label.color_swatches.shape.rounded_square': 'Afgerond vierkant',
129
+
130
+ '$label.add_to_bag_button': 'Knop "In winkelwagen"',
131
+ '$label.add_to_bag_button.stock_availability': 'Voorraadbeschikbaarheid',
132
+ '$label.add_to_bag_button.number_of_items': 'Aantal items',
133
+ '$label.add_to_bag_button.product_quantity': 'Producthoeveelheid',
134
+
135
+ '$label.navigation': 'Navigatie',
136
+ '$label.navigation.breadcrumbs': 'Broodkruimels',
137
+ '$label.navigation.breadcrumbs.in_sidebar': 'Tonen in zijbalk',
138
+ '$label.navigation.breadcrumbs.in_header': 'Tonen in koptekst',
139
+ '$label.navigation.breadcrumbs.do_not_show': 'Niet tonen',
140
+ '$label.navigation.show_arrows': 'Navigatiepijlen tonen',
141
+
142
+ '$label.outlets_stock': 'Vestigingen & Voorraad',
143
+ '$label.outlets_stock.list_outlets': 'Lijst van beschikbare vestigingen',
144
+ '$label.outlets_stock.number_of_items': 'Aantal items op voorraad',
145
+
146
+ '$label.estimated_delivery_time': 'Geschatte levertijd',
147
+ '$label.estimated_delivery_time.display': 'Geschatte levertijd weergeven',
148
+ '$label.estimated_delivery_time.description': 'Ga naar het configuratiescherm om de geschatte levertijd te beheren.',
149
+ '$label.estimated_delivery_time.info_label': '',
150
+ '$label.estimated_delivery_time.info_description': '',
151
+
152
+ '$label.wholesale_prices': 'Groothandelsprijzen',
153
+ '$label.wholesale_prices.display': 'Groothandelsprijzen weergeven',
154
+ '$label.wholesale_prices.description': 'Ga naar het configuratiescherm om de groothandelsprijzen te beheren.',
155
+ '$label.wholesale_prices.info_label': '',
156
+ '$label.wholesale_prices.info_description': '',
157
+
158
+ '$label.product_reviews': 'Productbeoordelingen',
159
+ '$label.product_reviews.show': 'Productbeoordelingen tonen',
160
+ '$label.product_reviews.section_view': 'Sectieweergave',
161
+ '$label.product_reviews.one_card': 'Eén kaart',
162
+ '$label.product_reviews.multiple_cards': 'Meerdere kaarten',
163
+
164
+ '$label.favorites_button': 'Favorietenknop',
165
+ '$label.favorites_button.display': 'Favorietenknop weergeven',
166
+
167
+ '$label.share_buttons': 'Deelknoppen',
168
+ '$label.share_buttons.display': 'Deelknoppen weergeven',
169
+
170
+ '$label.product_details': 'Productdetails',
171
+ '$label.product_details.weight': 'Gewicht',
172
+ '$label.product_details.attributes': 'Productkenmerken',
173
+ '$label.product_details.description_toggle': 'Productbeschrijving',
174
+ },
175
+
176
+ fr: {
177
+ '$label.main_product_info.title': 'Informations principales du produit',
178
+ '$label.main_product_info.description': 'Les informations telles que le nom, le SKU, le sous-titre, le prix '
179
+ + 'et les options du produit restent fixes. La mise en page et l\'apparence de ces éléments ne peuvent pas être modifiées.',
180
+ '$label.main_product_info.sku': 'SKU',
181
+ '$label.main_product_info.show_sku': 'Afficher le SKU',
182
+ '$label.main_product_info.loyalty': 'Loyalty',
183
+ '$label.main_product_info.show_loyalty': 'Afficher les bonus Loyalty',
184
+ '$label.main_product_info.loyalty_note_label': '',
185
+ '$label.main_product_info.loyalty_note': 'Vous pouvez gérer vos paramètres Loyalty dans le panneau '
186
+ + 'd\'administration X-Series → Paramètres → page Loyalty.',
187
+
188
+ '$label.additional_product_info.title': 'Informations complémentaires du produit',
189
+ '$label.additional_product_info.description': 'Les informations complémentaires apparaissent dans le même '
190
+ + 'ordre que sur la page du produit. Vous pouvez modifier et réorganiser ces paramètres pour aider les clients '
191
+ + 'à mieux comprendre le produit.',
192
+
193
+ '$label.show': 'Afficher',
194
+ '$label.do_not_show': 'Ne pas afficher',
195
+ '$label.learn_more': 'En savoir plus',
196
+
197
+ '$label.image_gallery': 'Galerie d\'images',
198
+ '$label.image_gallery.image_placement': 'Placement des images',
199
+ '$label.image_gallery.horizontal': 'Horizontal',
200
+ '$label.image_gallery.vertical': 'Vertical',
201
+ '$label.image_gallery.full_images': 'Images en taille réelle',
202
+ '$label.image_gallery.zoom_image': 'Zoom sur l\'image au survol',
203
+ '$label.image_gallery.show_alt_text': 'Afficher le texte alternatif de l\'image comme description',
204
+
205
+ '$label.color_swatches': 'Échantillons de couleurs',
206
+ '$label.color_swatches.description': 'Les paramètres des échantillons de couleurs sont également appliqués à la fiche produit dans le catalogue.',
207
+ '$label.color_swatches.size': 'Taille',
208
+ '$label.color_swatches.size.small': 'Petit',
209
+ '$label.color_swatches.size.medium': 'Moyen',
210
+ '$label.color_swatches.size.large': 'Grand',
211
+ '$label.color_swatches.shape': 'Forme',
212
+ '$label.color_swatches.shape.circle': 'Cercle',
213
+ '$label.color_swatches.shape.square': 'Carré',
214
+ '$label.color_swatches.shape.rounded_square': 'Carré Arrondi',
215
+
216
+ '$label.add_to_bag_button': 'Bouton "Ajouter au Panier"',
217
+ '$label.add_to_bag_button.stock_availability': 'Disponibilité en stock',
218
+ '$label.add_to_bag_button.number_of_items': 'Nombre d\'articles',
219
+ '$label.add_to_bag_button.product_quantity': 'Quantité du produit',
220
+
221
+ '$label.navigation': 'Navigation',
222
+ '$label.navigation.breadcrumbs': 'Fil d\'Ariane',
223
+ '$label.navigation.breadcrumbs.in_sidebar': 'Afficher dans la barre latérale',
224
+ '$label.navigation.breadcrumbs.in_header': 'Afficher dans l\'en-tête',
225
+ '$label.navigation.breadcrumbs.do_not_show': 'Ne pas afficher',
226
+ '$label.navigation.show_arrows': 'Afficher les flèches de navigation',
227
+
228
+ '$label.outlets_stock': 'Points de vente & Stock',
229
+ '$label.outlets_stock.list_outlets': 'Liste des points de vente disponibles',
230
+ '$label.outlets_stock.number_of_items': 'Nombre d\'articles en stock',
231
+
232
+ '$label.estimated_delivery_time': 'Délai de livraison estimé',
233
+ '$label.estimated_delivery_time.display': 'Afficher le délai de livraison estimé',
234
+ '$label.estimated_delivery_time.description': 'Pour gérer le délai de livraison estimé, accédez au panneau de configuration.',
235
+ '$label.estimated_delivery_time.info_label': '',
236
+ '$label.estimated_delivery_time.info_description': '',
237
+
238
+ '$label.wholesale_prices': 'Prix de gros',
239
+ '$label.wholesale_prices.display': 'Afficher les prix de gros',
240
+ '$label.wholesale_prices.description': 'Pour gérer les prix de gros, accédez au panneau de configuration.',
241
+ '$label.wholesale_prices.info_label': '',
242
+ '$label.wholesale_prices.info_description': '',
243
+
244
+ '$label.product_reviews': 'Avis sur les produits',
245
+ '$label.product_reviews.show': 'Afficher les avis produits',
246
+ '$label.product_reviews.section_view': 'Vue de la section',
247
+ '$label.product_reviews.one_card': 'Une carte',
248
+ '$label.product_reviews.multiple_cards': 'Plusieurs cartes',
249
+
250
+ '$label.favorites_button': 'Bouton favoris',
251
+ '$label.favorites_button.display': 'Afficher le bouton favoris',
252
+
253
+ '$label.share_buttons': 'Boutons de partage',
254
+ '$label.share_buttons.display': 'Afficher les boutons de partage',
255
+
256
+ '$label.product_details': 'Détails du produit',
257
+ '$label.product_details.weight': 'Poids',
258
+ '$label.product_details.attributes': 'Attributs du produit',
259
+ '$label.product_details.description_toggle': 'Description du produit',
260
+ },
261
+ });