@im-nobsidian/core 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -464,6 +464,21 @@ interface PushResult {
464
464
  readonly moved: number;
465
465
  readonly failed: FailedOperation[];
466
466
  readonly duration: number;
467
+ /**
468
+ * 볼트에서 고쳤지만 올리지 않은 읽기 전용 속성(수식 · 롤업 · ID …) — Notion 이 값을 정한다. 다음 pull 이 Notion
469
+ * 값으로 되돌리므로 화면이 알린다. 예전에는 로그 한 줄만 남아 고친 값이 말없이 사라졌다. 없으면 빈 목록 · 생략.
470
+ */
471
+ readonly readOnlySkipped?: readonly ReadOnlySkip[];
472
+ /**
473
+ * 볼트에서 지웠지만 Notion 에서 지우지 않은 노트(`sync.deleteSync` 꺼짐) — 다음 pull 이 Notion 에서 되살린다.
474
+ * 예전에는 아무 말 없이 대기로 적기만 해, 지운 파일이 다음 pull 에 말없이 돌아왔다(D8). 없으면 빈 목록 · 생략.
475
+ */
476
+ readonly unsentDeletions?: readonly string[];
477
+ }
478
+ /** 노트 하나에서 올리지 않은 읽기 전용 속성. */
479
+ interface ReadOnlySkip {
480
+ readonly path: string;
481
+ readonly properties: readonly string[];
467
482
  }
468
483
  /**
469
484
  * 전체 대조를 한 이유 (ADR-027).
@@ -490,7 +505,8 @@ interface RemoteScanInfo {
490
505
  readonly nextFullAt: string | null;
491
506
  /**
492
507
  * Notion 에서 지운 노트가 아직 볼트에 반영되지 않았을 수 있나 — 바뀐 것만 찾았고 원격 삭제를 볼트에
493
- * 반영하는 설정(`sync.deleteSync`)일 때. 다음 전체 대조가 반영한다. 설정이 꺼져 있으면 원격 삭제는
508
+ * 반영하는 설정(`sync.deleteSync`)일 때. pull 은 추적 중인 것을 차례로 몇 개씩 묻는다 — 이번에 모두
509
+ * 물었으면 false 다. 나머지는 다음 pull 들 · 다음 전체 대조가 반영한다. 설정이 꺼져 있으면 원격 삭제는
494
510
  * 볼트에 반영하지 않으므로 늘 false 다.
495
511
  */
496
512
  readonly deletionsDeferred: boolean;
