@kozou/svelte-ui 1.2.0 → 1.4.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 (169) hide show
  1. package/build/client/_app/immutable/assets/0.BpzpdRYx.css +2 -0
  2. package/build/client/_app/immutable/assets/0.BpzpdRYx.css.br +0 -0
  3. package/build/client/_app/immutable/assets/0.BpzpdRYx.css.gz +0 -0
  4. package/build/client/_app/immutable/chunks/{DxikiVqj.js → BAfs2EwQ.js} +1 -1
  5. package/build/client/_app/immutable/chunks/BAfs2EwQ.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/BAfs2EwQ.js.gz +0 -0
  7. package/build/client/_app/immutable/chunks/{BgT5WiOF.js → ClT4djUO.js} +1 -1
  8. package/build/client/_app/immutable/chunks/ClT4djUO.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/{BgT5WiOF.js.gz → ClT4djUO.js.gz} +0 -0
  10. package/build/client/_app/immutable/chunks/CrFfElwr.js +1 -0
  11. package/build/client/_app/immutable/chunks/CrFfElwr.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/CrFfElwr.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/DHwlcjtp.js +214 -0
  14. package/build/client/_app/immutable/chunks/DHwlcjtp.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/DHwlcjtp.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/{M-rQODG_.js → DqFR9xzq.js} +1 -1
  17. package/build/client/_app/immutable/chunks/DqFR9xzq.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/DqFR9xzq.js.gz +0 -0
  19. package/build/client/_app/immutable/chunks/POk9Ad1v.js +4 -0
  20. package/build/client/_app/immutable/chunks/POk9Ad1v.js.br +0 -0
  21. package/build/client/_app/immutable/chunks/POk9Ad1v.js.gz +0 -0
  22. package/build/client/_app/immutable/entry/app.DX7U95N5.js +2 -0
  23. package/build/client/_app/immutable/entry/app.DX7U95N5.js.br +0 -0
  24. package/build/client/_app/immutable/entry/app.DX7U95N5.js.gz +0 -0
  25. package/build/client/_app/immutable/entry/start.CTKpPXDp.js +1 -0
  26. package/build/client/_app/immutable/entry/start.CTKpPXDp.js.br +1 -0
  27. package/build/client/_app/immutable/entry/start.CTKpPXDp.js.gz +0 -0
  28. package/build/client/_app/immutable/nodes/{0.BTi1ueXu.js → 0.ahUg4RPH.js} +1 -1
  29. package/build/client/_app/immutable/nodes/0.ahUg4RPH.js.br +0 -0
  30. package/build/client/_app/immutable/nodes/0.ahUg4RPH.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/{1.BI5dO6h8.js → 1.BCx2aLZ9.js} +1 -1
  32. package/build/client/_app/immutable/nodes/1.BCx2aLZ9.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/1.BCx2aLZ9.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/2.DXYbQoLe.js +1 -0
  35. package/build/client/_app/immutable/nodes/2.DXYbQoLe.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/2.DXYbQoLe.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/3.D_kabCAZ.js +1 -0
  38. package/build/client/_app/immutable/nodes/3.D_kabCAZ.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/3.D_kabCAZ.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/{3.BfuWEZdX.js → 4.C486-zEy.js} +1 -1
  41. package/build/client/_app/immutable/nodes/4.C486-zEy.js.br +2 -0
  42. package/build/client/_app/immutable/nodes/4.C486-zEy.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/5.D1OoUXND.js +1 -0
  44. package/build/client/_app/immutable/nodes/5.D1OoUXND.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/5.D1OoUXND.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/6.B3cCGwsZ.js +1 -0
  47. package/build/client/_app/immutable/nodes/6.B3cCGwsZ.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/6.B3cCGwsZ.js.gz +0 -0
  49. package/build/client/_app/immutable/nodes/7.cAEaWzyw.js +1 -0
  50. package/build/client/_app/immutable/nodes/7.cAEaWzyw.js.br +0 -0
  51. package/build/client/_app/immutable/nodes/7.cAEaWzyw.js.gz +0 -0
  52. package/build/client/_app/immutable/nodes/{7.CjEmXoAF.js → 8.Cb70WGbk.js} +1 -1
  53. package/build/client/_app/immutable/nodes/8.Cb70WGbk.js.br +1 -0
  54. package/build/client/_app/immutable/nodes/8.Cb70WGbk.js.gz +0 -0
  55. package/build/client/_app/version.json +1 -1
  56. package/build/client/_app/version.json.br +0 -0
  57. package/build/client/_app/version.json.gz +0 -0
  58. package/build/server/chunks/{0-C4CgvBlc.js → 0-CTaiiMQp.js} +3 -3
  59. package/build/server/chunks/{0-C4CgvBlc.js.map → 0-CTaiiMQp.js.map} +1 -1
  60. package/build/server/chunks/{1-CVLmaMi2.js → 1-Dni7ax6A.js} +3 -3
  61. package/build/server/chunks/{1-CVLmaMi2.js.map → 1-Dni7ax6A.js.map} +1 -1
  62. package/build/server/chunks/{2-D9il_3ty.js → 2--1dA0mCa.js} +19 -5
  63. package/build/server/chunks/2--1dA0mCa.js.map +1 -0
  64. package/build/server/chunks/3-N0Oe_-32.js +144 -0
  65. package/build/server/chunks/3-N0Oe_-32.js.map +1 -0
  66. package/build/server/chunks/{3-DfrqlU53.js → 4-BB3nsMwf.js} +5 -5
  67. package/build/server/chunks/{3-DfrqlU53.js.map → 4-BB3nsMwf.js.map} +1 -1
  68. package/build/server/chunks/{4-Dc-NPvAO.js → 5-QdpSeSEB.js} +8 -6
  69. package/build/server/chunks/5-QdpSeSEB.js.map +1 -0
  70. package/build/server/chunks/{5-DvwPrYwd.js → 6-DQ9D4Rjj.js} +18 -15
  71. package/build/server/chunks/6-DQ9D4Rjj.js.map +1 -0
  72. package/build/server/chunks/{6-DxT9TB6A.js → 7-yY-k4F-J.js} +18 -15
  73. package/build/server/chunks/7-yY-k4F-J.js.map +1 -0
  74. package/build/server/chunks/{7-CKkRKfs8.js → 8-C6Rfqnpk.js} +5 -5
  75. package/build/server/chunks/{7-CKkRKfs8.js.map → 8-C6Rfqnpk.js.map} +1 -1
  76. package/build/server/chunks/{_page.svelte-FkcquIeL.js → _page.svelte-6bUnnrWp.js} +9 -4
  77. package/build/server/chunks/_page.svelte-6bUnnrWp.js.map +1 -0
  78. package/build/server/chunks/_page.svelte-BAaP0Gbn.js +143 -0
  79. package/build/server/chunks/_page.svelte-BAaP0Gbn.js.map +1 -0
  80. package/build/server/chunks/{_page.svelte-BN1au56r.js → _page.svelte-Cup_HkLy.js} +19 -3
  81. package/build/server/chunks/_page.svelte-Cup_HkLy.js.map +1 -0
  82. package/build/server/chunks/{_page.svelte-BGxCzjmZ.js → _page.svelte-D1coeZL7.js} +8 -7
  83. package/build/server/chunks/_page.svelte-D1coeZL7.js.map +1 -0
  84. package/build/server/chunks/{_page.svelte-DvcE6zrM.js → _page.svelte-DsOlSzf6.js} +8 -7
  85. package/build/server/chunks/_page.svelte-DsOlSzf6.js.map +1 -0
  86. package/build/server/chunks/{_server.ts-C-Wy675T.js → _server.ts-DlnyELsA.js} +4 -4
  87. package/build/server/chunks/{_server.ts-C-Wy675T.js.map → _server.ts-DlnyELsA.js.map} +1 -1
  88. package/build/server/chunks/{adapter-CXNsjV1V.js → adapter-B1wOda2X.js} +13 -1
  89. package/build/server/chunks/adapter-B1wOda2X.js.map +1 -0
  90. package/build/server/chunks/{app-DST8OmzT.js → app-MIcRQ3KA.js} +2 -2
  91. package/build/server/chunks/{app-DST8OmzT.js.map → app-MIcRQ3KA.js.map} +1 -1
  92. package/build/server/chunks/{client-BfR0iysy.js → client-CF_AG7xO.js} +3 -3
  93. package/build/server/chunks/{client-BfR0iysy.js.map → client-CF_AG7xO.js.map} +1 -1
  94. package/build/server/chunks/{composite-form-DeAbT97s.js → composite-form-Khrcy6Jk.js} +83 -31
  95. package/build/server/chunks/composite-form-Khrcy6Jk.js.map +1 -0
  96. package/build/server/chunks/{error.svelte-CgmjtCM8.js → error.svelte-CrnPC1Ez.js} +6 -6
  97. package/build/server/chunks/{error.svelte-CgmjtCM8.js.map → error.svelte-CrnPC1Ez.js.map} +1 -1
  98. package/build/server/chunks/{hooks.server-BCX7tjO4.js → hooks.server-Oa_UD2Wo.js} +743 -13
  99. package/build/server/chunks/hooks.server-Oa_UD2Wo.js.map +1 -0
  100. package/build/server/chunks/{index-5kYmxIr9.js → index-CVekYGHP.js} +2 -2
  101. package/build/server/chunks/{index-5kYmxIr9.js.map → index-CVekYGHP.js.map} +1 -1
  102. package/build/server/chunks/index-DBqjc0Yf.js.map +1 -1
  103. package/build/server/chunks/{internal-D3PcExp3.js → internal-Z9Jwi6lX.js} +13 -13
  104. package/build/server/chunks/{internal-D3PcExp3.js.map → internal-Z9Jwi6lX.js.map} +1 -1
  105. package/build/server/chunks/privilege-readonly-CK4k2aYO.js +15 -0
  106. package/build/server/chunks/privilege-readonly-CK4k2aYO.js.map +1 -0
  107. package/build/server/chunks/{relation-options-Dzy9DaQG.js → relation-options-BQ3XnftO.js} +2 -2
  108. package/build/server/chunks/{relation-options-Dzy9DaQG.js.map → relation-options-BQ3XnftO.js.map} +1 -1
  109. package/build/server/chunks/relation-select-composite-field-D4LZijR_.js +101 -0
  110. package/build/server/chunks/relation-select-composite-field-D4LZijR_.js.map +1 -0
  111. package/build/server/chunks/{widget-registry-COKz4xxc.js → widget-registry-6ku8orXa.js} +3 -98
  112. package/build/server/chunks/widget-registry-6ku8orXa.js.map +1 -0
  113. package/build/server/index.js +32 -32
  114. package/build/server/index.js.map +1 -1
  115. package/build/server/manifest.js +23 -15
  116. package/build/server/manifest.js.map +1 -1
  117. package/package.json +4 -4
  118. package/build/client/_app/immutable/assets/0._vgqT-Ja.css +0 -2
  119. package/build/client/_app/immutable/assets/0._vgqT-Ja.css.br +0 -0
  120. package/build/client/_app/immutable/assets/0._vgqT-Ja.css.gz +0 -0
  121. package/build/client/_app/immutable/chunks/0-MunKvN.js +0 -4
  122. package/build/client/_app/immutable/chunks/0-MunKvN.js.br +0 -0
  123. package/build/client/_app/immutable/chunks/0-MunKvN.js.gz +0 -0
  124. package/build/client/_app/immutable/chunks/BgT5WiOF.js.br +0 -0
  125. package/build/client/_app/immutable/chunks/CrTaJnzY.js +0 -214
  126. package/build/client/_app/immutable/chunks/CrTaJnzY.js.br +0 -0
  127. package/build/client/_app/immutable/chunks/CrTaJnzY.js.gz +0 -0
  128. package/build/client/_app/immutable/chunks/DxikiVqj.js.br +0 -0
  129. package/build/client/_app/immutable/chunks/DxikiVqj.js.gz +0 -0
  130. package/build/client/_app/immutable/chunks/M-rQODG_.js.br +0 -0
  131. package/build/client/_app/immutable/chunks/M-rQODG_.js.gz +0 -0
  132. package/build/client/_app/immutable/entry/app.ByhtJ88k.js +0 -2
  133. package/build/client/_app/immutable/entry/app.ByhtJ88k.js.br +0 -0
  134. package/build/client/_app/immutable/entry/app.ByhtJ88k.js.gz +0 -0
  135. package/build/client/_app/immutable/entry/start.C_VgULzk.js +0 -1
  136. package/build/client/_app/immutable/entry/start.C_VgULzk.js.br +0 -0
  137. package/build/client/_app/immutable/entry/start.C_VgULzk.js.gz +0 -0
  138. package/build/client/_app/immutable/nodes/0.BTi1ueXu.js.br +0 -0
  139. package/build/client/_app/immutable/nodes/0.BTi1ueXu.js.gz +0 -0
  140. package/build/client/_app/immutable/nodes/1.BI5dO6h8.js.br +0 -3
  141. package/build/client/_app/immutable/nodes/1.BI5dO6h8.js.gz +0 -0
  142. package/build/client/_app/immutable/nodes/2.CWOXCYvQ.js +0 -1
  143. package/build/client/_app/immutable/nodes/2.CWOXCYvQ.js.br +0 -0
  144. package/build/client/_app/immutable/nodes/2.CWOXCYvQ.js.gz +0 -0
  145. package/build/client/_app/immutable/nodes/3.BfuWEZdX.js.br +0 -0
  146. package/build/client/_app/immutable/nodes/3.BfuWEZdX.js.gz +0 -0
  147. package/build/client/_app/immutable/nodes/4.PUtoqAEs.js +0 -1
  148. package/build/client/_app/immutable/nodes/4.PUtoqAEs.js.br +0 -0
  149. package/build/client/_app/immutable/nodes/4.PUtoqAEs.js.gz +0 -0
  150. package/build/client/_app/immutable/nodes/5.CEXAqzYO.js +0 -1
  151. package/build/client/_app/immutable/nodes/5.CEXAqzYO.js.br +0 -0
  152. package/build/client/_app/immutable/nodes/5.CEXAqzYO.js.gz +0 -0
  153. package/build/client/_app/immutable/nodes/6.4fTWRTA8.js +0 -1
  154. package/build/client/_app/immutable/nodes/6.4fTWRTA8.js.br +0 -0
  155. package/build/client/_app/immutable/nodes/6.4fTWRTA8.js.gz +0 -0
  156. package/build/client/_app/immutable/nodes/7.CjEmXoAF.js.br +0 -1
  157. package/build/client/_app/immutable/nodes/7.CjEmXoAF.js.gz +0 -0
  158. package/build/server/chunks/2-D9il_3ty.js.map +0 -1
  159. package/build/server/chunks/4-Dc-NPvAO.js.map +0 -1
  160. package/build/server/chunks/5-DvwPrYwd.js.map +0 -1
  161. package/build/server/chunks/6-DxT9TB6A.js.map +0 -1
  162. package/build/server/chunks/_page.svelte-BGxCzjmZ.js.map +0 -1
  163. package/build/server/chunks/_page.svelte-BN1au56r.js.map +0 -1
  164. package/build/server/chunks/_page.svelte-DvcE6zrM.js.map +0 -1
  165. package/build/server/chunks/_page.svelte-FkcquIeL.js.map +0 -1
  166. package/build/server/chunks/adapter-CXNsjV1V.js.map +0 -1
  167. package/build/server/chunks/composite-form-DeAbT97s.js.map +0 -1
  168. package/build/server/chunks/hooks.server-BCX7tjO4.js.map +0 -1
  169. package/build/server/chunks/widget-registry-COKz4xxc.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"3-DfrqlU53.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/tables/_table_/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/3.js"],"sourcesContent":["import { t as getAdapter } from \"../../../../chunks/adapter.js\";\nimport { t as parseListParamsFromUrl } from \"../../../../chunks/list-params.js\";\nimport { error } from \"@sveltejs/kit\";\n//#region src/routes/tables/[table]/+page.server.ts\nvar DISPLAY_COLUMN_LIMIT = 5;\nvar TEXT_LIKE_TYPE_PREFIXES = [\n\t\"text\",\n\t\"character\",\n\t\"varchar\",\n\t\"citext\",\n\t\"name\"\n];\nvar load = async ({ params, locals, url }) => {\n\tconst table = locals.schema.tables.find((t) => t.qualifiedName === params.table);\n\tif (!table) throw error(404, `Unknown table: ${params.table}`);\n\tconst displayColumns = pickDisplayColumns(table);\n\tconst listParams = parseListParamsFromUrl({\n\t\turl,\n\t\tsearchFields: pickSearchFields(table)\n\t});\n\tconst result = await getAdapter(locals.schema).list(table.qualifiedName, listParams);\n\treturn {\n\t\ttable: {\n\t\t\tqualifiedName: table.qualifiedName,\n\t\t\tlabel: table.label,\n\t\t\tprimaryKey: table.primaryKey,\n\t\t\tdisplayField: table.displayField,\n\t\t\tcolumns: displayColumns.map((c) => ({\n\t\t\t\tname: c.name,\n\t\t\t\tlabel: c.label\n\t\t\t}))\n\t\t},\n\t\tlist: result,\n\t\tlistParams: {\n\t\t\tsearch: listParams.search,\n\t\t\tsort: listParams.sort,\n\t\t\tpage: listParams.page,\n\t\t\tpageSize: listParams.pageSize\n\t\t}\n\t};\n};\nfunction pickDisplayColumns(table) {\n\tconst display = table.displayField;\n\treturn [...table.columns].sort((a, b) => {\n\t\tif (a.name === display && b.name !== display) return -1;\n\t\tif (b.name === display && a.name !== display) return 1;\n\t\treturn 0;\n\t}).slice(0, DISPLAY_COLUMN_LIMIT);\n}\nfunction pickSearchFields(table) {\n\treturn table.columns.filter((c) => TEXT_LIKE_TYPE_PREFIXES.some((prefix) => c.dataType.toLowerCase().startsWith(prefix))).map((c) => c.name);\n}\n//#endregion\nexport { load };\n","import * as server from '../entries/pages/tables/_table_/_page.server.ts.js';\n\nexport const index = 3;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/tables/_table_/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/tables/[table]/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/3.BfuWEZdX.js\",\"_app/immutable/chunks/BgT5WiOF.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/DxikiVqj.js\",\"_app/immutable/chunks/D5sfkRNZ.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"4-BB3nsMwf.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/tables/_table_/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/4.js"],"sourcesContent":["import { t as getAdapter } from \"../../../../chunks/adapter.js\";\nimport { t as parseListParamsFromUrl } from \"../../../../chunks/list-params.js\";\nimport { error } from \"@sveltejs/kit\";\n//#region src/routes/tables/[table]/+page.server.ts\nvar DISPLAY_COLUMN_LIMIT = 5;\nvar TEXT_LIKE_TYPE_PREFIXES = [\n\t\"text\",\n\t\"character\",\n\t\"varchar\",\n\t\"citext\",\n\t\"name\"\n];\nvar load = async ({ params, locals, url }) => {\n\tconst table = locals.schema.tables.find((t) => t.qualifiedName === params.table);\n\tif (!table) throw error(404, `Unknown table: ${params.table}`);\n\tconst displayColumns = pickDisplayColumns(table);\n\tconst listParams = parseListParamsFromUrl({\n\t\turl,\n\t\tsearchFields: pickSearchFields(table)\n\t});\n\tconst result = await getAdapter(locals.schema).list(table.qualifiedName, listParams);\n\treturn {\n\t\ttable: {\n\t\t\tqualifiedName: table.qualifiedName,\n\t\t\tlabel: table.label,\n\t\t\tprimaryKey: table.primaryKey,\n\t\t\tdisplayField: table.displayField,\n\t\t\tcolumns: displayColumns.map((c) => ({\n\t\t\t\tname: c.name,\n\t\t\t\tlabel: c.label\n\t\t\t}))\n\t\t},\n\t\tlist: result,\n\t\tlistParams: {\n\t\t\tsearch: listParams.search,\n\t\t\tsort: listParams.sort,\n\t\t\tpage: listParams.page,\n\t\t\tpageSize: listParams.pageSize\n\t\t}\n\t};\n};\nfunction pickDisplayColumns(table) {\n\tconst display = table.displayField;\n\treturn [...table.columns].sort((a, b) => {\n\t\tif (a.name === display && b.name !== display) return -1;\n\t\tif (b.name === display && a.name !== display) return 1;\n\t\treturn 0;\n\t}).slice(0, DISPLAY_COLUMN_LIMIT);\n}\nfunction pickSearchFields(table) {\n\treturn table.columns.filter((c) => TEXT_LIKE_TYPE_PREFIXES.some((prefix) => c.dataType.toLowerCase().startsWith(prefix))).map((c) => c.name);\n}\n//#endregion\nexport { load };\n","import * as server from '../entries/pages/tables/_table_/_page.server.ts.js';\n\nexport const index = 4;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/tables/_table_/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/tables/[table]/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/4.C486-zEy.js\",\"_app/immutable/chunks/ClT4djUO.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/BAfs2EwQ.js\",\"_app/immutable/chunks/D5sfkRNZ.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { g as getAdapter } from './adapter-CXNsjV1V.js';
1
+ import { g as getAdapter } from './adapter-B1wOda2X.js';
2
2
  import { p as parseResourceId, e as encodeResourceId } from './resource-id-PDcQeAnc.js';
3
- import { e as error, r as redirect } from './index-5kYmxIr9.js';
3
+ import { e as error, r as redirect } from './index-CVekYGHP.js';
4
4
  import './index-DBqjc0Yf.js';
5
5
 
6
6
  //#region src/lib/detail/resolve-fk-labels.ts
@@ -94,6 +94,7 @@ function tableViewModel(table) {
94
94
  return {
95
95
  qualifiedName: table.qualifiedName,
96
96
  label: table.label,
97
+ canDelete: table.rawTable.privileges?.delete !== false,
97
98
  columns: table.columns.map((c) => ({
98
99
  name: c.name,
99
100
  label: c.label,
@@ -125,6 +126,7 @@ var load = async ({ params, locals }) => {
125
126
  var actions = { delete: async ({ params, locals }) => {
126
127
  const table = findTable(locals.schema.tables, params.table);
127
128
  if (!table) throw error(404, `Unknown table: ${params.table}`);
129
+ if (table.rawTable.privileges?.delete === false) throw error(403, `The configured role may not delete from ${table.qualifiedName}.`);
128
130
  const id = parseResourceId(params.id, table.primaryKey);
129
131
  await getAdapter(locals.schema).delete(table.qualifiedName, id);
130
132
  throw redirect(303, `/tables/${table.qualifiedName}`);
@@ -136,13 +138,13 @@ var _page_server_ts = /*#__PURE__*/Object.freeze({
136
138
  load: load
137
139
  });
138
140
 
139
- const index = 4;
141
+ const index = 5;
140
142
  let component_cache;
141
- const component = async () => component_cache ??= (await import('./_page.svelte-FkcquIeL.js')).default;
143
+ const component = async () => component_cache ??= (await import('./_page.svelte-6bUnnrWp.js')).default;
142
144
  const server_id = "src/routes/tables/[table]/[id]/+page.server.ts";
143
- const imports = ["_app/immutable/nodes/4.PUtoqAEs.js","_app/immutable/chunks/BgT5WiOF.js","_app/immutable/chunks/M-rQODG_.js","_app/immutable/chunks/0-MunKvN.js","_app/immutable/chunks/xihTtKlq.js"];
145
+ const imports = ["_app/immutable/nodes/5.D1OoUXND.js","_app/immutable/chunks/ClT4djUO.js","_app/immutable/chunks/DqFR9xzq.js","_app/immutable/chunks/POk9Ad1v.js","_app/immutable/chunks/xihTtKlq.js"];
144
146
  const stylesheets = [];
145
147
  const fonts = [];
146
148
 
147
149
  export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
148
- //# sourceMappingURL=4-Dc-NPvAO.js.map
150
+ //# sourceMappingURL=5-QdpSeSEB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"5-QdpSeSEB.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/tables/_table_/_id_/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/5.js"],"sourcesContent":["import { t as getAdapter } from \"../../../../../chunks/adapter.js\";\nimport { n as parseResourceId, t as encodeResourceId } from \"../../../../../chunks/resource-id.js\";\nimport { error, redirect } from \"@sveltejs/kit\";\n//#region src/lib/detail/resolve-fk-labels.ts\nasync function resolveFkLabels(args) {\n\tconst { table, row, schema, loadRow } = args;\n\tconst out = {};\n\tconst lookups = [];\n\tconst claims = /* @__PURE__ */ new Map();\n\tfor (const relation of table.relations) {\n\t\tconst first = (relation.fields ?? [relation.field])[0];\n\t\tclaims.set(first, (claims.get(first) ?? 0) + 1);\n\t}\n\tfor (const relation of table.relations) {\n\t\tconst fields = relation.fields ?? [relation.field];\n\t\tif (fields.length > 1) {\n\t\t\tif ((claims.get(fields[0]) ?? 0) > 1) continue;\n\t\t\tconst lookup = compositeLookup(fields, relation, row, schema, loadRow, out);\n\t\t\tif (lookup !== null) lookups.push(lookup);\n\t\t\tcontinue;\n\t\t}\n\t\tconst rawValue = row[relation.field];\n\t\tif (rawValue === null || rawValue === void 0) continue;\n\t\tif (typeof rawValue !== \"string\" && typeof rawValue !== \"number\") continue;\n\t\tconst value = rawValue;\n\t\tconst referencedQualifiedName = `${relation.references.schema}.${relation.references.table}`;\n\t\tconst referencedTable = schema.tables.find((t) => t.qualifiedName === referencedQualifiedName);\n\t\tif (referencedTable === void 0) {\n\t\t\tout[relation.field] = {\n\t\t\t\tvalue,\n\t\t\t\tlabel: null,\n\t\t\t\treferencedQualifiedName\n\t\t\t};\n\t\t\tcontinue;\n\t\t}\n\t\tlookups.push(loadRow(referencedQualifiedName, value).then((targetRow) => {\n\t\t\tconst label = projectLabel(referencedTable, targetRow);\n\t\t\tout[relation.field] = {\n\t\t\t\tvalue,\n\t\t\t\tlabel,\n\t\t\t\treferencedQualifiedName\n\t\t\t};\n\t\t}));\n\t}\n\tawait Promise.all(lookups);\n\treturn out;\n}\n/** Build the lookup for a composite relation, or return `null` when it\n* cannot be resolved (the raw values then render as-is). The target row is\n* fetched by primary key, so the relation must reference the target's full\n* primary key (in any column order) and every component must be present.\n* The resolved entry is keyed by the relation's first column. */\nfunction compositeLookup(fields, relation, row, schema, loadRow, out) {\n\tconst referencedQualifiedName = `${relation.references.schema}.${relation.references.table}`;\n\tconst referencedTable = schema.tables.find((t) => t.qualifiedName === referencedQualifiedName);\n\tif (referencedTable === void 0) return null;\n\tconst refColumns = relation.references.columns ?? [relation.references.column];\n\tif (refColumns.length !== fields.length) return null;\n\tconst primaryKey = referencedTable.primaryKey;\n\tif (primaryKey.length !== refColumns.length || !primaryKey.every((column) => refColumns.includes(column))) return null;\n\tconst components = [];\n\tfor (const keyColumn of primaryKey) {\n\t\tconst raw = row[fields[refColumns.indexOf(keyColumn)]];\n\t\tif (raw === null || raw === void 0) return null;\n\t\tif (typeof raw !== \"string\" && typeof raw !== \"number\") return null;\n\t\tcomponents.push(raw);\n\t}\n\tconst value = encodeResourceId(components);\n\treturn loadRow(referencedQualifiedName, components).then((targetRow) => {\n\t\tconst label = projectLabel(referencedTable, targetRow);\n\t\tout[fields[0]] = {\n\t\t\tvalue,\n\t\t\tlabel,\n\t\t\treferencedQualifiedName\n\t\t};\n\t});\n}\nfunction projectLabel(referencedTable, targetRow) {\n\tif (targetRow === null) return null;\n\tconst display = referencedTable.displayField;\n\tif (display === null) return null;\n\tconst value = targetRow[display];\n\tif (value === null || value === void 0) return null;\n\treturn String(value);\n}\n//#endregion\n//#region src/routes/tables/[table]/[id]/+page.server.ts\nfunction findTable(tables, slug) {\n\treturn tables.find((t) => t.qualifiedName === slug) ?? null;\n}\nfunction tableViewModel(table) {\n\treturn {\n\t\tqualifiedName: table.qualifiedName,\n\t\tlabel: table.label,\n\t\tcanDelete: table.rawTable.privileges?.delete !== false,\n\t\tcolumns: table.columns.map((c) => ({\n\t\t\tname: c.name,\n\t\t\tlabel: c.label,\n\t\t\twidget: c.widget,\n\t\t\tisPrimaryKey: c.isPrimaryKey,\n\t\t\tisForeignKey: c.isForeignKey\n\t\t}))\n\t};\n}\nvar load = async ({ params, locals }) => {\n\tconst table = findTable(locals.schema.tables, params.table);\n\tif (!table) throw error(404, `Unknown table: ${params.table}`);\n\tconst adapter = getAdapter(locals.schema);\n\tconst id = parseResourceId(params.id, table.primaryKey);\n\tconst row = await adapter.get(table.qualifiedName, id);\n\tconst fkLabels = await resolveFkLabels({\n\t\ttable,\n\t\trow,\n\t\tschema: locals.schema,\n\t\tloadRow: (qualifiedName, id) => locals.fkRowCache.get(qualifiedName, id, (qn, identifier) => adapter.get(qn, identifier).catch(() => null))\n\t});\n\treturn {\n\t\ttable: tableViewModel(table),\n\t\trow,\n\t\tfkLabels,\n\t\tid: encodeResourceId(id)\n\t};\n};\nvar actions = { delete: async ({ params, locals }) => {\n\tconst table = findTable(locals.schema.tables, params.table);\n\tif (!table) throw error(404, `Unknown table: ${params.table}`);\n\tif (table.rawTable.privileges?.delete === false) throw error(403, `The configured role may not delete from ${table.qualifiedName}.`);\n\tconst id = parseResourceId(params.id, table.primaryKey);\n\tawait getAdapter(locals.schema).delete(table.qualifiedName, id);\n\tthrow redirect(303, `/tables/${table.qualifiedName}`);\n} };\n//#endregion\nexport { actions, load };\n","import * as server from '../entries/pages/tables/_table_/_id_/_page.server.ts.js';\n\nexport const index = 5;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/tables/_table_/_id_/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/tables/[table]/[id]/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/5.D1OoUXND.js\",\"_app/immutable/chunks/ClT4djUO.js\",\"_app/immutable/chunks/DqFR9xzq.js\",\"_app/immutable/chunks/POk9Ad1v.js\",\"_app/immutable/chunks/xihTtKlq.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"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"}
@@ -1,15 +1,16 @@
1
- import { g as getAdapter } from './adapter-CXNsjV1V.js';
1
+ import { g as getAdapter } from './adapter-B1wOda2X.js';
2
2
  import { p as parseResourceId, e as encodeResourceId } from './resource-id-PDcQeAnc.js';
3
- import { l as loadInitialRelationOptions, e as ensureSelectedOptions } from './relation-options-Dzy9DaQG.js';
4
- import { e as relationFieldConfigs, p as promoteCompositeMemberWidgets, a as demoteUnpickableRelations, r as readFormWithCompositePicks, f as superValidate, z as zod, g as zodFromTable, b as buildMutationPayload } from './composite-form-DeAbT97s.js';
5
- import { e as error, f as fail, r as redirect } from './index-5kYmxIr9.js';
6
- import './internal-D3PcExp3.js';
3
+ import { l as loadInitialRelationOptions, e as ensureSelectedOptions } from './relation-options-BQ3XnftO.js';
4
+ import { g as relationFieldConfigs, p as promoteCompositeMemberWidgets, e as demoteUnpickableRelations, f as readFormWithCompositePicks, j as superValidate, z as zod, k as zodFromTable, a as buildMutationPayload } from './composite-form-Khrcy6Jk.js';
5
+ import { a as applyPrivilegeReadonly } from './privilege-readonly-CK4k2aYO.js';
6
+ import { e as error, f as fail, r as redirect } from './index-CVekYGHP.js';
7
+ import './internal-Z9Jwi6lX.js';
7
8
  import 'node:module';
8
9
  import './dev-yFiAtg5l.js';
9
10
  import 'clsx';
10
11
  import './index-DBqjc0Yf.js';
11
- import './client-BfR0iysy.js';
12
- import './app-DST8OmzT.js';
12
+ import './client-CF_AG7xO.js';
13
+ import './app-MIcRQ3KA.js';
13
14
  import 'zod/v4/core';
14
15
  import 'zod';
15
16
 
@@ -34,8 +35,9 @@ function tableViewModel(table) {
34
35
  };
35
36
  }
36
37
  var load = async ({ params, locals }) => {
37
- const table = findTable(locals.schema.tables, params.table);
38
- if (!table) throw error(404, `Unknown table: ${params.table}`);
38
+ const found = findTable(locals.schema.tables, params.table);
39
+ if (!found) throw error(404, `Unknown table: ${params.table}`);
40
+ const table = applyPrivilegeReadonly(found, "update");
39
41
  const adapter = getAdapter(locals.schema);
40
42
  const id = parseResourceId(params.id, table.primaryKey);
41
43
  const row = await adapter.get(table.qualifiedName, id);
@@ -53,8 +55,9 @@ var load = async ({ params, locals }) => {
53
55
  };
54
56
  };
55
57
  var actions = { default: async ({ request, params, locals }) => {
56
- const table = findTable(locals.schema.tables, params.table);
57
- if (!table) throw error(404, `Unknown table: ${params.table}`);
58
+ const found = findTable(locals.schema.tables, params.table);
59
+ if (!found) throw error(404, `Unknown table: ${params.table}`);
60
+ const table = applyPrivilegeReadonly(found, "update");
58
61
  const relations = relationFieldConfigs(table, locals.schema);
59
62
  const formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);
60
63
  const submission = await readFormWithCompositePicks(request, relations);
@@ -73,13 +76,13 @@ var _page_server_ts = /*#__PURE__*/Object.freeze({
73
76
  load: load
74
77
  });
75
78
 
76
- const index = 5;
79
+ const index = 6;
77
80
  let component_cache;
78
- const component = async () => component_cache ??= (await import('./_page.svelte-BGxCzjmZ.js')).default;
81
+ const component = async () => component_cache ??= (await import('./_page.svelte-D1coeZL7.js')).default;
79
82
  const server_id = "src/routes/tables/[table]/[id]/edit/+page.server.ts";
80
- const imports = ["_app/immutable/nodes/5.CEXAqzYO.js","_app/immutable/chunks/BgT5WiOF.js","_app/immutable/chunks/CrTaJnzY.js","_app/immutable/chunks/0-MunKvN.js","_app/immutable/chunks/M-rQODG_.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D5sfkRNZ.js"];
83
+ const imports = ["_app/immutable/nodes/6.B3cCGwsZ.js","_app/immutable/chunks/ClT4djUO.js","_app/immutable/chunks/DHwlcjtp.js","_app/immutable/chunks/POk9Ad1v.js","_app/immutable/chunks/DqFR9xzq.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D5sfkRNZ.js","_app/immutable/chunks/CrFfElwr.js"];
81
84
  const stylesheets = [];
82
85
  const fonts = [];
83
86
 
84
87
  export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
85
- //# sourceMappingURL=5-DvwPrYwd.js.map
88
+ //# sourceMappingURL=6-DQ9D4Rjj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"6-DQ9D4Rjj.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/tables/_table_/_id_/edit/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/6.js"],"sourcesContent":["import { t as getAdapter } from \"../../../../../../chunks/adapter.js\";\nimport { n as parseResourceId, t as encodeResourceId } from \"../../../../../../chunks/resource-id.js\";\nimport { n as loadInitialRelationOptions, t as ensureSelectedOptions } from \"../../../../../../chunks/relation-options.js\";\nimport { t as superValidate } from \"../../../../../../chunks/dist.js\";\nimport { i as buildMutationPayload, n as readFormWithCompositePicks, o as zod, r as zodFromTable } from \"../../../../../../chunks/composite-form.js\";\nimport { i as demoteUnpickableRelations, o as promoteCompositeMemberWidgets, s as relationFieldConfigs } from \"../../../../../../chunks/relation-field-config.js\";\nimport { t as applyPrivilegeReadonly } from \"../../../../../../chunks/privilege-readonly.js\";\nimport { error, fail, redirect } from \"@sveltejs/kit\";\n//#region src/routes/tables/[table]/[id]/edit/+page.server.ts\nfunction findTable(tables, slug) {\n\treturn tables.find((t) => t.qualifiedName === slug) ?? null;\n}\nfunction tableViewModel(table) {\n\treturn {\n\t\tqualifiedName: table.qualifiedName,\n\t\tlabel: table.label,\n\t\tprimaryKey: table.primaryKey,\n\t\tcolumns: table.columns.map((c) => ({\n\t\t\tname: c.name,\n\t\t\tlabel: c.label,\n\t\t\twidget: c.widget,\n\t\t\tenumValues: c.enumValues ?? [],\n\t\t\tnullable: c.nullable,\n\t\t\treadonly: c.readonly || c.isPrimaryKey,\n\t\t\tisPrimaryKey: c.isPrimaryKey\n\t\t}))\n\t};\n}\nvar load = async ({ params, locals }) => {\n\tconst found = findTable(locals.schema.tables, params.table);\n\tif (!found) throw error(404, `Unknown table: ${params.table}`);\n\tconst table = applyPrivilegeReadonly(found, \"update\");\n\tconst adapter = getAdapter(locals.schema);\n\tconst id = parseResourceId(params.id, table.primaryKey);\n\tconst row = await adapter.get(table.qualifiedName, id);\n\tconst relations = relationFieldConfigs(table, locals.schema);\n\tconst formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);\n\tconst form = await superValidate(row, zod(zodFromTable(formTable)));\n\tconst initialOptions = await loadInitialRelationOptions(adapter, relations);\n\tawait ensureSelectedOptions(adapter, relations, row, initialOptions);\n\treturn {\n\t\ttable: tableViewModel(formTable),\n\t\tform,\n\t\tid: encodeResourceId(id),\n\t\trelations,\n\t\tinitialOptions\n\t};\n};\nvar actions = { default: async ({ request, params, locals }) => {\n\tconst found = findTable(locals.schema.tables, params.table);\n\tif (!found) throw error(404, `Unknown table: ${params.table}`);\n\tconst table = applyPrivilegeReadonly(found, \"update\");\n\tconst relations = relationFieldConfigs(table, locals.schema);\n\tconst formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);\n\tconst submission = await readFormWithCompositePicks(request, relations);\n\tif (submission === null) return fail(400, { form: await superValidate(zod(zodFromTable(formTable))) });\n\tconst form = await superValidate(submission, zod(zodFromTable(formTable)));\n\tif (!form.valid) return fail(400, { form });\n\tconst payload = buildMutationPayload(formTable, form.data, \"update\");\n\tconst id = parseResourceId(params.id, table.primaryKey);\n\tawait getAdapter(locals.schema).update(table.qualifiedName, id, payload);\n\tthrow redirect(303, `/tables/${table.qualifiedName}/${encodeResourceId(id)}`);\n} };\n//#endregion\nexport { actions, load };\n","import * as server from '../entries/pages/tables/_table_/_id_/edit/_page.server.ts.js';\n\nexport const index = 6;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/tables/_table_/_id_/edit/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/tables/[table]/[id]/edit/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/6.B3cCGwsZ.js\",\"_app/immutable/chunks/ClT4djUO.js\",\"_app/immutable/chunks/DHwlcjtp.js\",\"_app/immutable/chunks/POk9Ad1v.js\",\"_app/immutable/chunks/DqFR9xzq.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/D5sfkRNZ.js\",\"_app/immutable/chunks/CrFfElwr.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAQA;AACA,SAAS,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE;AACjC,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,KAAK,IAAI,CAAC,IAAI,IAAI;AAC5D;AACA,SAAS,cAAc,CAAC,KAAK,EAAE;AAC/B,CAAC,OAAO;AACR,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa;AACpC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK;AACpB,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU;AAC9B,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACrC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI;AACf,GAAG,KAAK,EAAE,CAAC,CAAC,KAAK;AACjB,GAAG,MAAM,EAAE,CAAC,CAAC,MAAM;AACnB,GAAG,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,EAAE;AACjC,GAAG,QAAQ,EAAE,CAAC,CAAC,QAAQ;AACvB,GAAG,QAAQ,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,YAAY;AACzC,GAAG,YAAY,EAAE,CAAC,CAAC;AACnB,GAAG,CAAC;AACJ,EAAE;AACF;AACA,IAAI,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AACzC,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;AAC5D,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC;AACtD,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;AAC1C,CAAC,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC;AACxD,CAAC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,CAAC;AACvD,CAAC,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;AAC7D,CAAC,MAAM,SAAS,GAAG,6BAA6B,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC;AACxG,CAAC,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;AACpE,CAAC,MAAM,cAAc,GAAG,MAAM,0BAA0B,CAAC,OAAO,EAAE,SAAS,CAAC;AAC5E,CAAC,MAAM,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,CAAC;AACrE,CAAC,OAAO;AACR,EAAE,KAAK,EAAE,cAAc,CAAC,SAAS,CAAC;AAClC,EAAE,IAAI;AACN,EAAE,EAAE,EAAE,gBAAgB,CAAC,EAAE,CAAC;AAC1B,EAAE,SAAS;AACX,EAAE;AACF,EAAE;AACF,CAAC;AACD,IAAI,OAAO,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK;AAChE,CAAC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;AAC5D,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC/D,CAAC,MAAM,KAAK,GAAG,sBAAsB,CAAC,KAAK,EAAE,QAAQ,CAAC;AACtD,CAAC,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;AAC7D,CAAC,MAAM,SAAS,GAAG,6BAA6B,CAAC,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,SAAS,CAAC;AACxG,CAAC,MAAM,UAAU,GAAG,MAAM,0BAA0B,CAAC,OAAO,EAAE,SAAS,CAAC;AACxE,CAAC,IAAI,UAAU,KAAK,IAAI,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AACvG,CAAC,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;AAC3E,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;AAC5C,CAAC,MAAM,OAAO,GAAG,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC;AACrE,CAAC,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC;AACxD,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,EAAE,OAAO,CAAC;AACzE,CAAC,MAAM,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC,EAAE;;;;;;;;AC5DS,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA2D,CAAC,EAAE;AAEzH,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAC5S,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
@@ -1,15 +1,16 @@
1
- import { g as getAdapter } from './adapter-CXNsjV1V.js';
1
+ import { g as getAdapter } from './adapter-B1wOda2X.js';
2
2
  import { r as rowIdSegment } from './resource-id-PDcQeAnc.js';
3
- import { l as loadInitialRelationOptions } from './relation-options-Dzy9DaQG.js';
4
- import { e as relationFieldConfigs, p as promoteCompositeMemberWidgets, a as demoteUnpickableRelations, r as readFormWithCompositePicks, f as superValidate, z as zod, g as zodFromTable, b as buildMutationPayload, d as dbCanSupplyColumn } from './composite-form-DeAbT97s.js';
5
- import { e as error, f as fail, r as redirect } from './index-5kYmxIr9.js';
6
- import './internal-D3PcExp3.js';
3
+ import { l as loadInitialRelationOptions } from './relation-options-BQ3XnftO.js';
4
+ import { g as relationFieldConfigs, p as promoteCompositeMemberWidgets, e as demoteUnpickableRelations, f as readFormWithCompositePicks, j as superValidate, z as zod, k as zodFromTable, a as buildMutationPayload, d as dbCanSupplyColumn } from './composite-form-Khrcy6Jk.js';
5
+ import { a as applyPrivilegeReadonly } from './privilege-readonly-CK4k2aYO.js';
6
+ import { e as error, f as fail, r as redirect } from './index-CVekYGHP.js';
7
+ import './internal-Z9Jwi6lX.js';
7
8
  import 'node:module';
8
9
  import './dev-yFiAtg5l.js';
9
10
  import 'clsx';
10
11
  import './index-DBqjc0Yf.js';
11
- import './client-BfR0iysy.js';
12
- import './app-DST8OmzT.js';
12
+ import './client-CF_AG7xO.js';
13
+ import './app-MIcRQ3KA.js';
13
14
  import 'zod/v4/core';
14
15
  import 'zod';
15
16
 
@@ -35,8 +36,9 @@ function tableViewModel(table) {
35
36
  };
36
37
  }
37
38
  var load = async ({ params, locals }) => {
38
- const table = findTable(locals.schema.tables, params.table);
39
- if (!table) throw error(404, `Unknown table: ${params.table}`);
39
+ const found = findTable(locals.schema.tables, params.table);
40
+ if (!found) throw error(404, `Unknown table: ${params.table}`);
41
+ const table = applyPrivilegeReadonly(found, "create");
40
42
  const relations = relationFieldConfigs(table, locals.schema);
41
43
  const formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);
42
44
  const form = await superValidate(zod(zodFromTable(formTable)));
@@ -49,8 +51,9 @@ var load = async ({ params, locals }) => {
49
51
  };
50
52
  };
51
53
  var actions = { default: async ({ request, params, locals }) => {
52
- const table = findTable(locals.schema.tables, params.table);
53
- if (!table) throw error(404, `Unknown table: ${params.table}`);
54
+ const found = findTable(locals.schema.tables, params.table);
55
+ if (!found) throw error(404, `Unknown table: ${params.table}`);
56
+ const table = applyPrivilegeReadonly(found, "create");
54
57
  const relations = relationFieldConfigs(table, locals.schema);
55
58
  const formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);
56
59
  const submission = await readFormWithCompositePicks(request, relations);
@@ -68,13 +71,13 @@ var _page_server_ts = /*#__PURE__*/Object.freeze({
68
71
  load: load
69
72
  });
70
73
 
71
- const index = 6;
74
+ const index = 7;
72
75
  let component_cache;
73
- const component = async () => component_cache ??= (await import('./_page.svelte-DvcE6zrM.js')).default;
76
+ const component = async () => component_cache ??= (await import('./_page.svelte-DsOlSzf6.js')).default;
74
77
  const server_id = "src/routes/tables/[table]/new/+page.server.ts";
75
- const imports = ["_app/immutable/nodes/6.4fTWRTA8.js","_app/immutable/chunks/BgT5WiOF.js","_app/immutable/chunks/CrTaJnzY.js","_app/immutable/chunks/0-MunKvN.js","_app/immutable/chunks/M-rQODG_.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D5sfkRNZ.js"];
78
+ const imports = ["_app/immutable/nodes/7.cAEaWzyw.js","_app/immutable/chunks/ClT4djUO.js","_app/immutable/chunks/DHwlcjtp.js","_app/immutable/chunks/POk9Ad1v.js","_app/immutable/chunks/DqFR9xzq.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/D5sfkRNZ.js","_app/immutable/chunks/CrFfElwr.js"];
76
79
  const stylesheets = [];
77
80
  const fonts = [];
78
81
 
79
82
  export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
80
- //# sourceMappingURL=6-DxT9TB6A.js.map
83
+ //# sourceMappingURL=7-yY-k4F-J.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"7-yY-k4F-J.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/tables/_table_/new/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/7.js"],"sourcesContent":["import { t as getAdapter } from \"../../../../../chunks/adapter.js\";\nimport { r as rowIdSegment } from \"../../../../../chunks/resource-id.js\";\nimport { n as loadInitialRelationOptions } from \"../../../../../chunks/relation-options.js\";\nimport { t as superValidate } from \"../../../../../chunks/dist.js\";\nimport { a as dbCanSupplyColumn, i as buildMutationPayload, n as readFormWithCompositePicks, o as zod, r as zodFromTable } from \"../../../../../chunks/composite-form.js\";\nimport { i as demoteUnpickableRelations, o as promoteCompositeMemberWidgets, s as relationFieldConfigs } from \"../../../../../chunks/relation-field-config.js\";\nimport { t as applyPrivilegeReadonly } from \"../../../../../chunks/privilege-readonly.js\";\nimport { error, fail, redirect } from \"@sveltejs/kit\";\n//#region src/routes/tables/[table]/new/+page.server.ts\nfunction findTable(tables, slug) {\n\treturn tables.find((t) => t.qualifiedName === slug) ?? null;\n}\nfunction tableViewModel(table) {\n\treturn {\n\t\tqualifiedName: table.qualifiedName,\n\t\tlabel: table.label,\n\t\tprimaryKey: table.primaryKey,\n\t\tcolumns: table.columns.map((c) => ({\n\t\t\tname: c.name,\n\t\t\tlabel: c.label,\n\t\t\twidget: c.widget,\n\t\t\tenumValues: c.enumValues ?? [],\n\t\t\tnullable: c.nullable,\n\t\t\tdbCanSupply: dbCanSupplyColumn(c),\n\t\t\treadonly: c.readonly || c.isPrimaryKey && c.defaultExpr !== null,\n\t\t\tisPrimaryKey: c.isPrimaryKey\n\t\t}))\n\t};\n}\nvar load = async ({ params, locals }) => {\n\tconst found = findTable(locals.schema.tables, params.table);\n\tif (!found) throw error(404, `Unknown table: ${params.table}`);\n\tconst table = applyPrivilegeReadonly(found, \"create\");\n\tconst relations = relationFieldConfigs(table, locals.schema);\n\tconst formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);\n\tconst form = await superValidate(zod(zodFromTable(formTable)));\n\tconst initialOptions = await loadInitialRelationOptions(getAdapter(locals.schema), relations);\n\treturn {\n\t\ttable: tableViewModel(formTable),\n\t\tform,\n\t\trelations,\n\t\tinitialOptions\n\t};\n};\nvar actions = { default: async ({ request, params, locals }) => {\n\tconst found = findTable(locals.schema.tables, params.table);\n\tif (!found) throw error(404, `Unknown table: ${params.table}`);\n\tconst table = applyPrivilegeReadonly(found, \"create\");\n\tconst relations = relationFieldConfigs(table, locals.schema);\n\tconst formTable = promoteCompositeMemberWidgets(demoteUnpickableRelations(table, relations), relations);\n\tconst submission = await readFormWithCompositePicks(request, relations);\n\tif (submission === null) return fail(400, { form: await superValidate(zod(zodFromTable(formTable))) });\n\tconst form = await superValidate(submission, zod(zodFromTable(formTable)));\n\tif (!form.valid) return fail(400, { form });\n\tconst payload = buildMutationPayload(formTable, form.data);\n\tconst segment = rowIdSegment(await getAdapter(locals.schema).create(table.qualifiedName, payload), table.primaryKey);\n\tthrow redirect(303, segment !== null ? `/tables/${table.qualifiedName}/${segment}` : `/tables/${table.qualifiedName}`);\n} };\n//#endregion\nexport { actions, load };\n","import * as server from '../entries/pages/tables/_table_/new/_page.server.ts.js';\n\nexport const index = 7;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/tables/_table_/new/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/tables/[table]/new/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/7.cAEaWzyw.js\",\"_app/immutable/chunks/ClT4djUO.js\",\"_app/immutable/chunks/DHwlcjtp.js\",\"_app/immutable/chunks/POk9Ad1v.js\",\"_app/immutable/chunks/DqFR9xzq.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/D5sfkRNZ.js\",\"_app/immutable/chunks/CrFfElwr.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { g as getAdapter } from './adapter-CXNsjV1V.js';
1
+ import { g as getAdapter } from './adapter-B1wOda2X.js';
2
2
  import { p as parseListParamsFromUrl } from './list-params-Cw6PMHbk.js';
3
- import { e as error } from './index-5kYmxIr9.js';
3
+ import { e as error } from './index-CVekYGHP.js';
4
4
  import './index-DBqjc0Yf.js';
5
5
 
6
6
  //#region src/lib/view/columns.ts
@@ -54,13 +54,13 @@ var _page_server_ts = /*#__PURE__*/Object.freeze({
54
54
  load: load
55
55
  });
56
56
 
57
- const index = 7;
57
+ const index = 8;
58
58
  let component_cache;
59
59
  const component = async () => component_cache ??= (await import('./_page.svelte-Dabtpyl9.js')).default;
60
60
  const server_id = "src/routes/views/[view]/+page.server.ts";
61
- const imports = ["_app/immutable/nodes/7.CjEmXoAF.js","_app/immutable/chunks/BgT5WiOF.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/DxikiVqj.js","_app/immutable/chunks/D5sfkRNZ.js"];
61
+ const imports = ["_app/immutable/nodes/8.Cb70WGbk.js","_app/immutable/chunks/ClT4djUO.js","_app/immutable/chunks/xihTtKlq.js","_app/immutable/chunks/BAfs2EwQ.js","_app/immutable/chunks/D5sfkRNZ.js"];
62
62
  const stylesheets = [];
63
63
  const fonts = [];
64
64
 
65
65
  export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
66
- //# sourceMappingURL=7-CKkRKfs8.js.map
66
+ //# sourceMappingURL=8-C6Rfqnpk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"7-CKkRKfs8.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/views/_view_/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/7.js"],"sourcesContent":["import { t as getAdapter } from \"../../../../chunks/adapter.js\";\nimport { t as parseListParamsFromUrl } from \"../../../../chunks/list-params.js\";\nimport { error } from \"@sveltejs/kit\";\n//#region src/lib/view/columns.ts\nvar DISPLAY_COLUMN_LIMIT = 5;\nvar TEXT_LIKE_TYPE_PREFIXES = [\n\t\"text\",\n\t\"character\",\n\t\"varchar\",\n\t\"citext\",\n\t\"name\",\n\t\"uuid\"\n];\nfunction pickViewDisplayColumns(view) {\n\treturn view.columns.slice(0, DISPLAY_COLUMN_LIMIT);\n}\nfunction pickViewSearchFields(view) {\n\treturn view.columns.filter((c) => TEXT_LIKE_TYPE_PREFIXES.some((prefix) => c.dataType.toLowerCase().startsWith(prefix))).map((c) => c.name);\n}\n//#endregion\n//#region src/routes/views/[view]/+page.server.ts\nvar load = async ({ params, locals, url }) => {\n\tconst view = locals.schema.views.find((v) => v.qualifiedName === params.view);\n\tif (!view) throw error(404, `Unknown view: ${params.view}`);\n\tconst displayColumns = pickViewDisplayColumns(view);\n\tconst listParams = parseListParamsFromUrl({\n\t\turl,\n\t\tsearchFields: pickViewSearchFields(view)\n\t});\n\tconst result = await getAdapter(locals.schema).list(view.qualifiedName, listParams);\n\treturn {\n\t\tview: {\n\t\t\tqualifiedName: view.qualifiedName,\n\t\t\tlabel: view.label,\n\t\t\tcolumns: displayColumns.map((c) => ({\n\t\t\t\tname: c.name,\n\t\t\t\tlabel: c.label\n\t\t\t}))\n\t\t},\n\t\tlist: result,\n\t\tlistParams: {\n\t\t\tsearch: listParams.search,\n\t\t\tsort: listParams.sort,\n\t\t\tpage: listParams.page,\n\t\t\tpageSize: listParams.pageSize\n\t\t}\n\t};\n};\n//#endregion\nexport { load };\n","import * as server from '../entries/pages/views/_view_/_page.server.ts.js';\n\nexport const index = 7;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/views/_view_/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/views/[view]/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/7.CjEmXoAF.js\",\"_app/immutable/chunks/BgT5WiOF.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/DxikiVqj.js\",\"_app/immutable/chunks/D5sfkRNZ.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":";;;;;AAGA;AACA,IAAI,oBAAoB,GAAG,CAAC;AAC5B,IAAI,uBAAuB,GAAG;AAC9B,CAAC,MAAM;AACP,CAAC,WAAW;AACZ,CAAC,SAAS;AACV,CAAC,QAAQ;AACT,CAAC,MAAM;AACP,CAAC;AACD,CAAC;AACD,SAAS,sBAAsB,CAAC,IAAI,EAAE;AACtC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC;AACnD;AACA,SAAS,oBAAoB,CAAC,IAAI,EAAE;AACpC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAC5I;AACA;AACA;AACA,IAAI,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AAC9C,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,KAAK,MAAM,CAAC,IAAI,CAAC;AAC9E,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC;AACpD,CAAC,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAC3C,EAAE,GAAG;AACL,EAAE,YAAY,EAAE,oBAAoB,CAAC,IAAI;AACzC,EAAE,CAAC;AACH,CAAC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC;AACpF,CAAC,OAAO;AACR,EAAE,IAAI,EAAE;AACR,GAAG,aAAa,EAAE,IAAI,CAAC,aAAa;AACpC,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK;AACpB,GAAG,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACvC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI;AAChB,IAAI,KAAK,EAAE,CAAC,CAAC;AACb,IAAI,CAAC;AACL,GAAG;AACH,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,UAAU,EAAE;AACd,GAAG,MAAM,EAAE,UAAU,CAAC,MAAM;AAC5B,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI;AACxB,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI;AACxB,GAAG,QAAQ,EAAE,UAAU,CAAC;AACxB;AACA,EAAE;AACF,CAAC;;;;;;;AC7CW,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA+C,CAAC,EAAE;AAE7G,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAChM,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
1
+ {"version":3,"file":"8-C6Rfqnpk.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/views/_view_/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/8.js"],"sourcesContent":["import { t as getAdapter } from \"../../../../chunks/adapter.js\";\nimport { t as parseListParamsFromUrl } from \"../../../../chunks/list-params.js\";\nimport { error } from \"@sveltejs/kit\";\n//#region src/lib/view/columns.ts\nvar DISPLAY_COLUMN_LIMIT = 5;\nvar TEXT_LIKE_TYPE_PREFIXES = [\n\t\"text\",\n\t\"character\",\n\t\"varchar\",\n\t\"citext\",\n\t\"name\",\n\t\"uuid\"\n];\nfunction pickViewDisplayColumns(view) {\n\treturn view.columns.slice(0, DISPLAY_COLUMN_LIMIT);\n}\nfunction pickViewSearchFields(view) {\n\treturn view.columns.filter((c) => TEXT_LIKE_TYPE_PREFIXES.some((prefix) => c.dataType.toLowerCase().startsWith(prefix))).map((c) => c.name);\n}\n//#endregion\n//#region src/routes/views/[view]/+page.server.ts\nvar load = async ({ params, locals, url }) => {\n\tconst view = locals.schema.views.find((v) => v.qualifiedName === params.view);\n\tif (!view) throw error(404, `Unknown view: ${params.view}`);\n\tconst displayColumns = pickViewDisplayColumns(view);\n\tconst listParams = parseListParamsFromUrl({\n\t\turl,\n\t\tsearchFields: pickViewSearchFields(view)\n\t});\n\tconst result = await getAdapter(locals.schema).list(view.qualifiedName, listParams);\n\treturn {\n\t\tview: {\n\t\t\tqualifiedName: view.qualifiedName,\n\t\t\tlabel: view.label,\n\t\t\tcolumns: displayColumns.map((c) => ({\n\t\t\t\tname: c.name,\n\t\t\t\tlabel: c.label\n\t\t\t}))\n\t\t},\n\t\tlist: result,\n\t\tlistParams: {\n\t\t\tsearch: listParams.search,\n\t\t\tsort: listParams.sort,\n\t\t\tpage: listParams.page,\n\t\t\tpageSize: listParams.pageSize\n\t\t}\n\t};\n};\n//#endregion\nexport { load };\n","import * as server from '../entries/pages/views/_view_/_page.server.ts.js';\n\nexport const index = 8;\nlet component_cache;\nexport const component = async () => component_cache ??= (await import('../entries/pages/views/_view_/_page.svelte.js')).default;\nexport { server };\nexport const server_id = \"src/routes/views/[view]/+page.server.ts\";\nexport const imports = [\"_app/immutable/nodes/8.Cb70WGbk.js\",\"_app/immutable/chunks/ClT4djUO.js\",\"_app/immutable/chunks/xihTtKlq.js\",\"_app/immutable/chunks/BAfs2EwQ.js\",\"_app/immutable/chunks/D5sfkRNZ.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":";;;;;AAGA;AACA,IAAI,oBAAoB,GAAG,CAAC;AAC5B,IAAI,uBAAuB,GAAG;AAC9B,CAAC,MAAM;AACP,CAAC,WAAW;AACZ,CAAC,SAAS;AACV,CAAC,QAAQ;AACT,CAAC,MAAM;AACP,CAAC;AACD,CAAC;AACD,SAAS,sBAAsB,CAAC,IAAI,EAAE;AACtC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC;AACnD;AACA,SAAS,oBAAoB,CAAC,IAAI,EAAE;AACpC,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,uBAAuB,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC;AAC5I;AACA;AACA;AACA,IAAI,IAAI,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK;AAC9C,CAAC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,aAAa,KAAK,MAAM,CAAC,IAAI,CAAC;AAC9E,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5D,CAAC,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,CAAC;AACpD,CAAC,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAC3C,EAAE,GAAG;AACL,EAAE,YAAY,EAAE,oBAAoB,CAAC,IAAI;AACzC,EAAE,CAAC;AACH,CAAC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC;AACpF,CAAC,OAAO;AACR,EAAE,IAAI,EAAE;AACR,GAAG,aAAa,EAAE,IAAI,CAAC,aAAa;AACpC,GAAG,KAAK,EAAE,IAAI,CAAC,KAAK;AACpB,GAAG,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;AACvC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI;AAChB,IAAI,KAAK,EAAE,CAAC,CAAC;AACb,IAAI,CAAC;AACL,GAAG;AACH,EAAE,IAAI,EAAE,MAAM;AACd,EAAE,UAAU,EAAE;AACd,GAAG,MAAM,EAAE,UAAU,CAAC,MAAM;AAC5B,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI;AACxB,GAAG,IAAI,EAAE,UAAU,CAAC,IAAI;AACxB,GAAG,QAAQ,EAAE,UAAU,CAAC;AACxB;AACA,EAAE;AACF,CAAC;;;;;;;AC7CW,MAAC,KAAK,GAAG;AACrB,IAAI,eAAe;AACP,MAAC,SAAS,GAAG,YAAY,eAAe,KAAK,CAAC,MAAM,OAAO,4BAA+C,CAAC,EAAE;AAE7G,MAAC,SAAS,GAAG;AACb,MAAC,OAAO,GAAG,CAAC,oCAAoC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC,CAAC,mCAAmC;AAChM,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
@@ -1,6 +1,6 @@
1
1
  import { q as escape_html, o as ensure_array_like, d as attr } from './dev-yFiAtg5l.js';
2
- import './internal-D3PcExp3.js';
3
- import './client-BfR0iysy.js';
2
+ import './internal-Z9Jwi6lX.js';
3
+ import './client-CF_AG7xO.js';
4
4
  import 'clsx';
5
5
  import 'node:module';
6
6
  import './index-DBqjc0Yf.js';
@@ -78,9 +78,14 @@ function _page($$renderer, $$props) {
78
78
  }
79
79
  $$renderer.push(`<!--]--></dd></div>`);
80
80
  }
81
- $$renderer.push(`<!--]--></dl> <div class="mt-8 flex flex-wrap gap-3"><a${attr("href", `/tables/${data.table.qualifiedName}/${data.id}/edit`)} class="rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground">Edit</a> <form method="POST" action="?/delete"><button type="submit" class="rounded-md border border-destructive px-4 py-2 text-sm font-medium text-destructive">Delete</button></form> <a${attr("href", `/tables/${data.table.qualifiedName}`)} class="rounded-md border border-border px-4 py-2 text-sm font-medium">Back</a></div>`);
81
+ $$renderer.push(`<!--]--></dl> <div class="mt-8 flex flex-wrap gap-3"><a${attr("href", `/tables/${data.table.qualifiedName}/${data.id}/edit`)} class="rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground">Edit</a> `);
82
+ if (data.table.canDelete) {
83
+ $$renderer.push("<!--[0-->");
84
+ $$renderer.push(`<form method="POST" action="?/delete"><button type="submit" class="rounded-md border border-destructive px-4 py-2 text-sm font-medium text-destructive">Delete</button></form>`);
85
+ } else $$renderer.push("<!--[-1-->");
86
+ $$renderer.push(`<!--]--> <a${attr("href", `/tables/${data.table.qualifiedName}`)} class="rounded-md border border-border px-4 py-2 text-sm font-medium">Back</a></div>`);
82
87
  });
83
88
  }
84
89
 
85
90
  export { _page as default };
86
- //# sourceMappingURL=_page.svelte-FkcquIeL.js.map
91
+ //# sourceMappingURL=_page.svelte-6bUnnrWp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_page.svelte-6bUnnrWp.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/tables/_table_/_id_/_page.svelte.js"],"sourcesContent":["import { H as escape_html, V as attr, i as ensure_array_like } from \"../../../../../chunks/dev.js\";\nimport \"../../../../../chunks/forms.js\";\n//#region src/lib/detail/format-cell.ts\nfunction formatCellValue(input) {\n\tconst { value, widget } = input;\n\tif (value === null || value === void 0) return \"\";\n\tswitch (widget) {\n\t\tcase \"boolean\": return value ? \"Yes\" : \"No\";\n\t\tcase \"date\": return formatDate(value);\n\t\tcase \"datetime\": return formatDateTime(value);\n\t\tcase \"json\":\n\t\t\tif (typeof value === \"object\") try {\n\t\t\t\treturn JSON.stringify(value, null, 2);\n\t\t\t} catch {\n\t\t\t\treturn String(value);\n\t\t\t}\n\t\t\treturn String(value);\n\t\tdefault:\n\t\t\tif (typeof value === \"object\") try {\n\t\t\t\treturn JSON.stringify(value);\n\t\t\t} catch {\n\t\t\t\treturn String(value);\n\t\t\t}\n\t\t\treturn String(value);\n\t}\n}\nfunction formatDate(value) {\n\tconst d = new Date(value);\n\tif (Number.isNaN(d.getTime())) return String(value);\n\treturn d.toISOString().slice(0, 10);\n}\nfunction formatDateTime(value) {\n\tconst d = new Date(value);\n\tif (Number.isNaN(d.getTime())) return String(value);\n\treturn d.toISOString().replace(\"T\", \" \").slice(0, 19);\n}\n//#endregion\n//#region src/routes/tables/[table]/[id]/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { data } = $$props;\n\t\t$$renderer.push(`<h1 class=\"mb-1 text-2xl font-semibold\">${escape_html(data.table.label)}</h1> <p class=\"mb-6 text-sm text-muted-foreground\">${escape_html(data.table.qualifiedName)} / ${escape_html(data.id)}</p> <dl class=\"space-y-4\"><!--[-->`);\n\t\tconst each_array = ensure_array_like(data.table.columns);\n\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\tlet col = each_array[$$index];\n\t\t\tconst rawValue = data.row[col.name];\n\t\t\tconst fkLabel = data.fkLabels[col.name];\n\t\t\t$$renderer.push(`<div><dt class=\"text-sm font-medium text-muted-foreground\">${escape_html(col.label)}</dt> <dd class=\"mt-1 text-sm\">`);\n\t\t\tif (col.widget === \"json\") {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<pre class=\"overflow-x-auto rounded-md bg-muted p-2 font-mono text-xs\">${escape_html(formatCellValue({\n\t\t\t\t\tvalue: rawValue,\n\t\t\t\t\twidget: col.widget\n\t\t\t\t}))}</pre>`);\n\t\t\t} else if (col.widget === \"image-url\" && rawValue) {\n\t\t\t\t$$renderer.push(\"<!--[1-->\");\n\t\t\t\t$$renderer.push(`<img${attr(\"src\", String(rawValue))}${attr(\"alt\", col.label)} class=\"max-h-48 rounded-md border border-border object-contain\" loading=\"lazy\"/>`);\n\t\t\t} else if (rawValue === null || rawValue === void 0) {\n\t\t\t\t$$renderer.push(\"<!--[2-->\");\n\t\t\t\t$$renderer.push(`<span class=\"text-muted-foreground\">—</span>`);\n\t\t\t} else if (fkLabel !== void 0 && fkLabel.label !== null) {\n\t\t\t\t$$renderer.push(\"<!--[3-->\");\n\t\t\t\t$$renderer.push(`<a${attr(\"href\", `/tables/${fkLabel.referencedQualifiedName}/${fkLabel.value}`)} class=\"text-primary underline\">${escape_html(fkLabel.label)}</a> <span class=\"ml-1 text-xs text-muted-foreground\">(${escape_html(formatCellValue({\n\t\t\t\t\tvalue: rawValue,\n\t\t\t\t\twidget: col.widget\n\t\t\t\t}))})</span>`);\n\t\t\t} else {\n\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`${escape_html(formatCellValue({\n\t\t\t\t\tvalue: rawValue,\n\t\t\t\t\twidget: col.widget\n\t\t\t\t}))}`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></dd></div>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></dl> <div class=\"mt-8 flex flex-wrap gap-3\"><a${attr(\"href\", `/tables/${data.table.qualifiedName}/${data.id}/edit`)} class=\"rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground\">Edit</a> `);\n\t\tif (data.table.canDelete) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<form method=\"POST\" action=\"?/delete\"><button type=\"submit\" class=\"rounded-md border border-destructive px-4 py-2 text-sm font-medium text-destructive\">Delete</button></form>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> <a${attr(\"href\", `/tables/${data.table.qualifiedName}`)} class=\"rounded-md border border-border px-4 py-2 text-sm font-medium\">Back</a></div>`);\n\t});\n}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ import { q as escape_html, o as ensure_array_like, a7 as store_mutate, a6 as store_get, d as attr, m as derived, ab as unsubscribe_stores } from './dev-yFiAtg5l.js';
2
+ import { h as superForm } from './composite-form-Khrcy6Jk.js';
3
+ import { R as Relation_select_field, r as resolveWidget } from './widget-registry-6ku8orXa.js';
4
+ import 'clsx';
5
+ import './internal-Z9Jwi6lX.js';
6
+ import 'node:module';
7
+ import './index-DBqjc0Yf.js';
8
+ import './client-CF_AG7xO.js';
9
+ import './app-MIcRQ3KA.js';
10
+ import './index-CVekYGHP.js';
11
+ import 'zod/v4/core';
12
+ import 'zod';
13
+ import './resource-id-PDcQeAnc.js';
14
+
15
+ //#region src/routes/actions/[fn]/+page.svelte
16
+ function _page($$renderer, $$props) {
17
+ $$renderer.component(($$renderer) => {
18
+ var $$store_subs;
19
+ let { data, form: actionData } = $$props;
20
+ const relationByField = derived(() => new Map(data.relations.map((r) => [r.field, r])));
21
+ const { form, errors, submitting } = superForm(data.form, { dataType: "json" });
22
+ const relationForm = form;
23
+ const rpcOk = derived(() => actionData !== null && actionData !== void 0 && "rpcOk" in actionData);
24
+ const rpcError = derived(() => actionData && "rpcError" in actionData ? actionData.rpcError : null);
25
+ const resultText = derived(() => {
26
+ if (actionData === null || actionData === void 0 || !("rpcResult" in actionData)) return null;
27
+ return actionData.rpcResult === null ? null : JSON.stringify(actionData.rpcResult, null, 2);
28
+ });
29
+ let $$settled = true;
30
+ let $$inner_renderer;
31
+ function $$render_inner($$renderer) {
32
+ $$renderer.push(`<h1 class="mb-1 text-2xl font-semibold">${escape_html(data.action.label)}</h1> <p class="mb-2 text-sm text-muted-foreground">${escape_html(data.action.qualifiedName)}</p> <div class="mb-6 flex flex-wrap gap-2 text-xs"><span class="rounded-full border border-border px-2 py-0.5 text-muted-foreground">${escape_html(data.action.security === "definer" ? "security definer" : "security invoker")}</span> <span class="rounded-full border border-border px-2 py-0.5 text-muted-foreground">${escape_html(data.action.volatility)}</span></div> `);
33
+ if (data.action.description) {
34
+ $$renderer.push("<!--[0-->");
35
+ $$renderer.push(`<p class="mb-4 whitespace-pre-line text-sm">${escape_html(data.action.description)}</p>`);
36
+ } else $$renderer.push("<!--[-1-->");
37
+ $$renderer.push(`<!--]--> `);
38
+ if (data.action.aiDescription) {
39
+ $$renderer.push("<!--[0-->");
40
+ $$renderer.push(`<div class="mb-4 rounded-md border border-border bg-muted/40 p-3 text-sm"><div class="mb-1 font-medium">AI notes</div> <p class="whitespace-pre-line text-muted-foreground">${escape_html(data.action.aiDescription)}</p></div>`);
41
+ } else $$renderer.push("<!--[-1-->");
42
+ $$renderer.push(`<!--]--> `);
43
+ if (data.action.policy.length > 0) {
44
+ $$renderer.push("<!--[0-->");
45
+ $$renderer.push(`<div class="mb-4 rounded-md border border-border bg-muted/40 p-3 text-sm"><div class="mb-1 font-medium">Policy</div> <ul class="list-disc pl-5 text-muted-foreground"><!--[-->`);
46
+ const each_array = ensure_array_like(data.action.policy);
47
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
48
+ let rule = each_array[$$index];
49
+ $$renderer.push(`<li>${escape_html(rule)}</li>`);
50
+ }
51
+ $$renderer.push(`<!--]--></ul></div>`);
52
+ } else $$renderer.push("<!--[-1-->");
53
+ $$renderer.push(`<!--]--> `);
54
+ if (rpcError()) {
55
+ $$renderer.push("<!--[0-->");
56
+ $$renderer.push(`<p class="mb-4 rounded-md border border-destructive/50 bg-destructive/10 p-3 text-sm text-destructive">${escape_html(rpcError())}</p>`);
57
+ } else $$renderer.push("<!--[-1-->");
58
+ $$renderer.push(`<!--]--> `);
59
+ if (rpcOk()) {
60
+ $$renderer.push("<!--[0-->");
61
+ $$renderer.push(`<div class="mb-4 rounded-md border border-border bg-muted/40 p-3"><div class="mb-1 text-sm font-medium">Result</div> `);
62
+ if (resultText() === null) {
63
+ $$renderer.push("<!--[0-->");
64
+ $$renderer.push(`<p class="text-sm text-muted-foreground">No result (the action returned void).</p>`);
65
+ } else {
66
+ $$renderer.push("<!--[-1-->");
67
+ $$renderer.push(`<pre class="overflow-x-auto text-sm"><code>${escape_html(resultText())}</code></pre>`);
68
+ }
69
+ $$renderer.push(`<!--]--></div>`);
70
+ } else $$renderer.push("<!--[-1-->");
71
+ $$renderer.push(`<!--]--> <form method="POST" class="space-y-4"><!--[-->`);
72
+ const each_array_1 = ensure_array_like(data.action.args);
73
+ for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
74
+ let arg = each_array_1[$$index_1];
75
+ const relation = relationByField().get(arg.name);
76
+ $$renderer.push(`<div>`);
77
+ if (arg.widget === "relation-select" && relation) {
78
+ $$renderer.push("<!--[0-->");
79
+ $$renderer.push(`<!---->`);
80
+ Relation_select_field($$renderer, {
81
+ name: arg.name,
82
+ label: arg.label,
83
+ resource: relation.resource,
84
+ labelField: relation.labelField,
85
+ searchFields: relation.searchFields,
86
+ initialOptions: data.initialOptions[arg.name] ?? [],
87
+ required: arg.required,
88
+ readonly: false,
89
+ get value() {
90
+ return store_get($$store_subs ??= {}, "$relationForm", relationForm)[arg.name];
91
+ },
92
+ set value($$value) {
93
+ store_mutate($$store_subs ??= {}, "$relationForm", relationForm, store_get($$store_subs ??= {}, "$relationForm", relationForm)[arg.name] = $$value);
94
+ $$settled = false;
95
+ }
96
+ });
97
+ $$renderer.push(`<!---->`);
98
+ } else {
99
+ $$renderer.push("<!--[-1-->");
100
+ const Widget = resolveWidget(arg.widget);
101
+ if (Widget) {
102
+ $$renderer.push("<!--[-->");
103
+ Widget($$renderer, {
104
+ name: arg.name,
105
+ label: arg.label,
106
+ options: arg.enumValues,
107
+ required: arg.required,
108
+ readonly: false,
109
+ get value() {
110
+ return store_get($$store_subs ??= {}, "$form", form)[arg.name];
111
+ },
112
+ set value($$value) {
113
+ store_mutate($$store_subs ??= {}, "$form", form, store_get($$store_subs ??= {}, "$form", form)[arg.name] = $$value);
114
+ $$settled = false;
115
+ }
116
+ });
117
+ $$renderer.push("<!--]-->");
118
+ } else {
119
+ $$renderer.push("<!--[!-->");
120
+ $$renderer.push("<!--]-->");
121
+ }
122
+ }
123
+ $$renderer.push(`<!--]--> `);
124
+ if (store_get($$store_subs ??= {}, "$errors", errors)[arg.name]) {
125
+ $$renderer.push("<!--[0-->");
126
+ $$renderer.push(`<p class="mt-1 text-sm text-destructive">${escape_html(store_get($$store_subs ??= {}, "$errors", errors)[arg.name])}</p>`);
127
+ } else $$renderer.push("<!--[-1-->");
128
+ $$renderer.push(`<!--]--></div>`);
129
+ }
130
+ $$renderer.push(`<!--]--> <div class="flex gap-3"><button type="submit"${attr("disabled", store_get($$store_subs ??= {}, "$submitting", submitting), true)} class="rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground disabled:opacity-50">${escape_html(store_get($$store_subs ??= {}, "$submitting", submitting) ? "Running…" : "Run action")}</button> <a href="/" class="rounded-md border border-border px-4 py-2 text-sm font-medium">Cancel</a></div></form>`);
131
+ }
132
+ do {
133
+ $$settled = true;
134
+ $$inner_renderer = $$renderer.copy();
135
+ $$render_inner($$inner_renderer);
136
+ } while (!$$settled);
137
+ $$renderer.subsume($$inner_renderer);
138
+ if ($$store_subs) unsubscribe_stores($$store_subs);
139
+ });
140
+ }
141
+
142
+ export { _page as default };
143
+ //# sourceMappingURL=_page.svelte-BAaP0Gbn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_page.svelte-BAaP0Gbn.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/actions/_fn_/_page.svelte.js"],"sourcesContent":["import { H as escape_html, V as attr, c as unsubscribe_stores, i as ensure_array_like, o as store_get, r as derived, s as store_mutate } from \"../../../../chunks/dev.js\";\nimport { r as superForm } from \"../../../../chunks/dist.js\";\nimport { n as Relation_select_field, t as resolveWidget } from \"../../../../chunks/widget-registry.js\";\n//#region src/routes/actions/[fn]/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tvar $$store_subs;\n\t\tlet { data, form: actionData } = $$props;\n\t\tconst relationByField = derived(() => new Map(data.relations.map((r) => [r.field, r])));\n\t\tconst { form, errors, enhance, submitting } = superForm(data.form, { dataType: \"json\" });\n\t\tconst relationForm = form;\n\t\tconst rpcOk = derived(() => actionData !== null && actionData !== void 0 && \"rpcOk\" in actionData);\n\t\tconst rpcError = derived(() => actionData && \"rpcError\" in actionData ? actionData.rpcError : null);\n\t\tconst resultText = derived(() => {\n\t\t\tif (actionData === null || actionData === void 0 || !(\"rpcResult\" in actionData)) return null;\n\t\t\treturn actionData.rpcResult === null ? null : JSON.stringify(actionData.rpcResult, null, 2);\n\t\t});\n\t\tlet $$settled = true;\n\t\tlet $$inner_renderer;\n\t\tfunction $$render_inner($$renderer) {\n\t\t\t$$renderer.push(`<h1 class=\"mb-1 text-2xl font-semibold\">${escape_html(data.action.label)}</h1> <p class=\"mb-2 text-sm text-muted-foreground\">${escape_html(data.action.qualifiedName)}</p> <div class=\"mb-6 flex flex-wrap gap-2 text-xs\"><span class=\"rounded-full border border-border px-2 py-0.5 text-muted-foreground\">${escape_html(data.action.security === \"definer\" ? \"security definer\" : \"security invoker\")}</span> <span class=\"rounded-full border border-border px-2 py-0.5 text-muted-foreground\">${escape_html(data.action.volatility)}</span></div> `);\n\t\t\tif (data.action.description) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<p class=\"mb-4 whitespace-pre-line text-sm\">${escape_html(data.action.description)}</p>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\tif (data.action.aiDescription) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<div class=\"mb-4 rounded-md border border-border bg-muted/40 p-3 text-sm\"><div class=\"mb-1 font-medium\">AI notes</div> <p class=\"whitespace-pre-line text-muted-foreground\">${escape_html(data.action.aiDescription)}</p></div>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\tif (data.action.policy.length > 0) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<div class=\"mb-4 rounded-md border border-border bg-muted/40 p-3 text-sm\"><div class=\"mb-1 font-medium\">Policy</div> <ul class=\"list-disc pl-5 text-muted-foreground\"><!--[-->`);\n\t\t\t\tconst each_array = ensure_array_like(data.action.policy);\n\t\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\t\tlet rule = each_array[$$index];\n\t\t\t\t\t$$renderer.push(`<li>${escape_html(rule)}</li>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></ul></div>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\tif (rpcError()) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<p class=\"mb-4 rounded-md border border-destructive/50 bg-destructive/10 p-3 text-sm text-destructive\">${escape_html(rpcError())}</p>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\tif (rpcOk()) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<div class=\"mb-4 rounded-md border border-border bg-muted/40 p-3\"><div class=\"mb-1 text-sm font-medium\">Result</div> `);\n\t\t\t\tif (resultText() === null) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<p class=\"text-sm text-muted-foreground\">No result (the action returned void).</p>`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\t$$renderer.push(`<pre class=\"overflow-x-auto text-sm\"><code>${escape_html(resultText())}</code></pre>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--> <form method=\"POST\" class=\"space-y-4\"><!--[-->`);\n\t\t\tconst each_array_1 = ensure_array_like(data.action.args);\n\t\t\tfor (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\tlet arg = each_array_1[$$index_1];\n\t\t\t\tconst relation = relationByField().get(arg.name);\n\t\t\t\t$$renderer.push(`<div>`);\n\t\t\t\tif (arg.widget === \"relation-select\" && relation) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<!---->`);\n\t\t\t\t\tRelation_select_field($$renderer, {\n\t\t\t\t\t\tname: arg.name,\n\t\t\t\t\t\tlabel: arg.label,\n\t\t\t\t\t\tresource: relation.resource,\n\t\t\t\t\t\tlabelField: relation.labelField,\n\t\t\t\t\t\tsearchFields: relation.searchFields,\n\t\t\t\t\t\tinitialOptions: data.initialOptions[arg.name] ?? [],\n\t\t\t\t\t\trequired: arg.required,\n\t\t\t\t\t\treadonly: false,\n\t\t\t\t\t\tget value() {\n\t\t\t\t\t\t\treturn store_get($$store_subs ??= {}, \"$relationForm\", relationForm)[arg.name];\n\t\t\t\t\t\t},\n\t\t\t\t\t\tset value($$value) {\n\t\t\t\t\t\t\tstore_mutate($$store_subs ??= {}, \"$relationForm\", relationForm, store_get($$store_subs ??= {}, \"$relationForm\", relationForm)[arg.name] = $$value);\n\t\t\t\t\t\t\t$$settled = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\t$$renderer.push(`<!---->`);\n\t\t\t\t} else {\n\t\t\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t\t\tconst Widget = resolveWidget(arg.widget);\n\t\t\t\t\tif (Widget) {\n\t\t\t\t\t\t$$renderer.push(\"<!--[-->\");\n\t\t\t\t\t\tWidget($$renderer, {\n\t\t\t\t\t\t\tname: arg.name,\n\t\t\t\t\t\t\tlabel: arg.label,\n\t\t\t\t\t\t\toptions: arg.enumValues,\n\t\t\t\t\t\t\trequired: arg.required,\n\t\t\t\t\t\t\treadonly: false,\n\t\t\t\t\t\t\tget value() {\n\t\t\t\t\t\t\t\treturn store_get($$store_subs ??= {}, \"$form\", form)[arg.name];\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tset value($$value) {\n\t\t\t\t\t\t\t\tstore_mutate($$store_subs ??= {}, \"$form\", form, store_get($$store_subs ??= {}, \"$form\", form)[arg.name] = $$value);\n\t\t\t\t\t\t\t\t$$settled = false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$$renderer.push(\"<!--[!-->\");\n\t\t\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--> `);\n\t\t\t\tif (store_get($$store_subs ??= {}, \"$errors\", errors)[arg.name]) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<p class=\"mt-1 text-sm text-destructive\">${escape_html(store_get($$store_subs ??= {}, \"$errors\", errors)[arg.name])}</p>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></div>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--> <div class=\"flex gap-3\"><button type=\"submit\"${attr(\"disabled\", store_get($$store_subs ??= {}, \"$submitting\", submitting), true)} class=\"rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground disabled:opacity-50\">${escape_html(store_get($$store_subs ??= {}, \"$submitting\", submitting) ? \"Running…\" : \"Run action\")}</button> <a href=\"/\" class=\"rounded-md border border-border px-4 py-2 text-sm font-medium\">Cancel</a></div></form>`);\n\t\t}\n\t\tdo {\n\t\t\t$$settled = true;\n\t\t\t$$inner_renderer = $$renderer.copy();\n\t\t\t$$render_inner($$inner_renderer);\n\t\t} while (!$$settled);\n\t\t$$renderer.subsume($$inner_renderer);\n\t\tif ($$store_subs) unsubscribe_stores($$store_subs);\n\t});\n}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ function _page($$renderer, $$props) {
24
24
  }
25
25
  $$renderer.push(`<!--]--></ul>`);
26
26
  }
27
- $$renderer.push(`<!--]--></section> <section><h2 class="mb-3 text-lg font-semibold">Views</h2> `);
27
+ $$renderer.push(`<!--]--></section> <section class="mb-10"><h2 class="mb-3 text-lg font-semibold">Views</h2> `);
28
28
  if (data.dashboard.views.length === 0) {
29
29
  $$renderer.push("<!--[0-->");
30
30
  $$renderer.push(`<p class="text-sm text-muted-foreground">No views in the current schema.</p>`);
@@ -43,9 +43,25 @@ function _page($$renderer, $$props) {
43
43
  }
44
44
  $$renderer.push(`<!--]--></ul>`);
45
45
  }
46
- $$renderer.push(`<!--]--></section>`);
46
+ $$renderer.push(`<!--]--></section> `);
47
+ if (data.actionsEnabled && data.dashboard.functions.length > 0) {
48
+ $$renderer.push("<!--[0-->");
49
+ $$renderer.push(`<section><h2 class="mb-3 text-lg font-semibold">Actions</h2> <ul class="space-y-2"><!--[-->`);
50
+ const each_array_2 = ensure_array_like(data.dashboard.functions);
51
+ for (let $$index_2 = 0, $$length = each_array_2.length; $$index_2 < $$length; $$index_2++) {
52
+ let fn = each_array_2[$$index_2];
53
+ $$renderer.push(`<li><a${attr("href", `/actions/${fn.qualifiedName}`)} class="block rounded-md border border-border p-3 transition hover:bg-muted"><div class="font-medium">${escape_html(fn.label)}</div> `);
54
+ if (fn.description) {
55
+ $$renderer.push("<!--[0-->");
56
+ $$renderer.push(`<div class="text-sm text-muted-foreground">${escape_html(fn.description)}</div>`);
57
+ } else $$renderer.push("<!--[-1-->");
58
+ $$renderer.push(`<!--]--></a></li>`);
59
+ }
60
+ $$renderer.push(`<!--]--></ul></section>`);
61
+ } else $$renderer.push("<!--[-1-->");
62
+ $$renderer.push(`<!--]-->`);
47
63
  });
48
64
  }
49
65
 
50
66
  export { _page as default };
51
- //# sourceMappingURL=_page.svelte-BN1au56r.js.map
67
+ //# sourceMappingURL=_page.svelte-Cup_HkLy.js.map