@codecanvascollective/source-admin 0.1.0 → 0.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 (152) hide show
  1. package/CONTRIBUTING.md +26 -26
  2. package/LICENSE +190 -190
  3. package/README.md +81 -79
  4. package/SECURITY.md +11 -11
  5. package/bin/source-admin.mjs +265 -265
  6. package/dist/standalone/.next/BUILD_ID +1 -1
  7. package/dist/standalone/.next/build-manifest.json +3 -3
  8. package/dist/standalone/.next/prerender-manifest.json +3 -3
  9. package/dist/standalone/.next/required-server-files.json +20 -20
  10. package/dist/standalone/.next/server/app/_global-error.html +1 -1
  11. package/dist/standalone/.next/server/app/_global-error.rsc +1 -1
  12. package/dist/standalone/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  13. package/dist/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  14. package/dist/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  15. package/dist/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  16. package/dist/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  17. package/dist/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  18. package/dist/standalone/.next/server/app/_not-found.html +1 -1
  19. package/dist/standalone/.next/server/app/_not-found.rsc +2 -2
  20. package/dist/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  21. package/dist/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  22. package/dist/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  23. package/dist/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  24. package/dist/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  25. package/dist/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  26. package/dist/standalone/.next/server/app/admin/source/page.js +2 -2
  27. package/dist/standalone/.next/server/app/admin/source/page.js.nft.json +1 -1
  28. package/dist/standalone/.next/server/app/admin/source/page_client-reference-manifest.js +1 -1
  29. package/dist/standalone/.next/server/app/admin/tables/page.js +2 -2
  30. package/dist/standalone/.next/server/app/admin/tables/page.js.nft.json +1 -1
  31. package/dist/standalone/.next/server/app/admin/tables/page_client-reference-manifest.js +1 -1
  32. package/dist/standalone/.next/server/app/api/admin/source/discover/route.js +3 -3
  33. package/dist/standalone/.next/server/app/api/admin/source/discover/route.js.nft.json +1 -1
  34. package/dist/standalone/.next/server/app/api/admin/source/mapping/route.js +3 -3
  35. package/dist/standalone/.next/server/app/api/admin/source/mapping/route.js.nft.json +1 -1
  36. package/dist/standalone/.next/server/app/api/admin/source/route.js +3 -3
  37. package/dist/standalone/.next/server/app/api/admin/source/route.js.nft.json +1 -1
  38. package/dist/standalone/.next/server/app/api/admin/source/test/route.js +3 -3
  39. package/dist/standalone/.next/server/app/api/admin/source/test/route.js.nft.json +1 -1
  40. package/dist/standalone/.next/server/app/api/admin/tables/route.js +3 -3
  41. package/dist/standalone/.next/server/app/api/admin/tables/route.js.nft.json +1 -1
  42. package/dist/standalone/.next/server/app/api/admin/tables/rows/route.js +3 -3
  43. package/dist/standalone/.next/server/app/api/admin/tables/rows/route.js.nft.json +1 -1
  44. package/dist/standalone/.next/server/app/index.html +1 -1
  45. package/dist/standalone/.next/server/app/index.rsc +2 -2
  46. package/dist/standalone/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  47. package/dist/standalone/.next/server/app/index.segments/_full.segment.rsc +2 -2
  48. package/dist/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
  49. package/dist/standalone/.next/server/app/index.segments/_index.segment.rsc +2 -2
  50. package/dist/standalone/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  51. package/dist/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
  52. package/dist/standalone/.next/server/app/sign-in/page_client-reference-manifest.js +1 -1
  53. package/dist/standalone/.next/server/chunks/[root-of-the-server]__08voc16._.js +3 -0
  54. package/dist/standalone/.next/server/chunks/[root-of-the-server]__0hzpf7k._.js +3 -0
  55. package/dist/standalone/.next/server/chunks/[root-of-the-server]__0h~4w31._.js +3 -0
  56. package/dist/standalone/.next/server/chunks/[root-of-the-server]__0k~_qfk._.js +3 -0
  57. package/dist/standalone/.next/server/chunks/[root-of-the-server]__0lmxc5_._.js +3 -0
  58. package/dist/standalone/.next/server/chunks/[root-of-the-server]__0p09u08._.js +3 -0
  59. package/dist/standalone/.next/server/chunks/_06an.-f._.js +29 -18
  60. package/dist/standalone/.next/server/chunks/_0eildm-._.js +29 -18
  61. package/dist/standalone/.next/server/chunks/_0xr7q4b._.js +18 -15
  62. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__0zpjyya._.js +3 -0
  63. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__13lr0v4._.js +3 -0
  64. package/dist/standalone/.next/server/chunks/ssr/_0esgwcu._.js +16 -9
  65. package/dist/standalone/.next/server/chunks/ssr/_0w76r0e._.js +1 -1
  66. package/dist/standalone/.next/server/chunks/ssr/src_components_admin_source-manager-console_tsx_0083okn._.js +3 -0
  67. package/dist/standalone/.next/server/chunks/ssr/src_lib_platform_service_ts_0c9l1f7._.js +16 -13
  68. package/dist/standalone/.next/server/middleware-build-manifest.js +3 -3
  69. package/dist/standalone/.next/server/middleware-manifest.json +5 -5
  70. package/dist/standalone/.next/server/pages/404.html +1 -1
  71. package/dist/standalone/.next/server/pages/500.html +1 -1
  72. package/dist/standalone/.next/server/server-reference-manifest.js +1 -1
  73. package/dist/standalone/.next/server/server-reference-manifest.json +1 -1
  74. package/dist/standalone/.next/static/chunks/0fzblwu6f7o8u.css +1 -0
  75. package/dist/standalone/.next/static/chunks/0se7aghcfp.wu.js +1 -0
  76. package/dist/standalone/.next/static/chunks/{0--6sjpgdxkp8.js → 0v3~3f8d_ihp1.js} +1 -1
  77. package/dist/standalone/node_modules/@img/sharp-libvips-linux-x64/README.md +46 -0
  78. package/dist/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/glib-2.0/include/glibconfig.h +221 -0
  79. package/dist/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/index.js +1 -0
  80. package/dist/standalone/node_modules/@img/sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  81. package/dist/standalone/node_modules/@img/sharp-libvips-linux-x64/package.json +42 -0
  82. package/dist/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +46 -0
  83. package/dist/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +221 -0
  84. package/dist/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +1 -0
  85. package/dist/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  86. package/dist/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +42 -0
  87. package/dist/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +30 -0
  88. package/dist/standalone/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
  89. package/dist/standalone/node_modules/@img/{sharp-win32-x64 → sharp-linux-x64}/package.json +46 -39
  90. package/dist/standalone/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
  91. package/dist/standalone/node_modules/@img/sharp-linuxmusl-x64/package.json +46 -0
  92. package/dist/standalone/node_modules/msnodesqlv8/build/Release/sqlserver.node +0 -0
  93. package/dist/standalone/node_modules/msnodesqlv8/lib/base-promises.js +0 -0
  94. package/dist/standalone/node_modules/msnodesqlv8/lib/connection.js +0 -0
  95. package/dist/standalone/node_modules/msnodesqlv8/lib/data-struture/heap/Heap.js +0 -0
  96. package/dist/standalone/node_modules/msnodesqlv8/lib/data-struture/heap/MaxHeap.js +0 -0
  97. package/dist/standalone/node_modules/msnodesqlv8/lib/data-struture/heap/MinHeap.js +0 -0
  98. package/dist/standalone/node_modules/msnodesqlv8/lib/data-struture/priority-queue/PriorityQueue.js +0 -0
  99. package/dist/standalone/node_modules/msnodesqlv8/lib/data-struture/utils/comparator/Comparator.js +0 -0
  100. package/dist/standalone/node_modules/msnodesqlv8/lib/dialect.js +0 -0
  101. package/dist/standalone/node_modules/msnodesqlv8/lib/driver.js +0 -0
  102. package/dist/standalone/node_modules/msnodesqlv8/lib/index.d.ts +0 -0
  103. package/dist/standalone/node_modules/msnodesqlv8/lib/meta.js +0 -0
  104. package/dist/standalone/node_modules/msnodesqlv8/lib/notifier.js +0 -0
  105. package/dist/standalone/node_modules/msnodesqlv8/lib/pool.js +0 -0
  106. package/dist/standalone/node_modules/msnodesqlv8/lib/prepared-statement.js +0 -0
  107. package/dist/standalone/node_modules/msnodesqlv8/lib/procedure-bound.js +0 -0
  108. package/dist/standalone/node_modules/msnodesqlv8/lib/procedure-meta.js +0 -0
  109. package/dist/standalone/node_modules/msnodesqlv8/lib/procedure.js +0 -0
  110. package/dist/standalone/node_modules/msnodesqlv8/lib/queries/proc_describe.sql +0 -0
  111. package/dist/standalone/node_modules/msnodesqlv8/lib/queries/server_version.sql +0 -0
  112. package/dist/standalone/node_modules/msnodesqlv8/lib/queries/table_describe.2014.sql +0 -0
  113. package/dist/standalone/node_modules/msnodesqlv8/lib/queries/table_describe.sql +0 -0
  114. package/dist/standalone/node_modules/msnodesqlv8/lib/queries/user_type.sql +0 -0
  115. package/dist/standalone/node_modules/msnodesqlv8/lib/query-aggregator.js +0 -0
  116. package/dist/standalone/node_modules/msnodesqlv8/lib/query-handler.js +0 -0
  117. package/dist/standalone/node_modules/msnodesqlv8/lib/queue.js +0 -0
  118. package/dist/standalone/node_modules/msnodesqlv8/lib/reader.js +0 -0
  119. package/dist/standalone/node_modules/msnodesqlv8/lib/sequelize/connection.js +0 -0
  120. package/dist/standalone/node_modules/msnodesqlv8/lib/sequelize/index.js +0 -0
  121. package/dist/standalone/node_modules/msnodesqlv8/lib/sequelize/request.js +0 -0
  122. package/dist/standalone/node_modules/msnodesqlv8/lib/shema-splitter.js +0 -0
  123. package/dist/standalone/node_modules/msnodesqlv8/lib/sql-client.js +0 -0
  124. package/dist/standalone/node_modules/msnodesqlv8/lib/sql.js +0 -0
  125. package/dist/standalone/node_modules/msnodesqlv8/lib/table-builder.js +0 -0
  126. package/dist/standalone/node_modules/msnodesqlv8/lib/table-bulk-op-mgr.js +0 -0
  127. package/dist/standalone/node_modules/msnodesqlv8/lib/table-column.js +0 -0
  128. package/dist/standalone/node_modules/msnodesqlv8/lib/table-meta.js +0 -0
  129. package/dist/standalone/node_modules/msnodesqlv8/lib/table.js +0 -0
  130. package/dist/standalone/node_modules/msnodesqlv8/lib/user.js +0 -0
  131. package/dist/standalone/node_modules/msnodesqlv8/lib/util.js +0 -0
  132. package/dist/standalone/node_modules/mssql/bin/mssql +0 -0
  133. package/dist/standalone/node_modules/open/xdg-open +0 -0
  134. package/dist/standalone/package.json +60 -59
  135. package/dist/standalone/server.js +1 -1
  136. package/package.json +60 -59
  137. package/dist/standalone/.next/server/chunks/[root-of-the-server]__02a79yv._.js +0 -3
  138. package/dist/standalone/.next/server/chunks/[root-of-the-server]__0nk-09u._.js +0 -3
  139. package/dist/standalone/.next/server/chunks/[root-of-the-server]__0nn_zpx._.js +0 -3
  140. package/dist/standalone/.next/server/chunks/[root-of-the-server]__0pr0jqt._.js +0 -3
  141. package/dist/standalone/.next/server/chunks/[root-of-the-server]__0zj4ll6._.js +0 -3
  142. package/dist/standalone/.next/server/chunks/[root-of-the-server]__110gi2p._.js +0 -3
  143. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__0r3b4.4._.js +0 -3
  144. package/dist/standalone/.next/server/chunks/ssr/[root-of-the-server]__0xwj_sh._.js +0 -3
  145. package/dist/standalone/.next/server/chunks/ssr/src_components_admin_source-console_tsx_01x.d.u._.js +0 -3
  146. package/dist/standalone/.next/static/chunks/06nz~tv04ai2q.css +0 -1
  147. package/dist/standalone/.next/static/chunks/110llkdc70cqf.js +0 -1
  148. package/dist/standalone/node_modules/@img/sharp-win32-x64/lib/sharp-win32-x64.node +0 -0
  149. /package/dist/standalone/.next/static/{P5MMIlYxIq6fvXoCpYoTQ → mBwymJ7f6SxgPAmQc9dxG}/_buildManifest.js +0 -0
  150. /package/dist/standalone/.next/static/{P5MMIlYxIq6fvXoCpYoTQ → mBwymJ7f6SxgPAmQc9dxG}/_clientMiddlewareManifest.js +0 -0
  151. /package/dist/standalone/.next/static/{P5MMIlYxIq6fvXoCpYoTQ → mBwymJ7f6SxgPAmQc9dxG}/_ssgManifest.js +0 -0
  152. /package/dist/standalone/node_modules/@img/{sharp-win32-x64 → sharp-libvips-linux-x64}/versions.json +0 -0
@@ -75,16 +75,25 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
75
75
  created_at TEXT NOT NULL,
76
76
  updated_at TEXT NOT NULL
77
77
  );
78
- `),e.g.__logManagerMetadataDb}function f(){return!!m().prepare(`
78
+
79
+ CREATE INDEX IF NOT EXISTS idx_sources_active_updated
80
+ ON sources(is_active, updated_at);
81
+
82
+ CREATE INDEX IF NOT EXISTS idx_source_discoveries_source_created
83
+ ON source_discoveries(source_id, created_at);
84
+
85
+ CREATE INDEX IF NOT EXISTS idx_source_mappings_source_active_updated
86
+ ON source_mappings(source_id, is_active, updated_at);
87
+ `),e.g.__logManagerMetadataDb}function f(e){let t;if("csv"===e.type)return{authMode:null,connectionLabel:e.connection.filePath,createdAt:e.createdAt,delimiter:e.connection.delimiter,encoding:e.connection.encoding,filePath:e.connection.filePath,hasStoredCredentials:!1,id:e.id,isActive:e.isActive,maskedConnectionString:null,name:e.name,odbcDriver:null,requestTimeoutMs:null,type:e.type,updatedAt:e.updatedAt};let i=(t=e.connection.connectionString.replace(/(password|pwd)\s*=\s*[^;]+/gi,"$1=****").replace(/(user id|uid)\s*=\s*[^;]+/gi,"$1=****")).length>180?`${t.slice(0,177)}...`:t;return{authMode:e.connection.authMode,connectionLabel:i,createdAt:e.createdAt,delimiter:null,encoding:null,filePath:null,hasStoredCredentials:!0,id:e.id,isActive:e.isActive,maskedConnectionString:i,name:e.name,odbcDriver:e.connection.odbcDriver,requestTimeoutMs:e.connection.requestTimeoutMs,type:e.type,updatedAt:e.updatedAt}}function p(){return!!m().prepare(`
79
88
  SELECT id
80
89
  FROM auth_users
81
90
  LIMIT 1
82
- `).get()}function p(e){let t=m().prepare(`
91
+ `).get()}function v(e){let t=m().prepare(`
83
92
  SELECT id, email, name, password_hash, role, created_at, updated_at
84
93
  FROM auth_users
85
94
  WHERE email = ? COLLATE NOCASE
86
95
  LIMIT 1
87
- `).get(e);return t?{createdAt:t.created_at,email:t.email,id:t.id,name:t.name,passwordHash:t.password_hash,role:t.role,updatedAt:t.updated_at}:null}function v(e){let t=m();if(f())return null;let i=new Date().toISOString(),n=(0,a.randomUUID)();return t.prepare(`
96
+ `).get(e);return t?{createdAt:t.created_at,email:t.email,id:t.id,name:t.name,passwordHash:t.password_hash,role:t.role,updatedAt:t.updated_at}:null}function g(e){let t=m();if(p())return null;let i=new Date().toISOString(),n=(0,a.randomUUID)();return t.prepare(`
88
97
  INSERT INTO auth_users (
89
98
  id,
90
99
  email,
@@ -95,26 +104,34 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
95
104
  updated_at
96
105
  )
97
106
  VALUES (?, ?, ?, ?, 'admin', ?, ?)
98
- `).run(n,e.email.toLowerCase(),e.name,e.passwordHash,i,i),p(e.email)}function g(){let e=m().prepare(`
107
+ `).run(n,e.email.toLowerCase(),e.name,e.passwordHash,i,i),v(e.email)}function $(){return m().prepare(`
99
108
  SELECT id, name, type, connection_blob, is_active, created_at, updated_at
100
109
  FROM sources
101
- WHERE is_active = 1
102
- ORDER BY updated_at DESC
110
+ ORDER BY is_active DESC, updated_at DESC, created_at DESC
111
+ `).all().map(e=>y(e)).filter(e=>!!e)}function _(e){let t=m().prepare(`
112
+ SELECT id, name, type, connection_blob, is_active, created_at, updated_at
113
+ FROM sources
114
+ WHERE id = ?
103
115
  LIMIT 1
104
- `).get();return e?function(e){try{return{connection:function(e){let[t,i,n]=e.split(".");if(!t||!i||!n)throw new d("Encrypted metadata is malformed.");try{let e=(0,a.createDecipheriv)("aes-256-gcm",c(),Buffer.from(t,"base64url"));e.setAuthTag(Buffer.from(i,"base64url"));let r=Buffer.concat([e.update(Buffer.from(n,"base64url")),e.final()]);return JSON.parse(r.toString("utf8"))}catch(e){if(e instanceof d)throw e;throw new d}}(e.connection_blob),createdAt:e.created_at,id:e.id,isActive:1===e.is_active,name:e.name,type:e.type,updatedAt:e.updated_at}}catch(t){if(t instanceof d)return console.warn(`Ignoring source "${e.id}" because its encrypted metadata could not be decrypted. Re-save the source with the current APP_CONFIG_ENCRYPTION_KEY.`),null;throw t}}(e):null}e.s(["clearActiveMapping",0,function(e){m().prepare("UPDATE source_mappings SET is_active = 0, updated_at = ? WHERE source_id = ?").run(new Date().toISOString(),e)},"createFirstLocalAdminUser",0,v,"getActiveMapping",0,function(e){let t=m().prepare(`
116
+ `).get(e);return t?y(t):null}function h(){return $().find(e=>e.isActive)??null}function y(e){try{let t,i;return t=function(e){let[t,i,n]=e.split(".");if(!t||!i||!n)throw new d("Encrypted metadata is malformed.");try{let e=(0,a.createDecipheriv)("aes-256-gcm",c(),Buffer.from(t,"base64url"));e.setAuthTag(Buffer.from(i,"base64url"));let r=Buffer.concat([e.update(Buffer.from(n,"base64url")),e.final()]);return JSON.parse(r.toString("utf8"))}catch(e){if(e instanceof d)throw e;throw new d}}(e.connection_blob),i={createdAt:e.created_at,id:e.id,isActive:1===e.is_active,name:e.name,updatedAt:e.updated_at},"csv"===e.type?{...i,connection:t,type:"csv"}:{...i,connection:t,type:"mssql"}}catch(t){if(t instanceof d)return console.warn(`Ignoring source "${e.id}" because its encrypted metadata could not be decrypted. Re-save the source with the current APP_CONFIG_ENCRYPTION_KEY.`),null;throw t}}e.s(["clearActiveMapping",0,function(e){m().prepare("UPDATE source_mappings SET is_active = 0, updated_at = ? WHERE source_id = ?").run(new Date().toISOString(),e)},"createFirstLocalAdminUser",0,g,"deleteSource",0,function(e){let t=m(),i=_(e);if(!i)return null;t.exec("BEGIN");try{if(t.prepare("DELETE FROM source_mappings WHERE source_id = ?").run(e),t.prepare("DELETE FROM source_discoveries WHERE source_id = ?").run(e),t.prepare("DELETE FROM sources WHERE id = ?").run(e),i.isActive){let e=t.prepare(`
117
+ SELECT id
118
+ FROM sources
119
+ ORDER BY updated_at DESC, created_at DESC
120
+ LIMIT 1
121
+ `).get();t.prepare("UPDATE sources SET is_active = 0").run(),e&&t.prepare("UPDATE sources SET is_active = 1 WHERE id = ?").run(e.id)}t.exec("COMMIT")}catch(e){throw t.exec("ROLLBACK"),e}return{deletedSource:i,nextActiveSource:h()}},"getActiveMapping",0,function(e){let t=m().prepare(`
105
122
  SELECT id, source_id, payload_json, created_at, updated_at
106
123
  FROM source_mappings
107
124
  WHERE source_id = ?
108
125
  AND is_active = 1
109
126
  ORDER BY updated_at DESC
110
127
  LIMIT 1
111
- `).get(e);return t?JSON.parse(t.payload_json):null},"getActiveSource",0,g,"getActiveSourceSummary",0,function(){var e;let t,i=g();return i?{authMode:(e=i).connection.authMode,createdAt:e.createdAt,hasStoredCredentials:!0,id:e.id,isActive:e.isActive,maskedConnectionString:(t=e.connection.connectionString.replace(/(password|pwd)\s*=\s*[^;]+/gi,"$1=****").replace(/(user id|uid)\s*=\s*[^;]+/gi,"$1=****")).length>180?`${t.slice(0,177)}...`:t,name:e.name,odbcDriver:e.connection.odbcDriver,requestTimeoutMs:e.connection.requestTimeoutMs,type:e.type,updatedAt:e.updatedAt}:null},"getLatestDiscovery",0,function(e){let t=m().prepare(`
128
+ `).get(e);return t?JSON.parse(t.payload_json):null},"getActiveSource",0,h,"getLatestDiscovery",0,function(e){let t=m().prepare(`
112
129
  SELECT id, source_id, payload_json, created_at
