@i18nprune/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +165 -0
  3. package/dist/adapters-gp1lXp0T.d.ts +12 -0
  4. package/dist/capabilities-x74cD2Hu.d.ts +48 -0
  5. package/dist/cleanup.d.ts +64 -0
  6. package/dist/cleanup.js +3999 -0
  7. package/dist/config.d.ts +201 -0
  8. package/dist/config.js +2865 -0
  9. package/dist/coreContext-DMaWLvmB.d.ts +388 -0
  10. package/dist/fs-BUYD8ZhA.d.ts +20 -0
  11. package/dist/generate.d.ts +487 -0
  12. package/dist/generate.js +9389 -0
  13. package/dist/humanEmit-ygNlYX-S.d.ts +79 -0
  14. package/dist/index-BQuLEQ9b.d.ts +7 -0
  15. package/dist/index-B_ow_Xvr.d.ts +97 -0
  16. package/dist/index-BgG01AKL.d.ts +287 -0
  17. package/dist/index-CIzZl4W8.d.ts +124 -0
  18. package/dist/index-Csm1w7XD.d.ts +58 -0
  19. package/dist/index-DLwTogCo.d.ts +43 -0
  20. package/dist/index-DVT26v11.d.ts +61 -0
  21. package/dist/index-DdjljwMj.d.ts +39 -0
  22. package/dist/index-DeIw-cZd.d.ts +52 -0
  23. package/dist/index-X50E1FIX.d.ts +50 -0
  24. package/dist/index.d.ts +9180 -0
  25. package/dist/index.js +21888 -0
  26. package/dist/init.d.ts +86 -0
  27. package/dist/init.js +848 -0
  28. package/dist/listWindow-XEFxQZi1.d.ts +30 -0
  29. package/dist/localeTargetCodes-BBIQjauw.d.ts +11 -0
  30. package/dist/locales.d.ts +39 -0
  31. package/dist/locales.js +2288 -0
  32. package/dist/missing-BVCvgUC8.d.ts +10 -0
  33. package/dist/missing.d.ts +85 -0
  34. package/dist/missing.js +5892 -0
  35. package/dist/modeResolve-cGVaY5Hh.d.ts +25 -0
  36. package/dist/path-Bfn3SAts.d.ts +11 -0
  37. package/dist/profile-BwOP9WKh.d.ts +9 -0
  38. package/dist/providers-0uMEfT6q.d.ts +82 -0
  39. package/dist/prune-c6hKZCv_.d.ts +33 -0
  40. package/dist/quality.d.ts +36 -0
  41. package/dist/quality.js +3868 -0
  42. package/dist/report-D5-6bVFj.d.ts +8 -0
  43. package/dist/report-schema.d.ts +102 -0
  44. package/dist/report-schema.js +42 -0
  45. package/dist/resumeCandidates-xR13eEwt.d.ts +200 -0
  46. package/dist/root-2-kCaBvQ.d.ts +1110 -0
  47. package/dist/runtime/edge.d.ts +21 -0
  48. package/dist/runtime/edge.js +87 -0
  49. package/dist/runtime/helpers/sync.d.ts +16 -0
  50. package/dist/runtime/helpers/sync.js +117 -0
  51. package/dist/runtime/node.d.ts +24 -0
  52. package/dist/runtime/node.js +204 -0
  53. package/dist/runtime/web.d.ts +21 -0
  54. package/dist/runtime/web.js +84 -0
  55. package/dist/shared.d.ts +1177 -0
  56. package/dist/shared.js +4897 -0
  57. package/dist/sourceContext-1LQg3HiQ.d.ts +36 -0
  58. package/dist/sourceSurface-mDtwGo1E.d.ts +122 -0
  59. package/dist/sync.d.ts +86 -0
  60. package/dist/sync.js +4971 -0
  61. package/dist/syncSegment-Bx6He2Mu.d.ts +149 -0
  62. package/dist/targets-EmtKyr6F.d.ts +23 -0
  63. package/dist/template-CGM-_WLT.d.ts +139 -0
  64. package/dist/translate-CIHYp7wi.d.ts +77 -0
  65. package/dist/types/shared.d.ts +21 -0
  66. package/dist/types/shared.js +1 -0
  67. package/dist/types.d.ts +1345 -0
  68. package/dist/types.js +1 -0
  69. package/dist/validate.d.ts +126 -0
  70. package/dist/validate.js +3717 -0
  71. package/package.json +128 -0
