@vitnode/core 1.2.0-canary.53 → 1.2.0-canary.54

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.
Files changed (179) hide show
  1. package/dist/scripts/prepare-database.d.ts +0 -1
  2. package/dist/scripts/prepare-database.d.ts.map +1 -1
  3. package/dist/scripts/scripts.js +4 -4
  4. package/dist/src/api/adapters/cron/node-cron.adapter.d.ts +3 -0
  5. package/dist/src/api/adapters/cron/node-cron.adapter.d.ts.map +1 -0
  6. package/dist/src/api/adapters/cron/node-cron.adapter.js +11 -0
  7. package/dist/src/api/config.d.ts.map +1 -1
  8. package/dist/src/api/config.js +21 -9
  9. package/dist/src/api/lib/cron.d.ts +18 -0
  10. package/dist/src/api/lib/cron.d.ts.map +1 -0
  11. package/dist/src/api/lib/cron.js +22 -0
  12. package/dist/src/api/lib/module.d.ts +4 -1
  13. package/dist/src/api/lib/module.d.ts.map +1 -1
  14. package/dist/src/api/lib/module.js +3 -2
  15. package/dist/src/api/lib/plugin.d.ts +2 -0
  16. package/dist/src/api/lib/plugin.d.ts.map +1 -1
  17. package/dist/src/api/lib/plugin.js +9 -1
  18. package/dist/src/api/middlewares/cron-auth.middleware.d.ts +3 -0
  19. package/dist/src/api/middlewares/cron-auth.middleware.d.ts.map +1 -0
  20. package/dist/src/api/middlewares/cron-auth.middleware.js +19 -0
  21. package/dist/src/api/middlewares/global.middleware.d.ts +6 -0
  22. package/dist/src/api/middlewares/global.middleware.d.ts.map +1 -1
  23. package/dist/src/api/middlewares/global.middleware.js +33 -22
  24. package/dist/src/api/models/user/sign-up.d.ts +1 -1
  25. package/dist/src/api/models/user.d.ts +1 -1
  26. package/dist/src/api/modules/admin/admin.module.d.ts +163 -1
  27. package/dist/src/api/modules/admin/admin.module.d.ts.map +1 -1
  28. package/dist/src/api/modules/admin/admin.module.js +6 -3
  29. package/dist/src/api/modules/admin/advanced/advanced.admin.module.d.ts +164 -0
  30. package/dist/src/api/modules/admin/advanced/advanced.admin.module.d.ts.map +1 -0
  31. package/dist/src/api/modules/admin/advanced/advanced.admin.module.js +11 -0
  32. package/dist/src/api/modules/admin/advanced/cron/cron.admin.module.d.ts +164 -0
  33. package/dist/src/api/modules/admin/advanced/cron/cron.admin.module.d.ts.map +1 -0
  34. package/dist/src/api/modules/admin/advanced/cron/cron.admin.module.js +12 -0
  35. package/dist/src/api/modules/admin/advanced/cron/routes/get.route.d.ts +98 -0
  36. package/dist/src/api/modules/admin/advanced/cron/routes/get.route.d.ts.map +1 -0
  37. package/dist/src/api/modules/admin/advanced/cron/routes/get.route.js +66 -0
  38. package/dist/src/api/modules/admin/advanced/cron/routes/run.route.d.ts +70 -0
  39. package/dist/src/api/modules/admin/advanced/cron/routes/run.route.d.ts.map +1 -0
  40. package/dist/src/api/modules/admin/advanced/cron/routes/run.route.js +95 -0
  41. package/dist/src/api/modules/admin/debug/debug.admin.module.js +1 -1
  42. package/dist/src/api/modules/admin/debug/routes/logs.route.js +1 -1
  43. package/dist/src/api/modules/admin/routes/session.route.js +1 -1
  44. package/dist/src/api/modules/admin/users/routes/list.route.js +1 -1
  45. package/dist/src/api/modules/admin/users/routes/users.route.d.ts +3 -3
  46. package/dist/src/api/modules/admin/users/routes/users.route.js +1 -1
  47. package/dist/src/api/modules/admin/users/users.admin.module.js +1 -1
  48. package/dist/src/api/modules/cron/cron/clean.cron.d.ts +2 -0
  49. package/dist/src/api/modules/cron/cron/clean.cron.d.ts.map +1 -0
  50. package/dist/src/api/modules/cron/cron/clean.cron.js +24 -0
  51. package/dist/src/api/modules/cron/cron.module.d.ts +26 -0
  52. package/dist/src/api/modules/cron/cron.module.d.ts.map +1 -0
  53. package/dist/src/api/modules/cron/cron.module.js +14 -0
  54. package/dist/src/api/modules/cron/helpers/process-cron-jobs.d.ts +36 -0
  55. package/dist/src/api/modules/cron/helpers/process-cron-jobs.d.ts.map +1 -0
  56. package/dist/src/api/modules/cron/helpers/process-cron-jobs.js +72 -0
  57. package/dist/src/api/modules/cron/routes/cron.route.d.ts +27 -0
  58. package/dist/src/api/modules/cron/routes/cron.route.d.ts.map +1 -0
  59. package/dist/src/api/modules/cron/routes/cron.route.js +95 -0
  60. package/dist/src/api/modules/middleware/middleware.module.js +1 -1
  61. package/dist/src/api/modules/middleware/route.js +1 -1
  62. package/dist/src/api/modules/users/routes/change-password.route.js +1 -1
  63. package/dist/src/api/modules/users/routes/reset-passowrd.route.js +1 -1
  64. package/dist/src/api/modules/users/routes/session.route.js +1 -1
  65. package/dist/src/api/modules/users/routes/sign-in.route.js +1 -1
  66. package/dist/src/api/modules/users/routes/sign-out.route.js +1 -1
  67. package/dist/src/api/modules/users/routes/sign-up.route.js +1 -1
  68. package/dist/src/api/modules/users/routes/test.route.js +1 -1
  69. package/dist/src/api/modules/users/sso/routes/callback.route.js +1 -1
  70. package/dist/src/api/modules/users/sso/routes/create-url.route.js +1 -1
  71. package/dist/src/api/modules/users/sso/sso.module.js +1 -1
  72. package/dist/src/api/modules/users/users.module.js +1 -1
  73. package/dist/src/api/plugin.d.ts.map +1 -1
  74. package/dist/src/api/plugin.js +4 -2
  75. package/dist/src/app_admin/core/advanced/cron/page.d.ts +11 -0
  76. package/dist/src/app_admin/core/advanced/cron/page.d.ts.map +1 -0
  77. package/dist/src/app_admin/core/advanced/cron/page.js +42 -0
  78. package/dist/src/components/switchers/langs/{language-swietcher.d.ts → language-switcher.d.ts} +1 -1
  79. package/dist/src/components/switchers/langs/language-switcher.d.ts.map +1 -0
  80. package/dist/src/components/tiptap/extension.d.ts +4 -0
  81. package/dist/src/components/tiptap/extension.d.ts.map +1 -0
  82. package/dist/src/components/tiptap/extension.js +26 -0
  83. package/dist/src/components/tiptap/toolbar/actions/bold-action.d.ts +2 -0
  84. package/dist/src/components/tiptap/toolbar/actions/bold-action.d.ts.map +1 -0
  85. package/dist/src/components/tiptap/toolbar/actions/bold-action.js +39 -0
  86. package/dist/src/components/tiptap/toolbar/actions/headings-action.d.ts +2 -0
  87. package/dist/src/components/tiptap/toolbar/actions/headings-action.d.ts.map +1 -0
  88. package/dist/src/components/tiptap/toolbar/actions/headings-action.js +94 -0
  89. package/dist/src/components/tiptap/toolbar/actions/italic-action.d.ts +2 -0
  90. package/dist/src/components/tiptap/toolbar/actions/italic-action.d.ts.map +1 -0
  91. package/dist/src/components/tiptap/toolbar/actions/italic-action.js +38 -0
  92. package/dist/src/components/tiptap/toolbar/actions/list-action.d.ts +2 -0
  93. package/dist/src/components/tiptap/toolbar/actions/list-action.d.ts.map +1 -0
  94. package/dist/src/components/tiptap/toolbar/actions/list-action.js +60 -0
  95. package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.d.ts +2 -0
  96. package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.d.ts.map +1 -0
  97. package/dist/src/components/tiptap/toolbar/actions/text-format-more/text-format-more.js +59 -0
  98. package/dist/src/components/tiptap/toolbar/actions/underline-action.d.ts +2 -0
  99. package/dist/src/components/tiptap/toolbar/actions/underline-action.d.ts.map +1 -0
  100. package/dist/src/components/tiptap/toolbar/actions/underline-action.js +38 -0
  101. package/dist/src/components/tiptap/toolbar/actions/undo-redo-actions.d.ts +2 -0
  102. package/dist/src/components/tiptap/toolbar/actions/undo-redo-actions.d.ts.map +1 -0
  103. package/dist/src/components/tiptap/toolbar/actions/undo-redo-actions.js +63 -0
  104. package/dist/src/components/tiptap/toolbar/actions/utils/tooltip-shortcut.d.ts +4 -0
  105. package/dist/src/components/tiptap/toolbar/actions/utils/tooltip-shortcut.d.ts.map +1 -0
  106. package/dist/src/components/tiptap/toolbar/actions/utils/tooltip-shortcut.js +11 -0
  107. package/dist/src/components/tiptap/toolbar/tiptap-toolbar.d.ts +5 -0
  108. package/dist/src/components/tiptap/toolbar/tiptap-toolbar.d.ts.map +1 -0
  109. package/dist/src/components/tiptap/toolbar/tiptap-toolbar.js +35 -0
  110. package/dist/src/components/tiptap/toolbar/use-toolbar-editor.d.ts +9 -0
  111. package/dist/src/components/tiptap/toolbar/use-toolbar-editor.d.ts.map +1 -0
  112. package/dist/src/components/tiptap/toolbar/use-toolbar-editor.js +5 -0
  113. package/dist/src/components/ui/button-client.d.ts.map +1 -1
  114. package/dist/src/components/ui/button-client.js +1 -1
  115. package/dist/src/components/ui/button.js +1 -1
  116. package/dist/src/components/ui/editor-content.d.ts +4 -0
  117. package/dist/src/components/ui/editor-content.d.ts.map +1 -0
  118. package/dist/src/components/ui/editor-content.js +10 -0
  119. package/dist/src/components/ui/editor.d.ts +6 -0
  120. package/dist/src/components/ui/editor.d.ts.map +1 -0
  121. package/dist/src/components/ui/editor.js +35 -0
  122. package/dist/src/components/ui/sidebar.js +14 -14
  123. package/dist/src/components/ui/table.js +1 -1
  124. package/dist/src/components/ui/tooltip.d.ts +4 -1
  125. package/dist/src/components/ui/tooltip.d.ts.map +1 -1
  126. package/dist/src/components/ui/tooltip.js +18 -2
  127. package/dist/src/database/cron.d.ts +171 -0
  128. package/dist/src/database/cron.d.ts.map +1 -0
  129. package/dist/src/database/cron.js +22 -0
  130. package/dist/src/database/users.d.ts +2 -2
  131. package/dist/src/database/users.js +1 -1
  132. package/dist/src/lib/api/get-next-cron-run-date.d.ts +2 -0
  133. package/dist/src/lib/api/get-next-cron-run-date.d.ts.map +1 -0
  134. package/dist/src/lib/api/get-next-cron-run-date.js +14 -0
  135. package/dist/src/lib/api/get-next-cron-run-date.test.d.ts +2 -0
  136. package/dist/src/lib/api/get-next-cron-run-date.test.d.ts.map +1 -0
  137. package/dist/src/lib/api/get-next-cron-run-date.test.js +55 -0
  138. package/dist/src/lib/api/should-cron-job-run.d.ts +2 -0
  139. package/dist/src/lib/api/should-cron-job-run.d.ts.map +1 -0
  140. package/dist/src/lib/api/should-cron-job-run.js +16 -0
  141. package/dist/src/lib/api/should-cron-job-run.test.d.ts +2 -0
  142. package/dist/src/lib/api/should-cron-job-run.test.d.ts.map +1 -0
  143. package/dist/src/lib/api/should-cron-job-run.test.js +213 -0
  144. package/dist/src/lib/config.d.ts +1 -0
  145. package/dist/src/lib/config.d.ts.map +1 -1
  146. package/dist/src/lib/config.js +7 -5
  147. package/dist/src/lib/ctrl-or-command-character.d.ts +2 -0
  148. package/dist/src/lib/ctrl-or-command-character.d.ts.map +1 -0
  149. package/dist/src/lib/ctrl-or-command-character.js +9 -0
  150. package/dist/src/lib/navigation.d.ts +1 -1
  151. package/dist/src/lib/navigation.d.ts.map +1 -1
  152. package/dist/src/views/admin/layouts/admin-layout.js +1 -1
  153. package/dist/src/views/admin/layouts/sidebar/nav/item.d.ts.map +1 -1
  154. package/dist/src/views/admin/layouts/sidebar/nav/item.js +0 -3
  155. package/dist/src/views/admin/layouts/sidebar/nav/nav.d.ts.map +1 -1
  156. package/dist/src/views/admin/layouts/sidebar/nav/nav.js +12 -1
  157. package/dist/src/views/admin/views/core/advanced/cron/cron-table-view.d.ts +5 -0
  158. package/dist/src/views/admin/views/core/advanced/cron/cron-table-view.d.ts.map +1 -0
  159. package/dist/src/views/admin/views/core/advanced/cron/cron-table-view.js +97 -0
  160. package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.d.ts +4 -0
  161. package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.d.ts.map +1 -0
  162. package/dist/src/views/admin/views/core/advanced/cron/run-action/mutation-api.js +23 -0
  163. package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.d.ts +4 -0
  164. package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.d.ts.map +1 -0
  165. package/dist/src/views/admin/views/core/advanced/cron/run-action/run-action.js +37 -0
  166. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.d.ts.map +1 -1
  167. package/dist/src/views/admin/views/core/debug/system-logs/actions/more/more.js +11 -20
  168. package/dist/src/views/admin/views/core/test.d.ts.map +1 -1
  169. package/dist/src/views/admin/views/core/test.js +116 -106
  170. package/dist/src/views/layouts/theme/header/header.js +1 -1
  171. package/dist/src/vitnode.config.d.ts +2 -0
  172. package/dist/src/vitnode.config.d.ts.map +1 -1
  173. package/dist/tsconfig.tsbuildinfo +1 -1
  174. package/package.json +32 -26
  175. package/src/app_admin/core/advanced/cron/page.tsx +41 -0
  176. package/src/locales/en.json +43 -0
  177. package/src/tiptap.css +20 -0
  178. package/dist/src/components/switchers/langs/language-swietcher.d.ts.map +0 -1
  179. /package/dist/src/components/switchers/langs/{language-swietcher.js → language-switcher.js} +0 -0
@@ -1,6 +1,5 @@
1
1
  export declare const generateDatabaseMigrations: () => Promise<void>;
2
2
  export declare const runMigrations: () => Promise<void>;
3
- export declare const runPush: () => Promise<void>;
4
3
  export declare const initialDataForDatabase: () => Promise<void>;