113
130
  FROM source_discoveries
114
131
  WHERE source_id = ?
115
132
  ORDER BY created_at DESC
116
133
  LIMIT 1
117
- `).get(e);return t?JSON.parse(t.payload_json):null},"getLocalUserByEmail",0,p,"hasLocalUsers",0,f,"saveActiveMapping",0,function(e,t){let i=m(),n=new Date().toISOString();return i.prepare("UPDATE source_mappings SET is_active = 0 WHERE source_id = ?").run(e),i.prepare(`
134
+ `).get(e);return t?JSON.parse(t.payload_json):null},"getLocalUserByEmail",0,v,"getSourceById",0,_,"getSourceSummary",0,function(e){return f(e)},"hasLocalUsers",0,p,"listSourceSummaries",0,function(){return $().map(f)},"saveActiveMapping",0,function(e,t){let i=m(),n=new Date().toISOString();return i.prepare("UPDATE source_mappings SET is_active = 0 WHERE source_id = ?").run(e),i.prepare(`
118
135
  INSERT INTO source_mappings (
119
136
  id,
120
137
  source_id,
@@ -127,7 +144,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
127
144
  `).run((0,a.randomUUID)(),e,JSON.stringify(t),n,n),i.prepare("UPDATE sources SET updated_at = ? WHERE id = ?").run(n,e),t},"saveDiscovery",0,function(e,t){let i=m(),n=new Date().toISOString();return i.prepare(`
128
145
  INSERT INTO source_discoveries (id, source_id, payload_json, created_at)
129
146
  VALUES (?, ?, ?, ?)
130
- `).run((0,a.randomUUID)(),e,JSON.stringify(t),n),t},"updateLatestDiscovery",0,function(e,t){let i=m(),n=i.prepare(`
147
+ `).run((0,a.randomUUID)(),e,JSON.stringify(t),n),t},"switchActiveSource",0,function(e){let t=m();if(!_(e))return null;let i=new Date().toISOString();return t.prepare("UPDATE sources SET is_active = 0").run(),t.prepare("UPDATE sources SET is_active = 1, updated_at = ? WHERE id = ?").run(i,e),_(e)},"updateLatestDiscovery",0,function(e,t){let i=m(),n=i.prepare(`
131
148
  SELECT id
132
149
  FROM source_discoveries
133
150
  WHERE source_id = ?
@@ -137,13 +154,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
137
154
  UPDATE source_discoveries
138
155
  SET payload_json = ?
139
156
  WHERE id = ?
140
- `).run(JSON.stringify(t),n.id),t},"upsertActiveSource",0,function(e){var t;let i,n,r,o,u=m(),s=u.prepare(`
141
- SELECT id
142
- FROM sources
143
- WHERE is_active = 1
144
- ORDER BY updated_at DESC
145
- LIMIT 1
146
- `).get(),l=new Date().toISOString(),d=s?.id??(0,a.randomUUID)();u.prepare("UPDATE sources SET is_active = 0").run(),u.prepare(`
157
+ `).run(JSON.stringify(t),n.id),t},"upsertSource",0,function(e){var t;let i,n,r,o,u=m(),s=e.id,l=new Date().toISOString(),d=s??(0,a.randomUUID)();u.prepare("UPDATE sources SET is_active = 0").run(),u.prepare(`
147
158
  INSERT INTO sources (
148
159
  id,
149
160
  name,
@@ -160,6 +171,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
160
171
  connection_blob = excluded.connection_blob,
161
172
  is_active = 1,
162
173
  updated_at = excluded.updated_at
163
- `).run(d,e.name,e.type,(t=e.connection,i=(0,a.randomBytes)(12),n=(0,a.createCipheriv)("aes-256-gcm",c(),i),r=Buffer.from(JSON.stringify(t),"utf8"),o=Buffer.concat([n.update(r),n.final()]),[i,n.getAuthTag(),o].map(e=>e.toString("base64url")).join(".")),l,l);let f=g();if(!f)throw Error("Active source was not saved.");return f}],97528);let $=t.z.string().trim().toLowerCase().email().max(320),_=t.z.object({confirmPassword:t.z.string().min(1),email:$,name:t.z.string().trim().min(1).max(120),password:t.z.string().min(8).max(256)}).refine(e=>e.password===e.confirmPassword,{message:"Passwords do not match.",path:["confirmPassword"]}),h=t.z.object({email:$,password:t.z.string().min(1).max(256)});class y extends Error{constructor(){super("Signup is closed after the first local admin account is created."),this.name="LocalSignupClosedError"}}async function b(e){let t=_.parse(e);if(f())throw new y;let n=await (0,i.hashPassword)(t.password),r=v({email:t.email,name:t.name,passwordHash:n});if(!r)throw new y;return{email:r.email,id:r.id,name:r.name,role:r.role}}async function x(e){let t=h.safeParse(e);if(!t.success)return null;let n=p(t.data.email);return n&&await (0,i.verifyPassword)(t.data.password,n.passwordHash)?{email:n.email,id:n.id,name:n.name,role:n.role}:null}e.s(["authorizeLocalUser",0,x,"createFirstLocalAdmin",0,b,"isLocalSignupClosedError",0,function(e){return e instanceof y}],59893)}];
174
+ `).run(d,e.name,e.type,(t=e.connection,i=(0,a.randomBytes)(12),n=(0,a.createCipheriv)("aes-256-gcm",c(),i),r=Buffer.from(JSON.stringify(t),"utf8"),o=Buffer.concat([n.update(r),n.final()]),[i,n.getAuthTag(),o].map(e=>e.toString("base64url")).join(".")),l,l);let f=_(d);if(!f)throw Error("Source was not saved.");return f}],97528);let b=t.z.string().trim().toLowerCase().email().max(320),x=t.z.object({confirmPassword:t.z.string().min(1),email:b,name:t.z.string().trim().min(1).max(120),password:t.z.string().min(8).max(256)}).refine(e=>e.password===e.confirmPassword,{message:"Passwords do not match.",path:["confirmPassword"]}),k=t.z.object({email:b,password:t.z.string().min(1).max(256)});class I extends Error{constructor(){super("Signup is closed after the first local admin account is created."),this.name="LocalSignupClosedError"}}async function S(e){let t=x.parse(e);if(p())throw new I;let n=await (0,i.hashPassword)(t.password),r=g({email:t.email,name:t.name,passwordHash:n});if(!r)throw new I;return{email:r.email,id:r.id,name:r.name,role:r.role}}async function Z(e){let t=k.safeParse(e);if(!t.success)return null;let n=v(t.data.email);return n&&await (0,i.verifyPassword)(t.data.password,n.passwordHash)?{email:n.email,id:n.id,name:n.name,role:n.role}:null}e.s(["authorizeLocalUser",0,Z,"createFirstLocalAdmin",0,S,"isLocalSignupClosedError",0,function(e){return e instanceof I}],59893)}];
164
175
 
165
176
  //# sourceMappingURL=_06an.-f._.js.map
@@ -75,16 +75,25 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
75
75
  created_at TEXT NOT NULL,
76
76
  updated_at TEXT NOT NULL
77
77
  );
78
- `),e.g.__logManagerMetadataDb}function f(){return!!m().prepare(`
78
+
79
+ CREATE INDEX IF NOT EXISTS idx_sources_active_updated
80
+ ON sources(is_active, updated_at);
81
+
82
+ CREATE INDEX IF NOT EXISTS idx_source_discoveries_source_created
83
+ ON source_discoveries(source_id, created_at);
84
+
85
+ CREATE INDEX IF NOT EXISTS idx_source_mappings_source_active_updated
86
+ ON source_mappings(source_id, is_active, updated_at);
87
+ `),e.g.__logManagerMetadataDb}function f(e){let t;if("csv"===e.type)return{authMode:null,connectionLabel:e.connection.filePath,createdAt:e.createdAt,delimiter:e.connection.delimiter,encoding:e.connection.encoding,filePath:e.connection.filePath,hasStoredCredentials:!1,id:e.id,isActive:e.isActive,maskedConnectionString:null,name:e.name,odbcDriver:null,requestTimeoutMs:null,type:e.type,updatedAt:e.updatedAt};let i=(t=e.connection.connectionString.replace(/(password|pwd)\s*=\s*[^;]+/gi,"$1=****").replace(/(user id|uid)\s*=\s*[^;]+/gi,"$1=****")).length>180?`${t.slice(0,177)}...`:t;return{authMode:e.connection.authMode,connectionLabel:i,createdAt:e.createdAt,delimiter:null,encoding:null,filePath:null,hasStoredCredentials:!0,id:e.id,isActive:e.isActive,maskedConnectionString:i,name:e.name,odbcDriver:e.connection.odbcDriver,requestTimeoutMs:e.connection.requestTimeoutMs,type:e.type,updatedAt:e.updatedAt}}function p(){return!!m().prepare(`
79
88
  SELECT id
80
89
  FROM auth_users
81
90
  LIMIT 1
82
- `).get()}function p(e){let t=m().prepare(`
91
+ `).get()}function v(e){let t=m().prepare(`
83
92
  SELECT id, email, name, password_hash, role, created_at, updated_at
84
93
  FROM auth_users
85
94
  WHERE email = ? COLLATE NOCASE
86
95
  LIMIT 1
87
- `).get(e);return t?{createdAt:t.created_at,email:t.email,id:t.id,name:t.name,passwordHash:t.password_hash,role:t.role,updatedAt:t.updated_at}:null}function v(e){let t=m();if(f())return null;let i=new Date().toISOString(),n=(0,a.randomUUID)();return t.prepare(`
96
+ `).get(e);return t?{createdAt:t.created_at,email:t.email,id:t.id,name:t.name,passwordHash:t.password_hash,role:t.role,updatedAt:t.updated_at}:null}function g(e){let t=m();if(p())return null;let i=new Date().toISOString(),n=(0,a.randomUUID)();return t.prepare(`
88
97
  INSERT INTO auth_users (
89
98
  id,
90
99
  email,
@@ -95,26 +104,34 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
95
104
  updated_at
96
105
  )
97
106
  VALUES (?, ?, ?, ?, 'admin', ?, ?)
98
- `).run(n,e.email.toLowerCase(),e.name,e.passwordHash,i,i),p(e.email)}function g(){let e=m().prepare(`
107
+ `).run(n,e.email.toLowerCase(),e.name,e.passwordHash,i,i),v(e.email)}function $(){return m().prepare(`
99
108
  SELECT id, name, type, connection_blob, is_active, created_at, updated_at
100
109
  FROM sources
101
- WHERE is_active = 1
102
- ORDER BY updated_at DESC
110
+ ORDER BY is_active DESC, updated_at DESC, created_at DESC
111
+ `).all().map(e=>y(e)).filter(e=>!!e)}function _(e){let t=m().prepare(`
112
+ SELECT id, name, type, connection_blob, is_active, created_at, updated_at
113
+ FROM sources
114
+ WHERE id = ?
103
115
  LIMIT 1
104
- `).get();return e?function(e){try{return{connection:function(e){let[t,i,n]=e.split(".");if(!t||!i||!n)throw new d("Encrypted metadata is malformed.");try{let e=(0,a.createDecipheriv)("aes-256-gcm",c(),Buffer.from(t,"base64url"));e.setAuthTag(Buffer.from(i,"base64url"));let r=Buffer.concat([e.update(Buffer.from(n,"base64url")),e.final()]);return JSON.parse(r.toString("utf8"))}catch(e){if(e instanceof d)throw e;throw new d}}(e.connection_blob),createdAt:e.created_at,id:e.id,isActive:1===e.is_active,name:e.name,type:e.type,updatedAt:e.updated_at}}catch(t){if(t instanceof d)return console.warn(`Ignoring source "${e.id}" because its encrypted metadata could not be decrypted. Re-save the source with the current APP_CONFIG_ENCRYPTION_KEY.`),null;throw t}}(e):null}e.s(["clearActiveMapping",0,function(e){m().prepare("UPDATE source_mappings SET is_active = 0, updated_at = ? WHERE source_id = ?").run(new Date().toISOString(),e)},"createFirstLocalAdminUser",0,v,"getActiveMapping",0,function(e){let t=m().prepare(`
116
+ `).get(e);return t?y(t):null}function h(){return $().find(e=>e.isActive)??null}function y(e){try{let t,i;return t=function(e){let[t,i,n]=e.split(".");if(!t||!i||!n)throw new d("Encrypted metadata is malformed.");try{let e=(0,a.createDecipheriv)("aes-256-gcm",c(),Buffer.from(t,"base64url"));e.setAuthTag(Buffer.from(i,"base64url"));let r=Buffer.concat([e.update(Buffer.from(n,"base64url")),e.final()]);return JSON.parse(r.toString("utf8"))}catch(e){if(e instanceof d)throw e;throw new d}}(e.connection_blob),i={createdAt:e.created_at,id:e.id,isActive:1===e.is_active,name:e.name,updatedAt:e.updated_at},"csv"===e.type?{...i,connection:t,type:"csv"}:{...i,connection:t,type:"mssql"}}catch(t){if(t instanceof d)return console.warn(`Ignoring source "${e.id}" because its encrypted metadata could not be decrypted. Re-save the source with the current APP_CONFIG_ENCRYPTION_KEY.`),null;throw t}}e.s(["clearActiveMapping",0,function(e){m().prepare("UPDATE source_mappings SET is_active = 0, updated_at = ? WHERE source_id = ?").run(new Date().toISOString(),e)},"createFirstLocalAdminUser",0,g,"deleteSource",0,function(e){let t=m(),i=_(e);if(!i)return null;t.exec("BEGIN");try{if(t.prepare("DELETE FROM source_mappings WHERE source_id = ?").run(e),t.prepare("DELETE FROM source_discoveries WHERE source_id = ?").run(e),t.prepare("DELETE FROM sources WHERE id = ?").run(e),i.isActive){let e=t.prepare(`
117
+ SELECT id
118
+ FROM sources
119
+ ORDER BY updated_at DESC, created_at DESC
120
+ LIMIT 1
121
+ `).get();t.prepare("UPDATE sources SET is_active = 0").run(),e&&t.prepare("UPDATE sources SET is_active = 1 WHERE id = ?").run(e.id)}t.exec("COMMIT")}catch(e){throw t.exec("ROLLBACK"),e}return{deletedSource:i,nextActiveSource:h()}},"getActiveMapping",0,function(e){let t=m().prepare(`
105
122
  SELECT id, source_id, payload_json, created_at, updated_at
106
123
  FROM source_mappings
107
124
  WHERE source_id = ?
108
125
  AND is_active = 1
109
126
  ORDER BY updated_at DESC
110
127
  LIMIT 1
111
- `).get(e);return t?JSON.parse(t.payload_json):null},"getActiveSource",0,g,"getActiveSourceSummary",0,function(){var e;let t,i=g();return i?{authMode:(e=i).connection.authMode,createdAt:e.createdAt,hasStoredCredentials:!0,id:e.id,isActive:e.isActive,maskedConnectionString:(t=e.connection.connectionString.replace(/(password|pwd)\s*=\s*[^;]+/gi,"$1=****").replace(/(user id|uid)\s*=\s*[^;]+/gi,"$1=****")).length>180?`${t.slice(0,177)}...`:t,name:e.name,odbcDriver:e.connection.odbcDriver,requestTimeoutMs:e.connection.requestTimeoutMs,type:e.type,updatedAt:e.updatedAt}:null},"getLatestDiscovery",0,function(e){let t=m().prepare(`
128
+ `).get(e);return t?JSON.parse(t.payload_json):null},"getActiveSource",0,h,"getLatestDiscovery",0,function(e){let t=m().prepare(`
112
129
  SELECT id, source_id, payload_json, created_at
113
130
  FROM source_discoveries
114
131
  WHERE source_id = ?
115
132
  ORDER BY created_at DESC
116
133
  LIMIT 1
117
- `).get(e);return t?JSON.parse(t.payload_json):null},"getLocalUserByEmail",0,p,"hasLocalUsers",0,f,"saveActiveMapping",0,function(e,t){let i=m(),n=new Date().toISOString();return i.prepare("UPDATE source_mappings SET is_active = 0 WHERE source_id = ?").run(e),i.prepare(`
134
+ `).get(e);return t?JSON.parse(t.payload_json):null},"getLocalUserByEmail",0,v,"getSourceById",0,_,"getSourceSummary",0,function(e){return f(e)},"hasLocalUsers",0,p,"listSourceSummaries",0,function(){return $().map(f)},"saveActiveMapping",0,function(e,t){let i=m(),n=new Date().toISOString();return i.prepare("UPDATE source_mappings SET is_active = 0 WHERE source_id = ?").run(e),i.prepare(`
118
135
  INSERT INTO source_mappings (
119
136
  id,
120
137
  source_id,
@@ -127,7 +144,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
127
144
  `).run((0,a.randomUUID)(),e,JSON.stringify(t),n,n),i.prepare("UPDATE sources SET updated_at = ? WHERE id = ?").run(n,e),t},"saveDiscovery",0,function(e,t){let i=m(),n=new Date().toISOString();return i.prepare(`
128
145
  INSERT INTO source_discoveries (id, source_id, payload_json, created_at)
129
146
  VALUES (?, ?, ?, ?)
130
- `).run((0,a.randomUUID)(),e,JSON.stringify(t),n),t},"updateLatestDiscovery",0,function(e,t){let i=m(),n=i.prepare(`
147
+ `).run((0,a.randomUUID)(),e,JSON.stringify(t),n),t},"switchActiveSource",0,function(e){let t=m();if(!_(e))return null;let i=new Date().toISOString();return t.prepare("UPDATE sources SET is_active = 0").run(),t.prepare("UPDATE sources SET is_active = 1, updated_at = ? WHERE id = ?").run(i,e),_(e)},"updateLatestDiscovery",0,function(e,t){let i=m(),n=i.prepare(`
131
148
  SELECT id
132
149
  FROM source_discoveries
133
150
  WHERE source_id = ?
@@ -137,13 +154,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
137
154
  UPDATE source_discoveries
138
155
  SET payload_json = ?
139
156
  WHERE id = ?
140
- `).run(JSON.stringify(t),n.id),t},"upsertActiveSource",0,function(e){var t;let i,n,r,o,u=m(),s=u.prepare(`
141
- SELECT id
142
- FROM sources
143
- WHERE is_active = 1
144
- ORDER BY updated_at DESC
145
- LIMIT 1
146
- `).get(),l=new Date().toISOString(),d=s?.id??(0,a.randomUUID)();u.prepare("UPDATE sources SET is_active = 0").run(),u.prepare(`
157
+ `).run(JSON.stringify(t),n.id),t},"upsertSource",0,function(e){var t;let i,n,r,o,u=m(),s=e.id,l=new Date().toISOString(),d=s??(0,a.randomUUID)();u.prepare("UPDATE sources SET is_active = 0").run(),u.prepare(`
147
158
  INSERT INTO sources (
148
159
  id,
149
160
  name,
@@ -160,6 +171,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
160
171
  connection_blob = excluded.connection_blob,
161
172
  is_active = 1,
162
173
  updated_at = excluded.updated_at
163
- `).run(d,e.name,e.type,(t=e.connection,i=(0,a.randomBytes)(12),n=(0,a.createCipheriv)("aes-256-gcm",c(),i),r=Buffer.from(JSON.stringify(t),"utf8"),o=Buffer.concat([n.update(r),n.final()]),[i,n.getAuthTag(),o].map(e=>e.toString("base64url")).join(".")),l,l);let f=g();if(!f)throw Error("Active source was not saved.");return f}],97528);let $=t.z.string().trim().toLowerCase().email().max(320),_=t.z.object({confirmPassword:t.z.string().min(1),email:$,name:t.z.string().trim().min(1).max(120),password:t.z.string().min(8).max(256)}).refine(e=>e.password===e.confirmPassword,{message:"Passwords do not match.",path:["confirmPassword"]}),h=t.z.object({email:$,password:t.z.string().min(1).max(256)});class y extends Error{constructor(){super("Signup is closed after the first local admin account is created."),this.name="LocalSignupClosedError"}}async function b(e){let t=_.parse(e);if(f())throw new y;let n=await (0,i.hashPassword)(t.password),r=v({email:t.email,name:t.name,passwordHash:n});if(!r)throw new y;return{email:r.email,id:r.id,name:r.name,role:r.role}}async function x(e){let t=h.safeParse(e);if(!t.success)return null;let n=p(t.data.email);return n&&await (0,i.verifyPassword)(t.data.password,n.passwordHash)?{email:n.email,id:n.id,name:n.name,role:n.role}:null}e.s(["authorizeLocalUser",0,x,"createFirstLocalAdmin",0,b,"isLocalSignupClosedError",0,function(e){return e instanceof y}],59893)}];
174
+ `).run(d,e.name,e.type,(t=e.connection,i=(0,a.randomBytes)(12),n=(0,a.createCipheriv)("aes-256-gcm",c(),i),r=Buffer.from(JSON.stringify(t),"utf8"),o=Buffer.concat([n.update(r),n.final()]),[i,n.getAuthTag(),o].map(e=>e.toString("base64url")).join(".")),l,l);let f=_(d);if(!f)throw Error("Source was not saved.");return f}],97528);let b=t.z.string().trim().toLowerCase().email().max(320),x=t.z.object({confirmPassword:t.z.string().min(1),email:b,name:t.z.string().trim().min(1).max(120),password:t.z.string().min(8).max(256)}).refine(e=>e.password===e.confirmPassword,{message:"Passwords do not match.",path:["confirmPassword"]}),k=t.z.object({email:b,password:t.z.string().min(1).max(256)});class I extends Error{constructor(){super("Signup is closed after the first local admin account is created."),this.name="LocalSignupClosedError"}}async function S(e){let t=x.parse(e);if(p())throw new I;let n=await (0,i.hashPassword)(t.password),r=g({email:t.email,name:t.name,passwordHash:n});if(!r)throw new I;return{email:r.email,id:r.id,name:r.name,role:r.role}}async function Z(e){let t=k.safeParse(e);if(!t.success)return null;let n=v(t.data.email);return n&&await (0,i.verifyPassword)(t.data.password,n.passwordHash)?{email:n.email,id:n.id,name:n.name,role:n.role}:null}e.s(["authorizeLocalUser",0,Z,"createFirstLocalAdmin",0,S,"isLocalSignupClosedError",0,function(e){return e instanceof I}],59893)}];
164
175
 
