@donotdev/cli 0.0.6 → 0.0.8

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 (87) hide show
  1. package/README.md +3 -18
  2. package/dependencies-matrix.json +64 -121
  3. package/dist/bin/commands/build.js +173 -161
  4. package/dist/bin/commands/bump.js +181 -156
  5. package/dist/bin/commands/cacheout.js +188 -171
  6. package/dist/bin/commands/create-app.js +213 -156
  7. package/dist/bin/commands/create-project.js +183 -154
  8. package/dist/bin/commands/deploy.js +491 -477
  9. package/dist/bin/commands/dev.js +176 -160
  10. package/dist/bin/commands/emu.js +181 -165
  11. package/dist/bin/commands/format.js +191 -174
  12. package/dist/bin/commands/lint.js +191 -171
  13. package/dist/bin/commands/preview.js +177 -161
  14. package/dist/bin/commands/sync-secrets.js +172 -158
  15. package/dist/bin/commands/wai.d.ts +11 -0
  16. package/dist/bin/commands/wai.d.ts.map +1 -0
  17. package/dist/bin/commands/wai.js +12 -0
  18. package/dist/bin/commands/wai.js.map +1 -0
  19. package/dist/bin/dndev.js +24 -24
  20. package/dist/bin/donotdev.js +24 -24
  21. package/dist/index.d.ts +1 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +661 -669
  24. package/dist/index.js.map +1 -1
  25. package/package.json +1 -1
  26. package/templates/app-demo/src/config/app.ts.example +12 -0
  27. package/templates/app-next/src/config/app.ts.example +75 -48
  28. package/templates/app-vite/index.html.example +71 -37
  29. package/templates/app-vite/src/config/app.ts.example +75 -47
  30. package/templates/app-vite/src/pages/FormPageExample.tsx.example +152 -0
  31. package/templates/app-vite/src/pages/HomePage.tsx.example +81 -134
  32. package/templates/app-vite/src/pages/ListPageExample.tsx.example +88 -0
  33. package/templates/functions-firebase/build.mjs.example +8 -1
  34. package/templates/functions-firebase/functions-firebase/build.mjs.example +8 -1
  35. package/templates/functions-firebase/functions-firebase/src/index.ts.example +19 -25
  36. package/templates/functions-firebase/functions.config.js.example +35 -0
  37. package/templates/root-consumer/entities/ExampleEntity.ts.example +223 -0
  38. package/templates/root-consumer/entities/demo.ts.example +576 -0
  39. package/templates/root-consumer/entities/index.ts.example +15 -0
  40. package/templates/root-consumer/eslint.config.js.example +2 -80
  41. package/templates/root-consumer/guides/{AGENT_START_HERE.md.example → dndev/AGENT_START_HERE.md.example} +22 -0
  42. package/templates/root-consumer/guides/dndev/COMPONENTS_CRUD.md.example +231 -0
  43. package/templates/root-consumer/guides/{SETUP_AUTH.md.example → dndev/SETUP_AUTH.md.example} +30 -0
  44. package/templates/root-consumer/guides/dndev/SETUP_CRUD.md.example +539 -0
  45. package/templates/root-consumer/guides/dndev/SETUP_FUNCTIONS.md.example +116 -0
  46. package/templates/root-consumer/guides/{SETUP_I18N.md.example → dndev/SETUP_I18N.md.example} +46 -0
  47. package/templates/root-consumer/guides/wai-way/WAI_WAY_CLI.md.example +404 -0
  48. package/templates/root-consumer/guides/wai-way/agents/architect.md.example +78 -0
  49. package/templates/root-consumer/guides/wai-way/agents/builder.md.example +87 -0
  50. package/templates/root-consumer/guides/wai-way/agents/extractor.md.example +325 -0
  51. package/templates/root-consumer/guides/wai-way/agents/polisher.md.example +100 -0
  52. package/templates/root-consumer/guides/wai-way/blueprints/0_brainstorm.md.example +281 -0
  53. package/templates/root-consumer/guides/wai-way/blueprints/1_scaffold.md.example +77 -0
  54. package/templates/root-consumer/guides/wai-way/blueprints/2_entities.md.example +104 -0
  55. package/templates/root-consumer/guides/wai-way/blueprints/3_compose.md.example +124 -0
  56. package/templates/root-consumer/guides/wai-way/blueprints/4_configure.md.example +165 -0
  57. package/templates/root-consumer/guides/wai-way/context_map.json.example +95 -0
  58. package/templates/root-consumer/guides/wai-way/entity_patterns.md.example +840 -0
  59. package/templates/root-consumer/guides/wai-way/page_patterns.md.example +686 -0
  60. package/templates/root-consumer/guides/wai-way/presets_guide.md.example +217 -0
  61. package/templates/root-consumer/guides/wai-way/spec_template.md.example +312 -0
  62. package/templates/functions-firebase/functions-firebase/src/crud/createEntity.ts.example +0 -19
  63. package/templates/functions-firebase/functions-firebase/src/crud/deleteEntity.ts.example +0 -14
  64. package/templates/functions-firebase/functions-firebase/src/crud/getEntity.ts.example +0 -14
  65. package/templates/functions-firebase/functions-firebase/src/crud/index.ts.example +0 -12
  66. package/templates/functions-firebase/functions-firebase/src/crud/listEntities.ts.example +0 -14
  67. package/templates/functions-firebase/functions-firebase/src/crud/updateEntity.ts.example +0 -14
  68. package/templates/root-consumer/guides/COMPONENTS_CRUD.md.example +0 -70
  69. package/templates/root-consumer/guides/SETUP_CRUD.md.example +0 -1244
  70. package/templates/root-consumer/guides/SETUP_FUNCTIONS.md.example +0 -114
  71. /package/templates/root-consumer/guides/{COMPONENTS_ADV.md.example → dndev/COMPONENTS_ADV.md.example} +0 -0
  72. /package/templates/root-consumer/guides/{COMPONENTS_ATOMIC.md.example → dndev/COMPONENTS_ATOMIC.md.example} +0 -0
  73. /package/templates/root-consumer/guides/{COMPONENTS_UI.md.example → dndev/COMPONENTS_UI.md.example} +0 -0
  74. /package/templates/root-consumer/guides/{ENV_SETUP.md.example → dndev/ENV_SETUP.md.example} +0 -0
  75. /package/templates/root-consumer/guides/{INDEX.md.example → dndev/INDEX.md.example} +0 -0
  76. /package/templates/root-consumer/guides/{SETUP_APP_CONFIG.md.example → dndev/SETUP_APP_CONFIG.md.example} +0 -0
  77. /package/templates/root-consumer/guides/{SETUP_BILLING.md.example → dndev/SETUP_BILLING.md.example} +0 -0
  78. /package/templates/root-consumer/guides/{SETUP_LAYOUTS.md.example → dndev/SETUP_LAYOUTS.md.example} +0 -0
  79. /package/templates/root-consumer/guides/{SETUP_OAUTH.md.example → dndev/SETUP_OAUTH.md.example} +0 -0
  80. /package/templates/root-consumer/guides/{SETUP_PAGES.md.example → dndev/SETUP_PAGES.md.example} +0 -0
  81. /package/templates/root-consumer/guides/{SETUP_PWA.md.example → dndev/SETUP_PWA.md.example} +0 -0
  82. /package/templates/root-consumer/guides/{SETUP_THEMES.md.example → dndev/SETUP_THEMES.md.example} +0 -0
  83. /package/templates/root-consumer/guides/{USE_ROUTING.md.example → dndev/USE_ROUTING.md.example} +0 -0
  84. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/APP_CHECK.md.example +0 -0
  85. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/COOKIE_REFERENCE.md.example +0 -0
  86. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/EMULATORS.md.example +0 -0
  87. /package/templates/root-consumer/guides/{advanced → dndev/advanced}/VERSION_CONTROL.md.example +0 -0