@@ -507,6 +523,8 @@ interface PullResult {
507
523
  * 파일이 없어졌다가 복구됐다는 사실 자체를 알 수 없다.
508
524
  */
509
525
  readonly restored: number;
526
+ /** 되살린(dry-run 은 되살릴) 노트 · 행의 경로 — {@link restored} 의 목록. 없으면 생략. */
527
+ readonly restoredPaths?: readonly string[];
510
528
  readonly conflicts: Conflict[];
511
529
  readonly writtenPaths: string[];
512
530
  readonly failed: FailedOperation[];
@@ -1266,6 +1284,8 @@ declare class PropertyMapper {
1266
1284
  * 호출측이 기준에서 빼 두고 다시 보낸다.
1267
1285
  */
1268
1286
  relationKeys(keys: readonly string[]): string[];
1287
+ /** 이 속성들 가운데 Notion 이 값을 정하는 것(수식 · 롤업 · ID · 생성일 …) — 볼트에서 고쳐도 보낼 수 없다. */
1288
+ readOnlyKeys(keys: readonly string[]): string[];
1269
1289
  /**
1270
1290
  * 값을 보낼 수 있는 속성만, pull 이 적는 모양으로 — 원격 값과 로컬 값을 견줄 때 쓴다.
1271
1291
  *
@@ -1826,6 +1846,12 @@ declare class NotionClient {
1826
1846
  * 슬롯을 붙잡아 남을 막는 대신, 다 같이 보는 이 게이트로 쉬게 한다.
1827
1847
  */
1828
1848
  private cooldownUntil;
1849
+ /**
1850
+ * Free 워크스페이스 블록 한도에 막힌 거절과 그 시각. 막힌 동안 블록을 만드는 요청은 보내지 않고 이 거절을 그대로
1851
+ * 돌려준다 — 플랜을 올리기 전에는 풀리지 않으므로 노트마다 같은 거절을 받으러 가지 않는다. 그 사이 플랜을
1852
+ * 올렸을 수 있어 {@link BLOCK_LIMIT_RECHECK_MS} 가 지나면 다시 보내 본다.
1853
+ */
1854
+ private blockLimit;
1829
1855
  /**
1830
1856
  * 요청 1건을 rate limit 슬롯 안에서 실행하고, 재시도 가능한 실패는 백오프 후 다시 시도한다.
1831
1857
  *
@@ -1953,6 +1979,29 @@ declare class NotionBlockBuilder {
1953
1979
  static table(rows: string[][], hasColumnHeader?: boolean, hasRowHeader?: boolean): NotionBlock;
1954
1980
  }
1955
1981
 
1982
+ /** 찾을 레코드 — {@link IStateDB.getAll} 이 그대로 만족한다. */
1983
+ interface NestedFolderRecord {
1984
+ readonly obsidianPath: string;
1985
+ readonly notionPageId: string | null;
1986
+ readonly notionParentId: string | null;
1987
+ readonly fileType: string;
1988
+ }
1989
+ /** 두 겹 하나 — 바깥(Notion 부모)과 안쪽(같은 이름의 자식). */
1990
+ interface NestedFolderPage {
1991
+ /** 두 겹이 나타내는 볼트 폴더. */
1992
+ readonly folder: string;
1993
+ readonly outer: {
1994
+ readonly path: string;
1995
+ readonly notionPageId: string;
1996
+ };
1997
+ readonly inner: {
1998
+ readonly path: string;
1999
+ readonly notionPageId: string;
2000
+ };
2001
+ }
2002
+ /** 같은 폴더를 나타내면서 Notion 에서 부모 · 자식인 레코드 쌍. 폴더 경로 순. */
2003
+ declare function findNestedFolderPages(records: readonly NestedFolderRecord[]): NestedFolderPage[];
2004
+
1956
2005
  /**
1957
2006
  * DB 완결성 게이트 — "원격에 있는 행이 볼트에도 전부 있는가"를 대조한다.
1958
2007
  *
@@ -1981,6 +2030,7 @@ declare class NotionBlockBuilder {
1981
2030
  * 를 순회하는 SSOT — 하나만 쓴다. 여기서 별도 쿼리를 짜면 검증기가 피검증 대상과 다른
1982
2031
  * 열거 규칙을 갖게 돼, 게이트가 통과해도 실제 pull 은 놓치는 상황이 생긴다.
1983
2032
  */
2033
+
1984
2034
  /** 원격 행 열거 — {@link NotionClient} 가 그대로 만족한다(전 data source 순회 SSOT). */
1985
2035
  interface CompletenessRemoteSource {
1986
2036
  queryAllDatabasePages(databaseId: string, filter?: unknown): Promise<Array<{
@@ -2080,6 +2130,11 @@ interface VaultCompletenessReport {
2080
2130
  readonly databases: CompletenessReport;
2081
2131
  /** 페이지 모드에서만 채워진다. DB 모드에는 root 서브트리가 없어 `null`. */
2082
2132
  readonly pages: PageCompletenessReport | null;
2133
+ /**
2134
+ * 같은 이름의 두 겹 폴더 페이지 — 예전 빌드가 남긴 것(ADR-012). 알리기만 한다: 사람이 정할 일이라
2135
+ * `complete` 에 넣지 않는다.
2136
+ */
2137
+ readonly nestedFolderPages: readonly NestedFolderPage[];
2083
2138
  /** 두 대조가 모두 통과. */
2084
2139
  readonly complete: boolean;
2085
2140
  }
@@ -2161,6 +2216,11 @@ interface VaultFS {
2161
2216
  moveFile(from: string, to: string): Promise<void>;
2162
2217
  exists(path: string): Promise<boolean>;
2163
2218
  ensureFolder(path: string): Promise<void>;
2219
+ /**
2220
+ * 폴더가 완전히 비었으면 지운다 — 파일 · 폴더 · 숨김 파일이 하나라도 있으면 두고 false. 없거나 폴더가 아니어도
2221
+ * false. Notion 에서 지운 폴더 페이지의 폴더를 치울 때 쓴다. 없으면 폴더를 지우지 않는다.
2222
+ */
2223
+ removeEmptyFolder?(path: string): Promise<boolean>;
2164
2224
  listMarkdownFiles(): Promise<FileInfo[]>;
2165
2225
  listMarkdownFileStats(): Promise<FileStatInfo[]>;
2166
2226
  listNonMarkdownFiles(): Promise<NonMdFileInfo[]>;
@@ -2516,6 +2576,11 @@ declare class SyncOrchestrator {
2516
2576
  */
2517
2577
  private assertConnectionScope;
2518
2578
  private executePush;
2579
+ /**
2580
+ * 볼트에서 지운 이 노트를 Notion 에서 지우지 않아 다음 pull 이 되살리나 — deleteSync 가 꺼져 있고 pull 이
2581
+ * 되살리는 레코드일 때. 예전에는 대기로 적기만 하고 알리지 않아, 지운 파일이 말없이 돌아왔다(D8).
2582
+ */
2583
+ private unsentDeletion;
2519
2584
  /**
2520
2585
  * 만든 DB 에 relation · rollup · formula 를 붙이고, 행 스키마를 다시 읽게 한 뒤 보기를 만든다. 실패는
2521
2586
  * 다음 push 가 이어 붙인다 — 행은 그대로 올린다.
@@ -2634,6 +2699,8 @@ declare class NodeVaultFS implements VaultFS {
2634
2699
  writeFile(path: string, content: string): Promise<void>;
2635
2700
  writeBinary(path: string, data: Buffer): Promise<void>;
2636
2701
  deleteFile(path: string): Promise<void>;
2702
+ /** `rmdir` 는 비지 않은 폴더를 지우지 않는다(ENOTEMPTY) — 숨김 파일도 그대로 둔다. */
2703
+ removeEmptyFolder(path: string): Promise<boolean>;
2637
2704
  moveFile(from: string, to: string): Promise<void>;
2638
2705
  exists(path: string): Promise<boolean>;
2639
2706
  ensureFolder(path: string): Promise<void>;
@@ -2692,6 +2759,8 @@ interface ImageDownloadResult {
2692
2759
  readonly fileHash?: string;
2693
2760
  /** 임베드 별칭으로 쓸 이름 — 받은 이름에서 이 볼트가 붙인 내용 해시를 뗀 것({@link withoutOwnHash}). */
2694
2761
  readonly name?: string;
2762
+ /** 크기 상한을 넘어 받지 않은 파일의 크기(바이트) — 받았거나 다른 이유로 못 받았으면 없다. */
2763
+ readonly skippedBytes?: number;
2695
2764
  }
2696
2765
  interface ImageUploadResult {
2697
2766
  readonly localPath: string;
@@ -2982,6 +3051,10 @@ declare class ConversionPipeline {
2982
3051
  private readonly postProcessors;
2983
3052
  registerPreProcessor(processor: Processor): void;
2984
3053
  registerPostProcessor(processor: Processor): void;
3054
+ /**
3055
+ * 토글 헤딩은 Markdown API 경로가 변환한다(`toggle-heading.ts`) — 블록 경로로 보내면 콜아웃이 옛 이모지 꼴로
3056
+ * 바뀐다(`CalloutTransformer`). 예전에 여기 있던 토글 헤딩 탐지는 띄어 쓴 마커를 찾아 한 번도 맞지 않았다.
3057
+ */
2985
3058
  selectPath(content: string): ConversionPath;
2986
3059
  convertToNotion(markdown: string, context: ConversionContext): ConversionResult;
2987
3060
  convertToMarkdown(content: string, context: ConversionContext, metadata?: ProcessorMetadata): string;
@@ -2990,6 +3063,11 @@ declare class ConversionPipeline {
2990
3063
  interface DbBaseFile {
2991
3064
  readonly basePath: string;
2992
3065
  readonly title: string;
3066
+ /**
3067
+ * pull 이 그 경로에 마지막으로 쓴 내용의 해시 — 파일이 이것과 다르면 볼트에서 고친 것이라 덮어쓰지 않는다. 예전 버전이
3068
+ * 적은 기록에는 없다 — 그때는 가를 수 없어 예전처럼 쓰고, 쓴 해시부터 적는다.
3069
+ */
3070
+ readonly hash?: string;
2993
3071
  }
2994
3072
  /**
2995
3073
  * DB 마다 실제로 기록한 `.base` 경로와 DB 제목 — 인라인 DB placeholder 를 `.base` 임베드로 바꿀 때
@@ -3151,12 +3229,14 @@ declare class DatabaseSyncer {
3151
3229
  */
3152
3230
  private readonly appearances;
3153
3231
  private readonly baseFileGenerator;
3154
- /** 사용자가 만든 `.base` 라 덮어쓰지 않았다고 이미 알린 경로 — 한 pull 이 같은 DB 를 여러 번 다시 쓴다. */
3232
+ /** 사용자가 만들거나 고친 `.base` 라 덮어쓰지 않았다고 이미 알린 경로 — 한 pull 이 같은 DB 를 여러 번 다시 쓴다. */
3155
3233
  private readonly keptUserBases;
3156
3234
  private readonly sidecarGenerator;
3157
3235
  /** Notion 에서 바꾼 제목으로 이름을 바꾼 행과 실제로 옮긴 차례 — pull 마감이 가져가 다른 노트의 링크를 고친다. */
3158
3236
  private readonly relocator;
3159
3237
  private renamedRows;
3238
+ /** 볼트에서 사라져 되살린 행의 경로 — pull 마감이 가져가 화면에 알린다(D8). */
3239
+ private restoredRows;
3160
3240
  /**
3161
3241
  * 실제로 기록한 .base 경로/DB 제목 — placeholder 임베드 재작성(F22)의 SSOT. 이번 pull 이 조회하지
3162
3242
  * 않은 DB 의 것도 남아 있다({@link DbBaseFiles}).
@@ -3309,8 +3389,8 @@ declare class DatabaseSyncer {
3309
3389
  */
3310
3390
  private appearanceOf;
3311
3391
  private readAppearance;
3312
- /** pull 이 쓰지 않은 `.base` · 사이드카가 이미 있는가 — 없거나 읽지 못하면 false. */
3313
- private isUserFile;
3392
+ /** 볼트에서 고친 `.base` 를 덮어쓰거나 지우지 않았다고 한 번 알린다. */
3393
+ private warnEditedBase;
3314
3394
  /**
3315
3395
  * DB 제목이 바뀌면 `.base`/`.notion.json` 파일명(safeName)이 바뀌어 옛 이름의 산출물이
3316
3396
  * 같은 폴더에 고아로 잔존한다(drift·부활 원인). DB 폴더 **직속**의 산출물 중 현재 이름이
@@ -3376,6 +3456,8 @@ declare class DatabaseSyncer {
3376
3456
  * (아직 push 하지 않은 노트)을 새 행이 덮어쓰면 그 글이 사라졌다. 일반 페이지 받기(`claimFilePath`)처럼 피한다.
3377
3457
  */
3378
3458
  private rowPathOwners;
3459
+ /** 되살린 행의 경로를 가져가고 비운다. */
3460
+ takeRestoredRows(): string[];
3379
3461
  /** 이름을 바꾼 행을 가져가고 비운다. */
3380
3462
  takeRenamedRows(): {
3381
3463
  renamed: RemoteMove[];
@@ -3535,15 +3617,15 @@ declare class FrontmatterGenerator implements Processor {
3535
3617
  * 핵심 전제(F28 교훈): DB 에 저장된 startIndex 는 **push 시점 문자열**의 절대
3536
3618
  * 오프셋이라 pull 산출물에서는 무의미하다 — 프론트매터 앞·단어 한가운데에
3537
3619
  * 마커를 박아 파일을 파손시켰다. 재삽입은 반드시
3538
- * 1) 이미 의미적으로 복원된 마커는 건너뛰고(위키링크 → `[[...]]` 존재 등),
3620
+ * 1) 다른 복원기가 맡는 마커는 건너뛰고(위키링크 · 미디어 · 표 정렬),
3539
3621
  * 2) 텍스트 앵커(__anchor)를 1차 위치 수단으로 쓰며,
3540
3622
  * 3) 프론트매터 뒤·줄 경계에만, 마커 단독 줄로 삽입한다.
3541
3623
  *
3542
3624
  * 이중 모드: `__anchor` 키가 없는 마커는 구버전 DB blob(수집기가 앵커를 안 남기던
3543
3625
  * 시절)이다. 이들은 구계약 — "변환이 마커만 제거했다면 startIndex 오프셋 원문 삽입이
3544
3626
  * 원본을 정확히 재구성한다" — 을 유지하되 프론트매터 앞 삽입만 금지한다. 위해한
3545
- * 레거시 사례(빈 params 껍데기, 이미 복원된 위키링크)는 render-null 폐기와 의미
3546
- * 복원 검사가 이미 걸러낸다.
3627
+ * 레거시 사례(빈 params 껍데기, 위키링크)는 render-null 폐기와 다른 복원기 검사가
3628
+ * 이미 걸러낸다.
3547
3629
  */
3548
3630
  declare class PreserveMarkerInjector implements Processor {
3549
3631
  readonly name = "PreserveMarkerInjector";
@@ -3551,8 +3633,8 @@ declare class PreserveMarkerInjector implements Processor {
3551
3633
  process(input: ProcessorInput): ProcessorOutput;
3552
3634
  /** 마커의 본문 표현. 복원 불가능한(빈) 마커는 null — 삽입하지 않고 폐기한다. */
3553
3635
  private renderMarker;
3554
- /** 마커가 이미 원래 문법으로 복원돼 있으면 재삽입은 중복·오염이다. */
3555
- private isSemanticallyRestored;
3636
+ /** 다른 복원기가 맡는 마커 — 본문에 다시 끼우면 중복 · 오염이다. */
3637
+ private restoredElsewhere;
3556
3638
  /** 삽입 위치: 앵커 → startIndex(줄 경계 보정) 순. 항상 프론트매터 뒤. */
3557
3639
  private findInsertionPoint;
3558
3640
  }
@@ -3988,6 +4070,7 @@ declare function notionIdsEqual(a: string, b: string): boolean;
3988
4070
  */
3989
4071
  declare function compactNotionId(id: string): string;
3990
4072
 
4073
+ /** Notion 제목 → 볼트 파일 이름(확장자 없이). */
3991
4074
  declare function sanitizeFileName(name: string): string;
3992
4075
 
3993
4076
  /** 노트(마크다운 파일)의 경로 · 이름인가. */
@@ -4142,6 +4225,7 @@ declare class FilteredVaultFS implements VaultFS {
4142
4225
  moveFile(from: string, to: string): Promise<void>;
4143
4226
  exists(path: string): Promise<boolean>;
4144
4227
  ensureFolder(path: string): Promise<void>;
4228
+ removeEmptyFolder(path: string): Promise<boolean>;
4145
4229
  getFileStat(path: string): Promise<FileStatInfo | null>;
4146
4230
  }
4147
4231
 
@@ -4211,6 +4295,7 @@ declare class ScopedVaultFS implements VaultFS {
4211
4295
  moveFile(from: string, to: string): Promise<void>;
4212
4296
  exists(path: string): Promise<boolean>;
4213
4297
  ensureFolder(path: string): Promise<void>;
4298
+ removeEmptyFolder(path: string): Promise<boolean>;
4214
4299
  /** 맡은 노트만 읽는다 — 볼트 전체의 본문을 읽지 않는다. */
4215
4300
  listMarkdownFiles(): Promise<FileInfo[]>;
4216
4301
  listMarkdownFileStats(): Promise<FileStatInfo[]>;
@@ -4348,6 +4433,16 @@ declare function parseDesignColor(token: string | undefined): DesignColor | unde
4348
4433
  /** 한 줄을 읽는다. 마커가 없는 줄은 글 조각 하나뿐인 결과를 돌려준다. */
4349
4434
  declare function readDesignLine(line: string): DesignLine;
4350
4435
 
4436
+ /** 제목 줄인가. */
4437
+ declare function isHeadingLine(line: string): boolean;
4438
+ /** 제목 아래로 내린 마커만 있는 줄인가 — 앞줄이 제목일 때 그 제목의 것이다. */
4439
+ declare function isHeadingMarkerLine(line: string): boolean;
4440
+ /**
4441
+ * 한 섹션의 원문 줄 — 섹션이 제목으로 끝나고 다음 줄이 그 제목의 마커 줄이면 제목 줄 끝에 붙여 돌려준다.
4442
+ * Obsidian 은 그 마커 줄을 다음 섹션으로 가르므로, 읽기 화면이 제목을 칠하려면 다음 줄을 함께 봐야 한다.
4443
+ */
4444
+ declare function sectionLinesWithHeadingMarkers(all: readonly string[], start: number, end: number): string[];
4445
+
4351
4446
  /**
4352
4447
  * Notion 컬럼이 볼트 노트의 어느 줄에 걸치나 (#74).
4353
4448
  *
@@ -4380,4 +4475,4 @@ declare function readColumnLayout(lines: readonly string[]): (ColumnPlace | unde
4380
4475
  /** 열 이름표 — `열 2/3 · 50%`. 비율이 없으면 `열 2/3`. */
4381
4476
  declare function columnLabel(place: ColumnPlace): string;
4382
4477
 
4383
- export { BaseFileGenerator, type BaseFileOptions, type BasePropertyOption, type BasePropertySchema, type BaseStatusGroup, type BaseSyncOptions, type BasesFilterNode, type BasesViewMapping, type BasesViewType, BlankLineCollapser, type BookmarkTarget, CONFIG_FILE, type CalendarEntry, type CalloutDesign, CalloutRestorer, CalloutTransformer, ChangeDetector, type ChangeDiff, ColorAnnotator, type ColumnPlace, type CompletenessFailure, type CompletenessLocalSource, type CompletenessOptions, type CompletenessRemoteSource, type CompletenessReport, type Config, ConfigManager, ConfigSchema, type Conflict, ConflictResolver, type ConflictStrategy, ConnectionBoundaryError, ConnectionScopeError, type ConversionContext, type ConversionPath, ConversionPipeline, type ConversionResult, type CoverConfig, type DBEntry, DB_VIEWS_FILE, DB_VIEWS_PATH, DEFAULT_CONFIG, DEFAULT_TITLE_PROPERTY, DEFAULT_WATCH_DEBOUNCE_MS, DIFF_SIGN, type DatabaseCompleteness, type DatabaseSyncConfig, type DatabaseSyncResult, DatabaseSyncer, type DatabaseViewsConfig, type DeferredCode, type DegradeNote, type DesignColor, type DesignLine, type DesignSegment, type DiffHunk, type DiffLine, EmbedResolver, EntryEditor, type FailedOperation, type FidelityClassification, type FidelityContext, type FidelityDefect, type FidelityDefectForm, type FidelitySummary, type FileDownloadResult, FileHandler, type FileInfo, type FileRegistryEntry, type FileStatInfo, type FileSystemEntry, type FileType, type FileUploadResult, FileWatcher, type FilterCondition, FilteredVaultFS, type FolderDatabaseReport, type FolderMoveChange, FrontmatterExtractor, FrontmatterGenerator, type FullScanReason, GITIGNORE_ENTRY, type GatedOperation, type GroupByConfig, type GroupedEntries, IGNORE_FILE, INTERNAL_DIR, INTERNAL_DIR_GLOB, type IStateDB, type ImageDownloadResult, ImageHandler, type ImageReference, type InferredProperty, InlineAnnotationPreserver, InlineDBParser, type InlineStyle, type LineDiffOptions, type LineRange, type LocalChange, LocalImageRestorer, type LocalMoveAdoption, type LocalScan, type LocalScanOptions, type Logger, MARKER_BRAND, type MappingResult, type MappingType, MathNormalizer, MentionToWikilink, type MergeConflictRegion, type MergeResult, NOTION_COLOR_NAMES, NOTION_TOKEN_PREFIX, NOTION_TO_BASES_VIEW, NodeVaultFS, type NonMdFileInfo, type NotionBlock, NotionBlockBuilder, NotionClient, type NotionClientOptions, type NotionColor, type NotionPageNode, type NotionRichText, type RichTextItem as NotionRichTextItem, type NotionSidecar, OBSIDIAN_CONFIG_DIR, type OperationType, type PageCompletenessRemoteSource, type PageCompletenessReport, type PageCover, type PageCreationPlan, type PageIcon, PathFilter, type PathFilterConfig, type PendingOperation, PendingWalError, type PlannedRow, type PreserveMarker, PreserveMarkerCollector, PreserveMarkerInjector, type Processor, type ProcessorInput, type ProcessorMetadata, type ProcessorOutput, type ProgressCallback, type ProgressItem, PropertiesTableInjector, PropertiesTableRestorer, PropertyMapper, type PropertyOption, type PropertySchema, type PropertyValue, type PullOptions, type PullResult, type PushOptions, type PushResult, RENDER_LINE_RULES, type RecordPendingInput, type RegisterFileInput, type RemoteChange, type RemoteMove, type RemoteMoveSkip, type RemoteObservation, type RemoteScanInfo, type RenameHints, type RenameKind, type RenderFinding, type RenderLineRule, type ResolutionChoice, type ResolutionResult, type RichTextSegment, type RowProgress, SAVED_STATE_TABLES_QUERY, SEPARATOR_BODY, STATE_DB_FILE, STATE_DB_MIGRATIONS, STATE_DB_PATH, SavedStateDbError, ScopedVaultFS, SidecarGenerator, type SidecarProperty, type SidecarView, StateDB, StateDbLockedError, type StateDbMigration, type StateDbTool, StateDbUnavailableError, StateLock, type StateLockClaim, type StateLockOwner, type StatusOptions, type StatusResult, type StyledRange, SyncBusyError, type SyncDirection, type SyncOptions, SyncOrchestrator, type SyncRecord, type SyncResult, type SyncStatus, type TableLineDesign, type TranslationResult, TreeMapper, UnsupportedBlockStripper, type UpsertSyncRecord, type VaultCompletenessReport, type VaultFS, type ViewConfig, ViewDataProvider, type ViewPropertyConfig, type ViewRenderData, type ViewType, WIKILINK_LOOKUPS, type WatchSyncOptions, type WatchSyncScope, WatchSyncService, type WikilinkEntry, type WikilinkLookup, WikilinkResolver, applicableChoices, assertNoPendingWal, basesViewMappingOf, basesViewTypeOf, choiceForStrategy, classifyBodyFidelity, columnLabel, compactNotionId, computeBufferHash, computeHash, configDirFrom, connectionFolderOf, createDefaultPipeline, extractCalendarEntries, filterByMonth, filterEntries, findConnectionFolders, formatUnifiedDiff, generateColorCSS, generateId, getLogger, getNotionBgColor, getNotionColor, getVisibleProperties, groupEntries, hasColumnLayout, hasDesignMarker, inAnyPathScope, isInternalPath, isMarkdownPath, isRemoteDeletion, lineDiff, lintRenderedMarkdown, matchesPathScope, normalizeNotionId, normalizeVaultPath, noteNameFromPath, notionIdFromInput, notionIdsEqual, operationLabel, parseDesignColor, parseIgnorePatterns, pendingWalBytes, readColumnLayout, readDesignLine, resolvePropertyName, sanitizeFileName, setLogger, sortEntries, stateDbLockPath, stateDbWalPath, stripMarkdownExtension, summarizeFidelity, systemTimeZone, threeWayMerge, toVaultPath, translateNotionFilter, verifyDatabaseCompleteness, verifyPageCompleteness, wikilinkLookupsIn };
4478
+ export { BaseFileGenerator, type BaseFileOptions, type BasePropertyOption, type BasePropertySchema, type BaseStatusGroup, type BaseSyncOptions, type BasesFilterNode, type BasesViewMapping, type BasesViewType, BlankLineCollapser, type BookmarkTarget, CONFIG_FILE, type CalendarEntry, type CalloutDesign, CalloutRestorer, CalloutTransformer, ChangeDetector, type ChangeDiff, ColorAnnotator, type ColumnPlace, type CompletenessFailure, type CompletenessLocalSource, type CompletenessOptions, type CompletenessRemoteSource, type CompletenessReport, type Config, ConfigManager, ConfigSchema, type Conflict, ConflictResolver, type ConflictStrategy, ConnectionBoundaryError, ConnectionScopeError, type ConversionContext, type ConversionPath, ConversionPipeline, type ConversionResult, type CoverConfig, type DBEntry, DB_VIEWS_FILE, DB_VIEWS_PATH, DEFAULT_CONFIG, DEFAULT_TITLE_PROPERTY, DEFAULT_WATCH_DEBOUNCE_MS, DIFF_SIGN, type DatabaseCompleteness, type DatabaseSyncConfig, type DatabaseSyncResult, DatabaseSyncer, type DatabaseViewsConfig, type DeferredCode, type DegradeNote, type DesignColor, type DesignLine, type DesignSegment, type DiffHunk, type DiffLine, EmbedResolver, EntryEditor, type FailedOperation, type FidelityClassification, type FidelityContext, type FidelityDefect, type FidelityDefectForm, type FidelitySummary, type FileDownloadResult, FileHandler, type FileInfo, type FileRegistryEntry, type FileStatInfo, type FileSystemEntry, type FileType, type FileUploadResult, FileWatcher, type FilterCondition, FilteredVaultFS, type FolderDatabaseReport, type FolderMoveChange, FrontmatterExtractor, FrontmatterGenerator, type FullScanReason, GITIGNORE_ENTRY, type GatedOperation, type GroupByConfig, type GroupedEntries, IGNORE_FILE, INTERNAL_DIR, INTERNAL_DIR_GLOB, type IStateDB, type ImageDownloadResult, ImageHandler, type ImageReference, type InferredProperty, InlineAnnotationPreserver, InlineDBParser, type InlineStyle, type LineDiffOptions, type LineRange, type LocalChange, LocalImageRestorer, type LocalMoveAdoption, type LocalScan, type LocalScanOptions, type Logger, MARKER_BRAND, type MappingResult, type MappingType, MathNormalizer, MentionToWikilink, type MergeConflictRegion, type MergeResult, NOTION_COLOR_NAMES, NOTION_TOKEN_PREFIX, NOTION_TO_BASES_VIEW, type NestedFolderPage, type NestedFolderRecord, NodeVaultFS, type NonMdFileInfo, type NotionBlock, NotionBlockBuilder, NotionClient, type NotionClientOptions, type NotionColor, type NotionPageNode, type NotionRichText, type RichTextItem as NotionRichTextItem, type NotionSidecar, OBSIDIAN_CONFIG_DIR, type OperationType, type PageCompletenessRemoteSource, type PageCompletenessReport, type PageCover, type PageCreationPlan, type PageIcon, PathFilter, type PathFilterConfig, type PendingOperation, PendingWalError, type PlannedRow, type PreserveMarker, PreserveMarkerCollector, PreserveMarkerInjector, type Processor, type ProcessorInput, type ProcessorMetadata, type ProcessorOutput, type ProgressCallback, type ProgressItem, PropertiesTableInjector, PropertiesTableRestorer, PropertyMapper, type PropertyOption, type PropertySchema, type PropertyValue, type PullOptions, type PullResult, type PushOptions, type PushResult, RENDER_LINE_RULES, type ReadOnlySkip, type RecordPendingInput, type RegisterFileInput, type RemoteChange, type RemoteMove, type RemoteMoveSkip, type RemoteObservation, type RemoteScanInfo, type RenameHints, type RenameKind, type RenderFinding, type RenderLineRule, type ResolutionChoice, type ResolutionResult, type RichTextSegment, type RowProgress, SAVED_STATE_TABLES_QUERY, SEPARATOR_BODY, STATE_DB_FILE, STATE_DB_MIGRATIONS, STATE_DB_PATH, SavedStateDbError, ScopedVaultFS, SidecarGenerator, type SidecarProperty, type SidecarView, StateDB, StateDbLockedError, type StateDbMigration, type StateDbTool, StateDbUnavailableError, StateLock, type StateLockClaim, type StateLockOwner, type StatusOptions, type StatusResult, type StyledRange, SyncBusyError, type SyncDirection, type SyncOptions, SyncOrchestrator, type SyncRecord, type SyncResult, type SyncStatus, type TableLineDesign, type TranslationResult, TreeMapper, UnsupportedBlockStripper, type UpsertSyncRecord, type VaultCompletenessReport, type VaultFS, type ViewConfig, ViewDataProvider, type ViewPropertyConfig, type ViewRenderData, type ViewType, WIKILINK_LOOKUPS, type WatchSyncOptions, type WatchSyncScope, WatchSyncService, type WikilinkEntry, type WikilinkLookup, WikilinkResolver, applicableChoices, assertNoPendingWal, basesViewMappingOf, basesViewTypeOf, choiceForStrategy, classifyBodyFidelity, columnLabel, compactNotionId, computeBufferHash, computeHash, configDirFrom, connectionFolderOf, createDefaultPipeline, extractCalendarEntries, filterByMonth, filterEntries, findConnectionFolders, findNestedFolderPages, formatUnifiedDiff, generateColorCSS, generateId, getLogger, getNotionBgColor, getNotionColor, getVisibleProperties, groupEntries, hasColumnLayout, hasDesignMarker, inAnyPathScope, isHeadingLine, isHeadingMarkerLine, isInternalPath, isMarkdownPath, isRemoteDeletion, lineDiff, lintRenderedMarkdown, matchesPathScope, normalizeNotionId, normalizeVaultPath, noteNameFromPath, notionIdFromInput, notionIdsEqual, operationLabel, parseDesignColor, parseIgnorePatterns, pendingWalBytes, readColumnLayout, readDesignLine, resolvePropertyName, sanitizeFileName, sectionLinesWithHeadingMarkers, setLogger, sortEntries, stateDbLockPath, stateDbWalPath, stripMarkdownExtension, summarizeFidelity, systemTimeZone, threeWayMerge, toVaultPath, translateNotionFilter, verifyDatabaseCompleteness, verifyPageCompleteness, wikilinkLookupsIn };