sonamu 0.4.7 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/dist/bin/cli.js +51 -51
  2. package/dist/bin/cli.mjs +2 -2
  3. package/dist/{chunk-54T42DSA.js → chunk-FXWN5PEO.js} +53 -41
  4. package/dist/chunk-FXWN5PEO.js.map +1 -0
  5. package/dist/{chunk-HRZ23FCT.mjs → chunk-GQVZQZ5J.mjs} +2 -2
  6. package/dist/{chunk-5CB4CKVQ.mjs → chunk-IEP5SWTY.mjs} +2 -2
  7. package/dist/{chunk-COZNUCYR.js → chunk-IEXW7P6A.js} +4 -4
  8. package/dist/{chunk-VOEEO52Y.mjs → chunk-OBPWSOYN.mjs} +2 -2
  9. package/dist/{chunk-YOH4CHWQ.mjs → chunk-VBBKB2LD.mjs} +34 -22
  10. package/dist/chunk-VBBKB2LD.mjs.map +1 -0
  11. package/dist/{chunk-JNQQ3K3E.js → chunk-WZJODZL6.js} +7 -7
  12. package/dist/{chunk-6HM2HY4W.js → chunk-ZNWZQLRN.js} +100 -100
  13. package/dist/database/drivers/knex/base-model.js +8 -8
  14. package/dist/database/drivers/knex/base-model.mjs +3 -3
  15. package/dist/database/drivers/kysely/base-model.js +9 -9
  16. package/dist/database/drivers/kysely/base-model.mjs +3 -3
  17. package/dist/index.d.mts +5 -0
  18. package/dist/index.d.ts +5 -0
  19. package/dist/index.js +7 -7
  20. package/dist/index.mjs +3 -3
  21. package/package.json +1 -1
  22. package/src/api/sonamu.ts +43 -25
  23. package/dist/chunk-54T42DSA.js.map +0 -1
  24. package/dist/chunk-YOH4CHWQ.mjs.map +0 -1
  25. /package/dist/{chunk-HRZ23FCT.mjs.map → chunk-GQVZQZ5J.mjs.map} +0 -0
  26. /package/dist/{chunk-5CB4CKVQ.mjs.map → chunk-IEP5SWTY.mjs.map} +0 -0
  27. /package/dist/{chunk-COZNUCYR.js.map → chunk-IEXW7P6A.js.map} +0 -0
  28. /package/dist/{chunk-VOEEO52Y.mjs.map → chunk-OBPWSOYN.mjs.map} +0 -0
  29. /package/dist/{chunk-JNQQ3K3E.js.map → chunk-WZJODZL6.js.map} +0 -0
  30. /package/dist/{chunk-6HM2HY4W.js.map → chunk-ZNWZQLRN.js.map} +0 -0
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  BaseModelClassAbstract
3
- } from "../../../chunk-VOEEO52Y.mjs";
3
+ } from "../../../chunk-OBPWSOYN.mjs";
4
4
  import {
5
5
  UpsertBuilder
6
- } from "../../../chunk-5CB4CKVQ.mjs";
6
+ } from "../../../chunk-IEP5SWTY.mjs";
7
7
  import {
8
8
  DB,
9
9
  isCustomJoinClause
10
- } from "../../../chunk-YOH4CHWQ.mjs";
10
+ } from "../../../chunk-VBBKB2LD.mjs";
11
11
  import "../../../chunk-PTFDTOJU.mjs";
12
12
 
13
13
  // src/database/drivers/knex/base-model.ts
@@ -1,30 +1,30 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkCOZNUCYRjs = require('../../../chunk-COZNUCYR.js');
3
+ var _chunkIEXW7P6Ajs = require('../../../chunk-IEXW7P6A.js');
4
4
 
5
5
 
6
- var _chunkJNQQ3K3Ejs = require('../../../chunk-JNQQ3K3E.js');
6
+ var _chunkWZJODZL6js = require('../../../chunk-WZJODZL6.js');
7
7
 
8
8
 
9
9
 
10
10
 
11
- var _chunk54T42DSAjs = require('../../../chunk-54T42DSA.js');
11
+ var _chunkFXWN5PEOjs = require('../../../chunk-FXWN5PEO.js');
12
12
 
13
13
  // src/database/drivers/kysely/base-model.ts
14
14
  var _inflection = require('inflection'); var _inflection2 = _interopRequireDefault(_inflection);
