@rebasepro/cms-types 0.17.3 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +49 -0
  2. package/dist/admin_collection.d.ts +49 -53
  3. package/dist/collections.d.ts +1 -1
  4. package/dist/controllers/customization_controller.d.ts +2 -2
  5. package/dist/controllers/navigation.d.ts +0 -1
  6. package/dist/controllers/registry.d.ts +20 -0
  7. package/dist/define_collection.d.ts +132 -0
  8. package/dist/index.d.ts +1 -0
  9. package/dist/index.es.js +12 -8
  10. package/dist/index.es.js.map +1 -1
  11. package/dist/types/plugins.d.ts +2 -2
  12. package/dist/types/property_options.d.ts +132 -1
  13. package/dist/types/slots.d.ts +30 -4
  14. package/dist/types/translations.d.ts +96 -4
  15. package/package.json +27 -23
  16. package/src/admin_collection.ts +0 -775
  17. package/src/augment.ts +0 -79
  18. package/src/collections.ts +0 -312
  19. package/src/controllers/analytics_controller.tsx +0 -57
  20. package/src/controllers/auth.ts +0 -122
  21. package/src/controllers/customization_controller.tsx +0 -81
  22. package/src/controllers/dialogs_controller.tsx +0 -37
  23. package/src/controllers/index.ts +0 -10
  24. package/src/controllers/local_config_persistence.tsx +0 -22
  25. package/src/controllers/navigation.ts +0 -288
  26. package/src/controllers/registry.ts +0 -114
  27. package/src/controllers/side_dialogs_controller.tsx +0 -82
  28. package/src/controllers/side_panel_controller.tsx +0 -112
  29. package/src/controllers/snackbar.ts +0 -51
  30. package/src/index.ts +0 -20
  31. package/src/react_component_ref.ts +0 -52
  32. package/src/rebase_context.ts +0 -81
  33. package/src/types/breadcrumbs.ts +0 -16
  34. package/src/types/builders.ts +0 -18
  35. package/src/types/collection_views.tsx +0 -125
  36. package/src/types/component_overrides.ts +0 -244
  37. package/src/types/entity_actions.tsx +0 -134
  38. package/src/types/entity_display.ts +0 -182
  39. package/src/types/entity_link_builder.ts +0 -8
  40. package/src/types/entity_views.tsx +0 -135
  41. package/src/types/export_import.ts +0 -26
  42. package/src/types/form_layout.ts +0 -137
  43. package/src/types/formex.ts +0 -45
  44. package/src/types/index.ts +0 -18
  45. package/src/types/locales.ts +0 -81
  46. package/src/types/modify_collections.tsx +0 -6
  47. package/src/types/plugins.tsx +0 -346
  48. package/src/types/property_config.tsx +0 -97
  49. package/src/types/property_options.ts +0 -300
  50. package/src/types/slots.tsx +0 -334
  51. package/src/types/translations.ts +0 -1104
  52. package/src/types/user_management_delegate.ts +0 -23
@@ -13,9 +13,47 @@ import type { PropertySpan } from "./form_layout.js";
13
13
  * @group Entity properties
14
14
  */
