From 88a4d23e277777de40813344ef06b234a72c0713 Mon Sep 17 00:00:00 2001 From: Michael Kauzmann Date: Mon, 9 Sep 2024 17:02:20 -0600 Subject: [PATCH] graceful support for QSM, https://github.com/phetsims/scenery/issues/1654 Signed-off-by: Michael Kauzmann --- js/SceneryQueryParameters.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/js/SceneryQueryParameters.ts b/js/SceneryQueryParameters.ts index 767905dae..977f96d44 100644 --- a/js/SceneryQueryParameters.ts +++ b/js/SceneryQueryParameters.ts @@ -8,7 +8,8 @@ import scenery from './scenery.js'; -const sceneryQueryParameters = QueryStringMachine.getAll( { +// All scenery query parameters MUST have a default value, since we do not always support QSM as a global. +const schema = { /** * If this is a finite number AND assertions are enabled, it will track maximum Node parent counts, and @@ -29,7 +30,14 @@ const sceneryQueryParameters = QueryStringMachine.getAll( { defaultValue: Number.POSITIVE_INFINITY, public: false } -} ); +} satisfies Record; + +// Scenery doesn't depend on QSM, so be graceful here, and take default values. +const sceneryQueryParameters = window.hasOwnProperty( 'QueryStringMachine' ) ? + QueryStringMachine.getAll( schema ) : + ( Object.keys( schema ) as ( keyof typeof schema )[] ).map( key => { + return { [ key ]: schema[ key ].defaultValue }; + } ); scenery.register( 'sceneryQueryParameters', sceneryQueryParameters );