@@ -0,0 +1,576 @@
1
+ /**
2
+ * @fileoverview DEMO ENTITY - Complete Reference
3
+ *
4
+ * Shows ALL field types, visibility levels, and options.
5
+ * Copy what you need. NOT exported by default.
6
+ */
7
+
8
+ import { defineEntity } from '@donotdev/core';
9
+ import * as v from 'valibot';
10
+
11
+ const demoEntity = defineEntity({
12
+ // ===========================================================================
13
+ // ENTITY CONFIG
14
+ // ===========================================================================
15
+
16
+ name: 'Demo',
17
+ collection: 'demos',
18
+ // collection: 'users/{userId}/demos', // Subcollection syntax
19
+ // namespace: 'entity-demo', // Optional: defaults to entity-${name.toLowerCase()}
20
+
21
+ listFields: ['title', 'status', 'category', 'price'],
22
+ listCardFields: ['images', 'title', 'price'],
23
+
24
+ // ===========================================================================
25
+ // ACCESS - Who can CRUD (entity-level)
26
+ // ===========================================================================
27
+ // 'guest' | 'user' | 'admin' | 'super'
28
+ access: {
29
+ create: 'admin', // Default: 'admin'
30
+ read: 'guest', // Default: 'guest'
31
+ update: 'admin', // Default: 'admin'
32
+ delete: 'admin', // Default: 'admin'
33
+ },
34
+ // allowGuestCreate: true, // Required if create: 'guest'
35
+
36
+ fields: {
37
+ // =========================================================================
38
+ // TEXT INPUTS
39
+ // =========================================================================
40
+
41
+ title: {
42
+ name: 'title',
43
+ label: 'title', // i18n: demos.fields.title
44
+ type: 'text',
45
+ visibility: 'guest', // guest|user|admin|super|hidden
46
+ editable: 'owner', // admin|owner|user|create-only|false
47
+ validation: { required: true },
48
+ },
49
+
50
+ description: {
51
+ name: 'description',
52
+ label: 'description',
53
+ type: 'textarea',
54
+ visibility: 'guest',
55
+ editable: 'owner',
56
+ validation: { required: false },
57
+ },
58
+
59
+ content: {
60
+ name: 'content',
61
+ label: 'content',
62
+ type: 'richtext', // Rich text editor
63
+ visibility: 'guest',
64
+ editable: 'admin',
65
+ validation: { required: false },
66
+ },
67
+
68
+ website: {
69
+ name: 'website',
70
+ label: 'website',
71
+ type: 'url',
72
+ visibility: 'guest',
73
+ editable: 'owner',
74
+ validation: { required: false },
75
+ },
76
+
77
+ brandColor: {
78
+ name: 'brandColor',
79
+ label: 'brandColor',
80
+ type: 'color', // Color picker
81
+ visibility: 'admin',
82
+ editable: 'admin',
83
+ validation: { required: false },
84
+ },
85
+
86
+ secretKey: {
87
+ name: 'secretKey',
88
+ label: 'secretKey',
89
+ type: 'password', // Masked input
90
+ visibility: 'admin',
91
+ editable: 'admin',
92
+ validation: { required: false },
93
+ },
94
+
95
+ // =========================================================================
96
+ // NUMBERS
97
+ // =========================================================================
98
+
99
+ price: {
100
+ name: 'price',
101
+ label: 'price',
102
+ type: 'number',
103
+ visibility: 'guest',
104
+ editable: 'admin',
105
+ validation: { required: true },
106
+ },
107
+
108
+ rating: {
109
+ name: 'rating',
110
+ label: 'rating',
111
+ type: 'range', // Slider
112
+ visibility: 'guest',
113
+ editable: 'owner',
114
+ validation: { required: false },
115
+ },
116
+
117
+ year: {
118
+ name: 'year',
119
+ label: 'year',
120
+ type: 'year', // Year combobox (type or select)
121
+ visibility: 'guest',
122
+ editable: 'owner',
123
+ validation: {
124
+ required: true,
125
+ min: 1900, // Optional: defaults to 1900
126
+ max: 2100, // Optional: defaults to current year + 10
127
+ },
128
+ },
129
+
130
+ // =========================================================================
131
+ // CONTACT
132
+ // =========================================================================
133
+
134
+ email: {
135
+ name: 'email',
136
+ label: 'email',
137
+ type: 'email',
138
+ visibility: 'admin',
139
+ editable: 'owner',
140
+ validation: { required: true },
141
+ },
142
+
143
+ phone: {
144
+ name: 'phone',
145
+ label: 'phone',
146
+ type: 'tel',
147
+ visibility: 'admin',
148
+ editable: 'owner',
149
+ validation: { required: false },
150
+ options: {
151
+ fieldSpecific: {
152
+ defaultCountry: 'US',
153
+ preferredCountries: ['US', 'FR', 'GB'],
154
+ showFlags: true,
155
+ }
156
+ }
157
+ },
158
+
159
+ // =========================================================================
160
+ // BOOLEAN / TOGGLE
161
+ // =========================================================================
162
+
163
+ isActive: {
164
+ name: 'isActive',
165
+ label: 'isActive',
166
+ type: 'switch', // Toggle switch
167
+ visibility: 'admin',
168
+ editable: 'admin',
169
+ validation: { required: false },
170
+ },
171
+
172
+ acceptTerms: {
173
+ name: 'acceptTerms',
174
+ label: 'acceptTerms',
175
+ type: 'checkbox', // Single checkbox
176
+ visibility: 'user',
177
+ editable: 'user',
178
+ validation: { required: true },
179
+ },
180
+
181
+ // Switch with custom values
182
+ transmission: {
183
+ name: 'transmission',
184
+ label: 'transmission',
185
+ type: 'switch',
186
+ visibility: 'guest',
187
+ editable: 'admin',
188
+ options: {
189
+ fieldSpecific: {
190
+ uncheckedLabel: 'Manual',
191
+ checkedLabel: 'Automatic',
192
+ uncheckedValue: 'Manual',
193
+ checkedValue: 'Automatic',
194
+ }
195
+ },
196
+ validation: { required: true },
197
+ },
198
+
199
+ // =========================================================================
200
+ // DATES
201
+ // =========================================================================
202
+
203
+ birthDate: {
204
+ name: 'birthDate',
205
+ label: 'birthDate',
206
+ type: 'date', // Date only
207
+ visibility: 'user',
208
+ editable: 'owner',
209
+ validation: { required: false },
210
+ },
211
+
212
+ eventTime: {
213
+ name: 'eventTime',
214
+ label: 'eventTime',
215
+ type: 'datetime-local', // Date + time
216
+ visibility: 'guest',
217
+ editable: 'owner',
218
+ validation: { required: false },
219
+ },
220
+
221
+ reminderTime: {
222
+ name: 'reminderTime',
223
+ label: 'reminderTime',
224
+ type: 'time', // Time only
225
+ visibility: 'user',
226
+ editable: 'owner',
227
+ validation: { required: false },
228
+ },
229
+
230
+ reportWeek: {
231
+ name: 'reportWeek',
232
+ label: 'reportWeek',
233
+ type: 'week', // Week picker
234
+ visibility: 'admin',
235
+ editable: 'admin',
236
+ validation: { required: false },
237
+ },
238
+
239
+ reportMonth: {
240
+ name: 'reportMonth',
241
+ label: 'reportMonth',
242
+ type: 'month', // Month picker
243
+ visibility: 'admin',
244
+ editable: 'admin',
245
+ validation: { required: false },
246
+ },
247
+
248
+ lastSync: {
249
+ name: 'lastSync',
250
+ label: 'lastSync',
251
+ type: 'timestamp', // Firestore Timestamp
252
+ visibility: 'admin',
253
+ editable: 'admin',
254
+ validation: { required: false },
255
+ },
256
+
257
+ // =========================================================================
258
+ // SELECTION
259
+ // =========================================================================
260
+
261
+ category: {
262
+ name: 'category',
263
+ label: 'category',
264
+ type: 'select', // Dropdown
265
+ visibility: 'guest',
266
+ editable: 'owner',
267
+ validation: {
268
+ required: true,
269
+ options: [
270
+ { value: 'electronics', label: 'category.electronics' },
271
+ { value: 'clothing', label: 'category.clothing' },
272
+ ],
273
+ },
274
+ },
275
+
276
+ brand: {
277
+ name: 'brand',
278
+ label: 'brand',
279
+ type: 'combobox', // Searchable dropdown
280
+ visibility: 'guest',
281
+ editable: 'owner',
282
+ validation: {
283
+ required: false,
284
+ options: [
285
+ { value: 'apple', label: 'Apple' },
286
+ { value: 'samsung', label: 'Samsung' },
287
+ ],
288
+ },
289
+ },
290
+
291
+ tags: {
292
+ name: 'tags',
293
+ label: 'tags',
294
+ type: 'multiselect', // Multiple selection
295
+ visibility: 'guest',
296
+ editable: 'owner',
297
+ validation: {
298
+ required: false,
299
+ options: [
300
+ { value: 'featured', label: 'Featured' },
301
+ { value: 'sale', label: 'On Sale' },
302
+ { value: 'new', label: 'New Arrival' },
303
+ ],
304
+ },
305
+ },
306
+
307
+ priority: {
308
+ name: 'priority',
309
+ label: 'priority',
310
+ type: 'radio', // Radio buttons
311
+ visibility: 'user',
312
+ editable: 'owner',
313
+ validation: {
314
+ required: true,
315
+ options: [
316
+ { value: 'low', label: 'Low' },
317
+ { value: 'medium', label: 'Medium' },
318
+ { value: 'high', label: 'High' },
319
+ ],
320
+ },
321
+ },
322
+
323
+ // Dependent select (options based on another field)
324
+ model: {
325
+ name: 'model',
326
+ label: 'model',
327
+ type: 'combobox',
328
+ visibility: 'guest',
329
+ editable: 'owner',
330
+ dependsOn: { field: 'brand' },
331
+ validation: {
332
+ required: false,
333
+ options: ((formValues: { brand?: string }) => {
334
+ const models: Record<string, string[]> = {
335
+ apple: ['iPhone', 'MacBook'],
336
+ samsung: ['Galaxy', 'Tab'],
337
+ };
338
+ const list = formValues?.brand ? models[formValues.brand] || [] : [];
339
+ return list.map(m => ({ value: m, label: m }));
340
+ }) as any,
341
+ },
342
+ },
343
+
344
+ // =========================================================================
345
+ // FILES & MEDIA
346
+ // =========================================================================
347
+
348
+ avatar: {
349
+ name: 'avatar',
350
+ label: 'avatar',
351
+ type: 'avatar', // Avatar image
352
+ visibility: 'guest',
353
+ editable: 'owner',
354
+ validation: { required: false },
355
+ },
356
+
357
+ photo: {
358
+ name: 'photo',
359
+ label: 'photo',
360
+ type: 'image', // Single image
361
+ visibility: 'guest',
362
+ editable: 'owner',
363
+ validation: { required: false },
364
+ },
365
+
366
+ images: {
367
+ name: 'images',
368
+ label: 'images',
369
+ type: 'images', // Multiple images
370
+ visibility: 'guest',
371
+ editable: 'owner',
372
+ validation: { required: false },
373
+ },
374
+
375
+ resume: {
376
+ name: 'resume',
377
+ label: 'resume',
378
+ type: 'document', // Single document (PDF, etc.)
379
+ visibility: 'admin',
380
+ editable: 'owner',
381
+ validation: { required: false },
382
+ },
383
+
384
+ attachments: {
385
+ name: 'attachments',
386
+ label: 'attachments',
387
+ type: 'documents', // Multiple documents
388
+ visibility: 'admin',
389
+ editable: 'owner',
390
+ validation: { required: false },
391
+ },
392
+
393
+ dataFile: {
394
+ name: 'dataFile',
395
+ label: 'dataFile',
396
+ type: 'file', // Single file (any type)
397
+ visibility: 'admin',
398
+ editable: 'admin',
399
+ validation: { required: false },
400
+ },
401
+
402
+ backups: {
403
+ name: 'backups',
404
+ label: 'backups',
405
+ type: 'files', // Multiple files
406
+ visibility: 'admin',
407
+ editable: 'admin',
408
+ validation: { required: false },
409
+ },
410
+
411
+ // =========================================================================
412
+ // LOCATION
413
+ // =========================================================================
414
+
415
+ location: {
416
+ name: 'location',
417
+ label: 'location',
418
+ type: 'geopoint', // Lat/lng coordinates
419
+ visibility: 'guest',
420
+ editable: 'admin',
421
+ validation: { required: false },
422
+ },
423
+
424
+ address: {
425
+ name: 'address',
426
+ label: 'address',
427
+ type: 'address', // Address with autocomplete
428
+ visibility: 'guest',
429
+ editable: 'owner',
430
+ validation: { required: false },
431
+ },
432
+
433
+ // =========================================================================
434
+ // REFERENCE (link to other entity)
435
+ // =========================================================================
436
+
437
+ customerId: {
438
+ name: 'customerId',
439
+ label: 'customerId',
440
+ type: 'reference',
441
+ visibility: 'admin',
442
+ editable: 'create-only', // Set once, read-only after
443
+ validation: {
444
+ required: true,
445
+ reference: 'customers', // Target collection
446
+ },
447
+ },
448
+
449
+ // =========================================================================
450
+ // SPECIAL
451
+ // =========================================================================
452
+
453
+ keywords: {
454
+ name: 'keywords',
455
+ label: 'keywords',
456
+ type: 'array', // Array of strings
457
+ visibility: 'admin',
458
+ editable: 'admin',
459
+ validation: { required: false },
460
+ },
461
+
462
+ internalNotes: {
463
+ name: 'internalNotes',
464
+ label: 'internalNotes',
465
+ type: 'textarea',
466
+ visibility: 'hidden', // NEVER sent to client
467
+ editable: 'admin',
468
+ validation: { required: false },
469
+ },
470
+
471
+ // =========================================================================
472
+ // STATUS - Framework adds: draft, available, deleted
473
+ // =========================================================================
474
+
475
+ status: {
476
+ name: 'status',
477
+ label: 'status',
478
+ type: 'select',
479
+ visibility: 'admin',
480
+ validation: {
481
+ options: [
482
+ // Custom options (merge with framework defaults)
483
+ { value: 'featured', label: 'status.featured' },
484
+ { value: 'archived', label: 'status.archived' },
485
+ ],
486
+ },
487
+ },
488
+
489
+ // =========================================================================
490
+ // CUSTOM FIELD with Valibot schema
491
+ // =========================================================================
492
+
493
+ repairs: {
494
+ name: 'repairs',
495
+ label: 'repairs',
496
+ type: 'text', // Base type (schema overrides)
497
+ visibility: 'admin',
498
+ editable: 'admin',
499
+ validation: {
500
+ required: false,
501
+ // Custom schema takes precedence over type
502
+ schema: v.nullish(v.array(v.object({
503
+ operation: v.string(),
504
+ cost: v.number(),
505
+ date: v.optional(v.string()),
506
+ }))),
507
+ },
508
+ },
509
+
510
+ metadata: {
511
+ name: 'metadata',
512
+ label: 'metadata',
513
+ type: 'text',
514
+ visibility: 'admin',
515
+ editable: 'admin',
516
+ validation: {
517
+ required: false,
518
+ schema: v.optional(v.object({
519
+ source: v.string(),
520
+ importedAt: v.string(),
521
+ tags: v.array(v.string()),
522
+ })),
523
+ },
524
+ },
525
+
526
+ // =========================================================================
527
+ // TECHNICAL FIELDS - Auto-added, don't define:
528
+ // id, createdAt, updatedAt, createdById, updatedById
529
+ // =========================================================================
530
+ },
531
+ });
532
+
533
+ // =============================================================================
534
+ // VISIBILITY LEVELS
535
+ // =============================================================================
536
+ //
537
+ // 'guest' → Everyone (including not logged in)
538
+ // 'user' → Authenticated users
539
+ // 'admin' → Admin role only
540
+ // 'super' → Super admin only
541
+ // 'hidden' → NEVER sent to client (server-only)
542
+ //
543
+ // Hierarchy: guest < user < admin < super
544
+ // Admin sees guest + user + admin fields
545
+
546
+ // =============================================================================
547
+ // EDITABLE LEVELS
548
+ // =============================================================================
549
+ //
550
+ // 'admin' → Only admins can edit
551
+ // 'owner' → Only document creator
552
+ // 'user' → Any authenticated user
553
+ // 'create-only' → Set on creation, read-only after
554
+ // false → Never editable (read-only)
555
+
556
+ // =============================================================================
557
+ // CUSTOM FIELD TYPES (register in app startup)
558
+ // =============================================================================
559
+ //
560
+ // import { registerFieldType } from '@donotdev/crud';
561
+ // import { useController } from '@donotdev/crud';
562
+ //
563
+ // function MyCustomField({ fieldConfig, control, t }: ControlledFieldProps) {
564
+ // const { field, fieldState } = useController({ name: fieldConfig.name, control });
565
+ // return <input {...field} />;
566
+ // }
567
+ //
568
+ // registerFieldType({
569
+ // type: 'myCustomType',
570
+ // controlledComponent: MyCustomField,
571
+ // });
572
+
573
+ // =============================================================================
574
+ // EXPORT - Uncomment to use this entity
575
+ // =============================================================================
576
+ // export { demoEntity };
@@ -0,0 +1,15 @@
1
+ /**
2
+ * @fileoverview Entity Exports
3
+ *
4
+ * Export all your entities from here for easy importing.
5
+ *
6
+ * USAGE:
7
+ * ```tsx
8
+ * import { productEntity, customerEntity } from '../entities';
9
+ * ```
10
+ */
11
+
12
+ // Export your entities here:
13
+ // export { productEntity } from './Product';
14
+ // export { customerEntity } from './Customer';
15
+ // export { orderEntity } from './Order';
@@ -19,7 +19,8 @@ import react from 'eslint-plugin-react';
19
19
  import reactRefresh from 'eslint-plugin-react-refresh';