165
176
  //# sourceMappingURL=_0eildm-._.js.map
@@ -1,10 +1,13 @@
1
- module.exports=[8595,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return n}});class i extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class n extends URLSearchParams{append(){throw new i}delete(){throw new i}set(){throw new i}sort(){throw new i}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},50723,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RedirectStatusCode",{enumerable:!0,get:function(){return n}});var i,n=((i={})[i.SeeOther=303]="SeeOther",i[i.TemporaryRedirect=307]="TemporaryRedirect",i[i.PermanentRedirect=308]="PermanentRedirect",i);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},19334,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={REDIRECT_ERROR_CODE:function(){return o},isRedirectError:function(){return l}};for(var n in i)Object.defineProperty(r,n,{enumerable:!0,get:i[n]});let a=e.r(50723),o="NEXT_REDIRECT";function l(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[r,i]=t,n=t.slice(2,-2).join(";"),l=Number(t.at(-2));return r===o&&("replace"===i||"push"===i)&&"string"==typeof n&&!isNaN(l)&&l in a.RedirectStatusCode}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},22349,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={getRedirectError:function(){return s},getRedirectStatusCodeFromError:function(){return p},getRedirectTypeFromError:function(){return f},getURLFromRedirectError:function(){return c},permanentRedirect:function(){return d},redirect:function(){return u}};for(var n in i)Object.defineProperty(r,n,{enumerable:!0,get:i[n]});let a=e.r(50723),o=e.r(19334),l=e.r(20635).actionAsyncStorage;function s(e,t,r=a.RedirectStatusCode.TemporaryRedirect){let i=Object.defineProperty(Error(o.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return i.digest=`${o.REDIRECT_ERROR_CODE};${t};${e};${r};`,i}function u(e,t){throw s(e,t??=l?.getStore()?.isAction?"push":"replace",a.RedirectStatusCode.TemporaryRedirect)}function d(e,t="replace"){throw s(e,t,a.RedirectStatusCode.PermanentRedirect)}function c(e){return(0,o.isRedirectError)(e)?e.digest.split(";").slice(2,-2).join(";"):null}function f(e){if(!(0,o.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return e.digest.split(";",2)[1]}function p(e){if(!(0,o.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(e.digest.split(";").at(-2))}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},12053,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={HTTPAccessErrorStatus:function(){return a},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return l},getAccessFallbackErrorTypeByStatus:function(){return d},getAccessFallbackHTTPStatus:function(){return u},isHTTPAccessFallbackError:function(){return s}};for(var n in i)Object.defineProperty(r,n,{enumerable:!0,get:i[n]});let a={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},o=new Set(Object.values(a)),l="NEXT_HTTP_ERROR_FALLBACK";function s(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r]=e.digest.split(";");return t===l&&o.has(Number(r))}function u(e){return Number(e.digest.split(";")[1])}function d(e){switch(e){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},2507,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"notFound",{enumerable:!0,get:function(){return a}});let i=e.r(12053),n=`${i.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function a(){let e=Object.defineProperty(Error(n),"__NEXT_ERROR_CODE",{value:"E1041",enumerable:!1,configurable:!0});throw e.digest=n,e}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},47658,(e,t,r)=>{"use strict";function i(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"forbidden",{enumerable:!0,get:function(){return i}}),e.r(12053).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},35458,(e,t,r)=>{"use strict";function i(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unauthorized",{enumerable:!0,get:function(){return i}}),e.r(12053).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},67539,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isPostpone",{enumerable:!0,get:function(){return n}});let i=Symbol.for("react.postpone");function n(e){return"object"==typeof e&&null!==e&&e.$$typeof===i}},62782,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isNextRouterError",{enumerable:!0,get:function(){return a}});let i=e.r(12053),n=e.r(19334);function a(e){return(0,n.isRedirectError)(e)||(0,i.isHTTPAccessFallbackError)(e)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},17387,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unstable_rethrow",{enumerable:!0,get:function(){return function e(t){if((0,o.isNextRouterError)(t)||(0,a.isBailoutToCSRError)(t)||(0,s.isDynamicServerError)(t)||(0,l.isDynamicPostpone)(t)||(0,n.isPostpone)(t)||(0,i.isHangingPromiseRejectionError)(t)||(0,l.isPrerenderInterruptedError)(t))throw t;t instanceof Error&&"cause"in t&&e(t.cause)}}});let i=e.r(4642),n=e.r(67539),a=e.r(31584),o=e.r(62782),l=e.r(68665),s=e.r(65252);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},9811,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unstable_rethrow",{enumerable:!0,get:function(){return i}});let i=e.r(17387).unstable_rethrow;("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},79509,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var i={ReadonlyURLSearchParams:function(){return a.ReadonlyURLSearchParams},RedirectType:function(){return f},forbidden:function(){return s.forbidden},notFound:function(){return l.notFound},permanentRedirect:function(){return o.permanentRedirect},redirect:function(){return o.redirect},unauthorized:function(){return u.unauthorized},unstable_isUnrecognizedActionError:function(){return c},unstable_rethrow:function(){return d.unstable_rethrow}};for(var n in i)Object.defineProperty(r,n,{enumerable:!0,get:i[n]});let a=e.r(8595),o=e.r(22349),l=e.r(2507),s=e.r(47658),u=e.r(35458),d=e.r(9811);function c(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}let f={push:"push",replace:"replace"};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},91180,43471,e=>{"use strict";var t=e.i(23667);e.i(79509);var r=e.i(98902),i=e.i(98003);async function n(){return(0,i.isLoginBypassed)()?{expires:new Date(Date.now()+864e5).toISOString(),user:{email:"local@source-admin.dev",id:"local-dev-user",name:"Local Developer",preferredUsername:"local-dev",role:"admin"}}:(0,t.getServerSession)(r.authOptions)}async function a(){return n()}e.s(["isSessionAdmin",0,function(e){return!!e?.user&&(!!(0,i.isLoginBypassed)()||"admin"===e.user.role)},"requireApiSession",0,a],91180);var o=e.i(40317);function l(){e.g.__logManagerPlatformCacheVersion=("number"!=typeof e.g.__logManagerPlatformCacheVersion&&(e.g.__logManagerPlatformCacheVersion=0),e.g.__logManagerPlatformCacheVersion+1)}async function s(t){if("windows"===t)try{let t=await e.A(11817);return t.default??t}catch{throw new o.ConfigurationError("Windows Authentication requires the msnodesqlv8 driver to be installed.",["msnodesqlv8"])}let r=await e.A(75106);return r.default??r}async function u(e){let t=await s(e.authMode),r=t.ConnectionPool.parseConnectionString(e.connectionString);return new t.ConnectionPool((r.requestTimeout=e.requestTimeoutMs,!r.options&&(r.options={}),r.options.instanceName&&r.server?.endsWith("\\")&&(r.server=r.server.slice(0,-1)),"windows"===e.authMode?(r.driver=e.odbcDriver||"ODBC Driver 17 for SQL Server",r.options.trustedConnection=!0,"boolean"!=typeof r.options.trustServerCertificate&&(r.options.trustServerCertificate=!0),"boolean"!=typeof r.options.encrypt&&(r.options.encrypt=!1)):"boolean"!=typeof r.options.encrypt&&(r.options.encrypt=!0),r)).connect()}async function d(t){let r=JSON.stringify(t);e.g.__logManagerMssqlPools||(e.g.__logManagerMssqlPools=new Map);let i=e.g.__logManagerMssqlPools.get(r);if(i)return i;let n=u(t).catch(t=>{throw e.g.__logManagerMssqlPools?.delete(r),t});return e.g.__logManagerMssqlPools.set(r,n),n}async function c(e){return(await d(e)).request()}let f=[{dataTypes:["bit","boolean"],valueType:"boolean"},{dataTypes:["bigint","decimal","float","int","money","numeric","real","smallint","smallmoney","tinyint"],valueType:"number"},{dataTypes:["date","datetime","datetime2","datetimeoffset","smalldatetime","time"],valueType:"datetime"}],p={application:[{bonus:18,pattern:/^(application|app|appname)$/i},{bonus:14,pattern:/^app(env|version)$/i},{bonus:10,pattern:/application/i}],correlationId:[{bonus:28,pattern:/^correlation(id)?$/i},{bonus:18,pattern:/request(id|key)/i},{bonus:8,pattern:/trace(id)?/i}],description:[{bonus:18,pattern:/(message|description|summary|details?)/i},{bonus:10,pattern:/(error|fault).*(message|description)/i}],fromLocation:[{bonus:16,pattern:/^(from|origin)(airport|station|location|code)?$/i},{bonus:8,pattern:/^source(airport|location)$/i}],provider:[{bonus:18,pattern:/^provider(name)?$/i},{bonus:10,pattern:/(vendor|supplier)/i}],recordId:[{bonus:28,pattern:/(log(detail)?id|recordid|eventid|entryid|auditid)/i,preferredTypes:["string","number"]},{bonus:16,pattern:/(id)$/i,preferredTypes:["string","number"]}],responseTime:[{bonus:22,pattern:/(response|duration|elapsed|latency).*ms/i},{bonus:16,pattern:/(response|duration|elapsed|latency|time)/i}],service:[{bonus:18,pattern:/^service(id|name)?$/i},{bonus:12,pattern:/(endpoint|operation|method)/i}],status:[{bonus:24,pattern:/^is(error|failed?)$/i,preferredTypes:["boolean"]},{bonus:18,pattern:/(error|failed?|success|status|severity|level)/i}],timestamp:[{bonus:30,pattern:/(event(date|time)|created(at|on)?|logged(at)?|timestamp|occurred(at)?)/i,preferredTypes:["datetime"]},{bonus:12,pattern:/(date|time)/i,preferredTypes:["datetime"]}],title:[{bonus:18,pattern:/(application|service|operation|event|action)/i},{bonus:10,pattern:/(provider|message|description)/i}],toLocation:[{bonus:16,pattern:/^(to|destination)(airport|station|location|code)?$/i},{bonus:8,pattern:/^target(airport|location)$/i}]};function m(e){return e.replace(/([a-z\d])([A-Z])/g,"$1 $2").replace(/[^a-zA-Z0-9]+/g," ").trim().split(/\s+/).map((e,t)=>0===t?e.toLowerCase():`${e.charAt(0).toUpperCase()}${e.slice(1).toLowerCase()}`).join("")||"field"}function b(e){let t=new Set,r=e.fieldRef.toLowerCase();for(let i of(("xml"===e.dataType.toLowerCase()||r.includes("xml"))&&t.add("xml"),r.includes("json")&&t.add("json"),e.sampleValues)){let e=i.trim();if(e){if((e.startsWith("{")||e.startsWith("["))&&!t.has("json"))try{JSON.parse(e),t.add("json")}catch{}(e.startsWith("<")||e.startsWith("<?xml"))&&!t.has("xml")&&/<[A-Za-z_]/.test(e)&&t.add("xml")}}return!t.size&&/(payload|body|request|response|content)/i.test(r)&&t.add("text"),Array.from(t)}function y(e,t){let r=null;for(let i of e.fields){let e=function(e,t){let r=p[t],i=0;for(let t of r)t.pattern.test(e.fieldRef)&&(i+=t.bonus,(!t.preferredTypes?.length||t.preferredTypes.includes(e.valueType))&&(i+=6));return"status"===t&&"boolean"===e.valueType&&(i+=8),"timestamp"===t&&"datetime"===e.valueType&&(i+=10),"recordId"===t&&["string","number"].includes(e.valueType)&&(i+=8),i}(i,t);!e||r&&r.confidence>=e||(r={confidence:e,fieldRef:i.fieldRef,label:i.label,role:t})}return r}function g(e,t,r){let i=function(e,t){if(!t.has(e))return t.add(e),e;let r=2;for(;t.has(`${e}${r}`);)r+=1;let i=`${e}${r}`;return t.add(i),i}(r?.id??m(e.fieldRef),t),n="text";return"datetime"===e.valueType?n="datetime":"boolean"===e.valueType&&(n="boolean"),{fieldRef:e.fieldRef,filterable:!1,filterInput:null,format:n,id:i,label:r?.label??e.label,showInDetail:!0,showInList:!1,valueType:e.valueType,...r}}function R(e,t){let r,i={application:y(t,"application")??void 0,correlationId:y(t,"correlationId")??void 0,description:y(t,"description")??void 0,fromLocation:y(t,"fromLocation")??void 0,provider:y(t,"provider")??void 0,recordId:y(t,"recordId")??void 0,responseTime:y(t,"responseTime")??void 0,service:y(t,"service")??void 0,status:y(t,"status")??void 0,timestamp:y(t,"timestamp")??void 0,title:y(t,"title")??void 0,toLocation:y(t,"toLocation")??void 0};if(!i.recordId||!i.timestamp)return null;let n=new Set,a=[],o=(e,r)=>{let o=i[e];if(!o)return null;let l=t.fields.find(e=>e.fieldRef===o.fieldRef);if(!l)return null;let s=g(l,n,r);return a.push(s),s},l=o("recordId",{id:"recordId",label:"Record ID",showInList:!1}),s=o("timestamp",{format:"datetime",id:"eventTime",label:"Event Time (UTC)",showInList:!0,valueType:"datetime"}),u=o("application",{filterInput:"text",filterable:!0,id:"application",label:"Application",showInList:!0})??o("title",{filterInput:"text",filterable:!0,id:"title",label:"Title",showInList:!0}),d=o("description",{id:"description",label:"Description",showInList:!1});o("service",{filterInput:"text",filterable:!0,id:"service",label:"Service",showInList:!0}),o("provider",{filterInput:"text",filterable:!0,id:"provider",label:"Provider",showInList:!0}),o("correlationId",{filterInput:"text",filterable:!0,id:"correlationId",label:"Correlation ID",showInList:!0}),o("fromLocation",{filterInput:"text",filterable:!0,id:"fromLocation",label:"From",showInList:!0}),o("toLocation",{filterInput:"text",filterable:!0,id:"toLocation",label:"To",showInList:!0}),o("responseTime",{format:"durationMs",id:"responseTime",label:"Response Time",showInList:!0,valueType:"number"});let c=o("status",{filterInput:"boolean",filterable:!0,format:"status",id:"status",label:"Status",showInList:!0}),f=function(e){let t=e.fields.filter(e=>e.sampleKinds.length||/(payload|body|request|response|json|xml)/i.test(e.fieldRef)),r=[];for(let e of t){let t=e.sampleKinds.length?e.sampleKinds:b(e);if(!t.length)continue;let i=e.fieldRef.toLowerCase().includes("request")?"request":e.fieldRef.toLowerCase().includes("response")?"response":"other";for(let n of t)"text"===n&&t.some(e=>"text"!==e)||r.push({fieldRef:e.fieldRef,group:i,id:m(e.fieldRef),kind:n,label:e.fieldRef.replace(/[_-]+/g," ").replace(/([a-z\d])([A-Z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/\b\w/g,e=>e.toUpperCase())})}return r}(t),p=new Set(f.map(e=>e.fieldRef));for(let e of t.fields.filter(e=>!p.has(e.fieldRef)).filter(e=>!a.some(t=>t.fieldRef===e.fieldRef)).slice(0,12))a.push(g(e,n,{filterInput:"boolean"===e.valueType?"boolean":"string"===e.valueType?"text":null,filterable:"boolean"===e.valueType||"string"===e.valueType}));let R=(r=new Set,a.filter(e=>!r.has(e.fieldRef)&&(r.add(e.fieldRef),!0))).map((e,t)=>({...e,showInDetail:t<16&&e.showInDetail})),v=(i.timestamp?.confidence??0)+(i.recordId?.confidence??0)+(i.status?.confidence??0)+(i.correlationId?.confidence??0)+16*!!f.length+24*!!/log|audit|trace|event|hit/i.test(t.name),h=[i.timestamp?`Timestamp field: ${i.timestamp.label}`:null,i.recordId?`Record id field: ${i.recordId.label}`:null,i.status?`Status field: ${i.status.label}`:null,f.length?`${f.length} payload field(s) detected`:null].filter(Boolean);return{candidate:{matches:i,proposedMapping:{defaultSort:{direction:"desc",fieldRef:s?.fieldRef??i.timestamp.fieldRef},descriptionFieldId:d?.id??null,fields:R,payloads:f,recordIdFieldRef:l?.fieldRef??i.recordId.fieldRef,sourceId:e,statusFieldId:c?.id??null,target:{name:t.name,qualifiedName:t.qualifiedName,schema:t.schema},timestampFieldRef:s?.fieldRef??i.timestamp.fieldRef,titleFieldId:u?.id??d?.id??null,version:1},reasons:h,score:v,target:{name:t.name,qualifiedName:t.qualifiedName,schema:t.schema}},reasons:h,score:v}}function v(e,t){return t.map(t=>{let r=R(e,t);return{...t,candidateReasons:r?.reasons??t.candidateReasons,candidateScore:r?.score??t.candidateScore}}).sort((e,t)=>t.candidateScore-e.candidateScore)}function h(e,t){let r=e.fields.find(e=>e.id===t);if(!r)throw Error(`Mapped field ${t} is missing.`);return{format:r.format,id:r.id,label:r.label,valueType:r.valueType}}function _(e,t){let r=t.fields.map(e=>({format:e.format,id:e.id,label:e.label,valueType:e.valueType})),i=t.fields.filter(e=>e.filterable&&e.filterInput).slice(0,8).map(e=>({id:e.id,input:e.filterInput??"text",label:e.label,valueType:e.valueType})),n=t.fields.filter(e=>e.showInList).map(e=>h(t,e.id)),a=t.fields.filter(e=>e.showInDetail).map(e=>h(t,e.id)),o=t.fields.find(e=>e.fieldRef===t.timestampFieldRef)?.id??"eventTime";return{columns:n,defaultDatePresetHours:24,descriptionFieldId:t.descriptionFieldId,description:`Read-only inspection of ${t.target.qualifiedName}.`,detailFields:a,fields:r,filters:i,payloads:t.payloads,sourceLabel:e.name,statusFieldId:t.statusFieldId,targetLabel:t.target.qualifiedName,timestampFieldId:o,title:`${e.name} Table Explorer`,titleFieldId:t.titleFieldId}}function T(e){return{...e,sampleKinds:b(e)}}function S(e){return"boolean"===e.valueType?"boolean":"number"===e.valueType?"number":"datetime"===e.valueType?"datetime":/text|ntext|xml/i.test(e.dataType)||-1===e.maxLength||null!==e.maxLength&&e.maxLength>=512?"longText":"shortText"}function w(e){let t=e.sampleKinds.length?e.sampleKinds:b(e);return t.includes("json")?"json":t.includes("xml")?"xml":t.includes("text")?"text":null}function E(e){return`[${e.replaceAll("]","]]")}]`}function O(e){return`${E(e.schema)}.${E(e.name)}`}function N(e){if(null==e)return null;if("boolean"==typeof e)return e;if("number"==typeof e)return 0!==e;if("bigint"==typeof e)return e!==BigInt(0);let t=String(e).trim().toLowerCase();return"1"===t||"true"===t||"0"!==t&&"false"!==t&&null}function j(e){if(null==e)return null;if("number"==typeof e)return Number.isFinite(e)?e:null;if("bigint"==typeof e)return Number(e);let t=Number(e);return Number.isFinite(t)?t:null}function A(e){return null==e?null:String(e)}function x(e){return/binary|image|rowversion|timestamp/i.test(e)}function C(e){return x(e.dataType)?`DATALENGTH(${E(e.fieldRef)})`:/xml|text|ntext|sql_variant/i.test(e.dataType)?`TRY_CONVERT(nvarchar(4000), ${E(e.fieldRef)})`:E(e.fieldRef)}function I(e){return{dataType:e.dataType,isNullable:e.isNullable,label:e.label,maxLength:e.maxLength,name:e.fieldRef,payloadKindHint:w(e),presentationKind:S(e),valueType:e.valueType}}async function P(e,t){let r=t.fields.filter(e=>/(request|response|json|xml|payload|body|message|description|time|id|status|error)/i.test(e.fieldRef)).slice(0,10);if(!r.length)return t;let i=await c(e.connection),n=t.fields.find(e=>/event|created|time|date/i.test(e.fieldRef))??t.fields.find(e=>/id$/i.test(e.fieldRef)),a=r.map(e=>`${E(e.fieldRef)} AS ${E(e.fieldRef)}`).join(", "),o=n?`ORDER BY ${E(n.fieldRef)} DESC`:"",l=(await i.query(`
2
- SELECT TOP (5) ${a}
3
- FROM ${E(t.schema)}.${E(t.name)}
4
- ${o};
5
- `)).recordset??[],s=new Map;for(let e of r)s.set(e.fieldRef,l.map(t=>A(t[e.fieldRef])).filter(e=>!!e).slice(0,5));return{...t,fields:t.fields.map(e=>T({...e,sampleValues:s.get(e.fieldRef)??e.sampleValues})),sampleSize:l.length}}function M(e){let t={supportedAuthModes:[],supportedPayloadKinds:["json","xml","text"],supportsSchemaDiscovery:!1};function r(){return Promise.reject(new o.ConfigurationError(`${e} support is not implemented in this version yet.`))}return{deleteTableRows:r,discoverSchema:r,getCapabilities:()=>t,listTableRows:r,testConnection:r}}let L={mongodb:M("mongodb"),mssql:{async deleteTableRows(e,t){let r=await c(e.connection);return{deletedRowCount:((await r.query(`
6
- DELETE FROM ${O(t)};
7
- `)).rowsAffected??[]).reduce((e,t)=>e+t,0)}},async discoverSchema(e){let t=await c(e.connection),r=await t.query(`
1
+ module.exports=[8595,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return n}});class r extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class n extends URLSearchParams{append(){throw new r}delete(){throw new r}set(){throw new r}sort(){throw new r}}("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esModule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},50723,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"RedirectStatusCode",{enumerable:!0,get:function(){return n}});var r,n=((r={})[r.SeeOther=303]="SeeOther",r[r.TemporaryRedirect=307]="TemporaryRedirect",r[r.PermanentRedirect=308]="PermanentRedirect",r);("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esModule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},19334,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var r={REDIRECT_ERROR_CODE:function(){return s},isRedirectError:function(){return a}};for(var n in r)Object.defineProperty(i,n,{enumerable:!0,get:r[n]});let o=e.r(50723),s="NEXT_REDIRECT";function a(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[i,r]=t,n=t.slice(2,-2).join(";"),a=Number(t.at(-2));return i===s&&("replace"===r||"push"===r)&&"string"==typeof n&&!isNaN(a)&&a in o.RedirectStatusCode}("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esModule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},22349,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var r={getRedirectError:function(){return l},getRedirectStatusCodeFromError:function(){return m},getRedirectTypeFromError:function(){return c},getURLFromRedirectError:function(){return f},permanentRedirect:function(){return d},redirect:function(){return u}};for(var n in r)Object.defineProperty(i,n,{enumerable:!0,get:r[n]});let o=e.r(50723),s=e.r(19334),a=e.r(20635).actionAsyncStorage;function l(e,t,i=o.RedirectStatusCode.TemporaryRedirect){let r=Object.defineProperty(Error(s.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return r.digest=`${s.REDIRECT_ERROR_CODE};${t};${e};${i};`,r}function u(e,t){throw l(e,t??=a?.getStore()?.isAction?"push":"replace",o.RedirectStatusCode.TemporaryRedirect)}function d(e,t="replace"){throw l(e,t,o.RedirectStatusCode.PermanentRedirect)}function f(e){return(0,s.isRedirectError)(e)?e.digest.split(";").slice(2,-2).join(";"):null}function c(e){if(!(0,s.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return e.digest.split(";",2)[1]}function m(e){if(!(0,s.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(e.digest.split(";").at(-2))}("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esModule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},12053,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var r={HTTPAccessErrorStatus:function(){return o},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return a},getAccessFallbackErrorTypeByStatus:function(){return d},getAccessFallbackHTTPStatus:function(){return u},isHTTPAccessFallbackError:function(){return l}};for(var n in r)Object.defineProperty(i,n,{enumerable:!0,get:r[n]});let o={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},s=new Set(Object.values(o)),a="NEXT_HTTP_ERROR_FALLBACK";function l(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,i]=e.digest.split(";");return t===a&&s.has(Number(i))}function u(e){return Number(e.digest.split(";")[1])}function d(e){switch(e){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esModule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},2507,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"notFound",{enumerable:!0,get:function(){return o}});let r=e.r(12053),n=`${r.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function o(){let e=Object.defineProperty(Error(n),"__NEXT_ERROR_CODE",{value:"E1041",enumerable:!1,configurable:!0});throw e.digest=n,e}("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esModule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},47658,(e,t,i)=>{"use strict";function r(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"forbidden",{enumerable:!0,get:function(){return r}}),e.r(12053).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esModule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},35458,(e,t,i)=>{"use strict";function r(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"unauthorized",{enumerable:!0,get:function(){return r}}),e.r(12053).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esModule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},67539,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"isPostpone",{enumerable:!0,get:function(){return n}});let r=Symbol.for("react.postpone");function n(e){return"object"==typeof e&&null!==e&&e.$$typeof===r}},62782,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"isNextRouterError",{enumerable:!0,get:function(){return o}});let r=e.r(12053),n=e.r(19334);function o(e){return(0,n.isRedirectError)(e)||(0,r.isHTTPAccessFallbackError)(e)}("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esModule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},17387,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"unstable_rethrow",{enumerable:!0,get:function(){return function e(t){if((0,s.isNextRouterError)(t)||(0,o.isBailoutToCSRError)(t)||(0,l.isDynamicServerError)(t)||(0,a.isDynamicPostpone)(t)||(0,n.isPostpone)(t)||(0,r.isHangingPromiseRejectionError)(t)||(0,a.isPrerenderInterruptedError)(t))throw t;t instanceof Error&&"cause"in t&&e(t.cause)}}});let r=e.r(4642),n=e.r(67539),o=e.r(31584),s=e.r(62782),a=e.r(68665),l=e.r(65252);("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esModule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},9811,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0}),Object.defineProperty(i,"unstable_rethrow",{enumerable:!0,get:function(){return r}});let r=e.r(17387).unstable_rethrow;("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esModule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},79509,(e,t,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var r={ReadonlyURLSearchParams:function(){return o.ReadonlyURLSearchParams},RedirectType:function(){return c},forbidden:function(){return l.forbidden},notFound:function(){return a.notFound},permanentRedirect:function(){return s.permanentRedirect},redirect:function(){return s.redirect},unauthorized:function(){return u.unauthorized},unstable_isUnrecognizedActionError:function(){return f},unstable_rethrow:function(){return d.unstable_rethrow}};for(var n in r)Object.defineProperty(i,n,{enumerable:!0,get:r[n]});let o=e.r(8595),s=e.r(22349),a=e.r(2507),l=e.r(47658),u=e.r(35458),d=e.r(9811);function f(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}let c={push:"push",replace:"replace"};("function"==typeof i.default||"object"==typeof i.default&&null!==i.default)&&void 0===i.default.__esModule&&(Object.defineProperty(i.default,"__esModule",{value:!0}),Object.assign(i.default,i),t.exports=i.default)},91180,43471,e=>{"use strict";var t=e.i(23667);e.i(79509);var i=e.i(98902),r=e.i(98003);async function n(){return(0,r.isLoginBypassed)()?{expires:new Date(Date.now()+864e5).toISOString(),user:{email:"local@source-admin.dev",id:"local-dev-user",name:"Local Developer",preferredUsername:"local-dev",role:"admin"}}:(0,t.getServerSession)(i.authOptions)}async function o(){return n()}e.s(["isSessionAdmin",0,function(e){return!!e?.user&&(!!(0,r.isLoginBypassed)()||"admin"===e.user.role)},"requireApiSession",0,o],91180);var s=e.i(40317);function a(){e.g.__logManagerPlatformCacheVersion=("number"!=typeof e.g.__logManagerPlatformCacheVersion&&(e.g.__logManagerPlatformCacheVersion=0),e.g.__logManagerPlatformCacheVersion+1)}var l=e.i(2157),u=e.i(12714),d=e.i(50227),f=e.i(88947);let c=function(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)};class m extends Error{constructor(e,t,i,...r){for(const n of(Array.isArray(t)&&(t=t.join(" ").trim()),super(t),void 0!==Error.captureStackTrace&&Error.captureStackTrace(this,m),this.code=e,r))for(const e in n){const t=n[e];this[e]=Buffer.isBuffer(t)?t.toString(i.encoding):null==t?t:JSON.parse(JSON.stringify(t))}}}let p=function(e){let t=[];for(let i=0,r=e.length;i<r;i++){let r=e[i];if(null==r||!1===r)t[i]={disabled:!0};else if("string"==typeof r||"number"==typeof r)t[i]={name:`${r}`};else if(c(r)){if("string"!=typeof r.name)throw new m("CSV_OPTION_COLUMNS_MISSING_NAME",["Option columns missing name:",`property "name" is required at position ${i}`,"when column is an object literal"]);t[i]=r}else throw new m("CSV_INVALID_COLUMN_DEFINITION",["Invalid column definition:","expect a string or a literal object,",`got ${JSON.stringify(r)} at position ${i}`])}return t},h=class{constructor(e=100){this.size=e,this.length=0,this.buf=Buffer.allocUnsafe(e)}prepend(e){if(Buffer.isBuffer(e)){let t=this.length+e.length;if(t>=this.size&&(this.resize(),t>=this.size))throw Error("INVALID_BUFFER_STATE");let i=this.buf;this.buf=Buffer.allocUnsafe(this.size),e.copy(this.buf,0),i.copy(this.buf,e.length),this.length+=e.length}else{let t=this.length++;t===this.size&&this.resize();let i=this.clone();this.buf[0]=e,i.copy(this.buf,1,0,t)}}append(e){let t=this.length++;t===this.size&&this.resize(),this.buf[t]=e}clone(){return Buffer.from(this.buf.slice(0,this.length))}resize(){let e=this.length;this.size=2*this.size;let t=Buffer.allocUnsafe(this.size);this.buf.copy(t,0,0,e),this.buf=t}toString(e){return e?this.buf.slice(0,this.length).toString(e):Uint8Array.prototype.slice.call(this.buf.slice(0,this.length))}toJSON(){return this.toString("utf8")}reset(){this.length=0}},_=function(e){let t={};for(let i in e)t[i.replace(/([A-Z])/g,function(e,t){return"_"+t.toLowerCase()})]=e[i];if(void 0===t.encoding||!0===t.encoding)t.encoding="utf8";else if(null===t.encoding||!1===t.encoding)t.encoding=null;else if("string"!=typeof t.encoding&&null!==t.encoding)throw new m("CSV_INVALID_OPTION_ENCODING",["Invalid option encoding:","encoding must be a string or null to return a buffer,",`got ${JSON.stringify(t.encoding)}`],t);if(void 0===t.bom||null===t.bom||!1===t.bom)t.bom=!1;else if(!0!==t.bom)throw new m("CSV_INVALID_OPTION_BOM",["Invalid option bom:","bom must be true,",`got ${JSON.stringify(t.bom)}`],t);if(t.cast_function=null,void 0===t.cast||null===t.cast||!1===t.cast||""===t.cast)t.cast=void 0;else if("function"==typeof t.cast)t.cast_function=t.cast,t.cast=!0;else if(!0!==t.cast)throw new m("CSV_INVALID_OPTION_CAST",["Invalid option cast:","cast must be true or a function,",`got ${JSON.stringify(t.cast)}`],t);if(void 0===t.cast_date||null===t.cast_date||!1===t.cast_date||""===t.cast_date)t.cast_date=!1;else if(!0===t.cast_date)t.cast_date=function(e){let t=Date.parse(e);return isNaN(t)?e:new Date(t)};else if("function"!=typeof t.cast_date)throw new m("CSV_INVALID_OPTION_CAST_DATE",["Invalid option cast_date:","cast_date must be true or a function,",`got ${JSON.stringify(t.cast_date)}`],t);if(t.cast_first_line_to_header=void 0,!0===t.columns)t.cast_first_line_to_header=void 0;else if("function"==typeof t.columns)t.cast_first_line_to_header=t.columns,t.columns=!0;else if(Array.isArray(t.columns))t.columns=p(t.columns);else if(void 0===t.columns||null===t.columns||!1===t.columns)t.columns=!1;else throw new m("CSV_INVALID_OPTION_COLUMNS",["Invalid option columns:","expect an array, a function or true,",`got ${JSON.stringify(t.columns)}`],t);if(void 0===t.group_columns_by_name||null===t.group_columns_by_name||!1===t.group_columns_by_name)t.group_columns_by_name=!1;else if(!0!==t.group_columns_by_name)throw new m("CSV_INVALID_OPTION_GROUP_COLUMNS_BY_NAME",["Invalid option group_columns_by_name:","expect an boolean,",`got ${JSON.stringify(t.group_columns_by_name)}`],t);else if(!1===t.columns)throw new m("CSV_INVALID_OPTION_GROUP_COLUMNS_BY_NAME",["Invalid option group_columns_by_name:","the `columns` mode must be activated."],t);if(void 0===t.comment||null===t.comment||!1===t.comment||""===t.comment)t.comment=null;else if("string"==typeof t.comment&&(t.comment=Buffer.from(t.comment,t.encoding)),!Buffer.isBuffer(t.comment))throw new m("CSV_INVALID_OPTION_COMMENT",["Invalid option comment:","comment must be a buffer or a string,",`got ${JSON.stringify(t.comment)}`],t);if(void 0===t.comment_no_infix||null===t.comment_no_infix||!1===t.comment_no_infix)t.comment_no_infix=!1;else if(!0!==t.comment_no_infix)throw new m("CSV_INVALID_OPTION_COMMENT",["Invalid option comment_no_infix:","value must be a boolean,",`got ${JSON.stringify(t.comment_no_infix)}`],t);let i=JSON.stringify(t.delimiter);if(Array.isArray(t.delimiter)||(t.delimiter=[t.delimiter]),0===t.delimiter.length)throw new m("CSV_INVALID_OPTION_DELIMITER",["Invalid option delimiter:","delimiter must be a non empty string or buffer or array of string|buffer,",`got ${i}`],t);if(t.delimiter=t.delimiter.map(function(e){if(null==e||!1===e)return Buffer.from(",",t.encoding);if("string"==typeof e&&(e=Buffer.from(e,t.encoding)),!Buffer.isBuffer(e)||0===e.length)throw new m("CSV_INVALID_OPTION_DELIMITER",["Invalid option delimiter:","delimiter must be a non empty string or buffer or array of string|buffer,",`got ${i}`],t);return e}),void 0===t.escape||!0===t.escape?t.escape=Buffer.from('"',t.encoding):"string"==typeof t.escape?t.escape=Buffer.from(t.escape,t.encoding):(null===t.escape||!1===t.escape)&&(t.escape=null),null!==t.escape&&!Buffer.isBuffer(t.escape))throw Error(`Invalid Option: escape must be a buffer, a string or a boolean, got ${JSON.stringify(t.escape)}`);if(void 0===t.from||null===t.from)t.from=1;else if("string"==typeof t.from&&/\d+/.test(t.from)&&(t.from=parseInt(t.from)),Number.isInteger(t.from)){if(t.from<0)throw Error(`Invalid Option: from must be a positive integer, got ${JSON.stringify(e.from)}`)}else throw Error(`Invalid Option: from must be an integer, got ${JSON.stringify(t.from)}`);if(void 0===t.from_line||null===t.from_line)t.from_line=1;else if("string"==typeof t.from_line&&/\d+/.test(t.from_line)&&(t.from_line=parseInt(t.from_line)),Number.isInteger(t.from_line)){if(t.from_line<=0)throw Error(`Invalid Option: from_line must be a positive integer greater than 0, got ${JSON.stringify(e.from_line)}`)}else throw Error(`Invalid Option: from_line must be an integer, got ${JSON.stringify(e.from_line)}`);if(void 0===t.ignore_last_delimiters||null===t.ignore_last_delimiters)t.ignore_last_delimiters=!1;else if("number"==typeof t.ignore_last_delimiters)t.ignore_last_delimiters=Math.floor(t.ignore_last_delimiters),0===t.ignore_last_delimiters&&(t.ignore_last_delimiters=!1);else if("boolean"!=typeof t.ignore_last_delimiters)throw new m("CSV_INVALID_OPTION_IGNORE_LAST_DELIMITERS",["Invalid option `ignore_last_delimiters`:","the value must be a boolean value or an integer,",`got ${JSON.stringify(t.ignore_last_delimiters)}`],t);if(!0===t.ignore_last_delimiters&&!1===t.columns)throw new m("CSV_IGNORE_LAST_DELIMITERS_REQUIRES_COLUMNS",["The option `ignore_last_delimiters`","requires the activation of the `columns` option"],t);if(void 0===t.info||null===t.info||!1===t.info)t.info=!1;else if(!0!==t.info)throw Error(`Invalid Option: info must be true, got ${JSON.stringify(t.info)}`);if(void 0===t.max_record_size||null===t.max_record_size||!1===t.max_record_size)t.max_record_size=0;else if(Number.isInteger(t.max_record_size)&&t.max_record_size>=0);else if("string"==typeof t.max_record_size&&/\d+/.test(t.max_record_size))t.max_record_size=parseInt(t.max_record_size);else throw Error(`Invalid Option: max_record_size must be a positive integer, got ${JSON.stringify(t.max_record_size)}`);if(void 0===t.objname||null===t.objname||!1===t.objname)t.objname=void 0;else if(Buffer.isBuffer(t.objname)){if(0===t.objname.length)throw Error("Invalid Option: objname must be a non empty buffer");null===t.encoding||(t.objname=t.objname.toString(t.encoding))}else if("string"==typeof t.objname){if(0===t.objname.length)throw Error("Invalid Option: objname must be a non empty string")}else if("number"==typeof t.objname);else throw Error(`Invalid Option: objname must be a string or a buffer, got ${t.objname}`);if(void 0!==t.objname){if("number"==typeof t.objname){if(!1!==t.columns)throw Error("Invalid Option: objname index cannot be combined with columns or be defined as a field")}else if(!1===t.columns)throw Error("Invalid Option: objname field must be combined with columns or be defined as an index")}if(void 0===t.on_record||null===t.on_record)t.on_record=void 0;else if("function"!=typeof t.on_record)throw new m("CSV_INVALID_OPTION_ON_RECORD",["Invalid option `on_record`:","expect a function,",`got ${JSON.stringify(t.on_record)}`],t);if(void 0!==t.on_skip&&null!==t.on_skip&&"function"!=typeof t.on_skip)throw Error(`Invalid Option: on_skip must be a function, got ${JSON.stringify(t.on_skip)}`);if(null===t.quote||!1===t.quote||""===t.quote)t.quote=null;else if(void 0===t.quote||!0===t.quote?t.quote=Buffer.from('"',t.encoding):"string"==typeof t.quote&&(t.quote=Buffer.from(t.quote,t.encoding)),!Buffer.isBuffer(t.quote))throw Error(`Invalid Option: quote must be a buffer or a string, got ${JSON.stringify(t.quote)}`);if(void 0===t.raw||null===t.raw||!1===t.raw)t.raw=!1;else if(!0!==t.raw)throw Error(`Invalid Option: raw must be true, got ${JSON.stringify(t.raw)}`);if(void 0===t.record_delimiter)t.record_delimiter=[];else if("string"==typeof t.record_delimiter||Buffer.isBuffer(t.record_delimiter)){if(0===t.record_delimiter.length)throw new m("CSV_INVALID_OPTION_RECORD_DELIMITER",["Invalid option `record_delimiter`:","value must be a non empty string or buffer,",`got ${JSON.stringify(t.record_delimiter)}`],t);t.record_delimiter=[t.record_delimiter]}else if(!Array.isArray(t.record_delimiter))throw new m("CSV_INVALID_OPTION_RECORD_DELIMITER",["Invalid option `record_delimiter`:","value must be a string, a buffer or array of string|buffer,",`got ${JSON.stringify(t.record_delimiter)}`],t);if(t.record_delimiter=t.record_delimiter.map(function(e,i){if("string"==typeof e||Buffer.isBuffer(e)){if(0===e.length)throw new m("CSV_INVALID_OPTION_RECORD_DELIMITER",["Invalid option `record_delimiter`:","value must be a non empty string or buffer",`at index ${i},`,`got ${JSON.stringify(e)}`],t)}else throw new m("CSV_INVALID_OPTION_RECORD_DELIMITER",["Invalid option `record_delimiter`:","value must be a string, a buffer or array of string|buffer",`at index ${i},`,`got ${JSON.stringify(e)}`],t);return"string"==typeof e&&(e=Buffer.from(e,t.encoding)),e}),"boolean"==typeof t.relax_column_count);else if(void 0===t.relax_column_count||null===t.relax_column_count)t.relax_column_count=!1;else throw Error(`Invalid Option: relax_column_count must be a boolean, got ${JSON.stringify(t.relax_column_count)}`);if("boolean"==typeof t.relax_column_count_less);else if(void 0===t.relax_column_count_less||null===t.relax_column_count_less)t.relax_column_count_less=!1;else throw Error(`Invalid Option: relax_column_count_less must be a boolean, got ${JSON.stringify(t.relax_column_count_less)}`);if("boolean"==typeof t.relax_column_count_more);else if(void 0===t.relax_column_count_more||null===t.relax_column_count_more)t.relax_column_count_more=!1;else throw Error(`Invalid Option: relax_column_count_more must be a boolean, got ${JSON.stringify(t.relax_column_count_more)}`);if("boolean"==typeof t.relax_quotes);else if(void 0===t.relax_quotes||null===t.relax_quotes)t.relax_quotes=!1;else throw Error(`Invalid Option: relax_quotes must be a boolean, got ${JSON.stringify(t.relax_quotes)}`);if("boolean"==typeof t.skip_empty_lines);else if(void 0===t.skip_empty_lines||null===t.skip_empty_lines)t.skip_empty_lines=!1;else throw Error(`Invalid Option: skip_empty_lines must be a boolean, got ${JSON.stringify(t.skip_empty_lines)}`);if("boolean"==typeof t.skip_records_with_empty_values);else if(void 0===t.skip_records_with_empty_values||null===t.skip_records_with_empty_values)t.skip_records_with_empty_values=!1;else throw Error(`Invalid Option: skip_records_with_empty_values must be a boolean, got ${JSON.stringify(t.skip_records_with_empty_values)}`);if("boolean"==typeof t.skip_records_with_error);else if(void 0===t.skip_records_with_error||null===t.skip_records_with_error)t.skip_records_with_error=!1;else throw Error(`Invalid Option: skip_records_with_error must be a boolean, got ${JSON.stringify(t.skip_records_with_error)}`);if(void 0===t.rtrim||null===t.rtrim||!1===t.rtrim)t.rtrim=!1;else if(!0!==t.rtrim)throw Error(`Invalid Option: rtrim must be a boolean, got ${JSON.stringify(t.rtrim)}`);if(void 0===t.ltrim||null===t.ltrim||!1===t.ltrim)t.ltrim=!1;else if(!0!==t.ltrim)throw Error(`Invalid Option: ltrim must be a boolean, got ${JSON.stringify(t.ltrim)}`);if(void 0===t.trim||null===t.trim||!1===t.trim)t.trim=!1;else if(!0!==t.trim)throw Error(`Invalid Option: trim must be a boolean, got ${JSON.stringify(t.trim)}`);if(!0===t.trim&&!1!==e.ltrim?t.ltrim=!0:!0!==t.ltrim&&(t.ltrim=!1),!0===t.trim&&!1!==e.rtrim?t.rtrim=!0:!0!==t.rtrim&&(t.rtrim=!1),void 0===t.to||null===t.to)t.to=-1;else if(-1!==t.to)if("string"==typeof t.to&&/\d+/.test(t.to)&&(t.to=parseInt(t.to)),Number.isInteger(t.to)){if(t.to<=0)throw Error(`Invalid Option: to must be a positive integer greater than 0, got ${JSON.stringify(e.to)}`)}else throw Error(`Invalid Option: to must be an integer, got ${JSON.stringify(e.to)}`);if(void 0===t.to_line||null===t.to_line)t.to_line=-1;else if(-1!==t.to_line)if("string"==typeof t.to_line&&/\d+/.test(t.to_line)&&(t.to_line=parseInt(t.to_line)),Number.isInteger(t.to_line)){if(t.to_line<=0)throw Error(`Invalid Option: to_line must be a positive integer greater than 0, got ${JSON.stringify(e.to_line)}`)}else throw Error(`Invalid Option: to_line must be an integer, got ${JSON.stringify(e.to_line)}`);return t},g=function(e){return e.every(e=>null==e||e.toString&&""===e.toString().trim())},b={utf8:Buffer.from([239,187,191]),utf16le:Buffer.from([255,254])},y=function(e={}){let t=_(e);return{info:{bytes:0,bytes_records:0,comment_lines:0,empty_lines:0,invalid_field_length:0,lines:1,records:0},original_options:e,options:t,state:{bomSkipped:!1,bufBytesStart:0,castField:t.cast_function,commenting:!1,error:void 0,enabled:1===t.from_line,escaping:!1,escapeIsQuote:Buffer.isBuffer(t.escape)&&Buffer.isBuffer(t.quote)&&0===Buffer.compare(t.escape,t.quote),expectedRecordLength:Array.isArray(t.columns)?t.columns.length:void 0,field:new h(20),firstLineToHeaders:t.cast_first_line_to_header,needMoreDataSize:Math.max(null!==t.comment?t.comment.length:0,...t.delimiter.map(e=>e.length),null!==t.quote?t.quote.length:0),previousBuf:void 0,quoting:!1,stop:!1,rawBuffer:new h(100),record:[],recordHasError:!1,record_length:0,recordDelimiterMaxLength:0===t.record_delimiter.length?0:Math.max(...t.record_delimiter.map(e=>e.length)),trimChars:[Buffer.from(" ",t.encoding)[0],Buffer.from(" ",t.encoding)[0]],wasQuoting:!1,wasRowDelimiter:!1,timchars:[Buffer.from(Buffer.from([13],"utf8").toString(),t.encoding),Buffer.from(Buffer.from([10],"utf8").toString(),t.encoding),Buffer.from(Buffer.from([12],"utf8").toString(),t.encoding),Buffer.from(Buffer.from([32],"utf8").toString(),t.encoding),Buffer.from(Buffer.from([9],"utf8").toString(),t.encoding)]},__needMoreData:function(e,t,i){if(i)return!1;let{encoding:r,escape:n,quote:o}=this.options,{quoting:s,needMoreDataSize:a,recordDelimiterMaxLength:l}=this.state;return t-e-1<Math.max(a,0===l?Buffer.from("\r\n",r).length:l,s?(null===n?0:n.length)+o.length:0,s?o.length+l:0)},parse:function(e,t,i,r){let n,o,{bom:s,comment_no_infix:a,encoding:l,from_line:u,ltrim:d,max_record_size:f,raw:c,relax_quotes:p,rtrim:h,skip_empty_lines:g,to:y,to_line:v}=this.options,{comment:w,escape:S,quote:R,record_delimiter:O}=this.options,{bomSkipped:N,previousBuf:I,rawBuffer:E,escapeIsQuote:T}=this.state;if(void 0===I)if(void 0===e)return void r();else n=e;else n=void 0!==I&&void 0===e?I:Buffer.concat([I,e]);if(!1===N)if(!1===s)this.state.bomSkipped=!0;else if(n.length<3){if(!1===t){this.state.previousBuf=n;return}}else{for(let e in b)if(0===b[e].compare(n,0,b[e].length)){let t=b[e].length;this.state.bufBytesStart+=t,n=n.slice(t);let i=_({...this.original_options,encoding:e});for(let e in i)this.options[e]=i[e];({comment:w,escape:S,quote:R}=this.options);break}this.state.bomSkipped=!0}let C=n.length;for(o=0;o<C&&!this.__needMoreData(o,C,t);o++){if(!0===this.state.wasRowDelimiter&&(this.info.lines++,this.state.wasRowDelimiter=!1),-1!==v&&this.info.lines>v){this.state.stop=!0,r();return}!1===this.state.quoting&&0===O.length&&this.__autoDiscoverRecordDelimiter(n,o)&&(O=this.options.record_delimiter);let e=n[o];if(!0===c&&E.append(e),(13===e||10===e)&&!1===this.state.wasRowDelimiter&&(this.state.wasRowDelimiter=!0),!0===this.state.escaping)this.state.escaping=!1;else{if(null!==S&&!0===this.state.quoting&&this.__isEscape(n,o,e)&&o+S.length<C)if(T){if(this.__isQuote(n,o+S.length)){this.state.escaping=!0,o+=S.length-1;continue}}else{this.state.escaping=!0,o+=S.length-1;continue}if(!1===this.state.commenting&&this.__isQuote(n,o))if(!0===this.state.quoting){let t=n[o+R.length],i=h&&this.__isCharTrimable(n,o+R.length),r=null!==w&&this.__compareBytes(w,n,o+R.length,t),s=this.__isDelimiter(n,o+R.length,t),a=0===O.length?this.__autoDiscoverRecordDelimiter(n,o+R.length):this.__isRecordDelimiter(t,n,o+R.length);if(null!==S&&this.__isEscape(n,o,e)&&this.__isQuote(n,o+S.length))o+=S.length-1;else if(!t||s||a||r||i){this.state.quoting=!1,this.state.wasQuoting=!0,o+=R.length-1;continue}else if(!1===p){let e=this.__error(new m("CSV_INVALID_CLOSING_QUOTE",["Invalid Closing Quote:",`got "${String.fromCharCode(t)}"`,`at line ${this.info.lines}`,"instead of delimiter, record delimiter, trimable character","(if activated) or comment"],this.options,this.__infoField()));if(void 0!==e)return e}else this.state.quoting=!1,this.state.wasQuoting=!0,this.state.field.prepend(R),o+=R.length-1}else if(0!==this.state.field.length){if(!1===p){let e=this.__infoField(),t=Object.keys(b).map(e=>!!b[e].equals(this.state.field.toString())&&e).filter(Boolean)[0],i=this.__error(new m("INVALID_OPENING_QUOTE",["Invalid Opening Quote:",`a quote is found on field ${JSON.stringify(e.column)} at line ${e.lines}, value is ${JSON.stringify(this.state.field.toString(l))}`,t?`(${t} bom)`:void 0],this.options,e,{field:this.state.field}));if(void 0!==i)return i}}else{this.state.quoting=!0,o+=R.length-1;continue}if(!1===this.state.quoting){let t=this.__isRecordDelimiter(e,n,o);if(0!==t){if(this.state.commenting&&!1===this.state.wasQuoting&&0===this.state.record.length&&0===this.state.field.length)this.info.comment_lines++;else{if(!1===this.state.enabled&&this.info.lines+ +(!0===this.state.wasRowDelimiter)>=u){this.state.enabled=!0,this.__resetField(),this.__resetRecord(),o+=t-1;continue}if(!0===g&&!1===this.state.wasQuoting&&0===this.state.record.length&&0===this.state.field.length){this.info.empty_lines++,o+=t-1;continue}this.info.bytes=this.state.bufBytesStart+o;let e=this.__onField();if(void 0!==e)return e;this.info.bytes=this.state.bufBytesStart+o+t;let n=this.__onRecord(i);if(void 0!==n)return n;if(-1!==y&&this.info.records>=y){this.state.stop=!0,r();return}}this.state.commenting=!1,o+=t-1;continue}if(this.state.commenting)continue;if(null!==w&&(!1===a||0===this.state.record.length&&0===this.state.field.length)&&0!==this.__compareBytes(w,n,o,e)){this.state.commenting=!0;continue}let s=this.__isDelimiter(n,o,e);if(0!==s){this.info.bytes=this.state.bufBytesStart+o;let e=this.__onField();if(void 0!==e)return e;o+=s-1;continue}}}if(!1===this.state.commenting&&0!==f&&this.state.record_length+this.state.field.length>f)return this.__error(new m("CSV_MAX_RECORD_SIZE",["Max Record Size:","record exceed the maximum number of tolerated bytes",`of ${f}`,`at line ${this.info.lines}`],this.options,this.__infoField()));let t=!1===d||!0===this.state.quoting||0!==this.state.field.length||!this.__isCharTrimable(n,o),s=!1===h||!1===this.state.wasQuoting;if(!0===t&&!0===s)this.state.field.append(e);else{if(!0===h&&!this.__isCharTrimable(n,o))return this.__error(new m("CSV_NON_TRIMABLE_CHAR_AFTER_CLOSING_QUOTE",["Invalid Closing Quote:","found non trimable byte after quote",`at line ${this.info.lines}`],this.options,this.__infoField()));!1===t&&(o+=this.__isCharTrimable(n,o)-1);continue}}if(!0===t)if(!0===this.state.quoting){let e=this.__error(new m("CSV_QUOTE_NOT_CLOSED",["Quote Not Closed:",`the parsing is finished with an opening quote at line ${this.info.lines}`],this.options,this.__infoField()));if(void 0!==e)return e}else if(!0===this.state.wasQuoting||0!==this.state.record.length||0!==this.state.field.length){this.info.bytes=this.state.bufBytesStart+o;let e=this.__onField();if(void 0!==e)return e;let t=this.__onRecord(i);if(void 0!==t)return t}else!0===this.state.wasRowDelimiter?this.info.empty_lines++:!0===this.state.commenting&&this.info.comment_lines++;else this.state.bufBytesStart+=o,this.state.previousBuf=n.slice(o);!0===this.state.wasRowDelimiter&&(this.info.lines++,this.state.wasRowDelimiter=!1)},__onRecord:function(e){let{columns:t,group_columns_by_name:i,encoding:r,info:n,from:o,relax_column_count:s,relax_column_count_less:a,relax_column_count_more:l,raw:u,skip_records_with_empty_values:d}=this.options,{enabled:f,record:c}=this.state;if(!1===f)return this.__resetRecord();let p=c.length;if(!0===t)return!0===d&&g(c)?void this.__resetRecord():this.__firstLineToColumns(c);if(!1===t&&0===this.info.records&&(this.state.expectedRecordLength=p),p!==this.state.expectedRecordLength){let e=!1===t?new m("CSV_RECORD_INCONSISTENT_FIELDS_LENGTH",["Invalid Record Length:",`expect ${this.state.expectedRecordLength},`,`got ${p} on line ${this.info.lines}`],this.options,this.__infoField(),{record:c}):new m("CSV_RECORD_INCONSISTENT_COLUMNS",["Invalid Record Length:",`columns length is ${t.length},`,`got ${p} on line ${this.info.lines}`],this.options,this.__infoField(),{record:c});if(!0===s||!0===a&&p<this.state.expectedRecordLength||!0===l&&p>this.state.expectedRecordLength)this.info.invalid_field_length++,this.state.error=e;else{let t=this.__error(e);if(t)return t}}if(!0===d&&g(c))return void this.__resetRecord();if(!0===this.state.recordHasError){this.__resetRecord(),this.state.recordHasError=!1;return}if(this.info.records++,1===o||this.info.records>=o){let{objname:o}=this.options;if(!1!==t){let s={};for(let e=0,r=c.length;e<r;e++)void 0===t[e]||t[e].disabled||(!0===i&&void 0!==s[t[e].name]?Array.isArray(s[t[e].name])?s[t[e].name]=s[t[e].name].concat(c[e]):s[t[e].name]=[s[t[e].name],c[e]]:s[t[e].name]=c[e]);if(!0===u||!0===n){let t=Object.assign({record:s},!0===u?{raw:this.state.rawBuffer.toString(r)}:{},!0===n?{info:this.__infoRecord()}:{}),i=this.__push(void 0===o?t:[s[o],t],e);if(i)return i}else{let t=this.__push(void 0===o?s:[s[o],s],e);if(t)return t}}else if(!0===u||!0===n){let t=Object.assign({record:c},!0===u?{raw:this.state.rawBuffer.toString(r)}:{},!0===n?{info:this.__infoRecord()}:{}),i=this.__push(void 0===o?t:[c[o],t],e);if(i)return i}else{let t=this.__push(void 0===o?c:[c[o],c],e);if(t)return t}}this.__resetRecord()},__firstLineToColumns:function(e){let{firstLineToHeaders:t}=this.state;try{let i=void 0===t?e:t.call(null,e);if(!Array.isArray(i))return this.__error(new m("CSV_INVALID_COLUMN_MAPPING",["Invalid Column Mapping:","expect an array from column function,",`got ${JSON.stringify(i)}`],this.options,this.__infoField(),{headers:i}));let r=p(i);this.state.expectedRecordLength=r.length,this.options.columns=r,this.__resetRecord();return}catch(e){return e}},__resetRecord:function(){!0===this.options.raw&&this.state.rawBuffer.reset(),this.state.error=void 0,this.state.record=[],this.state.record_length=0},__onField:function(){let{cast:e,encoding:t,rtrim:i,max_record_size:r}=this.options,{enabled:n,wasQuoting:o}=this.state;if(!1===n)return this.__resetField();let s=this.state.field.toString(t);if(!0===i&&!1===o&&(s=s.trimRight()),!0===e){let[e,t]=this.__cast(s);if(void 0!==e)return e;s=t}this.state.record.push(s),0!==r&&"string"==typeof s&&(this.state.record_length+=s.length),this.__resetField()},__resetField:function(){this.state.field.reset(),this.state.wasQuoting=!1},__push:function(e,t){let{on_record:i}=this.options;if(void 0!==i){let t=this.__infoRecord();try{e=i.call(null,e,t)}catch(e){return e}if(null==e)return}this.info.bytes_records+=this.info.bytes,t(e)},__cast:function(e){let{columns:t,relax_column_count:i}=this.options;if(!0===Array.isArray(t)&&i&&this.options.columns.length<=this.state.record.length)return[void 0,void 0];if(null!==this.state.castField)try{let t=this.__infoField();return[void 0,this.state.castField.call(null,e,t)]}catch(e){return[e]}if(this.__isFloat(e))return[void 0,parseFloat(e)];if(!1!==this.options.cast_date){let t=this.__infoField();return[void 0,this.options.cast_date.call(null,e,t)]}return[void 0,e]},__isCharTrimable:function(e,t){return((e,t)=>{let{timchars:i}=this.state;e:for(let r=0;r<i.length;r++){let n=i[r];for(let i=0;i<n.length;i++)if(n[i]!==e[t+i])continue e;return n.length}return 0})(e,t)},__isFloat:function(e){return e-parseFloat(e)+1>=0},__compareBytes:function(e,t,i,r){if(e[0]!==r)return 0;let n=e.length;for(let r=1;r<n;r++)if(e[r]!==t[i+r])return 0;return n},__isDelimiter:function(e,t,i){let{delimiter:r,ignore_last_delimiters:n}=this.options;if(!0===n&&this.state.record.length===this.options.columns.length-1||!1!==n&&"number"==typeof n&&this.state.record.length===n-1)return 0;e:for(let n=0;n<r.length;n++){let o=r[n];if(o[0]===i){for(let i=1;i<o.length;i++)if(o[i]!==e[t+i])continue e;return o.length}}return 0},__isRecordDelimiter:function(e,t,i){let{record_delimiter:r}=this.options,n=r.length;e:for(let o=0;o<n;o++){let n=r[o],s=n.length;if(n[0]===e){for(let e=1;e<s;e++)if(n[e]!==t[i+e])continue e;return n.length}}return 0},__isEscape:function(e,t,i){let{escape:r}=this.options;if(null===r)return!1;let n=r.length;if(r[0]===i){for(let i=0;i<n;i++)if(r[i]!==e[t+i])return!1;return!0}return!1},__isQuote:function(e,t){let{quote:i}=this.options;if(null===i)return!1;let r=i.length;for(let n=0;n<r;n++)if(i[n]!==e[t+n])return!1;return!0},__autoDiscoverRecordDelimiter:function(e,t){let{encoding:i}=this.options,r=[Buffer.from("\r\n",i),Buffer.from("\n",i),Buffer.from("\r",i)];t:for(let i=0;i<r.length;i++){let n=r[i].length;for(let o=0;o<n;o++)if(r[i][o]!==e[t+o])continue t;return this.options.record_delimiter.push(r[i]),this.state.recordDelimiterMaxLength=r[i].length,r[i].length}return 0},__error:function(e){let{encoding:t,raw:i,skip_records_with_error:r}=this.options,n="string"==typeof e?Error(e):e;if(!r)return n;if(this.state.recordHasError=!0,void 0!==this.options.on_skip)try{this.options.on_skip(n,i?this.state.rawBuffer.toString(t):void 0)}catch(e){return e}},__infoDataSet:function(){return{...this.info,columns:this.options.columns}},__infoRecord:function(){let{columns:e,raw:t,encoding:i}=this.options;return{...this.__infoDataSet(),bytes_records:this.info.bytes,error:this.state.error,header:!0===e,index:this.state.record.length,raw:t?this.state.rawBuffer.toString(i):void 0}},__infoField:function(){let{columns:e}=this.options,t=Array.isArray(e),i=this.info.bytes_records;return{...this.__infoRecord(),bytes_records:i,column:!0===t?e.length>this.state.record.length?e[this.state.record.length].name:null:this.state.record.length,quoting:this.state.wasQuoting}}}};class v extends f.Transform{constructor(e={}){super({readableObjectMode:!0,...e,encoding:null}),this.api=y({on_skip:(e,t)=>{this.emit("skip",e,t)},...e}),this.state=this.api.state,this.options=this.api.options,this.info=this.api.info}_transform(e,t,i){if(!0===this.state.stop)return;let r=this.api.parse(e,!1,e=>{this.push(e)},()=>{this.push(null),this.end(),this.on("end",this.destroy)});void 0!==r&&(this.state.stop=!0),i(r)}_flush(e){!0===this.state.stop||e(this.api.parse(void 0,!0,e=>{this.push(e)},()=>{this.push(null),this.on("end",this.destroy)}))}}let w=function(){let e,t,i;for(let r in arguments){let n=arguments[r],o=typeof n;if(void 0===e&&("string"==typeof n||Buffer.isBuffer(n)))e=n;else if(void 0===t&&c(n))t=n;else if(void 0===i&&"function"===o)i=n;else throw new m("CSV_INVALID_ARGUMENT",["Invalid argument:",`got ${JSON.stringify(n)} at index ${r}`],t||{})}let r=new v(t);if(i){let e=void 0===t||void 0===t.objname?[]:Object.create(null);r.on("readable",function(){let i;for(;null!==(i=this.read());)void 0===t||void 0===t.objname?e.push(i):Object.assign(e,{[i[0]]:i[1]})}),r.on("error",function(e){i(e,void 0,r.api.__infoDataSet())}),r.on("end",function(){i(void 0,e,r.api.__infoDataSet())})}if(void 0!==e){let t=function(){r.write(e),r.end()};"function"==typeof setImmediate?setImmediate(t):setTimeout(t,0)}return r},S=[{dataTypes:["bit","boolean"],valueType:"boolean"},{dataTypes:["bigint","decimal","float","int","money","numeric","real","smallint","smallmoney","tinyint"],valueType:"number"},{dataTypes:["date","datetime","datetime2","datetimeoffset","smalldatetime","time"],valueType:"datetime"}],R={application:[{bonus:18,pattern:/^(application|app|appname)$/i},{bonus:14,pattern:/^app(env|version)$/i},{bonus:10,pattern:/application/i}],correlationId:[{bonus:28,pattern:/^correlation(id)?$/i},{bonus:18,pattern:/request(id|key)/i},{bonus:8,pattern:/trace(id)?/i}],description:[{bonus:18,pattern:/(message|description|summary|details?)/i},{bonus:10,pattern:/(error|fault).*(message|description)/i}],fromLocation:[{bonus:16,pattern:/^(from|origin)(airport|station|location|code)?$/i},{bonus:8,pattern:/^source(airport|location)$/i}],provider:[{bonus:18,pattern:/^provider(name)?$/i},{bonus:10,pattern:/(vendor|supplier)/i}],recordId:[{bonus:28,pattern:/(log(detail)?id|recordid|eventid|entryid|auditid)/i,preferredTypes:["string","number"]},{bonus:16,pattern:/(id)$/i,preferredTypes:["string","number"]}],responseTime:[{bonus:22,pattern:/(response|duration|elapsed|latency).*ms/i},{bonus:16,pattern:/(response|duration|elapsed|latency|time)/i}],service:[{bonus:18,pattern:/^service(id|name)?$/i},{bonus:12,pattern:/(endpoint|operation|method)/i}],status:[{bonus:24,pattern:/^is(error|failed?)$/i,preferredTypes:["boolean"]},{bonus:18,pattern:/(error|failed?|success|status|severity|level)/i}],timestamp:[{bonus:30,pattern:/(event(date|time)|created(at|on)?|logged(at)?|timestamp|occurred(at)?)/i,preferredTypes:["datetime"]},{bonus:12,pattern:/(date|time)/i,preferredTypes:["datetime"]}],title:[{bonus:18,pattern:/(application|service|operation|event|action)/i},{bonus:10,pattern:/(provider|message|description)/i}],toLocation:[{bonus:16,pattern:/^(to|destination)(airport|station|location|code)?$/i},{bonus:8,pattern:/^target(airport|location)$/i}]};function O(e){return e.replace(/([a-z\d])([A-Z])/g,"$1 $2").replace(/[^a-zA-Z0-9]+/g," ").trim().split(/\s+/).map((e,t)=>0===t?e.toLowerCase():`${e.charAt(0).toUpperCase()}${e.slice(1).toLowerCase()}`).join("")||"field"}function N(e){let t=new Set,i=e.fieldRef.toLowerCase();for(let r of(("xml"===e.dataType.toLowerCase()||i.includes("xml"))&&t.add("xml"),i.includes("json")&&t.add("json"),e.sampleValues)){let e=r.trim();if(e){if((e.startsWith("{")||e.startsWith("["))&&!t.has("json"))try{JSON.parse(e),t.add("json")}catch{}(e.startsWith("<")||e.startsWith("<?xml"))&&!t.has("xml")&&/<[A-Za-z_]/.test(e)&&t.add("xml")}}return!t.size&&/(payload|body|request|response|content)/i.test(i)&&t.add("text"),Array.from(t)}function I(e,t){let i=null;for(let r of e.fields){let e=function(e,t){let i=R[t],r=0;for(let t of i)t.pattern.test(e.fieldRef)&&(r+=t.bonus,(!t.preferredTypes?.length||t.preferredTypes.includes(e.valueType))&&(r+=6));return"status"===t&&"boolean"===e.valueType&&(r+=8),"timestamp"===t&&"datetime"===e.valueType&&(r+=10),"recordId"===t&&["string","number"].includes(e.valueType)&&(r+=8),r}(r,t);!e||i&&i.confidence>=e||(i={confidence:e,fieldRef:r.fieldRef,label:r.label,role:t})}return i}function E(e,t,i){let r=function(e,t){if(!t.has(e))return t.add(e),e;let i=2;for(;t.has(`${e}${i}`);)i+=1;let r=`${e}${i}`;return t.add(r),r}(i?.id??O(e.fieldRef),t),n="text";return"datetime"===e.valueType?n="datetime":"boolean"===e.valueType&&(n="boolean"),{fieldRef:e.fieldRef,filterable:!1,filterInput:null,format:n,id:r,label:i?.label??e.label,showInDetail:!0,showInList:!1,valueType:e.valueType,...i}}function T(e,t){let i,r={application:I(t,"application")??void 0,correlationId:I(t,"correlationId")??void 0,description:I(t,"description")??void 0,fromLocation:I(t,"fromLocation")??void 0,provider:I(t,"provider")??void 0,recordId:I(t,"recordId")??void 0,responseTime:I(t,"responseTime")??void 0,service:I(t,"service")??void 0,status:I(t,"status")??void 0,timestamp:I(t,"timestamp")??void 0,title:I(t,"title")??void 0,toLocation:I(t,"toLocation")??void 0};if(!r.recordId||!r.timestamp)return null;let n=new Set,o=[],s=(e,i)=>{let s=r[e];if(!s)return null;let a=t.fields.find(e=>e.fieldRef===s.fieldRef);if(!a)return null;let l=E(a,n,i);return o.push(l),l},a=s("recordId",{id:"recordId",label:"Record ID",showInList:!1}),l=s("timestamp",{format:"datetime",id:"eventTime",label:"Event Time (UTC)",showInList:!0,valueType:"datetime"}),u=s("application",{filterInput:"text",filterable:!0,id:"application",label:"Application",showInList:!0})??s("title",{filterInput:"text",filterable:!0,id:"title",label:"Title",showInList:!0}),d=s("description",{id:"description",label:"Description",showInList:!1});s("service",{filterInput:"text",filterable:!0,id:"service",label:"Service",showInList:!0}),s("provider",{filterInput:"text",filterable:!0,id:"provider",label:"Provider",showInList:!0}),s("correlationId",{filterInput:"text",filterable:!0,id:"correlationId",label:"Correlation ID",showInList:!0}),s("fromLocation",{filterInput:"text",filterable:!0,id:"fromLocation",label:"From",showInList:!0}),s("toLocation",{filterInput:"text",filterable:!0,id:"toLocation",label:"To",showInList:!0}),s("responseTime",{format:"durationMs",id:"responseTime",label:"Response Time",showInList:!0,valueType:"number"});let f=s("status",{filterInput:"boolean",filterable:!0,format:"status",id:"status",label:"Status",showInList:!0}),c=function(e){let t=e.fields.filter(e=>e.sampleKinds.length||/(payload|body|request|response|json|xml)/i.test(e.fieldRef)),i=[];for(let e of t){let t=e.sampleKinds.length?e.sampleKinds:N(e);if(!t.length)continue;let r=e.fieldRef.toLowerCase().includes("request")?"request":e.fieldRef.toLowerCase().includes("response")?"response":"other";for(let n of t)"text"===n&&t.some(e=>"text"!==e)||i.push({fieldRef:e.fieldRef,group:r,id:O(e.fieldRef),kind:n,label:e.fieldRef.replace(/[_-]+/g," ").replace(/([a-z\d])([A-Z])/g,"$1 $2").replace(/\s+/g," ").trim().replace(/\b\w/g,e=>e.toUpperCase())})}return i}(t),m=new Set(c.map(e=>e.fieldRef));for(let e of t.fields.filter(e=>!m.has(e.fieldRef)).filter(e=>!o.some(t=>t.fieldRef===e.fieldRef)).slice(0,12))o.push(E(e,n,{filterInput:"boolean"===e.valueType?"boolean":"string"===e.valueType?"text":null,filterable:"boolean"===e.valueType||"string"===e.valueType}));let p=(i=new Set,o.filter(e=>!i.has(e.fieldRef)&&(i.add(e.fieldRef),!0))).map((e,t)=>({...e,showInDetail:t<16&&e.showInDetail})),h=(r.timestamp?.confidence??0)+(r.recordId?.confidence??0)+(r.status?.confidence??0)+(r.correlationId?.confidence??0)+16*!!c.length+24*!!/log|audit|trace|event|hit/i.test(t.name),_=[r.timestamp?`Timestamp field: ${r.timestamp.label}`:null,r.recordId?`Record id field: ${r.recordId.label}`:null,r.status?`Status field: ${r.status.label}`:null,c.length?`${c.length} payload field(s) detected`:null].filter(Boolean);return{candidate:{matches:r,proposedMapping:{defaultSort:{direction:"desc",fieldRef:l?.fieldRef??r.timestamp.fieldRef},descriptionFieldId:d?.id??null,fields:p,payloads:c,recordIdFieldRef:a?.fieldRef??r.recordId.fieldRef,sourceId:e,statusFieldId:f?.id??null,target:{name:t.name,qualifiedName:t.qualifiedName,schema:t.schema},timestampFieldRef:l?.fieldRef??r.timestamp.fieldRef,titleFieldId:u?.id??d?.id??null,version:1},reasons:_,score:h,target:{name:t.name,qualifiedName:t.qualifiedName,schema:t.schema}},reasons:_,score:h}}function C(e,t){return t.map(t=>{let i=T(e,t);return{...t,candidateReasons:i?.reasons??t.candidateReasons,candidateScore:i?.score??t.candidateScore}}).sort((e,t)=>t.candidateScore-e.candidateScore)}function x(e,t){let i=[];for(let r of t){let t=T(e,r);t&&i.push(t.candidate)}return i.sort((e,t)=>t.score-e.score)}function A(e,t){let i=e.fields.find(e=>e.id===t);if(!i)throw Error(`Mapped field ${t} is missing.`);return{format:i.format,id:i.id,label:i.label,valueType:i.valueType}}function D(e,t){let i=t.fields.map(e=>({format:e.format,id:e.id,label:e.label,valueType:e.valueType})),r=t.fields.filter(e=>e.filterable&&e.filterInput).slice(0,8).map(e=>({id:e.id,input:e.filterInput??"text",label:e.label,valueType:e.valueType})),n=t.fields.filter(e=>e.showInList).map(e=>A(t,e.id)),o=t.fields.filter(e=>e.showInDetail).map(e=>A(t,e.id)),s=t.fields.find(e=>e.fieldRef===t.timestampFieldRef)?.id??"eventTime";return{columns:n,defaultDatePresetHours:24,descriptionFieldId:t.descriptionFieldId,description:`Read-only inspection of ${t.target.qualifiedName}.`,detailFields:o,fields:i,filters:r,payloads:t.payloads,sourceLabel:e.name,statusFieldId:t.statusFieldId,targetLabel:t.target.qualifiedName,timestampFieldId:s,title:`${e.name} Table Explorer`,titleFieldId:t.titleFieldId}}function j(e){return{...e,sampleKinds:N(e)}}function $(e){return"boolean"===e.valueType?"boolean":"number"===e.valueType?"number":"datetime"===e.valueType?"datetime":/text|ntext|xml/i.test(e.dataType)||-1===e.maxLength||null!==e.maxLength&&e.maxLength>=512?"longText":"shortText"}function M(e){let t=e.sampleKinds.length?e.sampleKinds:N(e);return t.includes("json")?"json":t.includes("xml")?"xml":t.includes("text")?"text":null}let L=[","," ","|",";"];function P(e){let t=e.trim();if(/^file:/i.test(t)||/^[a-z][a-z0-9+.-]*:\/\//i.test(t))throw new s.BadRequestError("CSV file path must be a local filesystem path.");return(0,d.resolve)(t)}function q(e){if("csv"!==e.type)throw Error("The CSV adapter received a non-CSV source.");return{...e,connection:{...e.connection,filePath:P(e.connection.filePath)}}}async function z(e){let t;try{t=await (0,u.stat)(e)}catch{throw new s.BadRequestError("CSV file path does not point to a readable file.")}if(!t.isFile())throw new s.BadRequestError("CSV file path must point to a regular file.")}function B(e,t){let i=e.replace(/[^a-zA-Z0-9_]+/g,"_").replace(/^_+|_+$/g,"")||`column_${t}`;return/^\d/.test(i)?`column_${i}`:i}function F(e){if(!e.some(e=>e.replace(/^\uFEFF/,"").trim()))throw new s.BadRequestError("CSV file must include at least one usable header.");let t=new Map;return e.map((e,i)=>{let r=i+1,n=e.replace(/^\uFEFF/,"").trim()||`Column ${r}`,o=B(n,r),s=(t.get(o)??0)+1;return t.set(o,s),{fieldRef:1===s?o:`${o}_${s}`,label:n,ordinal:r}})}function V(e){if(e<=0)throw new s.BadRequestError("CSV file must include at least one column.");return Array.from({length:e},(e,t)=>{let i=t+1,r=`Column ${i}`;return{fieldRef:B(r,i),label:r,ordinal:i}})}function J(e){let t,i=e.trim();return!i||/^null$/i.test(i.trim())||G(i)||X(i)||Y(i)||(t=i.trim()).startsWith("{")||t.startsWith("[")||t.startsWith("<")||/^\d{1,3}(?:\.\d{1,3}){3}$/.test(i.trim())||/^\d{1,2}:\d{2}:\d{2}(?:\.\d+)?$/.test(i.trim())}function k(e){return e.length?e.filter(J).length/e.length:0}function U(e,t){let i=k(e),r=e.length?e.filter(e=>{let t=e.replace(/^\uFEFF/,"").trim();return t.length>0&&t.length<=80&&/[A-Za-z_]/.test(t)&&!J(t)}).length/e.length:0;return t?r>=.45&&i+.25<k(t):r>=.7&&i<.2}async function H(e){let t="";for await(let i of(0,l.createReadStream)(e,{encoding:"utf8"})){let e=(t+=i).split(/\r?\n/),r=(t.endsWith("\n")||t.endsWith("\r")?e:e.slice(0,-1)).find(e=>e.trim());if(r)return r.replace(/^\uFEFF/,"");if(t.length>65536)break}return t.replace(/^\uFEFF/,"")}async function Q(e){let t=await H(e.connection.filePath),i=Array.from(new Set([e.connection.delimiter,...L])).map(e=>({count:function(e,t){if(1!==t.length)return e.split(t).length-1;let i=0,r=!1,n=0;for(let o=0;o<e.length;o+=1){let s=e[o],a=e[o+1];if('"'===s&&'"'===a){o+=1;continue}if('"'===s&&"\\"!==e[o-1]){r=!r;continue}!r&&("{"===s||"["===s?n+=1:("}"===s||"]"===s)&&n>0&&(n-=1)),r||0!==n||s!==t||(i+=1)}return i}(t,e),delimiter:e})).sort((e,t)=>t.count-e.count)[0];return i&&i.count>0?i.delimiter:e.connection.delimiter}function K(e,t){return(0,l.createReadStream)(e.connection.filePath).pipe(w({bom:!0,delimiter:t,relax_column_count:!0,relax_quotes:!0,skip_empty_lines:!0}))}async function W(e,t=50){await z(e.connection.filePath);let i=null,r=null,n=!1,o=[],a=await Q(e),l=0;function u(e){l+=1,o.length<t&&o.push(e)}for await(let t of K(e,a)){let e=t.map(e=>String(e??""));if(!i){if(!r){r=e;continue}let t=U(r,e);n=t,i=t?F(r):V(r.length),t||u(r),u(e);continue}u(e)}if(!i){if(!r)throw new s.BadRequestError("CSV file is empty.");let e=U(r,null);n=e,i=e?F(r):V(r.length),e||u(r)}return{delimiter:a,filePath:e.connection.filePath,hasHeaderRow:n,headers:i,rowCount:l,sampleRows:o}}function G(e){return/^(true|false|1|0|yes|no)$/i.test(e)}function X(e){return Number.isFinite(Number(e))}function Y(e){return!!/[-/:T ]/.test(e)&&!Number.isNaN(new Date(e).getTime())}function Z(e){return{dataType:e.dataType,isNullable:e.isNullable,label:e.label,maxLength:e.maxLength,name:e.fieldRef,payloadKindHint:M(e),presentationKind:$(e),valueType:e.valueType}}async function ee({hasHeaderRow:e,page:t,pageSize:i,source:r,table:n}){let o=[],s=[...n.fields].sort((e,t)=>e.ordinal-t.ordinal),a=(t-1)*i,l=a+i,u=0,d=!0,f=await Q(r);for await(let t of K(r,f)){if(d&&e){d=!1;continue}if(d=!1,u>=a&&u<l&&o.push(Object.fromEntries(s.map(e=>[e.fieldRef,function(e,t){let i=e?.trim()??"";if(!i)return null;if("boolean"===t.valueType)return!!/^(true|1|yes)$/i.test(i)||!/^(false|0|no)$/i.test(i)&&null;if("number"===t.valueType){let e=Number(i);return Number.isFinite(e)?e:null}if("datetime"===t.valueType){let e=new Date(i);return Number.isNaN(e.getTime())?i:e.toISOString()}return e??null}(t[e.ordinal-1],e)]))),(u+=1)>=l)break}return o}async function et(t){if("windows"===t)try{let t=await e.A(11817);return t.default??t}catch{throw new s.ConfigurationError("Windows Authentication requires the msnodesqlv8 driver to be installed.",["msnodesqlv8"])}let i=await e.A(75106);return i.default??i}function ei(e){return JSON.stringify(e)}async function er(e){let t=await et(e.authMode),i=t.ConnectionPool.parseConnectionString(e.connectionString);return new t.ConnectionPool((i.requestTimeout=e.requestTimeoutMs,!i.options&&(i.options={}),i.options.instanceName&&i.server?.endsWith("\\")&&(i.server=i.server.slice(0,-1)),"windows"===e.authMode?(i.driver=e.odbcDriver||"ODBC Driver 17 for SQL Server",i.options.trustedConnection=!0,"boolean"!=typeof i.options.trustServerCertificate&&(i.options.trustServerCertificate=!0),"boolean"!=typeof i.options.encrypt&&(i.options.encrypt=!1)):"boolean"!=typeof i.options.encrypt&&(i.options.encrypt=!0),i)).connect()}async function en(t){let i=ei(t);e.g.__logManagerMssqlPools||(e.g.__logManagerMssqlPools=new Map);let r=e.g.__logManagerMssqlPools.get(i);if(r)return r;let n=er(t).catch(t=>{throw e.g.__logManagerMssqlPools?.delete(i),t});return e.g.__logManagerMssqlPools.set(i,n),n}async function eo(e){return(await en(e)).request()}async function es(t){let i=ei(t),r=e.g.__logManagerMssqlPools?.get(i);if(r){e.g.__logManagerMssqlPools?.delete(i);try{let e=await r;await e.close()}catch{}}}function ea(e){if("mssql"!==e.type)throw Error("The MSSQL adapter received a non-MSSQL source.");return e}function el(e){return`[${e.replaceAll("]","]]")}]`}function eu(e){return`${el(e.schema)}.${el(e.name)}`}function ed(e){if(null==e)return null;if("boolean"==typeof e)return e;if("number"==typeof e)return 0!==e;if("bigint"==typeof e)return e!==BigInt(0);let t=String(e).trim().toLowerCase();return"1"===t||"true"===t||"0"!==t&&"false"!==t&&null}function ef(e){if(null==e)return null;if("number"==typeof e)return Number.isFinite(e)?e:null;if("bigint"==typeof e)return Number(e);let t=Number(e);return Number.isFinite(t)?t:null}function ec(e){return null==e?null:String(e)}function em(e){return/binary|image|rowversion|timestamp/i.test(e)}function ep(e){return em(e.dataType)?`DATALENGTH(${el(e.fieldRef)})`:/xml|text|ntext|sql_variant/i.test(e.dataType)?`TRY_CONVERT(nvarchar(4000), ${el(e.fieldRef)})`:el(e.fieldRef)}function eh(e){return{dataType:e.dataType,isNullable:e.isNullable,label:e.label,maxLength:e.maxLength,name:e.fieldRef,payloadKindHint:M(e),presentationKind:$(e),valueType:e.valueType}}async function e_(e,t){let i=t.fields.filter(e=>/(request|response|json|xml|payload|body|message|description|time|id|status|error)/i.test(e.fieldRef)).slice(0,10);if(!i.length)return t;let r=await eo(e.connection),n=t.fields.find(e=>/event|created|time|date/i.test(e.fieldRef))??t.fields.find(e=>/id$/i.test(e.fieldRef)),o=i.map(e=>`${el(e.fieldRef)} AS ${el(e.fieldRef)}`).join(", "),s=n?`ORDER BY ${el(n.fieldRef)} DESC`:"",a=(await r.query(`
2
+ SELECT TOP (5) ${o}
3
+ FROM ${el(t.schema)}.${el(t.name)}
4
+ ${s};
5
+ `)).recordset??[],l=new Map;for(let e of i)l.set(e.fieldRef,a.map(t=>ec(t[e.fieldRef])).filter(e=>!!e).slice(0,5));return{...t,fields:t.fields.map(e=>j({...e,sampleValues:l.get(e.fieldRef)??e.sampleValues})),sampleSize:a.length}}function eg(e){let t={supportedAuthModes:[],supportedPayloadKinds:["json","xml","text"],supportsRowDeletion:!1,supportsSchemaDiscovery:!1};function i(){return Promise.reject(new s.ConfigurationError(`${e} support is not implemented in this version yet.`))}return{deleteTableRows:i,discoverSchema:i,getCapabilities:()=>t,listTableRows:i,testConnection:i}}let eb={csv:{async deleteTableRows(){throw new s.BadRequestError("CSV sources are read-only and do not support deleting rows.")},async discoverSchema(e){var t;let i,r,n=q(e),o=n.id;if(!o)throw Error("CSV discovery requires a saved source.");let s=await W(n),a=(t=s.filePath,i=(0,d.basename)(t),((r=(0,d.extname)(i))?i.slice(0,-r.length):i).trim()||"CsvSource"),l=C(o,[{approxRowCount:s.rowCount,candidateReasons:[],candidateScore:0,fields:s.headers.map(e=>{let t,i=s.sampleRows.map(t=>t[e.ordinal-1]??"").filter(e=>e.trim()).slice(0,5),r=(t=s.sampleRows.map(t=>t[e.ordinal-1]??"").map(e=>e.trim()).filter(Boolean)).length?t.every(G)?"boolean":t.every(X)?"number":t.every(Y)?"datetime":"string":"string",n=i.length?Math.max(...i.map(e=>e.length)):null;return j({dataType:function(e){switch(e){case"boolean":return"boolean";case"datetime":return"datetime";case"number":return"number";default:return"text"}}(r),fieldRef:e.fieldRef,isNullable:s.sampleRows.some(t=>!(t[e.ordinal-1]??"").trim()),label:e.label,maxLength:n,ordinal:e.ordinal,sampleValues:i,valueType:r})}),indexes:[],name:a,qualifiedName:`csv.${a}`,sampleSize:s.sampleRows.length,schema:"csv"}]);return{candidates:x(o,l),createdAt:new Date().toISOString(),databaseName:(0,d.basename)(s.filePath),sourceId:o,tables:l}},getCapabilities:()=>({supportedAuthModes:[],supportedPayloadKinds:["json","xml","text"],supportsRowDeletion:!1,supportsSchemaDiscovery:!0}),async listTableRows(e,t,i){let r=q(e),n=await W(r,0),o=Math.max(1,i.page),s=Math.min(100,Math.max(1,i.pageSize)),a=Math.max(1,Math.ceil(n.rowCount/s)),l=0===n.rowCount?1:Math.min(o,a),u=[...t.fields].sort((e,t)=>e.ordinal-t.ordinal),d=await ee({hasHeaderRow:n.hasHeaderRow,page:l,pageSize:s,source:r,table:t});return{columns:u.map(Z),hasNextPage:l<a,hasPreviousPage:l>1,page:l,pageSize:s,rows:d,total:n.rowCount}},async testConnection(e){let t=q(e);return await W(t,1),{capabilities:this.getCapabilities(),databaseName:(0,d.basename)(t.connection.filePath),message:"CSV file is readable.",ok:!0,serverVersion:null}}},mongodb:eg("mongodb"),mssql:{async deleteTableRows(e,t){let i=ea(e),r={...i.connection,requestTimeoutMs:Math.max(i.connection.requestTimeoutMs,12e4)},n=0;for(;;){let e=await eo(r);e.input("batchSize",5e3);let i=await e.query(`
6
+ DELETE TOP (@batchSize)
7
+ FROM ${eu(t)};
8
+
9
+ SELECT @@ROWCOUNT AS DeletedRowCount;
10
+ `),o=ef(i.recordset?.[0]?.DeletedRowCount)??i.rowsAffected?.[0]??0;if(n+=o,0===o)break}return{deletedRowCount:n}},async discoverSchema(e){let t=ea(e),i=await eo(t.connection),r=await i.query(`
8
11
  SELECT DB_NAME() AS DatabaseName;
