@cartanova/qgrid-cli 1.1.5 → 1.2.0

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 (50) hide show
  1. package/bundle/dist/application/sonamu.generated.js +10 -5
  2. package/bundle/dist/application/sonamu.generated.sso.js +3 -2
  3. package/bundle/dist/application/token/token.model.js +21 -3
  4. package/bundle/dist/application/token/token.types.js +3 -2
  5. package/bundle/dist/i18n/sd.generated.js +3 -1
  6. package/bundle/dist/migrations/20260415113716_alter_tokens_add_ord.js +16 -0
  7. package/bundle/dist/migrations/20260415134649_alter_request_logs_alter1.js +14 -0
  8. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980 → vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496}/node_modules/vitest/dist/chunks/_commonjsHelpers.D26ty3Ew.js +2 -2
  9. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980 → vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496}/node_modules/vitest/dist/chunks/benchmark.CX_oY03V.js +2 -2
  10. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980 → vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496}/node_modules/vitest/dist/chunks/evaluatedModules.Dg1zASAC.js +2 -2
  11. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980 → vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496}/node_modules/vitest/dist/chunks/index.Chj8NDwU.js +2 -2
  12. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980 → vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496}/node_modules/vitest/dist/chunks/index.DOa3dzoN.js +2 -2
  13. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980 → vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496}/node_modules/vitest/dist/chunks/rpc.MzXet3jl.js +2 -2
  14. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980 → vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496}/node_modules/vitest/dist/chunks/test.p_J6dB8a.js +2 -2
  15. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980 → vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496}/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js +2 -2
  16. package/bundle/dist/node_modules/.pnpm/{vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980 → vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496}/node_modules/vitest/dist/index.js +1 -1
  17. package/bundle/dist/sonamu.config.js +9 -9
  18. package/bundle/dist/testing/setup-mocks.js +2 -2
  19. package/bundle/src/application/request-log/request-log.entity.json +9 -3
  20. package/bundle/src/application/sonamu.generated.http +13 -1
  21. package/bundle/src/application/sonamu.generated.sso.ts +1 -0
  22. package/bundle/src/application/sonamu.generated.ts +5 -2
  23. package/bundle/src/application/token/token.entity.json +5 -3
  24. package/bundle/src/application/token/token.model.ts +15 -1
  25. package/bundle/src/application/token/token.types.ts +1 -0
  26. package/bundle/src/i18n/sd.generated.ts +2 -0
  27. package/bundle/src/migrations/20260415113716_alter_tokens_add_ord.ts +13 -0
  28. package/bundle/src/migrations/20260415134649_alter_request_logs_alter1.ts +13 -0
  29. package/bundle/src/sonamu.config.ts +8 -8
  30. package/bundle/web-dist/client/assets/index-BP0XRvKL.css +1 -0
  31. package/bundle/web-dist/client/assets/{index-Dyn67Y0R.js → index-BowrnLVe.js} +3 -3
  32. package/bundle/web-dist/client/assets/routes-DRU2rj_p.js +5 -0
  33. package/bundle/web-dist/client/assets/{sd.generated-BrQoQXvv.js → sd.generated-CkJCx4Bp.js} +1 -1
  34. package/bundle/web-dist/client/assets/services.generated-CAJQk7Wk.js +1 -0
  35. package/bundle/web-dist/client/assets/{show-DIzwg78k.js → show-DjQUOob1.js} +1 -1
  36. package/bundle/web-dist/client/assets/tokens-B6y-rxlU.js +1 -0
  37. package/bundle/web-dist/client/index.html +3 -3
  38. package/bundle/web-dist/server/assets/routes-CQY28Uq3.js +2855 -0
  39. package/bundle/web-dist/server/assets/{sd.generated-BnonqqKr.js → sd.generated-BeEKgSOs.js} +336 -1
  40. package/bundle/web-dist/server/assets/{services.generated-D5ABD5fr.js → services.generated-DjxCLdMu.js} +10 -1
  41. package/bundle/web-dist/server/assets/{show-C9pcdSxc.js → show-BEFi1cKV.js} +2 -2
  42. package/bundle/web-dist/server/assets/{tokens-ARL5AOAh.js → tokens-Dyi6qMmP.js} +9 -6
  43. package/bundle/web-dist/server/entry-server.generated.js +18 -19
  44. package/package.json +1 -1
  45. package/bundle/web-dist/client/assets/index-p3clzhWX.css +0 -1
  46. package/bundle/web-dist/client/assets/routes-ytPY-kr9.js +0 -1
  47. package/bundle/web-dist/client/assets/services.generated-BspO2L0j.js +0 -1
  48. package/bundle/web-dist/client/assets/tokens-CiU_LVOp.js +0 -1
  49. package/bundle/web-dist/server/assets/react-dom-CGIzOSuj.js +0 -335
  50. package/bundle/web-dist/server/assets/routes-BQmURFK9.js +0 -492
@@ -1,5 +1,5 @@
1
1
  import { getSafeTimers } from "../../../../../@vitest_utils@4.1.2/node_modules/@vitest/utils/dist/timers.js";
2
- //#region ../../node_modules/.pnpm/vitest@4.1.2_@opentelemetry+api@1.9.0_@types+node@25.0.7_vite@8.0.3_@emnapi+core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js
2
+ //#region ../../node_modules/.pnpm/vitest@4.1.2_@opentelemetry+api@1.9.0_@types+node@25.0.7_msw@2.13.3_@types+node@25.0.7__ba64bc4dd2e2bdde58df187864f65496/node_modules/vitest/dist/chunks/utils.BX5Fg8C4.js
3
3
  const NAME_WORKER_STATE = "__vitest_worker__";
