@tk_wfl/o2n-core 0.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/dist/converter.d.ts +48 -0
- package/dist/converter.d.ts.map +1 -0
- package/dist/converter.js +264 -0
- package/dist/converter.js.map +1 -0
- package/dist/credentials.d.ts +13 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +33 -0
- package/dist/credentials.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/migrator.d.ts +16 -0
- package/dist/migrator.d.ts.map +1 -0
- package/dist/migrator.js +402 -0
- package/dist/migrator.js.map +1 -0
- package/dist/notion-blocks.d.ts +23 -0
- package/dist/notion-blocks.d.ts.map +1 -0
- package/dist/notion-blocks.js +91 -0
- package/dist/notion-blocks.js.map +1 -0
- package/dist/notion-client.d.ts +161 -0
- package/dist/notion-client.d.ts.map +1 -0
- package/dist/notion-client.js +187 -0
- package/dist/notion-client.js.map +1 -0
- package/dist/notion-db.d.ts +15 -0
- package/dist/notion-db.d.ts.map +1 -0
- package/dist/notion-db.js +88 -0
- package/dist/notion-db.js.map +1 -0
- package/dist/planner.d.ts +16 -0
- package/dist/planner.d.ts.map +1 -0
- package/dist/planner.js +60 -0
- package/dist/planner.js.map +1 -0
- package/dist/property-mapping.d.ts +17 -0
- package/dist/property-mapping.d.ts.map +1 -0
- package/dist/property-mapping.js +68 -0
- package/dist/property-mapping.js.map +1 -0
- package/dist/report.d.ts +6 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +51 -0
- package/dist/report.js.map +1 -0
- package/dist/scanner.d.ts +14 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +202 -0
- package/dist/scanner.js.map +1 -0
- package/dist/state.d.ts +39 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/state.js +99 -0
- package/dist/state.js.map +1 -0
- package/dist/types.d.ts +126 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/package.json +48 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { ConversionResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* プレースホルダー形式について(仕様書§5 F4からの実装上の変更点):
|
|
4
|
+
* 仕様書は `⟦o2n:link:リンク先相対パス⟧` という単一の相対パス埋め込み形式を示すが、
|
|
5
|
+
* 同一ノートへのエイリアス違いリンクや見出しリンクなど「表示名がリンクごとに異なるケース」を
|
|
6
|
+
* 表現できないため、本実装では `⟦o2n-link-N⟧` / `⟦o2n-file-N⟧`(Nはノート内の出現順連番)を
|
|
7
|
+
* プレースホルダーとし、実際のリンク先・表示名は ConversionResult.pendingLinks / pendingFiles に
|
|
8
|
+
* 構造化データとして保持する。Pass 2 はこのNをキーに old_str/new_str を組み立てる。
|
|
9
|
+
* コロンではなくハイフン区切りにしているのは、Notionのenhanced markdownが
|
|
10
|
+
* old_str検索対象のシリアライズ時にコロンをバックスラッシュエスケープするため
|
|
11
|
+
* (§16検証済み、2026-07-19)。差分は docs/questions.md に記録済み。
|
|
12
|
+
*/
|
|
13
|
+
export interface PendingLink {
|
|
14
|
+
placeholder: string;
|
|
15
|
+
/** 解決済みノート相対パス(未解決の場合 null) */
|
|
16
|
+
targetPath: string | null;
|
|
17
|
+
/** リンク未解決時にフォールバックする表示テキスト(元の[[表記]]) */
|
|
18
|
+
fallbackText: string;
|
|
19
|
+
/** Pass2で解決済み時に使う表示名 */
|
|
20
|
+
displayText: string;
|
|
21
|
+
}
|
|
22
|
+
export interface PendingFile {
|
|
23
|
+
placeholder: string;
|
|
24
|
+
targetPath: string | null;
|
|
25
|
+
fallbackText: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ConvertNoteResult extends ConversionResult {
|
|
28
|
+
pendingLinks: PendingLink[];
|
|
29
|
+
pendingFiles: PendingFile[];
|
|
30
|
+
/** 元本文に⟦o2n-が含まれていたためエスケープ復元が必要か */
|
|
31
|
+
needsEscapeRestore: boolean;
|
|
32
|
+
}
|
|
33
|
+
export interface ConverterContext {
|
|
34
|
+
sourcePath: string;
|
|
35
|
+
/** [[target]] や  等の解決先ノート/添付相対パスを引く。見つからなければnull */
|
|
36
|
+
resolveNoteLink: (target: string) => string | null;
|
|
37
|
+
resolveAttachment: (target: string) => string | null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* §16検証済み(2026-07-19): Notionのenhanced markdownは`old_str`検索の対象となる
|
|
41
|
+
* 保存済みmarkdownをシリアライズする際、コロン(:)をバックスラッシュエスケープする
|
|
42
|
+
* (`⟦o2n:link:0⟧` → `⟦o2n\:link\:0⟧`)。これによりPass2の完全一致検索が失敗するため、
|
|
43
|
+
* プレースホルダーにはコロンを含めず、ハイフンを使う。
|
|
44
|
+
*/
|
|
45
|
+
export declare const ESCAPE_SENTINEL = "\u27E6o2n-esc-";
|
|
46
|
+
export declare const ESCAPE_TARGET = "\u27E6o2n-";
|
|
47
|
+
export declare function convertNote(content: string, ctx: ConverterContext): ConvertNoteResult;
|
|
48
|
+
//# sourceMappingURL=converter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAe,MAAM,YAAY,CAAC;AAEhE;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,oCAAoC;IACpC,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACnD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CACtD;AAWD;;;;;GAKG;AACH,eAAO,MAAM,eAAe,mBAAc,CAAC;AAC3C,eAAO,MAAM,aAAa,eAAU,CAAC;AA8OrC,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,GAAG,iBAAiB,CAyCrF"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
const CALLOUT_TYPE_MAP = {
|
|
3
|
+
note: { icon: '💡', color: 'blue_bg' },
|
|
4
|
+
warning: { icon: '⚠️', color: 'orange_bg' },
|
|
5
|
+
tip: { icon: '💡', color: 'green_bg' },
|
|
6
|
+
info: { icon: 'ℹ️', color: 'gray_bg' },
|
|
7
|
+
danger: { icon: '⛔', color: 'red_bg' },
|
|
8
|
+
};
|
|
9
|
+
const DEFAULT_CALLOUT = { icon: 'ℹ️', color: 'gray_bg' };
|
|
10
|
+
/**
|
|
11
|
+
* §16検証済み(2026-07-19): Notionのenhanced markdownは`old_str`検索の対象となる
|
|
12
|
+
* 保存済みmarkdownをシリアライズする際、コロン(:)をバックスラッシュエスケープする
|
|
13
|
+
* (`⟦o2n:link:0⟧` → `⟦o2n\:link\:0⟧`)。これによりPass2の完全一致検索が失敗するため、
|
|
14
|
+
* プレースホルダーにはコロンを含めず、ハイフンを使う。
|
|
15
|
+
*/
|
|
16
|
+
export const ESCAPE_SENTINEL = '⟦o2n-esc-';
|
|
17
|
+
export const ESCAPE_TARGET = '⟦o2n-';
|
|
18
|
+
function splitCodeFences(content) {
|
|
19
|
+
const segments = [];
|
|
20
|
+
const re = /```([^\n`]*)\n([\s\S]*?)```/g;
|
|
21
|
+
let lastIndex = 0;
|
|
22
|
+
let m;
|
|
23
|
+
while ((m = re.exec(content)) !== null) {
|
|
24
|
+
if (m.index > lastIndex) {
|
|
25
|
+
segments.push({ type: 'text', content: content.slice(lastIndex, m.index) });
|
|
26
|
+
}
|
|
27
|
+
segments.push({ type: 'code', content: m[0], lang: (m[1] ?? '').trim() });
|
|
28
|
+
lastIndex = m.index + m[0].length;
|
|
29
|
+
}
|
|
30
|
+
if (lastIndex < content.length) {
|
|
31
|
+
segments.push({ type: 'text', content: content.slice(lastIndex) });
|
|
32
|
+
}
|
|
33
|
+
return segments;
|
|
34
|
+
}
|
|
35
|
+
function convertCallouts(text, entries, sourcePath) {
|
|
36
|
+
const lines = text.split('\n');
|
|
37
|
+
const out = [];
|
|
38
|
+
let i = 0;
|
|
39
|
+
while (i < lines.length) {
|
|
40
|
+
const line = lines[i] ?? '';
|
|
41
|
+
const calloutMatch = /^>\s?\[!(\w+)\]([-+]?)\s*(.*)$/.exec(line);
|
|
42
|
+
if (calloutMatch) {
|
|
43
|
+
const [, rawType, , titleText] = calloutMatch;
|
|
44
|
+
const type = (rawType ?? '').toLowerCase();
|
|
45
|
+
const style = CALLOUT_TYPE_MAP[type] ?? DEFAULT_CALLOUT;
|
|
46
|
+
if (!CALLOUT_TYPE_MAP[type]) {
|
|
47
|
+
entries.push({
|
|
48
|
+
category: 'downgraded',
|
|
49
|
+
path: sourcePath,
|
|
50
|
+
message: `未知のcallout種別 "${type}" をデフォルト表示(ℹ️/gray)に変換しました`,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
const bodyLines = [];
|
|
54
|
+
let j = i + 1;
|
|
55
|
+
while (j < lines.length && /^>\s?/.test(lines[j] ?? '')) {
|
|
56
|
+
bodyLines.push((lines[j] ?? '').replace(/^>\s?/, ''));
|
|
57
|
+
j += 1;
|
|
58
|
+
}
|
|
59
|
+
const title = (titleText ?? '').trim() || type.charAt(0).toUpperCase() + type.slice(1);
|
|
60
|
+
// §16検証済み: callout内の改行は\nではなく<br>でないと</callout>の位置がずれて壊れる
|
|
61
|
+
const body = bodyLines.join('<br>').trim();
|
|
62
|
+
out.push(`<callout icon="${style.icon}" color="${style.color}">**${title}**${body ? `<br>${body}` : ''}</callout>`);
|
|
63
|
+
i = j;
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
66
|
+
out.push(line);
|
|
67
|
+
i += 1;
|
|
68
|
+
}
|
|
69
|
+
return out.join('\n');
|
|
70
|
+
}
|
|
71
|
+
function convertHighlights(text, entries, sourcePath) {
|
|
72
|
+
return text.replace(/==([^=\n]+)==/g, (_m, inner) => {
|
|
73
|
+
entries.push({
|
|
74
|
+
category: 'downgraded',
|
|
75
|
+
path: sourcePath,
|
|
76
|
+
message: `ハイライト "==${inner}==" を太字に降格しました`,
|
|
77
|
+
});
|
|
78
|
+
return `**${inner}**`;
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
function stripComments(text, entries, sourcePath) {
|
|
82
|
+
let count = 0;
|
|
83
|
+
const result = text.replace(/%%[\s\S]*?%%/g, () => {
|
|
84
|
+
count += 1;
|
|
85
|
+
return '';
|
|
86
|
+
});
|
|
87
|
+
if (count > 0) {
|
|
88
|
+
entries.push({
|
|
89
|
+
category: 'downgraded',
|
|
90
|
+
path: sourcePath,
|
|
91
|
+
message: `Obsidianコメントを${count}件削除しました`,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
function expandFootnotes(text, entries, sourcePath) {
|
|
97
|
+
const defRe = /^\[\^([^\]]+)\]:\s*(.+)$/gm;
|
|
98
|
+
const defs = new Map();
|
|
99
|
+
const withoutDefs = text.replace(defRe, (_m, id, body) => {
|
|
100
|
+
defs.set(id, body.trim());
|
|
101
|
+
return '';
|
|
102
|
+
});
|
|
103
|
+
if (defs.size === 0)
|
|
104
|
+
return withoutDefs;
|
|
105
|
+
const result = withoutDefs.replace(/\[\^([^\]]+)\]/g, (m, id) => {
|
|
106
|
+
const body = defs.get(id);
|
|
107
|
+
if (body === undefined)
|
|
108
|
+
return m;
|
|
109
|
+
entries.push({
|
|
110
|
+
category: 'downgraded',
|
|
111
|
+
path: sourcePath,
|
|
112
|
+
message: `脚注 [^${id}] を文中展開に降格しました`,
|
|
113
|
+
});
|
|
114
|
+
return ` (${body})`;
|
|
115
|
+
});
|
|
116
|
+
return result.replace(/\n{3,}/g, '\n\n');
|
|
117
|
+
}
|
|
118
|
+
let linkCounter = 0;
|
|
119
|
+
let fileCounter = 0;
|
|
120
|
+
function makeLinkPlaceholder() {
|
|
121
|
+
return `⟦o2n-link-${linkCounter++}⟧`;
|
|
122
|
+
}
|
|
123
|
+
function makeFilePlaceholder() {
|
|
124
|
+
return `⟦o2n-file-${fileCounter++}⟧`;
|
|
125
|
+
}
|
|
126
|
+
const WIKILINK_RE = /(!?)\[\[([^\]|#]+)(?:#(\^?[^\]|]+))?(?:\|([^\]]+))?\]\]/g;
|
|
127
|
+
const ATTACHMENT_EXTENSIONS = new Set([
|
|
128
|
+
'png', 'jpg', 'jpeg', 'gif', 'svg', 'webp', 'bmp',
|
|
129
|
+
'pdf',
|
|
130
|
+
'mp3', 'wav', 'm4a', 'ogg', 'flac',
|
|
131
|
+
'mp4', 'mov', 'webm', 'mkv',
|
|
132
|
+
]);
|
|
133
|
+
function convertWikiLinks(text, ctx, entries, pendingLinks, pendingFiles) {
|
|
134
|
+
return text.replace(WIKILINK_RE, (raw, bang, targetRaw, anchor, alias) => {
|
|
135
|
+
const isEmbed = bang === '!';
|
|
136
|
+
const target = targetRaw.trim();
|
|
137
|
+
const ext = target.includes('.') ? target.split('.').pop().toLowerCase() : '';
|
|
138
|
+
if (isEmbed && ATTACHMENT_EXTENSIONS.has(ext)) {
|
|
139
|
+
const resolved = ctx.resolveAttachment(target);
|
|
140
|
+
const placeholder = makeFilePlaceholder();
|
|
141
|
+
pendingFiles.push({ placeholder, targetPath: resolved, fallbackText: raw });
|
|
142
|
+
if (!resolved) {
|
|
143
|
+
entries.push({ category: 'warning', path: ctx.sourcePath, message: `添付ファイル "${target}" が見つかりませんでした` });
|
|
144
|
+
}
|
|
145
|
+
return placeholder;
|
|
146
|
+
}
|
|
147
|
+
if (isEmbed && !ext) {
|
|
148
|
+
// ノート埋め込み(トランスクルージョン非対応→リンク降格)
|
|
149
|
+
const resolved = ctx.resolveNoteLink(target);
|
|
150
|
+
const displayText = alias?.trim() || target;
|
|
151
|
+
entries.push({
|
|
152
|
+
category: 'downgraded',
|
|
153
|
+
path: ctx.sourcePath,
|
|
154
|
+
message: `ノート埋め込み "![[${target}]]" をリンクに降格しました`,
|
|
155
|
+
});
|
|
156
|
+
if (!resolved) {
|
|
157
|
+
entries.push({ category: 'unresolved_link', path: ctx.sourcePath, message: `埋め込みリンク先 "${target}" が見つかりませんでした` });
|
|
158
|
+
return `<callout icon="📎" color="gray_bg">埋め込み: ${displayText}</callout>`;
|
|
159
|
+
}
|
|
160
|
+
const placeholder = makeLinkPlaceholder();
|
|
161
|
+
pendingLinks.push({ placeholder, targetPath: resolved, fallbackText: `${displayText}`, displayText: `埋め込み: ${displayText}` });
|
|
162
|
+
return `<callout icon="📎" color="gray_bg">埋め込み: ${placeholder}</callout>`;
|
|
163
|
+
}
|
|
164
|
+
// 通常のノートリンク(見出し/ブロック参照/エイリアス対応)
|
|
165
|
+
let displayText = alias?.trim() || target;
|
|
166
|
+
let degraded = false;
|
|
167
|
+
if (anchor) {
|
|
168
|
+
if (anchor.startsWith('^')) {
|
|
169
|
+
degraded = true;
|
|
170
|
+
entries.push({ category: 'downgraded', path: ctx.sourcePath, message: `ブロック参照 "[[${target}#${anchor}]]" はページ先頭リンクに降格しました` });
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
degraded = true;
|
|
174
|
+
if (!alias)
|
|
175
|
+
displayText = `${target} > ${anchor}`;
|
|
176
|
+
entries.push({ category: 'downgraded', path: ctx.sourcePath, message: `見出しリンク "[[${target}#${anchor}]]" はページ先頭リンクに降格しました` });
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
const resolved = ctx.resolveNoteLink(target);
|
|
180
|
+
const placeholder = makeLinkPlaceholder();
|
|
181
|
+
pendingLinks.push({
|
|
182
|
+
placeholder,
|
|
183
|
+
targetPath: resolved,
|
|
184
|
+
fallbackText: alias ? `[[${target}|${alias}]]` : (anchor ? `[[${target}#${anchor}]]` : `[[${target}]]`),
|
|
185
|
+
displayText,
|
|
186
|
+
});
|
|
187
|
+
if (!resolved) {
|
|
188
|
+
entries.push({ category: 'unresolved_link', path: ctx.sourcePath, message: `リンク先 "${target}" が見つかりませんでした` });
|
|
189
|
+
}
|
|
190
|
+
void degraded;
|
|
191
|
+
return placeholder;
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
const MD_IMAGE_RE = /!\[([^\]]*)\]\(([^)\s]+)\)/g;
|
|
195
|
+
const MD_LINK_RE = /\[([^\]]+)\]\(([^)\s]+)\)/g;
|
|
196
|
+
function convertMarkdownLinksAndImages(text, ctx, entries, pendingLinks, pendingFiles) {
|
|
197
|
+
let result = text.replace(MD_IMAGE_RE, (raw, alt, url) => {
|
|
198
|
+
if (/^https?:\/\//i.test(url))
|
|
199
|
+
return raw; // 外部URL画像はそのまま
|
|
200
|
+
const decoded = decodeURIComponent(url);
|
|
201
|
+
const resolved = ctx.resolveAttachment(decoded) ?? ctx.resolveAttachment(path.posix.basename(decoded));
|
|
202
|
+
const placeholder = makeFilePlaceholder();
|
|
203
|
+
pendingFiles.push({ placeholder, targetPath: resolved, fallbackText: raw });
|
|
204
|
+
if (!resolved) {
|
|
205
|
+
entries.push({ category: 'warning', path: ctx.sourcePath, message: `画像 "${decoded}" が見つかりませんでした` });
|
|
206
|
+
}
|
|
207
|
+
return placeholder;
|
|
208
|
+
});
|
|
209
|
+
result = result.replace(MD_LINK_RE, (raw, text_, url) => {
|
|
210
|
+
if (/^https?:\/\//i.test(url) || url.startsWith('#'))
|
|
211
|
+
return raw; // 外部URL/ページ内アンカーはそのまま
|
|
212
|
+
if (!url.endsWith('.md'))
|
|
213
|
+
return raw; // md形式内部リンクのみ対象
|
|
214
|
+
const decoded = decodeURIComponent(url);
|
|
215
|
+
const resolved = ctx.resolveNoteLink(decoded) ?? ctx.resolveNoteLink(path.posix.basename(decoded));
|
|
216
|
+
const placeholder = makeLinkPlaceholder();
|
|
217
|
+
pendingLinks.push({ placeholder, targetPath: resolved, fallbackText: raw, displayText: text_ });
|
|
218
|
+
if (!resolved) {
|
|
219
|
+
entries.push({ category: 'unresolved_link', path: ctx.sourcePath, message: `md形式リンク先 "${decoded}" が見つかりませんでした` });
|
|
220
|
+
}
|
|
221
|
+
return placeholder;
|
|
222
|
+
});
|
|
223
|
+
return result;
|
|
224
|
+
}
|
|
225
|
+
export function convertNote(content, ctx) {
|
|
226
|
+
linkCounter = 0;
|
|
227
|
+
fileCounter = 0;
|
|
228
|
+
const entries = [];
|
|
229
|
+
const pendingLinks = [];
|
|
230
|
+
const pendingFiles = [];
|
|
231
|
+
const needsEscapeRestore = content.includes(ESCAPE_TARGET);
|
|
232
|
+
const escaped = needsEscapeRestore
|
|
233
|
+
? content.split(ESCAPE_TARGET).join(ESCAPE_SENTINEL)
|
|
234
|
+
: content;
|
|
235
|
+
const segments = splitCodeFences(escaped);
|
|
236
|
+
const converted = segments.map((seg) => {
|
|
237
|
+
if (seg.type === 'code') {
|
|
238
|
+
if (seg.lang === 'dataview' || seg.lang === 'dataviewjs') {
|
|
239
|
+
entries.push({
|
|
240
|
+
category: 'downgraded',
|
|
241
|
+
path: ctx.sourcePath,
|
|
242
|
+
message: `${seg.lang}コードブロックはそのまま保持しました(実行結果は再現されません)`,
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
return seg.content; // mermaid含め、コードブロックは常にそのまま保持
|
|
246
|
+
}
|
|
247
|
+
let t = seg.content;
|
|
248
|
+
t = convertCallouts(t, entries, ctx.sourcePath);
|
|
249
|
+
t = convertWikiLinks(t, ctx, entries, pendingLinks, pendingFiles);
|
|
250
|
+
t = convertMarkdownLinksAndImages(t, ctx, entries, pendingLinks, pendingFiles);
|
|
251
|
+
t = convertHighlights(t, entries, ctx.sourcePath);
|
|
252
|
+
t = stripComments(t, entries, ctx.sourcePath);
|
|
253
|
+
t = expandFootnotes(t, entries, ctx.sourcePath);
|
|
254
|
+
return t;
|
|
255
|
+
});
|
|
256
|
+
return {
|
|
257
|
+
markdown: converted.join(''),
|
|
258
|
+
entries,
|
|
259
|
+
pendingLinks,
|
|
260
|
+
pendingFiles,
|
|
261
|
+
needsEscapeRestore,
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=converter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"converter.js","sourceRoot":"","sources":["../src/converter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface StoredCredentials {
|
|
2
|
+
token: string;
|
|
3
|
+
workspaceName?: string | null;
|
|
4
|
+
savedAt: string;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* `o2n login`(OAuth)で取得したトークンをホームディレクトリ配下に保存する(vault内には保存しない)。
|
|
8
|
+
* CLI・MCPサーバーの両方から共有される(NOTION_TOKEN環境変数が無い場合のフォールバック用)。
|
|
9
|
+
*/
|
|
10
|
+
export declare function saveCredentials(data: StoredCredentials): Promise<void>;
|
|
11
|
+
export declare function loadCredentials(): Promise<StoredCredentials | null>;
|
|
12
|
+
export declare function clearCredentials(): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB;AAMD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5E;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAOzE;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMtD"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { promises as fs } from 'node:fs';
|
|
2
|
+
import os from 'node:os';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
function credentialsPath() {
|
|
5
|
+
return path.join(os.homedir(), '.o2n', 'credentials.json');
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* `o2n login`(OAuth)で取得したトークンをホームディレクトリ配下に保存する(vault内には保存しない)。
|
|
9
|
+
* CLI・MCPサーバーの両方から共有される(NOTION_TOKEN環境変数が無い場合のフォールバック用)。
|
|
10
|
+
*/
|
|
11
|
+
export async function saveCredentials(data) {
|
|
12
|
+
const p = credentialsPath();
|
|
13
|
+
await fs.mkdir(path.dirname(p), { recursive: true });
|
|
14
|
+
await fs.writeFile(p, JSON.stringify(data, null, 2), { mode: 0o600 });
|
|
15
|
+
}
|
|
16
|
+
export async function loadCredentials() {
|
|
17
|
+
try {
|
|
18
|
+
const raw = await fs.readFile(credentialsPath(), 'utf-8');
|
|
19
|
+
return JSON.parse(raw);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export async function clearCredentials() {
|
|
26
|
+
try {
|
|
27
|
+
await fs.unlink(credentialsPath());
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// 既に無ければ何もしない
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../src/credentials.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,SAAS,eAAe;IACtB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAC7D,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAuB;IAC3D,MAAM,CAAC,GAAG,eAAe,EAAE,CAAC;IAC5B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrD,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,EAAE,OAAO,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAsB,CAAC;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from './types.js';
|
|
2
|
+
export * from './scanner.js';
|
|
3
|
+
export * from './converter.js';
|
|
4
|
+
export * from './notion-client.js';
|
|
5
|
+
export * from './notion-blocks.js';
|
|
6
|
+
export * from './notion-db.js';
|
|
7
|
+
export * from './state.js';
|
|
8
|
+
export * from './planner.js';
|
|
9
|
+
export * from './property-mapping.js';
|
|
10
|
+
export * from './migrator.js';
|
|
11
|
+
export * from './report.js';
|
|
12
|
+
export * from './credentials.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from './types.js';
|
|
2
|
+
export * from './scanner.js';
|
|
3
|
+
export * from './converter.js';
|
|
4
|
+
export * from './notion-client.js';
|
|
5
|
+
export * from './notion-blocks.js';
|
|
6
|
+
export * from './notion-db.js';
|
|
7
|
+
export * from './state.js';
|
|
8
|
+
export * from './planner.js';
|
|
9
|
+
export * from './property-mapping.js';
|
|
10
|
+
export * from './migrator.js';
|
|
11
|
+
export * from './report.js';
|
|
12
|
+
export * from './credentials.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type NotionApi } from './notion-client.js';
|
|
2
|
+
import type { StateStore } from './state.js';
|
|
3
|
+
import type { MigrationPlan, NoteRecord, ReportEntry, VaultInventory } from './types.js';
|
|
4
|
+
export interface MigratorOptions {
|
|
5
|
+
vaultPath: string;
|
|
6
|
+
plan: MigrationPlan;
|
|
7
|
+
inventory: VaultInventory;
|
|
8
|
+
api: NotionApi;
|
|
9
|
+
state: StateStore;
|
|
10
|
+
dryRun: boolean;
|
|
11
|
+
/** ノート単位の進捗コールバック(総ノート数ベースの進捗表示用) */
|
|
12
|
+
onProgress?: (done: number, total: number, notePath: string) => void;
|
|
13
|
+
}
|
|
14
|
+
export declare function runMigration(opts: MigratorOptions): Promise<ReportEntry[]>;
|
|
15
|
+
export declare function noteRecordByPath(notes: NoteRecord[], p: string): NoteRecord | undefined;
|
|
16
|
+
//# sourceMappingURL=migrator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrator.d.ts","sourceRoot":"","sources":["../src/migrator.ts"],"names":[],"mappings":"AAIA,OAAO,EAAkB,KAAK,SAAS,EAA0B,MAAM,oBAAoB,CAAC;AAC5F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAU7C,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEzF,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,cAAc,CAAC;IAC1B,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,qCAAqC;IACrC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACtE;AAyaD,wBAAsB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAoBhF;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAEvF"}
|