@aphexcms/cms-core 0.1.16 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (120) hide show
  1. package/dist/api/client.d.ts.map +1 -1
  2. package/dist/api/client.js +7 -1
  3. package/dist/api/types.d.ts +2 -0
  4. package/dist/api/types.d.ts.map +1 -1
  5. package/dist/cli/generate-types.js +62 -17
  6. package/dist/cli/index.js +1 -1
  7. package/dist/client/index.d.ts +0 -1
  8. package/dist/client/index.d.ts.map +1 -1
  9. package/dist/client/index.js +0 -1
  10. package/dist/components/AdminApp.svelte +278 -45
  11. package/dist/components/AdminApp.svelte.d.ts +2 -0
  12. package/dist/components/AdminApp.svelte.d.ts.map +1 -1
  13. package/dist/components/admin/DocumentEditor.svelte +60 -13
  14. package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
  15. package/dist/components/admin/ObjectModal.svelte +15 -4
  16. package/dist/components/admin/ObjectModal.svelte.d.ts +1 -0
  17. package/dist/components/admin/ObjectModal.svelte.d.ts.map +1 -1
  18. package/dist/components/admin/SchemaField.svelte +64 -5
  19. package/dist/components/admin/SchemaField.svelte.d.ts +1 -0
  20. package/dist/components/admin/SchemaField.svelte.d.ts.map +1 -1
  21. package/dist/components/admin/fields/ArrayField.svelte +402 -111
  22. package/dist/components/admin/fields/ArrayField.svelte.d.ts +1 -0
  23. package/dist/components/admin/fields/ArrayField.svelte.d.ts.map +1 -1
  24. package/dist/components/admin/fields/DateField.svelte +145 -0
  25. package/dist/components/admin/fields/DateField.svelte.d.ts +14 -0
  26. package/dist/components/admin/fields/DateField.svelte.d.ts.map +1 -0
  27. package/dist/components/admin/fields/DateTimeField.svelte +225 -0
  28. package/dist/components/admin/fields/DateTimeField.svelte.d.ts +14 -0
  29. package/dist/components/admin/fields/DateTimeField.svelte.d.ts.map +1 -0
  30. package/dist/components/admin/fields/ImageField.svelte +221 -110
  31. package/dist/components/admin/fields/ImageField.svelte.d.ts +2 -0
  32. package/dist/components/admin/fields/ImageField.svelte.d.ts.map +1 -1
  33. package/dist/components/admin/fields/ReferenceField.svelte +1 -1
  34. package/dist/components/admin/fields/SlugField.svelte +21 -13
  35. package/dist/components/admin/fields/SlugField.svelte.d.ts +2 -2
  36. package/dist/components/admin/fields/SlugField.svelte.d.ts.map +1 -1
  37. package/dist/components/admin/fields/StringField.svelte +156 -12
  38. package/dist/components/admin/fields/StringField.svelte.d.ts +3 -2
  39. package/dist/components/admin/fields/StringField.svelte.d.ts.map +1 -1
  40. package/dist/components/admin/fields/URLField.svelte +41 -0
  41. package/dist/components/admin/fields/URLField.svelte.d.ts +14 -0
  42. package/dist/components/admin/fields/URLField.svelte.d.ts.map +1 -0
  43. package/dist/components/index.d.ts +0 -1
  44. package/dist/components/index.d.ts.map +1 -1
  45. package/dist/components/index.js +0 -1
  46. package/dist/db/interfaces/asset.d.ts.map +1 -1
  47. package/dist/db/interfaces/document.d.ts +0 -2
  48. package/dist/db/interfaces/document.d.ts.map +1 -1
  49. package/dist/db/interfaces/index.d.ts +2 -1
  50. package/dist/db/interfaces/index.d.ts.map +1 -1
  51. package/dist/db/interfaces/user.d.ts +2 -0
  52. package/dist/db/interfaces/user.d.ts.map +1 -1
  53. package/dist/db/utils/reference-resolver.js +1 -1
  54. package/dist/engine.d.ts.map +1 -1
  55. package/dist/engine.js +3 -0
  56. package/dist/field-validation/date-utils.d.ts +30 -0
  57. package/dist/field-validation/date-utils.d.ts.map +1 -0
  58. package/dist/field-validation/date-utils.js +147 -0
  59. package/dist/field-validation/rule.d.ts +4 -0
  60. package/dist/field-validation/rule.d.ts.map +1 -1
  61. package/dist/field-validation/rule.js +170 -4
  62. package/dist/field-validation/utils.d.ts +7 -3
  63. package/dist/field-validation/utils.d.ts.map +1 -1
  64. package/dist/field-validation/utils.js +130 -38
  65. package/dist/hooks.d.ts.map +1 -1
  66. package/dist/hooks.js +38 -21
  67. package/dist/lib/field-validation/date-utils.js +147 -0
  68. package/dist/lib/field-validation/rule.js +170 -4
  69. package/dist/lib/field-validation/utils.js +130 -38
  70. package/dist/local-api/collection-api.d.ts +16 -4
  71. package/dist/local-api/collection-api.d.ts.map +1 -1
  72. package/dist/local-api/collection-api.js +51 -17
  73. package/dist/local-api/index.d.ts +1 -1
  74. package/dist/local-api/index.d.ts.map +1 -1
  75. package/dist/routes/assets-cdn.d.ts.map +1 -1
  76. package/dist/routes/assets-cdn.js +14 -7
  77. package/dist/routes/assets.d.ts.map +1 -1
  78. package/dist/routes/assets.js +6 -1
  79. package/dist/routes/documents-by-id.d.ts.map +1 -1
  80. package/dist/routes/documents-by-id.js +18 -7
  81. package/dist/routes/documents-publish.js +2 -2
  82. package/dist/routes/documents-query.d.ts +3 -1
  83. package/dist/routes/documents-query.d.ts.map +1 -1
  84. package/dist/routes/documents-query.js +6 -2
  85. package/dist/routes/documents.d.ts.map +1 -1
  86. package/dist/routes/documents.js +20 -4
  87. package/dist/routes/index.d.ts +1 -0
  88. package/dist/routes/index.d.ts.map +1 -1
  89. package/dist/routes/index.js +2 -0
  90. package/dist/routes/user-preferences.d.ts +4 -0
  91. package/dist/routes/user-preferences.d.ts.map +1 -0
  92. package/dist/routes/user-preferences.js +77 -0
  93. package/dist/schema-utils/utils.d.ts +4 -0
  94. package/dist/schema-utils/utils.d.ts.map +1 -1
  95. package/dist/schema-utils/utils.js +23 -2
  96. package/dist/schema-utils/validator.d.ts +4 -0
  97. package/dist/schema-utils/validator.d.ts.map +1 -1
  98. package/dist/schema-utils/validator.js +120 -0
  99. package/dist/types/filters.d.ts +13 -0
  100. package/dist/types/filters.d.ts.map +1 -1
  101. package/dist/types/organization.d.ts +3 -0
  102. package/dist/types/organization.d.ts.map +1 -1
  103. package/dist/types/schemas.d.ts +67 -7
  104. package/dist/types/schemas.d.ts.map +1 -1
  105. package/dist/utils/default-orderings.d.ts +10 -0
  106. package/dist/utils/default-orderings.d.ts.map +1 -0
  107. package/dist/utils/default-orderings.js +63 -0
  108. package/dist/utils/field-defaults.d.ts +8 -0
  109. package/dist/utils/field-defaults.d.ts.map +1 -0
  110. package/dist/utils/field-defaults.js +20 -0
  111. package/dist/utils/index.d.ts +1 -0
  112. package/dist/utils/index.d.ts.map +1 -1
  113. package/dist/utils/index.js +1 -0
  114. package/dist/utils/initial-value-helpers.d.ts +50 -0
  115. package/dist/utils/initial-value-helpers.d.ts.map +1 -0
  116. package/dist/utils/initial-value-helpers.js +70 -0
  117. package/package.json +6 -4
  118. package/dist/components/admin/DocumentTypesList.svelte +0 -97
  119. package/dist/components/admin/DocumentTypesList.svelte.d.ts +0 -14
  120. package/dist/components/admin/DocumentTypesList.svelte.d.ts.map +0 -1
