opacacms 0.2.1 → 0.3.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.
- package/README.md +31 -22
- package/dist/admin/auth-client.d.ts +39 -39
- package/dist/admin/index.d.ts +2 -2
- package/dist/admin/index.js +15 -10520
- package/dist/admin/plugin-client.d.ts +65 -0
- package/dist/admin/react.d.ts +2 -2
- package/dist/admin/react.js +34 -4
- package/dist/admin/stores/ui.d.ts +19 -4
- package/dist/admin/ui/components/PluginSettingsForm.d.ts +2 -2
- package/dist/admin/ui/components/custom-alert.d.ts +7 -0
- package/dist/admin/ui/components/{DetailSheet.d.ts → detail-sheet.d.ts} +1 -2
- package/dist/admin/ui/components/fields/FieldLabel.d.ts +1 -1
- package/dist/admin/ui/components/fields/RelationshipField.d.ts +1 -1
- package/dist/admin/ui/components/media/AssetManagerModal.d.ts +2 -2
- package/dist/admin/ui/components/plugin-iframe.d.ts +7 -0
- package/dist/admin/ui/components/ui/accordion.d.ts +17 -7
- package/dist/admin/ui/components/ui/alert-dialog.d.ts +16 -12
- package/dist/admin/ui/components/ui/button.d.ts +11 -7
- package/dist/admin/ui/components/ui/relationship.d.ts +1 -1
- package/dist/admin/ui/components/ui/sheet.d.ts +14 -27
- package/dist/admin/ui/components/ui/tooltip.d.ts +7 -0
- package/dist/admin/ui/components/versions-sheet.d.ts +4 -5
- package/dist/admin/ui/views/collection-list-view.d.ts +1 -1
- package/dist/admin/ui/views/dashboard-view.d.ts +1 -1
- package/dist/admin/ui/views/media-registry-view.d.ts +3 -3
- package/dist/admin/ui/views/settings-view.d.ts +2 -2
- package/dist/admin/vue.js +27 -4
- package/dist/admin/webcomponent.js +66 -16
- package/dist/admin.css +1 -1
- package/dist/auth/index.d.ts +43 -43
- package/dist/{chunk-7y1nbmw6.js → chunk-1bd7fz7n.js} +32 -2
- package/dist/chunk-1qm0m8r8.js +413 -0
- package/dist/chunk-2k3ysje3.js +31 -0
- package/dist/{chunk-jdfw4v3r.js → chunk-3j9zjfmn.js} +95 -30
- package/dist/{chunk-byq8g0rd.js → chunk-48ywpd0a.js} +16 -22
- package/dist/{chunk-tfnaf41w.js → chunk-5422w4eq.js} +41 -25
- package/dist/chunk-56n342hs.js +95 -0
- package/dist/chunk-5b8r0v8c.js +47 -0
- package/dist/chunk-63yg00vx.js +263 -0
- package/dist/{chunk-8sqjbsgt.js → chunk-6bywt602.js} +26 -1
- package/dist/{chunk-v9z61v3g.js → chunk-6qs0g65f.js} +43 -3
- package/dist/chunk-7rr5p01g.js +581 -0
- package/dist/{chunk-2es275xs.js → chunk-941zxavt.js} +867 -322
- package/dist/{chunk-51z3x7kq.js → chunk-a3qae86h.js} +1 -1
- package/dist/{chunk-3rdhbedb.js → chunk-adq2b75c.js} +2 -2
- package/dist/chunk-d0tb1xjw.js +93 -0
- package/dist/chunk-d7cgd6vn.js +318 -0
- package/dist/{chunk-6d1vdfwa.js → chunk-e0g6gn7n.js} +54 -75
- package/dist/chunk-ec4jhybj.js +1137 -0
- package/dist/chunk-fatyf6f7.js +221 -0
- package/dist/{chunk-526a3gqx.js → chunk-fnsf1dfm.js} +1 -1
- package/dist/chunk-g9bxb6h0.js +205 -0
- package/dist/chunk-gyaf5kgf.js +10 -0
- package/dist/{chunk-9kxpbcb1.js → chunk-h6dhexzr.js} +16 -7
- package/dist/{chunk-dykn5hr6.js → chunk-j8js1y0h.js} +31 -74
- package/dist/{chunk-t0zg026p.js → chunk-jq1drsen.js} +12 -1
- package/dist/{chunk-b3kr8w41.js → chunk-m24yqkeq.js} +38 -26
- package/dist/chunk-m5ems3hh.js +410 -0
- package/dist/{chunk-8scgdznr.js → chunk-m83ybzf8.js} +15 -18
- package/dist/chunk-majsbncm.js +98 -0
- package/dist/chunk-mp2gt9yh.js +237 -0
- package/dist/chunk-n1twhqmf.js +54 -0
- package/dist/{chunk-bygjkgrx.js → chunk-naqcqj8n.js} +57 -80
- package/dist/chunk-q5sb5dcr.js +15 -0
- package/dist/{chunk-06ks4ggh.js → chunk-qhdsjek6.js} +49 -89
- package/dist/{chunk-n133qpsm.js → chunk-qsh2nqz3.js} +50 -81
- package/dist/chunk-r0ms5tk1.js +76 -0
- package/dist/chunk-rwqwsanx.js +75 -0
- package/dist/chunk-sqsfk9p4.js +700 -0
- package/dist/{chunk-5gvbp2qa.js → chunk-x7bnzswh.js} +25 -18
- package/dist/cli/commands/dev.d.ts +8 -0
- package/dist/cli/commands/doctor.d.ts +8 -0
- package/dist/cli/commands/generate.d.ts +26 -0
- package/dist/cli/commands/init.d.ts +13 -1
- package/dist/cli/commands/migrate.d.ts +33 -0
- package/dist/cli/commands/plugin.d.ts +13 -0
- package/dist/cli/commands/seed.d.ts +21 -0
- package/dist/cli/{commands/migrate-commands.d.ts → core/migrations/migrate-logic.d.ts} +2 -2
- package/dist/cli/core/migrations/schema-diff-engine.d.ts +12 -0
- package/dist/cli/core/migrations/schema-diff.d.ts +11 -0
- package/dist/cli/{seeding.d.ts → core/seeding/auto-seed.d.ts} +7 -4
- package/dist/cli/core/seeding/seed-logic.d.ts +2 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.js +6 -170
- package/dist/client/RichText.d.ts +5 -0
- package/dist/client/rich-text-utils.d.ts +5 -0
- package/dist/client.js +3 -2
- package/dist/config.d.ts +3 -3
- package/dist/db/better-sqlite.d.ts +2 -3
- package/dist/db/better-sqlite.js +6 -5
- package/dist/db/bun-sqlite.d.ts +2 -3
- package/dist/db/bun-sqlite.js +6 -5
- package/dist/db/d1.d.ts +13 -7
- package/dist/db/d1.js +6 -5
- package/dist/db/index.d.ts +2 -2
- package/dist/db/index.js +10 -12
- package/dist/db/kysely/factory.d.ts +29 -0
- package/dist/db/kysely/plugins/audit-logging.d.ts +48 -0
- package/dist/db/kysely/plugins/auto-timestamps.d.ts +38 -0
- package/dist/db/kysely/plugins/cursor-pagination.d.ts +42 -0
- package/dist/db/kysely/plugins/deadlock-handler.d.ts +47 -0
- package/dist/db/kysely/plugins/draft-swapper.d.ts +33 -0
- package/dist/db/kysely/plugins/field-masking.d.ts +45 -0
- package/dist/db/kysely/plugins/fts-normalizer.d.ts +38 -0
- package/dist/db/kysely/plugins/i18n-fallback.d.ts +48 -0
- package/dist/db/kysely/plugins/id-generation.d.ts +42 -0
- package/dist/db/kysely/plugins/index.d.ts +16 -0
- package/dist/db/kysely/plugins/json-flattener.d.ts +38 -0
- package/dist/db/kysely/plugins/relationship-preloading.d.ts +39 -0
- package/dist/db/kysely/plugins/slug-generation.d.ts +37 -0
- package/dist/db/kysely/plugins/soft-delete.d.ts +42 -0
- package/dist/db/kysely/plugins/tree-resolver.d.ts +39 -0
- package/dist/db/kysely/plugins/virtual-field-resolver.d.ts +54 -0
- package/dist/db/kysely/plugins/zod-coercion.d.ts +34 -0
- package/dist/db/kysely/snapshot/snapshot-manager.d.ts +18 -0
- package/dist/db/postgres.d.ts +2 -2
- package/dist/db/postgres.js +6 -5
- package/dist/db/sqlite.d.ts +2 -3
- package/dist/db/sqlite.js +6 -5
- package/dist/index.d.ts +3 -0
- package/dist/index.js +161 -7
- package/dist/runtimes/bun.js +9 -6
- package/dist/runtimes/cloudflare-workers.d.ts +3 -1
- package/dist/runtimes/cloudflare-workers.js +36 -7
- package/dist/runtimes/next.js +8 -5
- package/dist/runtimes/node.js +9 -6
- package/dist/schema/collection.d.ts +116 -70
- package/dist/schema/compiler.d.ts +6 -0
- package/dist/schema/global.d.ts +38 -71
- package/dist/schema/index.d.ts +5 -4
- package/dist/schema/index.js +35 -550
- package/dist/schema/zod.d.ts +564 -0
- package/dist/server/admin-router.d.ts +1 -1
- package/dist/server/collection-router.d.ts +1 -1
- package/dist/server/graphql.d.ts +6 -0
- package/dist/server/handlers.d.ts +25 -7
- package/dist/server/middlewares/auth.d.ts +1 -1
- package/dist/server/plugins-loader.d.ts +1 -1
- package/dist/server/router.d.ts +2 -2
- package/dist/server/routers/admin.d.ts +1 -1
- package/dist/server/routers/auth.d.ts +1 -1
- package/dist/server/routers/collections.d.ts +4 -1
- package/dist/server/routers/plugins.d.ts +2 -2
- package/dist/server/setup-middlewares.d.ts +1 -1
- package/dist/server/system-router.d.ts +1 -1
- package/dist/server.js +11 -6
- package/dist/storage/adapters/cloudflare-r2.d.ts +11 -2
- package/dist/storage/index.js +5 -5
- package/dist/types.d.ts +253 -42
- package/dist/utils/context.d.ts +14 -0
- package/dist/utils/logger.d.ts +2 -0
- package/dist/utils/string.d.ts +10 -0
- package/dist/utils/webhooks-engine.d.ts +24 -0
- package/dist/validation.d.ts +67 -1
- package/dist/validator.d.ts +1 -0
- package/package.json +50 -11
- package/src/cli/index.ts +117 -0
- package/dist/chunk-6qq3ne6b.js +0 -288
- package/dist/chunk-6v1fw7q7.js +0 -126
- package/dist/chunk-7a9kn0np.js +0 -116
- package/dist/chunk-bexcv7xe.js +0 -36
- package/dist/chunk-d3ffeqp9.js +0 -87
- package/dist/chunk-fj19qccp.js +0 -78
- package/dist/chunk-g1jb60xd.js +0 -17
- package/dist/chunk-j53pz21t.js +0 -20
- package/dist/chunk-mkn49zmy.js +0 -102
- package/dist/chunk-r39em4yj.js +0 -29
- package/dist/chunk-rsf0tpy1.js +0 -8
- package/dist/chunk-srsac177.js +0 -85
- package/dist/chunk-twpvxfce.js +0 -64
- package/dist/chunk-ywm4t2gm.js +0 -19
- package/dist/cli/commands/plugin-sync.d.ts +0 -1
- package/dist/cli/commands/seed-command.d.ts +0 -2
- package/dist/plugins/ui-bridge.d.ts +0 -12
- package/dist/schema/fields/base.d.ts +0 -84
- package/dist/schema/fields/index.d.ts +0 -147
- package/dist/schema/infer.d.ts +0 -55
- /package/dist/admin/ui/components/{ColumnVisibilityToggle.d.ts → column-visibility-toggle.d.ts} +0 -0
- /package/dist/admin/ui/components/{DataDetailView.d.ts → data-detail-view.d.ts} +0 -0
- /package/dist/cli/{d1-mock.d.ts → core/mocks/d1-mock.d.ts} +0 -0
- /package/dist/cli/{r2-mock.d.ts → core/mocks/r2-mock.d.ts} +0 -0
- /package/dist/cli/{commands → core/plugins}/plugin-build.d.ts +0 -0
- /package/dist/cli/{commands → core/plugins}/plugin-init.d.ts +0 -0
- /package/dist/cli/{commands → core/types}/generate-types.d.ts +0 -0
- /package/dist/{schema/fields/validation.test.d.ts → cli/seeding.test.d.ts} +0 -0
package/dist/schema/index.js
CHANGED
|
@@ -1,552 +1,37 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
required(val = true) {
|
|
22
|
-
this.config.required = val;
|
|
23
|
-
return this;
|
|
24
|
-
}
|
|
25
|
-
unique(val = true) {
|
|
26
|
-
this.config.unique = val;
|
|
27
|
-
return this;
|
|
28
|
-
}
|
|
29
|
-
localized(val = true) {
|
|
30
|
-
this.config.localized = val;
|
|
31
|
-
return this;
|
|
32
|
-
}
|
|
33
|
-
defaultValue(val) {
|
|
34
|
-
this.config.defaultValue = val;
|
|
35
|
-
return this;
|
|
36
|
-
}
|
|
37
|
-
validate(val) {
|
|
38
|
-
this.config.validate = val;
|
|
39
|
-
return this;
|
|
40
|
-
}
|
|
41
|
-
access(config) {
|
|
42
|
-
this.config.access = config;
|
|
43
|
-
return this;
|
|
44
|
-
}
|
|
45
|
-
description(text) {
|
|
46
|
-
this._ensureAdmin();
|
|
47
|
-
this.config.admin.description = text;
|
|
48
|
-
return this;
|
|
49
|
-
}
|
|
50
|
-
admin(opts) {
|
|
51
|
-
this._ensureAdmin();
|
|
52
|
-
this.config.admin = { ...this.config.admin, ...opts };
|
|
53
|
-
return this;
|
|
54
|
-
}
|
|
55
|
-
hidden(val = true) {
|
|
56
|
-
this._ensureAdmin();
|
|
57
|
-
this.config.admin.hidden = val;
|
|
58
|
-
return this;
|
|
59
|
-
}
|
|
60
|
-
readOnly(val = true) {
|
|
61
|
-
this._ensureAdmin();
|
|
62
|
-
this.config.admin.readOnly = val;
|
|
63
|
-
return this;
|
|
64
|
-
}
|
|
65
|
-
extend(opts) {
|
|
66
|
-
this.config = { ...this.config, ...opts };
|
|
67
|
-
return this;
|
|
68
|
-
}
|
|
69
|
-
_ensureAdmin() {
|
|
70
|
-
if (!this.config.admin) {
|
|
71
|
-
this.config.admin = {};
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
_ensureOptions() {
|
|
75
|
-
if (!this.config.options) {
|
|
76
|
-
this.config.options = {};
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
build() {
|
|
80
|
-
return this.config;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
// src/schema/fields/index.ts
|
|
85
|
-
class TextFieldBuilder extends FieldBuilder {
|
|
86
|
-
constructor(name) {
|
|
87
|
-
super("text", name);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
class SlugFieldBuilder extends FieldBuilder {
|
|
92
|
-
constructor(name) {
|
|
93
|
-
super("slug", name);
|
|
94
|
-
}
|
|
95
|
-
from(sourceField) {
|
|
96
|
-
this.config.from = sourceField;
|
|
97
|
-
return this;
|
|
98
|
-
}
|
|
99
|
-
format(fn) {
|
|
100
|
-
this.config.format = fn;
|
|
101
|
-
return this;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
class TextAreaFieldBuilder extends FieldBuilder {
|
|
106
|
-
constructor(name) {
|
|
107
|
-
super("textarea", name);
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
class NumberFieldBuilder extends FieldBuilder {
|
|
112
|
-
constructor(name) {
|
|
113
|
-
super("number", name);
|
|
114
|
-
}
|
|
115
|
-
min(val) {
|
|
116
|
-
this._ensureOptions();
|
|
117
|
-
this.config.options.min = val;
|
|
118
|
-
return this;
|
|
119
|
-
}
|
|
120
|
-
max(val) {
|
|
121
|
-
this._ensureOptions();
|
|
122
|
-
this.config.options.max = val;
|
|
123
|
-
return this;
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
class BooleanFieldBuilder extends FieldBuilder {
|
|
128
|
-
constructor(name) {
|
|
129
|
-
super("boolean", name);
|
|
130
|
-
}
|
|
131
|
-
display(type) {
|
|
132
|
-
this._ensureOptions();
|
|
133
|
-
this.config.options.display = type;
|
|
134
|
-
return this;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
class RichTextFieldBuilder extends FieldBuilder {
|
|
139
|
-
constructor(name) {
|
|
140
|
-
super("richtext", name);
|
|
141
|
-
}
|
|
142
|
-
mode(mode) {
|
|
143
|
-
this._ensureOptions();
|
|
144
|
-
this.config.options.defaultMode = mode;
|
|
145
|
-
return this;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
class UIFieldBuilder extends FieldBuilder {
|
|
150
|
-
constructor(name) {
|
|
151
|
-
super("ui", name);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
class RelationshipFieldBuilder extends FieldBuilder {
|
|
156
|
-
constructor(name) {
|
|
157
|
-
super("relationship", name);
|
|
158
|
-
}
|
|
159
|
-
to(collection) {
|
|
160
|
-
this.config.relationTo = typeof collection === "string" ? collection : collection.slug;
|
|
161
|
-
return this;
|
|
162
|
-
}
|
|
163
|
-
single() {
|
|
164
|
-
this.config.hasMany = false;
|
|
165
|
-
return this;
|
|
166
|
-
}
|
|
167
|
-
many() {
|
|
168
|
-
this.config.hasMany = true;
|
|
169
|
-
return this;
|
|
170
|
-
}
|
|
171
|
-
displayField(field) {
|
|
172
|
-
this.config.displayField = field;
|
|
173
|
-
return this;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
class FileFieldBuilder extends FieldBuilder {
|
|
178
|
-
constructor(name) {
|
|
179
|
-
super("file", name);
|
|
180
|
-
}
|
|
181
|
-
bucket(bucketName) {
|
|
182
|
-
this.config.bucket = bucketName;
|
|
183
|
-
return this;
|
|
184
|
-
}
|
|
185
|
-
allowedmime_types(types) {
|
|
186
|
-
this._ensureOptions();
|
|
187
|
-
this.config.options.allowedmime_types = types;
|
|
188
|
-
return this;
|
|
189
|
-
}
|
|
190
|
-
maxSize(bytes) {
|
|
191
|
-
this._ensureOptions();
|
|
192
|
-
this.config.options.maxFileSize = bytes;
|
|
193
|
-
return this;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
class JSONFieldBuilder extends FieldBuilder {
|
|
198
|
-
constructor(name) {
|
|
199
|
-
super("json", name);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
class DateFieldBuilder extends FieldBuilder {
|
|
204
|
-
constructor(name) {
|
|
205
|
-
super("date", name);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
class SelectFieldBuilder extends FieldBuilder {
|
|
210
|
-
constructor(name) {
|
|
211
|
-
super("select", name);
|
|
212
|
-
}
|
|
213
|
-
choices(choices) {
|
|
214
|
-
this._ensureOptions();
|
|
215
|
-
this.config.options.choices = choices;
|
|
216
|
-
return this;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
class RadioFieldBuilder extends FieldBuilder {
|
|
221
|
-
constructor(name) {
|
|
222
|
-
super("radio", name);
|
|
223
|
-
}
|
|
224
|
-
choices(choices) {
|
|
225
|
-
this._ensureOptions();
|
|
226
|
-
this.config.options.choices = choices;
|
|
227
|
-
return this;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
class TabsFieldBuilder extends FieldBuilder {
|
|
232
|
-
constructor() {
|
|
233
|
-
super("tabs", "");
|
|
234
|
-
this.config.tabs = [];
|
|
235
|
-
}
|
|
236
|
-
tab(label, ...fields) {
|
|
237
|
-
this.config.tabs.push({
|
|
238
|
-
label,
|
|
239
|
-
fields: fields.map((f) => f.build())
|
|
240
|
-
});
|
|
241
|
-
return this;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
class CollapsibleFieldBuilder extends FieldBuilder {
|
|
246
|
-
constructor(fields) {
|
|
247
|
-
super("collapsible", "");
|
|
248
|
-
this.config.fields = fields ? fields.map((f) => f.build()) : [];
|
|
249
|
-
this._ensureOptions();
|
|
250
|
-
}
|
|
251
|
-
initiallyCollapsed(val = true) {
|
|
252
|
-
this.config.options.initiallyCollapsed = val;
|
|
253
|
-
return this;
|
|
254
|
-
}
|
|
255
|
-
useAsTitle(fieldName) {
|
|
256
|
-
this.config.options.useAsTitle = fieldName;
|
|
257
|
-
return this;
|
|
258
|
-
}
|
|
259
|
-
fields(...fields) {
|
|
260
|
-
this.config.fields = fields.map((f) => f.build());
|
|
261
|
-
return this;
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
class JoinFieldBuilder extends FieldBuilder {
|
|
266
|
-
constructor(name) {
|
|
267
|
-
super("join", name);
|
|
268
|
-
}
|
|
269
|
-
collection(collectionSlug) {
|
|
270
|
-
this.config.collection = collectionSlug;
|
|
271
|
-
return this;
|
|
272
|
-
}
|
|
273
|
-
on(fieldName) {
|
|
274
|
-
this.config.on = fieldName;
|
|
275
|
-
return this;
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
class ArrayFieldBuilder extends FieldBuilder {
|
|
280
|
-
constructor(name) {
|
|
281
|
-
super("array", name);
|
|
282
|
-
}
|
|
283
|
-
of(...fields) {
|
|
284
|
-
this.config.fields = fields.map((f) => f.build());
|
|
285
|
-
return this;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
class GroupFieldBuilder extends FieldBuilder {
|
|
290
|
-
constructor(name, fields) {
|
|
291
|
-
super("group", name);
|
|
292
|
-
if (fields) {
|
|
293
|
-
this.config.fields = fields.map((f) => f.build());
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
fields(...fields) {
|
|
297
|
-
this.config.fields = fields.map((f) => f.build());
|
|
298
|
-
return this;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
class RowFieldBuilder extends FieldBuilder {
|
|
303
|
-
constructor(fields) {
|
|
304
|
-
super("row", "");
|
|
305
|
-
if (fields) {
|
|
306
|
-
this.config.fields = fields.map((f) => f.build());
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
fields(...fields) {
|
|
310
|
-
this.config.fields = fields.map((f) => f.build());
|
|
311
|
-
return this;
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
class BlockBuilder {
|
|
316
|
-
config;
|
|
317
|
-
constructor(slug) {
|
|
318
|
-
this.config = { slug, fields: [] };
|
|
319
|
-
}
|
|
320
|
-
label(label) {
|
|
321
|
-
this.config.label = label;
|
|
322
|
-
return this;
|
|
323
|
-
}
|
|
324
|
-
fields(...fields) {
|
|
325
|
-
this.config.fields = fields.map((f) => f.build());
|
|
326
|
-
return this;
|
|
327
|
-
}
|
|
328
|
-
build() {
|
|
329
|
-
return this.config;
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
class VirtualFieldBuilder extends FieldBuilder {
|
|
334
|
-
constructor(name) {
|
|
335
|
-
super("virtual", name);
|
|
336
|
-
}
|
|
337
|
-
resolve(fn) {
|
|
338
|
-
this.config.resolve = fn;
|
|
339
|
-
return this;
|
|
340
|
-
}
|
|
341
|
-
returnType(type) {
|
|
342
|
-
this.config.returnType = type;
|
|
343
|
-
return this;
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
class BlocksFieldBuilder extends FieldBuilder {
|
|
348
|
-
constructor(name) {
|
|
349
|
-
super("blocks", name);
|
|
350
|
-
}
|
|
351
|
-
blocks(...blocks) {
|
|
352
|
-
this.config.blocks = blocks.map((b) => b.build());
|
|
353
|
-
return this;
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
var Field = {
|
|
357
|
-
text: (name) => new TextFieldBuilder(name),
|
|
358
|
-
slug: (name) => new SlugFieldBuilder(name),
|
|
359
|
-
textarea: (name) => new TextAreaFieldBuilder(name),
|
|
360
|
-
number: (name) => new NumberFieldBuilder(name),
|
|
361
|
-
boolean: (name) => new BooleanFieldBuilder(name),
|
|
362
|
-
date: (name) => new DateFieldBuilder(name),
|
|
363
|
-
select: (name) => new SelectFieldBuilder(name),
|
|
364
|
-
radio: (name) => new RadioFieldBuilder(name),
|
|
365
|
-
richText: (name) => new RichTextFieldBuilder(name),
|
|
366
|
-
relationship: (name) => new RelationshipFieldBuilder(name),
|
|
367
|
-
join: (name) => new JoinFieldBuilder(name),
|
|
368
|
-
file: (name) => new FileFieldBuilder(name),
|
|
369
|
-
array: (name) => new ArrayFieldBuilder(name),
|
|
370
|
-
group: (name, fields) => {
|
|
371
|
-
const builder = new GroupFieldBuilder(name);
|
|
372
|
-
if (fields)
|
|
373
|
-
builder.fields(...fields);
|
|
374
|
-
return builder;
|
|
375
|
-
},
|
|
376
|
-
tabs: () => new TabsFieldBuilder,
|
|
377
|
-
collapsible: (fields) => {
|
|
378
|
-
const builder = new CollapsibleFieldBuilder(fields);
|
|
379
|
-
return builder;
|
|
380
|
-
},
|
|
381
|
-
row: (fields) => {
|
|
382
|
-
const builder = new RowFieldBuilder(fields);
|
|
383
|
-
return builder;
|
|
384
|
-
},
|
|
385
|
-
blocks: (name, ...blocks) => {
|
|
386
|
-
const builder = new BlocksFieldBuilder(name);
|
|
387
|
-
builder.blocks(...blocks);
|
|
388
|
-
return builder;
|
|
389
|
-
},
|
|
390
|
-
block: (slug) => new BlockBuilder(slug),
|
|
391
|
-
ui: (name) => new UIFieldBuilder(name),
|
|
392
|
-
json: (name) => new JSONFieldBuilder(name)
|
|
393
|
-
};
|
|
394
|
-
|
|
395
|
-
// src/schema/collection.ts
|
|
396
|
-
class CollectionBuilder {
|
|
397
|
-
slug;
|
|
398
|
-
config = {
|
|
399
|
-
fields: [],
|
|
400
|
-
timestamps: true
|
|
401
|
-
};
|
|
402
|
-
fieldBuilders = [];
|
|
403
|
-
constructor(slug) {
|
|
404
|
-
this.slug = slug;
|
|
405
|
-
this.config.slug = slug;
|
|
406
|
-
}
|
|
407
|
-
label(label) {
|
|
408
|
-
this.config.label = label;
|
|
409
|
-
return this;
|
|
410
|
-
}
|
|
411
|
-
icon(iconName) {
|
|
412
|
-
this.config.icon = iconName;
|
|
413
|
-
return this;
|
|
414
|
-
}
|
|
415
|
-
useAsTitle(fieldName) {
|
|
416
|
-
this._ensureAdmin();
|
|
417
|
-
this.config.admin.useAsTitle = fieldName;
|
|
418
|
-
return this;
|
|
419
|
-
}
|
|
420
|
-
fields(fields) {
|
|
421
|
-
const nextBuilder = new CollectionBuilder(this.config.slug);
|
|
422
|
-
nextBuilder.config = { ...this.config };
|
|
423
|
-
nextBuilder.fieldBuilders = [...fields];
|
|
424
|
-
nextBuilder.config.fields = nextBuilder.fieldBuilders.map((f) => f.build());
|
|
425
|
-
return nextBuilder;
|
|
426
|
-
}
|
|
427
|
-
access(rules) {
|
|
428
|
-
this.config.access = rules;
|
|
429
|
-
return this;
|
|
430
|
-
}
|
|
431
|
-
virtual(name, options) {
|
|
432
|
-
const builder = new VirtualFieldBuilder(name);
|
|
433
|
-
if (options.label)
|
|
434
|
-
builder.label(options.label);
|
|
435
|
-
if (options.resolve)
|
|
436
|
-
builder.resolve(options.resolve);
|
|
437
|
-
if (options.returnType)
|
|
438
|
-
builder.returnType(options.returnType);
|
|
439
|
-
const nextBuilder = new CollectionBuilder(this.config.slug);
|
|
440
|
-
nextBuilder.config = { ...this.config };
|
|
441
|
-
nextBuilder.fieldBuilders = [...this.fieldBuilders, builder];
|
|
442
|
-
nextBuilder.config.fields = nextBuilder.fieldBuilders.map((f) => f.build());
|
|
443
|
-
return nextBuilder;
|
|
444
|
-
}
|
|
445
|
-
admin(opts) {
|
|
446
|
-
if (typeof opts === "boolean") {
|
|
447
|
-
this.config.admin = opts;
|
|
448
|
-
} else {
|
|
449
|
-
this.config.admin = { ...this.config.admin, ...opts };
|
|
450
|
-
}
|
|
451
|
-
return this;
|
|
452
|
-
}
|
|
453
|
-
versions(opts) {
|
|
454
|
-
this.config.versions = opts;
|
|
455
|
-
return this;
|
|
456
|
-
}
|
|
457
|
-
webhooks(webhooks) {
|
|
458
|
-
this.config.webhooks = webhooks;
|
|
459
|
-
return this;
|
|
460
|
-
}
|
|
461
|
-
extend(preset) {
|
|
462
|
-
return this;
|
|
463
|
-
}
|
|
464
|
-
_ensureAdmin() {
|
|
465
|
-
if (!this.config.admin || typeof this.config.admin === "boolean") {
|
|
466
|
-
this.config.admin = {};
|
|
467
|
-
}
|
|
468
|
-
}
|
|
469
|
-
build() {
|
|
470
|
-
const compiledFields = this.fieldBuilders.map((builder) => builder.build());
|
|
471
|
-
return {
|
|
472
|
-
...this.config,
|
|
473
|
-
slug: this.slug,
|
|
474
|
-
fields: compiledFields
|
|
475
|
-
};
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
var Collection = {
|
|
479
|
-
create: (slug) => new CollectionBuilder(slug)
|
|
480
|
-
};
|
|
481
|
-
// src/schema/global.ts
|
|
482
|
-
class GlobalBuilder {
|
|
483
|
-
slug;
|
|
484
|
-
config = {};
|
|
485
|
-
_fields = [];
|
|
486
|
-
constructor(slug) {
|
|
487
|
-
this.slug = slug;
|
|
488
|
-
this.config.slug = slug;
|
|
489
|
-
this.config.fields = [];
|
|
490
|
-
this.config.timestamps = true;
|
|
491
|
-
}
|
|
492
|
-
label(label) {
|
|
493
|
-
this.config.label = label;
|
|
494
|
-
return this;
|
|
495
|
-
}
|
|
496
|
-
icon(iconName) {
|
|
497
|
-
this.config.icon = iconName;
|
|
498
|
-
return this;
|
|
499
|
-
}
|
|
500
|
-
fields(fields) {
|
|
501
|
-
const nextBuilder = new GlobalBuilder(this.config.slug);
|
|
502
|
-
nextBuilder.config = { ...this.config };
|
|
503
|
-
nextBuilder._fields = [...fields];
|
|
504
|
-
nextBuilder.config.fields = fields.map((f) => f.build());
|
|
505
|
-
return nextBuilder;
|
|
506
|
-
}
|
|
507
|
-
access(rules) {
|
|
508
|
-
this.config.access = rules;
|
|
509
|
-
return this;
|
|
510
|
-
}
|
|
511
|
-
virtual(name, options) {
|
|
512
|
-
const builder = new VirtualFieldBuilder(name);
|
|
513
|
-
if (options.label)
|
|
514
|
-
builder.label(options.label);
|
|
515
|
-
if (options.resolve)
|
|
516
|
-
builder.resolve(options.resolve);
|
|
517
|
-
if (options.returnType)
|
|
518
|
-
builder.returnType(options.returnType);
|
|
519
|
-
const nextBuilder = new GlobalBuilder(this.config.slug);
|
|
520
|
-
nextBuilder.config = { ...this.config };
|
|
521
|
-
nextBuilder._fields = [...this._fields, builder];
|
|
522
|
-
nextBuilder.config.fields = nextBuilder._fields.map((f) => f.build());
|
|
523
|
-
return nextBuilder;
|
|
524
|
-
}
|
|
525
|
-
computed(name, options) {
|
|
526
|
-
return this.virtual(name, options);
|
|
527
|
-
}
|
|
528
|
-
extend(opts) {
|
|
529
|
-
this.config = { ...this.config, ...opts };
|
|
530
|
-
return this;
|
|
531
|
-
}
|
|
532
|
-
build() {
|
|
533
|
-
if (!this.config.slug) {
|
|
534
|
-
throw new Error("Globals must have a slug.");
|
|
535
|
-
}
|
|
536
|
-
if (!this.config.fields || this.config.fields.length === 0) {
|
|
537
|
-
throw new Error(`Global "${this.config.slug}" must have at least one field.`);
|
|
538
|
-
}
|
|
539
|
-
return this.config;
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
var Global = {
|
|
543
|
-
create: (slug) => new GlobalBuilder(slug)
|
|
544
|
-
};
|
|
1
|
+
import {
|
|
2
|
+
defineCollection,
|
|
3
|
+
defineGlobal
|
|
4
|
+
} from "../chunk-n1twhqmf.js";
|
|
5
|
+
import {
|
|
6
|
+
$ZodArray,
|
|
7
|
+
$ZodBoolean,
|
|
8
|
+
$ZodDate,
|
|
9
|
+
$ZodDefault,
|
|
10
|
+
$ZodDiscriminatedUnion,
|
|
11
|
+
$ZodEnum,
|
|
12
|
+
$ZodNullable,
|
|
13
|
+
$ZodNumber,
|
|
14
|
+
$ZodObject,
|
|
15
|
+
$ZodOptional,
|
|
16
|
+
$ZodString,
|
|
17
|
+
z,
|
|
18
|
+
zodToOpacaFields
|
|
19
|
+
} from "../chunk-m5ems3hh.js";
|
|
20
|
+
import"../chunk-6bywt602.js";
|
|
545
21
|
export {
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
22
|
+
zodToOpacaFields,
|
|
23
|
+
z,
|
|
24
|
+
defineGlobal,
|
|
25
|
+
defineCollection,
|
|
26
|
+
$ZodString,
|
|
27
|
+
$ZodOptional,
|
|
28
|
+
$ZodObject,
|
|
29
|
+
$ZodNumber,
|
|
30
|
+
$ZodNullable,
|
|
31
|
+
$ZodEnum,
|
|
32
|
+
$ZodDiscriminatedUnion,
|
|
33
|
+
$ZodDefault,
|
|
34
|
+
$ZodDate,
|
|
35
|
+
$ZodBoolean,
|
|
36
|
+
$ZodArray
|
|
552
37
|
};
|