@valbuild/next 0.96.3 → 0.97.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 (44) hide show
  1. package/README.md +33 -0
  2. package/client/dist/valbuild-next-client.cjs.dev.js +29 -10
  3. package/client/dist/valbuild-next-client.cjs.prod.js +29 -10
  4. package/client/dist/valbuild-next-client.esm.js +29 -10
  5. package/dist/{ValNextProvider-26ef0c1c.cjs.dev.js → ValNextProvider-03a9f8fd.cjs.dev.js} +103 -25
  6. package/dist/ValNextProvider-6103cb74.cjs.js +7 -0
  7. package/dist/{ValNextProvider-b0d9fa24.cjs.prod.js → ValNextProvider-6103cb74.cjs.prod.js} +103 -25
  8. package/dist/{ValNextProvider-e163e127.esm.js → ValNextProvider-7302b8af.esm.js} +104 -26
  9. package/dist/ValOverlayContext-3c37e5a7.esm.js +251 -0
  10. package/dist/ValOverlayContext-c6f27a6d.cjs.dev.js +262 -0
  11. package/dist/ValOverlayContext-f7f45bc7.cjs.js +7 -0
  12. package/dist/ValOverlayContext-f7f45bc7.cjs.prod.js +262 -0
  13. package/dist/declarations/src/ValProvider.d.ts +1 -0
  14. package/dist/declarations/src/initVal.d.ts +25 -0
  15. package/dist/defineProperty-8951f469.cjs.prod.js +29 -0
  16. package/dist/defineProperty-cca5affa.esm.js +26 -0
  17. package/dist/defineProperty-f90345d7.cjs.dev.js +29 -0
  18. package/dist/{objectSpread2-3c87fb4f.cjs.prod.js → objectSpread2-13f847a9.cjs.prod.js} +2 -27
  19. package/dist/{objectSpread2-792eb2c2.cjs.dev.js → objectSpread2-58024783.cjs.dev.js} +2 -27
  20. package/dist/{objectSpread2-c1340c1c.esm.js → objectSpread2-60d1bd93.esm.js} +2 -25
  21. package/dist/{routeFromVal-ef8c304a.cjs.prod.js → routeFromVal-13c832b2.cjs.prod.js} +1 -1
  22. package/dist/{routeFromVal-748d2aec.esm.js → routeFromVal-8855a5cc.esm.js} +1 -1
  23. package/dist/{routeFromVal-8fdaa0d0.cjs.dev.js → routeFromVal-9b610e77.cjs.dev.js} +1 -1
  24. package/dist/valbuild-next.cjs.dev.js +46 -3
  25. package/dist/valbuild-next.cjs.prod.js +46 -3
  26. package/dist/valbuild-next.esm.js +46 -3
  27. package/dist/{asyncToGenerator-8e5c36c8.cjs.prod.js → version-0e6da9a7.cjs.prod.js} +10 -0
  28. package/dist/{asyncToGenerator-500f022f.esm.js → version-4d7b692c.esm.js} +10 -1
  29. package/dist/{asyncToGenerator-c3823d62.cjs.dev.js → version-c311d818.cjs.dev.js} +10 -0
  30. package/package.json +14 -8
  31. package/rsc/dist/valbuild-next-rsc.cjs.dev.js +35 -35
  32. package/rsc/dist/valbuild-next-rsc.cjs.prod.js +35 -35
  33. package/rsc/dist/valbuild-next-rsc.esm.js +4 -4
  34. package/server/dist/valbuild-next-server.cjs.dev.js +9 -9
  35. package/server/dist/valbuild-next-server.cjs.prod.js +9 -9
  36. package/server/dist/valbuild-next-server.esm.js +3 -3
  37. package/dist/ValNextProvider-b0d9fa24.cjs.js +0 -7
  38. package/dist/ValOverlayContext-6635a4d7.esm.js +0 -114
  39. package/dist/ValOverlayContext-942f1294.cjs.js +0 -7
  40. package/dist/ValOverlayContext-942f1294.cjs.prod.js +0 -125
  41. package/dist/ValOverlayContext-c82a4507.cjs.dev.js +0 -125
  42. package/dist/version-16f6b0ce.esm.js +0 -10
  43. package/dist/version-d034b2fc.cjs.dev.js +0 -12
  44. package/dist/version-d2061026.cjs.prod.js +0 -12
