@kozou/svelte-ui 0.0.1 → 0.1.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 (119) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +108 -1
  3. package/build/client/_app/immutable/assets/0.Cg4B63gQ.css +2 -0
  4. package/build/client/_app/immutable/assets/0.Cg4B63gQ.css.br +0 -0
  5. package/build/client/_app/immutable/assets/0.Cg4B63gQ.css.gz +0 -0
  6. package/build/client/_app/immutable/chunks/BpIM_fT8.js +2 -0
  7. package/build/client/_app/immutable/chunks/BpIM_fT8.js.br +0 -0
  8. package/build/client/_app/immutable/chunks/BpIM_fT8.js.gz +0 -0
  9. package/build/client/_app/immutable/chunks/D4orYVgu.js +4 -0
  10. package/build/client/_app/immutable/chunks/D4orYVgu.js.br +0 -0
  11. package/build/client/_app/immutable/chunks/D4orYVgu.js.gz +0 -0
  12. package/build/client/_app/immutable/chunks/DdEzykkf.js +1 -0
  13. package/build/client/_app/immutable/chunks/DdEzykkf.js.br +0 -0
  14. package/build/client/_app/immutable/chunks/DdEzykkf.js.gz +0 -0
  15. package/build/client/_app/immutable/chunks/Dq0SIjgq.js +214 -0
  16. package/build/client/_app/immutable/chunks/Dq0SIjgq.js.br +0 -0
  17. package/build/client/_app/immutable/chunks/Dq0SIjgq.js.gz +0 -0
  18. package/build/client/_app/immutable/chunks/kNaey6uv.js +1 -0
  19. package/build/client/_app/immutable/chunks/kNaey6uv.js.br +0 -0
  20. package/build/client/_app/immutable/chunks/kNaey6uv.js.gz +0 -0
  21. package/build/client/_app/immutable/chunks/xihTtKlq.js +1 -0
  22. package/build/client/_app/immutable/chunks/xihTtKlq.js.br +1 -0
  23. package/build/client/_app/immutable/chunks/xihTtKlq.js.gz +0 -0
  24. package/build/client/_app/immutable/entry/app.B2E2jsYG.js +2 -0
  25. package/build/client/_app/immutable/entry/app.B2E2jsYG.js.br +0 -0
  26. package/build/client/_app/immutable/entry/app.B2E2jsYG.js.gz +0 -0
  27. package/build/client/_app/immutable/entry/start.Ccv3-hR2.js +1 -0
  28. package/build/client/_app/immutable/entry/start.Ccv3-hR2.js.br +0 -0
  29. package/build/client/_app/immutable/entry/start.Ccv3-hR2.js.gz +0 -0
  30. package/build/client/_app/immutable/nodes/0.C77vZJGR.js +1 -0
  31. package/build/client/_app/immutable/nodes/0.C77vZJGR.js.br +0 -0
  32. package/build/client/_app/immutable/nodes/0.C77vZJGR.js.gz +0 -0
  33. package/build/client/_app/immutable/nodes/1.9-mDK_1B.js +1 -0
  34. package/build/client/_app/immutable/nodes/1.9-mDK_1B.js.br +0 -0
  35. package/build/client/_app/immutable/nodes/1.9-mDK_1B.js.gz +0 -0
  36. package/build/client/_app/immutable/nodes/2.DKSRkbg2.js +1 -0
  37. package/build/client/_app/immutable/nodes/2.DKSRkbg2.js.br +0 -0
  38. package/build/client/_app/immutable/nodes/2.DKSRkbg2.js.gz +0 -0
  39. package/build/client/_app/immutable/nodes/3.BRseKH3J.js +1 -0
  40. package/build/client/_app/immutable/nodes/3.BRseKH3J.js.br +0 -0
  41. package/build/client/_app/immutable/nodes/3.BRseKH3J.js.gz +0 -0
  42. package/build/client/_app/immutable/nodes/4.D1ErMjLn.js +1 -0
  43. package/build/client/_app/immutable/nodes/4.D1ErMjLn.js.br +0 -0
  44. package/build/client/_app/immutable/nodes/4.D1ErMjLn.js.gz +0 -0
  45. package/build/client/_app/immutable/nodes/5.U1CG0AZz.js +1 -0
  46. package/build/client/_app/immutable/nodes/5.U1CG0AZz.js.br +0 -0
  47. package/build/client/_app/immutable/nodes/5.U1CG0AZz.js.gz +0 -0
  48. package/build/client/_app/immutable/nodes/6.BqfsXcpL.js +1 -0
  49. package/build/client/_app/immutable/nodes/6.BqfsXcpL.js.br +0 -0
  50. package/build/client/_app/immutable/nodes/6.BqfsXcpL.js.gz +0 -0
  51. package/build/client/_app/immutable/nodes/7.Bfhyc_gZ.js +1 -0
  52. package/build/client/_app/immutable/nodes/7.Bfhyc_gZ.js.br +0 -0
  53. package/build/client/_app/immutable/nodes/7.Bfhyc_gZ.js.gz +0 -0
  54. package/build/client/_app/version.json +1 -0
  55. package/build/client/_app/version.json.br +0 -0
  56. package/build/client/_app/version.json.gz +0 -0
  57. package/build/env.js +94 -0
  58. package/build/handler.js +1494 -0
  59. package/build/index.js +345 -0
  60. package/build/server/chunks/0-Cpki24QE.js +24 -0
  61. package/build/server/chunks/0-Cpki24QE.js.map +1 -0
  62. package/build/server/chunks/1-C_Zl16E8.js +9 -0
  63. package/build/server/chunks/1-C_Zl16E8.js.map +1 -0
  64. package/build/server/chunks/2-Bb7ROZP0.js +35 -0
  65. package/build/server/chunks/2-Bb7ROZP0.js.map +1 -0
  66. package/build/server/chunks/3-dXQmFZGn.js +71 -0
  67. package/build/server/chunks/3-dXQmFZGn.js.map +1 -0
  68. package/build/server/chunks/4-Dn5qQ29L.js +54 -0
  69. package/build/server/chunks/4-Dn5qQ29L.js.map +1 -0
  70. package/build/server/chunks/5-CKRn1yVS.js +69 -0
  71. package/build/server/chunks/5-CKRn1yVS.js.map +1 -0
  72. package/build/server/chunks/6-C7PGuXlN.js +70 -0
  73. package/build/server/chunks/6-C7PGuXlN.js.map +1 -0
  74. package/build/server/chunks/7-BtKcX-UD.js +66 -0
  75. package/build/server/chunks/7-BtKcX-UD.js.map +1 -0
  76. package/build/server/chunks/_layout.svelte-DcwZs9VT.js +15 -0
  77. package/build/server/chunks/_layout.svelte-DcwZs9VT.js.map +1 -0
  78. package/build/server/chunks/_page.svelte-69okwN_x.js +70 -0
  79. package/build/server/chunks/_page.svelte-69okwN_x.js.map +1 -0
  80. package/build/server/chunks/_page.svelte-7DhzytBp.js +79 -0
  81. package/build/server/chunks/_page.svelte-7DhzytBp.js.map +1 -0
  82. package/build/server/chunks/_page.svelte-BpS5HgaB.js +78 -0
  83. package/build/server/chunks/_page.svelte-BpS5HgaB.js.map +1 -0
  84. package/build/server/chunks/_page.svelte-BywGr3Tk.js +51 -0
  85. package/build/server/chunks/_page.svelte-BywGr3Tk.js.map +1 -0
  86. package/build/server/chunks/_page.svelte-ClFWSFQK.js +70 -0
  87. package/build/server/chunks/_page.svelte-ClFWSFQK.js.map +1 -0
  88. package/build/server/chunks/_page.svelte-Dfaz3pC_.js +86 -0
  89. package/build/server/chunks/_page.svelte-Dfaz3pC_.js.map +1 -0
  90. package/build/server/chunks/adapter-DSZ-_PM_.js +273 -0
  91. package/build/server/chunks/adapter-DSZ-_PM_.js.map +1 -0
  92. package/build/server/chunks/app-C1bzfcjj.js +12 -0
  93. package/build/server/chunks/app-C1bzfcjj.js.map +1 -0
  94. package/build/server/chunks/client-nr13Vsqj.js +69 -0
  95. package/build/server/chunks/client-nr13Vsqj.js.map +1 -0
  96. package/build/server/chunks/dev-yRSoS_kM.js +4498 -0
  97. package/build/server/chunks/dev-yRSoS_kM.js.map +1 -0
  98. package/build/server/chunks/error.svelte-B8LolEv3.js +68 -0
  99. package/build/server/chunks/error.svelte-B8LolEv3.js.map +1 -0
  100. package/build/server/chunks/hooks.server-BgTiHdgV.js +11706 -0
  101. package/build/server/chunks/hooks.server-BgTiHdgV.js.map +1 -0
  102. package/build/server/chunks/index-5kYmxIr9.js +191 -0
  103. package/build/server/chunks/index-5kYmxIr9.js.map +1 -0
  104. package/build/server/chunks/index-DBqjc0Yf.js +77 -0
  105. package/build/server/chunks/index-DBqjc0Yf.js.map +1 -0
  106. package/build/server/chunks/internal-Dtmf8fV4.js +1759 -0
  107. package/build/server/chunks/internal-Dtmf8fV4.js.map +1 -0
  108. package/build/server/chunks/list-params-DjWk7B1o.js +44 -0
  109. package/build/server/chunks/list-params-DjWk7B1o.js.map +1 -0
  110. package/build/server/chunks/widget-registry-Bfc0OPDn.js +242 -0
  111. package/build/server/chunks/widget-registry-Bfc0OPDn.js.map +1 -0
  112. package/build/server/chunks/zod-from-table-HRMJdgEv.js +7936 -0
  113. package/build/server/chunks/zod-from-table-HRMJdgEv.js.map +1 -0
  114. package/build/server/index.js +4447 -0
  115. package/build/server/index.js.map +1 -0
  116. package/build/server/manifest.js +86 -0
  117. package/build/server/manifest.js.map +1 -0
  118. package/build/shims.js +32 -0
  119. package/package.json +65 -4