@@ -0,0 +1,70 @@
1
+ import dayjs from 'dayjs';
2
+ import utc from 'dayjs/plugin/utc';
3
+ dayjs.extend(utc);
4
+ /**
5
+ * Helper functions for initialValue date/datetime patterns
6
+ * These can be used directly as initialValue in field definitions
7
+ *
8
+ * Note: Returns values in storage format (ISO),
9
+ * which will be converted to the user's configured display format by the field components
10
+ */
11
+ // ==================== Date Helpers ====================
12
+ /**
13
+ * Returns the current date in YYYY-MM-DD format (storage format)
14
+ * Usage: initialValue: currentDate
15
+ */
16
+ export function currentDate() {
17
+ return dayjs().format('YYYY-MM-DD');
18
+ }
19
+ /**
20
+ * Returns a specific date offset from today
21
+ * Usage: initialValue: () => dateFromToday(7) // 7 days from now
22
+ * Usage: initialValue: () => dateFromToday(-7) // 7 days ago
23
+ */
24
+ export function dateFromToday(days) {
25
+ return dayjs().add(days, 'day').format('YYYY-MM-DD');
26
+ }
27
+ /**
28
+ * Returns the first day of the current month
29
+ * Usage: initialValue: firstDayOfMonth
30
+ */
31
+ export function firstDayOfMonth() {
32
+ return dayjs().startOf('month').format('YYYY-MM-DD');
33
+ }
34
+ /**
35
+ * Returns the last day of the current month
36
+ * Usage: initialValue: lastDayOfMonth
37
+ */
38
+ export function lastDayOfMonth() {
39
+ return dayjs().endOf('month').format('YYYY-MM-DD');
40
+ }
41
+ // ==================== DateTime Helpers ====================
42
+ /**
43
+ * Returns the current datetime in ISO UTC format (storage format)
44
+ * Usage: initialValue: currentDateTime
45
+ */
46
+ export function currentDateTime() {
47
+ return dayjs().utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
48
+ }
49
+ /**
50
+ * Returns a datetime offset from now in ISO UTC format
51
+ * Usage: initialValue: () => dateTimeFromNow(1, 'hour') // 1 hour from now
52
+ * Usage: initialValue: () => dateTimeFromNow(-30, 'minute') // 30 minutes ago
53
+ */
54
+ export function dateTimeFromNow(amount, unit) {
55
+ return dayjs().add(amount, unit).utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
56
+ }
57
+ /**
58
+ * Returns the start of the current day in ISO UTC format
59
+ * Usage: initialValue: startOfToday
60
+ */
61
+ export function startOfToday() {
62
+ return dayjs().startOf('day').utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
63
+ }
64
+ /**
65
+ * Returns the end of the current day in ISO UTC format
66
+ * Usage: initialValue: endOfToday
67
+ */
68
+ export function endOfToday() {
69
+ return dayjs().endOf('day').utc().format('YYYY-MM-DDTHH:mm:ss[Z]');
70
+ }
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@aphexcms/cms-core",
3
- "version": "0.1.16",
3
+ "version": "0.2.1",
4
4
  "description": "Aphex CMS Core - A Sanity-style CMS with ports and adapters architecture",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
