react-doctor 0.9.8-dev.7f028ea → 0.9.9-dev.e69faca
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/dist/{build-section-divider-DKzi1sn2.js → build-section-divider-Dqnkjosd.js} +22 -103
- package/dist/{ci-BKAwxTDf.js → ci-uLJQVsey.js} +11 -11
- package/dist/cli.js +33 -30
- package/dist/{design-ROS4n3k3.js → design-Pe_3Az8X.js} +4 -4
- package/dist/{exit-gracefully-De1Nzy3z.js → exit-gracefully-DrpCqAEw.js} +7 -6
- package/dist/index.d.ts +9 -1
- package/dist/index.js +159 -159
- package/dist/{inspect-Z_e5RkQs.js → inspect-DspBK6iV.js} +16 -16
- package/dist/{install-BDS2ISd_.js → install-Bq82FRWq.js} +8 -8
- package/dist/{install-doctor-script-J-zvzVqR.js → install-doctor-script-DE8IUn7u.js} +4 -4
- package/dist/{install-github-workflow-CAo3dNh1.js → install-github-workflow-COlI8Ygf.js} +6 -6
- package/dist/{install-react-doctor-C_5DWtTC.js → install-react-doctor-CN-Ysvqg.js} +8 -8
- package/dist/lsp.js +2122 -327
- package/dist/{print-branded-header-UfYgFqhb.js → print-branded-header-CyZuPgPz.js} +4 -4
- package/dist/{read-object-file-BDLV3R4X.js → read-object-file-NUALLod8.js} +4 -4
- package/dist/{record-metric-BGxpNcR0.js → record-metric-BE4W9NsY.js} +1654 -295
- package/dist/{report-error-Wat6_MDs.js → report-error-BcxyEZqQ.js} +18 -12
- package/dist/{report-workflow-result-CULZXneJ.js → report-workflow-result-BIYz6Xh4.js} +5 -5
- package/dist/{resolve-scope-BbndLz4E.js → resolve-scope-O3agwyD8.js} +6 -6
- package/dist/{rules-BSF6erEQ.js → rules-BsGDAd3P.js} +6 -6
- package/dist/{run-scan-app-D1yyCXe2.js → run-scan-app-DyCMqHI5.js} +10 -10
- package/dist/{scan-BTYPKfS9.js → scan-XCE1aa38.js} +8 -8
- package/dist/{should-fail-scan-gate-CgCFA8pU.js → should-fail-scan-gate-ChTwe1SJ.js} +114 -192
- package/dist/{should-skip-prompts-CZbr6sjQ.js → should-skip-prompts-f3iHsUsZ.js} +4 -4
- package/dist/{unref-stdin-noiOzC5n.js → unref-stdin-WJS2VNFJ.js} +112 -5
- package/dist/{version-BAsYYPLc.js → version-sAGj465-.js} +4 -4
- package/dist/{why-DZ9AgG5O.js → why-CukgIunZ.js} +4 -4
- package/package.json +6 -6
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="7502d11b-5ed7-52f7-a187-ac7c37461881")}catch(e){}}();
|
|
3
3
|
import { i as __toESM$1, r as __require, t as __commonJSMin$1 } from "./chunk-ChKA3wi6.js";
|
|
4
4
|
import { createRequire } from "node:module";
|
|
5
5
|
import { ALL_REACT_DOCTOR_RULE_KEYS, CROSS_FILE_DEPENDENCY_COLLECTORS, CROSS_FILE_RULE_IDS, FRAMEWORK_SPECIFIC_RULE_KEYS, FRAMEWORK_TOKENS, MOTION_LIBRARY_PACKAGES, REACT_COMPILER_RULES, REACT_DOCTOR_RULES, REACT_DOCTOR_RULE_REGISTRY, REACT_DOCTOR_SCAN_RULES, classifySecurityScanFile, collectCrossFileDependencyProbes, resetManifestCaches, shouldReadSecurityScanContent } from "oxlint-plugin-react-doctor/core";
|
|
@@ -63958,7 +63958,7 @@ const SOCKET_FREE_USER_AGENT = "react-doctor-supply-chain";
|
|
|
63958
63958
|
const FILE_LINT_CACHE_FILENAME = "file-lint-cache.json";
|
|
63959
63959
|
const FILE_LINT_CACHE_MAX_FILE_COUNT = 5e4;
|
|
63960
63960
|
const SIDECAR_LINT_CACHE_FILENAME = "sidecar-lint-cache.json";
|
|
63961
|
-
const CORE_PACKAGE_VERSION = "0.9.
|
|
63961
|
+
const CORE_PACKAGE_VERSION = "0.9.9";
|
|
63962
63962
|
const DEAD_CODE_CACHE_FILENAME = "dead-code-cache.json";
|
|
63963
63963
|
const DEAD_CODE_SUMMARY_CACHE_FILENAME = "dead-code-summaries.json";
|
|
63964
63964
|
const SUPPLY_CHAIN_PLUGIN = "socket";
|
|
@@ -68197,11 +68197,162 @@ const restoreLegacyThrow = (effect) => effect.pipe(catchReasons("ReactDoctorErro
|
|
|
68197
68197
|
ProjectNotFound: (reason) => die(new ProjectNotFoundError(reason.directory)),
|
|
68198
68198
|
AmbiguousProject: (reason) => die(new AmbiguousProjectError(reason.directory, [...reason.candidates]))
|
|
68199
68199
|
}, (_reason, error) => die(error)));
|
|
68200
|
+
const REDACTED_PLACEHOLDER = "<redacted>";
|
|
68201
|
+
const KEEP_PREFIX = `$1${REDACTED_PLACEHOLDER}`;
|
|
68202
|
+
const KNOWN_SECRET_RULES = [
|
|
68203
|
+
{
|
|
68204
|
+
pattern: /-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g,
|
|
68205
|
+
replacement: REDACTED_PLACEHOLDER
|
|
68206
|
+
},
|
|
68207
|
+
{
|
|
68208
|
+
pattern: /\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}/g,
|
|
68209
|
+
replacement: REDACTED_PLACEHOLDER
|
|
68210
|
+
},
|
|
68211
|
+
{
|
|
68212
|
+
pattern: /(?<=:\/\/)[^\s/:@]+:[^\s/@]+(?=@)/g,
|
|
68213
|
+
replacement: REDACTED_PLACEHOLDER
|
|
68214
|
+
},
|
|
68215
|
+
{
|
|
68216
|
+
pattern: /\b(AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA|A3T[A-Z0-9])[0-9A-Z]{16,}/g,
|
|
68217
|
+
replacement: KEEP_PREFIX
|
|
68218
|
+
},
|
|
68219
|
+
{
|
|
68220
|
+
pattern: /\b(gh[pousr]_)[A-Za-z0-9]{36,}/g,
|
|
68221
|
+
replacement: KEEP_PREFIX
|
|
68222
|
+
},
|
|
68223
|
+
{
|
|
68224
|
+
pattern: /\b(github_pat_)[A-Za-z0-9_]{22,}/g,
|
|
68225
|
+
replacement: KEEP_PREFIX
|
|
68226
|
+
},
|
|
68227
|
+
{
|
|
68228
|
+
pattern: /\b(glpat-)[A-Za-z0-9_-]{20,}/g,
|
|
68229
|
+
replacement: KEEP_PREFIX
|
|
68230
|
+
},
|
|
68231
|
+
{
|
|
68232
|
+
pattern: /\b(xox[baprs]-)[A-Za-z0-9-]{10,}/g,
|
|
68233
|
+
replacement: KEEP_PREFIX
|
|
68234
|
+
},
|
|
68235
|
+
{
|
|
68236
|
+
pattern: /(?<=hooks\.slack\.com\/services\/)[A-Za-z0-9/+_-]{20,}/g,
|
|
68237
|
+
replacement: REDACTED_PLACEHOLDER
|
|
68238
|
+
},
|
|
68239
|
+
{
|
|
68240
|
+
pattern: /\b((?:sk|rk)_(?:live|test)_)[0-9A-Za-z]{10,}/g,
|
|
68241
|
+
replacement: KEEP_PREFIX
|
|
68242
|
+
},
|
|
68243
|
+
{
|
|
68244
|
+
pattern: /\b(sk-(?:proj-|ant-)?)[A-Za-z0-9_-]{20,}/g,
|
|
68245
|
+
replacement: KEEP_PREFIX
|
|
68246
|
+
},
|
|
68247
|
+
{
|
|
68248
|
+
pattern: /\b(AIza)[0-9A-Za-z_-]{35,}/g,
|
|
68249
|
+
replacement: KEEP_PREFIX
|
|
68250
|
+
},
|
|
68251
|
+
{
|
|
68252
|
+
pattern: /\b(ya29\.)[0-9A-Za-z_-]{20,}/g,
|
|
68253
|
+
replacement: KEEP_PREFIX
|
|
68254
|
+
},
|
|
68255
|
+
{
|
|
68256
|
+
pattern: /\b(npm_)[A-Za-z0-9]{36,}/g,
|
|
68257
|
+
replacement: KEEP_PREFIX
|
|
68258
|
+
},
|
|
68259
|
+
{
|
|
68260
|
+
pattern: /\b(SG\.)[A-Za-z0-9_-]{22,}\.[A-Za-z0-9_-]{43,}/g,
|
|
68261
|
+
replacement: KEEP_PREFIX
|
|
68262
|
+
},
|
|
68263
|
+
{
|
|
68264
|
+
pattern: /\b(SK)[0-9a-fA-F]{32,}/g,
|
|
68265
|
+
replacement: KEEP_PREFIX
|
|
68266
|
+
},
|
|
68267
|
+
{
|
|
68268
|
+
pattern: /\b(dop_v1_)[a-f0-9]{64,}/g,
|
|
68269
|
+
replacement: KEEP_PREFIX
|
|
68270
|
+
},
|
|
68271
|
+
{
|
|
68272
|
+
pattern: /\b(shp(?:at|ca|pa|ss)_)[a-fA-F0-9]{32,}/g,
|
|
68273
|
+
replacement: KEEP_PREFIX
|
|
68274
|
+
},
|
|
68275
|
+
{
|
|
68276
|
+
pattern: /\b(sq0[a-z]{3}-)[0-9A-Za-z_-]{22,}/g,
|
|
68277
|
+
replacement: KEEP_PREFIX
|
|
68278
|
+
},
|
|
68279
|
+
{
|
|
68280
|
+
pattern: /\b([0-9]{8,10}:AA)[0-9A-Za-z_-]{32,}/g,
|
|
68281
|
+
replacement: KEEP_PREFIX
|
|
68282
|
+
},
|
|
68283
|
+
{
|
|
68284
|
+
pattern: /(?<=\bBearer\s)[A-Za-z0-9._~+/=-]{16,}/g,
|
|
68285
|
+
replacement: REDACTED_PLACEHOLDER
|
|
68286
|
+
},
|
|
68287
|
+
{
|
|
68288
|
+
pattern: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,
|
|
68289
|
+
replacement: REDACTED_PLACEHOLDER
|
|
68290
|
+
}
|
|
68291
|
+
];
|
|
68292
|
+
const CANDIDATE_TOKEN_PATTERN = /[A-Za-z0-9_][A-Za-z0-9_-]*/g;
|
|
68293
|
+
const HEX_DIGEST_PATTERN = /^(?:[0-9a-f]{32}|[0-9a-f]{40}|[0-9a-f]{64})$/;
|
|
68294
|
+
const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
68295
|
+
const HAS_LETTER_PATTERN = /[A-Za-z]/;
|
|
68296
|
+
const HAS_DIGIT_PATTERN = /[0-9]/;
|
|
68297
|
+
const shannonEntropyBits = (value) => {
|
|
68298
|
+
const counts = /* @__PURE__ */ new Map();
|
|
68299
|
+
for (const char of value) counts.set(char, (counts.get(char) ?? 0) + 1);
|
|
68300
|
+
let bits = 0;
|
|
68301
|
+
for (const count of counts.values()) {
|
|
68302
|
+
const probability = count / value.length;
|
|
68303
|
+
bits -= probability * Math.log2(probability);
|
|
68304
|
+
}
|
|
68305
|
+
return bits;
|
|
68306
|
+
};
|
|
68307
|
+
const looksLikeHighEntropySecret = (token) => {
|
|
68308
|
+
if (token.length < 32) return false;
|
|
68309
|
+
if (!HAS_LETTER_PATTERN.test(token) || !HAS_DIGIT_PATTERN.test(token)) return false;
|
|
68310
|
+
if (HEX_DIGEST_PATTERN.test(token) || UUID_PATTERN.test(token)) return false;
|
|
68311
|
+
return shannonEntropyBits(token) >= 3;
|
|
68312
|
+
};
|
|
68313
|
+
const redactHighEntropyTokens = (text) => text.replace(CANDIDATE_TOKEN_PATTERN, (token) => looksLikeHighEntropySecret(token) ? REDACTED_PLACEHOLDER : token);
|
|
68314
|
+
/**
|
|
68315
|
+
* Masks API keys, tokens, private keys, credentialed URLs, and emails
|
|
68316
|
+
* found anywhere inside a free-text string, returning the scrubbed text.
|
|
68317
|
+
* Applied to every diagnostic's `message` / `help` at construction time
|
|
68318
|
+
* so secrets never reach the terminal, the JSON report, or the score
|
|
68319
|
+
* API — react-doctor must never echo or transmit a user's secrets.
|
|
68320
|
+
*
|
|
68321
|
+
* Provider tokens keep their non-secret, type-identifying prefix (e.g.
|
|
68322
|
+
* `sk_live_<redacted>`, `ghp_<redacted>`, `AKIA<redacted>`) so the leaked
|
|
68323
|
+
* credential's type stays visible; structural or unknown-format secrets
|
|
68324
|
+
* with no meaningful prefix are masked whole.
|
|
68325
|
+
*
|
|
68326
|
+
* Runs the high-precision known-shape detectors first, then a generic
|
|
68327
|
+
* entropy-gated sweep for unknown-format secrets. Idempotent: the inert
|
|
68328
|
+
* `<redacted>` placeholder matches none of the detectors and is too
|
|
68329
|
+
* short for the generic sweep, so re-running leaves the text unchanged.
|
|
68330
|
+
*
|
|
68331
|
+
* Accepts `unknown` on purpose: callers feed it diagnostic `message` /
|
|
68332
|
+
* `help` that originate from oxlint JSON, which is only shape-checked at
|
|
68333
|
+
* the top level (the per-field `string` types are assumed, not validated).
|
|
68334
|
+
* A malformed non-string value returns `""` instead of throwing on
|
|
68335
|
+
* `.replace`, so one bad diagnostic can't abort parsing the whole batch.
|
|
68336
|
+
*/
|
|
68337
|
+
const redactSensitiveText = (text) => {
|
|
68338
|
+
if (typeof text !== "string" || text === "") return "";
|
|
68339
|
+
let redacted = text;
|
|
68340
|
+
for (const rule of KNOWN_SECRET_RULES) redacted = redacted.replace(rule.pattern, rule.replacement);
|
|
68341
|
+
return redactHighEntropyTokens(redacted);
|
|
68342
|
+
};
|
|
68343
|
+
const HOME_DIRECTORY = os.homedir();
|
|
68344
|
+
const USER_HOME_PATTERNS = [/[A-Za-z]:[\\/]Users[\\/][^\\/]+/gi, /(?:\/Users\/|\/home\/)[^/\\]+/gi];
|
|
68345
|
+
const scrubSensitivePaths = (text) => {
|
|
68346
|
+
let scrubbed = text;
|
|
68347
|
+
if (HOME_DIRECTORY.length > 1) scrubbed = scrubbed.split(HOME_DIRECTORY).join("~");
|
|
68348
|
+
for (const pattern of USER_HOME_PATTERNS) scrubbed = scrubbed.replace(pattern, "~");
|
|
68349
|
+
return scrubbed;
|
|
68350
|
+
};
|
|
68200
68351
|
const TRACER_PROJECT_NAME = "react-doctor";
|
|
68201
68352
|
const OTEL_ENDPOINT = string("REACT_DOCTOR_OTLP_ENDPOINT").pipe(option);
|
|
68202
68353
|
const OTEL_AUTH_HEADER = redacted("REACT_DOCTOR_OTLP_AUTH_HEADER").pipe(option);
|
|
68203
68354
|
/**
|
|
68204
|
-
*
|
|
68355
|
+
* Bring-your-own OpenTelemetry layer. The default `Effect.fn(...)` spans
|
|
68205
68356
|
* already populate the in-process tracer; this layer plugs an OTLP
|
|
68206
68357
|
* HTTP exporter into the runtime when the user opts in via:
|
|
68207
68358
|
*
|
|
@@ -68217,7 +68368,7 @@ const OTEL_AUTH_HEADER = redacted("REACT_DOCTOR_OTLP_AUTH_HEADER").pipe(option);
|
|
|
68217
68368
|
* inspect / diagnose orchestrators always run, this layer just
|
|
68218
68369
|
* dictates whether the spans they emit get shipped to a backend.
|
|
68219
68370
|
*/
|
|
68220
|
-
const
|
|
68371
|
+
const layerUserOtlp = unwrap$3(gen(function* () {
|
|
68221
68372
|
const endpoint = yield* OTEL_ENDPOINT;
|
|
68222
68373
|
const authHeader = yield* OTEL_AUTH_HEADER;
|
|
68223
68374
|
if (endpoint._tag === "None" || authHeader._tag === "None") return empty$7;
|
|
@@ -73627,149 +73778,6 @@ const mapPreparedSourceLabels = (labels, preparedSourceMap) => {
|
|
|
73627
73778
|
}
|
|
73628
73779
|
return mappedLabels;
|
|
73629
73780
|
};
|
|
73630
|
-
const REDACTED_PLACEHOLDER = "<redacted>";
|
|
73631
|
-
const KEEP_PREFIX = `$1${REDACTED_PLACEHOLDER}`;
|
|
73632
|
-
const KNOWN_SECRET_RULES = [
|
|
73633
|
-
{
|
|
73634
|
-
pattern: /-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g,
|
|
73635
|
-
replacement: REDACTED_PLACEHOLDER
|
|
73636
|
-
},
|
|
73637
|
-
{
|
|
73638
|
-
pattern: /\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}/g,
|
|
73639
|
-
replacement: REDACTED_PLACEHOLDER
|
|
73640
|
-
},
|
|
73641
|
-
{
|
|
73642
|
-
pattern: /(?<=:\/\/)[^\s/:@]+:[^\s/@]+(?=@)/g,
|
|
73643
|
-
replacement: REDACTED_PLACEHOLDER
|
|
73644
|
-
},
|
|
73645
|
-
{
|
|
73646
|
-
pattern: /\b(AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA|A3T[A-Z0-9])[0-9A-Z]{16,}/g,
|
|
73647
|
-
replacement: KEEP_PREFIX
|
|
73648
|
-
},
|
|
73649
|
-
{
|
|
73650
|
-
pattern: /\b(gh[pousr]_)[A-Za-z0-9]{36,}/g,
|
|
73651
|
-
replacement: KEEP_PREFIX
|
|
73652
|
-
},
|
|
73653
|
-
{
|
|
73654
|
-
pattern: /\b(github_pat_)[A-Za-z0-9_]{22,}/g,
|
|
73655
|
-
replacement: KEEP_PREFIX
|
|
73656
|
-
},
|
|
73657
|
-
{
|
|
73658
|
-
pattern: /\b(glpat-)[A-Za-z0-9_-]{20,}/g,
|
|
73659
|
-
replacement: KEEP_PREFIX
|
|
73660
|
-
},
|
|
73661
|
-
{
|
|
73662
|
-
pattern: /\b(xox[baprs]-)[A-Za-z0-9-]{10,}/g,
|
|
73663
|
-
replacement: KEEP_PREFIX
|
|
73664
|
-
},
|
|
73665
|
-
{
|
|
73666
|
-
pattern: /(?<=hooks\.slack\.com\/services\/)[A-Za-z0-9/+_-]{20,}/g,
|
|
73667
|
-
replacement: REDACTED_PLACEHOLDER
|
|
73668
|
-
},
|
|
73669
|
-
{
|
|
73670
|
-
pattern: /\b((?:sk|rk)_(?:live|test)_)[0-9A-Za-z]{10,}/g,
|
|
73671
|
-
replacement: KEEP_PREFIX
|
|
73672
|
-
},
|
|
73673
|
-
{
|
|
73674
|
-
pattern: /\b(sk-(?:proj-|ant-)?)[A-Za-z0-9_-]{20,}/g,
|
|
73675
|
-
replacement: KEEP_PREFIX
|
|
73676
|
-
},
|
|
73677
|
-
{
|
|
73678
|
-
pattern: /\b(AIza)[0-9A-Za-z_-]{35,}/g,
|
|
73679
|
-
replacement: KEEP_PREFIX
|
|
73680
|
-
},
|
|
73681
|
-
{
|
|
73682
|
-
pattern: /\b(ya29\.)[0-9A-Za-z_-]{20,}/g,
|
|
73683
|
-
replacement: KEEP_PREFIX
|
|
73684
|
-
},
|
|
73685
|
-
{
|
|
73686
|
-
pattern: /\b(npm_)[A-Za-z0-9]{36,}/g,
|
|
73687
|
-
replacement: KEEP_PREFIX
|
|
73688
|
-
},
|
|
73689
|
-
{
|
|
73690
|
-
pattern: /\b(SG\.)[A-Za-z0-9_-]{22,}\.[A-Za-z0-9_-]{43,}/g,
|
|
73691
|
-
replacement: KEEP_PREFIX
|
|
73692
|
-
},
|
|
73693
|
-
{
|
|
73694
|
-
pattern: /\b(SK)[0-9a-fA-F]{32,}/g,
|
|
73695
|
-
replacement: KEEP_PREFIX
|
|
73696
|
-
},
|
|
73697
|
-
{
|
|
73698
|
-
pattern: /\b(dop_v1_)[a-f0-9]{64,}/g,
|
|
73699
|
-
replacement: KEEP_PREFIX
|
|
73700
|
-
},
|
|
73701
|
-
{
|
|
73702
|
-
pattern: /\b(shp(?:at|ca|pa|ss)_)[a-fA-F0-9]{32,}/g,
|
|
73703
|
-
replacement: KEEP_PREFIX
|
|
73704
|
-
},
|
|
73705
|
-
{
|
|
73706
|
-
pattern: /\b(sq0[a-z]{3}-)[0-9A-Za-z_-]{22,}/g,
|
|
73707
|
-
replacement: KEEP_PREFIX
|
|
73708
|
-
},
|
|
73709
|
-
{
|
|
73710
|
-
pattern: /\b([0-9]{8,10}:AA)[0-9A-Za-z_-]{32,}/g,
|
|
73711
|
-
replacement: KEEP_PREFIX
|
|
73712
|
-
},
|
|
73713
|
-
{
|
|
73714
|
-
pattern: /(?<=\bBearer\s)[A-Za-z0-9._~+/=-]{16,}/g,
|
|
73715
|
-
replacement: REDACTED_PLACEHOLDER
|
|
73716
|
-
},
|
|
73717
|
-
{
|
|
73718
|
-
pattern: /\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,
|
|
73719
|
-
replacement: REDACTED_PLACEHOLDER
|
|
73720
|
-
}
|
|
73721
|
-
];
|
|
73722
|
-
const CANDIDATE_TOKEN_PATTERN = /[A-Za-z0-9_][A-Za-z0-9_-]*/g;
|
|
73723
|
-
const HEX_DIGEST_PATTERN = /^(?:[0-9a-f]{32}|[0-9a-f]{40}|[0-9a-f]{64})$/;
|
|
73724
|
-
const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
73725
|
-
const HAS_LETTER_PATTERN = /[A-Za-z]/;
|
|
73726
|
-
const HAS_DIGIT_PATTERN = /[0-9]/;
|
|
73727
|
-
const shannonEntropyBits = (value) => {
|
|
73728
|
-
const counts = /* @__PURE__ */ new Map();
|
|
73729
|
-
for (const char of value) counts.set(char, (counts.get(char) ?? 0) + 1);
|
|
73730
|
-
let bits = 0;
|
|
73731
|
-
for (const count of counts.values()) {
|
|
73732
|
-
const probability = count / value.length;
|
|
73733
|
-
bits -= probability * Math.log2(probability);
|
|
73734
|
-
}
|
|
73735
|
-
return bits;
|
|
73736
|
-
};
|
|
73737
|
-
const looksLikeHighEntropySecret = (token) => {
|
|
73738
|
-
if (token.length < 32) return false;
|
|
73739
|
-
if (!HAS_LETTER_PATTERN.test(token) || !HAS_DIGIT_PATTERN.test(token)) return false;
|
|
73740
|
-
if (HEX_DIGEST_PATTERN.test(token) || UUID_PATTERN.test(token)) return false;
|
|
73741
|
-
return shannonEntropyBits(token) >= 3;
|
|
73742
|
-
};
|
|
73743
|
-
const redactHighEntropyTokens = (text) => text.replace(CANDIDATE_TOKEN_PATTERN, (token) => looksLikeHighEntropySecret(token) ? REDACTED_PLACEHOLDER : token);
|
|
73744
|
-
/**
|
|
73745
|
-
* Masks API keys, tokens, private keys, credentialed URLs, and emails
|
|
73746
|
-
* found anywhere inside a free-text string, returning the scrubbed text.
|
|
73747
|
-
* Applied to every diagnostic's `message` / `help` at construction time
|
|
73748
|
-
* so secrets never reach the terminal, the JSON report, or the score
|
|
73749
|
-
* API — react-doctor must never echo or transmit a user's secrets.
|
|
73750
|
-
*
|
|
73751
|
-
* Provider tokens keep their non-secret, type-identifying prefix (e.g.
|
|
73752
|
-
* `sk_live_<redacted>`, `ghp_<redacted>`, `AKIA<redacted>`) so the leaked
|
|
73753
|
-
* credential's type stays visible; structural or unknown-format secrets
|
|
73754
|
-
* with no meaningful prefix are masked whole.
|
|
73755
|
-
*
|
|
73756
|
-
* Runs the high-precision known-shape detectors first, then a generic
|
|
73757
|
-
* entropy-gated sweep for unknown-format secrets. Idempotent: the inert
|
|
73758
|
-
* `<redacted>` placeholder matches none of the detectors and is too
|
|
73759
|
-
* short for the generic sweep, so re-running leaves the text unchanged.
|
|
73760
|
-
*
|
|
73761
|
-
* Accepts `unknown` on purpose: callers feed it diagnostic `message` /
|
|
73762
|
-
* `help` that originate from oxlint JSON, which is only shape-checked at
|
|
73763
|
-
* the top level (the per-field `string` types are assumed, not validated).
|
|
73764
|
-
* A malformed non-string value returns `""` instead of throwing on
|
|
73765
|
-
* `.replace`, so one bad diagnostic can't abort parsing the whole batch.
|
|
73766
|
-
*/
|
|
73767
|
-
const redactSensitiveText = (text) => {
|
|
73768
|
-
if (typeof text !== "string" || text === "") return "";
|
|
73769
|
-
let redacted = text;
|
|
73770
|
-
for (const rule of KNOWN_SECRET_RULES) redacted = redacted.replace(rule.pattern, rule.replacement);
|
|
73771
|
-
return redactHighEntropyTokens(redacted);
|
|
73772
|
-
};
|
|
73773
73781
|
const REACT_MODULE_SOURCE = "react";
|
|
73774
73782
|
const REQUIRE_IDENTIFIER = "require";
|
|
73775
73783
|
const USE_IDENTIFIER = "use";
|
|
@@ -75963,14 +75971,6 @@ var Reporter = class Reporter extends Service()("react-doctor/Reporter") {
|
|
|
75963
75971
|
});
|
|
75964
75972
|
}));
|
|
75965
75973
|
};
|
|
75966
|
-
const HOME_DIRECTORY = os.homedir();
|
|
75967
|
-
const USER_HOME_PATTERNS = [/[A-Za-z]:[\\/]Users[\\/][^\\/]+/gi, /(?:\/Users\/|\/home\/)[^/\\]+/gi];
|
|
75968
|
-
const scrubSensitivePaths = (text) => {
|
|
75969
|
-
let scrubbed = text;
|
|
75970
|
-
if (HOME_DIRECTORY.length > 1) scrubbed = scrubbed.split(HOME_DIRECTORY).join("~");
|
|
75971
|
-
for (const pattern of USER_HOME_PATTERNS) scrubbed = scrubbed.replace(pattern, "~");
|
|
75972
|
-
return scrubbed;
|
|
75973
|
-
};
|
|
75974
75974
|
const ScoreApiResponseSchema = Struct({
|
|
75975
75975
|
score: Number$1,
|
|
75976
75976
|
label: String$1,
|
|
@@ -76932,7 +76932,7 @@ const runInspect = (input, hooks = {}) => gen(function* () {
|
|
|
76932
76932
|
suppressedRuleCounts: transform.summarizeSuppressions()
|
|
76933
76933
|
};
|
|
76934
76934
|
}).pipe(withSpan("runInspect", { attributes: {
|
|
76935
|
-
"inspect.directory": input.directory,
|
|
76935
|
+
"inspect.directory": scrubSensitivePaths(input.directory),
|
|
76936
76936
|
"inspect.includePathCount": input.includePaths.length,
|
|
76937
76937
|
"inspect.runDeadCode": input.runDeadCode,
|
|
76938
76938
|
"inspect.isCi": input.isCi,
|
|
@@ -77525,7 +77525,7 @@ const diagnoseDirectory = async (directory, options) => {
|
|
|
77525
77525
|
shouldRunDeadCode,
|
|
77526
77526
|
oxlintConcurrency,
|
|
77527
77527
|
oxlintSpawnSlots
|
|
77528
|
-
})), provide(
|
|
77528
|
+
})), provide(layerUserOtlp)))), globalThis.performance.now() - startTime);
|
|
77529
77529
|
};
|
|
77530
77530
|
const findWorstScore = (projectResults) => {
|
|
77531
77531
|
let worstResult = null;
|
|
@@ -77573,7 +77573,7 @@ const diagnoseProject = async (projectDefinition, baseOptions, batchConfig, oxli
|
|
|
77573
77573
|
});
|
|
77574
77574
|
return {
|
|
77575
77575
|
ok: true,
|
|
77576
|
-
...outputToDiagnoseResult(await runPromise(restoreLegacyThrow(program.pipe(provide(layer), provide(
|
|
77576
|
+
...outputToDiagnoseResult(await runPromise(restoreLegacyThrow(program.pipe(provide(layer), provide(layerUserOtlp)))), globalThis.performance.now() - startTime),
|
|
77577
77577
|
directory: scanTarget.resolvedDirectory
|
|
77578
77578
|
};
|
|
77579
77579
|
} catch (error) {
|
|
@@ -77635,4 +77635,4 @@ const toJsonReport = (result, options) => buildJsonReport({
|
|
|
77635
77635
|
export { AmbiguousProjectError, NoReactDependencyError, NotADirectoryError, PackageJsonNotFoundError, ProjectNotFoundError, ReactDoctorError, buildJsonReport, buildJsonReportError, clearCaches, defineConfig, diagnose, filterSourceFiles, getDiffInfo, hasReactRuntime, isProjectDiscoveryError, isReactDoctorError, summarizeDiagnostics, toJsonReport };
|
|
77636
77636
|
|
|
77637
77637
|
//# sourceMappingURL=index.js.map
|
|
77638
|
-
//# debugId=
|
|
77638
|
+
//# debugId=7502d11b-5ed7-52f7-a187-ac7c37461881
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { n as handleError, r as handleUserError, t as reportErrorToSentry } from "./report-error-
|
|
7
|
-
import { F as runGitRaw, L as cliLogger, c as spinner, i as hasDoctorScript, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-
|
|
8
|
-
import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, i as isReactDoctorWorkflowInstalled, l as prompts, s as upgradeWorkflowActionToV2 } from "./install-github-workflow-
|
|
9
|
-
import { c as openWorkflowPullRequest, i as warnDeprecatedDiff, l as stageWorkflowFile, r as resolveScope, s as resolveBlockingLevel, t as finalizeScope, u as toForwardSlashes } from "./resolve-scope-
|
|
10
|
-
import { t as shouldSkipPrompts } from "./should-skip-prompts-
|
|
11
|
-
import { A as resolveMergeBaseRef, B as buildEmptyReportMessage, C as copyToClipboard, D as deduplicateProjectScans, E as collectProjectSourceFileCounts, F as printDiagnosticsDump, O as createInvocationInspect, R as filterDiagnosticsByCategories, S as CLI_AGENT_BINARIES, T as buildHandoffPayload, _ as resolveCliInspectOptions, a as projectManifestChanged, b as setUpGitHubActions, c as selectProjects, d as resolveProjectChangedLineRanges, f as resolveProjectDiffIncludePaths, g as resolveWorkspaceDeadCodeOwner, h as retryMissingProjectScores, i as validateModeFlags, j as printHeadlessReport, k as inspect, l as buildCodeFrame, m as resolveProjectRelativeDirectory, n as formatSkippedProjectsMessage, o as partitionProjectScanOutcomes, p as resolveProjectSourceFilePaths, r as validateIncludeUntrackedScope, t as shouldFailScanGate, u as resolveProjectScan, v as filterScansForSurface, w as launchCliAgent, x as detectLaunchableAgents, y as countUniqueScannedFiles } from "./should-fail-scan-gate-
|
|
12
|
-
import { a as recordGate, i as readPreference, o as runMigrations, p as SETUP_HINT_EVENT, r as isGatePending, s as writePreference, u as HANDOFF_TARGET_PREFERENCE_ID } from "./report-workflow-result-
|
|
13
|
-
import { a as askUpgradeActionVersion, c as recordCiPromptDecision, i as installReactDoctorAgentHooks, l as hasHandledActionUpgrade, o as askAddToGitHubActions, r as findAgentsWithLegacyShellHooks, s as hasHandledCiPrompt, t as getSkillSourceDirectory, u as recordActionUpgradeDecision } from "./install-react-doctor-
|
|
14
|
-
import { t as readObjectFile } from "./read-object-file-
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="bfa08a2a-c71c-57d5-ae3e-74e31a6ca015")}catch(e){}}();
|
|
3
|
+
import { Cn as mapWithConcurrency, Dn as remainingDeadlineBudgetMs, En as messageFromUnknown, F as STAGED_SNAPSHOT_ADDITIONAL_CONFIG_FILENAMES, G as isCiOrCodingAgentEnvironment, Gt as discoverReactSubprojects, K as isCodingAgentEnvironment, Mn as resolveScanTarget, Nt as buildJsonReport, Ot as StagedFiles, P as STAGED_FILES_TEMP_DIR_PREFIX, Qt as getBaselineDiffPlan, R as CliInputError, Tt as STAGED_FILES_PROJECT_CONFIG_FILENAMES, V as isDebugFlagEnabled, Wt as detectAiTrainingEnvironment, Xn as gen, Y as CANONICAL_GITHUB_URL, Yt as findLegacyConfig, cn as highlighter, ct as Git, dr as provide, en as getChangedLineRanges, f as setJsonReportDirectory, g as VERSION, h as writeJsonReport, ir as runPromise, m as writeJsonErrorReport, mn as isPlainObject, n as recordDistribution, nn as getDiffInfo, on as hasReactRuntime, p as setJsonReportMode, pn as isPathInsideDirectory, t as recordCount, tr as provide$1, u as enableJsonMode, un as isErrnoException, w as METRIC, xn as listWorkspacePackages, zn as toRelativePath } from "./record-metric-BE4W9NsY.js";
|
|
4
|
+
import { c as isExpectedUserError, s as shutdownTelemetry } from "./unref-stdin-WJS2VNFJ.js";
|
|
5
|
+
import { i as flushSentry } from "./build-section-divider-Dqnkjosd.js";
|
|
6
|
+
import { n as handleError, r as handleUserError, t as reportErrorToSentry } from "./report-error-BcxyEZqQ.js";
|
|
7
|
+
import { F as runGitRaw, L as cliLogger, c as spinner, i as hasDoctorScript, n as findNearestPackageDirectory, o as isSpinnerSilent, s as setSpinnerSilent } from "./install-doctor-script-DE8IUn7u.js";
|
|
8
|
+
import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, i as isReactDoctorWorkflowInstalled, l as prompts, s as upgradeWorkflowActionToV2 } from "./install-github-workflow-COlI8Ygf.js";
|
|
9
|
+
import { c as openWorkflowPullRequest, i as warnDeprecatedDiff, l as stageWorkflowFile, r as resolveScope, s as resolveBlockingLevel, t as finalizeScope, u as toForwardSlashes } from "./resolve-scope-O3agwyD8.js";
|
|
10
|
+
import { t as shouldSkipPrompts } from "./should-skip-prompts-f3iHsUsZ.js";
|
|
11
|
+
import { A as resolveMergeBaseRef, B as buildEmptyReportMessage, C as copyToClipboard, D as deduplicateProjectScans, E as collectProjectSourceFileCounts, F as printDiagnosticsDump, O as createInvocationInspect, R as filterDiagnosticsByCategories, S as CLI_AGENT_BINARIES, T as buildHandoffPayload, _ as resolveCliInspectOptions, a as projectManifestChanged, b as setUpGitHubActions, c as selectProjects, d as resolveProjectChangedLineRanges, f as resolveProjectDiffIncludePaths, g as resolveWorkspaceDeadCodeOwner, h as retryMissingProjectScores, i as validateModeFlags, j as printHeadlessReport, k as inspect, l as buildCodeFrame, m as resolveProjectRelativeDirectory, n as formatSkippedProjectsMessage, o as partitionProjectScanOutcomes, p as resolveProjectSourceFilePaths, r as validateIncludeUntrackedScope, t as shouldFailScanGate, u as resolveProjectScan, v as filterScansForSurface, w as launchCliAgent, x as detectLaunchableAgents, y as countUniqueScannedFiles } from "./should-fail-scan-gate-ChTwe1SJ.js";
|
|
12
|
+
import { a as recordGate, i as readPreference, o as runMigrations, p as SETUP_HINT_EVENT, r as isGatePending, s as writePreference, u as HANDOFF_TARGET_PREFERENCE_ID } from "./report-workflow-result-BIYz6Xh4.js";
|
|
13
|
+
import { a as askUpgradeActionVersion, c as recordCiPromptDecision, i as installReactDoctorAgentHooks, l as hasHandledActionUpgrade, o as askAddToGitHubActions, r as findAgentsWithLegacyShellHooks, s as hasHandledCiPrompt, t as getSkillSourceDirectory, u as recordActionUpgradeDecision } from "./install-react-doctor-CN-Ysvqg.js";
|
|
14
|
+
import { t as readObjectFile } from "./read-object-file-NUALLod8.js";
|
|
15
15
|
import * as path$1 from "node:path";
|
|
16
16
|
import * as fs$1 from "node:fs";
|
|
17
17
|
import { tmpdir } from "node:os";
|
|
@@ -1423,7 +1423,7 @@ const inspectAction = async (directory, flags, invocationCommand = "inspect") =>
|
|
|
1423
1423
|
scanStartupSpinner?.stop();
|
|
1424
1424
|
const isUserError = isExpectedUserError(error);
|
|
1425
1425
|
const sentryEventId = isUserError ? void 0 : await reportErrorToSentry(error);
|
|
1426
|
-
if (isDebugFlagEnabled()) await flushSentry();
|
|
1426
|
+
if (isDebugFlagEnabled()) await Promise.all([flushSentry(), shutdownTelemetry()]);
|
|
1427
1427
|
if (isJsonMode) {
|
|
1428
1428
|
writeJsonErrorReport(error, sentryEventId);
|
|
1429
1429
|
process.exitCode = 1;
|
|
@@ -1439,5 +1439,5 @@ const inspectAction = async (directory, flags, invocationCommand = "inspect") =>
|
|
|
1439
1439
|
//#endregion
|
|
1440
1440
|
export { warnDeprecatedFailOn as n, runProjectMigrations as r, inspectAction as t };
|
|
1441
1441
|
|
|
1442
|
-
//# sourceMappingURL=inspect-
|
|
1443
|
-
//# debugId=
|
|
1442
|
+
//# sourceMappingURL=inspect-DspBK6iV.js.map
|
|
1443
|
+
//# debugId=bfa08a2a-c71c-57d5-ae3e-74e31a6ca015
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { n as handleError, r as handleUserError, t as reportErrorToSentry } from "./report-error-
|
|
6
|
-
import { t as printBrandedHeader } from "./print-branded-header-
|
|
7
|
-
import { n as runInstallReactDoctor } from "./install-react-doctor-
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="b70c252a-baf1-5462-8d22-ae29fd21acaf")}catch(e){}}();
|
|
3
|
+
import { ar as runSync, t as recordCount, w as METRIC } from "./record-metric-BE4W9NsY.js";
|
|
4
|
+
import { c as isExpectedUserError } from "./unref-stdin-WJS2VNFJ.js";
|
|
5
|
+
import { n as handleError, r as handleUserError, t as reportErrorToSentry } from "./report-error-BcxyEZqQ.js";
|
|
6
|
+
import { t as printBrandedHeader } from "./print-branded-header-CyZuPgPz.js";
|
|
7
|
+
import { n as runInstallReactDoctor } from "./install-react-doctor-CN-Ysvqg.js";
|
|
8
8
|
//#region src/cli/commands/install.ts
|
|
9
9
|
const installAction = async (options, command) => {
|
|
10
10
|
recordCount(METRIC.cliInvoked, 1, { command: "install" });
|
|
@@ -28,5 +28,5 @@ const installAction = async (options, command) => {
|
|
|
28
28
|
//#endregion
|
|
29
29
|
export { installAction };
|
|
30
30
|
|
|
31
|
-
//# sourceMappingURL=install-
|
|
32
|
-
//# debugId=
|
|
31
|
+
//# sourceMappingURL=install-Bq82FRWq.js.map
|
|
32
|
+
//# debugId=b70c252a-baf1-5462-8d22-ae29fd21acaf
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
-
import {
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="8c116b03-6b7f-5f3b-b4dd-7edc225683b5")}catch(e){}}();
|
|
3
|
+
import { Gn as log, Kn as warn, O as RUN_GIT_MAX_BUFFER_BYTES, Un as error$1, Wn as info$1, ar as runSync, cn as highlighter, z as isNonInteractiveEnvironment } from "./record-metric-BE4W9NsY.js";
|
|
4
4
|
import { execFileSync } from "node:child_process";
|
|
5
5
|
import * as path$1 from "node:path";
|
|
6
6
|
import * as fs$1 from "node:fs";
|
|
@@ -3247,5 +3247,5 @@ const installReactDoctorScriptStep = (projectRoot) => {
|
|
|
3247
3247
|
//#endregion
|
|
3248
3248
|
export { packageHasNestedRecordKey as A, SIMPLE_GIT_HOOKS_CONFIG_FILE as C, getPackageJsonPath as D, ensureTrailingNewline as E, runGitRaw as F, writeJsonFile as I, cliLogger as L, readPackageJson as M, resolveGitPath as N, isRecord as O, runGit as P, REACT_DOCTOR_COMMAND as S, VITE_PLUS_HOOKS_PATH as T, LEFTHOOK_CONFIG_FILES as _, installReactDoctorScriptStep as a, OVERCOMMIT_CONFIG_FILE as b, spinner as c, stripAnsi as d, isUnicodeSupported as f, HUSKY_HOOKS_PATH as g, HOOK_RELATIVE_PATH as h, hasDoctorScript as i, packageHasRecordKey as j, packageHasDependency as k, isFullWidth as l, HOOK_FILE_NAME as m, findNearestPackageDirectory as n, isSpinnerSilent as o, chalk as p, hasDoctorDependency as r, setSpinnerSilent as s, DOCTOR_PACKAGE_NAME as t, isWide as u, LEGACY_HOOK_RUNNER_RELATIVE_PATH as v, SIMPLE_GIT_HOOKS_PACKAGE_JSON_KEY as w, PRE_COMMIT_CONFIG_FILE as x, NON_BLOCKING_REACT_DOCTOR_COMMAND as y };
|
|
3249
3249
|
|
|
3250
|
-
//# sourceMappingURL=install-doctor-script-
|
|
3251
|
-
//# debugId=
|
|
3250
|
+
//# sourceMappingURL=install-doctor-script-DE8IUn7u.js.map
|
|
3251
|
+
//# debugId=8c116b03-6b7f-5f3b-b4dd-7edc225683b5
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
-
import {
|
|
4
|
-
import { t as unrefStdin } from "./unref-stdin-
|
|
5
|
-
import { L as cliLogger } from "./install-doctor-script-
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="0f49ff91-8f31-5869-a51b-8c10924e849c")}catch(e){}}();
|
|
3
|
+
import { C as GH_DEFAULT_BRANCH_PROBE_TIMEOUT_MS } from "./record-metric-BE4W9NsY.js";
|
|
4
|
+
import { t as unrefStdin } from "./unref-stdin-WJS2VNFJ.js";
|
|
5
|
+
import { L as cliLogger } from "./install-doctor-script-DE8IUn7u.js";
|
|
6
6
|
import { createRequire } from "node:module";
|
|
7
7
|
import { execFile } from "node:child_process";
|
|
8
8
|
import * as path$1 from "node:path";
|
|
@@ -263,5 +263,5 @@ const upgradeReactDoctorWorkflowInPlace = (projectRoot) => {
|
|
|
263
263
|
//#endregion
|
|
264
264
|
export { readReactDoctorWorkflow as a, workflowUsesV1Action as c, detectDefaultBranch as d, runCommand as f, isReactDoctorWorkflowInstalled as i, prompts as l, getReactDoctorWorkflowPath as n, upgradeReactDoctorWorkflowInPlace as o, installReactDoctorWorkflow as r, upgradeWorkflowActionToV2 as s, buildWorkflowContent as t, isCommandAvailable as u };
|
|
265
265
|
|
|
266
|
-
//# sourceMappingURL=install-github-workflow-
|
|
267
|
-
//# debugId=
|
|
266
|
+
//# sourceMappingURL=install-github-workflow-COlI8Ygf.js.map
|
|
267
|
+
//# debugId=0f49ff91-8f31-5869-a51b-8c10924e849c
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="
|
|
3
|
-
import {
|
|
4
|
-
import { A as packageHasNestedRecordKey, D as getPackageJsonPath, E as ensureTrailingNewline, I as writeJsonFile, L as cliLogger, M as readPackageJson, N as resolveGitPath, O as isRecord, P as runGit, S as REACT_DOCTOR_COMMAND, T as VITE_PLUS_HOOKS_PATH, _ as LEFTHOOK_CONFIG_FILES, a as installReactDoctorScriptStep, b as OVERCOMMIT_CONFIG_FILE, c as spinner, g as HUSKY_HOOKS_PATH, h as HOOK_RELATIVE_PATH, j as packageHasRecordKey, k as packageHasDependency, m as HOOK_FILE_NAME, n as findNearestPackageDirectory, r as hasDoctorDependency, t as DOCTOR_PACKAGE_NAME, v as LEGACY_HOOK_RUNNER_RELATIVE_PATH, x as PRE_COMMIT_CONFIG_FILE, y as NON_BLOCKING_REACT_DOCTOR_COMMAND } from "./install-doctor-script-
|
|
5
|
-
import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, d as detectDefaultBranch, l as prompts, n as getReactDoctorWorkflowPath, o as upgradeReactDoctorWorkflowInPlace, r as installReactDoctorWorkflow } from "./install-github-workflow-
|
|
6
|
-
import { t as shouldSkipPrompts } from "./should-skip-prompts-
|
|
7
|
-
import { a as recordGate, c as ACTION_UPGRADE_EVENT, d as INSTALL_AGENTS_PREFERENCE_ID, h as detectAvailableAgents, i as readPreference, l as CI_PITCH_EVENT, m as computeDefaultSelectedAgents, n as openUrl, r as isGatePending, s as writePreference, t as reportWorkflowResult } from "./report-workflow-result-
|
|
2
|
+
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="839dca30-afd7-5a9e-9149-1b4012c231e7")}catch(e){}}();
|
|
3
|
+
import { R as CliInputError, S as CI_TRUST_COMPANIES, cn as highlighter, ot as GITHUB_ACTIONS_SETUP_URL, t as recordCount, un as isErrnoException, w as METRIC, wt as SKILL_NAME } from "./record-metric-BE4W9NsY.js";
|
|
4
|
+
import { A as packageHasNestedRecordKey, D as getPackageJsonPath, E as ensureTrailingNewline, I as writeJsonFile, L as cliLogger, M as readPackageJson, N as resolveGitPath, O as isRecord, P as runGit, S as REACT_DOCTOR_COMMAND, T as VITE_PLUS_HOOKS_PATH, _ as LEFTHOOK_CONFIG_FILES, a as installReactDoctorScriptStep, b as OVERCOMMIT_CONFIG_FILE, c as spinner, g as HUSKY_HOOKS_PATH, h as HOOK_RELATIVE_PATH, j as packageHasRecordKey, k as packageHasDependency, m as HOOK_FILE_NAME, n as findNearestPackageDirectory, r as hasDoctorDependency, t as DOCTOR_PACKAGE_NAME, v as LEGACY_HOOK_RUNNER_RELATIVE_PATH, x as PRE_COMMIT_CONFIG_FILE, y as NON_BLOCKING_REACT_DOCTOR_COMMAND } from "./install-doctor-script-DE8IUn7u.js";
|
|
5
|
+
import { a as readReactDoctorWorkflow, c as workflowUsesV1Action, d as detectDefaultBranch, l as prompts, n as getReactDoctorWorkflowPath, o as upgradeReactDoctorWorkflowInPlace, r as installReactDoctorWorkflow } from "./install-github-workflow-COlI8Ygf.js";
|
|
6
|
+
import { t as shouldSkipPrompts } from "./should-skip-prompts-f3iHsUsZ.js";
|
|
7
|
+
import { a as recordGate, c as ACTION_UPGRADE_EVENT, d as INSTALL_AGENTS_PREFERENCE_ID, h as detectAvailableAgents, i as readPreference, l as CI_PITCH_EVENT, m as computeDefaultSelectedAgents, n as openUrl, r as isGatePending, s as writePreference, t as reportWorkflowResult } from "./report-workflow-result-BIYz6Xh4.js";
|
|
8
8
|
import { execFile } from "node:child_process";
|
|
9
9
|
import * as path$1 from "node:path";
|
|
10
10
|
import * as fs$1 from "node:fs";
|
|
@@ -1150,5 +1150,5 @@ const runInstallReactDoctor = async (options = {}) => {
|
|
|
1150
1150
|
//#endregion
|
|
1151
1151
|
export { askUpgradeActionVersion as a, recordCiPromptDecision as c, installReactDoctorAgentHooks as i, hasHandledActionUpgrade as l, runInstallReactDoctor as n, askAddToGitHubActions as o, findAgentsWithLegacyShellHooks as r, hasHandledCiPrompt as s, getSkillSourceDirectory as t, recordActionUpgradeDecision as u };
|
|
1152
1152
|
|
|
1153
|
-
//# sourceMappingURL=install-react-doctor-
|
|
1154
|
-
//# debugId=
|
|
1153
|
+
//# sourceMappingURL=install-react-doctor-CN-Ysvqg.js.map
|
|
1154
|
+
//# debugId=839dca30-afd7-5a9e-9149-1b4012c231e7
|