@cyberskill/shared 2.18.0 → 2.19.1

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 (31) hide show
  1. package/dist/config/eslint/index.d.ts +13 -0
  2. package/dist/config/vitest/vitest.e2e.cjs +1 -1
  3. package/dist/config/vitest/vitest.e2e.js +1 -1
  4. package/dist/config/vitest/vitest.unit.cjs +1 -1
  5. package/dist/config/vitest/vitest.unit.js +1 -1
  6. package/dist/node/mongo/mongo.type.d.ts +2 -2
  7. package/dist/node/mongo/mongo.util.cjs +1 -1
  8. package/dist/node/mongo/mongo.util.d.ts +3 -3
  9. package/dist/node/mongo/mongo.util.js +5 -7
  10. package/dist/react/apollo-client/apollo-client.component.cjs +1 -1
  11. package/dist/react/apollo-client/apollo-client.component.d.ts +3 -2
  12. package/dist/react/apollo-client/apollo-client.component.js +12 -12
  13. package/dist/react/apollo-client/apollo-client.type.d.ts +6 -0
  14. package/dist/react/apollo-client/apollo-client.util.cjs +1 -1
  15. package/dist/react/apollo-client/apollo-client.util.js +32 -34
  16. package/dist/react/apollo-client-nextjs/apollo-client-nextjs.component.cjs +1 -1
  17. package/dist/react/apollo-client-nextjs/apollo-client-nextjs.component.d.ts +3 -2
  18. package/dist/react/apollo-client-nextjs/apollo-client-nextjs.component.js +10 -10
  19. package/dist/react/apollo-error/apollo-error.provider.cjs +1 -1
  20. package/dist/react/apollo-error/apollo-error.provider.d.ts +5 -4
  21. package/dist/react/apollo-error/apollo-error.provider.js +21 -15
  22. package/dist/react/apollo-error/apollo-error.type.d.ts +5 -0
  23. package/dist/react/apollo-error/apollo-error.util.cjs +1 -1
  24. package/dist/react/apollo-error/apollo-error.util.d.ts +13 -1
  25. package/dist/react/apollo-error/apollo-error.util.js +15 -7
  26. package/dist/react/apollo-error/index.cjs +1 -1
  27. package/dist/react/apollo-error/index.js +8 -6
  28. package/dist/style.css +1 -1
  29. package/package.json +55 -56
  30. /package/dist/node_modules/.pnpm/{vitest@3.2.4_@types_debug@4.1.12_@types_node@24.3.0_@vitest_browser@3.2.4_jiti@2.5.1_js_bae9c6abdb9bf325bd1b44dc7dc11e13 → vitest@4.0.9_@types_debug@4.1.12_@types_node@24.10.1_jiti@2.6.1_jsdom@27.2.0_sass@1.94.0_tsx@4.20.6_yaml@2.8.1}/node_modules/vitest/dist/config.cjs +0 -0
  31. /package/dist/node_modules/.pnpm/{vitest@3.2.4_@types_debug@4.1.12_@types_node@24.3.0_@vitest_browser@3.2.4_jiti@2.5.1_js_bae9c6abdb9bf325bd1b44dc7dc11e13 → vitest@4.0.9_@types_debug@4.1.12_@types_node@24.10.1_jiti@2.6.1_jsdom@27.2.0_sass@1.94.0_tsx@4.20.6_yaml@2.8.1}/node_modules/vitest/dist/config.js +0 -0