4
4
  function getWorkerState() {
5
5
  const workerState = globalThis[NAME_WORKER_STATE];
@@ -41,4 +41,4 @@ async function waitForImportsToResolve() {
41
41
  //#endregion
42
42
  export { getWorkerState, isChildProcess, resetModules, waitForImportsToResolve };
43
43
 
44
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuQlg1Rmc4QzQuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ZpdGVzdEA0LjEuMl9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjBfQHR5cGVzK25vZGVAMjUuMC43X3ZpdGVAOC4wLjNfQGVtbmFwaStjb3JlQDEuOS4yX19iYjMxMDg3Mjc4Zjk3YTM5YjMxYjkyMDEwYmVhYjk4MC9ub2RlX21vZHVsZXMvdml0ZXN0L2Rpc3QvY2h1bmtzL3V0aWxzLkJYNUZnOEM0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFNhZmVUaW1lcnMgfSBmcm9tICdAdml0ZXN0L3V0aWxzL3RpbWVycyc7XG5cbmNvbnN0IE5BTUVfV09SS0VSX1NUQVRFID0gXCJfX3ZpdGVzdF93b3JrZXJfX1wiO1xuY2xhc3MgRW52aXJvbm1lbnRUZWFyZG93bkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuXHRuYW1lID0gXCJFbnZpcm9ubWVudFRlYXJkb3duRXJyb3JcIjtcbn1cbmZ1bmN0aW9uIGdldFdvcmtlclN0YXRlKCkge1xuXHQvLyBAdHMtZXhwZWN0LWVycm9yIHVudHlwZWQgZ2xvYmFsXG5cdGNvbnN0IHdvcmtlclN0YXRlID0gZ2xvYmFsVGhpc1tOQU1FX1dPUktFUl9TVEFURV07XG5cdGlmICghd29ya2VyU3RhdGUpIHRocm93IG5ldyBFcnJvcihcIlZpdGVzdCBmYWlsZWQgdG8gYWNjZXNzIGl0cyBpbnRlcm5hbCBzdGF0ZS5cXG5cXG5PbmUgb2YgdGhlIGZvbGxvd2luZyBpcyBwb3NzaWJsZTpcXG4tIFxcXCJ2aXRlc3RcXFwiIGlzIGltcG9ydGVkIGRpcmVjdGx5IHdpdGhvdXQgcnVubmluZyBcXFwidml0ZXN0XFxcIiBjb21tYW5kXFxuLSBcXFwidml0ZXN0XFxcIiBpcyBpbXBvcnRlZCBpbnNpZGUgXFxcImdsb2JhbFNldHVwXFxcIiAodG8gZml4IHRoaXMsIHVzZSBcXFwic2V0dXBGaWxlc1xcXCIgaW5zdGVhZCwgYmVjYXVzZSBcXFwiZ2xvYmFsU2V0dXBcXFwiIHJ1bnMgaW4gYSBkaWZmZXJlbnQgY29udGV4dClcXG4tIFxcXCJ2aXRlc3RcXFwiIGlzIGltcG9ydGVkIGluc2lkZSBWaXRlIC8gVml0ZXN0IGNvbmZpZyBmaWxlXFxuLSBPdGhlcndpc2UsIGl0IG1pZ2h0IGJlIGEgVml0ZXN0IGJ1Zy4gUGxlYXNlIHJlcG9ydCBpdCB0byBodHRwczovL2dpdGh1Yi5jb20vdml0ZXN0LWRldi92aXRlc3QvaXNzdWVzXFxuXCIpO1xuXHRyZXR1cm4gd29ya2VyU3RhdGU7XG59XG5mdW5jdGlvbiBnZXRTYWZlV29ya2VyU3RhdGUoKSB7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgdW50eXBlZCBnbG9iYWxcblx0cmV0dXJuIGdsb2JhbFRoaXNbTkFNRV9XT1JLRVJfU1RBVEVdO1xufVxuZnVuY3Rpb24gcHJvdmlkZVdvcmtlclN0YXRlKGNvbnRleHQsIHN0YXRlKSB7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb250ZXh0LCBOQU1FX1dPUktFUl9TVEFURSwge1xuXHRcdHZhbHVlOiBzdGF0ZSxcblx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0d3JpdGFibGU6IHRydWUsXG5cdFx0ZW51bWVyYWJsZTogZmFsc2Vcblx0fSk7XG5cdHJldHVybiBzdGF0ZTtcbn1cbmZ1bmN0aW9uIGlzQ2hpbGRQcm9jZXNzKCkge1xuXHRyZXR1cm4gdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgISFwcm9jZXNzLnNlbmQ7XG59XG5mdW5jdGlvbiByZXNldE1vZHVsZXMobW9kdWxlcywgcmVzZXRNb2NrcyA9IGZhbHNlKSB7XG5cdGNvbnN0IHNraXBQYXRocyA9IFtcblx0XHQvXFwvdml0ZXN0XFwvZGlzdFxcLy8sXG5cdFx0L3ZpdGVzdC12aXJ0dWFsLVxcdytcXC9kaXN0Lyxcblx0XHQvQHZpdGVzdFxcL2Rpc3QvLFxuXHRcdC4uLiFyZXNldE1vY2tzID8gWy9ebW9jazovXSA6IFtdXG5cdF07XG5cdG1vZHVsZXMuaWRUb01vZHVsZU1hcC5mb3JFYWNoKChub2RlLCBwYXRoKSA9PiB7XG5cdFx0aWYgKHNraXBQYXRocy5zb21lKChyZSkgPT4gcmUudGVzdChwYXRoKSkpIHJldHVybjtcblx0XHRub2RlLnByb21pc2UgPSB2b2lkIDA7XG5cdFx0bm9kZS5leHBvcnRzID0gdm9pZCAwO1xuXHRcdG5vZGUuZXZhbHVhdGVkID0gZmFsc2U7XG5cdFx0bm9kZS5pbXBvcnRlcnMuY2xlYXIoKTtcblx0fSk7XG59XG5mdW5jdGlvbiB3YWl0TmV4dFRpY2soKSB7XG5cdGNvbnN0IHsgc2V0VGltZW91dCB9ID0gZ2V0U2FmZVRpbWVycygpO1xuXHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMCkpO1xufVxuYXN5bmMgZnVuY3Rpb24gd2FpdEZvckltcG9ydHNUb1Jlc29sdmUoKSB7XG5cdGF3YWl0IHdhaXROZXh0VGljaygpO1xuXHRjb25zdCBzdGF0ZSA9IGdldFdvcmtlclN0YXRlKCk7XG5cdGNvbnN0IHByb21pc2VzID0gW107XG5cdGNvbnN0IHJlc29sdmluZ0NvdW50ID0gc3RhdGUucmVzb2x2aW5nTW9kdWxlcy5zaXplO1xuXHRmb3IgKGNvbnN0IFtfLCBtb2RdIG9mIHN0YXRlLmV2YWx1YXRlZE1vZHVsZXMuaWRUb01vZHVsZU1hcCkgaWYgKG1vZC5wcm9taXNlICYmICFtb2QuZXZhbHVhdGVkKSBwcm9taXNlcy5wdXNoKG1vZC5wcm9taXNlKTtcblx0aWYgKCFwcm9taXNlcy5sZW5ndGggJiYgIXJlc29sdmluZ0NvdW50KSByZXR1cm47XG5cdGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChwcm9taXNlcyk7XG5cdGF3YWl0IHdhaXRGb3JJbXBvcnRzVG9SZXNvbHZlKCk7XG59XG5cbmV4cG9ydCB7IEVudmlyb25tZW50VGVhcmRvd25FcnJvciBhcyBFLCBnZXRTYWZlV29ya2VyU3RhdGUgYXMgYSwgZ2V0V29ya2VyU3RhdGUgYXMgZywgaXNDaGlsZFByb2Nlc3MgYXMgaSwgcHJvdmlkZVdvcmtlclN0YXRlIGFzIHAsIHJlc2V0TW9kdWxlcyBhcyByLCB3YWl0Rm9ySW1wb3J0c1RvUmVzb2x2ZSBhcyB3IH07XG4iXSwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdLCJtYXBwaW5ncyI6Ijs7QUFFQSxNQUFNLG9CQUFvQjtBQUkxQixTQUFTLGlCQUFpQjtDQUV6QixNQUFNLGNBQWMsV0FBVztBQUMvQixLQUFJLENBQUMsWUFBYSxPQUFNLElBQUksTUFBTSw4Y0FBOGM7QUFDaGYsUUFBTzs7QUFlUixTQUFTLGlCQUFpQjtBQUN6QixRQUFPLE9BQU8sWUFBWSxlQUFlLENBQUMsQ0FBQyxRQUFROztBQUVwRCxTQUFTLGFBQWEsU0FBUyxhQUFhLE9BQU87Q0FDbEQsTUFBTSxZQUFZO0VBQ2pCO0VBQ0E7RUFDQTtFQUNBLEdBQUcsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEVBQUU7RUFDaEM7QUFDRCxTQUFRLGNBQWMsU0FBUyxNQUFNLFNBQVM7QUFDN0MsTUFBSSxVQUFVLE1BQU0sT0FBTyxHQUFHLEtBQUssS0FBSyxDQUFDLENBQUU7QUFDM0MsT0FBSyxVQUFVLEtBQUs7QUFDcEIsT0FBSyxVQUFVLEtBQUs7QUFDcEIsT0FBSyxZQUFZO0FBQ2pCLE9BQUssVUFBVSxPQUFPO0dBQ3JCOztBQUVILFNBQVMsZUFBZTtDQUN2QixNQUFNLEVBQUUsZUFBZSxlQUFlO0FBQ3RDLFFBQU8sSUFBSSxTQUFTLFlBQVksV0FBVyxTQUFTLEVBQUUsQ0FBQzs7QUFFeEQsZUFBZSwwQkFBMEI7QUFDeEMsT0FBTSxjQUFjO0NBQ3BCLE1BQU0sUUFBUSxnQkFBZ0I7Q0FDOUIsTUFBTSxXQUFXLEVBQUU7Q0FDbkIsTUFBTSxpQkFBaUIsTUFBTSxpQkFBaUI7QUFDOUMsTUFBSyxNQUFNLENBQUMsR0FBRyxRQUFRLE1BQU0saUJBQWlCLGNBQWUsS0FBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLFVBQVcsVUFBUyxLQUFLLElBQUksUUFBUTtBQUMxSCxLQUFJLENBQUMsU0FBUyxVQUFVLENBQUMsZUFBZ0I7QUFDekMsT0FBTSxRQUFRLFdBQVcsU0FBUztBQUNsQyxPQUFNLHlCQUF5QiJ9
44
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuQlg1Rmc4QzQuanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ZpdGVzdEA0LjEuMl9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjBfQHR5cGVzK25vZGVAMjUuMC43X21zd0AyLjEzLjNfQHR5cGVzK25vZGVAMjUuMC43X19iYTY0YmM0ZGQyZTJiZGRlNThkZjE4Nzg2NGY2NTQ5Ni9ub2RlX21vZHVsZXMvdml0ZXN0L2Rpc3QvY2h1bmtzL3V0aWxzLkJYNUZnOEM0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGdldFNhZmVUaW1lcnMgfSBmcm9tICdAdml0ZXN0L3V0aWxzL3RpbWVycyc7XG5cbmNvbnN0IE5BTUVfV09SS0VSX1NUQVRFID0gXCJfX3ZpdGVzdF93b3JrZXJfX1wiO1xuY2xhc3MgRW52aXJvbm1lbnRUZWFyZG93bkVycm9yIGV4dGVuZHMgRXJyb3Ige1xuXHRuYW1lID0gXCJFbnZpcm9ubWVudFRlYXJkb3duRXJyb3JcIjtcbn1cbmZ1bmN0aW9uIGdldFdvcmtlclN0YXRlKCkge1xuXHQvLyBAdHMtZXhwZWN0LWVycm9yIHVudHlwZWQgZ2xvYmFsXG5cdGNvbnN0IHdvcmtlclN0YXRlID0gZ2xvYmFsVGhpc1tOQU1FX1dPUktFUl9TVEFURV07XG5cdGlmICghd29ya2VyU3RhdGUpIHRocm93IG5ldyBFcnJvcihcIlZpdGVzdCBmYWlsZWQgdG8gYWNjZXNzIGl0cyBpbnRlcm5hbCBzdGF0ZS5cXG5cXG5PbmUgb2YgdGhlIGZvbGxvd2luZyBpcyBwb3NzaWJsZTpcXG4tIFxcXCJ2aXRlc3RcXFwiIGlzIGltcG9ydGVkIGRpcmVjdGx5IHdpdGhvdXQgcnVubmluZyBcXFwidml0ZXN0XFxcIiBjb21tYW5kXFxuLSBcXFwidml0ZXN0XFxcIiBpcyBpbXBvcnRlZCBpbnNpZGUgXFxcImdsb2JhbFNldHVwXFxcIiAodG8gZml4IHRoaXMsIHVzZSBcXFwic2V0dXBGaWxlc1xcXCIgaW5zdGVhZCwgYmVjYXVzZSBcXFwiZ2xvYmFsU2V0dXBcXFwiIHJ1bnMgaW4gYSBkaWZmZXJlbnQgY29udGV4dClcXG4tIFxcXCJ2aXRlc3RcXFwiIGlzIGltcG9ydGVkIGluc2lkZSBWaXRlIC8gVml0ZXN0IGNvbmZpZyBmaWxlXFxuLSBPdGhlcndpc2UsIGl0IG1pZ2h0IGJlIGEgVml0ZXN0IGJ1Zy4gUGxlYXNlIHJlcG9ydCBpdCB0byBodHRwczovL2dpdGh1Yi5jb20vdml0ZXN0LWRldi92aXRlc3QvaXNzdWVzXFxuXCIpO1xuXHRyZXR1cm4gd29ya2VyU3RhdGU7XG59XG5mdW5jdGlvbiBnZXRTYWZlV29ya2VyU3RhdGUoKSB7XG5cdC8vIEB0cy1leHBlY3QtZXJyb3IgdW50eXBlZCBnbG9iYWxcblx0cmV0dXJuIGdsb2JhbFRoaXNbTkFNRV9XT1JLRVJfU1RBVEVdO1xufVxuZnVuY3Rpb24gcHJvdmlkZVdvcmtlclN0YXRlKGNvbnRleHQsIHN0YXRlKSB7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb250ZXh0LCBOQU1FX1dPUktFUl9TVEFURSwge1xuXHRcdHZhbHVlOiBzdGF0ZSxcblx0XHRjb25maWd1cmFibGU6IHRydWUsXG5cdFx0d3JpdGFibGU6IHRydWUsXG5cdFx0ZW51bWVyYWJsZTogZmFsc2Vcblx0fSk7XG5cdHJldHVybiBzdGF0ZTtcbn1cbmZ1bmN0aW9uIGlzQ2hpbGRQcm9jZXNzKCkge1xuXHRyZXR1cm4gdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgISFwcm9jZXNzLnNlbmQ7XG59XG5mdW5jdGlvbiByZXNldE1vZHVsZXMobW9kdWxlcywgcmVzZXRNb2NrcyA9IGZhbHNlKSB7XG5cdGNvbnN0IHNraXBQYXRocyA9IFtcblx0XHQvXFwvdml0ZXN0XFwvZGlzdFxcLy8sXG5cdFx0L3ZpdGVzdC12aXJ0dWFsLVxcdytcXC9kaXN0Lyxcblx0XHQvQHZpdGVzdFxcL2Rpc3QvLFxuXHRcdC4uLiFyZXNldE1vY2tzID8gWy9ebW9jazovXSA6IFtdXG5cdF07XG5cdG1vZHVsZXMuaWRUb01vZHVsZU1hcC5mb3JFYWNoKChub2RlLCBwYXRoKSA9PiB7XG5cdFx0aWYgKHNraXBQYXRocy5zb21lKChyZSkgPT4gcmUudGVzdChwYXRoKSkpIHJldHVybjtcblx0XHRub2RlLnByb21pc2UgPSB2b2lkIDA7XG5cdFx0bm9kZS5leHBvcnRzID0gdm9pZCAwO1xuXHRcdG5vZGUuZXZhbHVhdGVkID0gZmFsc2U7XG5cdFx0bm9kZS5pbXBvcnRlcnMuY2xlYXIoKTtcblx0fSk7XG59XG5mdW5jdGlvbiB3YWl0TmV4dFRpY2soKSB7XG5cdGNvbnN0IHsgc2V0VGltZW91dCB9ID0gZ2V0U2FmZVRpbWVycygpO1xuXHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgMCkpO1xufVxuYXN5bmMgZnVuY3Rpb24gd2FpdEZvckltcG9ydHNUb1Jlc29sdmUoKSB7XG5cdGF3YWl0IHdhaXROZXh0VGljaygpO1xuXHRjb25zdCBzdGF0ZSA9IGdldFdvcmtlclN0YXRlKCk7XG5cdGNvbnN0IHByb21pc2VzID0gW107XG5cdGNvbnN0IHJlc29sdmluZ0NvdW50ID0gc3RhdGUucmVzb2x2aW5nTW9kdWxlcy5zaXplO1xuXHRmb3IgKGNvbnN0IFtfLCBtb2RdIG9mIHN0YXRlLmV2YWx1YXRlZE1vZHVsZXMuaWRUb01vZHVsZU1hcCkgaWYgKG1vZC5wcm9taXNlICYmICFtb2QuZXZhbHVhdGVkKSBwcm9taXNlcy5wdXNoKG1vZC5wcm9taXNlKTtcblx0aWYgKCFwcm9taXNlcy5sZW5ndGggJiYgIXJlc29sdmluZ0NvdW50KSByZXR1cm47XG5cdGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChwcm9taXNlcyk7XG5cdGF3YWl0IHdhaXRGb3JJbXBvcnRzVG9SZXNvbHZlKCk7XG59XG5cbmV4cG9ydCB7IEVudmlyb25tZW50VGVhcmRvd25FcnJvciBhcyBFLCBnZXRTYWZlV29ya2VyU3RhdGUgYXMgYSwgZ2V0V29ya2VyU3RhdGUgYXMgZywgaXNDaGlsZFByb2Nlc3MgYXMgaSwgcHJvdmlkZVdvcmtlclN0YXRlIGFzIHAsIHJlc2V0TW9kdWxlcyBhcyByLCB3YWl0Rm9ySW1wb3J0c1RvUmVzb2x2ZSBhcyB3IH07XG4iXSwieF9nb29nbGVfaWdub3JlTGlzdCI6WzBdLCJtYXBwaW5ncyI6Ijs7QUFFQSxNQUFNLG9CQUFvQjtBQUkxQixTQUFTLGlCQUFpQjtDQUV6QixNQUFNLGNBQWMsV0FBVztBQUMvQixLQUFJLENBQUMsWUFBYSxPQUFNLElBQUksTUFBTSw4Y0FBOGM7QUFDaGYsUUFBTzs7QUFlUixTQUFTLGlCQUFpQjtBQUN6QixRQUFPLE9BQU8sWUFBWSxlQUFlLENBQUMsQ0FBQyxRQUFROztBQUVwRCxTQUFTLGFBQWEsU0FBUyxhQUFhLE9BQU87Q0FDbEQsTUFBTSxZQUFZO0VBQ2pCO0VBQ0E7RUFDQTtFQUNBLEdBQUcsQ0FBQyxhQUFhLENBQUMsU0FBUyxHQUFHLEVBQUU7RUFDaEM7QUFDRCxTQUFRLGNBQWMsU0FBUyxNQUFNLFNBQVM7QUFDN0MsTUFBSSxVQUFVLE1BQU0sT0FBTyxHQUFHLEtBQUssS0FBSyxDQUFDLENBQUU7QUFDM0MsT0FBSyxVQUFVLEtBQUs7QUFDcEIsT0FBSyxVQUFVLEtBQUs7QUFDcEIsT0FBSyxZQUFZO0FBQ2pCLE9BQUssVUFBVSxPQUFPO0dBQ3JCOztBQUVILFNBQVMsZUFBZTtDQUN2QixNQUFNLEVBQUUsZUFBZSxlQUFlO0FBQ3RDLFFBQU8sSUFBSSxTQUFTLFlBQVksV0FBVyxTQUFTLEVBQUUsQ0FBQzs7QUFFeEQsZUFBZSwwQkFBMEI7QUFDeEMsT0FBTSxjQUFjO0NBQ3BCLE1BQU0sUUFBUSxnQkFBZ0I7Q0FDOUIsTUFBTSxXQUFXLEVBQUU7Q0FDbkIsTUFBTSxpQkFBaUIsTUFBTSxpQkFBaUI7QUFDOUMsTUFBSyxNQUFNLENBQUMsR0FBRyxRQUFRLE1BQU0saUJBQWlCLGNBQWUsS0FBSSxJQUFJLFdBQVcsQ0FBQyxJQUFJLFVBQVcsVUFBUyxLQUFLLElBQUksUUFBUTtBQUMxSCxLQUFJLENBQUMsU0FBUyxVQUFVLENBQUMsZUFBZ0I7QUFDekMsT0FBTSxRQUFRLFdBQVcsU0FBUztBQUNsQyxPQUFNLHlCQUF5QiJ9
@@ -25,4 +25,4 @@ require_dist();
25
25
  //#endregion
26
26
  export {};
27
27
 
28
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ZpdGVzdEA0LjEuMl9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjBfQHR5cGVzK25vZGVAMjUuMC43X3ZpdGVAOC4wLjNfQGVtbmFwaStjb3JlQDEuOS4yX19iYjMxMDg3Mjc4Zjk3YTM5YjMxYjkyMDEwYmVhYjk4MC9ub2RlX21vZHVsZXMvdml0ZXN0L2Rpc3QvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTiBhcyBCZW5jaG1hcmtSdW5uZXIsIFQgYXMgVGVzdFJ1bm5lciwgYSBhcyBhc3NlcnQsIGMgYXMgY3JlYXRlRXhwZWN0LCBnIGFzIGV4cGVjdCwgaSBhcyBpbmplY3QsIHMgYXMgc2hvdWxkLCB2IGFzIHZpLCBiIGFzIHZpdGVzdCB9IGZyb20gJy4vY2h1bmtzL3Rlc3QucF9KNmRCOGEuanMnO1xuZXhwb3J0IHsgYiBhcyBiZW5jaCB9IGZyb20gJy4vY2h1bmtzL2JlbmNobWFyay5DWF9vWTAzVi5qcyc7XG5leHBvcnQgeyBWIGFzIEV2YWx1YXRlZE1vZHVsZXMgfSBmcm9tICcuL2NodW5rcy9ldmFsdWF0ZWRNb2R1bGVzLkRnMXpBU0FDLmpzJztcbmV4cG9ydCB7IGEgYXMgYXNzZXJ0VHlwZSB9IGZyb20gJy4vY2h1bmtzL2luZGV4LkRPYTNkem9OLmpzJztcbmV4cG9ydCB7IGV4cGVjdFR5cGVPZiB9IGZyb20gJ2V4cGVjdC10eXBlJztcbmV4cG9ydCB7IGFmdGVyQWxsLCBhZnRlckVhY2gsIGFyb3VuZEFsbCwgYXJvdW5kRWFjaCwgYmVmb3JlQWxsLCBiZWZvcmVFYWNoLCBkZXNjcmliZSwgaXQsIG9uVGVzdEZhaWxlZCwgb25UZXN0RmluaXNoZWQsIHJlY29yZEFydGlmYWN0LCBzdWl0ZSwgdGVzdCB9IGZyb20gJ0B2aXRlc3QvcnVubmVyJztcbmV4cG9ydCB7IGNoYWkgfSBmcm9tICdAdml0ZXN0L2V4cGVjdCc7XG5pbXBvcnQgJ0B2aXRlc3QvdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgJ0B2aXRlc3QvdXRpbHMvdGltZXJzJztcbmltcG9ydCAnLi9jaHVua3MvdXRpbHMuQlg1Rmc4QzQuanMnO1xuaW1wb3J0ICdAdml0ZXN0L3J1bm5lci91dGlscyc7XG5pbXBvcnQgJ0B2aXRlc3QvdXRpbHMvZXJyb3InO1xuaW1wb3J0ICdwYXRoZSc7XG5pbXBvcnQgJ0B2aXRlc3Qvc25hcHNob3QnO1xuaW1wb3J0ICdAdml0ZXN0L3NweSc7XG5pbXBvcnQgJ0B2aXRlc3QvdXRpbHMvb2Zmc2V0JztcbmltcG9ydCAnQHZpdGVzdC91dGlscy9zb3VyY2UtbWFwJztcbmltcG9ydCAnLi9jaHVua3MvX2NvbW1vbmpzSGVscGVycy5EMjZ0eTNFdy5qcyc7XG5pbXBvcnQgJy4vY2h1bmtzL3JwYy5NelhldDNqbC5qcyc7XG5pbXBvcnQgJy4vY2h1bmtzL2luZGV4LkNoajhORHdVLmpzJztcbmltcG9ydCAndml0ZS9tb2R1bGUtcnVubmVyJztcbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiIn0=
28
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL3ZpdGVzdEA0LjEuMl9Ab3BlbnRlbGVtZXRyeSthcGlAMS45LjBfQHR5cGVzK25vZGVAMjUuMC43X21zd0AyLjEzLjNfQHR5cGVzK25vZGVAMjUuMC43X19iYTY0YmM0ZGQyZTJiZGRlNThkZjE4Nzg2NGY2NTQ5Ni9ub2RlX21vZHVsZXMvdml0ZXN0L2Rpc3QvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgTiBhcyBCZW5jaG1hcmtSdW5uZXIsIFQgYXMgVGVzdFJ1bm5lciwgYSBhcyBhc3NlcnQsIGMgYXMgY3JlYXRlRXhwZWN0LCBnIGFzIGV4cGVjdCwgaSBhcyBpbmplY3QsIHMgYXMgc2hvdWxkLCB2IGFzIHZpLCBiIGFzIHZpdGVzdCB9IGZyb20gJy4vY2h1bmtzL3Rlc3QucF9KNmRCOGEuanMnO1xuZXhwb3J0IHsgYiBhcyBiZW5jaCB9IGZyb20gJy4vY2h1bmtzL2JlbmNobWFyay5DWF9vWTAzVi5qcyc7XG5leHBvcnQgeyBWIGFzIEV2YWx1YXRlZE1vZHVsZXMgfSBmcm9tICcuL2NodW5rcy9ldmFsdWF0ZWRNb2R1bGVzLkRnMXpBU0FDLmpzJztcbmV4cG9ydCB7IGEgYXMgYXNzZXJ0VHlwZSB9IGZyb20gJy4vY2h1bmtzL2luZGV4LkRPYTNkem9OLmpzJztcbmV4cG9ydCB7IGV4cGVjdFR5cGVPZiB9IGZyb20gJ2V4cGVjdC10eXBlJztcbmV4cG9ydCB7IGFmdGVyQWxsLCBhZnRlckVhY2gsIGFyb3VuZEFsbCwgYXJvdW5kRWFjaCwgYmVmb3JlQWxsLCBiZWZvcmVFYWNoLCBkZXNjcmliZSwgaXQsIG9uVGVzdEZhaWxlZCwgb25UZXN0RmluaXNoZWQsIHJlY29yZEFydGlmYWN0LCBzdWl0ZSwgdGVzdCB9IGZyb20gJ0B2aXRlc3QvcnVubmVyJztcbmV4cG9ydCB7IGNoYWkgfSBmcm9tICdAdml0ZXN0L2V4cGVjdCc7XG5pbXBvcnQgJ0B2aXRlc3QvdXRpbHMvaGVscGVycyc7XG5pbXBvcnQgJ0B2aXRlc3QvdXRpbHMvdGltZXJzJztcbmltcG9ydCAnLi9jaHVua3MvdXRpbHMuQlg1Rmc4QzQuanMnO1xuaW1wb3J0ICdAdml0ZXN0L3J1bm5lci91dGlscyc7XG5pbXBvcnQgJ0B2aXRlc3QvdXRpbHMvZXJyb3InO1xuaW1wb3J0ICdwYXRoZSc7XG5pbXBvcnQgJ0B2aXRlc3Qvc25hcHNob3QnO1xuaW1wb3J0ICdAdml0ZXN0L3NweSc7XG5pbXBvcnQgJ0B2aXRlc3QvdXRpbHMvb2Zmc2V0JztcbmltcG9ydCAnQHZpdGVzdC91dGlscy9zb3VyY2UtbWFwJztcbmltcG9ydCAnLi9jaHVua3MvX2NvbW1vbmpzSGVscGVycy5EMjZ0eTNFdy5qcyc7XG5pbXBvcnQgJy4vY2h1bmtzL3JwYy5NelhldDNqbC5qcyc7XG5pbXBvcnQgJy4vY2h1bmtzL2luZGV4LkNoajhORHdVLmpzJztcbmltcG9ydCAndml0ZS9tb2R1bGUtcnVubmVyJztcbiJdLCJ4X2dvb2dsZV9pZ25vcmVMaXN0IjpbMF0sIm1hcHBpbmdzIjoiIn0=
@@ -21,19 +21,19 @@ var sonamu_config_default = defineConfig({
21
21
  password: process.env.QGRID_DB_PASSWORD ?? "postgres"
22
22
  } },
23
23
  environments: {
24
- production: { connection: {
25
- host: process.env.DEV0_DB_HOST,
26
- port: Number(process.env.DEV0_DB_PORT),
27
- database: process.env.DATABASE_NAME,
28
- user: process.env.DEV0_DB_USER,
29
- password: process.env.DEV0_DB_PASSWORD
30
- } },
31
24
  fixture: { connection: {
32
25
  host: process.env.DEV0_DB_HOST,
33
26
  port: Number(process.env.DEV0_DB_PORT),
34
- database: process.env.DATABASE_NAME,
27
+ database: process.env.QGRID_DB_NAME + "_fixture",
35
28
  user: process.env.DEV0_DB_USER,
36
29
  password: process.env.DEV0_DB_PASSWORD
30
+ } },
31
+ test: { connection: {
32
+ host: "0.0.0.0",
33
+ port: 54321,
34
+ database: "qgrid_test",
35
+ user: "postgres",
36
+ password: "postgres"
37
37
  } }
38
38
  }
39
39
  },
@@ -196,4 +196,4 @@ var sonamu_config_default = defineConfig({
196
196
  //#endregion
197
197
  export { sonamu_config_default as default };
198
198
 
199
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmNvbmZpZy5qcyIsIm5hbWVzIjpbImRyaXZlcnMiLCJjYWNoZURyaXZlcnMiXSwic291cmNlcyI6WyIuLi9zcmMvc29uYW11LmNvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBnZXRDb25zb2xlU2luayB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyBnZXRQcmV0dHlGb3JtYXR0ZXIgfSBmcm9tIFwiQGxvZ3RhcGUvcHJldHR5XCI7XG5pbXBvcnQgZG90ZW52IGZyb20gXCJkb3RlbnZcIjtcbmltcG9ydCB7IENhY2hlUHJlc2V0cywgZGVmaW5lQ29uZmlnIH0gZnJvbSBcInNvbmFtdVwiO1xuaW1wb3J0IHsgZHJpdmVycyBhcyBjYWNoZURyaXZlcnMsIHN0b3JlIH0gZnJvbSBcInNvbmFtdS9jYWNoZVwiO1xuaW1wb3J0IHsgZHJpdmVycyB9IGZyb20gXCJzb25hbXUvc3RvcmFnZVwiO1xuXG5kb3RlbnYuY29uZmlnKHsgcGF0aDogcGF0aC5qb2luKGltcG9ydC5tZXRhLmRpcm5hbWUsIFwiLi4vLmVudlwiKSB9KTtcblxuY29uc3QgaG9zdCA9IHByb2Nlc3MuZW52LkhPU1QgPz8gXCJsb2NhbGhvc3RcIjtcbmNvbnN0IHBvcnQgPSBOdW1iZXIocHJvY2Vzcy5lbnYuUE9SVCA/PyA0NDkwMCk7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyh7XG4gIHByb2plY3ROYW1lOiBwcm9jZXNzLmVudi5QUk9KRUNUX05BTUUgPz8gXCJTb25hbXVQcm9qZWN0XCIsXG4gIGRhdGFiYXNlOiB7XG4gICAgbmFtZTogcHJvY2Vzcy5lbnYuUUdSSURfREJfTkFNRSA/PyBcInFncmlkXCIsXG4gICAgZGVmYXVsdE9wdGlvbnM6IHtcbiAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgaG9zdDogcHJvY2Vzcy5lbnYuUUdSSURfREJfSE9TVCA/PyBcImxvY2FsaG9zdFwiLFxuICAgICAgICBwb3J0OiBOdW1iZXIocHJvY2Vzcy5lbnYuUUdSSURfREJfUE9SVCA/PyA0NDkwMSksXG4gICAgICAgIHVzZXI6IHByb2Nlc3MuZW52LlFHUklEX0RCX1VTRVIgPz8gXCJwb3N0Z3Jlc1wiLFxuICAgICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuUUdSSURfREJfUEFTU1dPUkQgPz8gXCJwb3N0Z3Jlc1wiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGVudmlyb25tZW50czoge1xuICAgICAgcHJvZHVjdGlvbjoge1xuICAgICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgICAgaG9zdDogcHJvY2Vzcy5lbnYuREVWMF9EQl9IT1NULFxuICAgICAgICAgIHBvcnQ6IE51bWJlcihwcm9jZXNzLmVudi5ERVYwX0RCX1BPUlQpLFxuICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5EQVRBQkFTRV9OQU1FLFxuICAgICAgICAgIHVzZXI6IHByb2Nlc3MuZW52LkRFVjBfREJfVVNFUixcbiAgICAgICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuREVWMF9EQl9QQVNTV09SRCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBmaXh0dXJlOiB7XG4gICAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgICBob3N0OiBwcm9jZXNzLmVudi5ERVYwX0RCX0hPU1QsXG4gICAgICAgICAgcG9ydDogTnVtYmVyKHByb2Nlc3MuZW52LkRFVjBfREJfUE9SVCksXG4gICAgICAgICAgZGF0YWJhc2U6IHByb2Nlc3MuZW52LkRBVEFCQVNFX05BTUUsXG4gICAgICAgICAgdXNlcjogcHJvY2Vzcy5lbnYuREVWMF9EQl9VU0VSLFxuICAgICAgICAgIHBhc3N3b3JkOiBwcm9jZXNzLmVudi5ERVYwX0RCX1BBU1NXT1JELFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBhcGk6IHtcbiAgICBkaXI6IFwiYXBpXCIsXG4gICAgdGltZXpvbmU6IFwiQXNpYS9TZW91bFwiLFxuICAgIHJvdXRlOiB7XG4gICAgICBwcmVmaXg6IFwiL2FwaVwiLFxuICAgIH0sXG4gIH0sXG4gIGkxOG46IHtcbiAgICBkZWZhdWx0TG9jYWxlOiBcImtvXCIsXG4gICAgc3VwcG9ydGVkTG9jYWxlczogW1wia29cIiwgXCJlblwiXSxcbiAgfSxcbiAgc3luYzoge1xuICAgIHRhcmdldHM6IFtcIndlYlwiXSxcbiAgfSxcbiAgc2xhY2tDb25maXJtOlxuICAgIHByb2Nlc3MuZW52LlNMQUNLX0JPVF9UT0tFTiAmJiBwcm9jZXNzLmVudi5TTEFDS19DSEFOTkVMX0lEXG4gICAgICA/IHtcbiAgICAgICAgICB0YXJnZXRzOiBbXCJkZXZlbG9wbWVudF9tYXN0ZXJcIiwgXCJwcm9kdWN0aW9uX21hc3RlclwiXSxcbiAgICAgICAgICBib3RUb2tlbjogcHJvY2Vzcy5lbnYuU0xBQ0tfQk9UX1RPS0VOID8/IFwiXCIsXG4gICAgICAgICAgY2hhbm5lbElkOiBwcm9jZXNzLmVudi5TTEFDS19DSEFOTkVMX0lEID8/IFwiXCIsXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkLFxuICB0ZXN0OiB7XG4gICAgcGFyYWxsZWw6IHRydWUsXG4gICAgbWF4V29ya2VyczogNCxcbiAgICBkZXZSdW5uZXI6IHsgZW5hYmxlZDogdHJ1ZSB9LFxuICB9LFxuICBsb2dnaW5nOiB7XG4gICAgc2lua3M6IHtcbiAgICAgIGNvbnNvbGU6IGdldENvbnNvbGVTaW5rKHtcbiAgICAgICAgZm9ybWF0dGVyOiBnZXRQcmV0dHlGb3JtYXR0ZXIoe1xuICAgICAgICAgIHRpbWVzdGFtcDogXCJ0aW1lXCIsXG4gICAgICAgICAgY2F0ZWdvcnlXaWR0aDogMjAsXG4gICAgICAgICAgY2F0ZWdvcnlUcnVuY2F0ZTogXCJtaWRkbGVcIixcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICB9LFxuICAgIGxvZ2dlcnM6IFtcbiAgICAgIHtcbiAgICAgICAgY2F0ZWdvcnk6IFtcInNvbmFtdVwiXSxcbiAgICAgICAgc2lua3M6IFtcImNvbnNvbGVcIl0sXG4gICAgICAgIGxvd2VzdExldmVsOiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCIgPyBcIndhcm5pbmdcIiA6IFwiZGVidWdcIixcbiAgICAgIH0sXG4gICAgXSxcbiAgfSxcbiAgc2VydmVyOiB7XG4gICAgbGlzdGVuOiB7IHBvcnQsIGhvc3QgfSxcbiAgICBwbHVnaW5zOiB7XG4gICAgICBmb3JtYm9keTogdHJ1ZSxcbiAgICAgIHFzOiB0cnVlLFxuICAgICAgbXVsdGlwYXJ0OiB7IGxpbWl0czogeyBmaWxlU2l6ZTogMTAyNCAqIDEwMjQgKiAzMCB9IH0sXG4gICAgICBzdGF0aWM6IHtcbiAgICAgICAgcm9vdDogcGF0aC5qb2luKGltcG9ydC5tZXRhLmRpcm5hbWUsIFwiLy4uL1wiLCBcInB1YmxpY1wiKSxcbiAgICAgICAgcHJlZml4OiBcIi9hcGkvcHVibGljXCIsXG4gICAgICB9LFxuICAgICAgY3VzdG9tOiAoc2VydmVyKSA9PiB7XG4gICAgICAgIC8vIE9BdXRoIOy9nOuwsSDigJQgQW50aHJvcGlj7J20IC9jYWxsYmFja+ycvOuhnCDrpqzri6TsnbTroIntirhcbiAgICAgICAgc2VydmVyLmdldChcIi9jYWxsYmFja1wiLCBhc3luYyAocmVxdWVzdCwgcmVwbHkpID0+IHtcbiAgICAgICAgICBjb25zdCB7IGNvZGUsIHN0YXRlIH0gPSByZXF1ZXN0LnF1ZXJ5IGFzIHsgY29kZT86IHN0cmluZzsgc3RhdGU/OiBzdHJpbmcgfTtcbiAgICAgICAgICBpZiAoIWNvZGUgfHwgIXN0YXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVwbHkucmVkaXJlY3QoXCIvP29hdXRoPWVycm9yJnJlYXNvbj1taXNzaW5nX3BhcmFtc1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gRnJhbWXsnZggb2F1dGhDYWxsYmFja+ycvOuhnCDsnITsnoRcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgeyBRZ3JpZEZyYW1lIH0gPSBhd2FpdCBpbXBvcnQoXCIuL2FwcGxpY2F0aW9uL3FncmlkL3FncmlkLmZyYW1lXCIpO1xuICAgICAgICAgICAgYXdhaXQgUWdyaWRGcmFtZS5oYW5kbGVPQXV0aENhbGxiYWNrKGNvZGUsIHN0YXRlLCByZXBseSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlcGx5LnJlZGlyZWN0KFxuICAgICAgICAgICAgICBgLz9vYXV0aD1lcnJvciZyZWFzb249JHtlbmNvZGVVUklDb21wb25lbnQoKGUgYXMgRXJyb3IpLm1lc3NhZ2UpfWAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgYXBpQ29uZmlnOiB7XG4gICAgICBjb250ZXh0UHJvdmlkZXI6IChkZWZhdWx0Q29udGV4dCwgcmVxdWVzdCkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmRlZmF1bHRDb250ZXh0LFxuICAgICAgICAgIGlwOiByZXF1ZXN0LmlwLFxuICAgICAgICAgIGJvZHk6IHJlcXVlc3QuYm9keSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgICBndWFyZEhhbmRsZXI6IChfZ3VhcmQsIF9yZXF1ZXN0LCBfYXBpKSA9PiB7XG4gICAgICAgIGlmIChfZ3VhcmQgPT09IFwidXNlclwiKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXCJ1c2VyIGd1YXJkXCIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUubG9nKFwiTk9USElORyBZRVRcIik7XG4gICAgICB9LFxuICAgICAgY2FjaGVDb250cm9sSGFuZGxlcjogKHJlcSkgPT4ge1xuICAgICAgICBzd2l0Y2ggKHJlcS50eXBlKSB7XG4gICAgICAgICAgY2FzZSBcImFzc2V0c1wiOlxuICAgICAgICAgICAgLy8gSGFzaCDtj6ztlajrkJwg7YyM7J28OiDsmIHqtawg7LqQ7IucXG4gICAgICAgICAgICBpZiAocmVxLnBhdGgubWF0Y2goLy1bYS1mMC05XStcXC4vKSkge1xuICAgICAgICAgICAgICByZXR1cm4gQ2FjaGVQcmVzZXRzLmltbXV0YWJsZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBDYWNoZVByZXNldHMubG9uZ0xpdmVkO1xuXG4gICAgICAgICAgY2FzZSBcImFwaVwiOlxuICAgICAgICAgICAgLy8gR0VUIOyalOyyreunjCDsupDsi7Eg6rOg66CkXG4gICAgICAgICAgICBpZiAocmVxLm1ldGhvZCA9PT0gXCJHRVRcIikge1xuICAgICAgICAgICAgICAvLyDtirnsoJUg6rK966Gc64qUIOynp+ydgCDsupDsi5xcbiAgICAgICAgICAgICAgaWYgKHJlcS5wYXRoLnN0YXJ0c1dpdGgoXCIvYXBpL3N0YXRpYy1kYXRhXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIENhY2hlUHJlc2V0cy5zaG9ydExpdmVkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChyZXEucGF0aC5zdGFydHNXaXRoKFwiL2FwaS90ZXJtc1wiKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBDYWNoZVByZXNldHMubWVkaXVtTGl2ZWQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIOq4sOuzuDog7LqQ7IucIOyXhuydjFxuICAgICAgICAgICAgcmV0dXJuIENhY2hlUHJlc2V0cy5ub0NhY2hlO1xuXG4gICAgICAgICAgY2FzZSBcInNzclwiOlxuICAgICAgICAgICAgLy8gU1NSIO2OmOydtOyngDogMTDstIgg7LqQ7IucXG4gICAgICAgICAgICByZXR1cm4gQ2FjaGVQcmVzZXRzLnNzcjtcblxuICAgICAgICAgIGNhc2UgXCJjc3JcIjpcbiAgICAgICAgICAgIC8vIENTUiBmYWxsYmFjayAoaW5kZXguaHRtbCk6IDHrtoQg7LqQ7IucXG4gICAgICAgICAgICByZXR1cm4gQ2FjaGVQcmVzZXRzLnNob3J0TGl2ZWQ7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSxcbiAgICBzdG9yYWdlOiB7XG4gICAgICBkcml2ZXJzOiB7XG4gICAgICAgIGZzOiBkcml2ZXJzLmZzKHtcbiAgICAgICAgICBsb2NhdGlvbjogcGF0aC5qb2luKGltcG9ydC5tZXRhLmRpcm5hbWUsIFwiLy4uL3B1YmxpYy91cGxvYWRlZFwiKSxcbiAgICAgICAgICB2aXNpYmlsaXR5OiBcInB1YmxpY1wiLFxuICAgICAgICAgIHVybEJ1aWxkZXI6IHtcbiAgICAgICAgICAgIGFzeW5jIGdlbmVyYXRlVVJMKGtleSkge1xuICAgICAgICAgICAgICByZXR1cm4gYC9hcGkvcHVibGljL3VwbG9hZGVkLyR7a2V5fWA7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYXN5bmMgZ2VuZXJhdGVTaWduZWRVUkwoa2V5KSB7XG4gICAgICAgICAgICAgIHJldHVybiBgL2FwaS9wdWJsaWMvdXBsb2FkZWQvJHtrZXl9YDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSksXG4gICAgICAgIHMzOiBkcml2ZXJzLnMzKHtcbiAgICAgICAgICBjcmVkZW50aWFsczoge1xuICAgICAgICAgICAgYWNjZXNzS2V5SWQ6IHByb2Nlc3MuZW52LkFXU19BQ0NFU1NfS0VZX0lEID8/IFwiXCIsXG4gICAgICAgICAgICBzZWNyZXRBY2Nlc3NLZXk6IHByb2Nlc3MuZW52LkFXU19TRUNSRVRfQUNDRVNTX0tFWSA/PyBcIlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVnaW9uOiBwcm9jZXNzLmVudi5TM19SRUdJT04gPz8gXCJhcC1ub3J0aGVhc3QtMlwiLFxuICAgICAgICAgIGJ1Y2tldDogcHJvY2Vzcy5lbnYuUzNfQlVDS0VUID8/IFwic29uYW11X2RlZmF1bHRfYnVja2V0XCIsXG4gICAgICAgICAgdmlzaWJpbGl0eTogXCJwcml2YXRlXCIsXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGNhY2hlOiB7XG4gICAgICBkZWZhdWx0OiBcIm1haW5cIixcbiAgICAgIHN0b3Jlczoge1xuICAgICAgICBtYWluOiBzdG9yZSgpLnVzZUwxTGF5ZXIoY2FjaGVEcml2ZXJzLm1lbW9yeSh7IG1heFNpemU6IFwiNTBtYlwiIH0pKSxcbiAgICAgIH0sXG4gICAgICB0dGw6IFwiNW1cIixcbiAgICAgIHByZWZpeDogXCJcIixcbiAgICB9LFxuICAgIGxpZmVjeWNsZToge1xuICAgICAgb25TdGFydDogYXN5bmMgKCkgPT4ge1xuICAgICAgICAvLyBEQiDrp4jsnbTqt7jroIjsnbTshZgg7J6Q64+ZIOyLpO2WiSAo7YWM7J2067iUIOyXhuycvOuptCDsg53shLEpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgeyBUb2tlbk1vZGVsIH0gPSBhd2FpdCBpbXBvcnQoXCIuL2FwcGxpY2F0aW9uL3Rva2VuL3Rva2VuLm1vZGVsXCIpO1xuICAgICAgICAgIGNvbnN0IGtuZXggPSBUb2tlbk1vZGVsLmdldERCKFwid1wiKTtcbiAgICAgICAgICBjb25zdCBtaWdyYXRpb25zRGlyID0gcGF0aC5qb2luKGltcG9ydC5tZXRhLmRpcm5hbWUsIFwiLi4vc3JjL21pZ3JhdGlvbnNcIik7XG4gICAgICAgICAgY29uc3QgW2JhdGNoLCBsb2ddID0gYXdhaXQga25leC5taWdyYXRlLmxhdGVzdCh7XG4gICAgICAgICAgICBkaXJlY3Rvcnk6IG1pZ3JhdGlvbnNEaXIsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKGxvZy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhg4pyTIE1pZ3JhdGlvbjogJHtsb2cubGVuZ3RofSBhcHBsaWVkIChiYXRjaCAke2JhdGNofSlgKTtcbiAgICAgICAgICAgIGxvZy5mb3JFYWNoKChuYW1lOiBzdHJpbmcpID0+IGNvbnNvbGUubG9nKGAgIOKckyAke25hbWV9YCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnNvbGUud2Fybihg4pqgIE1pZ3JhdGlvbiBza2lwcGVkOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUG9vbCDstIjquLDtmZRcbiAgICAgICAgY29uc3QgeyBpbml0UG9vbCB9ID0gYXdhaXQgaW1wb3J0KFwiLi9hcHBsaWNhdGlvbi9xZ3JpZC9wb29sXCIpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHsgVG9rZW5Nb2RlbCB9ID0gYXdhaXQgaW1wb3J0KFwiLi9hcHBsaWNhdGlvbi90b2tlbi90b2tlbi5tb2RlbFwiKTtcbiAgICAgICAgICBjb25zdCBlbnRyaWVzID0gYXdhaXQgVG9rZW5Nb2RlbC5maW5kQWN0aXZlKFwiQVwiKTtcbiAgICAgICAgICBjb25zdCB0b2tlbnMgPSBlbnRyaWVzLm1hcCgoZSkgPT4gKHsgdG9rZW46IGUudG9rZW4sIG5hbWU6IGUubmFtZSB9KSk7XG4gICAgICAgICAgY29uc3QgcG9vbCA9IGluaXRQb29sKHRva2Vucyk7XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBg8J+MsiBTZXJ2ZXIgbGlzdGVuaW5nIG9uIGh0dHA6Ly8ke2hvc3R9OiR7cG9ydH0gKCR7cG9vbC53b3JrZXJzLnNpemV9IHRva2VucyBsb2FkZWQpYCxcbiAgICAgICAgICApO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGDimqAgUG9vbCBpbml0IGZhaWxlZDogJHsoZSBhcyBFcnJvcikubWVzc2FnZX1gKTtcbiAgICAgICAgICBpbml0UG9vbChbXSk7XG4gICAgICAgICAgY29uc29sZS5sb2coYPCfjLIgU2VydmVyIGxpc3RlbmluZyBvbiBodHRwOi8vJHtob3N0fToke3BvcnR9IChubyB0b2tlbnMpYCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBvblNodXRkb3duOiAoKSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZ3JhY2VmdWwgc2h1dGRvd25cIik7XG4gICAgICB9LFxuICAgICAgb25FcnJvcjogKGVycm9yLCBfcmVxdWVzdCwgcmVwbHkpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHJlcGx5LnN0YXR1cyg1MDApLnNlbmQoe1xuICAgICAgICAgIG5hbWU6IGVycm9yLm5hbWUsXG4gICAgICAgICAgbWVzc2FnZTogZXJyb3IubWVzc2FnZSxcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBU0EsT0FBTyxPQUFPLEVBQUUsTUFBTSxLQUFLLEtBQUssT0FBTyxLQUFLLFNBQVMsVUFBVSxFQUFFLENBQUM7QUFFbEUsTUFBTSxPQUFPLFFBQVEsSUFBSSxRQUFRO0FBQ2pDLE1BQU0sT0FBTyxPQUFPLFFBQVEsSUFBSSxRQUFRLE1BQU07QUFFOUMsSUFBQSx3QkFBZSxhQUFhO0NBQzFCLGFBQWEsUUFBUSxJQUFJLGdCQUFnQjtDQUN6QyxVQUFVO0VBQ1IsTUFBTSxRQUFRLElBQUksaUJBQWlCO0VBQ25DLGdCQUFnQixFQUNkLFlBQVk7R0FDVixNQUFNLFFBQVEsSUFBSSxpQkFBaUI7R0FDbkMsTUFBTSxPQUFPLFFBQVEsSUFBSSxpQkFBaUIsTUFBTTtHQUNoRCxNQUFNLFFBQVEsSUFBSSxpQkFBaUI7R0FDbkMsVUFBVSxRQUFRLElBQUkscUJBQXFCO0dBQzVDLEVBQ0Y7RUFDRCxjQUFjO0dBQ1osWUFBWSxFQUNWLFlBQVk7SUFDVixNQUFNLFFBQVEsSUFBSTtJQUNsQixNQUFNLE9BQU8sUUFBUSxJQUFJLGFBQWE7SUFDdEMsVUFBVSxRQUFRLElBQUk7SUFDdEIsTUFBTSxRQUFRLElBQUk7SUFDbEIsVUFBVSxRQUFRLElBQUk7SUFDdkIsRUFDRjtHQUNELFNBQVMsRUFDUCxZQUFZO0lBQ1YsTUFBTSxRQUFRLElBQUk7SUFDbEIsTUFBTSxPQUFPLFFBQVEsSUFBSSxhQUFhO0lBQ3RDLFVBQVUsUUFBUSxJQUFJO0lBQ3RCLE1BQU0sUUFBUSxJQUFJO0lBQ2xCLFVBQVUsUUFBUSxJQUFJO0lBQ3ZCLEVBQ0Y7R0FDRjtFQUNGO0NB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
199
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29uYW11LmNvbmZpZy5qcyIsIm5hbWVzIjpbImRyaXZlcnMiLCJjYWNoZURyaXZlcnMiXSwic291cmNlcyI6WyIuLi9zcmMvc29uYW11LmNvbmZpZy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBnZXRDb25zb2xlU2luayB9IGZyb20gXCJAbG9ndGFwZS9sb2d0YXBlXCI7XG5pbXBvcnQgeyBnZXRQcmV0dHlGb3JtYXR0ZXIgfSBmcm9tIFwiQGxvZ3RhcGUvcHJldHR5XCI7XG5pbXBvcnQgZG90ZW52IGZyb20gXCJkb3RlbnZcIjtcbmltcG9ydCB7IENhY2hlUHJlc2V0cywgZGVmaW5lQ29uZmlnIH0gZnJvbSBcInNvbmFtdVwiO1xuaW1wb3J0IHsgZHJpdmVycyBhcyBjYWNoZURyaXZlcnMsIHN0b3JlIH0gZnJvbSBcInNvbmFtdS9jYWNoZVwiO1xuaW1wb3J0IHsgZHJpdmVycyB9IGZyb20gXCJzb25hbXUvc3RvcmFnZVwiO1xuXG5kb3RlbnYuY29uZmlnKHsgcGF0aDogcGF0aC5qb2luKGltcG9ydC5tZXRhLmRpcm5hbWUsIFwiLi4vLmVudlwiKSB9KTtcblxuY29uc3QgaG9zdCA9IHByb2Nlc3MuZW52LkhPU1QgPz8gXCJsb2NhbGhvc3RcIjtcbmNvbnN0IHBvcnQgPSBOdW1iZXIocHJvY2Vzcy5lbnYuUE9SVCA/PyA0NDkwMCk7XG5cbmV4cG9ydCBkZWZhdWx0IGRlZmluZUNvbmZpZyh7XG4gIHByb2plY3ROYW1lOiBwcm9jZXNzLmVudi5QUk9KRUNUX05BTUUgPz8gXCJTb25hbXVQcm9qZWN0XCIsXG4gIGRhdGFiYXNlOiB7XG4gICAgbmFtZTogcHJvY2Vzcy5lbnYuUUdSSURfREJfTkFNRSA/PyBcInFncmlkXCIsXG4gICAgZGVmYXVsdE9wdGlvbnM6IHtcbiAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgaG9zdDogcHJvY2Vzcy5lbnYuUUdSSURfREJfSE9TVCA/PyBcImxvY2FsaG9zdFwiLFxuICAgICAgICBwb3J0OiBOdW1iZXIocHJvY2Vzcy5lbnYuUUdSSURfREJfUE9SVCA/PyA0NDkwMSksXG4gICAgICAgIHVzZXI6IHByb2Nlc3MuZW52LlFHUklEX0RCX1VTRVIgPz8gXCJwb3N0Z3Jlc1wiLFxuICAgICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuUUdSSURfREJfUEFTU1dPUkQgPz8gXCJwb3N0Z3Jlc1wiLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGVudmlyb25tZW50czoge1xuICAgICAgZml4dHVyZToge1xuICAgICAgICBjb25uZWN0aW9uOiB7XG4gICAgICAgICAgaG9zdDogcHJvY2Vzcy5lbnYuREVWMF9EQl9IT1NULFxuICAgICAgICAgIHBvcnQ6IE51bWJlcihwcm9jZXNzLmVudi5ERVYwX0RCX1BPUlQpLFxuICAgICAgICAgIGRhdGFiYXNlOiBwcm9jZXNzLmVudi5RR1JJRF9EQl9OQU1FICsgXCJfZml4dHVyZVwiLFxuICAgICAgICAgIHVzZXI6IHByb2Nlc3MuZW52LkRFVjBfREJfVVNFUixcbiAgICAgICAgICBwYXNzd29yZDogcHJvY2Vzcy5lbnYuREVWMF9EQl9QQVNTV09SRCxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB0ZXN0OiB7XG4gICAgICAgIGNvbm5lY3Rpb246IHtcbiAgICAgICAgICBob3N0OiBcIjAuMC4wLjBcIixcbiAgICAgICAgICBwb3J0OiA1NDMyMSxcbiAgICAgICAgICBkYXRhYmFzZTogXCJxZ3JpZF90ZXN0XCIsXG4gICAgICAgICAgdXNlcjogXCJwb3N0Z3Jlc1wiLFxuICAgICAgICAgIHBhc3N3b3JkOiBcInBvc3RncmVzXCIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIGFwaToge1xuICAgIGRpcjogXCJhcGlcIixcbiAgICB0aW1lem9uZTogXCJBc2lhL1Nlb3VsXCIsXG4gICAgcm91dGU6IHtcbiAgICAgIHByZWZpeDogXCIvYXBpXCIsXG4gICAgfSxcbiAgfSxcbiAgaTE4bjoge1xuICAgIGRlZmF1bHRMb2NhbGU6IFwia29cIixcbiAgICBzdXBwb3J0ZWRMb2NhbGVzOiBbXCJrb1wiLCBcImVuXCJdLFxuICB9LFxuICBzeW5jOiB7XG4gICAgdGFyZ2V0czogW1wid2ViXCJdLFxuICB9LFxuICBzbGFja0NvbmZpcm06XG4gICAgcHJvY2Vzcy5lbnYuU0xBQ0tfQk9UX1RPS0VOICYmIHByb2Nlc3MuZW52LlNMQUNLX0NIQU5ORUxfSURcbiAgICAgID8ge1xuICAgICAgICAgIHRhcmdldHM6IFtcImRldmVsb3BtZW50X21hc3RlclwiLCBcInByb2R1Y3Rpb25fbWFzdGVyXCJdLFxuICAgICAgICAgIGJvdFRva2VuOiBwcm9jZXNzLmVudi5TTEFDS19CT1RfVE9LRU4gPz8gXCJcIixcbiAgICAgICAgICBjaGFubmVsSWQ6IHByb2Nlc3MuZW52LlNMQUNLX0NIQU5ORUxfSUQgPz8gXCJcIixcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQsXG4gIHRlc3Q6IHtcbiAgICBwYXJhbGxlbDogdHJ1ZSxcbiAgICBtYXhXb3JrZXJzOiA0LFxuICAgIGRldlJ1bm5lcjogeyBlbmFibGVkOiB0cnVlIH0sXG4gIH0sXG4gIGxvZ2dpbmc6IHtcbiAgICBzaW5rczoge1xuICAgICAgY29uc29sZTogZ2V0Q29uc29sZVNpbmsoe1xuICAgICAgICBmb3JtYXR0ZXI6IGdldFByZXR0eUZvcm1hdHRlcih7XG4gICAgICAgICAgdGltZXN0YW1wOiBcInRpbWVcIixcbiAgICAgICAgICBjYXRlZ29yeVdpZHRoOiAyMCxcbiAgICAgICAgICBjYXRlZ29yeVRydW5jYXRlOiBcIm1pZGRsZVwiLFxuICAgICAgICB9KSxcbiAgICAgIH0pLFxuICAgIH0sXG4gICAgbG9nZ2VyczogW1xuICAgICAge1xuICAgICAgICBjYXRlZ29yeTogW1wic29uYW11XCJdLFxuICAgICAgICBzaW5rczogW1wiY29uc29sZVwiXSxcbiAgICAgICAgbG93ZXN0TGV2ZWw6IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSBcInRlc3RcIiA/IFwid2FybmluZ1wiIDogXCJkZWJ1Z1wiLFxuICAgICAgfSxcbiAgICBdLFxuICB9LFxuICBzZXJ2ZXI6IHtcbiAgICBsaXN0ZW46IHsgcG9ydCwgaG9zdCB9LFxuICAgIHBsdWdpbnM6IHtcbiAgICAgIGZvcm1ib2R5OiB0cnVlLFxuICAgICAgcXM6IHRydWUsXG4gICAgICBtdWx0aXBhcnQ6IHsgbGltaXRzOiB7IGZpbGVTaXplOiAxMDI0ICogMTAyNCAqIDMwIH0gfSxcbiAgICAgIHN0YXRpYzoge1xuICAgICAgICByb290OiBwYXRoLmpvaW4oaW1wb3J0Lm1ldGEuZGlybmFtZSwgXCIvLi4vXCIsIFwicHVibGljXCIpLFxuICAgICAgICBwcmVmaXg6IFwiL2FwaS9wdWJsaWNcIixcbiAgICAgIH0sXG4gICAgICBjdXN0b206IChzZXJ2ZXIpID0+IHtcbiAgICAgICAgLy8gT0F1dGgg7L2c67CxIOKAlCBBbnRocm9waWPsnbQgL2NhbGxiYWNr7Jy866GcIOumrOuLpOydtOugie2KuFxuICAgICAgICBzZXJ2ZXIuZ2V0KFwiL2NhbGxiYWNrXCIsIGFzeW5jIChyZXF1ZXN0LCByZXBseSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgY29kZSwgc3RhdGUgfSA9IHJlcXVlc3QucXVlcnkgYXMgeyBjb2RlPzogc3RyaW5nOyBzdGF0ZT86IHN0cmluZyB9O1xuICAgICAgICAgIGlmICghY29kZSB8fCAhc3RhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiByZXBseS5yZWRpcmVjdChcIi8/b2F1dGg9ZXJyb3ImcmVhc29uPW1pc3NpbmdfcGFyYW1zXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBGcmFtZeydmCBvYXV0aENhbGxiYWNr7Jy866GcIOychOyehFxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCB7IFFncmlkRnJhbWUgfSA9IGF3YWl0IGltcG9ydChcIi4vYXBwbGljYXRpb24vcWdyaWQvcWdyaWQuZnJhbWVcIik7XG4gICAgICAgICAgICBhd2FpdCBRZ3JpZEZyYW1lLmhhbmRsZU9BdXRoQ2FsbGJhY2soY29kZSwgc3RhdGUsIHJlcGx5KTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVwbHkucmVkaXJlY3QoXG4gICAgICAgICAgICAgIGAvP29hdXRoPWVycm9yJnJlYXNvbj0ke2VuY29kZVVSSUNvbXBvbmVudCgoZSBhcyBFcnJvcikubWVzc2FnZSl9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBhcGlDb25maWc6IHtcbiAgICAgIGNvbnRleHRQcm92aWRlcjogKGRlZmF1bHRDb250ZXh0LCByZXF1ZXN0KSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZGVmYXVsdENvbnRleHQsXG4gICAgICAgICAgaXA6IHJlcXVlc3QuaXAsXG4gICAgICAgICAgYm9keTogcmVxdWVzdC5ib2R5LFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICAgIGd1YXJkSGFuZGxlcjogKF9ndWFyZCwgX3JlcXVlc3QsIF9hcGkpID0+IHtcbiAgICAgICAgaWYgKF9ndWFyZCA9PT0gXCJ1c2VyXCIpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcInVzZXIgZ3VhcmRcIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5sb2coXCJOT1RISU5HIFlFVFwiKTtcbiAgICAgIH0sXG4gICAgICBjYWNoZUNvbnRyb2xIYW5kbGVyOiAocmVxKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocmVxLnR5cGUpIHtcbiAgICAgICAgICBjYXNlIFwiYXNzZXRzXCI6XG4gICAgICAgICAgICAvLyBIYXNoIO2PrO2VqOuQnCDtjIzsnbw6IOyYgeq1rCDsupDsi5xcbiAgICAgICAgICAgIGlmIChyZXEucGF0aC5tYXRjaCgvLVthLWYwLTldK1xcLi8pKSB7XG4gICAgICAgICAgICAgIHJldHVybiBDYWNoZVByZXNldHMuaW1tdXRhYmxlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIENhY2hlUHJlc2V0cy5sb25nTGl2ZWQ7XG5cbiAgICAgICAgICBjYXNlIFwiYXBpXCI6XG4gICAgICAgICAgICAvLyBHRVQg7JqU7LKt66eMIOy6kOyLsSDqs6DroKRcbiAgICAgICAgICAgIGlmIChyZXEubWV0aG9kID09PSBcIkdFVFwiKSB7XG4gICAgICAgICAgICAgIC8vIO2KueyglSDqsr3roZzripQg7Ken7J2AIOy6kOyLnFxuICAgICAgICAgICAgICBpZiAocmVxLnBhdGguc3RhcnRzV2l0aChcIi9hcGkvc3RhdGljLWRhdGFcIikpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gQ2FjaGVQcmVzZXRzLnNob3J0TGl2ZWQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJlcS5wYXRoLnN0YXJ0c1dpdGgoXCIvYXBpL3Rlcm1zXCIpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIENhY2hlUHJlc2V0cy5tZWRpdW1MaXZlZDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8g6riw67O4OiDsupDsi5wg7JeG7J2MXG4gICAgICAgICAgICByZXR1cm4gQ2FjaGVQcmVzZXRzLm5vQ2FjaGU7XG5cbiAgICAgICAgICBjYXNlIFwic3NyXCI6XG4gICAgICAgICAgICAvLyBTU1Ig7Y6Y7J207KeAOiAxMOy0iCDsupDsi5xcbiAgICAgICAgICAgIHJldHVybiBDYWNoZVByZXNldHMuc3NyO1xuXG4gICAgICAgICAgY2FzZSBcImNzclwiOlxuICAgICAgICAgICAgLy8gQ1NSIGZhbGxiYWNrIChpbmRleC5odG1sKTogMeu2hCDsupDsi5xcbiAgICAgICAgICAgIHJldHVybiBDYWNoZVByZXNldHMuc2hvcnRMaXZlZDtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9LFxuICAgIHN0b3JhZ2U6IHtcbiAgICAgIGRyaXZlcnM6IHtcbiAgICAgICAgZnM6IGRyaXZlcnMuZnMoe1xuICAgICAgICAgIGxvY2F0aW9uOiBwYXRoLmpvaW4oaW1wb3J0Lm1ldGEuZGlybmFtZSwgXCIvLi4vcHVibGljL3VwbG9hZGVkXCIpLFxuICAgICAgICAgIHZpc2liaWxpdHk6IFwicHVibGljXCIsXG4gICAgICAgICAgdXJsQnVpbGRlcjoge1xuICAgICAgICAgICAgYXN5bmMgZ2VuZXJhdGVVUkwoa2V5KSB7XG4gICAgICAgICAgICAgIHJldHVybiBgL2FwaS9wdWJsaWMvdXBsb2FkZWQvJHtrZXl9YDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBhc3luYyBnZW5lcmF0ZVNpZ25lZFVSTChrZXkpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGAvYXBpL3B1YmxpYy91cGxvYWRlZC8ke2tleX1gO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICAgczM6IGRyaXZlcnMuczMoe1xuICAgICAgICAgIGNyZWRlbnRpYWxzOiB7XG4gICAgICAgICAgICBhY2Nlc3NLZXlJZDogcHJvY2Vzcy5lbnYuQVdTX0FDQ0VTU19LRVlfSUQgPz8gXCJcIixcbiAgICAgICAgICAgIHNlY3JldEFjY2Vzc0tleTogcHJvY2Vzcy5lbnYuQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZID8/IFwiXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZWdpb246IHByb2Nlc3MuZW52LlMzX1JFR0lPTiA/PyBcImFwLW5vcnRoZWFzdC0yXCIsXG4gICAgICAgICAgYnVja2V0OiBwcm9jZXNzLmVudi5TM19CVUNLRVQgPz8gXCJzb25hbXVfZGVmYXVsdF9idWNrZXRcIixcbiAgICAgICAgICB2aXNpYmlsaXR5OiBcInByaXZhdGVcIixcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0sXG4gICAgY2FjaGU6IHtcbiAgICAgIGRlZmF1bHQ6IFwibWFpblwiLFxuICAgICAgc3RvcmVzOiB7XG4gICAgICAgIG1haW46IHN0b3JlKCkudXNlTDFMYXllcihjYWNoZURyaXZlcnMubWVtb3J5KHsgbWF4U2l6ZTogXCI1MG1iXCIgfSkpLFxuICAgICAgfSxcbiAgICAgIHR0bDogXCI1bVwiLFxuICAgICAgcHJlZml4OiBcIlwiLFxuICAgIH0sXG4gICAgbGlmZWN5Y2xlOiB7XG4gICAgICBvblN0YXJ0OiBhc3luYyAoKSA9PiB7XG4gICAgICAgIC8vIERCIOuniOydtOq3uOugiOydtOyFmCDsnpDrj5kg7Iuk7ZaJICjthYzsnbTruJQg7JeG7Jy866m0IOyDneyEsSlcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB7IFRva2VuTW9kZWwgfSA9IGF3YWl0IGltcG9ydChcIi4vYXBwbGljYXRpb24vdG9rZW4vdG9rZW4ubW9kZWxcIik7XG4gICAgICAgICAgY29uc3Qga25leCA9IFRva2VuTW9kZWwuZ2V0REIoXCJ3XCIpO1xuICAgICAgICAgIGNvbnN0IG1pZ3JhdGlvbnNEaXIgPSBwYXRoLmpvaW4oaW1wb3J0Lm1ldGEuZGlybmFtZSwgXCIuLi9zcmMvbWlncmF0aW9uc1wiKTtcbiAgICAgICAgICBjb25zdCBbYmF0Y2gsIGxvZ10gPSBhd2FpdCBrbmV4Lm1pZ3JhdGUubGF0ZXN0KHtcbiAgICAgICAgICAgIGRpcmVjdG9yeTogbWlncmF0aW9uc0RpcixcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAobG9nLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGDinJMgTWlncmF0aW9uOiAke2xvZy5sZW5ndGh9IGFwcGxpZWQgKGJhdGNoICR7YmF0Y2h9KWApO1xuICAgICAgICAgICAgbG9nLmZvckVhY2goKG5hbWU6IHN0cmluZykgPT4gY29uc29sZS5sb2coYCAg4pyTICR7bmFtZX1gKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKGDimqAgTWlncmF0aW9uIHNraXBwZWQ6ICR7KGUgYXMgRXJyb3IpLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQb29sIOy0iOq4sO2ZlFxuICAgICAgICBjb25zdCB7IGluaXRQb29sIH0gPSBhd2FpdCBpbXBvcnQoXCIuL2FwcGxpY2F0aW9uL3FncmlkL3Bvb2xcIik7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgeyBUb2tlbk1vZGVsIH0gPSBhd2FpdCBpbXBvcnQoXCIuL2FwcGxpY2F0aW9uL3Rva2VuL3Rva2VuLm1vZGVsXCIpO1xuICAgICAgICAgIGNvbnN0IGVudHJpZXMgPSBhd2FpdCBUb2tlbk1vZGVsLmZpbmRBY3RpdmUoXCJBXCIpO1xuICAgICAgICAgIGNvbnN0IHRva2VucyA9IGVudHJpZXMubWFwKChlKSA9PiAoeyB0b2tlbjogZS50b2tlbiwgbmFtZTogZS5uYW1lIH0pKTtcbiAgICAgICAgICBjb25zdCBwb29sID0gaW5pdFBvb2wodG9rZW5zKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIGDwn4yyIFNlcnZlciBsaXN0ZW5pbmcgb24gaHR0cDovLyR7aG9zdH06JHtwb3J0fSAoJHtwb29sLndvcmtlcnMuc2l6ZX0gdG9rZW5zIGxvYWRlZClgLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oYOKaoCBQb29sIGluaXQgZmFpbGVkOiAkeyhlIGFzIEVycm9yKS5tZXNzYWdlfWApO1xuICAgICAgICAgIGluaXRQb29sKFtdKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhg8J+MsiBTZXJ2ZXIgbGlzdGVuaW5nIG9uIGh0dHA6Ly8ke2hvc3R9OiR7cG9ydH0gKG5vIHRva2VucylgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIG9uU2h1dGRvd246ICgpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coXCJncmFjZWZ1bCBzaHV0ZG93blwiKTtcbiAgICAgIH0sXG4gICAgICBvbkVycm9yOiAoZXJyb3IsIF9yZXF1ZXN0LCByZXBseSkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgcmVwbHkuc3RhdHVzKDUwMCkuc2VuZCh7XG4gICAgICAgICAgbmFtZTogZXJyb3IubmFtZSxcbiAgICAgICAgICBtZXNzYWdlOiBlcnJvci5tZXNzYWdlLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFTQSxPQUFPLE9BQU8sRUFBRSxNQUFNLEtBQUssS0FBSyxPQUFPLEtBQUssU0FBUyxVQUFVLEVBQUUsQ0FBQztBQUVsRSxNQUFNLE9BQU8sUUFBUSxJQUFJLFFBQVE7QUFDakMsTUFBTSxPQUFPLE9BQU8sUUFBUSxJQUFJLFFBQVEsTUFBTTtBQUU5QyxJQUFBLHdCQUFlLGFBQWE7Q0FDMUIsYUFBYSxRQUFRLElBQUksZ0JBQWdCO0NBQ3pDLFVBQVU7RUFDUixNQUFNLFFBQVEsSUFBSSxpQkFBaUI7RUFDbkMsZ0JBQWdCLEVBQ2QsWUFBWTtHQUNWLE1BQU0sUUFBUSxJQUFJLGlCQUFpQjtHQUNuQyxNQUFNLE9BQU8sUUFBUSxJQUFJLGlCQUFpQixNQUFNO0dBQ2hELE1BQU0sUUFBUSxJQUFJLGlCQUFpQjtHQUNuQyxVQUFVLFFBQVEsSUFBSSxxQkFBcUI7R0FDNUMsRUFDRjtFQUNELGNBQWM7R0FDWixTQUFTLEVBQ1AsWUFBWTtJQUNWLE1BQU0sUUFBUSxJQUFJO0lBQ2xCLE1BQU0sT0FBTyxRQUFRLElBQUksYUFBYTtJQUN0QyxVQUFVLFFBQVEsSUFBSSxnQkFBZ0I7SUFDdEMsTUFBTSxRQUFRLElBQUk7SUFDbEIsVUFBVSxRQUFRLElBQUk7SUFDdkIsRUFDRjtHQUNELE1BQU0sRUFDSixZQUFZO0lBQ1YsTUFBTTtJQUNOLE1BQU07SUFDTixVQUFVO0lBQ1YsTUFBTTtJQUNOLFVBQVU7SUFDWCxFQUNGO0dBQ0Y7RUFDRjtDQUNELEtBQUs7RUFDSCxLQUFLO0VBQ0wsVUFBVTtFQUNWLE9BQU8sRUFDTCxRQUFRLFFBQ1Q7RUFDRjtDQUNELE1BQU07RUFDSixlQUFlO0VBQ2Ysa0JBQWtCLENBQUMsTUFBTSxLQUFLO0VBQy9CO0NBQ0QsTUFBTSxFQUNKLFNB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
@@ -1,6 +1,6 @@
1
1
  import "../_virtual/_rolldown/runtime.js";
2
- import { vi } from "../node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/chunks/test.p_J6dB8a.js";
3
- import "../node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_vite@8.0.3_@emnapi_core@1.9.2__bb31087278f97a39b31b92010beab980/node_modules/vitest/dist/index.js";
2
+ import { vi } from "../node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496/node_modules/vitest/dist/chunks/test.p_J6dB8a.js";
3
+ import "../node_modules/.pnpm/vitest@4.1.2_@opentelemetry_api@1.9.0_@types_node@25.0.7_msw@2.13.3_@types_node@25.0.7__ba64bc4dd2e2bdde58df187864f65496/node_modules/vitest/dist/index.js";
4
4
  //#region src/testing/setup-mocks.ts
5
5
  vi.mock("fs/promises", async (importOriginal) => {
6
6
  const actual = await importOriginal();
@@ -17,10 +17,9 @@
17
17
  },
18
18
  {
19
19
  "name": "created_at",
20
- "type": "date",
21
20
  "desc": "등록일시",
22
21
  "dbDefault": "CURRENT_TIMESTAMP",
23
- "cone": { "note": "날짜 형식으로 생성됩니다.", "fixtureGenerator": "faker.date.past()" }
22
+ "type": "date"
24
23
  },
25
24
  {
26
25
  "name": "token_name",
@@ -37,7 +36,14 @@
37
36
  { "name": "cache_creation_tokens", "type": "integer", "desc": "캐시 생성 토큰" },
38
37
  { "name": "duration_ms", "type": "integer", "desc": "응답 소요시간(ms)" }
39
38
  ],
40
- "indexes": [],
39
+ "indexes": [
40
+ {
41
+ "type": "index",
42
+ "name": "request_logs_token_name_index",
43
+ "columns": [{ "name": "token_name" }],
44
+ "using": "btree"
45
+ }
46
+ ],
41
47
  "subsets": {
42
48
  "A": {
43
49
  "fields": [
@@ -36,13 +36,25 @@ Content-Type: application/json
36
36
  "refresh_token": null,
37
37
  "expires_at": null,
38
38
  "account_uuid": null,
39
- "active": false
39
+ "active": false,
40
+ "ord": 0
40
41
  }
41
42
  ]
42
43
  }
43
44
 
44
45
  ###
45
46
 
47
+ POST {{baseUrl}}/api/token/reorder
48
+ Content-Type: application/json
49
+
50
+ {
51
+ "ids": [
52
+ 0
53
+ ]
54
+ }
55
+
56
+ ###
57
+
46
58
  POST {{baseUrl}}/api/token/del
47
59
  Content-Type: application/json
48
60
 
@@ -46,6 +46,7 @@ export const tokenSubsetQueries = {
46
46
  expires_at: "tokens.expires_at",
47
47
  account_uuid: "tokens.account_uuid",
48
48
  active: "tokens.active",
49
+ ord: "tokens.ord",
49
50
  });
50
51
  },
51
52
  };
@@ -18,9 +18,9 @@ export type RequestLogSearchField = z.infer<typeof RequestLogSearchField>;
18
18
  export const RequestLogSearchFieldLabel = { id: "ID", token_name: "토큰이름", query: "쿼리" };
19
19
 
20
20
  // Enums: Token
21
- export const TokenOrderBy = z.enum(["id-desc"]).describe("TokenOrderBy");
21
+ export const TokenOrderBy = z.enum(["id-desc", "ord-asc"]).describe("TokenOrderBy");
22
22
  export type TokenOrderBy = z.infer<typeof TokenOrderBy>;
23
- export const TokenOrderByLabel = { "id-desc": "ID최신순" };
23
+ export const TokenOrderByLabel = { "id-desc": "ID최신순", "ord-asc": "순서순" };
24
24
  export const TokenSearchField = z.enum(["id", "name"]).describe("TokenSearchField");
25
25
  export type TokenSearchField = z.infer<typeof TokenSearchField>;
26
26
  export const TokenSearchFieldLabel = { id: "ID", name: "이름" };
@@ -52,6 +52,7 @@ export const TokenBaseSchema = z.object({
52
52
  expires_at: z.bigint().nullable(),
53
53
  account_uuid: z.string().nullable(),
54
54
  active: z.boolean(),
55
+ ord: z.int(),
55
56
  });
56
57
  export type TokenBaseSchema = z.infer<typeof TokenBaseSchema> & {
57
58
  readonly __hasDefault__: readonly [
@@ -60,6 +61,7 @@ export type TokenBaseSchema = z.infer<typeof TokenBaseSchema> & {
60
61
  "expires_at",
61
62
  "account_uuid",
62
63
  "active",
64
+ "ord",
63
65
  "id",
64
66
  ];
65
67
  };
@@ -126,6 +128,7 @@ export const TokenSubsetA = z.object({
126
128
  expires_at: z.bigint().nullable(),
127
129
  account_uuid: z.string().nullable(),
128
130
  active: z.boolean(),
131
+ ord: z.int(),
129
132
  });
130
133
  export type TokenSubsetA = z.infer<typeof TokenSubsetA>;
131
134
  export type TokenSubsetMapping = {
@@ -15,7 +15,8 @@
15
15
  "desc": "만료 시각 (epoch ms)"
16
16
  },
17
17
  { "name": "account_uuid", "type": "string", "nullable": true, "desc": "Anthropic 계정 UUID" },
18
- { "name": "active", "type": "boolean", "desc": "활성 여부", "dbDefault": "true" }
18
+ { "name": "active", "type": "boolean", "desc": "활성 여부", "dbDefault": "true" },
19
+ { "name": "ord", "type": "integer", "desc": "정렬 순서", "dbDefault": "0" }
19
20
  ],
20
21
  "indexes": [],
21
22
  "subsets": {
@@ -27,11 +28,12 @@
27
28
  "refresh_token",
28
29
  "expires_at",
29
30
  "account_uuid",
30
- "active"
31
+ "active",
32
+ "ord"
31
33
  ]
32
34
  },