@@ -0,0 +1,262 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var createForOfIteratorHelper = require('./createForOfIteratorHelper-0445603c.cjs.dev.js');
7
+ var defineProperty = require('./defineProperty-f90345d7.cjs.dev.js');
8
+ var React = require('react');
9
+ var jsxRuntime = require('react/jsx-runtime');
10
+ require('./unsupportedIterableToArray-c8ab77c9.cjs.dev.js');
11
+
12
+ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
13
+
14
+ var React__default = /*#__PURE__*/_interopDefault(React);
15
+
16
+ function _classCallCheck(a, n) {
17
+ if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
18
+ }
19
+
20
+ function _defineProperties(e, r) {
21
+ for (var t = 0; t < r.length; t++) {
22
+ var o = r[t];
23
+ o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, defineProperty._toPropertyKey(o.key), o);
24
+ }
25
+ }
26
+ function _createClass(e, r, t) {
27
+ return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
28
+ writable: !1
29
+ }), e;
30
+ }
31
+
32
+ var LOAD_TIMEOUT_MS = 10000;
33
+ var ValExternalStore = /*#__PURE__*/function () {
34
+ // Path-keyed cache of every source seen via update(). The single source of
35
+ // truth: load state and snapshots are both derived from this, so data can be
36
+ // queried for any combination of paths even before a subscriber registers.
37
+
38
+ // Reference-stable per-subscriberId snapshot cache for useSyncExternalStore.
39
+ // Built lazily from loadedSources in get() and invalidated in update().
40
+
41
+ // One-shot listeners used solely by waitForLoad. Kept separate from the
42
+ // useSyncExternalStore listeners so waitForLoad never has to register (and
43
+ // leak) a subscriberId.
44
+
45
+ function ValExternalStore() {
46
+ var _this = this;
47
+ _classCallCheck(this, ValExternalStore);
48
+ defineProperty._defineProperty(this, "subscribe", function (paths) {
49
+ return function (listener) {
50
+ var subscriberId = createSubscriberId(paths);
51
+ var existing = _this.listeners.get(subscriberId);
52
+ if (existing) {
53
+ existing.push(listener);
54
+ } else {
55
+ _this.listeners.set(subscriberId, [listener]);
56
+ }
57
+ return function () {
58
+ var current = _this.listeners.get(subscriberId);
59
+ if (!current) return;
60
+ var idx = current.indexOf(listener);
61
+ if (idx >= 0) current.splice(idx, 1);
62
+ if (current.length === 0) _this.listeners["delete"](subscriberId);
63
+ };
64
+ };
65
+ });
66
+ defineProperty._defineProperty(this, "getSnapshot", function (paths) {
67
+ return function () {
68
+ return _this.get(paths);
69
+ };
70
+ });
71
+ defineProperty._defineProperty(this, "getServerSnapshot", function (paths) {
72
+ return function () {
73
+ return _this.get(paths);
74
+ };
75
+ });
76
+ defineProperty._defineProperty(this, "get", function (paths) {
77
+ var subscriberId = createSubscriberId(paths);
78
+ if (_this.snapshots.has(subscriberId)) {
79
+ return _this.snapshots.get(subscriberId);
80
+ }
81
+ // Build the snapshot from the path-keyed loadedSources so data that arrived
82
+ // before this subscriber registered is still returned. Cache it for a
83
+ // reference-stable result (required by useSyncExternalStore).
84
+ var record;
85
+ var _iterator = createForOfIteratorHelper._createForOfIteratorHelper(paths),
86
+ _step;
87
+ try {
88
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
89
+ var p = _step.value;
90
+ // Json never holds `undefined`, so a defined value means the path loaded.
91
+ var loaded = _this.loadedSources.get(p);
92
+ if (loaded !== undefined) {
93
+ if (!record) {
94
+ record = {};
95
+ }
96
+ record[p] = loaded;
97
+ }
98
+ }
99
+ } catch (err) {
100
+ _iterator.e(err);
101
+ } finally {
102
+ _iterator.f();
103
+ }
104
+ _this.snapshots.set(subscriberId, record);
105
+ return record;
106
+ });
107
+ defineProperty._defineProperty(this, "hasAllLoaded", function (paths) {
108
+ var _iterator2 = createForOfIteratorHelper._createForOfIteratorHelper(paths),
109
+ _step2;
110
+ try {
111
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
112
+ var p = _step2.value;
113
+ if (!_this.loadedSources.has(p)) {
114
+ return false;
115
+ }
116
+ }
117
+ } catch (err) {
118
+ _iterator2.e(err);
119
+ } finally {
120
+ _iterator2.f();
121
+ }
122
+ return true;
123
+ });
124
+ /**
125
+ * Returns a cached promise that resolves once `update()` has populated
126
+ * every path in `paths`. The same promise instance is returned for the
127
+ * same paths until it resolves — required so `React.use` / classic
128
+ * Suspense doesn't re-suspend on every render.
129
+ *
130
+ * If the data never arrives (network failure, a path that is never
131
+ * `update()`'d, a typo in a module path) the promise would otherwise hang
132
+ * forever and keep the Suspense boundary in its fallback. To avoid a silent
133
+ * hang it resolves anyway after `LOAD_TIMEOUT_MS`, logging an error so the
134
+ * failure is diagnosable while the page still renders with partial data.
135
+ */
136
+ defineProperty._defineProperty(this, "waitForLoad", function (paths) {
137
+ if (_this.hasAllLoaded(paths)) {
138
+ return Promise.resolve();
139
+ }
140
+ var subscriberId = createSubscriberId(paths);
141
+ var existing = _this.loadPromises.get(subscriberId);
142
+ if (existing) {
143
+ return existing;
144
+ }
145
+ var promise = new Promise(function (resolve) {
146
+ var cleanup = function cleanup() {
147
+ clearTimeout(timeout);
148
+ _this.loadListeners["delete"](listener);
149
+ _this.loadPromises["delete"](subscriberId);
150
+ };
151
+ var listener = function listener() {
152
+ if (_this.hasAllLoaded(paths)) {
153
+ cleanup();
154
+ resolve();
155
+ }
156
+ };
157
+ var timeout = setTimeout(function () {
158
+ var missing = paths.filter(function (p) {
159
+ return !_this.loadedSources.has(p);
160
+ });
161
+ console.error("Val: draft module(s) did not load within ".concat(LOAD_TIMEOUT_MS, "ms; rendering with partial data. Missing: ").concat(missing.join(", ")));
162
+ cleanup();
163
+ resolve();
164
+ }, LOAD_TIMEOUT_MS);
165
+ // Don't let the pending timer keep a Node process (e.g. the test runner
166
+ // or SSR) alive; setTimeout returns a number in the browser, where there
167
+ // is nothing to unref.
168
+ if (typeof timeout !== "number") {
169
+ timeout.unref();
170
+ }
171
+ _this.loadListeners.add(listener);
172
+ });
173
+ _this.loadPromises.set(subscriberId, promise);
174
+ return promise;
175
+ });
176
+ this.listeners = new Map();
177
+ this.loadPromises = new Map();
178
+ this.loadedSources = new Map();
179
+ this.snapshots = new Map();
180
+ this.loadListeners = new Set();
181
+ }
182
+ return _createClass(ValExternalStore, [{
183
+ key: "update",
184
+ value: function update(path, source) {
185
+ this.loadedSources.set(path, source);
186
+ // Invalidate cached snapshots that include this path so the next get()
187
+ // rebuilds a fresh (new-reference) record, then notify their listeners.
188
+ for (var _i = 0, _Array$from = Array.from(this.snapshots.keys()); _i < _Array$from.length; _i++) {
189
+ var subscriberId = _Array$from[_i];
190
+ if (subscriberId.includes(path)) {
191
+ // TODO: hash paths instead
192
+ this.snapshots["delete"](subscriberId);
193
+ }
194
+ }
195
+ var _iterator3 = createForOfIteratorHelper._createForOfIteratorHelper(this.listeners.keys()),
196
+ _step3;
197
+ try {
198
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
199
+ var _subscriberId = _step3.value;
200
+ if (_subscriberId.includes(path)) {
201
+ this.emitChange(_subscriberId);
202
+ }
203
+ }
204
+ } catch (err) {
205
+ _iterator3.e(err);
206
+ } finally {
207
+ _iterator3.f();
208
+ }
209
+ for (var _i2 = 0, _Array$from2 = Array.from(this.loadListeners); _i2 < _Array$from2.length; _i2++) {
210
+ var listener = _Array$from2[_i2];
211
+ listener();
212
+ }
213
+ }
214
+ }, {
215
+ key: "emitChange",
216
+ value: function emitChange(subscriberId) {
217
+ var _this$listeners$get;
218
+ var _iterator4 = createForOfIteratorHelper._createForOfIteratorHelper((_this$listeners$get = this.listeners.get(subscriberId)) !== null && _this$listeners$get !== void 0 ? _this$listeners$get : []),
219
+ _step4;
220
+ try {
221
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
222
+ var listener = _step4.value;
223
+ listener();
224
+ }
225
+ } catch (err) {
226
+ _iterator4.e(err);
227
+ } finally {
228
+ _iterator4.f();
229
+ }
230
+ }
231
+ }]);
232
+ }();
233
+ function createSubscriberId(paths) {
234
+ return paths.slice().sort().join("&");
235
+ }
236
+ var ValOverlayContext = /*#__PURE__*/React__default["default"].createContext({
237
+ store: undefined,
238
+ draftMode: false,
239
+ suspend: false
240
+ });
241
+ function ValOverlayProvider(_ref) {
242
+ var store = _ref.store,
243
+ draftMode = _ref.draftMode,
244
+ suspend = _ref.suspend,
245
+ children = _ref.children;
246
+ return /*#__PURE__*/jsxRuntime.jsx(ValOverlayContext.Provider, {
247
+ value: {
248
+ store: store,
249
+ draftMode: draftMode,
250
+ suspend: suspend
251
+ },
252
+ children: children
253
+ });
254
+ }
255
+ var useValOverlayContext = function useValOverlayContext() {
256
+ return React__default["default"].useContext(ValOverlayContext);
257
+ };
258
+
259
+ exports.ValExternalStore = ValExternalStore;
260
+ exports.ValOverlayContext = ValOverlayContext;
261
+ exports.ValOverlayProvider = ValOverlayProvider;
262
+ exports.useValOverlayContext = useValOverlayContext;
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ if (process.env.NODE_ENV === "production") {
4
+ module.exports = require("./ValOverlayContext-f7f45bc7.cjs.prod.js");
5
+ } else {
6
+ module.exports = require("./ValOverlayContext-f7f45bc7.cjs.dev.js");
7
+ }
@@ -0,0 +1,262 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var createForOfIteratorHelper = require('./createForOfIteratorHelper-d4afcad8.cjs.prod.js');
7
+ var defineProperty = require('./defineProperty-8951f469.cjs.prod.js');
8
+ var React = require('react');
9
+ var jsxRuntime = require('react/jsx-runtime');
10
+ require('./unsupportedIterableToArray-0d2087a2.cjs.prod.js');
11
+
12
+ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
13
+
14
+ var React__default = /*#__PURE__*/_interopDefault(React);
15
+
16
+ function _classCallCheck(a, n) {
17
+ if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function");
18
+ }
19
+
20
+ function _defineProperties(e, r) {
21
+ for (var t = 0; t < r.length; t++) {
22
+ var o = r[t];
23
+ o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, defineProperty._toPropertyKey(o.key), o);
24
+ }
25
+ }
26
+ function _createClass(e, r, t) {
27
+ return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", {
28
+ writable: !1
29
+ }), e;
30
+ }
31
+
32
+ var LOAD_TIMEOUT_MS = 10000;
33
+ var ValExternalStore = /*#__PURE__*/function () {
34
+ // Path-keyed cache of every source seen via update(). The single source of
35
+ // truth: load state and snapshots are both derived from this, so data can be
36
+ // queried for any combination of paths even before a subscriber registers.
37
+
38
+ // Reference-stable per-subscriberId snapshot cache for useSyncExternalStore.
39
+ // Built lazily from loadedSources in get() and invalidated in update().
40
+
41
+ // One-shot listeners used solely by waitForLoad. Kept separate from the
42
+ // useSyncExternalStore listeners so waitForLoad never has to register (and
43
+ // leak) a subscriberId.
44
+
45
+ function ValExternalStore() {
46
+ var _this = this;
47
+ _classCallCheck(this, ValExternalStore);
48
+ defineProperty._defineProperty(this, "subscribe", function (paths) {
49
+ return function (listener) {
50
+ var subscriberId = createSubscriberId(paths);
51
+ var existing = _this.listeners.get(subscriberId);
52
+ if (existing) {
53
+ existing.push(listener);
54
+ } else {
55
+ _this.listeners.set(subscriberId, [listener]);
56
+ }
57
+ return function () {
58
+ var current = _this.listeners.get(subscriberId);
59
+ if (!current) return;
60
+ var idx = current.indexOf(listener);
61
+ if (idx >= 0) current.splice(idx, 1);
62
+ if (current.length === 0) _this.listeners["delete"](subscriberId);
63
+ };
64
+ };
65
+ });
66
+ defineProperty._defineProperty(this, "getSnapshot", function (paths) {
67
+ return function () {
68
+ return _this.get(paths);
69
+ };
70
+ });
71
+ defineProperty._defineProperty(this, "getServerSnapshot", function (paths) {
72
+ return function () {
73
+ return _this.get(paths);
74
+ };
75
+ });
76
+ defineProperty._defineProperty(this, "get", function (paths) {
77
+ var subscriberId = createSubscriberId(paths);
78
+ if (_this.snapshots.has(subscriberId)) {
79
+ return _this.snapshots.get(subscriberId);
80
+ }
81
+ // Build the snapshot from the path-keyed loadedSources so data that arrived
82
+ // before this subscriber registered is still returned. Cache it for a
83
+ // reference-stable result (required by useSyncExternalStore).
84
+ var record;
85
+ var _iterator = createForOfIteratorHelper._createForOfIteratorHelper(paths),
86
+ _step;
87
+ try {
88
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
89
+ var p = _step.value;
90
+ // Json never holds `undefined`, so a defined value means the path loaded.
91
+ var loaded = _this.loadedSources.get(p);
92
+ if (loaded !== undefined) {
93
+ if (!record) {
94
+ record = {};
95
+ }
96
+ record[p] = loaded;
97
+ }
98
+ }
99
+ } catch (err) {
100
+ _iterator.e(err);
101
+ } finally {
102
+ _iterator.f();
103
+ }
104
+ _this.snapshots.set(subscriberId, record);
105
+ return record;
106
+ });
107
+ defineProperty._defineProperty(this, "hasAllLoaded", function (paths) {
108
+ var _iterator2 = createForOfIteratorHelper._createForOfIteratorHelper(paths),
109
+ _step2;
110
+ try {
111
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
112
+ var p = _step2.value;
113
+ if (!_this.loadedSources.has(p)) {
114
+ return false;
115
+ }
116
+ }
117
+ } catch (err) {
118
+ _iterator2.e(err);
119
+ } finally {
120
+ _iterator2.f();
121
+ }
122
+ return true;
123
+ });
124
+ /**
125
+ * Returns a cached promise that resolves once `update()` has populated
126
+ * every path in `paths`. The same promise instance is returned for the
127
+ * same paths until it resolves — required so `React.use` / classic
128
+ * Suspense doesn't re-suspend on every render.
129
+ *
130
+ * If the data never arrives (network failure, a path that is never
131
+ * `update()`'d, a typo in a module path) the promise would otherwise hang
132
+ * forever and keep the Suspense boundary in its fallback. To avoid a silent
133
+ * hang it resolves anyway after `LOAD_TIMEOUT_MS`, logging an error so the
134
+ * failure is diagnosable while the page still renders with partial data.
135
+ */
136
+ defineProperty._defineProperty(this, "waitForLoad", function (paths) {
137
+ if (_this.hasAllLoaded(paths)) {
138
+ return Promise.resolve();
139
+ }
140
+ var subscriberId = createSubscriberId(paths);
141
+ var existing = _this.loadPromises.get(subscriberId);
142
+ if (existing) {
143
+ return existing;
144
+ }
145
+ var promise = new Promise(function (resolve) {
146
+ var cleanup = function cleanup() {
147
+ clearTimeout(timeout);
148
+ _this.loadListeners["delete"](listener);
149
+ _this.loadPromises["delete"](subscriberId);
150
+ };
151
+ var listener = function listener() {
152
+ if (_this.hasAllLoaded(paths)) {
153
+ cleanup();
154
+ resolve();
155
+ }
156
+ };
157
+ var timeout = setTimeout(function () {
158
+ var missing = paths.filter(function (p) {
159
+ return !_this.loadedSources.has(p);
160
+ });
161
+ console.error("Val: draft module(s) did not load within ".concat(LOAD_TIMEOUT_MS, "ms; rendering with partial data. Missing: ").concat(missing.join(", ")));
162
+ cleanup();
163
+ resolve();
164
+ }, LOAD_TIMEOUT_MS);
165
+ // Don't let the pending timer keep a Node process (e.g. the test runner
166
+ // or SSR) alive; setTimeout returns a number in the browser, where there
167
+ // is nothing to unref.
168
+ if (typeof timeout !== "number") {
169
+ timeout.unref();
170
+ }
171
+ _this.loadListeners.add(listener);
172
+ });
173
+ _this.loadPromises.set(subscriberId, promise);
174
+ return promise;
175
+ });
176
+ this.listeners = new Map();
177
+ this.loadPromises = new Map();
178
+ this.loadedSources = new Map();
179
+ this.snapshots = new Map();
180
+ this.loadListeners = new Set();
181
+ }
182
+ return _createClass(ValExternalStore, [{
183
+ key: "update",
184
+ value: function update(path, source) {
185
+ this.loadedSources.set(path, source);
186
+ // Invalidate cached snapshots that include this path so the next get()
187
+ // rebuilds a fresh (new-reference) record, then notify their listeners.
188
+ for (var _i = 0, _Array$from = Array.from(this.snapshots.keys()); _i < _Array$from.length; _i++) {
189
+ var subscriberId = _Array$from[_i];
190
+ if (subscriberId.includes(path)) {
191
+ // TODO: hash paths instead
192
+ this.snapshots["delete"](subscriberId);
193
+ }
194
+ }
195
+ var _iterator3 = createForOfIteratorHelper._createForOfIteratorHelper(this.listeners.keys()),
196
+ _step3;
197
+ try {
198
+ for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
199
+ var _subscriberId = _step3.value;
200
+ if (_subscriberId.includes(path)) {
201
+ this.emitChange(_subscriberId);
202
+ }
203
+ }
204
+ } catch (err) {
205
+ _iterator3.e(err);
206
+ } finally {
207
+ _iterator3.f();
208
+ }
209
+ for (var _i2 = 0, _Array$from2 = Array.from(this.loadListeners); _i2 < _Array$from2.length; _i2++) {
210
+ var listener = _Array$from2[_i2];
211
+ listener();
212
+ }
213
+ }
214
+ }, {
215
+ key: "emitChange",
216
+ value: function emitChange(subscriberId) {
217
+ var _this$listeners$get;
218
+ var _iterator4 = createForOfIteratorHelper._createForOfIteratorHelper((_this$listeners$get = this.listeners.get(subscriberId)) !== null && _this$listeners$get !== void 0 ? _this$listeners$get : []),
219
+ _step4;
220
+ try {
221
+ for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
222
+ var listener = _step4.value;
223
+ listener();
224
+ }
225
+ } catch (err) {
226
+ _iterator4.e(err);
227
+ } finally {
228
+ _iterator4.f();
229
+ }
230
+ }
231
+ }]);
232
+ }();
233
+ function createSubscriberId(paths) {
234
+ return paths.slice().sort().join("&");
235
+ }
236
+ var ValOverlayContext = /*#__PURE__*/React__default["default"].createContext({
237
+ store: undefined,
238
+ draftMode: false,
239
+ suspend: false
240
+ });
241
+ function ValOverlayProvider(_ref) {
242
+ var store = _ref.store,
243
+ draftMode = _ref.draftMode,
244
+ suspend = _ref.suspend,
245
+ children = _ref.children;
246
+ return /*#__PURE__*/jsxRuntime.jsx(ValOverlayContext.Provider, {
247
+ value: {
248
+ store: store,
249
+ draftMode: draftMode,
250
+ suspend: suspend
251
+ },
252
+ children: children
253
+ });
254
+ }
255
+ var useValOverlayContext = function useValOverlayContext() {
256
+ return React__default["default"].useContext(ValOverlayContext);
257
+ };
258
+
259
+ exports.ValExternalStore = ValExternalStore;
260
+ exports.ValOverlayContext = ValOverlayContext;
261
+ exports.ValOverlayProvider = ValOverlayProvider;
262
+ exports.useValOverlayContext = useValOverlayContext;
@@ -2,4 +2,5 @@ export declare const ValProvider: (props: {
2
2
  children: React.ReactNode | React.ReactNode[];
3
3
  config: import("@valbuild/core").ValConfig;
4
4
  disableRefresh?: boolean;
5
+ suspend?: boolean;
5
6
  }) => import("react/jsx-runtime").JSX.Element;
