@donotdev/core 0.0.12 → 0.0.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/eslint/index.js +1 -1
- package/functions/index.d.ts +1083 -3
- package/functions/index.js +11 -1
- package/i18n/locales/eager/dndev_ar.json +0 -139
- package/i18n/locales/eager/dndev_de.json +0 -139
- package/i18n/locales/eager/dndev_en.json +5 -139
- package/i18n/locales/eager/dndev_es.json +0 -139
- package/i18n/locales/eager/dndev_fr.json +0 -139
- package/i18n/locales/eager/dndev_it.json +47 -186
- package/i18n/locales/eager/dndev_ja.json +0 -139
- package/i18n/locales/eager/dndev_ko.json +0 -139
- package/i18n/locales/lazy/crud_ar.json +195 -0
- package/i18n/locales/lazy/crud_de.json +195 -0
- package/i18n/locales/lazy/crud_en.json +412 -0
- package/i18n/locales/lazy/crud_es.json +195 -0
- package/i18n/locales/lazy/crud_fr.json +195 -0
- package/i18n/locales/lazy/crud_it.json +195 -0
- package/i18n/locales/lazy/crud_ja.json +195 -0
- package/i18n/locales/lazy/crud_ko.json +195 -0
- package/i18n/locales/lazy/oauth_ar.json +11 -11
- package/i18n/locales/lazy/oauth_de.json +11 -11
- package/i18n/locales/lazy/oauth_en.json +11 -11
- package/i18n/locales/lazy/oauth_es.json +11 -11
- package/i18n/locales/lazy/oauth_fr.json +11 -11
- package/i18n/locales/lazy/oauth_it.json +11 -11
- package/i18n/locales/lazy/oauth_ja.json +11 -11
- package/i18n/locales/lazy/oauth_ko.json +11 -11
- package/index.d.ts +6649 -6306
- package/index.js +38 -38
- package/next/index.d.ts +209 -154
- package/next/index.js +20 -20
- package/package.json +1 -1
- package/server.d.ts +4289 -3900
- package/server.js +1 -1
- package/vite/index.d.ts +209 -154
- package/vite/index.js +23 -14
package/functions/index.js
CHANGED
|
@@ -1 +1,11 @@
|
|
|
1
|
-
var Y=(l,e)=>()=>(l&&(e=l(l=0)),e);function V(l,e=null){let t=S[l];if(!t)throw new Error(`Unknown pattern type: ${l}`);return e&&t.framework?{...t,framework:t.framework.map(r=>`${e}/${r}`)}:t}function Z(l){return q[l]||q.base}var C,S,q,K=Y(()=>{"use strict";b();C={SOURCE_ROOT:"packages/core/i18n",SOURCE_LOCALES:"packages/core/i18n/locales",SOURCE_EAGER:"packages/core/i18n/locales/eager",SOURCE_LAZY:"packages/core/i18n/locales/lazy",PUBLISHED_ROOT:"i18n",PUBLISHED_LOCALES:"i18n/locales",PUBLISHED_EAGER:"i18n/locales/eager",PUBLISHED_LAZY:"i18n/locales/lazy"},S={routes:{consumer:["src/**/*Page.tsx","src/pages/**/*Page.tsx"],exclude:["**/node_modules/**","**/dist/**","**/build/**","**/*.test.tsx","**/*.stories.tsx"],extensions:[".tsx"]},css:{consumer:["src/**/*.css"],themes:["src/**/*.css"],extensions:[".css",".scss",".sass"],framework:["packages/ui/src/**/*.css","packages/core/components/src/**/*.css","packages/core/templates/src/**/*.css"]},i18n:{eager:["src/locales/*_*.json"],lazy:["src/**/locales/*_*.json","!src/locales/*_*.json"],framework:{eager:[`${C.SOURCE_EAGER}/*_*.json`],lazy:[`${C.SOURCE_LAZY}/*_*.json`]},extensions:[".json"]},assets:{consumer:["public/**/*"],fallback:["manifest.json"],modern:["logo.svg","favicon.svg","apple-touch-icon.png","android-chrome-192x192.png","android-chrome-512x512.png"],patterns:["favicon.svg","favicon.ico","favicon-*.png","logo.svg","logo.png","logo.webp","logo.avif","apple-touch-icon*.png","android-chrome-*.png","manifest.json"],fonts:["fonts/**/*.woff2","fonts/**/*.woff","fonts/**/*.ttf"],framework:["packages/ui/assets/**/*"]},pwa:{consumer:["public/manifest.json","public/service-worker.js","public/sw.js","public/icon-192x192.png","public/icon-512x512.png","public/favicon.ico","public/favicon.svg","public/apple-touch-icon.png","public/logo.svg"],exclude:["**/node_modules/**","**/dist/**","**/build/**"],extensions:[".json",".js",".png",".svg",".ico"],framework:["packages/ui/assets/**/*"]},globalIgnore:["**/node_modules/**","**/dist/**","**/build/**","**/.git/**","**/coverage/**","**/test/**"]},q={base:{absolute:!0,onlyFiles:!0,ignore:S.globalIgnore},css:{absolute:!0,onlyFiles:!0,ignore:[...S.globalIgnore,"**/*.test.css"]},routes:{absolute:!0,onlyFiles:!0,ignore:[...S.globalIgnore,"**/*.test.tsx","**/*.stories.tsx"]},i18n:{absolute:!0,onlyFiles:!0,ignore:S.globalIgnore},assets:{absolute:!0,onlyFiles:!0,ignore:S.globalIgnore}}});import{createRequire as ce}from"node:module";import{fileURLToPath as le}from"node:url";import{dirname as ue,resolve as Re}from"node:path";import{Buffer as P}from"node:buffer";import v from"node:process";var pe,F,O,b=Y(()=>{"use strict";pe=ce(import.meta.url),F=le(import.meta.url),O=ue(F);typeof globalThis<"u"&&(globalThis.require=pe,globalThis.__filename=F,globalThis.__dirname=O,globalThis.Buffer=P,globalThis.process=v,typeof global>"u"&&(globalThis.global=globalThis))});b();b();b();import{createRequire as fe}from"node:module";import{resolve as U,join as x,dirname as R,relative as X,normalize as de,sep as Q,extname as he}from"node:path";import{fileURLToPath as me}from"node:url";import*as u from"node:fs";K();import ge from"fast-glob";var _={getGlobOptionsFor:Z||void 0,SCAN_PATTERNS:S||void 0,getPatternsFor:V||void 0,I18N_PATHS:C||void 0},m={error:(l,e)=>{},warn:(l,e)=>{},info:l=>{}};function J(l,e){return l().catch(t=>{throw new Error(`${e}: ${t instanceof Error?t.message:String(t)}`)})}var ee={CLI:"packages/cli",COMPONENTS:"packages/core/components",CONFIG:"packages/core/config",CORE:"packages/core",CRUD:"packages/core/crud",FEATURES:"packages/features",HOOKS:"packages/core/hooks",I18N:"packages/core/i18n",SCHEMAS:"packages/core/schemas",STORES:"packages/core/stores",TEMPLATES:"packages/templates",TOOLING:"packages/tooling",TYPES:"packages/core/types",UI:"packages/ui",UTILS:"packages/core/utils",AUTH:"packages/features/auth",BILLING:"packages/features/billing",OAUTH:"packages/features/oauth",FIREBASE:"packages/providers/firebase",FUNCTIONS:"packages/functions"},B=class l{static _instance=null;options;_repoRoot;_appRoot=null;static getInstance(e={}){return l._instance||(l._instance=new l(e)),l._instance}static _reset(){l._instance=null}constructor(e={}){if(l._instance)return l._instance;this.options={maxLevels:e.maxLevels??10,customMarkers:e.customMarkers||[],cache:e.cache??!1,debug:e.debug??!1};try{let t=v.cwd();if(!t)throw new Error("PathResolver: process.cwd() returned undefined. This should never happen.");this._repoRoot=this._findRepoRoot(t)}catch(t){throw new Error(`PathResolver constructor failed: ${t instanceof Error?t.message:String(t)}. cwd: ${v.cwd()}`)}this._appRoot=null,l._instance=this}normalizePath(e){if(!e)return"";try{return de(e).split(Q).join("/")}catch{return String(e).split(Q).join("/")}}getRelativePath(e){let t=this.getAppRoot(),r=X(t,e);return this.normalizePath(r)}getBasename(e){if(!e)return"";let r=this.normalizePath(e).split("/");return r[r.length-1]||""}getDirname(e){return e?this.normalizePath(R(e)):""}resolvePackage(e,t=null){try{let r=t||this.getAppRoot(),n=fe(x(r,"package.json")).resolve(e);return this.normalizePath(n)}catch{return null}}resolveFrameworkPackage(e,t=null){let r=this.resolvePackage(`${e}/package.json`,t);if(r)return this.getDirname(r);if(this.isMonorepo()&&e.startsWith("@donotdev/")){let s=e.replace("@donotdev/",""),o=this.resolveRepoPath(`packages/${s}`);if(this.pathExists(o))return o;if(["auth","billing","crud","oauth"].includes(s)){let i=this.resolveRepoPath(`packages/features/${s}`);if(this.pathExists(i))return i}if(s==="firebase"){let i=this.resolveRepoPath(`packages/providers/${s}`);if(this.pathExists(i))return i}}let a=this.resolveAppPath(`node_modules/${e}`);if(this.pathExists(a))return a;let n=this.resolveRepoPath(`node_modules/${e}`);return this.pathExists(n)?n:null}resolvePackageAsset(e,t=null){return this.resolvePackage(e,t)}resolveAppPath(e){let t=this.getAppRoot(),r=U(t,e);return this.normalizePath(r)}resolveRepoPath(e){let t=this.getRepoRoot(),r=this.normalizePath(e),a=U(t,r);return this.normalizePath(a)}resolvePath(e,t){let r=this.normalizePath(t),a=this.normalizePath(e),n=U(r,a);return this.normalizePath(n)}createImportPath(e){return"./"+this.getRelativePath(e)}getFileInfo(e){try{let t=u.statSync(e);return{absolutePath:this.normalizePath(e),relativePath:this.getRelativePath(e),importPath:this.createImportPath(e),size:t.size,isFile:t.isFile(),isDirectory:t.isDirectory()}}catch{return null}}_detectFormat(e,t){return t&&t!=="auto"?t:he(e).toLowerCase()===".json"?"json":"text"}async read(e,t={}){let{format:r="auto",encoding:a="utf8"}=t,n=this._detectFormat(e,r);try{if(n==="buffer")return await u.promises.readFile(e);let s=await u.promises.readFile(e,a),o=this.stripBom(s);return n==="json"?JSON.parse(o):o}catch(s){return this.options.debug&&m.warn(`Failed to read file: ${e}`,s),null}}readSync(e,t={}){let{format:r="auto",encoding:a="utf8"}=t,n=this._detectFormat(e,r);try{if(n==="buffer")return u.readFileSync(e);let s=u.readFileSync(e,a),o=this.stripBom(s);return n==="json"?JSON.parse(o):o}catch(s){return this.options.debug&&m.warn(`Failed to read file: ${e}`,s),null}}async write(e,t,r={}){let{format:a="auto",overwrite:n=!1,dryRun:s=!1,verbose:o=!1}=r,i=this.normalizePath(e),d=this.normalizePath(R(i)),c=this.pathExists(i);if(c&&!n)return o&&m.info(`Skipping existing file: ${i}`),!1;if(s)return m.info(`[DRY RUN] Would write file: ${i}`),!0;try{await u.promises.mkdir(d,{recursive:!0})}catch(h){if(h?.code!=="EEXIST")throw h}let f=this._detectFormat(e,a),g;P.isBuffer(t)?g=t:f==="json"&&typeof t=="object"?g=JSON.stringify(t,null,2):g=String(t);try{return await J(async()=>(P.isBuffer(g)?await u.promises.writeFile(i,g):await u.promises.writeFile(i,g,"utf8"),o&&m.info(`${c?"Updated":"Created"} file: ${i}`),!0),`Failed to write file: ${i}`)}catch{return!1}}writeSync(e,t,r={}){let{format:a="auto",overwrite:n=!1,dryRun:s=!1,verbose:o=!1}=r,i=this.normalizePath(e),d=this.normalizePath(R(i)),c=this.pathExists(i);if(c&&!n)return o&&m.info(`Skipping existing file: ${i}`),!1;if(s)return m.info(`[DRY RUN] Would write file: ${i}`),!0;try{u.mkdirSync(d,{recursive:!0})}catch(h){if(h?.code!=="EEXIST")throw h}let f=this._detectFormat(e,a),g;P.isBuffer(t)?g=t:f==="json"&&typeof t=="object"?g=JSON.stringify(t,null,2):g=String(t);try{return P.isBuffer(g)?u.writeFileSync(i,g):u.writeFileSync(i,g,"utf8"),o&&m.info(`${c?"Updated":"Created"} file: ${i}`),!0}catch(h){throw new Error(`Failed to write file: ${i}: ${h instanceof Error?h.message:String(h)}`)}}async copy(e,t,r={}){let{overwrite:a=!1,dryRun:n=!1,verbose:s=!1}=r,o=this.normalizePath(t),i=this.pathExists(o);if(i&&!a)return s&&m.info(`Skipping existing file: ${o}`),!1;if(n)return m.info(`[DRY RUN] Would copy file: ${o}`),!0;let d=this.normalizePath(R(o));try{await u.promises.mkdir(d,{recursive:!0})}catch(c){if(c?.code!=="EEXIST")throw c}try{return await J(async()=>(await u.promises.copyFile(e,o),s&&m.info(`${i?"Updated":"Created"} file: ${o}`),!0),`Failed to copy file from ${e} to ${o}`)}catch{return!1}}copySync(e,t,r={}){let{overwrite:a=!1,dryRun:n=!1,verbose:s=!1}=r,o=this.normalizePath(t),i=this.pathExists(o);if(i&&!a)return s&&m.info(`Skipping existing file: ${o}`),!1;if(n)return m.info(`[DRY RUN] Would copy file: ${o}`),!0;let d=this.normalizePath(R(o));try{u.mkdirSync(d,{recursive:!0})}catch(c){if(c?.code!=="EEXIST")throw c}try{return u.copyFileSync(e,o),s&&m.info(`${i?"Updated":"Created"} file: ${o}`),!0}catch{return!1}}pathExists(e,t=!1){try{return u.existsSync(e)}catch(r){return t||m.error(`Error checking path existence: ${e}`,r),!1}}mkdir(e){try{let t=e.startsWith("/")||e.match(/^[A-Z]:/)?this.normalizePath(e):this.resolveAppPath(e);return u.existsSync(t)||u.mkdirSync(t,{recursive:!0}),!0}catch{return!1}}readdirSync(e,t){try{return u.readdirSync(e,t)}catch(r){return this.options.debug&&m.warn(`Failed to read directory: ${e}`,r),t&&typeof t=="object"&&"withFileTypes"in t&&t.withFileTypes?[]:[]}}statSync(e){try{return u.statSync(e)}catch(t){return this.options.debug&&m.warn(`Failed to stat file: ${e}`,t),null}}lstatSync(e){try{return u.lstatSync(e)}catch(t){return this.options.debug&&m.warn(`Failed to lstat file: ${e}`,t),null}}async ensureDir(e){try{await u.promises.mkdir(e,{recursive:!0})}catch(t){if(t?.code!=="EEXIST")throw t}}ensureDirSync(e){try{u.mkdirSync(e,{recursive:!0})}catch(t){if(t?.code!=="EEXIST")throw t}}async remove(e){await u.promises.rm(e,{recursive:!0,force:!0})}removeSync(e){u.rmSync(e,{recursive:!0,force:!0})}async readdir(e,t){return u.promises.readdir(e,t)}stripBom(e){return e.charCodeAt(0)===65279?e.slice(1):e}getRepoRoot(){return this._repoRoot||v.cwd()}getAppRoot(){return this._appRoot?this._appRoot:this._repoRoot}setAppRoot(e){if(!e)throw new Error("PathResolver.setAppRoot: root cannot be undefined or null");this._appRoot=this.normalizePath(e)}isMonorepo(){let e=x(this._repoRoot,"packages");return this.pathExists(e)}isWithinApp(e){let t=this.normalizePath(U(e)),r=this.getAppRoot(),a=X(r,t),n=this.normalizePath(a);return!n.startsWith("../")&&!n.startsWith("/")}async findFiles(e,t,r={}){let a=this.normalizePath(x(e,t)),n=this.getAppRoot(),s=this.normalizePath(n),o=a.startsWith(s)?a.slice(s.length+1):a,i={absolute:!0,onlyFiles:!0,braceExpansion:!0,extglob:!0,globstar:!0,cwd:n,ignore:_.SCAN_PATTERNS?.globalIgnore||["**/node_modules/**","**/dist/**","**/build/**","**/.git/**"]};return await this._globWithNormalization([o],{...i,...r})}clearCache(){}async _resolveFrameworkI18nPattern(e){let t=_.I18N_PATHS;if(!t)return null;let r=e.replace(t.SOURCE_ROOT+"/",""),a=this.resolveFrameworkPackage("@donotdev/core");if(!a)return null;let n=this.normalizePath(x(a,t.PUBLISHED_ROOT,r)),s=n.replace(/\/[^/]*\*.*$/,"");return this.pathExists(s),n}async _globWithNormalization(e,t){return(await ge(e,t)).map(a=>{let n=typeof a=="string"?a:a.path;return this.normalizePath(n)})}async resolveFiles(e,t="css"){if(!e||typeof e!="object")return{frameworkFiles:[],consumerFiles:[]};if(t==="i18n")return{frameworkFiles:[],consumerFiles:[]};if(Array.isArray(e.framework)||(e.framework=[]),!Array.isArray(e.consumer))return{frameworkFiles:[],consumerFiles:[]};let r=[...e.framework,...e.consumer];for(let c of r)if(typeof c!="string"||c.trim()==="")return{frameworkFiles:[],consumerFiles:[]};let a=this.getAppRoot(),n=_.getGlobOptionsFor?_.getGlobOptionsFor(t):{ignore:["**/node_modules/**","**/dist/**","**/build/**"]},s=this.normalizePath(a),o=e.framework.map(c=>{let f=this.normalizePath(c);return f.startsWith(s)?f.slice(s.length+1):f}),i=e.consumer.map(c=>{let f=this.normalizePath(c);return f.startsWith(s)?f.slice(s.length+1):f}),d={...n,onlyFiles:!0,absolute:!0,braceExpansion:!0,extglob:!0,globstar:!0,cwd:a};try{let c=o.length>0?await this._globWithNormalization(o,d):[],f=await this._globWithNormalization(i,d);return{frameworkFiles:c,consumerFiles:f}}catch{return this.options.debug,{frameworkFiles:[],consumerFiles:[]}}}async resolvePatterns(e){if(!_.getPatternsFor)return{framework:[],consumer:[],all:[]};let t=this.getAppRoot(),r=this.getRepoRoot();if(e==="i18n"&&(!t||t===r))throw new Error(`Cannot resolve i18n patterns: appRoot not set (appRoot: ${t}, repoRoot: ${r}). Ensure configResolved hook has run before discovery.`);let a=_.getPatternsFor(e),n=this.isMonorepo();if(e==="i18n"){let i=a,d={eager:i.eager.map(c=>c.startsWith("!")?"!"+this.resolveAppPath(c.slice(1)):this.resolveAppPath(c)),lazy:i.lazy.map(c=>c.startsWith("!")?"!"+this.resolveAppPath(c.slice(1)):this.resolveAppPath(c)),framework:{eager:n?(i.framework?.eager||[]).map(c=>this.resolveRepoPath(c)).filter(Boolean):await Promise.all((i.framework?.eager||[]).map(c=>this._resolveFrameworkI18nPattern(c))).then(c=>c.filter(Boolean)),lazy:n?(i.framework?.lazy||[]).map(c=>this.resolveRepoPath(c)).filter(Boolean):await Promise.all((i.framework?.lazy||[]).map(c=>this._resolveFrameworkI18nPattern(c))).then(c=>c.filter(Boolean))},all:[]};return d.all=[...d.eager,...d.lazy,...d.framework.eager,...d.framework.lazy],d}let s=a,o={framework:n?(s.framework||[]).map(i=>this.resolveRepoPath(i)).filter(Boolean):[],consumer:(s.consumer||[]).map(i=>this.resolveAppPath(i)),all:[]};return o.all=[...o.consumer,...o.framework],o}getEmptyModulePath(e=!1){if(e)return"@donotdev/core/empty";let t=this.resolvePackage("@donotdev/core/empty");if(t)return t;let r=R(me(import.meta.url));return this.normalizePath(x(r,"../empty.js"))}_findRepoRoot(e){let t=this.normalizePath(e),r=0,a=this.options.maxLevels;for(;r<a;){let n=this.normalizePath(x(t,ee.TOOLING)),s=this.normalizePath(x(t,ee.CORE));if(this.pathExists(n)&&this.pathExists(s))return t;let o=x(t,"apps");if(this.pathExists(o)&&this.statSync(o)?.isDirectory())return this.normalizePath(t);let i=this.normalizePath(x(t,"package.json"));if(this.pathExists(i)&&this.normalizePath(R(t))===t)return t;let d=this.normalizePath(R(t));if(d===t)break;t=d,r++}return this.normalizePath(e)}};b();import M from"node:fs";import k from"node:path";import{fileURLToPath as ve}from"node:url";var ye=ve(import.meta.url),We=k.dirname(ye);function te(){let l=v.cwd(),e=10;for(let t=0;t<e;t++){let r=k.join(l,"package.json");if(M.existsSync(r))try{let n=JSON.parse(M.readFileSync(r,"utf8"));if(n.workspaces&&Array.isArray(n.workspaces)&&n.workspaces.some(d=>d==="packages/**"||d.startsWith("packages/"))&&(M.existsSync(k.join(l,"packages","core"))||M.existsSync(k.join(l,"packages","functions"))))return{type:"dndev",root:l}}catch{}let a=k.dirname(l);if(a===l)break;l=a}return{type:"npm",root:v.cwd()}}function be(l){return l.type==="dndev"?l.root:null}function re(l){let e={};if(l.type==="dndev"){let t=be(l);t&&(e["@donotdev/types"]=k.join(t,"packages","core","types","src"),e["@donotdev/functions"]=k.join(t,"packages","functions","src"),e["@donotdev/utils"]=k.join(t,"packages","core","utils","src"),e["@donotdev/schemas"]=k.join(t,"packages","core","schemas","src"),e["@donotdev/core"]=k.join(t,"packages","core"))}return e}function se(l={}){let{entry:e="src/index.ts",outDir:t="lib",minify:r=!1,sourcemap:a=!0,platform:n="firebase",workspace:s,bundleWorkspaceDeps:o=!1,importFramework:i=!1,external:d=!1,...c}=l,f=B.getInstance(),g=re(s),h={entryPoints:[e],bundle:!0,platform:"node",target:"node20",format:"esm",outdir:t,outExtension:{".js":".js"},minify:r,sourcemap:a,metafile:!0,logLevel:"info",loader:{".ts":"ts",".tsx":"tsx",".css":"empty"},keepNames:!0,treeShaking:!0,...c};o&&Object.keys(g).length>0&&(h.alias=Object.fromEntries(Object.entries(g).map(([w,p])=>[w,f.normalizePath(p)]))),h.mainFields=["module","main"],h.conditions=["import","module","node"];let ne=["fs","path","crypto","util","stream","events","buffer","url","querystring","http","https","zlib","os","child_process","assert","constants","domain","punycode","string_decoder","timers","tty","vm","worker_threads","perf_hooks","async_hooks"],G=[];if(o)try{let w=s?.root||v.cwd(),p=v.cwd(),y=10;for(let E=0;E<y;E++){let H=f.normalizePath(`${p}/package.json`);if(f.pathExists(H)){let A=f.readSync(H,{format:"json"});if(A&&Array.isArray(A.workspaces)){w=f.normalizePath(p);for(let z of A.workspaces)z==="apps/*"||z==="functions"||!z.includes("*")&&!z.includes("/")&&G.push(z);break}}let j=f.getDirname(p);if(j===p)break;p=j}}catch{}let ie={name:"external-node-modules",setup(w){w.onResolve({filter:/^firebase($|\/)/},p=>{if(p.path==="firebase-admin"||p.path.startsWith("firebase-admin/")||p.path==="firebase-functions"||p.path.startsWith("firebase-functions/"))return null;let y;if(s?.type==="dndev"&&s.root)y=f.normalizePath(`${s.root}/packages/core/config/functions/firebase-stub.js`);else{let E=import.meta.url,j=new URL(E).pathname.replace(/^\/([A-Z]:)/i,"$1"),A=f.getDirname(j);y=f.normalizePath(`${A}/firebase-stub.js`)}return{path:y}}),w.onResolve({filter:/.*/},p=>{if(p.kind==="entry-point")return null;if(p.path.match(/@donotdev\/functions\/.+/)&&o&&s?.type==="dndev"){let y=p.path.replace("@donotdev/functions/","");return{path:f.normalizePath(`${s.root}/packages/functions/src/${y}/index.ts`)}}if(p.path==="firebase-admin"||p.path.startsWith("firebase-admin/")||p.path==="firebase-functions"||p.path.startsWith("firebase-functions/"))return{path:p.path,external:!0};if(p.path.match(/@donotdev\/core\/.+/)&&o&&s?.type==="dndev"){let y=p.path.replace("@donotdev/core/","");return{path:f.normalizePath(`${s.root}/packages/core/${y}.ts`)}}if(p.path.startsWith("@donotdev/")||p.path==="valibot"||p.path.startsWith("valibot/"))return null;if(G.length>0){let y=p.path.split("/")[0];if(G.includes(y))return null}return p.path.startsWith(".")||p.path.startsWith("/")?null:{path:p.path,external:!0}})}};if(h.external=[...ne,"firebase-admin","firebase-functions"],h.plugins=[ie,...h.plugins||[]],h.define={"process.env.NODE_ENV":JSON.stringify(v.env.NODE_ENV||"production"),...h.define||{}},i&&s.type==="dndev"){let w=s.root,p=f.normalizePath(`${w}/functions/lib`);h.alias={...h.alias,"@donotdev/functions":p}}return n==="framework"&&(h.entryPoints={"firebase/index":"src/firebase/index.ts","vercel/api/index":"src/vercel/api/index.ts","shared/index":"src/shared/index.ts"}),h}function oe(l={}){let{entry:e="src/index.ts",outDir:t="lib",minify:r=!1,sourcemap:a=!0,platform:n="firebase",...s}=l,o=te();return se({entry:e,outDir:t,minify:r,sourcemap:a,platform:n,workspace:o,...s})}function Ve(l={}){return oe({...l,platform:"framework",bundleWorkspaceDeps:!0})}function Ze(l={}){return oe({...l,platform:"firebase",bundleWorkspaceDeps:!0,importFramework:!0})}export{Ze as createAppFunctionsConfig,oe as createFunctionsEsbuildConfig,Ve as createRootFunctionsConfig};
|
|
1
|
+
var Y=(n,e)=>()=>(n&&(e=n(n=0)),e);function V(n,e=null){let t=R[n];if(!t)throw new Error(`Unknown pattern type: ${n}`);return e&&t.framework?{...t,framework:t.framework.map(s=>`${e}/${s}`)}:t}function Z(n){return q[n]||q.base}var U,R,q,K=Y(()=>{"use strict";P();U={SOURCE_ROOT:"packages/core/i18n",SOURCE_LOCALES:"packages/core/i18n/locales",SOURCE_EAGER:"packages/core/i18n/locales/eager",SOURCE_LAZY:"packages/core/i18n/locales/lazy",PUBLISHED_ROOT:"i18n",PUBLISHED_LOCALES:"i18n/locales",PUBLISHED_EAGER:"i18n/locales/eager",PUBLISHED_LAZY:"i18n/locales/lazy"},R={routes:{consumer:["src/**/*Page.tsx","src/pages/**/*Page.tsx"],exclude:["**/node_modules/**","**/dist/**","**/build/**","**/*.test.tsx","**/*.stories.tsx"],extensions:[".tsx"]},css:{consumer:["src/**/*.css"],themes:["src/**/*.css"],extensions:[".css",".scss",".sass"],framework:["packages/ui/src/**/*.css","packages/core/components/src/**/*.css","packages/core/templates/src/**/*.css"]},i18n:{eager:["src/locales/*_*.json"],lazy:["src/**/locales/*_*.json","!src/locales/*_*.json"],framework:{eager:[`${U.SOURCE_EAGER}/*_*.json`],lazy:[`${U.SOURCE_LAZY}/*_*.json`]},extensions:[".json"]},assets:{consumer:["public/**/*"],fallback:["manifest.json"],modern:["logo.svg","favicon.svg","apple-touch-icon.png","android-chrome-192x192.png","android-chrome-512x512.png"],patterns:["favicon.svg","favicon.ico","favicon-*.png","logo.svg","logo.png","logo.webp","logo.avif","apple-touch-icon*.png","android-chrome-*.png","manifest.json"],fonts:["fonts/**/*.woff2","fonts/**/*.woff","fonts/**/*.ttf"],framework:["packages/ui/assets/**/*"]},pwa:{consumer:["public/manifest.json","public/service-worker.js","public/sw.js","public/icon-192x192.png","public/icon-512x512.png","public/favicon.ico","public/favicon.svg","public/apple-touch-icon.png","public/logo.svg"],exclude:["**/node_modules/**","**/dist/**","**/build/**"],extensions:[".json",".js",".png",".svg",".ico"],framework:["packages/ui/assets/**/*"]},globalIgnore:["**/node_modules/**","**/dist/**","**/build/**","**/.git/**","**/coverage/**","**/test/**"]},q={base:{absolute:!0,onlyFiles:!0,ignore:R.globalIgnore},css:{absolute:!0,onlyFiles:!0,ignore:[...R.globalIgnore,"**/*.test.css"]},routes:{absolute:!0,onlyFiles:!0,ignore:[...R.globalIgnore,"**/*.test.tsx","**/*.stories.tsx"]},i18n:{absolute:!0,onlyFiles:!0,ignore:R.globalIgnore},assets:{absolute:!0,onlyFiles:!0,ignore:R.globalIgnore}}});import{Buffer as w}from"node:buffer";import{createRequire as pe}from"node:module";import{dirname as fe,resolve as _e}from"node:path";import y from"node:process";import{fileURLToPath as de}from"node:url";var he,F,A,P=Y(()=>{"use strict";he=pe(import.meta.url),F=de(import.meta.url),A=fe(F);typeof globalThis<"u"&&(globalThis.require=he,globalThis.__filename=F,globalThis.__dirname=A,globalThis.Buffer=w,globalThis.process=y,typeof global>"u"&&(globalThis.global=globalThis))});P();P();P();import W from"node:fs";import k from"node:path";import{fileURLToPath as me}from"node:url";var ge=me(import.meta.url),Te=k.dirname(ge);function X(){let n=y.cwd(),e=10;for(let t=0;t<e;t++){let s=k.join(n,"package.json");if(W.existsSync(s))try{let o=JSON.parse(W.readFileSync(s,"utf8")),r=o.workspaces&&Array.isArray(o.workspaces);if(r&&o.workspaces.some(c=>c==="packages/**"||c.startsWith("packages/"))&&(W.existsSync(k.join(n,"packages","core"))||W.existsSync(k.join(n,"packages","functions"))))return{type:"dndev",root:n};if(r&&o.workspaces.some(c=>c.includes("dndev/packages"))){let f=o.workspaces.find(d=>d.includes("dndev/packages")).replace(/\/packages.*$/,""),g=k.resolve(n,f);if(W.existsSync(k.join(g,"packages","core")))return{type:"dndev",root:g}}}catch{}let i=k.dirname(n);if(i===n)break;n=i}return{type:"npm",root:y.cwd()}}function ve(n){return n.type==="dndev"?n.root:null}function Q(n){let e={};if(n.type==="dndev"){let t=ve(n);t&&(e["@donotdev/types"]=k.join(t,"packages","core","types","src"),e["@donotdev/functions"]=k.join(t,"packages","functions","src"),e["@donotdev/utils"]=k.join(t,"packages","core","utils","src"),e["@donotdev/schemas"]=k.join(t,"packages","core","schemas","src"),e["@donotdev/core"]=k.join(t,"packages","core"))}return e}P();import{createRequire as ye}from"node:module";import{resolve as M,join as S,dirname as E,relative as J,normalize as Pe,sep as ee,extname as be}from"node:path";import{fileURLToPath as ke}from"node:url";import*as p from"node:fs";K();import we from"fast-glob";var _={getGlobOptionsFor:Z||void 0,SCAN_PATTERNS:R||void 0,getPatternsFor:V||void 0,I18N_PATHS:U||void 0},v={error:(n,e)=>{},warn:(n,e)=>{},info:n=>{}};function te(n,e){return n().catch(t=>{throw new Error(`${e}: ${t instanceof Error?t.message:String(t)}`)})}var re={CLI:"packages/cli",COMPONENTS:"packages/core/components",CONFIG:"packages/core/config",CORE:"packages/core",CRUD:"packages/core/crud",FEATURES:"packages/features",HOOKS:"packages/core/hooks",I18N:"packages/core/i18n",SCHEMAS:"packages/core/schemas",STORES:"packages/core/stores",TEMPLATES:"packages/templates",TOOLING:"packages/tooling",TYPES:"packages/core/types",UI:"packages/ui",UTILS:"packages/core/utils",AUTH:"packages/features/auth",BILLING:"packages/features/billing",OAUTH:"packages/features/oauth",FIREBASE:"packages/providers/firebase",FUNCTIONS:"packages/functions"},B=class n{static _instance=null;options;_repoRoot;_appRoot=null;static getInstance(e={}){return n._instance||(n._instance=new n(e)),n._instance}static _reset(){n._instance=null}constructor(e={}){if(n._instance)return n._instance;this.options={maxLevels:e.maxLevels??10,customMarkers:e.customMarkers||[],cache:e.cache??!1,debug:e.debug??!1};try{let t=y.cwd();if(!t)throw new Error("PathResolver: process.cwd() returned undefined. This should never happen.");this._repoRoot=this._findRepoRoot(t)}catch(t){throw new Error(`PathResolver constructor failed: ${t instanceof Error?t.message:String(t)}. cwd: ${y.cwd()}`)}this._appRoot=null,n._instance=this}normalizePath(e){if(!e)return"";try{return Pe(e).split(ee).join("/")}catch{return String(e).split(ee).join("/")}}getRelativePath(e){let t=this.getAppRoot(),s=J(t,e);return this.normalizePath(s)}getBasename(e){if(!e)return"";let s=this.normalizePath(e).split("/");return s[s.length-1]||""}getDirname(e){return e?this.normalizePath(E(e)):""}resolvePackage(e,t=null){try{let s=t||this.getAppRoot(),o=ye(S(s,"package.json")).resolve(e);return this.normalizePath(o)}catch{return null}}resolveFrameworkPackage(e,t=null){let s=this.resolvePackage(`${e}/package.json`,t);if(s)return this.getDirname(s);if(this.isMonorepo()&&e.startsWith("@donotdev/")){let r=e.replace("@donotdev/",""),a=this.resolveRepoPath(`packages/${r}`);if(this.pathExists(a))return a;if(["auth","billing","crud","oauth"].includes(r)){let l=this.resolveRepoPath(`packages/features/${r}`);if(this.pathExists(l))return l}if(r==="firebase"){let l=this.resolveRepoPath(`packages/providers/${r}`);if(this.pathExists(l))return l}}let i=this.resolveAppPath(`node_modules/${e}`);if(this.pathExists(i))return i;let o=this.resolveRepoPath(`node_modules/${e}`);return this.pathExists(o)?o:null}resolvePackageAsset(e,t=null){return this.resolvePackage(e,t)}resolveAppPath(e){let t=this.getAppRoot(),s=M(t,e);return this.normalizePath(s)}resolveRepoPath(e){let t=this.getRepoRoot(),s=this.normalizePath(e),i=M(t,s);return this.normalizePath(i)}resolvePath(e,t){let s=this.normalizePath(t),i=this.normalizePath(e),o=M(s,i);return this.normalizePath(o)}createImportPath(e){return"./"+this.getRelativePath(e)}getFileInfo(e){try{let t=p.statSync(e);return{absolutePath:this.normalizePath(e),relativePath:this.getRelativePath(e),importPath:this.createImportPath(e),size:t.size,isFile:t.isFile(),isDirectory:t.isDirectory()}}catch{return null}}_detectFormat(e,t){return t&&t!=="auto"?t:be(e).toLowerCase()===".json"?"json":"text"}async read(e,t={}){let{format:s="auto",encoding:i="utf8"}=t,o=this._detectFormat(e,s);try{if(o==="buffer")return await p.promises.readFile(e);let r=await p.promises.readFile(e,i),a=this.stripBom(r);return o==="json"?JSON.parse(a):a}catch(r){return this.options.debug&&v.warn(`Failed to read file: ${e}`,r),null}}readSync(e,t={}){let{format:s="auto",encoding:i="utf8"}=t,o=this._detectFormat(e,s);try{if(o==="buffer")return p.readFileSync(e);let r=p.readFileSync(e,i),a=this.stripBom(r);return o==="json"?JSON.parse(a):a}catch(r){return this.options.debug&&v.warn(`Failed to read file: ${e}`,r),null}}async write(e,t,s={}){let{format:i="auto",overwrite:o=!1,dryRun:r=!1,verbose:a=!1}=s,l=this.normalizePath(e),h=this.normalizePath(E(l)),c=this.pathExists(l);if(c&&!o)return a&&v.info(`Skipping existing file: ${l}`),!1;if(r)return v.info(`[DRY RUN] Would write file: ${l}`),!0;try{await p.promises.mkdir(h,{recursive:!0})}catch(d){if(d?.code!=="EEXIST")throw d}let f=this._detectFormat(e,i),g;w.isBuffer(t)?g=t:f==="json"&&typeof t=="object"?g=JSON.stringify(t,null,2):g=String(t);try{return await te(async()=>(w.isBuffer(g)?await p.promises.writeFile(l,g):await p.promises.writeFile(l,g,"utf8"),a&&v.info(`${c?"Updated":"Created"} file: ${l}`),!0),`Failed to write file: ${l}`)}catch{return!1}}writeSync(e,t,s={}){let{format:i="auto",overwrite:o=!1,dryRun:r=!1,verbose:a=!1}=s,l=this.normalizePath(e),h=this.normalizePath(E(l)),c=this.pathExists(l);if(c&&!o)return a&&v.info(`Skipping existing file: ${l}`),!1;if(r)return v.info(`[DRY RUN] Would write file: ${l}`),!0;try{p.mkdirSync(h,{recursive:!0})}catch(d){if(d?.code!=="EEXIST")throw d}let f=this._detectFormat(e,i),g;w.isBuffer(t)?g=t:f==="json"&&typeof t=="object"?g=JSON.stringify(t,null,2):g=String(t);try{return w.isBuffer(g)?p.writeFileSync(l,g):p.writeFileSync(l,g,"utf8"),a&&v.info(`${c?"Updated":"Created"} file: ${l}`),!0}catch(d){throw new Error(`Failed to write file: ${l}: ${d instanceof Error?d.message:String(d)}`)}}async copy(e,t,s={}){let{overwrite:i=!1,dryRun:o=!1,verbose:r=!1}=s,a=this.normalizePath(t),l=this.pathExists(a);if(l&&!i)return r&&v.info(`Skipping existing file: ${a}`),!1;if(o)return v.info(`[DRY RUN] Would copy file: ${a}`),!0;let h=this.normalizePath(E(a));try{await p.promises.mkdir(h,{recursive:!0})}catch(c){if(c?.code!=="EEXIST")throw c}try{return await te(async()=>(await p.promises.copyFile(e,a),r&&v.info(`${l?"Updated":"Created"} file: ${a}`),!0),`Failed to copy file from ${e} to ${a}`)}catch{return!1}}copySync(e,t,s={}){let{overwrite:i=!1,dryRun:o=!1,verbose:r=!1}=s,a=this.normalizePath(t),l=this.pathExists(a);if(l&&!i)return r&&v.info(`Skipping existing file: ${a}`),!1;if(o)return v.info(`[DRY RUN] Would copy file: ${a}`),!0;let h=this.normalizePath(E(a));try{p.mkdirSync(h,{recursive:!0})}catch(c){if(c?.code!=="EEXIST")throw c}try{return p.copyFileSync(e,a),r&&v.info(`${l?"Updated":"Created"} file: ${a}`),!0}catch{return!1}}pathExists(e,t=!1){try{return p.existsSync(e)}catch(s){return t||v.error(`Error checking path existence: ${e}`,s),!1}}mkdir(e){try{let t=e.startsWith("/")||e.match(/^[A-Z]:/)?this.normalizePath(e):this.resolveAppPath(e);return p.existsSync(t)||p.mkdirSync(t,{recursive:!0}),!0}catch{return!1}}readdirSync(e,t){try{return p.readdirSync(e,t)}catch(s){return this.options.debug&&v.warn(`Failed to read directory: ${e}`,s),t&&typeof t=="object"&&"withFileTypes"in t&&t.withFileTypes?[]:[]}}statSync(e){try{return p.statSync(e)}catch(t){return this.options.debug&&v.warn(`Failed to stat file: ${e}`,t),null}}lstatSync(e){try{return p.lstatSync(e)}catch(t){return this.options.debug&&v.warn(`Failed to lstat file: ${e}`,t),null}}async ensureDir(e){try{await p.promises.mkdir(e,{recursive:!0})}catch(t){if(t?.code!=="EEXIST")throw t}}ensureDirSync(e){try{p.mkdirSync(e,{recursive:!0})}catch(t){if(t?.code!=="EEXIST")throw t}}async remove(e){await p.promises.rm(e,{recursive:!0,force:!0})}removeSync(e){p.rmSync(e,{recursive:!0,force:!0})}async readdir(e,t){return p.promises.readdir(e,t)}stripBom(e){return e.charCodeAt(0)===65279?e.slice(1):e}getRepoRoot(){return this._repoRoot||y.cwd()}getAppRoot(){return this._appRoot?this._appRoot:this._repoRoot}setAppRoot(e){if(!e)throw new Error("PathResolver.setAppRoot: root cannot be undefined or null");this._appRoot=this.normalizePath(e)}isMonorepo(){let e=S(this._repoRoot,"packages");return this.pathExists(e)}isWithinApp(e){let t=this.normalizePath(M(e)),s=this.getAppRoot(),i=J(s,t),o=this.normalizePath(i);return!o.startsWith("../")&&!o.startsWith("/")}async findFiles(e,t,s={}){let i=this.normalizePath(S(e,t)),o=this.getAppRoot(),r=this.normalizePath(o),a=i.startsWith(r)?i.slice(r.length+1):i,l={absolute:!0,onlyFiles:!0,braceExpansion:!0,extglob:!0,globstar:!0,cwd:o,ignore:_.SCAN_PATTERNS?.globalIgnore||["**/node_modules/**","**/dist/**","**/build/**","**/.git/**"]};return await this._globWithNormalization([a],{...l,...s})}clearCache(){}async _resolveFrameworkI18nPattern(e){let t=_.I18N_PATHS;if(!t)return null;let s=e.replace(t.SOURCE_ROOT+"/",""),i=this.resolveFrameworkPackage("@donotdev/core");if(!i)return null;let o=this.normalizePath(S(i,t.PUBLISHED_ROOT,s)),r=o.replace(/\/[^/]*\*.*$/,"");return this.pathExists(r),o}async _globWithNormalization(e,t){return(await we(e,t)).map(i=>{let o=typeof i=="string"?i:i.path;return this.normalizePath(o)})}async resolveFiles(e,t="css"){if(!e||typeof e!="object")return{frameworkFiles:[],consumerFiles:[]};if(t==="i18n")return{frameworkFiles:[],consumerFiles:[]};if(Array.isArray(e.framework)||(e.framework=[]),!Array.isArray(e.consumer))return{frameworkFiles:[],consumerFiles:[]};let s=[...e.framework,...e.consumer];for(let c of s)if(typeof c!="string"||c.trim()==="")return{frameworkFiles:[],consumerFiles:[]};let i=this.getAppRoot(),o=_.getGlobOptionsFor?_.getGlobOptionsFor(t):{ignore:["**/node_modules/**","**/dist/**","**/build/**"]},r=this.normalizePath(i),a=e.framework.map(c=>{let f=this.normalizePath(c);return f.startsWith(r)?f.slice(r.length+1):f}),l=e.consumer.map(c=>{let f=this.normalizePath(c);return f.startsWith(r)?f.slice(r.length+1):f}),h={...o,onlyFiles:!0,absolute:!0,braceExpansion:!0,extglob:!0,globstar:!0,cwd:i};try{let c=a.length>0?await this._globWithNormalization(a,h):[],f=await this._globWithNormalization(l,h);return{frameworkFiles:c,consumerFiles:f}}catch{return this.options.debug,{frameworkFiles:[],consumerFiles:[]}}}async resolvePatterns(e){if(!_.getPatternsFor)return{framework:[],consumer:[],all:[]};let t=this.getAppRoot(),s=this.getRepoRoot();if(e==="i18n"&&(!t||t===s))throw new Error(`Cannot resolve i18n patterns: appRoot not set (appRoot: ${t}, repoRoot: ${s}). Ensure configResolved hook has run before discovery.`);let i=_.getPatternsFor(e),o=this.isMonorepo();if(e==="i18n"){let l=i,h={eager:l.eager.map(c=>c.startsWith("!")?"!"+this.resolveAppPath(c.slice(1)):this.resolveAppPath(c)),lazy:l.lazy.map(c=>c.startsWith("!")?"!"+this.resolveAppPath(c.slice(1)):this.resolveAppPath(c)),framework:{eager:o?(l.framework?.eager||[]).map(c=>this.resolveRepoPath(c)).filter(Boolean):await Promise.all((l.framework?.eager||[]).map(c=>this._resolveFrameworkI18nPattern(c))).then(c=>c.filter(Boolean)),lazy:o?(l.framework?.lazy||[]).map(c=>this.resolveRepoPath(c)).filter(Boolean):await Promise.all((l.framework?.lazy||[]).map(c=>this._resolveFrameworkI18nPattern(c))).then(c=>c.filter(Boolean))},all:[]};return h.all=[...h.eager,...h.lazy,...h.framework.eager,...h.framework.lazy],h}let r=i,a={framework:o?(r.framework||[]).map(l=>this.resolveRepoPath(l)).filter(Boolean):[],consumer:(r.consumer||[]).map(l=>this.resolveAppPath(l)),all:[]};return a.all=[...a.consumer,...a.framework],a}getEmptyModulePath(e=!1){if(e)return"@donotdev/core/empty";let t=this.resolvePackage("@donotdev/core/empty");if(t)return t;let s=E(ke(import.meta.url));return this.normalizePath(S(s,"../empty.js"))}_findRepoRoot(e){let t=this.normalizePath(e),s=0,i=this.options.maxLevels;for(;s<i;){let o=this.normalizePath(S(t,re.TOOLING)),r=this.normalizePath(S(t,re.CORE));if(this.pathExists(o)&&this.pathExists(r))return t;let a=S(t,"apps");if(this.pathExists(a)&&this.statSync(a)?.isDirectory())return this.normalizePath(t);let l=this.normalizePath(S(t,"package.json"));if(this.pathExists(l)&&this.normalizePath(E(t))===t)return t;let h=this.normalizePath(E(t));if(h===t)break;t=h,s++}return this.normalizePath(e)}};function se(n={}){let{entry:e="src/index.ts",outDir:t="lib",minify:s=!1,sourcemap:i=!0,platform:o="firebase",workspace:r,bundleWorkspaceDeps:a=!1,importFramework:l=!1,external:h=!1,...c}=n,f=B.getInstance(),g=Q(r),d={entryPoints:[e],bundle:!0,platform:"node",target:"node20",format:"esm",outdir:t,outExtension:{".js":".js"},minify:s,sourcemap:i,metafile:!0,logLevel:"info",loader:{".ts":"ts",".tsx":"tsx",".css":"empty"},keepNames:!0,treeShaking:!0,...c};a&&Object.keys(g).length>0&&(d.alias=Object.fromEntries(Object.entries(g).map(([b,u])=>[b,f.normalizePath(u)]))),d.mainFields=["module","main"],d.conditions=["import","module","node"];let ce=["fs","path","crypto","util","stream","events","buffer","url","querystring","http","https","zlib","os","child_process","assert","constants","domain","punycode","string_decoder","timers","tty","vm","worker_threads","perf_hooks","async_hooks"],G=[];if(a)try{let b=r?.root||y.cwd(),u=y.cwd(),m=10;for(let x=0;x<m;x++){let H=f.normalizePath(`${u}/package.json`);if(f.pathExists(H)){let $=f.readSync(H,{format:"json"});if($&&Array.isArray($.workspaces)){b=f.normalizePath(u);for(let z of $.workspaces)z==="apps/*"||z==="functions"||!z.includes("*")&&!z.includes("/")&&G.push(z);break}}let L=f.getDirname(u);if(L===u)break;u=L}}catch{}let le={name:"external-node-modules",setup(b){b.onResolve({filter:/^firebase($|\/)/},u=>{if(u.path==="firebase-admin"||u.path.startsWith("firebase-admin/")||u.path==="firebase-functions"||u.path.startsWith("firebase-functions/"))return null;let m;if(r?.type==="dndev"&&r.root)m=f.normalizePath(`${r.root}/packages/core/config/functions/firebase-stub.js`);else{let x=import.meta.url,L=new URL(x).pathname.replace(/^\/([A-Z]:)/i,"$1"),$=f.getDirname(L);m=f.normalizePath(`${$}/firebase-stub.js`)}return{path:m}}),b.onResolve({filter:/.*/},u=>{if(u.kind==="entry-point")return null;if(u.path.match(/@donotdev\/functions\/.+/)&&a&&r?.type==="dndev"){let m=u.path.replace("@donotdev/functions/","");return{path:f.normalizePath(`${r.root}/packages/functions/src/${m}/index.ts`)}}if(u.path==="@donotdev/utils")return r?.type==="dndev"?{path:f.normalizePath(`${r.root}/packages/core/utils/src/server/index.ts`)}:b.resolve("@donotdev/utils/server",{kind:u.kind,resolveDir:u.resolveDir});if(u.path.match(/@donotdev\/utils\/.+/)&&r?.type==="dndev"){let m=u.path.replace("@donotdev/utils/","");return{path:f.normalizePath(`${r.root}/packages/core/utils/src/${m}/index.ts`)}}if(u.path==="@donotdev/schemas")return r?.type==="dndev"?{path:f.normalizePath(`${r.root}/packages/core/schemas/src/server/index.ts`)}:b.resolve("@donotdev/schemas/server",{kind:u.kind,resolveDir:u.resolveDir});if(u.path.match(/@donotdev\/schemas\/.+/)&&r?.type==="dndev"){let m=u.path.replace("@donotdev/schemas/","");return{path:f.normalizePath(`${r.root}/packages/core/schemas/src/${m}/index.ts`)}}if(u.path==="@donotdev/core")return r?.type==="dndev"?{path:f.normalizePath(`${r.root}/packages/core/server.ts`)}:b.resolve("@donotdev/core/server",{kind:u.kind,resolveDir:u.resolveDir});if(u.path.match(/@donotdev\/core\/.+/)&&a&&r?.type==="dndev"){let m=u.path.replace("@donotdev/core/","");return{path:f.normalizePath(`${r.root}/packages/core/${m}.ts`)}}if(u.path==="firebase-admin"||u.path.startsWith("firebase-admin/")||u.path==="firebase-functions"||u.path.startsWith("firebase-functions/"))return{path:u.path,external:!0};if(u.path.match(/@donotdev\/core\/.+/)&&a&&r?.type==="dndev"){let m=u.path.replace("@donotdev/core/","");return{path:f.normalizePath(`${r.root}/packages/core/${m}.ts`)}}if(u.path.startsWith("@donotdev/")||u.path==="valibot"||u.path.startsWith("valibot/"))return null;if(G.length>0){let m=u.path.split("/")[0];if(G.includes(m))return null}return u.path.startsWith(".")||u.path.startsWith("/")?null:{path:u.path,external:!0}})}};if(d.external=[...ce,"firebase-admin","firebase-functions"],d.plugins=[le,...d.plugins||[]],d.define={"process.env.NODE_ENV":JSON.stringify(y.env.NODE_ENV||"production"),...d.define||{}},l&&r.type==="dndev"){let b=r.root,u=f.normalizePath(`${b}/functions/lib`);d.alias={...d.alias,"@donotdev/functions":u}}return o==="framework"&&(d.entryPoints={"firebase/index":"src/firebase/index.ts","vercel/api/index":"src/vercel/api/index.ts","shared/index":"src/shared/index.ts"}),d}P();var oe=["create","get","list","listCard","update","delete"];function ne(n,e=0){let t=" ".repeat(e),s="";for(let[i,o]of Object.entries(n))if(o!=null)if(typeof o=="object"&&!Array.isArray(o))Object.keys(o).length===0?s+=`${t}${i}: {}
|
|
2
|
+
`:s+=`${t}${i}:
|
|
3
|
+
${ne(o,e+1)}`;else if(Array.isArray(o))if(o.length===0)s+=`${t}${i}: []
|
|
4
|
+
`;else{s+=`${t}${i}:
|
|
5
|
+
`;for(let r of o)s+=`${t} - ${r}
|
|
6
|
+
`}else s+=`${t}${i}: ${o}
|
|
7
|
+
`;return s}function ie(n){let e=n.defaults||{},t=e.labels||{},s={};for(let[o,r]of Object.entries(n.functions||{})){let a={...t,...r.labels};r.category&&(a.category=r.category),s[o]={region:r.region||e.region||["us-central1"],platform:r.platform||e.platform||"gcfv2",entryPoint:r.entryPoint||o,labels:a},r.trigger==="http"?s[o].httpsTrigger={}:s[o].callableTrigger={}}if(n.crud?.entities)for(let o of n.crud.entities)for(let r of oe){let a=`${r}_${o}`;s[a]={region:e.region||["us-central1"],platform:e.platform||"gcfv2",callableTrigger:{},entryPoint:a,labels:{...t,category:"crud"}}}return`# Firebase Functions Configuration
|
|
8
|
+
# Generated by @donotdev/core/functions - DO NOT EDIT MANUALLY
|
|
9
|
+
# Generated at: ${new Date().toISOString()}
|
|
10
|
+
|
|
11
|
+
`+ne({endpoints:s,specVersion:"v1alpha1",requiredAPIs:[]})}function xe(n){let e=Object.keys(n.functions||{}),t=[];if(n.crud?.entities)for(let s of n.crud.entities)for(let i of oe)t.push(`${i}_${s}`);return{yaml:ie(n),functions:[...e,...t],staticFunctions:e,crudFunctions:t}}function ae(n={}){let{entry:e="src/index.ts",outDir:t="lib",minify:s=!1,sourcemap:i=!0,platform:o="firebase",...r}=n,a=X();return se({entry:e,outDir:t,minify:s,sourcemap:i,platform:o,workspace:a,...r})}function et(n={}){return ae({...n,platform:"framework",bundleWorkspaceDeps:!0})}function tt(n={}){return ae({...n,platform:"firebase",bundleWorkspaceDeps:!0,importFramework:!0})}export{tt as createAppFunctionsConfig,ae as createFunctionsEsbuildConfig,et as createRootFunctionsConfig,ie as generateFunctionsYaml,xe as generateFunctionsYamlWithInfo};
|
|
@@ -208,145 +208,6 @@
|
|
|
208
208
|
"changeLanguage": "تغيير اللغة"
|
|
209
209
|
}
|
|
210
210
|
},
|
|
211
|
-
"fields": {
|
|
212
|
-
"array": "مصفوفة",
|
|
213
|
-
"boolean": "منطقي",
|
|
214
|
-
"checkbox": "مربع اختيار",
|
|
215
|
-
"date": "تاريخ",
|
|
216
|
-
"datetime-local": "التاريخ والوقت",
|
|
217
|
-
"email": "بريد إلكتروني",
|
|
218
|
-
"file": "ملف",
|
|
219
|
-
"geopoint": "موقع",
|
|
220
|
-
"image": "صورة",
|
|
221
|
-
"map": "خريطة",
|
|
222
|
-
"multiselect": "اختيار متعدد",
|
|
223
|
-
"number": "رقم",
|
|
224
|
-
"password": "كلمة مرور",
|
|
225
|
-
"phone": "رقم هاتف",
|
|
226
|
-
"radio": "أزرار اختيار",
|
|
227
|
-
"range": "نطاق",
|
|
228
|
-
"reference": "مرجع",
|
|
229
|
-
"select": "اختيار",
|
|
230
|
-
"tel": "رقم هاتف",
|
|
231
|
-
"text": "نص",
|
|
232
|
-
"textarea": "منطقة نص",
|
|
233
|
-
"timestamp": "طابع زمني",
|
|
234
|
-
"url": "رابط"
|
|
235
|
-
},
|
|
236
|
-
"text": {
|
|
237
|
-
"required": "{{field}} مطلوب",
|
|
238
|
-
"minLength": "{{field}} يجب أن يكون {{min}} أحرف على الأقل",
|
|
239
|
-
"maxLength": "{{field}} يجب ألا يتجاوز {{max}} حرف",
|
|
240
|
-
"email": "يرجى إدخال عنوان بريد إلكتروني صالح",
|
|
241
|
-
"url": "يرجى إدخال رابط صالح",
|
|
242
|
-
"matches": "{{field}} يجب أن يطابق النمط {{pattern}}",
|
|
243
|
-
"unique": "{{field}} يجب أن يكون فريداً",
|
|
244
|
-
"alphanumeric": "{{field}} يجب أن يحتوي على أحرف وأرقام فقط",
|
|
245
|
-
"lettersOnly": "{{field}} يجب أن يحتوي على أحرف فقط"
|
|
246
|
-
},
|
|
247
|
-
"number": {
|
|
248
|
-
"required": "{{field}} مطلوب",
|
|
249
|
-
"min": "{{field}} يجب أن يكون {{min}} على الأقل",
|
|
250
|
-
"max": "{{field}} يجب ألا يتجاوز {{max}}",
|
|
251
|
-
"integer": "{{field}} يجب أن يكون رقماً صحيحاً",
|
|
252
|
-
"positive": "{{field}} يجب أن يكون موجباً",
|
|
253
|
-
"negative": "{{field}} يجب أن يكون سالباً",
|
|
254
|
-
"between": "{{field}} يجب أن يكون بين {{min}} و {{max}}",
|
|
255
|
-
"precision": "{{field}} يجب أن يحتوي على {{precision}} منازل عشرية كحد أقصى"
|
|
256
|
-
},
|
|
257
|
-
"date": {
|
|
258
|
-
"required": "{{field}} مطلوب",
|
|
259
|
-
"min": "{{field}} يجب أن يكون بعد {{min}}",
|
|
260
|
-
"max": "{{field}} يجب أن يكون قبل {{max}}",
|
|
261
|
-
"between": "{{field}} يجب أن يكون بين {{min}} و {{max}}",
|
|
262
|
-
"format": "يرجى إدخال تاريخ صالح",
|
|
263
|
-
"future": "{{field}} يجب أن يكون في المستقبل",
|
|
264
|
-
"past": "{{field}} يجب أن يكون في الماضي",
|
|
265
|
-
"today": "{{field}} يجب أن يكون اليوم"
|
|
266
|
-
},
|
|
267
|
-
"select": {
|
|
268
|
-
"required": "يرجى اختيار {{field}}",
|
|
269
|
-
"invalid": "اختيار غير صالح لـ {{field}}",
|
|
270
|
-
"min": "يرجى اختيار {{min}} خيارات على الأقل",
|
|
271
|
-
"max": "يرجى اختيار {{max}} خيارات كحد أقصى"
|
|
272
|
-
},
|
|
273
|
-
"boolean": {
|
|
274
|
-
"required": "{{field}} يجب أن يكون محدداً"
|
|
275
|
-
},
|
|
276
|
-
"array": {
|
|
277
|
-
"required": "{{field}} واحد على الأقل مطلوب",
|
|
278
|
-
"minItems": "يرجى اختيار {{min}} {{field}} على الأقل",
|
|
279
|
-
"maxItems": "لا يمكن اختيار أكثر من {{max}} {{field}}",
|
|
280
|
-
"uniqueItems": "جميع {{field}} يجب أن تكون فريدة"
|
|
281
|
-
},
|
|
282
|
-
"file": {
|
|
283
|
-
"required": "يرجى اختيار ملف",
|
|
284
|
-
"maxSize": "حجم الملف يجب ألا يتجاوز {{max}}",
|
|
285
|
-
"minSize": "حجم الملف يجب أن يكون {{min}} على الأقل",
|
|
286
|
-
"type": "نوع الملف يجب أن يكون {{types}}",
|
|
287
|
-
"dimensions": "أبعاد الصورة يجب أن تكون {{width}}x{{height}}"
|
|
288
|
-
},
|
|
289
|
-
"image": {
|
|
290
|
-
"undo": {
|
|
291
|
-
"ariaLabel": "تراجع عن الإجراء الأخير",
|
|
292
|
-
"title": "تراجع (Ctrl+Z)"
|
|
293
|
-
},
|
|
294
|
-
"redo": {
|
|
295
|
-
"ariaLabel": "أعد الإجراء الأخير",
|
|
296
|
-
"title": "أعد (Ctrl+Shift+Z)"
|
|
297
|
-
},
|
|
298
|
-
"upload": {
|
|
299
|
-
"ariaLabel": "رفع {{type}}",
|
|
300
|
-
"ariaLabelSingle": "رفع صورة",
|
|
301
|
-
"ariaLabelMultiple": "رفع صور",
|
|
302
|
-
"selectAriaLabel": "اختر {{type}} للرفع",
|
|
303
|
-
"selectAriaLabelSingle": "اختر صورة للرفع",
|
|
304
|
-
"selectAriaLabelMultiple": "اختر صور للرفع",
|
|
305
|
-
"dropzone": "اسحب وأفلت، الصق، أو انقر لرفع {{type}}",
|
|
306
|
-
"dropzoneSingle": "اسحب وأفلت، الصق، أو انقر لرفع صورة",
|
|
307
|
-
"dropzoneMultiple": "اسحب وأفلت، الصق، أو انقر لرفع صور",
|
|
308
|
-
"maxFiles": "حد أقصى {{max}} صورة، {{size}} ميجابايت لكل منها",
|
|
309
|
-
"maxSize": "{{size}} ميجابايت لكل منها",
|
|
310
|
-
"progress": "تقدم الرفع: {{progress}}%",
|
|
311
|
-
"pending": "رفع معلق",
|
|
312
|
-
"uploaded": "تم رفع {{count}} {{type}}",
|
|
313
|
-
"uploadedSingle": "تم رفع {{count}} صورة",
|
|
314
|
-
"uploadedMultiple": "تم رفع {{count}} صورة",
|
|
315
|
-
"failed": "فشل رفع {{fileName}}"
|
|
316
|
-
},
|
|
317
|
-
"delete": {
|
|
318
|
-
"ariaLabel": "حذف الصورة {{index}}",
|
|
319
|
-
"title": "حذف (Delete/Backspace)",
|
|
320
|
-
"failed": "فشل حذف الصورة"
|
|
321
|
-
},
|
|
322
|
-
"reorder": {
|
|
323
|
-
"ariaLabel": "اسحب لإعادة الترتيب"
|
|
324
|
-
},
|
|
325
|
-
"rotate": {
|
|
326
|
-
"failed": "فشل تدوير الصورة"
|
|
327
|
-
},
|
|
328
|
-
"errors": {
|
|
329
|
-
"maxFiles": "الحد الأقصى {{max}} صورة مسموح بها",
|
|
330
|
-
"singleOnly": "صورة واحدة فقط مسموح بها",
|
|
331
|
-
"notImage": "{{fileName}} ليست صورة",
|
|
332
|
-
"exceedsSize": "{{fileName}} يتجاوز الحد {{size}} ميجابايت"
|
|
333
|
-
},
|
|
334
|
-
"warnings": {
|
|
335
|
-
"duplicates": "تم تخطي الصور المكررة: {{files}}"
|
|
336
|
-
},
|
|
337
|
-
"alt": {
|
|
338
|
-
"upload": "رفع {{index}}",
|
|
339
|
-
"uploaded": "{{label}} {{index}}{{suffix}} (مرفوعة)",
|
|
340
|
-
"pending": "{{label}} {{index}}{{suffix}} (رفع معلق)"
|
|
341
|
-
}
|
|
342
|
-
},
|
|
343
|
-
"custom": {
|
|
344
|
-
"passwordMatch": "كلمات المرور يجب أن تتطابق",
|
|
345
|
-
"phoneNumber": "يرجى إدخال رقم هاتف صالح",
|
|
346
|
-
"postalCode": "يرجى إدخال رمز بريدي صالح",
|
|
347
|
-
"currency": "يرجى إدخال مبلغ صالح",
|
|
348
|
-
"color": "يرجى إدخال كود لون صالح"
|
|
349
|
-
},
|
|
350
211
|
"footer": {
|
|
351
212
|
"landing": {
|
|
352
213
|
"company": {
|
|
@@ -208,145 +208,6 @@
|
|
|
208
208
|
"changeLanguage": "Sprache ändern"
|
|
209
209
|
}
|
|
210
210
|
},
|
|
211
|
-
"fields": {
|
|
212
|
-
"array": "Array",
|
|
213
|
-
"boolean": "Boolean",
|
|
214
|
-
"checkbox": "Kontrollkästchen",
|
|
215
|
-
"date": "Datum",
|
|
216
|
-
"datetime-local": "Datum und Uhrzeit",
|
|
217
|
-
"email": "E-Mail",
|
|
218
|
-
"file": "Datei",
|
|
219
|
-
"geopoint": "Standort",
|
|
220
|
-
"image": "Bild",
|
|
221
|
-
"map": "Karte",
|
|
222
|
-
"multiselect": "Mehrfachauswahl",
|
|
223
|
-
"number": "Zahl",
|
|
224
|
-
"password": "Passwort",
|
|
225
|
-
"phone": "Telefonnummer",
|
|
226
|
-
"radio": "Optionsfelder",
|
|
227
|
-
"range": "Bereich",
|
|
228
|
-
"reference": "Referenz",
|
|
229
|
-
"select": "Auswählen",
|
|
230
|
-
"tel": "Telefonnummer",
|
|
231
|
-
"text": "Text",
|
|
232
|
-
"textarea": "Textbereich",
|
|
233
|
-
"timestamp": "Zeitstempel",
|
|
234
|
-
"url": "URL"
|
|
235
|
-
},
|
|
236
|
-
"text": {
|
|
237
|
-
"required": "{{field}} ist erforderlich",
|
|
238
|
-
"minLength": "{{field}} muss mindestens {{min}} Zeichen lang sein",
|
|
239
|
-
"maxLength": "{{field}} darf {{max}} Zeichen nicht überschreiten",
|
|
240
|
-
"email": "Bitte geben Sie eine gültige E-Mail-Adresse ein",
|
|
241
|
-
"url": "Bitte geben Sie eine gültige URL ein",
|
|
242
|
-
"matches": "{{field}} muss dem Muster {{pattern}} entsprechen",
|
|
243
|
-
"unique": "{{field}} muss eindeutig sein",
|
|
244
|
-
"alphanumeric": "{{field}} darf nur Buchstaben und Zahlen enthalten",
|
|
245
|
-
"lettersOnly": "{{field}} darf nur Buchstaben enthalten"
|
|
246
|
-
},
|
|
247
|
-
"number": {
|
|
248
|
-
"required": "{{field}} ist erforderlich",
|
|
249
|
-
"min": "{{field}} muss mindestens {{min}} sein",
|
|
250
|
-
"max": "{{field}} darf {{max}} nicht überschreiten",
|
|
251
|
-
"integer": "{{field}} muss eine ganze Zahl sein",
|
|
252
|
-
"positive": "{{field}} muss positiv sein",
|
|
253
|
-
"negative": "{{field}} muss negativ sein",
|
|
254
|
-
"between": "{{field}} muss zwischen {{min}} und {{max}} liegen",
|
|
255
|
-
"precision": "{{field}} darf höchstens {{precision}} Dezimalstellen haben"
|
|
256
|
-
},
|
|
257
|
-
"date": {
|
|
258
|
-
"required": "{{field}} ist erforderlich",
|
|
259
|
-
"min": "{{field}} muss nach {{min}} sein",
|
|
260
|
-
"max": "{{field}} muss vor {{max}} sein",
|
|
261
|
-
"between": "{{field}} muss zwischen {{min}} und {{max}} liegen",
|
|
262
|
-
"format": "Bitte geben Sie ein gültiges Datum ein",
|
|
263
|
-
"future": "{{field}} muss in der Zukunft liegen",
|
|
264
|
-
"past": "{{field}} muss in der Vergangenheit liegen",
|
|
265
|
-
"today": "{{field}} muss heute sein"
|
|
266
|
-
},
|
|
267
|
-
"select": {
|
|
268
|
-
"required": "Bitte wählen Sie ein {{field}} aus",
|
|
269
|
-
"invalid": "Ungültige Auswahl für {{field}}",
|
|
270
|
-
"min": "Bitte wählen Sie mindestens {{min}} Optionen aus",
|
|
271
|
-
"max": "Bitte wählen Sie höchstens {{max}} Optionen aus"
|
|
272
|
-
},
|
|
273
|
-
"boolean": {
|
|
274
|
-
"required": "{{field}} muss ausgewählt werden"
|
|
275
|
-
},
|
|
276
|
-
"array": {
|
|
277
|
-
"required": "Mindestens ein {{field}} ist erforderlich",
|
|
278
|
-
"minItems": "Bitte wählen Sie mindestens {{min}} {{field}} aus",
|
|
279
|
-
"maxItems": "Es können nicht mehr als {{max}} {{field}} ausgewählt werden",
|
|
280
|
-
"uniqueItems": "Alle {{field}} müssen eindeutig sein"
|
|
281
|
-
},
|
|
282
|
-
"file": {
|
|
283
|
-
"required": "Bitte wählen Sie eine Datei aus",
|
|
284
|
-
"maxSize": "Die Dateigröße darf {{max}} nicht überschreiten",
|
|
285
|
-
"minSize": "Die Dateigröße muss mindestens {{min}} sein",
|
|
286
|
-
"type": "Der Dateityp muss {{types}} sein",
|
|
287
|
-
"dimensions": "Die Bildabmessungen müssen {{width}}x{{height}} sein"
|
|
288
|
-
},
|
|
289
|
-
"image": {
|
|
290
|
-
"undo": {
|
|
291
|
-
"ariaLabel": "Letzte Aktion rückgängig machen",
|
|
292
|
-
"title": "Rückgängig (Strg+Z)"
|
|
293
|
-
},
|
|
294
|
-
"redo": {
|
|
295
|
-
"ariaLabel": "Letzte Aktion wiederholen",
|
|
296
|
-
"title": "Wiederholen (Strg+Umschalt+Z)"
|
|
297
|
-
},
|
|
298
|
-
"upload": {
|
|
299
|
-
"ariaLabel": "{{type}} hochladen",
|
|
300
|
-
"ariaLabelSingle": "Ein Bild hochladen",
|
|
301
|
-
"ariaLabelMultiple": "Bilder hochladen",
|
|
302
|
-
"selectAriaLabel": "{{type}} zum Hochladen auswählen",
|
|
303
|
-
"selectAriaLabelSingle": "Ein Bild zum Hochladen auswählen",
|
|
304
|
-
"selectAriaLabelMultiple": "Bilder zum Hochladen auswählen",
|
|
305
|
-
"dropzone": "Ziehen und ablegen, einfügen oder klicken, um {{type}} hochzuladen",
|
|
306
|
-
"dropzoneSingle": "Ziehen und ablegen, einfügen oder klicken, um ein Bild hochzuladen",
|
|
307
|
-
"dropzoneMultiple": "Ziehen und ablegen, einfügen oder klicken, um Bilder hochzuladen",
|
|
308
|
-
"maxFiles": "Max {{max}} Bilder, {{size}}MB jeweils",
|
|
309
|
-
"maxSize": "{{size}}MB jeweils",
|
|
310
|
-
"progress": "Upload-Fortschritt: {{progress}}%",
|
|
311
|
-
"pending": "Upload ausstehend",
|
|
312
|
-
"uploaded": "{{count}} {{type}} hochgeladen",
|
|
313
|
-
"uploadedSingle": "{{count}} Bild hochgeladen",
|
|
314
|
-
"uploadedMultiple": "{{count}} Bilder hochgeladen",
|
|
315
|
-
"failed": "Fehler beim Hochladen von {{fileName}}"
|
|
316
|
-
},
|
|
317
|
-
"delete": {
|
|
318
|
-
"ariaLabel": "Bild {{index}} löschen",
|
|
319
|
-
"title": "Löschen (Entf/Rücktaste)",
|
|
320
|
-
"failed": "Fehler beim Löschen des Bildes"
|
|
321
|
-
},
|
|
322
|
-
"reorder": {
|
|
323
|
-
"ariaLabel": "Zum Neuordnen ziehen"
|
|
324
|
-
},
|
|
325
|
-
"rotate": {
|
|
326
|
-
"failed": "Fehler beim Drehen des Bildes"
|
|
327
|
-
},
|
|
328
|
-
"errors": {
|
|
329
|
-
"maxFiles": "Maximal {{max}} Bilder erlaubt",
|
|
330
|
-
"singleOnly": "Nur ein Bild erlaubt",
|
|
331
|
-
"notImage": "{{fileName}} ist kein Bild",
|
|
332
|
-
"exceedsSize": "{{fileName}} überschreitet das Limit von {{size}}MB"
|
|
333
|
-
},
|
|
334
|
-
"warnings": {
|
|
335
|
-
"duplicates": "Doppelte Bilder übersprungen: {{files}}"
|
|
336
|
-
},
|
|
337
|
-
"alt": {
|
|
338
|
-
"upload": "Hochladen {{index}}",
|
|
339
|
-
"uploaded": "{{label}} {{index}}{{suffix}} (hochgeladen)",
|
|
340
|
-
"pending": "{{label}} {{index}}{{suffix}} (Upload ausstehend)"
|
|
341
|
-
}
|
|
342
|
-
},
|
|
343
|
-
"custom": {
|
|
344
|
-
"passwordMatch": "Passwörter müssen übereinstimmen",
|
|
345
|
-
"phoneNumber": "Bitte geben Sie eine gültige Telefonnummer ein",
|
|
346
|
-
"postalCode": "Bitte geben Sie eine gültige Postleitzahl ein",
|
|
347
|
-
"currency": "Bitte geben Sie einen gültigen Betrag ein",
|
|
348
|
-
"color": "Bitte geben Sie einen gültigen Farbcode ein"
|
|
349
|
-
},
|
|
350
211
|
"footer": {
|
|
351
212
|
"landing": {
|
|
352
213
|
"company": {
|
|
@@ -208,145 +208,6 @@
|
|
|
208
208
|
"changeLanguage": "Change Language"
|
|
209
209
|
}
|
|
210
210
|
},
|
|
211
|
-
"fields": {
|
|
212
|
-
"array": "Array",
|
|
213
|
-
"boolean": "Boolean",
|
|
214
|
-
"checkbox": "Checkbox",
|
|
215
|
-
"date": "Date",
|
|
216
|
-
"datetime-local": "Date and Time",
|
|
217
|
-
"email": "Email",
|
|
218
|
-
"file": "File",
|
|
219
|
-
"geopoint": "Location",
|
|
220
|
-
"image": "Image",
|
|
221
|
-
"map": "Map",
|
|
222
|
-
"multiselect": "Multiple Select",
|
|
223
|
-
"number": "Number",
|
|
224
|
-
"password": "Password",
|
|
225
|
-
"phone": "Phone Number",
|
|
226
|
-
"radio": "Radio Buttons",
|
|
227
|
-
"range": "Range",
|
|
228
|
-
"reference": "Reference",
|
|
229
|
-
"select": "Select",
|
|
230
|
-
"tel": "Phone Number",
|
|
231
|
-
"text": "Text",
|
|
232
|
-
"textarea": "Text Area",
|
|
233
|
-
"timestamp": "Timestamp",
|
|
234
|
-
"url": "URL"
|
|
235
|
-
},
|
|
236
|
-
"text": {
|
|
237
|
-
"required": "{{field}} is required",
|
|
238
|
-
"minLength": "{{field}} must be at least {{min}} characters",
|
|
239
|
-
"maxLength": "{{field}} must not exceed {{max}} characters",
|
|
240
|
-
"email": "Please enter a valid email address",
|
|
241
|
-
"url": "Please enter a valid URL",
|
|
242
|
-
"matches": "{{field}} must match the pattern {{pattern}}",
|
|
243
|
-
"unique": "{{field}} must be unique",
|
|
244
|
-
"alphanumeric": "{{field}} must only contain letters and numbers",
|
|
245
|
-
"lettersOnly": "{{field}} must only contain letters"
|
|
246
|
-
},
|
|
247
|
-
"number": {
|
|
248
|
-
"required": "{{field}} is required",
|
|
249
|
-
"min": "{{field}} must be at least {{min}}",
|
|
250
|
-
"max": "{{field}} must not exceed {{max}}",
|
|
251
|
-
"integer": "{{field}} must be a whole number",
|
|
252
|
-
"positive": "{{field}} must be positive",
|
|
253
|
-
"negative": "{{field}} must be negative",
|
|
254
|
-
"between": "{{field}} must be between {{min}} and {{max}}",
|
|
255
|
-
"precision": "{{field}} must have at most {{precision}} decimal places"
|
|
256
|
-
},
|
|
257
|
-
"date": {
|
|
258
|
-
"required": "{{field}} is required",
|
|
259
|
-
"min": "{{field}} must be after {{min}}",
|
|
260
|
-
"max": "{{field}} must be before {{max}}",
|
|
261
|
-
"between": "{{field}} must be between {{min}} and {{max}}",
|
|
262
|
-
"format": "Please enter a valid date",
|
|
263
|
-
"future": "{{field}} must be in the future",
|
|
264
|
-
"past": "{{field}} must be in the past",
|
|
265
|
-
"today": "{{field}} must be today"
|
|
266
|
-
},
|
|
267
|
-
"select": {
|
|
268
|
-
"required": "Please select a {{field}}",
|
|
269
|
-
"invalid": "Invalid selection for {{field}}",
|
|
270
|
-
"min": "Please select at least {{min}} options",
|
|
271
|
-
"max": "Please select no more than {{max}} options"
|
|
272
|
-
},
|
|
273
|
-
"boolean": {
|
|
274
|
-
"required": "{{field}} must be selected"
|
|
275
|
-
},
|
|
276
|
-
"array": {
|
|
277
|
-
"required": "At least one {{field}} is required",
|
|
278
|
-
"minItems": "Please select at least {{min}} {{field}}",
|
|
279
|
-
"maxItems": "Cannot select more than {{max}} {{field}}",
|
|
280
|
-
"uniqueItems": "All {{field}} must be unique"
|
|
281
|
-
},
|
|
282
|
-
"file": {
|
|
283
|
-
"required": "Please select a file",
|
|
284
|
-
"maxSize": "File size must not exceed {{max}}",
|
|
285
|
-
"minSize": "File size must be at least {{min}}",
|
|
286
|
-
"type": "File type must be {{types}}",
|
|
287
|
-
"dimensions": "Image dimensions must be {{width}}x{{height}}"
|
|
288
|
-
},
|
|
289
|
-
"image": {
|
|
290
|
-
"undo": {
|
|
291
|
-
"ariaLabel": "Undo last action",
|
|
292
|
-
"title": "Undo (Ctrl+Z)"
|
|
293
|
-
},
|
|
294
|
-
"redo": {
|
|
295
|
-
"ariaLabel": "Redo last action",
|
|
296
|
-
"title": "Redo (Ctrl+Shift+Z)"
|
|
297
|
-
},
|
|
298
|
-
"upload": {
|
|
299
|
-
"ariaLabel": "Upload {{type}}",
|
|
300
|
-
"ariaLabelSingle": "Upload an image",
|
|
301
|
-
"ariaLabelMultiple": "Upload images",
|
|
302
|
-
"selectAriaLabel": "Select {{type}} to upload",
|
|
303
|
-
"selectAriaLabelSingle": "Select an image to upload",
|
|
304
|
-
"selectAriaLabelMultiple": "Select images to upload",
|
|
305
|
-
"dropzone": "Drag & drop, paste, or click to upload {{type}}",
|
|
306
|
-
"dropzoneSingle": "Drag & drop, paste, or click to upload an image",
|
|
307
|
-
"dropzoneMultiple": "Drag & drop, paste, or click to upload images",
|
|
308
|
-
"maxFiles": "Max {{max}} images, {{size}}MB each",
|
|
309
|
-
"maxSize": "{{size}}MB each",
|
|
310
|
-
"progress": "Upload progress: {{progress}}%",
|
|
311
|
-
"pending": "Pending upload",
|
|
312
|
-
"uploaded": "{{count}} {{type}} uploaded",
|
|
313
|
-
"uploadedSingle": "{{count}} image uploaded",
|
|
314
|
-
"uploadedMultiple": "{{count}} images uploaded",
|
|
315
|
-
"failed": "Failed to upload {{fileName}}"
|
|
316
|
-
},
|
|
317
|
-
"delete": {
|
|
318
|
-
"ariaLabel": "Delete image {{index}}",
|
|
319
|
-
"title": "Delete (Delete/Backspace)",
|
|
320
|
-
"failed": "Failed to delete image"
|
|
321
|
-
},
|
|
322
|
-
"reorder": {
|
|
323
|
-
"ariaLabel": "Drag to reorder"
|
|
324
|
-
},
|
|
325
|
-
"rotate": {
|
|
326
|
-
"failed": "Failed to rotate image"
|
|
327
|
-
},
|
|
328
|
-
"errors": {
|
|
329
|
-
"maxFiles": "Maximum {{max}} images allowed",
|
|
330
|
-
"singleOnly": "Only one image allowed",
|
|
331
|
-
"notImage": "{{fileName}} is not an image",
|
|
332
|
-
"exceedsSize": "{{fileName}} exceeds {{size}}MB limit"
|
|
333
|
-
},
|
|
334
|
-
"warnings": {
|
|
335
|
-
"duplicates": "Duplicate images skipped: {{files}}"
|
|
336
|
-
},
|
|
337
|
-
"alt": {
|
|
338
|
-
"upload": "Upload {{index}}",
|
|
339
|
-
"uploaded": "{{label}} {{index}}{{suffix}} (uploaded)",
|
|
340
|
-
"pending": "{{label}} {{index}}{{suffix}} (pending upload)"
|
|
341
|
-
}
|
|
342
|
-
},
|
|
343
|
-
"custom": {
|
|
344
|
-
"passwordMatch": "Passwords must match",
|
|
345
|
-
"phoneNumber": "Please enter a valid phone number",
|
|
346
|
-
"postalCode": "Please enter a valid postal code",
|
|
347
|
-
"currency": "Please enter a valid amount",
|
|
348
|
-
"color": "Please enter a valid color code"
|
|
349
|
-
},
|
|
350
211
|
"footer": {
|
|
351
212
|
"landing": {
|
|
352
213
|
"company": {
|
|
@@ -456,6 +317,11 @@
|
|
|
456
317
|
"pageSource": "Page Source",
|
|
457
318
|
"inspectPageSourceCode": "Inspect page source code"
|
|
458
319
|
},
|
|
320
|
+
"sheet": {
|
|
321
|
+
"navigation": "Navigation",
|
|
322
|
+
"codeInspector": "Code Inspector",
|
|
323
|
+
"debugPanel": "Debug Panel"
|
|
324
|
+
},
|
|
459
325
|
"routeError": {
|
|
460
326
|
"title": "Something went wrong",
|
|
461
327
|
"description": "We encountered an error while loading this page.",
|