33
35
  "enums": {
34
- "TokenOrderBy": { "id-desc": "ID최신순" },
36
+ "TokenOrderBy": { "id-desc": "ID최신순", "ord-asc": "순서순" },
35
37
  "TokenSearchField": { "id": "ID", "name": "이름" }
36
38
  }
37
39
  }
@@ -49,7 +49,7 @@ class TokenModelClass extends BaseModelClass<
49
49
  num: 24,
50
50
  page: 1,
51
51
  search: "id" as const,
52
- orderBy: "id-desc" as const,
52
+ orderBy: "ord-asc" as const,
53
53
  ...rawParams,
54
54
  } satisfies TokenListParams;
55
55
 
@@ -76,6 +76,9 @@ class TokenModelClass extends BaseModelClass<
76
76
  if (params.orderBy) {
77
77
  if (params.orderBy === "id-desc") {
78
78
  qb.orderBy("tokens.id", "desc");
79
+ } else if (params.orderBy === "ord-asc") {
80
+ qb.orderBy("tokens.ord", "asc");
81
+ qb.orderBy("tokens.id", "asc");
79
82
  } else {
80
83
  exhaustive(params.orderBy);
81
84
  }
@@ -147,6 +150,17 @@ class TokenModelClass extends BaseModelClass<
147
150
  });