5
4
  export declare const prepareDatabase: ({ initMessage, flag, }: {
6
5
  flag: string;
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-database.d.ts","sourceRoot":"","sources":["../../scripts/prepare-database.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,0BAA0B,qBAQtC,CAAC;AAEF,eAAO,MAAM,aAAa,qBAOzB,CAAC;AAEF,eAAO,MAAM,OAAO,qBAOnB,CAAC;AAEF,eAAO,MAAM,sBAAsB,qBA2GlC,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,wBAGnC;IACD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB,mBA+DA,CAAC"}
1
+ {"version":3,"file":"prepare-database.d.ts","sourceRoot":"","sources":["../../scripts/prepare-database.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,0BAA0B,qBAQtC,CAAC;AAEF,eAAO,MAAM,aAAa,qBAOzB,CAAC;AAEF,eAAO,MAAM,sBAAsB,qBAiHlC,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,wBAGnC;IACD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;CACrB,mBAgEA,CAAC"}
@@ -3,10 +3,10 @@ import 'tsx/esm';
3
3
  import { createRequire } from 'module';
4
4
  const require = createRequire(import.meta.url);
5
5
 
6
- var Gt=Object.create;var qe=Object.defineProperty;var qt=Object.getOwnPropertyDescriptor;var Bt=Object.getOwnPropertyNames;var Jt=Object.getPrototypeOf,Qt=Object.prototype.hasOwnProperty;var re=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,s)=>(typeof require<"u"?require:t)[s]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Be=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Xt=(e,t,s,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of Bt(t))!Qt.call(e,r)&&r!==s&&qe(e,r,{get:()=>t[r],enumerable:!(i=qt(t,r))||i.enumerable});return e};var Zt=(e,t,s)=>(s=e!=null?Gt(Jt(e)):{},Xt(t||!e||!e.__esModule?qe(s,"default",{value:e,enumerable:!0}):s,e));var Je=Be((Vr,es)=>{es.exports={name:"dotenv",version:"17.2.1",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard",pretest:"npm run lint && npm run dts-check",test:"tap run --allow-empty-coverage --disable-coverage --timeout=60000","test:coverage":"tap run --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},homepage:"https://github.com/motdotla/dotenv#readme",funding:"https://dotenvx.com",keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@types/node":"^18.11.3",decache:"^4.6.2",sinon:"^14.0.1",standard:"^17.0.0","standard-version":"^9.5.0",tap:"^19.2.0",typescript:"^4.8.4"},engines:{node:">=12"},browser:{fs:!1}}});var st=Be((Yr,k)=>{"use strict";var Ie=re("fs"),ie=re("path"),ts=re("os"),ss=re("crypto"),rs=Je(),Te=rs.version,Qe=["\u{1F510} encrypt with Dotenvx: https://dotenvx.com","\u{1F510} prevent committing .env to code: https://dotenvx.com/precommit","\u{1F510} prevent building .env in docker: https://dotenvx.com/prebuild","\u{1F4E1} observe env with Radar: https://dotenvx.com/radar","\u{1F4E1} auto-backup env with Radar: https://dotenvx.com/radar","\u{1F4E1} version env with Radar: https://dotenvx.com/radar","\u{1F6E0}\uFE0F run anywhere with `dotenvx run -- yourcommand`","\u2699\uFE0F specify custom .env file path with { path: '/custom/path/.env' }","\u2699\uFE0F enable debug logging with { debug: true }","\u2699\uFE0F override existing env vars with { override: true }","\u2699\uFE0F suppress all logs with { quiet: true }","\u2699\uFE0F write to custom object with { processEnv: myObject }","\u2699\uFE0F load multiple .env files with { path: ['.env.local', '.env'] }"];function is(){return Qe[Math.floor(Math.random()*Qe.length)]}function W(e){return typeof e=="string"?!["false","0","no","off",""].includes(e.toLowerCase()):!!e}function ns(){return process.stdout.isTTY}function os(e){return ns()?`\x1B[2m${e}\x1B[0m`:e}var as=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function cs(e){let t={},s=e.toString();s=s.replace(/\r\n?/mg,`
7
- `);let i;for(;(i=as.exec(s))!=null;){let r=i[1],n=i[2]||"";n=n.trim();let o=n[0];n=n.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),o==='"'&&(n=n.replace(/\\n/g,`
8
- `),n=n.replace(/\\r/g,"\r")),t[r]=n}return t}function ls(e){e=e||{};let t=tt(e);e.path=t;let s=b.configDotenv(e);if(!s.parsed){let o=new Error(`MISSING_DATA: Cannot parse ${t} for an unknown reason`);throw o.code="MISSING_DATA",o}let i=et(e).split(","),r=i.length,n;for(let o=0;o<r;o++)try{let a=i[o].trim(),c=us(s,a);n=b.decrypt(c.ciphertext,c.key);break}catch(a){if(o+1>=r)throw a}return b.parse(n)}function ds(e){console.error(`[dotenv@${Te}][WARN] ${e}`)}function U(e){console.log(`[dotenv@${Te}][DEBUG] ${e}`)}function Ze(e){console.log(`[dotenv@${Te}] ${e}`)}function et(e){return e&&e.DOTENV_KEY&&e.DOTENV_KEY.length>0?e.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function us(e,t){let s;try{s=new URL(t)}catch(a){if(a.code==="ERR_INVALID_URL"){let c=new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development");throw c.code="INVALID_DOTENV_KEY",c}throw a}let i=s.password;if(!i){let a=new Error("INVALID_DOTENV_KEY: Missing key part");throw a.code="INVALID_DOTENV_KEY",a}let r=s.searchParams.get("environment");if(!r){let a=new Error("INVALID_DOTENV_KEY: Missing environment part");throw a.code="INVALID_DOTENV_KEY",a}let n=`DOTENV_VAULT_${r.toUpperCase()}`,o=e.parsed[n];if(!o){let a=new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);throw a.code="NOT_FOUND_DOTENV_ENVIRONMENT",a}return{ciphertext:o,key:i}}function tt(e){let t=null;if(e&&e.path&&e.path.length>0)if(Array.isArray(e.path))for(let s of e.path)Ie.existsSync(s)&&(t=s.endsWith(".vault")?s:`${s}.vault`);else t=e.path.endsWith(".vault")?e.path:`${e.path}.vault`;else t=ie.resolve(process.cwd(),".env.vault");return Ie.existsSync(t)?t:null}function Xe(e){return e[0]==="~"?ie.join(ts.homedir(),e.slice(1)):e}function fs(e){let t=W(process.env.DOTENV_CONFIG_DEBUG||e&&e.debug),s=W(process.env.DOTENV_CONFIG_QUIET||e&&e.quiet);(t||!s)&&Ze("Loading env from encrypted .env.vault");let i=b._parseVault(e),r=process.env;return e&&e.processEnv!=null&&(r=e.processEnv),b.populate(r,i,e),{parsed:i}}function hs(e){let t=ie.resolve(process.cwd(),".env"),s="utf8",i=process.env;e&&e.processEnv!=null&&(i=e.processEnv);let r=W(i.DOTENV_CONFIG_DEBUG||e&&e.debug),n=W(i.DOTENV_CONFIG_QUIET||e&&e.quiet);e&&e.encoding?s=e.encoding:r&&U("No encoding is specified. UTF-8 is used by default");let o=[t];if(e&&e.path)if(!Array.isArray(e.path))o=[Xe(e.path)];else{o=[];for(let l of e.path)o.push(Xe(l))}let a,c={};for(let l of o)try{let d=b.parse(Ie.readFileSync(l,{encoding:s}));b.populate(c,d,e)}catch(d){r&&U(`Failed to load ${l} ${d.message}`),a=d}let u=b.populate(i,c,e);if(r=W(i.DOTENV_CONFIG_DEBUG||r),n=W(i.DOTENV_CONFIG_QUIET||n),r||!n){let l=Object.keys(u).length,d=[];for(let f of o)try{let p=ie.relative(process.cwd(),f);d.push(p)}catch(p){r&&U(`Failed to load ${f} ${p.message}`),a=p}Ze(`injecting env (${l}) from ${d.join(",")} ${os(`-- tip: ${is()}`)}`)}return a?{parsed:c,error:a}:{parsed:c}}function ps(e){if(et(e).length===0)return b.configDotenv(e);let t=tt(e);return t?b._configVault(e):(ds(`You set DOTENV_KEY but you are missing a .env.vault file at ${t}. Did you forget to build it?`),b.configDotenv(e))}function ms(e,t){let s=Buffer.from(t.slice(-64),"hex"),i=Buffer.from(e,"base64"),r=i.subarray(0,12),n=i.subarray(-16);i=i.subarray(12,-16);try{let o=ss.createDecipheriv("aes-256-gcm",s,r);return o.setAuthTag(n),`${o.update(i)}${o.final()}`}catch(o){let a=o instanceof RangeError,c=o.message==="Invalid key length",u=o.message==="Unsupported state or unable to authenticate data";if(a||c){let l=new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");throw l.code="INVALID_DOTENV_KEY",l}else if(u){let l=new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");throw l.code="DECRYPTION_FAILED",l}else throw o}}function gs(e,t,s={}){let i=!!(s&&s.debug),r=!!(s&&s.override),n={};if(typeof t!="object"){let o=new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");throw o.code="OBJECT_REQUIRED",o}for(let o of Object.keys(t))Object.prototype.hasOwnProperty.call(e,o)?(r===!0&&(e[o]=t[o],n[o]=t[o]),i&&U(r===!0?`"${o}" is already defined and WAS overwritten`:`"${o}" is already defined and was NOT overwritten`)):(e[o]=t[o],n[o]=t[o]);return n}var b={configDotenv:hs,_configVault:fs,_parseVault:ls,config:ps,decrypt:ms,parse:cs,populate:gs};k.exports.configDotenv=b.configDotenv;k.exports._configVault=b._configVault;k.exports._parseVault=b._parseVault;k.exports.config=b.config;k.exports.decrypt=b.decrypt;k.exports.parse=b.parse;k.exports.populate=b.populate;k.exports=b});var Ut=Zt(st(),1);import{existsSync as I,mkdirSync as br,readdirSync as Er,readFileSync as Dr,unlinkSync as xr}from"fs";import{basename as Rt,join as g,relative as At}from"path";import{stat as Hs}from"fs";import{stat as Gs,readdir as qs}from"fs/promises";import{EventEmitter as Bs}from"events";import*as h from"path";import{stat as _s,lstat as rt,readdir as ws,realpath as ys}from"fs/promises";import{Readable as vs}from"stream";import{resolve as it,relative as bs,join as Es,sep as Ds}from"path";var P={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},Re={root:".",fileFilter:e=>!0,directoryFilter:e=>!0,type:P.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(Re);var ct="READDIRP_RECURSIVE_ERROR",xs=new Set(["ENOENT","EPERM","EACCES","ELOOP",ct]),nt=[P.DIR_TYPE,P.EVERYTHING_TYPE,P.FILE_DIR_TYPE,P.FILE_TYPE],Ps=new Set([P.DIR_TYPE,P.EVERYTHING_TYPE,P.FILE_DIR_TYPE]),Ns=new Set([P.EVERYTHING_TYPE,P.FILE_DIR_TYPE,P.FILE_TYPE]),Is=e=>xs.has(e.code),Ts=process.platform==="win32",ot=e=>!0,at=e=>{if(e===void 0)return ot;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(i=>s.basename===i)}return ot},Ae=class extends vs{constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark});let s={...Re,...t},{root:i,type:r}=s;this._fileFilter=at(s.fileFilter),this._directoryFilter=at(s.directoryFilter);let n=s.lstat?rt:_s;Ts?this._stat=o=>n(o,{bigint:!0}):this._stat=n,this._maxDepth=s.depth??Re.depth,this._wantsDir=r?Ps.has(r):!1,this._wantsFile=r?Ns.has(r):!1,this._wantsEverything=r===P.EVERYTHING_TYPE,this._root=it(i),this._isDirent=!s.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(i,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,i=s&&s.files;if(i&&i.length>0){let{path:r,depth:n}=s,o=i.splice(0,t).map(c=>this._formatEntry(c,r)),a=await Promise.all(o);for(let c of a){if(!c)continue;if(this.destroyed)return;let u=await this._getEntryType(c);u==="directory"&&this._directoryFilter(c)?(n<=this._maxDepth&&this.parents.push(this._exploreDir(c.fullPath,n+1)),this._wantsDir&&(this.push(c),t--)):(u==="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 i;try{i=await ws(t,this._rdOptions)}catch(r){this._onError(r)}return{files:i,depth:s,path:t}}async _formatEntry(t,s){let i,r=this._isDirent?t.name:t;try{let n=it(Es(s,r));i={path:bs(this._root,n),fullPath:n,basename:r},i[this._statsProp]=this._isDirent?t:await this._stat(n)}catch(n){this._onError(n);return}return i}_onError(t){Is(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 i=t.fullPath;try{let r=await ys(i),n=await rt(r);if(n.isFile())return"file";if(n.isDirectory()){let o=r.length;if(i.startsWith(r)&&i.substr(o,1)===Ds){let a=new Error(`Circular symlink detected: "${i}" points to "${r}"`);return a.code=ct,this._onError(a)}return"directory"}}catch(r){return this._onError(r),""}}}_includeAsFile(t){let s=t&&t[this._statsProp];return s&&this._wantsEverything&&!s.isDirectory()}};function lt(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&&!nt.includes(s))throw new Error(`readdirp: Invalid type passed. Use one of ${nt.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return t.root=e,new Ae(t)}import{watchFile as Rs,unwatchFile as dt,watch as As}from"fs";import{open as ks,stat as ft,lstat as Cs,realpath as ke}from"fs/promises";import*as w from"path";import{type as Ss}from"os";var Fs="data",Fe="end",ht="close",le=()=>{};var de=process.platform,Le=de==="win32",Ls=de==="darwin",Os=de==="linux",$s=de==="freebsd",pt=Ss()==="OS400",y={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},N=y,js="watch",Ws={lstat:Cs,stat:ft},O="listeners",ne="errHandlers",M="rawEmitters",Ms=[O,ne,M],Vs=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=>Vs.has(w.extname(e).slice(1).toLowerCase()),Se=(e,t)=>{e instanceof Set?e.forEach(t):t(e)},K=(e,t,s)=>{let i=e[t];i instanceof Set||(e[t]=i=new Set([i])),i.add(s)},zs=e=>t=>{let s=e[t];s instanceof Set?s.clear():delete e[t]},H=(e,t,s)=>{let i=e[t];i instanceof Set?i.delete(s):i===s&&delete e[t]},mt=e=>e instanceof Set?e.size===0:!e,oe=new Map;function ut(e,t,s,i,r){let n=(o,a)=>{s(e),r(o,a,{watchedPath:e}),a&&e!==a&&ae(w.resolve(e,a),O,w.join(e,a))};try{return As(e,{persistent:t.persistent},n)}catch(o){i(o);return}}var ae=(e,t,s,i,r)=>{let n=oe.get(e);n&&Se(n[t],o=>{o(s,i,r)})},Us=(e,t,s,i)=>{let{listener:r,errHandler:n,rawEmitter:o}=i,a=oe.get(t),c;if(!s.persistent)return c=ut(e,s,r,n,o),c?c.close.bind(c):void 0;if(a)K(a,O,r),K(a,ne,n),K(a,M,o);else{if(c=ut(e,s,ae.bind(null,t,O),n,ae.bind(null,t,M)),!c)return;c.on(N.ERROR,async u=>{let l=ae.bind(null,t,ne);if(a&&(a.watcherUnusable=!0),Le&&u.code==="EPERM")try{await(await ks(e,"r")).close(),l(u)}catch{}else l(u)}),a={listeners:r,errHandlers:n,rawEmitters:o,watcher:c},oe.set(t,a)}return()=>{H(a,O,r),H(a,ne,n),H(a,M,o),mt(a.listeners)&&(a.watcher.close(),oe.delete(t),Ms.forEach(zs(a)),a.watcher=void 0,Object.freeze(a))}},Ce=new Map,Ks=(e,t,s,i)=>{let{listener:r,rawEmitter:n}=i,o=Ce.get(t),a=o&&o.options;return a&&(a.persistent<s.persistent||a.interval>s.interval)&&(dt(t),o=void 0),o?(K(o,O,r),K(o,M,n)):(o={listeners:r,rawEmitters:n,options:s,watcher:Rs(t,s,(c,u)=>{Se(o.rawEmitters,d=>{d(N.CHANGE,t,{curr:c,prev:u})});let l=c.mtimeMs;(c.size!==u.size||l>u.mtimeMs||l===0)&&Se(o.listeners,d=>d(e,c))})},Ce.set(t,o)),()=>{H(o,O,r),H(o,M,n),mt(o.listeners)&&(Ce.delete(t),dt(t),o.options=o.watcher=void 0,Object.freeze(o))}},ce=class{constructor(t){this.fsw=t,this._boundHandleError=s=>t._handleError(s)}_watchWithNodeFs(t,s){let i=this.fsw.options,r=w.dirname(t),n=w.basename(t);this.fsw._getWatchedDir(r).add(n);let a=w.resolve(t),c={persistent:i.persistent};s||(s=le);let u;if(i.usePolling){let l=i.interval!==i.binaryInterval;c.interval=l&&Ys(n)?i.binaryInterval:i.interval,u=Ks(t,a,c,{listener:s,rawEmitter:this.fsw._emitRaw})}else u=Us(t,a,c,{listener:s,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return u}_handleFile(t,s,i){if(this.fsw.closed)return;let r=w.dirname(t),n=w.basename(t),o=this.fsw._getWatchedDir(r),a=s;if(o.has(n))return;let c=async(l,d)=>{if(this.fsw._throttle(js,t,5)){if(!d||d.mtimeMs===0)try{let f=await ft(t);if(this.fsw.closed)return;let p=f.atimeMs,v=f.mtimeMs;if((!p||p<=v||v!==a.mtimeMs)&&this.fsw._emit(N.CHANGE,t,f),(Ls||Os||$s)&&a.ino!==f.ino){this.fsw._closeFile(l),a=f;let L=this._watchWithNodeFs(t,c);L&&this.fsw._addPathCloser(l,L)}else a=f}catch{this.fsw._remove(r,n)}else if(o.has(n)){let f=d.atimeMs,p=d.mtimeMs;(!f||f<=p||p!==a.mtimeMs)&&this.fsw._emit(N.CHANGE,t,d),a=d}}},u=this._watchWithNodeFs(t,c);if(!(i&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle(N.ADD,t,0))return;this.fsw._emit(N.ADD,t,s)}return u}async _handleSymlink(t,s,i,r){if(this.fsw.closed)return;let n=t.fullPath,o=this.fsw._getWatchedDir(s);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let a;try{a=await ke(i)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(o.has(r)?this.fsw._symlinkPaths.get(n)!==a&&(this.fsw._symlinkPaths.set(n,a),this.fsw._emit(N.CHANGE,i,t.stats)):(o.add(r),this.fsw._symlinkPaths.set(n,a),this.fsw._emit(N.ADD,i,t.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(n))return!0;this.fsw._symlinkPaths.set(n,!0)}_handleRead(t,s,i,r,n,o,a){if(t=w.join(t,""),a=this.fsw._throttle("readdir",t,1e3),!a)return;let c=this.fsw._getWatchedDir(i.path),u=new Set,l=this.fsw._readdirp(t,{fileFilter:d=>i.filterPath(d),directoryFilter:d=>i.filterDir(d)});if(l)return l.on(Fs,async d=>{if(this.fsw.closed){l=void 0;return}let f=d.path,p=w.join(t,f);if(u.add(f),!(d.stats.isSymbolicLink()&&await this._handleSymlink(d,t,p,f))){if(this.fsw.closed){l=void 0;return}(f===r||!r&&!c.has(f))&&(this.fsw._incrReadyCount(),p=w.join(n,w.relative(n,p)),this._addToNodeFs(p,s,i,o+1))}}).on(N.ERROR,this._boundHandleError),new Promise((d,f)=>{if(!l)return f();l.once(Fe,()=>{if(this.fsw.closed){l=void 0;return}let p=a?a.clear():!1;d(void 0),c.getChildren().filter(v=>v!==t&&!u.has(v)).forEach(v=>{this.fsw._remove(t,v)}),l=void 0,p&&this._handleRead(t,!1,i,r,n,o,a)})})}async _handleDir(t,s,i,r,n,o,a){let c=this.fsw._getWatchedDir(w.dirname(t)),u=c.has(w.basename(t));!(i&&this.fsw.options.ignoreInitial)&&!n&&!u&&this.fsw._emit(N.ADD_DIR,t,s),c.add(w.basename(t)),this.fsw._getWatchedDir(t);let l,d,f=this.fsw.options.depth;if((f==null||r<=f)&&!this.fsw._symlinkPaths.has(a)){if(!n&&(await this._handleRead(t,i,o,n,t,r,l),this.fsw.closed))return;d=this._watchWithNodeFs(t,(p,v)=>{v&&v.mtimeMs===0||this._handleRead(p,!1,o,n,t,r,l)})}return d}async _addToNodeFs(t,s,i,r,n){let o=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return o(),!1;let a=this.fsw._getWatchHelpers(t);i&&(a.filterPath=c=>i.filterPath(c),a.filterDir=c=>i.filterDir(c));try{let c=await Ws[a.statMethod](a.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(a.watchPath,c))return o(),!1;let u=this.fsw.options.followSymlinks,l;if(c.isDirectory()){let d=w.resolve(t),f=u?await ke(t):t;if(this.fsw.closed||(l=await this._handleDir(a.watchPath,c,s,r,n,a,f),this.fsw.closed))return;d!==f&&f!==void 0&&this.fsw._symlinkPaths.set(d,f)}else if(c.isSymbolicLink()){let d=u?await ke(t):t;if(this.fsw.closed)return;let f=w.dirname(a.watchPath);if(this.fsw._getWatchedDir(f).add(a.watchPath),this.fsw._emit(N.ADD,a.watchPath,c),l=await this._handleDir(f,c,s,r,t,a,d),this.fsw.closed)return;d!==void 0&&this.fsw._symlinkPaths.set(w.resolve(t),d)}else l=this._handleFile(a.watchPath,c,s);return o(),l&&this.fsw._addPathCloser(t,l),!1}catch(c){if(this.fsw._handleError(c))return o(),t}}};var Oe="/",Js="//",bt=".",Qs="..",Xs="string",Zs=/\\/g,gt=/\/\//,er=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,tr=/^\.[/\\]/;function ue(e){return Array.isArray(e)?e:[e]}var $e=e=>typeof e=="object"&&e!==null&&!(e instanceof RegExp);function sr(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=h.relative(e.path,t);return s?!s.startsWith("..")&&!h.isAbsolute(s):!1}return!1}:()=>!1}function rr(e){if(typeof e!="string")throw new Error("string expected");e=h.normalize(e),e=e.replace(/\\/g,"/");let t=!1;e.startsWith("//")&&(t=!0);let s=/\/\//;for(;e.match(s);)e=e.replace(s,"/");return t&&(e="/"+e),e}function _t(e,t,s){let i=rr(t);for(let r=0;r<e.length;r++){let n=e[r];if(n(i,s))return!0}return!1}function ir(e,t){if(e==null)throw new TypeError("anymatch: specify first argument");let i=ue(e).map(r=>sr(r));return t==null?(r,n)=>_t(i,r,n):_t(i,t)}var wt=e=>{let t=ue(e).flat();if(!t.every(s=>typeof s===Xs))throw new TypeError(`Non-string provided as watch path: ${t}`);return t.map(Et)},yt=e=>{let t=e.replace(Zs,Oe),s=!1;for(t.startsWith(Js)&&(s=!0);t.match(gt);)t=t.replace(gt,Oe);return s&&(t=Oe+t),t},Et=e=>yt(h.normalize(yt(e))),vt=(e="")=>t=>typeof t=="string"?Et(h.isAbsolute(t)?t:h.join(e,t)):t,nr=(e,t)=>h.isAbsolute(e)?e:h.join(t,e),or=Object.freeze(new Set),je=class{constructor(t,s){this.path=t,this._removeWatcher=s,this.items=new Set}add(t){let{items:s}=this;s&&t!==bt&&t!==Qs&&s.add(t)}async remove(t){let{items:s}=this;if(!s||(s.delete(t),s.size>0))return;let i=this.path;try{await qs(i)}catch{this._removeWatcher&&this._removeWatcher(h.dirname(i),h.basename(i))}}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=le,this.items=or,Object.freeze(this)}},ar="stat",cr="lstat",We=class{constructor(t,s,i){this.fsw=i;let r=t;this.path=t=t.replace(tr,""),this.watchPath=r,this.fullWatchPath=h.resolve(r),this.dirParts=[],this.dirParts.forEach(n=>{n.length>1&&n.pop()}),this.followSymlinks=s,this.statMethod=s?ar:cr}entryPath(t){return h.join(this.watchPath,h.relative(this.watchPath,t.fullPath))}filterPath(t){let{stats:s}=t;if(s&&s.isSymbolicLink())return this.filterDir(t);let i=this.entryPath(t);return this.fsw._isntIgnored(i,s)&&this.fsw._hasReadPermissions(s)}filterDir(t){return this.fsw._isntIgnored(this.entryPath(t),t.stats)}},fe=class extends Bs{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,i={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?ue(t.ignored):ue([]),awaitWriteFinish:s===!0?i:typeof s=="object"?{...i,...s}:!1};pt&&(r.usePolling=!0),r.atomic===void 0&&(r.atomic=!r.usePolling);let n=process.env.CHOKIDAR_USEPOLLING;if(n!==void 0){let c=n.toLowerCase();c==="false"||c==="0"?r.usePolling=!1:c==="true"||c==="1"?r.usePolling=!0:r.usePolling=!!c}let o=process.env.CHOKIDAR_INTERVAL;o&&(r.interval=Number.parseInt(o,10));let a=0;this._emitReady=()=>{a++,a>=this._readyCount&&(this._emitReady=le,this._readyEmitted=!0,process.nextTick(()=>this.emit(y.READY)))},this._emitRaw=(...c)=>this.emit(y.RAW,...c),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new ce(this),Object.freeze(r)}_addIgnoredPath(t){if($e(t)){for(let s of this._ignoredPaths)if($e(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)$e(s)&&s.path===t&&this._ignoredPaths.delete(s)}add(t,s,i){let{cwd:r}=this.options;this.closed=!1,this._closePromise=void 0;let n=wt(t);return r&&(n=n.map(o=>nr(o,r))),n.forEach(o=>{this._removeIgnoredPath(o)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=n.length,Promise.all(n.map(async o=>{let a=await this._nodeFsHandler._addToNodeFs(o,!i,void 0,0,s);return a&&this._emitReady(),a})).then(o=>{this.closed||o.forEach(a=>{a&&this.add(h.dirname(a),h.basename(s||a))})}),this}unwatch(t){if(this.closed)return this;let s=wt(t),{cwd:i}=this.options;return s.forEach(r=>{!h.isAbsolute(r)&&!this._closers.has(r)&&(i&&(r=h.join(i,r)),r=h.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(i=>{let r=i();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,i)=>{let n=(this.options.cwd?h.relative(this.options.cwd,i):i)||bt;t[n]=s.getChildren().sort()}),t}emitWithAll(t,s){this.emit(t,...s),t!==y.ERROR&&this.emit(y.ALL,t,...s)}async _emit(t,s,i){if(this.closed)return;let r=this.options;Le&&(s=h.normalize(s)),r.cwd&&(s=h.relative(r.cwd,s));let n=[s];i!=null&&n.push(i);let o=r.awaitWriteFinish,a;if(o&&(a=this._pendingWrites.get(s)))return a.lastChange=new Date,this;if(r.atomic){if(t===y.UNLINK)return this._pendingUnlinks.set(s,[t,...n]),setTimeout(()=>{this._pendingUnlinks.forEach((c,u)=>{this.emit(...c),this.emit(y.ALL,...c),this._pendingUnlinks.delete(u)})},typeof r.atomic=="number"?r.atomic:100),this;t===y.ADD&&this._pendingUnlinks.has(s)&&(t=y.CHANGE,this._pendingUnlinks.delete(s))}if(o&&(t===y.ADD||t===y.CHANGE)&&this._readyEmitted){let c=(u,l)=>{u?(t=y.ERROR,n[0]=u,this.emitWithAll(t,n)):l&&(n.length>1?n[1]=l:n.push(l),this.emitWithAll(t,n))};return this._awaitWriteFinish(s,o.stabilityThreshold,t,c),this}if(t===y.CHANGE&&!this._throttle(y.CHANGE,s,50))return this;if(r.alwaysStat&&i===void 0&&(t===y.ADD||t===y.ADD_DIR||t===y.CHANGE)){let c=r.cwd?h.join(r.cwd,s):s,u;try{u=await Gs(c)}catch{}if(!u||this.closed)return;n.push(u)}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(y.ERROR,t),t||this.closed}_throttle(t,s,i){this._throttled.has(t)||this._throttled.set(t,new Map);let r=this._throttled.get(t);if(!r)throw new Error("invalid throttle");let n=r.get(s);if(n)return n.count++,!1;let o,a=()=>{let u=r.get(s),l=u?u.count:0;return r.delete(s),clearTimeout(o),u&&clearTimeout(u.timeoutObject),l};o=setTimeout(a,i);let c={timeoutObject:o,clear:a,count:0};return r.set(s,c),c}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,s,i,r){let n=this.options.awaitWriteFinish;if(typeof n!="object")return;let o=n.pollInterval,a,c=t;this.options.cwd&&!h.isAbsolute(t)&&(c=h.join(this.options.cwd,t));let u=new Date,l=this._pendingWrites;function d(f){Hs(c,(p,v)=>{if(p||!l.has(t)){p&&p.code!=="ENOENT"&&r(p);return}let L=Number(new Date);f&&v.size!==f.size&&(l.get(t).lastChange=L);let z=l.get(t);L-z.lastChange>=s?(l.delete(t),r(void 0,v)):a=setTimeout(d,o,v)})}l.has(t)||(l.set(t,{lastChange:u,cancelWait:()=>(l.delete(t),clearTimeout(a),i)}),a=setTimeout(d,o))}_isIgnored(t,s){if(this.options.atomic&&er.test(t))return!0;if(!this._userIgnored){let{cwd:i}=this.options,n=(this.options.ignored||[]).map(vt(i)),a=[...[...this._ignoredPaths].map(vt(i)),...n];this._userIgnored=ir(a,void 0)}return this._userIgnored(t,s)}_isntIgnored(t,s){return!this._isIgnored(t,s)}_getWatchHelpers(t){return new We(t,this.options.followSymlinks,this)}_getWatchedDir(t){let s=h.resolve(t);return this._watched.has(s)||this._watched.set(s,new je(s,this._boundRemove)),this._watched.get(s)}_hasReadPermissions(t){return this.options.ignorePermissionErrors?!0:!!(Number(t.mode)&256)}_remove(t,s,i){let r=h.join(t,s),n=h.resolve(r);if(i=i??(this._watched.has(r)||this._watched.has(n)),!this._throttle("remove",r,100))return;!i&&this._watched.size===1&&this.add(t,s,!0),this._getWatchedDir(r).getChildren().forEach(f=>this._remove(r,f));let c=this._getWatchedDir(t),u=c.has(s);c.remove(s),this._symlinkPaths.has(n)&&this._symlinkPaths.delete(n);let l=r;if(this.options.cwd&&(l=h.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(l)&&this._pendingWrites.get(l).cancelWait()===y.ADD)return;this._watched.delete(r),this._watched.delete(n);let d=i?y.UNLINK_DIR:y.UNLINK;u&&!this._isIgnored(r)&&this._emit(d,r),this._closePath(r)}_closePath(t){this._closeFile(t);let s=h.dirname(t);this._getWatchedDir(s).remove(h.basename(t))}_closeFile(t){let s=this._closers.get(t);s&&(s.forEach(i=>i()),this._closers.delete(t))}_addPathCloser(t,s){if(!s)return;let i=this._closers.get(t);i||(i=[],this._closers.set(t,i)),i.push(s)}_readdirp(t,s){if(this.closed)return;let i={type:y.ALL,alwaysStat:!0,lstat:!0,...s,depth:0},r=lt(t,i);return this._streams.add(r),r.once(ht,()=>{r=void 0}),r.once(Fe,()=>{r&&(this._streams.delete(r),r=void 0)}),r}};function lr(e,t={}){let s=new fe(t);return s.add(e),s}var Dt={watch:lr,FSWatcher:fe};import{copyFileSync as dr,existsSync as C,mkdirSync as ur,readdirSync as Ve,readFileSync as fr,writeFileSync as hr}from"fs";import{basename as xt,dirname as Nt,extname as pr,join as T,normalize as mr,relative as V,resolve as Pt,sep as gr}from"path";var _r=/import\s+(?:(?:{[^}]*})|(?:[^{}\s,]*))?\s*(?:,\s*(?:{[^}]*}))?\s*from\s+['"]([./]+[^'"]*)['"]/g,wr=/import\s+(?:(?:{[^}]*})|(?:[^{}\s,]*))?\s*(?:,\s*(?:{[^}]*}))?\s*from\s+['"](@\/[^'"]*)['"]/g,yr=/import\s*\(\s*['"](@\/[^'"]*)['"]\s*\)/g,he=/\.(js|jsx|ts|tsx)$/,Me=/^page\.(tsx|ts|jsx|js)$/i,G=(e,t)=>{let i=V(t,e).split(gr);i.pop();let r=i.filter(n=>!n.startsWith("("));return mr(r.join("/"))},pe=e=>{let t=new Map,s=i=>{if(C(i))for(let r of Ve(i,{withFileTypes:!0})){let n=T(i,r.name);if(r.isDirectory()){s(n);continue}if(Me.test(r.name)){let o=G(n,e);t.set(o,n)}}};return s(e),t},vr=(e,t)=>{let s=e.replace(_r,(i,r)=>{if(r.startsWith(".")){let o=r.replace(he,"").replace(/^(?:\.\.\/)+/,"");return i.replace(r,`${t}/${o}`)}return i});return s=s.replace(wr,(i,r)=>{let n=r.replace(/^@\//,"").replace(he,"");return i.replace(r,`${t}/${n}`)}),s=s.replace(yr,(i,r)=>{let n=r.replace(/^@\//,"").replace(he,"");return i.replace(r,`${t}/${n}`)}),s=s.replace(/dynamic\s*\(\s*\(\s*=>\s*import\s*\(\s*['"](@\/[^'"]*)['"]\s*\)\s*\)\s*\)/g,(i,r)=>{let n=r.replace(/^@\//,"").replace(he,"");return i.replace(r,`${t}/${n}`)}),s};function me(e){let t=e;for(;t!==Pt(t,"..");){let i=T(t,"turbo.json");if(C(i))return t;t=Pt(t,"..")}let s=T(e,"package.json");if(C(s))return e;throw new Error("\u274C Could not locate project root")}function ge(e){let t=T(e,"src","app","[locale]");if(C(t))return t;let i=(n=>{let o=[];if(!C(n))return o;let a=(c,u=0)=>{if(!(u>4))try{let l=Ve(c,{withFileTypes:!0});for(let d of l){if(!d.isDirectory())continue;let f=T(c,d.name);if(d.name==="[locale]"&&Nt(f).endsWith(T("src","app"))){o.push(f);continue}a(f,u+1)}}catch{}};return a(n),o})(e);return i.length>0?i[0]:T(e,"apps","docs","src","app","[locale]")}var q=e=>{let t=[];if(!C(e))return t;let s=Ve(e,{withFileTypes:!0});for(let i of s){let r=T(e,i.name);i.isDirectory()?t.push(...q(r)):t.push(r)}return t},B=e=>C(e)?q(e).length===0:!0,Ye=(e,t,s,i,r,n,o=!0)=>{let a=xt(e);if(Me.test(a)){let c=G(t,r),u=i.get(c);if(u&&u!==t){o&&console.log(`\x1B[31mSkipped duplicate page:\x1B[0m ${V(n,t)} (collides with ${V(n,u)})`);return}}try{let c=Nt(t);C(c)||ur(c,{recursive:!0});let u=pr(e);if(s&&[".js",".jsx",".ts",".tsx"].includes(u)){let l=fr(e,"utf-8"),d=vr(l,s);hr(t,d)}else dr(e,t);if(o){let l=e.indexOf(T("src","app")),d;l!==-1?d=e.substring(l):e.startsWith(n)?d=V(n,e):d=e;let f=t.startsWith(n)?V(n,t):t;console.log(`\x1B[32mCopied:\x1B[0m ${d} \u2192 ${f}`)}if(Me.test(xt(t))){let l=G(t,r);i.set(l,t)}}catch(c){console.error(`\x1B[31mError copying file:\x1B[0m ${e}`,c)}},It=(e,t,s,i,r,n,o=!0)=>{if(!C(e)||B(e))return;let a=q(e);for(let c of a){let u=V(e,c),l=T(t,u);Ye(c,l,s,i,r,n,o)}};var Tt=e=>{let t=I(g(e,"src","vitnode.config.ts"));return I(g(e,"src","vitnode.api.config.ts"))&&!t?"api":t?"web":null},Pr=(e,t,s,i)=>{let r=[],n=g(t,"apps");if(I(n)){let a=I(n)?Er(n,{withFileTypes:!0}).filter(c=>c.isDirectory()).map(c=>c.name):[];for(let c of a){let u=g(t,"apps",c),l=Tt(u);l==="web"?r.push({sourceDir:g(e,"src","app_admin"),destinationDir:g(u,"src","app","[locale]","admin","(auth)",g("(plugins)",`(${i})`))},{sourceDir:g(e,"src","app"),destinationDir:g(u,"src","app","[locale]","(main)",g("(plugins)",`(${i})`))},{sourceDir:g(e,"src","locales"),destinationDir:g(u,"src","locales",s)}):l==="api"&&r.push({sourceDir:g(e,"src","locales"),destinationDir:g(u,"src","locales",s)})}}else{let a=process.cwd(),c=Tt(a);c==="web"?r.push({sourceDir:g(e,"src","app_admin"),destinationDir:g(a,"src","app","[locale]","admin","(auth)",g("(plugins)",`(${i})`))},{sourceDir:g(e,"src","app"),destinationDir:g(a,"src","app","[locale]","(main)",g("(plugins)",`(${i})`))},{sourceDir:g(e,"src","locales"),destinationDir:g(a,"src","locales",s)}):c==="api"&&r.push({sourceDir:g(e,"src","locales"),destinationDir:g(a,"src","locales",s)})}return r},Nr=e=>{for(let{sourceDir:t,destinationDir:s}of e)I(t)&&!B(t)&&!I(s)&&br(s,{recursive:!0})},Ir=(e,t,s,i)=>({copyFileWrapper:(o,a)=>{Ye(o,a,e,t,s,i)},removeFile:o=>{try{if(I(o)&&(xr(o),console.log(`\x1B[33mRemoved:\x1B[0m ${o}`),/^page\.(tsx|ts|jsx|js)$/i.test(Rt(o)))){let a=G(o,s);t.get(a)===o&&t.delete(a)}}catch(a){console.error(`\x1B[31mError removing file:\x1B[0m ${o}`,a)}}}),Tr=(e,t,s)=>{if(!I(t)||t.includes(g("src","locales")))return;let r=q(t);for(let n of r){let o=At(t,n),a=g(e,o);I(a)||s(n)}},Rr=e=>t=>{let s=e.filter(({sourceDir:i})=>{let r=t.replace(/\\/g,"/"),n=i.replace(/\\/g,"/");return r===n||r.startsWith(`${n}/`)});if(s.length===0)throw new Error(`No matching source directory for: ${t}`);return s.map(i=>{let r=At(i.sourceDir,t);return g(i.destinationDir,r)})},Ar=(e,t,s,i)=>{let r=Dt.watch(e,{ignoreInitial:!1,persistent:!0});return r.on("add",n=>{t(n).forEach(a=>s(n,a))}).on("change",n=>{t(n).forEach(a=>s(n,a))}).on("unlink",n=>{t(n).forEach(a=>i(a))}).on("error",n=>{console.error("\x1B[31mWatcher error:\x1B[0m",n)}),r},kt=({initMessage:e})=>{let t=process.cwd(),s=me(t),i=ge(s),r=pe(i),n=Rt(t);try{let f=g(t,"package.json");I(f)&&(n=JSON.parse(Dr(f,"utf-8")).name??"")}catch(f){console.error("\x1B[31mError reading package.json:\x1B[0m",f);return}let o=n.replace(/\//g,"-").replace(/@/g,""),a=Pr(t,s,n,o);Nr(a);let{copyFileWrapper:c,removeFile:u}=Ir(n,r,i,s);for(let{sourceDir:f,destinationDir:p}of a)Tr(f,p,u);console.log(`${e} \x1B[34mWatching for changes in plugins...\x1B[0m`);let l=a.map(f=>f.sourceDir).filter(f=>I(f)),d=Rr(a);Ar(l,d,c,u)};import{count as Mt}from"drizzle-orm";import{relations as Ot}from"drizzle-orm";import{index as De,pgTable as $t}from"drizzle-orm/pg-core";import{pgTable as kr}from"drizzle-orm/pg-core";var D=kr("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:19})})).enableRLS();import{relations as St}from"drizzle-orm";import{index as Ft,pgTable as Lt}from"drizzle-orm/pg-core";import{relations as be}from"drizzle-orm";import{index as we,pgTable as Ee}from"drizzle-orm/pg-core";import{relations as Cr}from"drizzle-orm";import{index as ze,pgTable as Ct}from"drizzle-orm/pg-core";var R=Ct("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().$onUpdate(()=>new Date),time24:e.boolean().notNull().default(!1)}),e=>[ze("core_languages_code_idx").on(e.code),ze("core_languages_name_idx").on(e.name)]).enableRLS(),_e=Ct("core_languages_words",e=>({id:e.serial().primaryKey(),languageCode:e.varchar().notNull().references(()=>R.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=>[ze("core_languages_words_lang_code_idx").on(e.languageCode)]).enableRLS(),mi=Cr(_e,({one:e})=>({language:e(R,{fields:[_e.languageCode],references:[R.code]})}));var m=Ee("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(()=>R.code,{onDelete:"set default"})}),e=>[we("core_users_name_code_idx").on(e.nameCode),we("core_users_name_idx").on(e.name),we("core_users_email_idx").on(e.email)]).enableRLS(),bi=be(m,({one:e,many:t})=>({group:e(D,{fields:[m.roleId],references:[D.id]}),language:e(R,{fields:[m.language],references:[R.code]}),confirm_email:e(ye,{fields:[m.id],references:[ye.userId]}),sso:t(Ue),forgot_password:e(ve,{fields:[m.id],references:[ve.userId]})})),Ue=Ee("core_users_sso",e=>({userId:e.integer().references(()=>m.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().$onUpdate(()=>new Date)}),e=>[we("core_users_sso_user_id_idx").on(e.userId)]).enableRLS(),Ei=be(Ue,({one:e})=>({user:e(m,{fields:[Ue.userId],references:[m.id]})})),ye=Ee("core_users_confirm_emails",e=>({id:e.serial().primaryKey(),userId:e.integer().references(()=>m.id,{onDelete:"cascade"}).notNull(),token:e.varchar({length:100}).notNull().unique(),createdAt:e.timestamp().notNull().defaultNow(),expires:e.timestamp().notNull(),ipAddress:e.varchar({length:40}).notNull()})).enableRLS(),Di=be(ye,({one:e})=>({user:e(m,{fields:[ye.userId],references:[m.id]})})),ve=Ee("core_users_forgot_password",e=>({id:e.serial().primaryKey(),userId:e.integer().references(()=>m.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(),xi=be(ve,({one:e})=>({user:e(m,{fields:[ve.userId],references:[m.id]})}));var J=Lt("core_sessions",e=>({id:e.serial().primaryKey(),token:e.varchar({length:255}).notNull().unique(),userId:e.integer().notNull().references(()=>m.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),deviceId:e.integer().references(()=>S.id,{onDelete:"cascade"}).notNull()}),e=>[Ft("core_sessions_user_id_idx").on(e.userId)]).enableRLS(),Ri=St(J,({one:e})=>({user:e(m,{fields:[J.userId],references:[m.id]}),device:e(S,{fields:[J.deviceId],references:[S.id]})})),S=Lt("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=>[Ft("core_sessions_known_devices_ip_address_idx").on(e.ipAddress)]).enableRLS(),Ai=St(S,({one:e})=>({session:e(J,{fields:[S.id],references:[J.deviceId]})}));var Q=$t("core_admin_permissions",e=>({id:e.serial().primaryKey(),roleId:e.integer().references(()=>D.id,{onDelete:"cascade"}),userId:e.integer().references(()=>m.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1)}),e=>[De("core_admin_permissions_role_id_idx").on(e.roleId),De("core_admin_permissions_user_id_idx").on(e.userId)]).enableRLS(),$i=Ot(Q,({one:e})=>({group:e(D,{fields:[Q.roleId],references:[D.id]}),user:e(m,{fields:[Q.userId],references:[m.id]})})),Ke=$t("core_admin_sessions",e=>({id:e.serial().primaryKey(),token:e.varchar({length:255}).notNull().unique(),userId:e.integer().notNull().references(()=>m.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),lastSeen:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),deviceId:e.integer().references(()=>S.id,{onDelete:"cascade"}).notNull()}),e=>[De("core_admin_sessions_token_idx").on(e.token),De("core_admin_sessions_user_id_idx").on(e.userId)]).enableRLS(),ji=Ot(Ke,({one:e})=>({user:e(m,{fields:[Ke.userId],references:[m.id]}),device:e(S,{fields:[Ke.deviceId],references:[S.id]})}));import{relations as Sr}from"drizzle-orm";import{index as jt,pgTable as Fr}from"drizzle-orm/pg-core";var X=Fr("core_moderators_permissions",e=>({id:e.serial().primaryKey(),roleId:e.integer().references(()=>D.id,{onDelete:"cascade"}),userId:e.integer().references(()=>m.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1)}),e=>[jt("core_moderators_permissions_role_id_idx").on(e.roleId),jt("core_moderators_permissions_user_id_idx").on(e.userId)]).enableRLS(),Ui=Sr(X,({one:e})=>({group:e(D,{fields:[X.roleId],references:[D.id]}),user:e(m,{fields:[X.userId],references:[m.id]})}));import{join as Lr}from"path";import{pathToFileURL as Or}from"url";var $=async({type:e="config"})=>{let t=Lr(process.cwd(),"src",`vitnode.${e}.ts`);try{let i=await import(Or(t).href);return e==="config"?i.vitNodeConfig:i.vitNodeApiConfig}catch(s){console.error("Failed to load config:",s),process.exit(1)}};import{existsSync as A,readdirSync as $r}from"fs";import{readFile as jr}from"fs/promises";import{join as _,relative as Wt}from"path";var Y=async e=>{let t=process.cwd(),s=A(_(t,"src","vitnode.config.ts")),i=A(_(t,"src","vitnode.api.config.ts")),r;e==="--api"&&i?r=await $({type:"api.config"}):e==="--web"&&s?r=await $({}):i&&!s?r=await $({type:"api.config"}):s?r=await $({}):r={plugins:[]};let n=[...r.plugins.map(d=>d.pluginId),"@vitnode/core"],o=me(process.cwd()),a=ge(o),c=pe(a),u=process.cwd(),l=d=>{let f=process.cwd(),p=_(f,"node_modules",d);if(A(p))return p;if(o&&o!==f){let v=_(o,"node_modules",d);if(A(v))return v}return null};await Promise.all(n.map(async d=>{let f=l(d);if(!f){console.error(`\x1B[31mPlugin not found:\x1B[0m ${d} in node_modules`);return}let p="";try{let E=_(f,"package.json");A(E)&&(p=JSON.parse(await jr(E,"utf-8")).name??"")}catch(E){console.error(`\x1B[31mError reading package.json for ${d}:\x1B[0m`,E);return}let v=d.replace(/\//g,"-").replace(/@/g,""),L=E=>{let x=A(_(E,"src","vitnode.config.ts"));return A(_(E,"src","vitnode.api.config.ts"))&&!x?"api":x?"web":null},z=_(o,"apps"),He=A(z),se=[];if(He){let E=A(z)?$r(z,{withFileTypes:!0}).filter(x=>x.isDirectory()).map(x=>x.name):[];for(let x of E){let F=_(o,"apps",x),Ge=L(F);if(Ge==="web"){let Ne=_(F,"src","app","[locale]","(main)",_("(plugins)",`(${v})`)),Kt=_(F,"src","app","[locale]","admin","(auth)",_("(plugins)",`(${v})`)),Ht=_(F,"src","locales",d);se.push({sourceDir:_(f,"src","app_admin"),destinationDir:Kt},{sourceDir:_(f,"src","app"),destinationDir:Ne},{sourceDir:_(f,"src","locales"),destinationDir:Ht})}else if(Ge==="api"){let Ne=_(F,"src","locales",d);se.push({sourceDir:_(f,"src","locales"),destinationDir:Ne})}}}else{let E=_(u,"src","app","[locale]","(main)",_("(plugins)",`(${v})`)),x=_(u,"src","app","[locale]","admin","(auth)",_("(plugins)",`(${v})`)),F=_(u,"src","locales",d);se.push({sourceDir:_(f,"src","app_admin"),destinationDir:x},{sourceDir:_(f,"src","app"),destinationDir:E},{sourceDir:_(f,"src","locales"),destinationDir:F})}for(let{sourceDir:E,destinationDir:x}of se)A(E)&&!B(E)&&(console.log(`\x1B[36mCopying ${d}:\x1B[0m ${Wt(o,E)} \u2192 ${Wt(o,x)}`),It(E,x,p,c,a,o,!1))}))};import{spawn as Wr}from"child_process";var Z=async(e,t=[])=>await new Promise((s,i)=>{let r=Wr(e,t,{stdio:"inherit",shell:!0,env:process.env});r.on("error",n=>{i(n)}),r.on("close",n=>{n!==0?i(new Error(`Command failed with exit code ${n}`)):s(!0)})});var xe=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)}},Pe=async()=>{try{await Z("npm",["run","drizzle-kit","migrate"])}catch(e){console.error("\x1B[31m%s\x1B[0m",e),process.exit(1)}},Vt=async()=>{try{await Z("npm",["run","drizzle-kit","push"])}catch(e){console.error("\x1B[31m%s\x1B[0m",e),process.exit(1)}},ee=async()=>{let t=(await $({type:"api.config"})).dbProvider,[s]=await t.select({count:Mt()}).from(D).limit(1),[i]=await t.select({count:Mt()}).from(R);if(i.count===0&&await t.insert(R).values([{code:"en",name:"English (USA)",default:!0,protected:!0,timezone:"America/New_York"}]),s.count===0){let r=await t.insert(D).values([{protected:!0,guest:!0},{protected:!0,default:!0},{protected:!0,color:"hsl(122, 80%, 45%)"},{protected:!0,root:!0,color:"hsl(0, 100%, 50%)"}]).returning({id:D.id});await t.insert(_e).values([{languageCode:"en",pluginCode:"core",itemId:r[0].id,value:"Guest",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:r[1].id,value:"Member",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:r[2].id,value:"Moderator",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:r[3].id,value:"Administrator",tableName:"core_roles",variable:"name"}]),await Promise.all([await t.insert(X).values({roleId:r[2].id,protected:!0}),await t.insert(Q).values({roleId:r[3].id,protected:!0})])}},Yt=async({initMessage:e,flag:t})=>{let s=[];t==="--web"?s.push({label:"Prepare plugins files...",action:async()=>await Y(t)}):t==="--api"?s.push({label:"Prepare plugins files...",action:async()=>await Y(t)},{label:"Generate migrations...",action:xe},{label:"Run migrations...",action:Pe},{label:"Insert initial data...",action:ee}):s.push({label:"Prepare plugins files...",action:async()=>await Y(t)},{label:"Generate migrations...",action:xe},{label:"Run migrations...",action:Pe},{label:"Insert initial data...",action:ee}),await Promise.all(s.map((i,r)=>{let n=`[${r+1}/${s.length}]`;return i.label==="Insert initial data..."?console.log(`
9
- ${e} ${n} ${i.label}`):console.log(`${e} ${n} ${i.label}`),i.action()})),console.log(`${e} \x1B[32mInitial setup completed.\x1B[0m`),process.exit(0)};(0,Ut.config)({quiet:!0});var j="\x1B[34m[VitNode]\x1B[0m",zt=process.argv[2],te=process.argv[3];switch(zt){case"init":Yt({initMessage:j,flag:te});break;case"migrate":await xe(),te==="--generate"&&(console.log(`${j} \x1B[32mDatabase migrations generated successfully.\x1B[0m`),process.exit(0)),await Pe(),await ee(),console.log(`${j} \x1B[32mDatabase migrated successfully.\x1B[0m`),process.exit(0);break;case"plugin":(te==="--w"||te==="--watch")&&kt({initMessage:j});break;case"prepare-plugins":await Y(te),console.log(`${j} \x1B[32mPlugins prepared successfully.\x1B[0m`),process.exit(0);break;case"push":await Vt(),await ee(),console.log(`${j} \x1B[32mDatabase pushed successfully.\x1B[0m`),process.exit(0);break;default:console.log(`${j} \x1B[31mCommand not found: "${zt??""}"\x1B[0m`),process.exit(1)}
6
+ var Ht=Object.create;var qe=Object.defineProperty;var Gt=Object.getOwnPropertyDescriptor;var qt=Object.getOwnPropertyNames;var Bt=Object.getPrototypeOf,Jt=Object.prototype.hasOwnProperty;var te=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,s)=>(typeof require<"u"?require:t)[s]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var Be=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Qt=(e,t,s,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of qt(t))!Jt.call(e,r)&&r!==s&&qe(e,r,{get:()=>t[r],enumerable:!(i=Gt(t,r))||i.enumerable});return e};var Xt=(e,t,s)=>(s=e!=null?Ht(Bt(e)):{},Qt(t||!e||!e.__esModule?qe(s,"default",{value:e,enumerable:!0}):s,e));var Je=Be((Mr,Zt)=>{Zt.exports={name:"dotenv",version:"17.2.2",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard",pretest:"npm run lint && npm run dts-check",test:"tap run --allow-empty-coverage --disable-coverage --timeout=60000","test:coverage":"tap run --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},homepage:"https://github.com/motdotla/dotenv#readme",funding:"https://dotenvx.com",keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@types/node":"^18.11.3",decache:"^4.6.2",sinon:"^14.0.1",standard:"^17.0.0","standard-version":"^9.5.0",tap:"^19.2.0",typescript:"^4.8.4"},engines:{node:">=12"},browser:{fs:!1}}});var st=Be((Vr,C)=>{"use strict";var Ie=te("fs"),se=te("path"),es=te("os"),ts=te("crypto"),ss=Je(),Te=ss.version,Qe=["\u{1F510} encrypt with Dotenvx: https://dotenvx.com","\u{1F510} prevent committing .env to code: https://dotenvx.com/precommit","\u{1F510} prevent building .env in docker: https://dotenvx.com/prebuild","\u{1F4E1} observe env with Radar: https://dotenvx.com/radar","\u{1F4E1} auto-backup env with Radar: https://dotenvx.com/radar","\u{1F4E1} version env with Radar: https://dotenvx.com/radar","\u{1F6E0}\uFE0F run anywhere with `dotenvx run -- yourcommand`","\u2699\uFE0F specify custom .env file path with { path: '/custom/path/.env' }","\u2699\uFE0F enable debug logging with { debug: true }","\u2699\uFE0F override existing env vars with { override: true }","\u2699\uFE0F suppress all logs with { quiet: true }","\u2699\uFE0F write to custom object with { processEnv: myObject }","\u2699\uFE0F load multiple .env files with { path: ['.env.local', '.env'] }"];function rs(){return Qe[Math.floor(Math.random()*Qe.length)]}function j(e){return typeof e=="string"?!["false","0","no","off",""].includes(e.toLowerCase()):!!e}function is(){return process.stdout.isTTY}function ns(e){return is()?`\x1B[2m${e}\x1B[0m`:e}var os=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function as(e){let t={},s=e.toString();s=s.replace(/\r\n?/mg,`
7
+ `);let i;for(;(i=os.exec(s))!=null;){let r=i[1],n=i[2]||"";n=n.trim();let o=n[0];n=n.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),o==='"'&&(n=n.replace(/\\n/g,`
8
+ `),n=n.replace(/\\r/g,"\r")),t[r]=n}return t}function cs(e){e=e||{};let t=tt(e);e.path=t;let s=E.configDotenv(e);if(!s.parsed){let o=new Error(`MISSING_DATA: Cannot parse ${t} for an unknown reason`);throw o.code="MISSING_DATA",o}let i=et(e).split(","),r=i.length,n;for(let o=0;o<r;o++)try{let a=i[o].trim(),c=ds(s,a);n=E.decrypt(c.ciphertext,c.key);break}catch(a){if(o+1>=r)throw a}return E.parse(n)}function ls(e){console.error(`[dotenv@${Te}][WARN] ${e}`)}function U(e){console.log(`[dotenv@${Te}][DEBUG] ${e}`)}function Ze(e){console.log(`[dotenv@${Te}] ${e}`)}function et(e){return e&&e.DOTENV_KEY&&e.DOTENV_KEY.length>0?e.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function ds(e,t){let s;try{s=new URL(t)}catch(a){if(a.code==="ERR_INVALID_URL"){let c=new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development");throw c.code="INVALID_DOTENV_KEY",c}throw a}let i=s.password;if(!i){let a=new Error("INVALID_DOTENV_KEY: Missing key part");throw a.code="INVALID_DOTENV_KEY",a}let r=s.searchParams.get("environment");if(!r){let a=new Error("INVALID_DOTENV_KEY: Missing environment part");throw a.code="INVALID_DOTENV_KEY",a}let n=`DOTENV_VAULT_${r.toUpperCase()}`,o=e.parsed[n];if(!o){let a=new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);throw a.code="NOT_FOUND_DOTENV_ENVIRONMENT",a}return{ciphertext:o,key:i}}function tt(e){let t=null;if(e&&e.path&&e.path.length>0)if(Array.isArray(e.path))for(let s of e.path)Ie.existsSync(s)&&(t=s.endsWith(".vault")?s:`${s}.vault`);else t=e.path.endsWith(".vault")?e.path:`${e.path}.vault`;else t=se.resolve(process.cwd(),".env.vault");return Ie.existsSync(t)?t:null}function Xe(e){return e[0]==="~"?se.join(es.homedir(),e.slice(1)):e}function fs(e){let t=j(process.env.DOTENV_CONFIG_DEBUG||e&&e.debug),s=j(process.env.DOTENV_CONFIG_QUIET||e&&e.quiet);(t||!s)&&Ze("Loading env from encrypted .env.vault");let i=E._parseVault(e),r=process.env;return e&&e.processEnv!=null&&(r=e.processEnv),E.populate(r,i,e),{parsed:i}}function us(e){let t=se.resolve(process.cwd(),".env"),s="utf8",i=process.env;e&&e.processEnv!=null&&(i=e.processEnv);let r=j(i.DOTENV_CONFIG_DEBUG||e&&e.debug),n=j(i.DOTENV_CONFIG_QUIET||e&&e.quiet);e&&e.encoding?s=e.encoding:r&&U("No encoding is specified. UTF-8 is used by default");let o=[t];if(e&&e.path)if(!Array.isArray(e.path))o=[Xe(e.path)];else{o=[];for(let l of e.path)o.push(Xe(l))}let a,c={};for(let l of o)try{let d=E.parse(Ie.readFileSync(l,{encoding:s}));E.populate(c,d,e)}catch(d){r&&U(`Failed to load ${l} ${d.message}`),a=d}let f=E.populate(i,c,e);if(r=j(i.DOTENV_CONFIG_DEBUG||r),n=j(i.DOTENV_CONFIG_QUIET||n),r||!n){let l=Object.keys(f).length,d=[];for(let u of o)try{let h=se.relative(process.cwd(),u);d.push(h)}catch(h){r&&U(`Failed to load ${u} ${h.message}`),a=h}Ze(`injecting env (${l}) from ${d.join(",")} ${ns(`-- tip: ${rs()}`)}`)}return a?{parsed:c,error:a}:{parsed:c}}function ps(e){if(et(e).length===0)return E.configDotenv(e);let t=tt(e);return t?E._configVault(e):(ls(`You set DOTENV_KEY but you are missing a .env.vault file at ${t}. Did you forget to build it?`),E.configDotenv(e))}function hs(e,t){let s=Buffer.from(t.slice(-64),"hex"),i=Buffer.from(e,"base64"),r=i.subarray(0,12),n=i.subarray(-16);i=i.subarray(12,-16);try{let o=ts.createDecipheriv("aes-256-gcm",s,r);return o.setAuthTag(n),`${o.update(i)}${o.final()}`}catch(o){let a=o instanceof RangeError,c=o.message==="Invalid key length",f=o.message==="Unsupported state or unable to authenticate data";if(a||c){let l=new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");throw l.code="INVALID_DOTENV_KEY",l}else if(f){let l=new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");throw l.code="DECRYPTION_FAILED",l}else throw o}}function ms(e,t,s={}){let i=!!(s&&s.debug),r=!!(s&&s.override),n={};if(typeof t!="object"){let o=new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");throw o.code="OBJECT_REQUIRED",o}for(let o of Object.keys(t))Object.prototype.hasOwnProperty.call(e,o)?(r===!0&&(e[o]=t[o],n[o]=t[o]),i&&U(r===!0?`"${o}" is already defined and WAS overwritten`:`"${o}" is already defined and was NOT overwritten`)):(e[o]=t[o],n[o]=t[o]);return n}var E={configDotenv:us,_configVault:fs,_parseVault:cs,config:ps,decrypt:hs,parse:as,populate:ms};C.exports.configDotenv=E.configDotenv;C.exports._configVault=E._configVault;C.exports._parseVault=E._parseVault;C.exports.config=E.config;C.exports.decrypt=E.decrypt;C.exports.parse=E.parse;C.exports.populate=E.populate;C.exports=E});var zt=Xt(st(),1);import{existsSync as I,mkdirSync as vr,readdirSync as Er,readFileSync as br,unlinkSync as Dr}from"fs";import{basename as Rt,join as g,relative as At}from"path";import{stat as Ks}from"fs";import{stat as Hs,readdir as Gs}from"fs/promises";import{EventEmitter as qs}from"events";import*as p from"path";import{stat as gs,lstat as rt,readdir as _s,realpath as ws}from"fs/promises";import{Readable as ys}from"stream";import{resolve as it,relative as vs,join as Es,sep as bs}from"path";var N={FILE_TYPE:"files",DIR_TYPE:"directories",FILE_DIR_TYPE:"files_directories",EVERYTHING_TYPE:"all"},Re={root:".",fileFilter:e=>!0,directoryFilter:e=>!0,type:N.FILE_TYPE,lstat:!1,depth:2147483648,alwaysStat:!1,highWaterMark:4096};Object.freeze(Re);var ct="READDIRP_RECURSIVE_ERROR",Ds=new Set(["ENOENT","EPERM","EACCES","ELOOP",ct]),nt=[N.DIR_TYPE,N.EVERYTHING_TYPE,N.FILE_DIR_TYPE,N.FILE_TYPE],xs=new Set([N.DIR_TYPE,N.EVERYTHING_TYPE,N.FILE_DIR_TYPE]),Ns=new Set([N.EVERYTHING_TYPE,N.FILE_DIR_TYPE,N.FILE_TYPE]),Ps=e=>Ds.has(e.code),Is=process.platform==="win32",ot=e=>!0,at=e=>{if(e===void 0)return ot;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(i=>s.basename===i)}return ot},Ae=class extends ys{constructor(t={}){super({objectMode:!0,autoDestroy:!0,highWaterMark:t.highWaterMark});let s={...Re,...t},{root:i,type:r}=s;this._fileFilter=at(s.fileFilter),this._directoryFilter=at(s.directoryFilter);let n=s.lstat?rt:gs;Is?this._stat=o=>n(o,{bigint:!0}):this._stat=n,this._maxDepth=s.depth??Re.depth,this._wantsDir=r?xs.has(r):!1,this._wantsFile=r?Ns.has(r):!1,this._wantsEverything=r===N.EVERYTHING_TYPE,this._root=it(i),this._isDirent=!s.alwaysStat,this._statsProp=this._isDirent?"dirent":"stats",this._rdOptions={encoding:"utf8",withFileTypes:this._isDirent},this.parents=[this._exploreDir(i,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,i=s&&s.files;if(i&&i.length>0){let{path:r,depth:n}=s,o=i.splice(0,t).map(c=>this._formatEntry(c,r)),a=await Promise.all(o);for(let c of a){if(!c)continue;if(this.destroyed)return;let f=await this._getEntryType(c);f==="directory"&&this._directoryFilter(c)?(n<=this._maxDepth&&this.parents.push(this._exploreDir(c.fullPath,n+1)),this._wantsDir&&(this.push(c),t--)):(f==="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 i;try{i=await _s(t,this._rdOptions)}catch(r){this._onError(r)}return{files:i,depth:s,path:t}}async _formatEntry(t,s){let i,r=this._isDirent?t.name:t;try{let n=it(Es(s,r));i={path:vs(this._root,n),fullPath:n,basename:r},i[this._statsProp]=this._isDirent?t:await this._stat(n)}catch(n){this._onError(n);return}return i}_onError(t){Ps(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 i=t.fullPath;try{let r=await ws(i),n=await rt(r);if(n.isFile())return"file";if(n.isDirectory()){let o=r.length;if(i.startsWith(r)&&i.substr(o,1)===bs){let a=new Error(`Circular symlink detected: "${i}" points to "${r}"`);return a.code=ct,this._onError(a)}return"directory"}}catch(r){return this._onError(r),""}}}_includeAsFile(t){let s=t&&t[this._statsProp];return s&&this._wantsEverything&&!s.isDirectory()}};function lt(e,t={}){let s=t.entryType||t.type;if(s==="both"&&(s=N.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&&!nt.includes(s))throw new Error(`readdirp: Invalid type passed. Use one of ${nt.join(", ")}`)}else throw new Error("readdirp: root argument is required. Usage: readdirp(root, options)");return t.root=e,new Ae(t)}import{watchFile as Ts,unwatchFile as dt,watch as Rs}from"fs";import{open as As,stat as ut,lstat as Cs,realpath as Ce}from"fs/promises";import*as w from"path";import{type as Ss}from"os";var ks="data",Fe="end",pt="close",ae=()=>{};var ce=process.platform,Le=ce==="win32",Fs=ce==="darwin",Ls=ce==="linux",Os=ce==="freebsd",ht=Ss()==="OS400",y={ALL:"all",READY:"ready",ADD:"add",CHANGE:"change",ADD_DIR:"addDir",UNLINK:"unlink",UNLINK_DIR:"unlinkDir",RAW:"raw",ERROR:"error"},P=y,$s="watch",js={lstat:Cs,stat:ut},O="listeners",re="errHandlers",W="rawEmitters",Ws=[O,re,W],Ms=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"]),Vs=e=>Ms.has(w.extname(e).slice(1).toLowerCase()),ke=(e,t)=>{e instanceof Set?e.forEach(t):t(e)},K=(e,t,s)=>{let i=e[t];i instanceof Set||(e[t]=i=new Set([i])),i.add(s)},Ys=e=>t=>{let s=e[t];s instanceof Set?s.clear():delete e[t]},H=(e,t,s)=>{let i=e[t];i instanceof Set?i.delete(s):i===s&&delete e[t]},mt=e=>e instanceof Set?e.size===0:!e,ie=new Map;function ft(e,t,s,i,r){let n=(o,a)=>{s(e),r(o,a,{watchedPath:e}),a&&e!==a&&ne(w.resolve(e,a),O,w.join(e,a))};try{return Rs(e,{persistent:t.persistent},n)}catch(o){i(o);return}}var ne=(e,t,s,i,r)=>{let n=ie.get(e);n&&ke(n[t],o=>{o(s,i,r)})},zs=(e,t,s,i)=>{let{listener:r,errHandler:n,rawEmitter:o}=i,a=ie.get(t),c;if(!s.persistent)return c=ft(e,s,r,n,o),c?c.close.bind(c):void 0;if(a)K(a,O,r),K(a,re,n),K(a,W,o);else{if(c=ft(e,s,ne.bind(null,t,O),n,ne.bind(null,t,W)),!c)return;c.on(P.ERROR,async f=>{let l=ne.bind(null,t,re);if(a&&(a.watcherUnusable=!0),Le&&f.code==="EPERM")try{await(await As(e,"r")).close(),l(f)}catch{}else l(f)}),a={listeners:r,errHandlers:n,rawEmitters:o,watcher:c},ie.set(t,a)}return()=>{H(a,O,r),H(a,re,n),H(a,W,o),mt(a.listeners)&&(a.watcher.close(),ie.delete(t),Ws.forEach(Ys(a)),a.watcher=void 0,Object.freeze(a))}},Se=new Map,Us=(e,t,s,i)=>{let{listener:r,rawEmitter:n}=i,o=Se.get(t),a=o&&o.options;return a&&(a.persistent<s.persistent||a.interval>s.interval)&&(dt(t),o=void 0),o?(K(o,O,r),K(o,W,n)):(o={listeners:r,rawEmitters:n,options:s,watcher:Ts(t,s,(c,f)=>{ke(o.rawEmitters,d=>{d(P.CHANGE,t,{curr:c,prev:f})});let l=c.mtimeMs;(c.size!==f.size||l>f.mtimeMs||l===0)&&ke(o.listeners,d=>d(e,c))})},Se.set(t,o)),()=>{H(o,O,r),H(o,W,n),mt(o.listeners)&&(Se.delete(t),dt(t),o.options=o.watcher=void 0,Object.freeze(o))}},oe=class{constructor(t){this.fsw=t,this._boundHandleError=s=>t._handleError(s)}_watchWithNodeFs(t,s){let i=this.fsw.options,r=w.dirname(t),n=w.basename(t);this.fsw._getWatchedDir(r).add(n);let a=w.resolve(t),c={persistent:i.persistent};s||(s=ae);let f;if(i.usePolling){let l=i.interval!==i.binaryInterval;c.interval=l&&Vs(n)?i.binaryInterval:i.interval,f=Us(t,a,c,{listener:s,rawEmitter:this.fsw._emitRaw})}else f=zs(t,a,c,{listener:s,errHandler:this._boundHandleError,rawEmitter:this.fsw._emitRaw});return f}_handleFile(t,s,i){if(this.fsw.closed)return;let r=w.dirname(t),n=w.basename(t),o=this.fsw._getWatchedDir(r),a=s;if(o.has(n))return;let c=async(l,d)=>{if(this.fsw._throttle($s,t,5)){if(!d||d.mtimeMs===0)try{let u=await ut(t);if(this.fsw.closed)return;let h=u.atimeMs,v=u.mtimeMs;if((!h||h<=v||v!==a.mtimeMs)&&this.fsw._emit(P.CHANGE,t,u),(Fs||Ls||Os)&&a.ino!==u.ino){this.fsw._closeFile(l),a=u;let L=this._watchWithNodeFs(t,c);L&&this.fsw._addPathCloser(l,L)}else a=u}catch{this.fsw._remove(r,n)}else if(o.has(n)){let u=d.atimeMs,h=d.mtimeMs;(!u||u<=h||h!==a.mtimeMs)&&this.fsw._emit(P.CHANGE,t,d),a=d}}},f=this._watchWithNodeFs(t,c);if(!(i&&this.fsw.options.ignoreInitial)&&this.fsw._isntIgnored(t)){if(!this.fsw._throttle(P.ADD,t,0))return;this.fsw._emit(P.ADD,t,s)}return f}async _handleSymlink(t,s,i,r){if(this.fsw.closed)return;let n=t.fullPath,o=this.fsw._getWatchedDir(s);if(!this.fsw.options.followSymlinks){this.fsw._incrReadyCount();let a;try{a=await Ce(i)}catch{return this.fsw._emitReady(),!0}return this.fsw.closed?void 0:(o.has(r)?this.fsw._symlinkPaths.get(n)!==a&&(this.fsw._symlinkPaths.set(n,a),this.fsw._emit(P.CHANGE,i,t.stats)):(o.add(r),this.fsw._symlinkPaths.set(n,a),this.fsw._emit(P.ADD,i,t.stats)),this.fsw._emitReady(),!0)}if(this.fsw._symlinkPaths.has(n))return!0;this.fsw._symlinkPaths.set(n,!0)}_handleRead(t,s,i,r,n,o,a){if(t=w.join(t,""),a=this.fsw._throttle("readdir",t,1e3),!a)return;let c=this.fsw._getWatchedDir(i.path),f=new Set,l=this.fsw._readdirp(t,{fileFilter:d=>i.filterPath(d),directoryFilter:d=>i.filterDir(d)});if(l)return l.on(ks,async d=>{if(this.fsw.closed){l=void 0;return}let u=d.path,h=w.join(t,u);if(f.add(u),!(d.stats.isSymbolicLink()&&await this._handleSymlink(d,t,h,u))){if(this.fsw.closed){l=void 0;return}(u===r||!r&&!c.has(u))&&(this.fsw._incrReadyCount(),h=w.join(n,w.relative(n,h)),this._addToNodeFs(h,s,i,o+1))}}).on(P.ERROR,this._boundHandleError),new Promise((d,u)=>{if(!l)return u();l.once(Fe,()=>{if(this.fsw.closed){l=void 0;return}let h=a?a.clear():!1;d(void 0),c.getChildren().filter(v=>v!==t&&!f.has(v)).forEach(v=>{this.fsw._remove(t,v)}),l=void 0,h&&this._handleRead(t,!1,i,r,n,o,a)})})}async _handleDir(t,s,i,r,n,o,a){let c=this.fsw._getWatchedDir(w.dirname(t)),f=c.has(w.basename(t));!(i&&this.fsw.options.ignoreInitial)&&!n&&!f&&this.fsw._emit(P.ADD_DIR,t,s),c.add(w.basename(t)),this.fsw._getWatchedDir(t);let l,d,u=this.fsw.options.depth;if((u==null||r<=u)&&!this.fsw._symlinkPaths.has(a)){if(!n&&(await this._handleRead(t,i,o,n,t,r,l),this.fsw.closed))return;d=this._watchWithNodeFs(t,(h,v)=>{v&&v.mtimeMs===0||this._handleRead(h,!1,o,n,t,r,l)})}return d}async _addToNodeFs(t,s,i,r,n){let o=this.fsw._emitReady;if(this.fsw._isIgnored(t)||this.fsw.closed)return o(),!1;let a=this.fsw._getWatchHelpers(t);i&&(a.filterPath=c=>i.filterPath(c),a.filterDir=c=>i.filterDir(c));try{let c=await js[a.statMethod](a.watchPath);if(this.fsw.closed)return;if(this.fsw._isIgnored(a.watchPath,c))return o(),!1;let f=this.fsw.options.followSymlinks,l;if(c.isDirectory()){let d=w.resolve(t),u=f?await Ce(t):t;if(this.fsw.closed||(l=await this._handleDir(a.watchPath,c,s,r,n,a,u),this.fsw.closed))return;d!==u&&u!==void 0&&this.fsw._symlinkPaths.set(d,u)}else if(c.isSymbolicLink()){let d=f?await Ce(t):t;if(this.fsw.closed)return;let u=w.dirname(a.watchPath);if(this.fsw._getWatchedDir(u).add(a.watchPath),this.fsw._emit(P.ADD,a.watchPath,c),l=await this._handleDir(u,c,s,r,t,a,d),this.fsw.closed)return;d!==void 0&&this.fsw._symlinkPaths.set(w.resolve(t),d)}else l=this._handleFile(a.watchPath,c,s);return o(),l&&this.fsw._addPathCloser(t,l),!1}catch(c){if(this.fsw._handleError(c))return o(),t}}};var Oe="/",Bs="//",Et=".",Js="..",Qs="string",Xs=/\\/g,gt=/\/\//,Zs=/\..*\.(sw[px])$|~$|\.subl.*\.tmp/,er=/^\.[/\\]/;function le(e){return Array.isArray(e)?e:[e]}var $e=e=>typeof e=="object"&&e!==null&&!(e instanceof RegExp);function tr(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 sr(e){if(typeof e!="string")throw new Error("string expected");e=p.normalize(e),e=e.replace(/\\/g,"/");let t=!1;e.startsWith("//")&&(t=!0);let s=/\/\//;for(;e.match(s);)e=e.replace(s,"/");return t&&(e="/"+e),e}function _t(e,t,s){let i=sr(t);for(let r=0;r<e.length;r++){let n=e[r];if(n(i,s))return!0}return!1}function rr(e,t){if(e==null)throw new TypeError("anymatch: specify first argument");let i=le(e).map(r=>tr(r));return t==null?(r,n)=>_t(i,r,n):_t(i,t)}var wt=e=>{let t=le(e).flat();if(!t.every(s=>typeof s===Qs))throw new TypeError(`Non-string provided as watch path: ${t}`);return t.map(bt)},yt=e=>{let t=e.replace(Xs,Oe),s=!1;for(t.startsWith(Bs)&&(s=!0);t.match(gt);)t=t.replace(gt,Oe);return s&&(t=Oe+t),t},bt=e=>yt(p.normalize(yt(e))),vt=(e="")=>t=>typeof t=="string"?bt(p.isAbsolute(t)?t:p.join(e,t)):t,ir=(e,t)=>p.isAbsolute(e)?e:p.join(t,e),nr=Object.freeze(new Set),je=class{constructor(t,s){this.path=t,this._removeWatcher=s,this.items=new Set}add(t){let{items:s}=this;s&&t!==Et&&t!==Js&&s.add(t)}async remove(t){let{items:s}=this;if(!s||(s.delete(t),s.size>0))return;let i=this.path;try{await Gs(i)}catch{this._removeWatcher&&this._removeWatcher(p.dirname(i),p.basename(i))}}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=ae,this.items=nr,Object.freeze(this)}},or="stat",ar="lstat",We=class{constructor(t,s,i){this.fsw=i;let r=t;this.path=t=t.replace(er,""),this.watchPath=r,this.fullWatchPath=p.resolve(r),this.dirParts=[],this.dirParts.forEach(n=>{n.length>1&&n.pop()}),this.followSymlinks=s,this.statMethod=s?or:ar}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 i=this.entryPath(t);return this.fsw._isntIgnored(i,s)&&this.fsw._hasReadPermissions(s)}filterDir(t){return this.fsw._isntIgnored(this.entryPath(t),t.stats)}},de=class extends qs{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,i={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?le(t.ignored):le([]),awaitWriteFinish:s===!0?i:typeof s=="object"?{...i,...s}:!1};ht&&(r.usePolling=!0),r.atomic===void 0&&(r.atomic=!r.usePolling);let n=process.env.CHOKIDAR_USEPOLLING;if(n!==void 0){let c=n.toLowerCase();c==="false"||c==="0"?r.usePolling=!1:c==="true"||c==="1"?r.usePolling=!0:r.usePolling=!!c}let o=process.env.CHOKIDAR_INTERVAL;o&&(r.interval=Number.parseInt(o,10));let a=0;this._emitReady=()=>{a++,a>=this._readyCount&&(this._emitReady=ae,this._readyEmitted=!0,process.nextTick(()=>this.emit(y.READY)))},this._emitRaw=(...c)=>this.emit(y.RAW,...c),this._boundRemove=this._remove.bind(this),this.options=r,this._nodeFsHandler=new oe(this),Object.freeze(r)}_addIgnoredPath(t){if($e(t)){for(let s of this._ignoredPaths)if($e(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)$e(s)&&s.path===t&&this._ignoredPaths.delete(s)}add(t,s,i){let{cwd:r}=this.options;this.closed=!1,this._closePromise=void 0;let n=wt(t);return r&&(n=n.map(o=>ir(o,r))),n.forEach(o=>{this._removeIgnoredPath(o)}),this._userIgnored=void 0,this._readyCount||(this._readyCount=0),this._readyCount+=n.length,Promise.all(n.map(async o=>{let a=await this._nodeFsHandler._addToNodeFs(o,!i,void 0,0,s);return a&&this._emitReady(),a})).then(o=>{this.closed||o.forEach(a=>{a&&this.add(p.dirname(a),p.basename(s||a))})}),this}unwatch(t){if(this.closed)return this;let s=wt(t),{cwd:i}=this.options;return s.forEach(r=>{!p.isAbsolute(r)&&!this._closers.has(r)&&(i&&(r=p.join(i,r)),r=p.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(i=>{let r=i();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,i)=>{let n=(this.options.cwd?p.relative(this.options.cwd,i):i)||Et;t[n]=s.getChildren().sort()}),t}emitWithAll(t,s){this.emit(t,...s),t!==y.ERROR&&this.emit(y.ALL,t,...s)}async _emit(t,s,i){if(this.closed)return;let r=this.options;Le&&(s=p.normalize(s)),r.cwd&&(s=p.relative(r.cwd,s));let n=[s];i!=null&&n.push(i);let o=r.awaitWriteFinish,a;if(o&&(a=this._pendingWrites.get(s)))return a.lastChange=new Date,this;if(r.atomic){if(t===y.UNLINK)return this._pendingUnlinks.set(s,[t,...n]),setTimeout(()=>{this._pendingUnlinks.forEach((c,f)=>{this.emit(...c),this.emit(y.ALL,...c),this._pendingUnlinks.delete(f)})},typeof r.atomic=="number"?r.atomic:100),this;t===y.ADD&&this._pendingUnlinks.has(s)&&(t=y.CHANGE,this._pendingUnlinks.delete(s))}if(o&&(t===y.ADD||t===y.CHANGE)&&this._readyEmitted){let c=(f,l)=>{f?(t=y.ERROR,n[0]=f,this.emitWithAll(t,n)):l&&(n.length>1?n[1]=l:n.push(l),this.emitWithAll(t,n))};return this._awaitWriteFinish(s,o.stabilityThreshold,t,c),this}if(t===y.CHANGE&&!this._throttle(y.CHANGE,s,50))return this;if(r.alwaysStat&&i===void 0&&(t===y.ADD||t===y.ADD_DIR||t===y.CHANGE)){let c=r.cwd?p.join(r.cwd,s):s,f;try{f=await Hs(c)}catch{}if(!f||this.closed)return;n.push(f)}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(y.ERROR,t),t||this.closed}_throttle(t,s,i){this._throttled.has(t)||this._throttled.set(t,new Map);let r=this._throttled.get(t);if(!r)throw new Error("invalid throttle");let n=r.get(s);if(n)return n.count++,!1;let o,a=()=>{let f=r.get(s),l=f?f.count:0;return r.delete(s),clearTimeout(o),f&&clearTimeout(f.timeoutObject),l};o=setTimeout(a,i);let c={timeoutObject:o,clear:a,count:0};return r.set(s,c),c}_incrReadyCount(){return this._readyCount++}_awaitWriteFinish(t,s,i,r){let n=this.options.awaitWriteFinish;if(typeof n!="object")return;let o=n.pollInterval,a,c=t;this.options.cwd&&!p.isAbsolute(t)&&(c=p.join(this.options.cwd,t));let f=new Date,l=this._pendingWrites;function d(u){Ks(c,(h,v)=>{if(h||!l.has(t)){h&&h.code!=="ENOENT"&&r(h);return}let L=Number(new Date);u&&v.size!==u.size&&(l.get(t).lastChange=L);let z=l.get(t);L-z.lastChange>=s?(l.delete(t),r(void 0,v)):a=setTimeout(d,o,v)})}l.has(t)||(l.set(t,{lastChange:f,cancelWait:()=>(l.delete(t),clearTimeout(a),i)}),a=setTimeout(d,o))}_isIgnored(t,s){if(this.options.atomic&&Zs.test(t))return!0;if(!this._userIgnored){let{cwd:i}=this.options,n=(this.options.ignored||[]).map(vt(i)),a=[...[...this._ignoredPaths].map(vt(i)),...n];this._userIgnored=rr(a,void 0)}return this._userIgnored(t,s)}_isntIgnored(t,s){return!this._isIgnored(t,s)}_getWatchHelpers(t){return new We(t,this.options.followSymlinks,this)}_getWatchedDir(t){let s=p.resolve(t);return this._watched.has(s)||this._watched.set(s,new je(s,this._boundRemove)),this._watched.get(s)}_hasReadPermissions(t){return this.options.ignorePermissionErrors?!0:!!(Number(t.mode)&256)}_remove(t,s,i){let r=p.join(t,s),n=p.resolve(r);if(i=i??(this._watched.has(r)||this._watched.has(n)),!this._throttle("remove",r,100))return;!i&&this._watched.size===1&&this.add(t,s,!0),this._getWatchedDir(r).getChildren().forEach(u=>this._remove(r,u));let c=this._getWatchedDir(t),f=c.has(s);c.remove(s),this._symlinkPaths.has(n)&&this._symlinkPaths.delete(n);let l=r;if(this.options.cwd&&(l=p.relative(this.options.cwd,r)),this.options.awaitWriteFinish&&this._pendingWrites.has(l)&&this._pendingWrites.get(l).cancelWait()===y.ADD)return;this._watched.delete(r),this._watched.delete(n);let d=i?y.UNLINK_DIR:y.UNLINK;f&&!this._isIgnored(r)&&this._emit(d,r),this._closePath(r)}_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(i=>i()),this._closers.delete(t))}_addPathCloser(t,s){if(!s)return;let i=this._closers.get(t);i||(i=[],this._closers.set(t,i)),i.push(s)}_readdirp(t,s){if(this.closed)return;let i={type:y.ALL,alwaysStat:!0,lstat:!0,...s,depth:0},r=lt(t,i);return this._streams.add(r),r.once(pt,()=>{r=void 0}),r.once(Fe,()=>{r&&(this._streams.delete(r),r=void 0)}),r}};function cr(e,t={}){let s=new de(t);return s.add(e),s}var Dt={watch:cr,FSWatcher:de};import{copyFileSync as lr,existsSync as S,mkdirSync as dr,readdirSync as Ve,readFileSync as fr,writeFileSync as ur}from"fs";import{basename as xt,dirname as Pt,extname as pr,join as T,normalize as hr,relative as M,resolve as Nt,sep as mr}from"path";var gr=/import\s+(?:(?:{[^}]*})|(?:[^{}\s,]*))?\s*(?:,\s*(?:{[^}]*}))?\s*from\s+['"]([./]+[^'"]*)['"]/g,_r=/import\s+(?:(?:{[^}]*})|(?:[^{}\s,]*))?\s*(?:,\s*(?:{[^}]*}))?\s*from\s+['"](@\/[^'"]*)['"]/g,wr=/import\s*\(\s*['"](@\/[^'"]*)['"]\s*\)/g,fe=/\.(js|jsx|ts|tsx)$/,Me=/^page\.(tsx|ts|jsx|js)$/i,G=(e,t)=>{let i=M(t,e).split(mr);i.pop();let r=i.filter(n=>!n.startsWith("("));return hr(r.join("/"))},ue=e=>{let t=new Map,s=i=>{if(S(i))for(let r of Ve(i,{withFileTypes:!0})){let n=T(i,r.name);if(r.isDirectory()){s(n);continue}if(Me.test(r.name)){let o=G(n,e);t.set(o,n)}}};return s(e),t},yr=(e,t)=>{let s=e.replace(gr,(i,r)=>{if(r.startsWith(".")){let o=r.replace(fe,"").replace(/^(?:\.\.\/)+/,"");return i.replace(r,`${t}/${o}`)}return i});return s=s.replace(_r,(i,r)=>{let n=r.replace(/^@\//,"").replace(fe,"");return i.replace(r,`${t}/${n}`)}),s=s.replace(wr,(i,r)=>{let n=r.replace(/^@\//,"").replace(fe,"");return i.replace(r,`${t}/${n}`)}),s=s.replace(/dynamic\s*\(\s*\(\s*=>\s*import\s*\(\s*['"](@\/[^'"]*)['"]\s*\)\s*\)\s*\)/g,(i,r)=>{let n=r.replace(/^@\//,"").replace(fe,"");return i.replace(r,`${t}/${n}`)}),s};function pe(e){let t=e;for(;t!==Nt(t,"..");){let i=T(t,"turbo.json");if(S(i))return t;t=Nt(t,"..")}let s=T(e,"package.json");if(S(s))return e;throw new Error("\u274C Could not locate project root")}function he(e){let t=T(e,"src","app","[locale]");if(S(t))return t;let i=(n=>{let o=[];if(!S(n))return o;let a=(c,f=0)=>{if(!(f>4))try{let l=Ve(c,{withFileTypes:!0});for(let d of l){if(!d.isDirectory())continue;let u=T(c,d.name);if(d.name==="[locale]"&&Pt(u).endsWith(T("src","app"))){o.push(u);continue}a(u,f+1)}}catch{}};return a(n),o})(e);return i.length>0?i[0]:T(e,"apps","docs","src","app","[locale]")}var q=e=>{let t=[];if(!S(e))return t;let s=Ve(e,{withFileTypes:!0});for(let i of s){let r=T(e,i.name);i.isDirectory()?t.push(...q(r)):t.push(r)}return t},B=e=>S(e)?q(e).length===0:!0,Ye=(e,t,s,i,r,n,o=!0)=>{let a=xt(e);if(Me.test(a)){let c=G(t,r),f=i.get(c);if(f&&f!==t){o&&console.log(`\x1B[31mSkipped duplicate page:\x1B[0m ${M(n,t)} (collides with ${M(n,f)})`);return}}try{let c=Pt(t);S(c)||dr(c,{recursive:!0});let f=pr(e);if(s&&[".js",".jsx",".ts",".tsx"].includes(f)){let l=fr(e,"utf-8"),d=yr(l,s);ur(t,d)}else lr(e,t);if(o){let l=e.indexOf(T("src","app")),d;l!==-1?d=e.substring(l):e.startsWith(n)?d=M(n,e):d=e;let u=t.startsWith(n)?M(n,t):t;console.log(`\x1B[32mCopied:\x1B[0m ${d} \u2192 ${u}`)}if(Me.test(xt(t))){let l=G(t,r);i.set(l,t)}}catch(c){console.error(`\x1B[31mError copying file:\x1B[0m ${e}`,c)}},It=(e,t,s,i,r,n,o=!0)=>{if(!S(e)||B(e))return;let a=q(e);for(let c of a){let f=M(e,c),l=T(t,f);Ye(c,l,s,i,r,n,o)}};var Tt=e=>{let t=I(g(e,"src","vitnode.config.ts"));return I(g(e,"src","vitnode.api.config.ts"))&&!t?"api":t?"web":null},xr=(e,t,s,i)=>{let r=[],n=g(t,"apps");if(I(n)){let a=I(n)?Er(n,{withFileTypes:!0}).filter(c=>c.isDirectory()).map(c=>c.name):[];for(let c of a){let f=g(t,"apps",c),l=Tt(f);l==="web"?r.push({sourceDir:g(e,"src","app_admin"),destinationDir:g(f,"src","app","[locale]","admin","(auth)",g("(plugins)",`(${i})`))},{sourceDir:g(e,"src","app"),destinationDir:g(f,"src","app","[locale]","(main)",g("(plugins)",`(${i})`))},{sourceDir:g(e,"src","locales"),destinationDir:g(f,"src","locales",s)}):l==="api"&&r.push({sourceDir:g(e,"src","locales"),destinationDir:g(f,"src","locales",s)})}}else{let a=process.cwd(),c=Tt(a);c==="web"?r.push({sourceDir:g(e,"src","app_admin"),destinationDir:g(a,"src","app","[locale]","admin","(auth)",g("(plugins)",`(${i})`))},{sourceDir:g(e,"src","app"),destinationDir:g(a,"src","app","[locale]","(main)",g("(plugins)",`(${i})`))},{sourceDir:g(e,"src","locales"),destinationDir:g(a,"src","locales",s)}):c==="api"&&r.push({sourceDir:g(e,"src","locales"),destinationDir:g(a,"src","locales",s)})}return r},Nr=e=>{for(let{sourceDir:t,destinationDir:s}of e)I(t)&&!B(t)&&!I(s)&&vr(s,{recursive:!0})},Pr=(e,t,s,i)=>({copyFileWrapper:(o,a)=>{Ye(o,a,e,t,s,i)},removeFile:o=>{try{if(I(o)&&(Dr(o),console.log(`\x1B[33mRemoved:\x1B[0m ${o}`),/^page\.(tsx|ts|jsx|js)$/i.test(Rt(o)))){let a=G(o,s);t.get(a)===o&&t.delete(a)}}catch(a){console.error(`\x1B[31mError removing file:\x1B[0m ${o}`,a)}}}),Ir=(e,t,s)=>{if(!I(t)||t.includes(g("src","locales")))return;let r=q(t);for(let n of r){let o=At(t,n),a=g(e,o);I(a)||s(n)}},Tr=e=>t=>{let s=e.filter(({sourceDir:i})=>{let r=t.replace(/\\/g,"/"),n=i.replace(/\\/g,"/");return r===n||r.startsWith(`${n}/`)});if(s.length===0)throw new Error(`No matching source directory for: ${t}`);return s.map(i=>{let r=At(i.sourceDir,t);return g(i.destinationDir,r)})},Rr=(e,t,s,i)=>{let r=Dt.watch(e,{ignoreInitial:!1,persistent:!0});return r.on("add",n=>{t(n).forEach(a=>s(n,a))}).on("change",n=>{t(n).forEach(a=>s(n,a))}).on("unlink",n=>{t(n).forEach(a=>i(a))}).on("error",n=>{console.error("\x1B[31mWatcher error:\x1B[0m",n)}),r},Ct=({initMessage:e})=>{let t=process.cwd(),s=pe(t),i=he(s),r=ue(i),n=Rt(t);try{let u=g(t,"package.json");I(u)&&(n=JSON.parse(br(u,"utf-8")).name??"")}catch(u){console.error("\x1B[31mError reading package.json:\x1B[0m",u);return}let o=n.replace(/\//g,"-").replace(/@/g,""),a=xr(t,s,n,o);Nr(a);let{copyFileWrapper:c,removeFile:f}=Pr(n,r,i,s);for(let{sourceDir:u,destinationDir:h}of a)Ir(u,h,f);console.log(`${e} \x1B[34mWatching for changes in plugins...\x1B[0m`);let l=a.map(u=>u.sourceDir).filter(u=>I(u)),d=Tr(a);Rr(l,d,c,f)};import{count as Mt}from"drizzle-orm";import{relations as Ot}from"drizzle-orm";import{index as Ee,pgTable as $t}from"drizzle-orm/pg-core";import{pgTable as Ar}from"drizzle-orm/pg-core";var D=Ar("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:19})})).enableRLS();import{relations as kt}from"drizzle-orm";import{index as Ft,pgTable as Lt}from"drizzle-orm/pg-core";import{relations as ye}from"drizzle-orm";import{index as ge,pgTable as ve}from"drizzle-orm/pg-core";import{relations as Cr}from"drizzle-orm";import{index as ze,pgTable as St}from"drizzle-orm/pg-core";var R=St("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().$onUpdate(()=>new Date),time24:e.boolean().notNull().default(!1)}),e=>[ze("core_languages_code_idx").on(e.code),ze("core_languages_name_idx").on(e.name)]).enableRLS(),me=St("core_languages_words",e=>({id:e.serial().primaryKey(),languageCode:e.varchar().notNull().references(()=>R.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=>[ze("core_languages_words_lang_code_idx").on(e.languageCode)]).enableRLS(),hi=Cr(me,({one:e})=>({language:e(R,{fields:[me.languageCode],references:[R.code]})}));var m=ve("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(()=>R.code,{onDelete:"set default"})}),e=>[ge("core_users_name_code_idx").on(e.nameCode),ge("core_users_name_idx").on(e.name),ge("core_users_email_idx").on(e.email)]).enableRLS(),vi=ye(m,({one:e,many:t})=>({group:e(D,{fields:[m.roleId],references:[D.id]}),language:e(R,{fields:[m.language],references:[R.code]}),confirm_email:e(_e,{fields:[m.id],references:[_e.userId]}),sso:t(Ue),forgot_password:e(we,{fields:[m.id],references:[we.userId]})})),Ue=ve("core_users_sso",e=>({userId:e.integer().references(()=>m.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().$onUpdate(()=>new Date)}),e=>[ge("core_users_sso_user_id_idx").on(e.userId)]).enableRLS(),Ei=ye(Ue,({one:e})=>({user:e(m,{fields:[Ue.userId],references:[m.id]})})),_e=ve("core_users_confirm_emails",e=>({id:e.serial().primaryKey(),userId:e.integer().references(()=>m.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(),bi=ye(_e,({one:e})=>({user:e(m,{fields:[_e.userId],references:[m.id]})})),we=ve("core_users_forgot_password",e=>({id:e.serial().primaryKey(),userId:e.integer().references(()=>m.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(),Di=ye(we,({one:e})=>({user:e(m,{fields:[we.userId],references:[m.id]})}));var J=Lt("core_sessions",e=>({id:e.serial().primaryKey(),token:e.varchar({length:255}).notNull().unique(),userId:e.integer().notNull().references(()=>m.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),deviceId:e.integer().references(()=>k.id,{onDelete:"cascade"}).notNull()}),e=>[Ft("core_sessions_user_id_idx").on(e.userId)]).enableRLS(),Ti=kt(J,({one:e})=>({user:e(m,{fields:[J.userId],references:[m.id]}),device:e(k,{fields:[J.deviceId],references:[k.id]})})),k=Lt("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=>[Ft("core_sessions_known_devices_ip_address_idx").on(e.ipAddress)]).enableRLS(),Ri=kt(k,({one:e})=>({session:e(J,{fields:[k.id],references:[J.deviceId]})}));var Q=$t("core_admin_permissions",e=>({id:e.serial().primaryKey(),roleId:e.integer().references(()=>D.id,{onDelete:"cascade"}),userId:e.integer().references(()=>m.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1)}),e=>[Ee("core_admin_permissions_role_id_idx").on(e.roleId),Ee("core_admin_permissions_user_id_idx").on(e.userId)]).enableRLS(),Oi=Ot(Q,({one:e})=>({group:e(D,{fields:[Q.roleId],references:[D.id]}),user:e(m,{fields:[Q.userId],references:[m.id]})})),Ke=$t("core_admin_sessions",e=>({id:e.serial().primaryKey(),token:e.varchar({length:255}).notNull().unique(),userId:e.integer().notNull().references(()=>m.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),lastSeen:e.timestamp().notNull().defaultNow(),expiresAt:e.timestamp().notNull(),deviceId:e.integer().references(()=>k.id,{onDelete:"cascade"}).notNull()}),e=>[Ee("core_admin_sessions_token_idx").on(e.token),Ee("core_admin_sessions_user_id_idx").on(e.userId)]).enableRLS(),$i=Ot(Ke,({one:e})=>({user:e(m,{fields:[Ke.userId],references:[m.id]}),device:e(k,{fields:[Ke.deviceId],references:[k.id]})}));import{relations as Sr}from"drizzle-orm";import{index as jt,pgTable as kr}from"drizzle-orm/pg-core";var X=kr("core_moderators_permissions",e=>({id:e.serial().primaryKey(),roleId:e.integer().references(()=>D.id,{onDelete:"cascade"}),userId:e.integer().references(()=>m.id,{onDelete:"cascade"}),createdAt:e.timestamp().notNull().defaultNow(),updatedAt:e.timestamp().notNull().$onUpdate(()=>new Date),protected:e.boolean().notNull().default(!1)}),e=>[jt("core_moderators_permissions_role_id_idx").on(e.roleId),jt("core_moderators_permissions_user_id_idx").on(e.userId)]).enableRLS(),zi=Sr(X,({one:e})=>({group:e(D,{fields:[X.roleId],references:[D.id]}),user:e(m,{fields:[X.userId],references:[m.id]})}));import{join as Fr}from"path";import{pathToFileURL as Lr}from"url";var $=async({type:e="config"})=>{let t=Fr(process.cwd(),"src",`vitnode.${e}.ts`);try{let i=await import(Lr(t).href);return e==="config"?i.vitNodeConfig:i.vitNodeApiConfig}catch(s){console.error("Failed to load config:",s),process.exit(1)}};import{existsSync as A,readdirSync as Or}from"fs";import{readFile as $r}from"fs/promises";import{join as _,relative as Wt}from"path";var V=async e=>{let t=process.cwd(),s=A(_(t,"src","vitnode.config.ts")),i=A(_(t,"src","vitnode.api.config.ts")),r;e==="--api"&&i?r=await $({type:"api.config"}):e==="--web"&&s?r=await $({}):i&&!s?r=await $({type:"api.config"}):s?r=await $({}):r={plugins:[]};let n=[...r.plugins.map(d=>d.pluginId),"@vitnode/core"],o=pe(process.cwd()),a=he(o),c=ue(a),f=process.cwd(),l=d=>{let u=process.cwd(),h=_(u,"node_modules",d);if(A(h))return h;if(o&&o!==u){let v=_(o,"node_modules",d);if(A(v))return v}return null};await Promise.all(n.map(async d=>{let u=l(d);if(!u){console.error(`\x1B[31mPlugin not found:\x1B[0m ${d} in node_modules`);return}let h="";try{let b=_(u,"package.json");A(b)&&(h=JSON.parse(await $r(b,"utf-8")).name??"")}catch(b){console.error(`\x1B[31mError reading package.json for ${d}:\x1B[0m`,b);return}let v=d.replace(/\//g,"-").replace(/@/g,""),L=b=>{let x=A(_(b,"src","vitnode.config.ts"));return A(_(b,"src","vitnode.api.config.ts"))&&!x?"api":x?"web":null},z=_(o,"apps"),He=A(z),ee=[];if(He){let b=A(z)?Or(z,{withFileTypes:!0}).filter(x=>x.isDirectory()).map(x=>x.name):[];for(let x of b){let F=_(o,"apps",x),Ge=L(F);if(Ge==="web"){let Pe=_(F,"src","app","[locale]","(main)",_("(plugins)",`(${v})`)),Ut=_(F,"src","app","[locale]","admin","(auth)",_("(plugins)",`(${v})`)),Kt=_(F,"src","locales",d);ee.push({sourceDir:_(u,"src","app_admin"),destinationDir:Ut},{sourceDir:_(u,"src","app"),destinationDir:Pe},{sourceDir:_(u,"src","locales"),destinationDir:Kt})}else if(Ge==="api"){let Pe=_(F,"src","locales",d);ee.push({sourceDir:_(u,"src","locales"),destinationDir:Pe})}}}else{let b=_(f,"src","app","[locale]","(main)",_("(plugins)",`(${v})`)),x=_(f,"src","app","[locale]","admin","(auth)",_("(plugins)",`(${v})`)),F=_(f,"src","locales",d);ee.push({sourceDir:_(u,"src","app_admin"),destinationDir:x},{sourceDir:_(u,"src","app"),destinationDir:b},{sourceDir:_(u,"src","locales"),destinationDir:F})}for(let{sourceDir:b,destinationDir:x}of ee)A(b)&&!B(b)&&(console.log(`\x1B[36mCopying ${d}:\x1B[0m ${Wt(o,b)} \u2192 ${Wt(o,x)}`),It(b,x,h,c,a,o,!1))}))};import{spawn as jr}from"child_process";var be=async(e,t=[])=>await new Promise((s,i)=>{let r=jr(e,t,{stdio:"inherit",shell:!0,env:process.env});r.on("error",n=>{i(n)}),r.on("close",n=>{n!==0?i(new Error(`Command failed with exit code ${n}`)):s(!0)})});var De=async()=>{try{await be("npm",["run","drizzle-kit","up"]),await be("npm",["run","drizzle-kit","generate"])}catch(e){console.error("\x1B[31m%s\x1B[0m",e),process.exit(1)}},xe=async()=>{try{await be("npm",["run","drizzle-kit","migrate"])}catch(e){console.error("\x1B[31m%s\x1B[0m",e),process.exit(1)}},Ne=async()=>{let t=(await $({type:"api.config"})).dbProvider,[s]=await t.select({count:Mt()}).from(D).limit(1),[i]=await t.select({count:Mt()}).from(R);if(i.count===0&&await t.insert(R).values([{code:"en",name:"English (USA)",default:!0,protected:!0,timezone:"America/New_York"}]),s.count===0){let r=await t.insert(D).values([{protected:!0,guest:!0},{protected:!0,default:!0},{protected:!0,color:"hsl(122, 80%, 45%)"},{protected:!0,root:!0,color:"hsl(0, 100%, 50%)"}]).returning({id:D.id});await t.insert(me).values([{languageCode:"en",pluginCode:"core",itemId:r[0].id,value:"Guest",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:r[1].id,value:"Member",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:r[2].id,value:"Moderator",tableName:"core_roles",variable:"name"},{languageCode:"en",pluginCode:"core",itemId:r[3].id,value:"Administrator",tableName:"core_roles",variable:"name"}]),await t.insert(X).values([{roleId:r[2].id,protected:!0},{roleId:r[3].id,protected:!0}]),await t.insert(Q).values({roleId:r[3].id,protected:!0})}},Vt=async({initMessage:e,flag:t})=>{let s=[];t==="--web"?s.push({label:"Prepare plugins files...",action:async()=>await V(t)}):t==="--api"?s.push({label:"Prepare plugins files...",action:async()=>await V(t)},{label:"Generate migrations...",action:De},{label:"Run migrations...",action:xe},{label:"Insert initial data...",action:Ne}):s.push({label:"Prepare plugins files...",action:async()=>await V(t)},{label:"Generate migrations...",action:De},{label:"Run migrations...",action:xe},{label:"Insert initial data...",action:Ne});for(let i=0;i<s.length;i++){let r=s[i],n=`[${i+1}/${s.length}]`;r.label==="Insert initial data..."?console.log(`
9
+ ${e} ${n} ${r.label}`):console.log(`${e} ${n} ${r.label}`),await r.action()}console.log(`${e} \x1B[32mInitial setup completed.\x1B[0m`),process.exit(0)};(0,zt.config)({quiet:!0});var Y="\x1B[34m[VitNode]\x1B[0m",Yt=process.argv[2],Z=process.argv[3];switch(Yt){case"init":Vt({initMessage:Y,flag:Z});break;case"migrate":await De(),Z==="--generate"&&(console.log(`${Y} \x1B[32mDatabase migrations generated successfully.\x1B[0m`),process.exit(0)),await xe(),await Ne(),console.log(`${Y} \x1B[32mDatabase migrated successfully.\x1B[0m`),process.exit(0);break;case"plugin":(Z==="--w"||Z==="--watch")&&Ct({initMessage:Y});break;case"prepare-plugins":await V(Z),console.log(`${Y} \x1B[32mPlugins prepared successfully.\x1B[0m`),process.exit(0);break;default:console.log(`${Y} \x1B[31mCommand not found: "${Yt??""}"\x1B[0m`),process.exit(1)}
10
10
  /*! Bundled license information:
11
11
 
12
12
  chokidar/esm/index.js:
@@ -0,0 +1,3 @@
1
+ import { type CronAdapter } from "../../../api/lib/cron";
2
+ export declare const NodeCronAdapter: () => CronAdapter;
3
+ //# sourceMappingURL=node-cron.adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-cron.adapter.d.ts","sourceRoot":"","sources":["../../../../../src/api/adapters/cron/node-cron.adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,WAAW,EAAkB,MAAM,gBAAgB,CAAC;AAElE,eAAO,MAAM,eAAe,QAAO,WAQlC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { schedule } from "node-cron";
2
+ import { handleCronJobs } from "../../lib/cron.js";
3
+ export const NodeCronAdapter = ()=>{
4
+ return {
5
+ schedule () {
6
+ schedule("*/1 * * * *", async ()=>{
7
+ await handleCronJobs();
8
+ });
9
+ }
10
+ };
11
+ };
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/api/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAMjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAQzD,UAAU,WAAW;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EACF,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,GAC3D,MAAM,GACN,MAAM,EAAE,CAAC;CACd;AAED,KAAK,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;AAC5E,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;CACrD;AAED,wBAAgB,UAAU,CAAC,EACzB,GAAG,EACH,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,WAAW,EACjB,gBAAgB,GACjB,EAAE;IACD,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,oCAsDA"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/api/config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAOjD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAOzD,UAAU,WAAW;IACnB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EACF,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,GAC3D,MAAM,GACN,MAAM,EAAE,CAAC;CACd;AAED,KAAK,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC;AAC5E,UAAU,WAAW;IACnB,MAAM,CAAC,EAAE,sBAAsB,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;CACrD;AAED,wBAAgB,UAAU,CAAC,EACzB,GAAG,EACH,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,WAAW,EACjB,gBAAgB,GACjB,EAAE;IACD,GAAG,EAAE,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;CACpC,oCAiEA"}
@@ -27,7 +27,10 @@ export function VitNodeAPI({ app, cors: corsOptions, csrf: csrfOptions, vitNodeA
27
27
  authorization: vitNodeApiConfig.authorization,
28
28
  dbProvider: vitNodeApiConfig.dbProvider,
29
29
  captcha: vitNodeApiConfig.captcha,
30
- plugins: vitNodeApiConfig.plugins
30
+ plugins: [
31
+ newBuildPluginApiCore,
32
+ ...vitNodeApiConfig.plugins
33
+ ]
31
34
  }));
32
35
  app.use(async (c, next)=>{
33
36
  if (c.req.path.includes("/admin/")) {
@@ -35,20 +38,29 @@ export function VitNodeAPI({ app, cors: corsOptions, csrf: csrfOptions, vitNodeA
35
38
  }
36
39
  return next();
37
40
  });
41
+ if (vitNodeApiConfig.cronAdapter) {
42
+ vitNodeApiConfig.cronAdapter.schedule();
43
+ }
44
+ [
45
+ newBuildPluginApiCore,
46
+ ...vitNodeApiConfig.plugins
47
+ ].map((root)=>{
48
+ app.route(`/${root.pluginId}`, root.hono);
49
+ });
38
50
  app.onError(async (error, c)=>{
39
51
  if (error instanceof HTTPException) {
40
52
  return error.getResponse();
41
53
  }
42
- await c.get("log").error(`Unhandled error: ${error.message}`);
43
- return new Response(process.env.NODE_ENV === "development" ? error.message : "Internal Server Error", {
54
+ const errorMessage = error?.message ?? "Unknown error";
55
+ try {
56
+ const logger = c.get("log");
57
+ if (logger) {
58
+ await logger.error(`Unhandled error: ${errorMessage}`);
59
+ }
60
+ } catch {}
61
+ return new Response(process.env.NODE_ENV === "development" ? errorMessage : "Internal Server Error", {
44
62
  status: 500
45
63
  });
46
64
  });
47
- [
48
- newBuildPluginApiCore,
49
- ...vitNodeApiConfig.plugins
50
- ].map((root)=>{
51
- app.route(`/${root.pluginId}`, root.hono);
52
- });
53
65
  return app;
54
66
  }
@@ -0,0 +1,18 @@
1
+ import type { Context } from "hono";
2
+ import type { EnvVitNode } from "../middlewares/global.middleware";
3
+ export interface CronAdapter {
4
+ schedule(): void;
5
+ }
6
+ export interface BuildCronReturn {
7
+ name: string;
8
+ schedule: string;
9
+ description?: string;
10
+ handler: (c: Context<EnvVitNode>) => void | Promise<void>;
11
+ }
12
+ export interface CronJobConfig extends BuildCronReturn {
13
+ pluginId: string;
14
+ module: string;
15
+ }
16
+ export declare function buildCron({ name, schedule, handler, description, }: BuildCronReturn): BuildCronReturn;
17
+ export declare const handleCronJobs: () => Promise<void>;
18
+ //# sourceMappingURL=cron.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/cron.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAEnE,MAAM,WAAW,WAAW;IAC1B,QAAQ,IAAI,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;AAED,MAAM,WAAW,aAAc,SAAQ,eAAe;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,QAAQ,EACR,OAAO,EACP,WAAW,GACZ,EAAE,eAAe,GAAG,eAAe,CAEnC;AAED,eAAO,MAAM,cAAc,qBAc1B,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { CONFIG } from "../../lib/config.js";
2
+ export function buildCron({ name, schedule, handler, description }) {
3
+ return {
4
+ name,
5
+ schedule,
6
+ handler,
7
+ description
8
+ };
9
+ }
10
+ export const handleCronJobs = async ()=>{
11
+ const url = new URL("/api/@vitnode/core/cron", CONFIG.api.origin);
12
+ const headers = {
13
+ "Content-Type": "application/json"
14
+ };
15
+ if (CONFIG.cronJobSecret) {
16
+ headers.authorization = `Bearer ${CONFIG.cronJobSecret}`;
17
+ }
18
+ await fetch(url.toString(), {
19
+ method: "POST",
20
+ headers
21
+ });
22
+ };
@@ -1,4 +1,5 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
+ import type { BuildCronReturn } from "./cron";
2
3
  import type { Route } from "./route";
3
4
  export interface BuildModuleType<T extends Route, Plugin extends string> {
4
5
  plugin: Plugin;
@@ -10,14 +11,16 @@ export interface BaseBuildModuleReturn<P extends string = string, M extends stri
10
11
  name: M;
11
12
  pluginId: P;
12
13
  routes: Routes;
14
+ cronJobs: BuildCronReturn[];
13
15
  }
14
16
  export interface BuildModuleReturn<P extends string, M extends string, Routes extends Route<P>[] = Route<P>[], Modules extends BaseBuildModuleReturn<P>[] = BaseBuildModuleReturn<P>[]> extends BaseBuildModuleReturn<P, M, Routes> {
15
17
  modules?: Modules;
16
18
  }
17
- export declare function buildModule<const P extends string, const M extends string, const Routes extends Route<P>[], Modules extends BaseBuildModuleReturn<P>[]>({ routes, pluginId, name, modules, }: {
19
+ export declare function buildModule<const P extends string, const M extends string, const Routes extends Route<P>[], Modules extends BaseBuildModuleReturn<P>[]>({ routes, pluginId, name, modules, cronJobs, }: {
18
20
  modules?: Modules;
19
21
  name: M;
20
22
  pluginId: P;
21
23
  routes: Routes;
24
+ cronJobs?: BuildCronReturn[];
22
25
  }): BuildModuleReturn<P, M, Routes, Modules>;
23
26
  //# sourceMappingURL=module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,SAAS,MAAM;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,CAAC,CAAC;CACX;AAED,MAAM,WAAW,qBAAqB,CACpC,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;IAEtC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB,CAChC,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,EAChB,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EACtC,OAAO,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CACvE,SAAQ,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CACzB,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,EAC/B,OAAO,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAC1C,EACA,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,OAAO,GACR,EAAE;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAgB3C"}
1
+ {"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../../../src/api/lib/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,KAAK,EAAE,MAAM,SAAS,MAAM;IACrE,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,CAAC,CAAC;CACX;AAED,MAAM,WAAW,qBAAqB,CACpC,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,CAAC,SAAS,MAAM,GAAG,MAAM,EACzB,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE;IAEtC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB,CAChC,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,EAChB,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,EACtC,OAAO,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,GAAG,qBAAqB,CAAC,CAAC,CAAC,EAAE,CACvE,SAAQ,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAC3C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,WAAW,CACzB,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,CAAC,SAAS,MAAM,EACtB,KAAK,CAAC,MAAM,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,EAC/B,OAAO,SAAS,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAC1C,EACA,MAAM,EACN,QAAQ,EACR,IAAI,EACJ,OAAO,EACP,QAAa,GACd,EAAE;IACD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,CAAC,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;CAC9B,GAAG,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAgB3C"}
@@ -1,5 +1,5 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
- export function buildModule({ routes, pluginId, name, modules }) {
2
+ export function buildModule({ routes, pluginId, name, modules, cronJobs = [] }) {
3
3
  const hono = new OpenAPIHono();
4
4
  if (routes) {
5
5
  routes.forEach(({ handler, route })=>{
@@ -16,6 +16,7 @@ export function buildModule({ routes, pluginId, name, modules }) {
16
16
  pluginId,
17
17
  hono,
18
18
  name,
19
- modules
19
+ modules,
20
+ cronJobs
20
21
  };
21
22
  }
@@ -1,8 +1,10 @@
1
1
  import { OpenAPIHono } from "@hono/zod-openapi";
2
+ import type { CronJobConfig } from "./cron";
2
3
  import type { BuildModuleReturn } from "./module";
3
4
  export interface BuildPluginApiReturn {
4
5
  hono: OpenAPIHono;
5
6
  pluginId: string;
7
+ cronJobs: Omit<CronJobConfig, "pluginId">[];
6
8
  }
7
9
  export declare function buildApiPlugin<P extends string>({ pluginId, modules, }: {
8
10
  modules?: BuildModuleReturn<P, string>[];
@@ -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,UAAU,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,EAC/C,QAAQ,EACR,OAAY,GACb,EAAE;IACD,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC;CACb,GAAG,oBAAoB,CAavB"}
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,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,CAAC;CAC7C;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,EAAE,EAC/C,QAAQ,EACR,OAAY,GACb,EAAE;IACD,OAAO,CAAC,EAAE,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC;IACzC,QAAQ,EAAE,CAAC,CAAC;CACb,GAAG,oBAAoB,CAmBvB"}
@@ -4,11 +4,19 @@ export function buildApiPlugin({ pluginId, modules = [] }) {
4
4
  // Run for checking if the plugin is valid
5
5
  checkPluginId(pluginId);
6
6
  const hono = new OpenAPIHono();
7
+ const cronJobs = [];
7
8
  modules.forEach((handler)=>{
8
9
  hono.route(`/${handler.name}`, handler.hono);
10
+ handler.cronJobs?.forEach((cron)=>{
11
+ cronJobs.push({
12
+ ...cron,
13
+ module: handler.name
14
+ });
15
+ });
9
16
  });
10
17
  return {
11
18
  pluginId,
12
- hono
19
+ hono,
20
+ cronJobs
13
21
  };
14
22
  }
@@ -0,0 +1,3 @@
1
+ import type { Context, Next } from "hono";
2
+ export declare const cronAuthMiddleware: () => (c: Context, next: Next) => Promise<void>;
3
+ //# sourceMappingURL=cron-auth.middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-auth.middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/middlewares/cron-auth.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG1C,eAAO,MAAM,kBAAkB,SACf,GAAG,OAAO,EAAE,MAAM,IAAI,kBAerC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { HTTPException } from "hono/http-exception";
2
+ export const cronAuthMiddleware = ()=>{
3
+ return async (c, next)=>{
4
+ const cronSecret = c.get("core").cronSecret;
5
+ if (!cronSecret) {
6
+ throw new HTTPException(403, {
7
+ message: "Cron access not configured"
8
+ });
9
+ }
10
+ const authHeader = c.req.header("authorization");
11
+ const providedSecret = authHeader?.replace("Bearer ", "");
12
+ if (providedSecret !== cronSecret) {
13
+ throw new HTTPException(403, {
14
+ message: "Invalid cron authorization"
15
+ });
16
+ }
17
+ await next();
18
+ };
19
+ };
@@ -1,6 +1,7 @@
1
1
  import type { Context, Env, Next } from "hono";
2
2
  import { type EmailModelSendArgs } from "../../api/models/email";
3
3
  import type { VitNodeApiConfig, VitNodeConfig } from "../../vitnode.config";
4
+ import type { BuildCronReturn } from "../lib/cron";
4
5
  import { type LoggerMiddlewareType } from "../lib/logger-middleware";
5
6
  import type { SSOApiPlugin } from "../models/sso";
6
7
  declare module "hono" {
@@ -37,6 +38,7 @@ export interface EnvVariablesVitNode {
37
38
  ssoAdapters: SSOApiPlugin[];
38
39
  };
39
40
  captcha?: Pick<VitNodeApiConfig, "captcha">["captcha"];
41
+ cronSecret?: string;
40
42
  email?: VitNodeApiConfig["email"];
41
43
  metadata: {
42
44
  shortTitle?: string;
@@ -48,6 +50,10 @@ export interface EnvVariablesVitNode {
48
50
  plugins: {
49
51
  id: string;
50
52
  }[];
53
+ cron: ({
54
+ pluginId: string;
55
+ module: string;
56
+ } & BuildCronReturn)[];
51
57
  };
52
58
  db: Pick<VitNodeApiConfig, "dbProvider">["dbProvider"];
53
59
  email: {
@@ -1 +1 @@
1
- {"version":3,"file":"global.middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/middlewares/global.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG/C,OAAO,EAAc,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAU,kBAAmB,SAAQ,mBAAmB;KAAG;CAC5D;AAED,MAAM,WAAW,UAAW,SAAQ,GAAG;IACrC,SAAS,EAAE,mBAAmB,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,IAAI,GAAG;QACZ,IAAI,EAAE;YACJ,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;YACtB,SAAS,EAAE,IAAI,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;YACd,aAAa,EAAE,OAAO,CAAC;YACvB,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,UAAU,EAAE,OAAO,CAAC;YACpB,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;KACH,CAAC;IACF,IAAI,EAAE;QACJ,aAAa,EAAE;YACb,kBAAkB,EAAE,MAAM,CAAC;YAC3B,eAAe,EAAE,MAAM,CAAC;YACxB,cAAc,EAAE,MAAM,CAAC;YACvB,UAAU,EAAE,MAAM,CAAC;YACnB,YAAY,EAAE,OAAO,CAAC;YACtB,mBAAmB,EAAE,MAAM,CAAC;YAC5B,gBAAgB,EAAE,MAAM,CAAC;YACzB,WAAW,EAAE,YAAY,EAAE,CAAC;SAC7B,CAAC;QACF,OAAO,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC;QACvD,KAAK,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClC,QAAQ,EAAE;YACR,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC/D,OAAO,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC3B,CAAC;IACF,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC;IACvD,KAAK,EAAE;QACL,IAAI,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACnD,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,oBAAoB,CAAC;IAC1B,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,IAAI,EAAE,IAAI,GAAG;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;QACtB,SAAS,EAAE,IAAI,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,OAAO,CAAC;QACvB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,eAAO,MAAM,gBAAgB,GAAI,mFAQ9B,IAAI,CACL,gBAAgB,EACd,eAAe,GACf,SAAS,GACT,YAAY,GACZ,OAAO,GACP,gBAAgB,GAChB,SAAS,CACZ,GACC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,MAEjB,GAAG,OAAO,EAAE,MAAM,IAAI,kBA8ErC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,MACjC,GAAG,OAAO,EAAE,MAAM,IAAI,kBAMrC,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAClB,GAAG,OAAO,EAAE,MAAM,IAAI,kBASrC,CAAC"}
1
+ {"version":3,"file":"global.middleware.d.ts","sourceRoot":"","sources":["../../../../src/api/middlewares/global.middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG/C,OAAO,EAAc,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EACL,KAAK,oBAAoB,EAE1B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAU,kBAAmB,SAAQ,mBAAmB;KAAG;CAC5D;AAED,MAAM,WAAW,UAAW,SAAQ,GAAG;IACrC,SAAS,EAAE,mBAAmB,CAAC;CAChC;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,IAAI,GAAG;QACZ,IAAI,EAAE;YACJ,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;YACtB,SAAS,EAAE,IAAI,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;YACd,aAAa,EAAE,OAAO,CAAC;YACvB,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,EAAE,MAAM,CAAC;YACjB,UAAU,EAAE,OAAO,CAAC;YACpB,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;KACH,CAAC;IACF,IAAI,EAAE;QACJ,aAAa,EAAE;YACb,kBAAkB,EAAE,MAAM,CAAC;YAC3B,eAAe,EAAE,MAAM,CAAC;YACxB,cAAc,EAAE,MAAM,CAAC;YACvB,UAAU,EAAE,MAAM,CAAC;YACnB,YAAY,EAAE,OAAO,CAAC;YACtB,mBAAmB,EAAE,MAAM,CAAC;YAC5B,gBAAgB,EAAE,MAAM,CAAC;YACzB,WAAW,EAAE,YAAY,EAAE,CAAC;SAC7B,CAAC;QACF,OAAO,CAAC,EAAE,IAAI,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC;QACvD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClC,QAAQ,EAAE;YACR,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,cAAc,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC/D,OAAO,EAAE;YAAE,EAAE,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAC1B,IAAI,EAAE,CAAC;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAA;SAAE,GAAG,eAAe,CAAC,EAAE,CAAC;KAClE,CAAC;IACF,EAAE,EAAE,IAAI,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC,YAAY,CAAC,CAAC;IACvD,KAAK,EAAE;QACL,IAAI,EAAE,CAAC,IAAI,EAAE,kBAAkB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACnD,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,oBAAoB,CAAC;IAC1B,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,IAAI,EAAE,IAAI,GAAG;QACX,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;QACtB,SAAS,EAAE,IAAI,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,aAAa,EAAE,OAAO,CAAC;QACvB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;QACpB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,eAAO,MAAM,gBAAgB,GAAI,mFAQ9B,IAAI,CACL,gBAAgB,EACd,eAAe,GACf,SAAS,GACT,YAAY,GACZ,OAAO,GACP,gBAAgB,GAChB,SAAS,CACZ,GACC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,MAoCjB,GAAG,OAAO,EAAE,MAAM,IAAI,kBA0DrC,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,UAAU,MAAM,MACjC,GAAG,OAAO,EAAE,MAAM,IAAI,kBAMrC,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAClB,GAAG,OAAO,EAAE,MAAM,IAAI,kBASrC,CAAC"}