Skip to content

v0.38.3 - FlameWright safety and documentation improvements (2026-03-23)

What Changed?

This release improves the internal safety and documentation of the FlameWright module (src/v2/flame.ts). It replaces for...in loops with Object.keys() to avoid prototype chain pollution, and adds inline comments and @remarks to clarify GAS-specific design decisions around instanceof. No public API changes; fully backward compatible.


What's New

Main Feature: FlameWright internal safety improvements

What it does: Prevents prototype chain enumeration in schema validation methods, and documents why instanceof is avoided (or requires caution) in GAS environments.

How to use it: No changes required. Existing code continues to work as before.


Added

  • @remarks on FlameWright.instanceOf warning about instanceof unreliability across GAS script boundaries
  • Inline comment on FlameGuards.isValidDate explaining why Object.prototype.toString is used instead of instanceof
  • @internal tag on buildMessage (private helper, not part of public API)
  • @group / @category tags on all FlameWright methods for consistent TypeDoc output

Changed

  • FlameWright.fromSchema, FlameWright.partial, explain: replaced for...in with Object.keys() to avoid iterating inherited properties

Fixed

  • (none)

Is It Safe to Upgrade?

  • Breaking Changes: No
  • Backward Compatible: Yes

All changes are internal. No public API, behavior, or output is affected.


Release Details

  • Date: 2026-03-23
  • Version: v0.38.3
  • gaslamp: clasp version 84
  • pilotlamp: clasp version 41
  • Files Changed: 1 (src/v2/flame.ts)
  • Commits:
  • 584d6a6 refactor(v2): replace for...in with Object.keys() in fromSchema, partial, and explain
  • 33b6739 docs(v2): add @remarks warning about instanceof GAS boundary risk in FlameWright.instanceOf
  • fa411db docs(v2): add comment explaining why instanceof is avoided in isValidDate
  • 343173c docs(v2): add @internal to buildMessage and @group/@category to FlameWright methods

Known Issues

  • FlameWright.instanceOf uses instanceof and may fail across GAS script boundaries. Use duck-type guards (FlameGaslets) or FlameGuards.isValidDate for GAS built-in types instead.

Next Steps

  • Continue FlameWright / flame.ts review