@@ -134,6 +134,9 @@ declare const _default: {
134
134
  CSSFontFaceRule: false;
135
135
  CSSFontFeatureValuesRule: false;
136
136
  CSSFontPaletteValuesRule: false;
137
+ CSSFunctionDeclarations: false;
138
+ CSSFunctionDescriptors: false;
139
+ CSSFunctionRule: false;
137
140
  CSSGroupingRule: false;
138
141
  CSSImageValue: false;
139
142
  CSSImportRule: false;
@@ -204,6 +207,7 @@ declare const _default: {
204
207
  DeviceOrientationEvent: false;
205
208
  devicePixelRatio: false;
206
209
  DevicePosture: false;
210
+ DigitalCredential: false;
207
211
  dispatchEvent: false;
208
212
  DisposableStack: false;
209
213
  document: false;
@@ -431,6 +435,7 @@ declare const _default: {
431
435
  IDBKeyRange: false;
432
436
  IDBObjectStore: false;
433
437
  IDBOpenDBRequest: false;
438
+ IDBRecord: false;
434
439
  IDBRequest: false;
435
440
  IDBTransaction: false;
436
441
  IDBVersionChangeEvent: false;
@@ -456,6 +461,7 @@ declare const _default: {
456
461
  InputDeviceInfo: false;
457
462
  InputEvent: false;
458
463
  IntegrityViolationReportBody: false;
464
+ InterestEvent: false;
459
465
  IntersectionObserver: false;
460
466
  IntersectionObserverEntry: false;
461
467
  isSecureContext: false;
@@ -545,6 +551,7 @@ declare const _default: {
545
551
  NavigationCurrentEntryChangeEvent: false;
546
552
  NavigationDestination: false;
547
553
  NavigationHistoryEntry: false;
554
+ NavigationPrecommitController: false;
548
555
  NavigationPreloadManager: false;
549
556
  NavigationTransition: false;
550
557
  navigator: false;
@@ -870,6 +877,12 @@ declare const _default: {
870
877
  SnapEvent: false;
871
878
  SourceBuffer: false;
872
879
  SourceBufferList: false;
880
+ SpeechGrammar: false;
881
+ SpeechGrammarList: false;
882
+ SpeechRecognition: false;
883
+ SpeechRecognitionErrorEvent: false;
884
+ SpeechRecognitionEvent: false;
885
+ SpeechRecognitionPhrase: false;
873
886
  speechSynthesis: false;
874
887
  SpeechSynthesis: false;
875
888
  SpeechSynthesisErrorEvent: false;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@vitejs/plugin-react-swc"),i=require("lodash-es"),o=require("../../node_modules/.pnpm/vitest@3.2.4_@types_debug@4.1.12_@types_node@24.3.0_@vitest_browser@3.2.4_jiti@2.5.1_js_bae9c6abdb9bf325bd1b44dc7dc11e13/node_modules/vitest/dist/config.cjs");function s(e){const r={plugins:[t()],test:{include:["**/*.test.e2e.?(c|m)[jt]s?(x)"],browser:{enabled:!0,provider:"playwright",instances:[{browser:"chromium"},{browser:"firefox"},{browser:"webkit"}]}}};return o.defineConfig(i.merge(r,e))}exports.vitestE2E=s;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@vitejs/plugin-react-swc"),i=require("lodash-es"),o=require("../../node_modules/.pnpm/vitest@4.0.9_@types_debug@4.1.12_@types_node@24.10.1_jiti@2.6.1_jsdom@27.2.0_sass@1.94.0_tsx@4.20.6_yaml@2.8.1/node_modules/vitest/dist/config.cjs");function s(e){const r={plugins:[t()],test:{include:["**/*.test.e2e.?(c|m)[jt]s?(x)"],browser:{enabled:!0,provider:"playwright",instances:[{browser:"chromium"},{browser:"firefox"},{browser:"webkit"}]}}};return o.defineConfig(i.merge(r,e))}exports.vitestE2E=s;
@@ -1,6 +1,6 @@
1
1
  import t from "@vitejs/plugin-react-swc";
2
2
  import { merge as o } from "lodash-es";
3
- import { defineConfig as i } from "../../node_modules/.pnpm/vitest@3.2.4_@types_debug@4.1.12_@types_node@24.3.0_@vitest_browser@3.2.4_jiti@2.5.1_js_bae9c6abdb9bf325bd1b44dc7dc11e13/node_modules/vitest/dist/config.js";
3
+ import { defineConfig as i } from "../../node_modules/.pnpm/vitest@4.0.9_@types_debug@4.1.12_@types_node@24.10.1_jiti@2.6.1_jsdom@27.2.0_sass@1.94.0_tsx@4.20.6_yaml@2.8.1/node_modules/vitest/dist/config.js";
4
4
  function f(r) {
5
5
  const e = {
6
6
  plugins: [t()],
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@vitejs/plugin-react-swc"),n=require("lodash-es"),s=require("../../node_modules/.pnpm/vitest@3.2.4_@types_debug@4.1.12_@types_node@24.3.0_@vitest_browser@3.2.4_jiti@2.5.1_js_bae9c6abdb9bf325bd1b44dc7dc11e13/node_modules/vitest/dist/config.cjs");function r(e){const t={plugins:[i()],test:{globals:!0,environment:"jsdom",pool:"vmThreads",include:["**/*.test.unit.?(c|m)[jt]s?(x)"],setupFiles:["./vitest.unit.setup.ts"]}};return s.defineConfig(n.merge(t,e))}exports.vitestUnit=r;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("@vitejs/plugin-react-swc"),n=require("lodash-es"),s=require("../../node_modules/.pnpm/vitest@4.0.9_@types_debug@4.1.12_@types_node@24.10.1_jiti@2.6.1_jsdom@27.2.0_sass@1.94.0_tsx@4.20.6_yaml@2.8.1/node_modules/vitest/dist/config.cjs");function r(e){const t={plugins:[i()],test:{globals:!0,environment:"jsdom",pool:"vmThreads",include:["**/*.test.unit.?(c|m)[jt]s?(x)"],setupFiles:["./vitest.unit.setup.ts"]}};return s.defineConfig(n.merge(t,e))}exports.vitestUnit=r;
@@ -1,6 +1,6 @@
1
1
  import i from "@vitejs/plugin-react-swc";
2
2
  import { merge as o } from "lodash-es";
3
- import { defineConfig as n } from "../../node_modules/.pnpm/vitest@3.2.4_@types_debug@4.1.12_@types_node@24.3.0_@vitest_browser@3.2.4_jiti@2.5.1_js_bae9c6abdb9bf325bd1b44dc7dc11e13/node_modules/vitest/dist/config.js";
3
+ import { defineConfig as n } from "../../node_modules/.pnpm/vitest@4.0.9_@types_debug@4.1.12_@types_node@24.10.1_jiti@2.6.1_jsdom@27.2.0_sass@1.94.0_tsx@4.20.6_yaml@2.8.1/node_modules/vitest/dist/config.js";
4
4
  function u(t) {
5
5
  const e = {
6
6
  plugins: [i()],
@@ -1,11 +1,11 @@
1
1
  import { DeleteResult, Filter, InsertManyResult, InsertOneResult, OptionalUnlessRequiredId, UpdateResult, WithId, Collection, Db } from 'mongodb';
2
- import { AggregatePaginateModel, AggregatePaginateResult, ClientSession, ErrorHandlingMiddlewareFunction, ErrorHandlingMiddlewareWithOption, FilterQuery, InsertManyOptions, PaginateModel, PaginateOptions, PaginateResult, PipelineStage, PopulateOption, PopulateOptions, PostMiddlewareFunction, PreMiddlewareFunction, PreSaveMiddlewareFunction, ProjectionType, QueryOptions, QueryWithHelpers, Schema, SchemaDefinition, UpdateQuery, default as mongoose, Document, Model } from 'mongoose';
2
+ import { AggregatePaginateModel, AggregatePaginateResult, ClientSession, ErrorHandlingMiddlewareFunction, ErrorHandlingMiddlewareWithOption, FilterQuery, InsertManyOptions, PaginateModel, PaginateOptions, PaginateResult, PipelineStage, PopulateOption, PopulateOptions, PostMiddlewareFunction, PreMiddlewareFunction, PreSaveMiddlewareFunction, ProjectionType, QueryOptions, QueryWithHelpers, Schema, SchemaDefinition, UpdateQuery, UpdateWriteOpResult, default as mongoose, Document, Model } from 'mongoose';
3
3
  export declare class C_Db extends Db {
4
4
  }
5
5
  export type T_Filter<T> = Filter<T>;
6
6
  export type T_InsertOneResult<T> = InsertOneResult<T>;
7
7
  export type T_InsertManyResult<T> = InsertManyResult<T>;
8
- export type T_UpdateResult = UpdateResult;
8
+ export type T_UpdateResult = UpdateResult | UpdateWriteOpResult;
9
9
  export type T_DeleteResult = DeleteResult;
10
10
  export type T_WithId<T> = WithId<T>;
11
11
  export type T_OptionalUnlessRequiredId<T> = OptionalUnlessRequiredId<T>;
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const U=require("lodash-es"),J=require("migrate-mongo"),X=require("mongoose-aggregate-paginate-v2"),Y=require("mongoose-paginate-v2"),k=require("uuid"),Z=require("./mongo.constant.cjs"),F=require("../../util/object/object.util.cjs"),tt=require("../../util/common/common.util.cjs"),$=require("../fs/fs.util.cjs"),T=require("../path/path.constant.cjs"),et=require("../../util/validate/validate.util.cjs"),C=require("../../util/string/string.util.cjs"),V=require("../../constant/response-status.cjs"),N=require("../log/log.util.cjs");var rt=Object.defineProperty,st=Object.defineProperties,nt=Object.getOwnPropertyDescriptors,B=Object.getOwnPropertySymbols,it=Object.prototype.hasOwnProperty,ot=Object.prototype.propertyIsEnumerable,L=(n,e,t)=>e in n?rt(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,A=(n,e)=>{for(var t in e||(e={}))it.call(e,t)&&L(n,t,e[t]);if(B)for(var t of B(e))ot.call(e,t)&&L(n,t,e[t]);return n},x=(n,e)=>st(n,nt(e)),lt=(n,e,t)=>L(n,typeof e!="symbol"?e+"":e,t),v=(n,e,t)=>new Promise((r,s)=>{var i=c=>{try{l(t.next(c))}catch(a){s(a)}},o=c=>{try{l(t.throw(c))}catch(a){s(a)}},l=c=>c.done?r(c.value):Promise.resolve(c.value).then(i,o);l((t=t.apply(n,e)).next())});function M(n){return n===n.toUpperCase()?n.charAt(0).toUpperCase()+n.slice(1).toLowerCase():n}const P={createGenericFields(){return{id:k.v4(),isDel:!1,createdAt:new Date,updatedAt:new Date}},applyPlugins(n,e){e.filter(t=>typeof t=="function").forEach(t=>n.plugin(t))},applyMiddlewares(n,e){e.forEach(({method:t,pre:r,post:s})=>{t&&r&&n.pre(t,r),t&&s&&n.post(t,s)})},createGenericSchema(n){return new n.Schema({id:{type:String,default:k.v4,unique:!0},isDel:{type:Boolean,default:!1}},{timestamps:!0})},createSchema({mongoose:n,schema:e,virtuals:t=[],standalone:r=!1}){const s=new n.Schema(e,{toJSON:{virtuals:!0},toObject:{virtuals:!0}});return t.forEach(({name:i,options:o,get:l})=>{if(P.isDynamicVirtual(o)){const c=s.statics;c._dynamicVirtuals||(c._dynamicVirtuals=[]),c._dynamicVirtuals.push({name:i,options:o});const a=s.virtual(i);l?a.get(l):a.get(function(){var u;return((u=this._populated)==null?void 0:u[i])||(o!=null&&o.count?0:o!=null&&o.justOne?null:[])})}else{const c=s.virtual(i,o);l&&c.get(l)}}),r||s.add(P.createGenericSchema(n)),s},createModel({mongoose:n,name:e,schema:t,virtuals:r=[],pagination:s=!0,aggregate:i=!0,middlewares:o=[]}){if(!e)throw new Error("Model name is required.");if(n.models[e])return n.models[e];const l=P.createSchema({mongoose:n,schema:t,virtuals:r});(s||i)&&P.applyPlugins(l,[s&&Y,i&&X]),P.applyMiddlewares(l,o);const c=n.model(e,l);return r.length>0&&(c._virtualConfigs=r),c},validator:{isRequired(){return function(n){return v(this,null,function*(){return!et.validate.isEmpty(n)})}},isUnique(n){return function(e){return v(this,null,function*(){if(!Array.isArray(n)||n.length===0)throw new Error("Fields must be a non-empty array of strings.");const t={$or:n.map(s=>({[s]:e}))};return!(yield this.constructor.exists(t))})}},matchesRegex(n){return function(e){return v(this,null,function*(){if(!Array.isArray(n)||n.some(t=>!(t instanceof RegExp)))throw new Error("regexArray must be an array of valid RegExp objects.");return n.every(t=>t.test(e))})}}},migrate:x(A({},J),{setConfig:n=>{const e=`// This file is automatically generated by the Cyberskill CLI.
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const U=require("lodash-es"),J=require("migrate-mongo"),X=require("mongoose-aggregate-paginate-v2"),Y=require("mongoose-paginate-v2"),k=require("uuid"),Z=require("./mongo.constant.cjs"),F=require("../../util/object/object.util.cjs"),tt=require("../../util/common/common.util.cjs"),$=require("../fs/fs.util.cjs"),T=require("../path/path.constant.cjs"),et=require("../../util/validate/validate.util.cjs"),C=require("../../util/string/string.util.cjs"),V=require("../../constant/response-status.cjs"),N=require("../log/log.util.cjs");var rt=Object.defineProperty,st=Object.defineProperties,nt=Object.getOwnPropertyDescriptors,B=Object.getOwnPropertySymbols,it=Object.prototype.hasOwnProperty,ot=Object.prototype.propertyIsEnumerable,L=(n,e,t)=>e in n?rt(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,A=(n,e)=>{for(var t in e||(e={}))it.call(e,t)&&L(n,t,e[t]);if(B)for(var t of B(e))ot.call(e,t)&&L(n,t,e[t]);return n},x=(n,e)=>st(n,nt(e)),lt=(n,e,t)=>L(n,typeof e!="symbol"?e+"":e,t),v=(n,e,t)=>new Promise((r,s)=>{var i=c=>{try{l(t.next(c))}catch(a){s(a)}},o=c=>{try{l(t.throw(c))}catch(a){s(a)}},l=c=>c.done?r(c.value):Promise.resolve(c.value).then(i,o);l((t=t.apply(n,e)).next())});function M(n){return n===n.toUpperCase()?n.charAt(0).toUpperCase()+n.slice(1).toLowerCase():n}const P={createGenericFields(){return{id:k.v4(),isDel:!1,createdAt:new Date,updatedAt:new Date}},applyPlugins(n,e){e.filter(t=>typeof t=="function").forEach(t=>n.plugin(t))},applyMiddlewares(n,e){e.forEach(({method:t,pre:r,post:s})=>{t&&r&&n.pre(t,r),t&&s&&n.post(t,s)})},createGenericSchema(n){return new n.Schema({id:{type:String,default:k.v4,unique:!0},isDel:{type:Boolean,default:!1}},{timestamps:!0})},createSchema({mongoose:n,schema:e,virtuals:t=[],standalone:r=!1}){const s=new n.Schema(e,{toJSON:{virtuals:!0},toObject:{virtuals:!0}});return t.forEach(({name:i,options:o,get:l})=>{if(P.isDynamicVirtual(o)){const c=s.statics;c._dynamicVirtuals||(c._dynamicVirtuals=[]),c._dynamicVirtuals.push({name:i,options:o});const a=s.virtual(i);l?a.get(l):a.get(function(){var u;return((u=this._populated)==null?void 0:u[i])||(o!=null&&o.count?0:o!=null&&o.justOne?null:[])})}else{const c=s.virtual(i,o);l&&c.get(l)}}),r||s.add(P.createGenericSchema(n)),s},createModel({mongoose:n,name:e,schema:t,virtuals:r=[],pagination:s=!0,aggregate:i=!0,middlewares:o=[]}){if(!e)throw new Error("Model name is required.");if(n.models[e])return n.models[e];const l=P.createSchema({mongoose:n,schema:t,virtuals:r});(s||i)&&P.applyPlugins(l,[s&&Y,i&&X]),P.applyMiddlewares(l,o);const c=n.model(e,l);return r.length>0&&(c._virtualConfigs=r),c},validator:{isRequired(){return function(n){return v(this,null,function*(){return!et.validate.isEmpty(n)})}},isUnique(n){return function(e){return v(this,null,function*(){if(!Array.isArray(n)||n.length===0)throw new Error("Fields must be a non-empty array of strings.");const t={$or:n.map(s=>({[s]:e}))};return!(yield this.constructor.exists(t))})}},matchesRegex(n){return e=>v(null,null,function*(){if(!Array.isArray(n)||n.some(t=>!(t instanceof RegExp)))throw new Error("regexArray must be an array of valid RegExp objects.");return n.every(t=>t.test(e))})}},migrate:x(A({},J),{setConfig:n=>{const e=`// This file is automatically generated by the Cyberskill CLI.
2
2
  module.exports = ${JSON.stringify(n,null,4)}`;$.writeFileSync(T.PATH.MIGRATE_MONGO_CONFIG,e);const t=`
3
3
  ${T.MIGRATE_MONGO_CONFIG}
4
4
  `;$.pathExistsSync(T.PATH.GIT_IGNORE)?$.readFileSync(T.PATH.GIT_IGNORE,"utf-8").split(`
@@ -137,9 +137,9 @@ export declare const mongo: {
137
137
  }) => void;
138
138
  init(): Promise<void>;
139
139
  create(description: string): Promise<string>;
140
- up(db: mongooseRaw.mongo.Db, client: mongooseRaw.mongo.MongoClient): Promise<string[]>;
141
- down(db: mongooseRaw.mongo.Db, client: mongooseRaw.mongo.MongoClient): Promise<string[]>;
142
- status(db: mongooseRaw.mongo.Db): Promise<migrate.MigrationStatus[]>;
140
+ up(db: import('mongodb').Db, client: import('mongodb').MongoClient): Promise<string[]>;
141
+ down(db: import('mongodb').Db, client: import('mongodb').MongoClient): Promise<string[]>;
142
+ status(db: import('mongodb').Db): Promise<migrate.MigrationStatus[]>;
143
143
  database: typeof migrate.database;
144
144
  config: typeof migrate.config;
145
145
  };
@@ -221,13 +221,11 @@ const x = {
221
221
  * @throws {Error} When regexArray is not an array of valid RegExp objects.
222
222
  */
223
223
  matchesRegex(n) {
224
- return function(e) {
225
- return v(this, null, function* () {
226
- if (!Array.isArray(n) || n.some((t) => !(t instanceof RegExp)))
227
- throw new Error("regexArray must be an array of valid RegExp objects.");
228
- return n.every((t) => t.test(e));
229
- });
230
- };
224
+ return (e) => v(null, null, function* () {
225
+ if (!Array.isArray(n) || n.some((t) => !(t instanceof RegExp)))
226
+ throw new Error("regexArray must be an array of valid RegExp objects.");
227
+ return n.every((t) => t.test(e));
228
+ });
231
229
  }
232
230
  },
233
231
  /**
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@apollo/client/react"),e=require("react"),n=require("./apollo-client.context.cjs"),i=require("./apollo-client.util.cjs"),a=require("../apollo-error/apollo-error.provider.cjs"),u=require("../apollo-error/apollo-error.component.cjs"),c=require("react-hot-toast");function p({options:r,children:l}){const o=e.useMemo(()=>i.getClient(r!=null?r:{}),[r]);return e.createElement(e.Fragment,null,e.createElement(a.ApolloErrorProvider,null,e.createElement(n.ApolloClientProvider,{client:o},e.createElement(t.ApolloProvider,{client:o},l)),e.createElement(u.ApolloErrorComponent,null)),e.createElement(c.Toaster,{position:"top-right"}))}exports.ApolloProvider=p;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("@apollo/client/react"),e=require("react"),i=require("./apollo-client.context.cjs"),a=require("./apollo-client.util.cjs"),c=require("../apollo-error/apollo-error.provider.cjs"),u=require("../apollo-error/apollo-error.component.cjs"),p=require("react-hot-toast");function m({options:r,children:t,onError:o}){const l=e.useMemo(()=>a.getClient(r!=null?r:{}),[r]);return e.createElement(e.Fragment,null,e.createElement(c.ApolloErrorProvider,{onError:o},e.createElement(i.ApolloClientProvider,{client:l},e.createElement(n.ApolloProvider,{client:l},t)),!o&&e.createElement(u.ApolloErrorComponent,null)),e.createElement(p.Toaster,{position:"top-right"}))}exports.ApolloProvider=m;
@@ -13,9 +13,10 @@ import { I_ApolloProviderProps } from './apollo-client.type.js';
13
13
  * - Automatic error handling
14
14
  * - Development and production optimizations
15
15
  *
16
- * @param props - Component props containing options and children.
16
+ * @param props - Component props containing options, children, and optional error override.
17
17
  * @param props.options - Apollo Client configuration options.
18
18
  * @param props.children - React children that will have access to Apollo Client context.
19
+ * @param props.onError - Optional callback to override the default modal/toast error handling.
19
20
  * @returns A React component that provides Apollo Client context to its children.
20
21
  */
21
- export declare function ApolloProvider({ options, children }: I_ApolloProviderProps): React.JSX.Element;
22
+ export declare function ApolloProvider({ options, children, onError }: I_ApolloProviderProps): React.JSX.Element;
@@ -1,17 +1,17 @@
1
- import { ApolloProvider as l } from "@apollo/client/react";
2
- import r, { useMemo as m } from "react";
1
+ import { ApolloProvider as m } from "@apollo/client/react";
2
+ import e, { useMemo as i } from "react";
3
3
  import { ApolloClientProvider as n } from "./apollo-client.context.js";
4
- import { getClient as i } from "./apollo-client.util.js";
5
- import { ApolloErrorProvider as p } from "../apollo-error/apollo-error.provider.js";
6
- import { ApolloErrorComponent as a } from "../apollo-error/apollo-error.component.js";
7
- import { Toaster as c } from "react-hot-toast";
8
- function g({ options: e, children: t }) {
9
- const o = m(
10
- () => i(e != null ? e : {}),
11
- [e]
4
+ import { getClient as p } from "./apollo-client.util.js";
5
+ import { ApolloErrorProvider as a } from "../apollo-error/apollo-error.provider.js";
6
+ import { ApolloErrorComponent as c } from "../apollo-error/apollo-error.component.js";
7
+ import { Toaster as f } from "react-hot-toast";
8
+ function s({ options: r, children: l, onError: o }) {
9
+ const t = i(
10
+ () => p(r != null ? r : {}),
11
+ [r]
12
12
  );
13
- return /* @__PURE__ */ r.createElement(r.Fragment, null, /* @__PURE__ */ r.createElement(p, null, /* @__PURE__ */ r.createElement(n, { client: o }, /* @__PURE__ */ r.createElement(l, { client: o }, t)), /* @__PURE__ */ r.createElement(a, null)), /* @__PURE__ */ r.createElement(c, { position: "top-right" }));
13
+ return /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(a, { onError: o }, /* @__PURE__ */ e.createElement(n, { client: t }, /* @__PURE__ */ e.createElement(m, { client: t }, l)), !o && /* @__PURE__ */ e.createElement(c, null)), /* @__PURE__ */ e.createElement(f, { position: "top-right" }));
14
14
  }
15
15
  export {
16
- g as ApolloProvider
16
+ s as ApolloProvider
17
17
  };
@@ -1,5 +1,6 @@
1
1
  import { ApolloClient } from '@apollo/client';
2
2
  import { ApolloLink } from '@apollo/client/link';
3
+ import { GraphQLError } from 'graphql';
3
4
  import { I_Children } from '../../typescript/index.js';
4
5
  export interface I_ApolloOptions extends Omit<ApolloClient.Options, 'link' | 'cache'> {
5
6
  uri?: string;
@@ -9,5 +10,10 @@ export interface I_ApolloOptions extends Omit<ApolloClient.Options, 'link' | 'ca
9
10
  export interface I_ApolloProviderProps extends I_Children {
10
11
  isNextJS?: boolean;
11
12
  options?: I_ApolloOptions;
13
+ /**
14
+ * Optional callback to override the default Apollo error modal/toast handling.
15
+ * When provided, the consumer is responsible for surfacing GraphQL errors.
16
+ */
17
+ onError?: (error: GraphQLError | Error) => void;
12
18
  }
13
19
  export type { ApolloCache, ApolloClient, ErrorLike } from '@apollo/client';
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@apollo/client/core"),p=require("@apollo/client/link"),_=require("@apollo/client/link/error"),y=require("@apollo/client/link/remove-typename"),q=require("@apollo/client/link/subscriptions"),h=require("graphql"),v=require("graphql-ws"),c=require("react"),E=require("rxjs"),m=require("./apollo-client.constant.cjs"),f=require("./apollo-client.module.scss.cjs"),b=require("./links/upload.cjs"),P=require("../apollo-error/apollo-error.util.cjs"),l=require("../log/log.util.cjs"),d=require("react-hot-toast");var A=Object.defineProperty,L=Object.getOwnPropertySymbols,C=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable,g=(e,r,o)=>r in e?A(e,r,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[r]=o,T=(e,r)=>{for(var o in r||(r={}))C.call(r,o)&&g(e,o,r[o]);if(L)for(var o of L(r))O.call(r,o)&&g(e,o,r[o]);return e};const N=new p.ApolloLink((e,r)=>(e.setContext({start:new Date}),r(e).pipe(E.tap(()=>{const o=new Date().getTime()-e.getContext().start;l.log.info(`Operation ${e.operationName} took ${o}ms to complete`)})))),$=new _.ErrorLink(({error:e,operation:r})=>{const o=(r==null?void 0:r.operationName)||"Unknown";let t="";a.CombinedGraphQLErrors.is(e)?e.errors.forEach(({message:n,locations:i,path:s},u)=>{u===0&&(t=n),l.log.error(`[GraphQL error] ${o}: ${n}, Location: ${JSON.stringify(i,null,4)}, Path: ${s}`)}):a.CombinedProtocolErrors.is(e)?e.errors.forEach(({message:n,extensions:i},s)=>{s===0&&(t=n),l.log.error(`[Protocol error]: ${n}, Extensions: ${JSON.stringify(i,null,4)}`)}):a.ServerError.is(e)?(t=e.message,l.log.error(`[Server error]: ${e.message}`)):(t=e.message,l.log.error(`[Network error]: ${e.message}`)),e&&t&&typeof window!="undefined"&&d.toast.error(n=>c.createElement("div",{className:f.default["error-container"]},t,c.createElement("button",{type:"button",className:f.default["error-details-button"],onClick:()=>{setTimeout(()=>{P.showGlobalApolloError(e)},0),d.toast.dismiss(n.id)}},"Error Details")))});function k(e){const{uri:r,wsUrl:o,customLinks:t}=e,n=new y.RemoveTypenameFromVariablesLink;r||l.log.warn(`[Apollo] No GraphQL URI provided — using "${m.GRAPHQL_URI_DEFAULT}" as default`);const i=b.createUploadLink({uri:r!=null?r:m.GRAPHQL_URI_DEFAULT,credentials:"include",headers:{"apollo-require-preflight":"true"}}),s=o?new q.GraphQLWsLink(v.createClient({url:o})):p.ApolloLink.empty(),u=o?p.ApolloLink.split(({operationType:w})=>w===h.OperationTypeNode.SUBSCRIPTION,s,i):i;return o&&u===i&&l.log.warn("[Apollo] WS URL is set, but subscriptions fallback to HTTP. Check your wsLink config."),[N,$,n,...t!=null?t:[],u]}function S(e){const r=p.ApolloLink.from(k(e));return new a.ApolloClient(T({link:r,cache:new a.InMemoryCache},e))}exports.createApolloLinks=k;exports.getClient=S;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("@apollo/client/core"),p=require("@apollo/client/link"),h=require("@apollo/client/link/error"),y=require("@apollo/client/link/remove-typename"),q=require("@apollo/client/link/subscriptions"),E=require("graphql"),b=require("graphql-ws"),f=require("react"),v=require("rxjs"),m=require("./apollo-client.constant.cjs"),d=require("./apollo-client.module.scss.cjs"),A=require("./links/upload.cjs"),c=require("../apollo-error/apollo-error.util.cjs"),i=require("../log/log.util.cjs"),L=require("react-hot-toast");var C=Object.defineProperty,g=Object.getOwnPropertySymbols,P=Object.prototype.hasOwnProperty,O=Object.prototype.propertyIsEnumerable,k=(e,r,o)=>r in e?C(e,r,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[r]=o,T=(e,r)=>{for(var o in r||(r={}))P.call(r,o)&&k(e,o,r[o]);if(g)for(var o of g(r))O.call(r,o)&&k(e,o,r[o]);return e};const N=new p.ApolloLink((e,r)=>(e.setContext({start:new Date}),r(e).pipe(v.tap(()=>{const o=new Date().getTime()-e.getContext().start;i.log.info(`Operation ${e.operationName} took ${o}ms to complete`)})))),$=new h.ErrorLink(({error:e,operation:r})=>{const o=(r==null?void 0:r.operationName)||"Unknown";let t="";a.CombinedGraphQLErrors.is(e)?e.errors.forEach(({message:l,locations:n,path:s},u)=>{u===0&&(t=l),i.log.error(`[GraphQL error] ${o}: ${l}, Location: ${JSON.stringify(n,null,4)}, Path: ${s}`)}):a.CombinedProtocolErrors.is(e)?e.errors.forEach(({message:l,extensions:n},s)=>{s===0&&(t=l),i.log.error(`[Protocol error]: ${l}, Extensions: ${JSON.stringify(n,null,4)}`)}):a.ServerError.is(e)?(t=e.message,i.log.error(`[Server error]: ${e.message}`)):(t=e.message,i.log.error(`[Network error]: ${e.message}`)),e&&t&&typeof window!="undefined"&&(c.hasCustomApolloErrorHandler()?c.showGlobalApolloError(e):L.toast.error(l=>f.createElement("div",{className:d.default["error-container"]},t,f.createElement("button",{type:"button",className:d.default["error-details-button"],onClick:()=>{c.showGlobalApolloError(e),L.toast.dismiss(l.id)}},"Error Details"))))});function w(e){const{uri:r,wsUrl:o,customLinks:t}=e,l=new y.RemoveTypenameFromVariablesLink;r||i.log.warn(`[Apollo] No GraphQL URI provided — using "${m.GRAPHQL_URI_DEFAULT}" as default`);const n=A.createUploadLink({uri:r!=null?r:m.GRAPHQL_URI_DEFAULT,credentials:"include",headers:{"apollo-require-preflight":"true"}}),s=o?new q.GraphQLWsLink(b.createClient({url:o})):p.ApolloLink.empty(),u=o?p.ApolloLink.split(({operationType:_})=>_===E.OperationTypeNode.SUBSCRIPTION,s,n):n;return o&&u===n&&i.log.warn("[Apollo] WS URL is set, but subscriptions fallback to HTTP. Check your wsLink config."),[N,$,l,...t!=null?t:[],u]}function S(e){const r=p.ApolloLink.from(w(e));return new a.ApolloClient(T({link:r,cache:new a.InMemoryCache},e))}exports.createApolloLinks=w;exports.getClient=S;
@@ -1,86 +1,84 @@
1
- import { ApolloClient as k, InMemoryCache as y, CombinedGraphQLErrors as g, CombinedProtocolErrors as h, ServerError as v } from "@apollo/client/core";
1
+ import { ApolloClient as y, InMemoryCache as h, CombinedGraphQLErrors as g, CombinedProtocolErrors as E, ServerError as v } from "@apollo/client/core";
2
2
  import { ApolloLink as m } from "@apollo/client/link";
3
- import { ErrorLink as E } from "@apollo/client/link/error";
4
- import { RemoveTypenameFromVariablesLink as _ } from "@apollo/client/link/remove-typename";
5
- import { GraphQLWsLink as O } from "@apollo/client/link/subscriptions";
6
- import { OperationTypeNode as P } from "graphql";
7
- import { createClient as b } from "graphql-ws";
3
+ import { ErrorLink as _ } from "@apollo/client/link/error";
4
+ import { RemoveTypenameFromVariablesLink as O } from "@apollo/client/link/remove-typename";
5
+ import { GraphQLWsLink as P } from "@apollo/client/link/subscriptions";
6
+ import { OperationTypeNode as b } from "graphql";
7
+ import { createClient as C } from "graphql-ws";
8
8
  import p from "react";
9
9
  import { tap as N } from "rxjs";
10
10
  import { GRAPHQL_URI_DEFAULT as f } from "./apollo-client.constant.js";
11
11
  import c from "./apollo-client.module.scss.js";
12
- import { createUploadLink as C } from "./links/upload.js";
13
- import { showGlobalApolloError as $ } from "../apollo-error/apollo-error.util.js";
12
+ import { createUploadLink as $ } from "./links/upload.js";
13
+ import { hasCustomApolloErrorHandler as A, showGlobalApolloError as u } from "../apollo-error/apollo-error.util.js";
14
14
  import { log as s } from "../log/log.util.js";
15
- import { toast as u } from "react-hot-toast";
16
- var T = Object.defineProperty, d = Object.getOwnPropertySymbols, S = Object.prototype.hasOwnProperty, A = Object.prototype.propertyIsEnumerable, w = (r, e, o) => e in r ? T(r, e, { enumerable: !0, configurable: !0, writable: !0, value: o }) : r[e] = o, U = (r, e) => {
15
+ import { toast as d } from "react-hot-toast";
16
+ var S = Object.defineProperty, w = Object.getOwnPropertySymbols, T = Object.prototype.hasOwnProperty, U = Object.prototype.propertyIsEnumerable, L = (r, e, o) => e in r ? S(r, e, { enumerable: !0, configurable: !0, writable: !0, value: o }) : r[e] = o, I = (r, e) => {
17
17
  for (var o in e || (e = {}))
18
- S.call(e, o) && w(r, o, e[o]);
19
- if (d)
20
- for (var o of d(e))
21
- A.call(e, o) && w(r, o, e[o]);
18
+ T.call(e, o) && L(r, o, e[o]);
19
+ if (w)
20
+ for (var o of w(e))
21
+ U.call(e, o) && L(r, o, e[o]);
22
22
  return r;
23
23
  };
24
- const I = new m((r, e) => (r.setContext({ start: /* @__PURE__ */ new Date() }), e(r).pipe(
24
+ const R = new m((r, e) => (r.setContext({ start: /* @__PURE__ */ new Date() }), e(r).pipe(
25
25
  N(() => {
26
26
  const o = (/* @__PURE__ */ new Date()).getTime() - r.getContext().start;
27
27
  s.info(`Operation ${r.operationName} took ${o}ms to complete`);
28
28
  })
29
- ))), R = new E(({ error: r, operation: e }) => {
29
+ ))), G = new _(({ error: r, operation: e }) => {
30
30
  const o = (e == null ? void 0 : e.operationName) || "Unknown";
31
31
  let t = "";
32
32
  g.is(r) ? r.errors.forEach(({ message: n, locations: i, path: l }, a) => {
33
33
  a === 0 && (t = n), s.error(
34
34
  `[GraphQL error] ${o}: ${n}, Location: ${JSON.stringify(i, null, 4)}, Path: ${l}`
35
35
  );
36
- }) : h.is(r) ? r.errors.forEach(({ message: n, extensions: i }, l) => {
36
+ }) : E.is(r) ? r.errors.forEach(({ message: n, extensions: i }, l) => {
37
37
  l === 0 && (t = n), s.error(
38
38
  `[Protocol error]: ${n}, Extensions: ${JSON.stringify(i, null, 4)}`
39
39
  );
40
- }) : v.is(r) ? (t = r.message, s.error(`[Server error]: ${r.message}`)) : (t = r.message, s.error(`[Network error]: ${r.message}`)), r && t && typeof window != "undefined" && u.error((n) => /* @__PURE__ */ p.createElement("div", { className: c["error-container"] }, t, /* @__PURE__ */ p.createElement(
40
+ }) : v.is(r) ? (t = r.message, s.error(`[Server error]: ${r.message}`)) : (t = r.message, s.error(`[Network error]: ${r.message}`)), r && t && typeof window != "undefined" && (A() ? u(r) : d.error((n) => /* @__PURE__ */ p.createElement("div", { className: c["error-container"] }, t, /* @__PURE__ */ p.createElement(
41
41
  "button",
42
42
  {
43
43
  type: "button",
44
44
  className: c["error-details-button"],
45
45
  onClick: () => {
46
- setTimeout(() => {
47
- $(r);
48
- }, 0), u.dismiss(n.id);
46
+ u(r), d.dismiss(n.id);
49
47
  }
50
48
  },
51
49
  "Error Details"
52
- )));
50
+ ))));
53
51
  });
54
- function G(r) {
55
- const { uri: e, wsUrl: o, customLinks: t } = r, n = new _();
52
+ function Q(r) {
53
+ const { uri: e, wsUrl: o, customLinks: t } = r, n = new O();
56
54
  e || s.warn(`[Apollo] No GraphQL URI provided — using "${f}" as default`);
57
- const i = C({
55
+ const i = $({
58
56
  uri: e != null ? e : f,
59
57
  credentials: "include",
60
58
  headers: {
61
59
  "apollo-require-preflight": "true"
62
60
  }
63
- }), l = o ? new O(b({ url: o })) : m.empty(), a = o ? m.split(
64
- ({ operationType: L }) => L === P.SUBSCRIPTION,
61
+ }), l = o ? new P(C({ url: o })) : m.empty(), a = o ? m.split(
62
+ ({ operationType: k }) => k === b.SUBSCRIPTION,
65
63
  l,
66
64
  i
67
65
  ) : i;
68
66
  return o && a === i && s.warn("[Apollo] WS URL is set, but subscriptions fallback to HTTP. Check your wsLink config."), [
69
- I,
70
67
  R,
68
+ G,
71
69
  n,
72
70
  ...t != null ? t : [],
73
71
  a
74
72
  ];
75
73
  }
76
- function Y(r) {
77
- const e = m.from(G(r));
78
- return new k(U({
74
+ function Z(r) {
75
+ const e = m.from(Q(r));
76
+ return new y(I({
79
77
  link: e,
80
- cache: new y()
78
+ cache: new h()
81
79
  }, r));
82
80
  }
83
81
  export {
84
- G as createApolloLinks,
85
- Y as getClient
82
+ Q as createApolloLinks,
83
+ Z as getClient
86
84
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("@apollo/client-integration-nextjs"),e=require("react"),n=require("./apollo-client-nextjs.util.cjs"),i=require("../apollo-error/apollo-error.provider.cjs"),a=require("../apollo-error/apollo-error.component.cjs"),u=require("react-hot-toast");function p({options:r,children:o}){const t=e.useMemo(()=>()=>n.getClient(r||{}),[r]);return e.createElement(e.Fragment,null,e.createElement(i.ApolloErrorProvider,null,e.createElement(l.ApolloNextAppProvider,{makeClient:t},o),e.createElement(a.ApolloErrorComponent,null)),e.createElement(u.Toaster,{position:"top-right"}))}exports.ApolloProvider=p;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("@apollo/client-integration-nextjs"),e=require("react"),i=require("./apollo-client-nextjs.util.cjs"),a=require("../apollo-error/apollo-error.provider.cjs"),p=require("../apollo-error/apollo-error.component.cjs"),u=require("react-hot-toast");function c({options:r,children:o,onError:t}){const l=e.useMemo(()=>()=>i.getClient(r||{}),[r]);return e.createElement(e.Fragment,null,e.createElement(a.ApolloErrorProvider,{onError:t},e.createElement(n.ApolloNextAppProvider,{makeClient:l},o),!t&&e.createElement(p.ApolloErrorComponent,null)),e.createElement(u.Toaster,{position:"top-right"}))}exports.ApolloProvider=c;
@@ -13,9 +13,10 @@ import { I_ApolloProviderProps } from '../apollo-client/index.js';
13
13
  * - Automatic error handling
14
14
  * - Next.js specific optimizations
15
15
  *
16
- * @param props - Component props containing options and children.
16
+ * @param props - Component props containing options, children, and optional error override.
17
17
  * @param props.options - Apollo Client configuration options.
18
18
  * @param props.children - React children that will have access to Apollo Client context.
19
+ * @param props.onError - Optional callback to override the default modal/toast error handling.
19
20
  * @returns A React component that provides Apollo Client context to its children.
20
21
  */
21
- export declare function ApolloProvider({ options, children }: I_ApolloProviderProps): React.JSX.Element;
22
+ export declare function ApolloProvider({ options, children, onError }: I_ApolloProviderProps): React.JSX.Element;
@@ -1,16 +1,16 @@
1
1
  import { ApolloNextAppProvider as l } from "@apollo/client-integration-nextjs";
2
- import e, { useMemo as m } from "react";
3
- import { getClient as n } from "./apollo-client-nextjs.util.js";
4
- import { ApolloErrorProvider as p } from "../apollo-error/apollo-error.provider.js";
5
- import { ApolloErrorComponent as i } from "../apollo-error/apollo-error.component.js";
6
- import { Toaster as a } from "react-hot-toast";
7
- function g({ options: r, children: o }) {
8
- const t = m(
9
- () => () => n(r || {}),
2
+ import e, { useMemo as n } from "react";
3
+ import { getClient as p } from "./apollo-client-nextjs.util.js";
4
+ import { ApolloErrorProvider as i } from "../apollo-error/apollo-error.provider.js";
5
+ import { ApolloErrorComponent as a } from "../apollo-error/apollo-error.component.js";
6
+ import { Toaster as c } from "react-hot-toast";
7
+ function s({ options: r, children: t, onError: o }) {
8
+ const m = n(
9
+ () => () => p(r || {}),
10
10
  [r]
11
11
  );
12
- return /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(p, null, /* @__PURE__ */ e.createElement(l, { makeClient: t }, o), /* @__PURE__ */ e.createElement(i, null)), /* @__PURE__ */ e.createElement(a, { position: "top-right" }));
12
+ return /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement(i, { onError: o }, /* @__PURE__ */ e.createElement(l, { makeClient: m }, t), !o && /* @__PURE__ */ e.createElement(a, null)), /* @__PURE__ */ e.createElement(c, { position: "top-right" }));
13
13
  }
14
14
  export {
15
- g as ApolloProvider
15
+ s as ApolloProvider
16
16
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),u=require("./apollo-error.context.cjs"),n=require("./apollo-error.util.cjs");function a({children:l}){const[e,o]=r.useState(null);r.useEffect(()=>{n.setGlobalApolloErrorCallback(o)},[]);const t=r.useMemo(()=>({error:e,showError:o,hideError:()=>o(null)}),[e]);return r.createElement(u.ApolloErrorContext,{value:t},l)}exports.ApolloErrorProvider=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react"),i=require("./apollo-error.context.cjs"),c=require("./apollo-error.util.cjs");function b({children:n,onError:e}){const[o,t]=l.useState(null),r=l.useCallback(u=>{if(e){e(u);return}t(u)},[e]);l.useEffect(()=>(c.setGlobalApolloErrorCallback(r,!!e),()=>{c.clearGlobalApolloErrorCallback()}),[r,e]);const a=l.useCallback(()=>t(null),[]),s=l.useMemo(()=>({error:e?null:o,showError:r,hideError:a}),[o,r,a,e]);return l.createElement(i.ApolloErrorContext,{value:s},n)}exports.ApolloErrorProvider=b;
@@ -1,4 +1,5 @@
1
- import { ReactNode, default as React } from 'react';
1
+ import { default as React } from 'react';
2
+ import { I_ApolloErrorProviderProps } from './apollo-error.type.js';
2
3
  /**
3
4
  * Provider component that manages Apollo error state and provides error context.
4
5
  * This component sets up error handling for Apollo Client operations and provides
@@ -8,12 +9,12 @@ import { ReactNode, default as React } from 'react';
8
9
  * - Global Apollo error state management
9
10
  * - Error context provision to child components
10
11
  * - Automatic error handling and display
12
+ * - Optional custom error handling callbacks
11
13
  * - Integration with error boundaries
12
14
  *
13
15
  * @param props - Component props containing children.
14
16
  * @param props.children - React children that will have access to the error context.
17
+ * @param props.onError - Optional callback to override the default error modal/toast flow.
15
18
  * @returns A React component that provides Apollo error context to its children.
16
19
  */
17
- export declare function ApolloErrorProvider({ children }: {
18
- children: ReactNode;
19
- }): React.JSX.Element;
20
+ export declare function ApolloErrorProvider({ children, onError }: I_ApolloErrorProviderProps): React.JSX.Element;
@@ -1,18 +1,24 @@
1
- import l, { useState as n, useEffect as u, useMemo as a } from "react";
2
- import { ApolloErrorContext as c } from "./apollo-error.context.js";
3
- import { setGlobalApolloErrorCallback as m } from "./apollo-error.util.js";
4
- function f({ children: e }) {
5
- const [o, r] = n(null);
6
- u(() => {
7
- m(r);
8
- }, []);
9
- const t = a(() => ({
10
- error: o,
11
- showError: r,
12
- hideError: () => r(null)
13
- }), [o]);
14
- return /* @__PURE__ */ l.createElement(c, { value: t }, e);
1
+ import s, { useState as m, useCallback as c, useEffect as f, useMemo as i } from "react";
2
+ import { ApolloErrorContext as p } from "./apollo-error.context.js";
3
+ import { setGlobalApolloErrorCallback as b, clearGlobalApolloErrorCallback as A } from "./apollo-error.util.js";
4
+ function k({ children: u, onError: l }) {
5
+ const [r, o] = m(null), e = c((a) => {
6
+ if (l) {
7
+ l(a);
8
+ return;
9
+ }
10
+ o(a);
11
+ }, [l]);
12
+ f(() => (b(e, !!l), () => {
13
+ A();
14
+ }), [e, l]);
15
+ const t = c(() => o(null), []), n = i(() => ({
16
+ error: l ? null : r,
17
+ showError: e,
18
+ hideError: t
19
+ }), [r, e, t, l]);
20
+ return /* @__PURE__ */ s.createElement(p, { value: n }, u);
15
21
  }
16
22
  export {
17
- f as ApolloErrorProvider
23
+ k as ApolloErrorProvider
18
24
  };
@@ -1,7 +1,12 @@
1
1
  import { GraphQLError } from 'graphql';
2
+ import { ReactNode } from 'react';
2
3
  export type { GraphQLError } from 'graphql';
3
4
  export interface I_ApolloErrorContext {
4
5
  error: GraphQLError | Error | null;
5
6
  showError: (error: GraphQLError | Error) => void;
6
7
  hideError: () => void;
7
8
  }
9
+ export interface I_ApolloErrorProviderProps {
10
+ children: ReactNode;
11
+ onError?: (error: GraphQLError | Error) => void;
12
+ }
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let o=null;function r(l){o=l}function a(l){o==null||o(l)}exports.setGlobalApolloErrorCallback=r;exports.showGlobalApolloError=a;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});let l=null,r=!1;function e(o,a=!1){l=o,r=a}function t(){l=null,r=!1}function n(){return r}function s(o){l==null||l(o)}exports.clearGlobalApolloErrorCallback=t;exports.hasCustomApolloErrorHandler=n;exports.setGlobalApolloErrorCallback=e;exports.showGlobalApolloError=s;
@@ -7,8 +7,20 @@ import { GraphQLError } from 'graphql';
7
7
  * consistent error handling.
8
8
  *
9
9
  * @param callback - The function to be called when a global Apollo error occurs.
10
+ * @param isCustomHandler - Flag that identifies whether the handler was provided by the consumer.
10
11
  */
11
- export declare function setGlobalApolloErrorCallback(callback: (err: GraphQLError | Error) => void): void;
12
+ export declare function setGlobalApolloErrorCallback(callback: (err: GraphQLError | Error) => void, isCustomHandler?: boolean): void;
13
+ /**
14
+ * Clears the global callback function for Apollo error handling.
15
+ * Useful when the ApolloErrorProvider unmounts to avoid stale references.
16
+ */
17
+ export declare function clearGlobalApolloErrorCallback(): void;
18
+ /**
19
+ * Indicates whether a custom Apollo error handler is registered.
20
+ *
21
+ * @returns True if a custom handler is registered, otherwise false.
22
+ */
23
+ export declare function hasCustomApolloErrorHandler(): boolean;
12
24
  /**
13
25
  * Displays a global Apollo error using the registered callback.
14
26
  * This function triggers the global error display system by calling the
@@ -1,11 +1,19 @@
1
- let o = null;
2
- function r(l) {
3
- o = l;
1
+ let l = null, r = !1;
2
+ function n(o, a = !1) {
3
+ l = o, r = a;
4
4
  }
5
- function a(l) {
6
- o == null || o(l);
5
+ function e() {
6
+ l = null, r = !1;
7
+ }
8
+ function t() {
9
+ return r;
10
+ }
11
+ function s(o) {
12
+ l == null || l(o);
7
13
  }
8
14
  export {
9
- r as setGlobalApolloErrorCallback,
10
- a as showGlobalApolloError
15
+ e as clearGlobalApolloErrorCallback,
16
+ t as hasCustomApolloErrorHandler,
17
+ n as setGlobalApolloErrorCallback,
18
+ s as showGlobalApolloError
11
19
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./apollo-error.component.cjs"),l=require("./apollo-error.context.cjs"),e=require("./apollo-error.hook.cjs"),p=require("./apollo-error.provider.cjs"),o=require("./apollo-error.util.cjs");exports.ApolloErrorComponent=r.ApolloErrorComponent;exports.ApolloErrorContext=l.ApolloErrorContext;exports.useApolloError=e.useApolloError;exports.ApolloErrorProvider=p.ApolloErrorProvider;exports.setGlobalApolloErrorCallback=o.setGlobalApolloErrorCallback;exports.showGlobalApolloError=o.showGlobalApolloError;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./apollo-error.component.cjs"),l=require("./apollo-error.context.cjs"),e=require("./apollo-error.hook.cjs"),a=require("./apollo-error.provider.cjs"),o=require("./apollo-error.util.cjs");exports.ApolloErrorComponent=r.ApolloErrorComponent;exports.ApolloErrorContext=l.ApolloErrorContext;exports.useApolloError=e.useApolloError;exports.ApolloErrorProvider=a.ApolloErrorProvider;exports.clearGlobalApolloErrorCallback=o.clearGlobalApolloErrorCallback;exports.hasCustomApolloErrorHandler=o.hasCustomApolloErrorHandler;exports.setGlobalApolloErrorCallback=o.setGlobalApolloErrorCallback;exports.showGlobalApolloError=o.showGlobalApolloError;
@@ -1,13 +1,15 @@
1
1
  import { ApolloErrorComponent as l } from "./apollo-error.component.js";
2
2
  import { ApolloErrorContext as e } from "./apollo-error.context.js";
3
- import { useApolloError as m } from "./apollo-error.hook.js";
4
- import { ApolloErrorProvider as A } from "./apollo-error.provider.js";
5
- import { setGlobalApolloErrorCallback as f, showGlobalApolloError as a } from "./apollo-error.util.js";
3
+ import { useApolloError as t } from "./apollo-error.hook.js";
4
+ import { ApolloErrorProvider as E } from "./apollo-error.provider.js";
5
+ import { clearGlobalApolloErrorCallback as x, hasCustomApolloErrorHandler as b, setGlobalApolloErrorCallback as f, showGlobalApolloError as s } from "./apollo-error.util.js";
6
6
  export {
7
7
  l as ApolloErrorComponent,
8
8
  e as ApolloErrorContext,
9
- A as ApolloErrorProvider,
9
+ E as ApolloErrorProvider,
10
+ x as clearGlobalApolloErrorCallback,
11
+ b as hasCustomApolloErrorHandler,
10
12
  f as setGlobalApolloErrorCallback,
11
- a as showGlobalApolloError,
12
- m as useApolloError
13
+ s as showGlobalApolloError,
14
+ t as useApolloError
13
15
  };
package/dist/style.css CHANGED
@@ -1 +1 @@
1
- ._overlay_b1d9o_1,._full_b1d9o_1,._block_b1d9o_2{z-index:999999;background:linear-gradient(135deg,#ffffff59,#ffffffb3);backdrop-filter:blur(20px) saturate(200%);display:flex;justify-content:center;align-items:center;width:100%;height:100%;animation:_overlay-fade-in_b1d9o_1 .5s ease-out;border:1.5px solid rgba(255,255,255,.35);box-shadow:0 4px 32px #1f26872e,inset 0 1.5px 8px #ffffff40}._full_b1d9o_1,._block_b1d9o_2{pointer-events:none}._full_b1d9o_1{position:fixed;inset:0}._block_b1d9o_2{position:absolute;width:100%;height:100%;left:50%;top:50%;transform:translate(-50%,-50%);background:#ffffff1a;backdrop-filter:blur(4px)}._container_b1d9o_40{display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;padding:1rem;gap:1.5rem;text-align:center}._container_b1d9o_40 ._ring_b1d9o_50{width:clamp(60px,10vw,150px);height:clamp(60px,10vw,150px);border:2px solid transparent;border-radius:50%;position:absolute;transition:transform .3s ease}._container_b1d9o_40 ._ring_b1d9o_50:nth-child(1){border-bottom:8px solid hsl(315,90%,60%);animation:_rotate1_b1d9o_1 1s linear infinite}._container_b1d9o_40 ._ring_b1d9o_50:nth-child(2){border-bottom:8px solid hsl(345,90%,50%);animation:_rotate2_b1d9o_1 1s linear infinite}._container_b1d9o_40 ._ring_b1d9o_50:nth-child(3){border-bottom:8px solid hsl(180,80%,40%);animation:_rotate3_b1d9o_1 1s linear infinite}._container_b1d9o_40 ._ring_b1d9o_50:nth-child(4){border-bottom:8px solid hsl(40,100%,45%);animation:_rotate4_b1d9o_1 1s linear infinite}._container_b1d9o_40 ._message_b1d9o_74{font-weight:700;color:#2f2f37;text-shadow:0 1px 2px rgba(255,255,255,.8);animation:_text-fade_b1d9o_1 2s ease-in-out infinite alternate;word-break:break-word;hyphens:auto}@keyframes _rotate1_b1d9o_1{0%{transform:rotateX(50deg) rotate(110deg)}to{transform:rotateX(50deg) rotate(470deg)}}@keyframes _rotate2_b1d9o_1{0%{transform:rotateX(20deg) rotateY(50deg) rotate(20deg)}to{transform:rotateX(20deg) rotateY(50deg) rotate(380deg)}}@keyframes _rotate3_b1d9o_1{0%{transform:rotateX(40deg) rotateY(130deg) rotate(450deg)}to{transform:rotateX(40deg) rotateY(130deg) rotate(90deg)}}@keyframes _rotate4_b1d9o_1{0%{transform:rotateX(70deg) rotate(270deg)}to{transform:rotateX(70deg) rotate(630deg)}}@keyframes _text-fade_b1d9o_1{0%{opacity:.6}to{opacity:1}}@keyframes _overlay-fade-in_b1d9o_1{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){._ring_b1d9o_50,._message_b1d9o_74,._overlay_b1d9o_1,._full_b1d9o_1,._block_b1d9o_2{animation:none!important}}._modal-backdrop_1i2kc_1{position:fixed;inset:0;z-index:9999999;background-color:#0009;display:flex;align-items:center;justify-content:center;padding:1rem}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11{position:relative;background-color:#0f172a;color:#fff;max-width:80vw;width:100%;border-radius:.75rem;box-shadow:0 10px 20px #00000080;overflow:hidden;padding:2rem}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._btn-close_1i2kc_22{position:absolute;top:.75rem;right:1rem;font-size:1.25rem;color:#fff;background:none;border:none;cursor:pointer;transition:color .2s}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._btn-close_1i2kc_22:hover{color:#f87171}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-title_1i2kc_36{font-weight:700;margin-bottom:1rem}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-title_1i2kc_36 ._btn-retry_1i2kc_40{background:linear-gradient(to right,#3b82f6,#06b6d4);color:#fff;font-weight:600;padding:.5rem 1.5rem;border-radius:.75rem;transition:background .3s ease;border:none;cursor:pointer}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-title_1i2kc_36 ._btn-retry_1i2kc_40:hover{background:linear-gradient(to right,#2563eb,#0891b2)}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-details_1i2kc_53{background-color:#1e293b;text-align:left;font-size:.875rem;border-radius:.5rem;padding:1rem;margin-bottom:1.5rem;max-height:50vh;overflow-y:auto;border:1px solid #334155;display:flex;flex-direction:column;gap:.5rem}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-details_1i2kc_53 pre{white-space:pre-wrap;word-break:break-word}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-details_1i2kc_53 pre._main_1i2kc_71{color:#fca5a5}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-details_1i2kc_53 pre._network_1i2kc_74{color:#fde68a}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-details_1i2kc_53 pre._extra_1i2kc_77{color:#67e8f9;overflow-x:auto;white-space:pre;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;background-color:#0f172a;padding:.5rem;border-radius:.375rem}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-details_1i2kc_53 ul{padding-left:1rem;color:#fda4af;list-style:disc}._error-container_oofeh_1{display:flex;align-items:center;justify-content:center;gap:.5rem}._error-details-button_oofeh_8{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;background-color:#ef4444;color:#fff;border:2px solid #dc2626;border-radius:.5rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease-in-out}._error-details-button_oofeh_8:hover{background-color:#dc2626;border-color:#b91c1c;transform:translateY(-1px);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}._error-details-button_oofeh_8:active{transform:translateY(0);box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f}._error-details-button_oofeh_8:focus{outline:none;ring:2px;ring-color:#fca5a5;ring-offset:2px}
1
+ ._overlay_b1d9o_1,._full_b1d9o_1,._block_b1d9o_2{z-index:999999;background:linear-gradient(135deg,#ffffff59,#ffffffb3);backdrop-filter:blur(20px) saturate(200%);display:flex;justify-content:center;align-items:center;width:100%;height:100%;animation:_overlay-fade-in_b1d9o_1 .5s ease-out;border:1.5px solid rgba(255,255,255,.35);box-shadow:0 4px 32px #1f26872e,inset 0 1.5px 8px #ffffff40}._full_b1d9o_1,._block_b1d9o_2{pointer-events:none}._full_b1d9o_1{position:fixed;inset:0}._block_b1d9o_2{position:absolute;width:100%;height:100%;left:50%;top:50%;transform:translate(-50%,-50%);background:#ffffff1a;backdrop-filter:blur(4px)}._container_b1d9o_40{display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;padding:1rem;gap:1.5rem;text-align:center}._container_b1d9o_40 ._ring_b1d9o_50{width:clamp(60px,10vw,150px);height:clamp(60px,10vw,150px);border:2px solid transparent;border-radius:50%;position:absolute;transition:transform .3s ease}._container_b1d9o_40 ._ring_b1d9o_50:nth-child(1){border-bottom:8px solid hsl(315,90%,60%);animation:_rotate1_b1d9o_1 1s linear infinite}._container_b1d9o_40 ._ring_b1d9o_50:nth-child(2){border-bottom:8px solid hsl(345,90%,50%);animation:_rotate2_b1d9o_1 1s linear infinite}._container_b1d9o_40 ._ring_b1d9o_50:nth-child(3){border-bottom:8px solid hsl(180,80%,40%);animation:_rotate3_b1d9o_1 1s linear infinite}._container_b1d9o_40 ._ring_b1d9o_50:nth-child(4){border-bottom:8px solid hsl(40,100%,45%);animation:_rotate4_b1d9o_1 1s linear infinite}._container_b1d9o_40 ._message_b1d9o_74{font-weight:700;color:#2f2f37;text-shadow:0 1px 2px rgba(255,255,255,.8);animation:_text-fade_b1d9o_1 2s ease-in-out infinite alternate;word-break:break-word;hyphens:auto}@keyframes _rotate1_b1d9o_1{0%{transform:rotateX(50deg) rotate(110deg)}to{transform:rotateX(50deg) rotate(470deg)}}@keyframes _rotate2_b1d9o_1{0%{transform:rotateX(20deg) rotateY(50deg) rotate(20deg)}to{transform:rotateX(20deg) rotateY(50deg) rotate(380deg)}}@keyframes _rotate3_b1d9o_1{0%{transform:rotateX(40deg) rotateY(130deg) rotate(450deg)}to{transform:rotateX(40deg) rotateY(130deg) rotate(90deg)}}@keyframes _rotate4_b1d9o_1{0%{transform:rotateX(70deg) rotate(270deg)}to{transform:rotateX(70deg) rotate(630deg)}}@keyframes _text-fade_b1d9o_1{0%{opacity:.6}to{opacity:1}}@keyframes _overlay-fade-in_b1d9o_1{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:reduce){._ring_b1d9o_50,._message_b1d9o_74,._overlay_b1d9o_1,._full_b1d9o_1,._block_b1d9o_2{animation:none!important}}._modal-backdrop_1i2kc_1{position:fixed;inset:0;z-index:9999999;background-color:#0009;display:flex;align-items:center;justify-content:center;padding:1rem}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11{position:relative;background-color:#0f172a;color:#fff;max-width:80vw;width:100%;border-radius:.75rem;box-shadow:0 10px 20px #00000080;overflow:hidden;padding:2rem}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._btn-close_1i2kc_22{position:absolute;top:.75rem;right:1rem;font-size:1.25rem;color:#fff;background:none;border:none;cursor:pointer;transition:color .2s}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._btn-close_1i2kc_22:hover{color:#f87171}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-title_1i2kc_36{font-weight:700;margin-bottom:1rem}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-title_1i2kc_36 ._btn-retry_1i2kc_40{background:linear-gradient(to right,#3b82f6,#06b6d4);color:#fff;font-weight:600;padding:.5rem 1.5rem;border-radius:.75rem;transition:background .3s ease;border:none;cursor:pointer}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-title_1i2kc_36 ._btn-retry_1i2kc_40:hover{background:linear-gradient(to right,#2563eb,#0891b2)}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-details_1i2kc_53{background-color:#1e293b;text-align:left;font-size:.875rem;border-radius:.5rem;padding:1rem;margin-bottom:1.5rem;max-height:50vh;overflow-y:auto;border:1px solid #334155;display:flex;flex-direction:column;gap:.5rem}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-details_1i2kc_53 pre{white-space:pre-wrap;word-break:break-word}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-details_1i2kc_53 pre._main_1i2kc_71{color:#fca5a5}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-details_1i2kc_53 pre._network_1i2kc_74{color:#fde68a}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-details_1i2kc_53 pre._extra_1i2kc_77{color:#67e8f9;overflow-x:auto;white-space:pre;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;background-color:#0f172a;padding:.5rem;border-radius:.375rem}._modal-backdrop_1i2kc_1 ._modal-content_1i2kc_11 ._error-details_1i2kc_53 ul{padding-left:1rem;color:#fda4af;list-style:disc}._error-container_oofeh_1{display:flex;align-items:center;justify-content:center;gap:.5rem}._error-details-button_oofeh_8{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;background-color:#ef4444;color:#fff;border:2px solid #dc2626;border-radius:.5rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease-in-out}._error-details-button_oofeh_8:hover{background-color:#dc2626;border-color:#b91c1c;transform:translateY(-1px);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}._error-details-button_oofeh_8:active{transform:translateY(0);box-shadow:0 1px 3px #0000001a,0 1px 2px #0000000f}._error-details-button_oofeh_8:focus{outline:none;ring:2px;ring-color:#fca5a5;ring-offset:2px}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cyberskill/shared",
3
3
  "type": "module",
4
- "version": "2.18.0",
4
+ "version": "2.19.1",
5
5
  "description": "CyberSkill Shared",
6
6
  "author": "Stephen Cheng",
7
7
  "license": "MIT",
@@ -207,22 +207,22 @@
207
207
  "test:unit": "tsx src/node/cli/index.ts test:unit"
208
208
  },
209
209
  "dependencies": {
210
- "@antfu/eslint-config": "5.2.1",
211
- "@apollo/client": "4.0.0",
212
- "@apollo/client-integration-nextjs": "0.13.0",
213
- "@apollo/server": "5.0.0",
210
+ "@antfu/eslint-config": "6.2.0",
211
+ "@apollo/client": "4.0.9",
212
+ "@apollo/client-integration-nextjs": "0.14.1",
213
+ "@apollo/server": "5.1.0",
214
214
  "@as-integrations/express5": "1.1.2",
215
- "@dotenvx/dotenvx": "1.49.0",
216
- "@eddeee888/gcg-typescript-resolver-files": "0.12.1",
217
- "@eslint-react/eslint-plugin": "1.52.6",
218
- "@graphql-codegen/cli": "5.0.7",
219
- "@graphql-codegen/client-preset": "4.8.3",
220
- "@nestjs/common": "11.1.6",
221
- "@nestjs/core": "11.1.6",
215
+ "@dotenvx/dotenvx": "1.51.1",
216
+ "@eddeee888/gcg-typescript-resolver-files": "0.14.0",
217
+ "@eslint-react/eslint-plugin": "2.3.5",
218
+ "@graphql-codegen/cli": "6.0.2",
219
+ "@graphql-codegen/client-preset": "5.1.3",
220
+ "@nestjs/common": "11.1.9",
221
+ "@nestjs/core": "11.1.9",
222
222
  "@userback/widget": "0.3.11",
223
- "@vitejs/plugin-react-swc": "4.0.1",
223
+ "@vitejs/plugin-react-swc": "4.2.2",
224
224
  "body-parser": "2.2.0",
225
- "chalk": "5.6.0",
225
+ "chalk": "5.6.2",
226
226
  "clsx": "2.1.1",
227
227
  "compression": "1.8.1",
228
228
  "consola": "3.4.2",
@@ -230,86 +230,85 @@
230
230
  "cors": "2.8.5",
231
231
  "crypto-js": "4.2.0",
232
232
  "date-fns": "4.1.0",
233
- "envalid": "8.1.0",
234
- "eslint-plugin-format": "1.0.1",
235
- "eslint-plugin-react-hooks": "5.2.0",
236
- "eslint-plugin-react-refresh": "0.4.20",
233
+ "envalid": "8.1.1",
234
+ "eslint-plugin-format": "1.0.2",
235
+ "eslint-plugin-react-hooks": "7.0.1",
236
+ "eslint-plugin-react-refresh": "0.4.24",
237
237
  "express": "5.1.0",
238
238
  "express-session": "1.18.2",
239
- "express-useragent": "1.0.15",
239
+ "express-useragent": "2.0.2",
240
240
  "extract-files": "13.0.0",
241
- "fs-extra": "11.3.1",
242
- "globals": "16.3.0",
243
- "graphql": "16.11.0",
241
+ "fs-extra": "11.3.2",
242
+ "globals": "16.5.0",
243
+ "graphql": "16.12.0",
244
244
  "graphql-upload": "17.0.0",
245
245
  "graphql-ws": "6.0.6",
246
- "i18next": "25.4.0",
247
- "jsdom": "26.1.0",
246
+ "i18next": "25.6.2",
247
+ "jsdom": "27.2.0",
248
248
  "localforage": "1.10.0",
249
249
  "lodash-es": "4.17.21",
250
250
  "migrate-mongo": "12.1.3",
251
- "mongodb": "6.18.0",
252
- "mongoose": "8.17.2",
251
+ "mongodb": "7.0.0",
252
+ "mongoose": "8.19.4",
253
253
  "mongoose-aggregate-paginate-v2": "1.1.4",
254
254
  "mongoose-paginate-v2": "1.9.1",
255
- "next-intl": "4.3.5",
255
+ "next-intl": "4.5.3",
256
256
  "node-fetch": "3.3.2",
257
257
  "node-persist": "4.0.4",
258
258
  "qs": "6.14.0",
259
- "react": "19.1.1",
260
- "react-dom": "19.1.1",
259
+ "react": "19.2.0",
260
+ "react-dom": "19.2.0",
261
261
  "react-hot-toast": "2.6.0",
262
- "react-i18next": "15.7.1",
262
+ "react-i18next": "16.3.3",
263
263
  "rxjs": "7.8.2",
264
264
  "slugify": "1.6.6",
265
265
  "unorm": "1.6.0",
266
- "uuid": "11.1.0",
267
- "vite": "7.1.3",
266
+ "uuid": "13.0.0",
267
+ "vite": "7.2.2",
268
268
  "ws": "8.18.3",
269
269
  "yargs": "18.0.0"
270
270
  },
271
271
  "devDependencies": {
272
- "@commitlint/cli": "19.8.1",
273
- "@commitlint/config-conventional": "19.8.1",
274
- "@eslint/config-inspector": "1.2.0",
275
- "@next/eslint-plugin-next": "15.5.0",
276
- "@testing-library/jest-dom": "6.8.0",
272
+ "@commitlint/cli": "20.1.0",
273
+ "@commitlint/config-conventional": "20.0.0",
274
+ "@eslint/config-inspector": "1.3.0",
275
+ "@next/eslint-plugin-next": "16.0.3",
276
+ "@testing-library/jest-dom": "6.9.1",
277
277
  "@testing-library/react": "16.3.0",
278
278
  "@types/body-parser": "1.19.6",
279
279
  "@types/compression": "1.8.1",
280
- "@types/cookie-parser": "1.4.9",
280
+ "@types/cookie-parser": "1.4.10",
281
281
  "@types/cors": "2.8.19",
282
282
  "@types/crypto-js": "4.2.2",
283
- "@types/express": "5.0.3",
283
+ "@types/express": "5.0.5",
284
284
  "@types/express-session": "1.18.2",
285
285
  "@types/express-useragent": "1.0.5",
286
- "@types/extract-files": "13.0.1",
286
+ "@types/extract-files": "13.0.2",
287
287
  "@types/fs-extra": "11.0.4",
288
288
  "@types/graphql-upload": "17.0.0",
289
289
  "@types/lodash-es": "4.17.12",
290
- "@types/migrate-mongo": "10.0.5",
291
- "@types/node": "24.3.0",
290
+ "@types/migrate-mongo": "10.0.6",
291
+ "@types/node": "24.10.1",
292
292
  "@types/node-persist": "3.1.8",
293
- "@types/react": "19.1.10",
294
- "@types/react-dom": "19.1.7",
293
+ "@types/react": "19.2.4",
294
+ "@types/react-dom": "19.2.3",
295
295
  "@types/unorm": "1.3.31",
296
- "@types/uuid": "10.0.0",
297
296
  "@types/ws": "8.18.1",
298
- "@types/yargs": "17.0.33",
299
- "@vitest/browser": "3.2.4",
300
- "eslint": "9.33.0",
301
- "eslint-config-next": "15.5.0",
297
+ "@types/yargs": "17.0.35",
298
+ "@vitest/browser": "4.0.9",
299
+ "eslint": "9.39.1",
300
+ "eslint-config-next": "16.0.3",
302
301
  "glob": "11.0.3",
303
- "lint-staged": "16.1.5",
304
- "node-modules-inspector": "1.1.1",
302
+ "lint-staged": "16.2.6",
303
+ "node-modules-inspector": "1.2.0",
305
304
  "npm-run-all2": "8.0.4",
306
- "sass": "1.90.0",
305
+ "sass": "1.94.0",
307
306
  "simple-git-hooks": "2.13.1",
308
- "tsx": "4.20.4",
309
- "typescript": "5.9.2",
310
- "vite": "7.1.3",
307
+ "tsx": "4.20.6",
308
+ "typescript": "5.9.3",
309
+ "vite": "7.2.2",
311
310
  "vite-plugin-dts": "4.5.4",
312
- "vitest": "3.2.4"
311
+ "vitest": "4.0.9"
313
312
  },
314
313
  "publishConfig": {
315
314
  "access": "public",