diff --git a/.prettierrc b/.prettierrc index 2bc5bdb49..b4abb26a1 100644 --- a/.prettierrc +++ b/.prettierrc @@ -14,5 +14,5 @@ "^[./]" ], "importOrderSeparation": true, - "importOrderSortSpecifiers": true, + "importOrderSortSpecifiers": true } \ No newline at end of file diff --git a/apps/achievements/client/manifest.ts b/apps/achievements/client/manifest.ts index 8a97a4305..b2d582bfb 100644 --- a/apps/achievements/client/manifest.ts +++ b/apps/achievements/client/manifest.ts @@ -7,6 +7,6 @@ export default { routes: { achievements: lazy(() => import('@')) }, - togglable: true, + category: '02.Lifestyle' } satisfies ModuleConfig diff --git a/apps/achievements/server/schema.ts b/apps/achievements/server/schema.ts index 81b668b4d..ba273d7d3 100644 --- a/apps/achievements/server/schema.ts +++ b/apps/achievements/server/schema.ts @@ -1,102 +1,102 @@ -import { z } from "zod"; +import z from 'zod' const achievementsSchemas = { entries: { schema: z.object({ title: z.string(), thoughts: z.string(), - difficulty: z.enum(["easy", "medium", "hard", "impossible"]), + difficulty: z.enum(['easy', 'medium', 'hard', 'impossible']), created: z.string(), - updated: z.string(), + updated: z.string() }), raw: { - id: "yqajgwlhsd8so4p", + id: 'yqajgwlhsd8so4p', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "achievements__entries", - type: "base", + name: 'achievements__entries', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "ixmmysb1", + id: 'ixmmysb1', max: 0, min: 0, - name: "title", - pattern: "", + name: 'title', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "cy2emstv", + id: 'cy2emstv', max: 0, min: 0, - name: "thoughts", - pattern: "", + name: 'thoughts', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "auhot6r4", + id: 'auhot6r4', maxSelect: 1, - name: "difficulty", + name: 'difficulty', presentable: false, required: true, system: false, - type: "select", - values: ["easy", "medium", "hard", "impossible"], + type: 'select', + values: ['easy', 'medium', 'hard', 'impossible'] }, { hidden: false, - id: "autodate2990389176", - name: "created", + id: 'autodate2990389176', + name: 'created', onCreate: true, onUpdate: false, presentable: false, system: false, - type: "autodate", + type: 'autodate' }, { hidden: false, - id: "autodate3332085495", - name: "updated", + id: 'autodate3332085495', + name: 'updated', onCreate: true, onUpdate: true, presentable: false, system: false, - type: "autodate", - }, + type: 'autodate' + } ], indexes: [], - system: false, - }, - }, -}; + system: false + } + } +} -export default achievementsSchemas; +export default achievementsSchemas diff --git a/apps/blog/client/manifest.ts b/apps/blog/client/manifest.ts index 411636663..a4a2a10f5 100644 --- a/apps/blog/client/manifest.ts +++ b/apps/blog/client/manifest.ts @@ -7,6 +7,6 @@ export default { blog: lazy(() => import('@')), 'blog/compose': lazy(() => import('@/pages/Compose')) }, - togglable: true, + category: '02.Lifestyle' } diff --git a/apps/blog/server/schema.ts b/apps/blog/server/schema.ts index 333f8d4d4..6d2c3a235 100644 --- a/apps/blog/server/schema.ts +++ b/apps/blog/server/schema.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import z from 'zod' const blogSchemas = { entries: { @@ -7,251 +7,251 @@ const blogSchemas = { title: z.string(), media: z.array(z.string()), excerpt: z.string(), - visibility: z.enum(["private", "public", "unlisted", ""]), + visibility: z.enum(['private', 'public', 'unlisted', '']), featured_image: z.string(), labels: z.any(), category: z.string(), created: z.string(), - updated: z.string(), + updated: z.string() }), raw: { - id: "pbc_2526431808", - listRule: "", - viewRule: "", + id: 'pbc_2526431808', + listRule: '', + viewRule: '', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "blog__entries", - type: "base", + name: 'blog__entries', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text4274335913", + id: 'text4274335913', max: 1000000000000000, min: 0, - name: "content", - pattern: "", + name: 'content', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text724990059", + id: 'text724990059', max: 0, min: 0, - name: "title", - pattern: "", + name: 'title', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "file1781309708", + id: 'file1781309708', maxSelect: 9999, maxSize: 9999999999, mimeTypes: [], - name: "media", + name: 'media', presentable: false, protected: false, required: false, system: false, thumbs: [], - type: "file", + type: 'file' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1591429585", + id: 'text1591429585', max: 0, min: 0, - name: "excerpt", - pattern: "", + name: 'excerpt', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "select1368277760", + id: 'select1368277760', maxSelect: 1, - name: "visibility", + name: 'visibility', presentable: false, required: false, system: false, - type: "select", - values: ["private", "public", "unlisted"], + type: 'select', + values: ['private', 'public', 'unlisted'] }, { hidden: false, - id: "file2624913349", + id: 'file2624913349', maxSelect: 1, maxSize: 0, mimeTypes: [ - "image/jpeg", - "image/png", - "image/svg+xml", - "image/gif", - "image/webp", + 'image/jpeg', + 'image/png', + 'image/svg+xml', + 'image/gif', + 'image/webp' ], - name: "featured_image", + name: 'featured_image', presentable: false, protected: false, required: false, system: false, thumbs: [], - type: "file", + type: 'file' }, { hidden: false, - id: "json3050373649", + id: 'json3050373649', maxSize: 0, - name: "labels", + name: 'labels', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { cascadeDelete: false, - collectionId: "pbc_2994309395", + collectionId: 'pbc_2994309395', hidden: false, - id: "relation105650625", + id: 'relation105650625', maxSelect: 1, minSelect: 0, - name: "category", + name: 'category', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { hidden: false, - id: "autodate2990389176", - name: "created", + id: 'autodate2990389176', + name: 'created', onCreate: true, onUpdate: false, presentable: false, system: false, - type: "autodate", + type: 'autodate' }, { hidden: false, - id: "autodate3332085495", - name: "updated", + id: 'autodate3332085495', + name: 'updated', onCreate: true, onUpdate: true, presentable: false, system: false, - type: "autodate", - }, + type: 'autodate' + } ], indexes: [], - system: false, - }, + system: false + } }, categories: { schema: z.object({ name: z.string(), color: z.string(), - icon: z.string(), + icon: z.string() }), raw: { - id: "pbc_2994309395", - listRule: "", + id: 'pbc_2994309395', + listRule: '', viewRule: null, createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "blog__categories", - type: "base", + name: 'blog__categories', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1579384326", + id: 'text1579384326', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1716930793", + id: 'text1716930793', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1704208859", + id: 'text1704208859', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", - }, + type: 'text' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_GuuYBxu9OR` ON `blog__categories` (`name`)", + 'CREATE UNIQUE INDEX `idx_GuuYBxu9OR` ON `blog__categories` (`name`)' ], - system: false, - }, - }, -}; + system: false + } + } +} -export default blogSchemas; +export default blogSchemas diff --git a/apps/booksLibrary/client/manifest.ts b/apps/booksLibrary/client/manifest.ts index 5715d4be8..ae3145704 100644 --- a/apps/booksLibrary/client/manifest.ts +++ b/apps/booksLibrary/client/manifest.ts @@ -8,6 +8,6 @@ export default { routes: { '': lazy(() => import('@')) }, - togglable: true, + category: '04.Storage' } satisfies ModuleConfig diff --git a/apps/calendar/client/manifest.ts b/apps/calendar/client/manifest.ts index 007447c18..be4b91855 100644 --- a/apps/calendar/client/manifest.ts +++ b/apps/calendar/client/manifest.ts @@ -7,6 +7,6 @@ export default { routes: { calendar: lazy(() => import('@')) }, - togglable: true, + category: '01.Productivity' } satisfies ModuleConfig diff --git a/apps/calendar/server/schema.ts b/apps/calendar/server/schema.ts index 88ecb3ae7..a688f1a1f 100644 --- a/apps/calendar/server/schema.ts +++ b/apps/calendar/server/schema.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import z from 'zod' const calendarSchemas = { events: { @@ -10,498 +10,498 @@ const calendarSchemas = { location_coords: z.object({ lat: z.number(), lon: z.number() }), reference_link: z.string(), description: z.string(), - type: z.enum(["single", "recurring"]), + type: z.enum(['single', 'recurring']), created: z.string(), - updated: z.string(), + updated: z.string() }), raw: { - id: "aq4whvpwcarmpux", + id: 'aq4whvpwcarmpux', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "calendar__events", - type: "base", + name: 'calendar__events', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "flvfazzo", + id: 'flvfazzo', max: 0, min: 0, - name: "title", - pattern: "", + name: 'title', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { cascadeDelete: false, - collectionId: "lgqrpjmgz6rmsrg", + collectionId: 'lgqrpjmgz6rmsrg', hidden: false, - id: "msdsakrs", + id: 'msdsakrs', maxSelect: 1, minSelect: 0, - name: "category", + name: 'category', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { cascadeDelete: false, - collectionId: "pbc_2912871855", + collectionId: 'pbc_2912871855', hidden: false, - id: "relation1856610630", + id: 'relation1856610630', maxSelect: 1, minSelect: 0, - name: "calendar", + name: 'calendar', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1587448267", + id: 'text1587448267', max: 0, min: 0, - name: "location", - pattern: "", + name: 'location', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "geoPoint2468307335", - name: "location_coords", + id: 'geoPoint2468307335', + name: 'location_coords', presentable: false, required: false, system: false, - type: "geoPoint", + type: 'geoPoint' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1097818449", + id: 'text1097818449', max: 0, min: 0, - name: "reference_link", - pattern: "", + name: 'reference_link', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3379474102", + id: 'text3379474102', max: 0, min: 0, - name: "description", - pattern: "", + name: 'description', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "select2363381545", + id: 'select2363381545', maxSelect: 1, - name: "type", + name: 'type', presentable: false, required: true, system: false, - type: "select", - values: ["single", "recurring"], + type: 'select', + values: ['single', 'recurring'] }, { hidden: false, - id: "autodate2990389176", - name: "created", + id: 'autodate2990389176', + name: 'created', onCreate: true, onUpdate: false, presentable: false, system: false, - type: "autodate", + type: 'autodate' }, { hidden: false, - id: "autodate3332085495", - name: "updated", + id: 'autodate3332085495', + name: 'updated', onCreate: true, onUpdate: true, presentable: false, system: false, - type: "autodate", - }, + type: 'autodate' + } ], indexes: [], - system: false, - }, + system: false + } }, categories: { schema: z.object({ name: z.string(), color: z.string(), - icon: z.string(), + icon: z.string() }), raw: { - id: "lgqrpjmgz6rmsrg", + id: 'lgqrpjmgz6rmsrg', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "calendar__categories", - type: "base", + name: 'calendar__categories', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "5gljytxm", + id: '5gljytxm', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "p5zxtnom", + id: 'p5zxtnom', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "tamumamt", + id: 'tamumamt', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", - }, + type: 'text' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_isCrOV2gEh` ON `calendar__categories` (`name`)", + 'CREATE UNIQUE INDEX `idx_isCrOV2gEh` ON `calendar__categories` (`name`)' ], - system: false, - }, + system: false + } }, calendars: { schema: z.object({ name: z.string(), color: z.string(), link: z.url(), - last_synced: z.string(), + last_synced: z.string() }), raw: { - id: "pbc_2912871855", + id: 'pbc_2912871855', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "calendar__calendars", - type: "base", + name: 'calendar__calendars', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1579384326", + id: 'text1579384326', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1716930793", + id: 'text1716930793', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { exceptDomains: null, hidden: false, - id: "url917281265", - name: "link", + id: 'url917281265', + name: 'link', onlyDomains: null, presentable: false, required: false, system: false, - type: "url", + type: 'url' }, { hidden: false, - id: "date2173440322", - max: "", - min: "", - name: "last_synced", + id: 'date2173440322', + max: '', + min: '', + name: 'last_synced', presentable: false, required: false, system: false, - type: "date", - }, + type: 'date' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_qUL2o05YBe` ON `calendar__calendars` (`name`)", + 'CREATE UNIQUE INDEX `idx_qUL2o05YBe` ON `calendar__calendars` (`name`)' ], - system: false, - }, + system: false + } }, events_single: { schema: z.object({ base_event: z.string(), start: z.string(), - end: z.string(), + end: z.string() }), raw: { - id: "pbc_1417836082", + id: 'pbc_1417836082', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "calendar__events_single", - type: "base", + name: 'calendar__events_single', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { cascadeDelete: true, - collectionId: "aq4whvpwcarmpux", + collectionId: 'aq4whvpwcarmpux', hidden: false, - id: "relation3233087073", + id: 'relation3233087073', maxSelect: 1, minSelect: 0, - name: "base_event", + name: 'base_event', presentable: false, required: true, system: false, - type: "relation", + type: 'relation' }, { hidden: false, - id: "date2675529103", - max: "", - min: "", - name: "start", + id: 'date2675529103', + max: '', + min: '', + name: 'start', presentable: false, required: false, system: false, - type: "date", + type: 'date' }, { hidden: false, - id: "date16528305", - max: "", - min: "", - name: "end", + id: 'date16528305', + max: '', + min: '', + name: 'end', presentable: false, required: false, system: false, - type: "date", - }, + type: 'date' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_Z0MvNxCsxl` ON `calendar__events_single` (`base_event`)", + 'CREATE UNIQUE INDEX `idx_Z0MvNxCsxl` ON `calendar__events_single` (`base_event`)' ], - system: false, - }, + system: false + } }, events_recurring: { schema: z.object({ recurring_rule: z.string(), duration_amount: z.number(), - duration_unit: z.enum(["hour", "year", "month", "day", "week"]), + duration_unit: z.enum(['hour', 'year', 'month', 'day', 'week']), exceptions: z.any(), - base_event: z.string(), + base_event: z.string() }), raw: { - id: "pbc_2966426400", + id: 'pbc_2966426400', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "calendar__events_recurring", - type: "base", + name: 'calendar__events_recurring', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text581711714", + id: 'text581711714', max: 0, min: 0, - name: "recurring_rule", - pattern: "", + name: 'recurring_rule', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "number3612257647", + id: 'number3612257647', max: null, min: null, - name: "duration_amount", + name: 'duration_amount', onlyInt: false, presentable: false, required: false, system: false, - type: "number", + type: 'number' }, { hidden: false, - id: "select2414572776", + id: 'select2414572776', maxSelect: 1, - name: "duration_unit", + name: 'duration_unit', presentable: false, required: true, system: false, - type: "select", - values: ["hour", "year", "month", "day", "week"], + type: 'select', + values: ['hour', 'year', 'month', 'day', 'week'] }, { hidden: false, - id: "json678566752", + id: 'json678566752', maxSize: 0, - name: "exceptions", + name: 'exceptions', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { cascadeDelete: true, - collectionId: "aq4whvpwcarmpux", + collectionId: 'aq4whvpwcarmpux', hidden: false, - id: "relation2256903029", + id: 'relation2256903029', maxSelect: 1, minSelect: 0, - name: "base_event", + name: 'base_event', presentable: false, required: true, system: false, - type: "relation", - }, + type: 'relation' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_dyxH0lk7ka` ON `calendar__events_recurring` (`base_event`)", + 'CREATE UNIQUE INDEX `idx_dyxH0lk7ka` ON `calendar__events_recurring` (`base_event`)' ], - system: false, - }, + system: false + } }, events_ical: { schema: z.object({ @@ -512,142 +512,142 @@ const calendarSchemas = { start: z.string(), end: z.string(), location: z.string(), - recurrence_rule: z.string(), + recurrence_rule: z.string() }), raw: { - id: "pbc_3588948690", + id: 'pbc_3588948690', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "calendar__events_ical", - type: "base", + name: 'calendar__events_ical', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { cascadeDelete: true, - collectionId: "pbc_2912871855", + collectionId: 'pbc_2912871855', hidden: false, - id: "relation1856610630", + id: 'relation1856610630', maxSelect: 1, minSelect: 0, - name: "calendar", + name: 'calendar', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text2675300272", + id: 'text2675300272', max: 0, min: 0, - name: "external_id", - pattern: "", + name: 'external_id', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text724990059", + id: 'text724990059', max: 0, min: 0, - name: "title", - pattern: "", + name: 'title', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1843675174", + id: 'text1843675174', max: 0, min: 0, - name: "description", - pattern: "", + name: 'description', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "date2675529103", - max: "", - min: "", - name: "start", + id: 'date2675529103', + max: '', + min: '', + name: 'start', presentable: false, required: false, system: false, - type: "date", + type: 'date' }, { hidden: false, - id: "date16528305", - max: "", - min: "", - name: "end", + id: 'date16528305', + max: '', + min: '', + name: 'end', presentable: false, required: false, system: false, - type: "date", + type: 'date' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1587448267", + id: 'text1587448267', max: 0, min: 0, - name: "location", - pattern: "", + name: 'location', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3329811012", + id: 'text3329811012', max: 0, min: 0, - name: "recurrence_rule", - pattern: "", + name: 'recurrence_rule', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", - }, + type: 'text' + } ], indexes: [], - system: false, - }, - }, -}; + system: false + } + } +} -export default calendarSchemas; +export default calendarSchemas diff --git a/apps/cfopAlgorithms/client/manifest.ts b/apps/cfopAlgorithms/client/manifest.ts index 49291ffaf..1a248fc27 100644 --- a/apps/cfopAlgorithms/client/manifest.ts +++ b/apps/cfopAlgorithms/client/manifest.ts @@ -10,6 +10,6 @@ export default { 'cfop-algorithms/oll': lazy(() => import('@/pages/OLL')), 'cfop-algorithms/pll': lazy(() => import('@/pages/PLL')) }, - togglable: true, + category: '06.Information' } satisfies ModuleConfig diff --git a/apps/changiAirportFlightStatus/client/manifest.ts b/apps/changiAirportFlightStatus/client/manifest.ts index 6e0306105..0a621afda 100644 --- a/apps/changiAirportFlightStatus/client/manifest.ts +++ b/apps/changiAirportFlightStatus/client/manifest.ts @@ -7,6 +7,6 @@ export default { routes: { 'changi-airport-flight-status': lazy(() => import('@')) }, - togglable: true, + category: '06.Information' } satisfies ModuleConfig diff --git a/apps/codeTime/client/src/manifest.ts b/apps/codeTime/client/src/manifest.ts index 68d9bc350..ec7e9d151 100644 --- a/apps/codeTime/client/src/manifest.ts +++ b/apps/codeTime/client/src/manifest.ts @@ -7,6 +7,6 @@ export default { routes: { 'code-time': lazy(() => import('.')) }, - togglable: true, + category: '01.Productivity' } satisfies ModuleConfig diff --git a/apps/codeTime/server/schema.ts b/apps/codeTime/server/schema.ts index 1ab2b8464..c040806fe 100644 --- a/apps/codeTime/server/schema.ts +++ b/apps/codeTime/server/schema.ts @@ -1,159 +1,159 @@ -import { z } from "zod"; +import z from 'zod' const codeTimeSchemas = { projects: { schema: z.object({ name: z.string(), - duration: z.number(), + duration: z.number() }), raw: { - id: "mde1cgke4ktc98i", - listRule: "", - viewRule: "", - createRule: "", - updateRule: "", - deleteRule: "", - name: "code_time__projects", - type: "base", + id: 'mde1cgke4ktc98i', + listRule: '', + viewRule: '', + createRule: '', + updateRule: '', + deleteRule: '', + name: 'code_time__projects', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "mcmnpisn", + id: 'mcmnpisn', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "rv6com9j", + id: 'rv6com9j', max: null, min: null, - name: "duration", + name: 'duration', onlyInt: false, presentable: false, required: false, system: false, - type: "number", - }, + type: 'number' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_kcio2htIml` ON `code_time__projects` (`name`)", + 'CREATE UNIQUE INDEX `idx_kcio2htIml` ON `code_time__projects` (`name`)' ], - system: false, - }, + system: false + } }, languages: { schema: z.object({ name: z.string(), icon: z.string(), color: z.string(), - duration: z.number(), + duration: z.number() }), raw: { - id: "yxs5srmdf2ot8yk", - listRule: "", - viewRule: "", - createRule: "", - updateRule: "", - deleteRule: "", - name: "code_time__languages", - type: "base", + id: 'yxs5srmdf2ot8yk', + listRule: '', + viewRule: '', + createRule: '', + updateRule: '', + deleteRule: '', + name: 'code_time__languages', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "c3yvxq4m", + id: 'c3yvxq4m', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "eqqf2pvy", + id: 'eqqf2pvy', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "t9pq8fub", + id: 't9pq8fub', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "fsr7opin", + id: 'fsr7opin', max: null, min: null, - name: "duration", + name: 'duration', onlyInt: false, presentable: false, required: false, system: false, - type: "number", - }, + type: 'number' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_saW8u2ur3M` ON `code_time__languages` (`name`)", + 'CREATE UNIQUE INDEX `idx_saW8u2ur3M` ON `code_time__languages` (`name`)' ], - system: false, - }, + system: false + } }, daily_entries: { schema: z.object({ @@ -163,114 +163,114 @@ const codeTimeSchemas = { languages: z.any(), hourly: z.any(), total_minutes: z.number(), - last_timestamp: z.number(), + last_timestamp: z.number() }), raw: { - id: "eqmt5t9mkrgxf12", - listRule: "", - viewRule: "", - createRule: "", - updateRule: "", + id: 'eqmt5t9mkrgxf12', + listRule: '', + viewRule: '', + createRule: '', + updateRule: '', deleteRule: null, - name: "code_time__daily_entries", - type: "base", + name: 'code_time__daily_entries', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { hidden: false, - id: "fkysyxdm", - max: "", - min: "", - name: "date", + id: 'fkysyxdm', + max: '', + min: '', + name: 'date', presentable: false, required: false, system: false, - type: "date", + type: 'date' }, { hidden: false, - id: "s58x23cf", + id: 's58x23cf', maxSize: 2000000, - name: "relative_files", + name: 'relative_files', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { hidden: false, - id: "nscrac1f", + id: 'nscrac1f', maxSize: 2000000, - name: "projects", + name: 'projects', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { hidden: false, - id: "aep18wlt", + id: 'aep18wlt', maxSize: 2000000, - name: "languages", + name: 'languages', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { hidden: false, - id: "json2768424363", + id: 'json2768424363', maxSize: 0, - name: "hourly", + name: 'hourly', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { hidden: false, - id: "8xsxx2hj", + id: '8xsxx2hj', max: null, min: null, - name: "total_minutes", + name: 'total_minutes', onlyInt: false, presentable: false, required: false, system: false, - type: "number", + type: 'number' }, { hidden: false, - id: "av07akcm", + id: 'av07akcm', max: null, min: null, - name: "last_timestamp", + name: 'last_timestamp', onlyInt: false, presentable: false, required: false, system: false, - type: "number", - }, + type: 'number' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_B0mAWvxXcb` ON `code_time__daily_entries` (`date`)", + 'CREATE UNIQUE INDEX `idx_B0mAWvxXcb` ON `code_time__daily_entries` (`date`)' ], - system: false, - }, - }, -}; + system: false + } + } +} -export default codeTimeSchemas; +export default codeTimeSchemas diff --git a/apps/currencyConverter/client/manifest.ts b/apps/currencyConverter/client/manifest.ts index 9f9be7b13..7b5656013 100644 --- a/apps/currencyConverter/client/manifest.ts +++ b/apps/currencyConverter/client/manifest.ts @@ -7,6 +7,6 @@ export default { routes: { 'currency-converter': lazy(() => import('@')) }, - togglable: true, + category: '07.Utilities' } satisfies ModuleConfig diff --git a/apps/ideaBox/client/manifest.ts b/apps/ideaBox/client/manifest.ts index 2affaa73e..9d49c4edf 100644 --- a/apps/ideaBox/client/manifest.ts +++ b/apps/ideaBox/client/manifest.ts @@ -8,6 +8,6 @@ export default { 'idea-box': lazy(() => import('@/pages/Containers')), 'idea-box/:id/*': lazy(() => import('@/pages/Ideas')) }, - togglable: true, + category: '01.Productivity' } satisfies ModuleConfig diff --git a/apps/ideaBox/server/schema.ts b/apps/ideaBox/server/schema.ts index 17930fbe4..eea4bf06b 100644 --- a/apps/ideaBox/server/schema.ts +++ b/apps/ideaBox/server/schema.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import z from 'zod' const ideaBoxSchemas = { containers: { @@ -8,243 +8,243 @@ const ideaBoxSchemas = { name: z.string(), cover: z.string(), pinned: z.boolean(), - hidden: z.boolean(), + hidden: z.boolean() }), raw: { - id: "10yi8esudwbgz4n", + id: '10yi8esudwbgz4n', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "idea_box__containers", - type: "base", + name: 'idea_box__containers', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "raujcrkq", + id: 'raujcrkq', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "hvuukigw", + id: 'hvuukigw', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "spxeebso", + id: 'spxeebso', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "file2366146245", + id: 'file2366146245', maxSelect: 1, maxSize: 0, mimeTypes: [ - "image/jpeg", - "image/png", - "image/svg+xml", - "image/gif", - "image/webp", + 'image/jpeg', + 'image/png', + 'image/svg+xml', + 'image/gif', + 'image/webp' ], - name: "cover", + name: 'cover', presentable: false, protected: false, required: false, system: false, - thumbs: ["0x300"], - type: "file", + thumbs: ['0x300'], + type: 'file' }, { hidden: false, - id: "bool3844597223", - name: "pinned", + id: 'bool3844597223', + name: 'pinned', presentable: false, required: false, system: false, - type: "bool", + type: 'bool' }, { hidden: false, - id: "bool2287856061", - name: "hidden", + id: 'bool2287856061', + name: 'hidden', presentable: false, required: false, system: false, - type: "bool", - }, + type: 'bool' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_pLEjolJLL4` ON `idea_box__containers` (`name`)", + 'CREATE UNIQUE INDEX `idx_pLEjolJLL4` ON `idea_box__containers` (`name`)' ], - system: false, - }, + system: false + } }, entries: { schema: z.object({ - type: z.enum(["text", "image", "link"]), + type: z.enum(['text', 'image', 'link']), container: z.string(), folder: z.string(), pinned: z.boolean(), archived: z.boolean(), tags: z.any(), created: z.string(), - updated: z.string(), + updated: z.string() }), raw: { - id: "g5fdcy099cdntzt", + id: 'g5fdcy099cdntzt', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "idea_box__entries", - type: "base", + name: 'idea_box__entries', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { hidden: false, - id: "szythmmj", + id: 'szythmmj', maxSelect: 1, - name: "type", + name: 'type', presentable: false, required: true, system: false, - type: "select", - values: ["text", "image", "link"], + type: 'select', + values: ['text', 'image', 'link'] }, { cascadeDelete: true, - collectionId: "10yi8esudwbgz4n", + collectionId: '10yi8esudwbgz4n', hidden: false, - id: "tzxfjxmw", + id: 'tzxfjxmw', maxSelect: 1, minSelect: 0, - name: "container", + name: 'container', presentable: false, required: true, system: false, - type: "relation", + type: 'relation' }, { cascadeDelete: true, - collectionId: "5hcu9coxoz9yauz", + collectionId: '5hcu9coxoz9yauz', hidden: false, - id: "6pdlg70r", + id: '6pdlg70r', maxSelect: 1, minSelect: 0, - name: "folder", + name: 'folder', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { hidden: false, - id: "26gry9te", - name: "pinned", + id: '26gry9te', + name: 'pinned', presentable: false, required: false, system: false, - type: "bool", + type: 'bool' }, { hidden: false, - id: "x9rx6y5a", - name: "archived", + id: 'x9rx6y5a', + name: 'archived', presentable: false, required: false, system: false, - type: "bool", + type: 'bool' }, { hidden: false, - id: "json1874629670", + id: 'json1874629670', maxSize: 0, - name: "tags", + name: 'tags', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { hidden: false, - id: "autodate2990389176", - name: "created", + id: 'autodate2990389176', + name: 'created', onCreate: true, onUpdate: false, presentable: false, system: false, - type: "autodate", + type: 'autodate' }, { hidden: false, - id: "autodate3332085495", - name: "updated", + id: 'autodate3332085495', + name: 'updated', onCreate: true, onUpdate: true, presentable: false, system: false, - type: "autodate", - }, + type: 'autodate' + } ], indexes: [], - system: false, - }, + system: false + } }, folders: { schema: z.object({ @@ -252,197 +252,197 @@ const ideaBoxSchemas = { name: z.string(), color: z.string(), icon: z.string(), - parent: z.string(), + parent: z.string() }), raw: { - id: "5hcu9coxoz9yauz", + id: '5hcu9coxoz9yauz', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "idea_box__folders", - type: "base", + name: 'idea_box__folders', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { cascadeDelete: true, - collectionId: "10yi8esudwbgz4n", + collectionId: '10yi8esudwbgz4n', hidden: false, - id: "codeuv2z", + id: 'codeuv2z', maxSelect: 1, minSelect: 0, - name: "container", + name: 'container', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "cketui8k", + id: 'cketui8k', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "yft2ibc2", + id: 'yft2ibc2', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "yjsyuj9u", + id: 'yjsyuj9u', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { cascadeDelete: true, - collectionId: "5hcu9coxoz9yauz", + collectionId: '5hcu9coxoz9yauz', hidden: false, - id: "6bvlcx9c", + id: '6bvlcx9c', maxSelect: 1, minSelect: 0, - name: "parent", + name: 'parent', presentable: false, required: false, system: false, - type: "relation", - }, + type: 'relation' + } ], indexes: [], - system: false, - }, + system: false + } }, tags: { schema: z.object({ name: z.string(), icon: z.string(), color: z.string(), - container: z.string(), + container: z.string() }), raw: { - id: "pbc_180691175", + id: 'pbc_180691175', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "idea_box__tags", - type: "base", + name: 'idea_box__tags', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1579384326", + id: 'text1579384326', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1704208859", + id: 'text1704208859', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1716930793", + id: 'text1716930793', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { cascadeDelete: true, - collectionId: "10yi8esudwbgz4n", + collectionId: '10yi8esudwbgz4n', hidden: false, - id: "relation3349343259", + id: 'relation3349343259', maxSelect: 1, minSelect: 0, - name: "container", + name: 'container', presentable: false, required: false, system: false, - type: "relation", - }, + type: 'relation' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_VY136WXYHm` ON `idea_box_tags` (\n `name`,\n `container`\n)", + 'CREATE UNIQUE INDEX `idx_VY136WXYHm` ON `idea_box_tags` (\n `name`,\n `container`\n)' ], - system: false, - }, + system: false + } }, tags_aggregated: { schema: z.object({ @@ -450,105 +450,105 @@ const ideaBoxSchemas = { color: z.string(), icon: z.string(), container: z.string(), - amount: z.number(), + amount: z.number() }), raw: { - id: "pbc_3145449922", + id: 'pbc_3145449922', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: null, updateRule: null, deleteRule: null, - name: "idea_box__tags_aggregated", - type: "view", + name: 'idea_box__tags_aggregated', + type: 'view', fields: [ { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 0, min: 0, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_Hvdl", + id: '_clone_Hvdl', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_Npv3", + id: '_clone_Npv3', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_cvMl", + id: '_clone_cvMl', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { cascadeDelete: true, - collectionId: "10yi8esudwbgz4n", + collectionId: '10yi8esudwbgz4n', hidden: false, - id: "_clone_X9hN", + id: '_clone_X9hN', maxSelect: 1, minSelect: 0, - name: "container", + name: 'container', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { hidden: false, - id: "number2392944706", + id: 'number2392944706', max: null, min: null, - name: "amount", + name: 'amount', onlyInt: false, presentable: false, required: false, system: false, - type: "number", - }, + type: 'number' + } ], indexes: [], system: false, viewQuery: - "WITH entry_tag_map AS (\n SELECT\n idea_box__entries.id AS entry_id,\n idea_box__entries.container as entry_container,\n json_each.value AS tag_name\n FROM\n idea_box__entries,\n json_each(idea_box__entries.tags)\n WHERE\n idea_box__entries.archived = FALSE\n)\nSELECT \n idea_box__tags.id,\n idea_box__tags.name,\n idea_box__tags.color,\n idea_box__tags.icon,\n idea_box__tags.container,\n count(entry_tag_map.entry_id) as amount\nFROM \n idea_box__tags\nLEFT JOIN entry_tag_map \n ON entry_tag_map.tag_name = idea_box__tags.name\n AND entry_tag_map.entry_container = idea_box__tags.container\nGROUP BY \n idea_box__tags.id", - }, + 'WITH entry_tag_map AS (\n SELECT\n idea_box__entries.id AS entry_id,\n idea_box__entries.container as entry_container,\n json_each.value AS tag_name\n FROM\n idea_box__entries,\n json_each(idea_box__entries.tags)\n WHERE\n idea_box__entries.archived = FALSE\n)\nSELECT \n idea_box__tags.id,\n idea_box__tags.name,\n idea_box__tags.color,\n idea_box__tags.icon,\n idea_box__tags.container,\n count(entry_tag_map.entry_id) as amount\nFROM \n idea_box__tags\nLEFT JOIN entry_tag_map \n ON entry_tag_map.tag_name = idea_box__tags.name\n AND entry_tag_map.entry_container = idea_box__tags.container\nGROUP BY \n idea_box__tags.id' + } }, containers_aggregated: { schema: z.object({ @@ -560,341 +560,341 @@ const ideaBoxSchemas = { hidden: z.boolean(), text_count: z.number(), link_count: z.number(), - image_count: z.number(), + image_count: z.number() }), raw: { - id: "pbc_3754909733", + id: 'pbc_3754909733', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: null, updateRule: null, deleteRule: null, - name: "idea_box__containers_aggregated", - type: "view", + name: 'idea_box__containers_aggregated', + type: 'view', fields: [ { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 0, min: 0, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_0lJw", + id: '_clone_0lJw', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_IxCk", + id: '_clone_IxCk', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_dztZ", + id: '_clone_dztZ', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "_clone_v8GV", + id: '_clone_v8GV', maxSelect: 1, maxSize: 0, mimeTypes: [ - "image/jpeg", - "image/png", - "image/svg+xml", - "image/gif", - "image/webp", + 'image/jpeg', + 'image/png', + 'image/svg+xml', + 'image/gif', + 'image/webp' ], - name: "cover", + name: 'cover', presentable: false, protected: false, required: false, system: false, - thumbs: ["0x300"], - type: "file", + thumbs: ['0x300'], + type: 'file' }, { hidden: false, - id: "_clone_WQOF", - name: "pinned", + id: '_clone_WQOF', + name: 'pinned', presentable: false, required: false, system: false, - type: "bool", + type: 'bool' }, { hidden: false, - id: "_clone_dcAp", - name: "hidden", + id: '_clone_dcAp', + name: 'hidden', presentable: false, required: false, system: false, - type: "bool", + type: 'bool' }, { hidden: false, - id: "number3547201087", + id: 'number3547201087', max: null, min: null, - name: "text_count", + name: 'text_count', onlyInt: false, presentable: false, required: false, system: false, - type: "number", + type: 'number' }, { hidden: false, - id: "number711071932", + id: 'number711071932', max: null, min: null, - name: "link_count", + name: 'link_count', onlyInt: false, presentable: false, required: false, system: false, - type: "number", + type: 'number' }, { hidden: false, - id: "number2459746507", + id: 'number2459746507', max: null, min: null, - name: "image_count", + name: 'image_count', onlyInt: false, presentable: false, required: false, system: false, - type: "number", - }, + type: 'number' + } ], indexes: [], system: false, viewQuery: - "SELECT\n idea_box__containers.id,\n idea_box__containers.name,\n idea_box__containers.color,\n idea_box__containers.icon,\n idea_box__containers.cover,\n idea_box__containers.pinned,\n idea_box__containers.hidden,\n COUNT(CASE WHEN idea_box__entries.type = 'text' THEN 1 END) AS text_count,\n COUNT(CASE WHEN idea_box__entries.type = 'link' THEN 1 END) AS link_count,\n COUNT(CASE WHEN idea_box__entries.type = 'image' THEN 1 END) AS image_count\nFROM idea_box__containers\nLEFT JOIN idea_box__entries\n ON idea_box__entries.container = idea_box__containers.id\n AND idea_box__entries.archived = false\nGROUP BY idea_box__containers.id\n", - }, + "SELECT\n idea_box__containers.id,\n idea_box__containers.name,\n idea_box__containers.color,\n idea_box__containers.icon,\n idea_box__containers.cover,\n idea_box__containers.pinned,\n idea_box__containers.hidden,\n COUNT(CASE WHEN idea_box__entries.type = 'text' THEN 1 END) AS text_count,\n COUNT(CASE WHEN idea_box__entries.type = 'link' THEN 1 END) AS link_count,\n COUNT(CASE WHEN idea_box__entries.type = 'image' THEN 1 END) AS image_count\nFROM idea_box__containers\nLEFT JOIN idea_box__entries\n ON idea_box__entries.container = idea_box__containers.id\n AND idea_box__entries.archived = false\nGROUP BY idea_box__containers.id\n" + } }, entries_text: { schema: z.object({ base_entry: z.string(), - content: z.string(), + content: z.string() }), raw: { - id: "pbc_3433603498", + id: 'pbc_3433603498', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "idea_box__entries_text", - type: "base", + name: 'idea_box__entries_text', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { cascadeDelete: true, - collectionId: "g5fdcy099cdntzt", + collectionId: 'g5fdcy099cdntzt', hidden: false, - id: "relation2517240994", + id: 'relation2517240994', maxSelect: 1, minSelect: 0, - name: "base_entry", + name: 'base_entry', presentable: false, required: true, system: false, - type: "relation", + type: 'relation' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text4274335913", + id: 'text4274335913', max: 0, min: 0, - name: "content", - pattern: "", + name: 'content', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", - }, + type: 'text' + } ], indexes: [], - system: false, - }, + system: false + } }, entries_link: { schema: z.object({ link: z.url(), - base_entry: z.string(), + base_entry: z.string() }), raw: { - id: "pbc_3247415196", + id: 'pbc_3247415196', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "idea_box__entries_link", - type: "base", + name: 'idea_box__entries_link', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { exceptDomains: null, hidden: false, - id: "url917281265", - name: "link", + id: 'url917281265', + name: 'link', onlyDomains: null, presentable: false, required: true, system: false, - type: "url", + type: 'url' }, { cascadeDelete: true, - collectionId: "g5fdcy099cdntzt", + collectionId: 'g5fdcy099cdntzt', hidden: false, - id: "relation2632451253", + id: 'relation2632451253', maxSelect: 1, minSelect: 0, - name: "base_entry", + name: 'base_entry', presentable: false, required: true, system: false, - type: "relation", - }, + type: 'relation' + } ], indexes: [], - system: false, - }, + system: false + } }, entries_image: { schema: z.object({ image: z.string(), - base_entry: z.string(), + base_entry: z.string() }), raw: { - id: "pbc_4140382908", + id: 'pbc_4140382908', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "idea_box__entries_image", - type: "base", + name: 'idea_box__entries_image', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { hidden: false, - id: "file3309110367", + id: 'file3309110367', maxSelect: 1, maxSize: 9999999999, mimeTypes: [ - "image/jpeg", - "image/png", - "image/svg+xml", - "image/gif", - "image/webp", + 'image/jpeg', + 'image/png', + 'image/svg+xml', + 'image/gif', + 'image/webp' ], - name: "image", + name: 'image', presentable: false, protected: false, required: true, system: false, thumbs: [], - type: "file", + type: 'file' }, { cascadeDelete: true, - collectionId: "g5fdcy099cdntzt", + collectionId: 'g5fdcy099cdntzt', hidden: false, - id: "relation2632451253", + id: 'relation2632451253', maxSelect: 1, minSelect: 0, - name: "base_entry", + name: 'base_entry', presentable: false, required: true, system: false, - type: "relation", - }, + type: 'relation' + } ], indexes: [], - system: false, - }, - }, -}; + system: false + } + } +} -export default ideaBoxSchemas; +export default ideaBoxSchemas diff --git a/apps/momentVault/client/manifest.ts b/apps/momentVault/client/manifest.ts index c7bd2eb05..d01bc9251 100644 --- a/apps/momentVault/client/manifest.ts +++ b/apps/momentVault/client/manifest.ts @@ -8,7 +8,7 @@ export default { routes: { 'moment-vault': lazy(() => import('@')) }, - togglable: true, + requiredAPIKeys: ['openai'], category: '02.Lifestyle' } satisfies ModuleConfig diff --git a/apps/momentVault/server/schema.ts b/apps/momentVault/server/schema.ts index cd06d96c8..4a50425e1 100644 --- a/apps/momentVault/server/schema.ts +++ b/apps/momentVault/server/schema.ts @@ -1,117 +1,117 @@ -import { z } from "zod"; +import z from 'zod' const momentVaultSchemas = { entries: { schema: z.object({ - type: z.enum(["text", "audio", "video", "photos", ""]), + type: z.enum(['text', 'audio', 'video', 'photos', '']), file: z.array(z.string()), content: z.string(), transcription: z.string(), created: z.string(), - updated: z.string(), + updated: z.string() }), raw: { - id: "pbc_2203688272", + id: 'pbc_2203688272', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "moment_vault__entries", - type: "base", + name: 'moment_vault__entries', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { hidden: false, - id: "select2363381545", + id: 'select2363381545', maxSelect: 1, - name: "type", + name: 'type', presentable: false, required: false, system: false, - type: "select", - values: ["text", "audio", "video", "photos"], + type: 'select', + values: ['text', 'audio', 'video', 'photos'] }, { hidden: false, - id: "file2359244304", + id: 'file2359244304', maxSelect: 99, maxSize: 9999999999, mimeTypes: [], - name: "file", + name: 'file', presentable: false, protected: false, required: false, system: false, thumbs: [], - type: "file", + type: 'file' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text4274335913", + id: 'text4274335913', max: 0, min: 0, - name: "content", - pattern: "", + name: 'content', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text849144196", + id: 'text849144196', max: 0, min: 0, - name: "transcription", - pattern: "", + name: 'transcription', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "autodate2990389176", - name: "created", + id: 'autodate2990389176', + name: 'created', onCreate: true, onUpdate: false, presentable: false, system: false, - type: "autodate", + type: 'autodate' }, { hidden: false, - id: "autodate3332085495", - name: "updated", + id: 'autodate3332085495', + name: 'updated', onCreate: true, onUpdate: true, presentable: false, system: false, - type: "autodate", - }, + type: 'autodate' + } ], indexes: [], - system: false, - }, - }, -}; + system: false + } + } +} -export default momentVaultSchemas; +export default momentVaultSchemas diff --git a/apps/movies/client/manifest.ts b/apps/movies/client/manifest.ts index 3001ab284..628a463cb 100644 --- a/apps/movies/client/manifest.ts +++ b/apps/movies/client/manifest.ts @@ -7,7 +7,7 @@ export default { routes: { movies: lazy(() => import('@')) }, - togglable: true, + requiredAPIKeys: ['tmdb'], category: '02.Lifestyle' } satisfies ModuleConfig diff --git a/apps/movies/server/schema.ts b/apps/movies/server/schema.ts index dbe1d5a81..7c18d5d4a 100644 --- a/apps/movies/server/schema.ts +++ b/apps/movies/server/schema.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import z from 'zod' const moviesSchemas = { entries: { @@ -20,258 +20,258 @@ const moviesSchemas = { theatre_location: z.string(), theatre_location_coords: z.object({ lat: z.number(), lon: z.number() }), theatre_number: z.string(), - is_watched: z.boolean(), + is_watched: z.boolean() }), raw: { - id: "pbc_123468663", + id: 'pbc_123468663', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "movies__entries", - type: "base", + name: 'movies__entries', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { hidden: false, - id: "number1438434789", + id: 'number1438434789', max: null, min: null, - name: "tmdb_id", + name: 'tmdb_id', onlyInt: false, presentable: false, required: false, system: false, - type: "number", + type: 'number' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text724990059", + id: 'text724990059', max: 0, min: 0, - name: "title", - pattern: "", + name: 'title', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3834026137", + id: 'text3834026137', max: 0, min: 0, - name: "original_title", - pattern: "", + name: 'original_title', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text762383602", + id: 'text762383602', max: 0, min: 0, - name: "poster", - pattern: "", + name: 'poster', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "json2834031894", + id: 'json2834031894', maxSize: 0, - name: "genres", + name: 'genres', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { hidden: false, - id: "number2254405824", + id: 'number2254405824', max: null, min: null, - name: "duration", + name: 'duration', onlyInt: false, presentable: false, required: false, system: false, - type: "number", + type: 'number' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3888370107", + id: 'text3888370107', max: 0, min: 0, - name: "overview", - pattern: "", + name: 'overview', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "json3773345755", + id: 'json3773345755', maxSize: 0, - name: "countries", + name: 'countries', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3571151285", + id: 'text3571151285', max: 0, min: 0, - name: "language", - pattern: "", + name: 'language', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "date4215628054", - max: "", - min: "", - name: "release_date", + id: 'date4215628054', + max: '', + min: '', + name: 'release_date', presentable: false, required: false, system: false, - type: "date", + type: 'date' }, { hidden: false, - id: "date1180390397", - max: "", - min: "", - name: "watch_date", + id: 'date1180390397', + max: '', + min: '', + name: 'watch_date', presentable: false, required: false, system: false, - type: "date", + type: 'date' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3973215647", + id: 'text3973215647', max: 0, min: 0, - name: "ticket_number", - pattern: "", + name: 'ticket_number', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1742151851", + id: 'text1742151851', max: 0, min: 0, - name: "theatre_seat", - pattern: "", + name: 'theatre_seat', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "date3428949474", - max: "", - min: "", - name: "theatre_showtime", + id: 'date3428949474', + max: '', + min: '', + name: 'theatre_showtime', presentable: false, required: false, system: false, - type: "date", + type: 'date' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text2447088056", + id: 'text2447088056', max: 0, min: 0, - name: "theatre_location", - pattern: "", + name: 'theatre_location', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "geoPoint4084498627", - name: "theatre_location_coords", + id: 'geoPoint4084498627', + name: 'theatre_location_coords', presentable: false, required: false, system: false, - type: "geoPoint", + type: 'geoPoint' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text2138584574", + id: 'text2138584574', max: 0, min: 0, - name: "theatre_number", - pattern: "", + name: 'theatre_number', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "bool1180390397", - name: "is_watched", + id: 'bool1180390397', + name: 'is_watched', presentable: false, required: false, system: false, - type: "bool", - }, + type: 'bool' + } ], indexes: [], - system: false, - }, - }, -}; + system: false + } + } +} -export default moviesSchemas; +export default moviesSchemas diff --git a/apps/music/client/manifest.ts b/apps/music/client/manifest.ts index 577a1be28..e456cef9c 100644 --- a/apps/music/client/manifest.ts +++ b/apps/music/client/manifest.ts @@ -7,6 +7,6 @@ export default { routes: { music: lazy(() => import('@')) }, - togglable: true, + category: '04.Storage' } satisfies ModuleConfig diff --git a/apps/music/server/schema.ts b/apps/music/server/schema.ts index 7511b9e4a..62ea179d1 100644 --- a/apps/music/server/schema.ts +++ b/apps/music/server/schema.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import z from 'zod' const musicSchemas = { entries: { @@ -7,116 +7,116 @@ const musicSchemas = { duration: z.string(), author: z.string(), file: z.string(), - is_favourite: z.boolean(), + is_favourite: z.boolean() }), raw: { - id: "ud0dpvvhcjj4jiw", + id: 'ud0dpvvhcjj4jiw', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "music__entries", - type: "base", + name: 'music__entries', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "bdxbqwdv", + id: 'bdxbqwdv', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "7e11dvi3", + id: '7e11dvi3', max: 0, min: 0, - name: "duration", - pattern: "", + name: 'duration', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "ucubj502", + id: 'ucubj502', max: 0, min: 0, - name: "author", - pattern: "", + name: 'author', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "wwccga9q", + id: 'wwccga9q', maxSelect: 1, maxSize: 1073741824, mimeTypes: [ - "audio/mpeg", - "audio/flac", - "audio/midi", - "audio/ogg", - "audio/ape", - "audio/musepack", - "audio/amr", - "audio/wav", - "audio/aiff", - "audio/basic", - "audio/aac", - "audio/x-unknown", - "audio/mp4", + 'audio/mpeg', + 'audio/flac', + 'audio/midi', + 'audio/ogg', + 'audio/ape', + 'audio/musepack', + 'audio/amr', + 'audio/wav', + 'audio/aiff', + 'audio/basic', + 'audio/aac', + 'audio/x-unknown', + 'audio/mp4' ], - name: "file", + name: 'file', presentable: false, protected: false, required: false, system: false, thumbs: null, - type: "file", + type: 'file' }, { hidden: false, - id: "ziq6worb", - name: "is_favourite", + id: 'ziq6worb', + name: 'is_favourite', presentable: false, required: false, system: false, - type: "bool", - }, + type: 'bool' + } ], indexes: [], - system: false, - }, - }, -}; + system: false + } + } +} -export default musicSchemas; +export default musicSchemas diff --git a/apps/passwords/client/manifest.ts b/apps/passwords/client/manifest.ts index 0fb372674..48800df05 100644 --- a/apps/passwords/client/manifest.ts +++ b/apps/passwords/client/manifest.ts @@ -7,6 +7,6 @@ export default { routes: { passwords: lazy(() => import('@')) }, - togglable: true, + category: '05.Confidential' } satisfies ModuleConfig diff --git a/apps/passwords/server/routes/master.ts b/apps/passwords/server/routes/master.ts index 1b56389a9..e16d733fa 100644 --- a/apps/passwords/server/routes/master.ts +++ b/apps/passwords/server/routes/master.ts @@ -30,7 +30,7 @@ const create = forgeController const masterPasswordHash = await bcrypt.hash(password, salt) await pb.update - .collection('users__users') + .collection('user__users') .id(pb.instance.authStore.record!.id) .data({ masterPasswordHash @@ -50,7 +50,7 @@ const verify = forgeController const decryptedMaster = decrypt2(password, challenge) const user = await pb.getOne - .collection('users__users') + .collection('user__users') .id(pb.instance.authStore.record!.id) .execute() diff --git a/apps/passwords/server/schema.ts b/apps/passwords/server/schema.ts index 85b05a375..e696bf9e8 100644 --- a/apps/passwords/server/schema.ts +++ b/apps/passwords/server/schema.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import z from 'zod' const passwordsSchemas = { entries: { @@ -11,150 +11,150 @@ const passwordsSchemas = { color: z.string(), pinned: z.boolean(), created: z.string(), - updated: z.string(), + updated: z.string() }), raw: { - id: "tgblyh0po4v8d1o", + id: 'tgblyh0po4v8d1o', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "passwords__entries", - type: "base", + name: 'passwords__entries', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "f4ty6h3t", + id: 'f4ty6h3t', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "erv1avc6", + id: 'erv1avc6', max: 0, min: 0, - name: "website", - pattern: "", + name: 'website', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "levsseul", + id: 'levsseul', max: 0, min: 0, - name: "username", - pattern: "", + name: 'username', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "rk3jhjg6", + id: 'rk3jhjg6', max: 0, min: 0, - name: "password", - pattern: "", + name: 'password', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "oaez30fw", + id: 'oaez30fw', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "g8lfhqc5", + id: 'g8lfhqc5', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "ckvtxdlg", - name: "pinned", + id: 'ckvtxdlg', + name: 'pinned', presentable: false, required: false, system: false, - type: "bool", + type: 'bool' }, { hidden: false, - id: "autodate2990389176", - name: "created", + id: 'autodate2990389176', + name: 'created', onCreate: true, onUpdate: false, presentable: false, system: false, - type: "autodate", + type: 'autodate' }, { hidden: false, - id: "autodate3332085495", - name: "updated", + id: 'autodate3332085495', + name: 'updated', onCreate: true, onUpdate: true, presentable: false, system: false, - type: "autodate", - }, + type: 'autodate' + } ], indexes: [], - system: false, - }, - }, -}; + system: false + } + } +} -export default passwordsSchemas; +export default passwordsSchemas diff --git a/apps/passwords/server/utils/getDecryptedMaster.ts b/apps/passwords/server/utils/getDecryptedMaster.ts index fbba9ccdd..405f903f9 100644 --- a/apps/passwords/server/utils/getDecryptedMaster.ts +++ b/apps/passwords/server/utils/getDecryptedMaster.ts @@ -11,7 +11,7 @@ export const getDecryptedMaster = async ( challenge: string ): Promise => { const { masterPasswordHash } = pb.instance.authStore - .record as unknown as z.infer + .record as unknown as z.infer const decryptedMaster = decrypt2(master, challenge) diff --git a/apps/railwayMap/client/manifest.ts b/apps/railwayMap/client/manifest.ts index 003fb381b..84fbb5d88 100644 --- a/apps/railwayMap/client/manifest.ts +++ b/apps/railwayMap/client/manifest.ts @@ -8,6 +8,6 @@ export default { routes: { '': lazy(() => import('@')) }, - togglable: true, + category: '06.Information' } satisfies ModuleConfig diff --git a/apps/railwayMap/server/schema.ts b/apps/railwayMap/server/schema.ts index 2a1b7c706..bdd2e754b 100644 --- a/apps/railwayMap/server/schema.ts +++ b/apps/railwayMap/server/schema.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import z from 'zod' const railwayMapSchemas = { lines: { @@ -9,126 +9,126 @@ const railwayMapSchemas = { name: z.string(), color: z.string(), ways: z.any(), - map_paths: z.any(), + map_paths: z.any() }), raw: { - id: "pbc_1897454554", + id: 'pbc_1897454554', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "railway_map__lines", - type: "base", + name: 'railway_map__lines', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1400097126", + id: 'text1400097126', max: 0, min: 0, - name: "country", - pattern: "", + name: 'country', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text2363381545", + id: 'text2363381545', max: 0, min: 0, - name: "type", - pattern: "", + name: 'type', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1997877400", + id: 'text1997877400', max: 0, min: 0, - name: "code", - pattern: "", + name: 'code', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1579384326", + id: 'text1579384326', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1716930793", + id: 'text1716930793', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "json2840069143", + id: 'json2840069143', maxSize: 0, - name: "ways", + name: 'ways', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { hidden: false, - id: "json189581693", + id: 'json189581693', maxSize: 0, - name: "map_paths", + name: 'map_paths', presentable: false, required: false, system: false, - type: "json", - }, + type: 'json' + } ], indexes: [], - system: false, - }, + system: false + } }, stations: { schema: z.object({ @@ -140,146 +140,146 @@ const railwayMapSchemas = { map_data: z.any(), type: z.string(), distances: z.any(), - map_image: z.string(), + map_image: z.string() }), raw: { - id: "pbc_1340498464", + id: 'pbc_1340498464', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "railway_map__stations", - type: "base", + name: 'railway_map__stations', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1579384326", + id: 'text1579384326', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text196455508", + id: 'text196455508', max: 0, min: 0, - name: "desc", - pattern: "", + name: 'desc', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { cascadeDelete: true, - collectionId: "pbc_1897454554", + collectionId: 'pbc_1897454554', hidden: false, - id: "relation1325501590", + id: 'relation1325501590', maxSelect: 999, minSelect: 0, - name: "lines", + name: 'lines', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { hidden: false, - id: "json3853369677", + id: 'json3853369677', maxSize: 0, - name: "codes", + name: 'codes', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { hidden: false, - id: "json3631081861", + id: 'json3631081861', maxSize: 0, - name: "coords", + name: 'coords', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { hidden: false, - id: "json2632528569", + id: 'json2632528569', maxSize: 0, - name: "map_data", + name: 'map_data', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text2363381545", + id: 'text2363381545', max: 0, min: 0, - name: "type", - pattern: "", + name: 'type', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "json2175659559", + id: 'json2175659559', maxSize: 0, - name: "distances", + name: 'distances', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { hidden: false, - id: "file1170950963", + id: 'file1170950963', maxSelect: 1, maxSize: 0, mimeTypes: [], - name: "map_image", + name: 'map_image', presentable: false, protected: false, required: false, system: false, thumbs: [], - type: "file", - }, + type: 'file' + } ], indexes: [], - system: false, - }, - }, -}; + system: false + } + } +} -export default railwayMapSchemas; +export default railwayMapSchemas diff --git a/apps/scoresLibrary/client/manifest.ts b/apps/scoresLibrary/client/manifest.ts index 120a9ebaf..2b66ffcd8 100644 --- a/apps/scoresLibrary/client/manifest.ts +++ b/apps/scoresLibrary/client/manifest.ts @@ -7,6 +7,6 @@ export default { routes: { 'scores-library': lazy(() => import('./src')) }, - togglable: true, + category: '04.Storage' } satisfies ModuleConfig diff --git a/apps/scoresLibrary/server/schema.ts b/apps/scoresLibrary/server/schema.ts index 391e091c7..856338b39 100644 --- a/apps/scoresLibrary/server/schema.ts +++ b/apps/scoresLibrary/server/schema.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import z from 'zod' const scoresLibrarySchemas = { entries: { @@ -15,514 +15,514 @@ const scoresLibrarySchemas = { collection: z.string(), guitar_world_id: z.number(), created: z.string(), - updated: z.string(), + updated: z.string() }), raw: { - id: "9agm22e3g44cdk8", + id: '9agm22e3g44cdk8', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "scores_library__entries", - type: "base", + name: 'scores_library__entries', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "cgqi62gp", + id: 'cgqi62gp', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { cascadeDelete: false, - collectionId: "pbc_960559984", + collectionId: 'pbc_960559984', hidden: false, - id: "relation2363381545", + id: 'relation2363381545', maxSelect: 1, minSelect: 0, - name: "type", + name: 'type', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "vojkjqoz", + id: 'vojkjqoz', max: 0, min: 0, - name: "pageCount", - pattern: "", + name: 'pageCount', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "tb4by8gi", + id: 'tb4by8gi', maxSelect: 1, maxSize: 5242880, mimeTypes: [], - name: "thumbnail", + name: 'thumbnail', presentable: false, protected: false, required: false, system: false, - thumbs: ["0x512"], - type: "file", + thumbs: ['0x512'], + type: 'file' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "cu4e2kos", + id: 'cu4e2kos', max: 0, min: 0, - name: "author", - pattern: "", + name: 'author', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "hv0nhz4n", + id: 'hv0nhz4n', maxSelect: 1, maxSize: 52428800, mimeTypes: null, - name: "pdf", + name: 'pdf', presentable: false, protected: false, required: false, system: false, thumbs: null, - type: "file", + type: 'file' }, { hidden: false, - id: "0luzezpe", + id: '0luzezpe', maxSelect: 1, maxSize: 52428800, - mimeTypes: ["audio/mpeg"], - name: "audio", + mimeTypes: ['audio/mpeg'], + name: 'audio', presentable: false, protected: false, required: false, system: false, thumbs: null, - type: "file", + type: 'file' }, { hidden: false, - id: "unlycjbb", + id: 'unlycjbb', maxSelect: 1, maxSize: 52428800, mimeTypes: null, - name: "musescore", + name: 'musescore', presentable: false, protected: false, required: false, system: false, thumbs: null, - type: "file", + type: 'file' }, { hidden: false, - id: "zglxrk9r", - name: "isFavourite", + id: 'zglxrk9r', + name: 'isFavourite', presentable: false, required: false, system: false, - type: "bool", + type: 'bool' }, { cascadeDelete: false, - collectionId: "pbc_1328318918", + collectionId: 'pbc_1328318918', hidden: false, - id: "relation4232930610", + id: 'relation4232930610', maxSelect: 1, minSelect: 0, - name: "collection", + name: 'collection', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { hidden: false, - id: "number3959456388", + id: 'number3959456388', max: null, min: null, - name: "guitar_world_id", + name: 'guitar_world_id', onlyInt: false, presentable: false, required: false, system: false, - type: "number", + type: 'number' }, { hidden: false, - id: "autodate2990389176", - name: "created", + id: 'autodate2990389176', + name: 'created', onCreate: true, onUpdate: false, presentable: false, system: false, - type: "autodate", + type: 'autodate' }, { hidden: false, - id: "autodate3332085495", - name: "updated", + id: 'autodate3332085495', + name: 'updated', onCreate: true, onUpdate: true, presentable: false, system: false, - type: "autodate", - }, + type: 'autodate' + } ], indexes: [], - system: false, - }, + system: false + } }, authors_aggregated: { schema: z.object({ name: z.string(), - amount: z.number(), + amount: z.number() }), raw: { - id: "pbc_1264004064", + id: 'pbc_1264004064', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: null, updateRule: null, deleteRule: null, - name: "scores_library__authors_aggregated", - type: "view", + name: 'scores_library__authors_aggregated', + type: 'view', fields: [ { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 0, min: 0, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_lxIs", + id: '_clone_lxIs', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "number2392944706", + id: 'number2392944706', max: null, min: null, - name: "amount", + name: 'amount', onlyInt: false, presentable: false, required: false, system: false, - type: "number", - }, + type: 'number' + } ], indexes: [], system: false, viewQuery: - "SELECT\n (ROW_NUMBER() OVER()) as id,\n scores_library__entries.author as name,\n COUNT(scores_library__entries.id) as amount\nFROM scores_library__entries\nGROUP BY scores_library__entries.author", - }, + 'SELECT\n (ROW_NUMBER() OVER()) as id,\n scores_library__entries.author as name,\n COUNT(scores_library__entries.id) as amount\nFROM scores_library__entries\nGROUP BY scores_library__entries.author' + } }, types: { schema: z.object({ name: z.string(), - icon: z.string(), + icon: z.string() }), raw: { - id: "pbc_960559984", + id: 'pbc_960559984', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "scores_library__types", - type: "base", + name: 'scores_library__types', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1579384326", + id: 'text1579384326', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1704208859", + id: 'text1704208859', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", - }, + type: 'text' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_WoBZ3EWAB2` ON `scores_library__types` (`name`)", + 'CREATE UNIQUE INDEX `idx_WoBZ3EWAB2` ON `scores_library__types` (`name`)' ], - system: false, - }, + system: false + } }, types_aggregated: { schema: z.object({ name: z.string(), icon: z.string(), - amount: z.number(), + amount: z.number() }), raw: { - id: "pbc_1616642190", + id: 'pbc_1616642190', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: null, updateRule: null, deleteRule: null, - name: "scores_library__types_aggregated", - type: "view", + name: 'scores_library__types_aggregated', + type: 'view', fields: [ { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 0, min: 0, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_woFF", + id: '_clone_woFF', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_9KW7", + id: '_clone_9KW7', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "number2392944706", + id: 'number2392944706', max: null, min: null, - name: "amount", + name: 'amount', onlyInt: false, presentable: false, required: false, system: false, - type: "number", - }, + type: 'number' + } ], indexes: [], system: false, viewQuery: - "SELECT\n scores_library__types.id,\n scores_library__types.name,\n scores_library__types.icon,\n COUNT(scores_library__entries.id) as amount\nFROM scores_library__types\nLEFT JOIN scores_library__entries\n ON scores_library__entries.type = scores_library__types.id\nGROUP BY scores_library__types.id", - }, + 'SELECT\n scores_library__types.id,\n scores_library__types.name,\n scores_library__types.icon,\n COUNT(scores_library__entries.id) as amount\nFROM scores_library__types\nLEFT JOIN scores_library__entries\n ON scores_library__entries.type = scores_library__types.id\nGROUP BY scores_library__types.id' + } }, collections: { schema: z.object({ - name: z.string(), + name: z.string() }), raw: { - id: "pbc_1328318918", + id: 'pbc_1328318918', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "scores_library__collections", - type: "base", + name: 'scores_library__collections', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1579384326", + id: 'text1579384326', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", - }, + type: 'text' + } ], indexes: [], - system: false, - }, + system: false + } }, collections_aggregated: { schema: z.object({ name: z.string(), - amount: z.number(), + amount: z.number() }), raw: { - id: "pbc_1931113261", + id: 'pbc_1931113261', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: null, updateRule: null, deleteRule: null, - name: "scores_library__collections_aggregated", - type: "view", + name: 'scores_library__collections_aggregated', + type: 'view', fields: [ { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 0, min: 0, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_wEP0", + id: '_clone_wEP0', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "number2392944706", + id: 'number2392944706', max: null, min: null, - name: "amount", + name: 'amount', onlyInt: false, presentable: false, required: false, system: false, - type: "number", - }, + type: 'number' + } ], indexes: [], system: false, viewQuery: - "SELECT scores_library__collections.id,\n scores_library__collections.name,\n COUNT(scores_library__entries.id) as amount\nFROM scores_library__collections\nLEFT JOIN scores_library__entries\nON scores_library__entries.collection = scores_library__collections.id\nGROUP BY scores_library__collections.id", - }, - }, -}; + 'SELECT scores_library__collections.id,\n scores_library__collections.name,\n COUNT(scores_library__entries.id) as amount\nFROM scores_library__collections\nLEFT JOIN scores_library__entries\nON scores_library__entries.collection = scores_library__collections.id\nGROUP BY scores_library__collections.id' + } + } +} -export default scoresLibrarySchemas; +export default scoresLibrarySchemas diff --git a/apps/sinChewDaily/client/manifest.ts b/apps/sinChewDaily/client/manifest.ts index fab0a080c..70afb214a 100644 --- a/apps/sinChewDaily/client/manifest.ts +++ b/apps/sinChewDaily/client/manifest.ts @@ -7,6 +7,6 @@ export default { routes: { 'sin-chew-daily': lazy(() => import('@')) }, - togglable: true, + category: '06.Information' } satisfies ModuleConfig diff --git a/apps/sudoku/client/manifest.ts b/apps/sudoku/client/manifest.ts index 093d81171..4be70a4f1 100644 --- a/apps/sudoku/client/manifest.ts +++ b/apps/sudoku/client/manifest.ts @@ -7,6 +7,6 @@ export default { routes: { sudoku: lazy(() => import('@')) }, - togglable: true, + category: '07.Utilities' } satisfies ModuleConfig diff --git a/apps/todoList/client/manifest.ts b/apps/todoList/client/manifest.ts index ec624a1a8..2f22ed205 100644 --- a/apps/todoList/client/manifest.ts +++ b/apps/todoList/client/manifest.ts @@ -7,7 +7,7 @@ export default { routes: { 'todo-list': lazy(() => import('@')) }, - togglable: true, + hasAI: true, requiredAPIKeys: ['groq'], category: '01.Productivity' diff --git a/apps/todoList/server/schema.ts b/apps/todoList/server/schema.ts index 9ece3d9df..dfbc257de 100644 --- a/apps/todoList/server/schema.ts +++ b/apps/todoList/server/schema.ts @@ -1,133 +1,133 @@ -import { z } from "zod"; +import z from 'zod' const todoListSchemas = { lists: { schema: z.object({ name: z.string(), icon: z.string(), - color: z.string(), + color: z.string() }), raw: { - id: "327ciwg4kdb3eih", + id: '327ciwg4kdb3eih', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "todo_list__lists", - type: "base", + name: 'todo_list__lists', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "y8zommga", + id: 'y8zommga', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "8cakr2ge", + id: '8cakr2ge', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "fc3qdmd7", + id: 'fc3qdmd7', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", - }, + type: 'text' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_T3w3dLGNcW` ON `todo_list__lists` (`name`)", + 'CREATE UNIQUE INDEX `idx_T3w3dLGNcW` ON `todo_list__lists` (`name`)' ], - system: false, - }, + system: false + } }, tags: { schema: z.object({ - name: z.string(), + name: z.string() }), raw: { - id: "x117ii0br9fqehr", + id: 'x117ii0br9fqehr', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "todo_list__tags", - type: "base", + name: 'todo_list__tags', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "stfzdnfd", + id: 'stfzdnfd', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", - }, + type: 'text' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_scwXEaym2g` ON `todo_list__tags` (`name`)", + 'CREATE UNIQUE INDEX `idx_scwXEaym2g` ON `todo_list__tags` (`name`)' ], - system: false, - }, + system: false + } }, entries: { schema: z.object({ @@ -141,459 +141,459 @@ const todoListSchemas = { done: z.boolean(), completed_at: z.string(), created: z.string(), - updated: z.string(), + updated: z.string() }), raw: { - id: "w35txwos02cf2nm", + id: 'w35txwos02cf2nm', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "todo_list__entries", - type: "base", + name: 'todo_list__entries', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "dfvcxey7", + id: 'dfvcxey7', max: 0, min: 0, - name: "summary", - pattern: "", + name: 'summary', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "gcll6ukh", + id: 'gcll6ukh', max: 0, min: 0, - name: "notes", - pattern: "", + name: 'notes', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "f8gi2ylo", - max: "", - min: "", - name: "due_date", + id: 'f8gi2ylo', + max: '', + min: '', + name: 'due_date', presentable: false, required: false, system: false, - type: "date", + type: 'date' }, { hidden: false, - id: "bool2459043662", - name: "due_date_has_time", + id: 'bool2459043662', + name: 'due_date_has_time', presentable: false, required: false, system: false, - type: "bool", + type: 'bool' }, { cascadeDelete: false, - collectionId: "327ciwg4kdb3eih", + collectionId: '327ciwg4kdb3eih', hidden: false, - id: "5fdwchzj", + id: '5fdwchzj', maxSelect: 1, minSelect: 0, - name: "list", + name: 'list', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { cascadeDelete: false, - collectionId: "x117ii0br9fqehr", + collectionId: 'x117ii0br9fqehr', hidden: false, - id: "df4ncdna", + id: 'df4ncdna', maxSelect: 2147483647, minSelect: 0, - name: "tags", + name: 'tags', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { cascadeDelete: false, - collectionId: "zwgj5r0vi6xo5ma", + collectionId: 'zwgj5r0vi6xo5ma', hidden: false, - id: "tonpixw6", + id: 'tonpixw6', maxSelect: 1, minSelect: 0, - name: "priority", + name: 'priority', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { hidden: false, - id: "jkco5dii", - name: "done", + id: 'jkco5dii', + name: 'done', presentable: false, required: false, system: false, - type: "bool", + type: 'bool' }, { hidden: false, - id: "jqooidhl", - max: "", - min: "", - name: "completed_at", + id: 'jqooidhl', + max: '', + min: '', + name: 'completed_at', presentable: false, required: false, system: false, - type: "date", + type: 'date' }, { hidden: false, - id: "autodate2990389176", - name: "created", + id: 'autodate2990389176', + name: 'created', onCreate: true, onUpdate: false, presentable: false, system: false, - type: "autodate", + type: 'autodate' }, { hidden: false, - id: "autodate3332085495", - name: "updated", + id: 'autodate3332085495', + name: 'updated', onCreate: true, onUpdate: true, presentable: false, system: false, - type: "autodate", - }, + type: 'autodate' + } ], indexes: [], - system: false, - }, + system: false + } }, priorities: { schema: z.object({ name: z.string(), - color: z.string(), + color: z.string() }), raw: { - id: "zwgj5r0vi6xo5ma", + id: 'zwgj5r0vi6xo5ma', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "todo_list__priorities", - type: "base", + name: 'todo_list__priorities', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "s5kc4goc", + id: 's5kc4goc', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "i178pi1i", + id: 'i178pi1i', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", - }, + type: 'text' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_IbjNIIyb5l` ON `todo_list__priorities` (`name`)", + 'CREATE UNIQUE INDEX `idx_IbjNIIyb5l` ON `todo_list__priorities` (`name`)' ], - system: false, - }, + system: false + } }, lists_aggregated: { schema: z.object({ name: z.string(), color: z.string(), icon: z.string(), - amount: z.number(), + amount: z.number() }), raw: { - id: "pbc_294728180", + id: 'pbc_294728180', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: null, updateRule: null, deleteRule: null, - name: "todo_list__lists_aggregated", - type: "view", + name: 'todo_list__lists_aggregated', + type: 'view', fields: [ { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 0, min: 0, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_Wqd9", + id: '_clone_Wqd9', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_cSgJ", + id: '_clone_cSgJ', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_bFnP", + id: '_clone_bFnP', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "number2392944706", + id: 'number2392944706', max: null, min: null, - name: "amount", + name: 'amount', onlyInt: false, presentable: false, required: false, system: false, - type: "number", - }, + type: 'number' + } ], indexes: [], system: false, viewQuery: - 'SELECT \n todo_list__lists.id, \n todo_list__lists.name,\n todo_list__lists.color, \n todo_list__lists.icon, \n count(todo_list__lists.id) as amount \nFROM "todo_list__lists" \n LEFT JOIN todo_list__entries ON todo_list__entries.list = todo_list__lists.id\nGROUP BY todo_list__lists.id', - }, + 'SELECT \n todo_list__lists.id, \n todo_list__lists.name,\n todo_list__lists.color, \n todo_list__lists.icon, \n count(todo_list__lists.id) as amount \nFROM "todo_list__lists" \n LEFT JOIN todo_list__entries ON todo_list__entries.list = todo_list__lists.id\nGROUP BY todo_list__lists.id' + } }, tags_aggregated: { schema: z.object({ name: z.string(), - amount: z.number(), + amount: z.number() }), raw: { - id: "pbc_3656224340", + id: 'pbc_3656224340', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: null, updateRule: null, deleteRule: null, - name: "todo_list__tags_aggregated", - type: "view", + name: 'todo_list__tags_aggregated', + type: 'view', fields: [ { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 0, min: 0, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_gjOr", + id: '_clone_gjOr', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "number2392944706", + id: 'number2392944706', max: null, min: null, - name: "amount", + name: 'amount', onlyInt: false, presentable: false, required: false, system: false, - type: "number", - }, + type: 'number' + } ], indexes: [], system: false, viewQuery: - "WITH entry_tag_map AS (\n SELECT\n todo_list__entries.id AS entry_id,\n json_each.value AS tag_id\n FROM\n todo_list__entries,\n json_each(todo_list__entries.tags)\n)\nSELECT\n todo_list__tags.id,\n todo_list__tags.name,\n COUNT(entry_tag_map.entry_id) AS amount\nFROM\n todo_list__tags\nLEFT JOIN entry_tag_map\n ON entry_tag_map.tag_id = todo_list__tags.id\nGROUP BY\n todo_list__tags.id;", - }, + 'WITH entry_tag_map AS (\n SELECT\n todo_list__entries.id AS entry_id,\n json_each.value AS tag_id\n FROM\n todo_list__entries,\n json_each(todo_list__entries.tags)\n)\nSELECT\n todo_list__tags.id,\n todo_list__tags.name,\n COUNT(entry_tag_map.entry_id) AS amount\nFROM\n todo_list__tags\nLEFT JOIN entry_tag_map\n ON entry_tag_map.tag_id = todo_list__tags.id\nGROUP BY\n todo_list__tags.id;' + } }, priorities_aggregated: { schema: z.object({ name: z.string(), color: z.string(), - amount: z.number(), + amount: z.number() }), raw: { - id: "pbc_13199116", + id: 'pbc_13199116', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: null, updateRule: null, deleteRule: null, - name: "todo_list__priorities_aggregated", - type: "view", + name: 'todo_list__priorities_aggregated', + type: 'view', fields: [ { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 0, min: 0, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_QObX", + id: '_clone_QObX', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_5N6s", + id: '_clone_5N6s', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "number2392944706", + id: 'number2392944706', max: null, min: null, - name: "amount", + name: 'amount', onlyInt: false, presentable: false, required: false, system: false, - type: "number", - }, + type: 'number' + } ], indexes: [], system: false, viewQuery: - "SELECT \n todo_list__priorities.id, \n todo_list__priorities.name,\n todo_list__priorities.color,\n COUNT(todo_list__entries.id) as amount\nFROM todo_list__priorities\n LEFT JOIN todo_list__entries ON todo_list__entries.priority = todo_list__priorities.id\nGROUP BY todo_list__priorities.id", - }, - }, -}; + 'SELECT \n todo_list__priorities.id, \n todo_list__priorities.name,\n todo_list__priorities.color,\n COUNT(todo_list__entries.id) as amount\nFROM todo_list__priorities\n LEFT JOIN todo_list__entries ON todo_list__entries.priority = todo_list__priorities.id\nGROUP BY todo_list__priorities.id' + } + } +} -export default todoListSchemas; +export default todoListSchemas diff --git a/apps/wallet/client/manifest.ts b/apps/wallet/client/manifest.ts index c2698b7ee..4159cfbed 100644 --- a/apps/wallet/client/manifest.ts +++ b/apps/wallet/client/manifest.ts @@ -33,6 +33,6 @@ export default { 'wallet/spending-heatmap': lazy(() => import('@/pages/SpendingHeatmap')), 'wallet/statements': lazy(() => import('@/pages/Statements')) }, - togglable: true, + category: '03.Finance' } satisfies ModuleConfig diff --git a/apps/wallet/server/schema.ts b/apps/wallet/server/schema.ts index 3f1b80c80..077735c6a 100644 --- a/apps/wallet/server/schema.ts +++ b/apps/wallet/server/schema.ts @@ -1,462 +1,462 @@ -import { z } from "zod"; +import z from 'zod' const walletSchemas = { assets: { schema: z.object({ name: z.string(), icon: z.string(), - starting_balance: z.number(), + starting_balance: z.number() }), raw: { - id: "jb4b93uex7fgql5", + id: 'jb4b93uex7fgql5', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "wallet__assets", - type: "base", + name: 'wallet__assets', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "3dlavzvz", + id: '3dlavzvz', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "l5fof4bg", + id: 'l5fof4bg', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "vjgjle4c", + id: 'vjgjle4c', max: null, min: null, - name: "starting_balance", + name: 'starting_balance', onlyInt: false, presentable: false, required: false, system: false, - type: "number", - }, + type: 'number' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_OU71dSp4TR` ON `wallet__assets` (`name`)", + 'CREATE UNIQUE INDEX `idx_OU71dSp4TR` ON `wallet__assets` (`name`)' ], - system: false, - }, + system: false + } }, ledgers: { schema: z.object({ name: z.string(), icon: z.string(), - color: z.string(), + color: z.string() }), raw: { - id: "7tug66h7onrjdu2", + id: '7tug66h7onrjdu2', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "wallet__ledgers", - type: "base", + name: 'wallet__ledgers', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "vy0zphs0", + id: 'vy0zphs0', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "hocs7m6h", + id: 'hocs7m6h', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "cwnz67zi", + id: 'cwnz67zi', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", - }, + type: 'text' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_sIL4a4Sdsi` ON `wallet__ledgers` (`name`)", + 'CREATE UNIQUE INDEX `idx_sIL4a4Sdsi` ON `wallet__ledgers` (`name`)' ], - system: false, - }, + system: false + } }, categories: { schema: z.object({ name: z.string(), icon: z.string(), color: z.string(), - type: z.enum(["income", "expenses"]), + type: z.enum(['income', 'expenses']) }), raw: { - id: "vr4lv9hatzgmgfz", + id: 'vr4lv9hatzgmgfz', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "wallet__categories", - type: "base", + name: 'wallet__categories', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "7r0hcrrv", + id: '7r0hcrrv', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "7e68hxz8", + id: '7e68hxz8', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "gwfvhe0f", + id: 'gwfvhe0f', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "4rbyorhf", + id: '4rbyorhf', maxSelect: 1, - name: "type", + name: 'type', presentable: false, required: true, system: false, - type: "select", - values: ["income", "expenses"], - }, + type: 'select', + values: ['income', 'expenses'] + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_XO2dnVmg7Z` ON `wallet__categories` (\n `name`,\n `type`\n)", + 'CREATE UNIQUE INDEX `idx_XO2dnVmg7Z` ON `wallet__categories` (\n `name`,\n `type`\n)' ], - system: false, - }, + system: false + } }, transactions: { schema: z.object({ - type: z.enum(["transfer", "income_expenses"]), + type: z.enum(['transfer', 'income_expenses']), amount: z.number(), date: z.string(), receipt: z.string(), created: z.string(), - updated: z.string(), + updated: z.string() }), raw: { - id: "nk4p9hnqedrvmdi", + id: 'nk4p9hnqedrvmdi', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "wallet__transactions", - type: "base", + name: 'wallet__transactions', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { hidden: false, - id: "ivm559pc", + id: 'ivm559pc', maxSelect: 1, - name: "type", + name: 'type', presentable: false, required: true, system: false, - type: "select", - values: ["transfer", "income_expenses"], + type: 'select', + values: ['transfer', 'income_expenses'] }, { hidden: false, - id: "2wrkslxv", + id: '2wrkslxv', max: null, min: null, - name: "amount", + name: 'amount', onlyInt: false, presentable: false, required: false, system: false, - type: "number", + type: 'number' }, { hidden: false, - id: "09rysqhc", - max: "", - min: "", - name: "date", + id: '09rysqhc', + max: '', + min: '', + name: 'date', presentable: false, required: false, system: false, - type: "date", + type: 'date' }, { hidden: false, - id: "gmdk5guf", + id: 'gmdk5guf', maxSelect: 1, maxSize: 524288000, mimeTypes: null, - name: "receipt", + name: 'receipt', presentable: false, protected: false, required: false, system: false, thumbs: null, - type: "file", + type: 'file' }, { hidden: false, - id: "autodate2990389176", - name: "created", + id: 'autodate2990389176', + name: 'created', onCreate: true, onUpdate: false, presentable: false, system: false, - type: "autodate", + type: 'autodate' }, { hidden: false, - id: "autodate3332085495", - name: "updated", + id: 'autodate3332085495', + name: 'updated', onCreate: true, onUpdate: true, presentable: false, system: false, - type: "autodate", - }, + type: 'autodate' + } ], indexes: [], - system: false, - }, + system: false + } }, categories_aggregated: { schema: z.object({ - type: z.enum(["income", "expenses"]), + type: z.enum(['income', 'expenses']), name: z.string(), icon: z.string(), color: z.string(), - amount: z.number(), + amount: z.number() }), raw: { - id: "pbc_1833454015", + id: 'pbc_1833454015', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: null, updateRule: null, deleteRule: null, - name: "wallet__categories_aggregated", - type: "view", + name: 'wallet__categories_aggregated', + type: 'view', fields: [ { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 0, min: 0, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { hidden: false, - id: "_clone_Dqhy", + id: '_clone_Dqhy', maxSelect: 1, - name: "type", + name: 'type', presentable: false, required: true, system: false, - type: "select", - values: ["income", "expenses"], + type: 'select', + values: ['income', 'expenses'] }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_x5L6", + id: '_clone_x5L6', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_YP5b", + id: '_clone_YP5b', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_ZaLa", + id: '_clone_ZaLa', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "number2392944706", + id: 'number2392944706', max: null, min: null, - name: "amount", + name: 'amount', onlyInt: false, presentable: false, required: false, system: false, - type: "number", - }, + type: 'number' + } ], indexes: [], system: false, viewQuery: - "SELECT\n wallet__categories.id,\n wallet__categories.type,\n wallet__categories.name,\n wallet__categories.icon,\n wallet__categories.color,\n COUNT(wallet__transactions_income_expenses.id) AS amount\nFROM wallet__categories\nLEFT JOIN wallet__transactions_income_expenses ON wallet__transactions_income_expenses.category = wallet__categories.id\nGROUP BY wallet__categories.id", - }, + 'SELECT\n wallet__categories.id,\n wallet__categories.type,\n wallet__categories.name,\n wallet__categories.icon,\n wallet__categories.color,\n COUNT(wallet__transactions_income_expenses.id) AS amount\nFROM wallet__categories\nLEFT JOIN wallet__transactions_income_expenses ON wallet__transactions_income_expenses.category = wallet__categories.id\nGROUP BY wallet__categories.id' + } }, assets_aggregated: { schema: z.object({ @@ -464,634 +464,634 @@ const walletSchemas = { icon: z.string(), starting_balance: z.number(), transaction_count: z.number(), - current_balance: z.any(), + current_balance: z.any() }), raw: { - id: "pbc_1777026265", + id: 'pbc_1777026265', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: null, updateRule: null, deleteRule: null, - name: "wallet__assets_aggregated", - type: "view", + name: 'wallet__assets_aggregated', + type: 'view', fields: [ { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 0, min: 0, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_NdxN", + id: '_clone_NdxN', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_Nppq", + id: '_clone_Nppq', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "_clone_gZEK", + id: '_clone_gZEK', max: null, min: null, - name: "starting_balance", + name: 'starting_balance', onlyInt: false, presentable: false, required: false, system: false, - type: "number", + type: 'number' }, { hidden: false, - id: "number619353122", + id: 'number619353122', max: null, min: null, - name: "transaction_count", + name: 'transaction_count', onlyInt: false, presentable: false, required: false, system: false, - type: "number", + type: 'number' }, { hidden: false, - id: "json117021307", + id: 'json117021307', maxSize: 1, - name: "current_balance", + name: 'current_balance', presentable: false, required: false, system: false, - type: "json", - }, + type: 'json' + } ], indexes: [], system: false, viewQuery: - "WITH unified_transactions AS (\n SELECT \n id, \n amount, \n asset, \n source \n FROM \n (\n SELECT \n CONCAT(\n wallet__transactions.id, \"_\", wallet__transactions_income_expenses.type\n ) as id, \n wallet__transactions.amount, \n wallet__transactions_income_expenses.asset, \n wallet__transactions_income_expenses.type as source \n FROM \n wallet__transactions_income_expenses\n JOIN wallet__transactions ON wallet__transactions_income_expenses.base_transaction = wallet__transactions.id \n UNION \n SELECT \n concat(wallet__transactions.id, \"_out\") as id, \n wallet__transactions.amount as amount, \n wallet__transactions_transfer.\"from\" as asset, \n 'transfer_out' as source\n FROM \n wallet__transactions_transfer \n JOIN wallet__transactions ON wallet__transactions_transfer.base_transaction = wallet__transactions.id \n UNION \n SELECT \n concat(wallet__transactions.id, \"_in\") as id, \n wallet__transactions.amount, \n wallet__transactions_transfer.\"to\" as asset, \n 'transfer_in' as source \n FROM \n wallet__transactions_transfer \n JOIN wallet__transactions ON wallet__transactions_transfer.base_transaction = wallet__transactions.id\n )\n) \nSELECT \n wallet__assets.id, \n wallet__assets.name,\n wallet__assets.icon,\n wallet__assets.starting_balance,\n COUNT(unified_transactions.id) AS transaction_count, \n ROUND(\n wallet__assets.starting_balance + SUM(\n CASE \n WHEN source = 'transfer_out' THEN - amount \n WHEN source = 'transfer_in' THEN amount \n WHEN source = 'income' THEN amount \n WHEN source = 'expenses' THEN - amount \n ELSE 0 \n END\n ), \n 2\n ) AS current_balance \nFROM \n unified_transactions \n RIGHT JOIN wallet__assets ON wallet__assets.id = unified_transactions.asset \nGROUP BY \n wallet__assets.id\n", - }, + "WITH unified_transactions AS (\n SELECT \n id, \n amount, \n asset, \n source \n FROM \n (\n SELECT \n CONCAT(\n wallet__transactions.id, \"_\", wallet__transactions_income_expenses.type\n ) as id, \n wallet__transactions.amount, \n wallet__transactions_income_expenses.asset, \n wallet__transactions_income_expenses.type as source \n FROM \n wallet__transactions_income_expenses\n JOIN wallet__transactions ON wallet__transactions_income_expenses.base_transaction = wallet__transactions.id \n UNION \n SELECT \n concat(wallet__transactions.id, \"_out\") as id, \n wallet__transactions.amount as amount, \n wallet__transactions_transfer.\"from\" as asset, \n 'transfer_out' as source\n FROM \n wallet__transactions_transfer \n JOIN wallet__transactions ON wallet__transactions_transfer.base_transaction = wallet__transactions.id \n UNION \n SELECT \n concat(wallet__transactions.id, \"_in\") as id, \n wallet__transactions.amount, \n wallet__transactions_transfer.\"to\" as asset, \n 'transfer_in' as source \n FROM \n wallet__transactions_transfer \n JOIN wallet__transactions ON wallet__transactions_transfer.base_transaction = wallet__transactions.id\n )\n) \nSELECT \n wallet__assets.id, \n wallet__assets.name,\n wallet__assets.icon,\n wallet__assets.starting_balance,\n COUNT(unified_transactions.id) AS transaction_count, \n ROUND(\n wallet__assets.starting_balance + SUM(\n CASE \n WHEN source = 'transfer_out' THEN - amount \n WHEN source = 'transfer_in' THEN amount \n WHEN source = 'income' THEN amount \n WHEN source = 'expenses' THEN - amount \n ELSE 0 \n END\n ), \n 2\n ) AS current_balance \nFROM \n unified_transactions \n RIGHT JOIN wallet__assets ON wallet__assets.id = unified_transactions.asset \nGROUP BY \n wallet__assets.id\n" + } }, ledgers_aggregated: { schema: z.object({ name: z.string(), color: z.string(), icon: z.string(), - amount: z.number(), + amount: z.number() }), raw: { - id: "pbc_192729987", + id: 'pbc_192729987', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: null, updateRule: null, deleteRule: null, - name: "wallet__ledgers_aggregated", - type: "view", + name: 'wallet__ledgers_aggregated', + type: 'view', fields: [ { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 0, min: 0, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_gmFS", + id: '_clone_gmFS', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_u1kh", + id: '_clone_u1kh', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_pYlU", + id: '_clone_pYlU', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "number2392944706", + id: 'number2392944706', max: null, min: null, - name: "amount", + name: 'amount', onlyInt: false, presentable: false, required: false, system: false, - type: "number", - }, + type: 'number' + } ], indexes: [], system: false, viewQuery: - "WITH transaction_ledger_map AS (\n SELECT\n wallet__transactions_income_expenses.id AS transaction_id,\n json_each.value AS ledger_id\n FROM\n wallet__transactions_income_expenses,\n json_each(wallet__transactions_income_expenses.ledgers)\n)\nSELECT\n wallet__ledgers.id,\n wallet__ledgers.name,\n wallet__ledgers.color,\n wallet__ledgers.icon,\n COUNT(transaction_ledger_map.transaction_id) AS amount\nFROM\n wallet__ledgers\nLEFT JOIN transaction_ledger_map\n ON transaction_ledger_map.ledger_id = wallet__ledgers.id\nGROUP BY\n wallet__ledgers.id;", - }, + 'WITH transaction_ledger_map AS (\n SELECT\n wallet__transactions_income_expenses.id AS transaction_id,\n json_each.value AS ledger_id\n FROM\n wallet__transactions_income_expenses,\n json_each(wallet__transactions_income_expenses.ledgers)\n)\nSELECT\n wallet__ledgers.id,\n wallet__ledgers.name,\n wallet__ledgers.color,\n wallet__ledgers.icon,\n COUNT(transaction_ledger_map.transaction_id) AS amount\nFROM\n wallet__ledgers\nLEFT JOIN transaction_ledger_map\n ON transaction_ledger_map.ledger_id = wallet__ledgers.id\nGROUP BY\n wallet__ledgers.id;' + } }, transaction_types_aggregated: { schema: z.object({ name: z.any(), transaction_count: z.number(), - accumulated_amount: z.any(), + accumulated_amount: z.any() }), raw: { - id: "pbc_4127888515", + id: 'pbc_4127888515', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: null, updateRule: null, deleteRule: null, - name: "wallet__transaction_types_aggregated", - type: "view", + name: 'wallet__transaction_types_aggregated', + type: 'view', fields: [ { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 0, min: 0, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { hidden: false, - id: "json1579384326", + id: 'json1579384326', maxSize: 1, - name: "name", + name: 'name', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { hidden: false, - id: "number619353122", + id: 'number619353122', max: null, min: null, - name: "transaction_count", + name: 'transaction_count', onlyInt: false, presentable: false, required: false, system: false, - type: "number", + type: 'number' }, { hidden: false, - id: "json492355399", + id: 'json492355399', maxSize: 1, - name: "accumulated_amount", + name: 'accumulated_amount', presentable: false, required: false, system: false, - type: "json", - }, + type: 'json' + } ], indexes: [], system: false, viewQuery: - "SELECT\n (ROW_NUMBER() OVER()) as id,\n (\n CASE WHEN wallet__transactions.type = 'transfer' THEN \"transfer\"\n ELSE wallet__transactions_income_expenses.type\n END\n ) as name,\n COUNT(wallet__transactions.id) as transaction_count,\n SUM(wallet__transactions.amount) as accumulated_amount\nFROM wallet__transactions\nLEFT JOIN wallet__transactions_income_expenses\n ON wallet__transactions.id = wallet__transactions_income_expenses.base_transaction\nLEFT JOIN wallet__transactions_transfer\n ON wallet__transactions.id = wallet__transactions_transfer.base_transaction\nGROUP BY name\n", - }, + 'SELECT\n (ROW_NUMBER() OVER()) as id,\n (\n CASE WHEN wallet__transactions.type = \'transfer\' THEN "transfer"\n ELSE wallet__transactions_income_expenses.type\n END\n ) as name,\n COUNT(wallet__transactions.id) as transaction_count,\n SUM(wallet__transactions.amount) as accumulated_amount\nFROM wallet__transactions\nLEFT JOIN wallet__transactions_income_expenses\n ON wallet__transactions.id = wallet__transactions_income_expenses.base_transaction\nLEFT JOIN wallet__transactions_transfer\n ON wallet__transactions.id = wallet__transactions_transfer.base_transaction\nGROUP BY name\n' + } }, transactions_income_expenses: { schema: z.object({ base_transaction: z.string(), - type: z.enum(["income", "expenses"]), + type: z.enum(['income', 'expenses']), particulars: z.string(), asset: z.string(), category: z.string(), ledgers: z.array(z.string()), location_name: z.string(), - location_coords: z.object({ lat: z.number(), lon: z.number() }), + location_coords: z.object({ lat: z.number(), lon: z.number() }) }), raw: { - id: "pbc_1561892026", + id: 'pbc_1561892026', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "wallet__transactions_income_expenses", - type: "base", + name: 'wallet__transactions_income_expenses', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { cascadeDelete: true, - collectionId: "nk4p9hnqedrvmdi", + collectionId: 'nk4p9hnqedrvmdi', hidden: false, - id: "relation2064839465", + id: 'relation2064839465', maxSelect: 1, minSelect: 0, - name: "base_transaction", + name: 'base_transaction', presentable: false, required: true, system: false, - type: "relation", + type: 'relation' }, { hidden: false, - id: "select2363381545", + id: 'select2363381545', maxSelect: 1, - name: "type", + name: 'type', presentable: false, required: true, system: false, - type: "select", - values: ["income", "expenses"], + type: 'select', + values: ['income', 'expenses'] }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text2250334671", + id: 'text2250334671', max: 0, min: 0, - name: "particulars", - pattern: "", + name: 'particulars', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { cascadeDelete: false, - collectionId: "jb4b93uex7fgql5", + collectionId: 'jb4b93uex7fgql5', hidden: false, - id: "relation45046364", + id: 'relation45046364', maxSelect: 1, minSelect: 0, - name: "asset", + name: 'asset', presentable: false, required: true, system: false, - type: "relation", + type: 'relation' }, { cascadeDelete: false, - collectionId: "vr4lv9hatzgmgfz", + collectionId: 'vr4lv9hatzgmgfz', hidden: false, - id: "relation105650625", + id: 'relation105650625', maxSelect: 1, minSelect: 0, - name: "category", + name: 'category', presentable: false, required: true, system: false, - type: "relation", + type: 'relation' }, { cascadeDelete: false, - collectionId: "7tug66h7onrjdu2", + collectionId: '7tug66h7onrjdu2', hidden: false, - id: "relation3642313480", + id: 'relation3642313480', maxSelect: 999, minSelect: 0, - name: "ledgers", + name: 'ledgers', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3727149894", + id: 'text3727149894', max: 0, min: 0, - name: "location_name", - pattern: "", + name: 'location_name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "geoPoint2468307335", - name: "location_coords", + id: 'geoPoint2468307335', + name: 'location_coords', presentable: false, required: false, system: false, - type: "geoPoint", - }, + type: 'geoPoint' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_1SR25MNndH` ON `wallet__transactions_income_expenses` (`base_transaction`)", + 'CREATE UNIQUE INDEX `idx_1SR25MNndH` ON `wallet__transactions_income_expenses` (`base_transaction`)' ], - system: false, - }, + system: false + } }, transactions_transfer: { schema: z.object({ base_transaction: z.string(), from: z.string(), - to: z.string(), + to: z.string() }), raw: { - id: "pbc_3108707677", + id: 'pbc_3108707677', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "wallet__transactions_transfer", - type: "base", + name: 'wallet__transactions_transfer', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { cascadeDelete: true, - collectionId: "nk4p9hnqedrvmdi", + collectionId: 'nk4p9hnqedrvmdi', hidden: false, - id: "relation2064839465", + id: 'relation2064839465', maxSelect: 1, minSelect: 0, - name: "base_transaction", + name: 'base_transaction', presentable: false, required: true, system: false, - type: "relation", + type: 'relation' }, { cascadeDelete: false, - collectionId: "jb4b93uex7fgql5", + collectionId: 'jb4b93uex7fgql5', hidden: false, - id: "relation3957184672", + id: 'relation3957184672', maxSelect: 1, minSelect: 0, - name: "from", + name: 'from', presentable: false, required: true, system: false, - type: "relation", + type: 'relation' }, { cascadeDelete: false, - collectionId: "jb4b93uex7fgql5", + collectionId: 'jb4b93uex7fgql5', hidden: false, - id: "relation2040861836", + id: 'relation2040861836', maxSelect: 1, minSelect: 0, - name: "to", + name: 'to', presentable: false, required: true, system: false, - type: "relation", - }, + type: 'relation' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_GwG14gsDmZ` ON `wallet__transactions_transfer` (`base_transaction`)", + 'CREATE UNIQUE INDEX `idx_GwG14gsDmZ` ON `wallet__transactions_transfer` (`base_transaction`)' ], - system: false, - }, + system: false + } }, transaction_templates: { schema: z.object({ name: z.string(), - type: z.enum(["income", "expenses"]), + type: z.enum(['income', 'expenses']), amount: z.number(), particulars: z.string(), asset: z.string(), category: z.string(), ledgers: z.array(z.string()), location_name: z.string(), - location_coords: z.object({ lat: z.number(), lon: z.number() }), + location_coords: z.object({ lat: z.number(), lon: z.number() }) }), raw: { - id: "pbc_3992347949", + id: 'pbc_3992347949', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "wallet__transaction_templates", - type: "base", + name: 'wallet__transaction_templates', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text1579384326", + id: 'text1579384326', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: true, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "select2363381545", + id: 'select2363381545', maxSelect: 1, - name: "type", + name: 'type', presentable: false, required: true, system: false, - type: "select", - values: ["income", "expenses"], + type: 'select', + values: ['income', 'expenses'] }, { hidden: false, - id: "number2392944706", + id: 'number2392944706', max: null, min: null, - name: "amount", + name: 'amount', onlyInt: false, presentable: false, required: false, system: false, - type: "number", + type: 'number' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text273887563", + id: 'text273887563', max: 0, min: 0, - name: "particulars", - pattern: "", + name: 'particulars', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { cascadeDelete: false, - collectionId: "jb4b93uex7fgql5", + collectionId: 'jb4b93uex7fgql5', hidden: false, - id: "relation45046364", + id: 'relation45046364', maxSelect: 1, minSelect: 0, - name: "asset", + name: 'asset', presentable: false, required: true, system: false, - type: "relation", + type: 'relation' }, { cascadeDelete: false, - collectionId: "vr4lv9hatzgmgfz", + collectionId: 'vr4lv9hatzgmgfz', hidden: false, - id: "relation105650625", + id: 'relation105650625', maxSelect: 1, minSelect: 0, - name: "category", + name: 'category', presentable: false, required: true, system: false, - type: "relation", + type: 'relation' }, { cascadeDelete: false, - collectionId: "7tug66h7onrjdu2", + collectionId: '7tug66h7onrjdu2', hidden: false, - id: "relation3642313480", + id: 'relation3642313480', maxSelect: 999, minSelect: 0, - name: "ledgers", + name: 'ledgers', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3727149894", + id: 'text3727149894', max: 0, min: 0, - name: "location_name", - pattern: "", + name: 'location_name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "geoPoint2468307335", - name: "location_coords", + id: 'geoPoint2468307335', + name: 'location_coords', presentable: false, required: false, system: false, - type: "geoPoint", - }, + type: 'geoPoint' + } ], indexes: [], - system: false, - }, - }, -}; + system: false + } + } +} -export default walletSchemas; +export default walletSchemas diff --git a/apps/wishlist/client/manifest.ts b/apps/wishlist/client/manifest.ts index 4cc8fe087..b6d51cac5 100644 --- a/apps/wishlist/client/manifest.ts +++ b/apps/wishlist/client/manifest.ts @@ -8,7 +8,7 @@ export default { wishlist: lazy(() => import('@/pages/WishlistList')), 'wishlist/:id': lazy(() => import('@/pages/WishlistEntries')) }, - togglable: true, + hasAI: true, category: '03.Finance' } satisfies ModuleConfig diff --git a/apps/wishlist/server/schema.ts b/apps/wishlist/server/schema.ts index 3a81d1d67..9b6e9947a 100644 --- a/apps/wishlist/server/schema.ts +++ b/apps/wishlist/server/schema.ts @@ -1,4 +1,4 @@ -import { z } from "zod"; +import z from 'zod' const wishlistSchemas = { lists: { @@ -6,94 +6,94 @@ const wishlistSchemas = { name: z.string(), description: z.string(), color: z.string(), - icon: z.string(), + icon: z.string() }), raw: { - id: "kdup91y6g8aqjah", + id: 'kdup91y6g8aqjah', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "wishlist__lists", - type: "base", + name: 'wishlist__lists', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "xguongsk", + id: 'xguongsk', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "u1ekqz95", + id: 'u1ekqz95', max: 0, min: 0, - name: "description", - pattern: "", + name: 'description', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "ahttl2mc", + id: 'ahttl2mc', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "bqwly2mg", + id: 'bqwly2mg', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", - }, + type: 'text' + } ], indexes: [ - "CREATE UNIQUE INDEX `idx_mZ8H0bkHRW` ON `wishlist__lists` (`name`)", + 'CREATE UNIQUE INDEX `idx_mZ8H0bkHRW` ON `wishlist__lists` (`name`)' ], - system: false, - }, + system: false + } }, entries: { schema: z.object({ @@ -105,149 +105,149 @@ const wishlistSchemas = { bought: z.boolean(), bought_at: z.string(), created: z.string(), - updated: z.string(), + updated: z.string() }), raw: { - id: "vm2lopnobyynu60", + id: 'vm2lopnobyynu60', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: '@request.auth.id != ""', updateRule: '@request.auth.id != ""', deleteRule: '@request.auth.id != ""', - name: "wishlist__entries", - type: "base", + name: 'wishlist__entries', + type: 'base', fields: [ { - autogeneratePattern: "[a-z0-9]{15}", + autogeneratePattern: '[a-z0-9]{15}', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 15, min: 15, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "nnpsd0ds", + id: 'nnpsd0ds', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "9fzx3izf", + id: '9fzx3izf', max: 0, min: 0, - name: "url", - pattern: "", + name: 'url', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "5nxmxqzt", + id: '5nxmxqzt', max: null, min: null, - name: "price", + name: 'price', onlyInt: false, presentable: false, required: false, system: false, - type: "number", + type: 'number' }, { hidden: false, - id: "2wlzozpr", + id: '2wlzozpr', maxSelect: 1, maxSize: 5242880000, mimeTypes: [ - "image/jpeg", - "image/png", - "image/svg+xml", - "image/gif", - "image/webp", + 'image/jpeg', + 'image/png', + 'image/svg+xml', + 'image/gif', + 'image/webp' ], - name: "image", + name: 'image', presentable: false, protected: false, required: false, system: false, thumbs: null, - type: "file", + type: 'file' }, { cascadeDelete: true, - collectionId: "kdup91y6g8aqjah", + collectionId: 'kdup91y6g8aqjah', hidden: false, - id: "ijcfsuys", + id: 'ijcfsuys', maxSelect: 1, minSelect: 0, - name: "list", + name: 'list', presentable: false, required: false, system: false, - type: "relation", + type: 'relation' }, { hidden: false, - id: "bool78198511", - name: "bought", + id: 'bool78198511', + name: 'bought', presentable: false, required: false, system: false, - type: "bool", + type: 'bool' }, { hidden: false, - id: "date931611388", - max: "", - min: "", - name: "bought_at", + id: 'date931611388', + max: '', + min: '', + name: 'bought_at', presentable: false, required: false, system: false, - type: "date", + type: 'date' }, { hidden: false, - id: "autodate2990389176", - name: "created", + id: 'autodate2990389176', + name: 'created', onCreate: true, onUpdate: false, presentable: false, system: false, - type: "autodate", + type: 'autodate' }, { hidden: false, - id: "autodate3332085495", - name: "updated", + id: 'autodate3332085495', + name: 'updated', onCreate: true, onUpdate: true, presentable: false, system: false, - type: "autodate", - }, + type: 'autodate' + } ], indexes: [], - system: false, - }, + system: false + } }, lists_aggregated: { schema: z.object({ @@ -258,139 +258,139 @@ const wishlistSchemas = { total_count: z.number(), total_amount: z.any(), bought_count: z.number(), - bought_amount: z.any(), + bought_amount: z.any() }), raw: { - id: "pbc_3764964987", + id: 'pbc_3764964987', listRule: '@request.auth.id != ""', viewRule: '@request.auth.id != ""', createRule: null, updateRule: null, deleteRule: null, - name: "wishlist__lists_aggregated", - type: "view", + name: 'wishlist__lists_aggregated', + type: 'view', fields: [ { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "text3208210256", + id: 'text3208210256', max: 0, min: 0, - name: "id", - pattern: "^[a-z0-9]+$", + name: 'id', + pattern: '^[a-z0-9]+$', presentable: false, primaryKey: true, required: true, system: true, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_F6BS", + id: '_clone_F6BS', max: 0, min: 0, - name: "name", - pattern: "", + name: 'name', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_u98q", + id: '_clone_u98q', max: 0, min: 0, - name: "description", - pattern: "", + name: 'description', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_jlIX", + id: '_clone_jlIX', max: 0, min: 0, - name: "color", - pattern: "", + name: 'color', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { - autogeneratePattern: "", + autogeneratePattern: '', hidden: false, - id: "_clone_8Clo", + id: '_clone_8Clo', max: 0, min: 0, - name: "icon", - pattern: "", + name: 'icon', + pattern: '', presentable: false, primaryKey: false, required: false, system: false, - type: "text", + type: 'text' }, { hidden: false, - id: "number1185665616", + id: 'number1185665616', max: null, min: null, - name: "total_count", + name: 'total_count', onlyInt: false, presentable: false, required: false, system: false, - type: "number", + type: 'number' }, { hidden: false, - id: "json1186288468", + id: 'json1186288468', maxSize: 1, - name: "total_amount", + name: 'total_amount', presentable: false, required: false, system: false, - type: "json", + type: 'json' }, { hidden: false, - id: "number4059607772", + id: 'number4059607772', max: null, min: null, - name: "bought_count", + name: 'bought_count', onlyInt: false, presentable: false, required: false, system: false, - type: "number", + type: 'number' }, { hidden: false, - id: "json2718748479", + id: 'json2718748479', maxSize: 1, - name: "bought_amount", + name: 'bought_amount', presentable: false, required: false, system: false, - type: "json", - }, + type: 'json' + } ], indexes: [], system: false, viewQuery: - "SELECT\n wishlist__lists.id,\n wishlist__lists.name,\n wishlist__lists.description,\n wishlist__lists.color,\n wishlist__lists.icon, \n COUNT(wishlist__entries.id) AS total_count,\n SUM(wishlist__entries.price) AS total_amount,\n COUNT(CASE WHEN wishlist__entries.bought = TRUE THEN 1 END) as bought_count,\n SUM(CASE WHEN wishlist__entries.bought = TRUE THEN wishlist__entries.price ELSE 0 END) AS bought_amount\nFROM wishlist__lists\nLEFT JOIN wishlist__entries\n ON wishlist__entries.list = wishlist__lists.id\nGROUP BY\n wishlist__lists.id\n", - }, - }, -}; + 'SELECT\n wishlist__lists.id,\n wishlist__lists.name,\n wishlist__lists.description,\n wishlist__lists.color,\n wishlist__lists.icon, \n COUNT(wishlist__entries.id) AS total_count,\n SUM(wishlist__entries.price) AS total_amount,\n COUNT(CASE WHEN wishlist__entries.bought = TRUE THEN 1 END) as bought_count,\n SUM(CASE WHEN wishlist__entries.bought = TRUE THEN wishlist__entries.price ELSE 0 END) AS bought_amount\nFROM wishlist__lists\nLEFT JOIN wishlist__entries\n ON wishlist__entries.list = wishlist__lists.id\nGROUP BY\n wishlist__lists.id\n' + } + } +} -export default wishlistSchemas; +export default wishlistSchemas diff --git a/apps/youtubeSummarizer/client/manifest.ts b/apps/youtubeSummarizer/client/manifest.ts index 7421f3c24..9eb494eff 100644 --- a/apps/youtubeSummarizer/client/manifest.ts +++ b/apps/youtubeSummarizer/client/manifest.ts @@ -7,7 +7,7 @@ export default { routes: { 'youtube-summarizer': lazy(() => import('@')) }, - togglable: true, + requiredAPIKeys: ['groq'], hasAI: true, category: '07.Utilities' diff --git a/client/src/apps/997.SSO/apiExplorer/config.tsx b/client/src/apps/997.SSO/apiExplorer/config.tsx index 84e5e39cd..7b37abafc 100644 --- a/client/src/apps/997.SSO/apiExplorer/config.tsx +++ b/client/src/apps/997.SSO/apiExplorer/config.tsx @@ -7,6 +7,5 @@ export default { routes: { 'api-explorer': lazy(() => import('.')) }, - togglable: false, - forceDisable: !import.meta.env.VITE_API_EXPLORER_URL + disabled: !import.meta.env.VITE_API_EXPLORER_URL } satisfies ModuleConfig diff --git a/client/src/apps/997.SSO/localizationManager/config.tsx b/client/src/apps/997.SSO/localizationManager/config.tsx index 55a267fc9..07b558cc8 100644 --- a/client/src/apps/997.SSO/localizationManager/config.tsx +++ b/client/src/apps/997.SSO/localizationManager/config.tsx @@ -7,6 +7,5 @@ export default { routes: { 'localization-manager': lazy(() => import('.')) }, - togglable: false, - forceDisable: !import.meta.env.VITE_LOCALIZATION_MANAGER_URL + disabled: !import.meta.env.VITE_LOCALIZATION_MANAGER_URL } satisfies ModuleConfig diff --git a/client/src/apps/998.Settings/modules/components/ModuleItem.tsx b/client/src/apps/998.Settings/modules/components/ModuleItem.tsx deleted file mode 100644 index 635fe2fe8..000000000 --- a/client/src/apps/998.Settings/modules/components/ModuleItem.tsx +++ /dev/null @@ -1,67 +0,0 @@ -import { Icon } from '@iconify/react' -import { ItemWrapper, Switch } from 'lifeforge-ui' -import _ from 'lodash' -import { useState } from 'react' -import { useTranslation } from 'react-i18next' -import type { ModuleConfig } from 'shared' - -function ModuleItem({ - module, - enabled, - toggleModule -}: { - module: ModuleConfig - enabled: boolean - toggleModule: (moduleName: string) => void -}) { - const [expandConfig, setExpandConfig] = useState(false) - - const { t } = useTranslation(`apps.${_.camelCase(module.name)}`) - - function toggleExpandConfig() { - setExpandConfig(!expandConfig) - } - - return ( - -
-
-
- {typeof module.icon === 'string' ? ( - - ) : ( - module.icon - )} -
-
-

- {t('title')} -

-

{t('description')}

-
-
-
- { - toggleModule(module.name) - }} - /> - -
-
-
- ) -} - -export default ModuleItem diff --git a/client/src/apps/998.Settings/modules/config.tsx b/client/src/apps/998.Settings/modules/config.tsx deleted file mode 100644 index 4c6b33ba8..000000000 --- a/client/src/apps/998.Settings/modules/config.tsx +++ /dev/null @@ -1,11 +0,0 @@ -import { lazy } from 'react' -import type { ModuleConfig } from 'shared' - -export default { - name: 'Modules', - icon: 'tabler:plug', - routes: { - modules: lazy(() => import('.')) - }, - togglable: false -} satisfies ModuleConfig diff --git a/client/src/apps/998.Settings/modules/index.tsx b/client/src/apps/998.Settings/modules/index.tsx deleted file mode 100644 index 47e3348ac..000000000 --- a/client/src/apps/998.Settings/modules/index.tsx +++ /dev/null @@ -1,86 +0,0 @@ -import forgeAPI from '@/utils/forgeAPI' -import { LoadingScreen, ModuleHeader } from 'lifeforge-ui' -import _ from 'lodash' -import { useTranslation } from 'react-i18next' -import { toast } from 'react-toastify' -import { useAuth } from 'shared' - -import ROUTES from '../../../routes' -import ModuleItem from './components/ModuleItem' - -function Modules() { - const { t } = useTranslation('common.sidebar') - - const { userData, setUserData } = useAuth() - - async function toggleModule(moduleName: string) { - if (!userData) return - - const newEnabledModules = userData.enabledModules.includes( - _.kebabCase(moduleName) - ) - ? userData.enabledModules.filter( - (module: string) => module !== _.kebabCase(moduleName) - ) - : [...userData.enabledModules, _.kebabCase(moduleName)] - - setUserData({ - ...userData, - enabledModules: newEnabledModules - }) - - try { - await forgeAPI.modules.toggle - .input({ - id: _.kebabCase(moduleName) - }) - .mutate({}) - } catch { - toast.error('Failed to update modules') - setUserData({ - ...userData, - enabledModules: userData.enabledModules - }) - } - } - - return ( - <> - - {userData ? ( -
    - {ROUTES.map( - route => - route.items.filter(route => route.togglable).length > 0 && ( -
  • -

    - {t(`categories.${_.camelCase(route.title)}`)} -

    -
      - {route.items - .filter(route => route.togglable) - .map((route, index) => ( - { - toggleModule(route.name).catch(console.error) - }} - /> - ))} -
    -
  • - ) - )} -
- ) : ( - - )} - - ) -} - -export default Modules diff --git a/client/src/apps/998.Settings/modules/interfaces/module_interfaces.ts b/client/src/apps/998.Settings/modules/interfaces/module_interfaces.ts deleted file mode 100644 index fbe649655..000000000 --- a/client/src/apps/998.Settings/modules/interfaces/module_interfaces.ts +++ /dev/null @@ -1,44 +0,0 @@ -interface IModuleConfigInput { - type: 'input' - icon: string - name: string - placeholder: string - isPassword?: boolean -} - -interface IModuleConfigSelect { - type: 'select' - icon: string - name: string - description?: string - options: Array<{ - value: string - label: string - }> -} - -interface IModuleConfigSwitch { - type: 'switch' - icon: string - name: string - defaultValue: boolean - description?: string -} - -interface IModuleEntry { - name: string - description?: string - icon: string - config?: Record< - string, - IModuleConfigInput | IModuleConfigSelect | IModuleConfigSwitch - > - deprecated?: boolean -} - -export type { - IModuleConfigInput, - IModuleConfigSelect, - IModuleConfigSwitch, - IModuleEntry -} diff --git a/client/src/apps/998.Settings/modules/locales/en.json b/client/src/apps/998.Settings/modules/locales/en.json deleted file mode 100644 index 34adf5fb5..000000000 --- a/client/src/apps/998.Settings/modules/locales/en.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "title": "Modules", - "description": "Customize your system by enabling or disabling modules.", - "buttons": { - "install": "Install Module" - } -} diff --git a/client/src/apps/998.Settings/modules/locales/ms.json b/client/src/apps/998.Settings/modules/locales/ms.json deleted file mode 100644 index fcb880982..000000000 --- a/client/src/apps/998.Settings/modules/locales/ms.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "title": "Modul", - "description": "Sesuaikan sistem anda dengan mengaktifkan atau menyahaktifkan modul.", - "buttons": { - "install": "Pasang Modul" - } -} diff --git a/client/src/apps/998.Settings/modules/locales/zh-CN.json b/client/src/apps/998.Settings/modules/locales/zh-CN.json deleted file mode 100644 index 4f5935ac4..000000000 --- a/client/src/apps/998.Settings/modules/locales/zh-CN.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "title": "模块", - "description": "通过启用或禁用模块来打造属于您的系统。", - "buttons": { - "install": "安装模块" - } -} diff --git a/client/src/apps/998.Settings/modules/locales/zh-TW.json b/client/src/apps/998.Settings/modules/locales/zh-TW.json deleted file mode 100644 index e82004b28..000000000 --- a/client/src/apps/998.Settings/modules/locales/zh-TW.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "title": "模組", - "description": "通過啟用或禁用模組來打造屬於您的系統。", - "buttons": { - "install": "安裝模塊" - } -} diff --git a/client/src/apps/999/accountSettings/config.tsx b/client/src/apps/999/accountSettings/config.tsx index 1312a7096..a7da4688c 100644 --- a/client/src/apps/999/accountSettings/config.tsx +++ b/client/src/apps/999/accountSettings/config.tsx @@ -7,6 +7,5 @@ export default { routes: { account: lazy(() => import('.')) }, - togglable: false, hidden: true } satisfies ModuleConfig diff --git a/client/src/routes/components/Sidebar/SidebarItems.tsx b/client/src/routes/components/Sidebar/SidebarItems.tsx index 89c3ebca6..a29326b6f 100644 --- a/client/src/routes/components/Sidebar/SidebarItems.tsx +++ b/client/src/routes/components/Sidebar/SidebarItems.tsx @@ -8,9 +8,9 @@ import { import _ from 'lodash' import { Fragment, useMemo } from 'react' import { useSidebarState } from 'shared' +import { useAuth } from 'shared' import ROUTES from '../..' -import { useAuth } from 'shared' function SidebarItems({ query }: { query: string }) { const { userData } = useAuth() @@ -25,10 +25,7 @@ function SidebarItems({ query }: { query: string }) { e.items.some( subItem => subItem.name.toLowerCase().includes(query.toLowerCase()) && - !subItem.forceDisable && - !subItem.hidden && - (!subItem.togglable || - userData?.enabledModules.includes(_.kebabCase(subItem.name))) + !subItem.disabled ) ), [query, userData] @@ -40,15 +37,7 @@ function SidebarItems({ query }: { query: string }) { {filteredRoutes.length > 0 ? ( filteredRoutes.map((item, index) => { const filteredModules = item.items.filter( - subItem => - (!subItem.togglable || - userData?.enabledModules.includes( - _.kebabCase(subItem.name) - ) === true) && - !subItem.forceDisable && - !subItem.hidden && - (item.title.toLowerCase().includes(query.toLowerCase()) || - subItem.name.toLowerCase().includes(query.toLowerCase())) + subItem => !subItem.disabled ) return ( diff --git a/client/src/routes/hooks/useAppRouter.ts b/client/src/routes/hooks/useAppRouter.ts index ee4037bae..7327c454d 100644 --- a/client/src/routes/hooks/useAppRouter.ts +++ b/client/src/routes/hooks/useAppRouter.ts @@ -17,7 +17,7 @@ import { export function useAppRouter() { const { t } = useTranslation('common.misc') - const { userData, auth, authLoading } = useAuth() + const { auth, authLoading } = useAuth() const router = useMemo(() => { // If authentication is still loading, return a placeholder router @@ -33,12 +33,11 @@ export function useAppRouter() { // If user is authenticated, create full application routes based on enabled modules const routerConfig = createRouterConfig({ routes: ROUTES, - enabledModules: userData?.enabledModules ?? [], loadingMessage: t('loadingModule') }) return createBrowserRouter(routerConfig) - }, [userData?.enabledModules, auth, t, authLoading]) + }, [auth, t, authLoading]) return { router, isAuthenticated: !!auth } } diff --git a/client/src/routes/utils/routerFactory.tsx b/client/src/routes/utils/routerFactory.tsx index d69e75188..4010fc1dc 100644 --- a/client/src/routes/utils/routerFactory.tsx +++ b/client/src/routes/utils/routerFactory.tsx @@ -5,12 +5,10 @@ import type { ModuleCategory } from 'shared' import Auth from '../../auth' import RootLayout from '../components/RootLayout' -import { shouldModuleBeEnabled } from './moduleFilters' import { createModuleRoute } from './routeBuilder' interface CreateRouterConfigOptions { routes: ModuleCategory[] - enabledModules?: string[] loadingMessage: string } @@ -44,12 +42,11 @@ export function AuthRedirectHandler() { */ export function createRouterConfig({ routes, - enabledModules = [], loadingMessage }: CreateRouterConfigOptions): RouteObject[] { const enabledItems = routes .flatMap(category => category.items) - .filter(item => shouldModuleBeEnabled(item, enabledModules)) + .filter(item => !item.disabled) const moduleRoutes = enabledItems.flatMap(item => createModuleRoute(item, loadingMessage) diff --git a/shared/src/interfaces/module_config.types.ts b/shared/src/interfaces/module_config.types.ts index e878b416a..21864ebfd 100644 --- a/shared/src/interfaces/module_config.types.ts +++ b/shared/src/interfaces/module_config.types.ts @@ -9,7 +9,6 @@ export interface ModuleConfig { | React.LazyExoticComponent> | (() => React.ReactElement) > - togglable: boolean hasAI?: boolean requiredAPIKeys?: string[] subsection?: { @@ -18,7 +17,7 @@ export interface ModuleConfig { path: string }[] hidden?: boolean - forceDisable?: boolean + disabled?: boolean category?: string }