20
20
  import globals from 'globals';
21
21
 
22
- import customPlugin from '@donotdev/core/config/eslint';
22
+ // ESLint is not provided by the framework - set up your own configuration
23
+ // This is just a basic example template
23
24
 
24
25
  const __filename = fileURLToPath(import.meta.url);
25
26
  const __dirname = dirname(__filename);
@@ -106,7 +107,6 @@ export default [
106
107
  'jsx-a11y': jsxA11y,
107
108
  prettier: prettierPlugin,
108
109
  '@typescript-eslint': tsPlugin,
109
- '@donotdev/config': customPlugin,
110
110
  },
111
111
  settings: {
112
112
  react: {
@@ -120,9 +120,6 @@ export default [
120
120
  },
121
121
  },
122
122
  rules: {
123
- '@donotdev/config/no-singleton-lifecycle': 'error',
124
- '@donotdev/config/react-19-ssr-safe': 'error',
125
- '@donotdev/config/prefer-framework-utils': 'warn',
126
123
  'react/no-unstable-nested-components': 'error',
127
124
  'no-restricted-globals': [
128
125
  'error',
@@ -203,81 +200,6 @@ export default [
203
200
  'warn',
204
201
  { argsIgnorePattern: '^_', varsIgnorePattern: '^_' },
205
202
  ],
206
- '@donotdev/config/require-use-client': [
207
- 'warn',
208
- {
209
- clientPatterns: [
210
- 'useState',
211
- 'useEffect',
212
- 'useCallback',
213
- 'useMemo',
214
- 'useRef',
215
- 'useContext',
216
- 'useReducer',
217
- 'useLayoutEffect',
218
- 'useImperativeHandle',
219
- 'useDebugValue',
220
- 'useId',
221
- 'useSyncExternalStore',
222
- 'useTransition',
223
- 'useDeferredValue',
224
- 'useInsertionEffect',
225
- 'onClick',
226
- 'onChange',
227
- 'onSubmit',
228
- 'onFocus',
229
- 'onBlur',
230
- 'onMouseEnter',
231
- 'onMouseLeave',
232
- 'onKeyDown',
233
- 'onKeyUp',
234
- 'onKeyPress',
235
- 'onScroll',
236
- 'onResize',
237
- 'onLoad',
238
- 'onError',
239
- 'window',
240
- 'document',
241
- 'localStorage',
242
- 'sessionStorage',
243
- 'navigator',
244
- 'location',
245
- 'history',
246
- 'addEventListener',
247
- 'removeEventListener',
248
- 'useAuth',
249
- 'useTranslation',
250
- 'useLocalStorage',
251
- 'useTheme',
252
- 'useRouter',
253
- 'usePathname',
254
- 'useSearchParams',
255
- 'framer-motion',
256
- 'lottie',
257
- 'gsap',
258
- 'shiki',
259
- ],
260
- filePatterns: ['**/*.{ts,tsx}'],
261
- excludePatterns: [
262
- '**/*.config.{js,ts}',
263
- '**/*.d.ts',
264
- '**/types/**',
265
- '**/constants/**',
266
- '**/utils/**',
267
- '**/helpers/**',
268
- '**/stores/**',
269
- '**/api/**',
270
- '**/functions/**',
271
- '**/lib/**',
272
- '**/server/**',
273
- '**/middleware/**',
274
- '**/edge/**',
275
- '**/node_modules/**',
276
- '**/dist/**',
277
- '**/build/**',
278
- ],
279
- },
280
- ],
281
203
  'import/no-named-export': 'off',
282
204
  },
283
205
  },