@hirokisakabe/pom 0.1.9 → 0.1.10

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/README.md CHANGED
@@ -7,7 +7,7 @@
7
7
  - Node.js 18 以上
8
8
 
9
9
  > [!NOTE]
10
- > pom Node.js 環境でのみ動作します。ブラウザ環境では動作しません。
10
+ > PPTX生成機能(`buildPptx`)は Node.js 環境でのみ動作します。ただし、入力スキーマのみを使用する場合は `@hirokisakabe/pom/schema` からブラウザ環境でもimport可能です。
11
11
 
12
12
  ## 目次
13
13
 
@@ -19,6 +19,7 @@
19
19
  - [マスタースライド](#マスタースライド)
20
20
  - [サーバーレス環境での利用](#サーバーレス環境での利用)
21
21
  - [LLM 連携](#llm-連携)
22
+ - [ブラウザ環境での入力検証](#ブラウザ環境での入力検証)
22
23
  - [ライセンス](#ライセンス)
23
24
 
24
25
  ## インストール
@@ -587,6 +588,37 @@ if (result.success) {
587
588
  | `inputHStackNodeSchema` | HStackノード用 |
588
589
  | `inputMasterSlideOptionsSchema` | マスタースライド設定用 |
589
590
 
591
+ ### ブラウザ環境での入力検証
592
+
593
+ ブラウザ環境(React、Vue、SvelteなどのSPA)で LLM の出力を検証したい場合は、`@hirokisakabe/pom/schema` からスキーマをimportできます。このサブパスは Node.js 依存のないスキーマのみをエクスポートするため、ブラウザでも問題なく動作します。
594
+
595
+ ```typescript
596
+ // ブラウザ環境で使用可能
597
+ import { inputPomNodeSchema } from "@hirokisakabe/pom/schema";
598
+
599
+ // LLMからのレスポンスを検証
600
+ const result = inputPomNodeSchema.safeParse(llmResponse);
601
+
602
+ if (result.success) {
603
+ // 検証成功 - サーバーサイドに送信してPPTX生成
604
+ await fetch("/api/generate-pptx", {
605
+ method: "POST",
606
+ headers: { "Content-Type": "application/json" },
607
+ body: JSON.stringify(result.data),
608
+ });
609
+ } else {
610
+ // 検証失敗 - エラーをユーザーに表示
611
+ console.error("Validation failed:", result.error.format());
612
+ }
613
+ ```
614
+
615
+ **`@hirokisakabe/pom` vs `@hirokisakabe/pom/schema` の違い:**
616
+
617
+ | インポートパス | 環境 | 含まれる機能 |
618
+ | -------------------------- | ---------- | ------------------------------------------ |
619
+ | `@hirokisakabe/pom` | Node.js | すべて(PPTX生成、スキーマ、型定義) |
620
+ | `@hirokisakabe/pom/schema` | ブラウザ可 | スキーマと型定義のみ(PPTX生成は含まない) |
621
+
590
622
  ## ライセンス
591
623
 
592
624
  MIT
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Browser-compatible schema exports
3
+ *
4
+ * This module exports only the Zod schemas and types without any Node.js dependencies.
5
+ * Use this entry point when you need to validate LLM-generated JSON in browser environments.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { inputPomNodeSchema } from "@hirokisakabe/pom/schema";
10
+ *
11
+ * const result = inputPomNodeSchema.safeParse(llmResponse);
12
+ * if (result.success) {
13
+ * // Send to server for PPTX generation
14
+ * await fetch("/api/generate-pptx", {
15
+ * method: "POST",
16
+ * body: JSON.stringify(result.data),
17
+ * });
18
+ * }
19
+ * ```
20
+ */
21
+ export { inputPomNodeSchema, inputTextNodeSchema, inputImageNodeSchema, inputTableNodeSchema, inputBoxNodeSchema, inputVStackNodeSchema, inputHStackNodeSchema, inputShapeNodeSchema, inputChartNodeSchema, inputMasterSlideOptionsSchema, inputBaseNodeSchema, type InputPOMNode, type InputTextNode, type InputImageNode, type InputTableNode, type InputBoxNode, type InputVStackNode, type InputHStackNode, type InputShapeNode, type InputChartNode, type InputMasterSlideOptions, } from "./inputSchema";
22
+ export { lengthSchema, paddingSchema, borderStyleSchema, borderDashSchema, fillStyleSchema, shadowStyleSchema, alignItemsSchema, justifyContentSchema, shapeTypeSchema, chartTypeSchema, chartDataSchema, bulletOptionsSchema, bulletNumberTypeSchema, tableColumnSchema, tableRowSchema, tableCellSchema, pageNumberPositionSchema, type Length, type Padding, type BorderStyle, type BorderDash, type FillStyle, type ShadowStyle, type AlignItems, type JustifyContent, type ShapeType, type ChartType, type ChartData, type BulletOptions, type BulletNumberType, type TableColumn, type TableRow, type TableCell, type PageNumberPosition, } from "./types";
23
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,6BAA6B,EAC7B,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,uBAAuB,GAC7B,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,wBAAwB,EACxB,KAAK,MAAM,EACX,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,SAAS,EACd,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,kBAAkB,GACxB,MAAM,SAAS,CAAC"}
package/dist/schema.js ADDED
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Browser-compatible schema exports
3
+ *
4
+ * This module exports only the Zod schemas and types without any Node.js dependencies.
5
+ * Use this entry point when you need to validate LLM-generated JSON in browser environments.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { inputPomNodeSchema } from "@hirokisakabe/pom/schema";
10
+ *
11
+ * const result = inputPomNodeSchema.safeParse(llmResponse);
12
+ * if (result.success) {
13
+ * // Send to server for PPTX generation
14
+ * await fetch("/api/generate-pptx", {
15
+ * method: "POST",
16
+ * body: JSON.stringify(result.data),
17
+ * });
18
+ * }
19
+ * ```
20
+ */
21
+ // Input schemas for LLM/external input validation
22
+ export { inputPomNodeSchema, inputTextNodeSchema, inputImageNodeSchema, inputTableNodeSchema, inputBoxNodeSchema, inputVStackNodeSchema, inputHStackNodeSchema, inputShapeNodeSchema, inputChartNodeSchema, inputMasterSlideOptionsSchema, inputBaseNodeSchema, } from "./inputSchema";
23
+ // Basic type schemas (browser-compatible)
24
+ export { lengthSchema, paddingSchema, borderStyleSchema, borderDashSchema, fillStyleSchema, shadowStyleSchema, alignItemsSchema, justifyContentSchema, shapeTypeSchema, chartTypeSchema, chartDataSchema, bulletOptionsSchema, bulletNumberTypeSchema, tableColumnSchema, tableRowSchema, tableCellSchema, pageNumberPositionSchema, } from "./types";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hirokisakabe/pom",
3
- "version": "0.1.9",
3
+ "version": "0.1.10",
4
4
  "description": "PowerPoint Object Model - A declarative TypeScript library for creating PowerPoint presentations",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -9,6 +9,10 @@
9
9
  ".": {
10
10
  "types": "./dist/index.d.ts",
11
11
  "import": "./dist/index.js"
12
+ },
13
+ "./schema": {
14
+ "types": "./dist/schema.d.ts",
15
+ "import": "./dist/schema.js"
12
16
  }
13
17
  },
14
18
  "files": [