@homedev/framework 0.0.13 → 1.0.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/dist/index.d.ts CHANGED
@@ -1,3 +1,81 @@
1
+ /**
2
+ * Parses and queries command-line arguments.
3
+ *
4
+ * Accepts argv-like arrays and parses only the provided tokens.
5
+ *
6
+ * @public
7
+ */
8
+ export declare class CommandLineArgs {
9
+ #private;
10
+ /**
11
+ * Creates a parser for the provided command-line tokens.
12
+ *
13
+ * @param args - Argument tokens to parse.
14
+ * @param definitions - Known argument definitions used by usage output.
15
+ */
16
+ constructor(args: string[], definitions?: CommandLineArgumentDefinition[]);
17
+ /**
18
+ * Returns normalized parsed argument tokens.
19
+ */
20
+ get args(): string[];
21
+ /**
22
+ * Returns non-option positional values.
23
+ */
24
+ get positionals(): string[];
25
+ /**
26
+ * Returns true if a flag was provided.
27
+ *
28
+ * @param flag - Option name with or without `-`/`--` prefix.
29
+ */
30
+ has(flag: string): boolean;
31
+ /**
32
+ * Returns values for a flag.
33
+ *
34
+ * @param flag - Option name with or without `-`/`--` prefix.
35
+ */
36
+ getArgs(flag: string): string[];
37
+ /**
38
+ * Returns true for boolean flags, first value for valued flags, or undefined.
39
+ *
40
+ * @param flag - Option name with or without `-`/`--` prefix.
41
+ */
42
+ get(flag: string): string | true | undefined;
43
+ /**
44
+ * Returns all options as a plain object.
45
+ */
46
+ toObject(): Record<string, string[] | true>;
47
+ /**
48
+ * Builds usage output from provided argument definitions.
49
+ *
50
+ * @param command - Command name shown in usage output.
51
+ */
52
+ usage(command?: string): string;
53
+ }
54
+
55
+ /**
56
+ * Defines an argument for usage output.
57
+ *
58
+ * @public
59
+ */
60
+ export declare interface CommandLineArgumentDefinition {
61
+ name: string;
62
+ alias?: string;
63
+ description?: string;
64
+ takesValue?: boolean;
65
+ multiple?: boolean;
66
+ valueName?: string;
67
+ }
68
+
69
+ /**
70
+ * Parsed representation of a single CLI option.
71
+ *
72
+ * @public
73
+ */
74
+ export declare interface CommandLineOption {
75
+ values: string[];
76
+ sawEqualsStyle: boolean;
77
+ }
78
+
1
79
  /**
2
80
  * Checks whether a file is readable.
3
81
  *
@@ -494,6 +572,18 @@ declare global {
494
572
  var defined: <T>(value: T | undefined | null, msg?: string) => T;
495
573
  }
496
574
 
575
+ declare global {
576
+ interface ObjectConstructor {
577
+ mapEntries<T extends object, U>(obj: T, callback: (key: keyof T, value: T[keyof T]) => [string | number | symbol, U]): Record<string | number | symbol, U>;
578
+ toList<T extends object, U extends object, X extends string>(obj: T, key: X): (Record<X, string> & U)[];
579
+ deepClone<T extends object>(obj: T): T;
580
+ merge(source: any, target: any, options?: MergeOptions): void;
581
+ navigate(o: any, cb: NavigateCallback): Promise<void>;
582
+ find(from: any, cb: (path: string, value: any) => boolean): Promise<any[]>;
583
+ select(from: any, path: string, options?: SelectOptions): any;
584
+ }
585
+ }
586
+
497
587
  declare global {
498
588
  interface String {
499
589
  capitalize(): string;
@@ -521,18 +611,6 @@ declare global {
521
611
  }
522
612
  }
523
613
 
524
- declare global {
525
- interface ObjectConstructor {
526
- mapEntries<T extends object, U>(obj: T, callback: (key: keyof T, value: T[keyof T]) => [string | number | symbol, U]): Record<string | number | symbol, U>;
527
- toList<T extends object, U extends object, X extends string>(obj: T, key: X): (Record<X, string> & U)[];
528
- deepClone<T extends object>(obj: T): T;
529
- merge(source: any, target: any, options?: MergeOptions): void;
530
- navigate(o: any, cb: NavigateCallback): Promise<void>;
531
- find(from: any, cb: (path: string, value: any) => boolean): Promise<any[]>;
532
- select(from: any, path: string, options?: SelectOptions): any;
533
- }
534
- }
535
-
536
614
  declare global {
537
615
  interface Array<T> {
538
616
  mapAsync<U>(callback: (value: T, index: number, array: T[]) => Promise<U>): Promise<U[]>;
package/dist/index.js CHANGED
@@ -1,9 +1,11 @@
1
- Array.prototype.findOrFail=function(T,x,f){let m=this.find(T,f);if(m===void 0)throw Error(x??"Element not found");return m};Array.flat=function(T){if(Array.isArray(T))return T.flat(2);else return[T]};Array.prototype.forEachAsync=async function(T){for(let x=0;x<this.length;x++)await T(this[x],x,this)};Array.prototype.groupBy=function(T){return this.reduce((x,f)=>{let m=T(f);if(!x[m])x[m]=[];return x[m].push(f),x},{})};Array.prototype.createInstances=function(T,...x){return this.map((f,m)=>new T(...x,f,m))};Array.prototype.mapAsync=async function(T){return Promise.all(this.map(T))};Array.prototype.nonNullMap=function(T){let x=[];for(let f=0;f<this.length;f++){let m=T(this[f],f,this);if(m!=null)x.push(m)}return x};Array.prototype.nonNullMapAsync=async function(T){let x=[];for(let f=0;f<this.length;f++){let m=await T(this[f],f,this);if(m!=null)x.push(m)}return x};Array.prototype.mergeAll=function(T){let x={};for(let f of this.slice().reverse())Object.merge(f,x,T);return x};Array.prototype.toObject=function(T,x){return Object.fromEntries(this.map((f)=>{let m=T(f),U=x?x(f):f;return[m,U]}))};Array.prototype.toObjectWithKey=function(T){return Object.fromEntries(this.map((x)=>[String(x[T]),x]))};Array.prototype.selectFor=function(T,x,f,m){let U=this.find(T,m);if(U===void 0)throw Error(f??"Element not found");return x(U)};Array.prototype.sortBy=function(T,x=!0){return this.slice().sort((f,m)=>{let U=T(f),b=T(m);if(U<b)return x?-1:1;if(U>b)return x?1:-1;return 0})};Array.prototype.unique=function(){return Array.from(new Set(this))};Array.prototype.uniqueBy=function(T){let x=new Set;return this.filter((f)=>{let m=T(f);if(x.has(m))return!1;else return x.add(m),!0})};var w;((O)=>{O[O.Explore=0]="Explore";O[O.SkipSiblings=1]="SkipSiblings";O[O.NoExplore=2]="NoExplore";O[O.ReplaceParent=3]="ReplaceParent";O[O.DeleteParent=4]="DeleteParent";O[O.MergeParent=5]="MergeParent";O[O.ReplaceItem=6]="ReplaceItem";O[O.DeleteItem=7]="DeleteItem"})(w||={});class F{action;by;skipSiblings;reexplore;constructor(T,x,f,m){this.action=T;this.by=x;this.skipSiblings=f;this.reexplore=m}static _explore=new F(0);static _noExplore=new F(2);static _skipSiblings=new F(1);static _deleteParent=new F(4);static ReplaceParent(T,x){return new F(3,T,void 0,x)}static SkipSiblings(){return F._skipSiblings}static Explore(){return F._explore}static NoExplore(){return F._noExplore}static DeleteParent(){return F._deleteParent}static MergeParent(T){return new F(5,T)}static ReplaceItem(T,x){return new F(6,T,x)}static DeleteItem(T){return new F(7,void 0,T)}}Object.navigate=async(T,x)=>{let f=new WeakSet,m=[],U=[],b=async(E,O,$)=>{let j=E===null,B=j?F.Explore():await x({key:E,value:O,path:m,parent:$,parents:U});if(O&&typeof O==="object"&&B.action===0){if(f.has(O))return B;if(f.add(O),!j)m.push(E),U.push($);let X=O;while(await A(X,E,$))X=$[E];if(!j)U.pop(),m.pop()}return B},A=async(E,O,$)=>{let j=Object.keys(E),K=j.length;for(let B=0;B<K;B++){let Y=j[B],G=E[Y],X=await b(Y,G,E),Z=X.action;if(Z===0||Z===2)continue;if(Z===6){if(E[Y]=X.by,X.skipSiblings)return;continue}if(Z===7){if(delete E[Y],X.skipSiblings)return;continue}if(Z===1)return;if(Z===3){if(O===null)throw Error("Cannot replace root object");if($[O]=X.by,X.reexplore)return!0;return}if(Z===4){if(O===null)throw Error("Cannot delete root object");delete $[O];return}if(Z===5)delete E[Y],Object.assign(E,X.by)}};await b(null,T,null)};Object.find=async function(T,x){let f=[];return await Object.navigate(T,(m)=>{if(x([...m.path,m.key].join("."),m.value))f.push(m.value);return F.Explore()}),f};Object.merge=(T,x,f)=>{for(let m of Object.keys(x)){if(T[m]===void 0)continue;let U=x[m],b=T[m];if(typeof b!==typeof U||Array.isArray(b)!==Array.isArray(U)){let E=f?.mismatch?.(m,b,U,T,x);if(E!==void 0){x[m]=E;continue}throw Error(`Type mismatch: ${m}`)}let A=f?.mode?.(m,b,U,T,x)??x[".merge"]??"merge";switch(A){case"source":x[m]=b;continue;case"target":continue;case"skip":delete x[m],delete T[m];continue;case"merge":break;default:throw Error(`Unknown merge mode: ${A}`)}if(typeof b==="object")if(Array.isArray(b))U.push(...b);else{if(f?.navigate?.(m,b,U,T,x)===!1)continue;Object.merge(b,U,f)}else{if(b===U)continue;let E=f?.conflict?.(m,b,U,T,x);x[m]=E===void 0?U:E}}for(let m of Object.keys(T))if(x[m]===void 0)x[m]=T[m]};var L=/^\[([^=\]]*)([=]*)([^\]]*)\]$/,V=/^([^[\]]*)\[([^\]]*)]$/,J=(T,x,f,m)=>{if(T.startsWith("{")&&T.endsWith("}")){let U=T.substring(1,T.length-1);return Object.select(x,U,f)?.toString()}return m?T:void 0},P=(T,x,f,m)=>{let U=J(x,f,m);if(U)return Object.select(T,U,m);let b=L.exec(x);if(b){let[,E,O,$]=b,j=J(E.trim(),f,m,!0),K=J($.trim(),f,m,!0);if(Array.isArray(T)&&(O==="="||O==="==")&&j)return T.find((B)=>B?.[j]==K)}let A=V.exec(x);if(A){let[,E,O]=A;return T?.[E]?.[O]}return T?.[x]};Object.select=(T,x,f)=>{let m=void 0,U=void 0,b=x??"",A=(K)=>{if(!K)return[K,!1];return K.endsWith("?")?[K.substring(0,K.length-1),!0]:[K,!1]},E=(K,B)=>{let[Y,G]=A(B.pop());if(!Y){if(f?.set!==void 0&&U!==void 0&&m!==void 0)m[U]=f.set;return K}let X=P(K,Y,T,f);if(X===void 0){if(G||f?.optional||f?.defaultValue!==void 0)return;throw Error(`Unknown path element: "${Y}" in "${b}"`)}return m=K,U=Y,E(X,B)},O=b.splitNested(f?.separator??".","{","}"),$=void 0;if(O.length>0&&O[O.length-1].startsWith("?="))$=O.pop()?.substring(2);O.reverse();let j=E(T,O);if(j===void 0)return $??f?.defaultValue;return j};Object.deepClone=function(T){if(typeof structuredClone<"u")try{return structuredClone(T)}catch{}return JSON.parse(JSON.stringify(T))};Object.toList=function(T,x){return Object.entries(T).map(([f,m])=>({[x]:f,...m}))};Object.mapEntries=function(T,x){let m=Object.entries(T).map(([U,b])=>x(U,b));return Object.fromEntries(m)};global.AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;global.defined=(T,x="Value is undefined")=>{if(T===void 0||T===null)throw Error(x);return T};String.prototype.tokenize=function(T,x=/\${([^}]+)}/g){return this.replace(x,(f,m)=>{let U=T[m];if(U===null||U===void 0)return"";if(typeof U==="string")return U;if(typeof U==="number"||typeof U==="boolean")return String(U);return String(U)})};String.prototype.toPascal=function(){return this.replace(/((?:[_ ]+)\w|^\w)/g,(T,x)=>x.toUpperCase()).replace(/[^a-zA-Z0-9 ]/g,"").replace(/[_ ]/g,"")};String.prototype.capitalize=function(){return this.replace(/((?:[ ]+)\w|^\w)/g,(T,x)=>x.toUpperCase())};String.prototype.toCamel=function(){return this.toPascal().replace(/((?:[ ]+\w)|^\w)/g,(T,x)=>x.toLowerCase())};String.prototype.toSnake=function(){return this.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/\s+/g,"_")};String.prototype.toKebab=function(){return this.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/\s+/g,"-")};String.prototype.changeCase=function(T){switch(T){case"upper":return this.toUpperCase();case"lower":return this.toLowerCase();case"pascal":return this.toPascal();case"camel":return this.toCamel();case"snake":return this.toSnake();case"kebab":return this.toKebab();default:throw Error(`Unsupported case type: ${T}`)}};String.prototype.splitWithQuotes=function(T=","){let x=[],f=this.length,m=T.length,U=0,b=(A)=>{if(A+m>f)return!1;for(let E=0;E<m;E++)if(this[A+E]!==T[E])return!1;return!0};while(U<f){while(U<f&&this[U]===" ")U++;if(U>=f)break;let A="",E=this[U]==='"'||this[U]==="'";if(E){let O=this[U++];while(U<f&&this[U]!==O)A+=this[U++];if(U<f)U++}else{while(U<f&&!b(U)){let O=this[U];if(O==='"'||O==="'"){A+=O,U++;while(U<f&&this[U]!==O)A+=this[U++];if(U<f)A+=this[U++]}else A+=this[U++]}A=A.trim()}if(A)x.push({value:A,quoted:E});if(b(U))U+=m}return x};String.prototype.splitNested=function(T,x,f){let m=0,U="",b=[];for(let A of this){if(U+=A,A===x)m++;if(A===f)m--;if(m===0&&A===T)b.push(U.slice(0,-1)),U=""}if(U)b.push(U);return b};String.prototype.toStringBuilder=function(){return new C(this.split(`
2
- `))};String.prototype.padBlock=function(T,x=`
3
- `,f=" "){let m=f.repeat(T);return this.split(x).map((U)=>m+U).join(x)};String.prototype.stripIndent=function(){let T=this.split(/\r?\n/),x=T.filter((m)=>m.trim().length>0).map((m)=>/^[ \t]*/.exec(m)?.[0].length??0),f=x.length>0?Math.min(...x):0;if(f===0)return this;return T.map((m)=>m.slice(f)).join(`
4
- `)};String.prototype.toHtmlLink=function(T){return`<a href="${T??this.toString()}">${this.toString()}</a>`};String.prototype.toRgb=function(){let T=this.toString().replace("#","");if(T.length!==6)throw Error("Invalid hex color");let x=parseInt(T.substring(0,2),16),f=parseInt(T.substring(2,4),16),m=parseInt(T.substring(4,6),16);return`rgb(${x.toString()}, ${f.toString()}, ${m.toString()})`};String.prototype.toArgb=function(){let T=this.toString().replace("#","");if(T.length!==8)throw Error("Invalid hex color");let x=parseInt(T.substring(0,2),16),f=parseInt(T.substring(2,4),16),m=parseInt(T.substring(4,6),16),U=parseInt(T.substring(6,8),16);return`argb(${x.toString()}, ${f.toString()}, ${m.toString()}, ${U.toString()})`};String.prototype.single=function(T){return this.replaceAll(new RegExp(`(${T})+`,"g"),"$1")};String.prototype.remove=function(T){return this.replaceAll(new RegExp(T,"g"),"")};String.prototype.toAlphanum=function(){return this.replace(/[^a-z0-9]/gi,"")};String.prototype.toAlpha=function(){return this.replace(/[^a-z]/gi,"")};class R{options;constructor(T){this.options={level:"INFO",showClass:!1,levels:["DEBUG","VERBOSE","INFO","WARN","ERROR"],timeStamp:!1,timeOptions:{second:"2-digit",minute:"2-digit",hour:"2-digit",day:"2-digit",month:"2-digit",year:"2-digit"},logFunction:(x,...f)=>{switch(x){case"ERROR":console.error(...f);break;case"WARN":console.warn(...f);break;case"DEBUG":console.debug(...f);break;case"VERBOSE":console.log(...f);break;default:console.log(...f)}},...T}}write(T,...x){if(this.options.level){let U=this.options.levels.indexOf(this.options.level),b=this.options.levels.indexOf(T);if(U===-1)throw Error(`Unknown configured log level: ${this.options.level}`);if(b===-1)throw Error(`Unknown log level: ${T}`);if(b<U)return}let f=[],m=[];if(this.options.timeStamp)m.push(new Date().toLocaleString(this.options.timeLocale,this.options.timeOptions));if(this.options.showClass)m.push(T);if(m.length>0)f.push(`[${m.join(" ")}]`);f.push(...x),this.options.logFunction(T,...f)}info(...T){this.write("INFO",...T)}error(...T){this.write("ERROR",...T)}warn(...T){this.write("WARN",...T)}debug(...T){this.write("DEBUG",...T)}verbose(...T){this.write("VERBOSE",...T)}}class C{#T=[];#x=0;options;constructor(T,x){if(T instanceof C)this.options={...T.options,...x},this.#T.push(...T.#T);else if(this.options=x??{},T)if(Array.isArray(T))this.#T.push(...T);else this.#T.push(T)}setOptions(T){return this.options=T,this}clear(){return this.#T.length=0,this}isEmpty(){return this.#T.length===0}toString(){return this.#T.join("")}indent(){return this.#x+=1,this}dedent(){if(this.#x>0)this.#x-=1;return this}getCurrentIndent(){return this.#x}getLines(){return this.toString().split(`
1
+ Array.prototype.findOrFail=function(T,U,x){let b=this.find(T,x);if(b===void 0)throw Error(U??"Element not found");return b};Array.flat=function(T){if(Array.isArray(T))return T.flat(2);else return[T]};Array.prototype.forEachAsync=async function(T){for(let U=0;U<this.length;U++)await T(this[U],U,this)};Array.prototype.groupBy=function(T){return this.reduce((U,x)=>{let b=T(x);if(!U[b])U[b]=[];return U[b].push(x),U},{})};Array.prototype.createInstances=function(T,...U){return this.map((x,b)=>new T(...U,x,b))};Array.prototype.mapAsync=async function(T){return Promise.all(this.map(T))};Array.prototype.nonNullMap=function(T){let U=[];for(let x=0;x<this.length;x++){let b=T(this[x],x,this);if(b!=null)U.push(b)}return U};Array.prototype.nonNullMapAsync=async function(T){let U=[];for(let x=0;x<this.length;x++){let b=await T(this[x],x,this);if(b!=null)U.push(b)}return U};Array.prototype.mergeAll=function(T){let U={};for(let x of this.slice().reverse())Object.merge(x,U,T);return U};Array.prototype.toObject=function(T,U){return Object.fromEntries(this.map((x)=>{let b=T(x),O=U?U(x):x;return[b,O]}))};Array.prototype.toObjectWithKey=function(T){return Object.fromEntries(this.map((U)=>[String(U[T]),U]))};Array.prototype.selectFor=function(T,U,x,b){let O=this.find(T,b);if(O===void 0)throw Error(x??"Element not found");return U(O)};Array.prototype.sortBy=function(T,U=!0){return this.slice().sort((x,b)=>{let O=T(x),A=T(b);if(O<A)return U?-1:1;if(O>A)return U?1:-1;return 0})};Array.prototype.unique=function(){return Array.from(new Set(this))};Array.prototype.uniqueBy=function(T){let U=new Set;return this.filter((x)=>{let b=T(x);if(U.has(b))return!1;else return U.add(b),!0})};var w;((E)=>{E[E.Explore=0]="Explore";E[E.SkipSiblings=1]="SkipSiblings";E[E.NoExplore=2]="NoExplore";E[E.ReplaceParent=3]="ReplaceParent";E[E.DeleteParent=4]="DeleteParent";E[E.MergeParent=5]="MergeParent";E[E.ReplaceItem=6]="ReplaceItem";E[E.DeleteItem=7]="DeleteItem"})(w||={});class X{action;by;skipSiblings;reexplore;constructor(T,U,x,b){this.action=T;this.by=U;this.skipSiblings=x;this.reexplore=b}static _explore=new X(0);static _noExplore=new X(2);static _skipSiblings=new X(1);static _deleteParent=new X(4);static ReplaceParent(T,U){return new X(3,T,void 0,U)}static SkipSiblings(){return X._skipSiblings}static Explore(){return X._explore}static NoExplore(){return X._noExplore}static DeleteParent(){return X._deleteParent}static MergeParent(T){return new X(5,T)}static ReplaceItem(T,U){return new X(6,T,U)}static DeleteItem(T){return new X(7,void 0,T)}}Object.navigate=async(T,U)=>{let x=new WeakSet,b=[],O=[],A=async(F,E,j)=>{let B=F===null,Y=B?X.Explore():await U({key:F,value:E,path:b,parent:j,parents:O});if(E&&typeof E==="object"&&Y.action===0){if(x.has(E))return Y;if(x.add(E),!B)b.push(F),O.push(j);let f=E;while(await K(f,F,j))f=j[F];if(!B)O.pop(),b.pop()}return Y},K=async(F,E,j)=>{let B=Object.keys(F),$=B.length;for(let Y=0;Y<$;Y++){let Z=B[Y],Q=F[Z],f=await A(Z,Q,F),G=f.action;if(G===0||G===2)continue;if(G===6){if(F[Z]=f.by,f.skipSiblings)return;continue}if(G===7){if(delete F[Z],f.skipSiblings)return;continue}if(G===1)return;if(G===3){if(E===null)throw Error("Cannot replace root object");if(j[E]=f.by,f.reexplore)return!0;return}if(G===4){if(E===null)throw Error("Cannot delete root object");delete j[E];return}if(G===5)delete F[Z],Object.assign(F,f.by)}};await A(null,T,null)};Object.find=async function(T,U){let x=[];return await Object.navigate(T,(b)=>{if(U([...b.path,b.key].join("."),b.value))x.push(b.value);return X.Explore()}),x};Object.merge=(T,U,x)=>{for(let b of Object.keys(U)){if(T[b]===void 0)continue;let O=U[b],A=T[b];if(typeof A!==typeof O||Array.isArray(A)!==Array.isArray(O)){let F=x?.mismatch?.(b,A,O,T,U);if(F!==void 0){U[b]=F;continue}throw Error(`Type mismatch: ${b}`)}let K=x?.mode?.(b,A,O,T,U)??U[".merge"]??"merge";switch(K){case"source":U[b]=A;continue;case"target":continue;case"skip":delete U[b],delete T[b];continue;case"merge":break;default:throw Error(`Unknown merge mode: ${K}`)}if(typeof A==="object")if(Array.isArray(A))O.push(...A);else{if(x?.navigate?.(b,A,O,T,U)===!1)continue;Object.merge(A,O,x)}else{if(A===O)continue;let F=x?.conflict?.(b,A,O,T,U);U[b]=F===void 0?O:F}}for(let b of Object.keys(T))if(U[b]===void 0)U[b]=T[b]};var L=/^\[([^=\]]*)([=]*)([^\]]*)\]$/,V=/^([^[\]]*)\[([^\]]*)]$/,m=(T,U,x,b)=>{if(T.startsWith("{")&&T.endsWith("}")){let O=T.substring(1,T.length-1);return Object.select(U,O,x)?.toString()}return b?T:void 0},P=(T,U,x,b)=>{let O=m(U,x,b);if(O)return Object.select(T,O,b);let A=L.exec(U);if(A){let[,F,E,j]=A,B=m(F.trim(),x,b,!0),$=m(j.trim(),x,b,!0);if(Array.isArray(T)&&(E==="="||E==="==")&&B)return T.find((Y)=>Y?.[B]==$)}let K=V.exec(U);if(K){let[,F,E]=K;return T?.[F]?.[E]}return T?.[U]};Object.select=(T,U,x)=>{let b=void 0,O=void 0,A=U??"",K=($)=>{if(!$)return[$,!1];return $.endsWith("?")?[$.substring(0,$.length-1),!0]:[$,!1]},F=($,Y)=>{let[Z,Q]=K(Y.pop());if(!Z){if(x?.set!==void 0&&O!==void 0&&b!==void 0)b[O]=x.set;return $}let f=P($,Z,T,x);if(f===void 0){if(Q||x?.optional||x?.defaultValue!==void 0)return;throw Error(`Unknown path element: "${Z}" in "${A}"`)}return b=$,O=Z,F(f,Y)},E=A.splitNested(x?.separator??".","{","}"),j=void 0;if(E.length>0&&E[E.length-1].startsWith("?="))j=E.pop()?.substring(2);E.reverse();let B=F(T,E);if(B===void 0)return j??x?.defaultValue;return B};Object.deepClone=function(T){if(typeof structuredClone<"u")try{return structuredClone(T)}catch{}return JSON.parse(JSON.stringify(T))};Object.toList=function(T,U){return Object.entries(T).map(([x,b])=>({[U]:x,...b}))};Object.mapEntries=function(T,U){let b=Object.entries(T).map(([O,A])=>U(O,A));return Object.fromEntries(b)};global.AsyncFunction=Object.getPrototypeOf(async function(){}).constructor;global.defined=(T,U="Value is undefined")=>{if(T===void 0||T===null)throw Error(U);return T};String.prototype.tokenize=function(T,U=/\${([^}]+)}/g){return this.replace(U,(x,b)=>{let O=T[b];if(O===null||O===void 0)return"";if(typeof O==="string")return O;if(typeof O==="number"||typeof O==="boolean")return String(O);return String(O)})};String.prototype.toPascal=function(){return this.replace(/((?:[_ ]+)\w|^\w)/g,(T,U)=>U.toUpperCase()).replace(/[^a-zA-Z0-9 ]/g,"").replace(/[_ ]/g,"")};String.prototype.capitalize=function(){return this.replace(/((?:[ ]+)\w|^\w)/g,(T,U)=>U.toUpperCase())};String.prototype.toCamel=function(){return this.toPascal().replace(/((?:[ ]+\w)|^\w)/g,(T,U)=>U.toLowerCase())};String.prototype.toSnake=function(){return this.replace(/([a-z])([A-Z])/g,"$1_$2").replace(/\s+/g,"_")};String.prototype.toKebab=function(){return this.replace(/([a-z])([A-Z])/g,"$1-$2").replace(/\s+/g,"-")};String.prototype.changeCase=function(T){switch(T){case"upper":return this.toUpperCase();case"lower":return this.toLowerCase();case"pascal":return this.toPascal();case"camel":return this.toCamel();case"snake":return this.toSnake();case"kebab":return this.toKebab();default:throw Error(`Unsupported case type: ${T}`)}};String.prototype.splitWithQuotes=function(T=","){let U=[],x=this.length,b=T.length,O=0,A=(K)=>{if(K+b>x)return!1;for(let F=0;F<b;F++)if(this[K+F]!==T[F])return!1;return!0};while(O<x){while(O<x&&this[O]===" ")O++;if(O>=x)break;let K="",F=this[O]==='"'||this[O]==="'";if(F){let E=this[O++];while(O<x&&this[O]!==E)K+=this[O++];if(O<x)O++}else{while(O<x&&!A(O)){let E=this[O];if(E==='"'||E==="'"){K+=E,O++;while(O<x&&this[O]!==E)K+=this[O++];if(O<x)K+=this[O++]}else K+=this[O++]}K=K.trim()}if(K)U.push({value:K,quoted:F});if(A(O))O+=b}return U};String.prototype.splitNested=function(T,U,x){let b=0,O="",A=[];for(let K of this){if(O+=K,K===U)b++;if(K===x)b--;if(b===0&&K===T)A.push(O.slice(0,-1)),O=""}if(O)A.push(O);return A};String.prototype.toStringBuilder=function(){return new J(this.split(`
2
+ `))};String.prototype.padBlock=function(T,U=`
3
+ `,x=" "){let b=x.repeat(T);return this.split(U).map((O)=>b+O).join(U)};String.prototype.stripIndent=function(){let T=this.split(/\r?\n/),U=T.filter((b)=>b.trim().length>0).map((b)=>/^[ \t]*/.exec(b)?.[0].length??0),x=U.length>0?Math.min(...U):0;if(x===0)return this;return T.map((b)=>b.slice(x)).join(`
4
+ `)};String.prototype.toHtmlLink=function(T){return`<a href="${T??this.toString()}">${this.toString()}</a>`};String.prototype.toRgb=function(){let T=this.toString().replace("#","");if(T.length!==6)throw Error("Invalid hex color");let U=parseInt(T.substring(0,2),16),x=parseInt(T.substring(2,4),16),b=parseInt(T.substring(4,6),16);return`rgb(${U.toString()}, ${x.toString()}, ${b.toString()})`};String.prototype.toArgb=function(){let T=this.toString().replace("#","");if(T.length!==8)throw Error("Invalid hex color");let U=parseInt(T.substring(0,2),16),x=parseInt(T.substring(2,4),16),b=parseInt(T.substring(4,6),16),O=parseInt(T.substring(6,8),16);return`argb(${U.toString()}, ${x.toString()}, ${b.toString()}, ${O.toString()})`};String.prototype.single=function(T){return this.replaceAll(new RegExp(`(${T})+`,"g"),"$1")};String.prototype.remove=function(T){return this.replaceAll(new RegExp(T,"g"),"")};String.prototype.toAlphanum=function(){return this.replace(/[^a-z0-9]/gi,"")};String.prototype.toAlpha=function(){return this.replace(/[^a-z]/gi,"")};class R{options;constructor(T){this.options={level:"INFO",showClass:!1,levels:["DEBUG","VERBOSE","INFO","WARN","ERROR"],timeStamp:!1,timeOptions:{second:"2-digit",minute:"2-digit",hour:"2-digit",day:"2-digit",month:"2-digit",year:"2-digit"},logFunction:(U,...x)=>{switch(U){case"ERROR":console.error(...x);break;case"WARN":console.warn(...x);break;case"DEBUG":console.debug(...x);break;case"VERBOSE":console.log(...x);break;default:console.log(...x)}},...T}}write(T,...U){if(this.options.level){let O=this.options.levels.indexOf(this.options.level),A=this.options.levels.indexOf(T);if(O===-1)throw Error(`Unknown configured log level: ${this.options.level}`);if(A===-1)throw Error(`Unknown log level: ${T}`);if(A<O)return}let x=[],b=[];if(this.options.timeStamp)b.push(new Date().toLocaleString(this.options.timeLocale,this.options.timeOptions));if(this.options.showClass)b.push(T);if(b.length>0)x.push(`[${b.join(" ")}]`);x.push(...U),this.options.logFunction(T,...x)}info(...T){this.write("INFO",...T)}error(...T){this.write("ERROR",...T)}warn(...T){this.write("WARN",...T)}debug(...T){this.write("DEBUG",...T)}verbose(...T){this.write("VERBOSE",...T)}}class J{#T=[];#U=0;options;constructor(T,U){if(T instanceof J)this.options={...T.options,...U},this.#T.push(...T.#T);else if(this.options=U??{},T)if(Array.isArray(T))this.#T.push(...T);else this.#T.push(T)}setOptions(T){return this.options=T,this}clear(){return this.#T.length=0,this}isEmpty(){return this.#T.length===0}toString(){return this.#T.join("")}indent(){return this.#U+=1,this}dedent(){if(this.#U>0)this.#U-=1;return this}getCurrentIndent(){return this.#U}getLines(){return this.toString().split(`
5
5
  `)}formatLine(T){T??=`
6
- `;let x=(this.options.indentChar??" ").repeat(this.#x*(this.options.indentSize??2));if(this.options.trim)T=T.trim();return x+(this.options.linePrefix??"")+T+(this.options.lineSuffix??"")+(this.options.lineSeparator??`
7
- `)}write(...T){return this.#T.push(...T.flatMap((x)=>{if(x!==void 0){if(typeof x==="string")return x;if(Array.isArray(x))return x.flat();if(x instanceof C)return x.toString();if(typeof x==="function")return x(this);return String(x)}}).filter((x)=>x!==void 0)),this}writeLine(...T){return this.write(T.length>0?T.map((x)=>this.formatLine(x)):`
8
- `)}writeMap(T,x){return T.forEach((f,m)=>x(f,m,this)),this}}class S extends C{#T=0;#x="```";#f(T){return Math.min(6,Math.max(1,Math.floor(T)))}#m(T){if(T===void 0)return"```";let x=0;for(let f of T.matchAll(/`+/g))x=Math.max(x,f[0].length);return"`".repeat(Math.max(3,x+1))}header(T,x=1){let f=this.#f(x);return this.writeLine(`${"#".repeat(f)} ${T}`,"")}codeBlock(T,x){let f=this.#m(T);if(this.#x=f,x??="",this.writeLine(f+x),T!==void 0)this.writeLine(T).endCodeBlock();return this}endCodeBlock(){let T=this.#x;return this.#x="```",this.writeLine(T)}link(T,x,f){if(f)return this.write(`[${T}](${x} "${f}")`);return this.write(`[${T}](${x})`)}table(T,x){if(T.length===0)throw Error("Table requires at least one header");let f=T.map((b,A)=>{let E=b.length;return x.forEach((O)=>{if(O[A])E=Math.max(E,O[A].length)}),E}),m=T.map((b,A)=>b.padEnd(f[A]));this.writeLine("| "+m.join(" | ")+" |");let U=f.map((b)=>"-".repeat(b));return this.writeLine("| "+U.join(" | ")+" |"),x.forEach((b)=>{let A=T.map((E,O)=>(b[O]??"").padEnd(f[O]));this.writeLine("| "+A.join(" | ")+" |")}),this}blockquote(T){return T.split(`
9
- `).forEach((f)=>this.writeLine("> "+f)),this}bold(T){return this.write(`**${T}**`)}italic(T){return this.write(`*${T}*`)}item(T){return this.writeLine(`- ${T}`)}items(T){if(Array.isArray(T))T.forEach((x)=>this.item(x));else Object.entries(T).forEach(([x,f])=>f!==void 0&&this.item(`${x}: ${f!==void 0?String(f):""}`));return this}orderedList(T,x=1){return T.forEach((f,m)=>this.writeLine(`${(m+x).toString()}. ${f}`)),this}code(T){return this.write(`\`${T}\``)}horizontalRule(){return this.writeLine("---")}image(T,x){return this.writeLine(`![${T}](${x})`)}strikethrough(T){return this.write(`~~${T}~~`)}highlight(T){return this.write(`==${T}==`)}subscript(T){return this.write(`~${T}~`)}superscript(T){return this.write(`^${T}^`)}taskList(T){return T.forEach((x)=>this.writeLine(`- [${x.checked?"x":" "}] ${x.text}`)),this}section(T,x){if(x!==void 0)this.#T=this.#f(x);else this.#T=Math.min(6,this.#T+1);return this.header(T,this.#T)}endSection(){if(this.#T>0)this.#T--;return this}setSectionLevel(T){return this.#T=Math.min(6,Math.max(0,Math.floor(T))),this}}import H from"fs/promises";var z=async(T)=>{try{return await H.access(T,H.constants.R_OK),!0}catch{return!1}};import Q from"path";var M=async(T,x)=>{let f=!Q.isAbsolute(T)&&x?["",...x]:[""];for(let m of f){let U=Q.join(m,T);if(await z(U))return Q.resolve(U)}throw Error(`File not found: "${T}"`)};import k from"fs/promises";import d from"path";var N=(T,x)=>x?.some((f)=>new RegExp(f).test(T))===!0,hT=async(T,x)=>{let f=await M(T,x?.dirs),m=await k.readFile(f,"utf-8"),U=d.dirname(f),b={text:{fn:(O)=>O,matching:["\\.txt$","\\.text$"]},json:{fn:JSON.parse,matching:["\\.json$"]},...x?.parsers},A=x?.format?b[x.format]:Object.values(b).find((O)=>N(T,O.matching));if(!A)throw Error(`Unsupported format for file "${T}" and no matching parser found`);return{content:await A.fn(m),fullPath:f,folderPath:U}};import h from"fs/promises";var g=(T,x)=>x?.some((f)=>new RegExp(f).test(T))===!0,D=async(T,x,f)=>{let m={text:{fn:(b)=>b,matching:["\\.txt$","\\.text$"]},json:{fn:JSON.stringify,matching:["\\.json$"]},...f?.encoders},U=f?.format?m[f.format]:Object.values(m).find((b)=>g(T,b.matching));if(!U)throw Error(`Unsupported format for file "${T}" and no matching encoder found`);await h.writeFile(T,await U.fn(x))};import r from"fs/promises";var uT=async(T,x)=>{if(typeof T==="string"&&!T.includes("*"))return await x.map(T,0,[]);let f=await Array.fromAsync(r.glob(T,{cwd:x.cwd})),m=x.filter?f.filter(x.filter):f;return await Promise.all(m.map(x.map))};import y from"fs/promises";import I from"path";var lT=async(T,x)=>{if(x?.targetDirectory&&x?.removeFirst)try{await y.rm(x?.targetDirectory,{recursive:!0,force:!0})}catch(f){throw Error(`Failed to clean the output directory: ${f.message}`,{cause:f})}for(let f of T)await v(f,x)},v=async(T,x)=>{let f=I.join(x?.targetDirectory??".",T.name),m=I.dirname(f);if(x?.classes){if(T.class!==void 0&&!x.classes.includes(T.class))return;if(x.classRequired&&T.class===void 0)throw Error(`Output "${T.name}" is missing class field`)}if(x?.writing?.(T)===!1)return;try{await y.mkdir(m,{recursive:!0})}catch(U){throw Error(`Failed to create target directory "${m}" for output "${f}": ${U.message}`,{cause:U})}try{await D(f,T.value,{format:T.type??"text"})}catch(U){throw Error(`Failed to write output "${f}": ${U.message}`,{cause:U})}};import p from"fs/promises";import _ from"path";import W from"path";var q=(T)=>T?W.isAbsolute(T)?T:W.join(process.cwd(),T):process.cwd();var u=async(T,x)=>{let f=[];for(let m of T)try{let U=!_.isAbsolute(m)?_.join(q(x?.cwd),m):m;if(x?.filter?.(U)===!1)continue;let b=await import(U);if(x?.resolveDefault==="only"&&!b.default)throw Error(`Module ${m} does not have a default export`);let A=x?.resolveDefault?b.default??b:b,E=x?.map?await x.map(A,m):A;if(E!==void 0)f.push(E)}catch(U){if(x?.fail?.(m,U)===!1)continue;throw Error(`Failed to import module ${m}: ${U.message??U}`,{cause:U})}return f},fx=async(T,x)=>{let f=[],m=q(x?.cwd);for(let U of T){let b=(await Array.fromAsync(p.glob(U,{cwd:m}))).map((A)=>_.join(m,A));f.push(...await u(b,x))}return f};export{lT as writeOutputs,v as writeOutput,D as writeFormat,M as locate,hT as loadFormat,u as importList,fx as importGlob,uT as globMap,q as getCwd,z as exists,C as StringBuilder,F as NavigateResult,w as NavigateAction,S as Markdown,R as Logger};
6
+ `;let U=(this.options.indentChar??" ").repeat(this.#U*(this.options.indentSize??2));if(this.options.trim)T=T.trim();return U+(this.options.linePrefix??"")+T+(this.options.lineSuffix??"")+(this.options.lineSeparator??`
7
+ `)}write(...T){return this.#T.push(...T.flatMap((U)=>{if(U!==void 0){if(typeof U==="string")return U;if(Array.isArray(U))return U.flat();if(U instanceof J)return U.toString();if(typeof U==="function")return U(this);return String(U)}}).filter((U)=>U!==void 0)),this}writeLine(...T){return this.write(T.length>0?T.map((U)=>this.formatLine(U)):`
8
+ `)}writeMap(T,U){return T.forEach((x,b)=>U(x,b,this)),this}}class S extends J{#T=0;#U="```";#x(T){return Math.min(6,Math.max(1,Math.floor(T)))}#b(T){if(T===void 0)return"```";let U=0;for(let x of T.matchAll(/`+/g))U=Math.max(U,x[0].length);return"`".repeat(Math.max(3,U+1))}header(T,U=1){let x=this.#x(U);return this.writeLine(`${"#".repeat(x)} ${T}`,"")}codeBlock(T,U){let x=this.#b(T);if(this.#U=x,U??="",this.writeLine(x+U),T!==void 0)this.writeLine(T).endCodeBlock();return this}endCodeBlock(){let T=this.#U;return this.#U="```",this.writeLine(T)}link(T,U,x){if(x)return this.write(`[${T}](${U} "${x}")`);return this.write(`[${T}](${U})`)}table(T,U){if(T.length===0)throw Error("Table requires at least one header");let x=T.map((A,K)=>{let F=A.length;return U.forEach((E)=>{if(E[K])F=Math.max(F,E[K].length)}),F}),b=T.map((A,K)=>A.padEnd(x[K]));this.writeLine("| "+b.join(" | ")+" |");let O=x.map((A)=>"-".repeat(A));return this.writeLine("| "+O.join(" | ")+" |"),U.forEach((A)=>{let K=T.map((F,E)=>(A[E]??"").padEnd(x[E]));this.writeLine("| "+K.join(" | ")+" |")}),this}blockquote(T){return T.split(`
9
+ `).forEach((x)=>this.writeLine("> "+x)),this}bold(T){return this.write(`**${T}**`)}italic(T){return this.write(`*${T}*`)}item(T){return this.writeLine(`- ${T}`)}items(T){if(Array.isArray(T))T.forEach((U)=>this.item(U));else Object.entries(T).forEach(([U,x])=>x!==void 0&&this.item(`${U}: ${x!==void 0?String(x):""}`));return this}orderedList(T,U=1){return T.forEach((x,b)=>this.writeLine(`${(b+U).toString()}. ${x}`)),this}code(T){return this.write(`\`${T}\``)}horizontalRule(){return this.writeLine("---")}image(T,U){return this.writeLine(`![${T}](${U})`)}strikethrough(T){return this.write(`~~${T}~~`)}highlight(T){return this.write(`==${T}==`)}subscript(T){return this.write(`~${T}~`)}superscript(T){return this.write(`^${T}^`)}taskList(T){return T.forEach((U)=>this.writeLine(`- [${U.checked?"x":" "}] ${U.text}`)),this}section(T,U){if(U!==void 0)this.#T=this.#x(U);else this.#T=Math.min(6,this.#T+1);return this.header(T,this.#T)}endSection(){if(this.#T>0)this.#T--;return this}setSectionLevel(T){return this.#T=Math.min(6,Math.max(0,Math.floor(T))),this}}class k{#T;#U;#x=new Map;#b=[];constructor(T,U=[]){this.#T=[...T],this.#U=[...U],this.#E()}get args(){return[...this.#T]}get positionals(){return[...this.#b]}has(T){return this.#x.has(this.#O(T))}getArgs(T){return[...this.#x.get(this.#O(T))?.values??[]]}get(T){let U=this.#x.get(this.#O(T))?.values;if(!U)return;if(U.length===0)return!0;return U[0]}toObject(){let T={};for(let[U,x]of this.#x.entries())T[U]=x.values.length>0?[...x.values]:!0;return T}usage(T="command"){let U=[`Usage: ${T} [options]`];if(this.#b.length>0)U[0]+=" [values]";if(this.#U.length===0)return U.join(`
10
+ `);U.push("","Options:");for(let x of this.#U){let b=`--${x.name}`,O=x.alias?`-${x.alias}`:void 0,A=x.valueName??"value",K=x.takesValue?x.multiple?` <${A}...>`:` <${A}>`:"",F=O?`${O}, ${b}`:b,E=x.description?` ${x.description}`:"";U.push(` ${F}${K}${E}`)}return U.join(`
11
+ `)}#E(){for(let T=0;T<this.#T.length;T++){let U=this.#T[T];if(!U.startsWith("-")||U==="-"){this.#b.push(U);continue}if(U.startsWith("--")&&U.includes("=")){let O=U.indexOf("="),A=this.#O(U.slice(0,O)),K=U.slice(O+1);this.#A(A,K.length>0?[K]:[""],!0);continue}let x=this.#O(U),b=[];while(T+1<this.#T.length){let O=this.#T[T+1];if(O.startsWith("-")&&O!=="-")break;b.push(O),T++}this.#A(x,b,!1)}}#A(T,U,x){let b=this.#x.get(T);if(!b){this.#x.set(T,{values:[...U],sawEqualsStyle:x});return}b.values.push(...U),b.sawEqualsStyle=b.sawEqualsStyle||x}#O(T){return T.replace(/^-+/,"").trim()}}import M from"fs/promises";var q=async(T)=>{try{return await M.access(T,M.constants.R_OK),!0}catch{return!1}};import C from"path";var D=async(T,U)=>{let x=!C.isAbsolute(T)&&U?["",...U]:[""];for(let b of x){let O=C.join(b,T);if(await q(O))return C.resolve(O)}throw Error(`File not found: "${T}"`)};import N from"fs/promises";import d from"path";var h=(T,U)=>U?.some((x)=>new RegExp(x).test(T))===!0,vT=async(T,U)=>{let x=await D(T,U?.dirs),b=await N.readFile(x,"utf-8"),O=d.dirname(x),A={text:{fn:(E)=>E,matching:["\\.txt$","\\.text$"]},json:{fn:JSON.parse,matching:["\\.json$"]},...U?.parsers},K=U?.format?A[U.format]:Object.values(A).find((E)=>h(T,E.matching));if(!K)throw Error(`Unsupported format for file "${T}" and no matching parser found`);return{content:await K.fn(b),fullPath:x,folderPath:O}};import r from"fs/promises";var g=(T,U)=>U?.some((x)=>new RegExp(x).test(T))===!0,I=async(T,U,x)=>{let b={text:{fn:(A)=>A,matching:["\\.txt$","\\.text$"]},json:{fn:JSON.stringify,matching:["\\.json$"]},...x?.encoders},O=x?.format?b[x.format]:Object.values(b).find((A)=>g(T,A.matching));if(!O)throw Error(`Unsupported format for file "${T}" and no matching encoder found`);await r.writeFile(T,await O.fn(U))};import v from"fs/promises";var nT=async(T,U)=>{if(typeof T==="string"&&!T.includes("*"))return await U.map(T,0,[]);let x=await Array.fromAsync(v.glob(T,{cwd:U.cwd})),b=U.filter?x.filter(U.filter):x;return await Promise.all(b.map(U.map))};import z from"fs/promises";import W from"path";var aT=async(T,U)=>{if(U?.targetDirectory&&U?.removeFirst)try{await z.rm(U?.targetDirectory,{recursive:!0,force:!0})}catch(x){throw Error(`Failed to clean the output directory: ${x.message}`,{cause:x})}for(let x of T)await c(x,U)},c=async(T,U)=>{let x=W.join(U?.targetDirectory??".",T.name),b=W.dirname(x);if(U?.classes){if(T.class!==void 0&&!U.classes.includes(T.class))return;if(U.classRequired&&T.class===void 0)throw Error(`Output "${T.name}" is missing class field`)}if(U?.writing?.(T)===!1)return;try{await z.mkdir(b,{recursive:!0})}catch(O){throw Error(`Failed to create target directory "${b}" for output "${x}": ${O.message}`,{cause:O})}try{await I(x,T.value,{format:T.type??"text"})}catch(O){throw Error(`Failed to write output "${x}": ${O.message}`,{cause:O})}};import p from"fs/promises";import H from"path";import y from"path";var _=(T)=>T?y.isAbsolute(T)?T:y.join(process.cwd(),T):process.cwd();var u=async(T,U)=>{let x=[];for(let b of T)try{let O=!H.isAbsolute(b)?H.join(_(U?.cwd),b):b;if(U?.filter?.(O)===!1)continue;let A=await import(O);if(U?.resolveDefault==="only"&&!A.default)throw Error(`Module ${b} does not have a default export`);let K=U?.resolveDefault?A.default??A:A,F=U?.map?await U.map(K,b):K;if(F!==void 0)x.push(F)}catch(O){if(U?.fail?.(b,O)===!1)continue;throw Error(`Failed to import module ${b}: ${O.message??O}`,{cause:O})}return x},AU=async(T,U)=>{let x=[],b=_(U?.cwd);for(let O of T){let A=(await Array.fromAsync(p.glob(O,{cwd:b}))).map((K)=>H.join(b,K));x.push(...await u(A,U))}return x};export{aT as writeOutputs,c as writeOutput,I as writeFormat,D as locate,vT as loadFormat,u as importList,AU as importGlob,nT as globMap,_ as getCwd,q as exists,J as StringBuilder,X as NavigateResult,w as NavigateAction,S as Markdown,R as Logger,k as CommandLineArgs};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@homedev/framework",
3
- "version": "0.0.13",
3
+ "version": "1.0.1",
4
4
  "description": "homedev framework",
5
5
  "author": "julzor",
6
6
  "license": "ISC",