9
12
 
10
13
  SELECT
@@ -61,19 +64,19 @@ module.exports=[8595,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule"
61
64
  WHERE t.is_ms_shipped = 0
62
65
  AND i.index_id > 0
63
66
  ORDER BY s.name, t.name, i.name, ic.key_ordinal;
64
- `),i=A(r.recordsets[0]?.[0]?.DatabaseName),n=r.recordsets[1]??[],a=r.recordsets[2]??[],o=r.recordsets[3]??[],l=new Map,s=new Map,u=new Map;for(let e of a)s.set(`${e.SchemaName}.${e.TableName}`,j(e.ApproxRowCount)??0);for(let e of o){let t=`${e.SchemaName}.${e.TableName}`,r=u.get(t)??new Map,i=A(e.IndexName)??"UnnamedIndex",n=r.get(i)??{columns:[],isUnique:N(e.IsUnique)??!1,name:i,type:A(e.IndexType)??"UNKNOWN"},a=A(e.ColumnName);a&&n.columns.push(a),r.set(i,n),u.set(t,r)}for(let e of n){let t=A(e.SchemaName)??"dbo",r=A(e.TableName)??"UnknownTable",i=`${t}.${r}`,n=l.get(i)??{approxRowCount:s.get(i)??0,candidateReasons:[],candidateScore:0,fields:[],indexes:Array.from(u.get(i)?.values()??[]),name:r,qualifiedName:i,sampleSize:0,schema:t},a=T({dataType:A(e.DataType)??"nvarchar",fieldRef:A(e.ColumnName)??"UnknownColumn",isNullable:N(e.IsNullable)??!1,label:A(e.ColumnName)??"Unknown Column",maxLength:j(e.MaxLength),ordinal:j(e.ColumnOrdinal)??n.fields.length+1,sampleValues:[],valueType:function(e){let t,r;return t=e.trim().toLowerCase(),r=f.find(e=>e.dataTypes.includes(t)),r?.valueType??"string"}(A(e.DataType)??"nvarchar")});n.fields.push({...a,label:a.label.replace(/([a-z\d])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ")}),l.set(i,n)}let d=Array.from(l.values()).sort((e,t)=>t.approxRowCount-e.approxRowCount),p=v(e.id,d),m=p.slice(0,6).map(e=>e.qualifiedName);d=await Promise.all(p.map(t=>m.includes(t.qualifiedName)?P(e,t):Promise.resolve(t)));let b=v(e.id,d);return{candidates:function(e,t){let r=[];for(let i of t){let t=R(e,i);t&&r.push(t.candidate)}return r.sort((e,t)=>t.score-e.score)}(e.id,b),createdAt:new Date().toISOString(),databaseName:i,sourceId:e.id,tables:b}},getCapabilities:()=>({supportedAuthModes:["sql","windows"],supportedPayloadKinds:["json","xml","text"],supportsSchemaDiscovery:!0}),async listTableRows(e,t,r){let i=[...t.fields].sort((e,t)=>e.ordinal-t.ordinal);if(!i.length)return{columns:[],hasNextPage:!1,hasPreviousPage:r.page>1,page:r.page,pageSize:r.pageSize,rows:[],total:0};let n=Math.max(1,r.page),a=Math.min(100,Math.max(1,r.pageSize)),o=await c(e.connection),l=await o.query(`
67
+ `),n=ec(r.recordsets[0]?.[0]?.DatabaseName),o=r.recordsets[1]??[],s=r.recordsets[2]??[],a=r.recordsets[3]??[],l=new Map,u=new Map,d=new Map;for(let e of s)u.set(`${e.SchemaName}.${e.TableName}`,ef(e.ApproxRowCount)??0);for(let e of a){let t=`${e.SchemaName}.${e.TableName}`,i=d.get(t)??new Map,r=ec(e.IndexName)??"UnnamedIndex",n=i.get(r)??{columns:[],isUnique:ed(e.IsUnique)??!1,name:r,type:ec(e.IndexType)??"UNKNOWN"},o=ec(e.ColumnName);o&&n.columns.push(o),i.set(r,n),d.set(t,i)}for(let e of o){let t=ec(e.SchemaName)??"dbo",i=ec(e.TableName)??"UnknownTable",r=`${t}.${i}`,n=l.get(r)??{approxRowCount:u.get(r)??0,candidateReasons:[],candidateScore:0,fields:[],indexes:Array.from(d.get(r)?.values()??[]),name:i,qualifiedName:r,sampleSize:0,schema:t},o=j({dataType:ec(e.DataType)??"nvarchar",fieldRef:ec(e.ColumnName)??"UnknownColumn",isNullable:ed(e.IsNullable)??!1,label:ec(e.ColumnName)??"Unknown Column",maxLength:ef(e.MaxLength),ordinal:ef(e.ColumnOrdinal)??n.fields.length+1,sampleValues:[],valueType:function(e){let t,i;return t=e.trim().toLowerCase(),i=S.find(e=>e.dataTypes.includes(t)),i?.valueType??"string"}(ec(e.DataType)??"nvarchar")});n.fields.push({...o,label:o.label.replace(/([a-z\d])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ")}),l.set(r,n)}let f=Array.from(l.values()).sort((e,t)=>t.approxRowCount-e.approxRowCount),c=C(e.id,f),m=c.slice(0,6).map(e=>e.qualifiedName);f=await Promise.all(c.map(e=>m.includes(e.qualifiedName)?e_(t,e):Promise.resolve(e)));let p=C(e.id,f);return{candidates:x(e.id,p),createdAt:new Date().toISOString(),databaseName:n,sourceId:e.id,tables:p}},getCapabilities:()=>({supportedAuthModes:["sql","windows"],supportedPayloadKinds:["json","xml","text"],supportsRowDeletion:!0,supportsSchemaDiscovery:!0}),async listTableRows(e,t,i){let r=ea(e),n=[...t.fields].sort((e,t)=>e.ordinal-t.ordinal);if(!n.length)return{columns:[],hasNextPage:!1,hasPreviousPage:i.page>1,page:i.page,pageSize:i.pageSize,rows:[],total:0};let o=Math.max(1,i.page),s=Math.min(100,Math.max(1,i.pageSize)),a=await eo(r.connection),l=await a.query(`
65
68
  SELECT COUNT_BIG(1) AS TotalCount
66
- FROM ${O(t)};
67
- `),s=j(l.recordset[0]?.TotalCount)??0,u=Math.max(1,Math.ceil(s/a)),d=0===s?1:Math.min(n,u),f=await c(e.connection);f.input("offset",(d-1)*a),f.input("pageSize",a);let p=function(e){let t=Array.from(new Set(e.indexes.filter(e=>e.isUnique).flatMap(e=>e.columns))),r=[...e.fields].sort((e,t)=>e.ordinal-t.ordinal),i=r.find(e=>"datetime"===e.valueType||/event|created|updated|timestamp|time|date/i.test(e.fieldRef))??null;if(i)return{direction:"desc",fieldRef:i.fieldRef,tieBreakers:t.filter(e=>e!==i.fieldRef)};let n=r.find(e=>t.includes(e.fieldRef)&&/(^id$|id$|guid|uuid|key$)/i.test(e.fieldRef))??r.find(e=>/(^id$|id$|guid|uuid|key$)/i.test(e.fieldRef))??r.find(e=>t.includes(e.fieldRef))??r[0]??null;return n?{direction:/(^id$|id$|guid|uuid|key$)/i.test(n.fieldRef)?"desc":"asc",fieldRef:n.fieldRef,tieBreakers:t.filter(e=>e!==n.fieldRef)}:{direction:"asc",fieldRef:"",tieBreakers:[]}}(t),m=new Map(i.map(e=>[e.fieldRef,e])),b=[`${C(m.get(p.fieldRef)??i[0])} ${"desc"===p.direction?"DESC":"ASC"}`,...p.tieBreakers.map(e=>{let t=m.get(e);return`${C(t??i[0])} ASC`})],y=i.map(e=>`${E(e.fieldRef)} AS ${E(e.fieldRef)}`).join(",\n "),g=((await f.query(`
69
+ FROM ${eu(t)};
70
+ `),u=ef(l.recordset[0]?.TotalCount)??0,d=Math.max(1,Math.ceil(u/s)),f=0===u?1:Math.min(o,d),c=await eo(r.connection);c.input("offset",(f-1)*s),c.input("pageSize",s);let m=function(e){let t=Array.from(new Set(e.indexes.filter(e=>e.isUnique).flatMap(e=>e.columns))),i=[...e.fields].sort((e,t)=>e.ordinal-t.ordinal),r=i.find(e=>"datetime"===e.valueType||/event|created|updated|timestamp|time|date/i.test(e.fieldRef))??null;if(r)return{direction:"desc",fieldRef:r.fieldRef,tieBreakers:t.filter(e=>e!==r.fieldRef)};let n=i.find(e=>t.includes(e.fieldRef)&&/(^id$|id$|guid|uuid|key$)/i.test(e.fieldRef))??i.find(e=>/(^id$|id$|guid|uuid|key$)/i.test(e.fieldRef))??i.find(e=>t.includes(e.fieldRef))??i[0]??null;return n?{direction:/(^id$|id$|guid|uuid|key$)/i.test(n.fieldRef)?"desc":"asc",fieldRef:n.fieldRef,tieBreakers:t.filter(e=>e!==n.fieldRef)}:{direction:"asc",fieldRef:"",tieBreakers:[]}}(t),p=new Map(n.map(e=>[e.fieldRef,e])),h=[`${ep(p.get(m.fieldRef)??n[0])} ${"desc"===m.direction?"DESC":"ASC"}`,...m.tieBreakers.map(e=>{let t=p.get(e);return`${ep(t??n[0])} ASC`})],_=n.map(e=>`${el(e.fieldRef)} AS ${el(e.fieldRef)}`).join(",\n "),g=((await c.query(`
68
71
  SELECT
69
- ${y}
70
- FROM ${O(t)}
71
- ORDER BY ${b.join(", ")}
72
+ ${_}
73
+ FROM ${eu(t)}
74
+ ORDER BY ${h.join(", ")}
72
75
  OFFSET @offset ROWS FETCH NEXT @pageSize ROWS ONLY;
73
- `)).recordset??[]).map(e=>Object.fromEntries(i.map(t=>[t.fieldRef,function(e,t){if(null==e)return null;if(x(t.dataType)){let t=Buffer.isBuffer(e)||e instanceof Uint8Array?e.byteLength:null;return null===t?"[binary]":`[binary ${t} bytes]`}if("boolean"===t.valueType)return N(e);if("number"===t.valueType)return j(e);if("datetime"===t.valueType){if(e instanceof Date)return e.toISOString();if("string"==typeof e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toISOString()}return null}if("object"==typeof e)try{return JSON.stringify(e)}catch{return"[object]"}return A(e)}(e[t.fieldRef],t)])));return{columns:i.map(I),hasNextPage:d<u,hasPreviousPage:d>1,page:d,pageSize:a,rows:g,total:s}},async testConnection(e){let t=await c(e.connection),r=(await t.query(`
76
+ `)).recordset??[]).map(e=>Object.fromEntries(n.map(t=>[t.fieldRef,function(e,t){if(null==e)return null;if(em(t.dataType)){let t=Buffer.isBuffer(e)||e instanceof Uint8Array?e.byteLength:null;return null===t?"[binary]":`[binary ${t} bytes]`}if("boolean"===t.valueType)return ed(e);if("number"===t.valueType)return ef(e);if("datetime"===t.valueType){if(e instanceof Date)return e.toISOString();if("string"==typeof e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toISOString()}return null}if("object"==typeof e)try{return JSON.stringify(e)}catch{return"[object]"}return ec(e)}(e[t.fieldRef],t)])));return{columns:n.map(eh),hasNextPage:f<d,hasPreviousPage:f>1,page:f,pageSize:s,rows:g,total:u}},async testConnection(e){let t=await eo(ea(e).connection),i=(await t.query(`
74
77
  SELECT
75
78
  DB_NAME() AS DatabaseName,
76
79
  CAST(SERVERPROPERTY('ProductVersion') AS nvarchar(128)) AS ServerVersion;
77
- `)).recordset[0]??{};return{capabilities:this.getCapabilities(),databaseName:A(r.DatabaseName),message:"Connection to SQL Server succeeded.",ok:!0,serverVersion:A(r.ServerVersion)}}},mysql:M("mysql"),postgres:M("postgres")};function D(){return Object.keys(L)}var z=e.i(97528),$=e.i(69719);let q=$.z.object({connection:$.z.object({authMode:$.z.enum(["sql","windows"]).default("sql"),connectionString:$.z.string().trim().min(1),odbcDriver:$.z.string().trim().nullable().optional().default(null),requestTimeoutMs:$.z.coerce.number().int().positive().max(12e4).default(3e4)}),name:$.z.string().trim().min(1).max(120),type:$.z.literal("mssql")}),F=$.z.object({fieldRef:$.z.string().trim().min(1),filterable:$.z.boolean(),filterInput:$.z.enum(["text","boolean"]).nullable(),format:$.z.enum(["text","datetime","durationMs","boolean","status"]),id:$.z.string().trim().min(1).max(80),label:$.z.string().trim().min(1).max(120),showInDetail:$.z.boolean(),showInList:$.z.boolean(),valueType:$.z.enum(["string","number","boolean","datetime"])}),B=$.z.object({fieldRef:$.z.string().trim().min(1),group:$.z.enum(["request","response","other"]),id:$.z.string().trim().min(1).max(80),kind:$.z.enum(["json","xml","text"]),label:$.z.string().trim().min(1).max(120)}),U=$.z.object({defaultSort:$.z.object({direction:$.z.enum(["asc","desc"]),fieldRef:$.z.string().trim().min(1)}),descriptionFieldId:$.z.string().trim().min(1).nullable(),fields:$.z.array(F).min(1),payloads:$.z.array(B),recordIdFieldRef:$.z.string().trim().min(1),sourceId:$.z.string().trim().min(1),statusFieldId:$.z.string().trim().min(1).nullable(),target:$.z.object({name:$.z.string().trim().min(1),qualifiedName:$.z.string().trim().min(1),schema:$.z.string().trim().min(1)}),timestampFieldRef:$.z.string().trim().min(1),titleFieldId:$.z.string().trim().min(1).nullable(),version:$.z.literal(1)});$.z.object({mapping:U});let K=$.z.object({page:$.z.coerce.number().int().min(1).catch(1).default(1),pageSize:$.z.coerce.number().int().min(1).max(100).catch(50).default(50),table:$.z.string().trim().min(1).nullable().optional().catch(null).default(null)}),k=$.z.object({confirmationTable:$.z.string().trim().min(1),pageSize:$.z.coerce.number().int().min(1).max(100).catch(50).default(50),table:$.z.string().trim().min(1)});async function H(){return(0,z.getActiveSource)()}async function V(){let e=await H();if(!e)throw new o.ConfigurationError("No active source is configured yet. Configure one from Source Admin.",["source_admin"]);return e}function J(e){return[...e].sort((e,t)=>e.schema.localeCompare(t.schema)||e.name.localeCompare(t.name))}function W(e){return{approxRowCount:e.approxRowCount,fieldCount:e.fields.length,name:e.name,qualifiedName:e.qualifiedName,schema:e.schema}}function X(e){return e.fields.map(e=>({dataType:e.dataType,isNullable:e.isNullable,label:e.label,maxLength:e.maxLength,name:e.fieldRef,payloadKindHint:w(e),presentationKind:S(e),valueType:e.valueType}))}function Y(e,t){let r=e.find(e=>e.qualifiedName===t);if(!r)throw new o.BadRequestError("The requested table is no longer available in the current discovery snapshot.");return r}function Z({databaseLabel:e,latestDiscoveryAt:t,source:r,sourceSummary:i,tables:n}){let a=J(n).map(W);return{databaseLabel:e||r.name,defaultSelectedTable:a[0]?.qualifiedName??null,latestDiscoveryAt:t,source:i,tables:a}}function G(e){let t=e instanceof Error?e.message.toLowerCase():"";return t.includes("invalid object name")||t.includes("could not find object")||t.includes("does not exist")}async function Q(){let e=await V(),t=(0,z.getActiveMapping)(e.id);if(!t)throw new o.ConfigurationError("An admin must confirm a source mapping before browsing discovered tables.",["source_mappings"]);let r=(0,z.getLatestDiscovery)(e.id);if(!r)throw new o.ConfigurationError("Run source discovery before browsing discovered tables.",["source_discoveries"]);return{adapter:L[e.type],discovery:r,mapping:t,source:e,sourceSummary:function(e){let t=(0,z.getActiveSourceSummary)();if(!t||t.id!==e.id)throw new o.ConfigurationError("The active source summary is unavailable.");return t}(e)}}async function ee(){let e=await H();if(!e)return{dashboard:null,discovery:null,mapping:null,source:null,supportedDatabaseKinds:D()};let t=(0,z.getActiveMapping)(e.id);return{dashboard:t?_(e,t):null,discovery:(0,z.getLatestDiscovery)(e.id),mapping:t,source:(0,z.getActiveSourceSummary)(),supportedDatabaseKinds:D()}}async function et(){let e=await Q();return Z({databaseLabel:e.discovery.databaseName??e.source.name,latestDiscoveryAt:e.discovery.createdAt,source:e.source,sourceSummary:e.sourceSummary,tables:e.discovery.tables})}async function er(e){let t=K.parse(e),r=await Q(),{selectedTable:i,staleSelection:n}=function(e,t){let r=e[0]??null;if(!t)return{selectedTable:r,staleSelection:!1};let i=e.find(e=>e.qualifiedName===t)??r;return{selectedTable:i,staleSelection:i?.qualifiedName!==t}}(J(r.discovery.tables),t.table),a=r.discovery.databaseName??r.source.name;if(!i)return{columns:[],databaseLabel:a,hasNextPage:!1,hasPreviousPage:!1,latestDiscoveryAt:r.discovery.createdAt,page:t.page,pageSize:t.pageSize,requestedTable:t.table,rows:[],selectedTable:null,source:r.sourceSummary,staleSelection:!!t.table,total:0};try{return{...await r.adapter.listTableRows(r.source,i,t),databaseLabel:a,latestDiscoveryAt:r.discovery.createdAt,requestedTable:t.table,selectedTable:W(i),source:r.sourceSummary,staleSelection:n}}catch(e){if(!G(e))throw e;return{columns:X(i),databaseLabel:a,hasNextPage:!1,hasPreviousPage:t.page>1,latestDiscoveryAt:r.discovery.createdAt,page:t.page,pageSize:t.pageSize,requestedTable:t.table,rows:[],selectedTable:W(i),source:r.sourceSummary,staleSelection:!0,total:0}}}async function ei(e){let t=k.parse(e),r=await Q(),i=Y(J(r.discovery.tables),t.table),n=r.discovery.databaseName??r.source.name;if(t.confirmationTable!==i.qualifiedName)throw new o.BadRequestError("Type the exact qualified table name to confirm deletion.");let a=0;try{a=(await r.adapter.deleteTableRows(r.source,i)).deletedRowCount}catch(e){if(!G(e))throw e;throw new o.BadRequestError("The requested table is no longer available in the source database.")}let s={...r.discovery,tables:r.discovery.tables.map(e=>e.qualifiedName===i.qualifiedName?{...e,approxRowCount:0}:e)};(0,z.updateLatestDiscovery)(r.source.id,s),l();let u=Y(s.tables,i.qualifiedName),d=W(u);return{browser:Z({databaseLabel:n,latestDiscoveryAt:s.createdAt,source:r.source,sourceSummary:r.sourceSummary,tables:s.tables}),deletedRowCount:a,preview:{columns:X(u),databaseLabel:n,hasNextPage:!1,hasPreviousPage:!1,latestDiscoveryAt:s.createdAt,page:1,pageSize:t.pageSize,requestedTable:t.table,rows:[],selectedTable:d,source:r.sourceSummary,staleSelection:!1,total:0},table:d}}async function en(e){let t=q.parse(e);return L[t.type].testConnection(t)}async function ea(e){let t=q.parse(e),r=L[t.type];await r.testConnection(t);let i=(0,z.upsertActiveSource)(t);(0,z.clearActiveMapping)(i.id);let n=await r.discoverSchema(i);return(0,z.saveDiscovery)(i.id,n),l(),{discovery:n,source:(0,z.getActiveSourceSummary)()}}async function eo(e){let t=await V(),r=U.parse("object"==typeof e&&null!==e&&"mapping"in e?e.mapping:e);if(r.sourceId!==t.id)throw new o.ConfigurationError("The submitted mapping does not match the active source.");return(0,z.saveActiveMapping)(t.id,r),l(),{dashboard:_(t,r),mapping:r,source:(0,z.getActiveSourceSummary)()}}e.s(["deleteAdminTableRows",0,ei,"discoverSource",0,ea,"getAdminTableBrowserState",0,et,"getAdminTablePreview",0,er,"getSourceAdminState",0,ee,"testSourceConnection",0,en,"updateSourceMapping",0,eo],43471)}];
80
+ `)).recordset[0]??{};return{capabilities:this.getCapabilities(),databaseName:ec(i.DatabaseName),message:"Connection to SQL Server succeeded.",ok:!0,serverVersion:ec(i.ServerVersion)}}},mysql:eg("mysql"),postgres:eg("postgres")};function ey(){return["mssql","csv"]}var ev=e.i(97528),ew=e.i(69719);let eS=ew.z.object({authMode:ew.z.enum(["sql","windows"]).default("sql"),connectionString:ew.z.string().trim().min(1),odbcDriver:ew.z.string().trim().nullable().optional().default(null),requestTimeoutMs:ew.z.coerce.number().int().positive().max(12e4).default(3e4)}),eR=eS.extend({connectionString:ew.z.string().trim().optional().default("")}),eO=ew.z.object({delimiter:ew.z.string().min(1).max(8).default(","),encoding:ew.z.literal("utf8").default("utf8"),filePath:ew.z.string().trim().min(1),hasHeaderRow:ew.z.literal(!0).default(!0)}),eN=ew.z.discriminatedUnion("type",[ew.z.object({connection:eS,id:ew.z.string().trim().min(1).optional(),name:ew.z.string().trim().min(1).max(120),type:ew.z.literal("mssql")}),ew.z.object({connection:eO,id:ew.z.string().trim().min(1).optional(),name:ew.z.string().trim().min(1).max(120),type:ew.z.literal("csv")})]),eI=ew.z.discriminatedUnion("type",[ew.z.object({connection:eR,id:ew.z.string().trim().min(1).optional(),name:ew.z.string().trim().min(1).max(120),type:ew.z.literal("mssql")}),ew.z.object({connection:eO,id:ew.z.string().trim().min(1).optional(),name:ew.z.string().trim().min(1).max(120),type:ew.z.literal("csv")})]),eE=ew.z.object({sourceId:ew.z.string().trim().min(1)}),eT=eE.extend({confirmationName:ew.z.string().trim().min(1)}),eC=ew.z.object({fieldRef:ew.z.string().trim().min(1),filterable:ew.z.boolean(),filterInput:ew.z.enum(["text","boolean"]).nullable(),format:ew.z.enum(["text","datetime","durationMs","boolean","status"]),id:ew.z.string().trim().min(1).max(80),label:ew.z.string().trim().min(1).max(120),showInDetail:ew.z.boolean(),showInList:ew.z.boolean(),valueType:ew.z.enum(["string","number","boolean","datetime"])}),ex=ew.z.object({fieldRef:ew.z.string().trim().min(1),group:ew.z.enum(["request","response","other"]),id:ew.z.string().trim().min(1).max(80),kind:ew.z.enum(["json","xml","text"]),label:ew.z.string().trim().min(1).max(120)}),eA=ew.z.object({defaultSort:ew.z.object({direction:ew.z.enum(["asc","desc"]),fieldRef:ew.z.string().trim().min(1)}),descriptionFieldId:ew.z.string().trim().min(1).nullable(),fields:ew.z.array(eC).min(1),payloads:ew.z.array(ex),recordIdFieldRef:ew.z.string().trim().min(1),sourceId:ew.z.string().trim().min(1),statusFieldId:ew.z.string().trim().min(1).nullable(),target:ew.z.object({name:ew.z.string().trim().min(1),qualifiedName:ew.z.string().trim().min(1),schema:ew.z.string().trim().min(1)}),timestampFieldRef:ew.z.string().trim().min(1),titleFieldId:ew.z.string().trim().min(1).nullable(),version:ew.z.literal(1)});ew.z.object({mapping:eA});let eD=ew.z.object({page:ew.z.coerce.number().int().min(1).catch(1).default(1),pageSize:ew.z.coerce.number().int().min(1).max(100).catch(50).default(50),table:ew.z.string().trim().min(1).nullable().optional().catch(null).default(null)}),ej=ew.z.object({confirmationTable:ew.z.string().trim().min(1),pageSize:ew.z.coerce.number().int().min(1).max(100).catch(50).default(50),table:ew.z.string().trim().min(1)});async function e$(){return(0,ev.getActiveSource)()}function eM(e){return"csv"===e.type?{...e,connection:{...e.connection,filePath:P(e.connection.filePath)}}:e}function eL(e){if("object"==typeof e&&null!==e&&"sourceId"in e){let{sourceId:t}=eE.parse(e),i=(0,ev.getSourceById)(t);if(!i)throw new s.BadRequestError("The requested source was not found.");return i}return null}function eP(e){let t=eI.parse(e);if("csv"===t.type)return eM(t);let i=t.id?(0,ev.getSourceById)(t.id):null,r=t.connection.connectionString.trim()||(i?.type==="mssql"?i.connection.connectionString:"");if(!r)throw new s.BadRequestError("MSSQL connection string is required.");return{...t,connection:{...t.connection,connectionString:r}}}async function eq(e,t){e?.type!=="mssql"||t&&"mssql"===t.type&&JSON.stringify(e.connection)===JSON.stringify(t.connection)||await es(e.connection)}async function ez(){let e=await e$();if(!e)throw new s.ConfigurationError("No active source is configured yet. Configure one from Source Admin.",["source_admin"]);return e}function eB(e){return[...e].sort((e,t)=>e.schema.localeCompare(t.schema)||e.name.localeCompare(t.name))}function eF(e){return{approxRowCount:e.approxRowCount,fieldCount:e.fields.length,name:e.name,qualifiedName:e.qualifiedName,schema:e.schema}}function eV(e){return e.fields.map(e=>({dataType:e.dataType,isNullable:e.isNullable,label:e.label,maxLength:e.maxLength,name:e.fieldRef,payloadKindHint:M(e),presentationKind:$(e),valueType:e.valueType}))}function eJ(e,t){let i=e.find(e=>e.qualifiedName===t);if(!i)throw new s.BadRequestError("The requested table is no longer available in the current discovery snapshot.");return i}function ek({databaseLabel:e,latestDiscoveryAt:t,source:i,sourceCapabilities:r,sourceSummary:n,tables:o}){let s=eB(o).map(eF);return{databaseLabel:e||i.name,defaultSelectedTable:s[0]?.qualifiedName??null,latestDiscoveryAt:t,source:n,sourceCapabilities:r,tables:s}}function eU(e){let t=e instanceof Error?e.message.toLowerCase():"";return t.includes("invalid object name")||t.includes("could not find object")||t.includes("does not exist")}async function eH(){let e=await ez(),t=(0,ev.getActiveMapping)(e.id);if(!t)throw new s.ConfigurationError("An admin must confirm a source mapping before browsing discovered tables.",["source_mappings"]);let i=(0,ev.getLatestDiscovery)(e.id);if(!i)throw new s.ConfigurationError("Run source discovery before browsing discovered tables.",["source_discoveries"]);return{adapter:eb[e.type],discovery:i,mapping:t,source:e,sourceSummary:(0,ev.getSourceSummary)(e)}}async function eQ(){let e=await e$(),t=(0,ev.listSourceSummaries)(),i=ey(),r=Object.fromEntries(ey().map(e=>[e,eb[e].getCapabilities()]));if(!e)return{activeSourceId:null,adapterCapabilities:r,dashboard:null,discovery:null,mapping:null,source:null,sources:t,supportedDatabaseKinds:i};let n=(0,ev.getActiveMapping)(e.id),o=n?D(e,n):null;return{activeSourceId:e.id,adapterCapabilities:r,dashboard:o,discovery:(0,ev.getLatestDiscovery)(e.id),mapping:n,source:(0,ev.getSourceSummary)(e),sources:t,supportedDatabaseKinds:i}}async function eK(){let e=await eH();return ek({databaseLabel:e.discovery.databaseName??e.source.name,latestDiscoveryAt:e.discovery.createdAt,source:e.source,sourceCapabilities:e.adapter.getCapabilities(),sourceSummary:e.sourceSummary,tables:e.discovery.tables})}async function eW(e){let t=eD.parse(e),i=await eH(),r=eB(i.discovery.tables),n=i.adapter.getCapabilities(),{selectedTable:o,staleSelection:s}=function(e,t){let i=e[0]??null;if(!t)return{selectedTable:i,staleSelection:!1};let r=e.find(e=>e.qualifiedName===t)??i;return{selectedTable:r,staleSelection:r?.qualifiedName!==t}}(r,t.table),a=i.discovery.databaseName??i.source.name;if(!o)return{columns:[],databaseLabel:a,hasNextPage:!1,hasPreviousPage:!1,latestDiscoveryAt:i.discovery.createdAt,page:t.page,pageSize:t.pageSize,requestedTable:t.table,rows:[],selectedTable:null,source:i.sourceSummary,sourceCapabilities:n,staleSelection:!!t.table,total:0};try{return{...await i.adapter.listTableRows(i.source,o,t),databaseLabel:a,latestDiscoveryAt:i.discovery.createdAt,requestedTable:t.table,selectedTable:eF(o),source:i.sourceSummary,sourceCapabilities:n,staleSelection:s}}catch(e){if(!eU(e))throw e;return{columns:eV(o),databaseLabel:a,hasNextPage:!1,hasPreviousPage:t.page>1,latestDiscoveryAt:i.discovery.createdAt,page:t.page,pageSize:t.pageSize,requestedTable:t.table,rows:[],selectedTable:eF(o),source:i.sourceSummary,sourceCapabilities:n,staleSelection:!0,total:0}}}async function eG(e){let t=ej.parse(e),i=await eH(),r=i.adapter.getCapabilities();if(!r.supportsRowDeletion)throw new s.BadRequestError("The active source is read-only and does not support deleting rows.");let n=eJ(eB(i.discovery.tables),t.table),o=i.discovery.databaseName??i.source.name;if(t.confirmationTable!==n.qualifiedName)throw new s.BadRequestError("Type the exact qualified table name to confirm deletion.");let l=0;try{l=(await i.adapter.deleteTableRows(i.source,n)).deletedRowCount}catch(e){if(eU(e))throw new s.BadRequestError("The requested table is no longer available in the source database.");if(e instanceof Error&&["ConnectionError","RequestError","TransactionError"].includes(e.name)){var u;let t,i;throw t=(u=e).message.trim().replace(/\s+/g," ").slice(0,500),i="ConnectionError"===u.name?"The active source could not be reached while deleting rows.":"The source rejected the delete request.",new s.BadRequestError(t?`${i} ${t}`:i)}throw e}let d={...i.discovery,tables:i.discovery.tables.map(e=>e.qualifiedName===n.qualifiedName?{...e,approxRowCount:0}:e)};(0,ev.updateLatestDiscovery)(i.source.id,d),a();let f=eJ(d.tables,n.qualifiedName),c=eF(f);return{browser:ek({databaseLabel:o,latestDiscoveryAt:d.createdAt,source:i.source,sourceCapabilities:r,sourceSummary:i.sourceSummary,tables:d.tables}),deletedRowCount:l,preview:{columns:eV(f),databaseLabel:o,hasNextPage:!1,hasPreviousPage:!1,latestDiscoveryAt:d.createdAt,page:1,pageSize:t.pageSize,requestedTable:t.table,rows:[],selectedTable:c,source:i.sourceSummary,sourceCapabilities:r,staleSelection:!1,total:0},table:c}}async function eX(e){let t,i=(t=eL(e))||eM(eN.parse(e));return eb[i.type].testConnection(i)}async function eY(e){let t=eP(e),i=eb[t.type],r=t.id?(0,ev.getSourceById)(t.id):null;await i.testConnection(t);let n=(0,ev.upsertSource)(t);return await eq(r,n),a(),eQ()}async function eZ(e){let{sourceId:t}=eE.parse(e);if(!(0,ev.switchActiveSource)(t))throw new s.BadRequestError("The requested source was not found.");return a(),eQ()}async function e0(e){let{confirmationName:t,sourceId:i}=eT.parse(e),r=(0,ev.getSourceById)(i);if(!r)throw new s.BadRequestError("The requested source was not found.");if(t!==r.name)throw new s.BadRequestError("Type the exact source name to confirm deletion.");let n=(0,ev.deleteSource)(i);return await eq(r,n?.nextActiveSource??null),a(),eQ()}async function e1(e){let t,i=eL(e);if(i)t=(0,ev.switchActiveSource)(i.id)??i;else{let i=eP(e),r=eb[i.type],n=i.id?(0,ev.getSourceById)(i.id):null;await r.testConnection(i),t=(0,ev.upsertSource)(i),await eq(n,t)}let r=eb[t.type];await r.testConnection(t),(0,ev.clearActiveMapping)(t.id);let n=await r.discoverSchema(t);return(0,ev.saveDiscovery)(t.id,n),a(),eQ()}async function e2(e){let t=await ez(),i=eA.parse("object"==typeof e&&null!==e&&"mapping"in e?e.mapping:e);if(i.sourceId!==t.id)throw new s.ConfigurationError("The submitted mapping does not match the active source.");return(0,ev.saveActiveMapping)(t.id,i),a(),{dashboard:D(t,i),mapping:i,source:(0,ev.getSourceSummary)(t)}}e.s(["deleteAdminTableRows",0,eG,"deleteSource",0,e0,"discoverSource",0,e1,"getAdminTableBrowserState",0,eK,"getAdminTablePreview",0,eW,"getSourceAdminState",0,eQ,"saveSource",0,eY,"switchSource",0,eZ,"testSourceConnection",0,eX,"updateSourceMapping",0,e2],43471)}];
78
81
 
