Sandwich Hime
リポジトリルートから作業を行います。.sando はSandwich Himeテンプレートとして扱い、.san は独立したSan言語のソースとしてのみ扱います。
アクション前に検査する
go.modを読み取り、gamertan.com/sandwich-hime/sandoの正確なバージョンを記録します。- 隣接する
.sando.goヘッダーで、コンパイラバージョン、ランタイムABI、ソースダイジェストを検査します。生成ファイルを手動で編集しないでください。 himesan version --jsonを実行します。互換性のあるランタイムABIを要求し、すべての固定バージョンを保持します。@latestに置き換えたり、モジュールを黙って更新したりしないでください。- 構文、構成、出力コンテキスト、または信頼境界を変更する場合は、references/authoring.md を読んでください。
- インストール、移行、レビューのみ、生成、CI、プラットフォームワークフローについては、references/workflows.md を読んでください。
ワークフローを選択する
- レビュー、診断、またはセキュリティ作業の場合は、
himesan check --jsonのみを実行してください。ユーザーが変更を許可しない限り、書き込みは行わないでください。 - 承認されたテンプレート変更の場合は、
.sandoを編集し、固定されたコンパイラのhimesan generateを実行してから、himesan check --jsonとプロジェクトの通常のGoテスト/ビルドを実行します。 - インストールまたはピンの修復はランタイムファーストで行います:
go getで正確なSandoバージョンを取得し、次にgo installで正確なコンパイラバージョンをインストールします。 - 型付きコンポーネント関数と
<?~ Component(...) ?>構成を使用します。継承、ブロック、暗黙のレイアウトフレームワークを考案しないでください。 - ルーティング、HTTPサーバー、ヘッダー、キャッシュ、認証、デプロイメントはアプリケーションに任せます。Sandwich Hime はテンプレートをコンパイルするものであり、テンプレートを所有するわけではありません。
セキュリティ境界を強制する
- 静的なテンプレートマークアップとGoコードは、信頼されたプロジェクトソースとして扱います。
- すべての
TrustHTML、TrustURL、TrustJS、TrustCSS、信頼ラッパー、手書きのsando.Componentは、明示的な出力機能として扱います。その出所とHTMLパーサー状態への影響を監査します。 - コンテキスト依存エスケープを保持します。診断を黙らせるためだけに、エスケープされた式を信頼ラッパーに置き換えないでください。
WriteURLをバイパスする代わりに、危険または曖昧なURLスキームを拒否します。- 信頼警告は字句的な監査ヒントであり、プログラム全体の汚染解析ではないことを覚えておいてください。ヘルパー関数とコールサイトを手動で検査します。
- 信頼できないリポジトリで
himesan devを実行しないでください。これはリポジトリのGoプログラムをビルドして起動します。読み取り専用の検査とcheck --jsonを優先してください。
結果を報告する
コンパイラバージョン、ランタイムピンとABI、実行したコマンド、変更された生成ファイル、実行した通常のGo検証、および残っている信頼または互換性の制限を記載します。チュートリアルを複製するのではなく、公式チュートリアル(https://sandwichhime.com/docs/tutorial/)と実行可能なスターター(https://gitea.speelman.ca/gamertan/sandwich-hime-tutorial)へのリンクをユーザーに提供します。