@@ -3,7 +3,31 @@ import { raw } from "@valbuild/react/stega";
3
3
  import { getUnpatchedUnencodedVal } from "./getUnpatchedUnencodedVal.js";
4
4
  import { decodeValPathsOfString } from "./decodeValPathsOfString.js";
5
5
  import { attrs } from "@valbuild/react/stega";
6
+ /**
7
+ * Returns true if the Val Enable cookie is set. Must be called in a
8
+ * Server Component, Server Action, or Route Handler — it reads from
9
+ * `next/headers` and returns false in any other context.
10
+ *
11
+ * ⚠️ Reading cookies opts the route into **dynamic rendering**: calling this
12
+ * in a layout or page disables static generation and the full route cache for
13
+ * every route it covers, for all visitors. It is NOT needed for the
14
+ * `suspend` prop on ValProvider (which detects the cookie client-side) —
15
+ * reserve it for advanced server-side conditionals.
16
+ */
17
+ declare function isValEnabled(): Promise<boolean>;
6
18
  export declare const initVal: (config?: ValConfig) => InitVal & {
19
+ /**
20
+ * Returns true if the Val Enable cookie is set. Must be called in a
21
+ * Server Component, Server Action, or Route Handler — it reads from
22
+ * `next/headers` and returns false in any other context.
23
+ *
24
+ * ⚠️ Reading cookies opts the route into **dynamic rendering**: calling
25
+ * this in a layout or page disables static generation and the full route
26
+ * cache for every route it covers, for all visitors. It is NOT needed for
27
+ * the `suspend` prop on ValProvider (which detects the cookie client-side)
28
+ * — reserve it for advanced server-side conditionals.
29
+ */
30
+ isValEnabled: typeof isValEnabled;
7
31
  val: ValConstructor & {
8
32
  /**
9
33
  * Returns the original module data, without any applied patches or stega encoding.
@@ -51,3 +75,4 @@ export declare const initVal: (config?: ValConfig) => InitVal & {
51
75
  nextAppRouter: ValRouter;
52
76
  externalPageRouter: ValRouter;
53
77
  };
78
+ export {};
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ function _toPrimitive(t, r) {
4
+ if ("object" != typeof t || !t) return t;
5
+ var e = t[Symbol.toPrimitive];
6
+ if (void 0 !== e) {
7
+ var i = e.call(t, r || "default");
8
+ if ("object" != typeof i) return i;
9
+ throw new TypeError("@@toPrimitive must return a primitive value.");
10
+ }
11
+ return ("string" === r ? String : Number)(t);
12
+ }
13
+
14
+ function _toPropertyKey(t) {
15
+ var i = _toPrimitive(t, "string");
16
+ return "symbol" == typeof i ? i : i + "";
17
+ }
18
+
19
+ function _defineProperty(e, r, t) {
20
+ return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
21
+ value: t,
22
+ enumerable: !0,
23
+ configurable: !0,
24
+ writable: !0
25
+ }) : e[r] = t, e;
26
+ }
27
+
28
+ exports._defineProperty = _defineProperty;
29
+ exports._toPropertyKey = _toPropertyKey;
@@ -0,0 +1,26 @@
1
+ function _toPrimitive(t, r) {
2
+ if ("object" != typeof t || !t) return t;
3
+ var e = t[Symbol.toPrimitive];
4
+ if (void 0 !== e) {
5
+ var i = e.call(t, r || "default");
6
+ if ("object" != typeof i) return i;
7
+ throw new TypeError("@@toPrimitive must return a primitive value.");
8
+ }
9
+ return ("string" === r ? String : Number)(t);
10
+ }
11
+
12
+ function _toPropertyKey(t) {
13
+ var i = _toPrimitive(t, "string");
14
+ return "symbol" == typeof i ? i : i + "";
15
+ }
16
+
17
+ function _defineProperty(e, r, t) {
18
+ return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
19
+ value: t,
20
+ enumerable: !0,
21
+ configurable: !0,
22
+ writable: !0
23
+ }) : e[r] = t, e;
24
+ }
25
+
26
+ export { _defineProperty as _, _toPropertyKey as a };
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ function _toPrimitive(t, r) {
4
+ if ("object" != typeof t || !t) return t;
5
+ var e = t[Symbol.toPrimitive];
6
+ if (void 0 !== e) {
7
+ var i = e.call(t, r || "default");
8
+ if ("object" != typeof i) return i;
9
+ throw new TypeError("@@toPrimitive must return a primitive value.");
10
+ }
11
+ return ("string" === r ? String : Number)(t);
12
+ }
13
+
14
+ function _toPropertyKey(t) {
15
+ var i = _toPrimitive(t, "string");
16
+ return "symbol" == typeof i ? i : i + "";
17
+ }
18
+
19
+ function _defineProperty(e, r, t) {
20
+ return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, {
21
+ value: t,
22
+ enumerable: !0,
23
+ configurable: !0,
24
+ writable: !0
25
+ }) : e[r] = t, e;
26
+ }
27
+
28
+ exports._defineProperty = _defineProperty;
29
+ exports._toPropertyKey = _toPropertyKey;