@sima-land/isomorph 11.0.0-alpha.63 → 11.0.0-alpha.64

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.
@@ -3,7 +3,6 @@
3
3
  "name": "@sima-land/isomorph",
4
4
  "version": "0.0.0",
5
5
  "dependencies": {
6
- "@humanwhocodes/env": "^4.0.1",
7
6
  "@krutoo/fetch-tools": "^0.1.1",
8
7
  "@opentelemetry/api": "^1.9.0",
9
8
  "@opentelemetry/exporter-prometheus": "^0.212.0",
@@ -27,6 +26,7 @@
27
26
  "webpack": "^5.105.2"
28
27
  },
29
28
  "peerDependencies": {
29
+ "@humanwhocodes/env": "^4.0.1",
30
30
  "@reduxjs/toolkit": "^1.9.7",
31
31
  "axios": "^1.13.5",
32
32
  "react": "^17.0 || ^18.0",
@@ -18,7 +18,8 @@ function provideConfigSource() {
18
18
  // подключаем соответствующий среде файл со значениями по умолчанию
19
19
  if (envName) {
20
20
  (0, _dotenv.config)({
21
- path: _nodePath.default.resolve(process.cwd(), `./.env.${envName}`)
21
+ path: _nodePath.default.resolve(process.cwd(), `./.env.${envName}`),
22
+ quiet: true
22
23
  });
23
24
  }
24
25
 
@@ -1 +1 @@
1
- {"version":3,"file":"config-source.js","names":["_nodePath","_interopRequireDefault","require","_dotenv","_config","e","__esModule","default","provideConfigSource","envName","process","env","NODE_ENV","applyDotenv","path","resolve","cwd","createConfigSource"],"sources":["../../../../../src/preset/node/providers/config-source.ts"],"sourcesContent":["import path from 'node:path';\nimport { config as applyDotenv } from 'dotenv';\nimport { ConfigSource, createConfigSource } from '../../../config';\n\n/**\n * Провайдер источника конфигурации.\n * @return Источник конфигурации.\n */\nexport function provideConfigSource(): ConfigSource {\n const envName = process.env.NODE_ENV;\n\n // подключаем соответствующий среде файл со значениями по умолчанию\n if (envName) {\n applyDotenv({ path: path.resolve(process.cwd(), `./.env.${envName}`) });\n }\n\n // @todo подключать .env, .env.local, .env.<envName>, .env.<envName>.local как в Vite/Bun\n\n return createConfigSource(process.env);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAAmE,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnE;AACA;AACA;AACA;AACO,SAASG,mBAAmBA,CAAA,EAAiB;EAClD,MAAMC,OAAO,GAAGC,OAAO,CAACC,GAAG,CAACC,QAAQ;;EAEpC;EACA,IAAIH,OAAO,EAAE;IACX,IAAAI,cAAW,EAAC;MAAEC,IAAI,EAAEA,iBAAI,CAACC,OAAO,CAACL,OAAO,CAACM,GAAG,CAAC,CAAC,EAAE,UAAUP,OAAO,EAAE;IAAE,CAAC,CAAC;EACzE;;EAEA;;EAEA,OAAO,IAAAQ,0BAAkB,EAACP,OAAO,CAACC,GAAG,CAAC;AACxC","ignoreList":[]}
1
+ {"version":3,"file":"config-source.js","names":["_nodePath","_interopRequireDefault","require","_dotenv","_config","e","__esModule","default","provideConfigSource","envName","process","env","NODE_ENV","applyDotenv","path","resolve","cwd","quiet","createConfigSource"],"sources":["../../../../../src/preset/node/providers/config-source.ts"],"sourcesContent":["import path from 'node:path';\nimport { config as applyDotenv } from 'dotenv';\nimport { ConfigSource, createConfigSource } from '../../../config';\n\n/**\n * Провайдер источника конфигурации.\n * @return Источник конфигурации.\n */\nexport function provideConfigSource(): ConfigSource {\n const envName = process.env.NODE_ENV;\n\n // подключаем соответствующий среде файл со значениями по умолчанию\n if (envName) {\n applyDotenv({ path: path.resolve(process.cwd(), `./.env.${envName}`), quiet: true });\n }\n\n // @todo подключать .env, .env.local, .env.<envName>, .env.<envName>.local как в Vite/Bun\n\n return createConfigSource(process.env);\n}\n"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAAmE,SAAAD,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnE;AACA;AACA;AACA;AACO,SAASG,mBAAmBA,CAAA,EAAiB;EAClD,MAAMC,OAAO,GAAGC,OAAO,CAACC,GAAG,CAACC,QAAQ;;EAEpC;EACA,IAAIH,OAAO,EAAE;IACX,IAAAI,cAAW,EAAC;MAAEC,IAAI,EAAEA,iBAAI,CAACC,OAAO,CAACL,OAAO,CAACM,GAAG,CAAC,CAAC,EAAE,UAAUP,OAAO,EAAE,CAAC;MAAEQ,KAAK,EAAE;IAAK,CAAC,CAAC;EACtF;;EAEA;;EAEA,OAAO,IAAAC,0BAAkB,EAACR,OAAO,CAACC,GAAG,CAAC;AACxC","ignoreList":[]}
@@ -59,7 +59,9 @@ class RemoteData {
59
59
  static createHandlers() {
60
60
  // ВАЖНО: не используем возможности immer здесь чтобы набор можно было использовать без immer.
61
61
  return {
62
- request(state) {
62
+ request(state,
63
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
64
+ _action) {
63
65
  return {
64
66
  ...state,
65
67
  status: STATUS.fetching
@@ -1 +1 @@
1
- {"version":3,"file":"remote-data.js","names":["redux","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createAction","createSelector","STATUS","exports","initial","fetching","success","failure","RemoteData","createActions","name","request","createHandlers","state","status","action","data","payload","fetchCount","error","applyHandlers","actions","builder","handlers","addCase","type","createSelectors","selectRoot","isInitial","isFetching","isSuccess","isFailed","wasFetched"],"sources":["../../../../src/utils/redux/remote-data.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n\n// @todo \"* as\" сделано для работы в Node.js ESM но есть подозрение что на tree shaking плохо скажется\nimport * as redux from '@reduxjs/toolkit';\n\nconst { createAction, createSelector } = redux;\n\ninterface RemoteDataActions<TData, TError = unknown, TPayload = void> {\n request: redux.PayloadActionCreator<TPayload, string>;\n success: redux.PayloadActionCreator<TData, string>;\n failure: redux.PayloadActionCreator<TError, string>;\n}\n\n/**\n * Статус загрузки данных.\n */\nexport type Status = 'initial' | 'fetching' | 'success' | 'failure';\n\n/**\n * Базовая структура хранилища удаленных данных.\n */\nexport interface RemoteDataState<TData, TError> {\n /** Загружаемые данные. */\n readonly data: TData;\n\n /** Данные ошибки запроса. */\n readonly error: TError;\n\n /** Статус загрузки данных. */\n readonly status: Status;\n\n /** Количество запросов. */\n readonly fetchCount?: number;\n}\n\n/**\n * Возможные статусы загрузки данных.\n */\nexport const STATUS = {\n initial: 'initial',\n fetching: 'fetching',\n success: 'success',\n failure: 'failure',\n} as const satisfies Record<Status, Status>;\n\n/** Работа с удаленными данными. */\nexport abstract class RemoteData {\n static get STATUS() {\n return STATUS;\n }\n\n /**\n * Возвращает action'ы для работы с удаленными данными.\n * @param name Префикс имён.\n * @return Набор.\n */\n static createActions<TData = never, TError = never, TPayload = void>(\n name: string,\n ): RemoteDataActions<TData, TError, TPayload> {\n return {\n request: createAction<TPayload>(`${name}/request`),\n success: createAction<TData>(`${name}/success`),\n failure: createAction<TError>(`${name}/failure`),\n } as const;\n }\n\n /**\n * Возвращает набор обработчиков для работы с удаленными данными.\n * @return Набор.\n */\n static createHandlers<\n TData,\n TError,\n S extends RemoteDataState<TData, TError> = RemoteDataState<TData, TError>,\n >() {\n // ВАЖНО: не используем возможности immer здесь чтобы набор можно было использовать без immer.\n return {\n request(state: S | redux.Draft<S>): S | redux.Draft<S> {\n return {\n ...state,\n status: STATUS.fetching,\n };\n },\n\n success(state: S | redux.Draft<S>, action: redux.PayloadAction<TData>): S | redux.Draft<S> {\n return {\n ...state,\n data: action.payload,\n status: STATUS.success,\n fetchCount: (state.fetchCount ?? 0) + 1,\n };\n },\n\n failure(state: S | redux.Draft<S>, action: redux.PayloadAction<TError>): S | redux.Draft<S> {\n return {\n ...state,\n error: action.payload,\n status: STATUS.failure,\n fetchCount: (state.fetchCount ?? 0) + 1,\n };\n },\n } as const;\n }\n\n /**\n * Применяет обработчики для работы с удаленными данными.\n * @param actions Набор action'ов.\n * @param builder Builder.\n */\n static applyHandlers<TData, TError, S extends RemoteDataState<TData, TError>>(\n actions: RemoteDataActions<TData, TError, any | never>,\n builder: Pick<redux.ActionReducerMapBuilder<S>, 'addCase'>,\n ): void {\n const handlers = RemoteData.createHandlers<TData, TError, S>();\n\n // @todo разобраться с проблемой когда убираешь \".type\"\n builder.addCase(actions.request.type, handlers.request);\n builder.addCase(actions.success.type, handlers.success);\n builder.addCase(actions.failure.type, handlers.failure);\n }\n\n /**\n * Возвращает новый набор селекторов данных.\n * @param selectRoot Функция получения состояния.\n * @return Набор селекторов.\n */\n static createSelectors<S extends RemoteDataState<unknown, unknown>, R = unknown>(\n selectRoot: (root: R) => S,\n ) {\n return {\n isInitial: createSelector(selectRoot, state => state.status === 'initial'),\n isFetching: createSelector(selectRoot, state => state.status === 'fetching'),\n isSuccess: createSelector(selectRoot, state => state.status === 'success'),\n isFailed: createSelector(selectRoot, state => state.status === 'failure'),\n wasFetched: createSelector(selectRoot, state => (state.fetchCount ?? 0) > 0),\n } as const;\n }\n}\n"],"mappings":";;;;;;AAGA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AAA0C,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAH1C;;AAEA;;AAGA,MAAM;EAAEkB,YAAY;EAAEC;AAAe,CAAC,GAAGvB,KAAK;;AAQ9C;AACA;AACA;;AAGA;AACA;AACA;;AAeA;AACA;AACA;AACO,MAAMwB,MAAM,GAAAC,OAAA,CAAAD,MAAA,GAAG;EACpBE,OAAO,EAAE,SAAS;EAClBC,QAAQ,EAAE,UAAU;EACpBC,OAAO,EAAE,SAAS;EAClBC,OAAO,EAAE;AACX,CAA2C;;AAE3C;AACO,MAAeC,UAAU,CAAC;EAC/B,WAAWN,MAAMA,CAAA,EAAG;IAClB,OAAOA,MAAM;EACf;;EAEA;AACF;AACA;AACA;AACA;EACE,OAAOO,aAAaA,CAClBC,IAAY,EACgC;IAC5C,OAAO;MACLC,OAAO,EAAEX,YAAY,CAAW,GAAGU,IAAI,UAAU,CAAC;MAClDJ,OAAO,EAAEN,YAAY,CAAQ,GAAGU,IAAI,UAAU,CAAC;MAC/CH,OAAO,EAAEP,YAAY,CAAS,GAAGU,IAAI,UAAU;IACjD,CAAC;EACH;;EAEA;AACF;AACA;AACA;EACE,OAAOE,cAAcA,CAAA,EAIjB;IACF;IACA,OAAO;MACLD,OAAOA,CAACE,KAAyB,EAAsB;QACrD,OAAO;UACL,GAAGA,KAAK;UACRC,MAAM,EAAEZ,MAAM,CAACG;QACjB,CAAC;MACH,CAAC;MAEDC,OAAOA,CAACO,KAAyB,EAAEE,MAAkC,EAAsB;QACzF,OAAO;UACL,GAAGF,KAAK;UACRG,IAAI,EAAED,MAAM,CAACE,OAAO;UACpBH,MAAM,EAAEZ,MAAM,CAACI,OAAO;UACtBY,UAAU,EAAE,CAACL,KAAK,CAACK,UAAU,IAAI,CAAC,IAAI;QACxC,CAAC;MACH,CAAC;MAEDX,OAAOA,CAACM,KAAyB,EAAEE,MAAmC,EAAsB;QAC1F,OAAO;UACL,GAAGF,KAAK;UACRM,KAAK,EAAEJ,MAAM,CAACE,OAAO;UACrBH,MAAM,EAAEZ,MAAM,CAACK,OAAO;UACtBW,UAAU,EAAE,CAACL,KAAK,CAACK,UAAU,IAAI,CAAC,IAAI;QACxC,CAAC;MACH;IACF,CAAC;EACH;;EAEA;AACF;AACA;AACA;AACA;EACE,OAAOE,aAAaA,CAClBC,OAAsD,EACtDC,OAA0D,EACpD;IACN,MAAMC,QAAQ,GAAGf,UAAU,CAACI,cAAc,CAAmB,CAAC;;IAE9D;IACAU,OAAO,CAACE,OAAO,CAACH,OAAO,CAACV,OAAO,CAACc,IAAI,EAAEF,QAAQ,CAACZ,OAAO,CAAC;IACvDW,OAAO,CAACE,OAAO,CAACH,OAAO,CAACf,OAAO,CAACmB,IAAI,EAAEF,QAAQ,CAACjB,OAAO,CAAC;IACvDgB,OAAO,CAACE,OAAO,CAACH,OAAO,CAACd,OAAO,CAACkB,IAAI,EAAEF,QAAQ,CAAChB,OAAO,CAAC;EACzD;;EAEA;AACF;AACA;AACA;AACA;EACE,OAAOmB,eAAeA,CACpBC,UAA0B,EAC1B;IACA,OAAO;MACLC,SAAS,EAAE3B,cAAc,CAAC0B,UAAU,EAAEd,KAAK,IAAIA,KAAK,CAACC,MAAM,KAAK,SAAS,CAAC;MAC1Ee,UAAU,EAAE5B,cAAc,CAAC0B,UAAU,EAAEd,KAAK,IAAIA,KAAK,CAACC,MAAM,KAAK,UAAU,CAAC;MAC5EgB,SAAS,EAAE7B,cAAc,CAAC0B,UAAU,EAAEd,KAAK,IAAIA,KAAK,CAACC,MAAM,KAAK,SAAS,CAAC;MAC1EiB,QAAQ,EAAE9B,cAAc,CAAC0B,UAAU,EAAEd,KAAK,IAAIA,KAAK,CAACC,MAAM,KAAK,SAAS,CAAC;MACzEkB,UAAU,EAAE/B,cAAc,CAAC0B,UAAU,EAAEd,KAAK,IAAI,CAACA,KAAK,CAACK,UAAU,IAAI,CAAC,IAAI,CAAC;IAC7E,CAAC;EACH;AACF;AAACf,OAAA,CAAAK,UAAA,GAAAA,UAAA","ignoreList":[]}
1
+ {"version":3,"file":"remote-data.js","names":["redux","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createAction","createSelector","STATUS","exports","initial","fetching","success","failure","RemoteData","createActions","name","request","createHandlers","state","_action","status","action","data","payload","fetchCount","error","applyHandlers","actions","builder","handlers","addCase","type","createSelectors","selectRoot","isInitial","isFetching","isSuccess","isFailed","wasFetched"],"sources":["../../../../src/utils/redux/remote-data.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n\n// @todo \"* as\" сделано для работы в Node.js ESM но есть подозрение что на tree shaking плохо скажется\nimport * as redux from '@reduxjs/toolkit';\n\nconst { createAction, createSelector } = redux;\n\ninterface RemoteDataActions<TData, TError = unknown, TPayload = void> {\n request: redux.PayloadActionCreator<TPayload, string>;\n success: redux.PayloadActionCreator<TData, string>;\n failure: redux.PayloadActionCreator<TError, string>;\n}\n\n/**\n * Статус загрузки данных.\n */\nexport type Status = 'initial' | 'fetching' | 'success' | 'failure';\n\n/**\n * Базовая структура хранилища удаленных данных.\n */\nexport interface RemoteDataState<TData, TError> {\n /** Загружаемые данные. */\n readonly data: TData;\n\n /** Данные ошибки запроса. */\n readonly error: TError;\n\n /** Статус загрузки данных. */\n readonly status: Status;\n\n /** Количество запросов. */\n readonly fetchCount?: number;\n}\n\n/**\n * Возможные статусы загрузки данных.\n */\nexport const STATUS = {\n initial: 'initial',\n fetching: 'fetching',\n success: 'success',\n failure: 'failure',\n} as const satisfies Record<Status, Status>;\n\n/** Работа с удаленными данными. */\nexport abstract class RemoteData {\n static get STATUS() {\n return STATUS;\n }\n\n /**\n * Возвращает action'ы для работы с удаленными данными.\n * @param name Префикс имён.\n * @return Набор.\n */\n static createActions<TData = never, TError = never, TPayload = void>(\n name: string,\n ): RemoteDataActions<TData, TError, TPayload> {\n return {\n request: createAction<TPayload>(`${name}/request`),\n success: createAction<TData>(`${name}/success`),\n failure: createAction<TError>(`${name}/failure`),\n } as const;\n }\n\n /**\n * Возвращает набор обработчиков для работы с удаленными данными.\n * @return Набор.\n */\n static createHandlers<\n TData,\n TError,\n S extends RemoteDataState<TData, TError> = RemoteDataState<TData, TError>,\n TPayload = void,\n >() {\n // ВАЖНО: не используем возможности immer здесь чтобы набор можно было использовать без immer.\n return {\n request(\n state: S | redux.Draft<S>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _action: redux.PayloadAction<TPayload>,\n ): S | redux.Draft<S> {\n return {\n ...state,\n status: STATUS.fetching,\n };\n },\n\n success(state: S | redux.Draft<S>, action: redux.PayloadAction<TData>): S | redux.Draft<S> {\n return {\n ...state,\n data: action.payload,\n status: STATUS.success,\n fetchCount: (state.fetchCount ?? 0) + 1,\n };\n },\n\n failure(state: S | redux.Draft<S>, action: redux.PayloadAction<TError>): S | redux.Draft<S> {\n return {\n ...state,\n error: action.payload,\n status: STATUS.failure,\n fetchCount: (state.fetchCount ?? 0) + 1,\n };\n },\n } as const;\n }\n\n /**\n * Применяет обработчики для работы с удаленными данными.\n * @param actions Набор action'ов.\n * @param builder Builder.\n */\n static applyHandlers<TData, TError, S extends RemoteDataState<TData, TError>, TPayload>(\n actions: RemoteDataActions<TData, TError, TPayload>,\n builder: Pick<redux.ActionReducerMapBuilder<S>, 'addCase'>,\n ): void {\n const handlers = RemoteData.createHandlers<TData, TError, S, TPayload>();\n\n // @todo разобраться с проблемой когда убираешь \".type\"\n builder.addCase(actions.request.type, handlers.request);\n builder.addCase(actions.success.type, handlers.success);\n builder.addCase(actions.failure.type, handlers.failure);\n }\n\n /**\n * Возвращает новый набор селекторов данных.\n * @param selectRoot Функция получения состояния.\n * @return Набор селекторов.\n */\n static createSelectors<S extends RemoteDataState<unknown, unknown>, R = unknown>(\n selectRoot: (root: R) => S,\n ) {\n return {\n isInitial: createSelector(selectRoot, state => state.status === 'initial'),\n isFetching: createSelector(selectRoot, state => state.status === 'fetching'),\n isSuccess: createSelector(selectRoot, state => state.status === 'success'),\n isFailed: createSelector(selectRoot, state => state.status === 'failure'),\n wasFetched: createSelector(selectRoot, state => (state.fetchCount ?? 0) > 0),\n } as const;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -3,7 +3,6 @@
3
3
  "name": "@sima-land/isomorph",
4
4
  "version": "0.0.0",
5
5
  "dependencies": {
6
- "@humanwhocodes/env": "^4.0.1",
7
6
  "@krutoo/fetch-tools": "^0.1.1",
8
7
  "@opentelemetry/api": "^1.9.0",
9
8
  "@opentelemetry/exporter-prometheus": "^0.212.0",
@@ -27,6 +26,7 @@
27
26
  "webpack": "^5.105.2"
28
27
  },
29
28
  "peerDependencies": {
29
+ "@humanwhocodes/env": "^4.0.1",
30
30
  "@reduxjs/toolkit": "^1.9.7",
31
31
  "axios": "^1.13.5",
32
32
  "react": "^17.0 || ^18.0",
@@ -12,7 +12,8 @@ export function provideConfigSource() {
12
12
  // подключаем соответствующий среде файл со значениями по умолчанию
13
13
  if (envName) {
14
14
  applyDotenv({
15
- path: path.resolve(process.cwd(), `./.env.${envName}`)
15
+ path: path.resolve(process.cwd(), `./.env.${envName}`),
16
+ quiet: true
16
17
  });
17
18
  }
18
19
 
@@ -1 +1 @@
1
- {"version":3,"file":"config-source.js","names":["path","config","applyDotenv","createConfigSource","provideConfigSource","envName","process","env","NODE_ENV","resolve","cwd"],"sources":["../../../../../src/preset/node/providers/config-source.ts"],"sourcesContent":["import path from 'node:path';\nimport { config as applyDotenv } from 'dotenv';\nimport { ConfigSource, createConfigSource } from '../../../config';\n\n/**\n * Провайдер источника конфигурации.\n * @return Источник конфигурации.\n */\nexport function provideConfigSource(): ConfigSource {\n const envName = process.env.NODE_ENV;\n\n // подключаем соответствующий среде файл со значениями по умолчанию\n if (envName) {\n applyDotenv({ path: path.resolve(process.cwd(), `./.env.${envName}`) });\n }\n\n // @todo подключать .env, .env.local, .env.<envName>, .env.<envName>.local как в Vite/Bun\n\n return createConfigSource(process.env);\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,WAAW;AAC5B,SAASC,MAAM,IAAIC,WAAW,QAAQ,QAAQ;AAC9C,SAAuBC,kBAAkB,QAAQ,4BAAiB;;AAElE;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAAA,EAAiB;EAClD,MAAMC,OAAO,GAAGC,OAAO,CAACC,GAAG,CAACC,QAAQ;;EAEpC;EACA,IAAIH,OAAO,EAAE;IACXH,WAAW,CAAC;MAAEF,IAAI,EAAEA,IAAI,CAACS,OAAO,CAACH,OAAO,CAACI,GAAG,CAAC,CAAC,EAAE,UAAUL,OAAO,EAAE;IAAE,CAAC,CAAC;EACzE;;EAEA;;EAEA,OAAOF,kBAAkB,CAACG,OAAO,CAACC,GAAG,CAAC;AACxC","ignoreList":[]}
1
+ {"version":3,"file":"config-source.js","names":["path","config","applyDotenv","createConfigSource","provideConfigSource","envName","process","env","NODE_ENV","resolve","cwd","quiet"],"sources":["../../../../../src/preset/node/providers/config-source.ts"],"sourcesContent":["import path from 'node:path';\nimport { config as applyDotenv } from 'dotenv';\nimport { ConfigSource, createConfigSource } from '../../../config';\n\n/**\n * Провайдер источника конфигурации.\n * @return Источник конфигурации.\n */\nexport function provideConfigSource(): ConfigSource {\n const envName = process.env.NODE_ENV;\n\n // подключаем соответствующий среде файл со значениями по умолчанию\n if (envName) {\n applyDotenv({ path: path.resolve(process.cwd(), `./.env.${envName}`), quiet: true });\n }\n\n // @todo подключать .env, .env.local, .env.<envName>, .env.<envName>.local как в Vite/Bun\n\n return createConfigSource(process.env);\n}\n"],"mappings":"AAAA,OAAOA,IAAI,MAAM,WAAW;AAC5B,SAASC,MAAM,IAAIC,WAAW,QAAQ,QAAQ;AAC9C,SAAuBC,kBAAkB,QAAQ,4BAAiB;;AAElE;AACA;AACA;AACA;AACA,OAAO,SAASC,mBAAmBA,CAAA,EAAiB;EAClD,MAAMC,OAAO,GAAGC,OAAO,CAACC,GAAG,CAACC,QAAQ;;EAEpC;EACA,IAAIH,OAAO,EAAE;IACXH,WAAW,CAAC;MAAEF,IAAI,EAAEA,IAAI,CAACS,OAAO,CAACH,OAAO,CAACI,GAAG,CAAC,CAAC,EAAE,UAAUL,OAAO,EAAE,CAAC;MAAEM,KAAK,EAAE;IAAK,CAAC,CAAC;EACtF;;EAEA;;EAEA,OAAOR,kBAAkB,CAACG,OAAO,CAACC,GAAG,CAAC;AACxC","ignoreList":[]}
@@ -51,7 +51,9 @@ export class RemoteData {
51
51
  static createHandlers() {
52
52
  // ВАЖНО: не используем возможности immer здесь чтобы набор можно было использовать без immer.
53
53
  return {
54
- request(state) {
54
+ request(state,
55
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
56
+ _action) {
55
57
  return {
56
58
  ...state,
57
59
  status: STATUS.fetching
@@ -1 +1 @@
1
- {"version":3,"file":"remote-data.js","names":["redux","createAction","createSelector","STATUS","initial","fetching","success","failure","RemoteData","createActions","name","request","createHandlers","state","status","action","data","payload","fetchCount","error","applyHandlers","actions","builder","handlers","addCase","type","createSelectors","selectRoot","isInitial","isFetching","isSuccess","isFailed","wasFetched"],"sources":["../../../../src/utils/redux/remote-data.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n\n// @todo \"* as\" сделано для работы в Node.js ESM но есть подозрение что на tree shaking плохо скажется\nimport * as redux from '@reduxjs/toolkit';\n\nconst { createAction, createSelector } = redux;\n\ninterface RemoteDataActions<TData, TError = unknown, TPayload = void> {\n request: redux.PayloadActionCreator<TPayload, string>;\n success: redux.PayloadActionCreator<TData, string>;\n failure: redux.PayloadActionCreator<TError, string>;\n}\n\n/**\n * Статус загрузки данных.\n */\nexport type Status = 'initial' | 'fetching' | 'success' | 'failure';\n\n/**\n * Базовая структура хранилища удаленных данных.\n */\nexport interface RemoteDataState<TData, TError> {\n /** Загружаемые данные. */\n readonly data: TData;\n\n /** Данные ошибки запроса. */\n readonly error: TError;\n\n /** Статус загрузки данных. */\n readonly status: Status;\n\n /** Количество запросов. */\n readonly fetchCount?: number;\n}\n\n/**\n * Возможные статусы загрузки данных.\n */\nexport const STATUS = {\n initial: 'initial',\n fetching: 'fetching',\n success: 'success',\n failure: 'failure',\n} as const satisfies Record<Status, Status>;\n\n/** Работа с удаленными данными. */\nexport abstract class RemoteData {\n static get STATUS() {\n return STATUS;\n }\n\n /**\n * Возвращает action'ы для работы с удаленными данными.\n * @param name Префикс имён.\n * @return Набор.\n */\n static createActions<TData = never, TError = never, TPayload = void>(\n name: string,\n ): RemoteDataActions<TData, TError, TPayload> {\n return {\n request: createAction<TPayload>(`${name}/request`),\n success: createAction<TData>(`${name}/success`),\n failure: createAction<TError>(`${name}/failure`),\n } as const;\n }\n\n /**\n * Возвращает набор обработчиков для работы с удаленными данными.\n * @return Набор.\n */\n static createHandlers<\n TData,\n TError,\n S extends RemoteDataState<TData, TError> = RemoteDataState<TData, TError>,\n >() {\n // ВАЖНО: не используем возможности immer здесь чтобы набор можно было использовать без immer.\n return {\n request(state: S | redux.Draft<S>): S | redux.Draft<S> {\n return {\n ...state,\n status: STATUS.fetching,\n };\n },\n\n success(state: S | redux.Draft<S>, action: redux.PayloadAction<TData>): S | redux.Draft<S> {\n return {\n ...state,\n data: action.payload,\n status: STATUS.success,\n fetchCount: (state.fetchCount ?? 0) + 1,\n };\n },\n\n failure(state: S | redux.Draft<S>, action: redux.PayloadAction<TError>): S | redux.Draft<S> {\n return {\n ...state,\n error: action.payload,\n status: STATUS.failure,\n fetchCount: (state.fetchCount ?? 0) + 1,\n };\n },\n } as const;\n }\n\n /**\n * Применяет обработчики для работы с удаленными данными.\n * @param actions Набор action'ов.\n * @param builder Builder.\n */\n static applyHandlers<TData, TError, S extends RemoteDataState<TData, TError>>(\n actions: RemoteDataActions<TData, TError, any | never>,\n builder: Pick<redux.ActionReducerMapBuilder<S>, 'addCase'>,\n ): void {\n const handlers = RemoteData.createHandlers<TData, TError, S>();\n\n // @todo разобраться с проблемой когда убираешь \".type\"\n builder.addCase(actions.request.type, handlers.request);\n builder.addCase(actions.success.type, handlers.success);\n builder.addCase(actions.failure.type, handlers.failure);\n }\n\n /**\n * Возвращает новый набор селекторов данных.\n * @param selectRoot Функция получения состояния.\n * @return Набор селекторов.\n */\n static createSelectors<S extends RemoteDataState<unknown, unknown>, R = unknown>(\n selectRoot: (root: R) => S,\n ) {\n return {\n isInitial: createSelector(selectRoot, state => state.status === 'initial'),\n isFetching: createSelector(selectRoot, state => state.status === 'fetching'),\n isSuccess: createSelector(selectRoot, state => state.status === 'success'),\n isFailed: createSelector(selectRoot, state => state.status === 'failure'),\n wasFetched: createSelector(selectRoot, state => (state.fetchCount ?? 0) > 0),\n } as const;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"remote-data.js","names":["redux","createAction","createSelector","STATUS","initial","fetching","success","failure","RemoteData","createActions","name","request","createHandlers","state","_action","status","action","data","payload","fetchCount","error","applyHandlers","actions","builder","handlers","addCase","type","createSelectors","selectRoot","isInitial","isFetching","isSuccess","isFailed","wasFetched"],"sources":["../../../../src/utils/redux/remote-data.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n\n// @todo \"* as\" сделано для работы в Node.js ESM но есть подозрение что на tree shaking плохо скажется\nimport * as redux from '@reduxjs/toolkit';\n\nconst { createAction, createSelector } = redux;\n\ninterface RemoteDataActions<TData, TError = unknown, TPayload = void> {\n request: redux.PayloadActionCreator<TPayload, string>;\n success: redux.PayloadActionCreator<TData, string>;\n failure: redux.PayloadActionCreator<TError, string>;\n}\n\n/**\n * Статус загрузки данных.\n */\nexport type Status = 'initial' | 'fetching' | 'success' | 'failure';\n\n/**\n * Базовая структура хранилища удаленных данных.\n */\nexport interface RemoteDataState<TData, TError> {\n /** Загружаемые данные. */\n readonly data: TData;\n\n /** Данные ошибки запроса. */\n readonly error: TError;\n\n /** Статус загрузки данных. */\n readonly status: Status;\n\n /** Количество запросов. */\n readonly fetchCount?: number;\n}\n\n/**\n * Возможные статусы загрузки данных.\n */\nexport const STATUS = {\n initial: 'initial',\n fetching: 'fetching',\n success: 'success',\n failure: 'failure',\n} as const satisfies Record<Status, Status>;\n\n/** Работа с удаленными данными. */\nexport abstract class RemoteData {\n static get STATUS() {\n return STATUS;\n }\n\n /**\n * Возвращает action'ы для работы с удаленными данными.\n * @param name Префикс имён.\n * @return Набор.\n */\n static createActions<TData = never, TError = never, TPayload = void>(\n name: string,\n ): RemoteDataActions<TData, TError, TPayload> {\n return {\n request: createAction<TPayload>(`${name}/request`),\n success: createAction<TData>(`${name}/success`),\n failure: createAction<TError>(`${name}/failure`),\n } as const;\n }\n\n /**\n * Возвращает набор обработчиков для работы с удаленными данными.\n * @return Набор.\n */\n static createHandlers<\n TData,\n TError,\n S extends RemoteDataState<TData, TError> = RemoteDataState<TData, TError>,\n TPayload = void,\n >() {\n // ВАЖНО: не используем возможности immer здесь чтобы набор можно было использовать без immer.\n return {\n request(\n state: S | redux.Draft<S>,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _action: redux.PayloadAction<TPayload>,\n ): S | redux.Draft<S> {\n return {\n ...state,\n status: STATUS.fetching,\n };\n },\n\n success(state: S | redux.Draft<S>, action: redux.PayloadAction<TData>): S | redux.Draft<S> {\n return {\n ...state,\n data: action.payload,\n status: STATUS.success,\n fetchCount: (state.fetchCount ?? 0) + 1,\n };\n },\n\n failure(state: S | redux.Draft<S>, action: redux.PayloadAction<TError>): S | redux.Draft<S> {\n return {\n ...state,\n error: action.payload,\n status: STATUS.failure,\n fetchCount: (state.fetchCount ?? 0) + 1,\n };\n },\n } as const;\n }\n\n /**\n * Применяет обработчики для работы с удаленными данными.\n * @param actions Набор action'ов.\n * @param builder Builder.\n */\n static applyHandlers<TData, TError, S extends RemoteDataState<TData, TError>, TPayload>(\n actions: RemoteDataActions<TData, TError, TPayload>,\n builder: Pick<redux.ActionReducerMapBuilder<S>, 'addCase'>,\n ): void {\n const handlers = RemoteData.createHandlers<TData, TError, S, TPayload>();\n\n // @todo разобраться с проблемой когда убираешь \".type\"\n builder.addCase(actions.request.type, handlers.request);\n builder.addCase(actions.success.type, handlers.success);\n builder.addCase(actions.failure.type, handlers.failure);\n }\n\n /**\n * Возвращает новый набор селекторов данных.\n * @param selectRoot Функция получения состояния.\n * @return Набор селекторов.\n */\n static createSelectors<S extends RemoteDataState<unknown, unknown>, R = unknown>(\n selectRoot: (root: R) => S,\n ) {\n return {\n isInitial: createSelector(selectRoot, state => state.status === 'initial'),\n isFetching: createSelector(selectRoot, state => state.status === 'fetching'),\n isSuccess: createSelector(selectRoot, state => state.status === 'success'),\n isFailed: createSelector(selectRoot, state => state.status === 'failure'),\n wasFetched: createSelector(selectRoot, state => (state.fetchCount ?? 0) > 0),\n } as const;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -48,8 +48,8 @@ export declare abstract class RemoteData {
48
48
  * Возвращает набор обработчиков для работы с удаленными данными.
49
49
  * @return Набор.
50
50
  */
51
- static createHandlers<TData, TError, S extends RemoteDataState<TData, TError> = RemoteDataState<TData, TError>>(): {
52
- readonly request: (state: S | redux.Draft<S>) => S | redux.Draft<S>;
51
+ static createHandlers<TData, TError, S extends RemoteDataState<TData, TError> = RemoteDataState<TData, TError>, TPayload = void>(): {
52
+ readonly request: (state: S | redux.Draft<S>, _action: redux.PayloadAction<TPayload>) => S | redux.Draft<S>;
53
53
  readonly success: (state: S | redux.Draft<S>, action: redux.PayloadAction<TData>) => S | redux.Draft<S>;
54
54
  readonly failure: (state: S | redux.Draft<S>, action: redux.PayloadAction<TError>) => S | redux.Draft<S>;
55
55
  };
@@ -58,7 +58,7 @@ export declare abstract class RemoteData {
58
58
  * @param actions Набор action'ов.
59
59
  * @param builder Builder.
60
60
  */
61
- static applyHandlers<TData, TError, S extends RemoteDataState<TData, TError>>(actions: RemoteDataActions<TData, TError, any | never>, builder: Pick<redux.ActionReducerMapBuilder<S>, 'addCase'>): void;
61
+ static applyHandlers<TData, TError, S extends RemoteDataState<TData, TError>, TPayload>(actions: RemoteDataActions<TData, TError, TPayload>, builder: Pick<redux.ActionReducerMapBuilder<S>, 'addCase'>): void;
62
62
  /**
63
63
  * Возвращает новый набор селекторов данных.
64
64
  * @param selectRoot Функция получения состояния.
@@ -1 +1 @@
1
- {"version":3,"file":"remote-data.d.ts","sourceRoot":"","sources":["../../../../src/utils/redux/remote-data.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAI1C,UAAU,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,QAAQ,GAAG,IAAI;IAClE,OAAO,EAAE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,EAAE,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnD,OAAO,EAAE,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,KAAK,EAAE,MAAM;IAC5C,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAErB,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,2BAA2B;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;CAKwB,CAAC;AAE5C,mCAAmC;AACnC,8BAAsB,UAAU;IAC9B,MAAM,KAAK,MAAM;;;;;MAEhB;IAED;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,QAAQ,GAAG,IAAI,EACjE,IAAI,EAAE,MAAM,GACX,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;IAQ7C;;;OAGG;IACH,MAAM,CAAC,cAAc,CACnB,KAAK,EACL,MAAM,EACN,CAAC,SAAS,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC;kCAIxD,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;kCAOvC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;kCAS3E,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,KAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;;IAW/F;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,SAAS,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,EAC1E,OAAO,EAAE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,KAAK,CAAC,EACtD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GACzD,IAAI;IASP;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,EAC7E,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CAU7B"}
1
+ {"version":3,"file":"remote-data.d.ts","sourceRoot":"","sources":["../../../../src/utils/redux/remote-data.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAI1C,UAAU,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,QAAQ,GAAG,IAAI;IAClE,OAAO,EAAE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtD,OAAO,EAAE,KAAK,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACnD,OAAO,EAAE,KAAK,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrD;AAED;;GAEG;AACH,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpE;;GAEG;AACH,MAAM,WAAW,eAAe,CAAC,KAAK,EAAE,MAAM;IAC5C,0BAA0B;IAC1B,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IAErB,6BAA6B;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,2BAA2B;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,eAAO,MAAM,MAAM;;;;;CAKwB,CAAC;AAE5C,mCAAmC;AACnC,8BAAsB,UAAU;IAC9B,MAAM,KAAK,MAAM;;;;;MAEhB;IAED;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,QAAQ,GAAG,IAAI,EACjE,IAAI,EAAE,MAAM,GACX,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC;IAQ7C;;;OAGG;IACH,MAAM,CAAC,cAAc,CACnB,KAAK,EACL,MAAM,EACN,CAAC,SAAS,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,EACzE,QAAQ,GAAG,IAAI;kCAKJ,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAEhB,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,KACrC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;kCAON,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,KAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;kCAS3E,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,KAAG,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;;IAW/F;;;;OAIG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,SAAS,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,QAAQ,EACpF,OAAO,EAAE,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EACnD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GACzD,IAAI;IASP;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,GAAG,OAAO,EAC7E,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;CAU7B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sima-land/isomorph",
3
- "version": "11.0.0-alpha.63",
3
+ "version": "11.0.0-alpha.64",
4
4
  "description": "Tiny framework for fast start frontend microservices",
5
5
  "author": "www.sima-land.ru team",
6
6
  "license": "Apache-2.0",
@@ -47,7 +47,6 @@
47
47
  "whatwg-fetch": "^3.6.20"
48
48
  },
49
49
  "dependencies": {
50
- "@humanwhocodes/env": "^4.0.1",
51
50
  "@krutoo/fetch-tools": "^0.1.1",
52
51
  "@opentelemetry/api": "^1.9.0",
53
52
  "@opentelemetry/exporter-prometheus": "^0.212.0",
@@ -71,6 +70,7 @@
71
70
  "webpack": "^5.105.2"
72
71
  },
73
72
  "peerDependencies": {
73
+ "@humanwhocodes/env": "^4.0.1",
74
74
  "@reduxjs/toolkit": "^1.9.7",
75
75
  "axios": "^1.13.5",
76
76
  "react": "^17.0 || ^18.0",