79
82
  //# sourceMappingURL=_0xr7q4b._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},12714,(a,b,c)=>{b.exports=a.x("node:fs/promises",()=>require("node:fs/promises"))},88947,(a,b,c)=>{b.exports=a.x("stream",()=>require("stream"))},10585,a=>{a.v("/_next/static/media/favicon.0x3dzn~oxb6tn.ico"+(globalThis.NEXT_CLIENT_ASSET_SUFFIX||""))},68611,a=>{"use strict";let b={src:a.i(10585).default,width:256,height:256};a.s(["default",0,b])},38316,a=>{"use strict";a.s(["SourceManagerConsole",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call SourceManagerConsole() from the server but SourceManagerConsole is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/admin/source-manager-console.tsx <module evaluation>","SourceManagerConsole")},84916,a=>{"use strict";a.s(["SourceManagerConsole",()=>b]);let b=(0,a.i(11857).registerClientReference)(function(){throw Error("Attempted to call SourceManagerConsole() from the server but SourceManagerConsole is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/admin/source-manager-console.tsx","SourceManagerConsole")},84129,a=>{"use strict";a.i(38316);var b=a.i(84916);a.n(b)},96419,a=>{"use strict";var b=a.i(7997),c=a.i(84129),d=a.i(34991);async function e(){let a=await (0,d.getSourceAdminState)();return(0,b.jsx)(c.SourceManagerConsole,{initialState:a})}a.s(["default",0,e,"dynamic",0,"force-dynamic","runtime",0,"nodejs"])},7425,a=>{a.n(a.i(96419))},11817,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]_mssql_msnodesqlv8_06z-x0m.js"].map(b=>a.l(b))).then(()=>b(56891)))},75106,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]_mssql_0pj5u_s._.js"].map(b=>a.l(b))).then(()=>b(59100)))}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0zpjyya._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},12714,(a,b,c)=>{b.exports=a.x("node:fs/promises",()=>require("node:fs/promises"))},88947,(a,b,c)=>{b.exports=a.x("stream",()=>require("stream"))},78641,a=>{"use strict";var b=a.i(7997);a.s(["ConfigurationCallout",0,function({className:a,description:c,title:d}){return(0,b.jsxs)("div",{className:function(...a){return a.filter(Boolean).join(" ")}("rounded-[28px] border border-amber-300/70 bg-amber-50/90 p-6 shadow-[0_24px_60px_rgba(108,71,10,0.08)]",a),children:[(0,b.jsx)("p",{className:"text-sm font-semibold uppercase tracking-[0.18em] text-amber-800",children:"Configuration Required"}),(0,b.jsx)("h2",{className:"mt-2 text-xl font-semibold text-amber-950",children:d}),(0,b.jsx)("p",{className:"mt-2 text-sm leading-7 text-amber-900/85",children:c})]})}],78641)},10585,a=>{a.v("/_next/static/media/favicon.0x3dzn~oxb6tn.ico"+(globalThis.NEXT_CLIENT_ASSET_SUFFIX||""))},68611,a=>{"use strict";let b={src:a.i(10585).default,width:256,height:256};a.s(["default",0,b])},36965,a=>{"use strict";a.s(["AdminTableExplorer",()=>c,"InspectorField",()=>d,"RowInspector",()=>e]);var b=a.i(11857);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call AdminTableExplorer() from the server but AdminTableExplorer is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/admin/table-explorer.tsx <module evaluation>","AdminTableExplorer"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call InspectorField() from the server but InspectorField is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/admin/table-explorer.tsx <module evaluation>","InspectorField"),e=(0,b.registerClientReference)(function(){throw Error("Attempted to call RowInspector() from the server but RowInspector is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/admin/table-explorer.tsx <module evaluation>","RowInspector")},95065,a=>{"use strict";a.s(["AdminTableExplorer",()=>c,"InspectorField",()=>d,"RowInspector",()=>e]);var b=a.i(11857);let c=(0,b.registerClientReference)(function(){throw Error("Attempted to call AdminTableExplorer() from the server but AdminTableExplorer is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/admin/table-explorer.tsx","AdminTableExplorer"),d=(0,b.registerClientReference)(function(){throw Error("Attempted to call InspectorField() from the server but InspectorField is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/admin/table-explorer.tsx","InspectorField"),e=(0,b.registerClientReference)(function(){throw Error("Attempted to call RowInspector() from the server but RowInspector is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/components/admin/table-explorer.tsx","RowInspector")},37035,a=>{"use strict";a.i(36965);var b=a.i(95065);a.n(b)},23018,a=>{"use strict";var b=a.i(7997),c=a.i(78641),d=a.i(37035),e=a.i(19406),f=a.i(34991);async function g(a){try{let b=await a,c=await (0,f.getAdminTableBrowserState)(),d=await (0,f.getAdminTablePreview)({page:b.page,pageSize:b.pageSize,table:b.table});return{browser:c,kind:"ready",preview:d}}catch(a){if((0,e.isConfigurationError)(a))return{kind:"configuration"};throw a}}async function h({searchParams:a}){let e=await g(a);return"configuration"===e.kind?(0,b.jsx)(c.ConfigurationCallout,{description:"Run source discovery and activate a mapping before browsing discovered tables.",title:"Table explorer is not available yet."}):(0,b.jsx)(d.AdminTableExplorer,{browser:e.browser,preview:e.preview})}a.s(["default",0,h,"dynamic",0,"force-dynamic","runtime",0,"nodejs"])},82017,a=>{a.n(a.i(23018))},11817,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]_mssql_msnodesqlv8_06z-x0m.js"].map(b=>a.l(b))).then(()=>b(56891)))},75106,a=>{a.v(b=>Promise.all(["server/chunks/ssr/[externals]_mssql_0pj5u_s._.js"].map(b=>a.l(b))).then(()=>b(59100)))}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__13lr0v4._.js.map