sonamu 0.7.21 → 0.7.23

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 (200) hide show
  1. package/dist/ai/agents/agent.d.ts +6 -1
  2. package/dist/ai/agents/agent.d.ts.map +1 -1
  3. package/dist/ai/agents/agent.js +20 -5
  4. package/dist/api/base-frame.d.ts +4 -0
  5. package/dist/api/base-frame.d.ts.map +1 -1
  6. package/dist/api/base-frame.js +9 -1
  7. package/dist/api/caster.d.ts.map +1 -1
  8. package/dist/api/caster.js +2 -2
  9. package/dist/api/config.d.ts +35 -3
  10. package/dist/api/config.d.ts.map +1 -1
  11. package/dist/api/config.js +1 -1
  12. package/dist/api/decorators.d.ts +4 -4
  13. package/dist/api/decorators.d.ts.map +1 -1
  14. package/dist/api/decorators.js +80 -18
  15. package/dist/api/index.d.ts +1 -0
  16. package/dist/api/index.d.ts.map +1 -1
  17. package/dist/api/index.js +2 -1
  18. package/dist/api/secret.d.ts +7 -0
  19. package/dist/api/secret.d.ts.map +1 -0
  20. package/dist/api/secret.js +17 -0
  21. package/dist/api/sonamu.d.ts +17 -8
  22. package/dist/api/sonamu.d.ts.map +1 -1
  23. package/dist/api/sonamu.js +265 -47
  24. package/dist/cache/cache-manager.d.ts +11 -0
  25. package/dist/cache/cache-manager.d.ts.map +1 -0
  26. package/dist/cache/cache-manager.js +22 -0
  27. package/dist/cache/decorator.d.ts +31 -0
  28. package/dist/cache/decorator.d.ts.map +1 -0
  29. package/dist/cache/decorator.js +86 -0
  30. package/dist/cache/drivers.d.ts +33 -0
  31. package/dist/cache/drivers.d.ts.map +1 -0
  32. package/dist/cache/drivers.js +36 -0
  33. package/dist/cache/index.d.ts +4 -0
  34. package/dist/cache/index.d.ts.map +1 -0
  35. package/dist/cache/index.js +8 -0
  36. package/dist/cache/types.d.ts +28 -0
  37. package/dist/cache/types.d.ts.map +1 -0
  38. package/dist/cache/types.js +6 -0
  39. package/dist/database/base-model.d.ts +4 -2
  40. package/dist/database/base-model.d.ts.map +1 -1
  41. package/dist/database/base-model.js +9 -4
  42. package/dist/database/code-generator.d.ts +3 -1
  43. package/dist/database/code-generator.d.ts.map +1 -1
  44. package/dist/database/code-generator.js +3 -2
  45. package/dist/database/db.d.ts +1 -1
  46. package/dist/database/db.d.ts.map +1 -1
  47. package/dist/database/db.js +5 -5
  48. package/dist/database/knex.d.ts +3 -0
  49. package/dist/database/knex.d.ts.map +1 -0
  50. package/dist/database/knex.js +29 -0
  51. package/dist/database/puri.types.d.ts.map +1 -1
  52. package/dist/database/puri.types.js +1 -1
  53. package/dist/database/upsert-builder.d.ts.map +1 -1
  54. package/dist/database/upsert-builder.js +49 -5
  55. package/dist/index.d.ts +4 -0
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +4 -1
  58. package/dist/logger/category.d.ts +4 -0
  59. package/dist/logger/category.d.ts.map +1 -0
  60. package/dist/logger/category.js +34 -0
  61. package/dist/logger/configure.d.ts +9 -0
  62. package/dist/logger/configure.d.ts.map +1 -0
  63. package/dist/logger/configure.js +115 -0
  64. package/dist/migration/code-generation.d.ts +5 -1
  65. package/dist/migration/code-generation.d.ts.map +1 -1
  66. package/dist/migration/code-generation.js +13 -7
  67. package/dist/migration/migrator.d.ts +1 -1
  68. package/dist/migration/migrator.d.ts.map +1 -1
  69. package/dist/migration/migrator.js +7 -7
  70. package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
  71. package/dist/migration/postgresql-schema-reader.js +5 -3
  72. package/dist/naite/naite.d.ts +0 -4
  73. package/dist/naite/naite.d.ts.map +1 -1
  74. package/dist/naite/naite.js +11 -19
  75. package/dist/ssr/index.d.ts +4 -0
  76. package/dist/ssr/index.d.ts.map +1 -0
  77. package/dist/ssr/index.js +4 -0
  78. package/dist/ssr/registry.d.ts +10 -0
  79. package/dist/ssr/registry.d.ts.map +1 -0
  80. package/dist/ssr/registry.js +43 -0
  81. package/dist/ssr/renderer.d.ts +6 -0
  82. package/dist/ssr/renderer.d.ts.map +1 -0
  83. package/dist/ssr/renderer.js +70 -0
  84. package/dist/ssr/types.d.ts +19 -0
  85. package/dist/ssr/types.d.ts.map +1 -0
  86. package/dist/ssr/types.js +4 -0
  87. package/dist/syncer/syncer.d.ts +1 -0
  88. package/dist/syncer/syncer.d.ts.map +1 -1
  89. package/dist/syncer/syncer.js +58 -1
  90. package/dist/tasks/decorator.d.ts +1 -0
  91. package/dist/tasks/decorator.d.ts.map +1 -1
  92. package/dist/tasks/decorator.js +9 -7
  93. package/dist/tasks/step-wrapper.d.ts +5 -0
  94. package/dist/tasks/step-wrapper.d.ts.map +1 -1
  95. package/dist/tasks/step-wrapper.js +11 -6
  96. package/dist/tasks/workflow-manager.d.ts +2 -0
  97. package/dist/tasks/workflow-manager.d.ts.map +1 -1
  98. package/dist/tasks/workflow-manager.js +5 -2
  99. package/dist/template/implementations/entry-server.template.d.ts +17 -0
  100. package/dist/template/implementations/entry-server.template.d.ts.map +1 -0
  101. package/dist/template/implementations/entry-server.template.js +78 -0
  102. package/dist/template/implementations/model.template.d.ts.map +1 -1
  103. package/dist/template/implementations/model.template.js +5 -3
  104. package/dist/template/implementations/queries.template.d.ts +17 -0
  105. package/dist/template/implementations/queries.template.d.ts.map +1 -0
  106. package/dist/template/implementations/queries.template.js +83 -0
  107. package/dist/template/implementations/view_enums_select.template.d.ts.map +1 -1
  108. package/dist/template/implementations/view_enums_select.template.js +34 -20
  109. package/dist/template/implementations/view_form.template.d.ts +2 -1
  110. package/dist/template/implementations/view_form.template.d.ts.map +1 -1
  111. package/dist/template/implementations/view_form.template.js +301 -129
  112. package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -1
  113. package/dist/template/implementations/view_id_async_select.template.js +136 -57
  114. package/dist/template/implementations/view_list.template.d.ts +2 -0
  115. package/dist/template/implementations/view_list.template.d.ts.map +1 -1
  116. package/dist/template/implementations/view_list.template.js +392 -227
  117. package/dist/template/implementations/view_search_input.template.d.ts.map +1 -1
  118. package/dist/template/implementations/view_search_input.template.js +46 -30
  119. package/dist/template/zod-converter.d.ts.map +1 -1
  120. package/dist/template/zod-converter.js +2 -2
  121. package/dist/testing/bootstrap.d.ts +28 -0
  122. package/dist/testing/bootstrap.d.ts.map +1 -0
  123. package/dist/testing/bootstrap.js +120 -0
  124. package/dist/testing/fixture-loader.d.ts +21 -0
  125. package/dist/testing/fixture-loader.d.ts.map +1 -0
  126. package/dist/testing/fixture-loader.js +28 -0
  127. package/dist/testing/fixture-manager.d.ts +1 -1
  128. package/dist/testing/fixture-manager.d.ts.map +1 -1
  129. package/dist/testing/fixture-manager.js +7 -7
  130. package/dist/testing/index.d.ts +4 -0
  131. package/dist/testing/index.d.ts.map +1 -0
  132. package/dist/testing/index.js +5 -0
  133. package/dist/testing/naite-vitest-reporter.d.ts +12 -0
  134. package/dist/testing/naite-vitest-reporter.d.ts.map +1 -0
  135. package/dist/testing/naite-vitest-reporter.js +17 -0
  136. package/dist/types/types.d.ts +5 -6
  137. package/dist/types/types.d.ts.map +1 -1
  138. package/dist/types/types.js +7 -8
  139. package/dist/ui/ai-client.d.ts +3 -1
  140. package/dist/ui/ai-client.d.ts.map +1 -1
  141. package/dist/ui/ai-client.js +27 -8
  142. package/dist/ui-web/assets/index-CTYv3qL6.js +92 -0
  143. package/dist/ui-web/index.html +1 -1
  144. package/package.json +43 -20
  145. package/src/ai/agents/agent.ts +38 -19
  146. package/src/api/base-frame.ts +8 -0
  147. package/src/api/caster.ts +6 -1
  148. package/src/api/config.ts +38 -4
  149. package/src/api/decorators.ts +106 -20
  150. package/src/api/index.ts +1 -0
  151. package/src/api/secret.ts +23 -0
  152. package/src/api/sonamu.ts +334 -61
  153. package/src/cache/cache-manager.ts +23 -0
  154. package/src/cache/decorator.ts +116 -0
  155. package/src/cache/drivers.ts +42 -0
  156. package/src/cache/index.ts +16 -0
  157. package/src/cache/types.ts +32 -0
  158. package/src/database/base-model.ts +7 -3
  159. package/src/database/code-generator.ts +3 -1
  160. package/src/database/db.ts +5 -5
  161. package/src/database/knex.ts +34 -0
  162. package/src/database/puri.types.ts +2 -3
  163. package/src/database/upsert-builder.ts +58 -4
  164. package/src/index.ts +4 -0
  165. package/src/logger/category.ts +42 -0
  166. package/src/logger/configure.ts +132 -0
  167. package/src/migration/code-generation.ts +19 -6
  168. package/src/migration/migrator.ts +7 -6
  169. package/src/migration/postgresql-schema-reader.ts +7 -2
  170. package/src/naite/naite.ts +10 -18
  171. package/src/shared/web.shared.ts.txt +1 -1
  172. package/src/ssr/index.ts +13 -0
  173. package/src/ssr/registry.ts +52 -0
  174. package/src/ssr/renderer.ts +105 -0
  175. package/src/ssr/types.ts +20 -0
  176. package/src/syncer/syncer.ts +59 -0
  177. package/src/tasks/decorator.ts +20 -4
  178. package/src/tasks/step-wrapper.ts +14 -5
  179. package/src/tasks/workflow-manager.ts +9 -1
  180. package/src/template/implementations/entry-server.template.ts +81 -0
  181. package/src/template/implementations/model.template.ts +4 -2
  182. package/src/template/implementations/queries.template.ts +111 -0
  183. package/src/template/implementations/view_enums_select.template.ts +33 -19
  184. package/src/template/implementations/view_form.template.ts +324 -145
  185. package/src/template/implementations/view_id_async_select.template.ts +145 -56
  186. package/src/template/implementations/view_list.template.ts +446 -236
  187. package/src/template/implementations/view_search_input.template.ts +45 -29
  188. package/src/template/zod-converter.ts +4 -1
  189. package/src/testing/bootstrap.ts +176 -0
  190. package/src/testing/fixture-loader.ts +28 -0
  191. package/src/testing/fixture-manager.ts +7 -6
  192. package/src/testing/index.ts +3 -0
  193. package/src/testing/naite-vitest-reporter.ts +18 -0
  194. package/src/types/types.ts +4 -5
  195. package/src/ui/ai-client.ts +82 -50
  196. package/dist/template/implementations/view_enums_dropdown.template.d.ts +0 -17
  197. package/dist/template/implementations/view_enums_dropdown.template.d.ts.map +0 -1
  198. package/dist/template/implementations/view_enums_dropdown.template.js +0 -50
  199. package/dist/ui-web/assets/index-B87IyofX.js +0 -92
  200. package/src/template/implementations/view_enums_dropdown.template.ts +0 -53
@@ -1,9 +1,14 @@
1
+ import type { Tool } from "@ai-sdk/provider-utils";
2
+ import { type Logger } from "@logtape/logtape";
1
3
  import type { Agent, ToolSet } from "ai";
2
4
  import type { AgentConfig, ToolDecoratorOptions } from "./types";
3
5
  export declare class BaseAgentClass<TStore> {
6
+ readonly agentName: string;
7
+ protected readonly logger: Logger;
4
8
  private _als;
9
+ constructor(agentName?: string);
5
10
  get store(): TStore | undefined;
6
- protected get toolSet(): ToolSet;
11
+ protected get toolSet(): Record<string, Tool>;
7
12
  get tools(): ToolSet;
8
13
  use<TReturn>(config: AgentConfig, initialStatus: TStore, callback: (agent: Agent<never, ToolSet>) => Promise<TReturn>): Promise<TReturn>;
9
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAIzC,OAAO,KAAK,EAAE,WAAW,EAA4B,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAK3F,qBAAa,cAAc,CAAC,MAAM;IAChC,OAAO,CAAC,IAAI,CAAmC;IAE/C,IAAW,KAAK,uBAEf;IAGD,SAAS,KAAK,OAAO,IAgBT,OAAO,CAClB;IAED,IAAW,KAAK,IAAI,OAAO,CAE1B;IAEM,GAAG,CAAC,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC;CAS/D;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,IAEjF,QAAQ,cAAc,CAAC,OAAO,CAAC,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,UA4B7F"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/ai/agents/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAwB,MAAM,wBAAwB,CAAC;AAEzE,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAKzC,OAAO,KAAK,EAAE,WAAW,EAA4B,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAK3F,qBAAa,cAAc,CAAC,MAAM;aAKJ,SAAS,EAAE,MAAM;IAJ7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAElC,OAAO,CAAC,IAAI,CAAmC;gBAEnB,SAAS,GAAE,MAA8B;IAIrE,IAAW,KAAK,uBAEf;IAED,SAAS,KAAK,OAAO,yBAkBpB;IAED,IAAW,KAAK,IAAI,OAAO,CAE1B;IAEM,GAAG,CAAC,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC;CAS/D;AAED,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,EAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,IAEjF,QAAQ,cAAc,CAAC,OAAO,CAAC,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,UAuC7F"}
@@ -1,18 +1,24 @@
1
1
  import { tool } from "@ai-sdk/provider-utils";
