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