@cyberskill/shared 2.28.0 → 3.0.0

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 (91) hide show
  1. package/dist/config/config.util.cjs +1 -1
  2. package/dist/config/config.util.js +24 -33
  3. package/dist/config/eslint/index.cjs +1 -1
  4. package/dist/config/eslint/index.d.ts +4 -0
  5. package/dist/config/eslint/index.js +4 -12
  6. package/dist/config/graphql-codegen/graphql-codegen.util.cjs +1 -1
  7. package/dist/config/graphql-codegen/graphql-codegen.util.js +28 -33
  8. package/dist/config/storybook/storybook.preview.cjs +1 -1
  9. package/dist/config/storybook/storybook.preview.js +10 -13
  10. package/dist/config/vitest/vitest.e2e.cjs +1 -1
  11. package/dist/config/vitest/vitest.e2e.js +1 -1
  12. package/dist/config/vitest/vitest.unit.cjs +1 -1
  13. package/dist/config/vitest/vitest.unit.js +19 -8
  14. package/dist/constant/common.cjs +1 -1
  15. package/dist/constant/common.js +1 -1
  16. package/dist/node/apollo-server/apollo-server.util.cjs +1 -1
  17. package/dist/node/apollo-server/apollo-server.util.js +21 -48
  18. package/dist/node/cli/index.cjs +2 -2
  19. package/dist/node/cli/index.js +109 -165
  20. package/dist/node/command/command.util.cjs +2 -2
  21. package/dist/node/command/command.util.js +135 -170
  22. package/dist/node/express/express.util.cjs +1 -1
  23. package/dist/node/express/express.util.js +39 -72
  24. package/dist/node/fs/fs.util.cjs +3 -3
  25. package/dist/node/fs/fs.util.js +45 -60
  26. package/dist/node/log/log.util.cjs +1 -1
  27. package/dist/node/log/log.util.js +29 -30
  28. package/dist/node/mongo/mongo.controller.cjs +1 -1
  29. package/dist/node/mongo/mongo.controller.js +531 -629
  30. package/dist/node/mongo/mongo.util.cjs +2 -2
  31. package/dist/node/mongo/mongo.util.js +280 -321
  32. package/dist/node/package/package.util.cjs +1 -1
  33. package/dist/node/package/package.util.js +197 -226
  34. package/dist/node/path/index.cjs +1 -1
  35. package/dist/node/path/index.js +26 -25
  36. package/dist/node/path/path.constant.cjs +1 -1
  37. package/dist/node/path/path.constant.d.ts +2 -0
  38. package/dist/node/path/path.constant.js +130 -150
  39. package/dist/node/storage/storage.util.cjs +1 -1
  40. package/dist/node/storage/storage.util.js +110 -158
  41. package/dist/node/upload/upload.util.cjs +1 -1
  42. package/dist/node/upload/upload.util.js +119 -150
  43. package/dist/node/ws/ts.util.cjs +1 -1
  44. package/dist/node/ws/ts.util.js +31 -54
  45. package/dist/react/apollo-client/apollo-client.component.cjs +1 -1
  46. package/dist/react/apollo-client/apollo-client.component.js +4 -4
  47. package/dist/react/apollo-client/apollo-client.util.cjs +1 -1
  48. package/dist/react/apollo-client/apollo-client.util.js +51 -58
  49. package/dist/react/apollo-client/links/upload.cjs +1 -1
  50. package/dist/react/apollo-client/links/upload.js +71 -74
  51. package/dist/react/apollo-client-nextjs/apollo-client-nextjs.util.cjs +1 -1
  52. package/dist/react/apollo-client-nextjs/apollo-client-nextjs.util.js +11 -18
  53. package/dist/react/apollo-error/apollo-error.component.cjs +1 -1
  54. package/dist/react/apollo-error/apollo-error.component.js +61 -23
  55. package/dist/react/apollo-error/apollo-error.module.scss.cjs +1 -1
  56. package/dist/react/apollo-error/apollo-error.module.scss.js +6 -6
  57. package/dist/react/apollo-error/apollo-error.test.unit.d.ts +1 -0
  58. package/dist/react/apollo-error/apollo-error.util.cjs +1 -1
  59. package/dist/react/apollo-error/apollo-error.util.js +6 -6
  60. package/dist/react/loading/loading.component.cjs +2 -2
  61. package/dist/react/loading/loading.component.js +30 -46
  62. package/dist/react/log/log.util.cjs +1 -1
  63. package/dist/react/log/log.util.js +4 -4
  64. package/dist/react/next-intl/next-intl.hoc.cjs +1 -1
  65. package/dist/react/next-intl/next-intl.hoc.js +13 -22
  66. package/dist/react/next-intl/next-intl.provider.cjs +1 -1
  67. package/dist/react/next-intl/next-intl.provider.js +7 -7
  68. package/dist/react/storage/storage.hook.cjs +1 -1
  69. package/dist/react/storage/storage.hook.js +43 -59
  70. package/dist/react/storage/storage.util.cjs +1 -1
  71. package/dist/react/storage/storage.util.js +28 -53
  72. package/dist/react/userback/userback.component.cjs +1 -1
  73. package/dist/react/userback/userback.component.js +18 -42
  74. package/dist/style.css +1 -1
  75. package/dist/util/common/common.util.cjs +1 -1
  76. package/dist/util/common/common.util.d.ts +2 -0
  77. package/dist/util/common/common.util.js +29 -37
  78. package/dist/util/index.cjs +1 -1
  79. package/dist/util/index.js +10 -9
  80. package/dist/util/object/object.util.cjs +1 -1
  81. package/dist/util/object/object.util.js +72 -76
  82. package/dist/util/string/index.cjs +1 -1
  83. package/dist/util/string/index.js +4 -3
  84. package/dist/util/string/string.util.cjs +1 -1
  85. package/dist/util/string/string.util.d.ts +12 -0
  86. package/dist/util/string/string.util.js +63 -44
  87. package/package.json +25 -16
  88. package/public/tsconfig.base.json +7 -3
  89. package/README.md +0 -470
  90. /package/dist/node_modules/.pnpm/{vitest@4.0.18_@types_node@25.3.0_jiti@2.6.1_jsdom@28.1.0_@noble_hashes@1.8.0__sass@1.97.3_tsx@4.21.0_yaml@2.8.2 → vitest@4.0.18_@types_node@25.3.3_jiti@2.6.1_jsdom@28.1.0_@noble_hashes@1.8.0__sass@1.97.3_tsx@4.21.0_yaml@2.8.2}/node_modules/vitest/dist/config.cjs +0 -0
  91. /package/dist/node_modules/.pnpm/{vitest@4.0.18_@types_node@25.3.0_jiti@2.6.1_jsdom@28.1.0_@noble_hashes@1.8.0__sass@1.97.3_tsx@4.21.0_yaml@2.8.2 → vitest@4.0.18_@types_node@25.3.3_jiti@2.6.1_jsdom@28.1.0_@noble_hashes@1.8.0__sass@1.97.3_tsx@4.21.0_yaml@2.8.2}/node_modules/vitest/dist/config.js +0 -0
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const C=require("migrate-mongo"),k=require("mongoose-aggregate-paginate-v2"),B=require("mongoose-paginate-v2"),q=require("node:crypto"),E=require("../../util/object/object.util.cjs"),J=require("../../util/common/common.util.cjs"),$=require("../fs/fs.util.cjs"),I=require("../path/path.constant.cjs"),H=require("../../util/validate/validate.util.cjs");var K=Object.defineProperty,L=Object.defineProperties,T=Object.getOwnPropertyDescriptors,D=Object.getOwnPropertySymbols,z=Object.prototype.hasOwnProperty,Q=Object.prototype.propertyIsEnumerable,G=(t,e,i)=>e in t?K(t,e,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[e]=i,W=(t,e)=>{for(var i in e||(e={}))z.call(e,i)&&G(t,i,e[i]);if(D)for(var i of D(e))Q.call(e,i)&&G(t,i,e[i]);return t},X=(t,e)=>L(t,T(e)),R=(t,e,i)=>new Promise((o,r)=>{var n=s=>{try{y(i.next(s))}catch(h){r(h)}},l=s=>{try{y(i.throw(s))}catch(h){r(h)}},y=s=>s.done?o(s.value):Promise.resolve(s.value).then(n,l);y((i=i.apply(t,e)).next())});function P(t){return t===t.toUpperCase()?t.charAt(0).toUpperCase()+t.slice(1).toLowerCase():t}const A={createGenericFields(){return{id:q.randomUUID(),isDel:!1,createdAt:new Date,updatedAt:new Date}},applyPlugins(t,e){e.filter(i=>typeof i=="function").forEach(i=>t.plugin(i))},applyMiddlewares(t,e){e.forEach(({method:i,pre:o,post:r})=>{i&&o&&t.pre(i,o),i&&r&&t.post(i,r)})},createGenericSchema(t){return new t.Schema({id:{type:String,default:()=>q.randomUUID(),unique:!0},isDel:{type:Boolean,default:!1}},{timestamps:!0})},createSchema({mongoose:t,schema:e,virtuals:i=[],standalone:o=!1}){const r=new t.Schema(e,{toJSON:{virtuals:!0},toObject:{virtuals:!0}});return i.forEach(({name:n,options:l,get:y})=>{if(A.isDynamicVirtual(l)){const s=r.statics;s._dynamicVirtuals||(s._dynamicVirtuals=[]),s._dynamicVirtuals.push({name:n,options:l});const h=r.virtual(n);y?h.get(y):h.get(function(){var u;return((u=this._populated)==null?void 0:u[n])||(l!=null&&l.count?0:l!=null&&l.justOne?null:[])})}else{const s=r.virtual(n,l);y&&s.get(y)}}),o||r.add(A.createGenericSchema(t)),r},createModel({mongoose:t,name:e,schema:i,virtuals:o=[],pagination:r=!0,aggregate:n=!0,middlewares:l=[]}){if(!e)throw new Error("Model name is required.");if(t.models[e])return t.models[e];const y=A.createSchema({mongoose:t,schema:i,virtuals:o});(r||n)&&A.applyPlugins(y,[r&&B,n&&k]),A.applyMiddlewares(y,l);const s=t.model(e,y);return o.length>0&&(s._virtualConfigs=o),s},validator:{isRequired(){return function(t){return R(this,null,function*(){return!H.validate.isEmpty(t)})}},isUnique(t){return function(e){return R(this,null,function*(){if(!Array.isArray(t)||t.length===0)throw new Error("Fields must be a non-empty array of strings.");const i={$or:t.map(r=>({[r]:e}))};return!(yield this.constructor.exists(i))})}},matchesRegex(t){return e=>R(null,null,function*(){if(!Array.isArray(t)||t.some(i=>!(i instanceof RegExp)))throw new Error("regexArray must be an array of valid RegExp objects.");return t.every(i=>i.test(e))})}},migrate:X(W({},C),{setConfig:t=>{const e=`// This file is automatically generated by the Cyberskill CLI.
2
- module.exports = ${JSON.stringify(t,null,4)}`;$.writeFileSync(I.PATH.MIGRATE_MONGO_CONFIG,e),$.addGitIgnoreEntry(I.PATH.GIT_IGNORE,I.MIGRATE_MONGO_CONFIG)}}),regexify(t,e){if(!t)return{};let i=E.deepClone(t);if(!e||e.length===0)return i;for(const o of e){const r=o.toString().split("."),n=E.getNestedValue(i,r);if(typeof n=="string"&&n.length>0){const l={$regex:`.*${J.regexSearchMapper(n)}.*`,$options:"i"};i=E.setNestedValue(i,r,l)}}return i},isDynamicVirtual(t){return!!(t&&typeof t.ref=="function")},getNewRecords(t,e,i){return R(this,null,function*(){const o=yield t.findAll({});return o.success?e.filter(n=>!o.result.some(l=>i(l,n))):e})},getExistingRecords(t,e,i){return R(this,null,function*(){const o=yield t.findAll({});return o.success?o.result.filter(n=>e.some(l=>i(n,l))):[]})}};function x(t,e,i,o,r){return R(this,null,function*(){if(!e.length||!i)return e;const n=Array.isArray(i)?i:[i];for(const l of n)typeof l=="string"?yield U(t,e,l,o,r):l&&typeof l=="object"&&(yield Y(t,e,l,o,r));return e})}function U(t,e,i,o,r){return R(this,null,function*(){var n,l,y,s;const h=i.split(".");if(h.length<2){for(const m of e)yield V(t,m,i,o,void 0,r);return}const u=h[0];if(!u||u.trim()==="")return;const S=h.slice(1).join(".");for(const m of e){const j=m,b=j[u];if(b&&typeof b=="object"){let c=r;const a=c;if(r&&r.schema&&r.schema.virtuals){const f=r.schema.virtuals[u];if(f&&f.options&&f.options.ref){let O;if(typeof f.options.ref=="function"?O=f.options.ref(j):typeof f.options.ref=="string"&&(O=f.options.ref),O){const p=P(O);t.models[p]&&(c=t.models[p])}}}if(!c){const f=(l=(n=r==null?void 0:r.schema)==null?void 0:n.statics)!=null?l:{},p=((r==null?void 0:r._virtualConfigs)||f._dynamicVirtuals||[]).find(d=>d.name===u);if(p&&p.options&&p.options.ref){let d;if(typeof p.options.ref=="function"?d=p.options.ref(j):typeof p.options.ref=="string"&&(d=p.options.ref),d){const g=P(d);t.models[g]&&(c=t.models[g])}}}if(c===a){const f=(s=(y=r==null?void 0:r.schema)==null?void 0:y.statics)!=null?s:{},p=((r==null?void 0:r._virtualConfigs)||f._dynamicVirtuals||[]).find(d=>d.name===u);if(p&&p.options&&p.options.ref){let d;if(typeof p.options.ref=="function"?d=p.options.ref(j):typeof p.options.ref=="string"&&(d=p.options.ref),d){const g=P(d);t.models[g]&&(c=t.models[g])}}}if(Array.isArray(b))for(const f of b)f&&typeof f=="object"&&(yield V(t,f,S,o,u,c));else b&&typeof b=="object"&&(yield V(t,b,S,o,u,c))}}})}function Y(t,e,i,o,r){return R(this,null,function*(){const{path:n,populate:l}=i;if(!n)return;if(!l){yield U(t,e,n,o,r);return}const y=n;for(const s of e){const h=s,u=h[y];let S=r;if(r&&r.schema&&r.schema.virtuals){const m=r.schema.virtuals[y];if(m&&m.options&&m.options.ref){let j;if(typeof m.options.ref=="function"?j=m.options.ref(h):typeof m.options.ref=="string"&&(j=m.options.ref),j){const b=P(j);t.models[b]&&(S=t.models[b])}}}if(!S&&typeof u=="object"&&u&&"entityType"in u){const m=P(String(u.entityType));t.models[m]&&(S=t.models[m])}if(u&&typeof u=="object")if(Array.isArray(u))for(const m of u)m&&typeof m=="object"&&(yield x(t,[m],l,o,S));else u&&typeof u=="object"&&(yield x(t,[u],l,o,S))}})}function F(t,e,i,o){if(!i||!e||!e.schema)return;const r=i.split(".");let n=e.schema;for(let l=0;l<r.length;l++){const y=r[l];if(n&&n.virtuals&&y){const s=n.virtuals[y];if(s&&s.options&&s.options.ref){let h;if(typeof s.options.ref=="function"?h=s.options.ref(o):typeof s.options.ref=="string"&&(h=s.options.ref),h&&typeof h=="string"){if(l===r.length-1)return h;const u=t.models[h];if(u&&u.schema){n=u.schema;continue}}}}if(n&&n.paths&&y){const s=n.paths[y];if(s&&s.schema){n=s.schema;continue}}return}}function Z(t,e){if(e)for(const i of Object.keys(t.models)){const o=t.models[i],r=o==null?void 0:o.schema;if(r&&(r.paths&&r.paths[e]||r.virtuals&&r.virtuals[e]))return o}}function M(t,e){const i=(e||"").split(".")[0]||"";if(i)for(const o of Object.keys(t.models)){const r=t.models[o],n=r==null?void 0:r.schema;if(n&&(n.paths&&n.paths[i]||n.virtuals&&n.virtuals[i]))return r}}function V(t,e,i,o,r,n){return R(this,null,function*(){var l,y;let s=e.__t;if(!s){if(n){const c=r?`${r}.${i}`:i,a=(c||"").split(".")[0]||"";let f=n;if(!!!((l=f==null?void 0:f.schema)!=null&&l.paths&&f.schema.paths[a]||(y=f==null?void 0:f.schema)!=null&&y.virtuals&&f.schema.virtuals[a])){const d=M(t,c);d&&(f=d)}const p=F(t,f,c,e);if(p)s=p;else{const d=(c.includes(".")?c.split(".").pop():c)||"";if(d){const g=Z(t,d);if(g){const N=F(t,g,c,e);N&&(s=N)}}}}if(o&&o.length>0){const c=i.split(".").pop()||"",a=o.find(f=>f.name===c);if(a&&a.options.ref){let f;typeof a.options.ref=="function"?f=a.options.ref(e):typeof a.options.ref=="string"&&(f=a.options.ref),f&&typeof f=="string"&&(s=f)}}if(!s){for(const[c,a]of Object.entries(e))if(c==="entityType"&&typeof a=="string"){s=a;break}if(s&&t.models[s]){const c=t.models[s];if(c&&c.schema){const a=c.schema,f=i.split(".").pop()||"",O=(d,g="root")=>{if(!d||!d.virtuals)return;const N=d.virtuals;for(const _ of Object.keys(N))if(_===f){const v=N[_];if(v&&v.options&&v.options.ref){let w;if(typeof v.options.ref=="function"?w=v.options.ref(e):typeof v.options.ref=="string"&&(w=v.options.ref),w&&typeof w=="string")return w}}if(d.paths)for(const _ of Object.keys(d.paths)){const v=d.paths[_];if(v&&v.schema){const w=O(v.schema,`${g}.${_}`);if(w)return w}}},p=O(a);p&&(s=p)}}}if(!s){const c=i.split(".").pop()||"";if(n&&n.schema){const a=n.schema,f=(p,d="root")=>{if(!p||!p.virtuals)return;const g=p.virtuals;for(const N of Object.keys(g))if(N===c){const _=g[N];if(_&&_.options&&_.options.ref){let v;if(typeof _.options.ref=="function"?v=_.options.ref(e):typeof _.options.ref=="string"&&(v=_.options.ref),v&&typeof v=="string")return v}}if(p.paths)for(const N of Object.keys(p.paths)){const _=p.paths[N];if(_&&_.schema){const v=f(_.schema,`${d}.${N}`);if(v)return v}}},O=f(a);O&&(s=O)}if(!s&&n){const a=F(t,n,i,e);a&&(s=a)}if(!s&&o&&o.length>0){const a=o.find(f=>f.name===c);if(a&&a.options.ref){let f;typeof a.options.ref=="function"?f=a.options.ref(e):typeof a.options.ref=="string"&&(f=a.options.ref),f&&typeof f=="string"&&(s=f)}}}if(!s){const c=i.split(".").pop()||"",a=c?c.charAt(0).toUpperCase()+c.slice(1):"";a&&t.models[a]&&(s=a)}}const h=t.models[s];if(!h)return;const u=`${i}Id`,S=`${i}Ids`,m=e[u]||e[S]||e[i];if(!m)return;const j=Array.isArray(m)?m:[m],b=yield h.find({id:{$in:j}}).lean();b.length>0&&(Array.isArray(m)?e[i]=b:e[i]=b[0])})}exports.applyNestedPopulate=x;exports.convertEnumToModelName=P;exports.mongo=A;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const $=require("migrate-mongo"),G=require("mongoose-aggregate-paginate-v2"),D=require("mongoose-paginate-v2"),V=require("node:crypto"),S=require("../../util/object/object.util.cjs"),k=require("../../util/common/common.util.cjs"),x=require("../fs/fs.util.cjs"),_=require("../path/path.constant.cjs"),U=require("../../util/validate/validate.util.cjs");function A(t){return t===t.toUpperCase()?t.charAt(0).toUpperCase()+t.slice(1).toLowerCase():t}const R={createGenericFields(){return{id:V.randomUUID(),isDel:!1,createdAt:new Date,updatedAt:new Date}},applyPlugins(t,e){e.filter(i=>typeof i=="function").forEach(i=>t.plugin(i))},applyMiddlewares(t,e){e.forEach(({method:i,pre:a,post:r})=>{i&&a&&t.pre(i,a),i&&r&&t.post(i,r)})},createGenericSchema(t){return new t.Schema({id:{type:String,default:()=>V.randomUUID(),unique:!0},isDel:{type:Boolean,default:!1}},{timestamps:!0})},createSchema({mongoose:t,schema:e,virtuals:i=[],standalone:a=!1}){const r=new t.Schema(e,{toJSON:{virtuals:!0},toObject:{virtuals:!0}});return i.forEach(({name:o,options:s,get:u})=>{if(R.isDynamicVirtual(s)){const p=r.statics;p._dynamicVirtuals||(p._dynamicVirtuals=[]),p._dynamicVirtuals.push({name:o,options:s});const y=r.virtual(o);u?y.get(u):y.get(function(){return this._populated?.[o]||(s?.count?0:s?.justOne?null:[])})}else{const p=r.virtual(o,s);u&&p.get(u)}}),a||r.add(R.createGenericSchema(t)),r},createModel({mongoose:t,name:e,schema:i,virtuals:a=[],pagination:r=!0,aggregate:o=!0,middlewares:s=[]}){if(!e)throw new Error("Model name is required.");if(t.models[e])return t.models[e];const u=R.createSchema({mongoose:t,schema:i,virtuals:a});(r||o)&&R.applyPlugins(u,[r&&D,o&&G]),R.applyMiddlewares(u,s);const p=t.model(e,u);return a.length>0&&(p._virtualConfigs=a),p},validator:{isRequired(){return async function(t){return!U.validate.isEmpty(t)}},isUnique(t){return async function(e){if(!Array.isArray(t)||t.length===0)throw new Error("Fields must be a non-empty array of strings.");const i={$or:t.map(r=>({[r]:e}))};return!await this.constructor.exists(i)}},matchesRegex(t){return async e=>{if(!Array.isArray(t)||t.some(i=>!(i instanceof RegExp)))throw new Error("regexArray must be an array of valid RegExp objects.");return t.every(i=>i.test(e))}}},migrate:{...$,setConfig:t=>{const e=`// This file is automatically generated by the Cyberskill CLI.
2
+ module.exports = ${JSON.stringify(t,null,4)}`;x.writeFileSync(_.PATH.MIGRATE_MONGO_CONFIG,e),x.addGitIgnoreEntry(_.PATH.GIT_IGNORE,_.MIGRATE_MONGO_CONFIG)}},regexify(t,e){if(!t)return{};let i=S.deepClone(t);if(!e||e.length===0)return i;for(const a of e){const r=a.toString().split("."),o=S.getNestedValue(i,r);if(typeof o=="string"&&o.length>0){const s={$regex:`.*${k.regexSearchMapper(o)}.*`,$options:"i"};i=S.setNestedValue(i,r,s)}}return i},isDynamicVirtual(t){return!!(t&&typeof t.ref=="function")},async getNewRecords(t,e,i){const a=await t.findAll({});return a.success?e.filter(o=>!a.result.some(s=>i(s,o))):e},async getExistingRecords(t,e,i){const a=await t.findAll({});return a.success?a.result.filter(o=>e.some(s=>i(o,s))):[]}};async function I(t,e,i,a,r){if(!e.length||!i)return e;const o=Array.isArray(i)?i:[i];for(const s of o)typeof s=="string"?await q(t,e,s,a,r):s&&typeof s=="object"&&await C(t,e,s,a,r);return e}async function q(t,e,i,a,r){const o=i.split(".");if(o.length<2){for(const p of e)await E(t,p,i,a,void 0,r);return}const s=o[0];if(!s||s.trim()==="")return;const u=o.slice(1).join(".");for(const p of e){const y=p,l=y[s];if(l&&typeof l=="object"){let b=r;const d=b;if(r&&r.schema&&r.schema.virtuals){const f=r.schema.virtuals[s];if(f&&f.options&&f.options.ref){let c;if(typeof f.options.ref=="function"?c=f.options.ref(y):typeof f.options.ref=="string"&&(c=f.options.ref),c){const n=A(c);t.models[n]&&(b=t.models[n])}}}if(!b){const f=r?.schema?.statics??{},n=(r?._virtualConfigs||f._dynamicVirtuals||[]).find(m=>m.name===s);if(n&&n.options&&n.options.ref){let m;if(typeof n.options.ref=="function"?m=n.options.ref(y):typeof n.options.ref=="string"&&(m=n.options.ref),m){const v=A(m);t.models[v]&&(b=t.models[v])}}}if(b===d){const f=r?.schema?.statics??{},n=(r?._virtualConfigs||f._dynamicVirtuals||[]).find(m=>m.name===s);if(n&&n.options&&n.options.ref){let m;if(typeof n.options.ref=="function"?m=n.options.ref(y):typeof n.options.ref=="string"&&(m=n.options.ref),m){const v=A(m);t.models[v]&&(b=t.models[v])}}}if(Array.isArray(l))for(const f of l)f&&typeof f=="object"&&await E(t,f,u,a,s,b);else l&&typeof l=="object"&&await E(t,l,u,a,s,b)}}}async function C(t,e,i,a,r){const{path:o,populate:s}=i;if(!o)return;if(!s){await q(t,e,o,a,r);return}const u=o;for(const p of e){const y=p,l=y[u];let b=r;if(r&&r.schema&&r.schema.virtuals){const d=r.schema.virtuals[u];if(d&&d.options&&d.options.ref){let f;if(typeof d.options.ref=="function"?f=d.options.ref(y):typeof d.options.ref=="string"&&(f=d.options.ref),f){const c=A(f);t.models[c]&&(b=t.models[c])}}}if(!b&&typeof l=="object"&&l&&"entityType"in l){const d=A(String(l.entityType));t.models[d]&&(b=t.models[d])}if(l&&typeof l=="object")if(Array.isArray(l))for(const d of l)d&&typeof d=="object"&&await I(t,[d],s,a,b);else l&&typeof l=="object"&&await I(t,[l],s,a,b)}}function F(t,e,i,a){if(!i||!e||!e.schema)return;const r=i.split(".");let o=e.schema;for(let s=0;s<r.length;s++){const u=r[s];if(o&&o.virtuals&&u){const p=o.virtuals[u];if(p&&p.options&&p.options.ref){let y;if(typeof p.options.ref=="function"?y=p.options.ref(a):typeof p.options.ref=="string"&&(y=p.options.ref),y&&typeof y=="string"){if(s===r.length-1)return y;const l=t.models[y];if(l&&l.schema){o=l.schema;continue}}}}if(o&&o.paths&&u){const p=o.paths[u];if(p&&p.schema){o=p.schema;continue}}return}}function P(t,e){if(e)for(const i of Object.keys(t.models)){const a=t.models[i],r=a?.schema;if(r&&(r.paths&&r.paths[e]||r.virtuals&&r.virtuals[e]))return a}}function B(t,e){const i=(e||"").split(".")[0]||"";if(i)for(const a of Object.keys(t.models)){const r=t.models[a],o=r?.schema;if(o&&(o.paths&&o.paths[i]||o.virtuals&&o.virtuals[i]))return r}}async function E(t,e,i,a,r,o){let s=e.__t;if(!s){if(o){const f=r?`${r}.${i}`:i,c=(f||"").split(".")[0]||"";let n=o;if(!!!(n?.schema?.paths&&n.schema.paths[c]||n?.schema?.virtuals&&n.schema.virtuals[c])){const N=B(t,f);N&&(n=N)}const v=F(t,n,f,e);if(v)s=v;else{const N=(f.includes(".")?f.split(".").pop():f)||"";if(N){const O=P(t,N);if(O){const j=F(t,O,f,e);j&&(s=j)}}}}if(a&&a.length>0){const f=i.split(".").pop()||"",c=a.find(n=>n.name===f);if(c&&c.options.ref){let n;typeof c.options.ref=="function"?n=c.options.ref(e):typeof c.options.ref=="string"&&(n=c.options.ref),n&&typeof n=="string"&&(s=n)}}if(!s){for(const[f,c]of Object.entries(e))if(f==="entityType"&&typeof c=="string"){s=c;break}if(s&&t.models[s]){const f=t.models[s];if(f&&f.schema){const c=f.schema,n=i.split(".").pop()||"",m=(N,O="root")=>{if(!N||!N.virtuals)return;const j=N.virtuals;for(const g of Object.keys(j))if(g===n){const h=j[g];if(h&&h.options&&h.options.ref){let w;if(typeof h.options.ref=="function"?w=h.options.ref(e):typeof h.options.ref=="string"&&(w=h.options.ref),w&&typeof w=="string")return w}}if(N.paths)for(const g of Object.keys(N.paths)){const h=N.paths[g];if(h&&h.schema){const w=m(h.schema,`${O}.${g}`);if(w)return w}}},v=m(c);v&&(s=v)}}}if(!s){const f=i.split(".").pop()||"";if(o&&o.schema){const c=o.schema,n=(v,N="root")=>{if(!v||!v.virtuals)return;const O=v.virtuals;for(const j of Object.keys(O))if(j===f){const g=O[j];if(g&&g.options&&g.options.ref){let h;if(typeof g.options.ref=="function"?h=g.options.ref(e):typeof g.options.ref=="string"&&(h=g.options.ref),h&&typeof h=="string")return h}}if(v.paths)for(const j of Object.keys(v.paths)){const g=v.paths[j];if(g&&g.schema){const h=n(g.schema,`${N}.${j}`);if(h)return h}}},m=n(c);m&&(s=m)}if(!s&&o){const c=F(t,o,i,e);c&&(s=c)}if(!s&&a&&a.length>0){const c=a.find(n=>n.name===f);if(c&&c.options.ref){let n;typeof c.options.ref=="function"?n=c.options.ref(e):typeof c.options.ref=="string"&&(n=c.options.ref),n&&typeof n=="string"&&(s=n)}}}if(!s){const f=i.split(".").pop()||"",c=f?f.charAt(0).toUpperCase()+f.slice(1):"";c&&t.models[c]&&(s=c)}}const u=t.models[s];if(!u)return;const p=`${i}Id`,y=`${i}Ids`,l=e[p]||e[y]||e[i];if(!l)return;const b=Array.isArray(l)?l:[l],d=await u.find({id:{$in:b}}).lean();d.length>0&&(Array.isArray(l)?e[i]=d:e[i]=d[0])}exports.applyNestedPopulate=I;exports.convertEnumToModelName=A;exports.mongo=R;