15
15
  export interface AdminPropertyOptions<CustomProps = unknown> {
16
+ /**
17
+ * Width of this property's column in the table view, in pixels. Omit and the
18
+ * table derives one from the property type.
19
+ *
20
+ * A person can drag a column wider, and that is remembered per user; this is
21
+ * the width everyone starts from.
22
+ */
16
23
  columnWidth?: number;
24
+ /**
25
+ * Keep this property out of the table and card views. It is still on the
26
+ * entity form, and still read and written by the API.
27
+ *
28
+ * For a field that should not leave the server at all, use
29
+ * `excludeFromApi` on the property itself — this one is presentation, and
30
+ * hiding a secret with it hides it from exactly one screen.
31
+ */
17
32
  hideFromCollection?: boolean;
33
+ /**
34
+ * Render the **value**, not a control. Defaults to `false`.
35
+ *
36
+ * The distinction from {@link disabled} is what the field looks like and
37
+ * what it can do. `readOnly` shows the value as text: nothing to focus,
38
+ * nothing to clear, and no explanation owed, because there is no control to
39
+ * wonder about. Use it for something the server owns — a computed total, an
40
+ * `autoValue` timestamp.
41
+ *
42
+ * A property that is read-only *for some people* is not this: that is a
43
+ * security rule, and writing it here leaves the column writable through the
44
+ * API by anyone who skips the panel.
45
+ */
18
46
  readOnly?: boolean;
47
+ /**
48
+ * Render the control, greyed out. Defaults to `false`.
49
+ *
50
+ * The counterpart to {@link readOnly}: this one is a field that *could* be
51
+ * edited but is not, right now — usually because of a condition, which is
52
+ * why it takes a config with a `disabledMessage` saying why and a
53
+ * `clearOnDisabled` for the value that no longer applies. The control stays
54
+ * visible so the reader can see the shape of what they are not allowed to
55
+ * fill in.
56
+ */
19
57
  disabled?: boolean | PropertyDisabledConfig;
20
58
  /**
21
59
  * How many of the form grid's {@link FORM_GRID_COLUMNS} columns this field
@@ -25,8 +63,34 @@ export interface AdminPropertyOptions<CustomProps = unknown> {
25
63
  * are declared in.
26
64
  */
27
65
  span?: PropertySpan;
66
+ /**
67
+ * Anything your own {@link Field} or {@link Preview} needs, passed straight
68
+ * through untouched.
69
+ *
70
+ * Typed by the property's own `CustomProps` parameter, so a custom field
71
+ * declares what it expects and a collection that supplies the wrong shape is
72
+ * a compile error rather than an `undefined` at render time.
73
+ */
28
74
  customProps?: CustomProps;
75
+ /**
76
+ * Replace the form control for this property.
77
+ *
78
+ * The component receives `FieldProps` — the value, `setValue`, the resolved
79
+ * property, the whole entity's values, and any {@link customProps}. It owns
80
+ * the input; validation, the label and the error line stay with the form.
81
+ *
82
+ * A `ComponentRef` rather than a component so a collection stays
83
+ * serializable: the reference is a registered key, which survives being sent
84
+ * to the schema editor and written back to the file.
85
+ */
29
86
  Field?: ComponentRef<any>;
87
+ /**
88
+ * Replace how this property renders when it is *not* being edited — a table
89
+ * cell, a card line, a reference chip.
90
+ *
91
+ * Separate from {@link Field} because the two are read in different places
92
+ * and at different sizes; overriding one and not the other is normal.
93
+ */
30
94
  Preview?: ComponentRef<any>;
31
95
  /**
32
96
  * Narrow the filter operators offered for this property in collection
@@ -74,6 +138,12 @@ export interface AdminStringOptions extends AdminPropertyOptions {
74
138
  * Should this string be rendered as a tag instead of just text.
75
139
  */
76
140
  previewAsTag?: boolean;
141
+ /**
142
+ * Add an icon that sets the value to `null`. Defaults to `false`.
143
+ *
144
+ * Worth setting where empty and empty-string are different answers — an
145
+ * unset middle name is not the same as one somebody deleted.
146
+ */
77
147
  clearable?: boolean;
78
148
  /**
79
149
  * How to render a string that holds a URL: a link, or one of the supported
@@ -110,7 +180,9 @@ export interface NumberFormatOptions {
110
180
  * amount read `1,234.50` for one user and `1.234,50` for another.
111
181
  */
112
182
  locale?: string;
183
+ /** Pad to at least this many decimals — `2` writes `5` as `5.00`. */
113
184
  minimumFractionDigits?: number;
185
+ /** Round to at most this many decimals. Does not change the stored value. */
114
186
  maximumFractionDigits?: number;
115
187
  /** `"compact"` renders `12000` as `12K`. Useful in narrow table columns. */
116
188
  notation?: "standard" | "compact";
@@ -119,6 +191,12 @@ export interface NumberFormatOptions {
119
191
  * @group Entity properties
120
192
  */
121
193
  export interface AdminNumberOptions extends AdminPropertyOptions {
194
+ /**
195
+ * Add an icon that sets the value to `null`. Defaults to `false`.
196
+ *
197
+ * Numbers are where this matters most: without it, clearing the input
198
+ * leaves `0`, and "no price" and "free" become the same row.
199
+ */
122
200
  clearable?: boolean;
123
201
  /**
124
202
  * Write this number out as currency, a percentage, or with fixed decimals.
@@ -131,6 +209,13 @@ export interface AdminNumberOptions extends AdminPropertyOptions {
131
209
  * @group Entity properties
132
210
  */
133
211
  export interface AdminVectorOptions extends AdminPropertyOptions {
212
+ /**
213
+ * Add an icon that sets the embedding to `null`. Defaults to `false`.
214
+ *
215
+ * A vector is normally written by whatever generates it, so this is for the
216
+ * case where a human needs to say "this one is stale" and let it be
217
+ * recomputed.
218
+ */
134
219
  clearable?: boolean;
135
220
  }
136
221
  /**
@@ -146,6 +231,15 @@ export interface AdminDateOptions extends AdminPropertyOptions {
146
231
  * @group Entity properties
147
232
  */
148
233
  export interface AdminReferenceOptions extends AdminPropertyOptions {
234
+ /**
235
+ * Which of the *target's* properties are shown in the chip that stands in
236
+ * for the referenced entity. At most three fit; the rest are ignored.
237
+ *
238
+ * Defaults to the target collection's own `admin.previewProperties`, then to
239
+ * a derived guess. Name them here when the referring context wants different
240
+ * ones — an order line wants the product's SKU, the catalogue wants its
241
+ * name.
242
+ */
149
243
  previewProperties?: string[];
150
244
  /**
151
245
  * Offer only entities that pass this filter in the selection dialog.
@@ -161,6 +255,13 @@ export interface AdminReferenceOptions extends AdminPropertyOptions {
161
255
  * @group Entity properties
162
256
  */
163
257
  export interface AdminRelationOptions extends AdminPropertyOptions {
258
+ /**
259
+ * Which of the *target's* properties are shown in the chip that stands in
260
+ * for the related row. At most three fit; the rest are ignored.
261
+ *
262
+ * Defaults to the target collection's own `admin.previewProperties`, then to
263
+ * a derived guess. Name them here when this side wants different ones.
264
+ */
164
265
  previewProperties?: string[];
165
266
  /**
166
267
  * Which widget selects the related entity. Defaults to `select`.
@@ -193,7 +294,20 @@ export interface AdminRelationOptions extends AdminPropertyOptions {
193
294
  * @group Entity properties
194
295
  */
195
296
  export interface AdminArrayOptions extends AdminPropertyOptions {
297
+ /**
298
+ * Open every element on load instead of collapsing them to one line each.
299
+ * Defaults to `false`.
300
+ *
301
+ * Expanding is right for a short list of small elements and wrong for a long
302
+ * one: twenty open cards is a form nobody can find the bottom of.
303
+ */
196
304
  expanded?: boolean;
305
+ /**
306
+ * Drop the per-element chrome — the frame, the header, the index — and
307
+ * render the children alone. Defaults to `false`.
308
+ *
309
+ * For an array of one simple field, where the chrome is most of the pixels.
310
+ */
197
311
  minimalistView?: boolean;
198
312
  /**
199
313
  * Can the elements in this array be reordered by dragging. Defaults to
@@ -210,8 +324,25 @@ export interface AdminArrayOptions extends AdminPropertyOptions {
210
324
  * @group Entity properties
211
325
  */
212
326
  export interface AdminMapOptions extends AdminPropertyOptions {
327
+ /**
328
+ * Open the map's fields on load instead of collapsing them behind its
329
+ * header. Defaults to `false`.
330
+ */
213
331
  expanded?: boolean;
332
+ /**
333
+ * Drop the map's frame and header and render its fields alone. Defaults to
334
+ * `false`.
335
+ */
214
336
  minimalistView?: boolean;
337
+ /**
338
+ * Lay the map's fields out as if they were the parent's own, rather than
339
+ * grouped inside it. Defaults to `false`.
340
+ *
341
+ * Presentation only — the values still nest under this property's key in the
342
+ * row, and in every read the API serves. It is for a group that is a
343
+ * grouping in the schema and not in the form: an address, a set of
344
+ * dimensions.
345
+ */
215
346
  spreadChildren?: boolean;
216
347
  /**
217
348
  * Which of the map's own properties are shown when it is rendered as a
@@ -252,4 +383,4 @@ export type PreviewType = "image" | "video" | "audio" | "file";
252
383
  * collection validator in `@rebasepro/server` needs it and may not import this
253
384
  * package, and this clause is what stops the data from drifting off the types.
254
385
  */
255
- export declare const ADMIN_PROPERTY_KEYS: readonly ["canAddElements", "clearable", "columnWidth", "customProps", "disabled", "expanded", "Field", "Filter", "filterOperators", "fixedFilter", "hideFromCollection", "includeEntityLink", "includeId", "markdown", "minimalistView", "multiline", "Preview", "previewAsTag", "previewProperties", "readOnly", "sortable", "span", "spreadChildren", "urlPreview", "widget"];
386
+ export declare const ADMIN_PROPERTY_KEYS: readonly ["canAddElements", "clearable", "columnWidth", "customProps", "disabled", "expanded", "Field", "Filter", "filterOperators", "fixedFilter", "format", "hideFromCollection", "includeEntityLink", "includeId", "markdown", "minimalistView", "multiline", "Preview", "previewAsTag", "previewProperties", "readOnly", "renderInForm", "sortable", "span", "spreadChildren", "urlPreview", "widget"];
@@ -87,11 +87,21 @@ export interface SlotContribution<K extends SlotName = SlotName> {
87
87
  */
88
88
  slot: K;
89
89
  /**
90
- * The component to render in the slot.
91
- * Typed loosely so mixed-slot arrays work.
92
- * Type safety is provided at the `useSlot` call site.
90
+ * The component to render in the slot, taking that slot's props.
91
+ *
92
+ * This was `React.ComponentType<any>`, "typed loosely so mixed-slot arrays
93
+ * work" — and the looseness was doing real damage: `{ slot:
94
+ * "collection.actions", Component: MyThing }` typechecked whatever
95
+ * `MyThing`'s props were, so a component written against the wrong slot's
96
+ * props compiled, registered, and then read `undefined` off every prop it
97
+ * expected. The only check was at the `useSlot` render site, which is
98
+ * inside the framework and reports nothing to the author.
99
+ *
100
+ * The mixed-array problem is real but is a problem with the *array*, not
101
+ * with this field: see {@link AnySlotContribution}, which distributes over
102
+ * the slot names so each element is checked against its own slot.
93
103
  */
94
- Component: React.ComponentType<any>;
104
+ Component: React.ComponentType<SlotRegistry[K]>;
95
105
  /**
96
106
  * Additional props to merge into the slot props before rendering.
97
107
  */
@@ -101,6 +111,22 @@ export interface SlotContribution<K extends SlotName = SlotName> {
101
111
  */
102
112
  order?: number;
103
113
  }
114
+ /**
115
+ * A contribution to *some* slot, checked against that slot.
116
+ *
117
+ * `SlotContribution[]` cannot be the type of a mixed list: with `K` left at its
118
+ * default the props become the union of every slot's, and a component is
119
+ * contravariant in its props, so nothing satisfies it. Distributing the union
120
+ * over the slot names instead gives one member per slot, and TypeScript picks
121
+ * the member whose `slot` matches — which is what makes
122
+ * `{ slot: "collection.actions", Component: WrongProps }` an error at the
123
+ * declaration rather than a silent `undefined` at render.
124
+ *
125
+ * @group Plugins
126
+ */
127
+ export type AnySlotContribution = {
128
+ [K in SlotName]: SlotContribution<K>;
129
+ }[SlotName];
104
130
  /**
105
131
  * Props for `navigation.header` and `navigation.footer` slots.
106
132
  * @group Plugins
@@ -205,6 +205,10 @@ export interface RebaseTranslations {
205
205
  reference_not_set: string;
206
206
  reference_does_not_exist: string;
207
207
  entity_not_found: string;
208
+ /** Why a record the URL names is not there, without asserting it never was. */
209
+ entity_not_found_body?: string;
210
+ /** Way out of a record that does not exist. `{{name}}` is the collection. */
211
+ back_to_collection?: string;
208
212
  file_not_found: string;
209
213
  unsaved_changes_in_entity: string;
210
214
  delete_this_role: string;
@@ -622,10 +626,6 @@ export interface RebaseTranslations {
622
626
  no_collections_found_to_setup: string;
623
627
  collections_have_been_setup: string;
624
628
  error_setting_up_collections: string;
625
- add_your: string;
626
- database_collections: string;
627
- no_unmapped_collections: string;
628
- welcome_to_rebase: string;
629
629
  admin_panel_ready_bring_data: string;
630
630
  admin_panel_ready_get_started: string;
631
631
  auto_detect_collections: string;
@@ -802,6 +802,10 @@ export interface RebaseTranslations {
802
802
  studio_sql_sidebar_no_history?: string;
803
803
  studio_sql_sidebar_history_hint?: string;
804
804
  studio_sql_sidebar_delete_snippet?: string;
805
+ /** Accessible name for the ✕ on a query tab. */
806
+ studio_sql_close_tab?: string;
807
+ /** Accessible name for the + beside the query tabs. */
808
+ studio_sql_new_tab?: string;
805
809
  studio_schema_tables?: string;
806
810
  studio_schema_loading?: string;
807
811
  studio_schema_no_tables?: string;
@@ -986,4 +990,92 @@ export interface RebaseTranslations {
986
990
  history_new_entity?: string;
987
991
  /** End of the paginated revision list */
988
992
  history_no_more?: string;
993
+ /** Heading for the admin's default navigation group. */
994
+ studio_group_views?: string;
995
+ /** Heading for the admin's `Admin` navigation group. */
996
+ studio_group_admin?: string;
997
+ /** Heading for the admin's `Settings` navigation group. */
998
+ studio_group_settings?: string;
999
+ studio_group_database?: string;
1000
+ studio_group_compute?: string;
1001
+ studio_group_storage?: string;
1002
+ studio_group_api?: string;
1003
+ studio_group_access_control?: string;
1004
+ studio_tool_sql?: string;
1005
+ studio_tool_sql_description?: string;
1006
+ studio_tool_js?: string;
1007
+ studio_tool_js_description?: string;
1008
+ studio_tool_rls?: string;
1009
+ studio_tool_rls_description?: string;
1010
+ studio_tool_storage?: string;
1011
+ studio_tool_storage_description?: string;
1012
+ studio_tool_cron?: string;
1013
+ studio_tool_cron_description?: string;
1014
+ studio_tool_schema_visualizer?: string;
1015
+ studio_tool_schema_visualizer_description?: string;
1016
+ studio_tool_branches?: string;
1017
+ studio_tool_branches_description?: string;
1018
+ studio_tool_backups?: string;
1019
+ studio_tool_backups_description?: string;
1020
+ studio_tool_api?: string;
1021
+ studio_tool_api_description?: string;
1022
+ studio_tool_logs?: string;
1023
+ studio_tool_logs_description?: string;
1024
+ studio_tool_api_keys?: string;
1025
+ studio_tool_api_keys_description?: string;
1026
+ studio_backups_denied_title?: string;
1027
+ studio_backups_denied_hint?: string;
1028
+ studio_backups_read_failed?: string;
1029
+ studio_backups_downloading?: string;
1030
+ studio_cron_denied_title?: string;
1031
+ studio_cron_denied_hint?: string;
1032
+ studio_cron_read_failed?: string;
1033
+ studio_api_keys_denied_title?: string;
1034
+ studio_api_keys_denied_hint?: string;
1035
+ studio_api_keys_read_failed?: string;
1036
+ studio_api_keys_empty_title?: string;
1037
+ studio_api_keys_empty_hint?: string;
1038
+ studio_api_keys_revoke?: string;
1039
+ studio_api_keys_select_hint?: string;
1040
+ studio_api_keys_permissions?: string;
1041
+ studio_api_keys_no_permissions?: string;
1042
+ studio_api_keys_revoke_confirmation?: string;
1043
+ studio_api_keys_name_label?: string;
1044
+ studio_api_keys_access_label?: string;
1045
+ studio_api_keys_admin_granted?: string;
1046
+ studio_api_keys_admin_granted_hint?: string;
1047
+ studio_api_keys_done?: string;
1048
+ studio_api_keys_status_active?: string;
1049
+ studio_api_keys_status_expired?: string;
1050
+ studio_api_keys_status_revoked?: string;
1051
+ studio_api_keys_stat_status?: string;
1052
+ studio_api_keys_stat_last_used?: string;
1053
+ studio_api_keys_stat_expires?: string;
1054
+ studio_api_keys_never?: string;
1055
+ studio_api_keys_role_service?: string;
1056
+ studio_api_keys_stat_rate_limit?: string;
1057
+ studio_api_keys_rate_limit_default?: string;
1058
+ studio_api_keys_stat_created_by?: string;
1059
+ studio_api_keys_copy_failed?: string;
1060
+ studio_branches_denied_title?: string;
1061
+ studio_branches_denied_hint?: string;
1062
+ studio_branches_read_failed?: string;
1063
+ studio_schema_no_collections?: string;
1064
+ studio_schema_no_collections_body?: string;
1065
+ studio_schema_introspect_hint?: string;
1066
+ studio_rls_enable_confirm_title?: string;
1067
+ studio_rls_enable_confirm_body?: string;
1068
+ studio_rls_disable_confirm_title?: string;
1069
+ studio_rls_disable_confirm_body?: string;
1070
+ studio_rls_drop_policy_title?: string;
1071
+ studio_rls_drop_policy_body?: string;
1072
+ studio_rls_unapplied?: string;
1073
+ studio_rls_unapplied_tooltip?: string;
1074
+ studio_branches_unavailable_title?: string;
1075
+ studio_branches_unavailable_body?: string;
1076
+ studio_backups_not_configured_title?: string;
1077
+ studio_backups_not_configured_body?: string;
1078
+ studio_cron_empty_title?: string;
1079
+ studio_cron_empty_body?: string;
1080
+ studio_read_the_docs?: string;
989
1081
  }
package/package.json CHANGED
@@ -1,35 +1,38 @@
1
1
  {
2
2
  "name": "@rebasepro/cms-types",
3
- "type": "module",
4
- "version": "0.17.3",
5
- "description": "Rebase admin-panel type definitions — the React-flavoured half of the type surface",
6
- "funding": {
7
- "url": "https://github.com/sponsors/rebaseco"
3
+ "version": "0.18.0",
4
+ "description": "Type definitions for the Rebase admin panel — CMS and Studio — the React-flavoured half of the type surface",
5
+ "keywords": [
6
+ "rebase",
7
+ "admin",
8
+ "cms",
9
+ "typescript",
10
+ "react",
11
+ "headless cms"
12
+ ],
13
+ "homepage": "https://rebase.pro",
14
+ "bugs": {
15
+ "url": "https://github.com/rebasepro/rebase/issues"
8
16
  },
9
- "author": "Rebase",
10
- "license": "MIT",
11
17
  "repository": {
12
18
  "type": "git",
13
19
  "url": "https://github.com/rebasepro/rebase.git",
14
20
  "directory": "packages/cms-types"
15
21
  },
22
+ "funding": {
23
+ "url": "https://github.com/sponsors/rebasepro"
24
+ },
25
+ "license": "MIT",
26
+ "author": "Rebase",
27
+ "type": "module",
16
28
  "main": "./dist/index.es.js",
17
29
  "module": "./dist/index.es.js",
18
30
  "types": "./dist/index.d.ts",
19
- "source": "src/index.ts",
20
31
  "engines": {
21
- "node": ">=20"
32
+ "node": ">=22.22.0"
22
33
  },
23
- "keywords": [
24
- "rebase",
25
- "admin",
26
- "cms",
27
- "typescript",
28
- "react",
29
- "headless cms"
30
- ],
31
34
  "dependencies": {
32
- "@rebasepro/types": "0.17.3"
35
+ "@rebasepro/types": "0.18.0"
33
36
  },
34
37
  "devDependencies": {
35
38
  "@types/jest": "^30.0.0",
@@ -46,12 +49,11 @@
46
49
  "vite": "^8.1.5"
47
50
  },
48
51
  "peerDependencies": {
49
- "react": "^19.0.0",
50
- "react-dom": "^19.0.0"
52
+ "react": "^19.2.7",
53
+ "react-dom": "^19.2.7"
51
54
  },
52
55
  "files": [
53
- "dist",
54
- "src"
56
+ "dist"
55
57
  ],
56
58
  "publishConfig": {
57
59
  "access": "public"
@@ -60,7 +62,8 @@
60
62
  ".": {
61
63
  "types": "./dist/index.d.ts",
62
64
  "development": "./dist/index.es.js",
63
- "import": "./dist/index.es.js"
65
+ "import": "./dist/index.es.js",
66
+ "default": "./dist/index.es.js"
64
67
  },
65
68
  "./package.json": "./package.json"
66
69
  },
@@ -98,6 +101,7 @@
98
101
  "build": "vite build && tsc --emitDeclarationOnly -p tsconfig.prod.json && node ../../tooling/scripts/add-dts-extensions.mjs dist && node ../../tooling/scripts/assert-build-output.mjs",
99
102
  "test:lint": "eslint \"src/**\" --quiet",
100
103
  "test": "jest --passWithNoTests",
104
+ "test:watch": "jest --watch",
101
105
  "clean": "rm -rf dist && find ./src -name '*.js' -type f | xargs rm -f"
102
106
  }
103
107
  }