fix(firestore-send-email): kit/extension parity – invalid .env values leave mail unprocessed or silently change behaviour

オープン
#3,295 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 7 日以内に返信

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
72/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
firebase, typescript
領域
backend, devtools

調査の方向性

Start with kits/firestore-send-email/src/export-config.ts, helpers.ts, and the startup path in index.ts; compare how .env values are handled with assertRequiredParams and the extension validation in firestore-send-email/extension.yaml. Then review the README section at kits/firestore-send-email/README.md#L235-L246. Done means startup validates the listed settings and blank URI case, errors clearly, and the README explains quoting JSON values in .env.

索引モデルが issue の本文から書いたものです。

説明

kits parity type: bug

firestore-send-email kit/extension parity. Priority: medium. Some bad or blank settings in .env stop mail without any ERROR state. Others silently change behaviour. The extension rejected all of these at install.

Difference
  • Extension: the platform rejects values outside a select list or regex, and fills blank optional params with their defaults.
  • Kit: values read from .env are never checked (only prompt answers are), and the runtime coerces them:
.env value Extension Kit
TTL_EXPIRE_TYPE=days (or a label such as Day) rejected at install deploys; every document is left with no delivery field. The only log is Unhandled error occurred during processing: Error: Unknown TTL expire type: days at INFO
SMTP_CONNECTION_URI= with AUTH_TYPE=UsernamePassword allowed every document is left with no delivery field; only a WARNING Invalid URI on each call
TTL_EXPIRE_VALUE = 0, abc or 1.5 / -1 rejected becomes 1 / expireAt in the past
AUTH_TYPE=oauth2 or ApiKey rejected silently uses the SMTP URI
OAUTH_SECURE=yes, TRUE or blank rejected / blank becomes true false
TLS_OPTIONS="{\"ca\":\"…\n…\"}" (double-quoted PEM) stored as typed the .env parser turns \n into newlines, the JSON fails to parse, and certificate checks are turned off with only a warning

The README says a bad value "fails at send time with delivery.state: ERROR". That isn't true for the first two rows.

Reproduced
  • TTL_EXPIRE_TYPE=days and a blank SMTP_CONNECTION_URI were each deployed on a kit instance. Documents written afterwards never got a delivery field, and the logs above appeared on every call.
  • Extensions validateOnly rejected days, 0, abc and oauth2.
  • The other rows come from running the kit's config code and the CLI's .env parser locally.
Code
Resolution

Validate select and int values once at startup, the way assertRequiredParams handles blanks, and fail loudly. That covers TTL_EXPIRE_TYPE, TTL_EXPIRE_VALUE, AUTH_TYPE, OAUTH_SECURE and a blank URI under UsernamePassword. Correct the README section, and tell users to single-quote JSON values in .env.

主要言語
TypeScript
スター
979
フォーク
435
平均マージ
4日 22時間
マージ済み PR(30日)
15

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

firebase/extensions のほかの issue

firebase/extensions の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。