8
8
  "svelte": "./dist/index.js",
9
9
  "bin": {
10
- "aphex": "./dist/cli/index.js"
10
+ "aphex": "./dist/cli/index.ts"
11
11
  },
12
12
  "exports": {
13
13
  ".": {
@@ -57,15 +57,17 @@
57
57
  "svelte": "^5.0.0",
58
58
  "tailwind-merge": "^3.3.1",
59
59
  "tailwind-variants": "^3.1.1",
60
- "@aphexcms/ui": "0.1.6"
60
+ "@aphexcms/ui": "0.1.8"
61
61
  },
62
62
  "dependencies": {
63
63
  "@clack/prompts": "^0.11.0",
64
64
  "cac": "^6.7.14",
65
+ "dayjs": "^1.11.19",
65
66
  "esbuild": "^0.24.0",
66
67
  "picocolors": "^1.1.1",
67
68
  "s3mini": "^0.5.0",
68
- "sharp": "^0.34.4"
69
+ "sharp": "^0.34.4",
70
+ "tsx": "^4.19.2"
69
71
  },
70
72
  "devDependencies": {
71
73
  "@eslint/compat": "^1.2.5",
@@ -1,97 +0,0 @@
1
- <script lang="ts">
2
- import { Badge } from '@aphexcms/ui/shadcn/badge';
3
- import {
4
- SidebarGroup,
5
- SidebarGroupLabel,
6
- SidebarGroupContent,
7
- SidebarMenu,
8
- SidebarMenuItem,
9
- SidebarMenuButton
10
- } from '@aphexcms/ui/shadcn/sidebar';
11
- import { page } from '$app/state';
12
-
13
- interface DocumentType {
14
- name: string;
15
- title: string;
16
- description?: string;
17
- documentCount?: number;
18
- }
19
-
20
- interface Props {
21
- documentTypes: DocumentType[];
22
- objectTypes: DocumentType[];
23
- }
24
-
25
- let { documentTypes, objectTypes }: Props = $props();
26
-
27
- const currentPath = $derived(page.url.pathname);
28
- </script>
29
-
30
- <!-- Document Types Section -->
31
- {#if documentTypes.length > 0}
32
- <SidebarGroup class="max-w-[350px]">
33
- <SidebarGroupLabel class="flex items-center justify-between">
34
- <span class="flex items-center gap-2">
35
- <span>📄</span>
36
- Content
37
- </span>
38
- <Badge variant="secondary" class="text-xs">{documentTypes.length}</Badge>
39
- </SidebarGroupLabel>
40
-
41
- <SidebarGroupContent>
42
- <SidebarMenu>
43
- {#each documentTypes as docType, index (index)}
44
- <SidebarMenuItem>
45
- <SidebarMenuButton
46
- onclick={goto(`/admin/documents/${docType.name}`)}
47
- isActive={currentPath.includes(`/documents/${docType.name}`)}
48
- class="group"
49
- >
50
- <div class="flex min-w-0 flex-1 items-center gap-2">
51
- <div
52
- class="flex h-5 w-5 flex-shrink-0 items-center justify-center rounded bg-blue-100 dark:bg-blue-900/20"
53
- >
54
- <span class="text-xs text-blue-600 dark:text-blue-400">📄</span>
55
- </div>
56
- <div class="min-w-0 flex-1">
57
- <div class="truncate text-sm font-medium">{docType.title}</div>
58
- {#if docType.description}
59
- <div class="text-muted-foreground truncate text-xs">{docType.description}</div>
60
- {/if}
61
- </div>
62
- </div>
63
- </SidebarMenuButton>
64
- </SidebarMenuItem>
65
- {/each}
66
- </SidebarMenu>
67
- </SidebarGroupContent>
68
- </SidebarGroup>
69
- {/if}
70
-
71
- <!-- Object Types Section -->
72
- {#if objectTypes.length > 0}
73
- <SidebarGroup>
74
- <SidebarGroupLabel class="flex items-center justify-between">
75
- <span class="flex items-center gap-2">
76
- <span>🧩</span>
77
- Object Types
78
- </span>
79
- <Badge variant="secondary" class="text-xs">{objectTypes.length}</Badge>
80
- </SidebarGroupLabel>
81
- </SidebarGroup>
82
- {/if}
83
-
84
- <!-- Empty state -->
85
- {#if documentTypes.length === 0 && objectTypes.length === 0}
86
- <SidebarGroup>
87
- <SidebarGroupContent>
88
- <div class="text-muted-foreground space-y-2 py-6 text-center">
89
- <div class="text-2xl">📄</div>
90
- <div>
91
- <p class="text-sm">No content types found</p>
92
- <p class="text-xs">Define schemas in schemaTypes/</p>
93
- </div>
94
- </div>
95
- </SidebarGroupContent>
96
- </SidebarGroup>
97
- {/if}
@@ -1,14 +0,0 @@
1
- interface DocumentType {
2
- name: string;
3
- title: string;
4
- description?: string;
5
- documentCount?: number;
6
- }
7
- interface Props {
8
- documentTypes: DocumentType[];
9
- objectTypes: DocumentType[];
10
- }
11
- declare const DocumentTypesList: import("svelte").Component<Props, {}, "">;
12
- type DocumentTypesList = ReturnType<typeof DocumentTypesList>;
13
- export default DocumentTypesList;
14
- //# sourceMappingURL=DocumentTypesList.svelte.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DocumentTypesList.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/DocumentTypesList.svelte.ts"],"names":[],"mappings":"AAeC,UAAU,YAAY;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,KAAK;IACd,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,WAAW,EAAE,YAAY,EAAE,CAAC;CAC5B;AA8EF,QAAA,MAAM,iBAAiB,2CAAwC,CAAC;AAChE,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC9D,eAAe,iBAAiB,CAAC"}