2
+ import { getLogger } from "@logtape/logtape";
2
3
  import { ToolLoopAgent } from "ai";
3
4
  import { AsyncLocalStorage } from "async_hooks";
4
5
  import inflection from "inflection";
6
+ import { convertDomainToCategory } from "../../logger/category.js";
5
7
  const toolDefinitions = [];
6
8
  // TODO(Haze, 251205): 텍스트가 아닌 structured output일 경우에 대한 지원이 필요
7
9
  export class BaseAgentClass {
10
+ agentName;
11
+ logger;
8
12
  _als = new AsyncLocalStorage();
13
+ constructor(agentName = this.constructor.name){
14
+ this.agentName = agentName;
15
+ this.logger = getLogger(convertDomainToCategory(this.agentName, "agent"));
16
+ }
9
17
  get store() {
10
18
  return this._als.getStore();
11
19
  }
12
- // NOTE: [schemaSymbol] 추론 불가로 인해 캐스팅
13
20
  get toolSet() {
14
- const targeted = toolDefinitions.filter((def)=>def.from === this.constructor.name);
15
- return targeted.reduce((acc, def)=>{
21
+ return toolDefinitions.filter((def)=>def.from === this.constructor.name).reduce((acc, def)=>{
16
22
  acc[def.name] = tool({
17
23
  description: def.description,
18
24
  inputSchema: def.schema.input,
@@ -45,9 +51,18 @@ export function tools(options) {
45
51
  if (!(target instanceof BaseAgentClass)) {
46
52
  throw new Error("Target must be a subclass of BaseAgentClass");
47
53
  }
48
- const method = descriptor.value;
49
54
  const modelName = target.constructor.name.match(/(.+)Class$/)?.[1];
50
55
  const methodName = propertyKey;
56
+ const originalMethod = descriptor.value;
57
+ const method = async function(...args) {
58
+ this.logger.debug("tools: {model}.{method} with args: {args}", {
59
+ model: modelName,
60
+ method: methodName,
61
+ args
62
+ });
63
+ return originalMethod.apply(this, args);
64
+ };
65
+ descriptor.value = method;
51
66
  const defaultPath = modelName !== undefined ? `${inflection.camelize((modelName ?? "").replace(/Model$/, "").replace(/Frame$/, ""), true)}.${inflection.camelize(methodName, true)}` : inflection.camelize(methodName, true);
52
67
  toolDefinitions.push({
53
68
  name: name ?? defaultPath,
@@ -62,4 +77,4 @@ export function tools(options) {
62
77
  };
63
78
  }
64
79
 
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9haS9hZ2VudHMvYWdlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUb29sLCBUb29sQ2FsbE9wdGlvbnMgfSBmcm9tIFwiQGFpLXNkay9wcm92aWRlci11dGlsc1wiO1xuaW1wb3J0IHsgdG9vbCB9IGZyb20gXCJAYWktc2RrL3Byb3ZpZGVyLXV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IEFnZW50LCBUb29sU2V0IH0gZnJvbSBcImFpXCI7XG5pbXBvcnQgeyBUb29sTG9vcEFnZW50IH0gZnJvbSBcImFpXCI7XG5pbXBvcnQgeyBBc3luY0xvY2FsU3RvcmFnZSB9IGZyb20gXCJhc3luY19ob29rc1wiO1xuaW1wb3J0IGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIjtcbmltcG9ydCB0eXBlIHsgQWdlbnRDb25maWcsIFJlZ2lzdGVyZWRUb29sRGVmaW5pdGlvbiwgVG9vbERlY29yYXRvck9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5jb25zdCB0b29sRGVmaW5pdGlvbnM6IFJlZ2lzdGVyZWRUb29sRGVmaW5pdGlvbltdID0gW107XG5cbi8vIFRPRE8oSGF6ZSwgMjUxMjA1KTog7YWN7Iqk7Yq46rCAIOyVhOuLjCBzdHJ1Y3R1cmVkIG91dHB1dOydvCDqsr3smrDsl5Ag64yA7ZWcIOyngOybkOydtCDtlYTsmpRcbmV4cG9ydCBjbGFzcyBCYXNlQWdlbnRDbGFzczxUU3RvcmU+IHtcbiAgcHJpdmF0ZSBfYWxzID0gbmV3IEFzeW5jTG9jYWxTdG9yYWdlPFRTdG9yZT4oKTtcblxuICBwdWJsaWMgZ2V0IHN0b3JlKCkge1xuICAgIHJldHVybiB0aGlzLl9hbHMuZ2V0U3RvcmUoKTtcbiAgfVxuXG4gIC8vIE5PVEU6IFtzY2hlbWFTeW1ib2xdIOy2lOuhoCDrtojqsIDroZwg7J247ZW0IOy6kOyKpO2MhVxuICBwcm90ZWN0ZWQgZ2V0IHRvb2xTZXQoKSB7XG4gICAgY29uc3QgdGFyZ2V0ZWQgPSB0b29sRGVmaW5pdGlvbnMuZmlsdGVyKChkZWYpID0+IGRlZi5mcm9tID09PSB0aGlzLmNvbnN0cnVjdG9yLm5hbWUpO1xuICAgIHJldHVybiB0YXJnZXRlZC5yZWR1Y2U8UmVjb3JkPHN0cmluZywgVG9vbD4+KChhY2MsIGRlZikgPT4ge1xuICAgICAgYWNjW2RlZi5uYW1lXSA9IHRvb2woe1xuICAgICAgICBkZXNjcmlwdGlvbjogZGVmLmRlc2NyaXB0aW9uLFxuICAgICAgICBpbnB1dFNjaGVtYTogZGVmLnNjaGVtYS5pbnB1dCxcbiAgICAgICAgb3V0cHV0U2NoZW1hOiBkZWYuc2NoZW1hLm91dHB1dCxcbiAgICAgICAgbmVlZHNBcHByb3ZhbDogZGVmLm5lZWRzQXBwcm92YWwgPz8gZmFsc2UsXG4gICAgICAgIHRvTW9kZWxPdXRwdXQ6IGRlZi50b01vZGVsT3V0cHV0LFxuICAgICAgICBwcm92aWRlck9wdGlvbnM6IGRlZi5wcm92aWRlck9wdGlvbnMsXG4gICAgICAgIGV4ZWN1dGU6IChpbnB1dDogdW5rbm93biwgb3B0aW9uczogVG9vbENhbGxPcHRpb25zKSA9PiB7XG4gICAgICAgICAgY29uc3QgYm91bmQgPSBkZWYubWV0aG9kLmJpbmQodGhpcyk7XG4gICAgICAgICAgcmV0dXJuIGJvdW5kLmxlbmd0aCA+PSAyID8gYm91bmQoaW5wdXQsIG9wdGlvbnMpIDogYm91bmQoaW5wdXQpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KSBhcyBUb29sU2V0O1xuICB9XG5cbiAgcHVibGljIGdldCB0b29scygpOiBUb29sU2V0IHtcbiAgICByZXR1cm4gdGhpcy50b29sU2V0O1xuICB9XG5cbiAgcHVibGljIHVzZTxUUmV0dXJuPihcbiAgICBjb25maWc6IEFnZW50Q29uZmlnLFxuICAgIGluaXRpYWxTdGF0dXM6IFRTdG9yZSxcbiAgICBjYWxsYmFjazogKGFnZW50OiBBZ2VudDxuZXZlciwgVG9vbFNldD4pID0+IFByb21pc2U8VFJldHVybj4sXG4gICkge1xuICAgIGNvbnN0IGFnZW50ID0gbmV3IFRvb2xMb29wQWdlbnQoe1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgdG9vbHM6IHRoaXMudG9vbHMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5fYWxzLnJ1bihpbml0aWFsU3RhdHVzLCAoKSA9PiBjYWxsYmFjayhhZ2VudCkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b29sczxJTlBVVCwgT1VUUFVUID0gdW5rbm93bj4ob3B0aW9uczogVG9vbERlY29yYXRvck9wdGlvbnM8SU5QVVQsIE9VVFBVVD4pIHtcbiAgY29uc3QgeyBuYW1lLCBkZXNjcmlwdGlvbiwgc2NoZW1hLCBuZWVkc0FwcHJvdmFsLCB0b01vZGVsT3V0cHV0LCBwcm92aWRlck9wdGlvbnMgfSA9IG9wdGlvbnM7XG4gIHJldHVybiAodGFyZ2V0OiBCYXNlQWdlbnRDbGFzczx1bmtub3duPiwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2YgQmFzZUFnZW50Q2xhc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUYXJnZXQgbXVzdCBiZSBhIHN1YmNsYXNzIG9mIEJhc2VBZ2VudENsYXNzXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IG1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUubWF0Y2goLyguKylDbGFzcyQvKT8uWzFdO1xuICAgIGNvbnN0IG1ldGhvZE5hbWUgPSBwcm9wZXJ0eUtleTtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID1cbiAgICAgIG1vZGVsTmFtZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gYCR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgICAgICAgIChtb2RlbE5hbWUgPz8gXCJcIikucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICl9LiR7aW5mbGVjdGlvbi5jYW1lbGl6ZShtZXRob2ROYW1lLCB0cnVlKX1gXG4gICAgICAgIDogaW5mbGVjdGlvbi5jYW1lbGl6ZShtZXRob2ROYW1lLCB0cnVlKTtcblxuICAgIHRvb2xEZWZpbml0aW9ucy5wdXNoKHtcbiAgICAgIG5hbWU6IG5hbWUgPz8gZGVmYXVsdFBhdGgsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHNjaGVtYSxcbiAgICAgIG5lZWRzQXBwcm92YWwsXG4gICAgICB0b01vZGVsT3V0cHV0LFxuICAgICAgcHJvdmlkZXJPcHRpb25zLFxuICAgICAgbWV0aG9kLFxuICAgICAgZnJvbTogdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUsXG4gICAgfSk7XG4gIH07XG59XG4iXSwibmFtZXMiOlsidG9vbCIsIlRvb2xMb29wQWdlbnQiLCJBc3luY0xvY2FsU3RvcmFnZSIsImluZmxlY3Rpb24iLCJ0b29sRGVmaW5pdGlvbnMiLCJCYXNlQWdlbnRDbGFzcyIsIl9hbHMiLCJzdG9yZSIsImdldFN0b3JlIiwidG9vbFNldCIsInRhcmdldGVkIiwiZmlsdGVyIiwiZGVmIiwiZnJvbSIsIm5hbWUiLCJyZWR1Y2UiLCJhY2MiLCJkZXNjcmlwdGlvbiIsImlucHV0U2NoZW1hIiwic2NoZW1hIiwiaW5wdXQiLCJvdXRwdXRTY2hlbWEiLCJvdXRwdXQiLCJuZWVkc0FwcHJvdmFsIiwidG9Nb2RlbE91dHB1dCIsInByb3ZpZGVyT3B0aW9ucyIsImV4ZWN1dGUiLCJvcHRpb25zIiwiYm91bmQiLCJtZXRob2QiLCJiaW5kIiwibGVuZ3RoIiwidG9vbHMiLCJ1c2UiLCJjb25maWciLCJpbml0aWFsU3RhdHVzIiwiY2FsbGJhY2siLCJhZ2VudCIsInJ1biIsInRhcmdldCIsInByb3BlcnR5S2V5IiwiZGVzY3JpcHRvciIsIkVycm9yIiwidmFsdWUiLCJtb2RlbE5hbWUiLCJtYXRjaCIsIm1ldGhvZE5h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
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9haS9hZ2VudHMvYWdlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBUb29sLCBUb29sRXhlY3V0aW9uT3B0aW9ucyB9IGZyb20gXCJAYWktc2RrL3Byb3ZpZGVyLXV0aWxzXCI7XG5pbXBvcnQgeyB0b29sIH0gZnJvbSBcIkBhaS1zZGsvcHJvdmlkZXItdXRpbHNcIjtcbmltcG9ydCB7IGdldExvZ2dlciwgdHlwZSBMb2dnZXIgfSBmcm9tIFwiQGxvZ3RhcGUvbG9ndGFwZVwiO1xuaW1wb3J0IHR5cGUgeyBBZ2VudCwgVG9vbFNldCB9IGZyb20gXCJhaVwiO1xuaW1wb3J0IHsgVG9vbExvb3BBZ2VudCB9IGZyb20gXCJhaVwiO1xuaW1wb3J0IHsgQXN5bmNMb2NhbFN0b3JhZ2UgfSBmcm9tIFwiYXN5bmNfaG9va3NcIjtcbmltcG9ydCBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCI7XG5pbXBvcnQgeyBjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSB9IGZyb20gXCIuLi8uLi9sb2dnZXIvY2F0ZWdvcnlcIjtcbmltcG9ydCB0eXBlIHsgQWdlbnRDb25maWcsIFJlZ2lzdGVyZWRUb29sRGVmaW5pdGlvbiwgVG9vbERlY29yYXRvck9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5jb25zdCB0b29sRGVmaW5pdGlvbnM6IFJlZ2lzdGVyZWRUb29sRGVmaW5pdGlvbltdID0gW107XG5cbi8vIFRPRE8oSGF6ZSwgMjUxMjA1KTog7YWN7Iqk7Yq46rCAIOyVhOuLjCBzdHJ1Y3R1cmVkIG91dHB1dOydvCDqsr3smrDsl5Ag64yA7ZWcIOyngOybkOydtCDtlYTsmpRcbmV4cG9ydCBjbGFzcyBCYXNlQWdlbnRDbGFzczxUU3RvcmU+IHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyO1xuXG4gIHByaXZhdGUgX2FscyA9IG5ldyBBc3luY0xvY2FsU3RvcmFnZTxUU3RvcmU+KCk7XG5cbiAgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IGFnZW50TmFtZTogc3RyaW5nID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lKSB7XG4gICAgdGhpcy5sb2dnZXIgPSBnZXRMb2dnZXIoY29udmVydERvbWFpblRvQ2F0ZWdvcnkodGhpcy5hZ2VudE5hbWUsIFwiYWdlbnRcIikpO1xuICB9XG5cbiAgcHVibGljIGdldCBzdG9yZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fYWxzLmdldFN0b3JlKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IHRvb2xTZXQoKSB7XG4gICAgcmV0dXJuIHRvb2xEZWZpbml0aW9uc1xuICAgICAgLmZpbHRlcigoZGVmKSA9PiBkZWYuZnJvbSA9PT0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lKVxuICAgICAgLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBUb29sPj4oKGFjYywgZGVmKSA9PiB7XG4gICAgICAgIGFjY1tkZWYubmFtZV0gPSB0b29sKHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZGVmLmRlc2NyaXB0aW9uLFxuICAgICAgICAgIGlucHV0U2NoZW1hOiBkZWYuc2NoZW1hLmlucHV0LFxuICAgICAgICAgIG91dHB1dFNjaGVtYTogZGVmLnNjaGVtYS5vdXRwdXQsXG4gICAgICAgICAgbmVlZHNBcHByb3ZhbDogZGVmLm5lZWRzQXBwcm92YWwgPz8gZmFsc2UsXG4gICAgICAgICAgdG9Nb2RlbE91dHB1dDogZGVmLnRvTW9kZWxPdXRwdXQsXG4gICAgICAgICAgcHJvdmlkZXJPcHRpb25zOiBkZWYucHJvdmlkZXJPcHRpb25zLFxuICAgICAgICAgIGV4ZWN1dGU6IChpbnB1dDogdW5rbm93biwgb3B0aW9uczogVG9vbEV4ZWN1dGlvbk9wdGlvbnMpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGJvdW5kID0gZGVmLm1ldGhvZC5iaW5kKHRoaXMpO1xuICAgICAgICAgICAgcmV0dXJuIGJvdW5kLmxlbmd0aCA+PSAyID8gYm91bmQoaW5wdXQsIG9wdGlvbnMpIDogYm91bmQoaW5wdXQpO1xuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwge30pO1xuICB9XG5cbiAgcHVibGljIGdldCB0b29scygpOiBUb29sU2V0IHtcbiAgICByZXR1cm4gdGhpcy50b29sU2V0O1xuICB9XG5cbiAgcHVibGljIHVzZTxUUmV0dXJuPihcbiAgICBjb25maWc6IEFnZW50Q29uZmlnLFxuICAgIGluaXRpYWxTdGF0dXM6IFRTdG9yZSxcbiAgICBjYWxsYmFjazogKGFnZW50OiBBZ2VudDxuZXZlciwgVG9vbFNldD4pID0+IFByb21pc2U8VFJldHVybj4sXG4gICkge1xuICAgIGNvbnN0IGFnZW50ID0gbmV3IFRvb2xMb29wQWdlbnQoe1xuICAgICAgLi4uY29uZmlnLFxuICAgICAgdG9vbHM6IHRoaXMudG9vbHMsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gdGhpcy5fYWxzLnJ1bihpbml0aWFsU3RhdHVzLCAoKSA9PiBjYWxsYmFjayhhZ2VudCkpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b29sczxJTlBVVCwgT1VUUFVUID0gdW5rbm93bj4ob3B0aW9uczogVG9vbERlY29yYXRvck9wdGlvbnM8SU5QVVQsIE9VVFBVVD4pIHtcbiAgY29uc3QgeyBuYW1lLCBkZXNjcmlwdGlvbiwgc2NoZW1hLCBuZWVkc0FwcHJvdmFsLCB0b01vZGVsT3V0cHV0LCBwcm92aWRlck9wdGlvbnMgfSA9IG9wdGlvbnM7XG4gIHJldHVybiAodGFyZ2V0OiBCYXNlQWdlbnRDbGFzczx1bmtub3duPiwgcHJvcGVydHlLZXk6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2YgQmFzZUFnZW50Q2xhc3MpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUYXJnZXQgbXVzdCBiZSBhIHN1YmNsYXNzIG9mIEJhc2VBZ2VudENsYXNzXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IG1vZGVsTmFtZSA9IHRhcmdldC5jb25zdHJ1Y3Rvci5uYW1lLm1hdGNoKC8oLispQ2xhc3MkLyk/LlsxXTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gcHJvcGVydHlLZXk7XG5cbiAgICBjb25zdCBvcmlnaW5hbE1ldGhvZCA9IGRlc2NyaXB0b3IudmFsdWU7XG4gICAgY29uc3QgbWV0aG9kID0gYXN5bmMgZnVuY3Rpb24gKHRoaXM6IEJhc2VBZ2VudENsYXNzPHVua25vd24+LCAuLi5hcmdzOiB1bmtub3duW10pIHtcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFwidG9vbHM6IHttb2RlbH0ue21ldGhvZH0gd2l0aCBhcmdzOiB7YXJnc31cIiwge1xuICAgICAgICBtb2RlbDogbW9kZWxOYW1lLFxuICAgICAgICBtZXRob2Q6IG1ldGhvZE5hbWUsXG4gICAgICAgIGFyZ3MsXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH07XG4gICAgZGVzY3JpcHRvci52YWx1ZSA9IG1ldGhvZDtcblxuICAgIGNvbnN0IGRlZmF1bHRQYXRoID1cbiAgICAgIG1vZGVsTmFtZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gYCR7aW5mbGVjdGlvbi5jYW1lbGl6ZShcbiAgICAgICAgICAgIChtb2RlbE5hbWUgPz8gXCJcIikucmVwbGFjZSgvTW9kZWwkLywgXCJcIikucmVwbGFjZSgvRnJhbWUkLywgXCJcIiksXG4gICAgICAgICAgICB0cnVlLFxuICAgICAgICAgICl9LiR7aW5mbGVjdGlvbi5jYW1lbGl6ZShtZXRob2ROYW1lLCB0cnVlKX1gXG4gICAgICAgIDogaW5mbGVjdGlvbi5jYW1lbGl6ZShtZXRob2ROYW1lLCB0cnVlKTtcblxuICAgIHRvb2xEZWZpbml0aW9ucy5wdXNoKHtcbiAgICAgIG5hbWU6IG5hbWUgPz8gZGVmYXVsdFBhdGgsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHNjaGVtYSxcbiAgICAgIG5lZWRzQXBwcm92YWwsXG4gICAgICB0b01vZGVsT3V0cHV0LFxuICAgICAgcHJvdmlkZXJPcHRpb25zLFxuICAgICAgbWV0aG9kLFxuICAgICAgZnJvbTogdGFyZ2V0LmNvbnN0cnVjdG9yLm5hbWUsXG4gICAgfSk7XG4gIH07XG59XG4iXSwibmFtZXMiOlsidG9vbCIsImdldExvZ2dlciIsIlRvb2xMb29wQWdlbnQiLCJBc3luY0xvY2FsU3RvcmFnZSIsImluZmxlY3Rpb24iLCJjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSIsInRvb2xEZWZpbml0aW9ucyIsIkJhc2VBZ2VudENsYXNzIiwibG9nZ2VyIiwiX2FscyIsImFnZW50TmFtZSIsIm5hbWUiLCJzdG9yZSIsImdldFN0b3JlIiwidG9vbFNldCIsImZpbHRlciIsImRlZiIsImZyb20iLCJyZWR1Y2UiLCJhY2MiLCJkZXNjcmlwdGlvbiIsImlucHV0U2NoZW1hIiwic2NoZW1hIiwiaW5wdXQiLCJvdXRwdXRTY2hlbWEiLCJvdXRwdXQiLCJuZWVkc0FwcHJvdmFsIiwidG9Nb2RlbE91dHB1dCIsInByb3ZpZGVyT3B0aW9ucyIsImV4ZWN1dGUiLCJvcHRpb25zIiwiYm91bmQiLCJtZXRob2QiLCJiaW5kIiwibGVuZ3RoIiwidG9vbHMiLCJ1c2UiLCJjb25maWciLCJpbml0aWFsU3RhdHVzIiwiY2FsbGJhY2siLCJhZ2VudCIsInJ1biIsInRhcmdldCIsInByb3BlcnR5S2V5IiwiZGVzY3JpcHRvciIsIkVycm9yIiwibW9kZWxOYW1lIiwibWF0Y2giLCJtZXRob2ROYW1lIiwib3JpZ2luYWxNZXRob2QiLCJ2YWx1ZSIsImFyZ3MiLCJkZWJ1ZyIsIm1vZGVsIiwiYXBwbHkiLCJkZWZhdWx0UGF0aCIsInVuZGVmaW5lZCIsImNhbWVsaXplIiwicmVwbGFjZSIsInB1c2giXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLElBQUksUUFBUSx5QkFBeUI7QUFDOUMsU0FBU0MsU0FBUyxRQUFxQixtQkFBbUI7QUFFMUQsU0FBU0MsYUFBYSxRQUFRLEtBQUs7QUFDbkMsU0FBU0MsaUJBQWlC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
@@ -1,7 +1,11 @@
1
+ import { type Logger } from "@logtape/logtape";
1
2
  import type { Knex } from "knex";
2
3
  import type { DBPreset } from "../database/db";
3
4
  import { UpsertBuilder } from "../database/upsert-builder";
4
5
  export declare abstract class BaseFrameClass {
6
+ readonly frameName: string;
7
+ protected readonly logger: Logger;
8
+ constructor(frameName?: string);
5
9
  getDB(which: DBPreset): Knex;
6
10
  getUpsertBuilder(): UpsertBuilder;
7
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base-frame.d.ts","sourceRoot":"","sources":["../../src/api/base-frame.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,8BAAsB,cAAc;IAClC,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI5B,gBAAgB;CAGjB"}
1
+ {"version":3,"file":"base-frame.d.ts","sourceRoot":"","sources":["../../src/api/base-frame.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,8BAAsB,cAAc;aAGN,SAAS,EAAE,MAAM;IAF7C,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEN,SAAS,GAAE,MAA8B;IAIrE,KAAK,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAI5B,gBAAgB;CAGjB"}
@@ -1,7 +1,15 @@
1
+ import { getLogger } from "@logtape/logtape";
1
2
  // Static imports kept for non-async functions (getDB, getUpsertBuilder)
2
3
  import { DB } from "../database/db.js";
3
4
  import { UpsertBuilder } from "../database/upsert-builder.js";
5
+ import { convertDomainToCategory } from "../logger/category.js";
4
6
  export class BaseFrameClass {
7
+ frameName;
8
+ logger;
9
+ constructor(frameName = this.constructor.name){
10
+ this.frameName = frameName;
11
+ this.logger = getLogger(convertDomainToCategory(this.frameName, "frame"));
12
+ }
5
13
  getDB(which) {
6
14
  return DB.getDB(which);
7
15
  }
@@ -10,4 +18,4 @@ export class BaseFrameClass {
10
18
  }
11
19
  }
12
20
 
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvYmFzZS1mcmFtZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEtuZXggfSBmcm9tIFwia25leFwiO1xuaW1wb3J0IHR5cGUgeyBEQlByZXNldCB9IGZyb20gXCIuLi9kYXRhYmFzZS9kYlwiO1xuLy8gU3RhdGljIGltcG9ydHMga2VwdCBmb3Igbm9uLWFzeW5jIGZ1bmN0aW9ucyAoZ2V0REIsIGdldFVwc2VydEJ1aWxkZXIpXG5pbXBvcnQgeyBEQiB9IGZyb20gXCIuLi9kYXRhYmFzZS9kYlwiO1xuaW1wb3J0IHsgVXBzZXJ0QnVpbGRlciB9IGZyb20gXCIuLi9kYXRhYmFzZS91cHNlcnQtYnVpbGRlclwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUZyYW1lQ2xhc3Mge1xuICBnZXREQih3aGljaDogREJQcmVzZXQpOiBLbmV4IHtcbiAgICByZXR1cm4gREIuZ2V0REIod2hpY2gpO1xuICB9XG5cbiAgZ2V0VXBzZXJ0QnVpbGRlcigpIHtcbiAgICByZXR1cm4gbmV3IFVwc2VydEJ1aWxkZXIoKTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkRCIiwiVXBzZXJ0QnVpbGRlciIsIkJhc2VGcmFtZUNsYXNzIiwiZ2V0REIiLCJ3aGljaCIsImdldFVwc2VydEJ1aWxkZXIiXSwibWFwcGluZ3MiOiJBQUVBLHdFQUF3RTtBQUN4RSxTQUFTQSxFQUFFLFFBQVEsb0JBQWlCO0FBQ3BDLFNBQVNDLGFBQWEsUUFBUSxnQ0FBNkI7QUFFM0QsT0FBTyxNQUFlQztJQUNwQkMsTUFBTUMsS0FBZSxFQUFRO1FBQzNCLE9BQU9KLEdBQUdHLEtBQUssQ0FBQ0M7SUFDbEI7SUFFQUMsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSUo7SUFDYjtBQUNGIn0=
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvYmFzZS1mcmFtZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRMb2dnZXIsIHR5cGUgTG9nZ2VyIH0gZnJvbSBcIkBsb2d0YXBlL2xvZ3RhcGVcIjtcbmltcG9ydCB0eXBlIHsgS25leCB9IGZyb20gXCJrbmV4XCI7XG5pbXBvcnQgdHlwZSB7IERCUHJlc2V0IH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG4vLyBTdGF0aWMgaW1wb3J0cyBrZXB0IGZvciBub24tYXN5bmMgZnVuY3Rpb25zIChnZXREQiwgZ2V0VXBzZXJ0QnVpbGRlcilcbmltcG9ydCB7IERCIH0gZnJvbSBcIi4uL2RhdGFiYXNlL2RiXCI7XG5pbXBvcnQgeyBVcHNlcnRCdWlsZGVyIH0gZnJvbSBcIi4uL2RhdGFiYXNlL3Vwc2VydC1idWlsZGVyXCI7XG5pbXBvcnQgeyBjb252ZXJ0RG9tYWluVG9DYXRlZ29yeSB9IGZyb20gXCIuLi9sb2dnZXIvY2F0ZWdvcnlcIjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEJhc2VGcmFtZUNsYXNzIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBmcmFtZU5hbWU6IHN0cmluZyA9IHRoaXMuY29uc3RydWN0b3IubmFtZSkge1xuICAgIHRoaXMubG9nZ2VyID0gZ2V0TG9nZ2VyKGNvbnZlcnREb21haW5Ub0NhdGVnb3J5KHRoaXMuZnJhbWVOYW1lLCBcImZyYW1lXCIpKTtcbiAgfVxuXG4gIGdldERCKHdoaWNoOiBEQlByZXNldCk6IEtuZXgge1xuICAgIHJldHVybiBEQi5nZXREQih3aGljaCk7XG4gIH1cblxuICBnZXRVcHNlcnRCdWlsZGVyKCkge1xuICAgIHJldHVybiBuZXcgVXBzZXJ0QnVpbGRlcigpO1xuICB9XG59XG4iXSwibmFtZXMiOlsiZ2V0TG9nZ2VyIiwiREIiLCJVcHNlcnRCdWlsZGVyIiwiY29udmVydERvbWFpblRvQ2F0ZWdvcnkiLCJCYXNlRnJhbWVDbGFzcyIsImxvZ2dlciIsImZyYW1lTmFtZSIsIm5hbWUiLCJnZXREQiIsIndoaWNoIiwiZ2V0VXBzZXJ0QnVpbGRlciJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBUyxRQUFxQixtQkFBbUI7QUFHMUQsd0VBQXdFO0FBQ3hFLFNBQVNDLEVBQUUsUUFBUSxvQkFBaUI7QUFDcEMsU0FBU0MsYUFBYSxRQUFRLGdDQUE2QjtBQUMzRCxTQUFTQyx1QkFBdUIsUUFBUSx3QkFBcUI7QUFFN0QsT0FBTyxNQUFlQzs7SUFDREMsT0FBZTtJQUVsQyxZQUFZLEFBQWdCQyxZQUFvQixJQUFJLENBQUMsV0FBVyxDQUFDQyxJQUFJLENBQUU7YUFBM0NELFlBQUFBO1FBQzFCLElBQUksQ0FBQ0QsTUFBTSxHQUFHTCxVQUFVRyx3QkFBd0IsSUFBSSxDQUFDRyxTQUFTLEVBQUU7SUFDbEU7SUFFQUUsTUFBTUMsS0FBZSxFQUFRO1FBQzNCLE9BQU9SLEdBQUdPLEtBQUssQ0FBQ0M7SUFDbEI7SUFFQUMsbUJBQW1CO1FBQ2pCLE9BQU8sSUFBSVI7SUFDYjtBQUNGIn0=
@@ -1 +1 @@
1
- {"version":3,"file":"caster.d.ts","sourceRoot":"","sources":["../../src/api/caster.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA0B5C,wBAAgB,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CA8CvD;AAGD,wBAAgB,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,wEAKrD"}
1
+ {"version":3,"file":"caster.d.ts","sourceRoot":"","sources":["../../src/api/caster.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA0B5C,wBAAgB,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,CAmDvD;AAGD,wBAAgB,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,wEAKrD"}
@@ -52,7 +52,7 @@ export function caster(zodType, raw) {
52
52
  } else if (zodType instanceof z.ZodNullable) {
53
53
  // nullable
54
54
  return caster(zodType.def.innerType, raw);
55
- } else if (zodType instanceof z.ZodDate && new Date(raw).toString() !== "Invalid Date") {
55
+ } else if (zodType instanceof z.ZodDate && raw !== null && raw !== undefined && new Date(raw).toString() !== "Invalid Date") {
56
56
  // date
57
57
  return new Date(raw);
58
58
  } else {
@@ -68,4 +68,4 @@ export function fastifyCaster(schema) {
68
68
  }, schema);
69
69
  }
70
70
 
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvY2FzdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB0eXBlIHsgJFpvZFR5cGUgfSBmcm9tIFwiem9kL3Y0L2NvcmVcIjtcblxuZnVuY3Rpb24gaXNOdW1iZXJUeXBlKHpvZFR5cGU6ICRab2RUeXBlKTogem9kVHlwZSBpcyB6LlpvZE51bWJlciB7XG4gIHJldHVybiB6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2ROdW1iZXI7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbE9yT3B0aW9uYWwoem9kVHlwZTogJFpvZFR5cGUpOiB6b2RUeXBlIGlzIHouWm9kTnVsbGFibGUgfCB6LlpvZE9wdGlvbmFsIHtcbiAgcmV0dXJuIHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE51bGxhYmxlIHx8IHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE9wdGlvbmFsO1xufVxuXG4vLyBvcHRpb25hbCwgbnVsbGFibGUg66y06rSA7ZWY6rKMIFpvZE51bWJlciDssrTtgaxcbmZ1bmN0aW9uIGlzWm9kTnVtYmVyQW55d2F5KHpvZFR5cGU6ICRab2RUeXBlKSB7XG4gIGlmIChpc051bWJlclR5cGUoem9kVHlwZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIFpvZE51bGxhYmxlIOuYkOuKlCBab2RPcHRpb25hbOydvCDrlYxcbiAgaWYgKGlzTnVsbE9yT3B0aW9uYWwoem9kVHlwZSkgJiYgaXNOdW1iZXJUeXBlKHpvZFR5cGUuZGVmLmlubmVyVHlwZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLy8gWm9kVHlwZeydhCDsnbTsmqntlbQgcmF366W8IFR5cGUgQ29lcmNpbmdcbi8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTog7LqQ7Iqk7YyF7JeQ64qUIGFueeqwgCDtlYTsmpTtlaguXG5leHBvcnQgZnVuY3Rpb24gY2FzdGVyKHpvZFR5cGU6ICRab2RUeXBlLCByYXc6IGFueSk6IGFueSB7XG4gIGlmIChpc1pvZE51bWJlckFueXdheSh6b2RUeXBlKSAmJiB0eXBlb2YgcmF3ID09PSBcInN0cmluZ1wiKSB7XG4gICAgLy8gbnVtYmVyXG4gICAgcmV0dXJuIE51bWJlcihyYXcpO1xuICB9IGVsc2UgaWYgKFxuICAgIHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFVuaW9uICYmXG4gICAgem9kVHlwZS5vcHRpb25zLnNvbWUoKG9wdCkgPT4gaXNab2ROdW1iZXJBbnl3YXkob3B0KSlcbiAgKSB7XG4gICAgLy8gekFycmF5YWJsZSBOdW1iZXIg7LyA7J207IqkIOyymOumrFxuICAgIGlmIChBcnJheS5pc0FycmF5KHJhdykpIHtcbiAgICAgIGNvbnN0IG51bVR5cGUgPSB6b2RUeXBlLm9wdGlvbnMuZmluZCgob3B0KSA9PiBpc051bWJlclR5cGUob3B0KSk7XG4gICAgICBhc3NlcnQobnVtVHlwZSAhPT0gdW5kZWZpbmVkKTtcbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTog7LqQ7Iqk7YyF7JeQ64qUIGFueeqwgCDtlYTsmpTtlaguXG4gICAgICByZXR1cm4gcmF3Lm1hcCgoZWxlbTogYW55KSA9PiBjYXN0ZXIobnVtVHlwZSwgZWxlbSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gTnVtYmVyKHJhdyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZEJvb2xlYW4gJiYgKHJhdyA9PT0gXCJ0cnVlXCIgfHwgcmF3ID09PSBcImZhbHNlXCIpKSB7XG4gICAgLy8gYm9vbGVhblxuICAgIHJldHVybiByYXcgPT09IFwidHJ1ZVwiO1xuICB9IGVsc2UgaWYgKHJhdyAhPT0gbnVsbCAmJiBBcnJheS5pc0FycmF5KHJhdykgJiYgem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kQXJyYXkpIHtcbiAgICAvLyBhcnJheVxuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTog7LqQ7Iqk7YyF7JeQ64qUIGFueeqwgCDtlYTsmpTtlaguXG4gICAgcmV0dXJuIHJhdy5tYXAoKGVsZW06IGFueSkgPT4gY2FzdGVyKHpvZFR5cGUuZWxlbWVudCwgZWxlbSkpO1xuICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE9iamVjdCAmJiB0eXBlb2YgcmF3ID09PSBcIm9iamVjdFwiICYmIHJhdyAhPT0gbnVsbCkge1xuICAgIC8vIG9iamVjdFxuICAgIHJldHVybiBPYmplY3Qua2V5cyhyYXcpLnJlZHVjZShcbiAgICAgIChyLCByYXdLZXkpID0+IHtcbiAgICAgICAgcltyYXdLZXldID0gY2FzdGVyKHpvZFR5cGUuc2hhcGVbcmF3S2V5XSwgcmF3W3Jhd0tleV0pO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0sXG4gICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApO1xuICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE9wdGlvbmFsKSB7XG4gICAgLy8gb3B0aW9uYWxcbiAgICByZXR1cm4gY2FzdGVyKHpvZFR5cGUuZGVmLmlubmVyVHlwZSwgcmF3KTtcbiAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2ROdWxsYWJsZSkge1xuICAgIC8vIG51bGxhYmxlXG4gICAgcmV0dXJuIGNhc3Rlcih6b2RUeXBlLmRlZi5pbm5lclR5cGUsIHJhdyk7XG4gIH0gZWxzZSBpZiAoem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRGF0ZSAmJiBuZXcgRGF0ZShyYXcpLnRvU3RyaW5nKCkgIT09IFwiSW52YWxpZCBEYXRlXCIpIHtcbiAgICAvLyBkYXRlXG4gICAgcmV0dXJuIG5ldyBEYXRlKHJhdyk7XG4gIH0gZWxzZSB7XG4gICAgLy8g64KY66i47KeA64qUIOyymOumrCDslYjtlahcbiAgICByZXR1cm4gcmF3O1xuICB9XG59XG5cbi8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTog7LqQ7Iqk7YyF7JeQ64qUIGFueeqwgCDtlYTsmpTtlaguXG5leHBvcnQgZnVuY3Rpb24gZmFzdGlmeUNhc3RlcihzY2hlbWE6IHouWm9kT2JqZWN0PGFueT4pIHtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiDsupDsiqTtjIXsl5DripQgYW556rCAIO2VhOyalO2VqC5cbiAgcmV0dXJuIHoucHJlcHJvY2VzcygocmF3OiBhbnkpID0+IHtcbiAgICByZXR1cm4gY2FzdGVyKHNjaGVtYSwgcmF3KTtcbiAgfSwgc2NoZW1hKTtcbn1cbiJdLCJuYW1lcyI6WyJhc3NlcnQiLCJ6IiwiaXNOdW1iZXJUeXBlIiwiem9kVHlwZSIsIlpvZE51bWJlciIsImlzTnVsbE9yT3B0aW9uYWwiLCJab2ROdWxsYWJsZSIsIlpvZE9wdGlvbmFsIiwiaXNab2ROdW1iZXJBbnl3YXkiLCJkZWYiLCJpbm5lclR5cGUiLCJjYXN0ZXIiLCJyYXciLCJOdW1iZXIiLCJab2RVbmlvbiIsIm9wdGlvbnMiLCJzb21lIiwib3B0IiwiQXJyYXkiLCJpc0FycmF5IiwibnVtVHlwZSIsImZpbmQiLCJ1bmRlZmluZWQiLCJtYXAiLCJlbGVtIiwiWm9kQm9vbGVhbiIsIlpvZEFycmF5IiwiZWxlbWVudCIsIlpvZE9iamVjdCIsIk9iamVjdCIsImtleXMiLCJyZWR1Y2UiLCJyIiwicmF3S2V5Iiwic2hhcGUiLCJab2REYXRlIiwiRGF0ZSIsInRvU3RyaW5nIiwiZmFzdGlmeUNhc3RlciIsInNjaGVtYSIsInByZXByb2Nlc3MiXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFlBQVksU0FBUztBQUM1QixTQUFTQyxDQUFDLFFBQVEsTUFBTTtBQUd4QixTQUFTQyxhQUFhQyxPQUFpQjtJQUNyQyxPQUFPQSxtQkFBbUJGLEVBQUVHLFNBQVM7QUFDdkM7QUFFQSxTQUFTQyxp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
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvY2FzdGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSBcImFzc2VydFwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB0eXBlIHsgJFpvZFR5cGUgfSBmcm9tIFwiem9kL3Y0L2NvcmVcIjtcblxuZnVuY3Rpb24gaXNOdW1iZXJUeXBlKHpvZFR5cGU6ICRab2RUeXBlKTogem9kVHlwZSBpcyB6LlpvZE51bWJlciB7XG4gIHJldHVybiB6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2ROdW1iZXI7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbE9yT3B0aW9uYWwoem9kVHlwZTogJFpvZFR5cGUpOiB6b2RUeXBlIGlzIHouWm9kTnVsbGFibGUgfCB6LlpvZE9wdGlvbmFsIHtcbiAgcmV0dXJuIHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE51bGxhYmxlIHx8IHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE9wdGlvbmFsO1xufVxuXG4vLyBvcHRpb25hbCwgbnVsbGFibGUg66y06rSA7ZWY6rKMIFpvZE51bWJlciDssrTtgaxcbmZ1bmN0aW9uIGlzWm9kTnVtYmVyQW55d2F5KHpvZFR5cGU6ICRab2RUeXBlKSB7XG4gIGlmIChpc051bWJlclR5cGUoem9kVHlwZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIFpvZE51bGxhYmxlIOuYkOuKlCBab2RPcHRpb25hbOydvCDrlYxcbiAgaWYgKGlzTnVsbE9yT3B0aW9uYWwoem9kVHlwZSkgJiYgaXNOdW1iZXJUeXBlKHpvZFR5cGUuZGVmLmlubmVyVHlwZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLy8gWm9kVHlwZeydhCDsnbTsmqntlbQgcmF366W8IFR5cGUgQ29lcmNpbmdcbi8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTog7LqQ7Iqk7YyF7JeQ64qUIGFueeqwgCDtlYTsmpTtlaguXG5leHBvcnQgZnVuY3Rpb24gY2FzdGVyKHpvZFR5cGU6ICRab2RUeXBlLCByYXc6IGFueSk6IGFueSB7XG4gIGlmIChpc1pvZE51bWJlckFueXdheSh6b2RUeXBlKSAmJiB0eXBlb2YgcmF3ID09PSBcInN0cmluZ1wiKSB7XG4gICAgLy8gbnVtYmVyXG4gICAgcmV0dXJuIE51bWJlcihyYXcpO1xuICB9IGVsc2UgaWYgKFxuICAgIHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZFVuaW9uICYmXG4gICAgem9kVHlwZS5vcHRpb25zLnNvbWUoKG9wdCkgPT4gaXNab2ROdW1iZXJBbnl3YXkob3B0KSlcbiAgKSB7XG4gICAgLy8gekFycmF5YWJsZSBOdW1iZXIg7LyA7J207IqkIOyymOumrFxuICAgIGlmIChBcnJheS5pc0FycmF5KHJhdykpIHtcbiAgICAgIGNvbnN0IG51bVR5cGUgPSB6b2RUeXBlLm9wdGlvbnMuZmluZCgob3B0KSA9PiBpc051bWJlclR5cGUob3B0KSk7XG4gICAgICBhc3NlcnQobnVtVHlwZSAhPT0gdW5kZWZpbmVkKTtcbiAgICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTog7LqQ7Iqk7YyF7JeQ64qUIGFueeqwgCDtlYTsmpTtlaguXG4gICAgICByZXR1cm4gcmF3Lm1hcCgoZWxlbTogYW55KSA9PiBjYXN0ZXIobnVtVHlwZSwgZWxlbSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gTnVtYmVyKHJhdyk7XG4gICAgfVxuICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZEJvb2xlYW4gJiYgKHJhdyA9PT0gXCJ0cnVlXCIgfHwgcmF3ID09PSBcImZhbHNlXCIpKSB7XG4gICAgLy8gYm9vbGVhblxuICAgIHJldHVybiByYXcgPT09IFwidHJ1ZVwiO1xuICB9IGVsc2UgaWYgKHJhdyAhPT0gbnVsbCAmJiBBcnJheS5pc0FycmF5KHJhdykgJiYgem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kQXJyYXkpIHtcbiAgICAvLyBhcnJheVxuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9FeHBsaWNpdEFueTog7LqQ7Iqk7YyF7JeQ64qUIGFueeqwgCDtlYTsmpTtlaguXG4gICAgcmV0dXJuIHJhdy5tYXAoKGVsZW06IGFueSkgPT4gY2FzdGVyKHpvZFR5cGUuZWxlbWVudCwgZWxlbSkpO1xuICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE9iamVjdCAmJiB0eXBlb2YgcmF3ID09PSBcIm9iamVjdFwiICYmIHJhdyAhPT0gbnVsbCkge1xuICAgIC8vIG9iamVjdFxuICAgIHJldHVybiBPYmplY3Qua2V5cyhyYXcpLnJlZHVjZShcbiAgICAgIChyLCByYXdLZXkpID0+IHtcbiAgICAgICAgcltyYXdLZXldID0gY2FzdGVyKHpvZFR5cGUuc2hhcGVbcmF3S2V5XSwgcmF3W3Jhd0tleV0pO1xuICAgICAgICByZXR1cm4gcjtcbiAgICAgIH0sXG4gICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApO1xuICB9IGVsc2UgaWYgKHpvZFR5cGUgaW5zdGFuY2VvZiB6LlpvZE9wdGlvbmFsKSB7XG4gICAgLy8gb3B0aW9uYWxcbiAgICByZXR1cm4gY2FzdGVyKHpvZFR5cGUuZGVmLmlubmVyVHlwZSwgcmF3KTtcbiAgfSBlbHNlIGlmICh6b2RUeXBlIGluc3RhbmNlb2Ygei5ab2ROdWxsYWJsZSkge1xuICAgIC8vIG51bGxhYmxlXG4gICAgcmV0dXJuIGNhc3Rlcih6b2RUeXBlLmRlZi5pbm5lclR5cGUsIHJhdyk7XG4gIH0gZWxzZSBpZiAoXG4gICAgem9kVHlwZSBpbnN0YW5jZW9mIHouWm9kRGF0ZSAmJlxuICAgIHJhdyAhPT0gbnVsbCAmJlxuICAgIHJhdyAhPT0gdW5kZWZpbmVkICYmXG4gICAgbmV3IERhdGUocmF3KS50b1N0cmluZygpICE9PSBcIkludmFsaWQgRGF0ZVwiXG4gICkge1xuICAgIC8vIGRhdGVcbiAgICByZXR1cm4gbmV3IERhdGUocmF3KTtcbiAgfSBlbHNlIHtcbiAgICAvLyDrgpjrqLjsp4DripQg7LKY66asIOyViO2VqFxuICAgIHJldHVybiByYXc7XG4gIH1cbn1cblxuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0V4cGxpY2l0QW55OiDsupDsiqTtjIXsl5DripQgYW556rCAIO2VhOyalO2VqC5cbmV4cG9ydCBmdW5jdGlvbiBmYXN0aWZ5Q2FzdGVyKHNjaGVtYTogei5ab2RPYmplY3Q8YW55Pikge1xuICAvLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IOy6kOyKpO2MheyXkOuKlCBhbnnqsIAg7ZWE7JqU7ZWoLlxuICByZXR1cm4gei5wcmVwcm9jZXNzKChyYXc6IGFueSkgPT4ge1xuICAgIHJldHVybiBjYXN0ZXIoc2NoZW1hLCByYXcpO1xuICB9LCBzY2hlbWEpO1xufVxuIl0sIm5hbWVzIjpbImFzc2VydCIsInoiLCJpc051bWJlclR5cGUiLCJ6b2RUeXBlIiwiWm9kTnVtYmVyIiwiaXNOdWxsT3JPcHRpb25hbCIsIlpvZE51bGxhYmxlIiwiWm9kT3B0aW9uYWwiLCJpc1pvZE51bWJlckFueXdheSIsImRlZiIsImlubmVyVHlwZSIsImNhc3RlciIsInJhdyIsIk51bWJlciIsIlpvZFVuaW9uIiwib3B0aW9ucyIsInNvbWUiLCJvcHQiLCJBcnJheSIsImlzQXJyYXkiLCJudW1UeXBlIiwiZmluZCIsInVuZGVmaW5lZCIsIm1hcCIsImVsZW0iLCJab2RCb29sZWFuIiwiWm9kQXJyYXkiLCJlbGVtZW50IiwiWm9kT2JqZWN0IiwiT2JqZWN0Iiwia2V5cyIsInJlZHVjZSIsInIiLCJyYXdLZXkiLCJzaGFwZSIsIlpvZERhdGUiLCJEYXRlIiwidG9TdHJpbmciLCJmYXN0aWZ5Q2FzdGVyIiwic2NoZW1hIiwicHJlcHJvY2VzcyJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsWUFBWSxTQUFTO0FBQzVCLFNBQVNDLENBQUMsUUFBUSxNQUFNO0FBR3hCLFNBQVND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
@@ -8,6 +8,8 @@ import type { FastifyInstance, FastifyReply, FastifyRequest, FastifyServerOption
8
8
  import type { QsPluginOptions } from "fastify-qs";
9
9
  import type { SsePluginOptions } from "fastify-sse-v2/lib/types";
10
10
  import type { Knex } from "knex";
11
+ import type { CacheConfig } from "../cache/types";
12
+ import type { SonamuLoggingOptions } from "../logger/configure";
11
13
  import type { StorageConfig } from "../storage/types";
12
14
  import type { WorkflowOptions } from "../tasks/workflow-manager";
13
15
  import type { Executable, SonamuFastifyConfig } from "../types/types";
@@ -15,7 +17,7 @@ import type { AuthContext, Context } from "./context";
15
17
  export type DatabaseConfig = Omit<Knex.Config, "connection"> & {
16
18
  connection?: Knex.PgConnectionConfig;
17
19
  };
18
- export type SonamuConfig = {
20
+ export type SonamuConfig<TSinkId extends string = string, TFilterId extends string = string> = {
19
21
  projectName?: string;
20
22
  api: {
21
23
  dir: string;
@@ -28,7 +30,7 @@ export type SonamuConfig = {
28
30
  targets: string[];
29
31
  };
30
32
  database: {
31
- database?: "postgresql";
33
+ database?: "pg" | "pgnative";
32
34
  name: string;
33
35
  defaultOptions: DatabaseConfig;
34
36
  environments?: {
@@ -40,12 +42,13 @@ export type SonamuConfig = {
40
42
  test?: DatabaseConfig;
41
43
  };
42
44
  };
45
+ logging?: false | SonamuLoggingOptions<TSinkId, TFilterId>;
43
46
  server: SonamuServerOptions;
44
47
  tasks?: SonamuTaskOptions;
45
48
  };
46
49
  export type SonamuServerOptions = {
47
50
  baseUrl?: string;
48
- fastify?: FastifyServerOptions;
51
+ fastify?: Omit<FastifyServerOptions, "logger">;
49
52
  listen?: {
50
53
  port: number;
51
54
  host?: string;
@@ -83,6 +86,26 @@ export type SonamuServerOptions = {
83
86
  * ```
84
87
  */
85
88
  storage?: StorageConfig;
89
+ /**
90
+ * Cache 설정 (BentoCache 기반)
91
+ *
92
+ * @example
93
+ * ```typescript
94
+ * import { drivers, store } from "sonamu/cache";
95
+ *
96
+ * cache: {
97
+ * default: 'main',
98
+ * stores: {
99
+ * main: store()
100
+ * .useL1Layer(drivers.memory({ maxSize: '100mb' }))
101
+ * .useL2Layer(drivers.redis({ connection: redisConnection }))
102
+ * .useBus(drivers.redisBus({ connection: redisConnection }))
103
+ * },
104
+ * ttl: '1h',
105
+ * }
106
+ * ```
107
+ */
108
+ cache?: CacheConfig;
86
109
  lifecycle?: {
87
110
  onStart?: (server: FastifyInstance) => Promise<void> | void;
88
111
  onShutdown?: (server: FastifyInstance) => Promise<void> | void;
@@ -94,6 +117,15 @@ export type SonamuTaskOptions = {
94
117
  workerOptions?: WorkflowOptions;
95
118
  contextProvider: (defaultContext: Pick<Context, "reply" | "request" | "headers" | "createSSE" | "naiteStore"> & AuthContext) => Context | Promise<Context>;
96
119
  };
120
+ export type SonamuSSROptions = {
121
+ /**
122
+ * Hydration 전략
123
+ * - 'none': 항상 새로 렌더링 (hydration mismatch 걱정 없음, 권장)
124
+ * - 'full': React hydration 시도 (서버 HTML 재사용, mismatch 주의)
125
+ * @default 'none'
126
+ */
127
+ hydration?: "none" | "full";
128
+ };
97
129
  export declare function defineConfig(config: Executable<SonamuConfig>): Promise<SonamuConfig>;
98
130
  /**
99
131
  * sonamu.config.ts 파일을 로드합니다.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/api/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/api/config.ts"],"names":[],"mappings":"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"}
@@ -26,4 +26,4 @@ export function defineConfig(config) {
26
26
  return config;
27
27
  }
28
28
 
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmFzdGlmeUNvcnNPcHRpb25zIH0gZnJvbSBcIkBmYXN0aWZ5L2NvcnNcIjtcbmltcG9ydCB0eXBlIHsgRmFzdGlmeUZvcm1ib2R5T3B0aW9ucyB9IGZyb20gXCJAZmFzdGlmeS9mb3JtYm9keVwiO1xuaW1wb3J0IHR5cGUgeyBGYXN0aWZ5TXVsdGlwYXJ0T3B0aW9ucyB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcbmltcG9ydCB0eXBlIHsgRGVzZXJpYWxpemVGdW5jdGlvbiwgU2VyaWFsaXplRnVuY3Rpb24gfSBmcm9tIFwiQGZhc3RpZnkvcGFzc3BvcnQvZGlzdC9BdXRoZW50aWNhdG9yXCI7XG5pbXBvcnQgdHlwZSB7IFNlY3VyZVNlc3Npb25QbHVnaW5PcHRpb25zIH0gZnJvbSBcIkBmYXN0aWZ5L3NlY3VyZS1zZXNzaW9uXCI7XG5pbXBvcnQgdHlwZSB7IEZhc3RpZnlTdGF0aWNPcHRpb25zIH0gZnJvbSBcIkBmYXN0aWZ5L3N0YXRpY1wiO1xuaW1wb3J0IHR5cGUgeyBGYXN0aWZ5SW5zdGFuY2UsIEZhc3RpZnlSZXBseSwgRmFzdGlmeVJlcXVlc3QsIEZhc3RpZnlTZXJ2ZXJPcHRpb25zIH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCB0eXBlIHsgUXNQbHVnaW5PcHRpb25zIH0gZnJvbSBcImZhc3RpZnktcXNcIjtcbmltcG9ydCB0eXBlIHsgU3NlUGx1Z2luT3B0aW9ucyB9IGZyb20gXCJmYXN0aWZ5LXNzZS12Mi9saWIvdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgS25leCB9IGZyb20gXCJrbmV4XCI7XG5pbXBvcnQgdHlwZSB7IFN0b3JhZ2VDb25maWcgfSBmcm9tIFwiLi4vc3RvcmFnZS90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBXb3JrZmxvd09wdGlvbnMgfSBmcm9tIFwiLi4vdGFza3Mvd29ya2Zsb3ctbWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBFeGVjdXRhYmxlLCBTb25hbXVGYXN0aWZ5Q29uZmlnIH0gZnJvbSBcIi4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IEF1dGhDb250ZXh0LCBDb250ZXh0IH0gZnJvbSBcIi4vY29udGV4dFwiO1xuXG5leHBvcnQgdHlwZSBEYXRhYmFzZUNvbmZpZyA9IE9taXQ8S25leC5Db25maWcsIFwiY29ubmVjdGlvblwiPiAmIHtcbiAgY29ubmVjdGlvbj86IEtuZXguUGdDb25uZWN0aW9uQ29uZmlnO1xufTtcblxuZXhwb3J0IHR5cGUgU29uYW11Q29uZmlnID0ge1xuICBwcm9qZWN0TmFtZT86IHN0cmluZztcblxuICBhcGk6IHtcbiAgICBkaXI6IHN0cmluZztcbiAgICByb3V0ZToge1xuICAgICAgcHJlZml4OiBzdHJpbmc7XG4gICAgfTtcbiAgICB0aW1lem9uZT86IHN0cmluZztcbiAgfTtcbiAgc3luYzoge1xuICAgIHRhcmdldHM6IHN0cmluZ1tdOyAvLyBcIndlYlwiLCBcImFwcFwiIOuTsVxuICB9O1xuXG4gIGRhdGFiYXNlOiB7XG4gICAgLy8g642w7J207YSw67Kg7J207IqkXG4gICAgZGF0YWJhc2U/OiBcInBvc3RncmVzcWxcIjtcbiAgICAvLyDquLDrs7gg642w7J207YSw67Kg7J207IqkIOydtOumhFxuICAgIG5hbWU6IHN0cmluZztcbiAgICAvLyDrqqjrk6Ag7ZmY6rK97JeQIOyggeyaqeuQoCDquLDrs7ggS25leCDsmLXshZhcbiAgICBkZWZhdWx0T3B0aW9uczogRGF0YWJhc2VDb25maWc7XG4gICAgLy8g7ZmY6rK967OEIOyEpOyglVxuICAgIGVudmlyb25tZW50cz86IHtcbiAgICAgIGRldmVsb3BtZW50PzogRGF0YWJhc2VDb25maWc7XG4gICAgICBkZXZlbG9wbWVudF9zbGF2ZT86IERhdGFiYXNlQ29uZmlnO1xuICAgICAgcHJvZHVjdGlvbj86IERhdGFiYXNlQ29uZmlnO1xuICAgICAgcHJvZHVjdGlvbl9zbGF2ZT86IERhdGFiYXNlQ29uZmlnO1xuICAgICAgZml4dHVyZT86IERhdGFiYXNlQ29uZmlnO1xuICAgICAgdGVzdD86IERhdGFiYXNlQ29uZmlnO1xuICAgIH07XG4gIH07XG5cbiAgc2VydmVyOiBTb25hbXVTZXJ2ZXJPcHRpb25zO1xuICB0YXNrcz86IFNvbmFtdVRhc2tPcHRpb25zO1xufTtcblxuZXhwb3J0IHR5cGUgU29uYW11U2VydmVyT3B0aW9ucyA9IHtcbiAgLy8g7ZSE66Gc7KCd7Yq4IOyZuOu2gOyXkOyEnCDsoJHqt7ztlaAg7IiYIOyeiOuKlCBVUkwuIOq4sOuzuOqwkuydgCB7c2VydmVyLmxpc3Rlbi5ob3N0fTp7c2VydmVyLmxpc3Rlbi5wb3J0fSDsnoXri4jri6QuXG4gIGJhc2VVcmw/OiBzdHJpbmc7XG5cbiAgZmFzdGlmeT86IEZhc3RpZnlTZXJ2ZXJPcHRpb25zO1xuXG4gIGxpc3Rlbj86IHtcbiAgICBwb3J0OiBudW1iZXI7XG4gICAgaG9zdD86IHN0cmluZztcbiAgfTtcblxuICBwbHVnaW5zPzoge1xuICAgIGNvcnM/OiBib29sZWFuIHwgRmFzdGlmeUNvcnNPcHRpb25zO1xuICAgIGZvcm1ib2R5PzogYm9vbGVhbiB8IEZhc3RpZnlGb3JtYm9keU9wdGlvbnM7XG4gICAgbXVsdGlwYXJ0PzogYm9vbGVhbiB8IEZhc3RpZnlNdWx0aXBhcnRPcHRpb25zO1xuICAgIHFzPzogYm9vbGVhbiB8IFFzUGx1Z2luT3B0aW9ucztcbiAgICBzc2U/OiBib29sZWFuIHwgU3NlUGx1Z2luT3B0aW9ucztcbiAgICBzdGF0aWM/OiBib29sZWFuIHwgRmFzdGlmeVN0YXRpY09wdGlvbnM7XG4gICAgc2Vzc2lvbj86IGJvb2xlYW4gfCBTZWN1cmVTZXNzaW9uUGx1Z2luT3B0aW9ucztcblxuICAgIGN1c3RvbT86IChzZXJ2ZXI6IEZhc3RpZnlJbnN0YW5jZSkgPT4gdm9pZDtcbiAgfTtcblxuICBhdXRoPzpcbiAgICB8IGJvb2xlYW5cbiAgICB8IHtcbiAgICAgICAgdXNlclNlcmlhbGl6ZXI6IFNlcmlhbGl6ZUZ1bmN0aW9uPHVua25vd24sIHVua25vd24+O1xuICAgICAgICB1c2VyRGVzZXJpYWxpemVyOiBEZXNlcmlhbGl6ZUZ1bmN0aW9uPHVua25vd24sIHVua25vd24+O1xuICAgICAgfTtcblxuICBhcGlDb25maWc6IFNvbmFtdUZhc3RpZnlDb25maWc7XG5cbiAgLyoqXG4gICAqIFN0b3JhZ2Ug65Oc65287J2067KEIOyEpOyglS5cbiAgICogRFJJVkVfRElTSyDtmZjqsr3rs4DsiJjroZwg7IKs7Jqp7ZWgIOuTnOudvOydtOuyhOulvCDshKDtg53tlanri4jri6QuICjquLDrs7jqsJI6IGRlZmF1bHQg7YKkKVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGltcG9ydCB7IGRyaXZlcnMgfSBmcm9tIFwic29uYW11L3N0b3JhZ2VcIjtcbiAgICpcbiAgICogc3RvcmFnZToge1xuICAgKiAgIGRlZmF1bHQ6IHByb2Nlc3MuZW52LkRSSVZFX0RJU0sgPz8gXCJmc1wiLFxuICAgKiAgIGRyaXZlcnM6IHtcbiAgICogICAgIGZzOiBkcml2ZXJzLmZzKHsgbG9jYXRpb246IFwiLi91cGxvYWRzXCIsIHVybEJ1aWxkZXI6IHsgLi4uIH0gfSksXG4gICAqICAgICBzMzogZHJpdmVycy5zMyh7IGJ1Y2tldDogXCJteS1idWNrZXRcIiwgcmVnaW9uOiBcImFwLW5vcnRoZWFzdC0yXCIsIC4uLiB9KSxcbiAgICogICB9XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBzdG9yYWdlPzogU3RvcmFnZUNvbmZpZztcblxuICBsaWZlY3ljbGU/OiB7XG4gICAgb25TdGFydD86IChzZXJ2ZXI6IEZhc3RpZnlJbnN0YW5jZSkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG4gICAgb25TaHV0ZG93bj86IChzZXJ2ZXI6IEZhc3RpZnlJbnN0YW5jZSkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG4gICAgb25FcnJvcj86IChlcnJvcjogRXJyb3IsIHJlcXVlc3Q6IEZhc3RpZnlSZXF1ZXN0LCByZXBseTogRmFzdGlmeVJlcGx5KSA9PiBQcm9taXNlPHZvaWQ+IHwgdm9pZDtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFNvbmFtdVRhc2tPcHRpb25zID0ge1xuICAvLyB3b3JrZXLrpbwg7IKs7Jqp7ZWg7KeAIOyXrOu2gCwg6riw67O47KCB7Jy866GcIGRhZW1vbiDrqqjrk5zsl5DshJzrp4wg7IKs7Jqp65CoLlxuICBlbmFibGVXb3JrZXI/OiBib29sZWFuO1xuICB3b3JrZXJPcHRpb25zPzogV29ya2Zsb3dPcHRpb25zO1xuICBjb250ZXh0UHJvdmlkZXI6IChcbiAgICBkZWZhdWx0Q29udGV4dDogUGljazxDb250ZXh0LCBcInJlcGx5XCIgfCBcInJlcXVlc3RcIiB8IFwiaGVhZGVyc1wiIHwgXCJjcmVhdGVTU0VcIiB8IFwibmFpdGVTdG9yZVwiPiAmXG4gICAgICBBdXRoQ29udGV4dCxcbiAgKSA9PiBDb250ZXh0IHwgUHJvbWlzZTxDb250ZXh0Pjtcbn07XG5cbi8vIE5PVEUoSGF6ZSwgMjUxMjA5KTogY29uZmln7JeQ64qUIFQsIFByb21pc2U8VD4sICgpID0+IFQsICgpID0+IFByb21pc2U8VD7qsIAg66qo65GQIOyYrCDsiJgg7J6I7Ja07JW8IO2VqC5cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVDb25maWcoY29uZmlnOiBFeGVjdXRhYmxlPFNvbmFtdUNvbmZpZz4pOiBQcm9taXNlPFNvbmFtdUNvbmZpZz4ge1xuICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjb25maWcoKSk7XG4gIH1cblxuICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZyk7XG59XG5cbi8qKlxuICogc29uYW11LmNvbmZpZy50cyDtjIzsnbzsnYQg66Gc65Oc7ZWp64uI64ukLlxuICog7J20IOyEpOyglSDtjIzsnbzsnYAg7ZmY6rK97JeQIOuUsOudvCDri6Trpbgg6rK966Gc7JeQIOyeiOydhCDsiJgg7J6I7Iq164uI64ukLlxuICogZGlzdOulvCDruYzrk5ztlZjripQg7ZmY6rK97J20652866m0IGRpc3Qg67CU66GcIOyVhOuemOyXkCDsnojsnYQg6rKD7J206rOgKGNsaS13cmFwcGVyLnRz7JeQ7IScIOu5jOuTnCksXG4gKiDqt7jroIfsp4Ag7JWK7J2AIO2ZmOqyveydtOudvOuptCDtlITroZzsoJ3tirgg66Oo7Yq47JeQIOyeiOydhCDqsoPsnoXri4jri6QuXG4gKlxuICog7J20IO2VqOyImOuKlCDsnZjrj4TsoIHsnLzroZwg64uk66W4IOydmOyhtOyEseydmCDsgqzsmqnsnYQg7LWc64yA7ZWcIOuwsOygnO2VmOyYgOyKteuLiOuLpC5cbiAqIOydtOuKlCDsi6Ttlokg7LSI6riw7JeQIOy1nOuMgO2VnCDruaDrpbTqsowg7ISk7KCV7J2EIOydveyWtOyYrCDsiJgg7J6I64+E66GdIO2VmOq4sCDsnITtlajsnoXri4jri6QuXG4gKiDrlLDrnbzshJwg6rK966GcIGNvbmNhdOqzvCBVUkwgc2NoZW1lIOy2lOqwgOuPhCDri6jsiJztlZwg66y47J6Q7Je0IOyhsOyekeycvOuhnCDsspjrpqztlZjsmIDsirXri4jri6QuXG4gKlxuICogQHBhcmFtIHJvb3RQYXRoXG4gKiBAcmV0dXJuc1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZENvbmZpZyhyb290UGF0aDogc3RyaW5nKTogUHJvbWlzZTxTb25hbXVDb25maWc+IHtcbiAgY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgY29uc3QgY29uZmlnUGF0aCA9XG4gICAgcHJvY2Vzcy5lbnYuSE9UID09PSBcInllc1wiIHx8IHByb2Nlc3MuZW52LlZJVEVTVCA9PT0gXCJ0cnVlXCJcbiAgICAgID8gYCR7cm9vdFBhdGh9L3NyYy9zb25hbXUuY29uZmlnLnRzYFxuICAgICAgOiBgJHtyb290UGF0aH0vZGlzdC9zb25hbXUuY29uZmlnLmpzYDtcbiAgY29uc3QgeyBkZWZhdWx0OiBjb25maWcgfSA9IGF3YWl0IGltcG9ydChgZmlsZTovLyR7Y29uZmlnUGF0aH1gKTtcbiAgY29uc3QgaW1wb3J0VGltZSA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnQ7XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInRlc3RcIiAmJlxuICAgIGNvbnNvbGUubG9nKGBbVElNSU5HXSBsb2FkQ29uZmlnIHRvb2sgJHtpbXBvcnRUaW1lLnRvRml4ZWQoMil9bXNgKTtcbiAgcmV0dXJuIGNvbmZpZztcbn1cbiJdLCJuYW1lcyI6WyJkZWZpbmVDb25maWciLCJjb25maWciLCJQcm9taXNlIiwicmVzb2x2ZSIsImxvYWRDb25maWciLCJyb290UGF0aCIsInN0YXJ0IiwicGVyZm9ybWFuY2UiLCJub3ciLCJjb25maWdQYXRoIiwicHJvY2VzcyIsImVudiIsIkhPVCIsIlZJVEVTVCIsImRlZmF1bHQiLCJpbXBvcnRUaW1lIiwiTk9ERV9FTlYiLCJjb25zb2xlIiwibG9nIiwidG9GaXhlZCJdLCJtYXBwaW5ncyI6IkFBMkhBLHVGQUF1RjtBQUN2RixPQUFPLFNBQVNBLGFBQWFDLE1BQWdDO0lBQzNELElBQUksT0FBT0EsV0FBVyxZQUFZO1FBQ2hDLE9BQU9DLFFBQVFDLE9BQU8sQ0FBQ0Y7SUFDekI7SUFFQSxPQUFPQyxRQUFRQyxPQUFPLENBQUNGO0FBQ3pCO0FBRUE7Ozs7Ozs7Ozs7OztDQVlDLEdBQ0QsT0FBTyxlQUFlRyxXQUFXQyxRQUFnQjtJQUMvQyxNQUFNQyxRQUFRQyxZQUFZQyxHQUFHO0lBQzdCLE1BQU1DLGFBQ0pDLFFBQVFDLEdBQUcsQ0FBQ0MsR0FBRyxLQUFLLFNBQVNGLFFBQVFDLEdBQUcsQ0FBQ0UsTUFBTSxLQUFLLFNBQ2hELEdBQUdSLFNBQVMscUJBQXFCLENBQUMsR0FDbEMsR0FBR0EsU0FBUyxzQkFBc0IsQ0FBQztJQUN6QyxNQUFNLEVBQUVTLFNBQVNiLE1BQU0sRUFBRSxHQUFHLE1BQU0sTUFBTSxDQUFDLENBQUMsT0FBTyxFQUFFUSxZQUFZO0lBQy9ELE1BQU1NLGFBQWFSLFlBQVlDLEdBQUcsS0FBS0Y7SUFDdkNJLFFBQVFDLEdBQUcsQ0FBQ0ssUUFBUSxLQUFLLFVBQ3ZCQyxRQUFRQyxHQUFHLENBQUMsQ0FBQyx5QkFBeUIsRUFBRUgsV0FBV0ksT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ25FLE9BQU9sQjtBQUNUIn0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvY29uZmlnLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRmFzdGlmeUNvcnNPcHRpb25zIH0gZnJvbSBcIkBmYXN0aWZ5L2NvcnNcIjtcbmltcG9ydCB0eXBlIHsgRmFzdGlmeUZvcm1ib2R5T3B0aW9ucyB9IGZyb20gXCJAZmFzdGlmeS9mb3JtYm9keVwiO1xuaW1wb3J0IHR5cGUgeyBGYXN0aWZ5TXVsdGlwYXJ0T3B0aW9ucyB9IGZyb20gXCJAZmFzdGlmeS9tdWx0aXBhcnRcIjtcbmltcG9ydCB0eXBlIHsgRGVzZXJpYWxpemVGdW5jdGlvbiwgU2VyaWFsaXplRnVuY3Rpb24gfSBmcm9tIFwiQGZhc3RpZnkvcGFzc3BvcnQvZGlzdC9BdXRoZW50aWNhdG9yXCI7XG5pbXBvcnQgdHlwZSB7IFNlY3VyZVNlc3Npb25QbHVnaW5PcHRpb25zIH0gZnJvbSBcIkBmYXN0aWZ5L3NlY3VyZS1zZXNzaW9uXCI7XG5pbXBvcnQgdHlwZSB7IEZhc3RpZnlTdGF0aWNPcHRpb25zIH0gZnJvbSBcIkBmYXN0aWZ5L3N0YXRpY1wiO1xuaW1wb3J0IHR5cGUgeyBGYXN0aWZ5SW5zdGFuY2UsIEZhc3RpZnlSZXBseSwgRmFzdGlmeVJlcXVlc3QsIEZhc3RpZnlTZXJ2ZXJPcHRpb25zIH0gZnJvbSBcImZhc3RpZnlcIjtcbmltcG9ydCB0eXBlIHsgUXNQbHVnaW5PcHRpb25zIH0gZnJvbSBcImZhc3RpZnktcXNcIjtcbmltcG9ydCB0eXBlIHsgU3NlUGx1Z2luT3B0aW9ucyB9IGZyb20gXCJmYXN0aWZ5LXNzZS12Mi9saWIvdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgS25leCB9IGZyb20gXCJrbmV4XCI7XG5pbXBvcnQgdHlwZSB7IENhY2hlQ29uZmlnIH0gZnJvbSBcIi4uL2NhY2hlL3R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNvbmFtdUxvZ2dpbmdPcHRpb25zIH0gZnJvbSBcIi4uL2xvZ2dlci9jb25maWd1cmVcIjtcbmltcG9ydCB0eXBlIHsgU3RvcmFnZUNvbmZpZyB9IGZyb20gXCIuLi9zdG9yYWdlL3R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFdvcmtmbG93T3B0aW9ucyB9IGZyb20gXCIuLi90YXNrcy93b3JrZmxvdy1tYW5hZ2VyXCI7XG5pbXBvcnQgdHlwZSB7IEV4ZWN1dGFibGUsIFNvbmFtdUZhc3RpZnlDb25maWcgfSBmcm9tIFwiLi4vdHlwZXMvdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgQXV0aENvbnRleHQsIENvbnRleHQgfSBmcm9tIFwiLi9jb250ZXh0XCI7XG5cbmV4cG9ydCB0eXBlIERhdGFiYXNlQ29uZmlnID0gT21pdDxLbmV4LkNvbmZpZywgXCJjb25uZWN0aW9uXCI+ICYge1xuICBjb25uZWN0aW9uPzogS25leC5QZ0Nvbm5lY3Rpb25Db25maWc7XG59O1xuXG5leHBvcnQgdHlwZSBTb25hbXVDb25maWc8VFNpbmtJZCBleHRlbmRzIHN0cmluZyA9IHN0cmluZywgVEZpbHRlcklkIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nPiA9IHtcbiAgcHJvamVjdE5hbWU/OiBzdHJpbmc7XG5cbiAgYXBpOiB7XG4gICAgZGlyOiBzdHJpbmc7XG4gICAgcm91dGU6IHtcbiAgICAgIHByZWZpeDogc3RyaW5nO1xuICAgIH07XG4gICAgdGltZXpvbmU/OiBzdHJpbmc7XG4gIH07XG4gIHN5bmM6IHtcbiAgICB0YXJnZXRzOiBzdHJpbmdbXTsgLy8gXCJ3ZWJcIiwgXCJhcHBcIiDrk7FcbiAgfTtcblxuICBkYXRhYmFzZToge1xuICAgIC8vIOuNsOydtO2EsOuyoOydtOyKpChwZ+uKlCBwZyDrqqjrk4gsIHBnbmF0aXZl64qUIHBnLW5hdGl2ZSDrqqjrk4jsnZgg7ISk7LmY6rCAIO2VhOyalO2VqeuLiOuLpC4pXG4gICAgZGF0YWJhc2U/OiBcInBnXCIgfCBcInBnbmF0aXZlXCI7XG4gICAgLy8g6riw67O4IOuNsOydtO2EsOuyoOydtOyKpCDsnbTrpoRcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgLy8g66qo65OgIO2ZmOqyveyXkCDsoIHsmqnrkKAg6riw67O4IEtuZXgg7Ji17IWYXG4gICAgZGVmYXVsdE9wdGlvbnM6IERhdGFiYXNlQ29uZmlnO1xuICAgIC8vIO2ZmOqyveuzhCDshKTsoJVcbiAgICBlbnZpcm9ubWVudHM/OiB7XG4gICAgICBkZXZlbG9wbWVudD86IERhdGFiYXNlQ29uZmlnO1xuICAgICAgZGV2ZWxvcG1lbnRfc2xhdmU/OiBEYXRhYmFzZUNvbmZpZztcbiAgICAgIHByb2R1Y3Rpb24/OiBEYXRhYmFzZUNvbmZpZztcbiAgICAgIHByb2R1Y3Rpb25fc2xhdmU/OiBEYXRhYmFzZUNvbmZpZztcbiAgICAgIGZpeHR1cmU/OiBEYXRhYmFzZUNvbmZpZztcbiAgICAgIHRlc3Q/OiBEYXRhYmFzZUNvbmZpZztcbiAgICB9O1xuICB9O1xuXG4gIGxvZ2dpbmc/OiBmYWxzZSB8IFNvbmFtdUxvZ2dpbmdPcHRpb25zPFRTaW5rSWQsIFRGaWx0ZXJJZD47XG4gIHNlcnZlcjogU29uYW11U2VydmVyT3B0aW9ucztcbiAgdGFza3M/OiBTb25hbXVUYXNrT3B0aW9ucztcbn07XG5cbmV4cG9ydCB0eXBlIFNvbmFtdVNlcnZlck9wdGlvbnMgPSB7XG4gIC8vIO2UhOuhnOygne2KuCDsmbjrtoDsl5DshJwg7KCR6re87ZWgIOyImCDsnojripQgVVJMLiDquLDrs7jqsJLsnYAge3NlcnZlci5saXN0ZW4uaG9zdH06e3NlcnZlci5saXN0ZW4ucG9ydH0g7J6F64uI64ukLlxuICBiYXNlVXJsPzogc3RyaW5nO1xuXG4gIGZhc3RpZnk/OiBPbWl0PEZhc3RpZnlTZXJ2ZXJPcHRpb25zLCBcImxvZ2dlclwiPjtcblxuICBsaXN0ZW4/OiB7XG4gICAgcG9ydDogbnVtYmVyO1xuICAgIGhvc3Q/OiBzdHJpbmc7XG4gIH07XG5cbiAgcGx1Z2lucz86IHtcbiAgICBjb3JzPzogYm9vbGVhbiB8IEZhc3RpZnlDb3JzT3B0aW9ucztcbiAgICBmb3JtYm9keT86IGJvb2xlYW4gfCBGYXN0aWZ5Rm9ybWJvZHlPcHRpb25zO1xuICAgIG11bHRpcGFydD86IGJvb2xlYW4gfCBGYXN0aWZ5TXVsdGlwYXJ0T3B0aW9ucztcbiAgICBxcz86IGJvb2xlYW4gfCBRc1BsdWdpbk9wdGlvbnM7XG4gICAgc3NlPzogYm9vbGVhbiB8IFNzZVBsdWdpbk9wdGlvbnM7XG4gICAgc3RhdGljPzogYm9vbGVhbiB8IEZhc3RpZnlTdGF0aWNPcHRpb25zO1xuICAgIHNlc3Npb24/OiBib29sZWFuIHwgU2VjdXJlU2Vzc2lvblBsdWdpbk9wdGlvbnM7XG5cbiAgICBjdXN0b20/OiAoc2VydmVyOiBGYXN0aWZ5SW5zdGFuY2UpID0+IHZvaWQ7XG4gIH07XG5cbiAgYXV0aD86XG4gICAgfCBib29sZWFuXG4gICAgfCB7XG4gICAgICAgIHVzZXJTZXJpYWxpemVyOiBTZXJpYWxpemVGdW5jdGlvbjx1bmtub3duLCB1bmtub3duPjtcbiAgICAgICAgdXNlckRlc2VyaWFsaXplcjogRGVzZXJpYWxpemVGdW5jdGlvbjx1bmtub3duLCB1bmtub3duPjtcbiAgICAgIH07XG5cbiAgYXBpQ29uZmlnOiBTb25hbXVGYXN0aWZ5Q29uZmlnO1xuXG4gIC8qKlxuICAgKiBTdG9yYWdlIOuTnOudvOydtOuyhCDshKTsoJUuXG4gICAqIERSSVZFX0RJU0sg7ZmY6rK967OA7IiY66GcIOyCrOyaqe2VoCDrk5zrnbzsnbTrsoTrpbwg7ISg7YOd7ZWp64uI64ukLiAo6riw67O46rCSOiBkZWZhdWx0IO2CpClcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBpbXBvcnQgeyBkcml2ZXJzIH0gZnJvbSBcInNvbmFtdS9zdG9yYWdlXCI7XG4gICAqXG4gICAqIHN0b3JhZ2U6IHtcbiAgICogICBkZWZhdWx0OiBwcm9jZXNzLmVudi5EUklWRV9ESVNLID8/IFwiZnNcIixcbiAgICogICBkcml2ZXJzOiB7XG4gICAqICAgICBmczogZHJpdmVycy5mcyh7IGxvY2F0aW9uOiBcIi4vdXBsb2Fkc1wiLCB1cmxCdWlsZGVyOiB7IC4uLiB9IH0pLFxuICAgKiAgICAgczM6IGRyaXZlcnMuczMoeyBidWNrZXQ6IFwibXktYnVja2V0XCIsIHJlZ2lvbjogXCJhcC1ub3J0aGVhc3QtMlwiLCAuLi4gfSksXG4gICAqICAgfVxuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgc3RvcmFnZT86IFN0b3JhZ2VDb25maWc7XG5cbiAgLyoqXG4gICAqIENhY2hlIOyEpOyglSAoQmVudG9DYWNoZSDquLDrsJgpXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogaW1wb3J0IHsgZHJpdmVycywgc3RvcmUgfSBmcm9tIFwic29uYW11L2NhY2hlXCI7XG4gICAqXG4gICAqIGNhY2hlOiB7XG4gICAqICAgZGVmYXVsdDogJ21haW4nLFxuICAgKiAgIHN0b3Jlczoge1xuICAgKiAgICAgbWFpbjogc3RvcmUoKVxuICAgKiAgICAgICAudXNlTDFMYXllcihkcml2ZXJzLm1lbW9yeSh7IG1heFNpemU6ICcxMDBtYicgfSkpXG4gICAqICAgICAgIC51c2VMMkxheWVyKGRyaXZlcnMucmVkaXMoeyBjb25uZWN0aW9uOiByZWRpc0Nvbm5lY3Rpb24gfSkpXG4gICAqICAgICAgIC51c2VCdXMoZHJpdmVycy5yZWRpc0J1cyh7IGNvbm5lY3Rpb246IHJlZGlzQ29ubmVjdGlvbiB9KSlcbiAgICogICB9LFxuICAgKiAgIHR0bDogJzFoJyxcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGNhY2hlPzogQ2FjaGVDb25maWc7XG5cbiAgbGlmZWN5Y2xlPzoge1xuICAgIG9uU3RhcnQ/OiAoc2VydmVyOiBGYXN0aWZ5SW5zdGFuY2UpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuICAgIG9uU2h1dGRvd24/OiAoc2VydmVyOiBGYXN0aWZ5SW5zdGFuY2UpID0+IFByb21pc2U8dm9pZD4gfCB2b2lkO1xuICAgIG9uRXJyb3I/OiAoZXJyb3I6IEVycm9yLCByZXF1ZXN0OiBGYXN0aWZ5UmVxdWVzdCwgcmVwbHk6IEZhc3RpZnlSZXBseSkgPT4gUHJvbWlzZTx2b2lkPiB8IHZvaWQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBTb25hbXVUYXNrT3B0aW9ucyA9IHtcbiAgLy8gd29ya2Vy66W8IOyCrOyaqe2VoOyngCDsl6zrtoAsIOq4sOuzuOyggeycvOuhnCBkYWVtb24g66qo65Oc7JeQ7ISc66eMIOyCrOyaqeuQqC5cbiAgZW5hYmxlV29ya2VyPzogYm9vbGVhbjtcbiAgd29ya2VyT3B0aW9ucz86IFdvcmtmbG93T3B0aW9ucztcbiAgY29udGV4dFByb3ZpZGVyOiAoXG4gICAgZGVmYXVsdENvbnRleHQ6IFBpY2s8Q29udGV4dCwgXCJyZXBseVwiIHwgXCJyZXF1ZXN0XCIgfCBcImhlYWRlcnNcIiB8IFwiY3JlYXRlU1NFXCIgfCBcIm5haXRlU3RvcmVcIj4gJlxuICAgICAgQXV0aENvbnRleHQsXG4gICkgPT4gQ29udGV4dCB8IFByb21pc2U8Q29udGV4dD47XG59O1xuXG5leHBvcnQgdHlwZSBTb25hbXVTU1JPcHRpb25zID0ge1xuICAvKipcbiAgICogSHlkcmF0aW9uIOyghOuetVxuICAgKiAtICdub25lJzog7ZWt7IOBIOyDiOuhnCDroIzrjZTrp4EgKGh5ZHJhdGlvbiBtaXNtYXRjaCDqsbHsoJUg7JeG7J2MLCDqtozsnqUpXG4gICAqIC0gJ2Z1bGwnOiBSZWFjdCBoeWRyYXRpb24g7Iuc64+EICjshJzrsoQgSFRNTCDsnqzsgqzsmqksIG1pc21hdGNoIOyjvOydmClcbiAgICogQGRlZmF1bHQgJ25vbmUnXG4gICAqL1xuICBoeWRyYXRpb24/OiBcIm5vbmVcIiB8IFwiZnVsbFwiO1xufTtcblxuLy8gTk9URShIYXplLCAyNTEyMDkpOiBjb25maWfsl5DripQgVCwgUHJvbWlzZTxUPiwgKCkgPT4gVCwgKCkgPT4gUHJvbWlzZTxUPuqwgCDrqqjrkZAg7JisIOyImCDsnojslrTslbwg7ZWoLlxuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUNvbmZpZyhjb25maWc6IEV4ZWN1dGFibGU8U29uYW11Q29uZmlnPik6IFByb21pc2U8U29uYW11Q29uZmlnPiB7XG4gIGlmICh0eXBlb2YgY29uZmlnID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZygpKTtcbiAgfVxuXG4gIHJldHVybiBQcm9taXNlLnJlc29sdmUoY29uZmlnKTtcbn1cblxuLyoqXG4gKiBzb25hbXUuY29uZmlnLnRzIO2MjOydvOydhCDroZzrk5ztlanri4jri6QuXG4gKiDsnbQg7ISk7KCVIO2MjOydvOydgCDtmZjqsr3sl5Ag65Sw6528IOuLpOuluCDqsr3roZzsl5Ag7J6I7J2EIOyImCDsnojsirXri4jri6QuXG4gKiBkaXN066W8IOu5jOuTnO2VmOuKlCDtmZjqsr3snbTrnbzrqbQgZGlzdCDrsJTroZwg7JWE656Y7JeQIOyeiOydhCDqsoPsnbTqs6AoY2xpLXdyYXBwZXIudHPsl5DshJwg67mM65OcKSxcbiAqIOq3uOugh+yngCDslYrsnYAg7ZmY6rK97J20652866m0IO2UhOuhnOygne2KuCDro6jtirjsl5Ag7J6I7J2EIOqyg+yeheuLiOuLpC5cbiAqXG4gKiDsnbQg7ZWo7IiY64qUIOydmOuPhOyggeycvOuhnCDri6Trpbgg7J2Y7KG07ISx7J2YIOyCrOyaqeydhCDstZzrjIDtlZwg67Cw7KCc7ZWY7JiA7Iq164uI64ukLlxuICog7J2064qUIOyLpO2WiSDstIjquLDsl5Ag7LWc64yA7ZWcIOu5oOultOqyjCDshKTsoJXsnYQg7J297Ja07JisIOyImCDsnojrj4TroZ0g7ZWY6riwIOychO2VqOyeheuLiOuLpC5cbiAqIOuUsOudvOyEnCDqsr3roZwgY29uY2F06rO8IFVSTCBzY2hlbWUg7LaU6rCA64+EIOuLqOyInO2VnCDrrLjsnpDsl7Qg7KGw7J6R7Jy866GcIOyymOumrO2VmOyYgOyKteuLiOuLpC5cbiAqXG4gKiBAcGFyYW0gcm9vdFBhdGhcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBsb2FkQ29uZmlnKHJvb3RQYXRoOiBzdHJpbmcpOiBQcm9taXNlPFNvbmFtdUNvbmZpZz4ge1xuICBjb25zdCBzdGFydCA9IHBlcmZvcm1hbmNlLm5vdygpO1xuICBjb25zdCBjb25maWdQYXRoID1cbiAgICBwcm9jZXNzLmVudi5IT1QgPT09IFwieWVzXCIgfHwgcHJvY2Vzcy5lbnYuVklURVNUID09PSBcInRydWVcIlxuICAgICAgPyBgJHtyb290UGF0aH0vc3JjL3NvbmFtdS5jb25maWcudHNgXG4gICAgICA6IGAke3Jvb3RQYXRofS9kaXN0L3NvbmFtdS5jb25maWcuanNgO1xuICBjb25zdCB7IGRlZmF1bHQ6IGNvbmZpZyB9ID0gYXdhaXQgaW1wb3J0KGBmaWxlOi8vJHtjb25maWdQYXRofWApO1xuICBjb25zdCBpbXBvcnRUaW1lID0gcGVyZm9ybWFuY2Uubm93KCkgLSBzdGFydDtcbiAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwidGVzdFwiICYmXG4gICAgY29uc29sZS5sb2coYFtUSU1JTkddIGxvYWRDb25maWcgdG9vayAke2ltcG9ydFRpbWUudG9GaXhlZCgyKX1tc2ApO1xuICByZXR1cm4gY29uZmlnO1xufVxuIl0sIm5hbWVzIjpbImRlZmluZUNvbmZpZyIsImNvbmZpZyIsIlByb21pc2UiLCJyZXNvbHZlIiwibG9hZENvbmZpZyIsInJvb3RQYXRoIiwic3RhcnQiLCJwZXJmb3JtYW5jZSIsIm5vdyIsImNvbmZpZ1BhdGgiLCJwcm9jZXNzIiwiZW52IiwiSE9UIiwiVklURVNUIiwiZGVmYXVsdCIsImltcG9ydFRpbWUiLCJOT0RFX0VOViIsImNvbnNvbGUiLCJsb2ciLCJ0b0ZpeGVkIl0sIm1hcHBpbmdzIjoiQUE2SkEsdUZBQXVGO0FBQ3ZGLE9BQU8sU0FBU0EsYUFBYUMsTUFBZ0M7SUFDM0QsSUFBSSxPQUFPQSxXQUFXLFlBQVk7UUFDaEMsT0FBT0MsUUFBUUMsT0FBTyxDQUFDRjtJQUN6QjtJQUVBLE9BQU9DLFFBQVFDLE9BQU8sQ0FBQ0Y7QUFDekI7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDRCxPQUFPLGVBQWVHLFdBQVdDLFFBQWdCO0lBQy9DLE1BQU1DLFFBQVFDLFlBQVlDLEdBQUc7SUFDN0IsTUFBTUMsYUFDSkMsUUFBUUMsR0FBRyxDQUFDQyxHQUFHLEtBQUssU0FBU0YsUUFBUUMsR0FBRyxDQUFDRSxNQUFNLEtBQUssU0FDaEQsR0FBR1IsU0FBUyxxQkFBcUIsQ0FBQyxHQUNsQyxHQUFHQSxTQUFTLHNCQUFzQixDQUFDO0lBQ3pDLE1BQU0sRUFBRVMsU0FBU2IsTUFBTSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUVRLFlBQVk7SUFDL0QsTUFBTU0sYUFBYVIsWUFBWUMsR0FBRyxLQUFLRjtJQUN2Q0ksUUFBUUMsR0FBRyxDQUFDSyxRQUFRLEtBQUssVUFDdkJDLFFBQVFDLEdBQUcsQ0FBQyxDQUFDLHlCQUF5QixFQUFFSCxXQUFXSSxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDbkUsT0FBT2xCO0FBQ1QifQ==
@@ -57,14 +57,14 @@ type DecoratorTarget = {
57
57
  name: string;
58
58
  };
59
59
  };
60
- export declare function api(options?: ApiDecoratorOptions): (target: DecoratorTarget, propertyKey: string) => void;
61
- export declare function stream(options: StreamDecoratorOptions): (target: DecoratorTarget, propertyKey: string) => void;
62
- export declare function transactional(options?: TransactionalOptions): (_target: DecoratorTarget, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
60
+ export declare function api(options?: ApiDecoratorOptions): (target: DecoratorTarget, propertyKey: string, descriptor: PropertyDescriptor) => void;
61
+ export declare function stream(options: StreamDecoratorOptions): (target: DecoratorTarget, propertyKey: string, descriptor: PropertyDescriptor) => void;
62
+ export declare function transactional(options?: TransactionalOptions): (target: DecoratorTarget, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
63
63
  /**
64
64
  * api 데코레이터와 함께 사용할 수 있습니다.
65
65
  * @param options
66
66
  * @returns
67
67
  */
68
- export declare function upload(options?: UploadDecoratorOptions): (_target: DecoratorTarget, _propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
68
+ export declare function upload(options?: UploadDecoratorOptions): (target: DecoratorTarget, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
69
69
  export {};
70
70
  //# sourceMappingURL=decorators.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/api/decorators.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI7D,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,IAAI,CAAC;IACZ,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,IAAI,CAAC;CACZ;AACD,MAAM,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC;AACvC,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,iBAAiB,GACjB,gBAAgB,GAChB,mBAAmB,GACnB,cAAc,CAAC;AACnB,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EACR,YAAY,GACZ,WAAW,GACX,UAAU,GACV,kBAAkB,GAClB,0BAA0B,CAAC;IAC/B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,KAAK,CAAC;IAEZ,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC9B,CAAC;AACF,eAAO,MAAM,cAAc,EAAE;IAC3B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,mBAAmB,CAAC;IAC7B,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACxC,EAAO,CAAC;AACT,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,mBAAmB,CAAC;IAC7B,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,cAAc,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC;IACzC,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC;CAC1B,CAAC;AACF,KAAK,eAAe,GAAG;IAAE,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAkBzD,wBAAgB,GAAG,CAAC,OAAO,GAAE,mBAAwB,IAQ3C,QAAQ,eAAe,EAAE,aAAa,MAAM,UAyCrD;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,sBAAsB,IAC5C,QAAQ,eAAe,EAAE,aAAa,MAAM,UAqDrD;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,IAGtD,SAAS,eAAe,EAAE,cAAc,MAAM,EAAE,YAAY,kBAAkB,wBA8CvF;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,OAAO,GAAE,sBAA2B,IACjD,SAAS,eAAe,EAAE,cAAc,MAAM,EAAE,YAAY,kBAAkB,wBA2DvF"}
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/api/decorators.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAK7D,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,IAAI,CAAC;IACZ,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,IAAI,CAAC;CACZ;AACD,MAAM,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC;AACvC,MAAM,MAAM,aAAa,GACrB,OAAO,GACP,iBAAiB,GACjB,gBAAgB,GAChB,mBAAmB,GACnB,cAAc,CAAC;AACnB,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,WAAW,CAAC,EACR,YAAY,GACZ,WAAW,GACX,UAAU,GACV,kBAAkB,GAClB,0BAA0B,CAAC;IAC/B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,KAAK,CAAC;IAEZ,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC9B,CAAC;AACF,eAAO,MAAM,cAAc,EAAE;IAC3B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,mBAAmB,CAAC;IAC7B,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACxC,EAAO,CAAC;AACT,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,mBAAmB,CAAC;IAC7B,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,cAAc,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC;IACzC,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC;CAC1B,CAAC;AACF,KAAK,eAAe,GAAG;IAAE,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAkBzD,wBAAgB,GAAG,CAAC,OAAO,GAAE,mBAAwB,IAQ3C,QAAQ,eAAe,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,UAoErF;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,sBAAsB,IAC5C,QAAQ,eAAe,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,UA8ErF;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,IAGtD,QAAQ,eAAe,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,wBAyDrF;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,OAAO,GAAE,sBAA2B,IACjD,QAAQ,eAAe,EAAE,aAAa,MAAM,EAAE,YAAY,kBAAkB,wBA+ErF"}