@vitnode/core 1.2.0-canary.77 → 1.2.0-canary.78
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/scripts/i18n-check.d.ts.map +1 -1
- package/dist/scripts/i18n-create.d.ts +20 -0
- package/dist/scripts/i18n-create.d.ts.map +1 -0
- package/dist/scripts/i18n-delete.d.ts +4 -0
- package/dist/scripts/i18n-delete.d.ts.map +1 -0
- package/dist/scripts/i18n-shared.d.ts +51 -0
- package/dist/scripts/i18n-shared.d.ts.map +1 -0
- package/dist/scripts/i18n-update.d.ts +3 -0
- package/dist/scripts/i18n-update.d.ts.map +1 -0
- package/dist/scripts/scripts.js +58 -4
- package/dist/src/api/lib/plugin.d.ts.map +1 -1
- package/dist/src/api/middlewares/global.middleware.d.ts.map +1 -1
- package/dist/src/api/middlewares/global.middleware.js +1 -1
- package/dist/src/components/languages-provider.d.ts.map +1 -1
- package/dist/src/components/languages-provider.js +1 -1
- package/dist/src/config.js +1 -1
- package/dist/src/database/languages.d.ts +0 -17
- package/dist/src/database/languages.d.ts.map +1 -1
- package/dist/src/database/languages.js +1 -1
- package/dist/src/lib/i18n/load-messages.d.ts.map +1 -1
- package/dist/src/lib/i18n/load-messages.js +1 -1
- package/dist/src/lib/i18n/sources.d.ts +8 -1
- package/dist/src/lib/i18n/sources.d.ts.map +1 -1
- package/dist/src/lib/i18n/sources.js +1 -1
- package/dist/src/lib/i18n/types.d.ts +2 -0
- package/dist/src/lib/i18n/types.d.ts.map +1 -1
- package/dist/src/lib/plugin.d.ts.map +1 -1
- package/dist/src/locales/api/en.json +19 -0
- package/dist/src/locales/api/index.d.ts +4 -0
- package/dist/src/locales/api/index.d.ts.map +1 -0
- package/dist/src/locales/api/index.js +1 -0
- package/dist/src/locales/en.json +14 -25
- package/dist/src/locales/index.d.ts.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/locales/api/en.json +19 -0
- package/src/locales/api/index.ts +15 -0
- package/src/locales/en.json +14 -25
- package/src/locales/index.ts +4 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n-check.d.ts","sourceRoot":"","sources":["../../scripts/i18n-check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"i18n-check.d.ts","sourceRoot":"","sources":["../../scripts/i18n-check.ts"],"names":[],"mappings":"AAoEA,eAAO,MAAM,SAAS,GAAU,OAAO,MAAM,mBA6M5C,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const addLocaleToConfig: (source: string, { code, name }: {
|
|
2
|
+
code: string;
|
|
3
|
+
name: string;
|
|
4
|
+
}) => null | string;
|
|
5
|
+
export declare const addMessagesToConfig: (source: string, { code, pluginIds }: {
|
|
6
|
+
code: string;
|
|
7
|
+
pluginIds: string[];
|
|
8
|
+
}) => null | string;
|
|
9
|
+
export declare const buildI18nFile: ({ code, defaultLocale, locales, name, pluginIds, }: {
|
|
10
|
+
code: string;
|
|
11
|
+
defaultLocale: string;
|
|
12
|
+
locales: {
|
|
13
|
+
code: string;
|
|
14
|
+
name: string;
|
|
15
|
+
}[];
|
|
16
|
+
name: string;
|
|
17
|
+
pluginIds: string[];
|
|
18
|
+
}) => string;
|
|
19
|
+
export declare const i18nCreate: () => Promise<never>;
|
|
20
|
+
//# sourceMappingURL=i18n-create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n-create.d.ts","sourceRoot":"","sources":["../../scripts/i18n-create.ts"],"names":[],"mappings":"AAiGA,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,MAAM,EACd,gBAAgB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,KAC7C,IAAI,GAAG,MAoBT,CAAC;AAsBF,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,MAAM,EACd,qBAAqB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,KACzD,IAAI,GAAG,MA0DT,CAAC;AAGF,eAAO,MAAM,aAAa,GAAI,oDAM3B;IACD,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,KAAG,MA8BH,CAAC;AAEF,eAAO,MAAM,UAAU,sBAsMtB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const removeLocaleFromConfig: (source: string, code: string) => string;
|
|
2
|
+
export declare const removeMessagesFromConfig: (source: string, code: string) => string;
|
|
3
|
+
export declare const i18nDelete: () => Promise<never>;
|
|
4
|
+
//# sourceMappingURL=i18n-delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n-delete.d.ts","sourceRoot":"","sources":["../../scripts/i18n-delete.ts"],"names":[],"mappings":"AAwDA,eAAO,MAAM,sBAAsB,GACjC,QAAQ,MAAM,EACd,MAAM,MAAM,KACX,MAiBF,CAAC;AAOF,eAAO,MAAM,wBAAwB,GACnC,QAAQ,MAAM,EACd,MAAM,MAAM,KACX,MAOF,CAAC;AAEF,eAAO,MAAM,UAAU,sBAoHtB,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export declare const CORE_PLUGIN_ID = "@vitnode/core";
|
|
2
|
+
export interface AppScope {
|
|
3
|
+
api: boolean;
|
|
4
|
+
web: boolean;
|
|
5
|
+
}
|
|
6
|
+
export declare const appScope: ({ api, web, }: {
|
|
7
|
+
api: boolean;
|
|
8
|
+
web: boolean;
|
|
9
|
+
}) => AppScope;
|
|
10
|
+
export declare const packageLocaleFiles: (pluginId: string, locale: string, { repoRoot, scope }: {
|
|
11
|
+
repoRoot: string;
|
|
12
|
+
scope: AppScope;
|
|
13
|
+
}) => string[];
|
|
14
|
+
export declare const readJsonTree: (filePath: string) => Record<string, unknown>;
|
|
15
|
+
export declare const flattenKeys: (value: unknown, prefix?: string) => string[];
|
|
16
|
+
export declare const packageDefaultTree: (pluginId: string, { locale, repoRoot, scope, }: {
|
|
17
|
+
locale: string;
|
|
18
|
+
repoRoot: string;
|
|
19
|
+
scope: AppScope;
|
|
20
|
+
}) => Record<string, unknown>;
|
|
21
|
+
export declare const appOverrideTree: (appDir: string, pluginId: string, locale: string) => Record<string, unknown>;
|
|
22
|
+
export declare const effectiveDefaultTree: (pluginId: string, { appDir, defaultLocale, repoRoot, scope, }: {
|
|
23
|
+
appDir: string;
|
|
24
|
+
defaultLocale: string;
|
|
25
|
+
repoRoot: string;
|
|
26
|
+
scope: AppScope;
|
|
27
|
+
}) => Record<string, unknown>;
|
|
28
|
+
export declare const dim: (value: string) => string;
|
|
29
|
+
export declare const red: (value: string) => string;
|
|
30
|
+
export declare const green: (value: string) => string;
|
|
31
|
+
export declare const cyan: (value: string) => string;
|
|
32
|
+
export declare const yellow: (value: string) => string;
|
|
33
|
+
export declare const prefix = "\u001B[34m[VitNode]\u001B[0m";
|
|
34
|
+
export declare const createReadline: () => import("node:readline/promises").Interface;
|
|
35
|
+
export type Readline = ReturnType<typeof createReadline>;
|
|
36
|
+
export declare const askQuestion: (rl: Readline, question: string, validate: (value: string) => null | string) => Promise<string>;
|
|
37
|
+
export declare const askConfirm: (rl: Readline, question: string) => Promise<boolean>;
|
|
38
|
+
export declare const resolveField: ({ missingMessage, provided, question, rl, validate, }: {
|
|
39
|
+
missingMessage: string;
|
|
40
|
+
provided: string | undefined;
|
|
41
|
+
question: string;
|
|
42
|
+
rl: null | Readline;
|
|
43
|
+
validate: (value: string) => null | string;
|
|
44
|
+
}) => Promise<string>;
|
|
45
|
+
export declare const findI18nSourceFile: (appDir: string) => null | string;
|
|
46
|
+
export declare const listAppLocaleFiles: (appDir: string) => {
|
|
47
|
+
locale: string;
|
|
48
|
+
path: string;
|
|
49
|
+
pluginId: string;
|
|
50
|
+
}[];
|
|
51
|
+
//# sourceMappingURL=i18n-shared.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n-shared.d.ts","sourceRoot":"","sources":["../../scripts/i18n-shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"i18n-update.d.ts","sourceRoot":"","sources":["../../scripts/i18n-update.ts"],"names":[],"mappings":"AAiCA,eAAO,MAAM,aAAa,GACxB,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAoBxB,CAAC;AAEF,eAAO,MAAM,UAAU,sBAqHtB,CAAC"}
|
package/dist/scripts/scripts.js
CHANGED
|
@@ -2,10 +2,64 @@
|
|
|
2
2
|
import { createRequire } from 'module';
|
|
3
3
|
const require = createRequire(import.meta.url);
|
|
4
4
|
|
|
5
|
-
import{config as Mr}from"dotenv";import{spawn as qt}from"child_process";var z=async(e,t=[])=>await new Promise((s,r)=>{let i=qt(e,t,{stdio:"inherit",shell:!0,env:process.env});i.on("error",n=>{r(n)}),i.on("close",n=>{n!==0?r(new Error(`Command failed with exit code ${n}`)):s(!0)})});var Ze=async()=>{await z("tsc",["-p","tsconfig.build.json"]),await z("swc",["src","-d","dist","--config-file",".swcrc","--copy-files"]),await z("tsc-alias",["-p","tsconfig.build.json"])};import{spawn as lr}from"child_process";import{EventEmitter as Ds}from"events";import{stat as Ns}from"fs";import{readdir as Is,stat as Ps}from"fs/promises";import*as p from"path";import{lstat as et,readdir as Bt,realpath as Jt,stat as Xt}from"fs/promises";import{join as Qt,relative as Zt,resolve as tt,sep as es}from"path";import{Readable as ts}from"stream";var P={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},Ce={root:".",fileFilter:e=>!0,directoryFilter:e=>!0,type:P.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(Ce);var nt="READDIRP_RECURSIVE_ERROR",ss=new Set(["ENOENT","EPERM","EACCES","ELOOP",nt]),st=[P.DIR_TYPE,P.EVERYTHING_TYPE,P.FILE_DIR_TYPE,P.FILE_TYPE],rs=new Set([P.DIR_TYPE,P.EVERYTHING_TYPE,P.FILE_DIR_TYPE]),is=new Set([P.EVERYTHING_TYPE,P.FILE_DIR_TYPE,P.FILE_TYPE]),ns=e=>ss.has(e.code),os=process.platform==="win32",rt=e=>!0,it=e=>{if(e===void 0)return rt;if(typeof e=="function")return e;if(typeof e=="string"){let t=e.trim();return s=>s.basename===t}if(Array.isArray(e)){let t=e.map(s=>s.trim());return s=>t.some(r=>s.basename===r)}return rt},Ae=class extends ts{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark});let s={...Ce,...t},{root:r,type:i}=s;this._fileFilter=it(s.fileFilter),this._directoryFilter=it(s.directoryFilter);let n=s.lstat?et:Xt;os?this._stat=a=>n(a,{bigint:!0}):this._stat=n,this._maxDepth=s.depth!=null&&Number.isSafeInteger(s.depth)?s.depth:Ce.depth,this._wantsDir=i?rs.has(i):!1,this._wantsFile=i?is.has(i):!1,this._wantsEverything=i===P.EVERYTHING_TYPE,this._root=tt(r),this._isDirent=!s.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(r,1)],this.reading=!1,this.parent=void 0}async _read(t){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&t>0;){let s=this.parent,r=s&&s.files;if(r&&r.length>0){let{path:i,depth:n}=s,a=r.splice(0,t).map(c=>this._formatEntry(c,i)),o=await Promise.all(a);for(let c of o){if(!c)continue;if(this.destroyed)return;let l=await this._getEntryType(c);l==="directory"&&this._directoryFilter(c)?(n<=this._maxDepth&&this.parents.push(this._exploreDir(c.fullPath,n+1)),this._wantsDir&&(this.push(c),t--)):(l==="file"||this._includeAsFile(c))&&this._fileFilter(c)&&this._wantsFile&&(this.push(c),t--)}}else{let i=this.parents.pop();if(!i){this.push(null);break}if(this.parent=await i,this.destroyed)return}}}catch(s){this.destroy(s)}finally{this.reading=!1}}}async _exploreDir(t,s){let r;try{r=await Bt(t,this._rdOptions)}catch(i){this._onError(i)}return{files:r,depth:s,path:t}}async _formatEntry(t,s){let r,i=this._isDirent?t.name:t;try{let n=tt(Qt(s,i));r={path:Zt(this._root,n),fullPath:n,basename:i},r[this._statsProp]=this._isDirent?t:await this._stat(n)}catch(n){this._onError(n);return}return r}_onError(t){ns(t)&&!this.destroyed?this.emit("warn",t):this.destroy(t)}async _getEntryType(t){if(!t&&this._statsProp in t)return"";let s=t[this._statsProp];if(s.isFile())return"file";if(s.isDirectory())return"directory";if(s&&s.isSymbolicLink()){let r=t.fullPath;try{let i=await Jt(r),n=await et(i);if(n.isFile())return"file";if(n.isDirectory()){let a=i.length;if(r.startsWith(i)&&r.substr(a,1)===es){let o=new Error(`Circular symlink detected: "${r}" points to "${i}"`);return o.code=nt,this._onError(o)}return"directory"}}catch(i){return this._onError(i),""}}}_includeAsFile(t){let s=t&&t[this._statsProp];return s&&this._wantsEverything&&!s.isDirectory()}};function ot(e,t={}){let s=t.entryType||t.type;if(s==="both"&&(s=P.FILE_DIR_TYPE),s&&(t.type=s),e){if(typeof e!="string")throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(s&&!st.includes(s))throw new Error(`readdirp: Invalid type passed. Use one of ${st.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return t.root=e,new Ae(t)}import{watch as as,unwatchFile as at,watchFile as cs}from"fs";import{realpath as ke,lstat as ls,open as ds,stat as lt}from"fs/promises";import{type as us}from"os";import*as x from"path";var fs="data",Le="end",dt="close",fe=()=>{};var pe=process.platform,je=pe==="win32",ps=pe==="darwin",ms=pe==="linux",hs=pe==="freebsd",ut=us()==="OS400",E={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},k=E,gs="watch",_s={lstat:ls,stat:lt},H="listeners",ce="errHandlers",U="rawEmitters",ws=[H,ce,U],bs=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),ys=e=>bs.has(x.extname(e).slice(1).toLowerCase()),Fe=(e,t)=>{e instanceof Set?e.forEach(t):t(e)},Z=(e,t,s)=>{let r=e[t];r instanceof Set||(e[t]=r=new Set([r])),r.add(s)},xs=e=>t=>{let s=e[t];s instanceof Set?s.clear():delete e[t]},ee=(e,t,s)=>{let r=e[t];r instanceof Set?r.delete(s):r===s&&delete e[t]},ft=e=>e instanceof Set?e.size===0:!e,le=new Map;function ct(e,t,s,r,i){let n=(a,o)=>{s(e),i(a,o,{watchedPath:e}),o&&e!==o&&de(x.resolve(e,o),H,x.join(e,o))};try{return as(e,{persistent:t.persistent},n)}catch(a){r(a);return}}var de=(e,t,s,r,i)=>{let n=le.get(e);n&&Fe(n[t],a=>{a(s,r,i)})},Es=(e,t,s,r)=>{let{listener:i,errHandler:n,rawEmitter:a}=r,o=le.get(t),c;if(!s.persistent)return c=ct(e,s,i,n,a),c?c.close.bind(c):void 0;if(o)Z(o,H,i),Z(o,ce,n),Z(o,U,a);else{if(c=ct(e,s,de.bind(null,t,H),n,de.bind(null,t,U)),!c)return;c.on(k.ERROR,async l=>{let d=de.bind(null,t,ce);if(o&&(o.watcherUnusable=!0),je&&l.code==="EPERM")try{await(await ds(e,"r")).close(),d(l)}catch{}else d(l)}),o={listeners:i,errHandlers:n,rawEmitters:a,watcher:c},le.set(t,o)}return()=>{ee(o,H,i),ee(o,ce,n),ee(o,U,a),ft(o.listeners)&&(o.watcher.close(),le.delete(t),ws.forEach(xs(o)),o.watcher=void 0,Object.freeze(o))}},$e=new Map,vs=(e,t,s,r)=>{let{listener:i,rawEmitter:n}=r,a=$e.get(t),o=a&&a.options;return o&&(o.persistent<s.persistent||o.interval>s.interval)&&(at(t),a=void 0),a?(Z(a,H,i),Z(a,U,n)):(a={listeners:i,rawEmitters:n,options:s,watcher:cs(t,s,(c,l)=>{Fe(a.rawEmitters,u=>{u(k.CHANGE,t,{curr:c,prev:l})});let d=c.mtimeMs;(c.size!==l.size||d>l.mtimeMs||d===0)&&Fe(a.listeners,u=>u(e,c))})},$e.set(t,a)),()=>{ee(a,H,i),ee(a,U,n),ft(a.listeners)&&($e.delete(t),at(t),a.options=a.watcher=void 0,Object.freeze(a))}},ue=class{fsw;_boundHandleError;constructor(t){this.fsw=t,this._boundHandleError=s=>t._handleError(s)}_watchWithNodeFs(t,s){let r=this.fsw.options,i=x.dirname(t),n=x.basename(t);this.fsw._getWatchedDir(i).add(n);let o=x.resolve(t),c={persistent:r.persistent};s||(s=fe);let l;if(r.usePolling){let d=r.interval!==r.binaryInterval;c.interval=d&&ys(n)?r.binaryInterval:r.interval,l=vs(t,o,c,{listener:s,rawEmitter:this.fsw._emitRaw})}else l=Es(t,o,c,{listener:s,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return l}_handleFile(t,s,r){if(this.fsw.closed)return;let i=x.dirname(t),n=x.basename(t),a=this.fsw._getWatchedDir(i),o=s;if(a.has(n))return;let c=async(d,u)=>{if(this.fsw._throttle(gs,t,5)){if(!u||u.mtimeMs===0)try{let f=await lt(t);if(this.fsw.closed)return;let m=f.atimeMs,y=f.mtimeMs;if((!m||m<=y||y!==o.mtimeMs)&&this.fsw._emit(k.CHANGE,t,f),(ps||ms||hs)&&o.ino!==f.ino){this.fsw._closeFile(d),o=f;let N=this._watchWithNodeFs(t,c);N&&this.fsw._addPathCloser(d,N)}else o=f}catch{this.fsw._remove(i,n)}else if(a.has(n)){let f=u.atimeMs,m=u.mtimeMs;(!f||f<=m||m!==o.mtimeMs)&&this.fsw._emit(k.CHANGE,t,u),o=u}}},l=this._watchWithNodeFs(t,c);if(!(r&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle(k.ADD,t,0))return;this.fsw._emit(k.ADD,t,s)}return l}async _handleSymlink(t,s,r,i){if(this.fsw.closed)return;let n=t.fullPath,a=this.fsw._getWatchedDir(s);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let o;try{o=await ke(r)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(a.has(i)?this.fsw._symlinkPaths.get(n)!==o&&(this.fsw._symlinkPaths.set(n,o),this.fsw._emit(k.CHANGE,r,t.stats)):(a.add(i),this.fsw._symlinkPaths.set(n,o),this.fsw._emit(k.ADD,r,t.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(n))return!0;this.fsw._symlinkPaths.set(n,!0)}_handleRead(t,s,r,i,n,a,o){t=x.join(t,"");let c=i?`${t}:${i}`:t;if(o=this.fsw._throttle("readdir",c,1e3),!o)return;let l=this.fsw._getWatchedDir(r.path),d=new Set,u=this.fsw._readdirp(t,{fileFilter:f=>r.filterPath(f),directoryFilter:f=>r.filterDir(f)});if(u)return u.on(fs,async f=>{if(this.fsw.closed){u=void 0;return}let m=f.path,y=x.join(t,m);if(d.add(m),!(f.stats.isSymbolicLink()&&await this._handleSymlink(f,t,y,m))){if(this.fsw.closed){u=void 0;return}(m===i||!i&&!l.has(m))&&(this.fsw._incrReadyCount(),y=x.join(n,x.relative(n,y)),this._addToNodeFs(y,s,r,a+1))}}).on(k.ERROR,this._boundHandleError),new Promise((f,m)=>{if(!u)return m();u.once(Le,()=>{if(this.fsw.closed){u=void 0;return}let y=o?o.clear():!1;f(void 0),l.getChildren().filter(N=>N!==t&&!d.has(N)).forEach(N=>{this.fsw._remove(t,N)}),u=void 0,y&&this._handleRead(t,!1,r,i,n,a,o)})})}async _handleDir(t,s,r,i,n,a,o){let c=this.fsw._getWatchedDir(x.dirname(t)),l=c.has(x.basename(t));!(r&&this.fsw.options.ignoreInitial)&&!n&&!l&&this.fsw._emit(k.ADD_DIR,t,s),c.add(x.basename(t)),this.fsw._getWatchedDir(t);let d,u,f=this.fsw.options.depth;if((f==null||i<=f)&&!this.fsw._symlinkPaths.has(o)){if(!n&&(await this._handleRead(t,r,a,n,t,i,d),this.fsw.closed))return;u=this._watchWithNodeFs(t,(m,y)=>{y&&y.mtimeMs===0||this._handleRead(m,!1,a,n,t,i,d)})}return u}async _addToNodeFs(t,s,r,i,n){let a=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return a(),!1;let o=this.fsw._getWatchHelpers(t);r&&(o.filterPath=c=>r.filterPath(c),o.filterDir=c=>r.filterDir(c));try{let c=await _s[o.statMethod](o.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(o.watchPath,c))return a(),!1;let l=this.fsw.options.followSymlinks,d;if(c.isDirectory()){let u=x.resolve(t),f=l?await ke(t):t;if(this.fsw.closed||(d=await this._handleDir(o.watchPath,c,s,i,n,o,f),this.fsw.closed))return;u!==f&&f!==void 0&&this.fsw._symlinkPaths.set(u,f)}else if(c.isSymbolicLink()){let u=l?await ke(t):t;if(this.fsw.closed)return;let f=x.dirname(o.watchPath);if(this.fsw._getWatchedDir(f).add(o.watchPath),this.fsw._emit(k.ADD,o.watchPath,c),d=await this._handleDir(f,c,s,i,t,o,u),this.fsw.closed)return;u!==void 0&&this.fsw._symlinkPaths.set(x.resolve(t),u)}else d=this._handleFile(o.watchPath,c,s);return a(),d&&this.fsw._addPathCloser(t,d),!1}catch(c){if(this.fsw._handleError(c))return a(),t}}};var We="/",Ss="//",_t=".",Ts="..",Rs="string",Cs=/\\/g,wt=/\/\//g,As=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,ks=/^\.[/\\]/;function me(e){return Array.isArray(e)?e:[e]}var Me=e=>typeof e=="object"&&e!==null&&!(e instanceof RegExp);function $s(e){return typeof e=="function"?e:typeof e=="string"?t=>e===t:e instanceof RegExp?t=>e.test(t):typeof e=="object"&&e!==null?t=>{if(e.path===t)return!0;if(e.recursive){let s=p.relative(e.path,t);return s?!s.startsWith("..")&&!p.isAbsolute(s):!1}return!1}:()=>!1}function Fs(e){if(typeof e!="string")throw new Error("string expected");e=p.normalize(e),e=e.replace(/\\/g,"/");let t=!1;return e.startsWith("//")&&(t=!0),e=e.replace(wt,"/"),t&&(e="/"+e),e}function pt(e,t,s){let r=Fs(t);for(let i=0;i<e.length;i++){let n=e[i];if(n(r,s))return!0}return!1}function Ls(e,t){if(e==null)throw new TypeError("anymatch: specify first argument");let r=me(e).map(i=>$s(i));return t==null?(i,n)=>pt(r,i,n):pt(r,t)}var mt=e=>{let t=me(e).flat();if(!t.every(s=>typeof s===Rs))throw new TypeError(`Non-string provided as watch path: ${t}`);return t.map(bt)},ht=e=>{let t=e.replace(Cs,We),s=!1;return t.startsWith(Ss)&&(s=!0),t=t.replace(wt,We),s&&(t=We+t),t},bt=e=>ht(p.normalize(ht(e))),gt=(e="")=>t=>typeof t=="string"?bt(p.isAbsolute(t)?t:p.join(e,t)):t,js=(e,t)=>p.isAbsolute(e)?e:p.join(t,e),Ws=Object.freeze(new Set),Oe=class{path;_removeWatcher;items;constructor(t,s){this.path=t,this._removeWatcher=s,this.items=new Set}add(t){let{items:s}=this;s&&t!==_t&&t!==Ts&&s.add(t)}async remove(t){let{items:s}=this;if(!s||(s.delete(t),s.size>0))return;let r=this.path;try{await Is(r)}catch{this._removeWatcher&&this._removeWatcher(p.dirname(r),p.basename(r))}}has(t){let{items:s}=this;if(s)return s.has(t)}getChildren(){let{items:t}=this;return t?[...t.values()]:[]}dispose(){this.items.clear(),this.path="",this._removeWatcher=fe,this.items=Ws,Object.freeze(this)}},Ms="stat",Os="lstat",ze=class{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(t,s,r){this.fsw=r;let i=t;this.path=t=t.replace(ks,""),this.watchPath=i,this.fullWatchPath=p.resolve(i),this.dirParts=[],this.dirParts.forEach(n=>{n.length>1&&n.pop()}),this.followSymlinks=s,this.statMethod=s?Ms:Os}entryPath(t){return p.join(this.watchPath,p.relative(this.watchPath,t.fullPath))}filterPath(t){let{stats:s}=t;if(s&&s.isSymbolicLink())return this.filterDir(t);let r=this.entryPath(t);return this.fsw._isntIgnored(r,s)&&this.fsw._hasReadPermissions(s)}filterDir(t){return this.fsw._isntIgnored(this.entryPath(t),t.stats)}},he=class extends Ds{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(t={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let s=t.awaitWriteFinish,r={stabilityThreshold:2e3,pollInterval:100},i={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...t,ignored:t.ignored?me(t.ignored):me([]),awaitWriteFinish:s===!0?r:typeof s=="object"?{...r,...s}:!1};ut&&(i.usePolling=!0),i.atomic===void 0&&(i.atomic=!i.usePolling);let n=process.env.CHOKIDAR_USEPOLLING;if(n!==void 0){let c=n.toLowerCase();c==="false"||c==="0"?i.usePolling=!1:c==="true"||c==="1"?i.usePolling=!0:i.usePolling=!!c}let a=process.env.CHOKIDAR_INTERVAL;a&&(i.interval=Number.parseInt(a,10));let o=0;this._emitReady=()=>{o++,o>=this._readyCount&&(this._emitReady=fe,this._readyEmitted=!0,process.nextTick(()=>this.emit(E.READY)))},this._emitRaw=(...c)=>this.emit(E.RAW,...c),this._boundRemove=this._remove.bind(this),this.options=i,this._nodeFsHandler=new ue(this),Object.freeze(i)}_addIgnoredPath(t){if(Me(t)){for(let s of this._ignoredPaths)if(Me(s)&&s.path===t.path&&s.recursive===t.recursive)return}this._ignoredPaths.add(t)}_removeIgnoredPath(t){if(this._ignoredPaths.delete(t),typeof t=="string")for(let s of this._ignoredPaths)Me(s)&&s.path===t&&this._ignoredPaths.delete(s)}add(t,s,r){let{cwd:i}=this.options;this.closed=!1,this._closePromise=void 0;let n=mt(t);return i&&(n=n.map(a=>js(a,i))),n.forEach(a=>{this._removeIgnoredPath(a)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=n.length,Promise.all(n.map(async a=>{let o=await this._nodeFsHandler._addToNodeFs(a,!r,void 0,0,s);return o&&this._emitReady(),o})).then(a=>{this.closed||a.forEach(o=>{o&&this.add(p.dirname(o),p.basename(s||o))})}),this}unwatch(t){if(this.closed)return this;let s=mt(t),{cwd:r}=this.options;return s.forEach(i=>{!p.isAbsolute(i)&&!this._closers.has(i)&&(r&&(i=p.join(r,i)),i=p.resolve(i)),this._closePath(i),this._addIgnoredPath(i),this._watched.has(i)&&this._addIgnoredPath({path:i,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let t=[];return this._closers.forEach(s=>s.forEach(r=>{let i=r();i instanceof Promise&&t.push(i)})),this._streams.forEach(s=>s.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(s=>s.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=t.length?Promise.all(t).then(()=>{}):Promise.resolve(),this._closePromise}getWatched(){let t={};return this._watched.forEach((s,r)=>{let n=(this.options.cwd?p.relative(this.options.cwd,r):r)||_t;t[n]=s.getChildren().sort()}),t}emitWithAll(t,s){this.emit(t,...s),t!==E.ERROR&&this.emit(E.ALL,t,...s)}async _emit(t,s,r){if(this.closed)return;let i=this.options;je&&(s=p.normalize(s)),i.cwd&&(s=p.relative(i.cwd,s));let n=[s];r!=null&&n.push(r);let a=i.awaitWriteFinish,o;if(a&&(o=this._pendingWrites.get(s)))return o.lastChange=new Date,this;if(i.atomic){if(t===E.UNLINK)return this._pendingUnlinks.set(s,[t,...n]),setTimeout(()=>{this._pendingUnlinks.forEach((c,l)=>{this.emit(...c),this.emit(E.ALL,...c),this._pendingUnlinks.delete(l)})},typeof i.atomic=="number"?i.atomic:100),this;t===E.ADD&&this._pendingUnlinks.has(s)&&(t=E.CHANGE,this._pendingUnlinks.delete(s))}if(a&&(t===E.ADD||t===E.CHANGE)&&this._readyEmitted){let c=(l,d)=>{l?(t=E.ERROR,n[0]=l,this.emitWithAll(t,n)):d&&(n.length>1?n[1]=d:n.push(d),this.emitWithAll(t,n))};return this._awaitWriteFinish(s,a.stabilityThreshold,t,c),this}if(t===E.CHANGE&&!this._throttle(E.CHANGE,s,50))return this;if(i.alwaysStat&&r===void 0&&(t===E.ADD||t===E.ADD_DIR||t===E.CHANGE)){let c=i.cwd?p.join(i.cwd,s):s,l;try{l=await Ps(c)}catch{}if(!l||this.closed)return;n.push(l)}return this.emitWithAll(t,n),this}_handleError(t){let s=t&&t.code;return t&&s!=="ENOENT"&&s!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||s!=="EPERM"&&s!=="EACCES")&&this.emit(E.ERROR,t),t||this.closed}_throttle(t,s,r){this._throttled.has(t)||this._throttled.set(t,new Map);let i=this._throttled.get(t);if(!i)throw new Error("invalid throttle");let n=i.get(s);if(n)return n.count++,!1;let a,o=()=>{let l=i.get(s),d=l?l.count:0;return i.delete(s),clearTimeout(a),l&&clearTimeout(l.timeoutObject),d};a=setTimeout(o,r);let c={timeoutObject:a,clear:o,count:0};return i.set(s,c),c}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,s,r,i){let n=this.options.awaitWriteFinish;if(typeof n!="object")return;let a=n.pollInterval,o,c=t;this.options.cwd&&!p.isAbsolute(t)&&(c=p.join(this.options.cwd,t));let l=new Date,d=this._pendingWrites;function u(f){Ns(c,(m,y)=>{if(m||!d.has(t)){m&&m.code!=="ENOENT"&&i(m);return}let N=Number(new Date);f&&y.size!==f.size&&(d.get(t).lastChange=N);let w=d.get(t);N-w.lastChange>=s?(d.delete(t),i(void 0,y)):o=setTimeout(u,a,y)})}d.has(t)||(d.set(t,{lastChange:l,cancelWait:()=>(d.delete(t),clearTimeout(o),r)}),o=setTimeout(u,a))}_isIgnored(t,s){if(this.options.atomic&&As.test(t))return!0;if(!this._userIgnored){let{cwd:r}=this.options,n=(this.options.ignored||[]).map(gt(r)),o=[...[...this._ignoredPaths].map(gt(r)),...n];this._userIgnored=Ls(o,void 0)}return this._userIgnored(t,s)}_isntIgnored(t,s){return!this._isIgnored(t,s)}_getWatchHelpers(t){return new ze(t,this.options.followSymlinks,this)}_getWatchedDir(t){let s=p.resolve(t);return this._watched.has(s)||this._watched.set(s,new Oe(s,this._boundRemove)),this._watched.get(s)}_hasReadPermissions(t){return this.options.ignorePermissionErrors?!0:!!(Number(t.mode)&256)}_remove(t,s,r){let i=p.join(t,s),n=p.resolve(i);if(r=r??(this._watched.has(i)||this._watched.has(n)),!this._throttle("remove",i,100))return;!r&&this._watched.size===1&&this.add(t,s,!0),this._getWatchedDir(i).getChildren().forEach(f=>this._remove(i,f));let c=this._getWatchedDir(t),l=c.has(s);c.remove(s),this._symlinkPaths.has(n)&&this._symlinkPaths.delete(n);let d=i;if(this.options.cwd&&(d=p.relative(this.options.cwd,i)),this.options.awaitWriteFinish&&this._pendingWrites.has(d)&&this._pendingWrites.get(d).cancelWait()===E.ADD)return;this._watched.delete(i),this._watched.delete(n);let u=r?E.UNLINK_DIR:E.UNLINK;l&&!this._isIgnored(i)&&this._emit(u,i),this._closePath(i)}_closePath(t){this._closeFile(t);let s=p.dirname(t);this._getWatchedDir(s).remove(p.basename(t))}_closeFile(t){let s=this._closers.get(t);s&&(s.forEach(r=>r()),this._closers.delete(t))}_addPathCloser(t,s){if(!s)return;let r=this._closers.get(t);r||(r=[],this._closers.set(t,r)),r.push(s)}_readdirp(t,s){if(this.closed)return;let r={type:E.ALL,alwaysStat:!0,lstat:!0,...s,depth:0},i=ot(t,r);return this._streams.add(i),i.once(dt,()=>{i=void 0}),i.once(Le,()=>{i&&(this._streams.delete(i),i=void 0)}),i}};function zs(e,t={}){let s=new he(t);return s.add(e),s}var yt={watch:zs,FSWatcher:he};import{existsSync as F,mkdirSync as Zs,readdirSync as er,readFileSync as tr,unlinkSync as sr}from"fs";import{basename as Pt,join as _,relative as rr}from"path";import{copyFileSync as Hs,existsSync as T,mkdirSync as Ys,readdirSync as Ye,readFileSync as Us,writeFileSync as Ks}from"fs";import{basename as xt,dirname as vt,extname as Gs,join as S,normalize as Vs,relative as Y,resolve as Et,sep as qs}from"path";var Bs=/import\s+(?:(?:{[^}]*})|(?:[^{}\s,]*))?\s*(?:,\s*(?:{[^}]*}))?\s*from\s+['"]([./]+[^'"]*)['"]/g,Js=/import\s+(?:(?:{[^}]*})|(?:[^{}\s,]*))?\s*(?:,\s*(?:{[^}]*}))?\s*from\s+['"](@\/[^'"]*)['"]/g,Xs=/import\s*\(\s*['"](@\/[^'"]*)['"]\s*\)/g,ge=/\.(js|jsx|ts|tsx)$/,He=/^page\.(tsx|ts|jsx|js)$/i,te=(e,t)=>{let r=Y(t,e).split(qs);r.pop();let i=r.filter(n=>!n.startsWith("("));return Vs(i.join("/"))},_e=e=>{let t=new Map,s=r=>{if(T(r))for(let i of Ye(r,{withFileTypes:!0})){let n=S(r,i.name);if(i.isDirectory()){s(n);continue}if(He.test(i.name)){let a=te(n,e);t.set(a,n)}}};return s(e),t},Qs=(e,t)=>{let s=e.replace(Bs,(r,i)=>{if(i.startsWith(".")){let a=i.replace(ge,"").replace(/^(?:\.\.\/)+/,"");return r.replace(i,`${t}/${a}`)}return r});return s=s.replace(Js,(r,i)=>{let n=i.replace(/^@\//,"").replace(ge,"");return r.replace(i,`${t}/${n}`)}),s=s.replace(Xs,(r,i)=>{let n=i.replace(/^@\//,"").replace(ge,"");return r.replace(i,`${t}/${n}`)}),s=s.replace(/dynamic\s*\(\s*\(\s*=>\s*import\s*\(\s*['"](@\/[^'"]*)['"]\s*\)\s*\)\s*\)/g,(r,i)=>{let n=i.replace(/^@\//,"").replace(ge,"");return r.replace(i,`${t}/${n}`)}),s};function K(e){let t=e;for(;t!==Et(t,"..");){let r=S(t,"turbo.json");if(T(r))return t;t=Et(t,"..")}let s=S(e,"package.json");if(T(s))return e;throw new Error("\u274C Could not locate project root")}function we(e,t){let s=process.cwd();return[S(s,"node_modules",e),...t===s?[]:[S(t,"node_modules",e)]].find(i=>T(i))??null}function be(e){let t=S(e,"src","app","[locale]");if(T(t))return t;let r=(n=>{let a=[];if(!T(n))return a;let o=(c,l=0)=>{if(!(l>4))try{let d=Ye(c,{withFileTypes:!0});for(let u of d){if(!u.isDirectory())continue;let f=S(c,u.name);if(u.name==="[locale]"&&vt(f).endsWith(S("src","app"))){a.push(f);continue}o(f,l+1)}}catch{}};return o(n),a})(e);return r.length>0?r[0]:S(e,"apps","docs","src","app","[locale]")}var ye=e=>{let t=[];if(!T(e))return t;let s=Ye(e,{withFileTypes:!0});for(let r of s){let i=S(e,r.name);r.isDirectory()?t.push(...ye(i)):t.push(i)}return t},se=e=>T(e)?ye(e).length===0:!0,Ue=(e,t,s,r,i,n,a=!0)=>{let o=xt(e);if(He.test(o)){let c=te(t,i),l=r.get(c);if(l&&l!==t){a&&console.log(`\x1B[31mSkipped duplicate page:\x1B[0m ${Y(n,t)} (collides with ${Y(n,l)})`);return}}try{let c=vt(t);T(c)||Ys(c,{recursive:!0});let l=Gs(e);if(s&&[".js",".jsx",".ts",".tsx"].includes(l)){let d=Us(e,"utf-8"),u=Qs(d,s);Ks(t,u)}else Hs(e,t);if(a){let d=e.indexOf(S("src","app")),u;d!==-1?u=e.substring(d):e.startsWith(n)?u=Y(n,e):u=e;let f=t.startsWith(n)?Y(n,t):t;console.log(`\x1B[32mCopied:\x1B[0m ${u} \u2192 ${f}`)}if(He.test(xt(t))){let d=te(t,i);r.set(d,t)}}catch(c){console.error(`\x1B[31mError copying file:\x1B[0m ${e}`,c)}},Dt=(e,t,s)=>{if(!T(e)||!T(t)||t.replace(/\\/g,"/").includes("/@breadcrumb"))return;let i=ye(t);for(let n of i){let a=Y(t,n),o=S(e,a);T(o)||s(n)}},Nt=(e,t,s,r,i,n,a=!0)=>{if(!T(e)||se(e))return;let o=ye(e);for(let c of o){let l=Y(e,c),d=S(t,l);Ue(c,d,s,r,i,n,a)}};var It=e=>{let t=F(_(e,"src","vitnode.config.ts"));return F(_(e,"src","vitnode.api.config.ts"))&&!t?"api":t?"web":null},ir=(e,t,s,r)=>{let i=[],n=_(t,"apps");if(F(n)){let o=F(n)?er(n,{withFileTypes:!0}).filter(c=>c.isDirectory()).map(c=>c.name):[];for(let c of o){let l=_(t,"apps",c);It(l)==="web"&&i.push({sourceDir:_(e,"src","routes","admin"),destinationDir:_(l,"src","app","[locale]","admin","(auth)",_("(plugins)",`(${r})`))},{sourceDir:_(e,"src","routes","main"),destinationDir:_(l,"src","app","[locale]","(main)",_("(plugins)",`(${r})`))},{sourceDir:_(e,"src","routes","blank"),destinationDir:_(l,"src","app","[locale]","(blank)",_("(plugins)",`(${r})`))},{sourceDir:_(e,"src","routes","breadcrumb","admin"),destinationDir:_(l,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:_(e,"src","routes","breadcrumb","main"),destinationDir:_(l,"src","app","[locale]","(main)","@breadcrumb")})}}else{let o=process.cwd();It(o)==="web"&&i.push({sourceDir:_(e,"src","routes","admin"),destinationDir:_(o,"src","app","[locale]","admin","(auth)",_("(plugins)",`(${r})`))},{sourceDir:_(e,"src","routes","main"),destinationDir:_(o,"src","app","[locale]","(main)",_("(plugins)",`(${r})`))},{sourceDir:_(e,"src","routes","blank"),destinationDir:_(o,"src","app","[locale]","(blank)",_("(plugins)",`(${r})`))},{sourceDir:_(e,"src","routes","breadcrumb","admin"),destinationDir:_(o,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:_(e,"src","routes","breadcrumb","main"),destinationDir:_(o,"src","app","[locale]","(main)","@breadcrumb")})}return i},nr=e=>{for(let{sourceDir:t,destinationDir:s}of e)F(t)&&!se(t)&&!F(s)&&Zs(s,{recursive:!0})},or=(e,t,s,r)=>({copyFileWrapper:(a,o)=>{Ue(a,o,e,t,s,r)},removeFile:a=>{try{if(F(a)&&(sr(a),console.log(`\x1B[33mRemoved:\x1B[0m ${a}`),/^page\.(tsx|ts|jsx|js)$/i.test(Pt(a)))){let o=te(a,s);t.get(o)===a&&t.delete(o)}}catch(o){console.error(`\x1B[31mError removing file:\x1B[0m ${a}`,o)}}}),ar=e=>t=>{let s=e.filter(({sourceDir:r})=>{let i=t.replace(/\\/g,"/"),n=r.replace(/\\/g,"/");return i===n||i.startsWith(`${n}/`)});if(s.length===0)throw new Error(`No matching source directory for: ${t}`);return s.map(r=>{let i=rr(r.sourceDir,t);return _(r.destinationDir,i)})},cr=(e,t,s,r)=>{let i=yt.watch(e,{ignoreInitial:!1,persistent:!0});return i.on("add",n=>{t(n).forEach(o=>s(n,o))}).on("change",n=>{t(n).forEach(o=>s(n,o))}).on("unlink",n=>{t(n).forEach(o=>r(o))}).on("error",n=>{console.error("\x1B[31mWatcher error:\x1B[0m",n)}),i},xe=({initMessage:e})=>{let t=process.cwd(),s=K(t),r=be(s),i=_e(r),n=Pt(t);try{let f=_(t,"package.json");F(f)&&(n=JSON.parse(tr(f,"utf-8")).name??"")}catch(f){console.error("\x1B[31mError reading package.json:\x1B[0m",f);return}let a=n.replace(/\//g,"-").replace(/@/g,""),o=ir(t,s,n,a);if(o.length===0){console.log(`${e} \x1B[34mNothing to sync - no web app in this project.\x1B[0m`);return}nr(o);let{copyFileWrapper:c,removeFile:l}=or(n,i,r,s);for(let{sourceDir:f,destinationDir:m}of o)Dt(f,m,l);console.log(`${e} \x1B[34mWatching for changes in plugins...\x1B[0m`);let d=o.map(f=>f.sourceDir).filter(f=>F(f)),u=ar(o);cr(d,u,c,l)};var Ke=(e,t)=>{let s=lr(e,t,{stdio:"inherit",shell:process.platform==="win32",env:process.env});return s.on("error",r=>{console.error(`\x1B[31m${e} failed:\x1B[0m`,r)}),s.on("exit",r=>{r!==null&&r!==0&&console.error(`\x1B[31m${e} exited with code ${r}\x1B[0m`)}),s},St=({initMessage:e})=>{let t=[Ke("tsc",["-w","-p","tsconfig.build.json","--preserveWatchOutput"]),Ke("swc",["src","-d","dist","--config-file",".swcrc","--copy-files","-w"]),Ke("tsc-alias",["-w","-p","tsconfig.build.json"])],s=()=>{t.forEach(r=>r.kill()),process.exit(0)};process.on("SIGINT",s),process.on("SIGTERM",s),xe({initMessage:e})};import{existsSync as At,readdirSync as hr,readFileSync as gr}from"fs";import{join as Ve,relative as _r}from"path";import{createJiti as dr}from"jiti";import{existsSync as ur,readdirSync as fr,statSync as pr}from"fs";import{join as Tt}from"path";var mr=(e,t,s=4)=>{let r=(i,n)=>{if(n>s)return null;try{let a=Tt(i,"src",t);if(ur(a))return a;let o=fr(i);for(let c of o){if(c==="node_modules"||c.startsWith(".")||c==="dist"||c==="build"||c==="out")continue;let l=Tt(i,c);try{if(pr(l).isDirectory()){let d=r(l,n+1);if(d)return d}}catch{}}}catch{}return null};return r(e,0)};async function A({type:e="config",optional:t=!1}={}){let s=process.cwd(),r=`vitnode.${e}.ts`,i=mr(s,r);if(!i){if(t)return null;console.error(`Config file not found: ${r}`),console.error(`Searched recursively in ${s} (excluding node_modules, .*, dist, build, out)`),process.exit(1)}try{let n=e==="config"?"vitNodeConfig":"vitNodeApiConfig",c=(await dr(import.meta.url,{interopDefault:!0}).import(i))[n];if(!c){if(t)return null;console.error(`Export "${n}" not found in ${i}`),process.exit(1)}return c}catch(n){if(t)return null;console.error("Failed to load config:",n),process.exit(1)}}var wr="@vitnode/core",G=8,V=e=>`\x1B[90m${e}\x1B[0m`,Ee=e=>`\x1B[31m${e}\x1B[0m`,Ge=e=>`\x1B[33m${e}\x1B[0m`,Rt=e=>`\x1B[32m${e}\x1B[0m`,kt=(e,t="")=>typeof e!="object"||e===null||Array.isArray(e)?t?[t]:[]:Object.entries(e).flatMap(([s,r])=>kt(r,t?`${t}.${s}`:s)),Ct=e=>{if(!At(e))return null;try{return kt(JSON.parse(gr(e,"utf-8")))}catch(t){return console.error(Ee(` Could not parse ${e}: ${String(t)}`)),[]}},br=e=>{let t=Ve(e,"src","locales"),s=[];if(!At(t))return s;let r=(i,n)=>{for(let a of hr(i,{withFileTypes:!0})){let o=Ve(i,a.name);a.isDirectory()?r(o,[...n,a.name]):a.name.endsWith(".json")&&n.length>0&&s.push({locale:a.name.replace(/\.json$/,""),path:o,pluginId:n.join("/")})}};return r(t,[]),s},$t=async e=>{let t=e==="--ci",s=process.cwd(),r=K(s),n=await A({optional:!0})??await A({optional:!0,type:"api.config"});n||(console.error(Ee("No vitnode.config.ts or vitnode.api.config.ts found.")),process.exit(1));let a=n.i18n?.defaultLocale??"en",o=(n.i18n?.locales??[]).map(w=>w.code),c=n.i18n?.messages??{},l=n.plugins,d=[wr,...l.map(w=>w.pluginId)],u=br(s),f=[...new Set([...o,...u.map(w=>w.locale)])].filter(w=>w!==a);console.log(`\x1B[34m[VitNode]\x1B[0m Checking ${d.length} package(s) against ${f.length||"no"} extra locale(s), default ${V(a)}.`);let m=0,y=0,N=(w,I)=>{let b=we(w,r),v=b?Ct(Ve(b,"src","locales",`${I}.json`)):null,R=u.find(C=>C.pluginId===w&&C.locale===I),Q=R?Ct(R.path):null;return!v&&!Q?null:[...new Set([...v??[],...Q??[]])]};for(let w of d){let I=N(w,a);if(!I){console.log(Ge(` ${w}: no "${a}" messages found - is the package installed?`)),y+=1;continue}for(let b of f){let v=N(w,b);if(!v){console.log(V(` ${w} \xB7 ${b}: not translated, falls back to ${a}`));continue}let R=new Set(I),Q=new Set(v),C=I.filter(O=>!Q.has(O)),j=v.filter(O=>!R.has(O));if(C.length===0&&j.length===0){console.log(Rt(` ${w} \xB7 ${b}: complete`));continue}if(C.length>0){m+=C.length,y+=1,console.log(Ge(` ${w} \xB7 ${b}: ${C.length} key(s) missing, falling back to ${a}`));for(let O of C.slice(0,G))console.log(V(` ${O}`));C.length>G&&console.log(V(` ... and ${C.length-G} more`))}if(j.length>0){y+=1,console.log(Ge(` ${w} \xB7 ${b}: ${j.length} key(s) unknown to ${a} - typo or leftover?`));for(let O of j.slice(0,G))console.log(V(` ${O}`));j.length>G&&console.log(V(` ... and ${j.length-G} more`))}}}for(let w of u){let I=c[w.locale]?.[w.pluginId],b=_r(s,w.path);I?o.length>0&&!o.includes(w.locale)&&(y+=1,console.log(Ee(` ${b} uses a locale that is not in \`i18n.locales\`.`))):(y+=1,console.log(Ee(` ${b} is never loaded - add \`"${w.pluginId}": () => import("./locales/${w.pluginId}/${w.locale}.json")\` under \`i18n.messages.${w.locale}\`.`)))}y===0&&(console.log(Rt(" Everything is translated. Nice.")),process.exit(0)),console.log(`\x1B[34m[VitNode]\x1B[0m ${y} issue(s), ${m} untranslated key(s).`),process.exit(t?1:0)};import{count as Ar,sql as Kt}from"drizzle-orm";import{migrate as kr}from"drizzle-orm/postgres-js/migrator";import{createJiti as $r}from"jiti";import{existsSync as Fr}from"fs";import{join as Lr}from"path";import{relations as Mt}from"drizzle-orm";import{index as Pe,pgTable as Ot}from"drizzle-orm/pg-core";import{pgTable as yr}from"drizzle-orm/pg-core";var D=yr("core_roles",e=>({id:e.serial().primaryKey(),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1),default:e.boolean().notNull().default(!1),root:e.boolean().notNull().default(!1),guest:e.boolean().notNull().default(!1),color:e.varchar({length:50}),allowUploadFiles:e.boolean().notNull().default(!1),totalMaxStorage:e.integer(),maxStorageForSubmit:e.integer()})).enableRLS();import{relations as Lt}from"drizzle-orm";import{index as jt,pgTable as Wt}from"drizzle-orm/pg-core";import{relations as re}from"drizzle-orm";import{index as q,pgTable as ie,primaryKey as Er}from"drizzle-orm/pg-core";import{relations as xr}from"drizzle-orm";import{index as qe,pgTable as Ft}from"drizzle-orm/pg-core";var $=Ft("core_languages",e=>({id:e.serial().primaryKey(),code:e.varchar({length:32}).notNull().unique(),name:e.varchar({length:255}).notNull(),timezone:e.varchar({length:255}).notNull().default("UTC"),protected:e.boolean().notNull().default(!1),default:e.boolean().notNull().default(!1),enabled:e.boolean().notNull().default(!0),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),time24:e.boolean().notNull().default(!1)}),e=>[qe("core_languages_code_idx").on(e.code),qe("core_languages_name_idx").on(e.name)]).enableRLS(),ve=Ft("core_languages_words",e=>({id:e.serial().primaryKey(),languageCode:e.varchar().notNull().references(()=>$.code,{onDelete:"cascade"}),pluginCode:e.varchar({length:50}).notNull(),itemId:e.integer().notNull(),value:e.text().notNull(),tableName:e.varchar({length:255}).notNull(),variable:e.varchar({length:255}).notNull()}),e=>[qe("core_languages_words_lang_code_idx").on(e.languageCode)]).enableRLS(),Ri=xr(ve,({one:e})=>({language:e($,{fields:[ve.languageCode],references:[$.code]})}));var h=ie("core_users",e=>({id:e.serial().primaryKey(),nameCode:e.varchar({length:255}).notNull().unique(),name:e.varchar({length:255}).notNull().unique(),email:e.varchar({length:255}).notNull().unique(),password:e.varchar(),createdAt:e.timestamp().notNull().defaultNow(),newsletter:e.boolean().notNull().default(!1),avatarColor:e.varchar({length:6}).notNull(),emailVerified:e.boolean().notNull().default(!1),roleId:e.integer().references(()=>D.id).notNull(),birthday:e.timestamp(),ipAddress:e.varchar({length:40}).notNull(),language:e.varchar({length:32}).notNull().default("en").references(()=>$.code,{onDelete:"set default"})}),e=>[q("core_users_name_code_idx").on(e.nameCode),q("core_users_name_idx").on(e.name),q("core_users_email_idx").on(e.email)]).enableRLS(),Li=re(h,({one:e,many:t})=>({group:e(D,{fields:[h.roleId],references:[D.id]}),secondary_roles:t(De),language:e($,{fields:[h.language],references:[$.code]}),confirm_email:e(Ne,{fields:[h.id],references:[Ne.userId]}),sso:t(Be),forgot_password:e(Ie,{fields:[h.id],references:[Ie.userId]})})),De=ie("core_users_secondary_roles",e=>({userId:e.integer().references(()=>h.id,{onDelete:"cascade"}).notNull(),roleId:e.integer().references(()=>D.id,{onDelete:"cascade"}).notNull(),createdAt:e.timestamp().notNull().defaultNow()}),e=>[Er({columns:[e.userId,e.roleId]}),q("core_users_secondary_roles_user_id_idx").on(e.userId),q("core_users_secondary_roles_role_id_idx").on(e.roleId)]).enableRLS(),ji=re(De,({one:e})=>({user:e(h,{fields:[De.userId],references:[h.id]}),role:e(D,{fields:[De.roleId],references:[D.id]})})),Be=ie("core_users_sso",e=>({userId:e.integer().references(()=>h.id,{onDelete:"cascade"}).notNull(),providerId:e.varchar({length:255}).notNull(),providerAccountId:e.varchar({length:255}).notNull(),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date)}),e=>[q("core_users_sso_user_id_idx").on(e.userId)]).enableRLS(),Wi=re(Be,({one:e})=>({user:e(h,{fields:[Be.userId],references:[h.id]})})),Ne=ie("core_users_confirm_emails",e=>({id:e.serial().primaryKey(),userId:e.integer().references(()=>h.id,{onDelete:"cascade"}).notNull(),token:e.varchar({length:100}).notNull().unique(),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),ipAddress:e.varchar({length:40}).notNull()})).enableRLS(),Mi=re(Ne,({one:e})=>({user:e(h,{fields:[Ne.userId],references:[h.id]})})),Ie=ie("core_users_forgot_password",e=>({id:e.serial().primaryKey(),userId:e.integer().references(()=>h.id,{onDelete:"cascade"}).notNull().unique(),token:e.varchar({length:100}).notNull().unique(),ipAddress:e.varchar({length:40}).notNull(),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull()})).enableRLS(),Oi=re(Ie,({one:e})=>({user:e(h,{fields:[Ie.userId],references:[h.id]})}));var ne=Wt("core_sessions",e=>({id:e.serial().primaryKey(),token:e.varchar({length:255}).notNull().unique(),userId:e.integer().notNull().references(()=>h.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),deviceId:e.integer().references(()=>L.id,{onDelete:"cascade"}).notNull()}),e=>[jt("core_sessions_user_id_idx").on(e.userId)]).enableRLS(),Ki=Lt(ne,({one:e})=>({user:e(h,{fields:[ne.userId],references:[h.id]}),device:e(L,{fields:[ne.deviceId],references:[L.id]})})),L=Wt("core_sessions_known_devices",e=>({id:e.serial().primaryKey(),publicId:e.varchar({length:32}).notNull().unique(),ipAddress:e.varchar({length:40}).notNull(),userAgent:e.text().notNull(),lastSeen:e.timestamp().notNull().defaultNow()}),e=>[jt("core_sessions_known_devices_ip_address_idx").on(e.ipAddress)]).enableRLS(),Gi=Lt(L,({one:e})=>({session:e(ne,{fields:[L.id],references:[ne.deviceId]})}));var oe=Ot("core_admin_permissions",e=>({id:e.serial().primaryKey(),roleId:e.integer().references(()=>D.id,{onDelete:"cascade"}),userId:e.integer().references(()=>h.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1),unrestricted:e.boolean().notNull().default(!1),permissions:e.jsonb().$type().notNull().default([])}),e=>[Pe("core_admin_permissions_role_id_idx").on(e.roleId),Pe("core_admin_permissions_user_id_idx").on(e.userId)]).enableRLS(),Zi=Mt(oe,({one:e})=>({group:e(D,{fields:[oe.roleId],references:[D.id]}),user:e(h,{fields:[oe.userId],references:[h.id]})})),Je=Ot("core_admin_sessions",e=>({id:e.serial().primaryKey(),token:e.varchar({length:255}).notNull().unique(),userId:e.integer().notNull().references(()=>h.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),lastSeen:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),deviceId:e.integer().references(()=>L.id,{onDelete:"cascade"}).notNull()}),e=>[Pe("core_admin_sessions_token_idx").on(e.token),Pe("core_admin_sessions_user_id_idx").on(e.userId)]).enableRLS(),en=Mt(Je,({one:e})=>({user:e(h,{fields:[Je.userId],references:[h.id]}),device:e(L,{fields:[Je.deviceId],references:[L.id]})}));import{relations as vr}from"drizzle-orm";import{index as zt,pgTable as Dr}from"drizzle-orm/pg-core";var ae=Dr("core_moderators_permissions",e=>({id:e.serial().primaryKey(),roleId:e.integer().references(()=>D.id,{onDelete:"cascade"}),userId:e.integer().references(()=>h.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1),unrestricted:e.boolean().notNull().default(!1),permissions:e.jsonb().$type().notNull().default([])}),e=>[zt("core_moderators_permissions_role_id_idx").on(e.roleId),zt("core_moderators_permissions_user_id_idx").on(e.userId)]).enableRLS(),an=vr(ae,({one:e})=>({group:e(D,{fields:[ae.roleId],references:[D.id]}),user:e(h,{fields:[ae.userId],references:[h.id]})}));import{sql as Xe}from"drizzle-orm";import{customType as Nr,index as B,pgTable as Ir,unique as Pr}from"drizzle-orm/pg-core";var Sr=Nr({dataType(){return"tsvector"}}),Qe={da:"danish",de:"german",en:"english",es:"spanish",fi:"finnish",fr:"french",hu:"hungarian",it:"italian",nl:"dutch",no:"norwegian",pl:"polish",pt:"portuguese",ro:"romanian",ru:"russian",sv:"swedish",tr:"turkish"},Tr="simple";var Ht=`CASE lower(split_part("core_search_index"."languageCode", '-', 1)) ${Object.entries(Qe).map(([e,t])=>`WHEN '${e}' THEN '${t}'::regconfig`).join(" ")} ELSE '${Tr}'::regconfig END`,Yt=Ir("core_search_index",e=>({id:e.serial().primaryKey(),pluginId:e.varchar({length:255}).notNull(),itemType:e.varchar({length:100}).notNull(),itemId:e.integer().notNull(),languageCode:e.varchar({length:32}).notNull().default(""),authorId:e.integer().references(()=>h.id,{onDelete:"set null",onUpdate:"cascade"}),title:e.text().notNull().default(""),content:e.text().notNull().default(""),searchVector:Sr("search_vector").notNull().generatedAlwaysAs(()=>Xe`setweight(to_tsvector(${Xe.raw(Ht)}, coalesce(${Yt.title}, '')), 'A') || setweight(to_tsvector(${Xe.raw(Ht)}, coalesce(${Yt.content}, '')), 'B')`),containerType:e.varchar({length:100}),containerId:e.integer(),url:e.text(),isPublic:e.boolean().notNull().default(!0),metadata:e.jsonb().$type().notNull().default({}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp(),indexedAt:e.timestamp().notNull().defaultNow()}),e=>[Pr("core_search_index_item_unique").on(e.itemType,e.itemId,e.languageCode),B("core_search_index_search_vector_idx").using("gin",e.searchVector),B("core_search_index_created_at_idx").on(e.createdAt),B("core_search_index_author_id_idx").on(e.authorId),B("core_search_index_item_type_idx").on(e.itemType),B("core_search_index_language_code_idx").on(e.languageCode),B("core_search_index_is_public_idx").on(e.isPublic)]).enableRLS();import{existsSync as W,readdirSync as Rr}from"fs";import{readFile as Cr}from"fs/promises";import{join as g,relative as Ut}from"path";var J=async e=>{let t=process.cwd(),s=W(g(t,"src","vitnode.config.ts")),r=W(g(t,"src","vitnode.api.config.ts")),i;e==="--api"&&r?i=await A({type:"api.config"}):e==="--web"&&s?i=await A({}):r&&!s?i=await A({type:"api.config"}):s?i=await A({}):i={plugins:[]};let n=[...i.plugins.map(d=>d.pluginId),"@vitnode/core"],a=K(process.cwd()),o=be(a),c=_e(o),l=process.cwd();await Promise.all(n.map(async d=>{let u=we(d,a);if(!u){console.error(`\x1B[31mPlugin not found:\x1B[0m ${d} in node_modules`);return}let f="";try{let b=g(u,"package.json");W(b)&&(f=JSON.parse(await Cr(b,"utf-8")).name??"")}catch(b){console.error(`\x1B[31mError reading package.json for ${d}:\x1B[0m`,b);return}let m=d.replace(/\//g,"-").replace(/@/g,""),y=b=>{let v=W(g(b,"src","vitnode.config.ts"));return W(g(b,"src","vitnode.api.config.ts"))&&!v?"api":v?"web":null},N=g(a,"apps"),w=W(N),I=[];if(w){let b=W(N)?Rr(N,{withFileTypes:!0}).filter(v=>v.isDirectory()).map(v=>v.name):[];for(let v of b){let R=g(a,"apps",v);if(y(R)==="web"){let C=g(R,"src","app","[locale]","(main)",g("(plugins)",`(${m})`)),j=g(R,"src","app","[locale]","admin","(auth)",g("(plugins)",`(${m})`));I.push({sourceDir:g(u,"src","routes","admin"),destinationDir:j},{sourceDir:g(u,"src","routes","main"),destinationDir:C},{sourceDir:g(u,"src","routes","blank"),destinationDir:g(R,"src","app","[locale]","(blank)",g("(plugins)",`(${m})`))},{sourceDir:g(u,"src","routes","breadcrumb","admin"),destinationDir:g(R,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:g(u,"src","routes","breadcrumb","main"),destinationDir:g(R,"src","app","[locale]","(main)","@breadcrumb")})}}}else{let b=g(l,"src","app","[locale]","(main)",g("(plugins)",`(${m})`)),v=g(l,"src","app","[locale]","admin","(auth)",g("(plugins)",`(${m})`));I.push({sourceDir:g(u,"src","routes","admin"),destinationDir:v},{sourceDir:g(u,"src","routes","main"),destinationDir:b},{sourceDir:g(u,"src","routes","blank"),destinationDir:g(l,"src","app","[locale]","(blank)",g("(plugins)",`(${m})`))},{sourceDir:g(u,"src","routes","breadcrumb","admin"),destinationDir:g(l,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:g(u,"src","routes","breadcrumb","main"),destinationDir:g(l,"src","app","[locale]","(main)","@breadcrumb")})}for(let{sourceDir:b,destinationDir:v}of I)W(b)&&!se(b)&&(console.log(`\x1B[36mCopying ${d}:\x1B[0m ${Ut(a,b)} \u2192 ${Ut(a,v)}`),Nt(b,v,f,c,o,a,!1))}))};var Se=async()=>{try{await z("npm",["run","drizzle-kit","up"]),await z("npm",["run","drizzle-kit","generate"])}catch(e){console.error("\x1B[31m%s\x1B[0m",e),process.exit(1)}},jr=async()=>{let e=Lr(process.cwd(),"drizzle.config.ts");if(Fr(e))try{let s=await $r(import.meta.url,{interopDefault:!0}).import(e),r=s.default?.out??s.out;if(typeof r=="string"&&r.length>0)return r}catch{}return"./migrations"},Wr=async e=>{let t=[...new Set(Object.values(Qe))];if(t.length===0)return;let s=await e.execute(Kt`SELECT cfgname FROM pg_ts_config`),r=new Set(s.map(n=>n.cfgname)),i=t.filter(n=>!r.has(n));if(i.length!==0){console.log(`\x1B[33m[VitNode]\x1B[0m No dictionary installed for text-search config(s) [${i.join(", ")}] - registering a "COPY = simple" fallback (search works, stemming is skipped).`);for(let n of i)try{await e.execute(Kt.raw(`CREATE TEXT SEARCH CONFIGURATION "${n}" (COPY = simple)`))}catch(a){if(a.code!=="42710")throw a}}},Te=async()=>{let e=await A({type:"api.config"});await Wr(e.dbProvider);let t=await jr();try{await kr(e.dbProvider,{migrationsFolder:t})}catch(s){let r=s;console.error("\x1B[31m[VitNode] Database migration failed.\x1B[0m"),r.severity&&console.error(`\x1B[31mSeverity:\x1B[0m ${r.severity}`),r.code&&console.error(`\x1B[31mSQLSTATE:\x1B[0m ${r.code}`),console.error(`\x1B[31mMessage:\x1B[0m ${r.message??String(s)}`),r.detail&&console.error(`\x1B[31mDetail:\x1B[0m ${r.detail}`),r.hint&&console.error(`\x1B[31mHint:\x1B[0m ${r.hint}`),r.where&&console.error(`\x1B[31mWhere:\x1B[0m ${r.where}`),r.position&&console.error(`\x1B[31mPosition:\x1B[0m ${r.position}`),r.query&&console.error(`\x1B[31mFailing SQL:\x1B[0m
|
|
6
|
-
${
|
|
7
|
-
|
|
8
|
-
${
|
|
5
|
+
import{config as io}from"dotenv";import{spawn as Ms}from"child_process";var Q=async(e,t=[])=>await new Promise((s,n)=>{let r=Ms(e,t,{stdio:"inherit",shell:!0,env:process.env});r.on("error",o=>{n(o)}),r.on("close",o=>{o!==0?n(new Error(`Command failed with exit code ${o}`)):s(!0)})});var kt=async()=>{await Q("tsc",["-p","tsconfig.build.json"]),await Q("swc",["src","-d","dist","--config-file",".swcrc","--copy-files"]),await Q("tsc-alias",["-p","tsconfig.build.json"])};import{spawn as sr}from"child_process";import{EventEmitter as _n}from"events";import{stat as wn}from"fs";import{readdir as yn,stat as bn}from"fs/promises";import*as y from"path";import{lstat as Pt,readdir as zs,realpath as Hs,stat as Ys}from"fs/promises";import{join as Us,relative as Ks,resolve as Ct,sep as Gs}from"path";import{Readable as Vs}from"stream";var L={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},nt={root:".",fileFilter:e=>!0,directoryFilter:e=>!0,type:L.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(nt);var Lt="READDIRP_RECURSIVE_ERROR",qs=new Set(["ENOENT","EPERM","EACCES","ELOOP",Lt]),Tt=[L.DIR_TYPE,L.EVERYTHING_TYPE,L.FILE_DIR_TYPE,L.FILE_TYPE],Bs=new Set([L.DIR_TYPE,L.EVERYTHING_TYPE,L.FILE_DIR_TYPE]),Js=new Set([L.EVERYTHING_TYPE,L.FILE_DIR_TYPE,L.FILE_TYPE]),Xs=e=>qs.has(e.code),Qs=process.platform==="win32",At=e=>!0,Ft=e=>{if(e===void 0)return At;if(typeof e=="function")return e;if(typeof e=="string"){let t=e.trim();return s=>s.basename===t}if(Array.isArray(e)){let t=e.map(s=>s.trim());return s=>t.some(n=>s.basename===n)}return At},rt=class extends Vs{parents;reading;parent;_stat;_maxDepth;_wantsDir;_wantsFile;_wantsEverything;_root;_isDirent;_statsProp;_rdOptions;_fileFilter;_directoryFilter;constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark});let s={...nt,...t},{root:n,type:r}=s;this._fileFilter=Ft(s.fileFilter),this._directoryFilter=Ft(s.directoryFilter);let o=s.lstat?Pt:Ys;Qs?this._stat=a=>o(a,{bigint:!0}):this._stat=o,this._maxDepth=s.depth!=null&&Number.isSafeInteger(s.depth)?s.depth:nt.depth,this._wantsDir=r?Bs.has(r):!1,this._wantsFile=r?Js.has(r):!1,this._wantsEverything=r===L.EVERYTHING_TYPE,this._root=Ct(n),this._isDirent=!s.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(n,1)],this.reading=!1,this.parent=void 0}async _read(t){if(!this.reading){this.reading=!0;try{for(;!this.destroyed&&t>0;){let s=this.parent,n=s&&s.files;if(n&&n.length>0){let{path:r,depth:o}=s,a=n.splice(0,t).map(c=>this._formatEntry(c,r)),i=await Promise.all(a);for(let c of i){if(!c)continue;if(this.destroyed)return;let l=await this._getEntryType(c);l==="directory"&&this._directoryFilter(c)?(o<=this._maxDepth&&this.parents.push(this._exploreDir(c.fullPath,o+1)),this._wantsDir&&(this.push(c),t--)):(l==="file"||this._includeAsFile(c))&&this._fileFilter(c)&&this._wantsFile&&(this.push(c),t--)}}else{let r=this.parents.pop();if(!r){this.push(null);break}if(this.parent=await r,this.destroyed)return}}}catch(s){this.destroy(s)}finally{this.reading=!1}}}async _exploreDir(t,s){let n;try{n=await zs(t,this._rdOptions)}catch(r){this._onError(r)}return{files:n,depth:s,path:t}}async _formatEntry(t,s){let n,r=this._isDirent?t.name:t;try{let o=Ct(Us(s,r));n={path:Ks(this._root,o),fullPath:o,basename:r},n[this._statsProp]=this._isDirent?t:await this._stat(o)}catch(o){this._onError(o);return}return n}_onError(t){Xs(t)&&!this.destroyed?this.emit("warn",t):this.destroy(t)}async _getEntryType(t){if(!t&&this._statsProp in t)return"";let s=t[this._statsProp];if(s.isFile())return"file";if(s.isDirectory())return"directory";if(s&&s.isSymbolicLink()){let n=t.fullPath;try{let r=await Hs(n),o=await Pt(r);if(o.isFile())return"file";if(o.isDirectory()){let a=r.length;if(n.startsWith(r)&&n.substr(a,1)===Gs){let i=new Error(`Circular symlink detected: "${n}" points to "${r}"`);return i.code=Lt,this._onError(i)}return"directory"}}catch(r){return this._onError(r),""}}}_includeAsFile(t){let s=t&&t[this._statsProp];return s&&this._wantsEverything&&!s.isDirectory()}};function jt(e,t={}){let s=t.entryType||t.type;if(s==="both"&&(s=L.FILE_DIR_TYPE),s&&(t.type=s),e){if(typeof e!="string")throw new TypeError("readdirp: root argument must be a string. Usage: readdirp(root, options)");if(s&&!Tt.includes(s))throw new Error(`readdirp: Invalid type passed. Use one of ${Tt.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return t.root=e,new rt(t)}import{watch as Zs,unwatchFile as Ot,watchFile as en}from"fs";import{realpath as ot,lstat as tn,open as sn,stat as Mt}from"fs/promises";import{type as nn}from"os";import*as I from"path";var rn="data",ct="end",zt="close",Re=()=>{};var ke=process.platform,lt=ke==="win32",on=ke==="darwin",an=ke==="linux",cn=ke==="freebsd",Ht=nn()==="OS400",N={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},z=N,ln="watch",dn={lstat:tn,stat:Mt},Z="listeners",De="errHandlers",ne="rawEmitters",fn=[Z,De,ne],pn=new Set(["3dm","3ds","3g2","3gp","7z","a","aac","adp","afdesign","afphoto","afpub","ai","aif","aiff","alz","ape","apk","appimage","ar","arj","asf","au","avi","bak","baml","bh","bin","bk","bmp","btif","bz2","bzip2","cab","caf","cgm","class","cmx","cpio","cr2","cur","dat","dcm","deb","dex","djvu","dll","dmg","dng","doc","docm","docx","dot","dotm","dra","DS_Store","dsk","dts","dtshd","dvb","dwg","dxf","ecelp4800","ecelp7470","ecelp9600","egg","eol","eot","epub","exe","f4v","fbs","fh","fla","flac","flatpak","fli","flv","fpx","fst","fvt","g3","gh","gif","graffle","gz","gzip","h261","h263","h264","icns","ico","ief","img","ipa","iso","jar","jpeg","jpg","jpgv","jpm","jxr","key","ktx","lha","lib","lvp","lz","lzh","lzma","lzo","m3u","m4a","m4v","mar","mdi","mht","mid","midi","mj2","mka","mkv","mmr","mng","mobi","mov","movie","mp3","mp4","mp4a","mpeg","mpg","mpga","mxu","nef","npx","numbers","nupkg","o","odp","ods","odt","oga","ogg","ogv","otf","ott","pages","pbm","pcx","pdb","pdf","pea","pgm","pic","png","pnm","pot","potm","potx","ppa","ppam","ppm","pps","ppsm","ppsx","ppt","pptm","pptx","psd","pya","pyc","pyo","pyv","qt","rar","ras","raw","resources","rgb","rip","rlc","rmf","rmvb","rpm","rtf","rz","s3m","s7z","scpt","sgi","shar","snap","sil","sketch","slk","smv","snk","so","stl","suo","sub","swf","tar","tbz","tbz2","tga","tgz","thmx","tif","tiff","tlz","ttc","ttf","txz","udf","uvh","uvi","uvm","uvp","uvs","uvu","viv","vob","war","wav","wax","wbmp","wdp","weba","webm","webp","whl","wim","wm","wma","wmv","wmx","woff","woff2","wrm","wvx","xbm","xif","xla","xlam","xls","xlsb","xlsm","xlsx","xlt","xltm","xltx","xm","xmind","xpi","xpm","xwd","xz","z","zip","zipx"]),un=e=>pn.has(I.extname(e).slice(1).toLowerCase()),at=(e,t)=>{e instanceof Set?e.forEach(t):t(e)},ue=(e,t,s)=>{let n=e[t];n instanceof Set||(e[t]=n=new Set([n])),n.add(s)},gn=e=>t=>{let s=e[t];s instanceof Set?s.clear():delete e[t]},ge=(e,t,s)=>{let n=e[t];n instanceof Set?n.delete(s):n===s&&delete e[t]},Yt=e=>e instanceof Set?e.size===0:!e,Ie=new Map;function Wt(e,t,s,n,r){let o=(a,i)=>{s(e),r(a,i,{watchedPath:e}),i&&e!==i&&Ne(I.resolve(e,i),Z,I.join(e,i))};try{return Zs(e,{persistent:t.persistent},o)}catch(a){n(a);return}}var Ne=(e,t,s,n,r)=>{let o=Ie.get(e);o&&at(o[t],a=>{a(s,n,r)})},mn=(e,t,s,n)=>{let{listener:r,errHandler:o,rawEmitter:a}=n,i=Ie.get(t),c;if(!s.persistent)return c=Wt(e,s,r,o,a),c?c.close.bind(c):void 0;if(i)ue(i,Z,r),ue(i,De,o),ue(i,ne,a);else{if(c=Wt(e,s,Ne.bind(null,t,Z),o,Ne.bind(null,t,ne)),!c)return;c.on(z.ERROR,async l=>{let d=Ne.bind(null,t,De);if(i&&(i.watcherUnusable=!0),lt&&l.code==="EPERM")try{await(await sn(e,"r")).close(),d(l)}catch{}else d(l)}),i={listeners:r,errHandlers:o,rawEmitters:a,watcher:c},Ie.set(t,i)}return()=>{ge(i,Z,r),ge(i,De,o),ge(i,ne,a),Yt(i.listeners)&&(i.watcher.close(),Ie.delete(t),fn.forEach(gn(i)),i.watcher=void 0,Object.freeze(i))}},it=new Map,hn=(e,t,s,n)=>{let{listener:r,rawEmitter:o}=n,a=it.get(t),i=a&&a.options;return i&&(i.persistent<s.persistent||i.interval>s.interval)&&(Ot(t),a=void 0),a?(ue(a,Z,r),ue(a,ne,o)):(a={listeners:r,rawEmitters:o,options:s,watcher:en(t,s,(c,l)=>{at(a.rawEmitters,f=>{f(z.CHANGE,t,{curr:c,prev:l})});let d=c.mtimeMs;(c.size!==l.size||d>l.mtimeMs||d===0)&&at(a.listeners,f=>f(e,c))})},it.set(t,a)),()=>{ge(a,Z,r),ge(a,ne,o),Yt(a.listeners)&&(it.delete(t),Ot(t),a.options=a.watcher=void 0,Object.freeze(a))}},Se=class{fsw;_boundHandleError;constructor(t){this.fsw=t,this._boundHandleError=s=>t._handleError(s)}_watchWithNodeFs(t,s){let n=this.fsw.options,r=I.dirname(t),o=I.basename(t);this.fsw._getWatchedDir(r).add(o);let i=I.resolve(t),c={persistent:n.persistent};s||(s=Re);let l;if(n.usePolling){let d=n.interval!==n.binaryInterval;c.interval=d&&un(o)?n.binaryInterval:n.interval,l=hn(t,i,c,{listener:s,rawEmitter:this.fsw._emitRaw})}else l=mn(t,i,c,{listener:s,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return l}_handleFile(t,s,n){if(this.fsw.closed)return;let r=I.dirname(t),o=I.basename(t),a=this.fsw._getWatchedDir(r),i=s;if(a.has(o))return;let c=async(d,f)=>{if(this.fsw._throttle(ln,t,5)){if(!f||f.mtimeMs===0)try{let p=await Mt(t);if(this.fsw.closed)return;let g=p.atimeMs,b=p.mtimeMs;if((!g||g<=b||b!==i.mtimeMs)&&this.fsw._emit(z.CHANGE,t,p),(on||an||cn)&&i.ino!==p.ino){this.fsw._closeFile(d),i=p;let w=this._watchWithNodeFs(t,c);w&&this.fsw._addPathCloser(d,w)}else i=p}catch{this.fsw._remove(r,o)}else if(a.has(o)){let p=f.atimeMs,g=f.mtimeMs;(!p||p<=g||g!==i.mtimeMs)&&this.fsw._emit(z.CHANGE,t,f),i=f}}},l=this._watchWithNodeFs(t,c);if(!(n&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle(z.ADD,t,0))return;this.fsw._emit(z.ADD,t,s)}return l}async _handleSymlink(t,s,n,r){if(this.fsw.closed)return;let o=t.fullPath,a=this.fsw._getWatchedDir(s);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let i;try{i=await ot(n)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(a.has(r)?this.fsw._symlinkPaths.get(o)!==i&&(this.fsw._symlinkPaths.set(o,i),this.fsw._emit(z.CHANGE,n,t.stats)):(a.add(r),this.fsw._symlinkPaths.set(o,i),this.fsw._emit(z.ADD,n,t.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(o))return!0;this.fsw._symlinkPaths.set(o,!0)}_handleRead(t,s,n,r,o,a,i){t=I.join(t,"");let c=r?`${t}:${r}`:t;if(i=this.fsw._throttle("readdir",c,1e3),!i)return;let l=this.fsw._getWatchedDir(n.path),d=new Set,f=this.fsw._readdirp(t,{fileFilter:p=>n.filterPath(p),directoryFilter:p=>n.filterDir(p)});if(f)return f.on(rn,async p=>{if(this.fsw.closed){f=void 0;return}let g=p.path,b=I.join(t,g);if(d.add(g),!(p.stats.isSymbolicLink()&&await this._handleSymlink(p,t,b,g))){if(this.fsw.closed){f=void 0;return}(g===r||!r&&!l.has(g))&&(this.fsw._incrReadyCount(),b=I.join(o,I.relative(o,b)),this._addToNodeFs(b,s,n,a+1))}}).on(z.ERROR,this._boundHandleError),new Promise((p,g)=>{if(!f)return g();f.once(ct,()=>{if(this.fsw.closed){f=void 0;return}let b=i?i.clear():!1;p(void 0),l.getChildren().filter(w=>w!==t&&!d.has(w)).forEach(w=>{this.fsw._remove(t,w)}),f=void 0,b&&this._handleRead(t,!1,n,r,o,a,i)})})}async _handleDir(t,s,n,r,o,a,i){let c=this.fsw._getWatchedDir(I.dirname(t)),l=c.has(I.basename(t));!(n&&this.fsw.options.ignoreInitial)&&!o&&!l&&this.fsw._emit(z.ADD_DIR,t,s),c.add(I.basename(t)),this.fsw._getWatchedDir(t);let d,f,p=this.fsw.options.depth;if((p==null||r<=p)&&!this.fsw._symlinkPaths.has(i)){if(!o&&(await this._handleRead(t,n,a,o,t,r,d),this.fsw.closed))return;f=this._watchWithNodeFs(t,(g,b)=>{b&&b.mtimeMs===0||this._handleRead(g,!1,a,o,t,r,d)})}return f}async _addToNodeFs(t,s,n,r,o){let a=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return a(),!1;let i=this.fsw._getWatchHelpers(t);n&&(i.filterPath=c=>n.filterPath(c),i.filterDir=c=>n.filterDir(c));try{let c=await dn[i.statMethod](i.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(i.watchPath,c))return a(),!1;let l=this.fsw.options.followSymlinks,d;if(c.isDirectory()){let f=I.resolve(t),p=l?await ot(t):t;if(this.fsw.closed||(d=await this._handleDir(i.watchPath,c,s,r,o,i,p),this.fsw.closed))return;f!==p&&p!==void 0&&this.fsw._symlinkPaths.set(f,p)}else if(c.isSymbolicLink()){let f=l?await ot(t):t;if(this.fsw.closed)return;let p=I.dirname(i.watchPath);if(this.fsw._getWatchedDir(p).add(i.watchPath),this.fsw._emit(z.ADD,i.watchPath,c),d=await this._handleDir(p,c,s,r,t,i,f),this.fsw.closed)return;f!==void 0&&this.fsw._symlinkPaths.set(I.resolve(t),f)}else d=this._handleFile(i.watchPath,c,s);return a(),d&&this.fsw._addPathCloser(t,d),!1}catch(c){if(this.fsw._handleError(c))return a(),t}}};var dt="/",xn="//",qt=".",vn="..",$n="string",En=/\\/g,Bt=/\/\//g,Dn=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,In=/^\.[/\\]/;function Pe(e){return Array.isArray(e)?e:[e]}var ft=e=>typeof e=="object"&&e!==null&&!(e instanceof RegExp);function Nn(e){return typeof e=="function"?e:typeof e=="string"?t=>e===t:e instanceof RegExp?t=>e.test(t):typeof e=="object"&&e!==null?t=>{if(e.path===t)return!0;if(e.recursive){let s=y.relative(e.path,t);return s?!s.startsWith("..")&&!y.isAbsolute(s):!1}return!1}:()=>!1}function Sn(e){if(typeof e!="string")throw new Error("string expected");e=y.normalize(e),e=e.replace(/\\/g,"/");let t=!1;return e.startsWith("//")&&(t=!0),e=e.replace(Bt,"/"),t&&(e="/"+e),e}function Ut(e,t,s){let n=Sn(t);for(let r=0;r<e.length;r++){let o=e[r];if(o(n,s))return!0}return!1}function Rn(e,t){if(e==null)throw new TypeError("anymatch: specify first argument");let n=Pe(e).map(r=>Nn(r));return t==null?(r,o)=>Ut(n,r,o):Ut(n,t)}var Kt=e=>{let t=Pe(e).flat();if(!t.every(s=>typeof s===$n))throw new TypeError(`Non-string provided as watch path: ${t}`);return t.map(Jt)},Gt=e=>{let t=e.replace(En,dt),s=!1;return t.startsWith(xn)&&(s=!0),t=t.replace(Bt,dt),s&&(t=dt+t),t},Jt=e=>Gt(y.normalize(Gt(e))),Vt=(e="")=>t=>typeof t=="string"?Jt(y.isAbsolute(t)?t:y.join(e,t)):t,kn=(e,t)=>y.isAbsolute(e)?e:y.join(t,e),Pn=Object.freeze(new Set),pt=class{path;_removeWatcher;items;constructor(t,s){this.path=t,this._removeWatcher=s,this.items=new Set}add(t){let{items:s}=this;s&&t!==qt&&t!==vn&&s.add(t)}async remove(t){let{items:s}=this;if(!s||(s.delete(t),s.size>0))return;let n=this.path;try{await yn(n)}catch{this._removeWatcher&&this._removeWatcher(y.dirname(n),y.basename(n))}}has(t){let{items:s}=this;if(s)return s.has(t)}getChildren(){let{items:t}=this;return t?[...t.values()]:[]}dispose(){this.items.clear(),this.path="",this._removeWatcher=Re,this.items=Pn,Object.freeze(this)}},Cn="stat",Tn="lstat",ut=class{fsw;path;watchPath;fullWatchPath;dirParts;followSymlinks;statMethod;constructor(t,s,n){this.fsw=n;let r=t;this.path=t=t.replace(In,""),this.watchPath=r,this.fullWatchPath=y.resolve(r),this.dirParts=[],this.dirParts.forEach(o=>{o.length>1&&o.pop()}),this.followSymlinks=s,this.statMethod=s?Cn:Tn}entryPath(t){return y.join(this.watchPath,y.relative(this.watchPath,t.fullPath))}filterPath(t){let{stats:s}=t;if(s&&s.isSymbolicLink())return this.filterDir(t);let n=this.entryPath(t);return this.fsw._isntIgnored(n,s)&&this.fsw._hasReadPermissions(s)}filterDir(t){return this.fsw._isntIgnored(this.entryPath(t),t.stats)}},Ce=class extends _n{closed;options;_closers;_ignoredPaths;_throttled;_streams;_symlinkPaths;_watched;_pendingWrites;_pendingUnlinks;_readyCount;_emitReady;_closePromise;_userIgnored;_readyEmitted;_emitRaw;_boundRemove;_nodeFsHandler;constructor(t={}){super(),this.closed=!1,this._closers=new Map,this._ignoredPaths=new Set,this._throttled=new Map,this._streams=new Set,this._symlinkPaths=new Map,this._watched=new Map,this._pendingWrites=new Map,this._pendingUnlinks=new Map,this._readyCount=0,this._readyEmitted=!1;let s=t.awaitWriteFinish,n={stabilityThreshold:2e3,pollInterval:100},r={persistent:!0,ignoreInitial:!1,ignorePermissionErrors:!1,interval:100,binaryInterval:300,followSymlinks:!0,usePolling:!1,atomic:!0,...t,ignored:t.ignored?Pe(t.ignored):Pe([]),awaitWriteFinish:s===!0?n:typeof s=="object"?{...n,...s}:!1};Ht&&(r.usePolling=!0),r.atomic===void 0&&(r.atomic=!r.usePolling);let o=process.env.CHOKIDAR_USEPOLLING;if(o!==void 0){let c=o.toLowerCase();c==="false"||c==="0"?r.usePolling=!1:c==="true"||c==="1"?r.usePolling=!0:r.usePolling=!!c}let a=process.env.CHOKIDAR_INTERVAL;a&&(r.interval=Number.parseInt(a,10));let i=0;this._emitReady=()=>{i++,i>=this._readyCount&&(this._emitReady=Re,this._readyEmitted=!0,process.nextTick(()=>this.emit(N.READY)))},this._emitRaw=(...c)=>this.emit(N.RAW,...c),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new Se(this),Object.freeze(r)}_addIgnoredPath(t){if(ft(t)){for(let s of this._ignoredPaths)if(ft(s)&&s.path===t.path&&s.recursive===t.recursive)return}this._ignoredPaths.add(t)}_removeIgnoredPath(t){if(this._ignoredPaths.delete(t),typeof t=="string")for(let s of this._ignoredPaths)ft(s)&&s.path===t&&this._ignoredPaths.delete(s)}add(t,s,n){let{cwd:r}=this.options;this.closed=!1,this._closePromise=void 0;let o=Kt(t);return r&&(o=o.map(a=>kn(a,r))),o.forEach(a=>{this._removeIgnoredPath(a)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=o.length,Promise.all(o.map(async a=>{let i=await this._nodeFsHandler._addToNodeFs(a,!n,void 0,0,s);return i&&this._emitReady(),i})).then(a=>{this.closed||a.forEach(i=>{i&&this.add(y.dirname(i),y.basename(s||i))})}),this}unwatch(t){if(this.closed)return this;let s=Kt(t),{cwd:n}=this.options;return s.forEach(r=>{!y.isAbsolute(r)&&!this._closers.has(r)&&(n&&(r=y.join(n,r)),r=y.resolve(r)),this._closePath(r),this._addIgnoredPath(r),this._watched.has(r)&&this._addIgnoredPath({path:r,recursive:!0}),this._userIgnored=void 0}),this}close(){if(this._closePromise)return this._closePromise;this.closed=!0,this.removeAllListeners();let t=[];return this._closers.forEach(s=>s.forEach(n=>{let r=n();r instanceof Promise&&t.push(r)})),this._streams.forEach(s=>s.destroy()),this._userIgnored=void 0,this._readyCount=0,this._readyEmitted=!1,this._watched.forEach(s=>s.dispose()),this._closers.clear(),this._watched.clear(),this._streams.clear(),this._symlinkPaths.clear(),this._throttled.clear(),this._closePromise=t.length?Promise.all(t).then(()=>{}):Promise.resolve(),this._closePromise}getWatched(){let t={};return this._watched.forEach((s,n)=>{let o=(this.options.cwd?y.relative(this.options.cwd,n):n)||qt;t[o]=s.getChildren().sort()}),t}emitWithAll(t,s){this.emit(t,...s),t!==N.ERROR&&this.emit(N.ALL,t,...s)}async _emit(t,s,n){if(this.closed)return;let r=this.options;lt&&(s=y.normalize(s)),r.cwd&&(s=y.relative(r.cwd,s));let o=[s];n!=null&&o.push(n);let a=r.awaitWriteFinish,i;if(a&&(i=this._pendingWrites.get(s)))return i.lastChange=new Date,this;if(r.atomic){if(t===N.UNLINK)return this._pendingUnlinks.set(s,[t,...o]),setTimeout(()=>{this._pendingUnlinks.forEach((c,l)=>{this.emit(...c),this.emit(N.ALL,...c),this._pendingUnlinks.delete(l)})},typeof r.atomic=="number"?r.atomic:100),this;t===N.ADD&&this._pendingUnlinks.has(s)&&(t=N.CHANGE,this._pendingUnlinks.delete(s))}if(a&&(t===N.ADD||t===N.CHANGE)&&this._readyEmitted){let c=(l,d)=>{l?(t=N.ERROR,o[0]=l,this.emitWithAll(t,o)):d&&(o.length>1?o[1]=d:o.push(d),this.emitWithAll(t,o))};return this._awaitWriteFinish(s,a.stabilityThreshold,t,c),this}if(t===N.CHANGE&&!this._throttle(N.CHANGE,s,50))return this;if(r.alwaysStat&&n===void 0&&(t===N.ADD||t===N.ADD_DIR||t===N.CHANGE)){let c=r.cwd?y.join(r.cwd,s):s,l;try{l=await bn(c)}catch{}if(!l||this.closed)return;o.push(l)}return this.emitWithAll(t,o),this}_handleError(t){let s=t&&t.code;return t&&s!=="ENOENT"&&s!=="ENOTDIR"&&(!this.options.ignorePermissionErrors||s!=="EPERM"&&s!=="EACCES")&&this.emit(N.ERROR,t),t||this.closed}_throttle(t,s,n){this._throttled.has(t)||this._throttled.set(t,new Map);let r=this._throttled.get(t);if(!r)throw new Error("invalid throttle");let o=r.get(s);if(o)return o.count++,!1;let a,i=()=>{let l=r.get(s),d=l?l.count:0;return r.delete(s),clearTimeout(a),l&&clearTimeout(l.timeoutObject),d};a=setTimeout(i,n);let c={timeoutObject:a,clear:i,count:0};return r.set(s,c),c}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,s,n,r){let o=this.options.awaitWriteFinish;if(typeof o!="object")return;let a=o.pollInterval,i,c=t;this.options.cwd&&!y.isAbsolute(t)&&(c=y.join(this.options.cwd,t));let l=new Date,d=this._pendingWrites;function f(p){wn(c,(g,b)=>{if(g||!d.has(t)){g&&g.code!=="ENOENT"&&r(g);return}let w=Number(new Date);p&&b.size!==p.size&&(d.get(t).lastChange=w);let k=d.get(t);w-k.lastChange>=s?(d.delete(t),r(void 0,b)):i=setTimeout(f,a,b)})}d.has(t)||(d.set(t,{lastChange:l,cancelWait:()=>(d.delete(t),clearTimeout(i),n)}),i=setTimeout(f,a))}_isIgnored(t,s){if(this.options.atomic&&Dn.test(t))return!0;if(!this._userIgnored){let{cwd:n}=this.options,o=(this.options.ignored||[]).map(Vt(n)),i=[...[...this._ignoredPaths].map(Vt(n)),...o];this._userIgnored=Rn(i,void 0)}return this._userIgnored(t,s)}_isntIgnored(t,s){return!this._isIgnored(t,s)}_getWatchHelpers(t){return new ut(t,this.options.followSymlinks,this)}_getWatchedDir(t){let s=y.resolve(t);return this._watched.has(s)||this._watched.set(s,new pt(s,this._boundRemove)),this._watched.get(s)}_hasReadPermissions(t){return this.options.ignorePermissionErrors?!0:!!(Number(t.mode)&256)}_remove(t,s,n){let r=y.join(t,s),o=y.resolve(r);if(n=n??(this._watched.has(r)||this._watched.has(o)),!this._throttle("remove",r,100))return;!n&&this._watched.size===1&&this.add(t,s,!0),this._getWatchedDir(r).getChildren().forEach(p=>this._remove(r,p));let c=this._getWatchedDir(t),l=c.has(s);c.remove(s),this._symlinkPaths.has(o)&&this._symlinkPaths.delete(o);let d=r;if(this.options.cwd&&(d=y.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(d)&&this._pendingWrites.get(d).cancelWait()===N.ADD)return;this._watched.delete(r),this._watched.delete(o);let f=n?N.UNLINK_DIR:N.UNLINK;l&&!this._isIgnored(r)&&this._emit(f,r),this._closePath(r)}_closePath(t){this._closeFile(t);let s=y.dirname(t);this._getWatchedDir(s).remove(y.basename(t))}_closeFile(t){let s=this._closers.get(t);s&&(s.forEach(n=>n()),this._closers.delete(t))}_addPathCloser(t,s){if(!s)return;let n=this._closers.get(t);n||(n=[],this._closers.set(t,n)),n.push(s)}_readdirp(t,s){if(this.closed)return;let n={type:N.ALL,alwaysStat:!0,lstat:!0,...s,depth:0},r=jt(t,n);return this._streams.add(r),r.once(zt,()=>{r=void 0}),r.once(ct,()=>{r&&(this._streams.delete(r),r=void 0)}),r}};function An(e,t={}){let s=new Ce(t);return s.add(e),s}var Xt={watch:An,FSWatcher:Ce};import{existsSync as V,mkdirSync as Gn,readdirSync as Vn,readFileSync as qn,unlinkSync as Bn}from"fs";import{basename as rs,join as E,relative as Jn}from"path";import{copyFileSync as Fn,existsSync as O,mkdirSync as Ln,readdirSync as mt,readFileSync as jn,writeFileSync as On}from"fs";import{basename as Qt,dirname as es,extname as Wn,join as j,normalize as Mn,relative as ee,resolve as Zt,sep as zn}from"path";var Hn=/import\s+(?:(?:{[^}]*})|(?:[^{}\s,]*))?\s*(?:,\s*(?:{[^}]*}))?\s*from\s+['"]([./]+[^'"]*)['"]/g,Yn=/import\s+(?:(?:{[^}]*})|(?:[^{}\s,]*))?\s*(?:,\s*(?:{[^}]*}))?\s*from\s+['"](@\/[^'"]*)['"]/g,Un=/import\s*\(\s*['"](@\/[^'"]*)['"]\s*\)/g,Te=/\.(js|jsx|ts|tsx)$/,gt=/^page\.(tsx|ts|jsx|js)$/i,me=(e,t)=>{let n=ee(t,e).split(zn);n.pop();let r=n.filter(o=>!o.startsWith("("));return Mn(r.join("/"))},Ae=e=>{let t=new Map,s=n=>{if(O(n))for(let r of mt(n,{withFileTypes:!0})){let o=j(n,r.name);if(r.isDirectory()){s(o);continue}if(gt.test(r.name)){let a=me(o,e);t.set(a,o)}}};return s(e),t},Kn=(e,t)=>{let s=e.replace(Hn,(n,r)=>{if(r.startsWith(".")){let a=r.replace(Te,"").replace(/^(?:\.\.\/)+/,"");return n.replace(r,`${t}/${a}`)}return n});return s=s.replace(Yn,(n,r)=>{let o=r.replace(/^@\//,"").replace(Te,"");return n.replace(r,`${t}/${o}`)}),s=s.replace(Un,(n,r)=>{let o=r.replace(/^@\//,"").replace(Te,"");return n.replace(r,`${t}/${o}`)}),s=s.replace(/dynamic\s*\(\s*\(\s*=>\s*import\s*\(\s*['"](@\/[^'"]*)['"]\s*\)\s*\)\s*\)/g,(n,r)=>{let o=r.replace(/^@\//,"").replace(Te,"");return n.replace(r,`${t}/${o}`)}),s};function H(e){let t=e;for(;t!==Zt(t,"..");){let n=j(t,"turbo.json");if(O(n))return t;t=Zt(t,"..")}let s=j(e,"package.json");if(O(s))return e;throw new Error("\u274C Could not locate project root")}function Fe(e,t){let s=process.cwd();return[j(s,"node_modules",e),...t===s?[]:[j(t,"node_modules",e)]].find(r=>O(r))??null}function Le(e){let t=j(e,"src","app","[locale]");if(O(t))return t;let n=(o=>{let a=[];if(!O(o))return a;let i=(c,l=0)=>{if(!(l>4))try{let d=mt(c,{withFileTypes:!0});for(let f of d){if(!f.isDirectory())continue;let p=j(c,f.name);if(f.name==="[locale]"&&es(p).endsWith(j("src","app"))){a.push(p);continue}i(p,l+1)}}catch{}};return i(o),a})(e);return n.length>0?n[0]:j(e,"apps","docs","src","app","[locale]")}var je=e=>{let t=[];if(!O(e))return t;let s=mt(e,{withFileTypes:!0});for(let n of s){let r=j(e,n.name);n.isDirectory()?t.push(...je(r)):t.push(r)}return t},he=e=>O(e)?je(e).length===0:!0,ht=(e,t,s,n,r,o,a=!0)=>{let i=Qt(e);if(gt.test(i)){let c=me(t,r),l=n.get(c);if(l&&l!==t){a&&console.log(`\x1B[31mSkipped duplicate page:\x1B[0m ${ee(o,t)} (collides with ${ee(o,l)})`);return}}try{let c=es(t);O(c)||Ln(c,{recursive:!0});let l=Wn(e);if(s&&[".js",".jsx",".ts",".tsx"].includes(l)){let d=jn(e,"utf-8"),f=Kn(d,s);On(t,f)}else Fn(e,t);if(a){let d=e.indexOf(j("src","app")),f;d!==-1?f=e.substring(d):e.startsWith(o)?f=ee(o,e):f=e;let p=t.startsWith(o)?ee(o,t):t;console.log(`\x1B[32mCopied:\x1B[0m ${f} \u2192 ${p}`)}if(gt.test(Qt(t))){let d=me(t,r);n.set(d,t)}}catch(c){console.error(`\x1B[31mError copying file:\x1B[0m ${e}`,c)}},ts=(e,t,s)=>{if(!O(e)||!O(t)||t.replace(/\\/g,"/").includes("/@breadcrumb"))return;let r=je(t);for(let o of r){let a=ee(t,o),i=j(e,a);O(i)||s(o)}},ss=(e,t,s,n,r,o,a=!0)=>{if(!O(e)||he(e))return;let i=je(e);for(let c of i){let l=ee(e,c),d=j(t,l);ht(c,d,s,n,r,o,a)}};var ns=e=>{let t=V(E(e,"src","vitnode.config.ts"));return V(E(e,"src","vitnode.api.config.ts"))&&!t?"api":t?"web":null},Xn=(e,t,s,n)=>{let r=[],o=E(t,"apps");if(V(o)){let i=V(o)?Vn(o,{withFileTypes:!0}).filter(c=>c.isDirectory()).map(c=>c.name):[];for(let c of i){let l=E(t,"apps",c);ns(l)==="web"&&r.push({sourceDir:E(e,"src","routes","admin"),destinationDir:E(l,"src","app","[locale]","admin","(auth)",E("(plugins)",`(${n})`))},{sourceDir:E(e,"src","routes","main"),destinationDir:E(l,"src","app","[locale]","(main)",E("(plugins)",`(${n})`))},{sourceDir:E(e,"src","routes","blank"),destinationDir:E(l,"src","app","[locale]","(blank)",E("(plugins)",`(${n})`))},{sourceDir:E(e,"src","routes","breadcrumb","admin"),destinationDir:E(l,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:E(e,"src","routes","breadcrumb","main"),destinationDir:E(l,"src","app","[locale]","(main)","@breadcrumb")})}}else{let i=process.cwd();ns(i)==="web"&&r.push({sourceDir:E(e,"src","routes","admin"),destinationDir:E(i,"src","app","[locale]","admin","(auth)",E("(plugins)",`(${n})`))},{sourceDir:E(e,"src","routes","main"),destinationDir:E(i,"src","app","[locale]","(main)",E("(plugins)",`(${n})`))},{sourceDir:E(e,"src","routes","blank"),destinationDir:E(i,"src","app","[locale]","(blank)",E("(plugins)",`(${n})`))},{sourceDir:E(e,"src","routes","breadcrumb","admin"),destinationDir:E(i,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:E(e,"src","routes","breadcrumb","main"),destinationDir:E(i,"src","app","[locale]","(main)","@breadcrumb")})}return r},Qn=e=>{for(let{sourceDir:t,destinationDir:s}of e)V(t)&&!he(t)&&!V(s)&&Gn(s,{recursive:!0})},Zn=(e,t,s,n)=>({copyFileWrapper:(a,i)=>{ht(a,i,e,t,s,n)},removeFile:a=>{try{if(V(a)&&(Bn(a),console.log(`\x1B[33mRemoved:\x1B[0m ${a}`),/^page\.(tsx|ts|jsx|js)$/i.test(rs(a)))){let i=me(a,s);t.get(i)===a&&t.delete(i)}}catch(i){console.error(`\x1B[31mError removing file:\x1B[0m ${a}`,i)}}}),er=e=>t=>{let s=e.filter(({sourceDir:n})=>{let r=t.replace(/\\/g,"/"),o=n.replace(/\\/g,"/");return r===o||r.startsWith(`${o}/`)});if(s.length===0)throw new Error(`No matching source directory for: ${t}`);return s.map(n=>{let r=Jn(n.sourceDir,t);return E(n.destinationDir,r)})},tr=(e,t,s,n)=>{let r=Xt.watch(e,{ignoreInitial:!1,persistent:!0});return r.on("add",o=>{t(o).forEach(i=>s(o,i))}).on("change",o=>{t(o).forEach(i=>s(o,i))}).on("unlink",o=>{t(o).forEach(i=>n(i))}).on("error",o=>{console.error("\x1B[31mWatcher error:\x1B[0m",o)}),r},Oe=({initMessage:e})=>{let t=process.cwd(),s=H(t),n=Le(s),r=Ae(n),o=rs(t);try{let p=E(t,"package.json");V(p)&&(o=JSON.parse(qn(p,"utf-8")).name??"")}catch(p){console.error("\x1B[31mError reading package.json:\x1B[0m",p);return}let a=o.replace(/\//g,"-").replace(/@/g,""),i=Xn(t,s,o,a);if(i.length===0){console.log(`${e} \x1B[34mNothing to sync - no web app in this project.\x1B[0m`);return}Qn(i);let{copyFileWrapper:c,removeFile:l}=Zn(o,r,n,s);for(let{sourceDir:p,destinationDir:g}of i)ts(p,g,l);console.log(`${e} \x1B[34mWatching for changes in plugins...\x1B[0m`);let d=i.map(p=>p.sourceDir).filter(p=>V(p)),f=er(i);tr(d,f,c,l)};var _t=(e,t)=>{let s=sr(e,t,{stdio:"inherit",shell:process.platform==="win32",env:process.env});return s.on("error",n=>{console.error(`\x1B[31m${e} failed:\x1B[0m`,n)}),s.on("exit",n=>{n!==null&&n!==0&&console.error(`\x1B[31m${e} exited with code ${n}\x1B[0m`)}),s},os=({initMessage:e})=>{let t=[_t("tsc",["-w","-p","tsconfig.build.json","--preserveWatchOutput"]),_t("swc",["src","-d","dist","--config-file",".swcrc","--copy-files","-w"]),_t("tsc-alias",["-w","-p","tsconfig.build.json"])],s=()=>{t.forEach(n=>n.kill()),process.exit(0)};process.on("SIGINT",s),process.on("SIGTERM",s),Oe({initMessage:e})};import{existsSync as ms,readdirSync as gr,readFileSync as mr}from"fs";import{join as ps,relative as hr}from"path";import{createJiti as nr}from"jiti";import{existsSync as rr,readdirSync as or,statSync as ir}from"fs";import{join as is}from"path";var ar=(e,t,s=4)=>{let n=(r,o)=>{if(o>s)return null;try{let a=is(r,"src",t);if(rr(a))return a;let i=or(r);for(let c of i){if(c==="node_modules"||c.startsWith(".")||c==="dist"||c==="build"||c==="out")continue;let l=is(r,c);try{if(ir(l).isDirectory()){let d=n(l,o+1);if(d)return d}}catch{}}}catch{}return null};return n(e,0)};async function R({type:e="config",optional:t=!1}={}){let s=process.cwd(),n=`vitnode.${e}.ts`,r=ar(s,n);if(!r){if(t)return null;console.error(`Config file not found: ${n}`),console.error(`Searched recursively in ${s} (excluding node_modules, .*, dist, build, out)`),process.exit(1)}try{let o=e==="config"?"vitNodeConfig":"vitNodeApiConfig",c=(await nr(import.meta.url,{interopDefault:!0}).import(r))[o];if(!c){if(t)return null;console.error(`Export "${o}" not found in ${r}`),process.exit(1)}return c}catch(o){if(t)return null;console.error("Failed to load config:",o),process.exit(1)}}import{existsSync as Me,readdirSync as cs,readFileSync as ls}from"fs";import{join as q}from"path";import{stdin as cr,stdout as lr}from"process";import{createInterface as dr}from"readline/promises";var as=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),We=(e,t)=>{let s={...e};for(let n of Object.keys(t)){if(n==="__proto__")continue;let r=t[n],o=s[n];s[n]=as(o)&&as(r)?We(o,r):r}return s};var ds="@vitnode/core",re=({api:e,web:t})=>t||e?{api:e,web:t}:{api:!0,web:!0},ze=(e,t,{repoRoot:s,scope:n})=>{let r=Fe(e,s);if(!r)return[];let o=q(r,"src","locales"),a=[];return n.web&&a.push(q(o,`${t}.json`)),n.api&&a.push(q(o,"api",`${t}.json`)),a},He=e=>{if(!Me(e))return{};try{let t=JSON.parse(ls(e,"utf-8"));return typeof t=="object"&&t!==null&&!Array.isArray(t)?t:{}}catch{return{}}},Ye=(e,t="")=>typeof e!="object"||e===null||Array.isArray(e)?t?[t]:[]:Object.entries(e).flatMap(([s,n])=>Ye(n,t?`${t}.${s}`:s)),fr=(e,{locale:t,repoRoot:s,scope:n})=>ze(e,t,{repoRoot:s,scope:n}).map(He).reduce((r,o)=>We(r,o),{}),pr=(e,t,s)=>He(q(e,"src","locales",t,`${s}.json`)),Ue=(e,{appDir:t,defaultLocale:s,repoRoot:n,scope:r})=>We(fr(e,{locale:s,repoRoot:n,scope:r}),pr(t,e,s)),C=e=>`\x1B[90m${e}\x1B[0m`,Y=e=>`\x1B[31m${e}\x1B[0m`,A=e=>`\x1B[32m${e}\x1B[0m`,te=e=>`\x1B[36m${e}\x1B[0m`,_e=e=>`\x1B[33m${e}\x1B[0m`,M="\x1B[34m[VitNode]\x1B[0m",Ke=()=>dr({input:cr,output:lr}),ur=async(e,t,s)=>{for(;;){let n=(await e.question(t)).trim(),r=s(n);if(r){console.log(Y(` ${r}`));continue}return n}},fs=async(e,t)=>{let s=(await e.question(t)).trim().toLowerCase();return s==="y"||s==="yes"},we=async({missingMessage:e,provided:t,question:s,rl:n,validate:r})=>{if(t!==void 0){let o=r(t);return o&&(console.error(Y(o)),process.exit(1)),t}return n||(console.error(Y(e)),process.exit(1)),ur(n,s,r)},Ge=e=>{let t=q(e,"src"),s=q(t,"i18n.ts");if(Me(s))return s;let n=new Set(["build","dist","node_modules","out"]),r=(o,a)=>{if(a>4||!Me(o))return null;for(let i of cs(o,{withFileTypes:!0})){if(i.name.startsWith(".")||n.has(i.name))continue;let c=q(o,i.name);if(i.isDirectory()){let l=r(c,a+1);if(l)return l}else if(i.name.endsWith(".ts")){let l=ls(c,"utf-8");if(l.includes("defaultLocale")&&/locales\s*:\s*\[/.test(l))return c}}return null};return r(t,0)},Ve=e=>{let t=q(e,"src","locales"),s=[];if(!Me(t))return s;let n=(r,o)=>{for(let a of cs(r,{withFileTypes:!0})){let i=q(r,a.name);a.isDirectory()?n(i,[...o,a.name]):a.name.endsWith(".json")&&o.length>0&&s.push({locale:a.name.replace(/\.json$/,""),path:i,pluginId:o.join("/")})}};return n(t,[]),s};var _r="@vitnode/core",oe=8,se=e=>`\x1B[90m${e}\x1B[0m`,ie=e=>`\x1B[31m${e}\x1B[0m`,wt=e=>`\x1B[33m${e}\x1B[0m`,us=e=>`\x1B[32m${e}\x1B[0m`,hs=(e,t="")=>typeof e!="object"||e===null||Array.isArray(e)?t?[t]:[]:Object.entries(e).flatMap(([s,n])=>hs(n,t?`${t}.${s}`:s)),gs=e=>{if(!ms(e))return null;try{return hs(JSON.parse(mr(e,"utf-8")))}catch(t){return console.error(ie(` Could not parse ${e}: ${String(t)}`)),[]}},wr=e=>{let t=ps(e,"src","locales"),s=[];if(!ms(t))return s;let n=(r,o)=>{for(let a of gr(r,{withFileTypes:!0})){let i=ps(r,a.name);a.isDirectory()?n(i,[...o,a.name]):a.name.endsWith(".json")&&o.length>0&&s.push({locale:a.name.replace(/\.json$/,""),path:i,pluginId:o.join("/")})}};return n(t,[]),s},_s=async e=>{let t=e==="--ci",s=process.cwd(),n=H(s),r=await R({optional:!0}),o=await R({optional:!0,type:"api.config"}),a=r??o;a||(console.error(ie("No vitnode.config.ts or vitnode.api.config.ts found.")),process.exit(1));let i=re({api:o!==null,web:r!==null}),c=a.i18n?.defaultLocale??"en",l=(a.i18n?.locales??[]).map(u=>u.code),d=a.i18n?.messages??{},f=[...new Set([_r,...[r,o].flatMap(u=>(u?.plugins??[]).map(x=>x.pluginId))])],p=wr(s),g=[...new Set([...l,...p.map(u=>u.locale)])].filter(u=>u!==c);console.log(`\x1B[34m[VitNode]\x1B[0m Checking ${f.length} package(s) against ${g.length||"no"} extra locale(s), default ${se(c)}.`);let b=0,w=0,k=0,h=new Set(l),m=(u,x)=>{let D=ze(u,x,{repoRoot:n,scope:i}).map(gs).filter(G=>G!==null),S=p.find(G=>G.pluginId===u&&G.locale===x),K=S?gs(S.path):null;return D.length===0&&!K?null:[...new Set([...D.flat(),...K??[]])]};for(let u of f){let x=m(u,c);if(!x){ze(u,c,{repoRoot:n,scope:i}).length>0?console.log(se(` ${u}: no strings for this app - nothing to translate`)):(console.log(wt(` ${u}: no "${c}" messages found - is the package installed?`)),w+=1);continue}for(let D of g){let S=m(u,D);if(!S){h.has(D)?(k+=1,w+=1,console.log(ie(` ${u} \xB7 ${D}: no locale file - create src/locales/${u}/${D}.json`))):console.log(se(` ${u} \xB7 ${D}: not translated, falls back to ${c}`));continue}let K=new Set(x),G=new Set(S),F=x.filter(_=>!G.has(_)),W=S.filter(_=>!K.has(_));if(F.length===0&&W.length===0){console.log(us(` ${u} \xB7 ${D}: complete`));continue}if(F.length>0){b+=F.length,w+=1,console.log(wt(` ${u} \xB7 ${D}: ${F.length} key(s) missing, falling back to ${c}`));for(let _ of F.slice(0,oe))console.log(se(` ${_}`));F.length>oe&&console.log(se(` ... and ${F.length-oe} more`))}if(W.length>0){w+=1,console.log(wt(` ${u} \xB7 ${D}: ${W.length} key(s) unknown to ${c} - typo or leftover?`));for(let _ of W.slice(0,oe))console.log(se(` ${_}`));W.length>oe&&console.log(se(` ... and ${W.length-oe} more`))}}}for(let u of p){let x=d[u.locale]?.[u.pluginId],D=hr(s,u.path);x?l.length>0&&!l.includes(u.locale)&&(k+=1,w+=1,console.log(ie(` ${D} uses a locale that is not in \`i18n.locales\`.`))):(k+=1,w+=1,console.log(ie(` ${D} is never loaded - add \`"${u.pluginId}": () => import("./locales/${u.pluginId}/${u.locale}.json")\` under \`i18n.messages.${u.locale}\`.`)))}w===0&&(console.log(us(" Everything is translated. Nice.")),process.exit(0)),console.log(`\x1B[34m[VitNode]\x1B[0m ${w} issue(s)`+(k>0?ie(`, ${k} error(s)`):"")+`, ${b} untranslated key(s).`),process.exit(k>0||t?1:0)};import{existsSync as yr,mkdirSync as br,readFileSync as xr,writeFileSync as yt}from"fs";import{dirname as vr,join as ws,relative as ye}from"path";var $r=/^[a-z]{2,3}(-[A-Za-z]{2,4})?$/,bt=(e,t,s)=>`${e}"${t}": () => import("./locales/${t}/${s}.json"),`,ae=e=>JSON.stringify(e),ys=(e,t)=>/^[^\S\n]*\n/.test(e.slice(t)),bs=e=>{let t=/\bi18n\s*[:=]\s*\{/.exec(e);if(t?.index===void 0)return null;let s=t.index+t[0].length-1,n=0;for(let r=s;r<e.length;r+=1)if(e[r]==="{")n+=1;else if(e[r]==="}"&&(n-=1,n===0))return{end:r,start:s};return null},xt=(e,t,s,n)=>{e.lastIndex=s;let r=e.exec(t);return r&&r.index<n?r:null},Er=(e,{code:t,name:s})=>{let n=bs(e);if(!n)return null;let r=xt(/^([^\S\n]*)locales\s*:\s*\[/gm,e,n.start,n.end);if(!r)return null;let o=`${r[1]} `,a=r.index+r[0].length,i=`{ code: ${ae(t)}, name: ${ae(s)} },`,c=ys(e,a)?`
|
|
6
|
+
${o}${i}`:`
|
|
7
|
+
${o}${i}
|
|
8
|
+
${o}`;return e.slice(0,a)+c+e.slice(a)},Dr=(e,t)=>{let s=0;for(let n=t;n<e.length;n+=1)if(e[n]==="[")s+=1;else if(e[n]==="]"&&(s-=1,s===0))return n;return-1},Ir=(e,{code:t,pluginIds:s})=>{let n=bs(e);if(!n)return null;let r=xt(/^([^\S\n]*)messages\s*:\s*\{/gm,e,n.start,n.end);if(r){let w=r[1],k=`${w} `,h=`${k} `,m=s.map(S=>bt(h,S,t)).join(`
|
|
9
|
+
`),u=r.index+r[0].length,x=`
|
|
10
|
+
${k}"${t}": {
|
|
11
|
+
${m}
|
|
12
|
+
${k}},`,D=ys(e,u)?x:`${x}
|
|
13
|
+
${w}`;return e.slice(0,u)+D+e.slice(u)}let o=xt(/^([^\S\n]*)locales\s*:\s*\[/gm,e,n.start,n.end);if(!o)return null;let a=e.indexOf("[",o.index),i=Dr(e,a);if(i===-1)return null;let c=o[1],l=`${c} `,d=`${l} `,f=s.map(w=>bt(d,w,t)).join(`
|
|
14
|
+
`),p=i+1,g=",";e[p]===","&&(p+=1,g="");let b=`${g}
|
|
15
|
+
${c}messages: {
|
|
16
|
+
${l}"${t}": {
|
|
17
|
+
${f}
|
|
18
|
+
${l}},
|
|
19
|
+
${c}},`;return e.slice(0,p)+b+e.slice(p)},Nr=({code:e,defaultLocale:t,locales:s,name:n,pluginIds:r})=>{let o=[...s,{code:e,name:n}].map(i=>` { code: ${ae(i.code)}, name: ${ae(i.name)} },`).join(`
|
|
20
|
+
`),a=r.map(i=>bt(" ",i,e)).join(`
|
|
21
|
+
`);return`import type { VitNodeI18nConfig } from "@vitnode/core/lib/i18n/types";
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Shared by \`vitnode.config.ts\` (web) and \`vitnode.api.config.ts\` (API) so the
|
|
25
|
+
* site and its emails agree on which languages exist. Packages ship their own
|
|
26
|
+
* languages - only what this app adds or reworks needs a file here.
|
|
27
|
+
*/
|
|
28
|
+
export const i18n = {
|
|
29
|
+
defaultLocale: "${t}",
|
|
30
|
+
locales: [
|
|
31
|
+
${o}
|
|
32
|
+
],
|
|
33
|
+
messages: {
|
|
34
|
+
"${e}": {
|
|
35
|
+
${a}
|
|
36
|
+
},
|
|
37
|
+
},
|
|
38
|
+
} satisfies VitNodeI18nConfig;
|
|
39
|
+
`},xs=async()=>{let e=process.cwd(),t=await R({optional:!0}),s=await R({optional:!0,type:"api.config"}),n=t??s;n||(console.error(Y("No vitnode.config.ts or vitnode.api.config.ts found.")),process.exit(1));let r=re({api:s!==null,web:t!==null}),o=t===null,a=n.i18n?.defaultLocale??"en",i=(n.i18n?.locales??[]).map(_=>({code:_.code,name:_.name})),c=new Set([a,...i.map(_=>_.code)]),l=[...new Set([ds,...[t,s].flatMap(_=>(_?.plugins??[]).map(T=>T.pluginId))])].sort((_,T)=>_.localeCompare(T)),d=_=>_?$r.test(_)?c.has(_)?`"${_}" already exists in this app.`:null:"Use an ISO code like `pl`, `de`, or `pt-BR`.":"A locale code is required.",f=_=>_?null:"A language name is required.",[p,...g]=process.argv.slice(3),b=g.join(" ").trim()||void 0,h=(process.stdin.isTTY??!1)&&(p===void 0||b===void 0)?Ke():null,m='Run: vitnode i18n:create <code> "<name>"';h&&console.log(`${M} Add a language. Press Ctrl+C to abort.
|
|
40
|
+
`);let u,x;try{u=await we({missingMessage:`Missing locale code. ${m}`,provided:p,question:te("? Locale code (e.g. pl, de, pt-BR): "),rl:h,validate:d}),x=await we({missingMessage:`Missing language name. ${m}`,provided:b,question:te("? Language name (e.g. Polski, Deutsch): "),rl:h,validate:f})}finally{h?.close()}console.log();let D=e;try{D=H(e)}catch{}let S=[],K=[],G=[],F=[];for(let _ of l){let T=ws(e,"src","locales",_,`${u}.json`);if(yr(T)){K.push(ye(e,T)),F.push(_);continue}let pe=Ue(_,{appDir:e,defaultLocale:a,repoRoot:D,scope:r});if(Object.keys(pe).length===0){G.push(_);continue}br(vr(T),{recursive:!0}),yt(T,`${JSON.stringify(pe,null,2)}
|
|
41
|
+
`),S.push(ye(e,T)),F.push(_)}for(let _ of S)console.log(A(` created ${_}`));for(let _ of K)console.log(C(` exists ${_}`));for(let _ of G)console.log(C(` skipped ${_} (no strings for this app)`));let W=Ge(e);if(W){let _=xr(W,"utf-8"),T=Er(_,{code:u,name:x}),pe=T?Ir(T,{code:u,pluginIds:F}):null;if(pe)yt(W,pe),console.log(A(` updated ${ye(e,W)}`));else{let Ws=F.map(Rt=>` "${Rt}": () => import("./locales/${Rt}/${u}.json"),`).join(`
|
|
42
|
+
`);console.log(`
|
|
43
|
+
${M} Couldn't edit ${ye(e,W)} automatically. Add:
|
|
44
|
+
`+C(` locales: [{ code: ${ae(u)}, name: ${ae(x)} }, /* ... */]
|
|
45
|
+
`)+C(` messages: {
|
|
46
|
+
"${u}": {
|
|
47
|
+
${Ws}
|
|
48
|
+
},
|
|
49
|
+
}`))}}else{let _=ws(e,"src","i18n.ts");yt(_,Nr({code:u,defaultLocale:a,locales:i,name:x,pluginIds:F})),console.log(A(` created ${ye(e,_)}`));let T=o?"buildApiConfig":"buildConfig";console.log(`
|
|
50
|
+
${M} Import it into your config so the app picks it up:
|
|
51
|
+
`+C(` import { i18n } from "./i18n";
|
|
52
|
+
`)+C(` ${T}({ i18n, /* ... */ });`))}console.log(`
|
|
53
|
+
${M} ${A(x)} (${u}) added. Translate the files above, then run ${te("vitnode i18n:check")}.`),process.exit(0)};import{existsSync as Sr,readdirSync as Rr,readFileSync as kr,rmdirSync as Pr,unlinkSync as Cr,writeFileSync as Tr}from"fs";import{dirname as vs,join as Ar,relative as qe}from"path";var $s=e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),Fr=(e,t)=>{let s=0;for(let n=t;n<e.length;n+=1)if(e[n]==="[")s+=1;else if(e[n]==="]"&&(s-=1,s===0))return n;return-1},Lr=(e,t)=>{let s=/locales\s*:\s*\[/.exec(e);if(s?.index===void 0)return e;let n=e.indexOf("[",s.index),r=Fr(e,n);if(r===-1)return e;let o=new RegExp(`[^\\S\\n]*\\{[^{}]*\\bcode\\s*:\\s*["']${$s(t)}["'][^{}]*\\}[^\\S\\n]*,?\\n?`),a=e.slice(n,r+1),i=a.replace(o,"");return i===a?e:e.slice(0,n)+i+e.slice(r+1)},jr=(e,t)=>{let s=$s(t),n=new RegExp(`[^\\S\\n]*["']?${s}["']?\\s*:\\s*\\{[^{}]*\\}[^\\S\\n]*,?\\n?`);return e.replace(n,"")},Es=async()=>{let e=process.cwd(),s=await R({optional:!0})??await R({optional:!0,type:"api.config"});s||(console.error(Y("No vitnode.config.ts or vitnode.api.config.ts found.")),process.exit(1));let n=s.i18n?.defaultLocale??"en",r=(s.i18n?.locales??[]).map(h=>({code:h.code,name:h.name})),o=Ve(e),a=new Set([...r.map(h=>h.code),...o.map(h=>h.locale)]),i=h=>h?h==="en"?"English is the built-in fallback and can't be removed.":h===n?`"${n}" is the default locale - change \`defaultLocale\` before removing it.`:a.has(h)?null:`No language "${h}" found in this app.`:"A locale code is required.",c=process.argv[3],d=process.stdin.isTTY??!1?Ke():null,f=Ge(e),p=h=>{let m=r.find(u=>u.code===h)?.name;return m?`${m} (${h})`:h},g="",b=!0;try{if(g=await we({missingMessage:"Missing locale code. Run: vitnode i18n:delete <code>",provided:c,question:te("? Locale code to remove: "),rl:d,validate:i}),d){console.log(`
|
|
54
|
+
${M} About to remove ${_e(p(g))}:`);for(let h of o.filter(m=>m.locale===g))console.log(C(` delete ${qe(e,h.path)}`));f&&console.log(C(` update ${qe(e,f)}`)),b=await fs(d,te(`
|
|
55
|
+
? Remove it? [y/N] `))}}finally{d?.close()}b||(console.log(C(`
|
|
56
|
+
Aborted, nothing was removed.`)),process.exit(0)),console.log();let w=Ar(e,"src","locales"),k=h=>{let m=h;for(;m.startsWith(w)&&m!==w&&(Sr(m)&&Rr(m).length===0);)Pr(m),m=vs(m)};for(let h of o.filter(m=>m.locale===g))Cr(h.path),console.log(A(` deleted ${qe(e,h.path)}`)),k(vs(h.path));if(f){let h=kr(f,"utf-8"),m=jr(Lr(h,g),g);m!==h&&(Tr(f,m),console.log(A(` updated ${qe(e,f)}`)))}console.log(`
|
|
57
|
+
${M} ${A(p(g))} removed.`),process.exit(0)};import{writeFileSync as Or}from"fs";import{relative as Wr}from"path";var vt=8,$t=e=>typeof e=="object"&&e!==null&&!Array.isArray(e),Mr=(e,t)=>{let s=(n,r)=>{if($t(n)){let o=$t(r)?r:{};return Object.fromEntries(Object.entries(n).map(([a,i])=>[a,s(i,o[a])]))}return r!==void 0&&!$t(r)?r:n};return s(e,t)},Ds=async()=>{let e=process.cwd(),t=await R({optional:!0}),s=await R({optional:!0,type:"api.config"}),n=t??s;n||(console.error(Y("No vitnode.config.ts or vitnode.api.config.ts found.")),process.exit(1));let r=re({api:s!==null,web:t!==null}),o=n.i18n?.defaultLocale??"en",a=e;try{a=H(e)}catch{}let i=Ve(e).filter(g=>g.locale!==o);i.length===0&&(console.log(`${M} No translation files to update.`),process.exit(0));let c=new Map,l=g=>{let b=c.get(g);if(b)return b;let w=Ue(g,{appDir:e,defaultLocale:o,repoRoot:a,scope:r});return c.set(g,w),w};console.log(`${M} Syncing ${i.length} translation file(s) against ${C(o)}.`);let d=0,f=0,p=0;for(let g of i){let b=Wr(e,g.path),w=l(g.pluginId);if(Object.keys(w).length===0){console.log(C(` skipped ${b} - no "${o}" source strings`));continue}let k=He(g.path),h=new Set(Ye(w)),m=new Set(Ye(k)),u=[...h].filter(S=>!m.has(S)),x=[...m].filter(S=>!h.has(S));if(u.length===0&&x.length===0){console.log(C(` ok ${b}`));continue}Or(g.path,`${JSON.stringify(Mr(w,k),null,2)}
|
|
58
|
+
`),p+=1,d+=u.length,f+=x.length,console.log(`${A(` updated ${b}`)} ${C(`+${u.length} -${x.length}`)}`);for(let S of u.slice(0,vt))console.log(A(` + ${S}`));for(let S of x.slice(0,vt-u.length))console.log(Y(` - ${S}`));let D=Math.min(u.length,vt)+x.length;u.length+x.length>D&&console.log(C(` ... and ${u.length+x.length-D} more`))}p===0&&(console.log(A(" Every translation is already in sync.")),process.exit(0)),console.log(`
|
|
59
|
+
${M} ${A(`${p} file(s) updated`)}: ${_e(`+${d}`)} added, ${_e(`-${f}`)} removed. Translate the added keys, then run vitnode i18n:check.`),process.exit(0)};import{count as Zr,sql as Ls}from"drizzle-orm";import{migrate as eo}from"drizzle-orm/postgres-js/migrator";import{createJiti as to}from"jiti";import{existsSync as so}from"fs";import{join as no}from"path";import{relations as ks}from"drizzle-orm";import{index as Ze,pgTable as Ps}from"drizzle-orm/pg-core";import{pgTable as zr}from"drizzle-orm/pg-core";var P=zr("core_roles",e=>({id:e.serial().primaryKey(),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1),default:e.boolean().notNull().default(!1),root:e.boolean().notNull().default(!1),guest:e.boolean().notNull().default(!1),color:e.varchar({length:50}),allowUploadFiles:e.boolean().notNull().default(!1),totalMaxStorage:e.integer(),maxStorageForSubmit:e.integer()})).enableRLS();import{relations as Ns}from"drizzle-orm";import{index as Ss,pgTable as Rs}from"drizzle-orm/pg-core";import{relations as be}from"drizzle-orm";import{index as ce,pgTable as xe,primaryKey as Yr}from"drizzle-orm/pg-core";import{relations as Hr}from"drizzle-orm";import{index as Et,pgTable as Is}from"drizzle-orm/pg-core";var U=Is("core_languages",e=>({id:e.serial().primaryKey(),code:e.varchar({length:32}).notNull().unique(),name:e.varchar({length:255}).notNull(),timezone:e.varchar({length:255}).notNull().default("UTC"),protected:e.boolean().notNull().default(!1),default:e.boolean().notNull().default(!1),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),time24:e.boolean().notNull().default(!1)}),e=>[Et("core_languages_code_idx").on(e.code),Et("core_languages_name_idx").on(e.name)]).enableRLS(),Be=Is("core_languages_words",e=>({id:e.serial().primaryKey(),languageCode:e.varchar().notNull().references(()=>U.code,{onDelete:"cascade"}),pluginCode:e.varchar({length:50}).notNull(),itemId:e.integer().notNull(),value:e.text().notNull(),tableName:e.varchar({length:255}).notNull(),variable:e.varchar({length:255}).notNull()}),e=>[Et("core_languages_words_lang_code_idx").on(e.languageCode)]).enableRLS(),Ei=Hr(Be,({one:e})=>({language:e(U,{fields:[Be.languageCode],references:[U.code]})}));var v=xe("core_users",e=>({id:e.serial().primaryKey(),nameCode:e.varchar({length:255}).notNull().unique(),name:e.varchar({length:255}).notNull().unique(),email:e.varchar({length:255}).notNull().unique(),password:e.varchar(),createdAt:e.timestamp().notNull().defaultNow(),newsletter:e.boolean().notNull().default(!1),avatarColor:e.varchar({length:6}).notNull(),emailVerified:e.boolean().notNull().default(!1),roleId:e.integer().references(()=>P.id).notNull(),birthday:e.timestamp(),ipAddress:e.varchar({length:40}).notNull(),language:e.varchar({length:32}).notNull().default("en").references(()=>U.code,{onDelete:"set default"})}),e=>[ce("core_users_name_code_idx").on(e.nameCode),ce("core_users_name_idx").on(e.name),ce("core_users_email_idx").on(e.email)]).enableRLS(),ki=be(v,({one:e,many:t})=>({group:e(P,{fields:[v.roleId],references:[P.id]}),secondary_roles:t(Je),language:e(U,{fields:[v.language],references:[U.code]}),confirm_email:e(Xe,{fields:[v.id],references:[Xe.userId]}),sso:t(Dt),forgot_password:e(Qe,{fields:[v.id],references:[Qe.userId]})})),Je=xe("core_users_secondary_roles",e=>({userId:e.integer().references(()=>v.id,{onDelete:"cascade"}).notNull(),roleId:e.integer().references(()=>P.id,{onDelete:"cascade"}).notNull(),createdAt:e.timestamp().notNull().defaultNow()}),e=>[Yr({columns:[e.userId,e.roleId]}),ce("core_users_secondary_roles_user_id_idx").on(e.userId),ce("core_users_secondary_roles_role_id_idx").on(e.roleId)]).enableRLS(),Pi=be(Je,({one:e})=>({user:e(v,{fields:[Je.userId],references:[v.id]}),role:e(P,{fields:[Je.roleId],references:[P.id]})})),Dt=xe("core_users_sso",e=>({userId:e.integer().references(()=>v.id,{onDelete:"cascade"}).notNull(),providerId:e.varchar({length:255}).notNull(),providerAccountId:e.varchar({length:255}).notNull(),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date)}),e=>[ce("core_users_sso_user_id_idx").on(e.userId)]).enableRLS(),Ci=be(Dt,({one:e})=>({user:e(v,{fields:[Dt.userId],references:[v.id]})})),Xe=xe("core_users_confirm_emails",e=>({id:e.serial().primaryKey(),userId:e.integer().references(()=>v.id,{onDelete:"cascade"}).notNull(),token:e.varchar({length:100}).notNull().unique(),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),ipAddress:e.varchar({length:40}).notNull()})).enableRLS(),Ti=be(Xe,({one:e})=>({user:e(v,{fields:[Xe.userId],references:[v.id]})})),Qe=xe("core_users_forgot_password",e=>({id:e.serial().primaryKey(),userId:e.integer().references(()=>v.id,{onDelete:"cascade"}).notNull().unique(),token:e.varchar({length:100}).notNull().unique(),ipAddress:e.varchar({length:40}).notNull(),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull()})).enableRLS(),Ai=be(Qe,({one:e})=>({user:e(v,{fields:[Qe.userId],references:[v.id]})}));var ve=Rs("core_sessions",e=>({id:e.serial().primaryKey(),token:e.varchar({length:255}).notNull().unique(),userId:e.integer().notNull().references(()=>v.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),deviceId:e.integer().references(()=>B.id,{onDelete:"cascade"}).notNull()}),e=>[Ss("core_sessions_user_id_idx").on(e.userId)]).enableRLS(),Wi=Ns(ve,({one:e})=>({user:e(v,{fields:[ve.userId],references:[v.id]}),device:e(B,{fields:[ve.deviceId],references:[B.id]})})),B=Rs("core_sessions_known_devices",e=>({id:e.serial().primaryKey(),publicId:e.varchar({length:32}).notNull().unique(),ipAddress:e.varchar({length:40}).notNull(),userAgent:e.text().notNull(),lastSeen:e.timestamp().notNull().defaultNow()}),e=>[Ss("core_sessions_known_devices_ip_address_idx").on(e.ipAddress)]).enableRLS(),Mi=Ns(B,({one:e})=>({session:e(ve,{fields:[B.id],references:[ve.deviceId]})}));var $e=Ps("core_admin_permissions",e=>({id:e.serial().primaryKey(),roleId:e.integer().references(()=>P.id,{onDelete:"cascade"}),userId:e.integer().references(()=>v.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1),unrestricted:e.boolean().notNull().default(!1),permissions:e.jsonb().$type().notNull().default([])}),e=>[Ze("core_admin_permissions_role_id_idx").on(e.roleId),Ze("core_admin_permissions_user_id_idx").on(e.userId)]).enableRLS(),Vi=ks($e,({one:e})=>({group:e(P,{fields:[$e.roleId],references:[P.id]}),user:e(v,{fields:[$e.userId],references:[v.id]})})),It=Ps("core_admin_sessions",e=>({id:e.serial().primaryKey(),token:e.varchar({length:255}).notNull().unique(),userId:e.integer().notNull().references(()=>v.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),lastSeen:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),deviceId:e.integer().references(()=>B.id,{onDelete:"cascade"}).notNull()}),e=>[Ze("core_admin_sessions_token_idx").on(e.token),Ze("core_admin_sessions_user_id_idx").on(e.userId)]).enableRLS(),qi=ks(It,({one:e})=>({user:e(v,{fields:[It.userId],references:[v.id]}),device:e(B,{fields:[It.deviceId],references:[B.id]})}));import{relations as Ur}from"drizzle-orm";import{index as Cs,pgTable as Kr}from"drizzle-orm/pg-core";var Ee=Kr("core_moderators_permissions",e=>({id:e.serial().primaryKey(),roleId:e.integer().references(()=>P.id,{onDelete:"cascade"}),userId:e.integer().references(()=>v.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().defaultNow().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1),unrestricted:e.boolean().notNull().default(!1),permissions:e.jsonb().$type().notNull().default([])}),e=>[Cs("core_moderators_permissions_role_id_idx").on(e.roleId),Cs("core_moderators_permissions_user_id_idx").on(e.userId)]).enableRLS(),ea=Ur(Ee,({one:e})=>({group:e(P,{fields:[Ee.roleId],references:[P.id]}),user:e(v,{fields:[Ee.userId],references:[v.id]})}));import{sql as Nt}from"drizzle-orm";import{customType as Gr,index as le,pgTable as Vr,unique as qr}from"drizzle-orm/pg-core";var Br=Gr({dataType(){return"tsvector"}}),St={da:"danish",de:"german",en:"english",es:"spanish",fi:"finnish",fr:"french",hu:"hungarian",it:"italian",nl:"dutch",no:"norwegian",pl:"polish",pt:"portuguese",ro:"romanian",ru:"russian",sv:"swedish",tr:"turkish"},Jr="simple";var Ts=`CASE lower(split_part("core_search_index"."languageCode", '-', 1)) ${Object.entries(St).map(([e,t])=>`WHEN '${e}' THEN '${t}'::regconfig`).join(" ")} ELSE '${Jr}'::regconfig END`,As=Vr("core_search_index",e=>({id:e.serial().primaryKey(),pluginId:e.varchar({length:255}).notNull(),itemType:e.varchar({length:100}).notNull(),itemId:e.integer().notNull(),languageCode:e.varchar({length:32}).notNull().default(""),authorId:e.integer().references(()=>v.id,{onDelete:"set null",onUpdate:"cascade"}),title:e.text().notNull().default(""),content:e.text().notNull().default(""),searchVector:Br("search_vector").notNull().generatedAlwaysAs(()=>Nt`setweight(to_tsvector(${Nt.raw(Ts)}, coalesce(${As.title}, '')), 'A') || setweight(to_tsvector(${Nt.raw(Ts)}, coalesce(${As.content}, '')), 'B')`),containerType:e.varchar({length:100}),containerId:e.integer(),url:e.text(),isPublic:e.boolean().notNull().default(!0),metadata:e.jsonb().$type().notNull().default({}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp(),indexedAt:e.timestamp().notNull().defaultNow()}),e=>[qr("core_search_index_item_unique").on(e.itemType,e.itemId,e.languageCode),le("core_search_index_search_vector_idx").using("gin",e.searchVector),le("core_search_index_created_at_idx").on(e.createdAt),le("core_search_index_author_id_idx").on(e.authorId),le("core_search_index_item_type_idx").on(e.itemType),le("core_search_index_language_code_idx").on(e.languageCode),le("core_search_index_is_public_idx").on(e.isPublic)]).enableRLS();import{existsSync as J,readdirSync as Xr}from"fs";import{readFile as Qr}from"fs/promises";import{join as $,relative as Fs}from"path";var de=async e=>{let t=process.cwd(),s=J($(t,"src","vitnode.config.ts")),n=J($(t,"src","vitnode.api.config.ts")),r;e==="--api"&&n?r=await R({type:"api.config"}):e==="--web"&&s?r=await R({}):n&&!s?r=await R({type:"api.config"}):s?r=await R({}):r={plugins:[]};let o=[...r.plugins.map(d=>d.pluginId),"@vitnode/core"],a=H(process.cwd()),i=Le(a),c=Ae(i),l=process.cwd();await Promise.all(o.map(async d=>{let f=Fe(d,a);if(!f){console.error(`\x1B[31mPlugin not found:\x1B[0m ${d} in node_modules`);return}let p="";try{let m=$(f,"package.json");J(m)&&(p=JSON.parse(await Qr(m,"utf-8")).name??"")}catch(m){console.error(`\x1B[31mError reading package.json for ${d}:\x1B[0m`,m);return}let g=d.replace(/\//g,"-").replace(/@/g,""),b=m=>{let u=J($(m,"src","vitnode.config.ts"));return J($(m,"src","vitnode.api.config.ts"))&&!u?"api":u?"web":null},w=$(a,"apps"),k=J(w),h=[];if(k){let m=J(w)?Xr(w,{withFileTypes:!0}).filter(u=>u.isDirectory()).map(u=>u.name):[];for(let u of m){let x=$(a,"apps",u);if(b(x)==="web"){let S=$(x,"src","app","[locale]","(main)",$("(plugins)",`(${g})`)),K=$(x,"src","app","[locale]","admin","(auth)",$("(plugins)",`(${g})`));h.push({sourceDir:$(f,"src","routes","admin"),destinationDir:K},{sourceDir:$(f,"src","routes","main"),destinationDir:S},{sourceDir:$(f,"src","routes","blank"),destinationDir:$(x,"src","app","[locale]","(blank)",$("(plugins)",`(${g})`))},{sourceDir:$(f,"src","routes","breadcrumb","admin"),destinationDir:$(x,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:$(f,"src","routes","breadcrumb","main"),destinationDir:$(x,"src","app","[locale]","(main)","@breadcrumb")})}}}else{let m=$(l,"src","app","[locale]","(main)",$("(plugins)",`(${g})`)),u=$(l,"src","app","[locale]","admin","(auth)",$("(plugins)",`(${g})`));h.push({sourceDir:$(f,"src","routes","admin"),destinationDir:u},{sourceDir:$(f,"src","routes","main"),destinationDir:m},{sourceDir:$(f,"src","routes","blank"),destinationDir:$(l,"src","app","[locale]","(blank)",$("(plugins)",`(${g})`))},{sourceDir:$(f,"src","routes","breadcrumb","admin"),destinationDir:$(l,"src","app","[locale]","admin","(auth)","@breadcrumb")},{sourceDir:$(f,"src","routes","breadcrumb","main"),destinationDir:$(l,"src","app","[locale]","(main)","@breadcrumb")})}for(let{sourceDir:m,destinationDir:u}of h)J(m)&&!he(m)&&(console.log(`\x1B[36mCopying ${d}:\x1B[0m ${Fs(a,m)} \u2192 ${Fs(a,u)}`),ss(m,u,p,c,i,a,!1))}))};var et=async()=>{try{await Q("npm",["run","drizzle-kit","up"]),await Q("npm",["run","drizzle-kit","generate"])}catch(e){console.error("\x1B[31m%s\x1B[0m",e),process.exit(1)}},ro=async()=>{let e=no(process.cwd(),"drizzle.config.ts");if(so(e))try{let s=await to(import.meta.url,{interopDefault:!0}).import(e),n=s.default?.out??s.out;if(typeof n=="string"&&n.length>0)return n}catch{}return"./migrations"},oo=async e=>{let t=[...new Set(Object.values(St))];if(t.length===0)return;let s=await e.execute(Ls`SELECT cfgname FROM pg_ts_config`),n=new Set(s.map(o=>o.cfgname)),r=t.filter(o=>!n.has(o));if(r.length!==0){console.log(`\x1B[33m[VitNode]\x1B[0m No dictionary installed for text-search config(s) [${r.join(", ")}] - registering a "COPY = simple" fallback (search works, stemming is skipped).`);for(let o of r)try{await e.execute(Ls.raw(`CREATE TEXT SEARCH CONFIGURATION "${o}" (COPY = simple)`))}catch(a){if(a.code!=="42710")throw a}}},tt=async()=>{let e=await R({type:"api.config"});await oo(e.dbProvider);let t=await ro();try{await eo(e.dbProvider,{migrationsFolder:t})}catch(s){let n=s;console.error("\x1B[31m[VitNode] Database migration failed.\x1B[0m"),n.severity&&console.error(`\x1B[31mSeverity:\x1B[0m ${n.severity}`),n.code&&console.error(`\x1B[31mSQLSTATE:\x1B[0m ${n.code}`),console.error(`\x1B[31mMessage:\x1B[0m ${n.message??String(s)}`),n.detail&&console.error(`\x1B[31mDetail:\x1B[0m ${n.detail}`),n.hint&&console.error(`\x1B[31mHint:\x1B[0m ${n.hint}`),n.where&&console.error(`\x1B[31mWhere:\x1B[0m ${n.where}`),n.position&&console.error(`\x1B[31mPosition:\x1B[0m ${n.position}`),n.query&&console.error(`\x1B[31mFailing SQL:\x1B[0m
|
|
60
|
+
${n.query}`),s instanceof Error&&s.stack&&console.error(`
|
|
61
|
+
\x1B[90m${s.stack}\x1B[0m`),process.exit(1)}},st=async()=>{let t=(await R({type:"api.config"})).dbProvider,s=await R({type:"config",optional:!0}),[n]=await t.select({count:Zr()}).from(P).limit(1),r=s?.i18n?.locales?.length?s.i18n.locales.map(o=>({code:o.code,name:o.name,default:o.code===s.i18n.defaultLocale,protected:o.code===s.i18n.defaultLocale,timezone:s.i18n.timeZone??"UTC"})):[{code:"en",name:"English (USA)",default:!0,protected:!0,timezone:"America/New_York"}];if(await t.insert(U).values(r).onConflictDoNothing({target:U.code}),n.count===0){let o=await t.insert(P).values([{protected:!0,guest:!0},{protected:!0,default:!0},{protected:!0,color:"hsl(122, 80%, 45%)",allowUploadFiles:!0},{protected:!0,root:!0,color:"hsl(0, 100%, 50%)",allowUploadFiles:!0}]).returning({id:P.id});await t.insert(Be).values([{languageCode:"en",pluginCode:"core",itemId:o[0].id,value:"Guest",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:o[1].id,value:"Member",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:o[2].id,value:"Moderator",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:o[3].id,value:"Administrator",tableName:"core_roles",variable:"name"}]),await t.insert(Ee).values([{roleId:o[2].id,protected:!0,unrestricted:!0},{roleId:o[3].id,protected:!0,unrestricted:!0}]),await t.insert($e).values({roleId:o[3].id,protected:!0,unrestricted:!0})}},js=async({initMessage:e,flag:t})=>{let s=[];t==="--web"?s.push({label:"Prepare plugins files...",action:async()=>await de(t)}):t==="--api"?s.push({label:"Prepare plugins files...",action:async()=>await de(t)},{label:"Generate migrations...",action:et},{label:"Run migrations...",action:tt},{label:"Insert initial data...",action:st}):s.push({label:"Prepare plugins files...",action:async()=>await de(t)},{label:"Generate migrations...",action:et},{label:"Run migrations...",action:tt},{label:"Insert initial data...",action:st});for(let n=0;n<s.length;n++){let r=s[n],o=`[${n+1}/${s.length}]`;r.label==="Insert initial data..."?console.log(`
|
|
62
|
+
${e} ${o} ${r.label}`):console.log(`${e} ${o} ${r.label}`),await r.action()}console.log(`${e} \x1B[32mInitial setup completed.\x1B[0m`),process.exit(0)};io({quiet:!0});var X="\x1B[34m[VitNode]\x1B[0m",Os=process.argv[2],fe=process.argv[3];switch(Os){case"build":try{await kt(),console.log(`${X} \x1B[32mBuild completed successfully.\x1B[0m`),process.exit(0)}catch{process.exit(1)}break;case"dev":os({initMessage:X});break;case"i18n:check":await _s(fe);break;case"i18n:create":await xs();break;case"i18n:delete":await Es();break;case"i18n:update":await Ds();break;case"init":js({initMessage:X,flag:fe});break;case"migrate":await et(),fe==="--generate"&&(console.log(`${X} \x1B[32mDatabase migrations generated successfully.\x1B[0m`),process.exit(0)),await tt(),await st(),console.log(`${X} \x1B[32mDatabase migrated successfully.\x1B[0m`),process.exit(0);break;case"plugin":(fe==="--w"||fe==="--watch")&&Oe({initMessage:X});break;case"prepare-plugins":await de(fe),console.log(`${X} \x1B[32mPlugins prepared successfully.\x1B[0m`),process.exit(0);break;default:console.log(`${X} \x1B[31mCommand not found: "${Os??""}"\x1B[0m`),process.exit(1)}
|
|
9
63
|
/*! Bundled license information:
|
|
10
64
|
|
|
11
65
|
chokidar/index.js:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,CAAC;IAC7C,MAAM,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,EAAE,CAAC;IACjD,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC;IACjD,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC;CAClD;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,EAC/C,QAAQ,EACR,QAAQ,EACR,OAAY,EACZ,eAAe,EACf,cAAc,GACf,EAAE;
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,CAAC;IAC7C,MAAM,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,EAAE,CAAC;IACjD,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC;IACjD,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,UAAU,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,EAAE,CAAC;CAClD;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,EAC/C,QAAQ,EACR,QAAQ,EACR,OAAY,EACZ,eAAe,EACf,cAAc,GACf,EAAE;IAOD,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;IACzC,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,QAAQ,EAAE,CAAC,CAAC;IACZ,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;CAClC,GAAG,oBAAoB,CAwCvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"global.middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/middlewares/global.middleware.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"global.middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/middlewares/global.middleware.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{HTTPException}from"hono/http-exception";import{LocalEventsAdapter}from"../adapters/events/local.js";import{PostgresSearchAdapter}from"../adapters/search/postgres.js";import{CacheModel}from"../lib/cache.js";import{EmailModel}from"../models/email.js";import{EventsModel}from"../models/events.js";import{I18nModel}from"../models/i18n.js";import{QueueModel}from"../models/queue.js";import{SearchModel}from"../models/search.js";import{SessionModel}from"../models/session.js";import{SessionAdminModel}from"../models/session-admin.js";import{StorageModel}from"../models/storage.js";import{CONFIG}from"../../lib/config.js";import{collectLocaleCodes}from"../../lib/i18n/load-messages.js";import{
|
|
1
|
+
import{HTTPException}from"hono/http-exception";import{LocalEventsAdapter}from"../adapters/events/local.js";import{PostgresSearchAdapter}from"../adapters/search/postgres.js";import{CacheModel}from"../lib/cache.js";import{EmailModel}from"../models/email.js";import{EventsModel}from"../models/events.js";import{I18nModel}from"../models/i18n.js";import{QueueModel}from"../models/queue.js";import{SearchModel}from"../models/search.js";import{SessionModel}from"../models/session.js";import{SessionAdminModel}from"../models/session-admin.js";import{StorageModel}from"../models/storage.js";import{CONFIG}from"../../lib/config.js";import{collectLocaleCodes}from"../../lib/i18n/load-messages.js";import{buildApiMessagesSources}from"../../lib/i18n/sources.js";import{realtime}from"../../ws/registry.js";import{collectCronJobs}from"../lib/cron.js";import{loggerMiddleware}from"../lib/logger-middleware.js";import{normalizePermissionStaffModules}from"../lib/permission-staff.js";export const globalMiddleware=({authorization,metadata,email,dbProvider,captcha,cron,events,plugins,i18n,search,storage,cacheClient})=>{const pluginsMetadata=plugins.map(plugin=>({id:plugin.pluginId}));const messagesSources=buildApiMessagesSources({appMessages:i18n?.messages,plugins});const i18nMetadata={defaultLocale:i18n?.defaultLocale??"en",locales:i18n?.locales??collectLocaleCodes(messagesSources).map(code=>({code,name:code})),sources:messagesSources};const cronMetadata=collectCronJobs(plugins);const eventsMetadata=plugins.flatMap(plugin=>(plugin.events??[]).map(listener=>({...listener,pluginId:plugin.pluginId})));const queueMetadata=plugins.flatMap(plugin=>(plugin.queueTasks??[]).map(task=>({pluginId:plugin.pluginId,module:task.module,name:task.name,handler:task.handler,description:task.description,maxAttempts:task.maxAttempts})));const webSocketsMetadata=plugins.flatMap(plugin=>(plugin.webSockets??[]).map(webSocket=>({...webSocket,pluginId:plugin.pluginId})));const searchIndexersMetadata=plugins.flatMap(plugin=>(plugin.searchIndexers??[]).map(indexer=>({...indexer,pluginId:plugin.pluginId})));const permissionStaffMetadata=plugins.map(plugin=>({pluginId:plugin.pluginId,admin:normalizePermissionStaffModules(plugin.permissionStaff?.admin),moderator:normalizePermissionStaffModules(plugin.permissionStaff?.moderator)}));const ipHeaderKeys=["x-forwarded-for","x-real-ip","cf-connecting-ip","x-client-ip","x-forwarded","x-cluster-client-ip","forwarded-for","forwarded","via","remote-addr","client-ip","ip","x-ip","true-client-ip","fastly-client-ip","x-fastly-client-ip"];return async(c,next)=>{let ipAddress;for(const key of ipHeaderKeys){ipAddress=c.req.header(key);if(ipAddress)break;ipAddress=c.req.raw.headers.get(key)??undefined;if(ipAddress)break}c.set("ipAddress",ipAddress??"127.0.0.1");c.set("db",dbProvider);c.set("cache",new CacheModel(cacheClient,c));c.set("email",new EmailModel(c));c.set("events",new EventsModel(c));c.set("i18n",new I18nModel(c));c.set("queue",new QueueModel(c));c.set("search",new SearchModel(c));c.set("storage",new StorageModel(c));c.set("realtime",realtime);c.set("core",{i18n:i18nMetadata,metadata,email,events:{adapter:events?.adapter??LocalEventsAdapter(),listeners:eventsMetadata},search:{adapter:search?.adapter??PostgresSearchAdapter()},searchIndexers:searchIndexersMetadata,storage,authorization:{cookieName:authorization?.cookieName??"vitnode_auth",cookie_expires:authorization?.cookieExpires??1e3*60*60*24*90,ssoAdapters:authorization?.ssoAdapters??[],deviceCookieName:authorization?.deviceCookieName??"vitnode_device",deviceCookieExpires:authorization?.deviceCookieExpires??1e3*60*60*24*365,adminCookieName:authorization?.adminCookieName??"vitnode_auth_admin",adminCookieExpires:authorization?.adminCookieExpires??1e3*60*60*24*1,cookieSecure:authorization?.cookieSecure??true},captcha,cronSecret:CONFIG.cronJobSecret,hasCronAdapter:!!cron,plugins:pluginsMetadata,cron:cronMetadata,queue:queueMetadata,webSockets:webSocketsMetadata,permissionStaff:permissionStaffMetadata});const user=await new SessionModel(c).getUser();c.set("user",user);c.set("admin",null);c.set("log",loggerMiddleware(c));await next()}};export const globalAdminMiddleware=()=>{return async(c,next)=>{const user=await new SessionAdminModel(c).getUser();if(!user)throw new HTTPException(403);c.set("admin",{user});await next()}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages-provider.d.ts","sourceRoot":"","sources":["../../../src/components/languages-provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrD,eAAO,MAAM,iBAAiB,GAAI,0BAG/B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B,
|
|
1
|
+
{"version":3,"file":"languages-provider.d.ts","sourceRoot":"","sources":["../../../src/components/languages-provider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAIrD,eAAO,MAAM,iBAAiB,GAAI,0BAG/B;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,EAAE,YAAY,EAAE,CAAC;CAC3B,sBAWA,CAAC;AAEF,eAAO,MAAM,YAAY,QAAO,YAAY,EAAiC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";import{jsx as _jsx}from"react/jsx-runtime";import React from"react";const LanguagesContext=React.createContext([]);export const LanguagesProvider=({children,languages})=>_jsx(LanguagesContext.Provider,{value:
|
|
1
|
+
"use client";import{jsx as _jsx}from"react/jsx-runtime";import React from"react";const LanguagesContext=React.createContext([]);export const LanguagesProvider=({children,languages})=>{const enabled=React.useMemo(()=>languages.filter(language=>language.enabled!==false),[languages]);return _jsx(LanguagesContext.Provider,{value:enabled,children:children})};export const useLanguages=()=>React.use(LanguagesContext);
|
package/dist/src/config.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const CONFIG_PLUGIN={pluginId:"@vitnode/core",version:"1.2.0-canary.
|
|
1
|
+
export const CONFIG_PLUGIN={pluginId:"@vitnode/core",version:"1.2.0-canary.78"};
|
|
@@ -110,23 +110,6 @@ export declare const core_languages: Omit<import("drizzle-orm/pg-core").PgTableW
|
|
|
110
110
|
identity: undefined;
|
|
111
111
|
generated: undefined;
|
|
112
112
|
}, {}, {}>;
|
|
113
|
-
enabled: import("drizzle-orm/pg-core").PgColumn<{
|
|
114
|
-
name: "enabled";
|
|
115
|
-
tableName: "core_languages";
|
|
116
|
-
dataType: "boolean";
|
|
117
|
-
columnType: "PgBoolean";
|
|
118
|
-
data: boolean;
|
|
119
|
-
driverParam: boolean;
|
|
120
|
-
notNull: true;
|
|
121
|
-
hasDefault: true;
|
|
122
|
-
isPrimaryKey: false;
|
|
123
|
-
isAutoincrement: false;
|
|
124
|
-
hasRuntimeDefault: false;
|
|
125
|
-
enumValues: undefined;
|
|
126
|
-
baseColumn: never;
|
|
127
|
-
identity: undefined;
|
|
128
|
-
generated: undefined;
|
|
129
|
-
}, {}, {}>;
|
|
130
113
|
createdAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
131
114
|
name: "createdAt";
|
|
132
115
|
tableName: "core_languages";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../../src/database/languages.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../../src/database/languages.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAqBd,CAAC;AAEd,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAiBpB,CAAC;AAEd,eAAO,MAAM,8BAA8B;;EAQ1C,CAAC"}
|