148
151
  }
149
152
 
153
+ @api({ httpMethod: "POST", clients: ["axios", "tanstack-mutation"] })
154
+ async reorder(ids: number[]): Promise<{ done: boolean }> {
155
+ const wdb = this.getPuri("w");
156
+ await wdb.transaction(async (trx) => {
157
+ for (let i = 0; i < ids.length; i++) {
158
+ await trx.table("tokens").where("id", ids[i]!).update({ ord: i });
159
+ }
160
+ });
161
+ return { done: true };
162
+ }
163
+
150
164
  @api({ httpMethod: "POST", clients: ["axios", "tanstack-mutation"] })
151
165
  async del(ids: number[]): Promise<number> {
152
166
  const wdb = this.getPuri("w");
@@ -14,6 +14,7 @@ export const TokenSaveParams = TokenBaseSchema.partial({
14
14
  expires_at: true,
15
15
  account_uuid: true,
16
16
  active: true,
17
+ ord: true,
17
18
  });
18
19
  export type TokenSaveParams = z.infer<typeof TokenSaveParams>;
19
20
 
@@ -233,7 +233,9 @@ const entityLabels = {
233
233
  "entity.Token.expires_at": "만료 시각 (epoch ms)",
234
234
  "entity.Token.account_uuid": "Anthropic 계정 UUID",
235
235
  "entity.Token.active": "활성 여부",
236
+ "entity.Token.ord": "정렬 순서",
236
237
  "enum.TokenOrderBy.id-desc": "ID최신순",
238
+ "enum.TokenOrderBy.ord-asc": "순서순",
237
239
  "enum.TokenSearchField.id": "ID",
238
240
  "enum.TokenSearchField.name": "이름",
239
241
  } as const;
@@ -0,0 +1,13 @@
1
+ import { type Knex } from "knex";
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ await knex.schema.alterTable("tokens", (table) => {
5
+ table.integer("ord").notNullable().defaultTo(0);
6
+ });
7
+ }
8
+
9
+ export async function down(knex: Knex): Promise<void> {
10
+ await knex.schema.alterTable("tokens", (table) => {
11
+ table.dropColumn("ord");
12
+ });
13
+ }
@@ -0,0 +1,13 @@
1
+ import { Knex } from "knex";
2
+
3
+ export async function up(knex: Knex): Promise<void> {
4
+ await knex.raw(
5
+ `CREATE INDEX request_logs_token_name_index ON request_logs USING btree(token_name ASC NULLS LAST);`,
6
+ );
7
+ }
8
+
9
+ export async function down(knex: Knex): Promise<void> {
10
+ await knex.schema.alterTable("request_logs", (table) => {
11
+ table.dropIndex(["token_name"], "request_logs_token_name_index");
12
+ });
13
+ }
@@ -25,22 +25,22 @@ export default defineConfig({
25
25
  },
26
26
  },
27
27
  environments: {
28
- production: {
28
+ fixture: {
29
29
  connection: {
30
30
  host: process.env.DEV0_DB_HOST,
31
31
  port: Number(process.env.DEV0_DB_PORT),
32
- database: process.env.DATABASE_NAME,
32
+ database: process.env.QGRID_DB_NAME + "_fixture",
33
33
  user: process.env.DEV0_DB_USER,
34
34
  password: process.env.DEV0_DB_PASSWORD,
35
35
  },
36
36
  },
37
- fixture: {
37
+ test: {
38
38
  connection: {
39
- host: process.env.DEV0_DB_HOST,
40
- port: Number(process.env.DEV0_DB_PORT),
41
- database: process.env.DATABASE_NAME,
42
- user: process.env.DEV0_DB_USER,
43
- password: process.env.DEV0_DB_PASSWORD,
39
+ host: "0.0.0.0",
40
+ port: 54321,
41
+ database: "qgrid_test",
42
+ user: "postgres",
43
+ password: "postgres",
44
44
  },
45
45
  },
46
46
  },