draft-ole 0.9.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 (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.ja.md +134 -0
  3. package/README.md +128 -0
  4. package/dist/chunk-5BNNDTRT.js +95 -0
  5. package/dist/chunk-5BNNDTRT.js.map +1 -0
  6. package/dist/chunk-STLTIBMA.js +7658 -0
  7. package/dist/chunk-STLTIBMA.js.map +1 -0
  8. package/dist/chunk-YK4Y4ENL.js +389 -0
  9. package/dist/chunk-YK4Y4ENL.js.map +1 -0
  10. package/dist/entries/app.cjs +7337 -0
  11. package/dist/entries/app.cjs.map +1 -0
  12. package/dist/entries/app.d.cts +115 -0
  13. package/dist/entries/app.d.ts +115 -0
  14. package/dist/entries/app.js +10 -0
  15. package/dist/entries/app.js.map +1 -0
  16. package/dist/entries/page.cjs +7558 -0
  17. package/dist/entries/page.cjs.map +1 -0
  18. package/dist/entries/page.d.cts +2 -0
  19. package/dist/entries/page.d.ts +2 -0
  20. package/dist/entries/page.js +30 -0
  21. package/dist/entries/page.js.map +1 -0
  22. package/dist/index.cjs +10524 -0
  23. package/dist/index.cjs.map +1 -0
  24. package/dist/index.d.cts +4700 -0
  25. package/dist/index.d.ts +4700 -0
  26. package/dist/index.js +2573 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/page-DylNkWXm.d.ts +366 -0
  29. package/dist/page-h3DPzs8l.d.cts +366 -0
  30. package/dist/transformer/call-detector.d.ts +38 -0
  31. package/dist/transformer/call-detector.d.ts.map +1 -0
  32. package/dist/transformer/call-detector.js +151 -0
  33. package/dist/transformer/call-detector.js.map +1 -0
  34. package/dist/transformer/command-injector.d.ts +27 -0
  35. package/dist/transformer/command-injector.d.ts.map +1 -0
  36. package/dist/transformer/command-injector.js +111 -0
  37. package/dist/transformer/command-injector.js.map +1 -0
  38. package/dist/transformer/diagnostic-reporter.d.ts +81 -0
  39. package/dist/transformer/diagnostic-reporter.d.ts.map +1 -0
  40. package/dist/transformer/diagnostic-reporter.js +330 -0
  41. package/dist/transformer/diagnostic-reporter.js.map +1 -0
  42. package/dist/transformer/each-scope-branch.d.ts +28 -0
  43. package/dist/transformer/each-scope-branch.d.ts.map +1 -0
  44. package/dist/transformer/each-scope-branch.js +95 -0
  45. package/dist/transformer/each-scope-branch.js.map +1 -0
  46. package/dist/transformer/each-state-rewriter.d.ts +117 -0
  47. package/dist/transformer/each-state-rewriter.d.ts.map +1 -0
  48. package/dist/transformer/each-state-rewriter.js +393 -0
  49. package/dist/transformer/each-state-rewriter.js.map +1 -0
  50. package/dist/transformer/format-diagnostics.d.ts +27 -0
  51. package/dist/transformer/format-diagnostics.d.ts.map +1 -0
  52. package/dist/transformer/format-diagnostics.js +50 -0
  53. package/dist/transformer/format-diagnostics.js.map +1 -0
  54. package/dist/transformer/handler-ir-extractor.d.ts +71 -0
  55. package/dist/transformer/handler-ir-extractor.d.ts.map +1 -0
  56. package/dist/transformer/handler-ir-extractor.js +171 -0
  57. package/dist/transformer/handler-ir-extractor.js.map +1 -0
  58. package/dist/transformer/handler-serializer.d.ts +56 -0
  59. package/dist/transformer/handler-serializer.d.ts.map +1 -0
  60. package/dist/transformer/handler-serializer.js +315 -0
  61. package/dist/transformer/handler-serializer.js.map +1 -0
  62. package/dist/transformer/helper-context-resolver.d.ts +180 -0
  63. package/dist/transformer/helper-context-resolver.d.ts.map +1 -0
  64. package/dist/transformer/helper-context-resolver.js +376 -0
  65. package/dist/transformer/helper-context-resolver.js.map +1 -0
  66. package/dist/transformer/helper-decl-utils.d.ts +28 -0
  67. package/dist/transformer/helper-decl-utils.d.ts.map +1 -0
  68. package/dist/transformer/helper-decl-utils.js +92 -0
  69. package/dist/transformer/helper-decl-utils.js.map +1 -0
  70. package/dist/transformer/identifier-collector.d.ts +28 -0
  71. package/dist/transformer/identifier-collector.d.ts.map +1 -0
  72. package/dist/transformer/identifier-collector.js +184 -0
  73. package/dist/transformer/identifier-collector.js.map +1 -0
  74. package/dist/transformer/index.d.ts +56 -0
  75. package/dist/transformer/index.d.ts.map +1 -0
  76. package/dist/transformer/index.js +333 -0
  77. package/dist/transformer/index.js.map +1 -0
  78. package/dist/transformer/inline-recovery.d.ts +109 -0
  79. package/dist/transformer/inline-recovery.d.ts.map +1 -0
  80. package/dist/transformer/inline-recovery.js +369 -0
  81. package/dist/transformer/inline-recovery.js.map +1 -0
  82. package/dist/transformer/label-injector.d.ts +105 -0
  83. package/dist/transformer/label-injector.d.ts.map +1 -0
  84. package/dist/transformer/label-injector.js +221 -0
  85. package/dist/transformer/label-injector.js.map +1 -0
  86. package/dist/transformer/package.json +3 -0
  87. package/dist/transformer/per-call-context.d.ts +95 -0
  88. package/dist/transformer/per-call-context.d.ts.map +1 -0
  89. package/dist/transformer/per-call-context.js +3 -0
  90. package/dist/transformer/per-call-context.js.map +1 -0
  91. package/dist/transformer/state-id-fallback.d.ts +85 -0
  92. package/dist/transformer/state-id-fallback.d.ts.map +1 -0
  93. package/dist/transformer/state-id-fallback.js +132 -0
  94. package/dist/transformer/state-id-fallback.js.map +1 -0
  95. package/dist/transformer/state-id-resolver.d.ts +104 -0
  96. package/dist/transformer/state-id-resolver.d.ts.map +1 -0
  97. package/dist/transformer/state-id-resolver.js +222 -0
  98. package/dist/transformer/state-id-resolver.js.map +1 -0
  99. package/dist/transformer/theme-class-detector.d.ts +47 -0
  100. package/dist/transformer/theme-class-detector.d.ts.map +1 -0
  101. package/dist/transformer/theme-class-detector.js +242 -0
  102. package/dist/transformer/theme-class-detector.js.map +1 -0
  103. package/dist/transformer/varname-resolver.d.ts +53 -0
  104. package/dist/transformer/varname-resolver.d.ts.map +1 -0
  105. package/dist/transformer/varname-resolver.js +231 -0
  106. package/dist/transformer/varname-resolver.js.map +1 -0
  107. package/dist/transformer/whitelist-registry.d.ts +68 -0
  108. package/dist/transformer/whitelist-registry.d.ts.map +1 -0
  109. package/dist/transformer/whitelist-registry.js +122 -0
  110. package/dist/transformer/whitelist-registry.js.map +1 -0
  111. package/dist/transformer/whitelist-validator.d.ts +59 -0
  112. package/dist/transformer/whitelist-validator.d.ts.map +1 -0
  113. package/dist/transformer/whitelist-validator.js +493 -0
  114. package/dist/transformer/whitelist-validator.js.map +1 -0
  115. package/dist/types-BXV3vhHS.d.cts +4590 -0
  116. package/dist/types-BXV3vhHS.d.ts +4590 -0
  117. package/package.json +121 -0
@@ -0,0 +1,366 @@
1
+ import { aF as Root, aG as StaticView, al as PageOptions, b as HtmlTag, T as TagType, e as HtmlTagOptions, R as RenderContext, a as HTMLTagProtocol, v as ButtonOptions, ay as View, ad as HeadingLevel, ak as LinkOptions } from './types-BXV3vhHS.js';
2
+
3
+ /**
4
+ * 静的ページ書き出しのオプション。
5
+ *
6
+ * design.md §6.3 で定義された `StaticExportOptions` インターフェース。
7
+ *
8
+ * - `htmlFileName`: 出力 HTML ファイル名(デフォルト: `'index.html'`)
9
+ * - `cssFileName`: 出力 CSS ファイル名(デフォルト: `'style.css'`)。`inlineCss=false` のときのみ使用
10
+ * - `inlineCss`: CSS を `<style>` タグとして HTML 内に埋め込むか(デフォルト: `true`)
11
+ *
12
+ * @public
13
+ */
14
+ interface StaticExportOptions {
15
+ readonly htmlFileName?: string;
16
+ readonly cssFileName?: string;
17
+ readonly inlineCss?: boolean;
18
+ }
19
+
20
+ /**
21
+ * 静的ページの境界オブジェクト。
22
+ *
23
+ * 内部で {@link Root} を保持するが外部 API では露出しない。
24
+ * `render()` は HTML + inline CSS を返し、`export()` は {@link StaticPageWriter} に委譲する。
25
+ *
26
+ * design.md §6.3 / requirements.md 4.2, 5.1, 5.2 に対応。
27
+ *
28
+ * 構築時 pure validation を {@link page} ファクトリで 1 度だけ実施するため、
29
+ * `render()` / `export()` 側では再検証しない(冪等性)。
30
+ */
31
+ declare class PageDocument {
32
+ private readonly _root;
33
+ /**
34
+ * @internal `page()` ファクトリからのみ呼び出されることを想定する。
35
+ * 外部から直接構築すると静的性検証を素通りするため非推奨。
36
+ */
37
+ constructor(root: Root);
38
+ render(): string;
39
+ export(outputPath: string, options?: StaticExportOptions): void;
40
+ }
41
+ /**
42
+ * 静的ページのファクトリ。
43
+ *
44
+ * design.md §6.2 に準拠し `StaticView` を受け取り {@link PageDocument} を返す。
45
+ *
46
+ * **レイアウト契約**: 渡した StaticView は `<main>` の直接の子として縦方向に積まれる(ブロックフロー)。
47
+ * ページルート自体のレイアウト変更は不可。横並び等が必要な場合は View 側でコンテナを組むこと。
48
+ *
49
+ * 構築時 pure validation:
50
+ * - 新規 `Root` 構築直後に `_root.collectUsedMethods()` / `_root.collectJsContent()`
51
+ * を 1 回だけ読み取り専用 walk として実行する。
52
+ * - いずれかが非空なら `Error('page surface does not allow runtime content: <hint>')`
53
+ * を throw し、`PageDocument` は生成されない(requirements.md 3.2)。
54
+ * - `protoRender()` は呼ばないため `RenderContext.registry.reset()` 等の
55
+ * レンダー副作用は発生しない(design.md §6.3 冪等性)。
56
+ */
57
+ declare function page(...views: StaticView[]): PageDocument;
58
+ declare function page(...args: [...StaticView[], PageOptions]): PageDocument;
59
+
60
+ /**
61
+ * Alignment 定数と型定義
62
+ *
63
+ * SwiftUI の Alignment に対応する CSS 値の定数を提供する。
64
+ */
65
+ declare const Alignment: {
66
+ readonly center: "center";
67
+ readonly leading: "flex-start";
68
+ readonly trailing: "flex-end";
69
+ readonly top: "flex-start";
70
+ readonly bottom: "flex-end";
71
+ };
72
+ type AlignmentValue = typeof Alignment[keyof typeof Alignment];
73
+ declare const ZStackAlignment: {
74
+ readonly center: {
75
+ readonly alignItems: "center";
76
+ readonly justifyContent: "center";
77
+ };
78
+ readonly topLeading: {
79
+ readonly alignItems: "flex-start";
80
+ readonly justifyContent: "flex-start";
81
+ };
82
+ readonly topTrailing: {
83
+ readonly alignItems: "flex-start";
84
+ readonly justifyContent: "flex-end";
85
+ };
86
+ readonly bottomLeading: {
87
+ readonly alignItems: "flex-end";
88
+ readonly justifyContent: "flex-start";
89
+ };
90
+ readonly bottomTrailing: {
91
+ readonly alignItems: "flex-end";
92
+ readonly justifyContent: "flex-end";
93
+ };
94
+ readonly top: {
95
+ readonly alignItems: "flex-start";
96
+ readonly justifyContent: "center";
97
+ };
98
+ readonly bottom: {
99
+ readonly alignItems: "flex-end";
100
+ readonly justifyContent: "center";
101
+ };
102
+ readonly leading: {
103
+ readonly alignItems: "center";
104
+ readonly justifyContent: "flex-start";
105
+ };
106
+ readonly trailing: {
107
+ readonly alignItems: "center";
108
+ readonly justifyContent: "flex-end";
109
+ };
110
+ };
111
+ type ZStackAlignmentKey = keyof typeof ZStackAlignment;
112
+
113
+ /**
114
+ * レイアウト型定義
115
+ *
116
+ * SwiftUI の HStack / VStack / ZStack / Spacer に対応するオプション型と
117
+ * 子要素型を定義する。
118
+ *
119
+ * Requirements: 1.1, 2.1, 3.1, 4.1, 5.1
120
+ */
121
+
122
+ /**
123
+ * HStack / VStack のオプション。
124
+ *
125
+ * - `spacing`: 子要素間のギャップ(px 単位の数値)。CSS `gap` に対応する。
126
+ * - `alignment`: 交差軸方向の整列。CSS `align-items` に対応する。
127
+ * - `wrap`: 折り返し有無。CSS `flex-wrap: wrap` に対応する。
128
+ */
129
+ interface StackOptions {
130
+ spacing?: number;
131
+ alignment?: AlignmentValue;
132
+ wrap?: boolean;
133
+ }
134
+ /**
135
+ * ZStack のオプション。
136
+ *
137
+ * - `alignment`: 重ね合わせ時の整列キー。`ZStackAlignment` の各キーに対応する。
138
+ */
139
+ interface ZStackOptions {
140
+ alignment?: ZStackAlignmentKey;
141
+ }
142
+ /**
143
+ * Spacer のオプション。
144
+ *
145
+ * - `minLength`: スペーサーの最小サイズ(px 単位の数値)。
146
+ * 水平方向では `min-width`、垂直方向では `min-height` に対応する。
147
+ */
148
+ interface SpacerOptions {
149
+ minLength?: number;
150
+ }
151
+ /**
152
+ * レイアウトコンテナの子要素型。
153
+ *
154
+ * `HtmlTag` インスタンスまたはテキスト文字列を受け付ける。
155
+ */
156
+ type LayoutChild = HtmlTag | string;
157
+
158
+ /**
159
+ * Task 4.2: PairType ペアタグ要素
160
+ *
161
+ * 開始タグと終了タグを持つペア要素(div, p, span等)を表現する。
162
+ * HtmlTag 基底クラスを継承し、<tag attrs>children</tag> 形式でレンダリングする。
163
+ *
164
+ * PairType は HtmlTag の全動作をそのまま継承する最も標準的なタグ種別であり、
165
+ * addChild()/addChildren() で子要素を追加順に保持し、
166
+ * protoRender() で <tag attrs>children</tag> を出力する。
167
+ *
168
+ * Requirements: 3.2, 3.5, 3.6, 6.5, 6.8
169
+ */
170
+
171
+ /**
172
+ * Represents HTML elements with opening and closing tags.
173
+ *
174
+ * PairType is the most common HTML element type, used for elements like
175
+ * `<div>`, `<p>`, `<span>`, etc. These elements have both an opening tag
176
+ * and a closing tag, and can contain child elements.
177
+ *
178
+ * **Rendering Format:**
179
+ * ```html
180
+ * <tag attrs>children</tag>
181
+ * ```
182
+ *
183
+ * @example
184
+ * ```typescript
185
+ * // Using factory functions (recommended)
186
+ * const element = div(
187
+ * p('Hello'),
188
+ * span('World')
189
+ * );
190
+ *
191
+ * // Direct instantiation (less common)
192
+ * const custom = new PairType('div');
193
+ * custom.addChild(new TextType('Content'));
194
+ * ```
195
+ *
196
+ * @example
197
+ * With attributes:
198
+ * ```typescript
199
+ * const element = div(
200
+ * { class: 'container', id: 'main' },
201
+ * p('Content')
202
+ * );
203
+ * console.log(element.render());
204
+ * // <div class="container" id="main">
205
+ * // <p>Content</p>
206
+ * // </div>
207
+ * ```
208
+ *
209
+ * @remarks
210
+ * **Preconditions:** tagType must be a valid pair tag (not self-closing)
211
+ *
212
+ * **Postconditions:** `protoRender()` returns `<tag attrs>children</tag>` format
213
+ *
214
+ * **Invariants:** Children order is preserved in insertion order
215
+ */
216
+ declare class PairType extends HtmlTag {
217
+ /**
218
+ * Creates a new PairType element.
219
+ *
220
+ * @param tagType - The HTML tag type (e.g., 'div', 'p', 'span')
221
+ *
222
+ * @remarks
223
+ * It's recommended to use factory functions like {@link div}, {@link p}, {@link span}
224
+ * instead of direct instantiation.
225
+ */
226
+ constructor(tagType: TagType, options?: HtmlTagOptions);
227
+ /**
228
+ * Task 3.2: PairType の protoRender override。
229
+ *
230
+ * 受け取った ctx を基底クラス実装に伝搬し、基底クラスが内部で
231
+ * 子要素 `protoRender(ctx)` に同一インスタンスを渡せるようにする。
232
+ * 出力フォーマット(`<tag attrs>children</tag>`)は基底クラス挙動を維持する。
233
+ */
234
+ protoRender(ctx?: RenderContext): string;
235
+ }
236
+
237
+ /**
238
+ * Task 4.3: SelfClosingType 自己終了タグ要素
239
+ *
240
+ * 終了タグを持たない自己終了要素(br, hr, img, input, meta, link 等)を表す。
241
+ * HtmlTag を継承し、addChild/addChildren をオーバーライドして
242
+ * 子要素追加を静かに無視する(no-op)。
243
+ *
244
+ * レンダリングは基底クラスの protoRender() が SELF_CLOSING_TAGS を参照して
245
+ * `<tag attrs>` 形式を生成するため、追加のオーバーライドは不要。
246
+ *
247
+ * Requirements: 3.3, 6.4, 10.1
248
+ */
249
+
250
+ /**
251
+ * Represents self-closing (void) HTML elements.
252
+ *
253
+ * Self-closing elements don't have closing tags and cannot contain children.
254
+ * Examples include `<br>`, `<hr>`, `<img>`, `<input>`, `<meta>`, `<link>`, etc.
255
+ *
256
+ * **Rendering Format:**
257
+ * ```html
258
+ * <tag attrs>
259
+ * ```
260
+ *
261
+ * **Child Handling:**
262
+ * Attempts to add children are silently ignored (no-op) to maintain API consistency.
263
+ * This design choice prevents runtime errors while maintaining fluent method chaining.
264
+ *
265
+ * @example
266
+ * Basic usage:
267
+ * ```typescript
268
+ * // Using factory functions (recommended)
269
+ * const lineBreak = br();
270
+ * const image = img({ src: 'photo.jpg', alt: 'My photo' });
271
+ * const inputField = input({ type: 'text', placeholder: 'Enter name' });
272
+ * ```
273
+ *
274
+ * @example
275
+ * Child elements are silently ignored:
276
+ * ```typescript
277
+ * const lineBreak = br();
278
+ * lineBreak.addChild(p('This will be ignored'));
279
+ * console.log(lineBreak.render());
280
+ * // Output: <br>
281
+ * // (no error, child is simply not rendered)
282
+ * ```
283
+ *
284
+ * @remarks
285
+ * **Preconditions:** tagType must be in {@link SELF_CLOSING_TAGS}
286
+ *
287
+ * **Postconditions:** `protoRender()` returns `<tag attrs>` format
288
+ *
289
+ * **Invariants:** Children array is always empty (addChild/addChildren are no-ops)
290
+ */
291
+ declare class SelfClosingType extends HtmlTag {
292
+ /**
293
+ * Creates a new SelfClosingType element.
294
+ *
295
+ * @param tagType - The HTML tag type (must be a self-closing tag like 'br', 'img', etc.)
296
+ *
297
+ * @remarks
298
+ * It's recommended to use factory functions like {@link br}, {@link img}, {@link input}
299
+ * instead of direct instantiation.
300
+ */
301
+ constructor(tagType: TagType, options?: HtmlTagOptions);
302
+ /**
303
+ * Silently ignores child element addition (no-op).
304
+ *
305
+ * Self-closing tags cannot have children, so this method does nothing.
306
+ * This design prevents runtime errors while maintaining method chaining compatibility.
307
+ *
308
+ * @param _child - The child element (ignored)
309
+ * @returns This instance for method chaining
310
+ *
311
+ * @example
312
+ * ```typescript
313
+ * const element = br()
314
+ * .addChild(p('Ignored')) // No error, just ignored
315
+ * .addHtmlAttribute(HtmlAttribute.className('line-break'));
316
+ * ```
317
+ */
318
+ addChild(_child: HTMLTagProtocol): this;
319
+ /**
320
+ * Silently ignores multiple child elements addition (no-op).
321
+ *
322
+ * Self-closing tags cannot have children, so this method does nothing.
323
+ *
324
+ * @param _children - The child elements (ignored)
325
+ * @returns This instance for method chaining
326
+ */
327
+ addChildren(_children: ReadonlyArray<HTMLTagProtocol>): this;
328
+ /**
329
+ * Task 3.2: SelfClosingType の protoRender override。
330
+ *
331
+ * SelfClosing 要素は子を持たないが、シグネチャを ctx 受理形に widen し、
332
+ * 基底クラス実装に ctx を伝搬する。出力フォーマット(`<tag attrs>`)は
333
+ * 基底クラス挙動を維持する。
334
+ */
335
+ protoRender(ctx?: RenderContext): string;
336
+ }
337
+
338
+ declare function VStack(options?: StackOptions, ...children: View[]): PairType;
339
+ declare function HStack(options?: StackOptions, ...children: View[]): PairType;
340
+ declare function Text(content: string): PairType;
341
+ declare function Image(src: string, alt: string): SelfClosingType;
342
+ declare function Section(...children: View[]): PairType;
343
+ declare function Spacer(options?: SpacerOptions): PairType;
344
+ declare function Heading(level: HeadingLevel, content: string): PairType;
345
+ declare function Link(options: LinkOptions, ...children: View[]): PairType;
346
+ declare function Button(options: ButtonOptions | undefined, ...children: View[]): PairType;
347
+
348
+ /**
349
+ * AppSlot — マウントポイントを表す StaticView プリミティブ。
350
+ *
351
+ * `data-draftole-mount` 属性を持つ `<div>` を生成し、
352
+ * ランタイム系の App コンポーネントをマウントする際の
353
+ * プレースホルダとして機能する。
354
+ *
355
+ * - `protoRender()` は `<div data-draftole-mount="${id}"></div>` を返す。
356
+ * - `collectCssStyleString()` は空文字列を返す(CSS なし)。
357
+ * - runtime メソッド(jqm / state / script 等)は持たない。
358
+ * - `app/` モジュールへの依存を持たない。
359
+ */
360
+ interface AppSlotOptions {
361
+ readonly id: string;
362
+ }
363
+ declare function AppSlot(options: AppSlotOptions): StaticView;
364
+ declare function AppSlot(id: string): StaticView;
365
+
366
+ export { Alignment as A, Button as B, HStack as H, Image as I, type LayoutChild as L, PairType as P, SelfClosingType as S, Text as T, VStack as V, type ZStackOptions as Z, type StackOptions as a, type SpacerOptions as b, type AlignmentValue as c, AppSlot as d, type AppSlotOptions as e, Heading as f, Link as g, PageDocument as h, Section as i, Spacer as j, ZStackAlignment as k, type ZStackAlignmentKey as l, type StaticExportOptions as m, page as p };