@pmelab/gtd 64.1.0 → 64.1.2
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/.claude-plugin/plugin.json +1 -1
- package/README.md +9 -7
- package/dist/chunks/{flows-B7ZRCe-B.mjs → flows-dnIE_qbe.mjs} +7 -13
- package/dist/chunks/{rolldown-runtime-D7D4PA-g.mjs → rolldown-runtime-D8jQpDG7.mjs} +1 -2
- package/dist/chunks/{steering-Cem5i6Xl.mjs → steering-CQzL-lX1.mjs} +124 -187
- package/dist/chunks/{testkit-DfWZQCWQ.mjs → testkit-D539mnDI.mjs} +353 -496
- package/dist/chunks/{wire-CPNSm_9N.mjs → wire-CaPJ9Tme.mjs} +12 -24
- package/dist/flows.mjs +1 -2
- package/dist/gtd.bundle.mjs +878 -1767
- package/dist/gtd.core.mjs +190 -182
- package/dist/steering.mjs +1 -2
- package/dist/testkit/gherkin.mjs +3 -5
- package/dist/testkit.mjs +2 -2
- package/dist/web/main.css +1 -1
- package/dist/web/main.js +359 -401
- package/dist/wire.mjs +1 -2
- package/dist/workflow-kit.mjs +6 -10
- package/package.json +19 -32
- package/src/edge/Edge.test.ts +1 -1
- package/src/edge/Edge.ts +1 -1
- package/src/emit/GitScript.test.ts +1 -1
- package/src/flows/runtime.test.ts +1 -1
- package/src/replay/Replay.test.ts +21 -7
- package/src/steering/Blocks.test.ts +3 -1
- package/src/steering/Blocks.ts +14 -6
- package/src/steering/SteeringFormat.ts +5 -0
- package/src/steering/qa.test.ts +3 -3
- package/src/steering/qa.ts +1 -1
- package/src/steering/review.test.ts +26 -1
- package/src/step/LandStep.ts +1 -1
- package/src/twins/GitTiers.ts +1 -1
- package/src/wire/BeatPlain.ts +3 -3
- package/src/wire/Select.ts +1 -1
package/dist/web/main.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
1
|
+
// \0rolldown/runtime.js
|
|
2
2
|
var __create$3 = Object.create;
|
|
3
3
|
var __defProp$3 = Object.defineProperty;
|
|
4
4
|
var __getOwnPropDesc$3 = Object.getOwnPropertyDescriptor;
|
|
5
5
|
var __getOwnPropNames$3 = Object.getOwnPropertyNames;
|
|
6
6
|
var __getProtoOf$3 = Object.getPrototypeOf;
|
|
7
7
|
var __hasOwnProp$3 = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
|
|
8
|
+
var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod, mod.exports), cb = null), mod.exports);
|
|
9
9
|
var __exportAll = (all, no_symbols) => {
|
|
10
10
|
let target = {};
|
|
11
11
|
for (var name in all) __defProp$3(target, name, {
|
|
@@ -25,12 +25,11 @@ var __copyProps$3 = (to, from, except, desc) => {
|
|
|
25
25
|
}
|
|
26
26
|
return to;
|
|
27
27
|
};
|
|
28
|
-
var __toESM$3 = (mod, isNodeMode, target) => (target = mod != null ? __create$3(__getProtoOf$3(mod)) : {}, __copyProps$3(isNodeMode || !mod || !mod.__esModule ? __defProp$3(target, "default", {
|
|
28
|
+
var __toESM$3 = (mod, isNodeMode, target) => (target = mod != null ? __create$3(__getProtoOf$3(mod)) : {}, __copyProps$3(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp$3.call(mod, "default") ? __defProp$3(target, "default", {
|
|
29
29
|
value: mod,
|
|
30
30
|
enumerable: true
|
|
31
31
|
}) : target, mod));
|
|
32
|
-
|
|
33
|
-
//#region node_modules/react/cjs/react.production.js
|
|
32
|
+
// node_modules/react/cjs/react.production.js
|
|
34
33
|
/**
|
|
35
34
|
* @license React
|
|
36
35
|
* react.production.js
|
|
@@ -405,13 +404,11 @@ var require_react_production = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
405
404
|
};
|
|
406
405
|
exports.version = "19.2.8";
|
|
407
406
|
}));
|
|
408
|
-
|
|
409
|
-
//#region node_modules/react/index.js
|
|
407
|
+
// node_modules/react/index.js
|
|
410
408
|
var require_react = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
411
409
|
module.exports = require_react_production();
|
|
412
410
|
}));
|
|
413
|
-
|
|
414
|
-
//#region node_modules/react/cjs/react-jsx-runtime.production.js
|
|
411
|
+
// node_modules/react/cjs/react-jsx-runtime.production.js
|
|
415
412
|
/**
|
|
416
413
|
* @license React
|
|
417
414
|
* react-jsx-runtime.production.js
|
|
@@ -445,13 +442,11 @@ var require_react_jsx_runtime_production = /* @__PURE__ */ __commonJSMin(((expor
|
|
|
445
442
|
exports.jsx = jsxProd;
|
|
446
443
|
exports.jsxs = jsxProd;
|
|
447
444
|
}));
|
|
448
|
-
|
|
449
|
-
//#region node_modules/react/jsx-runtime.js
|
|
445
|
+
// node_modules/react/jsx-runtime.js
|
|
450
446
|
var require_jsx_runtime = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
451
447
|
module.exports = require_react_jsx_runtime_production();
|
|
452
448
|
}));
|
|
453
|
-
|
|
454
|
-
//#region node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js
|
|
449
|
+
// node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js
|
|
455
450
|
var import_react = /* @__PURE__ */ __toESM$3(require_react(), 1);
|
|
456
451
|
var import_jsx_runtime = require_jsx_runtime();
|
|
457
452
|
const QueryClientContext = import_react.createContext(void 0);
|
|
@@ -473,8 +468,7 @@ const QueryClientProvider = ({ client, children }) => {
|
|
|
473
468
|
children
|
|
474
469
|
});
|
|
475
470
|
};
|
|
476
|
-
|
|
477
|
-
//#region node_modules/@tanstack/query-core/build/modern/timeoutManager.js
|
|
471
|
+
// node_modules/@tanstack/query-core/build/modern/timeoutManager.js
|
|
478
472
|
const defaultTimeoutProvider = {
|
|
479
473
|
setTimeout: (callback, delay) => setTimeout(callback, delay),
|
|
480
474
|
clearTimeout: (timeoutId) => clearTimeout(timeoutId),
|
|
@@ -522,8 +516,7 @@ const timeoutManager = new TimeoutManager();
|
|
|
522
516
|
function systemSetTimeoutZero(callback) {
|
|
523
517
|
setTimeout(callback, 0);
|
|
524
518
|
}
|
|
525
|
-
|
|
526
|
-
//#region node_modules/@tanstack/query-core/build/modern/utils.js
|
|
519
|
+
// node_modules/@tanstack/query-core/build/modern/utils.js
|
|
527
520
|
/** @deprecated
|
|
528
521
|
* use `environmentManager.isServer()` instead.
|
|
529
522
|
*/
|
|
@@ -695,15 +688,13 @@ function addConsumeAwareSignal(object, getSignal, onCancelled) {
|
|
|
695
688
|
});
|
|
696
689
|
return object;
|
|
697
690
|
}
|
|
698
|
-
|
|
699
|
-
//#region node_modules/@tanstack/query-core/build/modern/environmentManager.js
|
|
691
|
+
// node_modules/@tanstack/query-core/build/modern/environmentManager.js
|
|
700
692
|
let isServerFn = () => isServer$1;
|
|
701
693
|
/**
|
|
702
694
|
* Returns whether the current runtime should be treated as a server environment.
|
|
703
695
|
*/
|
|
704
696
|
const isServer = () => isServerFn();
|
|
705
|
-
|
|
706
|
-
//#region node_modules/@tanstack/query-core/build/modern/subscribable.js
|
|
697
|
+
// node_modules/@tanstack/query-core/build/modern/subscribable.js
|
|
707
698
|
var Subscribable = class {
|
|
708
699
|
constructor() {
|
|
709
700
|
this.listeners = /* @__PURE__ */ new Set();
|
|
@@ -723,8 +714,7 @@ var Subscribable = class {
|
|
|
723
714
|
onSubscribe() {}
|
|
724
715
|
onUnsubscribe() {}
|
|
725
716
|
};
|
|
726
|
-
|
|
727
|
-
//#region node_modules/@tanstack/query-core/build/modern/focusManager.js
|
|
717
|
+
// node_modules/@tanstack/query-core/build/modern/focusManager.js
|
|
728
718
|
var FocusManager = class extends Subscribable {
|
|
729
719
|
#focused;
|
|
730
720
|
#cleanup;
|
|
@@ -776,8 +766,7 @@ var FocusManager = class extends Subscribable {
|
|
|
776
766
|
}
|
|
777
767
|
};
|
|
778
768
|
const focusManager = new FocusManager();
|
|
779
|
-
|
|
780
|
-
//#region node_modules/@tanstack/query-core/build/modern/notifyManager.js
|
|
769
|
+
// node_modules/@tanstack/query-core/build/modern/notifyManager.js
|
|
781
770
|
const defaultScheduler = systemSetTimeoutZero;
|
|
782
771
|
function createNotifyManager() {
|
|
783
772
|
let queue = [];
|
|
@@ -849,8 +838,7 @@ function createNotifyManager() {
|
|
|
849
838
|
};
|
|
850
839
|
}
|
|
851
840
|
const notifyManager = createNotifyManager();
|
|
852
|
-
|
|
853
|
-
//#region node_modules/@tanstack/query-core/build/modern/onlineManager.js
|
|
841
|
+
// node_modules/@tanstack/query-core/build/modern/onlineManager.js
|
|
854
842
|
var OnlineManager = class extends Subscribable {
|
|
855
843
|
#online = true;
|
|
856
844
|
#cleanup;
|
|
@@ -897,8 +885,7 @@ var OnlineManager = class extends Subscribable {
|
|
|
897
885
|
}
|
|
898
886
|
};
|
|
899
887
|
const onlineManager = new OnlineManager();
|
|
900
|
-
|
|
901
|
-
//#region node_modules/@tanstack/query-core/build/modern/retryer.js
|
|
888
|
+
// node_modules/@tanstack/query-core/build/modern/retryer.js
|
|
902
889
|
function defaultRetryDelay(failureCount) {
|
|
903
890
|
return Math.min(1e3 * 2 ** failureCount, 3e4);
|
|
904
891
|
}
|
|
@@ -1012,8 +999,7 @@ function createRetryer(config) {
|
|
|
1012
999
|
}
|
|
1013
1000
|
};
|
|
1014
1001
|
}
|
|
1015
|
-
|
|
1016
|
-
//#region node_modules/@tanstack/query-core/build/modern/removable.js
|
|
1002
|
+
// node_modules/@tanstack/query-core/build/modern/removable.js
|
|
1017
1003
|
var Removable = class {
|
|
1018
1004
|
#gcTimeout;
|
|
1019
1005
|
destroy() {
|
|
@@ -1035,8 +1021,7 @@ var Removable = class {
|
|
|
1035
1021
|
}
|
|
1036
1022
|
}
|
|
1037
1023
|
};
|
|
1038
|
-
|
|
1039
|
-
//#region node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js
|
|
1024
|
+
// node_modules/@tanstack/query-core/build/modern/infiniteQueryBehavior.js
|
|
1040
1025
|
function infiniteQueryBehavior(pages) {
|
|
1041
1026
|
return { onFetch: (context, query) => {
|
|
1042
1027
|
const options = context.options;
|
|
@@ -1128,8 +1113,7 @@ function hasPreviousPage(options, data) {
|
|
|
1128
1113
|
if (!data || !options.getPreviousPageParam) return false;
|
|
1129
1114
|
return getPreviousPageParam(options, data) != null;
|
|
1130
1115
|
}
|
|
1131
|
-
|
|
1132
|
-
//#region node_modules/@tanstack/query-core/build/modern/query.js
|
|
1116
|
+
// node_modules/@tanstack/query-core/build/modern/query.js
|
|
1133
1117
|
var Query = class extends Removable {
|
|
1134
1118
|
#queryType;
|
|
1135
1119
|
#initialState;
|
|
@@ -1260,8 +1244,10 @@ var Query = class extends Removable {
|
|
|
1260
1244
|
if (index !== -1) {
|
|
1261
1245
|
this.observers.splice(index, 1);
|
|
1262
1246
|
if (!this.observers.length) {
|
|
1263
|
-
if (this.#retryer)
|
|
1264
|
-
|
|
1247
|
+
if (this.#retryer) {
|
|
1248
|
+
if (this.#abortSignalConsumed || this.state.fetchStatus === "paused" && this.state.status === "pending") this.#retryer.cancel({ revert: true });
|
|
1249
|
+
else this.#retryer.cancelRetry();
|
|
1250
|
+
}
|
|
1265
1251
|
this.scheduleGc();
|
|
1266
1252
|
}
|
|
1267
1253
|
this.#cache.notify({
|
|
@@ -1499,8 +1485,7 @@ function getDefaultState$1(options) {
|
|
|
1499
1485
|
fetchStatus: "idle"
|
|
1500
1486
|
};
|
|
1501
1487
|
}
|
|
1502
|
-
|
|
1503
|
-
//#region node_modules/@tanstack/query-core/build/modern/queryObserver.js
|
|
1488
|
+
// node_modules/@tanstack/query-core/build/modern/queryObserver.js
|
|
1504
1489
|
var QueryObserver = class extends Subscribable {
|
|
1505
1490
|
#client;
|
|
1506
1491
|
#currentQuery = void 0;
|
|
@@ -1710,17 +1695,18 @@ var QueryObserver = class extends Subscribable {
|
|
|
1710
1695
|
isPlaceholderData = true;
|
|
1711
1696
|
}
|
|
1712
1697
|
}
|
|
1713
|
-
if (options.select && data !== void 0 && !skipSelect)
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
|
|
1717
|
-
|
|
1718
|
-
|
|
1719
|
-
|
|
1720
|
-
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1698
|
+
if (options.select && data !== void 0 && !skipSelect) {
|
|
1699
|
+
if (prevResult && data === prevResultState?.data && options.select === this.#selectFn) data = this.#selectResult;
|
|
1700
|
+
else try {
|
|
1701
|
+
this.#selectFn = options.select;
|
|
1702
|
+
data = options.select(data);
|
|
1703
|
+
data = replaceData(prevResult?.data, data, options);
|
|
1704
|
+
this.#selectResult = data;
|
|
1705
|
+
this.#selectError = null;
|
|
1706
|
+
} catch (selectError) {
|
|
1707
|
+
this.#selectError = selectError;
|
|
1708
|
+
}
|
|
1709
|
+
} else if (data === void 0) this.#selectError = null;
|
|
1724
1710
|
if (this.#selectError) {
|
|
1725
1711
|
error = this.#selectError;
|
|
1726
1712
|
data = this.#selectResult;
|
|
@@ -1827,8 +1813,7 @@ function shouldFetchOptionally(query, prevQuery, options, prevOptions) {
|
|
|
1827
1813
|
function isStale(query, options) {
|
|
1828
1814
|
return resolveQueryValue(options.enabled, query) !== false && query.isStaleByTime(resolveQueryValue(options.staleTime, query));
|
|
1829
1815
|
}
|
|
1830
|
-
|
|
1831
|
-
//#region node_modules/@tanstack/query-core/build/modern/infiniteQueryObserver.js
|
|
1816
|
+
// node_modules/@tanstack/query-core/build/modern/infiniteQueryObserver.js
|
|
1832
1817
|
var InfiniteQueryObserver = class extends QueryObserver {
|
|
1833
1818
|
constructor(client, options) {
|
|
1834
1819
|
super(client, options);
|
|
@@ -1882,8 +1867,7 @@ var InfiniteQueryObserver = class extends QueryObserver {
|
|
|
1882
1867
|
};
|
|
1883
1868
|
}
|
|
1884
1869
|
};
|
|
1885
|
-
|
|
1886
|
-
//#region node_modules/@tanstack/query-core/build/modern/mutation.js
|
|
1870
|
+
// node_modules/@tanstack/query-core/build/modern/mutation.js
|
|
1887
1871
|
var Mutation = class extends Removable {
|
|
1888
1872
|
#client;
|
|
1889
1873
|
#observers;
|
|
@@ -1927,8 +1911,10 @@ var Mutation = class extends Removable {
|
|
|
1927
1911
|
});
|
|
1928
1912
|
}
|
|
1929
1913
|
optionalRemove() {
|
|
1930
|
-
if (!this.#observers.length)
|
|
1931
|
-
|
|
1914
|
+
if (!this.#observers.length) {
|
|
1915
|
+
if (this.state.status === "pending") this.scheduleGc();
|
|
1916
|
+
else this.#mutationCache.remove(this);
|
|
1917
|
+
}
|
|
1932
1918
|
}
|
|
1933
1919
|
continue() {
|
|
1934
1920
|
return this.#retryer?.continue() ?? (this.state.status === "pending" ? this.execute(this.state.variables) : Promise.resolve());
|
|
@@ -2097,8 +2083,7 @@ function getDefaultState() {
|
|
|
2097
2083
|
submittedAt: 0
|
|
2098
2084
|
};
|
|
2099
2085
|
}
|
|
2100
|
-
|
|
2101
|
-
//#region node_modules/@tanstack/query-core/build/modern/mutationCache.js
|
|
2086
|
+
// node_modules/@tanstack/query-core/build/modern/mutationCache.js
|
|
2102
2087
|
var MutationCache = class extends Subscribable {
|
|
2103
2088
|
#mutations;
|
|
2104
2089
|
#scopes;
|
|
@@ -2204,8 +2189,7 @@ var MutationCache = class extends Subscribable {
|
|
|
2204
2189
|
function scopeFor(mutation) {
|
|
2205
2190
|
return mutation.options.scope?.id;
|
|
2206
2191
|
}
|
|
2207
|
-
|
|
2208
|
-
//#region node_modules/@tanstack/query-core/build/modern/mutationObserver.js
|
|
2192
|
+
// node_modules/@tanstack/query-core/build/modern/mutationObserver.js
|
|
2209
2193
|
var MutationObserver = class extends Subscribable {
|
|
2210
2194
|
#client;
|
|
2211
2195
|
#currentResult = void 0;
|
|
@@ -2314,8 +2298,7 @@ var MutationObserver = class extends Subscribable {
|
|
|
2314
2298
|
});
|
|
2315
2299
|
}
|
|
2316
2300
|
};
|
|
2317
|
-
|
|
2318
|
-
//#region node_modules/@tanstack/query-core/build/modern/queriesObserver.js
|
|
2301
|
+
// node_modules/@tanstack/query-core/build/modern/queriesObserver.js
|
|
2319
2302
|
function difference(array1, array2) {
|
|
2320
2303
|
const excludeSet = new Set(array2);
|
|
2321
2304
|
return array1.filter((x) => !excludeSet.has(x));
|
|
@@ -2489,8 +2472,7 @@ var QueriesObserver = class extends Subscribable {
|
|
|
2489
2472
|
}
|
|
2490
2473
|
}
|
|
2491
2474
|
};
|
|
2492
|
-
|
|
2493
|
-
//#region node_modules/@tanstack/query-core/build/modern/queryCache.js
|
|
2475
|
+
// node_modules/@tanstack/query-core/build/modern/queryCache.js
|
|
2494
2476
|
var QueryCache = class extends Subscribable {
|
|
2495
2477
|
#queries;
|
|
2496
2478
|
constructor(config = {}) {
|
|
@@ -2581,8 +2563,7 @@ var QueryCache = class extends Subscribable {
|
|
|
2581
2563
|
});
|
|
2582
2564
|
}
|
|
2583
2565
|
};
|
|
2584
|
-
|
|
2585
|
-
//#region node_modules/@tanstack/query-core/build/modern/queryClient.js
|
|
2566
|
+
// node_modules/@tanstack/query-core/build/modern/queryClient.js
|
|
2586
2567
|
var QueryClient = class {
|
|
2587
2568
|
#queryCache;
|
|
2588
2569
|
#mutationCache;
|
|
@@ -2855,13 +2836,11 @@ var QueryClient = class {
|
|
|
2855
2836
|
this.#mutationCache.clear();
|
|
2856
2837
|
}
|
|
2857
2838
|
};
|
|
2858
|
-
|
|
2859
|
-
//#region node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js
|
|
2839
|
+
// node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js
|
|
2860
2840
|
const IsRestoringContext = import_react.createContext(false);
|
|
2861
2841
|
const useIsRestoring = () => import_react.useContext(IsRestoringContext);
|
|
2862
2842
|
IsRestoringContext.Provider;
|
|
2863
|
-
|
|
2864
|
-
//#region node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js
|
|
2843
|
+
// node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js
|
|
2865
2844
|
function createValue() {
|
|
2866
2845
|
let isReset = false;
|
|
2867
2846
|
return {
|
|
@@ -2878,8 +2857,7 @@ function createValue() {
|
|
|
2878
2857
|
}
|
|
2879
2858
|
const QueryErrorResetBoundaryContext = import_react.createContext(createValue());
|
|
2880
2859
|
const useQueryErrorResetBoundary = () => import_react.useContext(QueryErrorResetBoundaryContext);
|
|
2881
|
-
|
|
2882
|
-
//#region node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js
|
|
2860
|
+
// node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js
|
|
2883
2861
|
const ensurePreventErrorBoundaryRetry = (options, errorResetBoundary, query) => {
|
|
2884
2862
|
const throwOnError = query?.state.error && typeof options.throwOnError === "function" ? shouldThrowError(options.throwOnError, [query.state.error, query]) : options.throwOnError;
|
|
2885
2863
|
if (options.suspense || throwOnError) {
|
|
@@ -2894,8 +2872,7 @@ const useClearResetErrorBoundary = (errorResetBoundary) => {
|
|
|
2894
2872
|
const getHasError = ({ result, errorResetBoundary, throwOnError, query, suspense }) => {
|
|
2895
2873
|
return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && (suspense && result.data === void 0 || shouldThrowError(throwOnError, [result.error, query]));
|
|
2896
2874
|
};
|
|
2897
|
-
|
|
2898
|
-
//#region node_modules/@tanstack/react-query/build/modern/suspense.js
|
|
2875
|
+
// node_modules/@tanstack/react-query/build/modern/suspense.js
|
|
2899
2876
|
const defaultThrowOnError = (_error, query) => query.state.data === void 0;
|
|
2900
2877
|
const ensureSuspenseTimers = (defaultedOptions) => {
|
|
2901
2878
|
if (defaultedOptions.suspense) {
|
|
@@ -2910,8 +2887,7 @@ const shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense &
|
|
|
2910
2887
|
const fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {
|
|
2911
2888
|
errorResetBoundary.clearReset();
|
|
2912
2889
|
});
|
|
2913
|
-
|
|
2914
|
-
//#region node_modules/@tanstack/react-query/build/modern/useQueries.js
|
|
2890
|
+
// node_modules/@tanstack/react-query/build/modern/useQueries.js
|
|
2915
2891
|
function useQueries({ queries, ...options }, queryClient) {
|
|
2916
2892
|
const client = useQueryClient(queryClient);
|
|
2917
2893
|
const isRestoring = useIsRestoring();
|
|
@@ -2946,7 +2922,10 @@ function useQueries({ queries, ...options }, queryClient) {
|
|
|
2946
2922
|
]);
|
|
2947
2923
|
const suspensePromises = optimisticResult.some((result, index) => shouldSuspend(defaultedQueries[index], result)) ? optimisticResult.flatMap((result, index) => {
|
|
2948
2924
|
const opts = defaultedQueries[index];
|
|
2949
|
-
if (opts && shouldSuspend(opts, result))
|
|
2925
|
+
if (opts && shouldSuspend(opts, result)) {
|
|
2926
|
+
const queryObserver = new QueryObserver(client, opts);
|
|
2927
|
+
return fetchOptimistic(opts, queryObserver, errorResetBoundary);
|
|
2928
|
+
}
|
|
2950
2929
|
return [];
|
|
2951
2930
|
}) : [];
|
|
2952
2931
|
if (suspensePromises.length > 0) throw Promise.all(suspensePromises);
|
|
@@ -2963,8 +2942,7 @@ function useQueries({ queries, ...options }, queryClient) {
|
|
|
2963
2942
|
if (firstSingleResultWhichShouldThrow) throw firstSingleResultWhichShouldThrow.error;
|
|
2964
2943
|
return getCombinedResult(trackResult());
|
|
2965
2944
|
}
|
|
2966
|
-
|
|
2967
|
-
//#region node_modules/@tanstack/react-query/build/modern/useBaseQuery.js
|
|
2945
|
+
// node_modules/@tanstack/react-query/build/modern/useBaseQuery.js
|
|
2968
2946
|
function useBaseQuery(options, Observer, queryClient) {
|
|
2969
2947
|
const isRestoring = useIsRestoring();
|
|
2970
2948
|
const errorResetBoundary = useQueryErrorResetBoundary();
|
|
@@ -2997,13 +2975,11 @@ function useBaseQuery(options, Observer, queryClient) {
|
|
|
2997
2975
|
})) throw result.error;
|
|
2998
2976
|
return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;
|
|
2999
2977
|
}
|
|
3000
|
-
|
|
3001
|
-
//#region node_modules/@tanstack/react-query/build/modern/useQuery.js
|
|
2978
|
+
// node_modules/@tanstack/react-query/build/modern/useQuery.js
|
|
3002
2979
|
function useQuery(options, queryClient) {
|
|
3003
2980
|
return useBaseQuery(options, QueryObserver, queryClient);
|
|
3004
2981
|
}
|
|
3005
|
-
|
|
3006
|
-
//#region node_modules/@tanstack/react-query/build/modern/useSuspenseQuery.js
|
|
2982
|
+
// node_modules/@tanstack/react-query/build/modern/useSuspenseQuery.js
|
|
3007
2983
|
function useSuspenseQuery(options, queryClient) {
|
|
3008
2984
|
return useBaseQuery({
|
|
3009
2985
|
...options,
|
|
@@ -3013,8 +2989,7 @@ function useSuspenseQuery(options, queryClient) {
|
|
|
3013
2989
|
placeholderData: void 0
|
|
3014
2990
|
}, QueryObserver, queryClient);
|
|
3015
2991
|
}
|
|
3016
|
-
|
|
3017
|
-
//#region node_modules/@tanstack/react-query/build/modern/useSuspenseInfiniteQuery.js
|
|
2992
|
+
// node_modules/@tanstack/react-query/build/modern/useSuspenseInfiniteQuery.js
|
|
3018
2993
|
function useSuspenseInfiniteQuery(options, queryClient) {
|
|
3019
2994
|
return useBaseQuery({
|
|
3020
2995
|
...options,
|
|
@@ -3024,8 +2999,7 @@ function useSuspenseInfiniteQuery(options, queryClient) {
|
|
|
3024
2999
|
placeholderData: void 0
|
|
3025
3000
|
}, InfiniteQueryObserver, queryClient);
|
|
3026
3001
|
}
|
|
3027
|
-
|
|
3028
|
-
//#region node_modules/@tanstack/react-query/build/modern/useSuspenseQueries.js
|
|
3002
|
+
// node_modules/@tanstack/react-query/build/modern/useSuspenseQueries.js
|
|
3029
3003
|
function useSuspenseQueries(options, queryClient) {
|
|
3030
3004
|
return useQueries({
|
|
3031
3005
|
...options,
|
|
@@ -3040,30 +3014,25 @@ function useSuspenseQueries(options, queryClient) {
|
|
|
3040
3014
|
})
|
|
3041
3015
|
}, queryClient);
|
|
3042
3016
|
}
|
|
3043
|
-
|
|
3044
|
-
//#region node_modules/@tanstack/react-query/build/modern/usePrefetchQuery.js
|
|
3017
|
+
// node_modules/@tanstack/react-query/build/modern/usePrefetchQuery.js
|
|
3045
3018
|
function usePrefetchQuery(options, queryClient) {
|
|
3046
3019
|
const client = useQueryClient(queryClient);
|
|
3047
3020
|
if (!client.getQueryState(options.queryKey)) client.query(options).catch(noop$1);
|
|
3048
3021
|
}
|
|
3049
|
-
|
|
3050
|
-
//#region node_modules/@tanstack/react-query/build/modern/usePrefetchInfiniteQuery.js
|
|
3022
|
+
// node_modules/@tanstack/react-query/build/modern/usePrefetchInfiniteQuery.js
|
|
3051
3023
|
function usePrefetchInfiniteQuery(options, queryClient) {
|
|
3052
3024
|
const client = useQueryClient(queryClient);
|
|
3053
3025
|
if (!client.getQueryState(options.queryKey)) client.infiniteQuery(options).catch(noop$1);
|
|
3054
3026
|
}
|
|
3055
|
-
|
|
3056
|
-
//#region node_modules/@tanstack/react-query/build/modern/queryOptions.js
|
|
3027
|
+
// node_modules/@tanstack/react-query/build/modern/queryOptions.js
|
|
3057
3028
|
function queryOptions(options) {
|
|
3058
3029
|
return options;
|
|
3059
3030
|
}
|
|
3060
|
-
|
|
3061
|
-
//#region node_modules/@tanstack/react-query/build/modern/infiniteQueryOptions.js
|
|
3031
|
+
// node_modules/@tanstack/react-query/build/modern/infiniteQueryOptions.js
|
|
3062
3032
|
function infiniteQueryOptions(options) {
|
|
3063
3033
|
return options;
|
|
3064
3034
|
}
|
|
3065
|
-
|
|
3066
|
-
//#region node_modules/@tanstack/react-query/build/modern/useMutation.js
|
|
3035
|
+
// node_modules/@tanstack/react-query/build/modern/useMutation.js
|
|
3067
3036
|
function useMutation(options, queryClient) {
|
|
3068
3037
|
const client = useQueryClient(queryClient);
|
|
3069
3038
|
const [observer] = import_react.useState(() => new MutationObserver(client, options));
|
|
@@ -3081,13 +3050,11 @@ function useMutation(options, queryClient) {
|
|
|
3081
3050
|
mutateAsync: result.mutate
|
|
3082
3051
|
};
|
|
3083
3052
|
}
|
|
3084
|
-
|
|
3085
|
-
//#region node_modules/@tanstack/react-query/build/modern/useInfiniteQuery.js
|
|
3053
|
+
// node_modules/@tanstack/react-query/build/modern/useInfiniteQuery.js
|
|
3086
3054
|
function useInfiniteQuery(options, queryClient) {
|
|
3087
3055
|
return useBaseQuery(options, InfiniteQueryObserver, queryClient);
|
|
3088
3056
|
}
|
|
3089
|
-
|
|
3090
|
-
//#region node_modules/@trpc/client/dist/objectSpread2-BvkFp-_Y.mjs
|
|
3057
|
+
// node_modules/@trpc/client/dist/objectSpread2-BvkFp-_Y.mjs
|
|
3091
3058
|
var __create$2 = Object.create;
|
|
3092
3059
|
var __defProp$2 = Object.defineProperty;
|
|
3093
3060
|
var __getOwnPropDesc$2 = Object.getOwnPropertyDescriptor;
|
|
@@ -3182,8 +3149,7 @@ var require_objectSpread2$2 = __commonJS$2({ "../../node_modules/.pnpm/@oxc-proj
|
|
|
3182
3149
|
}
|
|
3183
3150
|
module.exports = _objectSpread2, module.exports.__esModule = true, module.exports["default"] = module.exports;
|
|
3184
3151
|
} });
|
|
3185
|
-
|
|
3186
|
-
//#region node_modules/@trpc/server/dist/observable-UMO3vUa_.mjs
|
|
3152
|
+
// node_modules/@trpc/server/dist/observable-UMO3vUa_.mjs
|
|
3187
3153
|
/** @public */
|
|
3188
3154
|
function observable(subscribe) {
|
|
3189
3155
|
const self = {
|
|
@@ -3264,8 +3230,7 @@ function observableToPromise(observable$1) {
|
|
|
3264
3230
|
});
|
|
3265
3231
|
});
|
|
3266
3232
|
}
|
|
3267
|
-
|
|
3268
|
-
//#region node_modules/@trpc/server/dist/observable-CUiPknO-.mjs
|
|
3233
|
+
// node_modules/@trpc/server/dist/observable-CUiPknO-.mjs
|
|
3269
3234
|
function share(_opts) {
|
|
3270
3235
|
return (source) => {
|
|
3271
3236
|
let refCount = 0;
|
|
@@ -3343,8 +3308,7 @@ function behaviorSubject(initialValue) {
|
|
|
3343
3308
|
obs.get = () => value;
|
|
3344
3309
|
return obs;
|
|
3345
3310
|
}
|
|
3346
|
-
|
|
3347
|
-
//#region node_modules/@trpc/client/dist/splitLink-B7Cuf2c_.mjs
|
|
3311
|
+
// node_modules/@trpc/client/dist/splitLink-B7Cuf2c_.mjs
|
|
3348
3312
|
/** @internal */
|
|
3349
3313
|
function createChain(opts) {
|
|
3350
3314
|
return observable((observer) => {
|
|
@@ -3361,8 +3325,7 @@ function createChain(opts) {
|
|
|
3361
3325
|
return execute().subscribe(observer);
|
|
3362
3326
|
});
|
|
3363
3327
|
}
|
|
3364
|
-
|
|
3365
|
-
//#region node_modules/@trpc/server/dist/codes-DagpWZLc.mjs
|
|
3328
|
+
// node_modules/@trpc/server/dist/codes-DagpWZLc.mjs
|
|
3366
3329
|
/**
|
|
3367
3330
|
* Check that value is object
|
|
3368
3331
|
* @internal
|
|
@@ -3411,8 +3374,7 @@ const TRPC_ERROR_CODES_BY_KEY = {
|
|
|
3411
3374
|
CLIENT_CLOSED_REQUEST: -32099
|
|
3412
3375
|
};
|
|
3413
3376
|
TRPC_ERROR_CODES_BY_KEY.BAD_GATEWAY, TRPC_ERROR_CODES_BY_KEY.SERVICE_UNAVAILABLE, TRPC_ERROR_CODES_BY_KEY.GATEWAY_TIMEOUT, TRPC_ERROR_CODES_BY_KEY.INTERNAL_SERVER_ERROR;
|
|
3414
|
-
|
|
3415
|
-
//#region node_modules/@trpc/server/dist/getErrorShape-BPSzUA7W.mjs
|
|
3377
|
+
// node_modules/@trpc/server/dist/getErrorShape-BPSzUA7W.mjs
|
|
3416
3378
|
var __create$1 = Object.create;
|
|
3417
3379
|
var __defProp$1 = Object.defineProperty;
|
|
3418
3380
|
var __getOwnPropDesc$1 = Object.getOwnPropertyDescriptor;
|
|
@@ -3599,8 +3561,7 @@ function transformResult(response, transformer) {
|
|
|
3599
3561
|
return result;
|
|
3600
3562
|
}
|
|
3601
3563
|
__toESM$1(require_objectSpread2$1(), 1);
|
|
3602
|
-
|
|
3603
|
-
//#region node_modules/@trpc/client/dist/TRPCClientError-apv8gw59.mjs
|
|
3564
|
+
// node_modules/@trpc/client/dist/TRPCClientError-apv8gw59.mjs
|
|
3604
3565
|
var import_defineProperty$5 = __toESM$2(require_defineProperty$2(), 1);
|
|
3605
3566
|
var import_objectSpread2$11 = __toESM$2(require_objectSpread2$2(), 1);
|
|
3606
3567
|
function isTRPCClientError(cause) {
|
|
@@ -3643,8 +3604,7 @@ var TRPCClientError = class TRPCClientError extends Error {
|
|
|
3643
3604
|
return new TRPCClientError(getMessageFromUnknownError(cause, "Unknown error"), (0, import_objectSpread2$11.default)((0, import_objectSpread2$11.default)({}, opts), {}, { cause }));
|
|
3644
3605
|
}
|
|
3645
3606
|
};
|
|
3646
|
-
|
|
3647
|
-
//#region node_modules/@trpc/client/dist/unstable-internals-Bg7n9BBj.mjs
|
|
3607
|
+
// node_modules/@trpc/client/dist/unstable-internals-Bg7n9BBj.mjs
|
|
3648
3608
|
/**
|
|
3649
3609
|
* @internal
|
|
3650
3610
|
*/
|
|
@@ -3669,8 +3629,7 @@ function getTransformer(transformer) {
|
|
|
3669
3629
|
output: _transformer
|
|
3670
3630
|
};
|
|
3671
3631
|
}
|
|
3672
|
-
|
|
3673
|
-
//#region node_modules/@trpc/client/dist/httpUtils-BNq9QC3d.mjs
|
|
3632
|
+
// node_modules/@trpc/client/dist/httpUtils-BNq9QC3d.mjs
|
|
3674
3633
|
const isFunction = (fn) => typeof fn === "function";
|
|
3675
3634
|
function getFetch(customFetchImpl) {
|
|
3676
3635
|
if (customFetchImpl) return customFetchImpl;
|
|
@@ -3689,7 +3648,10 @@ function resolveHTTPLinkOptions(opts) {
|
|
|
3689
3648
|
}
|
|
3690
3649
|
function arrayToDict(array) {
|
|
3691
3650
|
const dict = {};
|
|
3692
|
-
for (let index = 0; index < array.length; index++)
|
|
3651
|
+
for (let index = 0; index < array.length; index++) {
|
|
3652
|
+
const element = array[index];
|
|
3653
|
+
dict[index] = element;
|
|
3654
|
+
}
|
|
3693
3655
|
return dict;
|
|
3694
3656
|
}
|
|
3695
3657
|
const METHOD = {
|
|
@@ -3779,8 +3741,7 @@ async function httpRequest(opts) {
|
|
|
3779
3741
|
};
|
|
3780
3742
|
}
|
|
3781
3743
|
__toESM$2(require_objectSpread2$2(), 1);
|
|
3782
|
-
|
|
3783
|
-
//#region node_modules/@trpc/client/dist/httpBatchLink-CaWjh1oW.mjs
|
|
3744
|
+
// node_modules/@trpc/client/dist/httpBatchLink-CaWjh1oW.mjs
|
|
3784
3745
|
/**
|
|
3785
3746
|
* A function that should never be called unless we messed something up.
|
|
3786
3747
|
*/
|
|
@@ -3981,8 +3942,7 @@ function httpBatchLink(opts) {
|
|
|
3981
3942
|
};
|
|
3982
3943
|
}
|
|
3983
3944
|
__toESM$2(require_objectSpread2$2(), 1);
|
|
3984
|
-
|
|
3985
|
-
//#region node_modules/@trpc/client/dist/wsLink-DSf4KOdW.mjs
|
|
3945
|
+
// node_modules/@trpc/client/dist/wsLink-DSf4KOdW.mjs
|
|
3986
3946
|
/**
|
|
3987
3947
|
* Get the result of a value or function that returns a value
|
|
3988
3948
|
* It also optionally accepts typesafe arguments for the function
|
|
@@ -4156,8 +4116,7 @@ var WsConnection = class WsConnection {
|
|
|
4156
4116
|
(0, import_defineProperty$1.default)(WsConnection, "connectCount", 0);
|
|
4157
4117
|
__toESM$2(require_defineProperty$2(), 1);
|
|
4158
4118
|
__toESM$2(require_objectSpread2$2(), 1);
|
|
4159
|
-
|
|
4160
|
-
//#region node_modules/@trpc/client/dist/index.mjs
|
|
4119
|
+
// node_modules/@trpc/client/dist/index.mjs
|
|
4161
4120
|
var import_defineProperty = __toESM$2(require_defineProperty$2(), 1);
|
|
4162
4121
|
var import_objectSpread2$4$1 = __toESM$2(require_objectSpread2$2(), 1);
|
|
4163
4122
|
var TRPCUntypedClient = class {
|
|
@@ -4231,7 +4190,6 @@ var TRPCUntypedClient = class {
|
|
|
4231
4190
|
case void 0:
|
|
4232
4191
|
var _opts$onData;
|
|
4233
4192
|
(_opts$onData = opts.onData) === null || _opts$onData === void 0 || _opts$onData.call(opts, envelope.result.data);
|
|
4234
|
-
break;
|
|
4235
4193
|
}
|
|
4236
4194
|
},
|
|
4237
4195
|
error(err) {
|
|
@@ -4469,8 +4427,7 @@ __toESM$2(require_usingCtx(), 1);
|
|
|
4469
4427
|
__toESM$2(require_awaitAsyncGenerator(), 1);
|
|
4470
4428
|
__toESM$2(require_wrapAsyncGenerator(), 1);
|
|
4471
4429
|
__toESM$2(require_objectSpread2$2(), 1);
|
|
4472
|
-
|
|
4473
|
-
//#region node_modules/scheduler/cjs/scheduler.production.js
|
|
4430
|
+
// node_modules/scheduler/cjs/scheduler.production.js
|
|
4474
4431
|
/**
|
|
4475
4432
|
* @license React
|
|
4476
4433
|
* scheduler.production.js
|
|
@@ -4724,13 +4681,11 @@ var require_scheduler_production = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
4724
4681
|
};
|
|
4725
4682
|
};
|
|
4726
4683
|
}));
|
|
4727
|
-
|
|
4728
|
-
//#region node_modules/scheduler/index.js
|
|
4684
|
+
// node_modules/scheduler/index.js
|
|
4729
4685
|
var require_scheduler = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
4730
4686
|
module.exports = require_scheduler_production();
|
|
4731
4687
|
}));
|
|
4732
|
-
|
|
4733
|
-
//#region node_modules/react-dom/cjs/react-dom.production.js
|
|
4688
|
+
// node_modules/react-dom/cjs/react-dom.production.js
|
|
4734
4689
|
/**
|
|
4735
4690
|
* @license React
|
|
4736
4691
|
* react-dom.production.js
|
|
@@ -4871,8 +4826,7 @@ var require_react_dom_production = /* @__PURE__ */ __commonJSMin(((exports) => {
|
|
|
4871
4826
|
};
|
|
4872
4827
|
exports.version = "19.2.8";
|
|
4873
4828
|
}));
|
|
4874
|
-
|
|
4875
|
-
//#region node_modules/react-dom/index.js
|
|
4829
|
+
// node_modules/react-dom/index.js
|
|
4876
4830
|
var require_react_dom = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
4877
4831
|
function checkDCE() {
|
|
4878
4832
|
if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== "function") return;
|
|
@@ -4885,8 +4839,7 @@ var require_react_dom = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
4885
4839
|
checkDCE();
|
|
4886
4840
|
module.exports = require_react_dom_production();
|
|
4887
4841
|
}));
|
|
4888
|
-
|
|
4889
|
-
//#region node_modules/react-dom/cjs/react-dom-client.production.js
|
|
4842
|
+
// node_modules/react-dom/cjs/react-dom-client.production.js
|
|
4890
4843
|
/**
|
|
4891
4844
|
* @license React
|
|
4892
4845
|
* react-dom-client.production.js
|
|
@@ -14168,8 +14121,7 @@ var require_react_dom_client_production = /* @__PURE__ */ __commonJSMin(((export
|
|
|
14168
14121
|
return new ReactDOMRoot(options);
|
|
14169
14122
|
};
|
|
14170
14123
|
}));
|
|
14171
|
-
|
|
14172
|
-
//#region node_modules/@trpc/react-query/dist/getQueryKey-BY58RNzP.mjs
|
|
14124
|
+
// node_modules/@trpc/react-query/dist/getQueryKey-BY58RNzP.mjs
|
|
14173
14125
|
var import_client = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
14174
14126
|
function checkDCE() {
|
|
14175
14127
|
if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== "function") return;
|
|
@@ -14324,8 +14276,7 @@ function getQueryKeyInternal(path, input, type) {
|
|
|
14324
14276
|
function getMutationKeyInternal(path) {
|
|
14325
14277
|
return getQueryKeyInternal(path, void 0, "any");
|
|
14326
14278
|
}
|
|
14327
|
-
|
|
14328
|
-
//#region node_modules/@trpc/react-query/dist/shared-JtnEvJvB.mjs
|
|
14279
|
+
// node_modules/@trpc/react-query/dist/shared-JtnEvJvB.mjs
|
|
14329
14280
|
/**
|
|
14330
14281
|
* Create proxy for decorating procedures
|
|
14331
14282
|
* @internal
|
|
@@ -15030,8 +14981,7 @@ function createRootHooks(config) {
|
|
|
15030
14981
|
useSuspenseInfiniteQuery: useSuspenseInfiniteQuery$1
|
|
15031
14982
|
};
|
|
15032
14983
|
}
|
|
15033
|
-
|
|
15034
|
-
//#region node_modules/@trpc/react-query/dist/index.mjs
|
|
14984
|
+
// node_modules/@trpc/react-query/dist/index.mjs
|
|
15035
14985
|
/**
|
|
15036
14986
|
* @internal
|
|
15037
14987
|
*/
|
|
@@ -15051,8 +15001,7 @@ function createHooksInternal(trpc) {
|
|
|
15051
15001
|
function createTRPCReact(opts) {
|
|
15052
15002
|
return createHooksInternal(createRootHooks(opts));
|
|
15053
15003
|
}
|
|
15054
|
-
|
|
15055
|
-
//#region src/web/api.ts
|
|
15004
|
+
// src/web/api.ts
|
|
15056
15005
|
/**
|
|
15057
15006
|
* Typed against `AppRouter` only — no hand-written duplicate of a procedure's
|
|
15058
15007
|
* input/output shape lives here. A later task calls `trpc.someProcedure.useQuery()`
|
|
@@ -15098,8 +15047,7 @@ const readRefusalFrom = (error) => {
|
|
|
15098
15047
|
if (typeof reason !== "string") return void 0;
|
|
15099
15048
|
return { reason };
|
|
15100
15049
|
};
|
|
15101
|
-
|
|
15102
|
-
//#region node_modules/tailwind-merge/dist/bundle-mjs.mjs
|
|
15050
|
+
// node_modules/tailwind-merge/dist/bundle-mjs.mjs
|
|
15103
15051
|
/**
|
|
15104
15052
|
* Concatenates two arrays faster than the array spread operator.
|
|
15105
15053
|
*/
|
|
@@ -18594,8 +18542,7 @@ const mergeArrayProperties = (baseObject, mergeObject, key) => {
|
|
|
18594
18542
|
if (mergeValue !== void 0) baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;
|
|
18595
18543
|
};
|
|
18596
18544
|
const extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === "function" ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);
|
|
18597
|
-
|
|
18598
|
-
//#region src/web/cn.ts
|
|
18545
|
+
// src/web/cn.ts
|
|
18599
18546
|
/**
|
|
18600
18547
|
* Class merge for every component that takes a `className` override.
|
|
18601
18548
|
* Without it a call site's `text-muted`/`text-small` silently LOSES to a
|
|
@@ -18636,8 +18583,7 @@ const cn = extendTailwindMerge({ extend: { classGroups: {
|
|
|
18636
18583
|
"syntax-com"
|
|
18637
18584
|
] }]
|
|
18638
18585
|
} } });
|
|
18639
|
-
|
|
18640
|
-
//#region src/web/Notice.tsx
|
|
18586
|
+
// src/web/Notice.tsx
|
|
18641
18587
|
/**
|
|
18642
18588
|
* One designed block for every text-only state (package 02 Task 7) — the
|
|
18643
18589
|
* five `App.tsx` states and its read-error branch route through this rather
|
|
@@ -18656,8 +18602,7 @@ const Notice = ({ tone = "info", className, children, ...props }) => /* @__PURE_
|
|
|
18656
18602
|
...props,
|
|
18657
18603
|
children
|
|
18658
18604
|
});
|
|
18659
|
-
|
|
18660
|
-
//#region node_modules/mdast-util-to-string/lib/index.js
|
|
18605
|
+
// node_modules/mdast-util-to-string/lib/index.js
|
|
18661
18606
|
/**
|
|
18662
18607
|
* @typedef {import('mdast').Nodes} Nodes
|
|
18663
18608
|
*
|
|
@@ -18738,8 +18683,7 @@ function all(values, includeImageAlt, includeHtml) {
|
|
|
18738
18683
|
function node(value) {
|
|
18739
18684
|
return Boolean(value && typeof value === "object");
|
|
18740
18685
|
}
|
|
18741
|
-
|
|
18742
|
-
//#region node_modules/decode-named-character-reference/index.dom.js
|
|
18686
|
+
// node_modules/decode-named-character-reference/index.dom.js
|
|
18743
18687
|
const element = document.createElement("i");
|
|
18744
18688
|
/**
|
|
18745
18689
|
* @param {string} value
|
|
@@ -18752,8 +18696,7 @@ function decodeNamedCharacterReference(value) {
|
|
|
18752
18696
|
if (character.charCodeAt(character.length - 1) === 59 && value !== "semi") return false;
|
|
18753
18697
|
return character === characterReference ? false : character;
|
|
18754
18698
|
}
|
|
18755
|
-
|
|
18756
|
-
//#region node_modules/micromark-util-chunked/index.js
|
|
18699
|
+
// node_modules/micromark-util-chunked/index.js
|
|
18757
18700
|
/**
|
|
18758
18701
|
* Like `Array#splice`, but smarter for giant arrays.
|
|
18759
18702
|
*
|
|
@@ -18822,8 +18765,7 @@ function push(list, items) {
|
|
|
18822
18765
|
}
|
|
18823
18766
|
return items;
|
|
18824
18767
|
}
|
|
18825
|
-
|
|
18826
|
-
//#region node_modules/micromark-util-combine-extensions/index.js
|
|
18768
|
+
// node_modules/micromark-util-combine-extensions/index.js
|
|
18827
18769
|
/**
|
|
18828
18770
|
* @import {
|
|
18829
18771
|
* Extension,
|
|
@@ -18893,8 +18835,7 @@ function constructs(existing, list) {
|
|
|
18893
18835
|
while (++index < list.length) (list[index].add === "after" ? existing : before).push(list[index]);
|
|
18894
18836
|
splice(existing, 0, 0, before);
|
|
18895
18837
|
}
|
|
18896
|
-
|
|
18897
|
-
//#region node_modules/micromark-util-decode-numeric-character-reference/index.js
|
|
18838
|
+
// node_modules/micromark-util-decode-numeric-character-reference/index.js
|
|
18898
18839
|
/**
|
|
18899
18840
|
* Turn the number (in string form as either hexa- or plain decimal) coming from
|
|
18900
18841
|
* a numeric character reference into a character.
|
|
@@ -18914,8 +18855,7 @@ function decodeNumericCharacterReference(value, base) {
|
|
|
18914
18855
|
if (code < 9 || code === 11 || code > 13 && code < 32 || code > 126 && code < 160 || code > 55295 && code < 57344 || code > 64975 && code < 65008 || (code & 65535) === 65535 || (code & 65535) === 65534 || code > 1114111) return "�";
|
|
18915
18856
|
return String.fromCodePoint(code);
|
|
18916
18857
|
}
|
|
18917
|
-
|
|
18918
|
-
//#region node_modules/micromark-util-normalize-identifier/index.js
|
|
18858
|
+
// node_modules/micromark-util-normalize-identifier/index.js
|
|
18919
18859
|
/**
|
|
18920
18860
|
* Normalize an identifier (as found in references, definitions).
|
|
18921
18861
|
*
|
|
@@ -18938,8 +18878,7 @@ function decodeNumericCharacterReference(value, base) {
|
|
|
18938
18878
|
function normalizeIdentifier(value) {
|
|
18939
18879
|
return value.replace(/[\t\n\r ]+/g, " ").replace(/^ | $/g, "").toLowerCase().toUpperCase();
|
|
18940
18880
|
}
|
|
18941
|
-
|
|
18942
|
-
//#region node_modules/micromark-util-character/index.js
|
|
18881
|
+
// node_modules/micromark-util-character/index.js
|
|
18943
18882
|
/**
|
|
18944
18883
|
* @import {Code} from 'micromark-util-types'
|
|
18945
18884
|
*/
|
|
@@ -19166,8 +19105,7 @@ function regexCheck(regex) {
|
|
|
19166
19105
|
return code !== null && code > -1 && regex.test(String.fromCharCode(code));
|
|
19167
19106
|
}
|
|
19168
19107
|
}
|
|
19169
|
-
|
|
19170
|
-
//#region node_modules/micromark-factory-space/index.js
|
|
19108
|
+
// node_modules/micromark-factory-space/index.js
|
|
19171
19109
|
/**
|
|
19172
19110
|
* @import {Effects, State, TokenType} from 'micromark-util-types'
|
|
19173
19111
|
*/
|
|
@@ -19225,8 +19163,7 @@ function factorySpace(effects, ok, type, max) {
|
|
|
19225
19163
|
return ok(code);
|
|
19226
19164
|
}
|
|
19227
19165
|
}
|
|
19228
|
-
|
|
19229
|
-
//#region node_modules/micromark/lib/initialize/content.js
|
|
19166
|
+
// node_modules/micromark/lib/initialize/content.js
|
|
19230
19167
|
/**
|
|
19231
19168
|
* @import {
|
|
19232
19169
|
* InitialConstruct,
|
|
@@ -19292,8 +19229,7 @@ function initializeContent(effects) {
|
|
|
19292
19229
|
return data;
|
|
19293
19230
|
}
|
|
19294
19231
|
}
|
|
19295
|
-
|
|
19296
|
-
//#region node_modules/micromark/lib/initialize/document.js
|
|
19232
|
+
// node_modules/micromark/lib/initialize/document.js
|
|
19297
19233
|
/**
|
|
19298
19234
|
* @import {
|
|
19299
19235
|
* Construct,
|
|
@@ -19508,8 +19444,7 @@ function initializeDocument(effects) {
|
|
|
19508
19444
|
function tokenizeContainer(effects, ok, nok) {
|
|
19509
19445
|
return factorySpace(effects, effects.attempt(this.parser.constructs.document, ok, nok), "linePrefix", this.parser.constructs.disable.null.includes("codeIndented") ? void 0 : 4);
|
|
19510
19446
|
}
|
|
19511
|
-
|
|
19512
|
-
//#region node_modules/micromark-util-classify-character/index.js
|
|
19447
|
+
// node_modules/micromark-util-classify-character/index.js
|
|
19513
19448
|
/**
|
|
19514
19449
|
* @import {Code} from 'micromark-util-types'
|
|
19515
19450
|
*/
|
|
@@ -19531,8 +19466,7 @@ function classifyCharacter(code) {
|
|
|
19531
19466
|
if (code === null || markdownLineEndingOrSpace(code) || unicodeWhitespace(code)) return 1;
|
|
19532
19467
|
if (unicodePunctuation(code)) return 2;
|
|
19533
19468
|
}
|
|
19534
|
-
|
|
19535
|
-
//#region node_modules/micromark-util-resolve-all/index.js
|
|
19469
|
+
// node_modules/micromark-util-resolve-all/index.js
|
|
19536
19470
|
/**
|
|
19537
19471
|
* @import {Event, Resolver, TokenizeContext} from 'micromark-util-types'
|
|
19538
19472
|
*/
|
|
@@ -19561,8 +19495,7 @@ function resolveAll(constructs, events, context) {
|
|
|
19561
19495
|
}
|
|
19562
19496
|
return events;
|
|
19563
19497
|
}
|
|
19564
|
-
|
|
19565
|
-
//#region node_modules/micromark-core-commonmark/lib/attention.js
|
|
19498
|
+
// node_modules/micromark-core-commonmark/lib/attention.js
|
|
19566
19499
|
/**
|
|
19567
19500
|
* @import {
|
|
19568
19501
|
* Code,
|
|
@@ -19781,8 +19714,7 @@ function movePoint(point, offset) {
|
|
|
19781
19714
|
point.offset += offset;
|
|
19782
19715
|
point._bufferIndex += offset;
|
|
19783
19716
|
}
|
|
19784
|
-
|
|
19785
|
-
//#region node_modules/micromark-core-commonmark/lib/autolink.js
|
|
19717
|
+
// node_modules/micromark-core-commonmark/lib/autolink.js
|
|
19786
19718
|
/**
|
|
19787
19719
|
* @import {
|
|
19788
19720
|
* Construct,
|
|
@@ -19992,8 +19924,7 @@ function tokenizeAutolink(effects, ok, nok) {
|
|
|
19992
19924
|
return nok(code);
|
|
19993
19925
|
}
|
|
19994
19926
|
}
|
|
19995
|
-
|
|
19996
|
-
//#region node_modules/micromark-core-commonmark/lib/blank-line.js
|
|
19927
|
+
// node_modules/micromark-core-commonmark/lib/blank-line.js
|
|
19997
19928
|
/**
|
|
19998
19929
|
* @import {
|
|
19999
19930
|
* Construct,
|
|
@@ -20049,8 +19980,7 @@ function tokenizeBlankLine(effects, ok, nok) {
|
|
|
20049
19980
|
return code === null || markdownLineEnding(code) ? ok(code) : nok(code);
|
|
20050
19981
|
}
|
|
20051
19982
|
}
|
|
20052
|
-
|
|
20053
|
-
//#region node_modules/micromark-core-commonmark/lib/block-quote.js
|
|
19983
|
+
// node_modules/micromark-core-commonmark/lib/block-quote.js
|
|
20054
19984
|
/**
|
|
20055
19985
|
* @import {
|
|
20056
19986
|
* Construct,
|
|
@@ -20176,8 +20106,7 @@ function tokenizeBlockQuoteContinuation(effects, ok, nok) {
|
|
|
20176
20106
|
function exit(effects) {
|
|
20177
20107
|
effects.exit("blockQuote");
|
|
20178
20108
|
}
|
|
20179
|
-
|
|
20180
|
-
//#region node_modules/micromark-core-commonmark/lib/character-escape.js
|
|
20109
|
+
// node_modules/micromark-core-commonmark/lib/character-escape.js
|
|
20181
20110
|
/**
|
|
20182
20111
|
* @import {
|
|
20183
20112
|
* Construct,
|
|
@@ -20236,8 +20165,7 @@ function tokenizeCharacterEscape(effects, ok, nok) {
|
|
|
20236
20165
|
return nok(code);
|
|
20237
20166
|
}
|
|
20238
20167
|
}
|
|
20239
|
-
|
|
20240
|
-
//#region node_modules/micromark-core-commonmark/lib/character-reference.js
|
|
20168
|
+
// node_modules/micromark-core-commonmark/lib/character-reference.js
|
|
20241
20169
|
/**
|
|
20242
20170
|
* @import {
|
|
20243
20171
|
* Code,
|
|
@@ -20374,8 +20302,7 @@ function tokenizeCharacterReference(effects, ok, nok) {
|
|
|
20374
20302
|
return nok(code);
|
|
20375
20303
|
}
|
|
20376
20304
|
}
|
|
20377
|
-
|
|
20378
|
-
//#region node_modules/micromark-core-commonmark/lib/code-fenced.js
|
|
20305
|
+
// node_modules/micromark-core-commonmark/lib/code-fenced.js
|
|
20379
20306
|
/**
|
|
20380
20307
|
* @import {
|
|
20381
20308
|
* Code,
|
|
@@ -20789,8 +20716,7 @@ function tokenizeNonLazyContinuation(effects, ok, nok) {
|
|
|
20789
20716
|
return self.parser.lazy[self.now().line] ? nok(code) : ok(code);
|
|
20790
20717
|
}
|
|
20791
20718
|
}
|
|
20792
|
-
|
|
20793
|
-
//#region node_modules/micromark-core-commonmark/lib/code-indented.js
|
|
20719
|
+
// node_modules/micromark-core-commonmark/lib/code-indented.js
|
|
20794
20720
|
/**
|
|
20795
20721
|
* @import {
|
|
20796
20722
|
* Construct,
|
|
@@ -20933,8 +20859,7 @@ function tokenizeFurtherStart(effects, ok, nok) {
|
|
|
20933
20859
|
return tail && tail[1].type === "linePrefix" && tail[2].sliceSerialize(tail[1], true).length >= 4 ? ok(code) : markdownLineEnding(code) ? furtherStart(code) : nok(code);
|
|
20934
20860
|
}
|
|
20935
20861
|
}
|
|
20936
|
-
|
|
20937
|
-
//#region node_modules/micromark-core-commonmark/lib/code-text.js
|
|
20862
|
+
// node_modules/micromark-core-commonmark/lib/code-text.js
|
|
20938
20863
|
/**
|
|
20939
20864
|
* @import {
|
|
20940
20865
|
* Construct,
|
|
@@ -21118,8 +21043,7 @@ function tokenizeCodeText(effects, ok, nok) {
|
|
|
21118
21043
|
return data(code);
|
|
21119
21044
|
}
|
|
21120
21045
|
}
|
|
21121
|
-
|
|
21122
|
-
//#region node_modules/micromark-util-subtokenize/lib/splice-buffer.js
|
|
21046
|
+
// node_modules/micromark-util-subtokenize/lib/splice-buffer.js
|
|
21123
21047
|
/**
|
|
21124
21048
|
* Some of the internal operations of micromark do lots of editing
|
|
21125
21049
|
* operations on very large arrays. This runs into problems with two
|
|
@@ -21348,8 +21272,7 @@ function chunkedPush(list, right) {
|
|
|
21348
21272
|
chunkStart += 1e4;
|
|
21349
21273
|
}
|
|
21350
21274
|
}
|
|
21351
|
-
|
|
21352
|
-
//#region node_modules/micromark-util-subtokenize/index.js
|
|
21275
|
+
// node_modules/micromark-util-subtokenize/index.js
|
|
21353
21276
|
/**
|
|
21354
21277
|
* @import {Chunk, Event, Token} from 'micromark-util-types'
|
|
21355
21278
|
*/
|
|
@@ -21503,8 +21426,7 @@ function subcontent(events, eventIndex) {
|
|
|
21503
21426
|
}
|
|
21504
21427
|
return gaps;
|
|
21505
21428
|
}
|
|
21506
|
-
|
|
21507
|
-
//#region node_modules/micromark-core-commonmark/lib/content.js
|
|
21429
|
+
// node_modules/micromark-core-commonmark/lib/content.js
|
|
21508
21430
|
/**
|
|
21509
21431
|
* @import {
|
|
21510
21432
|
* Construct,
|
|
@@ -21636,8 +21558,7 @@ function tokenizeContinuation(effects, ok, nok) {
|
|
|
21636
21558
|
return effects.interrupt(self.parser.constructs.flow, nok, ok)(code);
|
|
21637
21559
|
}
|
|
21638
21560
|
}
|
|
21639
|
-
|
|
21640
|
-
//#region node_modules/micromark-factory-destination/index.js
|
|
21561
|
+
// node_modules/micromark-factory-destination/index.js
|
|
21641
21562
|
/**
|
|
21642
21563
|
* @import {Effects, State, TokenType} from 'micromark-util-types'
|
|
21643
21564
|
*/
|
|
@@ -21820,8 +21741,7 @@ function factoryDestination(effects, ok, nok, type, literalType, literalMarkerTy
|
|
|
21820
21741
|
return raw(code);
|
|
21821
21742
|
}
|
|
21822
21743
|
}
|
|
21823
|
-
|
|
21824
|
-
//#region node_modules/micromark-factory-label/index.js
|
|
21744
|
+
// node_modules/micromark-factory-label/index.js
|
|
21825
21745
|
/**
|
|
21826
21746
|
* @import {
|
|
21827
21747
|
* Effects,
|
|
@@ -21896,7 +21816,9 @@ function factoryLabel(effects, ok, nok, type, markerType, stringType) {
|
|
|
21896
21816
|
* @type {State}
|
|
21897
21817
|
*/
|
|
21898
21818
|
function atBreak(code) {
|
|
21899
|
-
if (size > 999 || code === null || code === 91 || code === 93 && !seen ||
|
|
21819
|
+
if (size > 999 || code === null || code === 91 || code === 93 && !seen ||
|
|
21820
|
+
/* c8 ignore next 3 */
|
|
21821
|
+
code === 94 && !size && "_hiddenFootnoteSupport" in self.parser.constructs) return nok(code);
|
|
21900
21822
|
if (code === 93) {
|
|
21901
21823
|
effects.exit(stringType);
|
|
21902
21824
|
effects.enter(markerType);
|
|
@@ -21952,8 +21874,7 @@ function factoryLabel(effects, ok, nok, type, markerType, stringType) {
|
|
|
21952
21874
|
return labelInside(code);
|
|
21953
21875
|
}
|
|
21954
21876
|
}
|
|
21955
|
-
|
|
21956
|
-
//#region node_modules/micromark-factory-title/index.js
|
|
21877
|
+
// node_modules/micromark-factory-title/index.js
|
|
21957
21878
|
/**
|
|
21958
21879
|
* @import {
|
|
21959
21880
|
* Code,
|
|
@@ -22097,8 +22018,7 @@ function factoryTitle(effects, ok, nok, type, markerType, stringType) {
|
|
|
22097
22018
|
return inside(code);
|
|
22098
22019
|
}
|
|
22099
22020
|
}
|
|
22100
|
-
|
|
22101
|
-
//#region node_modules/micromark-factory-whitespace/index.js
|
|
22021
|
+
// node_modules/micromark-factory-whitespace/index.js
|
|
22102
22022
|
/**
|
|
22103
22023
|
* @import {Effects, State} from 'micromark-util-types'
|
|
22104
22024
|
*/
|
|
@@ -22137,8 +22057,7 @@ function factoryWhitespace(effects, ok) {
|
|
|
22137
22057
|
return ok(code);
|
|
22138
22058
|
}
|
|
22139
22059
|
}
|
|
22140
|
-
|
|
22141
|
-
//#region node_modules/micromark-core-commonmark/lib/definition.js
|
|
22060
|
+
// node_modules/micromark-core-commonmark/lib/definition.js
|
|
22142
22061
|
/**
|
|
22143
22062
|
* @import {
|
|
22144
22063
|
* Construct,
|
|
@@ -22352,8 +22271,7 @@ function tokenizeTitleBefore(effects, ok, nok) {
|
|
|
22352
22271
|
return code === null || markdownLineEnding(code) ? ok(code) : nok(code);
|
|
22353
22272
|
}
|
|
22354
22273
|
}
|
|
22355
|
-
|
|
22356
|
-
//#region node_modules/micromark-core-commonmark/lib/hard-break-escape.js
|
|
22274
|
+
// node_modules/micromark-core-commonmark/lib/hard-break-escape.js
|
|
22357
22275
|
/**
|
|
22358
22276
|
* @import {
|
|
22359
22277
|
* Construct,
|
|
@@ -22409,8 +22327,7 @@ function tokenizeHardBreakEscape(effects, ok, nok) {
|
|
|
22409
22327
|
return nok(code);
|
|
22410
22328
|
}
|
|
22411
22329
|
}
|
|
22412
|
-
|
|
22413
|
-
//#region node_modules/micromark-core-commonmark/lib/heading-atx.js
|
|
22330
|
+
// node_modules/micromark-core-commonmark/lib/heading-atx.js
|
|
22414
22331
|
/**
|
|
22415
22332
|
* @import {
|
|
22416
22333
|
* Construct,
|
|
@@ -22594,8 +22511,7 @@ function tokenizeHeadingAtx(effects, ok, nok) {
|
|
|
22594
22511
|
return data;
|
|
22595
22512
|
}
|
|
22596
22513
|
}
|
|
22597
|
-
|
|
22598
|
-
//#region node_modules/micromark-util-html-tag-name/index.js
|
|
22514
|
+
// node_modules/micromark-util-html-tag-name/index.js
|
|
22599
22515
|
/**
|
|
22600
22516
|
* List of lowercase HTML “block” tag names.
|
|
22601
22517
|
*
|
|
@@ -22693,8 +22609,7 @@ const htmlRawNames = [
|
|
|
22693
22609
|
"style",
|
|
22694
22610
|
"textarea"
|
|
22695
22611
|
];
|
|
22696
|
-
|
|
22697
|
-
//#region node_modules/micromark-core-commonmark/lib/html-flow.js
|
|
22612
|
+
// node_modules/micromark-core-commonmark/lib/html-flow.js
|
|
22698
22613
|
/**
|
|
22699
22614
|
* @import {
|
|
22700
22615
|
* Code,
|
|
@@ -23466,8 +23381,7 @@ function tokenizeBlankLineBefore(effects, ok, nok) {
|
|
|
23466
23381
|
return effects.attempt(blankLine, ok, nok);
|
|
23467
23382
|
}
|
|
23468
23383
|
}
|
|
23469
|
-
|
|
23470
|
-
//#region node_modules/micromark-core-commonmark/lib/html-text.js
|
|
23384
|
+
// node_modules/micromark-core-commonmark/lib/html-text.js
|
|
23471
23385
|
/**
|
|
23472
23386
|
* @import {
|
|
23473
23387
|
* Code,
|
|
@@ -24080,8 +23994,7 @@ function tokenizeHtmlText(effects, ok, nok) {
|
|
|
24080
23994
|
return returnState(code);
|
|
24081
23995
|
}
|
|
24082
23996
|
}
|
|
24083
|
-
|
|
24084
|
-
//#region node_modules/micromark-core-commonmark/lib/label-end.js
|
|
23997
|
+
// node_modules/micromark-core-commonmark/lib/label-end.js
|
|
24085
23998
|
/**
|
|
24086
23999
|
* @import {
|
|
24087
24000
|
* Construct,
|
|
@@ -24550,8 +24463,7 @@ function tokenizeReferenceCollapsed(effects, ok, nok) {
|
|
|
24550
24463
|
return nok(code);
|
|
24551
24464
|
}
|
|
24552
24465
|
}
|
|
24553
|
-
|
|
24554
|
-
//#region node_modules/micromark-core-commonmark/lib/label-start-image.js
|
|
24466
|
+
// node_modules/micromark-core-commonmark/lib/label-start-image.js
|
|
24555
24467
|
/**
|
|
24556
24468
|
* @import {
|
|
24557
24469
|
* Construct,
|
|
@@ -24643,8 +24555,7 @@ function tokenizeLabelStartImage(effects, ok, nok) {
|
|
|
24643
24555
|
return code === 94 && "_hiddenFootnoteSupport" in self.parser.constructs ? nok(code) : ok(code);
|
|
24644
24556
|
}
|
|
24645
24557
|
}
|
|
24646
|
-
|
|
24647
|
-
//#region node_modules/micromark-core-commonmark/lib/label-start-link.js
|
|
24558
|
+
// node_modules/micromark-core-commonmark/lib/label-start-link.js
|
|
24648
24559
|
/**
|
|
24649
24560
|
* @import {
|
|
24650
24561
|
* Construct,
|
|
@@ -24691,8 +24602,7 @@ function tokenizeLabelStartLink(effects, ok, nok) {
|
|
|
24691
24602
|
return code === 94 && "_hiddenFootnoteSupport" in self.parser.constructs ? nok(code) : ok(code);
|
|
24692
24603
|
}
|
|
24693
24604
|
}
|
|
24694
|
-
|
|
24695
|
-
//#region node_modules/micromark-core-commonmark/lib/line-ending.js
|
|
24605
|
+
// node_modules/micromark-core-commonmark/lib/line-ending.js
|
|
24696
24606
|
/**
|
|
24697
24607
|
* @import {
|
|
24698
24608
|
* Construct,
|
|
@@ -24721,8 +24631,7 @@ function tokenizeLineEnding(effects, ok) {
|
|
|
24721
24631
|
return factorySpace(effects, ok, "linePrefix");
|
|
24722
24632
|
}
|
|
24723
24633
|
}
|
|
24724
|
-
|
|
24725
|
-
//#region node_modules/micromark-core-commonmark/lib/thematic-break.js
|
|
24634
|
+
// node_modules/micromark-core-commonmark/lib/thematic-break.js
|
|
24726
24635
|
/**
|
|
24727
24636
|
* @import {
|
|
24728
24637
|
* Code,
|
|
@@ -24816,8 +24725,7 @@ function tokenizeThematicBreak(effects, ok, nok) {
|
|
|
24816
24725
|
return markdownSpace(code) ? factorySpace(effects, atBreak, "whitespace")(code) : atBreak(code);
|
|
24817
24726
|
}
|
|
24818
24727
|
}
|
|
24819
|
-
|
|
24820
|
-
//#region node_modules/micromark-core-commonmark/lib/list.js
|
|
24728
|
+
// node_modules/micromark-core-commonmark/lib/list.js
|
|
24821
24729
|
/**
|
|
24822
24730
|
* @import {
|
|
24823
24731
|
* Code,
|
|
@@ -24988,8 +24896,7 @@ function tokenizeListItemPrefixWhitespace(effects, ok, nok) {
|
|
|
24988
24896
|
return !markdownSpace(code) && tail && tail[1].type === "listItemPrefixWhitespace" ? ok(code) : nok(code);
|
|
24989
24897
|
}
|
|
24990
24898
|
}
|
|
24991
|
-
|
|
24992
|
-
//#region node_modules/micromark-core-commonmark/lib/setext-underline.js
|
|
24899
|
+
// node_modules/micromark-core-commonmark/lib/setext-underline.js
|
|
24993
24900
|
/**
|
|
24994
24901
|
* @import {
|
|
24995
24902
|
* Code,
|
|
@@ -25140,8 +25047,7 @@ function tokenizeSetextUnderline(effects, ok, nok) {
|
|
|
25140
25047
|
return nok(code);
|
|
25141
25048
|
}
|
|
25142
25049
|
}
|
|
25143
|
-
|
|
25144
|
-
//#region node_modules/micromark/lib/initialize/flow.js
|
|
25050
|
+
// node_modules/micromark/lib/initialize/flow.js
|
|
25145
25051
|
/**
|
|
25146
25052
|
* @import {
|
|
25147
25053
|
* InitialConstruct,
|
|
@@ -25187,8 +25093,7 @@ function initializeFlow(effects) {
|
|
|
25187
25093
|
return initial;
|
|
25188
25094
|
}
|
|
25189
25095
|
}
|
|
25190
|
-
|
|
25191
|
-
//#region node_modules/micromark/lib/initialize/text.js
|
|
25096
|
+
// node_modules/micromark/lib/initialize/text.js
|
|
25192
25097
|
/**
|
|
25193
25098
|
* @import {
|
|
25194
25099
|
* Code,
|
|
@@ -25364,8 +25269,7 @@ function resolveAllLineSuffixes(events, context) {
|
|
|
25364
25269
|
}
|
|
25365
25270
|
return events;
|
|
25366
25271
|
}
|
|
25367
|
-
|
|
25368
|
-
//#region node_modules/micromark/lib/constructs.js
|
|
25272
|
+
// node_modules/micromark/lib/constructs.js
|
|
25369
25273
|
/**
|
|
25370
25274
|
* @import {Extension} from 'micromark-util-types'
|
|
25371
25275
|
*/
|
|
@@ -25442,8 +25346,7 @@ const insideSpan = { null: [attention, resolver] };
|
|
|
25442
25346
|
const attentionMarkers = { null: [42, 95] };
|
|
25443
25347
|
/** @satisfies {Extension['disable']} */
|
|
25444
25348
|
const disable = { null: [] };
|
|
25445
|
-
|
|
25446
|
-
//#region node_modules/micromark/lib/create-tokenizer.js
|
|
25349
|
+
// node_modules/micromark/lib/create-tokenizer.js
|
|
25447
25350
|
/**
|
|
25448
25351
|
* @import {
|
|
25449
25352
|
* Chunk,
|
|
@@ -25911,8 +25814,7 @@ function serializeChunks(chunks, expandTabs) {
|
|
|
25911
25814
|
}
|
|
25912
25815
|
return result.join("");
|
|
25913
25816
|
}
|
|
25914
|
-
|
|
25915
|
-
//#region node_modules/micromark/lib/parse.js
|
|
25817
|
+
// node_modules/micromark/lib/parse.js
|
|
25916
25818
|
/**
|
|
25917
25819
|
* @import {
|
|
25918
25820
|
* Create,
|
|
@@ -25955,8 +25857,7 @@ function parse$1(options) {
|
|
|
25955
25857
|
}
|
|
25956
25858
|
}
|
|
25957
25859
|
}
|
|
25958
|
-
|
|
25959
|
-
//#region node_modules/micromark/lib/postprocess.js
|
|
25860
|
+
// node_modules/micromark/lib/postprocess.js
|
|
25960
25861
|
/**
|
|
25961
25862
|
* @import {Event} from 'micromark-util-types'
|
|
25962
25863
|
*/
|
|
@@ -25970,8 +25871,7 @@ function postprocess(events) {
|
|
|
25970
25871
|
while (!subtokenize(events));
|
|
25971
25872
|
return events;
|
|
25972
25873
|
}
|
|
25973
|
-
|
|
25974
|
-
//#region node_modules/micromark/lib/preprocess.js
|
|
25874
|
+
// node_modules/micromark/lib/preprocess.js
|
|
25975
25875
|
/**
|
|
25976
25876
|
* @import {Chunk, Code, Encoding, Value} from 'micromark-util-types'
|
|
25977
25877
|
*/
|
|
@@ -26071,8 +25971,7 @@ function preprocess() {
|
|
|
26071
25971
|
return chunks;
|
|
26072
25972
|
}
|
|
26073
25973
|
}
|
|
26074
|
-
|
|
26075
|
-
//#region node_modules/micromark-util-decode-string/index.js
|
|
25974
|
+
// node_modules/micromark-util-decode-string/index.js
|
|
26076
25975
|
const characterEscapeOrReference = /\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;
|
|
26077
25976
|
/**
|
|
26078
25977
|
* Decode markdown strings (which occur in places such as fenced code info
|
|
@@ -26108,8 +26007,7 @@ function decode($0, $1, $2) {
|
|
|
26108
26007
|
}
|
|
26109
26008
|
return decodeNamedCharacterReference($2) || $0;
|
|
26110
26009
|
}
|
|
26111
|
-
|
|
26112
|
-
//#region node_modules/unist-util-stringify-position/lib/index.js
|
|
26010
|
+
// node_modules/unist-util-stringify-position/lib/index.js
|
|
26113
26011
|
/**
|
|
26114
26012
|
* @typedef {import('unist').Node} Node
|
|
26115
26013
|
* @typedef {import('unist').Point} Point
|
|
@@ -26172,8 +26070,7 @@ function position(pos) {
|
|
|
26172
26070
|
function index(value) {
|
|
26173
26071
|
return value && typeof value === "number" ? value : 1;
|
|
26174
26072
|
}
|
|
26175
|
-
|
|
26176
|
-
//#region node_modules/mdast-util-from-markdown/lib/index.js
|
|
26073
|
+
// node_modules/mdast-util-from-markdown/lib/index.js
|
|
26177
26074
|
/**
|
|
26178
26075
|
* @import {
|
|
26179
26076
|
* Break,
|
|
@@ -26388,8 +26285,10 @@ function compiler(options) {
|
|
|
26388
26285
|
/** @type {Array<number>} */
|
|
26389
26286
|
const listStack = [];
|
|
26390
26287
|
let index = -1;
|
|
26391
|
-
while (++index < events.length) if (events[index][1].type === "listOrdered" || events[index][1].type === "listUnordered")
|
|
26392
|
-
|
|
26288
|
+
while (++index < events.length) if (events[index][1].type === "listOrdered" || events[index][1].type === "listUnordered") {
|
|
26289
|
+
if (events[index][0] === "enter") listStack.push(index);
|
|
26290
|
+
else index = prepareList(events, listStack.pop(), index);
|
|
26291
|
+
}
|
|
26393
26292
|
index = -1;
|
|
26394
26293
|
while (++index < events.length) {
|
|
26395
26294
|
const handler = config[events[index][0]];
|
|
@@ -26579,8 +26478,10 @@ function compiler(options) {
|
|
|
26579
26478
|
start: token.start,
|
|
26580
26479
|
end: token.end
|
|
26581
26480
|
}) + "): it’s not open");
|
|
26582
|
-
else if (open[0].type !== token.type)
|
|
26583
|
-
|
|
26481
|
+
else if (open[0].type !== token.type) {
|
|
26482
|
+
if (onExitError) onExitError.call(this, token, open[0]);
|
|
26483
|
+
else (open[1] || defaultOnError).call(this, token, open[0]);
|
|
26484
|
+
}
|
|
26584
26485
|
node.position.end = point(token.end);
|
|
26585
26486
|
}
|
|
26586
26487
|
/**
|
|
@@ -27138,8 +27039,7 @@ function defaultOnError(left, right) {
|
|
|
27138
27039
|
end: right.end
|
|
27139
27040
|
}) + ") is still open");
|
|
27140
27041
|
}
|
|
27141
|
-
|
|
27142
|
-
//#region node_modules/ccount/index.js
|
|
27042
|
+
// node_modules/ccount/index.js
|
|
27143
27043
|
/**
|
|
27144
27044
|
* Count how often a character (or substring) is used in a string.
|
|
27145
27045
|
*
|
|
@@ -27161,14 +27061,12 @@ function ccount(value, character) {
|
|
|
27161
27061
|
}
|
|
27162
27062
|
return count;
|
|
27163
27063
|
}
|
|
27164
|
-
|
|
27165
|
-
//#region node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js
|
|
27064
|
+
// node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp/index.js
|
|
27166
27065
|
function escapeStringRegexp(string) {
|
|
27167
27066
|
if (typeof string !== "string") throw new TypeError("Expected a string");
|
|
27168
27067
|
return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&").replace(/-/g, "\\x2d");
|
|
27169
27068
|
}
|
|
27170
|
-
|
|
27171
|
-
//#region node_modules/unist-util-is/lib/index.js
|
|
27069
|
+
// node_modules/unist-util-is/lib/index.js
|
|
27172
27070
|
/**
|
|
27173
27071
|
* Generate an assertion from a test.
|
|
27174
27072
|
*
|
|
@@ -27281,8 +27179,7 @@ function ok() {
|
|
|
27281
27179
|
function looksLikeANode(value) {
|
|
27282
27180
|
return value !== null && typeof value === "object" && "type" in value;
|
|
27283
27181
|
}
|
|
27284
|
-
|
|
27285
|
-
//#region node_modules/unist-util-visit-parents/lib/color.js
|
|
27182
|
+
// node_modules/unist-util-visit-parents/lib/color.js
|
|
27286
27183
|
/**
|
|
27287
27184
|
* @param {string} d
|
|
27288
27185
|
* @returns {string}
|
|
@@ -27290,8 +27187,7 @@ function looksLikeANode(value) {
|
|
|
27290
27187
|
function color(d) {
|
|
27291
27188
|
return d;
|
|
27292
27189
|
}
|
|
27293
|
-
|
|
27294
|
-
//#region node_modules/unist-util-visit-parents/lib/index.js
|
|
27190
|
+
// node_modules/unist-util-visit-parents/lib/index.js
|
|
27295
27191
|
/**
|
|
27296
27192
|
* @import {Node as UnistNode, Parent as UnistParent} from 'unist'
|
|
27297
27193
|
*/
|
|
@@ -27611,8 +27507,7 @@ function toResult(value) {
|
|
|
27611
27507
|
if (typeof value === "number") return [true, value];
|
|
27612
27508
|
return value === null || value === void 0 ? empty : [value];
|
|
27613
27509
|
}
|
|
27614
|
-
|
|
27615
|
-
//#region node_modules/mdast-util-find-and-replace/lib/index.js
|
|
27510
|
+
// node_modules/mdast-util-find-and-replace/lib/index.js
|
|
27616
27511
|
/**
|
|
27617
27512
|
* @import {Nodes, Parents, PhrasingContent, Root, Text} from 'mdast'
|
|
27618
27513
|
* @import {BuildVisitor, Test, VisitorResult} from 'unist-util-visit-parents'
|
|
@@ -27806,8 +27701,7 @@ function toFunction(replace) {
|
|
|
27806
27701
|
return replace;
|
|
27807
27702
|
};
|
|
27808
27703
|
}
|
|
27809
|
-
|
|
27810
|
-
//#region node_modules/mdast-util-gfm-autolink-literal/lib/index.js
|
|
27704
|
+
// node_modules/mdast-util-gfm-autolink-literal/lib/index.js
|
|
27811
27705
|
/**
|
|
27812
27706
|
* @import {RegExpMatchObject, ReplaceFunction} from 'mdast-util-find-and-replace'
|
|
27813
27707
|
* @import {CompileContext, Extension as FromMarkdownExtension, Handle as FromMarkdownHandle, Transform as FromMarkdownTransform} from 'mdast-util-from-markdown'
|
|
@@ -27986,8 +27880,7 @@ function previous(match, email) {
|
|
|
27986
27880
|
const code = match.input.charCodeAt(match.index - 1);
|
|
27987
27881
|
return (match.index === 0 || unicodeWhitespace(code) || unicodePunctuation(code)) && (!email || code !== 47);
|
|
27988
27882
|
}
|
|
27989
|
-
|
|
27990
|
-
//#region node_modules/mdast-util-gfm-footnote/lib/index.js
|
|
27883
|
+
// node_modules/mdast-util-gfm-footnote/lib/index.js
|
|
27991
27884
|
/**
|
|
27992
27885
|
* @import {
|
|
27993
27886
|
* CompileContext,
|
|
@@ -28121,8 +28014,7 @@ function gfmFootnoteFromMarkdown() {
|
|
|
28121
28014
|
}
|
|
28122
28015
|
};
|
|
28123
28016
|
}
|
|
28124
|
-
|
|
28125
|
-
//#region node_modules/mdast-util-gfm-strikethrough/lib/index.js
|
|
28017
|
+
// node_modules/mdast-util-gfm-strikethrough/lib/index.js
|
|
28126
28018
|
handleDelete.attention = attentionDelete;
|
|
28127
28019
|
handleDelete.peek = peekDelete;
|
|
28128
28020
|
/**
|
|
@@ -28202,8 +28094,7 @@ function attentionDelete() {
|
|
|
28202
28094
|
function peekDelete() {
|
|
28203
28095
|
return "~";
|
|
28204
28096
|
}
|
|
28205
|
-
|
|
28206
|
-
//#region node_modules/mdast-util-gfm-task-list-item/lib/index.js
|
|
28097
|
+
// node_modules/mdast-util-gfm-task-list-item/lib/index.js
|
|
28207
28098
|
/**
|
|
28208
28099
|
* @typedef {import('mdast').ListItem} ListItem
|
|
28209
28100
|
* @typedef {import('mdast').Paragraph} Paragraph
|
|
@@ -28271,8 +28162,7 @@ function exitParagraphWithTaskListItem(token) {
|
|
|
28271
28162
|
}
|
|
28272
28163
|
this.exit(token);
|
|
28273
28164
|
}
|
|
28274
|
-
|
|
28275
|
-
//#region node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js
|
|
28165
|
+
// node_modules/micromark-extension-gfm-autolink-literal/lib/syntax.js
|
|
28276
28166
|
/**
|
|
28277
28167
|
* @import {Code, ConstructRecord, Event, Extension, Previous, State, TokenizeContext, Tokenizer} from 'micromark-util-types'
|
|
28278
28168
|
*/
|
|
@@ -28972,8 +28862,7 @@ function previousUnbalanced(events) {
|
|
|
28972
28862
|
if (events.length > 0 && !result) events[events.length - 1][1]._gfmAutolinkLiteralWalkedInto = true;
|
|
28973
28863
|
return result;
|
|
28974
28864
|
}
|
|
28975
|
-
|
|
28976
|
-
//#region node_modules/micromark-extension-gfm-footnote/lib/syntax.js
|
|
28865
|
+
// node_modules/micromark-extension-gfm-footnote/lib/syntax.js
|
|
28977
28866
|
/**
|
|
28978
28867
|
* @import {Event, Exiter, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'
|
|
28979
28868
|
*/
|
|
@@ -29391,8 +29280,7 @@ function tokenizeIndent(effects, ok, nok) {
|
|
|
29391
29280
|
return tail && tail[1].type === "gfmFootnoteDefinitionIndent" && tail[2].sliceSerialize(tail[1], true).length === 4 ? ok(code) : nok(code);
|
|
29392
29281
|
}
|
|
29393
29282
|
}
|
|
29394
|
-
|
|
29395
|
-
//#region node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js
|
|
29283
|
+
// node_modules/micromark-extension-gfm-strikethrough/lib/syntax.js
|
|
29396
29284
|
/**
|
|
29397
29285
|
* @import {Options} from 'micromark-extension-gfm-strikethrough'
|
|
29398
29286
|
* @import {Event, Extension, Resolver, State, Token, TokenizeContext, Tokenizer} from 'micromark-util-types'
|
|
@@ -29532,8 +29420,7 @@ function gfmStrikethrough(options) {
|
|
|
29532
29420
|
}
|
|
29533
29421
|
}
|
|
29534
29422
|
}
|
|
29535
|
-
|
|
29536
|
-
//#region node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js
|
|
29423
|
+
// node_modules/micromark-extension-gfm-task-list-item/lib/syntax.js
|
|
29537
29424
|
/**
|
|
29538
29425
|
* @import {Extension, State, TokenizeContext, Tokenizer} from 'micromark-util-types'
|
|
29539
29426
|
*/
|
|
@@ -29651,8 +29538,7 @@ function spaceThenNonSpace(effects, ok, nok) {
|
|
|
29651
29538
|
return code === null ? nok(code) : ok(code);
|
|
29652
29539
|
}
|
|
29653
29540
|
}
|
|
29654
|
-
|
|
29655
|
-
//#region src/steering/MarkdownTree.ts
|
|
29541
|
+
// src/steering/MarkdownTree.ts
|
|
29656
29542
|
/**
|
|
29657
29543
|
* How many times `parseMarkdown` has actually run `fromMarkdown` (memo hits
|
|
29658
29544
|
* excluded) — the only way "one parse per document" is assertable, since
|
|
@@ -29835,12 +29721,10 @@ const headingText$1 = (content, heading, strip = (text) => text) => {
|
|
|
29835
29721
|
};
|
|
29836
29722
|
return strip(sourceText(content, synthetic)).replace(/\s+/g, " ").trim();
|
|
29837
29723
|
};
|
|
29838
|
-
|
|
29839
|
-
//#region src/steering/Eol.ts
|
|
29724
|
+
// src/steering/Eol.ts
|
|
29840
29725
|
/** The document's own newline style, so a splice into a CRLF file never introduces a bare `\n`. */
|
|
29841
29726
|
const eolOf = (content) => content.includes("\r\n") ? "\r\n" : "\n";
|
|
29842
|
-
|
|
29843
|
-
//#region src/steering/Threads.ts
|
|
29727
|
+
// src/steering/Threads.ts
|
|
29844
29728
|
const PREFIX_RE = /^(H|A):\s*/;
|
|
29845
29729
|
const lineOf$1 = (node, which) => toLspPosition(node.position[which]).line;
|
|
29846
29730
|
/** The item's own blocks joined — never the item node's span, which can run past its last line into the next bullet's marker. */
|
|
@@ -29926,8 +29810,7 @@ const collectThreads = (content, tree, markers) => {
|
|
|
29926
29810
|
findings
|
|
29927
29811
|
};
|
|
29928
29812
|
};
|
|
29929
|
-
|
|
29930
|
-
//#region src/steering/Footnotes.ts
|
|
29813
|
+
// src/steering/Footnotes.ts
|
|
29931
29814
|
/** The footnote-addition action's title — the ONE shared literal `qa`/`review` offer it under and `src/lsp/Lsp.ts` matches to compute the reveal position. A drifted copy in any one place silently breaks the cursor jump without failing a single test, so this constant is the only place the string is spelled. */
|
|
29932
29815
|
const FOOTNOTE_ACTION_TITLE = "gtd: add a footnote";
|
|
29933
29816
|
/** The thread-reply action's title — shared with `src/lsp/Lsp.ts` for the same reason as `FOOTNOTE_ACTION_TITLE`. */
|
|
@@ -30402,8 +30285,7 @@ const threadReplyActions = (content, position) => {
|
|
|
30402
30285
|
}]
|
|
30403
30286
|
}];
|
|
30404
30287
|
};
|
|
30405
|
-
|
|
30406
|
-
//#region src/steering/Inline.ts
|
|
30288
|
+
// src/steering/Inline.ts
|
|
30407
30289
|
/**
|
|
30408
30290
|
* A `link`'s `href`/an `image`'s `src` passes only when it carries NO scheme
|
|
30409
30291
|
* at all (relative, `./src/x.ts#42`, a bare fragment) or a scheme matching
|
|
@@ -30568,8 +30450,7 @@ const joinInlineRuns = (runs) => {
|
|
|
30568
30450
|
});
|
|
30569
30451
|
return result;
|
|
30570
30452
|
};
|
|
30571
|
-
|
|
30572
|
-
//#region src/steering/Blocks.ts
|
|
30453
|
+
// src/steering/Blocks.ts
|
|
30573
30454
|
/** A footnote marker as plain text, stripped out of every extracted title below. */
|
|
30574
30455
|
const MARKER_TEXT_RE$1 = /\[\^([^\s\]]+)\]/g;
|
|
30575
30456
|
const stripMarkerText$1 = (text) => text.replace(MARKER_TEXT_RE$1, "");
|
|
@@ -30645,17 +30526,22 @@ const nodeInline = (content, node, options) => {
|
|
|
30645
30526
|
}] : [];
|
|
30646
30527
|
};
|
|
30647
30528
|
/** One list item as a `BlockListItem`, recursing into a nested `list` child (there is at most one, CommonMark's own shape) as its own `items`. */
|
|
30648
|
-
const blockListItemOf = (content, item) => {
|
|
30649
|
-
const items = item.children.filter((c) => c.type === "list").flatMap((list) => blockListItemsOf(content, list.children));
|
|
30529
|
+
const blockListItemOf = (content, item, noteAt) => {
|
|
30530
|
+
const items = item.children.filter((c) => c.type === "list").flatMap((list) => blockListItemsOf(content, list.children, noteAt));
|
|
30531
|
+
const line = item.position === void 0 ? void 0 : toLspPosition(item.position.start).line;
|
|
30650
30532
|
return {
|
|
30651
30533
|
text: listItemText(content, item),
|
|
30652
30534
|
inline: listItemInline(content, item),
|
|
30653
30535
|
...item.checked === true || item.checked === false ? { checked: item.checked } : {},
|
|
30654
|
-
...items.length > 0 ? { items } : {}
|
|
30536
|
+
...items.length > 0 ? { items } : {},
|
|
30537
|
+
...line === void 0 ? {} : {
|
|
30538
|
+
line,
|
|
30539
|
+
...noteAt(line)
|
|
30540
|
+
}
|
|
30655
30541
|
};
|
|
30656
30542
|
};
|
|
30657
30543
|
/** Every item of a `list` node's own `children`, as `BlockListItem`s, in document order. */
|
|
30658
|
-
const blockListItemsOf = (content, items) => items.map((item) => blockListItemOf(content, item));
|
|
30544
|
+
const blockListItemsOf = (content, items, noteAt) => items.map((item) => blockListItemOf(content, item, noteAt));
|
|
30659
30545
|
/** The `title` an empty fenced code block (a `` ``` ``/`` ``` `` pair with nothing between them) falls back to — its real body is `""`, and every node still carries a non-empty title. */
|
|
30660
30546
|
const EMPTY_CODE_BLOCK_TITLE = "(empty code block)";
|
|
30661
30547
|
/** A `list`'s children with `options.skipListItem` removed. Filtering, never dropping the whole node: `qa`'s option items share a list with ordinary body bullets. */
|
|
@@ -30682,7 +30568,7 @@ const blockTitle = (content, node, options) => {
|
|
|
30682
30568
|
* renders via `title` alone. `code`'s `text` is `node.value` VERBATIM,
|
|
30683
30569
|
* leading whitespace intact, unlike every other kind's collapsed `title`.
|
|
30684
30570
|
*/
|
|
30685
|
-
const blockOf = (content, node, options) => {
|
|
30571
|
+
const blockOf = (content, node, noteAt, options) => {
|
|
30686
30572
|
switch (node.type) {
|
|
30687
30573
|
case "heading": return {
|
|
30688
30574
|
kind: "heading",
|
|
@@ -30692,7 +30578,7 @@ const blockOf = (content, node, options) => {
|
|
|
30692
30578
|
case "list": return {
|
|
30693
30579
|
kind: "list",
|
|
30694
30580
|
ordered: node.ordered === true,
|
|
30695
|
-
items: blockListItemsOf(content, visibleListItems(node, options))
|
|
30581
|
+
items: blockListItemsOf(content, visibleListItems(node, options), noteAt)
|
|
30696
30582
|
};
|
|
30697
30583
|
case "code": return {
|
|
30698
30584
|
kind: "code",
|
|
@@ -30737,7 +30623,7 @@ const blockNodesOfRun = (content, nodes, options) => {
|
|
|
30737
30623
|
const noteAt = noteLookup(content, options?.footnotes);
|
|
30738
30624
|
return visibleNodes(content, nodes, options).map((node) => {
|
|
30739
30625
|
const startLine = toLspPosition(node.position.start).line;
|
|
30740
|
-
const block = blockOf(content, node, options);
|
|
30626
|
+
const block = blockOf(content, node, noteAt, options);
|
|
30741
30627
|
return {
|
|
30742
30628
|
title: blockTitle(content, node, options),
|
|
30743
30629
|
anchor: {
|
|
@@ -30761,10 +30647,10 @@ const blockNodesOf = (content, tree, options) => blockNodesOfRun(content, tree.c
|
|
|
30761
30647
|
* compact-row rule (R2) applies `Inline.ts#collapseImages` to the result.
|
|
30762
30648
|
*/
|
|
30763
30649
|
const blockRunInline = (content, nodes, options) => {
|
|
30764
|
-
|
|
30650
|
+
const filtered = visibleNodes(content, nodes, options);
|
|
30651
|
+
return joinInlineRuns(filtered.map((node) => nodeInline(content, node, options)));
|
|
30765
30652
|
};
|
|
30766
|
-
|
|
30767
|
-
//#region src/steering/findings.ts
|
|
30653
|
+
// src/steering/findings.ts
|
|
30768
30654
|
/** The `# ` heading the findings a judge called noise sit under. */
|
|
30769
30655
|
const NOISE_HEADING = "Dropped as noise";
|
|
30770
30656
|
const OPEN_GROUP = "Open";
|
|
@@ -30995,8 +30881,7 @@ Why the judge dropped it.
|
|
|
30995
30881
|
clearTicks: (content) => content,
|
|
30996
30882
|
openThreads: openThreadsOf
|
|
30997
30883
|
};
|
|
30998
|
-
|
|
30999
|
-
//#region src/steering/qa.ts
|
|
30884
|
+
// src/steering/qa.ts
|
|
31000
30885
|
/**
|
|
31001
30886
|
* A marker as plain text. Local to this module because `headingText`/
|
|
31002
30887
|
* `optionText` extract text that is NOT a full node's tree span, which
|
|
@@ -31171,7 +31056,8 @@ const optionText = (content, item) => {
|
|
|
31171
31056
|
*/
|
|
31172
31057
|
const optionBodyNodes = (content, item, footnotes) => {
|
|
31173
31058
|
const labelParagraph = item.children.find((c) => c.type === "paragraph");
|
|
31174
|
-
|
|
31059
|
+
const rest = item.children.filter((c) => c !== labelParagraph);
|
|
31060
|
+
return blockNodesOfRun(content, rest, { footnotes });
|
|
31175
31061
|
};
|
|
31176
31062
|
/** Extracts the checkbox options from a question block's body, in document order. */
|
|
31177
31063
|
const parseOptions = (content, body, footnotes) => {
|
|
@@ -31449,7 +31335,8 @@ const unansweredQuestions = (content) => parseOpenQuestions(content).questions.f
|
|
|
31449
31335
|
* than by `indexOf("[")`, which text containing its own `[` would mislead.
|
|
31450
31336
|
*/
|
|
31451
31337
|
const toggleCheckbox = (content, line) => {
|
|
31452
|
-
const
|
|
31338
|
+
const tree = parseMarkdown(content);
|
|
31339
|
+
const item = taskItems(tree).find((it) => toLspPosition(it.position.start).line === line);
|
|
31453
31340
|
if (!item?.position) return void 0;
|
|
31454
31341
|
const startOffset = item.position.start.offset;
|
|
31455
31342
|
const boundOffset = optionContentOffset(item) ?? item.position.end.offset;
|
|
@@ -31576,7 +31463,7 @@ const replaceOptionTextEdit = (content, item, text) => {
|
|
|
31576
31463
|
* Collapses a typed answer to the single-line shape a list-item label must
|
|
31577
31464
|
* be. A raw textarea value's interior newlines would break `.gtd/`'s oxfmt
|
|
31578
31465
|
* fixed point the moment they are spliced onto a `- [x] ` line, and every
|
|
31579
|
-
* steering file — server-written ones included — is covered by `
|
|
31466
|
+
* steering file — server-written ones included — is covered by the `check` task.
|
|
31580
31467
|
*/
|
|
31581
31468
|
/**
|
|
31582
31469
|
* Empty normalizes to `FREE_TEXT_PLACEHOLDER`, never `""`: an empty label
|
|
@@ -31604,7 +31491,8 @@ const questionsApply = (content, anchor, opts) => {
|
|
|
31604
31491
|
const checked = opts.checked ?? true;
|
|
31605
31492
|
const edits = setOptionCheckedEdits(content, question, option, checked);
|
|
31606
31493
|
if (opts.text !== void 0) {
|
|
31607
|
-
const
|
|
31494
|
+
const tree = parseMarkdown(content);
|
|
31495
|
+
const item = taskItems(tree).find((it) => toLspPosition(it.position.start).line === option.sourceLine);
|
|
31608
31496
|
const textEdit = item ? replaceOptionTextEdit(content, item, normalizeFreeTextAnswer(opts.text)) : void 0;
|
|
31609
31497
|
if (textEdit) edits.push(textEdit);
|
|
31610
31498
|
}
|
|
@@ -31946,7 +31834,7 @@ const stripLeadingSeparatorInline = (nodes) => {
|
|
|
31946
31834
|
/** `paragraph`'s own inline content strictly AFTER raw source offset `afterOffset` — the structural counterpart of `restOfParagraph`'s string slice: keeps every child entirely past the cut, trims the one child that straddles it (only when it's plain `text`; a straddling non-text child is dropped, the one edge case a token followed immediately by styled text hits), and trims the result's own leading whitespace. `undefined`/`[]` for anything that isn't a real `paragraph`. */
|
|
31947
31835
|
const trailingParagraphInline = (content, paragraph, afterOffset) => {
|
|
31948
31836
|
if (paragraph.type !== "paragraph") return [];
|
|
31949
|
-
const
|
|
31837
|
+
const kept = paragraph.children.flatMap((child) => {
|
|
31950
31838
|
const start = child.position?.start.offset;
|
|
31951
31839
|
const end = child.position?.end.offset;
|
|
31952
31840
|
if (start === void 0 || end === void 0 || end <= afterOffset) return [];
|
|
@@ -31956,7 +31844,8 @@ const trailingParagraphInline = (content, paragraph, afterOffset) => {
|
|
|
31956
31844
|
...child,
|
|
31957
31845
|
value: child.value.slice(afterOffset - start)
|
|
31958
31846
|
}];
|
|
31959
|
-
})
|
|
31847
|
+
});
|
|
31848
|
+
const projected = projectInline(kept, definitionsOf(content));
|
|
31960
31849
|
const first = projected[0];
|
|
31961
31850
|
if (first === void 0 || first.kind !== "text") return projected;
|
|
31962
31851
|
return [{
|
|
@@ -31967,7 +31856,8 @@ const trailingParagraphInline = (content, paragraph, afterOffset) => {
|
|
|
31967
31856
|
/** `note`'s own inline counterpart, mirroring `hunkNote` structurally: `paragraph`'s own trailing inline content (past the pointer token) first, then every further sibling block's own `nodeInline`-equivalent projection, joined and image-collapsed (R2). `tokenEndOffset` is the raw source offset right after the pointer token itself. */
|
|
31968
31857
|
const hunkNoteInline = (content, item, paragraph, tokenEndOffset) => {
|
|
31969
31858
|
const otherChildren = item.children.filter((c) => c !== paragraph && c.type !== "list" && c.type !== "footnoteDefinition");
|
|
31970
|
-
|
|
31859
|
+
const runs = [stripLeadingSeparatorInline(trailingParagraphInline(content, paragraph, tokenEndOffset)), ...otherChildren.map((c) => stripLeadingSeparatorInline(blockRunInline(content, [c])))];
|
|
31860
|
+
return collapseImages(joinInlineRuns(runs));
|
|
31971
31861
|
};
|
|
31972
31862
|
/** The last line of a hunk's OWN span — every non-`list` child's own end line, at most — excluding a nested hunk's span entirely, so a parent's span never swallows it (for "add a footnote" placement, or for matching which hunk a cursor sits on). */
|
|
31973
31863
|
const hunkOwnEndLine = (item, sourceLine) => {
|
|
@@ -32316,7 +32206,8 @@ const reviewClearTicks = (content) => {
|
|
|
32316
32206
|
};
|
|
32317
32207
|
/** Flips the `[ ]`/`[x]` box of the hunk pointer task item starting at `line`, preserving path/note text exactly. `undefined` when `line` isn't a real task item's own start line, or its content isn't a valid hunk pointer. */
|
|
32318
32208
|
const toggleFilePointer = (content, line) => {
|
|
32319
|
-
const
|
|
32209
|
+
const tree = parseMarkdown(content);
|
|
32210
|
+
const item = taskItems(tree).find((it) => toLspPosition(it.position.start).line === line);
|
|
32320
32211
|
if (!item?.position) return void 0;
|
|
32321
32212
|
const paragraph = item.children.find((c) => c.type === "paragraph");
|
|
32322
32213
|
const firstWord = paragraph ? sourceText(content, paragraph).split(/\s+/)[0] : void 0;
|
|
@@ -32797,8 +32688,7 @@ const decisionOf$1 = (chunk) => {
|
|
|
32797
32688
|
text
|
|
32798
32689
|
};
|
|
32799
32690
|
};
|
|
32800
|
-
|
|
32801
|
-
//#region src/steering/registry.ts
|
|
32691
|
+
// src/steering/registry.ts
|
|
32802
32692
|
/** The built-in registry: mode name → its format, in registry order. The single place the built-in formats are wired into names — everything else in this module dispatches over a resolved `SteeringFormat`, never a mode-name string. */
|
|
32803
32693
|
const REGISTRY = /* @__PURE__ */ new Map([
|
|
32804
32694
|
["qa", qaDescriptor],
|
|
@@ -32808,8 +32698,7 @@ const REGISTRY = /* @__PURE__ */ new Map([
|
|
|
32808
32698
|
[...REGISTRY.keys()];
|
|
32809
32699
|
/** The built-in `SteeringFormat` registered under `mode`'s name, or `undefined` when it isn't a built-in mode at all. The one place a bare mode-name string is ever looked up — every consumer takes the RESOLVED value this returns, never a name, so "mode is required, never inferred from a file's basename" is a type, not a rule to remember. */
|
|
32810
32700
|
const steeringFormatFor = (mode) => REGISTRY.get(mode);
|
|
32811
|
-
|
|
32812
|
-
//#region src/web/Button.tsx
|
|
32701
|
+
// src/web/Button.tsx
|
|
32813
32702
|
/**
|
|
32814
32703
|
* One control system for every button in `src/web/` (package 02 Task 6) —
|
|
32815
32704
|
* always `min-h-11 min-w-11` (Tailwind's 4px scale makes that exactly the
|
|
@@ -32847,8 +32736,7 @@ const Button = ({ variant = "secondary", className, ...props }) => /* @__PURE__
|
|
|
32847
32736
|
className: cn(BASE_CLASSES, VARIANT_CLASSES[variant], className),
|
|
32848
32737
|
...props
|
|
32849
32738
|
});
|
|
32850
|
-
|
|
32851
|
-
//#region src/web/FormatNotice.tsx
|
|
32739
|
+
// src/web/FormatNotice.tsx
|
|
32852
32740
|
/**
|
|
32853
32741
|
* The one `ui.format` failure surface, shared by every screen that writes
|
|
32854
32742
|
* through `setValue`/`writeNote`/`done` (`Plan.tsx`, `Review.tsx`,
|
|
@@ -32874,8 +32762,7 @@ const FormatNoticeBanner = ({ notice, onDismiss }) => {
|
|
|
32874
32762
|
})]
|
|
32875
32763
|
});
|
|
32876
32764
|
};
|
|
32877
|
-
|
|
32878
|
-
//#region src/web/Thread.tsx
|
|
32765
|
+
// src/web/Thread.tsx
|
|
32879
32766
|
/** A thread as a conversation: `H` and `A` entries visibly distinct, and a badge while the agent spoke last. */
|
|
32880
32767
|
const Thread = ({ thread, testId }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
32881
32768
|
"data-testid": testId,
|
|
@@ -32897,8 +32784,7 @@ const Thread = ({ thread, testId }) => /* @__PURE__ */ (0, import_jsx_runtime.js
|
|
|
32897
32784
|
}, index))
|
|
32898
32785
|
})]
|
|
32899
32786
|
});
|
|
32900
|
-
|
|
32901
|
-
//#region src/web/NoteSheet.tsx
|
|
32787
|
+
// src/web/NoteSheet.tsx
|
|
32902
32788
|
const ANCHOR_TITLE = {
|
|
32903
32789
|
chunk: "Note on this chunk",
|
|
32904
32790
|
hunk: "Note on this hunk",
|
|
@@ -33067,8 +32953,7 @@ const NoteSheet = ({ anchor, note, thread, onSave, onDismiss, onDone, busy, titl
|
|
|
33067
32953
|
})]
|
|
33068
32954
|
});
|
|
33069
32955
|
};
|
|
33070
|
-
|
|
33071
|
-
//#region node_modules/zustand/esm/vanilla.mjs
|
|
32956
|
+
// node_modules/zustand/esm/vanilla.mjs
|
|
33072
32957
|
const createStoreImpl = (createState) => {
|
|
33073
32958
|
let state;
|
|
33074
32959
|
const listeners = /* @__PURE__ */ new Set();
|
|
@@ -33096,16 +32981,14 @@ const createStoreImpl = (createState) => {
|
|
|
33096
32981
|
return api;
|
|
33097
32982
|
};
|
|
33098
32983
|
const createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);
|
|
33099
|
-
|
|
33100
|
-
//#region node_modules/zustand/esm/react.mjs
|
|
32984
|
+
// node_modules/zustand/esm/react.mjs
|
|
33101
32985
|
const identity = (arg) => arg;
|
|
33102
32986
|
function useStore(api, selector = identity) {
|
|
33103
32987
|
const slice = import_react.useSyncExternalStore(api.subscribe, import_react.useCallback(() => selector(api.getState()), [api, selector]), import_react.useCallback(() => selector(api.getInitialState()), [api, selector]));
|
|
33104
32988
|
import_react.useDebugValue(slice);
|
|
33105
32989
|
return slice;
|
|
33106
32990
|
}
|
|
33107
|
-
|
|
33108
|
-
//#region src/web/staleRetry.ts
|
|
32991
|
+
// src/web/staleRetry.ts
|
|
33109
32992
|
/**
|
|
33110
32993
|
* Task 01's in-place recovery: a write refused `stale-token`/`moved: "sha"`
|
|
33111
32994
|
* almost always means HEAD moved because the process crossed a human gate,
|
|
@@ -33132,8 +33015,7 @@ const withStaleShaRetry = async (attempt, tokens, refetch) => {
|
|
|
33132
33015
|
return attempt(await refetch());
|
|
33133
33016
|
}
|
|
33134
33017
|
};
|
|
33135
|
-
|
|
33136
|
-
//#region src/web/writeStore.ts
|
|
33018
|
+
// src/web/writeStore.ts
|
|
33137
33019
|
/** How long a settled "Saved" label lingers before clearing. */
|
|
33138
33020
|
const SAVED_LINGER_MS = 1500;
|
|
33139
33021
|
/** How long an expanded refusal message stays readable before collapsing to the failed marker. */
|
|
@@ -33397,8 +33279,7 @@ const useWriteStoreInstance = () => {
|
|
|
33397
33279
|
};
|
|
33398
33280
|
/** Reads a selected slice of the nearest `WriteStoreProvider`'s store — throws a named error with no provider above it, rather than falling back to a shared store. */
|
|
33399
33281
|
const useWriteStore = (selector) => useStore(useWriteStoreInstance(), selector);
|
|
33400
|
-
|
|
33401
|
-
//#region src/web/Refusal.tsx
|
|
33282
|
+
// src/web/Refusal.tsx
|
|
33402
33283
|
/**
|
|
33403
33284
|
* One sentence per reason, naming which token moved for `stale-token` when
|
|
33404
33285
|
* known — never `error.message` (`api.ts#writeRefusalFrom`'s own doc
|
|
@@ -33489,27 +33370,30 @@ const SaveIndicator = ({ refusal, saveStatus, expanded, failedCount, otherFailed
|
|
|
33489
33370
|
const isFailed = failedCount > 0;
|
|
33490
33371
|
const hiddenLabel = !isFailed && saveStatus === "saving" ? "Saving…" : !isFailed && saveStatus === "saved" ? "Saved" : void 0;
|
|
33491
33372
|
if (!isFailed && saveStatus === "idle") return null;
|
|
33492
|
-
if (isFailed && expanded && refusal !== void 0)
|
|
33493
|
-
|
|
33494
|
-
|
|
33495
|
-
|
|
33496
|
-
|
|
33497
|
-
|
|
33498
|
-
|
|
33499
|
-
children:
|
|
33500
|
-
"data-testid": "save-indicator-
|
|
33501
|
-
children:
|
|
33502
|
-
|
|
33503
|
-
|
|
33504
|
-
|
|
33505
|
-
|
|
33506
|
-
|
|
33507
|
-
|
|
33508
|
-
|
|
33509
|
-
|
|
33510
|
-
|
|
33511
|
-
|
|
33512
|
-
|
|
33373
|
+
if (isFailed && expanded && refusal !== void 0) {
|
|
33374
|
+
const message = `${messageFor(refusal)}${countSuffix(otherFailedCount)}`;
|
|
33375
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
33376
|
+
"data-testid": "save-indicator",
|
|
33377
|
+
role: "status",
|
|
33378
|
+
"aria-live": "polite",
|
|
33379
|
+
className: "absolute right-3 bottom-3 z-10 max-w-[calc(100%-1.5rem)] rounded border border-danger bg-surface p-3 text-body text-text",
|
|
33380
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
33381
|
+
"data-testid": "save-indicator-expanded",
|
|
33382
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
33383
|
+
"data-testid": "save-indicator-message",
|
|
33384
|
+
children: message
|
|
33385
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
33386
|
+
className: "mt-2 flex justify-end gap-2",
|
|
33387
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
|
|
33388
|
+
variant: "ghost",
|
|
33389
|
+
"data-testid": "save-indicator-dismiss",
|
|
33390
|
+
onClick: onDismiss,
|
|
33391
|
+
children: "Dismiss"
|
|
33392
|
+
})
|
|
33393
|
+
})]
|
|
33394
|
+
})
|
|
33395
|
+
});
|
|
33396
|
+
}
|
|
33513
33397
|
if (isFailed) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
33514
33398
|
"data-testid": "save-indicator",
|
|
33515
33399
|
role: "status",
|
|
@@ -33544,8 +33428,7 @@ const SaveIndicator = ({ refusal, saveStatus, expanded, failedCount, otherFailed
|
|
|
33544
33428
|
})]
|
|
33545
33429
|
});
|
|
33546
33430
|
};
|
|
33547
|
-
|
|
33548
|
-
//#region src/web/notes.ts
|
|
33431
|
+
// src/web/notes.ts
|
|
33549
33432
|
/** The thread with the human's saved reply applied the way the server applies it: appended to an open thread, replacing the last `H` entry of one waiting on the agent. Idempotent against a refetch that already carries the reply. */
|
|
33550
33433
|
const withReply = (thread, text) => {
|
|
33551
33434
|
const entries = thread.waitingOn === "human" ? [...thread.entries, {
|
|
@@ -33591,8 +33474,7 @@ const existingNoteFor = (nodes, anchor, overrides) => {
|
|
|
33591
33474
|
}
|
|
33592
33475
|
return anchor.kind === "paragraph" ? node?.note : void 0;
|
|
33593
33476
|
};
|
|
33594
|
-
|
|
33595
|
-
//#region src/web/screens/InlineRun.tsx
|
|
33477
|
+
// src/web/screens/InlineRun.tsx
|
|
33596
33478
|
/**
|
|
33597
33479
|
* One projected `image`'s own rendering — its own component (not a case
|
|
33598
33480
|
* inline in `InlineRun`) because it needs its own `useState`: `onError`
|
|
@@ -33652,8 +33534,7 @@ const InlineRun = ({ nodes }) => nodes.map((node, index) => {
|
|
|
33652
33534
|
});
|
|
33653
33535
|
/** Renders `inline` when present through `InlineRun`, falling back to plain (unparsed) `fallback` text — the malformed-node case where a block carries no inline structure at all. */
|
|
33654
33536
|
const Inline = ({ inline, fallback }) => inline !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InlineRun, { nodes: inline }) : fallback;
|
|
33655
|
-
|
|
33656
|
-
//#region src/web/screens/ProseBlock.tsx
|
|
33537
|
+
// src/web/screens/ProseBlock.tsx
|
|
33657
33538
|
/** The heading tag a `block.heading`'s own `depth` renders as — three buckets covering all six markdown levels, never a literal `h1`..`h6` (this screen's own `h2` already labels "Open Questions"/"Already answered"). */
|
|
33658
33539
|
const headingTagFor = (depth) => {
|
|
33659
33540
|
if (depth <= 2) return "h2";
|
|
@@ -33760,7 +33641,8 @@ const BLOCK_RENDERERS = {
|
|
|
33760
33641
|
};
|
|
33761
33642
|
/** The structural element `block` renders as — see `BLOCK_RENDERERS`/`ParagraphBlock` for the per-kind renderers and the fallback. */
|
|
33762
33643
|
const BlockBody = ({ node }) => {
|
|
33763
|
-
|
|
33644
|
+
const Renderer = BLOCK_RENDERERS[node.block?.kind ?? ""] ?? ParagraphBlock;
|
|
33645
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Renderer, { node });
|
|
33764
33646
|
};
|
|
33765
33647
|
/**
|
|
33766
33648
|
* One block plus its inline note (if any) and its note seam — `line` is the
|
|
@@ -33831,8 +33713,7 @@ const ProseBlocks = ({ nodes, noteOverrides, onOpenNote, readOnly }) => /* @__PU
|
|
|
33831
33713
|
...readOnly !== void 0 ? { readOnly } : {}
|
|
33832
33714
|
}, node.anchor.kind === "paragraph" ? node.anchor.line : index))]
|
|
33833
33715
|
});
|
|
33834
|
-
|
|
33835
|
-
//#region src/web/screens/Findings.tsx
|
|
33716
|
+
// src/web/screens/Findings.tsx
|
|
33836
33717
|
const MODE = "findings";
|
|
33837
33718
|
const NOISE_GROUP = "Dropped as noise";
|
|
33838
33719
|
const decisionOf = (node) => ({
|
|
@@ -34080,8 +33961,7 @@ const Findings = ({ filePath }) => {
|
|
|
34080
33961
|
})
|
|
34081
33962
|
});
|
|
34082
33963
|
};
|
|
34083
|
-
|
|
34084
|
-
//#region src/web/screens/FreeForm.tsx
|
|
33964
|
+
// src/web/screens/FreeForm.tsx
|
|
34085
33965
|
/**
|
|
34086
33966
|
* The empty-document save's own anchor line: `freeform.ts#freeFormApply`'s
|
|
34087
33967
|
* guard only appends when `anchor.line` is at or beyond the document's own
|
|
@@ -34323,8 +34203,7 @@ const FreeForm = ({ filePath, mode }) => {
|
|
|
34323
34203
|
})
|
|
34324
34204
|
});
|
|
34325
34205
|
};
|
|
34326
|
-
|
|
34327
|
-
//#region src/web/Card.tsx
|
|
34206
|
+
// src/web/Card.tsx
|
|
34328
34207
|
/**
|
|
34329
34208
|
* The chevron is the row's only "this opens something" cue: a full-bleed row
|
|
34330
34209
|
* of plain text reads as a heading, and every tappable row on this client is
|
|
@@ -34356,8 +34235,7 @@ const CardList = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("
|
|
|
34356
34235
|
"data-testid": "card-list",
|
|
34357
34236
|
children
|
|
34358
34237
|
});
|
|
34359
|
-
|
|
34360
|
-
//#region src/web/Deck.tsx
|
|
34238
|
+
// src/web/Deck.tsx
|
|
34361
34239
|
/** The advance button's own label — "Next" mid-deck; at the last item, "Done" with no separate Done control, else "Back to list" — the collision `DeckControls`'s own doc comment names. Split out so `DeckControls` itself doesn't carry the nested ternary inline. */
|
|
34362
34240
|
const advanceLabel = (isLastItem, hasDoneControl) => {
|
|
34363
34241
|
if (!isLastItem) return "Next";
|
|
@@ -34452,8 +34330,7 @@ const Deck = ({ items, renderItem, onExit, index, onIndexChange, onDone, doneLab
|
|
|
34452
34330
|
})]
|
|
34453
34331
|
});
|
|
34454
34332
|
};
|
|
34455
|
-
|
|
34456
|
-
//#region src/web/useScrollRestoration.ts
|
|
34333
|
+
// src/web/useScrollRestoration.ts
|
|
34457
34334
|
/**
|
|
34458
34335
|
* The scroll-preservation half of the two-level shell's "back from the first
|
|
34459
34336
|
* deck item returns to the list without losing scroll position" acceptance
|
|
@@ -34490,8 +34367,7 @@ const useScrollRestoration = () => {
|
|
|
34490
34367
|
restore
|
|
34491
34368
|
};
|
|
34492
34369
|
};
|
|
34493
|
-
|
|
34494
|
-
//#region src/web/screens/Question.tsx
|
|
34370
|
+
// src/web/screens/Question.tsx
|
|
34495
34371
|
/** `""` for an untouched/placeholder-only answer (case-insensitive) — the SAME sentinel and the SAME normalization the completeness gate and the open-questions check both apply server-side (`OpenQuestions.ts#FREE_TEXT_PLACEHOLDER`), redone here so the client never has to round-trip through a write to know if it's answered. */
|
|
34496
34372
|
const normalizeAnswerText$1 = (text) => {
|
|
34497
34373
|
const trimmed = text.trim();
|
|
@@ -34686,8 +34562,7 @@ const Question = ({ node, filePath, onCommitAnswer, noteOverrides, onOpenNote })
|
|
|
34686
34562
|
]
|
|
34687
34563
|
});
|
|
34688
34564
|
};
|
|
34689
|
-
|
|
34690
|
-
//#region src/web/screens/Plan.tsx
|
|
34565
|
+
// src/web/screens/Plan.tsx
|
|
34691
34566
|
/** A `qa`-view question node sets `status` (`"open"`/`"answered"`); a prose-only document's `view` has no such nodes at all. */
|
|
34692
34567
|
const isQuestionNode = (node) => node.status !== void 0;
|
|
34693
34568
|
const openQuestionNodesOf = (view) => view.nodes.filter((node) => node.status === "open");
|
|
@@ -35015,8 +34890,7 @@ const Plan = ({ filePath, mode }) => {
|
|
|
35015
34890
|
})
|
|
35016
34891
|
});
|
|
35017
34892
|
};
|
|
35018
|
-
|
|
35019
|
-
//#region src/web/Highlight.ts
|
|
34893
|
+
// src/web/Highlight.ts
|
|
35020
34894
|
/**
|
|
35021
34895
|
* Ported verbatim from the prototype's own tokenizer, down to the token
|
|
35022
34896
|
* classes: comment, string, keyword, number, capitalized identifier (typ).
|
|
@@ -35086,8 +34960,7 @@ const highlightDiffLine = (line) => {
|
|
|
35086
34960
|
tokens: tokenize(line.slice(1))
|
|
35087
34961
|
};
|
|
35088
34962
|
};
|
|
35089
|
-
|
|
35090
|
-
//#region src/web/screens/Hunk.tsx
|
|
34963
|
+
// src/web/screens/Hunk.tsx
|
|
35091
34964
|
const LINE_BACKGROUND = {
|
|
35092
34965
|
add: "bg-diff-add",
|
|
35093
34966
|
del: "bg-diff-del",
|
|
@@ -35265,8 +35138,7 @@ const Hunk = ({ node, diff, index, total, checked, hasNote, note, thread, onTogg
|
|
|
35265
35138
|
})
|
|
35266
35139
|
]
|
|
35267
35140
|
});
|
|
35268
|
-
|
|
35269
|
-
//#region src/web/screens/Review.tsx
|
|
35141
|
+
// src/web/screens/Review.tsx
|
|
35270
35142
|
/** Every hunk-anchored descendant of a chunk node, at any depth. */
|
|
35271
35143
|
const hunksOf = (node) => (node.children ?? []).flatMap((child) => [...child.anchor.kind === "hunk" ? [child] : [], ...hunksOf(child)]);
|
|
35272
35144
|
/** The free-text slot's index among a finding's three boxes. */
|
|
@@ -35437,13 +35309,14 @@ const useReviewState = (filePath, scrollRef, onSaveNote, onDoneNote, onSetValue,
|
|
|
35437
35309
|
};
|
|
35438
35310
|
/** Fetches ONE hunk's own diff live via `trpc.diff`. */
|
|
35439
35311
|
const HunkWithDiff = ({ node, ...rest }) => {
|
|
35312
|
+
const query = trpc.diff.useQuery({
|
|
35313
|
+
path: node.path ?? "",
|
|
35314
|
+
...node.line !== void 0 ? { line: node.line } : {},
|
|
35315
|
+
...node.endLine !== void 0 ? { endLine: node.endLine } : {}
|
|
35316
|
+
}, { enabled: node.path !== void 0 });
|
|
35440
35317
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Hunk, {
|
|
35441
35318
|
node,
|
|
35442
|
-
diff:
|
|
35443
|
-
path: node.path ?? "",
|
|
35444
|
-
...node.line !== void 0 ? { line: node.line } : {},
|
|
35445
|
-
...node.endLine !== void 0 ? { endLine: node.endLine } : {}
|
|
35446
|
-
}, { enabled: node.path !== void 0 }).data,
|
|
35319
|
+
diff: query.data,
|
|
35447
35320
|
...rest
|
|
35448
35321
|
});
|
|
35449
35322
|
};
|
|
@@ -35527,7 +35400,7 @@ const DecisionControl = ({ chunk, chunkIndex, state }) => {
|
|
|
35527
35400
|
};
|
|
35528
35401
|
/** A chunk with neither hunks nor a decision (`Fixed automatically`, …) is a note to read, not an item to tick. */
|
|
35529
35402
|
const isPlainNote = (chunk) => chunk.decision === void 0 && hunksOf(chunk).length === 0;
|
|
35530
|
-
const ChunkSummary = ({ chunk, chunkIndex }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
35403
|
+
const ChunkSummary = ({ chunk, chunkIndex, withDetail = true }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
35531
35404
|
chunk.status !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
35532
35405
|
"data-testid": `chunk-severity-${chunkIndex}`,
|
|
35533
35406
|
className: cn("text-small font-semibold", chunk.status.startsWith("critical") ? "text-warning" : "text-muted"),
|
|
@@ -35537,7 +35410,7 @@ const ChunkSummary = ({ chunk, chunkIndex }) => /* @__PURE__ */ (0, import_jsx_r
|
|
|
35537
35410
|
className: "font-semibold",
|
|
35538
35411
|
children: chunk.title
|
|
35539
35412
|
}),
|
|
35540
|
-
chunk.detail !== void 0 && chunk.detail.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
35413
|
+
withDetail && chunk.detail !== void 0 && chunk.detail.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
35541
35414
|
className: "text-small text-muted",
|
|
35542
35415
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Inline, {
|
|
35543
35416
|
inline: chunk.detailInline,
|
|
@@ -35545,6 +35418,89 @@ const ChunkSummary = ({ chunk, chunkIndex }) => /* @__PURE__ */ (0, import_jsx_r
|
|
|
35545
35418
|
})
|
|
35546
35419
|
})
|
|
35547
35420
|
] });
|
|
35421
|
+
/** A list item as the node its own note reads and writes through: a `paragraph` anchor at its line. */
|
|
35422
|
+
const itemNodeOf = (item) => ({
|
|
35423
|
+
title: item.text,
|
|
35424
|
+
anchor: {
|
|
35425
|
+
kind: "paragraph",
|
|
35426
|
+
line: item.line
|
|
35427
|
+
},
|
|
35428
|
+
...item.note === void 0 ? {} : { note: item.note },
|
|
35429
|
+
...item.thread === void 0 ? {} : { thread: item.thread }
|
|
35430
|
+
});
|
|
35431
|
+
/** One list item with its own note: the quality lap's summary is reopened line by line. */
|
|
35432
|
+
const NotableItem = ({ item, id, state }) => {
|
|
35433
|
+
const node = item.line === void 0 ? void 0 : itemNodeOf({
|
|
35434
|
+
...item,
|
|
35435
|
+
line: item.line
|
|
35436
|
+
});
|
|
35437
|
+
const thread = node === void 0 ? void 0 : state.threadOf(node);
|
|
35438
|
+
const noted = node !== void 0 && state.hasNoteText(node);
|
|
35439
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("li", {
|
|
35440
|
+
"data-testid": `note-item-${id}`,
|
|
35441
|
+
className: "py-1",
|
|
35442
|
+
children: [
|
|
35443
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
35444
|
+
className: "flex items-start gap-2",
|
|
35445
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
35446
|
+
className: "min-w-0 flex-1 py-2",
|
|
35447
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Inline, {
|
|
35448
|
+
inline: item.inline,
|
|
35449
|
+
fallback: item.text
|
|
35450
|
+
})
|
|
35451
|
+
}), node !== void 0 && !noted && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
|
|
35452
|
+
variant: "ghost",
|
|
35453
|
+
"data-testid": `note-item-note-${id}`,
|
|
35454
|
+
"aria-label": `Note on ${item.text}`,
|
|
35455
|
+
onClick: () => state.openNoteSheet(node),
|
|
35456
|
+
className: "text-small",
|
|
35457
|
+
children: "Note"
|
|
35458
|
+
})]
|
|
35459
|
+
}),
|
|
35460
|
+
node !== void 0 && noted && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
|
|
35461
|
+
variant: "ghost",
|
|
35462
|
+
"data-testid": `note-item-note-${id}`,
|
|
35463
|
+
onClick: () => state.openNoteSheet(node),
|
|
35464
|
+
className: "w-full rounded border border-divider px-2 py-1 text-left text-small font-normal text-muted",
|
|
35465
|
+
children: thread !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Thread, {
|
|
35466
|
+
thread,
|
|
35467
|
+
testId: `note-item-thread-${id}`
|
|
35468
|
+
}) : state.noteTextOf(node)
|
|
35469
|
+
}),
|
|
35470
|
+
item.items !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NotableList, {
|
|
35471
|
+
items: item.items,
|
|
35472
|
+
id,
|
|
35473
|
+
state
|
|
35474
|
+
})
|
|
35475
|
+
]
|
|
35476
|
+
});
|
|
35477
|
+
};
|
|
35478
|
+
const NotableList = ({ items, id, state }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", {
|
|
35479
|
+
className: "m-0 list-outside list-disc pl-5 marker:text-link",
|
|
35480
|
+
children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NotableItem, {
|
|
35481
|
+
item,
|
|
35482
|
+
id: `${id}-${i}`,
|
|
35483
|
+
state
|
|
35484
|
+
}, i))
|
|
35485
|
+
});
|
|
35486
|
+
/** A plain note's prose as blocks, every list item taking a note of its own. */
|
|
35487
|
+
const PlainNoteBody = ({ chunk, chunkIndex, state }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
35488
|
+
"data-testid": `chunk-plain-note-body-${chunkIndex}`,
|
|
35489
|
+
className: "-mx-3 text-small",
|
|
35490
|
+
children: (chunk.body ?? []).map((node, i) => node.block?.kind === "list" ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
35491
|
+
className: "px-3",
|
|
35492
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(NotableList, {
|
|
35493
|
+
items: node.block.items ?? [],
|
|
35494
|
+
id: `${chunkIndex}-${i}`,
|
|
35495
|
+
state
|
|
35496
|
+
})
|
|
35497
|
+
}, i) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProseBlocks, {
|
|
35498
|
+
nodes: [node],
|
|
35499
|
+
noteOverrides: {},
|
|
35500
|
+
onOpenNote: () => {},
|
|
35501
|
+
readOnly: true
|
|
35502
|
+
}, i))
|
|
35503
|
+
});
|
|
35548
35504
|
/** A finding's done mark, a walkthrough chunk's tick-all box, nothing for a plain note. */
|
|
35549
35505
|
const ChunkMark = ({ chunk, chunkIndex, state }) => {
|
|
35550
35506
|
const hunks = hunksOf(chunk);
|
|
@@ -35584,13 +35540,18 @@ const ChunkRow = ({ chunk, chunkIndex, state }) => {
|
|
|
35584
35540
|
chunkIndex,
|
|
35585
35541
|
state
|
|
35586
35542
|
}),
|
|
35587
|
-
isPlainNote(chunk) ? /* @__PURE__ */ (0, import_jsx_runtime.
|
|
35543
|
+
isPlainNote(chunk) ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
35588
35544
|
"data-testid": `chunk-plain-note-${chunkIndex}`,
|
|
35589
|
-
className: "flex-1 py-1",
|
|
35590
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChunkSummary, {
|
|
35545
|
+
className: "min-w-0 flex-1 py-1",
|
|
35546
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChunkSummary, {
|
|
35547
|
+
chunk,
|
|
35548
|
+
chunkIndex,
|
|
35549
|
+
withDetail: chunk.body === void 0 || chunk.body.length === 0
|
|
35550
|
+
}), chunk.body !== void 0 && chunk.body.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(PlainNoteBody, {
|
|
35591
35551
|
chunk,
|
|
35592
|
-
chunkIndex
|
|
35593
|
-
|
|
35552
|
+
chunkIndex,
|
|
35553
|
+
state
|
|
35554
|
+
})]
|
|
35594
35555
|
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Button, {
|
|
35595
35556
|
variant: "ghost",
|
|
35596
35557
|
"data-testid": `chunk-open-${chunkIndex}`,
|
|
@@ -35908,8 +35869,7 @@ const Review = ({ filePath }) => {
|
|
|
35908
35869
|
})
|
|
35909
35870
|
});
|
|
35910
35871
|
};
|
|
35911
|
-
|
|
35912
|
-
//#region src/web/App.tsx
|
|
35872
|
+
// src/web/App.tsx
|
|
35913
35873
|
/** The one shape a screen can open: a clean read resting on a steering file — package 01 dropped the `mode` requirement, since an absent or unregistered mode now falls through to `FreeForm` rather than refusing. */
|
|
35914
35874
|
const openable = (step) => step?.status === "ok" && step.file !== void 0;
|
|
35915
35875
|
/**
|
|
@@ -35972,8 +35932,7 @@ const App = () => {
|
|
|
35972
35932
|
})
|
|
35973
35933
|
});
|
|
35974
35934
|
};
|
|
35975
|
-
|
|
35976
|
-
//#region src/web/main.tsx
|
|
35935
|
+
// src/web/main.tsx
|
|
35977
35936
|
/** Server state goes through React Query; the tRPC link is created once per app instance and points at the served origin's `/trpc` path — relative, so it works regardless of host/port. */
|
|
35978
35937
|
const queryClient = new QueryClient();
|
|
35979
35938
|
const trpcClient = trpc.createClient({ links: [httpBatchLink({ url: TRPC_URL })] });
|
|
@@ -35986,4 +35945,3 @@ if (container) (0, import_client.createRoot)(container).render(/* @__PURE__ */ (
|
|
|
35986
35945
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(App, {})
|
|
35987
35946
|
})
|
|
35988
35947
|
}) }));
|
|
35989
|
-
//#endregion
|