@rex0220/print-craft-authoring-tools 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.
- package/LICENSE +27 -0
- package/README.md +54 -0
- package/SECURITY.md +43 -0
- package/THIRD_PARTY_NOTICES.md +45 -0
- package/dist/cli.mjs +3377 -0
- package/package.json +50 -0
- package/vendor/moment-with-locales.min.js +1 -0
- package/vendor/moment.json +6 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 rex0220
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
この tools は印刷屋プラグイン(rex0220 Print craft)の計算式エンジンと設定画面・帳票のコードを
|
|
26
|
+
含みません。それらは利用者が持つ印刷屋プラグインの zip から実行時に読み込まれ、印刷屋プラグインの
|
|
27
|
+
利用規約に従います。tools はそれらを複製・再配布しません。
|
package/README.md
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# print-craft authoring tools(開発メモ)
|
|
2
|
+
|
|
3
|
+
印刷屋プラグイン(print-craft)の設定 JSON を AI で作る・確かめるための tools。npm パッケージ `@rex0220/print-craft-authoring-tools`(MIT。版は印刷屋プラグインの版と独立。対応する印刷屋の版は `src/meta.ts` の `SUPPORTED_PLUGIN_VERSIONS` で、`version` コマンドが出す)のソース。リポジトリのルートがテンプレート(利用者が "Use this template" で使う側)。計画と決定は print-craft の `docs/authoring-plan.md` 12 章。
|
|
4
|
+
|
|
5
|
+
**tools は印刷屋のコードを含まない。** 計算式エンジン(`desktop_js/KintoneFormulaPCraft.min.js`)と印刷屋の設定画面・帳票のコード + kit(`config_js/print-craft-authoring-api.js`。Ver.6 から zip に同梱。print-craft の `src/authoring/api.ts`)は、利用者の印刷屋 zip(`.env` の `PCRAFT_PLUGIN_ZIP`)から実行のたびにメモリに読む(`src/plugin-zip.ts`、`src/engine.ts`)。zip の中身の SHA-256 が `src/meta.ts` の既知のリリース(4 ファイルの組み合わせ)と違えば実行せずに止まる(fail closed。`SECURITY.md`)。開発中にソースから動かすとき(`node src/cli.ts …`)だけ、環境変数 `PCRAFT_ALLOW_DEV_PLUGIN=1` を置けば隣の print-craft の `prod/` からも読める(この場合は既知でなくても警告で続く。ビルドした `dist/cli.mjs` では読まない)。ビルド(`scripts/build.mjs`)は bundle に印刷屋 / kit のコードが入っていないことを確かめて止まる。
|
|
6
|
+
|
|
7
|
+
**ビルドとテストには、隣に印刷屋のリポジトリ(非公開)と plugin-config-kit / rexgrid が要る**(`package.json` の devDependencies が `file:` で参照する。型の import と、テストの fixture の zip `print-craft/dist/print-craft-plugin6.zip` のため。公開レジストリの tools を使うだけなら要らない)。zip の読み取りと版の照合のテスト(`test/plugin-zip-synthetic.test.mjs`、`test/engine-contract.test.mjs`)は印刷屋のコードを含まない合成 zip(`test/zip-helper.mjs`)でも動く。
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Projects/
|
|
11
|
+
plugin-config-kit/
|
|
12
|
+
rexgrid/
|
|
13
|
+
kintone-plugin/
|
|
14
|
+
print-craft/ ← 型を import。テストは dist/print-craft-plugin6.zip を利用者の zip の代わりに読む
|
|
15
|
+
print-craft-authoring/ ← このリポジトリ(ルート = テンプレート、tools/ = パッケージ)
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 構成
|
|
19
|
+
|
|
20
|
+
- `src/cli.ts` … `pcraft-authoring <command>`(version / fields / record / pull / normalize / preview / diff / buttons。pull は API ラボのプラグインの設定の GET。fields と record の `--summary` は取得済みのファイルの要約で通信しない。record の要約は値を出さない)。読むのは cwd の中、書くのは fields/ records/ settings/ temp/ out/ の下だけ(`src/safe-path.ts`)。`.env` / policy / zip の場所は固定
|
|
21
|
+
- `src/plugin-zip.ts` … 印刷屋の zip(contents.zip の 2 層)を Node の zlib だけで読む。大きさ・entry 数・展開後の上限、CRC-32、名前の一致、重複を検査
|
|
22
|
+
- `src/engine.ts` … zip のエンジンと authoring API を happy-dom + スタブで動かす。版の照合(印刷屋の版、API の版と pluginVersion、4 ファイルの SHA-256、API のキーと型)
|
|
23
|
+
- `src/kintone-url.ts` … 接続先の検証(`*.cybozu.com` / `*.kintone.com` / `*.cybozu.cn`、ユーザー情報・パス・ポート無し)
|
|
24
|
+
- `src/workspace.ts` … 開発と本番(environments.json)、`kintone/<ホスト名>/<番号>-<アプリ名>/` のフォルダー、ダウンロードの名前(`src/commands/take.ts` が inbox から移す)
|
|
25
|
+
- `src/env.ts` / `src/kintone-rest.ts` … `.env`(kintone 公式 MCP と同じ `KINTONE_*` + `PCRAFT_PLUGIN_ZIP` + `PCRAFT_ALLOW_UNKNOWN_PLUGIN`)と GET 専用・許可 API 固定・送信先固定の REST
|
|
26
|
+
- `src/commands/` … 各コマンド。`src/normalize/` … 派生値の生成、検査(HTML / CSS の allowlist、policy、大きさ)、行の差分。`src/preview/` … 帳票 HTML(sandbox + CSP + DOM の無害化)
|
|
27
|
+
- `src/meta.ts` … tools の版、対応する印刷屋の版と API の版、既知の zip の中身の SHA-256(`KNOWN_PLUGIN_HASHES`)、API の契約(`REQUIRED_API`)
|
|
28
|
+
- `scripts/vendor.mjs` … moment 2.24.0 を CDN から `vendor/` に取る(`vendor/moment.json` の SHA-256 と照合)
|
|
29
|
+
- `scripts/build.mjs` … esbuild で `dist/cli.mjs`(Node 20、ESM。印刷屋 / kit のコードが入ったら失敗)
|
|
30
|
+
- `scripts/gen-schema-manifest.mjs` … `docs/schema-manifest.json` と `docs/defaults/*.json`(API の CONFIG_SCHEMA から)
|
|
31
|
+
- `scripts/gen-functions.mjs` … `functions.json`(関数の分類)。`scripts/gen-function-list.mjs` … `docs/関数一覧.md` ほか(lib の説明表 p.desc から)
|
|
32
|
+
- `test/` … `node --test`(src の .ts を直接読む。`test/helpers.mjs` が fixture の zip を PCRAFT_PLUGIN_ZIP に置く)
|
|
33
|
+
|
|
34
|
+
## 使い方(開発)
|
|
35
|
+
|
|
36
|
+
公開パッケージの実行は Node 20 以上。**ビルドとテストは Node 22.6 以上**(型の除去で `.ts` を直接読む。`scripts/build.mjs` も `.ts` を import する)。
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
cd tools
|
|
40
|
+
npm install # happy-dom、esbuild、typescript と、隣の print-craft / plugin-config-kit / rexgrid への junction
|
|
41
|
+
npm run vendor # 初回。moment を vendor/ に
|
|
42
|
+
npm test
|
|
43
|
+
npm run build # dist/cli.mjs(prepack でも走る)
|
|
44
|
+
set PCRAFT_PLUGIN_ZIP=..\..\print-craft\dist\print-craft-plugin6.zip && node dist/cli.mjs version
|
|
45
|
+
npm pack --dry-run # 公開前に中身を確かめる(dist、vendor、LICENSE、THIRD_PARTY_NOTICES、SECURITY、README だけ)
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## 決まり
|
|
49
|
+
|
|
50
|
+
- 印刷屋の関数は `engine.api`(zip の authoring API)経由で使う。`src/` から print-craft を import するのは **型だけ**(`import type`)。実行コードを import すると build が止まる
|
|
51
|
+
- 印刷屋の `src/authoring/api.ts` の名前や引数を変えるときは `AUTHORING_API_VERSION` を上げ、tools の `SUPPORTED_API_VERSION` と `REQUIRED_API` を合わせる。印刷屋の zip の中身を変えたら `KNOWN_PLUGIN_RELEASES` にリリースの tuple(エンジン・API・bignumber・moment-timezone の 4 つの SHA-256。zip から計算)を足し、印刷屋の版を上げたら `SUPPORTED_PLUGIN_VERSIONS` に足す(古い版は利用者が残っている間は外さない)。どちらも tools の新しい版として公開する。tools の版は印刷屋の版と独立(semver。2026-10-06 Takashi「B」で 0.1.0 から)
|
|
52
|
+
- kintone への書き込みは行わない。HTTP 層は GET 専用で、送れるパスと送信先を固定する
|
|
53
|
+
- CLI に `.env` / policy / zip の場所を変えるオプションを足さない(AI が書けるファイルを読ませない)。書き込み先を増やすなら `src/safe-path.ts` の `WRITE_ROOTS`
|
|
54
|
+
- `vendor/*.js`、`dist/`、`out/`、`node_modules/` はコミットしない
|
package/SECURITY.md
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# セキュリティ(@rex0220/print-craft-authoring-tools と print-craft-authoring テンプレート)
|
|
2
|
+
|
|
3
|
+
## 脆弱性の報告
|
|
4
|
+
|
|
5
|
+
- GitHub リポジトリ [rex0220/print-craft-authoring](https://github.com/rex0220/print-craft-authoring) の **Security → Report a vulnerability**(非公開の報告)で知らせてください。公開の Issue には書かないでください
|
|
6
|
+
- 報告には、tools の版(`npx pcraft-authoring version`)、再現する設定 JSON(レコードの値と認証情報を除いたもの)、期待した動きを添えてください
|
|
7
|
+
- 対応するのは tools の最新の版です。修正は新しい版として npm と GitHub に出し、`tools/README.md` の履歴に書きます
|
|
8
|
+
|
|
9
|
+
## 範囲
|
|
10
|
+
|
|
11
|
+
| 対象 | 報告先 |
|
|
12
|
+
| :--- | :--- |
|
|
13
|
+
| tools(`pcraft-authoring` の fields / record / pull / normalize / preview / diff / buttons / version)、テンプレート(CLAUDE.md、`.claude/settings.json`、`.mcp.json`、docs) | このリポジトリ |
|
|
14
|
+
| 印刷屋プラグイン本体(zip の中の計算式エンジン、設定画面、帳票の生成) | 印刷屋プラグインの配布元(製品紹介: https://qiita.com/rex0220/items/9be2d9b20a3a1f016c76 ) |
|
|
15
|
+
| kintone 公式 MCP サーバー(`@kintone/mcp-server`) | [kintone/mcp-server](https://github.com/kintone/mcp-server) |
|
|
16
|
+
|
|
17
|
+
## 前提(信頼の境界)
|
|
18
|
+
|
|
19
|
+
- テンプレートでは AI(Claude Code)が `npx pcraft-authoring …` を確認なしに実行でき、`settings/` `fields/` `records/` `out/` `temp/` に書けます。AI は `.env` と `policy/` を書けません(`.claude/settings.json`)。tools はこの前提で、**AI が書けるファイルを認証情報・承認・実行コードとして読まない**ように作ってあります
|
|
20
|
+
- 利用者が置く印刷屋プラグインの zip の中のコード(計算式エンジン、設定画面・帳票のコード)は、tools を動かした **OS ユーザーと同じ権限の Node のプロセスで実行**されます。happy-dom の window は DOM の代用で、セキュリティの境界(sandbox)ではありません
|
|
21
|
+
|
|
22
|
+
## tools が守ること
|
|
23
|
+
|
|
24
|
+
- **kintone には GET しか送らない。** 呼べる API は `app`、`app/form/fields`、`app/form/layout`、`record`、`app/plugin/config` と、その preview 版に固定している(ゲストスペースの `/k/guest/<id>/v1/` も同じ一覧)。それ以外のパスやメソッドは送信前に止まる。`app/plugin/config`(`pull`)は kintone の API ラボ「アプリに追加されているプラグインの設定情報を取得する」で、印刷屋のプラグイン ID(zip の公開鍵から)の設定だけを読む。同じ API ラボの設定の変更(PUT)は呼ばない。`pull` は運用中の設定にレコード閲覧+レコード追加、`--preview` にアプリ管理の権限が要るので、使うときだけその権限のトークン(またはログインユーザー)にする
|
|
25
|
+
- **開発と本番(environments.json)でも、場所は CLI から指定できない。** `--env` で選べるのは `environments.json` の環境の名前だけで、認証のファイルの場所(`.env` か `env/<名前>.env` の形だけ)と接続先は `environments.json` に書く。テンプレートでは AI は `environments.json` と `env/` を書けない(`.claude/settings.json`)。このときの認証はその環境の認証のファイルだけから読み、OS の環境変数の `KINTONE_*` / `KSQL_*` は読まない(開発と本番の取り違えを防ぐ)。認証のファイルの `KINTONE_BASE_URL` が `environments.json` の接続先と違えば止まる。iframe の同一オリジンの判定には `environments.json` の接続先を使い、`kintone/<ホスト名>/` のフォルダー名(AI が作れる)は使わない
|
|
26
|
+
- **送信先は kintone のドメインだけ。** `KINTONE_BASE_URL` は `https://<サブドメイン>.cybozu.com` / `.kintone.com` / `.cybozu.cn`(`*.s.cybozu.com` を含む)だけを受け付け、ユーザー情報(`user@`)・ポート・パス・クエリが付いた URL は使わない。URL は `new URL(path, base)` で組み、送信直前にも origin が同じか確かめる
|
|
27
|
+
- **kintone 以外とは通信しない。** `normalize` / `preview` / `diff` / `buttons` / `version` と、`fields` / `record` の `--summary` はネットワークを使わない。利用状況の送信(テレメトリ)は無い
|
|
28
|
+
- **認証情報を出力しない。** `.env` または OS の環境変数から読み、API トークン・パスワード・ユーザー名は画面・ファイル・エラーの文言に出さない。エラーの文言は HTTP の状態と kintone のエラーコードと固定のヒントだけ(サーバーの message は出さない)。出すのは接続先の URL と「API トークン / ログインユーザー」の区別だけ
|
|
29
|
+
- **レコードの値を標準出力に出さない。** `record` は項目の数とテーブルの行数だけ表示し、値は `records/<app>-<id>.json` に書く(テンプレートの `.gitignore` でコミット対象外)。`--fields-from` で設定が使う項目だけに絞れる。`record --summary` も形(文字数・行数・数値の桁・件数・添付の種類)だけで、値・ファイル名・ユーザー名は出さない
|
|
30
|
+
- **印刷屋の zip の中身が既知でなければ実行しない(fail closed)。** 計算式エンジン、authoring API、bignumber、moment-timezone の 4 ファイルの SHA-256 が tools の既知のリリース(`src/meta.ts` の `KNOWN_PLUGIN_RELEASES`。4 つの組み合わせ単位)と一致し、zip の `manifest.json` の版が対応する版で、API の版と印刷屋の版と tools の版が合い、tools が使う API のキーと型がそろっているときだけ実行する。どれか違えば **コードを実行する前に止まる**。zip の読み取りでは、外側と中身の大きさ・entry の数・展開後の大きさの上限、central directory と local header の名前の一致、CRC-32、同名 entry の重複を確かめる(zip bomb と改変の対策)。新しい修正版の zip を使うなど、違いを理解した上で続けるときだけ、**利用者が** `.env` に `PCRAFT_ALLOW_UNKNOWN_PLUGIN=1` を書く(警告を出して続ける。AI は `.env` を書けない)。公開ビルド(npm の `dist/cli.mjs`)が読むのは `PCRAFT_PLUGIN_ZIP` の zip だけで、`node_modules` や隣のフォルダーのファイルは読まない(開発者がソースから動かし、環境変数 `PCRAFT_ALLOW_DEV_PLUGIN=1` を置いたときだけ、隣の print-craft の `prod/` を警告付きで読む)
|
|
31
|
+
- **印刷屋のコードを含まない。** エンジンと API は利用者の zip からメモリへ読むだけで、コピーや書き出しはしない。ビルドは、npm に入る `dist/cli.mjs` に印刷屋 / plugin-config-kit / rexgrid の実行コードが混ざっていないことを検査する
|
|
32
|
+
- **CLI が読む・書く場所を限る。** 読むのは作業フォルダーの中のファイルだけ(`.env` と `node_modules` は読まない)、書くのは `fields/` `records/` `settings/` `temp/` `out/` `kintone/` の下だけ(realpath で判定。junction / symlink で外へは出られない。Windows の予約名は使わない)。`.env`、`policy/authoring-policy.json`、印刷屋の zip の場所(`PCRAFT_PLUGIN_ZIP`)は作業フォルダーのものに固定で、`--env` / `--policy` / `--plugin-zip` のようなオプションは無い。iframe の同一オリジンの判定は `.env` の `KINTONE_BASE_URL` **だけ**を使い、AI が書き換えられる `fields/*.json` の値は使わない(`.env` に接続先が無ければ iframe は使えない)。パスの検査から書き込みまでの間にリンクが差し替えられる競合(TOCTOU)は残るが、AI と同じ OS ユーザーの範囲の話であり、この tools では防がない
|
|
33
|
+
- **`normalize` は許可した書き方だけ通す(allowlist)。** 要素は文章・表・画像の要素だけ、属性は共通の属性(class / id / style …)と要素ごとの属性(img の src / srcset / alt、td の colspan …)と `data-*` / `aria-*` だけで、一覧に無い要素・属性、`on*` 属性、インラインの `<svg>` / `<math>`、`<script>` `<object>` `<embed>` `<link>` `<base>` `<meta>` `<form>` 系、`<template>` などはエラー。URL は Chrome の URL パーサーと同じ前処理(タブ・改行・制御文字を捨てる、`\` は `/`)をしてから `https:` / `data:image/` / 置き換えタグ / 相対だけを通す(`a` の `href` は `data:` も不可、`iframe` は利用者の kintone と同じオリジンだけ)。CSS はコメントを外してエスケープを復号してから、`url()` / `image-set()` / `image()` / `src()` / `@import` の URL を分類し、`@import` / `expression(` / `behavior:` / `-moz-binding:` を止める。属性値の `${式}` はエラー。**kintone 以外への読み込みとスクリプトは印刷屋 Ver.6 が描画の前に除く**(共通の設定「外部参照」`externalRefs: "block"`。帳票の HTML / CSS を DOMParser で DOM 化して、外部へ向く URL 属性・CSS の `url()` / `@import`・`script` などの要素・`on*` 属性を外してから画面に入れる)ので、tools はそれを前提にする: `"block"` の設定の HTML / CSS のテンプレートにある外部 URL は**エラー**(帳票に出ない。添付ファイルか `data:image/` にする)。`"allow"`(Ver.5 と同じく何も除かない。自己責任。キーが無い Ver.5 の設定も印刷屋は `allow` で動くので tools も `allow` とみなす)は、利用者が AI の書けない `policy/authoring-policy.json` の `allowExternalRefs` にその設定ファイルを書いていなければ**エラー**。`allow` の設定の外部 URL と、外部参照の設定に関わらず Web フォント(印刷屋は除かない)は `allowExternal`(形を検証する)で承認し、承認済みは情報、無ければ**警告**。帳票の行の**計算式が作る HTML** は静的に追い切れない(計算式のインタープリターを tools に二重に持たない。Codex レビュー 5 回の結論)ので**警告だけ**: HTML を作る関数の使用、`TAG` の要素名や `ATTR` / `STYLE` / `BATTR` の値が定数でない、文字列の定数に HTML / CSS があれば HTML / CSS と同じ検査を警告として出す。`${式}` の安全判定は式全体で行い、`&` でつないだ項がすべて安全なときだけ警告しない。エラーがあれば書き戻さない
|
|
34
|
+
- **`preview` の HTML は閉じている。** 帳票は `sandbox=""` だけの iframe に `srcdoc` で入れ、外側と帳票の両方の文書に CSP(帳票は `default-src 'none'; img-src data:; style-src 'unsafe-inline'; font-src data:; connect-src 'none'; frame-src 'none'; object-src 'none'; base-uri 'none'; form-action 'none'`)。CSS は `<` を CSS のエスケープ(`\3c`)にして `</style>` で文書を壊せないようにし、描いた DOM から `script` / `meta` / `link` / `form` 系 / `iframe` / `object` / `embed` / SVG のアニメーション要素と、`on*` 属性・`href`(文書内の `#` 以外)・`srcdoc` などを外す(レコードの値が `TABLE_HTML` などで HTML として入る経路があるため)。画像は印刷屋のダミー画像。Web フォントは、配信元が承認済み(Google Fonts は既定、他は `policy/authoring-policy.json` の `allowExternal`)のときだけ帳票の文書に `<link>` を入れ、CSP の `style-src` / `font-src` にその配信元(Google Fonts は `fonts.googleapis.com` と `fonts.gstatic.com`)を足す。これが preview の唯一の外部通信で、送るのは設定に書いた固定の URL だけ(レコードの値は入らない)。未承認なら読まない(OS の書体)。出力には**レコードの値が入る**ので `out/` はコミット対象外
|
|
35
|
+
|
|
36
|
+
## tools がしないこと(利用者が守ること)
|
|
37
|
+
|
|
38
|
+
- **zip は印刷屋プラグインの配布元から入手したものを使う。** 出所の分からない zip を `PCRAFT_PLUGIN_ZIP` に書かない。`PCRAFT_ALLOW_UNKNOWN_PLUGIN=1` は、tools の既知の一覧より新しい修正版の zip だと分かっているときだけ、理由を理解して書く(その zip のコードがこの PC の権限で動く)
|
|
39
|
+
- `normalize` は HTML / CSS / 計算式の**静的な**検査で、計算式の**実行結果**(レコードの値が HTML として差し込まれること、関数が組み立てる HTML)は見ない。`TABLE_HTML` などの生の HTML を入れる関数、`TAG` / `ATTR` / `STYLE`、ESC_HTML を通さない `${式}` は警告にとどまる。外部への読み込みとスクリプトを止めるのは印刷屋 Ver.6 の描画前の掃除(`externalRefs: "block"`)で、文章や表の崩れは防げない。`"allow"` の設定ではその掃除も無い(利用者の承認と責任)。**インポートする前に `diff` の差分を人が見る**
|
|
40
|
+
- preview の「承認した Web フォントの配信元以外と通信・遷移が起きない」ことは、CSP と sandbox と DOM からの除去の組み合わせで担保している。Chromium を自動で動かして確かめる試験はまだ無い(Chrome の DevTools の Network で確かめられる)
|
|
41
|
+
- kintone への書き込みは、テンプレートの `.claude/settings.json` が kintone MCP の書き込みツール 15 個と読み取り 3 個(検索・スペース・コメント)を拒否し、CLAUDE.md が禁じているが、最終的な担保はサーバー側の権限(**レコード閲覧だけの API トークン**か、閲覧権限だけのアカウント)。設定・権限・API トークンの管理は利用者の責任
|
|
42
|
+
- `.env`(認証情報)はコミットしない。設定 JSON にはアプリ番号・項目コード・業務用語が入るので、設定を置くリポジトリは **private** にする。`records/` と `out/` は作業が終わったら消す
|
|
43
|
+
- 依存パッケージ(`happy-dom`、同梱の `moment`)の脆弱性は `npm audit` と新しい版への更新で対応する。第三者のソフトウェアの一覧は `THIRD_PARTY_NOTICES.md`
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
`@rex0220/print-craft-authoring-tools` が同梱または依存する第三者のソフトウェアと、そのライセンス。
|
|
4
|
+
|
|
5
|
+
## 同梱(`vendor/`)
|
|
6
|
+
|
|
7
|
+
### moment 2.24.0(`vendor/moment-with-locales.min.js`)
|
|
8
|
+
|
|
9
|
+
印刷屋プラグインが manifest で読み込む CDN(https://js.cybozu.com/momentjs/2.24.0/moment-with-locales.min.js)と同じファイルを、tools のビルド時に取得して同梱しています(`vendor/moment.json` の SHA-256 で照合)。
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
Copyright (c) JS Foundation and other contributors
|
|
13
|
+
|
|
14
|
+
Permission is hereby granted, free of charge, to any person
|
|
15
|
+
obtaining a copy of this software and associated documentation
|
|
16
|
+
files (the "Software"), to deal in the Software without
|
|
17
|
+
restriction, including without limitation the rights to use,
|
|
18
|
+
copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
19
|
+
copies of the Software, and to permit persons to whom the
|
|
20
|
+
Software is furnished to do so, subject to the following
|
|
21
|
+
conditions:
|
|
22
|
+
|
|
23
|
+
The above copyright notice and this permission notice shall be
|
|
24
|
+
included in all copies or substantial portions of the Software.
|
|
25
|
+
|
|
26
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
27
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
28
|
+
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
29
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
30
|
+
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
31
|
+
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
32
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
33
|
+
OTHER DEALINGS IN THE SOFTWARE.
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## 依存(npm が入れる)
|
|
37
|
+
|
|
38
|
+
### happy-dom(MIT)
|
|
39
|
+
|
|
40
|
+
Copyright (c) 2019 David Ortner (capricorn86). https://github.com/capricorn86/happy-dom/blob/master/LICENSE
|
|
41
|
+
|
|
42
|
+
## 利用者の印刷屋プラグインの zip から実行時に読むもの(tools には含まれない)
|
|
43
|
+
|
|
44
|
+
- `KintoneFormulaPCraft.min.js`(計算式エンジン)、`print-craft-authoring-api.js`(印刷屋の設定画面・帳票のコードと plugin-config-kit) … rex0220。印刷屋プラグインの利用規約に従う
|
|
45
|
+
- `bignumber.min.js`(bignumber.js、MIT。Copyright (c) 2019 Michael Mclaughlin)、`moment-timezone-with-data.min.js`(moment-timezone、MIT。Copyright (c) JS Foundation and other contributors) … 印刷屋プラグインに同梱されているものをそのまま実行する
|