@@ -0,0 +1,149 @@
1
+ import { T as TranslationSurfaceLeaf, L as LocaleReadDiagnostic, R as ResolvedLocalesLayout } from './coreContext-DMaWLvmB.js';
2
+
3
+ /** Single segment in a dotted path (`a.b[0].c`). */
4
+ type PathSegment = string | number;
5
+
6
+ type CliErrorCode = 'CONFIG_INVALID' | 'CONFIG_MISSING' | 'IO' | 'VALIDATION' | 'TRANSLATE' | 'USAGE' | 'INTERNAL';
7
+ type NormalizedCliError = {
8
+ code: CliErrorCode;
9
+ message: string;
10
+ cause?: unknown;
11
+ };
12
+
13
+ type SourceScanResult = {
14
+ files: string[];
15
+ text: string;
16
+ };
17
+
18
+ /** Output of `mask()`: MT input text + `{{...}}` originals in sentinel order. */
19
+ type MaskedText = {
20
+ text: string;
21
+ originals: string[];
22
+ };
23
+
24
+ type ReadFlatLocaleJsonSurfaceResult = {
25
+ ok: true;
26
+ document: unknown;
27
+ leaves: TranslationSurfaceLeaf[];
28
+ text: string;
29
+ diagnostics: LocaleReadDiagnostic[];
30
+ } | {
31
+ ok: false;
32
+ leaves: [];
33
+ diagnostics: LocaleReadDiagnostic[];
34
+ };
35
+ type ReadLocaleBundleResult = ReadFlatLocaleJsonSurfaceResult;
36
+
37
+ type WriteFlatLocaleJsonDocumentResult = {
38
+ ok: true;
39
+ diagnostics: LocaleReadDiagnostic[];
40
+ } | {
41
+ ok: false;
42
+ diagnostics: LocaleReadDiagnostic[];
43
+ };
44
+
45
+ /**
46
+ * Limits for uploaded project zip archives (worker ingest + web local preview).
47
+ * Share payload preparation (`buildProjectPayload`) uses the same caps.
48
+ */
49
+ declare const PROJECT_UPLOAD_ZIP_LIMITS: {
50
+ readonly maxZipBytes: number;
51
+ readonly maxFiles: 15000;
52
+ readonly maxTextBytes: number;
53
+ };
54
+ declare const PROJECT_UPLOAD_MAX_ZIP_BYTES: number;
55
+ declare const PROJECT_UPLOAD_MAX_FILES: 15000;
56
+ declare const PROJECT_UPLOAD_MAX_TEXT_BYTES: number;
57
+ /** Wire format version for `POST /v1/projects` prepared snapshot ingest. */
58
+ declare const HOSTED_PROJECT_SNAPSHOT_SCHEMA_VERSION: 1;
59
+
60
+ type WalkedJsonSegment = {
61
+ absolutePath: string;
62
+ relativePath: string;
63
+ };
64
+
65
+ /**
66
+ * One on-disk JSON segment that contributes to a logical locale (bundle root–relative paths).
67
+ *
68
+ * @remarks `relativePath` uses POSIX `/` separators. For `locale_file`, this is typically `en.json`;
69
+ * for `locale_per_dir`, `en/auth.json`; for `feature_bundle`, `auth/en.json`.
70
+ */
71
+ type LocaleSegmentRef = {
72
+ /** BCP-47-ish locale code inferred from layout rules. */
73
+ locale: string;
74
+ /** Path relative to {@link ResolvedLocalesLayout.directoryAbsolute}. */
75
+ relativePath: string;
76
+ /** Absolute path to the segment JSON file. */
77
+ absolutePath: string;
78
+ };
79
+ type ListLocaleSegmentsResult = {
80
+ segments: LocaleSegmentRef[];
81
+ diagnostics: LocaleReadDiagnostic[];
82
+ };
83
+ type ListLocaleCodesResult = {
84
+ codes: string[];
85
+ diagnostics: LocaleReadDiagnostic[];
86
+ };
87
+
88
+ /** Normalized target selector for sync-style ops (`parseSyncLangSelection` return shape). */
89
+ type SyncLangSelection = {
90
+ mode: 'all';
91
+ } | {
92
+ mode: 'codes';
93
+ codes: string[];
94
+ };
95
+
96
+ type LocaleSegmentTarget = LocaleSegmentRef & {
97
+ /** Stable report key: segment `relativePath` (e.g. `en.json`, `en/auth.json`). */
98
+ reportKey: string;
99
+ };
100
+ type ResolveLocaleSegmentTargetsInput = {
101
+ selection: SyncLangSelection;
102
+ };
103
+
104
+ type LocaleLeafProjection = {
105
+ /**
106
+ * Leaf map keyed by canonical dotted paths (e.g. `routes.index.title`).
107
+ * When both dotted and nested representations exist for the same logical path,
108
+ * the nested representation wins.
109
+ */
110
+ byPath: Map<string, TranslationSurfaceLeaf>;
111
+ /** True when at least one object key contained a `.` segment. */
112
+ sawDottedKey: boolean;
113
+ /** Count of leaf conflicts where nested beat dotted. */
114
+ conflicts: number;
115
+ };
116
+
117
+ /** Role of a segment in a read/write plan. */
118
+ type LocaleSegmentWriteRole = 'source' | 'target' | 'existing_target';
119
+ /**
120
+ * One on-disk JSON segment under the configured locales directory.
121
+ *
122
+ * @remarks `relativePath` is bundle-root–relative (`en.json`, `en/auth.json`, `auth/en.json`).
123
+ */
124
+ type LocaleSegmentWriteTarget = {
125
+ locale: string;
126
+ relativePath: string;
127
+ absolutePath: string;
128
+ role: LocaleSegmentWriteRole;
129
+ };
130
+ /** How generate (or future sync bootstrap) writes one logical target locale. */
131
+ type LocaleSegmentWritePlan = {
132
+ targetLocale: string;
133
+ layout: ResolvedLocalesLayout;
134
+ /** Segments to read/write for this target (PR 1: one derived or one existing primary). */
135
+ segments: LocaleSegmentWriteTarget[];
136
+ /** Planned segments not yet on disk (subset of `segments`). */
137
+ missingSegments: LocaleSegmentWriteTarget[];
138
+ };
139
+
140
+ type SyncSegmentSourcePlan = {
141
+ sourceRelativePath: string;
142
+ sourceAbsolutePath: string;
143
+ sourceRaw: unknown;
144
+ effectiveSourceLeaves: TranslationSurfaceLeaf[];
145
+ template: unknown;
146
+ sourceMap: Map<string, string>;
147
+ };
148
+
149
+ export { type CliErrorCode as C, HOSTED_PROJECT_SNAPSHOT_SCHEMA_VERSION as H, type ListLocaleCodesResult as L, type MaskedText as M, type NormalizedCliError as N, type PathSegment as P, type ReadFlatLocaleJsonSurfaceResult as R, type SourceScanResult as S, type WalkedJsonSegment as W, type ListLocaleSegmentsResult as a, type LocaleLeafProjection as b, type LocaleSegmentRef as c, type LocaleSegmentTarget as d, type LocaleSegmentWritePlan as e, type LocaleSegmentWriteRole as f, type LocaleSegmentWriteTarget as g, type ReadLocaleBundleResult as h, type ResolveLocaleSegmentTargetsInput as i, type SyncLangSelection as j, type SyncSegmentSourcePlan as k, type WriteFlatLocaleJsonDocumentResult as l, PROJECT_UPLOAD_MAX_FILES as m, PROJECT_UPLOAD_MAX_TEXT_BYTES as n, PROJECT_UPLOAD_MAX_ZIP_BYTES as o, PROJECT_UPLOAD_ZIP_LIMITS as p };
@@ -0,0 +1,23 @@
1
+ import { R as RuntimePathPort } from './path-Bfn3SAts.js';
2
+ import { R as ResolveLocaleTargetCodesInput } from './localeTargetCodes-BBIQjauw.js';
3
+
4
+ declare const ALL_LOCALES_TOKEN = "all";
5
+ /** Comma-separated locale basenames, or `all` (case-insensitive). */
6
+ declare function parseLocaleCodesList(raw: string): string[];
7
+ declare function isAllLocaleToken(raw: string): boolean;
8
+ /** Normalized target selector (single value, list, or `all`). */
9
+ declare function pickTargetSelector(target?: string): string | undefined;
10
+ /**
11
+ * `sync`: omit -> all non-source locales; `all` -> same; else comma-separated codes.
12
+ */
13
+ declare function parseSyncLangSelection(lang: string | undefined): {
14
+ mode: 'all';
15
+ } | {
16
+ mode: 'codes';
17
+ codes: string[];
18
+ };
19
+ declare function resolveTargetLocaleSlugs(path: RuntimePathPort, localeSlugs: string[], sourceLocalePath: string): string[];
20
+ /** Pure target resolution with no prompting or CLI side effects. */
21
+ declare function resolveLocaleTargetCodes(input: ResolveLocaleTargetCodesInput): string[];
22
+
23
+ export { ALL_LOCALES_TOKEN as A, parseLocaleCodesList as a, pickTargetSelector as b, resolveTargetLocaleSlugs as c, isAllLocaleToken as i, parseSyncLangSelection as p, resolveLocaleTargetCodes as r };
@@ -0,0 +1,139 @@
1
+ import { I as Issue } from './index-X50E1FIX.js';
2
+ import { R as RuntimeFsPort } from './fs-BUYD8ZhA.js';
3
+ import { R as RuntimePathPort } from './path-Bfn3SAts.js';
4
+
5
+ /** Curated starter bundles for **`i18nprune init --preset`**. */
6
+ type InitPresetId = 'generic' | 'i18next' | 'lingui' | 'next-i18next' | 'next-intl' | 'react-intl';
7
+ /** One explainable scoring dimension (library, topology, convention, …). */
8
+ type InitScoreFactor = {
9
+ /** Stable machine id, e.g. **`npm.next-intl`**, **`dir.messages`**. */
10
+ id: string;
11
+ /** Contribution after weighting (non-negative). */
12
+ contribution: number;
13
+ /** Short human/SDK-facing note. */
14
+ detail: string;
15
+ };
16
+ /** A single preset’s aggregate score from weighted heuristics. */
17
+ type InitPresetScore = {
18
+ preset: InitPresetId;
19
+ /** Sum of weighted contributions before conflict damping (0–1+). */
20
+ rawScore: number;
21
+ /** Score after conflict / ambiguity damping (0–1). */
22
+ score: number;
23
+ /** Normalized confidence for this preset (0–1). */
24
+ confidence: number;
25
+ factors: InitScoreFactor[];
26
+ };
27
+ /** Parsed **`package.json`** dependency maps (empty when file missing / invalid). */
28
+ type InitPackageJsonSignals = {
29
+ dependencies: Record<string, string>;
30
+ devDependencies: Record<string, string>;
31
+ };
32
+ /** Confident `locales.mode` / `locales.structure` inferred from on-disk JSON segments. */
33
+ type InitLocaleLayoutHint = {
34
+ mode: 'flat_file' | 'locale_directory';
35
+ structure: 'locale_file' | 'locale_per_dir' | 'feature_bundle';
36
+ /** Normalized confidence (1 when all segments agree). */
37
+ confidence: number;
38
+ /** Number of JSON segment files that contributed to the hint. */
39
+ segmentCount: number;
40
+ };
41
+ /** Filesystem hints under **`projectRoot`** (locale roots, framework markers). */
42
+ type InitTopologySignals = {
43
+ /** Project-relative directory roots that exist and look like locale containers. */
44
+ localeRoots: string[];
45
+ /** True when **`next.config.js`**, **`.mjs`**, or **`.ts`** exists at project root. */
46
+ nextConfigPresent: boolean;
47
+ };
48
+ type InitProjectSignals = {
49
+ packageJson: InitPackageJsonSignals | null;
50
+ topology: InitTopologySignals;
51
+ };
52
+ type InitRunOptions = {
53
+ /**
54
+ * When true, pick a preset from scored heuristics (may refuse if ambiguous).
55
+ * Ignored when **`preset`** is set — explicit preset always wins.
56
+ */
57
+ auto?: boolean;
58
+ /** Force a specific preset id; overrides **`auto`**. */
59
+ preset?: string;
60
+ /** Same as CLI **`--rich`** — expanded starter template. */
61
+ rich?: boolean;
62
+ /** Module specifier for **`defineConfig`** (default **`i18nprune/core/config`**). */
63
+ importSpecifier?: string;
64
+ };
65
+ /**
66
+ * Host filesystem + path ports for **`runInit`** (no config load — **`projectRoot`** is absolute).
67
+ *
68
+ * @remarks Uses the same **`fs`** + **`path`** ports as project scanning; init never uses **`network`**.
69
+ */
70
+ type InitFilesystemHost = {
71
+ fs: RuntimeFsPort;
72
+ path: RuntimePathPort;
73
+ };
74
+ /** Host input for **`runInit`** — filesystem ports plus absolute **`projectRoot`**. */
75
+ type RunInitHostInput = InitFilesystemHost & {
76
+ /** Absolute project directory (the directory where a config file would be written). */
77
+ projectRoot: string;
78
+ /** When true, the host found an existing **`i18nprune.config.*`** — core skips template generation. */
79
+ skippedExistingConfig: boolean;
80
+ };
81
+ type InitJsonPayload = {
82
+ kind: 'init';
83
+ /** Payload contract version for **`--json`** stability. */
84
+ schemaVersion: 1;
85
+ /** Whether an on-disk config already exists — host supplies; no write attempted. */
86
+ skippedExistingConfig: boolean;
87
+ /** Resolved preset for the proposed template (after **`auto`** / **`preset`** rules). */
88
+ preset: InitPresetId;
89
+ /** Full config file contents the host may write (UTF-8 text). */
90
+ proposedConfigSource: string;
91
+ /** Relative filename only, e.g. **`i18nprune.config.ts`**. */
92
+ proposedConfigFileName: string;
93
+ /** Detection + scoring (omitted when **`skippedExistingConfig`**). */
94
+ detection?: {
95
+ signals: InitProjectSignals;
96
+ scores: InitPresetScore[];
97
+ ambiguous: boolean;
98
+ /** Present when segment paths under the preset `locales.directory` agree on one layout. */
99
+ localeLayout?: InitLocaleLayoutHint | null;
100
+ };
101
+ };
102
+ type InitRunResult = {
103
+ payload: InitJsonPayload;
104
+ issues: Issue[];
105
+ /** CLI exit code: **`0`** on success / benign skip; **`1`** on blocking issues. */
106
+ exitCode: number;
107
+ };
108
+
109
+ type InitDetectResult = {
110
+ signals: InitProjectSignals;
111
+ scores: InitPresetScore[];
112
+ };
113
+
114
+ /** Curated **`locales` / `src` / `functions`** defaults per preset. */
115
+ type InitPresetConfigFields = {
116
+ locales: {
117
+ source: string;
118
+ directory: string;
119
+ };
120
+ src: string;
121
+ functions: string[];
122
+ };
123
+
124
+ type InitConfigFormat = 'ts' | 'mts' | 'js' | 'mjs';
125
+ type BuildInitConfigTemplateOptions = {
126
+ /** Module specifier for **`defineConfig`** / **`I18nPruneConfig`** (default core config surface). */
127
+ importSpecifier?: string;
128
+ /** When true, include every supported top-level namespace with safe defaults (starting point for customization). */
129
+ rich?: boolean;
130
+ /**
131
+ * Curated starter bundle — seeds **`locales.source`**, **`locales.directory`**, **`src`**, and **`functions`**.
132
+ * Defaults to **`generic`**.
133
+ */
134
+ preset?: InitPresetId;
135
+ /** When set, emitted into the `locales` block (from on-disk segment classification). */
136
+ localeLayout?: InitLocaleLayoutHint | null;
137
+ };
138
+
139
+ export type { BuildInitConfigTemplateOptions as B, InitConfigFormat as I, RunInitHostInput as R, InitRunOptions as a, InitRunResult as b, InitPackageJsonSignals as c, InitFilesystemHost as d, InitTopologySignals as e, InitLocaleLayoutHint as f, InitPresetScore as g, InitPresetId as h, InitProjectSignals as i, InitDetectResult as j, InitPresetConfigFields as k, InitJsonPayload as l, InitScoreFactor as m };
@@ -0,0 +1,77 @@
1
+ import { I as Issue } from './index-X50E1FIX.js';
2
+ import { T as TranslationProviderId } from './providers-0uMEfT6q.js';
3
+ import { T as TranslatePolicy } from './root-2-kCaBvQ.js';
4
+
5
+ type TranslateStartRateLimit = {
6
+ /** Requests per minute ceiling. */
7
+ rpm?: number;
8
+ /** Requests per second ceiling (supports fractions like 0.5). */
9
+ rps?: number;
10
+ /** Hard minimum spacing between request starts. */
11
+ intervalMs?: number;
12
+ };
13
+ type ProviderRateLimitProfile = Required<TranslateStartRateLimit> & {
14
+ maxConcurrency: number;
15
+ };
16
+ type ProviderRateLimitRegistry = Readonly<Record<TranslationProviderId, ProviderRateLimitProfile>>;
17
+
18
+ type TranslateRateLimitConfigInput = {
19
+ maxConcurrency?: number;
20
+ rpm?: number;
21
+ rps?: number;
22
+ intervalMs?: number;
23
+ };
24
+ type TranslateProviderRowInputBase = {
25
+ enabled?: boolean;
26
+ rateLimit?: TranslateRateLimitConfigInput;
27
+ };
28
+ type TranslateProviderRowInputGoogle = TranslateProviderRowInputBase & {
29
+ id: 'google';
30
+ };
31
+ type TranslateProviderRowInputMymemory = TranslateProviderRowInputBase & {
32
+ id: 'mymemory';
33
+ contactEmail?: string;
34
+ };
35
+ type TranslateProviderRowInputLibre = TranslateProviderRowInputBase & {
36
+ id: 'libre';
37
+ baseUrl?: string;
38
+ };
39
+ type TranslateProviderRowInputDeepl = TranslateProviderRowInputBase & {
40
+ id: 'deepl';
41
+ apiKey?: string;
42
+ };
43
+ type TranslateProviderRowInputLlm = TranslateProviderRowInputBase & {
44
+ id: 'llm';
45
+ apiKey?: string;
46
+ baseUrl?: string;
47
+ model?: string;
48
+ };
49
+ type TranslateProviderRowInput = TranslateProviderRowInputGoogle | TranslateProviderRowInputMymemory | TranslateProviderRowInputLibre | TranslateProviderRowInputDeepl | TranslateProviderRowInputLlm;
50
+ /**
51
+ * Authoring shape (input) for the translate-policy block — the same surface SDK consumers
52
+ * pass through `defineConfig`. Re-export of {@link TranslatePolicy} so the config-input
53
+ * barrel under `types/config/` carries the full verb dictionary.
54
+ */
55
+ type TranslatePolicyConfigInput = TranslatePolicy;
56
+ type TranslateConfigInput = {
57
+ primary?: TranslationProviderId;
58
+ providers?: TranslateProviderRowInput[];
59
+ policy?: TranslatePolicyConfigInput;
60
+ workers?: number;
61
+ };
62
+ type ResolvedTranslateProviderRow = {
63
+ id: TranslationProviderId;
64
+ profile: ProviderRateLimitProfile;
65
+ startRateLimit?: TranslateStartRateLimit;
66
+ };
67
+ type ResolvedTranslateConfig = {
68
+ providerOrder: TranslationProviderId[];
69
+ effectiveProviderId: TranslationProviderId;
70
+ requestedWorkers: number;
71
+ effectiveWorkers: number;
72
+ providers: Record<TranslationProviderId, ResolvedTranslateProviderRow>;
73
+ routing: 'single' | 'auto';
74
+ };
75
+ type ResolveTranslateWarning = Issue;
76
+
77
+ export type { ProviderRateLimitProfile as P, ResolvedTranslateConfig as R, TranslateConfigInput as T, TranslateStartRateLimit as a, ResolveTranslateWarning as b, ResolvedTranslateProviderRow as c, TranslatePolicyConfigInput as d, TranslateProviderRowInput as e, TranslateRateLimitConfigInput as f, ProviderRateLimitRegistry as g };
@@ -0,0 +1,21 @@
1
+ export { C as CleanupCounts, D as DoctorCounts, G as GenerateCounts, j as GeneratePhase, k as GenerateProgressEvent, l as LocalesDynamicCounts, M as MissingCounts, O as OperationId, P as ProgressEvent, Q as QualityCounts, m as ReportCounts, n as ReviewCounts, o as RunCompletedEvent, p as RunCountsByOperation, R as RunEmitter, q as RunErrorEvent, a as RunEvent, r as RunEventBase, s as RunFailedEvent, t as RunMessageChannel, u as RunMessageEvent, v as RunMessageLevel, w as RunShareLinksEvent, x as RunShareManifestEvent, y as RunShareSkippedEvent, z as RunShareUploadedEvent, A as RunStartedEvent, B as RunSummaryEvent, E as RunWarningEvent, F as ShareCounts, I as SyncCounts, J as SyncPhase, S as SyncProgressEvent, V as ValidateCounts, K as ValidatePhase, N as ValidateProgressEvent } from '../index-BgG01AKL.js';
2
+ import '../index-X50E1FIX.js';
3
+ import '../providers-0uMEfT6q.js';
4
+
5
+ /**
6
+ * Precomputed scan-exclusion rules for {@link listSourceFiles} / {@link compileScanExclude}
7
+ * in **`shared/scanner/files.ts`** (built once per walk; hot path uses **`Set`** + small arrays).
8
+ */
9
+ type CompiledScanExclude = {
10
+ defaultDirs: ReadonlySet<string> | null;
11
+ dirStrings: Set<string>;
12
+ dirRegexes: RegExp[];
13
+ fileStrings: Set<string>;
14
+ fileRegexes: RegExp[];
15
+ extStrings: Set<string>;
16
+ extRegexes: RegExp[];
17
+ pathPatterns: RegExp[];
18
+ userRulesEmpty: boolean;
19
+ };
20
+
21
+ export type { CompiledScanExclude };
@@ -0,0 +1 @@
1
+