@object-ui/providers 17.6.0 → 17.7.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,564 @@
1
1
  # @object-ui/providers — Changelog
2
2
 
3
+ ## 17.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - c9327c9: Localize the theme document types: `@object-ui/types` now owns `Theme`, `ThemeMode` and `ColorPalette` (objectui#5716 ruling, 2026-08-23). The spec retired its theme module (objectstack `35ad101bc`) while ObjectUI retained the theme system, so the types are hand-written from the last-published `@objectstack/spec` 17.1.0 shapes instead of re-exported — a spec dependency refresh past the retirement no longer breaks these packages.
8
+
9
+ Published-name REMOVALS from `@object-ui/types` (zero in-repo readers, deleted under the same ruling's rider):
10
+
11
+ - `Typography` — the shape lives on as the inline `Theme['typography']` member.
12
+ - `BorderRadius` — lives on as inline `Theme['borderRadius']`.
13
+ - `Shadow` — lives on as inline `Theme['shadows']`.
14
+ - `ThemeDefinition` — the deprecated alias of `Theme`; use `Theme`.
15
+
16
+ Also added: `THEME_MODES`, a runtime tuple witness of the theme mode vocabulary (`['auto', 'light', 'dark']`).
17
+
18
+ The `UI` protocol namespace (`import { UI } from '@object-ui/types'`) now resolves `UI.Theme` / `UI.ThemeMode` / `UI.ColorPalette` to the local owners, so they survive the upcoming spec refresh; the rest of the namespace continues to track `@objectstack/spec/ui`. After that refresh, retired spec/ui members (`UI.ThemeSchema`, `UI.ThemeModeSchema`, `UI.ThemeParsed`, `UI.Typography`, `UI.BorderRadius`, `UI.Shadow`, `UI.defineTheme`) drop out of the namespace.
19
+
20
+ `@object-ui/providers`: `ThemePreference` is now derived from `@object-ui/types`' `ThemeMode` instead of the retired spec `ThemeModeSchema` (same union: `'auto' | 'light' | 'dark' | 'system'`).
21
+
22
+ ### Patch Changes
23
+
24
+ - a1c41c5: `@object-ui/providers` no longer declares `@objectstack/spec` as a dependency. Nothing
25
+ in the package imports it, so consumers stop installing it on this package's account
26
+ (objectui#5753).
27
+
28
+ The edge was live for exactly one release cycle. It was promoted from `devDependencies`
29
+ to `dependencies` when `ThemePreference` was derived from the spec's `ThemeMode` union,
30
+ because the package's public `.d.ts` then referenced the spec. objectui#5716 re-pointed
31
+ that derivation at `@object-ui/types` (`ThemeMode` / `THEME_MODES`), which removed the
32
+ last three import sites — `src/types.ts` and the two retirement-era test files — and
33
+ left the declaration behind with no reader.
34
+
35
+ Re-measured on `origin/main` at `ad0f5f11f` before removal, with a positive control so
36
+ the empty result is a real absence rather than a broken command: the import-shaped grep
37
+ (`from` / `require(` / `import(` / `vi.mock(` against `@objectstack/spec`, bare name and
38
+ every subpath) returns **0** hits under `packages/providers/` and **434** across
39
+ `packages/` + `apps/` — same command, same invocation. The only surviving mentions in
40
+ the package are the declaration itself, immutable `CHANGELOG.md` history, and a prose
41
+ comment in `tsconfig.test.json` that this change corrects.
42
+
43
+ No API change and no behaviour change: `dist/types.d.ts` imports only `react` and
44
+ `@object-ui/types`, and no emitted file references a spec symbol. Consumers on an
45
+ isolated `node_modules` (pnpm) never had supported access to the spec through this
46
+ package, so nothing they could legitimately import goes away — the change is to the
47
+ install graph only, which is why it is scored `patch` rather than `minor`.
48
+ - c907a9c: fix(fields): a file or image upload that surfaces no `sys_file` id is refused by name, never submitted as an inline blob
49
+
50
+ **BREAKING (`@object-ui/fields`), graded `minor` by this repo's release model** (AGENTS.md: objectui's major follows the `@objectstack` family major, so its own breaking changes ship as `minor` with the breaking semantics stated here, never `major`):
51
+
52
+ - **Who breaks.** Two kinds of host. The first calls `fileValueForSubmit` itself. The second mounts an upload adapter whose result carries no id-shaped `meta.fileId`. That includes the object-URL default: `useUpload()` falls back to it when no `UploadProvider` is mounted, and `UploadProvider` uses it when given no `adapter`. It also includes any S3- or Azure-style adapter, `createS3Adapter` and `createAzureBlobAdapter` among them, because neither mints a `sys_file` row. This includes every host on a non-ObjectStack backend (the README's any-backend `DataSource` path) that stored the inline `UploadedFileMetadata` object: no adapter there mints a `sys_file` id.
53
+ - **What they see now.** `fileValueForSubmit` throws `UploadIncompleteError` (`code` `UPLOAD_INCOMPLETE`, `fileName` naming the pick) where it used to return the inline object, and its return type is `string`. In `FileField`, `FileCell` and `ImageField` the pick is refused with the translated "did not complete" row, and the field is not changed.
54
+ - **What to do.** Mount an `UploadProvider` whose adapter returns the `sys_file` id in `meta.fileId`. `createObjectStackUploadAdapter`, the ObjectStack presigned flow, does. A custom adapter has to register the file with the platform and return that id. A host that calls `fileValueForSubmit` directly catches `UploadIncompleteError` (or checks `code === 'UPLOAD_INCOMPLETE'`) where it used to accept an object. Such a host returns its own file id in `meta.fileId` (word characters and `-`, 1 to 64 long, as `isFileIdToken` requires) and has its read path return `{ id, name, url }`, because a bare id otherwise renders from ObjectStack's `/api/v1/storage/files/:id`.
55
+
56
+ `Clause-②: yes (narrowing)` — `fileValueForSubmit`, a public export of `@object-ui/fields`, narrows its return type to `string` and throws where it used to return an object; `UploadIncompleteError` is a new public export. No field-value accept set widens.
57
+
58
+ `fileValueForSubmit` used to fall back to the legacy inline `{ name, original_name, size, mime_type, url }` object when the upload adapter surfaced no `meta.fileId`. That was the file and image widgets' one path to the pre-D3 inline file object: the backend's stored contract has been the bare `sys_file` id since spec `17.0.0`, so the fallback turned a successful-looking upload into a save the engine refused (`invalid_type`) on every deployment that has verified its file-as-reference migration, and into a warned-about legacy value on the rest. ADR-0104's 2026-09-05 addendum fixes the physical column to the bare id as well.
59
+
60
+ The fallback is retired. `FileField`, `FileCell` and both upload paths of `ImageField` now submit the id the adapter minted, or refuse the pick with the translated `fields.file.uploadIncomplete` message ("did not complete") in the same error row a transport failure lands in — the field is not changed and no new blob reaches `onChange`. This includes the object-URL default `useUpload()` falls open to when no `UploadProvider` is mounted, and any S3/Azure-style adapter that mints no `sys_file` row. Reading is unchanged: a legacy blob already on a record still renders, and on a `multiple` field it is passed through untouched beside a new id.
61
+
62
+ `@object-ui/i18n` gains the `fields.file.uploadIncomplete` key in every locale pack.
63
+
64
+ `@object-ui/providers`'s `UploadProvider.tsx` JSDoc for the object-URL default now states it persists nothing and returns no id.
65
+ - Updated dependencies [b46c58f]
66
+ - Updated dependencies [6f96fca]
67
+ - Updated dependencies [5f00ff4]
68
+ - Updated dependencies [c9e073a]
69
+ - Updated dependencies [7b395d8]
70
+ - Updated dependencies [0879812]
71
+ - Updated dependencies [2dd4d3f]
72
+ - Updated dependencies [e3ea4f9]
73
+ - Updated dependencies [8b1f066]
74
+ - Updated dependencies [af243c1]
75
+ - Updated dependencies [f3f4e4c]
76
+ - Updated dependencies [a05c350]
77
+ - Updated dependencies [8c10f4f]
78
+ - Updated dependencies [90dac98]
79
+ - Updated dependencies [6096f20]
80
+ - Updated dependencies [ea02938]
81
+ - Updated dependencies [a14fb23]
82
+ - Updated dependencies [ae98f1d]
83
+ - Updated dependencies [f98eddf]
84
+ - Updated dependencies [ce6bd99]
85
+ - Updated dependencies [a5b08c9]
86
+ - Updated dependencies [9b28151]
87
+ - Updated dependencies [1a5003f]
88
+ - Updated dependencies [d22b37b]
89
+ - Updated dependencies [1daf477]
90
+ - Updated dependencies [fb13e85]
91
+ - Updated dependencies [c2d8659]
92
+ - Updated dependencies [e0f8202]
93
+ - Updated dependencies [c3a26cc]
94
+ - Updated dependencies [a66e58e]
95
+ - Updated dependencies [d89492c]
96
+ - Updated dependencies [9327397]
97
+ - Updated dependencies [17cc3a3]
98
+ - Updated dependencies [9c78ebe]
99
+ - Updated dependencies [12809a5]
100
+ - Updated dependencies [f9c06ef]
101
+ - Updated dependencies [5ad3b88]
102
+ - Updated dependencies [f9d772b]
103
+ - Updated dependencies [97b6c21]
104
+ - Updated dependencies [29b45f6]
105
+ - Updated dependencies [b956e69]
106
+ - Updated dependencies [fec3b1a]
107
+ - Updated dependencies [b8e0941]
108
+ - Updated dependencies [0c50f18]
109
+ - Updated dependencies [1dae95a]
110
+ - Updated dependencies [e32dae1]
111
+ - Updated dependencies [4aebea0]
112
+ - Updated dependencies [f976774]
113
+ - Updated dependencies [25cb364]
114
+ - Updated dependencies [c6678b1]
115
+ - Updated dependencies [0638322]
116
+ - Updated dependencies [e3782d2]
117
+ - Updated dependencies [db0beb2]
118
+ - Updated dependencies [997ce38]
119
+ - Updated dependencies [ae0b9d3]
120
+ - Updated dependencies [3b469c8]
121
+ - Updated dependencies [6650259]
122
+ - Updated dependencies [4f8b7f8]
123
+ - Updated dependencies [f6ae5e2]
124
+ - Updated dependencies [7343376]
125
+ - Updated dependencies [b2683a2]
126
+ - Updated dependencies [dded788]
127
+ - Updated dependencies [b45d463]
128
+ - Updated dependencies [54a7830]
129
+ - Updated dependencies [f3135a4]
130
+ - Updated dependencies [b5696d3]
131
+ - Updated dependencies [3f9d926]
132
+ - Updated dependencies [e978ed5]
133
+ - Updated dependencies [6a7f24e]
134
+ - Updated dependencies [b3c96d6]
135
+ - Updated dependencies [8d0ca91]
136
+ - Updated dependencies [c30c8dd]
137
+ - Updated dependencies [24d3e65]
138
+ - Updated dependencies [95a7c8d]
139
+ - Updated dependencies [cc4e476]
140
+ - Updated dependencies [92970c4]
141
+ - Updated dependencies [d570eaa]
142
+ - Updated dependencies [42687ba]
143
+ - Updated dependencies [24a0f14]
144
+ - Updated dependencies [797a30f]
145
+ - Updated dependencies [b4075c0]
146
+ - Updated dependencies [9b85600]
147
+ - Updated dependencies [99878d8]
148
+ - Updated dependencies [3c13675]
149
+ - Updated dependencies [0eb9f36]
150
+ - Updated dependencies [ae582b7]
151
+ - Updated dependencies [db11afd]
152
+ - Updated dependencies [154075a]
153
+ - Updated dependencies [582edef]
154
+ - Updated dependencies [19f484f]
155
+ - Updated dependencies [0a78a20]
156
+ - Updated dependencies [615346d]
157
+ - Updated dependencies [75dcc81]
158
+ - Updated dependencies [55a12a8]
159
+ - Updated dependencies [edfcf5a]
160
+ - Updated dependencies [0a3e540]
161
+ - Updated dependencies [f61dab1]
162
+ - Updated dependencies [b0a05dd]
163
+ - Updated dependencies [dd5ff19]
164
+ - Updated dependencies [81f8498]
165
+ - Updated dependencies [c27b575]
166
+ - Updated dependencies [0e6e76b]
167
+ - Updated dependencies [cd5b19a]
168
+ - Updated dependencies [17dc167]
169
+ - Updated dependencies [20d23be]
170
+ - Updated dependencies [20d23be]
171
+ - Updated dependencies [e6bc087]
172
+ - Updated dependencies [a7557a7]
173
+ - Updated dependencies [7d074ba]
174
+ - Updated dependencies [6158e4c]
175
+ - Updated dependencies [6158e4c]
176
+ - Updated dependencies [52aad5c]
177
+ - Updated dependencies [58da8ae]
178
+ - Updated dependencies [138ad45]
179
+ - Updated dependencies [5262f7d]
180
+ - Updated dependencies [6aa029b]
181
+ - Updated dependencies [770cc5b]
182
+ - Updated dependencies [1a88ce2]
183
+ - Updated dependencies [a1a44d6]
184
+ - Updated dependencies [e0a9c67]
185
+ - Updated dependencies [5638529]
186
+ - Updated dependencies [c476be0]
187
+ - Updated dependencies [c82ff39]
188
+ - Updated dependencies [6c3da53]
189
+ - Updated dependencies [31987bd]
190
+ - Updated dependencies [3c3ce15]
191
+ - Updated dependencies [e100589]
192
+ - Updated dependencies [304f611]
193
+ - Updated dependencies [e46ee77]
194
+ - Updated dependencies [6e9c8d2]
195
+ - Updated dependencies [9547063]
196
+ - Updated dependencies [3f6efd6]
197
+ - Updated dependencies [c4ab6d0]
198
+ - Updated dependencies [0e9058b]
199
+ - Updated dependencies [5988b6b]
200
+ - Updated dependencies [00ccdf7]
201
+ - Updated dependencies [9d9ed54]
202
+ - Updated dependencies [ca3de72]
203
+ - Updated dependencies [83e3f83]
204
+ - Updated dependencies [401611b]
205
+ - Updated dependencies [2c0ddf2]
206
+ - Updated dependencies [4abc0aa]
207
+ - Updated dependencies [2b188fa]
208
+ - Updated dependencies [f68e0a0]
209
+ - Updated dependencies [aea682a]
210
+ - Updated dependencies [fcdc8ec]
211
+ - Updated dependencies [2d576e4]
212
+ - Updated dependencies [8366acc]
213
+ - Updated dependencies [95e58a3]
214
+ - Updated dependencies [9d7419b]
215
+ - Updated dependencies [fc7db05]
216
+ - Updated dependencies [9ed8d0f]
217
+ - Updated dependencies [c73cdb5]
218
+ - Updated dependencies [6f5719e]
219
+ - Updated dependencies [06a8af5]
220
+ - Updated dependencies [6a91586]
221
+ - Updated dependencies [a04d7c6]
222
+ - Updated dependencies [f3c2bb0]
223
+ - Updated dependencies [460575f]
224
+ - Updated dependencies [d88e20f]
225
+ - Updated dependencies [2d7304d]
226
+ - Updated dependencies [636b236]
227
+ - Updated dependencies [d6d8fb9]
228
+ - Updated dependencies [64d624d]
229
+ - Updated dependencies [95bad12]
230
+ - Updated dependencies [d2fb6ef]
231
+ - Updated dependencies [fda49e5]
232
+ - Updated dependencies [fc62bb4]
233
+ - Updated dependencies [41df893]
234
+ - Updated dependencies [0cba1b7]
235
+ - Updated dependencies [00f3eb5]
236
+ - Updated dependencies [1ec291c]
237
+ - Updated dependencies [453dbaa]
238
+ - Updated dependencies [69a2163]
239
+ - Updated dependencies [24e027e]
240
+ - Updated dependencies [2c3cd1b]
241
+ - Updated dependencies [90665e0]
242
+ - Updated dependencies [7e19d03]
243
+ - Updated dependencies [1e946c9]
244
+ - Updated dependencies [864154e]
245
+ - Updated dependencies [b023625]
246
+ - Updated dependencies [75bd83d]
247
+ - Updated dependencies [40c479a]
248
+ - Updated dependencies [971d387]
249
+ - Updated dependencies [ee851c3]
250
+ - Updated dependencies [6414dfd]
251
+ - Updated dependencies [a8d5c71]
252
+ - Updated dependencies [905b21f]
253
+ - Updated dependencies [88e9109]
254
+ - Updated dependencies [2c45966]
255
+ - Updated dependencies [db3a600]
256
+ - Updated dependencies [3a3db76]
257
+ - Updated dependencies [0d723a3]
258
+ - Updated dependencies [0c95d3d]
259
+ - Updated dependencies [3e4fa2c]
260
+ - Updated dependencies [b5b928a]
261
+ - Updated dependencies [52a43de]
262
+ - Updated dependencies [195052f]
263
+ - Updated dependencies [e4559d1]
264
+ - Updated dependencies [2c71482]
265
+ - Updated dependencies [5ef9c4f]
266
+ - Updated dependencies [46f0bb4]
267
+ - Updated dependencies [6f81384]
268
+ - Updated dependencies [8f1d995]
269
+ - Updated dependencies [dddb942]
270
+ - Updated dependencies [29754cf]
271
+ - Updated dependencies [b84dc18]
272
+ - Updated dependencies [ac8abb0]
273
+ - Updated dependencies [9d86e1d]
274
+ - Updated dependencies [3a5817f]
275
+ - Updated dependencies [99a3c2d]
276
+ - Updated dependencies [c8ea8af]
277
+ - Updated dependencies [3190414]
278
+ - Updated dependencies [4e480f5]
279
+ - Updated dependencies [38a123c]
280
+ - Updated dependencies [d7acad6]
281
+ - Updated dependencies [45a9aeb]
282
+ - Updated dependencies [713db46]
283
+ - Updated dependencies [bf3a03c]
284
+ - Updated dependencies [cb55718]
285
+ - Updated dependencies [29cb85b]
286
+ - Updated dependencies [3e028c8]
287
+ - Updated dependencies [ce503e5]
288
+ - Updated dependencies [f20dcf0]
289
+ - Updated dependencies [4ca30d0]
290
+ - Updated dependencies [7a5da14]
291
+ - Updated dependencies [2c1c967]
292
+ - Updated dependencies [d6ceb8d]
293
+ - Updated dependencies [2acd8e1]
294
+ - Updated dependencies [adb2a86]
295
+ - Updated dependencies [3561bd2]
296
+ - Updated dependencies [bf97b98]
297
+ - Updated dependencies [b0d308d]
298
+ - Updated dependencies [40f34b4]
299
+ - Updated dependencies [8063bcb]
300
+ - Updated dependencies [b74a859]
301
+ - Updated dependencies [d4493fd]
302
+ - Updated dependencies [240b80f]
303
+ - Updated dependencies [77cb489]
304
+ - Updated dependencies [bfaa158]
305
+ - Updated dependencies [777e5c6]
306
+ - Updated dependencies [0c386dd]
307
+ - Updated dependencies [9e37d9b]
308
+ - Updated dependencies [5ad86dd]
309
+ - Updated dependencies [16a725f]
310
+ - Updated dependencies [4dfdcc3]
311
+ - Updated dependencies [446d93d]
312
+ - Updated dependencies [ecd9cb2]
313
+ - Updated dependencies [98d4108]
314
+ - Updated dependencies [0e3b3be]
315
+ - Updated dependencies [a29ae2d]
316
+ - Updated dependencies [4388f71]
317
+ - Updated dependencies [0b1ac58]
318
+ - Updated dependencies [c93b4d5]
319
+ - Updated dependencies [c1fe272]
320
+ - Updated dependencies [8ad218d]
321
+ - Updated dependencies [3e41187]
322
+ - Updated dependencies [5f78953]
323
+ - Updated dependencies [639114c]
324
+ - Updated dependencies [1f31d3a]
325
+ - Updated dependencies [351eb31]
326
+ - Updated dependencies [20c04b2]
327
+ - Updated dependencies [b652514]
328
+ - Updated dependencies [adbda1b]
329
+ - Updated dependencies [e2b3826]
330
+ - Updated dependencies [2e32ed4]
331
+ - Updated dependencies [1bee5d0]
332
+ - Updated dependencies [858cd72]
333
+ - Updated dependencies [554f2b6]
334
+ - Updated dependencies [669d71b]
335
+ - Updated dependencies [ed27d7c]
336
+ - Updated dependencies [52c8cf7]
337
+ - Updated dependencies [2ceb43a]
338
+ - Updated dependencies [7cdd2b9]
339
+ - Updated dependencies [52c8cf7]
340
+ - Updated dependencies [caa0cd3]
341
+ - Updated dependencies [25c7d58]
342
+ - Updated dependencies [c6198c2]
343
+ - Updated dependencies [51eb515]
344
+ - Updated dependencies [c354ce5]
345
+ - Updated dependencies [8fe8e5c]
346
+ - Updated dependencies [feac439]
347
+ - Updated dependencies [efbd566]
348
+ - Updated dependencies [9587fc9]
349
+ - Updated dependencies [e62c44e]
350
+ - Updated dependencies [5d0876c]
351
+ - Updated dependencies [544ecba]
352
+ - Updated dependencies [bc640ec]
353
+ - Updated dependencies [3e377c9]
354
+ - Updated dependencies [a3eb5d0]
355
+ - Updated dependencies [4ce14f1]
356
+ - Updated dependencies [2af1fa7]
357
+ - Updated dependencies [a137d0c]
358
+ - Updated dependencies [caf477f]
359
+ - Updated dependencies [f6375da]
360
+ - Updated dependencies [967e5d8]
361
+ - Updated dependencies [a4611b3]
362
+ - Updated dependencies [20316ba]
363
+ - Updated dependencies [d3499b3]
364
+ - Updated dependencies [309c75e]
365
+ - Updated dependencies [c9f9bae]
366
+ - Updated dependencies [18897a4]
367
+ - Updated dependencies [8b7ea39]
368
+ - Updated dependencies [dcbf0b2]
369
+ - Updated dependencies [1422a92]
370
+ - Updated dependencies [d05fe17]
371
+ - Updated dependencies [a480f79]
372
+ - Updated dependencies [f08d1a8]
373
+ - Updated dependencies [64a252d]
374
+ - Updated dependencies [786bc91]
375
+ - Updated dependencies [75fca96]
376
+ - Updated dependencies [7ca6ddd]
377
+ - Updated dependencies [f1cd290]
378
+ - Updated dependencies [5a41ce7]
379
+ - Updated dependencies [8d50bc2]
380
+ - Updated dependencies [604476d]
381
+ - Updated dependencies [335abea]
382
+ - Updated dependencies [0f5cadf]
383
+ - Updated dependencies [4f9f1ee]
384
+ - Updated dependencies [66e8b2a]
385
+ - Updated dependencies [aa083cd]
386
+ - Updated dependencies [12b5992]
387
+ - Updated dependencies [b93e245]
388
+ - Updated dependencies [c842594]
389
+ - Updated dependencies [290de37]
390
+ - Updated dependencies [8c8da45]
391
+ - Updated dependencies [8cd8eb5]
392
+ - Updated dependencies [cf1d29e]
393
+ - Updated dependencies [af9e957]
394
+ - Updated dependencies [c974edf]
395
+ - Updated dependencies [ad852b6]
396
+ - Updated dependencies [ee4d19f]
397
+ - Updated dependencies [496d31d]
398
+ - Updated dependencies [9a853f2]
399
+ - Updated dependencies [cb847fd]
400
+ - Updated dependencies [ee70287]
401
+ - Updated dependencies [3e98e13]
402
+ - Updated dependencies [4eaa835]
403
+ - Updated dependencies [b1777ae]
404
+ - Updated dependencies [24845c4]
405
+ - Updated dependencies [6f864cf]
406
+ - Updated dependencies [24d1edd]
407
+ - Updated dependencies [645087c]
408
+ - Updated dependencies [33f4a19]
409
+ - Updated dependencies [5323168]
410
+ - Updated dependencies [841dd2b]
411
+ - Updated dependencies [3014fc0]
412
+ - Updated dependencies [dacb402]
413
+ - Updated dependencies [474797d]
414
+ - Updated dependencies [704e695]
415
+ - Updated dependencies [a407bd6]
416
+ - Updated dependencies [3a43a15]
417
+ - Updated dependencies [421544b]
418
+ - Updated dependencies [fb01022]
419
+ - Updated dependencies [e9d9212]
420
+ - Updated dependencies [ecfb693]
421
+ - Updated dependencies [81a51db]
422
+ - Updated dependencies [67749c7]
423
+ - Updated dependencies [507b61b]
424
+ - Updated dependencies [512c84b]
425
+ - Updated dependencies [d4733f2]
426
+ - Updated dependencies [8b532cb]
427
+ - Updated dependencies [c42554e]
428
+ - Updated dependencies [555b4ec]
429
+ - Updated dependencies [1ccfc23]
430
+ - Updated dependencies [542718f]
431
+ - Updated dependencies [7f27bc5]
432
+ - Updated dependencies [f95b140]
433
+ - Updated dependencies [541ce4e]
434
+ - Updated dependencies [6479086]
435
+ - Updated dependencies [d79f525]
436
+ - Updated dependencies [f1190b0]
437
+ - Updated dependencies [6a4680b]
438
+ - Updated dependencies [c3a4273]
439
+ - Updated dependencies [093af32]
440
+ - Updated dependencies [1bd1be7]
441
+ - Updated dependencies [d234fa9]
442
+ - Updated dependencies [adf5812]
443
+ - Updated dependencies [5058336]
444
+ - Updated dependencies [2f6b2bf]
445
+ - Updated dependencies [2028b31]
446
+ - Updated dependencies [63601ab]
447
+ - Updated dependencies [8693b85]
448
+ - Updated dependencies [58b7b3d]
449
+ - Updated dependencies [681d3f1]
450
+ - Updated dependencies [f3bc481]
451
+ - Updated dependencies [93fc0e7]
452
+ - Updated dependencies [a4b723f]
453
+ - Updated dependencies [2b10ca0]
454
+ - Updated dependencies [7db4a81]
455
+ - Updated dependencies [526fc11]
456
+ - Updated dependencies [6732df4]
457
+ - Updated dependencies [fe9e0d0]
458
+ - Updated dependencies [63fb72c]
459
+ - Updated dependencies [279e48e]
460
+ - Updated dependencies [8700d6d]
461
+ - Updated dependencies [8db2a0f]
462
+ - Updated dependencies [30443fb]
463
+ - Updated dependencies [96919a4]
464
+ - Updated dependencies [2e471dc]
465
+ - Updated dependencies [be50942]
466
+ - Updated dependencies [775e079]
467
+ - Updated dependencies [7e8b3c0]
468
+ - Updated dependencies [53374dc]
469
+ - Updated dependencies [f6fb83f]
470
+ - Updated dependencies [2049b03]
471
+ - Updated dependencies [7cbc724]
472
+ - Updated dependencies [fb91ac9]
473
+ - Updated dependencies [8524372]
474
+ - Updated dependencies [7cbefa5]
475
+ - Updated dependencies [72d6587]
476
+ - Updated dependencies [a272a4f]
477
+ - Updated dependencies [55f39ee]
478
+ - Updated dependencies [0970a0e]
479
+ - Updated dependencies [e427e9c]
480
+ - Updated dependencies [bbc9dc3]
481
+ - Updated dependencies [02f1813]
482
+ - Updated dependencies [ac716ff]
483
+ - Updated dependencies [f0f3cd5]
484
+ - Updated dependencies [20f3e65]
485
+ - Updated dependencies [bbba098]
486
+ - Updated dependencies [87af769]
487
+ - Updated dependencies [3be720e]
488
+ - Updated dependencies [c3df43a]
489
+ - Updated dependencies [d16d0e9]
490
+ - Updated dependencies [bbe57fd]
491
+ - Updated dependencies [272a530]
492
+ - Updated dependencies [1779e8d]
493
+ - Updated dependencies [4128188]
494
+ - Updated dependencies [b253c4e]
495
+ - Updated dependencies [78a9c67]
496
+ - Updated dependencies [4a7ef0d]
497
+ - Updated dependencies [dea17b4]
498
+ - Updated dependencies [89bb77a]
499
+ - Updated dependencies [06611e4]
500
+ - Updated dependencies [dc3893d]
501
+ - Updated dependencies [1bbaa16]
502
+ - Updated dependencies [6ee259a]
503
+ - Updated dependencies [e708426]
504
+ - Updated dependencies [3b6d53b]
505
+ - Updated dependencies [a8198de]
506
+ - Updated dependencies [a78cd37]
507
+ - Updated dependencies [5ea623e]
508
+ - Updated dependencies [ca5d671]
509
+ - Updated dependencies [32bf2d6]
510
+ - Updated dependencies [af4fb29]
511
+ - Updated dependencies [9a97800]
512
+ - Updated dependencies [6bca0e4]
513
+ - Updated dependencies [2fcefb9]
514
+ - Updated dependencies [b55a346]
515
+ - Updated dependencies [065bba7]
516
+ - Updated dependencies [100547e]
517
+ - Updated dependencies [6d1c155]
518
+ - Updated dependencies [d7573b3]
519
+ - Updated dependencies [0e05aac]
520
+ - Updated dependencies [18a8e7d]
521
+ - Updated dependencies [e7957ab]
522
+ - Updated dependencies [f7e34ca]
523
+ - Updated dependencies [f9e4f91]
524
+ - Updated dependencies [6ef48b1]
525
+ - Updated dependencies [fa429cf]
526
+ - Updated dependencies [ed8df3e]
527
+ - Updated dependencies [8b446f5]
528
+ - Updated dependencies [7357447]
529
+ - Updated dependencies [199d31b]
530
+ - Updated dependencies [3e01cb5]
531
+ - Updated dependencies [4e8622b]
532
+ - Updated dependencies [dffd752]
533
+ - Updated dependencies [105f3c5]
534
+ - Updated dependencies [3ccd9e8]
535
+ - Updated dependencies [689b979]
536
+ - Updated dependencies [e546222]
537
+ - Updated dependencies [fd13f52]
538
+ - Updated dependencies [fb336df]
539
+ - Updated dependencies [0fce2ef]
540
+ - Updated dependencies [0e2ddd4]
541
+ - Updated dependencies [b7479ab]
542
+ - Updated dependencies [b2ea297]
543
+ - Updated dependencies [5b5a5c3]
544
+ - Updated dependencies [14582b8]
545
+ - Updated dependencies [51e144e]
546
+ - Updated dependencies [a691c0b]
547
+ - Updated dependencies [515f171]
548
+ - Updated dependencies [258d264]
549
+ - Updated dependencies [93127bd]
550
+ - Updated dependencies [51f3d8d]
551
+ - Updated dependencies [78cbdb5]
552
+ - Updated dependencies [b7543a9]
553
+ - Updated dependencies [ca39427]
554
+ - Updated dependencies [c9327c9]
555
+ - Updated dependencies [920165d]
556
+ - Updated dependencies [968dc1e]
557
+ - Updated dependencies [3c73d99]
558
+ - Updated dependencies [1170ed1]
559
+ - Updated dependencies [4d73b07]
560
+ - @object-ui/types@17.7.0
561
+
3
562
  ## 17.6.0
4
563
 
5
564
  ### Patch Changes
package/README.md CHANGED
@@ -12,12 +12,24 @@ pnpm add @object-ui/providers
12
12
 
13
13
  ## Providers
14
14
 
15
+ Every example below compiles against this package's built types. The values your
16
+ own app supplies are written as `declare const` stand-ins so each block stands
17
+ alone, and each stand-in is typed from the prop it is passed to — so the bound
18
+ the example teaches is the bound the package actually declares.
19
+
15
20
  ### DataSourceProvider
16
21
 
17
22
  Generic data source context that decouples ObjectUI from ObjectStack.
18
23
 
19
24
  ```tsx
20
- import { DataSourceProvider } from '@object-ui/providers';
25
+ import type { ReactNode } from 'react';
26
+ import { DataSourceProvider, type DataSourceProviderProps } from '@object-ui/providers';
27
+
28
+ // `DataSourceProviderProps['dataSource']` is declared `any` today, so this
29
+ // stand-in inherits `any`: the compiler checks nothing about the adapter's
30
+ // shape here (objectui#8160, objectui#7912 track that laundering).
31
+ declare const myCustomDataSource: DataSourceProviderProps['dataSource'];
32
+ declare const App: () => ReactNode;
21
33
 
22
34
  <DataSourceProvider dataSource={myCustomDataSource}>
23
35
  <App />
@@ -29,7 +41,13 @@ import { DataSourceProvider } from '@object-ui/providers';
29
41
  Schema/metadata management for objects, fields, and views.
30
42
 
31
43
  ```tsx
32
- import { MetadataProvider } from '@object-ui/providers';
44
+ import type { ReactNode } from 'react';
45
+ import { MetadataProvider, type MetadataProviderProps } from '@object-ui/providers';
46
+
47
+ // `MetadataProviderProps['metadata']` is declared `any` today — same bound as
48
+ // `dataSource` above, so nothing about this object's shape is checked here.
49
+ declare const myMetadata: MetadataProviderProps['metadata'];
50
+ declare const App: () => ReactNode;
33
51
 
34
52
  <MetadataProvider metadata={myMetadata}>
35
53
  <App />
@@ -40,9 +58,15 @@ import { MetadataProvider } from '@object-ui/providers';
40
58
 
41
59
  Theme management with system theme detection.
42
60
 
61
+ `defaultTheme` takes a `ThemePreference` (`auto | light | dark | system`); both
62
+ props are optional.
63
+
43
64
  ```tsx
65
+ import type { ReactNode } from 'react';
44
66
  import { ThemeProvider } from '@object-ui/providers';
45
67
 
68
+ declare const App: () => ReactNode;
69
+
46
70
  <ThemeProvider defaultTheme="system" storageKey="my-app-theme">
47
71
  <App />
48
72
  </ThemeProvider>
@@ -50,15 +74,31 @@ import { ThemeProvider } from '@object-ui/providers';
50
74
 
51
75
  ## Usage Example
52
76
 
77
+ `DataSourceProvider` and `MetadataProvider` both declare `children` as required,
78
+ so each one needs a real element inside it — a placeholder comment is not a
79
+ child.
80
+
53
81
  ```tsx
54
- import { DataSourceProvider, MetadataProvider, ThemeProvider } from '@object-ui/providers';
82
+ import type { ReactNode } from 'react';
83
+ import {
84
+ DataSourceProvider,
85
+ MetadataProvider,
86
+ ThemeProvider,
87
+ type DataSourceProviderProps,
88
+ type MetadataProviderProps,
89
+ } from '@object-ui/providers';
90
+
91
+ declare const myDataSource: DataSourceProviderProps['dataSource'];
92
+ declare const myMetadata: MetadataProviderProps['metadata'];
93
+ // Your own component tree goes here.
94
+ declare const AppContent: () => ReactNode;
55
95
 
56
96
  function App() {
57
97
  return (
58
98
  <ThemeProvider>
59
99
  <DataSourceProvider dataSource={myDataSource}>
60
100
  <MetadataProvider metadata={myMetadata}>
61
- {/* Your app components */}
101
+ <AppContent />
62
102
  </MetadataProvider>
63
103
  </DataSourceProvider>
64
104
  </ThemeProvider>
@@ -11,9 +11,9 @@
11
11
  * - `UploadProvider` exposes an `upload(file, opts)` function via context.
12
12
  * - Apps inject an adapter (`createS3Adapter`, `createAzureBlobAdapter`, or any
13
13
  * custom one implementing `UploadAdapter`).
14
- * - The default adapter (`createObjectUrlAdapter`) preserves the legacy
15
- * "blob: URL" behaviour so the field widgets keep working when no provider
16
- * is mounted.
14
+ * - The default adapter (`createObjectUrlAdapter`) mints a tab-local `blob:`
15
+ * URL and no `sys_file` id; it keeps the field widgets from crashing when no
16
+ * provider is mounted, and they refuse every pick through it (objectui#7699).
17
17
  * - Upload progress and resumable retries are first-class concerns: each
18
18
  * adapter implementation can chunk + resume; the public API surfaces
19
19
  * `onProgress` and an `abortSignal`.
@@ -50,9 +50,10 @@ interface UploadContextValue {
50
50
  adapter: UploadAdapter;
51
51
  }
52
52
  /**
53
- * Default adapter — wraps the file in an object URL. Identical to the legacy
54
- * field-widget behaviour; safe fallback when the app hasn't configured a real
55
- * upload destination yet.
53
+ * Default adapter — wraps the file in an object URL. It persists nothing and
54
+ * returns no `meta.fileId`, so the `@object-ui/fields` file and image widgets
55
+ * refuse its result (`UploadIncompleteError`); it is a no-crash default, not
56
+ * an upload destination.
56
57
  */
57
58
  export declare function createObjectUrlAdapter(): UploadAdapter;
58
59
  export interface S3AdapterOptions {
@@ -12,9 +12,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
12
12
  * - `UploadProvider` exposes an `upload(file, opts)` function via context.
13
13
  * - Apps inject an adapter (`createS3Adapter`, `createAzureBlobAdapter`, or any
14
14
  * custom one implementing `UploadAdapter`).
15
- * - The default adapter (`createObjectUrlAdapter`) preserves the legacy
16
- * "blob: URL" behaviour so the field widgets keep working when no provider
17
- * is mounted.
15
+ * - The default adapter (`createObjectUrlAdapter`) mints a tab-local `blob:`
16
+ * URL and no `sys_file` id; it keeps the field widgets from crashing when no
17
+ * provider is mounted, and they refuse every pick through it (objectui#7699).
18
18
  * - Upload progress and resumable retries are first-class concerns: each
19
19
  * adapter implementation can chunk + resume; the public API surfaces
20
20
  * `onProgress` and an `abortSignal`.
@@ -22,9 +22,10 @@ import { jsx as _jsx } from "react/jsx-runtime";
22
22
  import { createContext, useCallback, useContext, useEffect, useMemo, useRef, } from 'react';
23
23
  const UploadContext = createContext(null);
24
24
  /**
25
- * Default adapter — wraps the file in an object URL. Identical to the legacy
26
- * field-widget behaviour; safe fallback when the app hasn't configured a real
27
- * upload destination yet.
25
+ * Default adapter — wraps the file in an object URL. It persists nothing and
26
+ * returns no `meta.fileId`, so the `@object-ui/fields` file and image widgets
27
+ * refuse its result (`UploadIncompleteError`); it is a no-crash default, not
28
+ * an upload destination.
28
29
  */
29
30
  export function createObjectUrlAdapter() {
30
31
  return {
package/dist/types.d.ts CHANGED
@@ -26,7 +26,7 @@ export interface MetadataProviderProps {
26
26
  *
27
27
  * Derivation history (objectui#5716): this union was born reading the spec's
28
28
  * `ThemeModeSchema` through its `_zod` input carrier. The spec then retired
29
- * its whole theme module (objectstack#10485), objectui assumed ownership of
29
+ * its whole theme module (objectstack `35ad101bc`), objectui assumed ownership of
30
30
  * the theme document types, and the mode vocabulary's owner is now
31
31
  * `@object-ui/types` (`ThemeMode`, with the `THEME_MODES` runtime witness) —
32
32
  * so the derivation reads from there. A mode the owner adds still arrives
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@object-ui/providers",
3
- "version": "17.6.0",
3
+ "version": "17.7.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Reusable context providers for ObjectUI applications",
@@ -24,8 +24,7 @@
24
24
  }
25
25
  },
26
26
  "dependencies": {
27
- "@objectstack/spec": "^17.0.0",
28
- "@object-ui/types": "17.6.0"
27
+ "@object-ui/types": "17.7.0"
29
28
  },
30
29
  "peerDependencies": {
31
30
  "react": "^18.0.0 || ^19.0.0",
@@ -60,8 +59,8 @@
60
59
  "LICENSE"
61
60
  ],
62
61
  "scripts": {
63
- "build": "tsc",
64
- "test": "vitest run",
62
+ "build": "tsc && node ../../scripts/check-dist-completeness.mjs",
63
+ "test": "vitest run --root ../.. packages/providers/",
65
64
  "type-check": "tsc --noEmit && tsc -p tsconfig.test.json",
66
65
  "lint": "eslint ."
67
66
  }