@sima-land/isomorph 11.0.0-alpha.51 → 11.0.0-alpha.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/di/application.js +1 -1
- package/dist/cjs/di/application.js.map +1 -1
- package/dist/cjs/di/container.js +1 -1
- package/dist/cjs/di/container.js.map +1 -1
- package/dist/cjs/di/preset.js +1 -1
- package/dist/cjs/di/preset.js.map +1 -1
- package/dist/cjs/log/logger.js +1 -1
- package/dist/cjs/log/logger.js.map +1 -1
- package/dist/cjs/package.json +3 -3
- package/dist/cjs/preset/bun/providers/config-source.js +1 -1
- package/dist/cjs/preset/bun/providers/config-source.js.map +1 -1
- package/dist/cjs/preset/bun/providers/log-handler-sentry.js +1 -1
- package/dist/cjs/preset/bun/providers/log-handler-sentry.js.map +1 -1
- package/dist/cjs/preset/bun/providers/logger.js +1 -1
- package/dist/cjs/preset/bun/providers/logger.js.map +1 -1
- package/dist/cjs/preset/bun/providers/serve-metrics.js +1 -1
- package/dist/cjs/preset/bun/providers/serve-metrics.js.map +1 -1
- package/dist/cjs/preset/bun/providers/serve-middleware.js +1 -1
- package/dist/cjs/preset/bun/providers/serve-middleware.js.map +1 -1
- package/dist/cjs/preset/bun/providers/service-routes.js +1 -1
- package/dist/cjs/preset/bun/providers/service-routes.js.map +1 -1
- package/dist/cjs/preset/bun-handler/index.js +0 -2
- package/dist/cjs/preset/bun-handler/index.js.map +1 -1
- package/dist/cjs/preset/bun-handler/providers/fetch-middleware.js +1 -1
- package/dist/cjs/preset/bun-handler/providers/fetch-middleware.js.map +1 -1
- package/dist/cjs/preset/bun-handler/providers/handler-main.js +1 -1
- package/dist/cjs/preset/bun-handler/providers/handler-main.js.map +1 -1
- package/dist/cjs/preset/bun-handler/providers/specific-params.js +1 -1
- package/dist/cjs/preset/bun-handler/providers/specific-params.js.map +1 -1
- package/dist/cjs/preset/server/providers/fetch-middleware.js +1 -1
- package/dist/cjs/preset/server/providers/fetch-middleware.js.map +1 -1
- package/dist/cjs/preset/server/providers/serve.js +1 -1
- package/dist/cjs/preset/server/providers/serve.js.map +1 -1
- package/dist/cjs/utils/redux/remote-data.js +1 -1
- package/dist/cjs/utils/redux/remote-data.js.map +1 -1
- package/dist/cjs/utils/redux-saga/middleware.js +1 -1
- package/dist/cjs/utils/redux-saga/middleware.js.map +1 -1
- package/dist/cjs/utils/web/storage/index.js +1 -1
- package/dist/cjs/utils/web/storage/index.js.map +1 -1
- package/dist/cjs/utils/webpack/index.js +6 -0
- package/dist/cjs/utils/webpack/index.js.map +1 -1
- package/dist/esm/di/application.js +1 -1
- package/dist/esm/di/application.js.map +1 -1
- package/dist/esm/di/container.js +1 -1
- package/dist/esm/di/container.js.map +1 -1
- package/dist/esm/di/preset.js +1 -1
- package/dist/esm/di/preset.js.map +1 -1
- package/dist/esm/log/logger.js +1 -1
- package/dist/esm/log/logger.js.map +1 -1
- package/dist/esm/package.json +3 -3
- package/dist/esm/preset/bun/providers/config-source.js +1 -1
- package/dist/esm/preset/bun/providers/config-source.js.map +1 -1
- package/dist/esm/preset/bun/providers/log-handler-sentry.js +1 -1
- package/dist/esm/preset/bun/providers/log-handler-sentry.js.map +1 -1
- package/dist/esm/preset/bun/providers/logger.js +1 -1
- package/dist/esm/preset/bun/providers/logger.js.map +1 -1
- package/dist/esm/preset/bun/providers/serve-metrics.js +1 -1
- package/dist/esm/preset/bun/providers/serve-metrics.js.map +1 -1
- package/dist/esm/preset/bun/providers/serve-middleware.js +1 -1
- package/dist/esm/preset/bun/providers/serve-middleware.js.map +1 -1
- package/dist/esm/preset/bun/providers/service-routes.js +1 -1
- package/dist/esm/preset/bun/providers/service-routes.js.map +1 -1
- package/dist/esm/preset/bun-handler/index.js +0 -1
- package/dist/esm/preset/bun-handler/index.js.map +1 -1
- package/dist/esm/preset/bun-handler/providers/fetch-middleware.js +1 -1
- package/dist/esm/preset/bun-handler/providers/fetch-middleware.js.map +1 -1
- package/dist/esm/preset/bun-handler/providers/handler-main.js +1 -1
- package/dist/esm/preset/bun-handler/providers/handler-main.js.map +1 -1
- package/dist/esm/preset/bun-handler/providers/specific-params.js +1 -1
- package/dist/esm/preset/bun-handler/providers/specific-params.js.map +1 -1
- package/dist/esm/preset/server/providers/fetch-middleware.js +1 -1
- package/dist/esm/preset/server/providers/fetch-middleware.js.map +1 -1
- package/dist/esm/preset/server/providers/serve.js +1 -1
- package/dist/esm/preset/server/providers/serve.js.map +1 -1
- package/dist/esm/utils/redux/remote-data.js +1 -1
- package/dist/esm/utils/redux/remote-data.js.map +1 -1
- package/dist/esm/utils/redux-saga/middleware.js +1 -1
- package/dist/esm/utils/redux-saga/middleware.js.map +1 -1
- package/dist/esm/utils/web/storage/index.js +1 -1
- package/dist/esm/utils/web/storage/index.js.map +1 -1
- package/dist/esm/utils/webpack/index.js +2 -3
- package/dist/esm/utils/webpack/index.js.map +1 -1
- package/dist/types/preset/bun-handler/index.d.ts.map +1 -1
- package/dist/types/utils/webpack/index.d.ts +4 -6
- package/dist/types/utils/webpack/index.d.ts.map +1 -1
- package/package.json +8 -8
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","names":["_reduxSaga","_interopRequireWildcard","require","_effects","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","createSagaExtendedMiddleware","handler","MiddlewareControl","toMiddleware","constructor","sagaMiddleware","createSagaMiddleware","onError","error","info","onSagaError","middleware","api","timeout","milliseconds","config","configInterrupt","run","saga","args","interruptTimeout","interruptStrategy","strategy","Number","isFinite","runWithBreakTask","runWithBreakMiddleware","toPromise","data","result","runWithTimeLimit","done","onTimeoutInterrupt","Error","onConfigError","promises","ready","timerId","push","then","finally","undefined","clearTimeout","Promise","resolve","setTimeout","dispatch","END","race","task","fork","needCancel","taskResult","delay","cancel","SagaCancelSignal","value","name"],"sources":["../../../../src/utils/redux-saga/middleware.ts"],"sourcesContent":["/* eslint-disable require-jsdoc, jsdoc/require-jsdoc */\nimport { MiddlewareAPI } from '@reduxjs/toolkit';\nimport {\n SagaExtendedMiddleware,\n SagaInterruptConfig,\n SagaMiddlewareHandler,\n SagaTimeoutRunData,\n} from './types';\nimport createSagaMiddleware, { END, Saga, Task, SagaMiddleware } from 'redux-saga';\nimport { call, cancel, delay, fork, race } from 'redux-saga/effects';\n\n/**\n * Возвращает расширенную версию SagaMiddleware.\n * @param handler Обработчик событий.\n * @return Middleware.\n */\nfunction createSagaExtendedMiddleware(handler: SagaMiddlewareHandler): SagaExtendedMiddleware {\n return new MiddlewareControl(handler).toMiddleware();\n}\n\nclass MiddlewareControl {\n private api?: MiddlewareAPI;\n private interruptTimeout?: number;\n private interruptStrategy?: SagaInterruptConfig['strategy'];\n private handler: SagaMiddlewareHandler;\n private sagaMiddleware: SagaMiddleware;\n\n constructor(handler: SagaMiddlewareHandler) {\n this.handler = handler;\n\n this.sagaMiddleware = createSagaMiddleware({\n onError: (error, info) => {\n handler.onSagaError(error, info);\n },\n });\n }\n\n toMiddleware(): SagaExtendedMiddleware {\n const middleware: SagaExtendedMiddleware = api => {\n this.api = api;\n return this.sagaMiddleware(api);\n };\n\n middleware.timeout = (milliseconds, config) => {\n this.configInterrupt(milliseconds, config);\n return middleware;\n };\n\n middleware.run = async (saga, ...args) => {\n await this.run(saga, ...args);\n };\n\n return middleware;\n }\n\n private configInterrupt(milliseconds: number, config?: SagaInterruptConfig) {\n this.interruptTimeout = milliseconds;\n this.interruptStrategy = config?.strategy ?? 'cancel-task';\n }\n\n private async run<S extends Saga>(saga: S, ...args: Parameters<S>): Promise<void> {\n const { interruptTimeout } = this;\n\n if (typeof interruptTimeout === 'number' && Number.isFinite(interruptTimeout)) {\n switch (this.interruptStrategy) {\n case 'cancel-task':\n await this.runWithBreakTask({ saga, args, timeout: interruptTimeout });\n return;\n case 'dispatch-end':\n await this.runWithBreakMiddleware({ saga, args, timeout: interruptTimeout });\n return;\n }\n }\n\n await this.sagaMiddleware.run(saga, ...args).toPromise();\n }\n\n private async runWithBreakTask<S extends Saga>(data: SagaTimeoutRunData<S>): Promise<void> {\n const result: Either<unknown, unknown> = await this.sagaMiddleware\n .run(runWithTimeLimit, data)\n .toPromise();\n\n if (!result.done) {\n this.handler.onTimeoutInterrupt({ timeout: data.timeout });\n }\n }\n\n private async runWithBreakMiddleware<S extends Saga>(data: SagaTimeoutRunData<S>): Promise<void> {\n const { saga, args, timeout } = data;\n const { api } = this;\n\n if (!api) {\n const error = new Error('Middleware is not applied to the store');\n\n this.handler.onConfigError(error);\n\n throw error;\n }\n\n const promises: Promise<void>[] = [];\n\n let ready = false;\n let timerId: ReturnType<typeof setTimeout>;\n\n promises.push(\n this.sagaMiddleware\n .run(saga, ...args)\n .toPromise()\n .then(() => {\n ready = true;\n })\n .finally(() => {\n // вне зависимости от результата отключаем таймер если он есть\n timerId !== undefined && clearTimeout(timerId);\n }),\n );\n\n promises.push(\n new Promise<void>(resolve => {\n timerId = setTimeout(() => {\n if (!ready) {\n this.handler.onTimeoutInterrupt({ timeout });\n api.dispatch(END);\n }\n\n resolve();\n }, timeout);\n }),\n );\n\n await Promise.race(promises);\n }\n}\n\nfunction* runWithTimeLimit<S extends Saga>(\n data: SagaTimeoutRunData<S>,\n): Generator<any, Either<SagaCancelSignal, ReturnType<S>>, any> {\n const { saga, args, timeout } = data;\n const task: Task = yield fork(saga, ...args);\n\n const [needCancel, taskResult]: [boolean, ReturnType<S>] = yield race([\n delay(timeout, true),\n call(() => task.toPromise()),\n ]);\n\n if (needCancel) {\n yield cancel(task);\n\n // ВАЖНО: если делать throw ... - ошибка попадет в onError (createSagaMiddleware)\n // чтобы не логировать лишний раз возвращаем значение\n return { done: false, error: new SagaCancelSignal() };\n } else {\n return { done: true, value: taskResult };\n }\n}\n\n// @todo в будущем можно заменить все ожидаемые исключения (только внутри фреймворка) на этот тип\ntype Either<E, V> = { done: false; error: E } | { done: true; value: V };\n\nclass SagaCancelSignal {\n name: string;\n\n constructor() {\n this.name = 'SagaCancelSignal';\n }\n}\n\nexport { createSagaExtendedMiddleware as createSagaMiddleware };\n"],"mappings":";;;;;;AAQA,IAAAA,UAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAD,OAAA;AAAqE,SAAAE,yBAAAC,WAAA,eAAAC,OAAA,kCAAAC,iBAAA,OAAAD,OAAA,QAAAE,gBAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,WAAA,WAAAA,WAAA,GAAAG,gBAAA,GAAAD,iBAAA,KAAAF,WAAA;AAAA,SAAAJ,wBAAAQ,GAAA,EAAAJ,WAAA,SAAAA,WAAA,IAAAI,GAAA,IAAAA,GAAA,CAAAC,UAAA,WAAAD,GAAA,QAAAA,GAAA,oBAAAA,GAAA,wBAAAA,GAAA,4BAAAE,OAAA,EAAAF,GAAA,UAAAG,KAAA,GAAAR,wBAAA,CAAAC,WAAA,OAAAO,KAAA,IAAAA,KAAA,CAAAC,GAAA,CAAAJ,GAAA,YAAAG,KAAA,CAAAE,GAAA,CAAAL,GAAA,SAAAM,MAAA,WAAAC,qBAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,GAAA,IAAAX,GAAA,QAAAW,GAAA,kBAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAd,GAAA,EAAAW,GAAA,SAAAI,IAAA,GAAAR,qBAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAV,GAAA,EAAAW,GAAA,cAAAI,IAAA,KAAAA,IAAA,CAAAV,GAAA,IAAAU,IAAA,CAAAC,GAAA,KAAAR,MAAA,CAAAC,cAAA,CAAAH,MAAA,EAAAK,GAAA,EAAAI,IAAA,YAAAT,MAAA,CAAAK,GAAA,IAAAX,GAAA,CAAAW,GAAA,SAAAL,MAAA,CAAAJ,OAAA,GAAAF,GAAA,MAAAG,KAAA,IAAAA,KAAA,CAAAa,GAAA,CAAAhB,GAAA,EAAAM,MAAA,YAAAA,MAAA;AATrE;;AAWA;AACA;AACA;AACA;AACA;AACA,SAASW,4BAA4BA,CAACC,OAA8B,EAA0B;EAC5F,OAAO,IAAIC,iBAAiB,CAACD,OAAO,CAAC,CAACE,YAAY,CAAC,CAAC;AACtD;AAEA,MAAMD,iBAAiB,CAAC;EAOtBE,WAAWA,CAACH,OAA8B,EAAE;IAC1C,IAAI,CAACA,OAAO,GAAGA,OAAO;IAEtB,IAAI,CAACI,cAAc,GAAG,IAAAC,kBAAoB,EAAC;MACzCC,OAAO,EAAEA,CAACC,KAAK,EAAEC,IAAI,KAAK;QACxBR,OAAO,CAACS,WAAW,CAACF,KAAK,EAAEC,IAAI,CAAC;MAClC;IACF,CAAC,CAAC;EACJ;EAEAN,YAAYA,CAAA,EAA2B;IACrC,MAAMQ,UAAkC,GAAGC,GAAG,IAAI;MAChD,IAAI,CAACA,GAAG,GAAGA,GAAG;MACd,OAAO,IAAI,CAACP,cAAc,CAACO,GAAG,CAAC;IACjC,CAAC;IAEDD,UAAU,CAACE,OAAO,GAAG,CAACC,YAAY,EAAEC,MAAM,KAAK;MAC7C,IAAI,CAACC,eAAe,CAACF,YAAY,EAAEC,MAAM,CAAC;MAC1C,OAAOJ,UAAU;IACnB,CAAC;IAEDA,UAAU,CAACM,GAAG,GAAG,OAAOC,IAAI,EAAE,GAAGC,IAAI,KAAK;MACxC,MAAM,IAAI,CAACF,GAAG,CAACC,IAAI,EAAE,GAAGC,IAAI,CAAC;IAC/B,CAAC;IAED,OAAOR,UAAU;EACnB;EAEQK,eAAeA,CAACF,YAAoB,EAAEC,MAA4B,EAAE;IAC1E,IAAI,CAACK,gBAAgB,GAAGN,YAAY;IACpC,IAAI,CAACO,iBAAiB,GAAGN,MAAM,EAAEO,QAAQ,IAAI,aAAa;EAC5D;EAEA,MAAcL,GAAGA,CAAiBC,IAAO,EAAE,GAAGC,IAAmB,EAAiB;IAChF,MAAM;MAAEC;IAAiB,CAAC,GAAG,IAAI;IAEjC,IAAI,OAAOA,gBAAgB,KAAK,QAAQ,IAAIG,MAAM,CAACC,QAAQ,CAACJ,gBAAgB,CAAC,EAAE;MAC7E,QAAQ,IAAI,CAACC,iBAAiB;QAC5B,KAAK,aAAa;UAChB,MAAM,IAAI,CAACI,gBAAgB,CAAC;YAAEP,IAAI;YAAEC,IAAI;YAAEN,OAAO,EAAEO;UAAiB,CAAC,CAAC;UACtE;QACF,KAAK,cAAc;UACjB,MAAM,IAAI,CAACM,sBAAsB,CAAC;YAAER,IAAI;YAAEC,IAAI;YAAEN,OAAO,EAAEO;UAAiB,CAAC,CAAC;UAC5E;MACJ;IACF;IAEA,MAAM,IAAI,CAACf,cAAc,CAACY,GAAG,CAACC,IAAI,EAAE,GAAGC,IAAI,CAAC,CAACQ,SAAS,CAAC,CAAC;EAC1D;EAEA,MAAcF,gBAAgBA,CAAiBG,IAA2B,EAAiB;IACzF,MAAMC,MAAgC,GAAG,MAAM,IAAI,CAACxB,cAAc,CAC/DY,GAAG,CAACa,gBAAgB,EAAEF,IAAI,CAAC,CAC3BD,SAAS,CAAC,CAAC;IAEd,IAAI,CAACE,MAAM,CAACE,IAAI,EAAE;MAChB,IAAI,CAAC9B,OAAO,CAAC+B,kBAAkB,CAAC;QAAEnB,OAAO,EAAEe,IAAI,CAACf;MAAQ,CAAC,CAAC;IAC5D;EACF;EAEA,MAAca,sBAAsBA,CAAiBE,IAA2B,EAAiB;IAC/F,MAAM;MAAEV,IAAI;MAAEC,IAAI;MAAEN;IAAQ,CAAC,GAAGe,IAAI;IACpC,MAAM;MAAEhB;IAAI,CAAC,GAAG,IAAI;IAEpB,IAAI,CAACA,GAAG,EAAE;MACR,MAAMJ,KAAK,GAAG,IAAIyB,KAAK,CAAC,wCAAwC,CAAC;MAEjE,IAAI,CAAChC,OAAO,CAACiC,aAAa,CAAC1B,KAAK,CAAC;MAEjC,MAAMA,KAAK;IACb;IAEA,MAAM2B,QAAyB,GAAG,EAAE;IAEpC,IAAIC,KAAK,GAAG,KAAK;IACjB,IAAIC,OAAsC;IAE1CF,QAAQ,CAACG,IAAI,CACX,IAAI,CAACjC,cAAc,CAChBY,GAAG,CAACC,IAAI,EAAE,GAAGC,IAAI,CAAC,CAClBQ,SAAS,CAAC,CAAC,CACXY,IAAI,CAAC,MAAM;MACVH,KAAK,GAAG,IAAI;IACd,CAAC,CAAC,CACDI,OAAO,CAAC,MAAM;MACb;MACAH,OAAO,KAAKI,SAAS,IAAIC,YAAY,CAACL,OAAO,CAAC;IAChD,CAAC,CACL,CAAC;IAEDF,QAAQ,CAACG,IAAI,CACX,IAAIK,OAAO,CAAOC,OAAO,IAAI;MAC3BP,OAAO,GAAGQ,UAAU,CAAC,MAAM;QACzB,IAAI,CAACT,KAAK,EAAE;UACV,IAAI,CAACnC,OAAO,CAAC+B,kBAAkB,CAAC;YAAEnB;UAAQ,CAAC,CAAC;UAC5CD,GAAG,CAACkC,QAAQ,CAACC,cAAG,CAAC;QACnB;QAEAH,OAAO,CAAC,CAAC;MACX,CAAC,EAAE/B,OAAO,CAAC;IACb,CAAC,CACH,CAAC;IAED,MAAM8B,OAAO,CAACK,IAAI,CAACb,QAAQ,CAAC;EAC9B;AACF;AAEA,UAAUL,gBAAgBA,CACxBF,IAA2B,EACmC;EAC9D,MAAM;IAAEV,IAAI;IAAEC,IAAI;IAAEN;EAAQ,CAAC,GAAGe,IAAI;EACpC,MAAMqB,IAAU,GAAG,MAAM,IAAAC,aAAI,EAAChC,IAAI,EAAE,GAAGC,IAAI,CAAC;EAE5C,MAAM,CAACgC,UAAU,EAAEC,UAAU,CAA2B,GAAG,MAAM,IAAAJ,aAAI,EAAC,CACpE,IAAAK,cAAK,EAACxC,OAAO,EAAE,IAAI,CAAC,EACpB,IAAAhB,aAAI,EAAC,MAAMoD,IAAI,CAACtB,SAAS,CAAC,CAAC,CAAC,CAC7B,CAAC;EAEF,IAAIwB,UAAU,EAAE;IACd,MAAM,IAAAG,eAAM,EAACL,IAAI,CAAC;;IAElB;IACA;IACA,OAAO;MAAElB,IAAI,EAAE,KAAK;MAAEvB,KAAK,EAAE,IAAI+C,gBAAgB,CAAC;IAAE,CAAC;EACvD,CAAC,MAAM;IACL,OAAO;MAAExB,IAAI,EAAE,IAAI;MAAEyB,KAAK,EAAEJ;IAAW,CAAC;EAC1C;AACF;;AAEA;;AAGA,MAAMG,gBAAgB,CAAC;EAGrBnD,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACqD,IAAI,GAAG,kBAAkB;EAChC;AACF"}
|
|
1
|
+
{"version":3,"file":"middleware.js","names":["_reduxSaga","_interopRequireWildcard","require","_effects","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","createSagaExtendedMiddleware","handler","MiddlewareControl","toMiddleware","constructor","sagaMiddleware","createSagaMiddleware","onError","error","info","onSagaError","middleware","api","timeout","milliseconds","config","configInterrupt","run","saga","args","interruptTimeout","interruptStrategy","strategy","Number","isFinite","runWithBreakTask","runWithBreakMiddleware","toPromise","data","result","runWithTimeLimit","done","onTimeoutInterrupt","Error","onConfigError","promises","ready","timerId","push","then","finally","undefined","clearTimeout","Promise","resolve","setTimeout","dispatch","END","race","task","fork","needCancel","taskResult","delay","cancel","SagaCancelSignal","value","name"],"sources":["../../../../src/utils/redux-saga/middleware.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { MiddlewareAPI } from '@reduxjs/toolkit';\nimport {\n SagaExtendedMiddleware,\n SagaInterruptConfig,\n SagaMiddlewareHandler,\n SagaTimeoutRunData,\n} from './types';\nimport createSagaMiddleware, { END, Saga, Task, SagaMiddleware } from 'redux-saga';\nimport { call, cancel, delay, fork, race } from 'redux-saga/effects';\n\n/**\n * Возвращает расширенную версию SagaMiddleware.\n * @param handler Обработчик событий.\n * @return Middleware.\n */\nfunction createSagaExtendedMiddleware(handler: SagaMiddlewareHandler): SagaExtendedMiddleware {\n return new MiddlewareControl(handler).toMiddleware();\n}\n\nclass MiddlewareControl {\n private api?: MiddlewareAPI;\n private interruptTimeout?: number;\n private interruptStrategy?: SagaInterruptConfig['strategy'];\n private handler: SagaMiddlewareHandler;\n private sagaMiddleware: SagaMiddleware;\n\n constructor(handler: SagaMiddlewareHandler) {\n this.handler = handler;\n\n this.sagaMiddleware = createSagaMiddleware({\n onError: (error, info) => {\n handler.onSagaError(error, info);\n },\n });\n }\n\n toMiddleware(): SagaExtendedMiddleware {\n const middleware: SagaExtendedMiddleware = api => {\n this.api = api;\n return this.sagaMiddleware(api);\n };\n\n middleware.timeout = (milliseconds, config) => {\n this.configInterrupt(milliseconds, config);\n return middleware;\n };\n\n middleware.run = async (saga, ...args) => {\n await this.run(saga, ...args);\n };\n\n return middleware;\n }\n\n private configInterrupt(milliseconds: number, config?: SagaInterruptConfig) {\n this.interruptTimeout = milliseconds;\n this.interruptStrategy = config?.strategy ?? 'cancel-task';\n }\n\n private async run<S extends Saga>(saga: S, ...args: Parameters<S>): Promise<void> {\n const { interruptTimeout } = this;\n\n if (typeof interruptTimeout === 'number' && Number.isFinite(interruptTimeout)) {\n switch (this.interruptStrategy) {\n case 'cancel-task':\n await this.runWithBreakTask({ saga, args, timeout: interruptTimeout });\n return;\n case 'dispatch-end':\n await this.runWithBreakMiddleware({ saga, args, timeout: interruptTimeout });\n return;\n }\n }\n\n await this.sagaMiddleware.run(saga, ...args).toPromise();\n }\n\n private async runWithBreakTask<S extends Saga>(data: SagaTimeoutRunData<S>): Promise<void> {\n const result: Either<unknown, unknown> = await this.sagaMiddleware\n .run(runWithTimeLimit, data)\n .toPromise();\n\n if (!result.done) {\n this.handler.onTimeoutInterrupt({ timeout: data.timeout });\n }\n }\n\n private async runWithBreakMiddleware<S extends Saga>(data: SagaTimeoutRunData<S>): Promise<void> {\n const { saga, args, timeout } = data;\n const { api } = this;\n\n if (!api) {\n const error = new Error('Middleware is not applied to the store');\n\n this.handler.onConfigError(error);\n\n throw error;\n }\n\n const promises: Promise<void>[] = [];\n\n let ready = false;\n let timerId: ReturnType<typeof setTimeout>;\n\n promises.push(\n this.sagaMiddleware\n .run(saga, ...args)\n .toPromise()\n .then(() => {\n ready = true;\n })\n .finally(() => {\n // вне зависимости от результата отключаем таймер если он есть\n timerId !== undefined && clearTimeout(timerId);\n }),\n );\n\n promises.push(\n new Promise<void>(resolve => {\n timerId = setTimeout(() => {\n if (!ready) {\n this.handler.onTimeoutInterrupt({ timeout });\n api.dispatch(END);\n }\n\n resolve();\n }, timeout);\n }),\n );\n\n await Promise.race(promises);\n }\n}\n\nfunction* runWithTimeLimit<S extends Saga>(\n data: SagaTimeoutRunData<S>,\n): Generator<any, Either<SagaCancelSignal, ReturnType<S>>, any> {\n const { saga, args, timeout } = data;\n const task: Task = yield fork(saga, ...args);\n\n const [needCancel, taskResult]: [boolean, ReturnType<S>] = yield race([\n delay(timeout, true),\n call(() => task.toPromise()),\n ]);\n\n if (needCancel) {\n yield cancel(task);\n\n // ВАЖНО: если делать throw ... - ошибка попадет в onError (createSagaMiddleware)\n // чтобы не логировать лишний раз возвращаем значение\n return { done: false, error: new SagaCancelSignal() };\n } else {\n return { done: true, value: taskResult };\n }\n}\n\n// @todo в будущем можно заменить все ожидаемые исключения (только внутри фреймворка) на этот тип\ntype Either<E, V> = { done: false; error: E } | { done: true; value: V };\n\nclass SagaCancelSignal {\n name: string;\n\n constructor() {\n this.name = 'SagaCancelSignal';\n }\n}\n\nexport { createSagaExtendedMiddleware as createSagaMiddleware };\n"],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.createSafeStorage = createSafeStorage;
|
|
7
|
-
/* eslint-disable
|
|
7
|
+
/* eslint-disable jsdoc/require-jsdoc */
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Интерфейс объекта-обертки для безопасной работы с WebStorage.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["createSafeStorage","getStorage","isAvailable","testKey","Date","now","setItem","removeItem","clear","getItem","name","key","index","value","getLength","length"],"sources":["../../../../../src/utils/web/storage/index.ts"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"index.js","names":["createSafeStorage","getStorage","isAvailable","testKey","Date","now","setItem","removeItem","clear","getItem","name","key","index","value","getLength","length"],"sources":["../../../../../src/utils/web/storage/index.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\n\n/**\n * Интерфейс объекта-обертки для безопасной работы с WebStorage.\n */\nexport interface SafeStorage extends Storage {\n isAvailable: () => boolean;\n}\n\n/**\n * Возвращает объект для безопасной работы с браузерным хранилищем (LocalStorage, SessionStorage).\n * @param getStorage Функция, которая должна вернуть целевое хранилище.\n * @return Объект-обертка для безопасной работы с браузерным хранилищем.\n */\nexport function createSafeStorage(getStorage: () => Storage): SafeStorage {\n const isAvailable = (): boolean => {\n try {\n const testKey = `storage_test_key::${Date.now()}`;\n\n getStorage().setItem(testKey, testKey);\n getStorage().removeItem(testKey);\n\n return true;\n } catch {\n return false;\n }\n };\n\n const clear = (): void => {\n if (isAvailable()) {\n getStorage().clear();\n }\n };\n\n const getItem = (name: string): string | null => {\n if (isAvailable()) {\n return getStorage().getItem(name);\n }\n\n return null;\n };\n\n const key = (index: number): string | null => {\n if (isAvailable()) {\n return getStorage().key(index);\n }\n\n return null;\n };\n\n const removeItem = (name: string): void => {\n if (isAvailable()) {\n getStorage().removeItem(name);\n }\n };\n\n const setItem = (name: string, value: string): void => {\n if (isAvailable()) {\n getStorage().setItem(name, value);\n }\n };\n\n const getLength = (): number => {\n if (isAvailable()) {\n return getStorage().length;\n }\n\n return 0;\n };\n\n return {\n isAvailable,\n\n clear,\n getItem,\n key,\n removeItem,\n setItem,\n get length() {\n return getLength();\n },\n };\n}\n"],"mappings":";;;;;;AAAA;;AAEA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACO,SAASA,iBAAiBA,CAACC,UAAyB,EAAe;EACxE,MAAMC,WAAW,GAAGA,CAAA,KAAe;IACjC,IAAI;MACF,MAAMC,OAAO,GAAI,qBAAoBC,IAAI,CAACC,GAAG,CAAC,CAAE,EAAC;MAEjDJ,UAAU,CAAC,CAAC,CAACK,OAAO,CAACH,OAAO,EAAEA,OAAO,CAAC;MACtCF,UAAU,CAAC,CAAC,CAACM,UAAU,CAACJ,OAAO,CAAC;MAEhC,OAAO,IAAI;IACb,CAAC,CAAC,MAAM;MACN,OAAO,KAAK;IACd;EACF,CAAC;EAED,MAAMK,KAAK,GAAGA,CAAA,KAAY;IACxB,IAAIN,WAAW,CAAC,CAAC,EAAE;MACjBD,UAAU,CAAC,CAAC,CAACO,KAAK,CAAC,CAAC;IACtB;EACF,CAAC;EAED,MAAMC,OAAO,GAAIC,IAAY,IAAoB;IAC/C,IAAIR,WAAW,CAAC,CAAC,EAAE;MACjB,OAAOD,UAAU,CAAC,CAAC,CAACQ,OAAO,CAACC,IAAI,CAAC;IACnC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,MAAMC,GAAG,GAAIC,KAAa,IAAoB;IAC5C,IAAIV,WAAW,CAAC,CAAC,EAAE;MACjB,OAAOD,UAAU,CAAC,CAAC,CAACU,GAAG,CAACC,KAAK,CAAC;IAChC;IAEA,OAAO,IAAI;EACb,CAAC;EAED,MAAML,UAAU,GAAIG,IAAY,IAAW;IACzC,IAAIR,WAAW,CAAC,CAAC,EAAE;MACjBD,UAAU,CAAC,CAAC,CAACM,UAAU,CAACG,IAAI,CAAC;IAC/B;EACF,CAAC;EAED,MAAMJ,OAAO,GAAGA,CAACI,IAAY,EAAEG,KAAa,KAAW;IACrD,IAAIX,WAAW,CAAC,CAAC,EAAE;MACjBD,UAAU,CAAC,CAAC,CAACK,OAAO,CAACI,IAAI,EAAEG,KAAK,CAAC;IACnC;EACF,CAAC;EAED,MAAMC,SAAS,GAAGA,CAAA,KAAc;IAC9B,IAAIZ,WAAW,CAAC,CAAC,EAAE;MACjB,OAAOD,UAAU,CAAC,CAAC,CAACc,MAAM;IAC5B;IAEA,OAAO,CAAC;EACV,CAAC;EAED,OAAO;IACLb,WAAW;IAEXM,KAAK;IACLC,OAAO;IACPE,GAAG;IACHJ,UAAU;IACVD,OAAO;IACP,IAAIS,MAAMA,CAAA,EAAG;MACX,OAAOD,SAAS,CAAC,CAAC;IACpB;EACF,CAAC;AACH"}
|
|
@@ -3,6 +3,12 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
Object.defineProperty(exports, "DEFAULT_SHARED", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _moduleFederation.DEFAULT_SHARED;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
6
12
|
Object.defineProperty(exports, "EnvPlugin", {
|
|
7
13
|
enumerable: true,
|
|
8
14
|
get: function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_env","require","_moduleFederation"],"sources":["../../../../src/utils/webpack/index.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["_env","require","_moduleFederation"],"sources":["../../../../src/utils/webpack/index.ts"],"sourcesContent":["export type { EnvPluginOptions } from './env/types';\nexport type { ModuleFederationPluginOptions } from './module-federation/types';\nexport { EnvPlugin } from './env';\nexport { ModuleFederationPlugin, DEFAULT_SHARED } from './module-federation';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAAA,IAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAD,OAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"application.js","names":["AlreadyBoundError","CircularDependencyError","NothingBoundError","createToken","CURRENT_APP","ApplicationImplementation","constructor","providers","Map","components","presets","initialized","toString","bind","token","has","_key","toValue","value","set","toProvider","provider","get","resolve","chain","preset","apply","nextChain","includes","component","otherToken","parent","attach","Error","push","invoke","tokens","fn","map","createApplication"],"sources":["../../../src/di/application.ts"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"application.js","names":["AlreadyBoundError","CircularDependencyError","NothingBoundError","createToken","CURRENT_APP","ApplicationImplementation","constructor","providers","Map","components","presets","initialized","toString","bind","token","has","_key","toValue","value","set","toProvider","provider","get","resolve","chain","preset","apply","nextChain","includes","component","otherToken","parent","attach","Error","push","invoke","tokens","fn","map","createApplication"],"sources":["../../../src/di/application.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport type { Application, Provider, Token, Binding, ExtractType, Preset } from './types';\nimport { AlreadyBoundError, CircularDependencyError, NothingBoundError } from './errors';\nimport { createToken } from './token';\n\n/**\n * Токен, с помощью которого можно достать из приложения само приложение.\n */\nexport const CURRENT_APP = createToken<Application>('application/self');\n\n/**\n * Реализация Application.\n */\nclass ApplicationImplementation implements Application {\n /** Родительское приложение. */\n private parent?: ApplicationImplementation;\n\n /** Зарегистрированные пресеты. */\n private presets: Preset[];\n\n /** Зарегистрированные провайдеры. */\n private providers: Map<symbol, Provider<unknown>>;\n\n /** Инициализированные компоненты (синглтоны). */\n private components: Map<symbol, unknown>;\n\n /** Инициализировано ли приложение. */\n private initialized: boolean;\n\n constructor() {\n this.providers = new Map();\n this.components = new Map();\n this.presets = [];\n this.initialized = false;\n }\n\n toString() {\n return 'Application';\n }\n\n bind<T>(token: Token<T>): Binding<T> {\n if (this.providers.has(token._key)) {\n throw new AlreadyBoundError(token, this.toString());\n }\n\n return {\n toValue: value => {\n this.providers.set(token._key, () => value);\n },\n toProvider: provider => {\n this.providers.set(token._key, provider);\n },\n };\n }\n\n get<T>(token: Token<T>): T {\n return this.resolve(token, []);\n }\n\n protected resolve<T>(token: Token<T>, chain: Token<any>[]): T {\n if (!this.initialized) {\n this.bind(CURRENT_APP).toValue(this);\n\n for (const preset of this.presets) {\n preset.apply(this);\n }\n\n this.initialized = true;\n }\n\n const nextChain = () => [...chain, token];\n\n if (chain.includes(token)) {\n throw new CircularDependencyError(nextChain(), this.toString());\n }\n\n if (this.components.has(token._key)) {\n return this.components.get(token._key) as T;\n }\n\n if (this.providers.has(token._key)) {\n const provider = this.providers.get(token._key) as Provider<T>;\n\n const component = provider(otherToken => this.resolve(otherToken, nextChain()));\n\n // ВАЖНО: всегда как singleton\n this.components.set(token._key, component);\n\n return component as T;\n }\n\n if (this.parent) {\n // ВАЖНО: передаём именно chain а не nextChain()\n return this.parent.resolve(token, chain);\n }\n\n throw new NothingBoundError(token, this.toString());\n }\n\n attach(parent: ApplicationImplementation): void {\n if (this.parent) {\n throw new Error('Cannot reattach application');\n }\n\n this.parent = parent;\n }\n\n preset(preset: Preset): void {\n this.presets.push(preset);\n }\n\n invoke<Tokens extends readonly Token<any>[]>(\n tokens: [...Tokens],\n fn: (...args: ExtractType<Tokens>) => void,\n ): void {\n fn(...(tokens.map(token => this.get(token)) as any));\n }\n}\n\n/**\n * Возвращает новое DI-приложение.\n * @return DI-приложение.\n */\nexport function createApplication(): Application {\n return new ApplicationImplementation();\n}\n"],"mappings":"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"}
|
package/dist/esm/di/container.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.js","names":["AlreadyBoundError","CircularDependencyError","NothingBoundError","ContainerImplementation","constructor","cache","Map","registry","set","token","provider","has","_key","get","resolve","chain","includes","push","Error","value","otherToken","createContainer"],"sources":["../../../src/di/container.ts"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"container.js","names":["AlreadyBoundError","CircularDependencyError","NothingBoundError","ContainerImplementation","constructor","cache","Map","registry","set","token","provider","has","_key","get","resolve","chain","includes","push","Error","value","otherToken","createContainer"],"sources":["../../../src/di/container.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport type { Container, Provider, Token } from './types';\nimport { AlreadyBoundError, CircularDependencyError, NothingBoundError } from './errors';\n\nclass ContainerImplementation implements Container {\n cache: Map<symbol, any>;\n registry: Map<symbol, Provider<any>>;\n\n constructor() {\n this.cache = new Map<symbol, any>();\n this.registry = new Map<symbol, Provider<any>>();\n }\n\n set<T>(token: Token<T>, provider: Provider<T>): void {\n if (this.registry.has(token._key)) {\n throw new AlreadyBoundError(token);\n }\n\n this.registry.set(token._key, provider);\n }\n\n get<T>(token: Token<T>): T {\n return this.resolve(token, []);\n }\n\n private resolve<T>(token: Token<T>, chain: Token<any>[]): T {\n if (chain.includes(token)) {\n throw new CircularDependencyError([...chain, token]);\n } else {\n chain.push(token);\n }\n\n if (this.cache.has(token._key)) {\n return this.cache.get(token._key);\n } else if (this.registry.has(token._key)) {\n const provider = this.registry.get(token._key);\n\n if (typeof provider !== 'function') {\n throw new Error('Provider is not a function');\n }\n\n const value = provider(otherToken => this.resolve(otherToken, chain));\n\n // всегда как singleton\n this.cache.set(token._key, value);\n\n return value;\n } else {\n throw new NothingBoundError(token);\n }\n }\n}\n\n/**\n * Возвращает новый DI-контейнер.\n * @return DI-контейнер.\n */\nexport function createContainer(): Container {\n return new ContainerImplementation();\n}\n"],"mappings":"AAAA;;AAEA,SAASA,iBAAiB,EAAEC,uBAAuB,EAAEC,iBAAiB,QAAQ,aAAU;AAExF,MAAMC,uBAAuB,CAAsB;EAIjDC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,KAAK,GAAG,IAAIC,GAAG,CAAc,CAAC;IACnC,IAAI,CAACC,QAAQ,GAAG,IAAID,GAAG,CAAwB,CAAC;EAClD;EAEAE,GAAGA,CAAIC,KAAe,EAAEC,QAAqB,EAAQ;IACnD,IAAI,IAAI,CAACH,QAAQ,CAACI,GAAG,CAACF,KAAK,CAACG,IAAI,CAAC,EAAE;MACjC,MAAM,IAAIZ,iBAAiB,CAACS,KAAK,CAAC;IACpC;IAEA,IAAI,CAACF,QAAQ,CAACC,GAAG,CAACC,KAAK,CAACG,IAAI,EAAEF,QAAQ,CAAC;EACzC;EAEAG,GAAGA,CAAIJ,KAAe,EAAK;IACzB,OAAO,IAAI,CAACK,OAAO,CAACL,KAAK,EAAE,EAAE,CAAC;EAChC;EAEQK,OAAOA,CAAIL,KAAe,EAAEM,KAAmB,EAAK;IAC1D,IAAIA,KAAK,CAACC,QAAQ,CAACP,KAAK,CAAC,EAAE;MACzB,MAAM,IAAIR,uBAAuB,CAAC,CAAC,GAAGc,KAAK,EAAEN,KAAK,CAAC,CAAC;IACtD,CAAC,MAAM;MACLM,KAAK,CAACE,IAAI,CAACR,KAAK,CAAC;IACnB;IAEA,IAAI,IAAI,CAACJ,KAAK,CAACM,GAAG,CAACF,KAAK,CAACG,IAAI,CAAC,EAAE;MAC9B,OAAO,IAAI,CAACP,KAAK,CAACQ,GAAG,CAACJ,KAAK,CAACG,IAAI,CAAC;IACnC,CAAC,MAAM,IAAI,IAAI,CAACL,QAAQ,CAACI,GAAG,CAACF,KAAK,CAACG,IAAI,CAAC,EAAE;MACxC,MAAMF,QAAQ,GAAG,IAAI,CAACH,QAAQ,CAACM,GAAG,CAACJ,KAAK,CAACG,IAAI,CAAC;MAE9C,IAAI,OAAOF,QAAQ,KAAK,UAAU,EAAE;QAClC,MAAM,IAAIQ,KAAK,CAAC,4BAA4B,CAAC;MAC/C;MAEA,MAAMC,KAAK,GAAGT,QAAQ,CAACU,UAAU,IAAI,IAAI,CAACN,OAAO,CAACM,UAAU,EAAEL,KAAK,CAAC,CAAC;;MAErE;MACA,IAAI,CAACV,KAAK,CAACG,GAAG,CAACC,KAAK,CAACG,IAAI,EAAEO,KAAK,CAAC;MAEjC,OAAOA,KAAK;IACd,CAAC,MAAM;MACL,MAAM,IAAIjB,iBAAiB,CAACO,KAAK,CAAC;IACpC;EACF;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASY,eAAeA,CAAA,EAAc;EAC3C,OAAO,IAAIlB,uBAAuB,CAAC,CAAC;AACtC"}
|
package/dist/esm/di/preset.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preset.js","names":["PresetImplementation","constructor","defaults","registry","Map","set","token","provider","apply","app","bind","toProvider","createPreset"],"sources":["../../../src/di/preset.ts"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"preset.js","names":["PresetImplementation","constructor","defaults","registry","Map","set","token","provider","apply","app","bind","toProvider","createPreset"],"sources":["../../../src/di/preset.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport type { Application, Provider, Token, Preset } from './types';\n\ntype PresetEntry<T = any> = [Token<T>, Provider<T>];\n\nclass PresetImplementation implements Preset {\n private registry: Map<Token<any>, Provider<any>>;\n\n constructor(defaults?: Iterable<PresetEntry>) {\n this.registry = new Map<Token<any>, Provider<any>>(defaults);\n }\n\n set<T>(token: Token<T>, provider: Provider<T>): this {\n this.registry.set(token, provider);\n return this;\n }\n\n apply(app: Application): void {\n for (const [token, provider] of this.registry) {\n app.bind(token).toProvider(provider);\n }\n }\n}\n\n/**\n * Возвращает новый \"preset\" для DI-приложения - набор предустановленных компонентов которые можно переопределять.\n * @param defaults Предустановленные зависимости.\n * @return Preset.\n */\nexport function createPreset(defaults?: PresetEntry[]): Preset {\n return new PresetImplementation(defaults);\n}\n"],"mappings":"AAAA;;AAKA,MAAMA,oBAAoB,CAAmB;EAG3CC,WAAWA,CAACC,QAAgC,EAAE;IAC5C,IAAI,CAACC,QAAQ,GAAG,IAAIC,GAAG,CAA4BF,QAAQ,CAAC;EAC9D;EAEAG,GAAGA,CAAIC,KAAe,EAAEC,QAAqB,EAAQ;IACnD,IAAI,CAACJ,QAAQ,CAACE,GAAG,CAACC,KAAK,EAAEC,QAAQ,CAAC;IAClC,OAAO,IAAI;EACb;EAEAC,KAAKA,CAACC,GAAgB,EAAQ;IAC5B,KAAK,MAAM,CAACH,KAAK,EAAEC,QAAQ,CAAC,IAAI,IAAI,CAACJ,QAAQ,EAAE;MAC7CM,GAAG,CAACC,IAAI,CAACJ,KAAK,CAAC,CAACK,UAAU,CAACJ,QAAQ,CAAC;IACtC;EACF;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASK,YAAYA,CAACV,QAAwB,EAAU;EAC7D,OAAO,IAAIF,oBAAoB,CAACE,QAAQ,CAAC;AAC3C"}
|
package/dist/esm/log/logger.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","names":["createLogger","handlers","createMethod","type","data","event","handler","log","info","warn","error","debug","subscribe","push"],"sources":["../../../src/log/logger.ts"],"sourcesContent":["import type { Logger, LogEvent, LogLevel, LogHandler } from './types';\n\n/**\n * Возвращает новый logger - объект для журналирования событий подобно console.\n * @return Logger.\n */\nexport function createLogger(): Logger {\n const handlers: LogHandler[] = [];\n\n // eslint-disable-next-line
|
|
1
|
+
{"version":3,"file":"logger.js","names":["createLogger","handlers","createMethod","type","data","event","handler","log","info","warn","error","debug","subscribe","push"],"sources":["../../../src/log/logger.ts"],"sourcesContent":["import type { Logger, LogEvent, LogLevel, LogHandler } from './types';\n\n/**\n * Возвращает новый logger - объект для журналирования событий подобно console.\n * @return Logger.\n */\nexport function createLogger(): Logger {\n const handlers: LogHandler[] = [];\n\n // eslint-disable-next-line jsdoc/require-jsdoc\n const createMethod = (type: LogLevel) => (data: any) => {\n const event: LogEvent = { type, data };\n\n for (const handler of handlers) {\n handler(event);\n }\n };\n\n return {\n log: createMethod('log'),\n info: createMethod('info'),\n warn: createMethod('warn'),\n error: createMethod('error'),\n debug: createMethod('debug'),\n\n subscribe: handler => {\n handlers.push(handler);\n },\n };\n}\n"],"mappings":"AAEA;AACA;AACA;AACA;AACA,OAAO,SAASA,YAAYA,CAAA,EAAW;EACrC,MAAMC,QAAsB,GAAG,EAAE;;EAEjC;EACA,MAAMC,YAAY,GAAIC,IAAc,IAAMC,IAAS,IAAK;IACtD,MAAMC,KAAe,GAAG;MAAEF,IAAI;MAAEC;IAAK,CAAC;IAEtC,KAAK,MAAME,OAAO,IAAIL,QAAQ,EAAE;MAC9BK,OAAO,CAACD,KAAK,CAAC;IAChB;EACF,CAAC;EAED,OAAO;IACLE,GAAG,EAAEL,YAAY,CAAC,KAAK,CAAC;IACxBM,IAAI,EAAEN,YAAY,CAAC,MAAM,CAAC;IAC1BO,IAAI,EAAEP,YAAY,CAAC,MAAM,CAAC;IAC1BQ,KAAK,EAAER,YAAY,CAAC,OAAO,CAAC;IAC5BS,KAAK,EAAET,YAAY,CAAC,OAAO,CAAC;IAE5BU,SAAS,EAAEN,OAAO,IAAI;MACpBL,QAAQ,CAACY,IAAI,CAACP,OAAO,CAAC;IACxB;EACF,CAAC;AACH"}
|
package/dist/esm/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@sima-land/isomorph",
|
|
4
|
-
"version": "11.0.0-alpha.
|
|
4
|
+
"version": "11.0.0-alpha.52",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"@humanwhocodes/env": "^3.0.5",
|
|
7
7
|
"@krutoo/fetch-tools": "^0.0.16",
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
"@sentry/node": "^8.13.0",
|
|
20
20
|
"accepts": "^1.3.8",
|
|
21
21
|
"dotenv": "^16.3.1",
|
|
22
|
-
"express": "^4.
|
|
22
|
+
"express": "^4.21.0",
|
|
23
23
|
"http-proxy-middleware": "^3.0.0",
|
|
24
24
|
"jsesc": "^3.0.2",
|
|
25
|
-
"middleware-axios": "^
|
|
25
|
+
"middleware-axios": "^3.0.0",
|
|
26
26
|
"pino": "^8.14.1",
|
|
27
27
|
"pino-pretty": "^9.1.1",
|
|
28
28
|
"prom-client": "^14.2.0",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-source.js","names":["createConfigSource","provideConfigSource","Bun","env"],"sources":["../../../../../src/preset/bun/providers/config-source.ts"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"config-source.js","names":["createConfigSource","provideConfigSource","Bun","env"],"sources":["../../../../../src/preset/bun/providers/config-source.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { ConfigSource, createConfigSource } from '../../../config';\n\nexport function provideConfigSource(): ConfigSource {\n return createConfigSource(Bun.env);\n}\n"],"mappings":"AAAA;AACA,SAAuBA,kBAAkB,QAAQ,4BAAiB;AAElE,OAAO,SAASC,mBAAmBA,CAAA,EAAiB;EAClD,OAAOD,kBAAkB,CAACE,GAAG,CAACC,GAAG,CAAC;AACpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-handler-sentry.js","names":["KnownToken","getCurrentScope","getDefaultIntegrations","init","createSentryHandler","provideLogHandlerSentry","resolve","source","Config","dsn","require","release","environment","tracesSampleRate","Number","get","integrations"],"sources":["../../../../../src/preset/bun/providers/log-handler-sentry.ts"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"log-handler-sentry.js","names":["KnownToken","getCurrentScope","getDefaultIntegrations","init","createSentryHandler","provideLogHandlerSentry","resolve","source","Config","dsn","require","release","environment","tracesSampleRate","Number","get","integrations"],"sources":["../../../../../src/preset/bun/providers/log-handler-sentry.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport { getCurrentScope, getDefaultIntegrations, init } from '@sentry/bun';\nimport { createSentryHandler } from '../../../log/handler/sentry';\n\nexport function provideLogHandlerSentry(resolve: Resolve) {\n const source = resolve(KnownToken.Config.source);\n\n init({\n dsn: source.require('SENTRY_DSN'),\n release: source.require('SENTRY_RELEASE'),\n environment: source.require('SENTRY_ENVIRONMENT'),\n tracesSampleRate: Number(source.get('SENTRY_TRACES_SAMPLE_RATE', 0)),\n integrations: [...getDefaultIntegrations({})],\n });\n\n // ВАЖНО: передаем функцию чтобы брать текущий hub в момент вызова метода logger'а\n // это нужно чтобы хлебные крошки в ошибках Sentry группировались по запросам\n return createSentryHandler(getCurrentScope);\n}\n"],"mappings":"AAAA;;AAEA,SAASA,UAAU,QAAQ,oBAAiB;AAC5C,SAASC,eAAe,EAAEC,sBAAsB,EAAEC,IAAI,QAAQ,aAAa;AAC3E,SAASC,mBAAmB,QAAQ,gCAA6B;AAEjE,OAAO,SAASC,uBAAuBA,CAACC,OAAgB,EAAE;EACxD,MAAMC,MAAM,GAAGD,OAAO,CAACN,UAAU,CAACQ,MAAM,CAACD,MAAM,CAAC;EAEhDJ,IAAI,CAAC;IACHM,GAAG,EAAEF,MAAM,CAACG,OAAO,CAAC,YAAY,CAAC;IACjCC,OAAO,EAAEJ,MAAM,CAACG,OAAO,CAAC,gBAAgB,CAAC;IACzCE,WAAW,EAAEL,MAAM,CAACG,OAAO,CAAC,oBAAoB,CAAC;IACjDG,gBAAgB,EAAEC,MAAM,CAACP,MAAM,CAACQ,GAAG,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;IACpEC,YAAY,EAAE,CAAC,GAAGd,sBAAsB,CAAC,CAAC,CAAC,CAAC;EAC9C,CAAC,CAAC;;EAEF;EACA;EACA,OAAOE,mBAAmB,CAACH,eAAe,CAAC;AAC7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","names":["createLogger","provideLogHandlerPino","provideLogHandlerSentry","provideLogger","resolve","logger","subscribe"],"sources":["../../../../../src/preset/bun/providers/logger.ts"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"logger.js","names":["createLogger","provideLogHandlerPino","provideLogHandlerSentry","provideLogger","resolve","logger","subscribe"],"sources":["../../../../../src/preset/bun/providers/logger.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { Resolve } from '../../../di';\nimport { Logger, createLogger } from '../../../log';\nimport { provideLogHandlerPino } from '../../node/providers/log-handler-pino';\nimport { provideLogHandlerSentry } from './log-handler-sentry';\n\nexport function provideLogger(resolve: Resolve): Logger {\n const logger = createLogger();\n\n logger.subscribe(provideLogHandlerPino(resolve));\n logger.subscribe(provideLogHandlerSentry(resolve));\n\n return logger;\n}\n"],"mappings":"AAAA;;AAEA,SAAiBA,YAAY,QAAQ,yBAAc;AACnD,SAASC,qBAAqB,QAAQ,0CAAuC;AAC7E,SAASC,uBAAuB,QAAQ,yBAAsB;AAE9D,OAAO,SAASC,aAAaA,CAACC,OAAgB,EAAU;EACtD,MAAMC,MAAM,GAAGL,YAAY,CAAC,CAAC;EAE7BK,MAAM,CAACC,SAAS,CAACL,qBAAqB,CAACG,OAAO,CAAC,CAAC;EAChDC,MAAM,CAACC,SAAS,CAACJ,uBAAuB,CAACE,OAAO,CAAC,CAAC;EAElD,OAAOC,MAAM;AACf"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve-metrics.js","names":["route","router","PromClient","provideServeMetrics","get","metrics","register","headers","Headers","set","contentType","Response"],"sources":["../../../../../src/preset/bun/providers/serve-metrics.ts"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"serve-metrics.js","names":["route","router","PromClient","provideServeMetrics","get","metrics","register","headers","Headers","set","contentType","Response"],"sources":["../../../../../src/preset/bun/providers/serve-metrics.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { Handler } from '../../../http';\nimport { route, router } from '@krutoo/fetch-tools';\nimport PromClient from 'prom-client';\n\nexport function provideServeMetrics(): Handler {\n // @todo задействовать когда Bun реализует pref_hooks.monitorEventLoopDelay (https://github.com/siimon/prom-client/issues/570)\n // PromClient.collectDefaultMetrics();\n\n return router(\n route.get('/', async () => {\n const metrics = await PromClient.register.metrics();\n const headers = new Headers();\n\n headers.set('Content-Type', PromClient.register.contentType);\n\n return new Response(metrics, { headers });\n }),\n );\n}\n"],"mappings":"AAAA;;AAEA,SAASA,KAAK,EAAEC,MAAM,QAAQ,qBAAqB;AACnD,OAAOC,UAAU,MAAM,aAAa;AAEpC,OAAO,SAASC,mBAAmBA,CAAA,EAAY;EAC7C;EACA;;EAEA,OAAOF,MAAM,CACXD,KAAK,CAACI,GAAG,CAAC,GAAG,EAAE,YAAY;IACzB,MAAMC,OAAO,GAAG,MAAMH,UAAU,CAACI,QAAQ,CAACD,OAAO,CAAC,CAAC;IACnD,MAAME,OAAO,GAAG,IAAIC,OAAO,CAAC,CAAC;IAE7BD,OAAO,CAACE,GAAG,CAAC,cAAc,EAAEP,UAAU,CAACI,QAAQ,CAACI,WAAW,CAAC;IAE5D,OAAO,IAAIC,QAAQ,CAACN,OAAO,EAAE;MAAEE;IAAQ,CAAC,CAAC;EAC3C,CAAC,CACH,CAAC;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve-middleware.js","names":["KnownToken","withIsolationScope","getServeLogging","getServeErrorLogging","getServeMeasuring","provideServeMiddleware","resolve","config","Config","base","logger","request","next"],"sources":["../../../../../src/preset/bun/providers/serve-middleware.ts"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"serve-middleware.js","names":["KnownToken","withIsolationScope","getServeLogging","getServeErrorLogging","getServeMeasuring","provideServeMiddleware","resolve","config","Config","base","logger","request","next"],"sources":["../../../../../src/preset/bun/providers/serve-middleware.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport { withIsolationScope } from '@sentry/bun';\nimport { ServerMiddleware } from '../../server/types';\nimport { getServeLogging } from '../../server/utils/get-serve-logging';\nimport { getServeErrorLogging } from '../../server/utils/get-serve-error-logging';\nimport { getServeMeasuring } from '../../node/utils/get-serve-measuring';\n\nexport function provideServeMiddleware(resolve: Resolve): ServerMiddleware[] {\n const config = resolve(KnownToken.Config.base);\n const logger = resolve(KnownToken.logger);\n\n return [\n // ВАЖНО: изолируем хлебные крошки чтобы они группировались по входящим запросам\n (request, next) => withIsolationScope(async () => next(request)),\n\n // ВАЖНО: слой логирования ошибки ПЕРЕД остальными слоями чтобы не упустить ошибки выше\n getServeErrorLogging(logger),\n\n // @todo tracing\n\n // метрики\n getServeMeasuring(config),\n\n // ВАЖНО: слой логирования запроса и ответа ПОСЛЕ остальных слоев чтобы использовать актуальные данные\n getServeLogging(logger),\n ];\n}\n"],"mappings":"AAAA;;AAEA,SAASA,UAAU,QAAQ,oBAAiB;AAC5C,SAASC,kBAAkB,QAAQ,aAAa;AAEhD,SAASC,eAAe,QAAQ,yCAAsC;AACtE,SAASC,oBAAoB,QAAQ,+CAA4C;AACjF,SAASC,iBAAiB,QAAQ,yCAAsC;AAExE,OAAO,SAASC,sBAAsBA,CAACC,OAAgB,EAAsB;EAC3E,MAAMC,MAAM,GAAGD,OAAO,CAACN,UAAU,CAACQ,MAAM,CAACC,IAAI,CAAC;EAC9C,MAAMC,MAAM,GAAGJ,OAAO,CAACN,UAAU,CAACU,MAAM,CAAC;EAEzC,OAAO;EACL;EACA,CAACC,OAAO,EAAEC,IAAI,KAAKX,kBAAkB,CAAC,YAAYW,IAAI,CAACD,OAAO,CAAC,CAAC;EAEhE;EACAR,oBAAoB,CAACO,MAAM,CAAC;EAE5B;;EAEA;EACAN,iBAAiB,CAACG,MAAM,CAAC;EAEzB;EACAL,eAAe,CAACQ,MAAM,CAAC,CACxB;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-routes.js","names":["getStatsHandler","getHealthCheck","provideServiceRoutes"],"sources":["../../../../../src/preset/bun/providers/service-routes.ts"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"service-routes.js","names":["getStatsHandler","getHealthCheck","provideServiceRoutes"],"sources":["../../../../../src/preset/bun/providers/service-routes.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { ServerHandler } from '../../server/types';\nimport { getStatsHandler } from '../utils/get-stats-handler';\nimport { getHealthCheck } from '../../server/utils/get-health-check';\n\nexport function provideServiceRoutes(): Array<[string, ServerHandler]> {\n return [\n // служебные маршруты (без промежуточных слоев)\n ['/healthcheck', getHealthCheck()],\n ['/stats', getStatsHandler()],\n ];\n}\n"],"mappings":"AAAA;;AAEA,SAASA,eAAe,QAAQ,+BAA4B;AAC5D,SAASC,cAAc,QAAQ,wCAAqC;AAEpE,OAAO,SAASC,oBAAoBA,CAAA,EAAmC;EACrE,OAAO;EACL;EACA,CAAC,cAAc,EAAED,cAAc,CAAC,CAAC,CAAC,EAClC,CAAC,QAAQ,EAAED,eAAe,CAAC,CAAC,CAAC,CAC9B;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["createPreset","KnownToken","provideAbortController","provideFetch","provideReduxMiddlewareSaga","providePageRender","provideFetchLogHandler","provideFetchMiddleware","provideHandlerMain","providePageHelmet","provideSpecificParams","SpecificExtras","provideElementToString","provideFormatPageResponse","provideAcceptType","provideResponseEvents","PresetBunHandler","customize","preset","set","Http","fetch","Fetch","abortController","middleware","Middleware","Log","handler","Handler","main","Request","acceptType","specificParams","Response","events","specificExtras","Page","assets","js","css","helmet","render","elementToString","formatResponse","Redux","saga","override","bind"],"sources":["../../../../src/preset/bun-handler/index.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["createPreset","KnownToken","provideAbortController","provideFetch","provideReduxMiddlewareSaga","providePageRender","provideFetchLogHandler","provideFetchMiddleware","provideHandlerMain","providePageHelmet","provideSpecificParams","SpecificExtras","provideElementToString","provideFormatPageResponse","provideAcceptType","provideResponseEvents","PresetBunHandler","customize","preset","set","Http","fetch","Fetch","abortController","middleware","Middleware","Log","handler","Handler","main","Request","acceptType","specificParams","Response","events","specificExtras","Page","assets","js","css","helmet","render","elementToString","formatResponse","Redux","saga","override","bind"],"sources":["../../../../src/preset/bun-handler/index.ts"],"sourcesContent":["import { createPreset } from '../../di';\nimport { KnownToken } from '../../tokens';\nimport { PresetTuner } from '../isomorphic';\nimport { provideAbortController } from '../isomorphic/providers/abort-controller';\nimport { provideFetch } from '../isomorphic/providers/fetch';\nimport { provideReduxMiddlewareSaga } from '../isomorphic/providers/redux-middleware-saga';\nimport { providePageRender } from '../server/providers/page-render';\nimport { provideFetchLogHandler } from '../server/providers/fetch-log-handler';\nimport { provideFetchMiddleware } from './providers/fetch-middleware';\nimport { provideHandlerMain } from './providers/handler-main';\nimport { providePageHelmet } from '../server/providers/page-helmet';\nimport { provideSpecificParams } from './providers/specific-params';\nimport { SpecificExtras } from '../server/utils/specific-extras';\nimport { provideElementToString } from '../server/providers/element-to-string';\nimport { provideFormatPageResponse } from '../server/providers/format-page-response';\nimport { provideAcceptType } from './providers/accept-type';\nimport { provideResponseEvents } from '../server/providers/response-events';\n\n/**\n * Возвращает preset с зависимостями для формирования обработчика входящего http-запроса.\n * @param customize Получит функцию с помощью которой можно переопределить предустановленные провайдеры.\n * @todo Возможно стоит переименовать в PresetPageHandler.\n * @return Preset.\n */\nexport function PresetBunHandler(customize?: PresetTuner) {\n const preset = createPreset();\n\n // http fetch\n preset.set(KnownToken.Http.fetch, provideFetch);\n preset.set(KnownToken.Http.Fetch.abortController, provideAbortController);\n preset.set(KnownToken.Http.Fetch.middleware, provideFetchMiddleware);\n preset.set(KnownToken.Http.Fetch.Middleware.Log.handler, provideFetchLogHandler);\n\n // handler\n preset.set(KnownToken.Http.Handler.main, provideHandlerMain);\n preset.set(KnownToken.Http.Handler.Request.acceptType, provideAcceptType);\n preset.set(KnownToken.Http.Handler.Request.specificParams, provideSpecificParams);\n preset.set(KnownToken.Http.Handler.Response.events, provideResponseEvents);\n preset.set(KnownToken.Http.Handler.Response.specificExtras, () => new SpecificExtras());\n preset.set(KnownToken.Http.Handler.Page.assets, () => ({ js: '', css: '' }));\n preset.set(KnownToken.Http.Handler.Page.helmet, providePageHelmet);\n preset.set(KnownToken.Http.Handler.Page.render, providePageRender);\n preset.set(KnownToken.Http.Handler.Page.elementToString, provideElementToString);\n preset.set(KnownToken.Http.Handler.Page.formatResponse, provideFormatPageResponse);\n\n // redux saga\n preset.set(KnownToken.Redux.Middleware.saga, provideReduxMiddlewareSaga);\n\n if (customize) {\n customize({ override: preset.set.bind(preset) });\n }\n\n return preset;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-middleware.js","names":["KnownToken","defaultHeaders","getFetchErrorLogging","getFetchExtraAborting","getFetchLogging","getForwardedHeaders","provideFetchMiddleware","resolve","config","Config","base","context","Http","Handler","logHandler","Fetch","Middleware","Log","handler","abortController","request"],"sources":["../../../../../src/preset/bun-handler/providers/fetch-middleware.ts"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"fetch-middleware.js","names":["KnownToken","defaultHeaders","getFetchErrorLogging","getFetchExtraAborting","getFetchLogging","getForwardedHeaders","provideFetchMiddleware","resolve","config","Config","base","context","Http","Handler","logHandler","Fetch","Middleware","Log","handler","abortController","request"],"sources":["../../../../../src/preset/bun-handler/providers/fetch-middleware.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport { Middleware, defaultHeaders } from '../../../http';\nimport { getFetchErrorLogging } from '../../isomorphic/utils/get-fetch-error-logging';\nimport { getFetchExtraAborting } from '../../isomorphic/utils/get-fetch-extra-aborting';\nimport { getFetchLogging } from '../../isomorphic/utils/get-fetch-logging';\nimport { getForwardedHeaders } from '../../server/utils/get-forwarded-headers';\n\nexport function provideFetchMiddleware(resolve: Resolve): Middleware[] {\n const config = resolve(KnownToken.Config.base);\n const context = resolve(KnownToken.Http.Handler.context);\n const logHandler = resolve(KnownToken.Http.Fetch.Middleware.Log.handler);\n const abortController = resolve(KnownToken.Http.Fetch.abortController);\n\n return [\n // ВАЖНО: слой логирования ошибки ПЕРЕД остальными слоями чтобы не упустить ошибки выше\n getFetchErrorLogging(logHandler),\n\n // обрывание по сигналу из обработчика входящего запроса и по сигналу из конфига исходящего запроса\n getFetchExtraAborting(abortController),\n\n defaultHeaders(getForwardedHeaders(config, context.request)),\n\n // @todo tracing\n\n // ВАЖНО: слой логирования запроса и ответа ПОСЛЕ остальных слоев чтобы использовать актуальные данные\n getFetchLogging(logHandler),\n ];\n}\n"],"mappings":"AAAA;;AAEA,SAASA,UAAU,QAAQ,oBAAiB;AAC5C,SAAqBC,cAAc,QAAQ,0BAAe;AAC1D,SAASC,oBAAoB,QAAQ,mDAAgD;AACrF,SAASC,qBAAqB,QAAQ,oDAAiD;AACvF,SAASC,eAAe,QAAQ,6CAA0C;AAC1E,SAASC,mBAAmB,QAAQ,6CAA0C;AAE9E,OAAO,SAASC,sBAAsBA,CAACC,OAAgB,EAAgB;EACrE,MAAMC,MAAM,GAAGD,OAAO,CAACP,UAAU,CAACS,MAAM,CAACC,IAAI,CAAC;EAC9C,MAAMC,OAAO,GAAGJ,OAAO,CAACP,UAAU,CAACY,IAAI,CAACC,OAAO,CAACF,OAAO,CAAC;EACxD,MAAMG,UAAU,GAAGP,OAAO,CAACP,UAAU,CAACY,IAAI,CAACG,KAAK,CAACC,UAAU,CAACC,GAAG,CAACC,OAAO,CAAC;EACxE,MAAMC,eAAe,GAAGZ,OAAO,CAACP,UAAU,CAACY,IAAI,CAACG,KAAK,CAACI,eAAe,CAAC;EAEtE,OAAO;EACL;EACAjB,oBAAoB,CAACY,UAAU,CAAC;EAEhC;EACAX,qBAAqB,CAACgB,eAAe,CAAC,EAEtClB,cAAc,CAACI,mBAAmB,CAACG,MAAM,EAAEG,OAAO,CAACS,OAAO,CAAC,CAAC;EAE5D;;EAEA;EACAhB,eAAe,CAACU,UAAU,CAAC,CAC5B;AACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler-main.js","names":["KnownToken","applyMiddleware","HelmetContext","formatHandlerError","provideHandlerMain","resolve","config","Config","base","logger","assetsInit","Http","Handler","Page","assets","render","Helmet","helmet","abortController","Fetch","formatResponse","getAssets","handler","jsx","React","createElement","Provider","value","title","appName","body","headers","Response","error","response","log","level","status","redirectLocation","Location","enhancer","request","next","abort"],"sources":["../../../../../src/preset/bun-handler/providers/handler-main.tsx"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"handler-main.js","names":["KnownToken","applyMiddleware","HelmetContext","formatHandlerError","provideHandlerMain","resolve","config","Config","base","logger","assetsInit","Http","Handler","Page","assets","render","Helmet","helmet","abortController","Fetch","formatResponse","getAssets","handler","jsx","React","createElement","Provider","value","title","appName","body","headers","Response","error","response","log","level","status","redirectLocation","Location","enhancer","request","next","abort"],"sources":["../../../../../src/preset/bun-handler/providers/handler-main.tsx"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport { applyMiddleware } from '../../../http';\nimport { HelmetContext } from '../../server/utils/regular-helmet';\nimport { formatHandlerError } from '../../server/utils/format-handler-error';\n\nexport function provideHandlerMain(resolve: Resolve) {\n const config = resolve(KnownToken.Config.base);\n const logger = resolve(KnownToken.logger);\n const assetsInit = resolve(KnownToken.Http.Handler.Page.assets);\n const render = resolve(KnownToken.Http.Handler.Page.render);\n const Helmet = resolve(KnownToken.Http.Handler.Page.helmet);\n const abortController = resolve(KnownToken.Http.Fetch.abortController);\n const formatResponse = resolve(KnownToken.Http.Handler.Page.formatResponse);\n\n const getAssets = typeof assetsInit === 'function' ? assetsInit : () => assetsInit;\n\n const handler = async (): Promise<Response> => {\n try {\n const assets = await getAssets();\n\n const jsx = (\n <HelmetContext.Provider value={{ title: config.appName, assets }}>\n <Helmet>{await render()}</Helmet>\n </HelmetContext.Provider>\n );\n\n const { body, headers } = await formatResponse(jsx, assets);\n\n return new Response(body, { headers });\n } catch (error) {\n const { response, log } = formatHandlerError(error);\n\n if (log.level && logger[log.level]) {\n logger[log.level](error);\n }\n\n if (response.status > 299 && response.status < 400 && response.redirectLocation) {\n return new Response(null, {\n status: response.status,\n headers: {\n Location: response.redirectLocation,\n },\n });\n } else {\n return new Response(response.body, {\n status: response.status,\n });\n }\n }\n };\n\n const enhancer = applyMiddleware(\n // ВАЖНО: прерываем исходящие в рамках обработчика http-запросы\n async (request, next) => {\n try {\n return await next(request);\n } finally {\n abortController.abort();\n }\n },\n );\n\n return enhancer(handler);\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specific-params.js","names":["KnownToken","provideSpecificParams","resolve","context","Http","Handler","headerValue","request","headers","get","JSON","parse"],"sources":["../../../../../src/preset/bun-handler/providers/specific-params.ts"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"specific-params.js","names":["KnownToken","provideSpecificParams","resolve","context","Http","Handler","headerValue","request","headers","get","JSON","parse"],"sources":["../../../../../src/preset/bun-handler/providers/specific-params.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\n\nexport function provideSpecificParams(resolve: Resolve) {\n const context = resolve(KnownToken.Http.Handler.context);\n\n try {\n const headerValue = context.request.headers.get('simaland-params');\n\n return JSON.parse(headerValue ?? '{}');\n } catch {\n return {};\n }\n}\n"],"mappings":"AAAA;;AAEA,SAASA,UAAU,QAAQ,oBAAiB;AAE5C,OAAO,SAASC,qBAAqBA,CAACC,OAAgB,EAAE;EACtD,MAAMC,OAAO,GAAGD,OAAO,CAACF,UAAU,CAACI,IAAI,CAACC,OAAO,CAACF,OAAO,CAAC;EAExD,IAAI;IACF,MAAMG,WAAW,GAAGH,OAAO,CAACI,OAAO,CAACC,OAAO,CAACC,GAAG,CAAC,iBAAiB,CAAC;IAElE,OAAOC,IAAI,CAACC,KAAK,CAACL,WAAW,IAAI,IAAI,CAAC;EACxC,CAAC,CAAC,MAAM;IACN,OAAO,CAAC,CAAC;EACX;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-middleware.js","names":["provideFetchMiddleware"],"sources":["../../../../../src/preset/server/providers/fetch-middleware.ts"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"fetch-middleware.js","names":["provideFetchMiddleware"],"sources":["../../../../../src/preset/server/providers/fetch-middleware.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { Middleware } from '../../../http';\n\nexport function provideFetchMiddleware(): Middleware[] {\n // @todo добавить логирование ошибок?\n return [];\n}\n"],"mappings":"AAAA;;AAGA,OAAO,SAASA,sBAAsBA,CAAA,EAAiB;EACrD;EACA,OAAO,EAAE;AACX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","names":["KnownToken","proxy","router","applyMiddleware","applyServerMiddleware","provideServe","resolve","config","Config","base","pageRoutes","Http","Serve","serviceRoutes","middleware","proxyConfig","Proxy","enhance","env","Array","isArray","map","identity","builder","pattern","handler","path","method","pageHandler","request","events","EventTarget","build","value"],"sources":["../../../../../src/preset/server/providers/serve.ts"],"sourcesContent":["/* eslint-disable
|
|
1
|
+
{"version":3,"file":"serve.js","names":["KnownToken","proxy","router","applyMiddleware","applyServerMiddleware","provideServe","resolve","config","Config","base","pageRoutes","Http","Serve","serviceRoutes","middleware","proxyConfig","Proxy","enhance","env","Array","isArray","map","identity","builder","pattern","handler","path","method","pageHandler","request","events","EventTarget","build","value"],"sources":["../../../../../src/preset/server/providers/serve.ts"],"sourcesContent":["/* eslint-disable jsdoc/require-jsdoc */\nimport { Resolve } from '../../../di';\nimport { KnownToken } from '../../../tokens';\nimport { Handler, proxy } from '../../../http';\nimport { router, applyMiddleware } from '@krutoo/fetch-tools';\nimport { applyServerMiddleware } from '../utils/apply-server-middleware';\n\nexport function provideServe(resolve: Resolve): Handler {\n const config = resolve(KnownToken.Config.base);\n const pageRoutes = resolve(KnownToken.Http.Serve.pageRoutes);\n const serviceRoutes = resolve(KnownToken.Http.Serve.serviceRoutes);\n const middleware = resolve(KnownToken.Http.Serve.middleware);\n const proxyConfig = resolve(KnownToken.Http.Serve.Proxy.config);\n\n const enhance =\n config.env === 'development' && proxyConfig\n ? applyMiddleware(\n ...(Array.isArray(proxyConfig) ? proxyConfig.map(proxy) : [proxy(proxyConfig)]),\n )\n : identity;\n\n const builder = router.builder();\n\n // маршруты с промежуточными слоями\n for (const [pattern, handler] of pageRoutes) {\n const path = typeof pattern === 'string' ? pattern : pattern.path;\n const method = typeof pattern === 'string' ? 'get' : pattern.method;\n const pageHandler = applyServerMiddleware(...middleware)(handler);\n\n builder[method](path, request => pageHandler(request, { events: new EventTarget() }));\n }\n\n // служебные маршруты (к ним не применяются промежуточные слои)\n for (const [pattern, handler] of serviceRoutes) {\n const path = typeof pattern === 'string' ? pattern : pattern.path;\n const method = typeof pattern === 'string' ? 'get' : pattern.method;\n\n builder[method](path, request => handler(request, { events: new EventTarget() }));\n }\n\n // @todo также добавить apiRoutes?\n return enhance(builder.build());\n}\n\nfunction identity<T>(value: T): T {\n return value;\n}\n"],"mappings":"AAAA;;AAEA,SAASA,UAAU,QAAQ,oBAAiB;AAC5C,SAAkBC,KAAK,QAAQ,0BAAe;AAC9C,SAASC,MAAM,EAAEC,eAAe,QAAQ,qBAAqB;AAC7D,SAASC,qBAAqB,QAAQ,qCAAkC;AAExE,OAAO,SAASC,YAAYA,CAACC,OAAgB,EAAW;EACtD,MAAMC,MAAM,GAAGD,OAAO,CAACN,UAAU,CAACQ,MAAM,CAACC,IAAI,CAAC;EAC9C,MAAMC,UAAU,GAAGJ,OAAO,CAACN,UAAU,CAACW,IAAI,CAACC,KAAK,CAACF,UAAU,CAAC;EAC5D,MAAMG,aAAa,GAAGP,OAAO,CAACN,UAAU,CAACW,IAAI,CAACC,KAAK,CAACC,aAAa,CAAC;EAClE,MAAMC,UAAU,GAAGR,OAAO,CAACN,UAAU,CAACW,IAAI,CAACC,KAAK,CAACE,UAAU,CAAC;EAC5D,MAAMC,WAAW,GAAGT,OAAO,CAACN,UAAU,CAACW,IAAI,CAACC,KAAK,CAACI,KAAK,CAACT,MAAM,CAAC;EAE/D,MAAMU,OAAO,GACXV,MAAM,CAACW,GAAG,KAAK,aAAa,IAAIH,WAAW,GACvCZ,eAAe,CACb,IAAIgB,KAAK,CAACC,OAAO,CAACL,WAAW,CAAC,GAAGA,WAAW,CAACM,GAAG,CAACpB,KAAK,CAAC,GAAG,CAACA,KAAK,CAACc,WAAW,CAAC,CAAC,CAChF,CAAC,GACDO,QAAQ;EAEd,MAAMC,OAAO,GAAGrB,MAAM,CAACqB,OAAO,CAAC,CAAC;;EAEhC;EACA,KAAK,MAAM,CAACC,OAAO,EAAEC,OAAO,CAAC,IAAIf,UAAU,EAAE;IAC3C,MAAMgB,IAAI,GAAG,OAAOF,OAAO,KAAK,QAAQ,GAAGA,OAAO,GAAGA,OAAO,CAACE,IAAI;IACjE,MAAMC,MAAM,GAAG,OAAOH,OAAO,KAAK,QAAQ,GAAG,KAAK,GAAGA,OAAO,CAACG,MAAM;IACnE,MAAMC,WAAW,GAAGxB,qBAAqB,CAAC,GAAGU,UAAU,CAAC,CAACW,OAAO,CAAC;IAEjEF,OAAO,CAACI,MAAM,CAAC,CAACD,IAAI,EAAEG,OAAO,IAAID,WAAW,CAACC,OAAO,EAAE;MAAEC,MAAM,EAAE,IAAIC,WAAW,CAAC;IAAE,CAAC,CAAC,CAAC;EACvF;;EAEA;EACA,KAAK,MAAM,CAACP,OAAO,EAAEC,OAAO,CAAC,IAAIZ,aAAa,EAAE;IAC9C,MAAMa,IAAI,GAAG,OAAOF,OAAO,KAAK,QAAQ,GAAGA,OAAO,GAAGA,OAAO,CAACE,IAAI;IACjE,MAAMC,MAAM,GAAG,OAAOH,OAAO,KAAK,QAAQ,GAAG,KAAK,GAAGA,OAAO,CAACG,MAAM;IAEnEJ,OAAO,CAACI,MAAM,CAAC,CAACD,IAAI,EAAEG,OAAO,IAAIJ,OAAO,CAACI,OAAO,EAAE;MAAEC,MAAM,EAAE,IAAIC,WAAW,CAAC;IAAE,CAAC,CAAC,CAAC;EACnF;;EAEA;EACA,OAAOd,OAAO,CAACM,OAAO,CAACS,KAAK,CAAC,CAAC,CAAC;AACjC;AAEA,SAASV,QAAQA,CAAIW,KAAQ,EAAK;EAChC,OAAOA,KAAK;AACd"}
|