@@ -0,0 +1,70 @@
1
+ import { g as getAdapter } from './adapter-DSZ-_PM_.js';
2
+ import { a as superValidate, z as zod, b as zodFromTable } from './zod-from-table-HRMJdgEv.js';
3
+ import { e as error, f as fail, r as redirect } from './index-5kYmxIr9.js';
4
+ import './internal-Dtmf8fV4.js';
5
+ import 'node:module';
6
+ import './dev-yRSoS_kM.js';
7
+ import 'clsx';
8
+ import './index-DBqjc0Yf.js';
9
+ import './client-nr13Vsqj.js';
10
+ import './app-C1bzfcjj.js';
11
+ import 'zod/v3';
12
+ import 'zod';
13
+
14
+ //#region src/routes/tables/[table]/new/+page.server.ts
15
+ function findTable(tables, slug) {
16
+ return tables.find((t) => t.qualifiedName === slug) ?? null;
17
+ }
18
+ function tableViewModel(table) {
19
+ return {
20
+ qualifiedName: table.qualifiedName,
21
+ label: table.label,
22
+ primaryKey: table.primaryKey,
23
+ columns: table.columns.map((c) => ({
24
+ name: c.name,
25
+ label: c.label,
26
+ widget: c.widget,
27
+ enumValues: c.enumValues ?? [],
28
+ nullable: c.nullable,
29
+ readonly: c.readonly || c.isPrimaryKey && c.defaultExpr !== null,
30
+ isPrimaryKey: c.isPrimaryKey
31
+ }))
32
+ };
33
+ }
34
+ var load = async ({ params, locals }) => {
35
+ const table = findTable(locals.schema.tables, params.table);
36
+ if (!table) throw error(404, `Unknown table: ${params.table}`);
37
+ const form = await superValidate(zod(zodFromTable(table)));
38
+ return {
39
+ table: tableViewModel(table),
40
+ form
41
+ };
42
+ };
43
+ var actions = { default: async ({ request, params, locals }) => {
44
+ const table = findTable(locals.schema.tables, params.table);
45
+ if (!table) throw error(404, `Unknown table: ${params.table}`);
46
+ const form = await superValidate(request, zod(zodFromTable(table)));
47
+ if (!form.valid) return fail(400, { form });
48
+ const payload = Object.fromEntries(Object.entries(form.data));
49
+ const created = await getAdapter().create(table.qualifiedName, payload);
50
+ const pkField = table.primaryKey[0];
51
+ const id = pkField !== void 0 && created[pkField] !== void 0 ? String(created[pkField]) : "";
52
+ throw redirect(303, id.length > 0 ? `/tables/${table.qualifiedName}/${id}` : `/tables/${table.qualifiedName}`);
53
+ } };
54
+
55
+ var _page_server_ts = /*#__PURE__*/Object.freeze({
56
+ __proto__: null,
57
+ actions: actions,
58
+ load: load
59
+ });
60
+
61
+ const index = 6;
62
+ let component_cache;
63
+ const component = async () => component_cache ??= (await import('./_page.svelte-ClFWSFQK.js')).default;
64
+ const server_id = "src/routes/tables/[table]/new/+page.server.ts";
65
+ const imports = ["_app/immutable/nodes/6.BqfsXcpL.js","_app/immutable/chunks/BpIM_fT8.js","_app/immutable/chunks/Dq0SIjgq.js","_app/immutable/chunks/D4orYVgu.js","_app/immutable/chunks/DdEzykkf.js","_app/immutable/chunks/xihTtKlq.js"];
66
+ const stylesheets = [];
67
+ const fonts = [];
68
+
69
+ export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
70
+ //# sourceMappingURL=6-C7PGuXlN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"6-C7PGuXlN.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/tables/_table_/new/_page.server.ts.js","../../../.svelte-kit/adapter-node/nodes/6.js"],"sourcesContent":["import { t as getAdapter } from \"../../../../../chunks/adapter.js\";\nimport { t as superValidate } from \"../../../../../chunks/dist.js\";\nimport { n as zod, t as zodFromTable } from \"../../../../../chunks/zod-from-table.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\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 table = findTable(locals.schema.tables, params.table);\n\tif (!table) throw error(404, `Unknown table: ${params.table}`);\n\tconst form = await superValidate(zod(zodFromTable(table)));\n\treturn {\n\t\ttable: tableViewModel(table),\n\t\tform\n\t};\n};\nvar actions = { default: async ({ request, params, locals }) => {\n\tconst table = findTable(locals.schema.tables, params.table);\n\tif (!table) throw error(404, `Unknown table: ${params.table}`);\n\tconst form = await superValidate(request, zod(zodFromTable(table)));\n\tif (!form.valid) return fail(400, { form });\n\tconst payload = Object.fromEntries(Object.entries(form.data));\n\tconst created = await getAdapter().create(table.qualifiedName, payload);\n\tconst pkField = table.primaryKey[0];\n\tconst id = pkField !== void 0 && created[pkField] !== void 0 ? String(created[pkField]) : \"\";\n\tthrow redirect(303, id.length > 0 ? `/tables/${table.qualifiedName}/${id}` : `/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 = 6;\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/6.BqfsXcpL.js\",\"_app/immutable/chunks/BpIM_fT8.js\",\"_app/immutable/chunks/Dq0SIjgq.js\",\"_app/immutable/chunks/D4orYVgu.js\",\"_app/immutable/chunks/DdEzykkf.js\",\"_app/immutable/chunks/xihTtKlq.js\"];\nexport const stylesheets = [];\nexport const fonts = [];\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ import { g as getAdapter } from './adapter-DSZ-_PM_.js';
2
+ import { p as parseListParamsFromUrl } from './list-params-DjWk7B1o.js';
3
+ import { e as error } from './index-5kYmxIr9.js';
4
+ import './index-DBqjc0Yf.js';
5
+
6
+ //#region src/lib/view/columns.ts
7
+ var DISPLAY_COLUMN_LIMIT = 5;
8
+ var TEXT_LIKE_TYPE_PREFIXES = [
9
+ "text",
10
+ "character",
11
+ "varchar",
12
+ "citext",
13
+ "name",
14
+ "uuid"
15
+ ];
16
+ function pickViewDisplayColumns(view) {
17
+ return view.columns.slice(0, DISPLAY_COLUMN_LIMIT);
18
+ }
19
+ function pickViewSearchFields(view) {
20
+ return view.columns.filter((c) => TEXT_LIKE_TYPE_PREFIXES.some((prefix) => c.dataType.toLowerCase().startsWith(prefix))).map((c) => c.name);
21
+ }
22
+ //#endregion
23
+ //#region src/routes/views/[view]/+page.server.ts
24
+ var load = async ({ params, locals, url }) => {
25
+ const view = locals.schema.views.find((v) => v.qualifiedName === params.view);
26
+ if (!view) throw error(404, `Unknown view: ${params.view}`);
27
+ const displayColumns = pickViewDisplayColumns(view);
28
+ const listParams = parseListParamsFromUrl({
29
+ url,
30
+ searchFields: pickViewSearchFields(view)
31
+ });
32
+ const result = await getAdapter().list(view.qualifiedName, listParams);
33
+ return {
34
+ view: {
35
+ qualifiedName: view.qualifiedName,
36
+ label: view.label,
37
+ columns: displayColumns.map((c) => ({
38
+ name: c.name,
39
+ label: c.label
40
+ }))
41
+ },
42
+ list: result,
43
+ listParams: {
44
+ search: listParams.search,
45
+ sort: listParams.sort,
46
+ page: listParams.page,
47
+ pageSize: listParams.pageSize
48
+ }
49
+ };
50
+ };
51
+
52
+ var _page_server_ts = /*#__PURE__*/Object.freeze({
53
+ __proto__: null,
54
+ load: load
55
+ });
56
+
57
+ const index = 7;
58
+ let component_cache;
59
+ const component = async () => component_cache ??= (await import('./_page.svelte-BpS5HgaB.js')).default;
60
+ const server_id = "src/routes/views/[view]/+page.server.ts";
61
+ const imports = ["_app/immutable/nodes/7.Bfhyc_gZ.js","_app/immutable/chunks/BpIM_fT8.js","_app/immutable/chunks/xihTtKlq.js"];
62
+ const stylesheets = [];
63
+ const fonts = [];
64
+
65
+ export { component, fonts, imports, index, _page_server_ts as server, server_id, stylesheets };
66
+ //# sourceMappingURL=7-BtKcX-UD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"7-BtKcX-UD.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().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.Bfhyc_gZ.js\",\"_app/immutable/chunks/BpIM_fT8.js\",\"_app/immutable/chunks/xihTtKlq.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,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC;AACvE,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;AACxH,MAAC,WAAW,GAAG;AACf,MAAC,KAAK,GAAG;;;;"}
@@ -0,0 +1,15 @@
1
+ import { q as escape_html } from './dev-yRSoS_kM.js';
2
+ import 'clsx';
3
+
4
+ //#region src/routes/+layout.svelte
5
+ function _layout($$renderer, $$props) {
6
+ $$renderer.component(($$renderer) => {
7
+ let { data, children } = $$props;
8
+ $$renderer.push(`<div class="min-h-screen bg-background text-foreground"><header class="border-b border-border"><div class="mx-auto flex max-w-5xl items-center justify-between px-6 py-4"><a href="/" class="text-lg font-semibold">${escape_html(data.appName)}</a> <nav class="flex items-center gap-4 text-sm text-muted-foreground"><span>${escape_html(data.tableCount)} tables</span> <span aria-hidden="true">/</span> <span>${escape_html(data.viewCount)} views</span></nav></div></header> <main class="mx-auto max-w-5xl px-6 py-8">`);
9
+ children($$renderer);
10
+ $$renderer.push(`<!----></main></div>`);
11
+ });
12
+ }
13
+
14
+ export { _layout as default };
15
+ //# sourceMappingURL=_layout.svelte-DcwZs9VT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_layout.svelte-DcwZs9VT.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_layout.svelte.js"],"sourcesContent":["import { H as escape_html } from \"../../chunks/dev.js\";\n//#region src/routes/+layout.svelte\nfunction _layout($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { data, children } = $$props;\n\t\t$$renderer.push(`<div class=\"min-h-screen bg-background text-foreground\"><header class=\"border-b border-border\"><div class=\"mx-auto flex max-w-5xl items-center justify-between px-6 py-4\"><a href=\"/\" class=\"text-lg font-semibold\">${escape_html(data.appName)}</a> <nav class=\"flex items-center gap-4 text-sm text-muted-foreground\"><span>${escape_html(data.tableCount)} tables</span> <span aria-hidden=\"true\">/</span> <span>${escape_html(data.viewCount)} views</span></nav></div></header> <main class=\"mx-auto max-w-5xl px-6 py-8\">`);\n\t\tchildren($$renderer);\n\t\t$$renderer.push(`<!----></main></div>`);\n\t});\n}\n//#endregion\nexport { _layout as default };\n"],"names":[],"mappings":";;;AACA;AACA,SAAS,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE;AACtC,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK;AACtC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO;AAClC,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,oNAAoN,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,8EAA8E,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,uDAAuD,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,6EAA6E,CAAC,CAAC;AACphB,EAAE,QAAQ,CAAC,UAAU,CAAC;AACtB,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,CAAC;AACzC,CAAC,CAAC,CAAC;AACH;;;;"}
@@ -0,0 +1,70 @@
1
+ import { q as escape_html, o as ensure_array_like, a7 as store_mutate, a6 as store_get, d as attr, ab as unsubscribe_stores } from './dev-yRSoS_kM.js';
2
+ import { s as superForm } from './zod-from-table-HRMJdgEv.js';
3
+ import { r as resolveWidget } from './widget-registry-Bfc0OPDn.js';
4
+ import 'clsx';
5
+ import './internal-Dtmf8fV4.js';
6
+ import 'node:module';
7
+ import './index-DBqjc0Yf.js';
8
+ import './client-nr13Vsqj.js';
9
+ import './app-C1bzfcjj.js';
10
+ import './index-5kYmxIr9.js';
11
+ import 'zod/v3';
12
+ import 'zod';
13
+
14
+ //#region src/routes/tables/[table]/[id]/edit/+page.svelte
15
+ function _page($$renderer, $$props) {
16
+ $$renderer.component(($$renderer) => {
17
+ var $$store_subs;
18
+ let { data } = $$props;
19
+ const { form, errors, submitting } = superForm(data.form, { dataType: "json" });
20
+ let $$settled = true;
21
+ let $$inner_renderer;
22
+ function $$render_inner($$renderer) {
23
+ $$renderer.push(`<h1 class="mb-1 text-2xl font-semibold">Edit ${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> <form method="POST" class="space-y-4"><!--[-->`);
24
+ const each_array = ensure_array_like(data.table.columns);
25
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
26
+ let col = each_array[$$index];
27
+ const Widget = resolveWidget(col.widget);
28
+ $$renderer.push(`<div>`);
29
+ if (Widget) {
30
+ $$renderer.push("<!--[-->");
31
+ Widget($$renderer, {
32
+ name: col.name,
33
+ label: col.label,
34
+ options: col.enumValues,
35
+ required: !col.nullable && !col.readonly && !col.isPrimaryKey,
36
+ readonly: col.readonly,
37
+ get value() {
38
+ return store_get($$store_subs ??= {}, "$form", form)[col.name];
39
+ },
40
+ set value($$value) {
41
+ store_mutate($$store_subs ??= {}, "$form", form, store_get($$store_subs ??= {}, "$form", form)[col.name] = $$value);
42
+ $$settled = false;
43
+ }
44
+ });
45
+ $$renderer.push("<!--]-->");
46
+ } else {
47
+ $$renderer.push("<!--[!-->");
48
+ $$renderer.push("<!--]-->");
49
+ }
50
+ $$renderer.push(` `);
51
+ if (store_get($$store_subs ??= {}, "$errors", errors)[col.name]) {
52
+ $$renderer.push("<!--[0-->");
53
+ $$renderer.push(`<p class="mt-1 text-sm text-destructive">${escape_html(store_get($$store_subs ??= {}, "$errors", errors)[col.name])}</p>`);
54
+ } else $$renderer.push("<!--[-1-->");
55
+ $$renderer.push(`<!--]--></div>`);
56
+ }
57
+ $$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) ? "Saving…" : "Save")}</button> <a${attr("href", `/tables/${data.table.qualifiedName}/${data.id}`)} class="rounded-md border border-border px-4 py-2 text-sm font-medium">Cancel</a></div></form>`);
58
+ }
59
+ do {
60
+ $$settled = true;
61
+ $$inner_renderer = $$renderer.copy();
62
+ $$render_inner($$inner_renderer);
63
+ } while (!$$settled);
64
+ $$renderer.subsume($$inner_renderer);
65
+ if ($$store_subs) unsubscribe_stores($$store_subs);
66
+ });
67
+ }
68
+
69
+ export { _page as default };
70
+ //# sourceMappingURL=_page.svelte-69okwN_x.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_page.svelte-69okwN_x.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/tables/_table_/_id_/edit/_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, s as store_mutate } from \"../../../../../../chunks/dev.js\";\nimport { r as superForm } from \"../../../../../../chunks/dist.js\";\nimport { t as resolveWidget } from \"../../../../../../chunks/widget-registry.js\";\n//#region src/routes/tables/[table]/[id]/edit/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tvar $$store_subs;\n\t\tlet { data } = $$props;\n\t\tconst { form, errors, enhance, submitting } = superForm(data.form, { dataType: \"json\" });\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\">Edit ${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> <form method=\"POST\" class=\"space-y-4\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(data.table.columns);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet col = each_array[$$index];\n\t\t\t\tconst Widget = resolveWidget(col.widget);\n\t\t\t\t$$renderer.push(`<div>`);\n\t\t\t\tif (Widget) {\n\t\t\t\t\t$$renderer.push(\"<!--[-->\");\n\t\t\t\t\tWidget($$renderer, {\n\t\t\t\t\t\tname: col.name,\n\t\t\t\t\t\tlabel: col.label,\n\t\t\t\t\t\toptions: col.enumValues,\n\t\t\t\t\t\trequired: !col.nullable && !col.readonly && !col.isPrimaryKey,\n\t\t\t\t\t\treadonly: col.readonly,\n\t\t\t\t\t\tget value() {\n\t\t\t\t\t\t\treturn store_get($$store_subs ??= {}, \"$form\", form)[col.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 ??= {}, \"$form\", form, store_get($$store_subs ??= {}, \"$form\", form)[col.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(\"<!--[!-->\");\n\t\t\t\t\t$$renderer.push(\"<!--]-->\");\n\t\t\t\t}\n\t\t\t\t$$renderer.push(` `);\n\t\t\t\tif (store_get($$store_subs ??= {}, \"$errors\", errors)[col.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)[col.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) ? \"Saving…\" : \"Save\")}</button> <a${attr(\"href\", `/tables/${data.table.qualifiedName}/${data.id}`)} 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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"}
@@ -0,0 +1,79 @@
1
+ import { q as escape_html, o as ensure_array_like, d as attr } from './dev-yRSoS_kM.js';
2
+ import './internal-Dtmf8fV4.js';
3
+ import './client-nr13Vsqj.js';
4
+ import 'clsx';
5
+ import 'node:module';
6
+ import './index-DBqjc0Yf.js';
7
+
8
+ //#region src/lib/detail/format-cell.ts
9
+ function formatCellValue(input) {
10
+ const { value, widget } = input;
11
+ if (value === null || value === void 0) return "";
12
+ switch (widget) {
13
+ case "boolean": return value ? "Yes" : "No";
14
+ case "date": return formatDate(value);
15
+ case "datetime": return formatDateTime(value);
16
+ case "json":
17
+ if (typeof value === "object") try {
18
+ return JSON.stringify(value, null, 2);
19
+ } catch {
20
+ return String(value);
21
+ }
22
+ return String(value);
23
+ default:
24
+ if (typeof value === "object") try {
25
+ return JSON.stringify(value);
26
+ } catch {
27
+ return String(value);
28
+ }
29
+ return String(value);
30
+ }
31
+ }
32
+ function formatDate(value) {
33
+ const d = new Date(value);
34
+ if (Number.isNaN(d.getTime())) return String(value);
35
+ return d.toISOString().slice(0, 10);
36
+ }
37
+ function formatDateTime(value) {
38
+ const d = new Date(value);
39
+ if (Number.isNaN(d.getTime())) return String(value);
40
+ return d.toISOString().replace("T", " ").slice(0, 19);
41
+ }
42
+ //#endregion
43
+ //#region src/routes/tables/[table]/[id]/+page.svelte
44
+ function _page($$renderer, $$props) {
45
+ $$renderer.component(($$renderer) => {
46
+ let { data } = $$props;
47
+ $$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"><!--[-->`);
48
+ const each_array = ensure_array_like(data.table.columns);
49
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
50
+ let col = each_array[$$index];
51
+ const rawValue = data.row[col.name];
52
+ $$renderer.push(`<div><dt class="text-sm font-medium text-muted-foreground">${escape_html(col.label)}</dt> <dd class="mt-1 text-sm">`);
53
+ if (col.widget === "json") {
54
+ $$renderer.push("<!--[0-->");
55
+ $$renderer.push(`<pre class="overflow-x-auto rounded-md bg-muted p-2 font-mono text-xs">${escape_html(formatCellValue({
56
+ value: rawValue,
57
+ widget: col.widget
58
+ }))}</pre>`);
59
+ } else if (col.widget === "image-url" && rawValue) {
60
+ $$renderer.push("<!--[1-->");
61
+ $$renderer.push(`<img${attr("src", String(rawValue))}${attr("alt", col.label)} class="max-h-48 rounded-md border border-border object-contain" loading="lazy"/>`);
62
+ } else if (rawValue === null || rawValue === void 0) {
63
+ $$renderer.push("<!--[2-->");
64
+ $$renderer.push(`<span class="text-muted-foreground">—</span>`);
65
+ } else {
66
+ $$renderer.push("<!--[-1-->");
67
+ $$renderer.push(`${escape_html(formatCellValue({
68
+ value: rawValue,
69
+ widget: col.widget
70
+ }))}`);
71
+ }
72
+ $$renderer.push(`<!--]--></dd></div>`);
73
+ }
74
+ $$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>`);
75
+ });
76
+ }
77
+
78
+ export { _page as default };
79
+ //# sourceMappingURL=_page.svelte-7DhzytBp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_page.svelte-7DhzytBp.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\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 {\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> <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>`);\n\t});\n}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,78 @@
1
+ import { q as escape_html, d as attr, o as ensure_array_like, m as derived } from './dev-yRSoS_kM.js';
2
+ import 'clsx';
3
+
4
+ //#region src/routes/views/[view]/+page.svelte
5
+ function _page($$renderer, $$props) {
6
+ $$renderer.component(($$renderer) => {
7
+ let { data } = $$props;
8
+ const sortLookup = derived(() => new Map(data.listParams.sort.map((s) => [s.field, s.order])));
9
+ const totalPages = derived(() => Math.max(1, Math.ceil(data.list.total / data.list.pageSize)));
10
+ function buildHref(overrides) {
11
+ const params = new URLSearchParams();
12
+ if (data.listParams.search.length > 0) params.set("q", data.listParams.search);
13
+ if (data.listParams.sort.length > 0) params.set("sort", data.listParams.sort.map((s) => `${s.field}:${s.order}`).join(","));
14
+ if (data.listParams.page > 1) params.set("page", String(data.listParams.page));
15
+ if (data.listParams.pageSize !== 50) params.set("pageSize", String(data.listParams.pageSize));
16
+ for (const [key, value] of Object.entries(overrides)) if (value === null) params.delete(key);
17
+ else params.set(key, value);
18
+ const query = params.toString();
19
+ return query.length > 0 ? `?${query}` : ".";
20
+ }
21
+ function buildSortHref(field) {
22
+ return buildHref({
23
+ sort: `${field}:${sortLookup().get(field) === "asc" ? "desc" : "asc"}`,
24
+ page: null
25
+ });
26
+ }
27
+ function formatCell(value) {
28
+ if (value === null || value === void 0) return "";
29
+ if (typeof value === "object") return JSON.stringify(value);
30
+ return String(value);
31
+ }
32
+ $$renderer.push(`<h1 class="mb-1 text-2xl font-semibold">${escape_html(data.view.label)}</h1> <p class="mb-6 text-sm text-muted-foreground">${escape_html(data.view.qualifiedName)}</p> <form method="GET" class="mb-4 flex flex-wrap items-center gap-2"><input type="text" name="q"${attr("value", data.listParams.search)} placeholder="Search…" class="min-w-0 flex-1 rounded-md border border-input bg-background px-3 py-2 text-sm"/> <button type="submit" class="rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground">Search</button></form> <div class="overflow-x-auto rounded-md border border-border"><table class="min-w-full text-sm"><thead class="bg-muted"><tr><!--[-->`);
33
+ const each_array = ensure_array_like(data.view.columns);
34
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
35
+ let col = each_array[$$index];
36
+ $$renderer.push(`<th class="px-3 py-2 text-left font-medium"><a${attr("href", buildSortHref(col.name))} class="hover:underline">${escape_html(col.label)} `);
37
+ if (sortLookup().has(col.name)) {
38
+ $$renderer.push("<!--[0-->");
39
+ $$renderer.push(`<span aria-hidden="true">${escape_html(sortLookup().get(col.name) === "asc" ? "↑" : "↓")}</span>`);
40
+ } else $$renderer.push("<!--[-1-->");
41
+ $$renderer.push(`<!--]--></a></th>`);
42
+ }
43
+ $$renderer.push(`<!--]--></tr></thead><tbody>`);
44
+ if (data.list.rows.length === 0) {
45
+ $$renderer.push("<!--[0-->");
46
+ $$renderer.push(`<tr><td${attr("colspan", data.view.columns.length)} class="px-3 py-6 text-center text-muted-foreground">No rows.</td></tr>`);
47
+ } else {
48
+ $$renderer.push("<!--[-1-->");
49
+ $$renderer.push(`<!--[-->`);
50
+ const each_array_1 = ensure_array_like(data.list.rows);
51
+ for (let idx = 0, $$length = each_array_1.length; idx < $$length; idx++) {
52
+ let row = each_array_1[idx];
53
+ $$renderer.push(`<tr class="border-t border-border"><!--[-->`);
54
+ const each_array_2 = ensure_array_like(data.view.columns);
55
+ for (let $$index_1 = 0, $$length = each_array_2.length; $$index_1 < $$length; $$index_1++) {
56
+ let col = each_array_2[$$index_1];
57
+ $$renderer.push(`<td class="px-3 py-2">${escape_html(formatCell(row[col.name]))}</td>`);
58
+ }
59
+ $$renderer.push(`<!--]--></tr>`);
60
+ }
61
+ $$renderer.push(`<!--]-->`);
62
+ }
63
+ $$renderer.push(`<!--]--></tbody></table></div> <nav class="mt-4 flex items-center justify-between text-sm"><span class="text-muted-foreground">Page ${escape_html(data.listParams.page)} of ${escape_html(totalPages())} (${escape_html(data.list.total)} total)</span> <div class="flex gap-2">`);
64
+ if (data.listParams.page > 1) {
65
+ $$renderer.push("<!--[0-->");
66
+ $$renderer.push(`<a${attr("href", buildHref({ page: String(data.listParams.page - 1) }))} class="rounded-md border border-border px-3 py-1">← Prev</a>`);
67
+ } else $$renderer.push("<!--[-1-->");
68
+ $$renderer.push(`<!--]--> `);
69
+ if (data.listParams.page < totalPages()) {
70
+ $$renderer.push("<!--[0-->");
71
+ $$renderer.push(`<a${attr("href", buildHref({ page: String(data.listParams.page + 1) }))} class="rounded-md border border-border px-3 py-1">Next →</a>`);
72
+ } else $$renderer.push("<!--[-1-->");
73
+ $$renderer.push(`<!--]--></div></nav>`);
74
+ });
75
+ }
76
+
77
+ export { _page as default };
78
+ //# sourceMappingURL=_page.svelte-BpS5HgaB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_page.svelte-BpS5HgaB.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/views/_view_/_page.svelte.js"],"sourcesContent":["import { H as escape_html, V as attr, i as ensure_array_like, r as derived } from \"../../../../chunks/dev.js\";\n//#region src/routes/views/[view]/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { data } = $$props;\n\t\tconst sortLookup = derived(() => new Map(data.listParams.sort.map((s) => [s.field, s.order])));\n\t\tconst totalPages = derived(() => Math.max(1, Math.ceil(data.list.total / data.list.pageSize)));\n\t\tfunction buildHref(overrides) {\n\t\t\tconst params = new URLSearchParams();\n\t\t\tif (data.listParams.search.length > 0) params.set(\"q\", data.listParams.search);\n\t\t\tif (data.listParams.sort.length > 0) params.set(\"sort\", data.listParams.sort.map((s) => `${s.field}:${s.order}`).join(\",\"));\n\t\t\tif (data.listParams.page > 1) params.set(\"page\", String(data.listParams.page));\n\t\t\tif (data.listParams.pageSize !== 50) params.set(\"pageSize\", String(data.listParams.pageSize));\n\t\t\tfor (const [key, value] of Object.entries(overrides)) if (value === null) params.delete(key);\n\t\t\telse params.set(key, value);\n\t\t\tconst query = params.toString();\n\t\t\treturn query.length > 0 ? `?${query}` : \".\";\n\t\t}\n\t\tfunction buildSortHref(field) {\n\t\t\treturn buildHref({\n\t\t\t\tsort: `${field}:${sortLookup().get(field) === \"asc\" ? \"desc\" : \"asc\"}`,\n\t\t\t\tpage: null\n\t\t\t});\n\t\t}\n\t\tfunction formatCell(value) {\n\t\t\tif (value === null || value === void 0) return \"\";\n\t\t\tif (typeof value === \"object\") return JSON.stringify(value);\n\t\t\treturn String(value);\n\t\t}\n\t\t$$renderer.push(`<h1 class=\"mb-1 text-2xl font-semibold\">${escape_html(data.view.label)}</h1> <p class=\"mb-6 text-sm text-muted-foreground\">${escape_html(data.view.qualifiedName)}</p> <form method=\"GET\" class=\"mb-4 flex flex-wrap items-center gap-2\"><input type=\"text\" name=\"q\"${attr(\"value\", data.listParams.search)} placeholder=\"Search…\" class=\"min-w-0 flex-1 rounded-md border border-input bg-background px-3 py-2 text-sm\"/> <button type=\"submit\" class=\"rounded-md bg-primary px-4 py-2 text-sm font-medium text-primary-foreground\">Search</button></form> <div class=\"overflow-x-auto rounded-md border border-border\"><table class=\"min-w-full text-sm\"><thead class=\"bg-muted\"><tr><!--[-->`);\n\t\tconst each_array = ensure_array_like(data.view.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\t$$renderer.push(`<th class=\"px-3 py-2 text-left font-medium\"><a${attr(\"href\", buildSortHref(col.name))} class=\"hover:underline\">${escape_html(col.label)} `);\n\t\t\tif (sortLookup().has(col.name)) {\n\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t$$renderer.push(`<span aria-hidden=\"true\">${escape_html(sortLookup().get(col.name) === \"asc\" ? \"↑\" : \"↓\")}</span>`);\n\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--]--></a></th>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></tr></thead><tbody>`);\n\t\tif (data.list.rows.length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<tr><td${attr(\"colspan\", data.view.columns.length)} class=\"px-3 py-6 text-center text-muted-foreground\">No rows.</td></tr>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<!--[-->`);\n\t\t\tconst each_array_1 = ensure_array_like(data.list.rows);\n\t\t\tfor (let idx = 0, $$length = each_array_1.length; idx < $$length; idx++) {\n\t\t\t\tlet row = each_array_1[idx];\n\t\t\t\t$$renderer.push(`<tr class=\"border-t border-border\"><!--[-->`);\n\t\t\t\tconst each_array_2 = ensure_array_like(data.view.columns);\n\t\t\t\tfor (let $$index_1 = 0, $$length = each_array_2.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\t\tlet col = each_array_2[$$index_1];\n\t\t\t\t\t$$renderer.push(`<td class=\"px-3 py-2\">${escape_html(formatCell(row[col.name]))}</td>`);\n\t\t\t\t}\n\t\t\t\t$$renderer.push(`<!--]--></tr>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]-->`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></tbody></table></div> <nav class=\"mt-4 flex items-center justify-between text-sm\"><span class=\"text-muted-foreground\">Page ${escape_html(data.listParams.page)} of ${escape_html(totalPages())} (${escape_html(data.list.total)} total)</span> <div class=\"flex gap-2\">`);\n\t\tif (data.listParams.page > 1) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<a${attr(\"href\", buildHref({ page: String(data.listParams.page - 1) }))} class=\"rounded-md border border-border px-3 py-1\">← Prev</a>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--> `);\n\t\tif (data.listParams.page < totalPages()) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<a${attr(\"href\", buildHref({ page: String(data.listParams.page + 1) }))} class=\"rounded-md border border-border px-3 py-1\">Next →</a>`);\n\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t$$renderer.push(`<!--]--></div></nav>`);\n\t});\n}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ import { o as ensure_array_like, d as attr, q as escape_html } from './dev-yRSoS_kM.js';
2
+ import 'clsx';
3
+
4
+ //#region src/routes/+page.svelte
5
+ function _page($$renderer, $$props) {
6
+ $$renderer.component(($$renderer) => {
7
+ let { data } = $$props;
8
+ $$renderer.push(`<h1 class="mb-6 text-2xl font-semibold">Dashboard</h1> <section class="mb-10"><h2 class="mb-3 text-lg font-semibold">Tables</h2> `);
9
+ if (data.dashboard.tables.length === 0) {
10
+ $$renderer.push("<!--[0-->");
11
+ $$renderer.push(`<p class="text-sm text-muted-foreground">No tables in the current schema.</p>`);
12
+ } else {
13
+ $$renderer.push("<!--[-1-->");
14
+ $$renderer.push(`<ul class="space-y-2"><!--[-->`);
15
+ const each_array = ensure_array_like(data.dashboard.tables);
16
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
17
+ let table = each_array[$$index];
18
+ $$renderer.push(`<li><a${attr("href", `/tables/${table.qualifiedName}`)} class="block rounded-md border border-border p-3 transition hover:bg-muted"><div class="font-medium">${escape_html(table.label)}</div> `);
19
+ if (table.description) {
20
+ $$renderer.push("<!--[0-->");
21
+ $$renderer.push(`<div class="text-sm text-muted-foreground">${escape_html(table.description)}</div>`);
22
+ } else $$renderer.push("<!--[-1-->");
23
+ $$renderer.push(`<!--]--></a></li>`);
24
+ }
25
+ $$renderer.push(`<!--]--></ul>`);
26
+ }
27
+ $$renderer.push(`<!--]--></section> <section><h2 class="mb-3 text-lg font-semibold">Views</h2> `);
28
+ if (data.dashboard.views.length === 0) {
29
+ $$renderer.push("<!--[0-->");
30
+ $$renderer.push(`<p class="text-sm text-muted-foreground">No views in the current schema.</p>`);
31
+ } else {
32
+ $$renderer.push("<!--[-1-->");
33
+ $$renderer.push(`<ul class="space-y-2"><!--[-->`);
34
+ const each_array_1 = ensure_array_like(data.dashboard.views);
35
+ for (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {
36
+ let view = each_array_1[$$index_1];
37
+ $$renderer.push(`<li><a${attr("href", `/views/${view.qualifiedName}`)} class="block rounded-md border border-border p-3 transition hover:bg-muted"><div class="font-medium">${escape_html(view.label)}</div> `);
38
+ if (view.description) {
39
+ $$renderer.push("<!--[0-->");
40
+ $$renderer.push(`<div class="text-sm text-muted-foreground">${escape_html(view.description)}</div>`);
41
+ } else $$renderer.push("<!--[-1-->");
42
+ $$renderer.push(`<!--]--></a></li>`);
43
+ }
44
+ $$renderer.push(`<!--]--></ul>`);
45
+ }
46
+ $$renderer.push(`<!--]--></section>`);
47
+ });
48
+ }
49
+
50
+ export { _page as default };
51
+ //# sourceMappingURL=_page.svelte-BywGr3Tk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"_page.svelte-BywGr3Tk.js","sources":["../../../.svelte-kit/adapter-node/entries/pages/_page.svelte.js"],"sourcesContent":["import { H as escape_html, V as attr, i as ensure_array_like } from \"../../chunks/dev.js\";\n//#region src/routes/+page.svelte\nfunction _page($$renderer, $$props) {\n\t$$renderer.component(($$renderer) => {\n\t\tlet { data } = $$props;\n\t\t$$renderer.push(`<h1 class=\"mb-6 text-2xl font-semibold\">Dashboard</h1> <section class=\"mb-10\"><h2 class=\"mb-3 text-lg font-semibold\">Tables</h2> `);\n\t\tif (data.dashboard.tables.length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"text-sm text-muted-foreground\">No tables in the current schema.</p>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<ul class=\"space-y-2\"><!--[-->`);\n\t\t\tconst each_array = ensure_array_like(data.dashboard.tables);\n\t\t\tfor (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {\n\t\t\t\tlet table = each_array[$$index];\n\t\t\t\t$$renderer.push(`<li><a${attr(\"href\", `/tables/${table.qualifiedName}`)} class=\"block rounded-md border border-border p-3 transition hover:bg-muted\"><div class=\"font-medium\">${escape_html(table.label)}</div> `);\n\t\t\t\tif (table.description) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"text-sm text-muted-foreground\">${escape_html(table.description)}</div>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></a></li>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></ul>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></section> <section><h2 class=\"mb-3 text-lg font-semibold\">Views</h2> `);\n\t\tif (data.dashboard.views.length === 0) {\n\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t$$renderer.push(`<p class=\"text-sm text-muted-foreground\">No views in the current schema.</p>`);\n\t\t} else {\n\t\t\t$$renderer.push(\"<!--[-1-->\");\n\t\t\t$$renderer.push(`<ul class=\"space-y-2\"><!--[-->`);\n\t\t\tconst each_array_1 = ensure_array_like(data.dashboard.views);\n\t\t\tfor (let $$index_1 = 0, $$length = each_array_1.length; $$index_1 < $$length; $$index_1++) {\n\t\t\t\tlet view = each_array_1[$$index_1];\n\t\t\t\t$$renderer.push(`<li><a${attr(\"href\", `/views/${view.qualifiedName}`)} class=\"block rounded-md border border-border p-3 transition hover:bg-muted\"><div class=\"font-medium\">${escape_html(view.label)}</div> `);\n\t\t\t\tif (view.description) {\n\t\t\t\t\t$$renderer.push(\"<!--[0-->\");\n\t\t\t\t\t$$renderer.push(`<div class=\"text-sm text-muted-foreground\">${escape_html(view.description)}</div>`);\n\t\t\t\t} else $$renderer.push(\"<!--[-1-->\");\n\t\t\t\t$$renderer.push(`<!--]--></a></li>`);\n\t\t\t}\n\t\t\t$$renderer.push(`<!--]--></ul>`);\n\t\t}\n\t\t$$renderer.push(`<!--]--></section>`);\n\t});\n}\n//#endregion\nexport { _page as default };\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { q as escape_html, o as ensure_array_like, a7 as store_mutate, a6 as store_get, d as attr, ab as unsubscribe_stores } from './dev-yRSoS_kM.js';
2
+ import { s as superForm } from './zod-from-table-HRMJdgEv.js';
3
+ import { r as resolveWidget } from './widget-registry-Bfc0OPDn.js';
4
+ import 'clsx';
5
+ import './internal-Dtmf8fV4.js';
6
+ import 'node:module';
7
+ import './index-DBqjc0Yf.js';
8
+ import './client-nr13Vsqj.js';
9
+ import './app-C1bzfcjj.js';
10
+ import './index-5kYmxIr9.js';
11
+ import 'zod/v3';
12
+ import 'zod';
13
+
14
+ //#region src/routes/tables/[table]/new/+page.svelte
15
+ function _page($$renderer, $$props) {
16
+ $$renderer.component(($$renderer) => {
17
+ var $$store_subs;
18
+ let { data } = $$props;
19
+ const { form, errors, submitting } = superForm(data.form, { dataType: "json" });
20
+ let $$settled = true;
21
+ let $$inner_renderer;
22
+ function $$render_inner($$renderer) {
23
+ $$renderer.push(`<h1 class="mb-1 text-2xl font-semibold">New ${escape_html(data.table.label)}</h1> <p class="mb-6 text-sm text-muted-foreground">${escape_html(data.table.qualifiedName)}</p> <form method="POST" class="space-y-4"><!--[-->`);
24
+ const each_array = ensure_array_like(data.table.columns);
25
+ for (let $$index = 0, $$length = each_array.length; $$index < $$length; $$index++) {
26
+ let col = each_array[$$index];
27
+ const Widget = resolveWidget(col.widget);
28
+ $$renderer.push(`<div>`);
29
+ if (Widget) {
30
+ $$renderer.push("<!--[-->");
31
+ Widget($$renderer, {
32
+ name: col.name,
33
+ label: col.label,
34
+ options: col.enumValues,
35
+ required: !col.nullable && !col.readonly && !col.isPrimaryKey,
36
+ readonly: col.readonly,
37
+ get value() {
38
+ return store_get($$store_subs ??= {}, "$form", form)[col.name];
39
+ },
40
+ set value($$value) {
41
+ store_mutate($$store_subs ??= {}, "$form", form, store_get($$store_subs ??= {}, "$form", form)[col.name] = $$value);
42
+ $$settled = false;
43
+ }
44
+ });
45
+ $$renderer.push("<!--]-->");
46
+ } else {
47
+ $$renderer.push("<!--[!-->");
48
+ $$renderer.push("<!--]-->");
49
+ }
50
+ $$renderer.push(` `);
51
+ if (store_get($$store_subs ??= {}, "$errors", errors)[col.name]) {
52
+ $$renderer.push("<!--[0-->");
53
+ $$renderer.push(`<p class="mt-1 text-sm text-destructive">${escape_html(store_get($$store_subs ??= {}, "$errors", errors)[col.name])}</p>`);
54
+ } else $$renderer.push("<!--[-1-->");
55
+ $$renderer.push(`<!--]--></div>`);
56
+ }
57
+ $$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) ? "Saving…" : "Save")}</button> <a${attr("href", `/tables/${data.table.qualifiedName}`)} class="rounded-md border border-border px-4 py-2 text-sm font-medium">Cancel</a></div></form>`);
58
+ }
59
+ do {
60
+ $$settled = true;
61
+ $$inner_renderer = $$renderer.copy();
62
+ $$render_inner($$inner_renderer);
63
+ } while (!$$settled);
64
+ $$renderer.subsume($$inner_renderer);
65
+ if ($$store_subs) unsubscribe_stores($$store_subs);
66
+ });
67
+ }
68
+
69
+ export { _page as default };
70
+ //# sourceMappingURL=_page.svelte-ClFWSFQK.js.map