15
- var BaseModelClass = class extends _chunkCOZNUCYRjs.BaseModelClassAbstract {
15
+ var BaseModelClass = class extends _chunkIEXW7P6Ajs.BaseModelClassAbstract {
16
16
  getDB(which) {
17
- return _chunk54T42DSAjs.DB.getDB(which);
17
+ return _chunkFXWN5PEOjs.DB.getDB(which);
18
18
  }
19
19
  async destroy() {
20
- return _chunk54T42DSAjs.DB.destroy();
20
+ return _chunkFXWN5PEOjs.DB.destroy();
21
21
  }
22
22
  getUpsertBuilder() {
23
- return new (0, _chunkJNQQ3K3Ejs.UpsertBuilder)();
23
+ return new (0, _chunkWZJODZL6js.UpsertBuilder)();
24
24
  }
25
25
  applyJoins(clonedQb, joins) {
26
26
  for (const join of joins) {
27
- if (_chunk54T42DSAjs.isCustomJoinClause.call(void 0, join)) {
27
+ if (_chunkFXWN5PEOjs.isCustomJoinClause.call(void 0, join)) {
28
28
  throw new Error("Custom join clause is not supported in Kysely");
29
29
  }
30
30
  if (join.join === "inner") {
@@ -48,7 +48,7 @@ var BaseModelClass = class extends _chunkCOZNUCYRjs.BaseModelClassAbstract {
48
48
  if (!column) {
49
49
  throw new Error("parseOrderBy: Invalid column");
50
50
  }
51
- const entity = _chunk54T42DSAjs.EntityManager.get(_inflection2.default.classify(table));
51
+ const entity = _chunkFXWN5PEOjs.EntityManager.get(_inflection2.default.classify(table));
52
52
  if (!entity.props.find((p) => p.name === column)) {
53
53
  throw new Error("parseOrderBy: \uD604\uC7AC \uC5D4\uD2F0\uD2F0\uC5D0 \uC874\uC7AC\uD558\uC9C0 \uC54A\uB294 \uCEEC\uB7FC\uC785\uB2C8\uB2E4: ");
54
54
  }
@@ -1,14 +1,14 @@
1
1
  import {
2
2
  BaseModelClassAbstract
3
- } from "../../../chunk-VOEEO52Y.mjs";
3
+ } from "../../../chunk-OBPWSOYN.mjs";
4
4
  import {
5
5
  UpsertBuilder
6
- } from "../../../chunk-5CB4CKVQ.mjs";
6
+ } from "../../../chunk-IEP5SWTY.mjs";
7
7
  import {
8
8
  DB,
9
9
  EntityManager,
10
10
  isCustomJoinClause
11
- } from "../../../chunk-YOH4CHWQ.mjs";
11
+ } from "../../../chunk-VBBKB2LD.mjs";
12
12
  import "../../../chunk-PTFDTOJU.mjs";
13
13
 
14
14
  // src/database/drivers/kysely/base-model.ts
package/dist/index.d.mts CHANGED
@@ -5,6 +5,7 @@ import { HTTPMethods, FastifyReply, FastifyInstance, FastifyRequest } from 'fast
5
5
  import { RouteGenericInterface } from 'fastify/types/route';
6
6
  import { Server, IncomingMessage, ServerResponse, IncomingHttpHeaders } from 'http';
7
7
  import ts from 'typescript';
8
+ import { AsyncLocalStorage } from 'async_hooks';
8
9
  import knex, { Knex } from 'knex';
9
10
  import * as kysely from 'kysely';
10
11
  import { Kysely } from 'kysely';
@@ -305,6 +306,10 @@ type SonamuFastifyConfig = {
305
306
  };
306
307
  declare class SonamuClass {
307
308
  isInitialized: boolean;
309
+ asyncLocalStorage: AsyncLocalStorage<{
310
+ context: Context;
311
+ }>;
312
+ getContext(): Context;
308
313
  private _apiRootPath;
309
314
  set apiRootPath(apiRootPath: string);
310
315
  get apiRootPath(): string;
package/dist/index.d.ts CHANGED
@@ -5,6 +5,7 @@ import { HTTPMethods, FastifyReply, FastifyInstance, FastifyRequest } from 'fast
5
5
  import { RouteGenericInterface } from 'fastify/types/route';
6
6
  import { Server, IncomingMessage, ServerResponse, IncomingHttpHeaders } from 'http';
7
7
  import ts from 'typescript';
8
+ import { AsyncLocalStorage } from 'async_hooks';
8
9
  import knex, { Knex } from 'knex';
9
10
  import * as kysely from 'kysely';
10
11
  import { Kysely } from 'kysely';
@@ -305,6 +306,10 @@ type SonamuFastifyConfig = {
305
306
  };
306
307
  declare class SonamuClass {
307
308
  isInitialized: boolean;
309
+ asyncLocalStorage: AsyncLocalStorage<{
310
+ context: Context;
311
+ }>;
312
+ getContext(): Context;
308
313
  private _apiRootPath;
309
314
  set apiRootPath(apiRootPath: string);
310
315
  get apiRootPath(): string;
package/dist/index.js CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- var _chunk6HM2HY4Wjs = require('./chunk-6HM2HY4W.js');
5
+ var _chunkZNWZQLRNjs = require('./chunk-ZNWZQLRN.js');
6
6
 
7
7
 
8
8
 
9
- var _chunkJNQQ3K3Ejs = require('./chunk-JNQQ3K3E.js');
9
+ var _chunkWZJODZL6js = require('./chunk-WZJODZL6.js');
10
10
 
11
11
 
12
12
 
@@ -88,13 +88,13 @@ var _chunkJNQQ3K3Ejs = require('./chunk-JNQQ3K3E.js');
88
88
 
89
89
 
90
90
 
91
- var _chunk54T42DSAjs = require('./chunk-54T42DSA.js');
91
+ var _chunkFXWN5PEOjs = require('./chunk-FXWN5PEO.js');
92
92
 
93
93
  // src/exceptions/error-handler.ts
94
94
  function setupErrorHandler(server) {
95
95
  server.setErrorHandler((error, request, reply) => {
96
96
  error.statusCode ??= 400;
97
- if (_chunk54T42DSAjs.isSoException.call(void 0, error) && error.payload && Array.isArray(error.payload)) {
97
+ if (_chunkFXWN5PEOjs.isSoException.call(void 0, error) && error.payload && Array.isArray(error.payload)) {
98
98
  const issues = error.payload;
99
99
  const [issue] = issues;
100
100
  const message = `${issue.message} (${issue.path.join("/")})`;
@@ -316,13 +316,13 @@ var i = {
316
316
  function index(columns) {
317
317
  return {
318
318
  type: "index",
319
- columns: _chunk54T42DSAjs.asArray.call(void 0, columns)
319
+ columns: _chunkFXWN5PEOjs.asArray.call(void 0, columns)
320
320
  };
321
321
  }
322
322
  function unique(columns) {
323
323
  return {
324
324
  type: "unique",
325
- columns: _chunk54T42DSAjs.asArray.call(void 0, columns)
325
+ columns: _chunkFXWN5PEOjs.asArray.call(void 0, columns)
326
326
  };
327
327
  }
328
328
 
@@ -414,5 +414,5 @@ function unique(columns) {
414
414
 
415
415
 
416
416
 
417
- exports.AlreadyProcessedException = _chunk54T42DSAjs.AlreadyProcessedException; exports.ApiParamType = _chunk54T42DSAjs.ApiParamType; exports.BadRequestException = _chunk54T42DSAjs.BadRequestException; exports.DB = _chunk54T42DSAjs.DB; exports.DBKnexClass = _chunk54T42DSAjs.DBKnexClass; exports.DBKyselyClass = _chunk54T42DSAjs.DBKyselyClass; exports.DuplicateRowException = _chunk54T42DSAjs.DuplicateRowException; exports.Entity = _chunk54T42DSAjs.Entity; exports.EntityManager = _chunk54T42DSAjs.EntityManager; exports.FixtureManager = _chunk6HM2HY4Wjs.FixtureManager; exports.FixtureManagerClass = _chunk6HM2HY4Wjs.FixtureManagerClass; exports.GenerateOptions = _chunk54T42DSAjs.GenerateOptions; exports.InternalServerErrorException = _chunk54T42DSAjs.InternalServerErrorException; exports.Migrator = _chunk6HM2HY4Wjs.Migrator; exports.NotFoundException = _chunk54T42DSAjs.NotFoundException; exports.PathAndCode = _chunk54T42DSAjs.PathAndCode; exports.RenderingNode = _chunk54T42DSAjs.RenderingNode; exports.SQLDateTimeString = _chunk54T42DSAjs.SQLDateTimeString; exports.ServiceUnavailableException = _chunk54T42DSAjs.ServiceUnavailableException; exports.SoException = _chunk54T42DSAjs.SoException; exports.Sonamu = _chunk54T42DSAjs.Sonamu; exports.SonamuQueryMode = _chunk54T42DSAjs.SonamuQueryMode; exports.Syncer = _chunk54T42DSAjs.Syncer; exports.TargetNotFoundException = _chunk54T42DSAjs.TargetNotFoundException; exports.TemplateKey = _chunk54T42DSAjs.TemplateKey; exports.TemplateOptions = _chunk54T42DSAjs.TemplateOptions; exports.UnauthorizedException = _chunk54T42DSAjs.UnauthorizedException; exports.UpsertBuilder = _chunkJNQQ3K3Ejs.UpsertBuilder; exports.api = _chunk54T42DSAjs.api; exports.apiParamToTsCode = _chunk54T42DSAjs.apiParamToTsCode; exports.apiParamTypeToTsType = _chunk54T42DSAjs.apiParamTypeToTsType; exports.asArray = _chunk54T42DSAjs.asArray; exports.findApiRootPath = _chunk54T42DSAjs.findApiRootPath; exports.findAppRootPath = _chunk54T42DSAjs.findAppRootPath; exports.getTextTypeLength = _chunk54T42DSAjs.getTextTypeLength; exports.getZodObjectFromApi = _chunk54T42DSAjs.getZodObjectFromApi; exports.getZodObjectFromApiParams = _chunk54T42DSAjs.getZodObjectFromApiParams; exports.getZodTypeFromApiParamType = _chunk54T42DSAjs.getZodTypeFromApiParamType; exports.globAsync = _chunk54T42DSAjs.globAsync; exports.hydrate = _chunk54T42DSAjs.hydrate; exports.i = i; exports.importMultiple = _chunk54T42DSAjs.importMultiple; exports.isBelongsToOneRelationProp = _chunk54T42DSAjs.isBelongsToOneRelationProp; exports.isBigIntegerProp = _chunk54T42DSAjs.isBigIntegerProp; exports.isBooleanProp = _chunk54T42DSAjs.isBooleanProp; exports.isCustomJoinClause = _chunk54T42DSAjs.isCustomJoinClause; exports.isDaemonServer = _chunk54T42DSAjs.isDaemonServer; exports.isDateProp = _chunk54T42DSAjs.isDateProp; exports.isDateTimeProp = _chunk54T42DSAjs.isDateTimeProp; exports.isDecimalProp = _chunk54T42DSAjs.isDecimalProp; exports.isDevelopment = _chunk54T42DSAjs.isDevelopment; exports.isDoubleProp = _chunk54T42DSAjs.isDoubleProp; exports.isEnumProp = _chunk54T42DSAjs.isEnumProp; exports.isFloatProp = _chunk54T42DSAjs.isFloatProp; exports.isHasManyRelationProp = _chunk54T42DSAjs.isHasManyRelationProp; exports.isInDocker = _chunk54T42DSAjs.isInDocker; exports.isIntegerProp = _chunk54T42DSAjs.isIntegerProp; exports.isJsonProp = _chunk54T42DSAjs.isJsonProp; exports.isKnexError = _chunk54T42DSAjs.isKnexError; exports.isKyselyError = _chunk54T42DSAjs.isKyselyError; exports.isLocal = _chunk54T42DSAjs.isLocal; exports.isManyToManyRelationProp = _chunk54T42DSAjs.isManyToManyRelationProp; exports.isOneToOneRelationProp = _chunk54T42DSAjs.isOneToOneRelationProp; exports.isProduction = _chunk54T42DSAjs.isProduction; exports.isRefField = _chunkJNQQ3K3Ejs.isRefField; exports.isRelationProp = _chunk54T42DSAjs.isRelationProp; exports.isRemote = _chunk54T42DSAjs.isRemote; exports.isSoException = _chunk54T42DSAjs.isSoException; exports.isStaging = _chunk54T42DSAjs.isStaging; exports.isStringProp = _chunk54T42DSAjs.isStringProp; exports.isTest = _chunk54T42DSAjs.isTest; exports.isTextProp = _chunk54T42DSAjs.isTextProp; exports.isTimeProp = _chunk54T42DSAjs.isTimeProp; exports.isTimestampProp = _chunk54T42DSAjs.isTimestampProp; exports.isUuidProp = _chunk54T42DSAjs.isUuidProp; exports.isVirtualProp = _chunk54T42DSAjs.isVirtualProp; exports.nonNullable = _chunk54T42DSAjs.nonNullable; exports.objToMap = _chunk54T42DSAjs.objToMap; exports.p = p; exports.propNodeToZodTypeDef = _chunk54T42DSAjs.propNodeToZodTypeDef; exports.propToZodTypeDef = _chunk54T42DSAjs.propToZodTypeDef; exports.registeredApis = _chunk54T42DSAjs.registeredApis; exports.serializeZodType = _chunk54T42DSAjs.serializeZodType; exports.setupErrorHandler = setupErrorHandler; exports.unwrapPromiseOnce = _chunk54T42DSAjs.unwrapPromiseOnce; exports.zArrayable = _chunk54T42DSAjs.zArrayable; exports.zodTypeToTsTypeDef = _chunk54T42DSAjs.zodTypeToTsTypeDef; exports.zodTypeToZodCode = _chunk54T42DSAjs.zodTypeToZodCode;
417
+ exports.AlreadyProcessedException = _chunkFXWN5PEOjs.AlreadyProcessedException; exports.ApiParamType = _chunkFXWN5PEOjs.ApiParamType; exports.BadRequestException = _chunkFXWN5PEOjs.BadRequestException; exports.DB = _chunkFXWN5PEOjs.DB; exports.DBKnexClass = _chunkFXWN5PEOjs.DBKnexClass; exports.DBKyselyClass = _chunkFXWN5PEOjs.DBKyselyClass; exports.DuplicateRowException = _chunkFXWN5PEOjs.DuplicateRowException; exports.Entity = _chunkFXWN5PEOjs.Entity; exports.EntityManager = _chunkFXWN5PEOjs.EntityManager; exports.FixtureManager = _chunkZNWZQLRNjs.FixtureManager; exports.FixtureManagerClass = _chunkZNWZQLRNjs.FixtureManagerClass; exports.GenerateOptions = _chunkFXWN5PEOjs.GenerateOptions; exports.InternalServerErrorException = _chunkFXWN5PEOjs.InternalServerErrorException; exports.Migrator = _chunkZNWZQLRNjs.Migrator; exports.NotFoundException = _chunkFXWN5PEOjs.NotFoundException; exports.PathAndCode = _chunkFXWN5PEOjs.PathAndCode; exports.RenderingNode = _chunkFXWN5PEOjs.RenderingNode; exports.SQLDateTimeString = _chunkFXWN5PEOjs.SQLDateTimeString; exports.ServiceUnavailableException = _chunkFXWN5PEOjs.ServiceUnavailableException; exports.SoException = _chunkFXWN5PEOjs.SoException; exports.Sonamu = _chunkFXWN5PEOjs.Sonamu; exports.SonamuQueryMode = _chunkFXWN5PEOjs.SonamuQueryMode; exports.Syncer = _chunkFXWN5PEOjs.Syncer; exports.TargetNotFoundException = _chunkFXWN5PEOjs.TargetNotFoundException; exports.TemplateKey = _chunkFXWN5PEOjs.TemplateKey; exports.TemplateOptions = _chunkFXWN5PEOjs.TemplateOptions; exports.UnauthorizedException = _chunkFXWN5PEOjs.UnauthorizedException; exports.UpsertBuilder = _chunkWZJODZL6js.UpsertBuilder; exports.api = _chunkFXWN5PEOjs.api; exports.apiParamToTsCode = _chunkFXWN5PEOjs.apiParamToTsCode; exports.apiParamTypeToTsType = _chunkFXWN5PEOjs.apiParamTypeToTsType; exports.asArray = _chunkFXWN5PEOjs.asArray; exports.findApiRootPath = _chunkFXWN5PEOjs.findApiRootPath; exports.findAppRootPath = _chunkFXWN5PEOjs.findAppRootPath; exports.getTextTypeLength = _chunkFXWN5PEOjs.getTextTypeLength; exports.getZodObjectFromApi = _chunkFXWN5PEOjs.getZodObjectFromApi; exports.getZodObjectFromApiParams = _chunkFXWN5PEOjs.getZodObjectFromApiParams; exports.getZodTypeFromApiParamType = _chunkFXWN5PEOjs.getZodTypeFromApiParamType; exports.globAsync = _chunkFXWN5PEOjs.globAsync; exports.hydrate = _chunkFXWN5PEOjs.hydrate; exports.i = i; exports.importMultiple = _chunkFXWN5PEOjs.importMultiple; exports.isBelongsToOneRelationProp = _chunkFXWN5PEOjs.isBelongsToOneRelationProp; exports.isBigIntegerProp = _chunkFXWN5PEOjs.isBigIntegerProp; exports.isBooleanProp = _chunkFXWN5PEOjs.isBooleanProp; exports.isCustomJoinClause = _chunkFXWN5PEOjs.isCustomJoinClause; exports.isDaemonServer = _chunkFXWN5PEOjs.isDaemonServer; exports.isDateProp = _chunkFXWN5PEOjs.isDateProp; exports.isDateTimeProp = _chunkFXWN5PEOjs.isDateTimeProp; exports.isDecimalProp = _chunkFXWN5PEOjs.isDecimalProp; exports.isDevelopment = _chunkFXWN5PEOjs.isDevelopment; exports.isDoubleProp = _chunkFXWN5PEOjs.isDoubleProp; exports.isEnumProp = _chunkFXWN5PEOjs.isEnumProp; exports.isFloatProp = _chunkFXWN5PEOjs.isFloatProp; exports.isHasManyRelationProp = _chunkFXWN5PEOjs.isHasManyRelationProp; exports.isInDocker = _chunkFXWN5PEOjs.isInDocker; exports.isIntegerProp = _chunkFXWN5PEOjs.isIntegerProp; exports.isJsonProp = _chunkFXWN5PEOjs.isJsonProp; exports.isKnexError = _chunkFXWN5PEOjs.isKnexError; exports.isKyselyError = _chunkFXWN5PEOjs.isKyselyError; exports.isLocal = _chunkFXWN5PEOjs.isLocal; exports.isManyToManyRelationProp = _chunkFXWN5PEOjs.isManyToManyRelationProp; exports.isOneToOneRelationProp = _chunkFXWN5PEOjs.isOneToOneRelationProp; exports.isProduction = _chunkFXWN5PEOjs.isProduction; exports.isRefField = _chunkWZJODZL6js.isRefField; exports.isRelationProp = _chunkFXWN5PEOjs.isRelationProp; exports.isRemote = _chunkFXWN5PEOjs.isRemote; exports.isSoException = _chunkFXWN5PEOjs.isSoException; exports.isStaging = _chunkFXWN5PEOjs.isStaging; exports.isStringProp = _chunkFXWN5PEOjs.isStringProp; exports.isTest = _chunkFXWN5PEOjs.isTest; exports.isTextProp = _chunkFXWN5PEOjs.isTextProp; exports.isTimeProp = _chunkFXWN5PEOjs.isTimeProp; exports.isTimestampProp = _chunkFXWN5PEOjs.isTimestampProp; exports.isUuidProp = _chunkFXWN5PEOjs.isUuidProp; exports.isVirtualProp = _chunkFXWN5PEOjs.isVirtualProp; exports.nonNullable = _chunkFXWN5PEOjs.nonNullable; exports.objToMap = _chunkFXWN5PEOjs.objToMap; exports.p = p; exports.propNodeToZodTypeDef = _chunkFXWN5PEOjs.propNodeToZodTypeDef; exports.propToZodTypeDef = _chunkFXWN5PEOjs.propToZodTypeDef; exports.registeredApis = _chunkFXWN5PEOjs.registeredApis; exports.serializeZodType = _chunkFXWN5PEOjs.serializeZodType; exports.setupErrorHandler = setupErrorHandler; exports.unwrapPromiseOnce = _chunkFXWN5PEOjs.unwrapPromiseOnce; exports.zArrayable = _chunkFXWN5PEOjs.zArrayable; exports.zodTypeToTsTypeDef = _chunkFXWN5PEOjs.zodTypeToTsTypeDef; exports.zodTypeToZodCode = _chunkFXWN5PEOjs.zodTypeToZodCode;
418
418
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -2,11 +2,11 @@ import {
2
2
  FixtureManager,
3
3
  FixtureManagerClass,
4
4
  Migrator
5
- } from "./chunk-HRZ23FCT.mjs";
5
+ } from "./chunk-GQVZQZ5J.mjs";
6
6
  import {
7
7
  UpsertBuilder,
8
8
  isRefField
9
- } from "./chunk-5CB4CKVQ.mjs";
9
+ } from "./chunk-IEP5SWTY.mjs";
10
10
  import {
11
11
  AlreadyProcessedException,
12
12
  ApiParamType,
@@ -88,7 +88,7 @@ import {
88
88
  zArrayable,
89
89
  zodTypeToTsTypeDef,
90
90
  zodTypeToZodCode
91
- } from "./chunk-YOH4CHWQ.mjs";
91
+ } from "./chunk-VBBKB2LD.mjs";
92
92
  import "./chunk-PTFDTOJU.mjs";
93
93
 
94
94
  // src/exceptions/error-handler.ts
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sonamu",
3
- "version": "0.4.7",
3
+ "version": "0.4.8",
4
4
  "description": "Sonamu — TypeScript Fullstack API Framework",
5
5
  "keywords": [
6
6
  "typescript",
package/src/api/sonamu.ts CHANGED
@@ -17,6 +17,7 @@ import { ApiDecoratorOptions } from "./decorators";
17
17
  import { humanizeZodError } from "../utils/zod-error";
18
18
  import { DatabaseDriver, SonamuDBConfig } from "../database/types";
19
19
  import { DB } from "../database/db";
20
+ import { AsyncLocalStorage } from "async_hooks";
20
21
 
21
22
  export type SonamuConfig = {
22
23
  projectName?: string;
@@ -73,6 +74,17 @@ type SonamuFastifyConfig = {
73
74
  };
74
75
  class SonamuClass {
75
76
  public isInitialized: boolean = false;
77
+ public asyncLocalStorage: AsyncLocalStorage<{
78
+ context: Context;
79
+ }> = new AsyncLocalStorage();
80
+
81
+ public getContext(): Context {
82
+ const store = this.asyncLocalStorage.getStore();
83
+ if (store?.context) {
84
+ return store.context;
85
+ }
86
+ throw new Error("Sonamu cannot find context");
87
+ }
76
88
 
77
89
  private _apiRootPath: string | null = null;
78
90
  set apiRootPath(apiRootPath: string) {
@@ -214,7 +226,10 @@ class SonamuClass {
214
226
  async withFastify(
215
227
  server: FastifyInstance<Server, IncomingMessage, ServerResponse>,
216
228
  config: SonamuFastifyConfig,
217
- options?: { enableSync?: boolean; doSilent?: boolean }
229
+ options?: {
230
+ enableSync?: boolean;
231
+ doSilent?: boolean;
232
+ }
218
233
  ) {
219
234
  if (this.isInitialized === false) {
220
235
  await this.init(options?.doSilent, options?.enableSync);
@@ -301,32 +316,35 @@ class SonamuClass {
301
316
  return cachedData;
302
317
  }
303
318
 
304
- // 결과
305
- const result = await (model as any)[api.methodName].apply(
306
- model,
307
- api.parameters.map((param) => {
308
- // Context 인젝션
309
- if (ApiParamType.isContext(param.type)) {
310
- return config.contextProvider(
311
- {
312
- headers: request.headers,
313
- reply,
314
- },
315
- request,
316
- reply
317
- );
318
- } else {
319
- return reqBody[param.name];
320
- }
321
- })
319
+ // 결과 (AsyncLocalStorage 적용)
320
+ const context = config.contextProvider(
321
+ {
322
+ headers: request.headers,
323
+ reply,
324
+ },
325
+ request,
326
+ reply
322
327
  );
323
- reply.type(api.options.contentType ?? "application/json");
328
+ return this.asyncLocalStorage.run({ context }, async () => {
329
+ const result = await (model as any)[api.methodName].apply(
330
+ model,
331
+ api.parameters.map((param) => {
332
+ // Context 인젝션
333
+ if (ApiParamType.isContext(param.type)) {
334
+ return context;
335
+ } else {
336
+ return reqBody[param.name];
337
+ }
338
+ })
339
+ );
340
+ reply.type(api.options.contentType ?? "application/json");
324
341
 
325
- // 캐시 키 있는 경우 갱신 후 저장
326
- if (config.cache && cacheKey) {
327
- await config.cache.put(cacheKey, result, cacheTtl);
328
- }
329
- return result;
342
+ // 캐시 키 있는 경우 갱신 후 저장
343
+ if (config.cache && cacheKey) {
344
+ await config.cache.put(cacheKey, result, cacheTtl);
345
+ }
346
+ return result;
347
+ });
330
348
  },
331
349
  }); // END server.route
332
350
  });