From 283ddec8f5af966fdc64ec59858fbc34d851e1e9 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Wed, 16 Aug 2023 14:36:43 -0400 Subject: [PATCH 01/43] chore: Adding spec for existing Lifecycle APIs --- .../specifications/lifecycle/lifecycle.png | Bin 0 -> 114766 bytes .../specifications/lifecycle/index.md | 544 ++++++++++++++++++ 2 files changed, 544 insertions(+) create mode 100644 requirements/images/specifications/lifecycle/lifecycle.png create mode 100644 requirements/specifications/lifecycle/index.md diff --git a/requirements/images/specifications/lifecycle/lifecycle.png b/requirements/images/specifications/lifecycle/lifecycle.png new file mode 100644 index 0000000000000000000000000000000000000000..1cae28a0f62dbccd909c7a35c798f5c2f1ea8150 GIT binary patch literal 114766 zcmeFZc|4ST-#>gH>7-IwD@#czvcws(3`J5Rm8Gmvq(Uf6#>|wn#S*0yS(7M|v{-kJ>pJH6ewO!V|9lTu_)$xLde$eC?f(XqZ$jbOtE8)rgk-#SiLPpF@j86nR|LS(S?dWw?_IL3}q!IOy2w`j6`=!T$kT` z_pbYCe|psZRkseGy{5>00{Me|NUPC{x1Ume<0BCZXm}+Ra+NNx-kFmqFc{R1%)|H`ql2~ zJyE-5UmBh|`Qf#n&!*VbE4HWs$ z7ilUA^q}tkC1nsyGu(ZTM3dIv_=@qs-_pd|K&@TPhP2Q;ha_dZ-sAYv-Yb!q0_c0b z`;XtBFY)R4xj4v`_lTZDD(G;ehyLMfi$=)B*{S3=R_`yL4w Se1G)X-Ca>1&y^r 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�hIX&Pkf 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 A8vp Date: Wed, 16 Aug 2023 14:38:24 -0400 Subject: [PATCH 02/43] feat: Resource Deallocators and Loading Screens --- .../specifications/lifecycle/index.md | 165 ++++++++++++++++-- 1 file changed, 148 insertions(+), 17 deletions(-) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 5bc26ef17..cbb0322e5 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -58,10 +58,17 @@ reclaiming any memory, CPU, etc. that it was consuming. - [3.8. Terminating an app](#38-terminating-an-app) - [4. Core SDK APIs](#4-core-sdk-apis) - [4.1. Ready](#41-ready) - - [4.2. Close](#42-close) - - [4.3. Finished](#43-finished) - - [4.4. State](#44-state) -- [5. Lifecycle Configuration](#5-lifecycle-configuration) + - [4.2. Loading](#42-loading) + - [4.3. Close](#43-close) + - [4.4. Background](#44-background) + - [4.5. Finished](#45-finished) + - [4.6. State](#46-state) + - [4.7. ResourceDeallocator Interface](#47-resourcedeallocator-interface) +- [5. Manage SDK APIs](#5-manage-sdk-apis) + - [5.1. Terminate](#51-terminate) + - [5.2. Suspend](#52-suspend) + - [5.3. Unsuspend](#53-unsuspend) +- [6. Lifecycle Configuration](#6-lifecycle-configuration) ## 2. Lifecycle States @@ -159,8 +166,10 @@ previous states. This state allows an app to be present as the secondary experience to the user, e.g. when a system settings UI is overlayed on top of the app. -Different platforms **MAY** support differing numbers of backgrounded -apps. +Different platforms **MAY** support differing numbers of background +apps. See [Background App +Requirements](https://comcastcorp.sharepoint.com/:w:/r/sites/hqppa/Shared%20Documents/Global%20App%20Platform/Firebolt/Requirements/Core/Lifecycle/Background%20App%20Requirements.docx?d=w185d9112bcd44376bb0635dad816919b&csf=1&web=1&e=cjmuSJ) +for more info. Apps in this state **MUST** either be partially visible **OR** have access to an audio decoder, e.g. an app playing music in the background. @@ -170,7 +179,9 @@ platforms **MAY** forward certain keys to the app, e.g. play/pause keys. Apps in this state **MAY** have access to the audio-video decoder. How many decoders are available is a decision for each device based on -resources.g +resources. See [Background App +Requirements](https://comcastcorp.sharepoint.com/:w:/r/sites/hqppa/Shared%20Documents/Global%20App%20Platform/Firebolt/Requirements/Core/Lifecycle/Background%20App%20Requirements.docx?d=w185d9112bcd44376bb0635dad816919b&csf=1&web=1&e=cjmuSJ) +for more info. Apps in this state **SHOULD NOT** have performance negatively impacted by other processes on the device. @@ -179,6 +190,12 @@ When an app transitions to this state, the platform **MUST** dispatch the Lifecycle.onBackground notification with the current state and previous states. +If an app is in the inactive state and successfully calls +Lifecycle.loading(), the platform **MAY** transition the app to the +background state with the previous state set to inactive so that the app +may present a custom loading screen. See *Loading an App* for more +details. + ### 2.5. Unloading This state allows apps to do whatever cleanup is required in order to be @@ -227,6 +244,9 @@ unloaded. Finally, the app and its container **MUST** be removed from memory and have other resources released as well. +Apps may optionally implement the Lifecycle.ResourceDeallocator API for +more control over app suspension. + ## 3. Lifecycle State Transitions Firebolt platforms **MUST** support the app lifecycle states and @@ -274,6 +294,13 @@ If the app begins listening for the onInactive event during the initializing state, then the platform **MUST** transition the app into the inactive state. +Next, if the app has permission to use the +xrn:firebolt:capability:lifecycle:loading-screen capability (and the +device supports it) then, if the app calls the Lifecycle.loading() API, +the platform **MUST** transition the app into the background state. This +enables apps to display a custom loading screen on devices that support +it. Supporting this capability is optional. + The loading() API may only be called during an apps first time in the inactive state. This API returns an error at all other times. @@ -285,7 +312,9 @@ inactive state within 500 milliseconds. See Launching an App for more info. The ready() API may only be called during the initializing state, or -during an apps first time in the inactive state. +during an apps first time in the inactive state, or by an app that is +displaying a custom loading screen after its first cycle from +initializing to inactive to background. ### 3.2. Launching an app @@ -298,9 +327,9 @@ scope for this document. One app **MAY** request to launch another app, via the Discovery.launch() API method, see -[Discovery](#). - -**TODO**: Add this spec so we can link to it! +[Discovery](https://comcastcorp.sharepoint.com/:w:/r/sites/hqppa/Shared%20Documents/Global%20App%20Platform/Firebolt/Requirements/Core/Discovery/Discovery%20Requirements.docx?d=w81397bb577d149b995636834c4c3a302&csf=1&web=1&e=bdLI4q) +in [Core +Requirements](https://comcastcorp.sharepoint.com/:f:/r/sites/hqppa/Shared%20Documents/Global%20App%20Platform/Firebolt/Requirements/Core/Discovery?csf=1&web=1&e=qtZhFJ). To launch an app, platforms **MUST** use the following process. @@ -354,6 +383,10 @@ is no longer the user experience. The platform may background apps for any number of reasons that are out of scope for this document. +Apps that are in the foreground state **MAY** request to be +backgrounded, via the Lifecycle.background() API method. See the +Background API below. + To background an app, platforms **MUST** use the following process. If an app is already in the background state, then it is already @@ -395,7 +428,17 @@ happen. At this point, the app **MUST** be in the inactive state. -Finally the platform **MUST** transition the app to the +Next, if the app has permission to use the +xrn:firebolt:capability:lifecycle:deallocation capability **and** the +app has registered its implementation of the +Lifecycle.ResourceDeallocator interface, then the platform **MUST** call +the apps ResourceDeallocator.suspend method via the onRequestSuspend RPC +call and wait for either the onSuspendResponse or onSuspendError +handshake before proceeding. + +Finally, if the app does not have a permitted ResourceDeallocator +implementation, or if the app's implementation has responded with a +success handshake, the platform **MUST** transition the app to the suspended state (see '[Suspended](#26-suspended)' above). ### 3.6. Unsuspending an app @@ -444,7 +487,18 @@ does not need to happen. At this point, the app **MUST** be in the inactive state. -Finally the platform **MUST** transition the app to the +Next, if the app has permission to use the +xrn:firebolt:capability:lifecycle:deallocation capability **and** the +app has registered its implementation of the +Lifecycle.ResourceDeallocator interface, then the platform **MUST** call +the apps ResourceDeallocator.unload method via the onRequestUnload RPC +call and wait for either the onUnloadResponse or onUnloadError handshake +before proceeding. The finished API has no effect for apps with a valid +ResourceDeallocator implementation. + +Finally, if the app does not have a permitted ResourceDeallocator +implementation, or if the app's implementation has responded with a +success handshake,, the platform **MUST** transition the app to the unloading state (see '[Unloading](#25-unloading)' above). ### 3.8. Terminating an app @@ -475,7 +529,14 @@ The Lifecycle.ready() API allows an app to notify the platform that it is initialized and ready to be displayed to the end user. This method **MUST NOT** be called more than once. -### 4.2. Close +### 4.2. Loading + +The Lifecycle.loading() API allows an app to notify the platform that it +is presenting a custom loading screen and would like to be moved into +the background state so the user can see the loading screen. This method +**MUST NOT** be called more than once. + +### 4.3. Close The Lifecycle.close() API allows an app to request that it be closed by the platform. @@ -504,8 +565,36 @@ provided. For example, apps closed due to the RCU are less likely to be unloaded since it may be an accidental RCU press, whereas an explicit user exit is more likely to be intentional. +### 4.4. Background + +The Lifecycle.background() API allow an app to request that it be moved +to the background state. -### 4.3. Finished +An app **MUST** have the +xrn:firebolt:capability:lifecycle:request-background capability to call +this API, otherwise an error **MUST** be returned. + +This method requires a target parameter, which tells the platform which +app should be brought to the foreground: + +| Target | Description | +|------------------------------------|------------------------------------| +| ForegroundTarget.LAST_APP | The next app on the stack, i.e. the most recently used app before this one, will be promoted to the foreground when this app is moved to the background. | +| ForegroundTarget.DEFAULT_APP | The platform's default app for this operation will be moved to the foreground when this app is moved to the background. | + +The default app **SHOULD** be the main experience that users expect when +they start up their device. Platforms **MAY** use a different default +app within reason. + +Platforms generally **SHOULD** respect this call and move the app to the +background state, but there may be edge cases where this is not +possible, e.g. the app is considered to be the default experience for +the device, and hiding it would leave no other UX present. + +When the request to background an app is not respected, the +Lifecycle.background() method **MUST** return an error. + +### 4.5. Finished The Lifecycle.finished() API allows an app to notify the platform that it is done preparing to be unloaded. @@ -520,13 +609,55 @@ This method results in an error if it is called while the app is in any other state than unloading, or called more than once while in that state. -### 4.4. State +### 4.6. State The Lifecycle.state() method provides convenient access to the current state, and is implemented by the Core SDK listening to all state notifications. This method **MUST NOT** be asynchronous. -## 5. Lifecycle Configuration +### 4.7. ResourceDeallocator Interface + +An app may provide a ResourceDeallocator implementation in order to +support more efficient resource usage in the various lifecycle states. + +| Method | Return | Description | +|----------|--------|------------------------------------------------------| +| inactive() | void | Called when the platform wants to transition the app to the inactive state. The transition will not occur until the method returns, errors, or times out (see appInactiveTimeout, below) | +| supend() | void | Called when the platform wants to transition the app to the suspended state. The transition will not occur until the method returns, errors, or times out (see appSuspendTimeout, below) | + +Note that these methods are implemented by the App, not the platform. +The platform requests them via onRequest\ events. + +## 5. Manage SDK APIs + +The following APIs are exposed by the Firebolt Manage SDK. + +See the Firebolt Manage SDK documentation for details around syntax, +etc. + +### 5.1. Terminate + +The terminate() API requests that the platform terminate a specific app. + +This method requires an appId parameter, which tells the platform which +app to terminate. + +### 5.2. Suspend + +The suspend() API requests that the platform suspends a specific app. + +This method requires an appId parameter, which tells the platform which +app to suspend. + +### 5.3. Unsuspend + +The unsuspend() API requests that the platform unsuspends a specific +app. + +This method requires an appId parameter, which tells the platform which +app to unsuspend. + +## 6. Lifecycle Configuration In order to enable Firebolt Certification of a device's Lifecycle Management features, the device **MUST** support the following From b51ee9e5c88e50b787b116fa8f59d435363f0c8e Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Fri, 29 Sep 2023 17:06:01 -0400 Subject: [PATCH 03/43] feat: First Draft based on today's working group --- .../lifecycle/lifecycle-states.png | Bin 0 -> 198453 bytes .../lifecycle/lifecycle-transitions.png | Bin 0 -> 326995 bytes .../specifications/lifecycle/index.md | 557 ++++++++++-------- .../specifications/lifecycle/presentation.md | 21 + 4 files changed, 332 insertions(+), 246 deletions(-) create mode 100644 requirements/images/specifications/lifecycle/lifecycle-states.png create mode 100644 requirements/images/specifications/lifecycle/lifecycle-transitions.png create mode 100644 requirements/specifications/lifecycle/presentation.md diff --git a/requirements/images/specifications/lifecycle/lifecycle-states.png b/requirements/images/specifications/lifecycle/lifecycle-states.png new file mode 100644 index 0000000000000000000000000000000000000000..5e6ce16e6bd305dbc33c50d2039660bb4ff7b3ff GIT binary patch literal 198453 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

GotsZ9my4UgB`lM|xWv94_ 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 MPU~#SX|wzP3%mM4^#A|> literal 0 HcmV?d00001 diff --git a/requirements/images/specifications/lifecycle/lifecycle-transitions.png b/requirements/images/specifications/lifecycle/lifecycle-transitions.png new file mode 100644 index 0000000000000000000000000000000000000000..759725fc1d3d0781d6cff73317a884e05c97d60d GIT binary patch literal 326995 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

~0 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

GotsZ9my4UgB`lM|xWv94_ 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 MPU~#SX|wzP3%mM4^#A|> diff --git a/requirements/images/specifications/lifecycle/lifecycle-transitions.png b/requirements/images/specifications/lifecycle/lifecycle-transitions.png index 759725fc1d3d0781d6cff73317a884e05c97d60d..d88452e988279e4a4ed50b32958f7dd60d4cf8b3 100644 GIT binary patch literal 224230 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

x;@Qg!0xm6 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

~0 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

B=WtSreQNI8SaHQWu}EI>>d7Wqy}O+MR>%%40oY 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 G`~L$R6rCvm literal 125761 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%0A`)({~_C;n1M%I&5l)_ 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Π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௑mj467;qTD=SB=F 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ΝPh)!iP7j%4iNhpz{)=ukA8UpE=-mrb8Ku=8@G7+^?%ReIMi z-iErCmQlE-0{1~&<#+1V=yx-1uSJ~^F5As~y{XO7KH-g``&3#P>Nwrmx7^C{d>WeC zSM{BMe%IyJ&^cDyN&CaoQ1>Ctp4{P%^f#n4ON5+>_~E8J`po-O!(tCC)^%Ox{;}Y8 zVTt==$>R3t9wn65bl8 z8;ZfdAw4E`hO*F1PY7os*v)+A5h5^UWe%fd503Q^T)--S!LnSvNGne9`s|+X_}QYH zLlGVC92G@t-PNOWVTx)0d8c9Ua=`6e-dl-m6gnn2MJ z)bv*>=GKO^oMx4hx1z^fwMvGSPAiod@)bJBCLeN5H4;L8ayNpVD#5=|;;Rv=UyPz& z#~~kYz?m1s4x$=zLTNXL;=Oe7!i#h--%w%)ogKFB0=$yn9n48*cmc+KwbaVgtH{wy zYuRd>H(P4(l5KFB{6hbX;Q`wV&i%0g&4C~N9Pct*{9K;mdQm;VB*j(asKQLLsvUeF zsMHlCz0eQxb)@mT5wmWqkt8pHamaV9VasZIQx52NG^G!&^`*X8cjL{yf$Jkw@@ zTen-9*e^ku!;{dt%(fxa9-rPzBPqHRAIYg)Wo(vKiT8V>7mZL(S%Dg=a!|YmZad@z zqr`c8AkIuQl#H#AQki;E8r;2+_(mes`nA4s0-4_#eo>9#RpH8Zr$
67Z~dc1bX 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 literal 224230 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

x;@Qg!0xm6 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 he The platform **MUST** dispatch the `Lifecycle.onRequestInitialize` -> notification to the app, and wait for `appReadyTimeout` milliseconds -> for either a `Lifecycle.ready` or `Lifecycle.initializeError` call in +> The platform **MUST** dispatch the `Lifecycle.onRequestCreate` +> notification to the app, and wait for `appCreateTimeout` milliseconds +> for either a `Lifecycle.createResult` or `Lifecycle.createError` call in > response. > -> **NOTE**: this requires a minor change to our code-generate to customize -> a provider result method name. +> Once the platform receives the `createResult` call, then the app +> is considered to have any important Firebolt notifications set up +> and is ready to be activated and presented to the user. > -> Once the platform receives the `initializeResult` call, then the app -> is considered "ready" to be activated and presented to the user. -> -> If the app times out or makes an `initializeError` call, then the app +> If the app times out or makes a `createError` call, then the app > **MUST** be terminated. -If an app does not provide the capability, then the app is doing a -synchronous initialization and needs to let the platform know when it -is complete: - -> The platform **MUST** wait `appReadyTimeout` milliseconds for the app -> to call `Lifecycle.ready()`, at which point the app is considered -> "ready" to be activated and presented to the user. -> -> If the app times out, then the app **MUST** be terminated. - -Apps **SHOULD** set up any Firebolt event listeners during -initialization, since the platform will wait until the app is ready -before dispatching many critical events such as Lifecycle and -Presentation events. +Apps **SHOULD** set up any Firebolt event listeners either before calling +`Lifecycle.provide` or during `create()`, since the platform will wait until +the app is ready before dispatching many critical events such as Lifecycle +and Presentation events. Apps **SHOULD** acquire any important authentication needed for the app to function during initialization. @@ -307,19 +337,15 @@ initialization. **TODO**: discuss this ^^ -Once an app is "ready" it **MUST** be transitioned to the `STARTED` -state within 500 milliseconds. +Once the `create` method returns the app **MUST** be transitioned to +the `RUNNING` state within 100 milliseconds. -If an app provides the `xrn:firebolt:capability:lifecycle:management` -capability and calls `Lifecycle.ready` when the platform is not waiting -for the app to finish initializing, then the platform **MUST** return -and error, and terminate the app. +**TODO** Discuss ^^ ### 3.3. Activating an app -Launching an app transitions it to one of the *active* states -(foreground or background) so that it becomes part of the user's -experience. +Launching an app transitions it to the `ACTIVE` state so that it becomes part +of the user's experience. **TODO**: is graphics available at beginning of activate? **TODO**: Outline when RAM/CPU/GRAPHICS, etc. becaome available for each transition, e.g. start vs end @@ -332,7 +358,7 @@ To launch an app, platforms **MUST** use the following process. **TODO**: Write words about how you can't activate two apps into "foreground" at the same time. -If the app is already in the `FOREGROUND` state, then it is already +If the app is already in the `ACTIVE` state, then it is already launched and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to launch an app that is already in the foreground state and the @@ -344,8 +370,7 @@ If the app is not initialized, the platform **MUST** [initialize](#32-initializi If the app is suspended, then it **MUST** be [resumed](#37-resuming-an-app) first. -At this point, the app **MUST** be in either the `STARTED` or `BACKGROUND` -state. +At this point, the app **MUST** be in the `RUNNING` state. If an app provides the `xrn:firebolt:capability:lifecycle:management` capability, then the platform **MUST** call the app's implementation of @@ -359,23 +384,14 @@ capability, then the platform **MUST** call the app's implementation of > The `onRequestActivate` call **MUST** include a `NavigationIntent`. > > Once the platform receives the `activateResult` call, then the app -> may be moved to the target state, `FOREGROUND` or `BACKGROUND` -> and presented to the user. +> may be moved to the `ACTIVE` state. > > If the app times out or makes an `activateError` call, then the app > **MUST** be terminated. -If an app does not provide the capability, then: - -> The platform **MUST** move the app to the target state, `FOREGROUND` -> or `BACKGROUND` and presented to the user. -> -> Then, the platform **MUST** dispatch a `Discovery.onNavigateTo` -> notification to the platform with a `NavigationIntent`. - ### 3.4. Deactivating an app -Closing an app transitions it to the `STARTED` state, so that it is no +Closing an app transitions it to the `RUNNING` state, so that it is no longer part of the user's experience. The platform may close apps for any number of reasons that are out of @@ -385,12 +401,14 @@ Apps **MAY** request to be closed, via the `Lifecycle.close()` API method. To close an app, platforms **MUST** use the following process. -If an app is already in the `STARTED` state, then it is already closed +If an app is already in the `RUNNING`, `SUSPENDED`, or `SLEEPING` state, then it is already closed and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to -close an app that is already in the `STARTED` state and the remainder of +close an app that is already in the `RUNNING` state and the remainder of this section does not apply. +If an app is in the `initializing` state, then it is not + If an app is already performing a `deactivate()` transition, the platform **MUST** ignore the new attempt to close the app, allow the pending closure to complete, and the remainder of this section does not apply. @@ -400,14 +418,14 @@ If an app is already performing an `activate()` transition, the platform remaining [activation steps](#33-activating-an-app). If an app is currently [initializing](#32-initializing-an-app), the -platform **MUST** wait for initialization to succeed or fail. +platform **MUST** wait for initialization to succeed or fail and then skip +any activation that may have been pending. -If an app is currently in the `SUSPENDED` state, is [unloading](#38-unloading-an-app), -or is performing a `suspend()` or `resume()` transition, then the app +If an app is currently [unloading](#38-unloading-an-app) then the app cannot be closed and the platform **MUST NOT** close it, and the remainder of this section does not apply. -At this point, the app **MUST** be in one of the active states. +At this point, the app **MUST** be in the `ACTIVE` state. If an app provides the `xrn:firebolt:capability:lifecycle:management` capability, then the platform **MUST** call the app's implementation of @@ -419,58 +437,12 @@ capability, then the platform **MUST** call the app's implementation of > call in response. > > Once the platform receives the `deactivateResult` call, then the app -> may be moved to the `STARTED` state. +> may be moved to the `RUNNING` state. > > If the app times out or makes a `deactivateError` call, then the app > **MUST** be terminated. -If an app does not provide the capability, then it will not provide any -resource management: - -> The platform **MUST** move the app to the `STARTED` state. -> -> The platform **SHOULD** prioritize this app for unloading if it is not -> reactivated within `appLegacyUnloadTimeout` milliseconds. - -### 3.5. Backgrounding an app - -Backgrounding an app transitions it to the `BACKGROUND` state, so that it -is no longer the primary user experience. - -The platform may background apps for any number of reasons that are out -of scope for this document. - -Apps that are in the `FOREGROUND` state **MAY** request to be -backgrounded, via the `Lifecycle.background()` API method. See the -Background API below. - -To background an app, platforms **MUST** use the following process. - -If an app is already in the `BACKGROUND` state, then it is already -backgrounded and there is no need to do anything else. The platform -**MUST NOT** dispatch any *additional* lifecycle notifications when -attempting to background an app that is already in the `BACKGROUND` state -and the remainder of this section does not apply. - -If an app is already performing a `activate()` transition, the platform -**MUST** ignore the new attempt to activate the app, allow the pending -activation to complete, and the remainder of this section does not apply. - -If an app is currently [initializing](#32-initializing-an-app), the -platform **MUST** wait for initialization to succeed or fail. - -If an app is currently in the `SUSPENDED` state, is [unloading](#38-unloading-an-app), -or is performing a `suspend()` or `resume()` transition, then the app -cannot be backgrounded and the platform **MUST NOT** try to, and the -remainder of this section does not apply. - -At this point, the app **MUST** be in either the `FOREGROUND` or `STARTED` -state. - -Finally, the platform **MUST** transition the app to the background -state (see '[Background](#24-background)' above). - -### 3.6. Suspending an app +### 3.5. Suspending an app Suspending an app transitions it to the `SUSPENDED` state, so that it is no longer using resources on the device. @@ -487,16 +459,19 @@ NOT** dispatch any *additional* lifecycle notifications when attempting to suspend an app that is already in the suspended state and the remainder of this section does not apply. -If the app is not loaded, or is not in the `STARTED` state, then it +If the app is not loaded, or is not in the `RUNNING` state, then it cannot be suspended, and the remainder of this section does not need to happen. -At this point, the app **MUST** be in the `STARTED` state. +At this point, the app **MUST** be in the `RUNNING` state. If an app provides the `xrn:firebolt:capability:lifecycle:management` capability, then the platform **MUST** call the app's implementation of `LifecycleManagement.suspend()`: +**TODO** What is different about STARTED vs SUSPENDED? +**TODO** Netflix needs a boolean in created (launch visible or launch invisible) + > The platform **MUST** dispatch the `Lifecycle.onRequestSuspend` > notification to the app, and wait for `appSuspendTimeout` milliseconds > for either a `Lifecycle.suspendResult` or `Lifecycle.suspendError` @@ -511,7 +486,7 @@ capability, then the platform **MUST** call the app's implementation of If an app does not provide the capability, then it cannot be suspended and the platform **MUST NOT** attempt to. -### 3.7. Resuming an app +### 3.6. Resuming an app Unsuspending an app loads it's previous state back into memory and transitions it to the started state, so that it may be launched back @@ -546,12 +521,18 @@ for either a `Lifecycle.resumeResult` or `Lifecycle.resumeError` call in response. Once the platform receives the `resumeResult` call, then the app -may be moved to the `STARTED` state. +may be moved to the `RUNNING` state. If the app times out or makes a `resumeError` call, then the app **MUST** be terminated. -### 3.8. Unloading an app +### 3.7. Putting an app to sleep +TBD + +### 3.8. Waking an app from sleep +TBD + +### 3.9. Unloading an app Unloading an app transitions it out of memory, so that it is no longer using resources on the device. @@ -561,13 +542,13 @@ scope for this document. To unload an app, platforms **MUST** use the following process. -If an app is not in the `STARTED` state, then it cannot be unloaded and +If an app is not in the `RUNNING` state, then it cannot be unloaded and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to unload an -app that is not in the `STARTED` state and the remainder of this section +app that is not in the `RUNNING` state and the remainder of this section does not need to happen. -At this point, the app **MUST** be in the `STARTED` state. +At this point, the app **MUST** be in the `RUNNING` state. If an app provides the `xrn:firebolt:capability:lifecycle:management` capability, then the platform **MUST** call the app's implementation of @@ -592,7 +573,7 @@ If an app does not provide the capability, then: > When the `finished` call occurs, or the timeout is reached, the platform > **MUST** unload and terminate the app. -### 3.9. Terminating an app +### 3.10. Terminating an app Terminating an app removes it from memory without dispatching any state changes. @@ -670,7 +651,7 @@ The Lifecycle.ready() API allows an app to notify the platform that it is initialized and ready to be displayed to the end user. This method **MUST NOT** be called more than once. -### 4.4. Close +### 4.3. Close The Lifecycle.close() API allows an app to request that it be closed by the platform. @@ -697,99 +678,13 @@ provided. For example, apps closed due to the RCU are less likely to be unloaded since it may be an accidental RCU press, whereas an explicit user exit is more likely to be intentional. -### 4.5. Background - -The Lifecycle.background() API allow an app to request that it be moved -to the background state. - -An app **MUST** have the -xrn:firebolt:capability:lifecycle:request-background capability to call -this API, otherwise an error **MUST** be returned. - -This method requires a target parameter, which tells the platform which -app should be brought to the foreground: - -| Target | Description | -|------------------------------------|------------------------------------| -| ForegroundTarget.LAST_APP | The next app on the stack, i.e. the most recently used app before this one, will be promoted to the foreground when this app is moved to the background. | -| ForegroundTarget.DEFAULT_APP | The platform's default app for this operation will be moved to the foreground when this app is moved to the background. | - -The default app **SHOULD** be the main experience that users expect when -they start up their device. Platforms **MAY** use a different default -app within reason. - -Platforms generally **SHOULD** respect this call and move the app to the -background state, but there may be edge cases where this is not -possible, e.g. the app is considered to be the default experience for -the device, and hiding it would leave no other UX present. - -When the request to background an app is not respected, the -Lifecycle.background() method **MUST** return an error. - -### 4.6. Finished - -The Lifecycle.finished() API allows an app to notify the platform that -it is done preparing to be unloaded. - -This allows the platform to unload the app *before* appFinishedTimeout -milliseconds have passed, so that apps can be unloaded faster. - -The platform **MUST** unload an app after appFinishedTimeout -milliseconds even if this method is never called. - -This method results in an error if it is called while the app is in any -other state than unloading, or called more than once while in that -state. - -### 4.7. State +### 4.4. State The Lifecycle.state() method provides convenient access to the current state, and is implemented by the Core SDK listening to all state notifications. This method **MUST NOT** be asynchronous. -### 4.8. ResourceDeallocator Interface - -An app may provide a ResourceDeallocator implementation in order to -support more efficient resource usage in the various lifecycle states. - -| Method | Return | Description | -|----------|--------|------------------------------------------------------| -| started() | void | Called when the platform wants to transition the app to the started state. The transition will not occur until the method returns, errors, or times out (see appStartedTimeout, below) | -| supend() | void | Called when the platform wants to transition the app to the suspended state. The transition will not occur until the method returns, errors, or times out (see appSuspendTimeout, below) | - -Note that these methods are implemented by the App, not the platform. -The platform requests them via onRequest\ events. - -## 5. Manage SDK APIs - -The following APIs are exposed by the Firebolt Manage SDK. - -See the Firebolt Manage SDK documentation for details around syntax, -etc. - -### 5.1. Terminate - -The terminate() API requests that the platform terminate a specific app. - -This method requires an appId parameter, which tells the platform which -app to terminate. - -### 5.2. Suspend - -The suspend() API requests that the platform suspends a specific app. - -This method requires an appId parameter, which tells the platform which -app to suspend. - -### 5.3. Unsuspend - -The unsuspend() API requests that the platform unsuspends a specific -app. - -This method requires an appId parameter, which tells the platform which -app to unsuspend. - -## 6. Lifecycle Configuration +## 5. Lifecycle Configuration TODO: do we want these to be per spec, per distributor, or per app? diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index 22f7994dd..91710bd6d 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -21,15 +21,21 @@ See [Firebolt Requirements Governance](../../governance.md) for more info. TBD... - [1. Overview](#1-overview) -- [2. Display](#2-display) - - [2.1. Display vs Lifecycle](#21-display-vs-lifecycle) -- [3. Overlay](#3-overlay) -- [4. Off-screen Video](#4-off-screen-video) -- [5. Platform-provided Loading Screen](#5-platform-provided-loading-screen) -- [6. App-provided Loading Screen](#6-app-provided-loading-screen) +- [2. Focus](#2-focus) +- [3. Display](#3-display) + - [3.1. Display vs Lifecycle](#31-display-vs-lifecycle) +- [4. Overlay](#4-overlay) +- [5. Off-screen Video](#5-off-screen-video) +- [6. Platform-provided Loading Screen](#6-platform-provided-loading-screen) +- [7. App-provided Loading Screen](#7-app-provided-loading-screen) -## 2. Display +## 2. Focus +The `Presentation` module **MUST** have a `focus` boolean property that returns whether or not the app has input, e.g. RCU, focus. + +As a property, this API also has an `onFocusChanged` notification. + +## 3. Display The `Presentation` module **MUST** have a `display` string property that returns one of the following values: | Value | Description | @@ -39,20 +45,21 @@ The `Presentation` module **MUST** have a `display` string property that returns | `SCALED` | The app is displayed at a size smaller than the entire screen but at least 25% of the width or height | | `THUMBNAIL` | The app is displayed at a size smaller than 25% of the width or height of the entire screen | | `LOADING` | The platform is displaying a loading screen while the app loads | +| `NONE` | The app does not have a graphics surface allocated | -### 2.1. Display vs Lifecycle +### 3.1. Display vs Lifecycle Each Lifecycle state only supports certain display states: -| Lifecycle | Supported Displays | -|-------|-------------| -| `FOREGROUND` | `FULLSCREEN`, `SCALED` | -| `BACKGROUND` | `FULLSCREEN`, `SCALED`, `THUMBNAIL` | -| `STARTED` | `OFFSCREEN` | -| `SUSPENDED` | | +| Lifecycle | Supported Displays | +|----------------|-------------------------------------| +| `INITIALIZING` | `NONE`, `LOADING` | +| `ACTIVE` | `FULLSCREEN`, `SCALED`, `THUMBNAIL` | +| `INACTIVE` | `OFFSCREEN` | +| `SUSPENDED` | `NONE`, `LOADING` | See [Off-screen Video](#2-offscreen-video) for an exception to this. -## 3. Overlay +## 4. Overlay The `Presentation` module **MUST** have an `overlay` string property that returns one of the following values: | Value | Description | @@ -62,12 +69,12 @@ The `Presentation` module **MUST** have an `overlay` string property that return | `SIDEBAR` | There is a vertical sidebar covering less than 33% of the app on one side. | | `BLOCKED` | There is a significantly sized UX covering a majority of the app. | -## 4. Off-screen Video +## 5. Off-screen Video If an app has the `xrn:firebolt:capability:presentation:offscreen-audio` or `-video` capability, then it can keep playing video/audio when the app is off-screen. -When an app has this capability, it **MAY** be put into the `OFFSCREEN` display state while in the `BACKGROUND` Lifecycle state. +When an app has this capability, it **MAY** be put into the `OFFSCREEN` display state while in the `ACTIVE` Lifecycle state. -## 5. Platform-provided Loading Screen +## 6. Platform-provided Loading Screen Most apps will leverage a platform-provided loading screen. If an app provides the `xrn:firebolt:capability:presentation:loading-screen` @@ -88,7 +95,7 @@ the loading screen is displayed. See [Lifecycle](./index.md) for more info on launching. -## 6. App-provided Loading Screen +## 7. App-provided Loading Screen If an app provides the `xrn:firebolt:capability:presentation:loading-screen` capability, then the platform **MAY** invoke this capability in some situations. From d2f95d2b9e918a2039bc831a7d2e269fba200607 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Fri, 13 Oct 2023 14:20:45 -0400 Subject: [PATCH 14/43] Cleaned up spec based on working group consensus --- .../lifecycle/lifecycle-transitions.png | Bin 225638 -> 228229 bytes .../specifications/lifecycle/index.md | 604 +++++++++++++----- .../specifications/lifecycle/presentation.md | 69 +- 3 files changed, 471 insertions(+), 202 deletions(-) diff --git a/requirements/images/specifications/lifecycle/lifecycle-transitions.png b/requirements/images/specifications/lifecycle/lifecycle-transitions.png index 1a864422673b6564bedbc6ed8980ca8216844ca8..195d0bc0bd1c88442ca64ffe9fa82ab9b52a1395 100644 GIT binary patch delta 122543 zcmb4rXH=7E*DkiPFrxwjDov55G#RA}j7VSvAtEZ$9RWc@Knyh@d2Ean0i{bxB#7Y9 zhR|DZlp-}mkN|;1X`u%Q5J-TWC+NJxeCu21ocDLuO744?YhU}?`_92mr+q zq#qJkHqMX`5TMSpi9(Mm?>`HxTo|4&`;41UVR&?ex@fPy#v zU=*}SLe;9ty6|QLYpfpZ|8^E9SVn4$@A8o(Pn6N`+mjl^<(xS0<(MSiLZK1cQmjj3 ztwP|9lHU%2oBA6xZR69n(Lxh1IV&qEV=V`ykb{Rfh`~3UGtR8Fw#vDwF=qYNliuTz zXC7btOZa@=k4zUpK;Y)&6qCqqF0NoLWiv7N*y_aj-+36hxQD9(z7Zp}vA<%UIHkI^ zL_@YO5P}|6)@La&GcmP(w_4Yi0yhE}LBNU`uvWA3(>t|TwtzrdcC6q^43r++1Zc;? zRQ*^D^8O)HRA4Ao+kNj zJeXNQ(f9o2sB0QOYOLm8aIST)XVXnS^Soo%5MVzl?G)J|O={V$S1 z8N%nMMT|HL%?`9C0fBb~bTo(NQOBL-)~U~j6j5J6eE9d#FkaYz@}^1Xq^kjWsv^&; zFhK0>r=xqvgp*QglIplzptq8O7OR95ilBw1ADsMlAw=`8%j05Au^J&-h663?z|vIu zRK_~sH|GkVDA`M5&bva$T5Ud361wY%fc%v}OEcM>b$Bca~k5AIBM zcoHWC%iZ~U--|W-UsGmCB5m?&n!)P!58n7_-Dt@=7)WxOnW@kbek5`c^p>r`lN@26fmjtuJqLwqpxC;m5riR#P7e= z4O3CPms7E9tUdarWxZqRI3UJ&Uzl3=l%ruAEk!&3oK?2NG#f9cepNOMJw*FJjj6$b zQSX%B0N2l$F$`vZa9Jz&Ax<>uBs9MZd2m=hm|p!+Rln!@-jBfA5Ke(&{K*Rdus78- zl7b8Zt$EH>I_=_4v#j=e?=+7E9}svKJlVd>%W2Ux!$F$P-8c|Zei^j?J{gt!l6JVt zMafnoyRzbkA4|`-9`EuUqAF80mb_>`hA-R@vZWDZ+e- zE`dOQq^>xw_!mw{P$DYtPtO7SAElK`oz@eT58ezRw#>$~E7Jqa3R~t-S$e29j>ujW z`yM^!3(n*?leXy3#Y~O03EcYX$lrb#6D~};iGz68t$i+3gumIVAfUS?c6#kwE%WF8*2=D!Jr90Pi$NVmJFtLcp)J&0bQvV1PVm|f39IbS~~7CjQC2aedFV( zJl0b5L4VJETEM&UtMMbD<~xgA1~6mmKMDv;+ZR{BbH4}Bl?7)FcDqeqQIEngeaBD}JGO1{_QMJiN56<&yTKJczmcGDAjNsa=c-ZSGz ziot7?o*ip$#3O2Qa@f+Q*~^#r-&9jX?CH}b7$PDD>U$O~XJNDYr)omx#&PIk1*sD# zg?Cw7^Lmw2c^-69(x@WA5%?%Sa%}l)VECho|XwTlWWvl{XegKR+S%rkBqei1jeSTEAscN`f*9j8s2;zz^E->JNNW7AB8jJ znF(&N=I8|ZV=!~%1T{Z?WMOBzaRUJ1I4MtL?Yhu!`xOF_Ut|%Yh8R3HubRaW&acnG zFsMnMPPkcexowG<-W{1zTp0`XmU&T-Gp1m>4?abCrQ~;DquqT;6Zxpp1pQ++jKxam z#1|n5w_l`|zvQq6Sf7GhiWi3TLb2AlOgBH;f*#9tiiDIZ;~3pDmt%r;LI?V^V^_}j z%;8FbeS>4J-Zf*c>B0tQXO)HrJ%8lo`|z5lZ7;YCkLs~tqZzbz3cR# z)@D=Kv&8OXOE!~jGkcNYwD8kc3XT>B{vS=_0CSP~$XN=EMQ`Lc< zrm%$@nsq$ss-%UZ5e2qJ6uJRohA|ls7Tt$zFX zAs|q_zp^4fy0DH*dwfB>*7Aq39rcOLT&3fhNq#NSnn^Xb!YU5$L?O#R*<+7Qh4VI8 zJdcGlkf{_0MstBBe)~yCVoeVz)6G?^zs!FSvg`#R$?AEa2c|a+$o5JnQ!L*oHKU?K z?q68f&IIJj%J0C=FB0;%ugM-80HxPC}-G zocxj9Z0s86^)TIsD$=J}E_ST+zF1%B#j|Ct{a1&p#vLZ?Gl~L~p*Aa+h@XEab=XC6 zp2_M5Cdyn%8`iNQH8w5fuSK#oW~h@c7OY!9KIE0A!BZ6(kx(oGirJ>4uy0U6pf|dX z9d)oRq3K1t8TZC(#bjkb>b>JCl2(vUF>j=nm7o&K|Hw=*5(dzTLj~i(9+X)MWuKI` zL>tiv!b~Vv~YfxDj*!@w!8l+TGkd9CzJgM$ST!VBTiHnl9}VvD+@Kvug_~F6%88 zdjaznQ;+os^S`|bL00?FMaaGNWn6%UHRS$EuwF3;bXHiCs>U9{dTQL>{`MUQbx%OgY? zvdDZS-?A>ImEoF{++`Ljuw`Zili#_{J(H%t+u5~1QorW$F$R41vkt-dJwpe-TeV?G zD>B;!VAtyN<|p)-E2V8Oe{9EoQ9gGp;nbz)E(Cm-z$};P~axH$GsME~o_YsasDCq%XtnWOUB>k9+h1 zj|zH{k4ebf#v|1Cs++Rt>?bDdm*~lmvjw>y5F(K4#~8W^Ue#GIMxE=+uZ`QStQ1Du zFAs$LcIE7b3b~4i_&RfN^gOccB;lO>k-{X&UzSyWAm7prUl5(l<^-SY=qmn%`^;SL z?el$Tvz2B9>xZ06i6T1yAf!x%^=E)!!>VyI@aX(NE$eVtsklBoI{v|xKuN7LtWCZ` zGDrWy{>oYt4mR83~0J+G&mRx!Ye_;9K zxu>s;rgXdEZ-y!GG42Zbc$1@UK+x{<9n}4Y)5Vp9>W{xy><0EeI=1IgZ&aZXn#Wtj zrJoiP{SV;84lKO3xo83jr%d0l`&q+bZ6th9>AW4@iZH>mxTWThcTHXFN_?mRG5x(r zaxC28sd|lah<<3f<QLIclIBbtEY7C z#t|MUw+4>ut@VcbIFzw*pRHR9iliMTj{?OoSQMOeFf6IUrG@MU zmAWD7L}iHyMM_FsXV+F-s(T(4EZUX;ZDRKoMS7}eiMJ(?SONKnA8H9@?Tsx%h1Dw1 zVQNCBe|h69C!N_9ndgC| z>~44E{e6R4Lz}$*rl0dGlY>vgcuasNgBDH)J#{Qh&uZ=DY*ez-_-1$IpvaWBP%sVu zI(>s&W@l{Zu=DlKmx{fI>|)#FLgewUU&bPd>9XdRO>rY*BD=_%6CAV=1Z_|iJucm< zOBitl5|6dTj@VJ-J2ku61+LvBxhWCcJ>5PRUrHH-36?%Hb0J%!_V-0g=M|T`Lq~Ia}(DkuaLv@MTot; zogCR#2@}eT(G!GS#(hO6496m8PaI{K0;@Y*dgGnSWhI`L?rR~GEzX=PaTzSY7+K@2 zyLF>fv|l)NRW1;1?yDOb+IBc{`#p+-kt z#AqffAd1tUmIFtPmDSQs;F7h5#fDc{8=_0husSt7C9WHwx&`OGr|Jw*OPuvX>y`-t z^R6E3t1R>(7^kuHsDDA4ae36gl4eMo*90tuBl!0{HhI{?mueNVKFBs)<#YuaRdB`W zL78hPUw#=e{gsBglDi*D@MwyNWfNDjO_uli2+Mc)r~Mj#+Q#kT8R*$l0A4Q3CwrFz z#>u+K`mEhoiZt9t)?BWK;Bjd1LXTF2${o8%;kJm_pld@qNMce-1)K4PyEybSWQw+4 zIvgqEuofI7!-iFMGaj^_-Qoug#5PhSZIaJg3o|`5u9x&SHl2`n47e19ws-CH^g5z? zZ$aZ)_&AV~t?;be~M7hwJLNG|Ucl3O|qav3crZBUdHfFz}v)ZMe$# zNWD;bocCvH9#fQvCLxq2F(RV});MDvk<-Fk^Mkpddnc5nEpDi$^mUl_p7BnUtkY2L zTCnEtIOQ1pbtYx0G!b-4e;XT!bT%VTooQiocZ-MMuv0=zQs3@vpQ&x5!ZlG&@l7dH zq|m~XbFyWnP0PcldKRN#nv;&Yq23bn-y0Y8%d%k?c7}TMp+ZB%Rn40ker0hpHBQJe z<;@LGo;#8x)f&e(=Ww;;?Fpfd*7#3gW)NP#RQw`}eFDT3IP7g1uR8aZfm_U)TW&3= z^f-UTZ+&0g?&glnxhL-RA`S9>13hj~QW5D|uBGV4(R;KvG;RAee+DChGn1vJRX=(} zGZ>m7!N;n$`j;cyHwx=GE*l;Ij;?2Q{Ak^Zaf+uzXv|x*ip_g>YI{^*?cra)3Vy9` zg2=BCfxBe<8J903k+Fx4TCDm*Ty^MBYlb?$$iBo$p$Zd9f4rh4j})7`m}}&wn`t2( zXiA@*)hM597k|ou1Dd5^WY zG-;9&BFkYt6#E)@=7GTQ70d>Z5;wjyF?@%?U388y3H|K_hn;^eF-Stcj+VnKFDY=J zDayR{mnM4HK1$ElDuZhJuPP7z=C@maiKG%YW>E(=So%z0O$J9~b-3L${N-6}jW{#~ zLUnIiFu4^!eO*Z-$JOn{45KLtJC*O=Q~-&yKMZ11vo7v(m~cOFr47JIDaV%9zITUr zr6w<#`0kZIgU+}fZUG%A7pq*73q~(Aa7`l>n++yZta)Aj?uEN=9?Dc;p7cAxhsKvW zagOhJ9C13DPG^)SJ&4_Q7$`hpzbAWqy*s3?FhxA~Nqj%N)V=;vsI%N*tx*w%iyDc|6QWXVoDh2qok2HbLkL<=y{1a zvO;U@K!_SZ@TEu>m*FpPa;lB6i&+ua&gNP(T2A^=!@j9%O^M{WuuR~8JZ1y=XmsX?;jxSL$llCV}Vyw`{kO52!Jt}H-69#2)wpQ?8b z@N!ukty6#DgiwWX$IsbO+vKexHA#gY+lK~%hbo?w1NFFYP8_C3Vu?sbv?*jCnruS; zG{Hd?i0Win$FUDp34u9Qe<|&v+Akst8-{iMX^&!#w^Y1aJzQZ@dr(zErfNKm`y?i= zSi|?M;VHaEn)+Q99Y`v|T-|dcCL8ZcQa#vG*6PMJV^34#$DKUO7gyg(B^~lkS0?Q` ziNw0ZD=zqAltUioFb3sN>!(WUFog`@C(>R<=vI59|8fkbEt7)@W#NroFEmNaqhl?# zPAF_Dt89s4^~S@9dBT8H&8SdaBHE>@R00Y!ME{Z|TAZ#lMX&ed$@L2nLX z^iUPN{=0He^Go=#{X)Fey7dEbd%r>ZABWw19ZFucZ?<2*HlxA~XB@4?OeaKg)&loI z?*|Ke(Zhr>SQTZVLEEo;gCOV`;`1Er**Tw)KNL0bvL{?jk_~o;0*drAM3=pFj668f z$RF0us_ub!*WzNwxHBT;sq>3^OHhkQW6Jwm+Rtuvj~M)oW0@n{4be>2b+re^<%9Q* zikP_WS>k>K_3&^czvEV3i4CSIo;CpBWK52eb9l5ew}R@AhnM3~1tHozoIc5cV|_*TAus z?4EOVuw-R+z)}G7D}1Uj{Spa7Yr<2argXh6prBn9jIb;^Q=$~z|GrT9?(TZibmi<$ z_=)eT7-N_DPT#OOut);@DygF7IPhi{9BcuqW!we(2R5N0v4#}OT9Vb~rN57J#O|bO zh0RX_Qg+B|jqrGHMMm2B)G( zwCh}xMP$w$f@*45?uA0wQkMnJ@2_5vMB0p-9^46>KX|6dSM5t6u7>+neS@k^U-YfZ z?1XE}_N^4EY_wpQYi#cCF{K2JrGb@?;u9y$H5~kWmR3GCU0d2-H(p_=6%$>UTs?nJvgvVMHKHwLx|AiFp*%aw0Z^g@1?K;O4cCfbHDjBH_+TJQ+x545BBAPlM9bNan z1FR@kMuKK_W6N7R#6#n{bk_ox9;wPtuCv{JFZ-!t+R51u%oxok4E3*UNvD|iI2#2N zMt;p^W@@}LiEm=+8`|xZ!=DfiBDL_my(iO~#66JRk(v)}PHa)es)fim&L}@W>AH^> z?3Xv4#;J^%N4;;V&bjr^( zF=;!Q@Pg4#D+cT^PHxOhlF6#rd)*fC9KekJ>GD%X-UFMh8X9O--tVMF-#+xkZZVLF zyORo^khnc$ggT>z`k7k$w0x%DLwJS(tXF&NuL0q}a3i|^^~SoRbOW__mD#FYQ5e;4 z2>(hMZ8DAK3!&fWM3uS>9Ww?2MMR%(N{m%e1$^d_mNs8QJE6c#kn4yo?z^SN&;Pu7 z$06^%(8Pp~v$=CKqE+g=l7iUo!eBfhL^xfhP_k=POMVO}up=;X=AfRW{>Dwy?vsDw zPxLH$HT0YmWI`*eg->!n;~oT^n!G?GmDfoB^1W9DhX}JM+;pnoE3i-X)NoR;Z+p|} zODM{T?07pab*8vaLQ$!Bw>x1y69N7_(j6c{ zD}|!O9V+n_GEmO?au{do?Md~l4Q8bZWF3C!-CJ<#Bk(R@t=8ws&4Q3xFUcej&8W(t zf}dbu)By4YRQ2*XZ3eu0`K1XrSY{$v46D5`(3ys$=kWuzyog0NoB8uPKT?^$=SUsg zA_PPmYY%k-zP$OkY#NC_lW4X|p+ z2of$dnIg*dtJ|;G2(vVybFhq?C3C6{zZ@=g(&eR1zf^Mci`fTQ9f96T%n=_hRR~rK z2DL`GPiny+^DsU<2@5UR5&dw)KtO;o(F;^Qs0QYvwAa#L{Jtbn?e*IxwT&~Ok&Q>( zc^5t|{D@#Ds2V?OTo{cThZ)X(UJvqqwKf3RUhFVRLf_}<;OSkpeESMIr5h>(-=R4eD^Oe5~TAWjMXQOwjFHT9Pzs z@i7U05Ej$$Iog_QS{Z%aTdqa7J8^ajw2|mw+U6B8Wyu~rVde@QYbit(3{d?G3L)Tu4C6eFfP5}1Vr91+gzlC+ z&vNIgRq_jY;a{Mgxa*73`lkY%y0i;K|1$!+>Bpa34By!tV(=$Xr#|JF>_xQm%KFvEkLxu(4f8PWEnzshS5VQ{rI^mg#4`w5>5EwIO0_PW8E!i=!*=!n)wItwvB*zx?G zkEIx}kg1giycV1|wp4{Pro zVvN~T*IR;{zf?ZUgFD3_V>otY(13L8xT=sr_OE3?{EyxSjPc5JeZX?D>}_5j1y{#G zr(a%Pw#9{UUa%Tc5EuQw-1vr=%gwu1ilW1f%PB%pjI_q1&H{;$dO;Lm?l$biJ2Z(z zQS7_5%EJmvpBI>D8Aci=^q+9}C}(&(_eAw<&(duQ-_D{-M<8blNLWN-rcNMeY5cBR z`9r06j8l#!S}3o)j%PSrndPaWbZ_6*Stk%xxu6sH1(D_NMtRxpZ$>&9J0mlC-JYb2 z^kx8UE(c(RQkYdFF|SB zb)YOVD8ow1JYZ@-&)W}&eZ~6NaT2Su7$!FInZU?U5=`z^xSM*tS_zL5fi5O~#KyHQ zlVV@np>D?sGTOL)KB?x5(~Q^;v@+{dq|8eTqFJP^16o=~;a@^FVLq+3@v-!a>-#gL znRm|>`bNfBn7g?Sdi@5Z8nd%Im$;8IuD=)<(3P+55Jv2};GBH*>Fh;H9xEwe9&T)-}nm_2mu{LVfV`U@9`zv@*03ni_N8lU%&Z>fzRw zpe=y{s;Ip+MjkWtZy?K9CMJNEj%jcJ3LoaI5K7l$T~QKd_?l1g63*Q z=`mkZCb*@$;dESX72LZRlF^moDS9RtUvAPZ_5$$YsT`3MwNf=;RL+eoeBwqb=(XIs zRIBhgaT1t3L9Vx4tct=WVa;A1>(VH_VZ|$iXAXC$M(l_V-K=0ITX*r*CFwOrAdR~fRk=>+{xhn>)7@I0cFC~$X8TJ>CHRzQ=E^jnX=GHB3jD&%I67yh*W?OI*IvZ;limAIjXXK8~JYc%3^L67?8r*l{78Y z#ep6xT8To!@&q)0czcuSzs6p$a|}GxXW8?m!|5bQ?nle9#sztNh#9QyEJZ7Sd3@b3 zzzMbJh%{y-w`#5!f_#f2R_ZP!>Tq(bpEayn_+kuDcBeX>hQa{VNiseFd0T^#8X{U-z(Gh5-WkCZ46N?mMp)VR9{XXS&* zRLWP1H^=vzto7dhZ{sXwq5A&0ja>o)Z%UHk-Mir4pa=;Z>o^WltmK6-;qcO|=DVui zF!}6AEIwnppD^M`lGTKs?kTGO6du(hn{B^bLnyn~w}EK>0=qFXMk1D5rVG>TWEL-1 zFV{GiuKbMp!Fo|8ac6YYH*)28e;c^h5uG(ms4SXHlOG;j2=6jLMoUED>~T6qfwMi? zBP2kSp{wdWDJ6JnObiqaUBaC~Vb=t1=eDZQAdh|(L8l%Cr+}Q-i@8OBDK;43?pL($&gKdQl^BZY~pt4{VqJPPhK$LMr(97eHE>Q+y}H|UkP4R_`yjR zTTtmOE-$gRK=gLt_TPT@x0#-C#= z{n?B1P^~Es^D6ZT=sS%UHM<1_n*8!Zy$!u5j*u#QR;Y3(Oe%GTx(Rk{f^H%nz6E1^vdfRTkf9hbc#uB`=oGl+3?XnO7fWz;Jq)a^>F~6kkImRz>x%s_XM7FeXJDuu&U zERCtP1~%Z$Q`w#V6UY|2D%K+>(yEsEpXHP9(K~BUv+imCr^&(A;f)VC^z^?x0}i3B z|FMgJz_W<0&@b=+1`7S(r&^$c*G6*7Yr!S7p86OW-r|nU{jM)Hd!dIp`k8GyKB$Jw#Qu(g6Nv z|4f)GR~F`HJe*4alYcmU($jDVyF-{8;wC2;-wO5$v3 z8fGNaVrP-utU<{ACa$P}fDXV{{?3D6aIc+Dejd1PcE&|pu|*R6EE(J_0KP33Fow)r z41-$*llI)YxVAD6HJZcluSNfFuccebTWPjYca{yKRiN0j61439$E|?BS1JB|Ek(Ap zVdZdx#ZIzljJFYcW2bH6<^&l+JCx+9bK+)~4=eEBPtmIU6)J^8=&mGLatpmW~2^A`gCtCX=1UmBo?&_rtLAFA8s;Qf5!#uQpKhJ%a#83lSKRY zpHP?|Uq&z$LEqf}26@~mV9o~$%yW4QyJdd&{WWl7p-`d8c6?3XwCvwF_Tf5aWp%K* z*D(VpW1a}R3<8oVWa}(x>Uorl=+k;f-3N#d|6pyPQOMkv_KO)JzMnIEI4lep>}nK# z27@ynUb_#5%jGXQVgOz(llLWf`;Gahz+zJ!ugi$bV(Z*XeMKHLX4dLMJjIY_Ak z((A=OJ(e@hGLe)6ry+l1VDpjGf5t5+n)QY%FiLc(;2?MMC9~%oJF5D^zF*3BWK5e^S5)@(o-kTL3K&^~K zi|Y$fj)DRUPXJ8VzZZaDMJd7y=A9@)xoE%hUQ4m+rPf$>$}wHJST?sA+XZgH!ssQD z!prA&zuKfje3S{ea|sVY9gXBvCQ0 zO7~~LiN8PGqy6C}i;{8+{^E5V=D=#;hw-iC2P3scuai$!ma$k)OIF?;{q!Hq+B-|D zQEoleO2GB4@Er204GEnY->r zx+roT23E7NZ-vz)gDPkr!U#2h8M|hdMy3`-#q73_BqYmAe2~_o+za3Dl>7!gUd?IC(8Gp}b`tg<&5Ee!WDX?ixM@T-att?Y|Li2hh?Q|zb}V4V z@u}YaMh2;}K4l<>@oNA7&BTY=5_U9!d)MFjM1>rmFb+iG!lw41GjT*vrw8j)MF>AP zeJ4lI%O`Jhf7rWLrgAc5e8gZGyl)*g@pZno_e*e(Bw&d9KY5Psmd8aP=Pg_Yv-Tn;6v@XddW8LN(2_)K*cfH<0gVf~)z-!m)tA=Wo$s!%AOs z{<{A8?~CJyv0;gUAe$8~dHoa%pd=9Iqx zFdiONE)=aG76uL?M&Et?2lv$4*Pj}3dm~?kS;SCDHQ?zVOlfSs7%-&2(x z9Ktf8$YCgz!_az_gkKK^rcgcviX1k z6;qq=sNJ7XqrT1su5fo0NPMfj6vy$Nqjj*f%yWN9iq@!=2FWYQyF z*34z`ZQU7EFt2&TJK4tB1;$ew+`ffH11*91QZlD)G0w@#F27gacl`Muj+j-+FUf3~ zLBnLR3qnbU*)m4Ke|XHUgD~V6vzZpx7HHzm-9>J{rNriA+wx9WG@iORV+|OW75t_6 z1Hm=CjH0o&wr?;OLqWNW-jE($Gf%#o5#fR}rk*^nuRZbQ;#UC4GiH#B*6iNamO4R) zY~hn^Yr4e&`E1RX!|dFtPxDEVxt*mX^rs9=oty^d$Bnc_50~Dz0pphVLQ7f_^!GMS z1vV;r5GD2Q<2SBZ)niQ(R;ON#?8vP1=n;z(UDBKcZeYzmRU)ZaW$j6tn1wyYoEH*4wJxWbxiu+ zJQ7RaMg zU%x_)doOP;(PkMDpX{(0E04-7^CQ=v7poOKQ5pr^-UcC^(H8@(vIc9MP~tx!=_#oF z=8f#da^YIiw!`0;aN#h^s&>T1xRCU+iBv;D{Q>`BTnMxH9nq6t^KdSVog>@VE!>juj`ou5FWA{&Q=y|RibRpju;9Xaza;}v)v=-=R zGPKH1mql0B8I^5Pp3R3t0QhoftR*W@#gNUsjq6esD$Q~&2;pp2vzULX*;{@O_%RY6 z)*8V*04x_71%gxx&8JdBhnl(9fBrM!o{#nYYvGHu1`UjJs4yO@lK(*@-7dCHaqWgC z^v}djQj$szOn$DIt0MR;QLe%vGW}e$BiyST?Ok-skhXl{4;!K#s zm2T^&jlHTwba>V<>v~ZtSSrUEc3hJT4VQrEX&q~a9;Em|q*CB>r^xBJax!2{#QH94 zKqxX!Hj78Q@I9A$#K&%V|21P+7}J9|_hx#@NIbtGazn3Em%wUMjYt=fQf>j3)|@6N zgH>f&p|Q11gZs7y>acJ6dxmJHhK0{c(cQk}EY06z@S1^XgNlgJ;F4L^jWt~jkmG>Q zZ@zIHK>tfDdUa*_jC!=Jnw<0?2E(2m)LwfDc8ybKHo+ELQX>@B4?KE#VF5v*d@)kC zR@5_iJDIWbcH+QQPmN!-$Y1vM2wMnG$`f{Z_AM#*(e6H0@>74A)r_*F2ht_q$=4-D*&JF8u1z)V5M2?b49xGcxGSL=pUWn*uB4j4s{>^B_a6O@$2Z2` z_&$jdM>fhm9dXSS&fj(4Iqh@*bq#H-7rLs#$KidGyTOam>mVc>Q#1o-r0p`ydpc-| zrD!qJQ-q>>0jmCPx{<Z{vE zvlkgTB=;tRH#w@^xJj5A6;jBXPW@CfcbSw)beYMfJf97wpR++@IsOv>vuxpcXt~+4 zo;VY+uk;1uS$Cp!$M{u%&HmR2+7Rl<)9>J|kAt$PAh|AGw68Awr80e#^p>d2RJ6mq z8soYFaCvMT$bcwd9(*4%-)p|Q$A9w;+KWTJJ)84UK9{xxXdrph+azyAacpunY)MY| zKs#wrWNFELuebcU*6h)f!F`;PQm?9wy$cuB;vF<2UWPz_{v?%Sl%3b-?wi(aP6o zf-asp0e8{+oEMva&rW-`V}JN2(Ru?@@niY^DwRFtnv2b80`j2-lmPdd*Q^zt{AjNi zaXyR;jo@a@aY<{kRrg#MnUAR=52#sIuj@|QpMUt_4V^LS+o%GOr0 zuoF_*nEhERr>g1Wz1fFKtqqphj}+jkOJ~9t)cOqmfY(U*uX(=6VOWoe9X1VqI$qH< zQh3b?F?Dn;MbyrL8!)FqrZ}ftzsPy7jyHEmUMMh8VJtxG%HjMuZL>Y;kh~*L3+QqRCH@ zCMz21XM*C3pdT^b2juSt1#h0 zyX}rIR1=$H=K*rDw^N*0x~{=)dchO*vkRdv`NQCI32sqLGqt{u0vMIQYA=t$K3;kK z0H=*-aY{?X!nS4dUmfvvs&a~NOM|tcScEafF6Ot%qH9_OwkEEBdYyY2l^;^AM;J=& z(S!(26Bw^P-v6oZy%yvwwyj?m)dNm6q06LMT|I!Pei|la8*<4(w&iVF3gc``uTcxM zRBQ=CQk+!oAjzbE;D&VL(y(>d@a4}uv%)Obd1CjZgr@ph{9Wre#o07Q{+#^grTsH@J zB+UUnXKXhf$*3du(_%mamu~5^1S1AJj5hT`0H+Lg1^m8TQa_j({+Axot@+D!laN%s zb7b@$Omt7F``(4hU3U3UI7=>H(Ra#IzN9#O4@3^-{Ip8iAou5Be1P)Ti^F;Jx0Vh~ z^ptXo_?j3oj(gXJ)`Mv4QbGviH0*Js}vnk@$6oGmc5*fYv& zOA=BfUPtqWRiu*bHKqixUi+u$RY|jajJs8kR(bzR=av993BBTc z4w7bec?2A5|Ge4jO^?*7-_6N1OZ?FrQeS?uNY1+QiK49oB~hMK0mtEefv{iR7G?J-pj9qn?0aPl>^3Wk6GrWy_ zSMR)%5of~Ggp|!mJW!|J09HNBIbi<~36xSDCI0DaN;7(AB!`#J0MP;h7X%vq4!-7E zJ-k~ctNs=g3_oGJ`)4y@*Kav;C;AEX0b(yyg6Rmj9e0J8&p559Z??EbfE(PYAuTO_ zQcOBtxlIH}Dfch&?2ciO&adf^wT>7Ox9ezse=P2rkqQV0gkvAQ@qDHsPOfGuB%7Sa8~Z95m3uB=8MnF&^TeWR!tMvCi|WMa;-|A7OWZ@8fh>lHXl5W>^5yW z^{ZZd&LC2(12U80y7W7sd}C3MC7YuM?xF&PyB=A%AfAq`pXK~eFUHeXy(?J9bA4GI z{T^|PT)r=;+N6oKAr9}l|3`q`zh)GH=q?4Yt!Vkd_k;?d9r<6Q) z*sQJvjjPxWAwVG5#i-c42yBCO-uE zxl|=aWYD6g1AKEryg7?Z{5Tt|c2>wy0uq!h}kjY_A=^CNKmFv9Ayn#I;lv>HIA-f?xUcF{X^@C^7gYB(MM zXI#@wEXJ|6gyH^wDtCcsgSW@QLzSTLzyI%C4Z81hG4}GstMX4WKMEHM(Qh|vek4Xx z%}p4s!hPg2H7X^Jh^<#87guC!AFp$xPFJA{Jod_eNeZ!dlA3hM-stuPtTrUm%QK;k zEAwl*VRg}XIAC8h_yBR?yGSBdb?10Wj0mzx(Ej;|D^K_+b7lSzxuUtrSRN_qAKUE19_s$n)51)Ps2_c~MKhbq-nCj zIC&`B>6duA7a{ZaYkm@&3o&ztLU4SG%EH?y|j2S_+2F^ zl7S3o;;7)@@_Gs9S&R?32J*&>O4G=WDW2@qv1VKaMc+j2j~$F}Mg-;>JnRaN-&JRD z!Ce)*PaSsNISgdt6`Afc%^iIaSjV=vtD4JUSj&k**n6(6Y4G;Z=COT{q!3s=u|^fY z(Kl3>l|!0EtjUiRd6Gr2q-_#Y=0t+XMvM{?n%}R0n2Us*j7#AISiOZTSXNG_x3A>s#WM<+I$I zxs~<#ZtySR0CXsE{9>X9gP)}irKvud;3mO3TIs8!SdIHS-hZZPg!DH1z>48g_S7m9 zkD6~T^#oF%$+&DwllWFD3W_={39?C84NrxmfD+!qqxo<>G{S{1<0p0^~*ZyA4`<$G?gzB6+r|I6cH49G- z&sv{uk14v@I`1-QC`hDQYxy6+GU3qxqmb&EDrUs~AB95wqhoML^tdy!yuFc~eK_uC zTVfE&z}8YWb7Tki@LLmD5r5;% zkX}$fP%iI|TPe8LrwN(4=I|-tX>ZvxmorCM6kUM^N7~J3AX-S&C83wS@^p+sIniP{ zlWJtA%z1(i<*?qaR3^ENL;^ueG<+&6*Zhlz#fX@Gj zF)|ugiO!t=6(+;ehJ|~2O%PUZ8^!Rre$BdxC4*p%hv6hZa~gsh41Y=^fWL`K59N$lAF+^r9TIIA9s^F*cy148HWV$AGDf^5$MTtqQiV+QEf;58!?zKhiLA zUX%$#yF7uARNjf)8d>+Hi~4J0ft zKFX&Uj6?)g-0%n3OwynkST^M02;xzVv#>S%0BuJ^#%SR}bR+etIiVC8I z5k$LHpe`L-XPQ(J>Jr#()MJ>L)l&kvT=mRxd|rpi9A4G35QB5*ePp`ezd>)2Uara0 z{yGp`&r{V2Bzmp=;W>K1p4EuKP8%XO(o;%{aTgLx5M}UOqmtQRmp+7k{YrI`QMPBA zFi4(n{FB}fD4503xbj(}D)g6KH|l*a?D`$p+$~rS2F2OMZyLKi(;$32^lPlLx7Sd8veaNF#CuGD(hMkeE+>My`duxbQ*si$7> z^r`O{P|C*u+0aJM+E9g~O>VB1kh9(kMc2ZyyS(}i8z|3x?D(vQ1Gk~H0-_?Wf$-Wh zZHQm~!<{WM2r@`{u2^Z0@t@P!sf|pnuH+l+HwYMR`siK5XtfsxkMmcSmKG>Cp{a+E zW%&V}%*7vp#E?(5?B*VX(OI8J8Up1k-#UFKZCw8srA*h)D=pBMIO8^4!M99!V>Lv}r;YzgGfN763C!HF7T=kFczCZrU#KF6 zgm7Pqy9${_0N_ZSH}}_L?R8zg3sN@69P-Qtah)I~p&XMtt5<&`1ES`)CIg8TvJoF+ zUlUkp^PpST_Cj5BhK1y{9Y8$EHzf?pB^piTJ~QPd=?1F~vgTzd*{bNOC<5x5 za9u)tM}JA+{OIwOQZo{vfl3z_x=s3vJ!J>vj8TqS9^J-x@SQ5D`E?m*RBF^T${uBV z4rFP(YV?>|Z)Odui9IQ&l_D47OA48)R5R*$n*S}NT5w@!{nOai zed|C#2&Cj)yGXu&+x(0JR~61s`OVo_L~Ar|Y%Ne85B>p%QJ3!|B;NhL5_eHQREC?p zrmJd6;~LAxfM*L9CBL=?gjC18;0K<8I~|*iyP98Ik8IurldF>QKXHIqU~I=eTJ>Yv=gB>eWJpPQ7!j>LJYTgrAenN!g4*S;A>>1mSiWY+b}Xz z{JJ|Oqm%VX!$R%N$TosjzR@n=5GKlEMYiku>?QDTYS=GxY5~Um?bh4wOzB1cMZM+y zBHKr16t}Og-1RN#E6F{&U=Rl<&DZ>TnS3f>YT|;!))91Y4Z59&wgvatsuRl)T0f|R za-kFbb$I3do4Ws0$@`lt5&U7$+;-Jlbrs;AP1ojtj|R$u0QNxU(r z7$3g`)y!43JVmh&A5=lk7JrOoBXE=Akg`rW^Nz&iVQTrZLsv(B{hFiFLrDYn1=Tlg z{d{#8G^<6={~_+n?D9$u8K7a?+0$ul-3S6+u@TK06PrGVS{D4$Rru`&EoykVSu>wR11_vW6_ zHu`~Xao571l)nb)fuPCd&=h`+^X2o;A~KSGX{1-Z!=+2Eb$w^>gns{+ZQn3QzIV?nbG-*(HR`4~Mzq4L@&8zzjbJ6{lij9PPfJP4x2Zcf;+O zUTaG47Bazc3hJ@1*BW){aP(jZ~dyhQZw7tQ~l$=RBjgB zCVzOn?(rVns!f*f1moxOe#iuXDYD);Mws&7=99E-d8Y;cjuLjKW@G)b)u}khvZK*O z@ahe++v5ASp7K=_g(^=37H@Kn7D(2r3}yIkcWMfZsCq0gZ{{&$?zt-&S5+5~Z1Dh0xfj~KmckTO|=6U`q1t$++Q{E|R8!O&3XPK{ge8^Mx?t@=1 z`q_Y%>HcFqIHw=Mfy}(j9C;nUJdI<=Ur&v1y*<_$C-*pZ!sZQrWev9ZeqZT?=TVtS zt;|wAyR9=)gMirXOMZ9hyWER+W5=6Xvz?A_X-ja-AAM%e*YhypZGIsB>5$;*DB@i@t<))s2e1*KFAvE|;VTPk&3dX0(^c zsIj=GZoh6hCb?Ge@LTUv5-s;F9N3(E^n*)Ft4yf*5D%4stRH)r^?8>aQ5UBKib#fA zOK2&6HoFhkS)md)rT_jA`>LI_$nfQSCqemcxQ)*Tz6xbiZP52nqt~(%l;v{8n|tuI z&w(T7ww1=-Im^MHh*G@!8&)Ca_m*Ft>I z#M&yd;@J2k(~0-DzDA8XZA@p%7KGE#H?_dYR6kLG%f~gVwdfU_b)^rRiEP`mdFS@% zN?ThF92>Ans)UKChGMtv0MgmRQvdS;V>$g)L^3+B4iD%4vPdc${*E7})u z@^?=|{R+E1^>90yxC*?&(@AEw_5|GEImb=cD(`J55d=+4lpWGtqGaD1wWSG)?=v_m zjjj(@i-+@AwPM+DTVG@`Eifq?JK(R&W4)!)6G-b!AeAcp(A+FMTkow(pxzTVb*d^# z>RLPcQesR}*klRbSIdvRx!z<)P);Lv0Gd2DeWZ*%gbu|RDvxO~Z0eM^@oOTMGiMg{mApUkLD+Lp zcBzrrq!ZBG0XC-Hci=6`gdx28-Lc}Os0bj}L z@}~s}7z_sQh_J_Tf{YCvAM1Ue#}_~2#~%l+J0U~hjl$VS4~`0&O;XHv%W_eoh5V6-#Z(P1oiHO$?T8;**c* zbnv|OWmOVqUQI%RL>AGy^3yT}Ca0tpBbP0MZEj$;Gi(U-{)7z89C(7`+Rb{?>0l)% zLg8tWOjmW}Ph`4kntf-sX?1)9{Hh$psKtW^WDu^OdXPe1HE9w79`rR9AO`ae@{V5t zjc%>Aa4F#qktPd-)w*(CVjTD(udPe>0{~B20uD4i*3pCvO&XCvKz+F8vW<#nm*Q)2 zY?5HOV_L8yMX#eT{KM-ayP4M=NxBTEc7dJteDwk$LxoFZ6CF}EgGL;Pt4e~!VS=@}2 zbcd?&RgN6-gO{8kaFB}Vn5(KoZcDq1Mva^%EA!!Q%CQT%`EZw~xbr3$3v_2W+sN1f z2hon1@&;%$J_O7%WC)&3V98zKrdqb35g)X6vXp(bZuXI}4gj|Z+^5#M@`0!O2Rm<3 zQ*2q_NlkGJXn*1dNSFd9!HHkC*vkIWKw$bEuqlrFH&6TFYVd@$$Wf1(bAlQpj$^^;CWr)2yfh*YQv&%%&RW=Vy50r6- zx*BScS6?}P{F?UMmfBhE&{16MF?qdEiZ*R}!JVTHR{kj!PO72|@1UnN zfu0m2Jl^f&`#N;6pp-{N*J<8zE_vgpy1XidEefy1KU97~GD#_IJk^-mU)ormKZT_p zU;Z}bFxk`AhT>pbk?(@(?&!^%eG3%&L(eEMg%IyqTbOBd{=Cn*^_JA=nGy3g!)qsY zjDCx|Hx;M2)@YmHL{FO^mVN5iw4Q7UGDVZHrJ4w%+a?KrLF}= z53Th@57@ZdtQj@JnLKqH)%opU*(2z{tHg25`wDO6P1h2AWkv6NsXn7w?M5X(4|&t{ zyz`xMWg6pWbpMBbX22<8uhU#|r(d3y(G3_bpG<$-9tQUx)kw zJklhu$FDrTfYJ_aE^KeNCkiX`YsPP#?jO%vAy;PHb0SC>Z{Tb_l>R9935}G#@ONsj zrH@ogm-;fHd;65nVbHo%58w$GvajWG8|;V6nWuH83{Rig?zfR;mXyl;^bCCK6X@~l&0$>aZsq3D3=B3|b1Mg2c{s0VQ*FP??5VnfPh!Vm+SarwcN>g%i*^>W=k(LP_2g4J zf+=~Bg~V3{1Jje|^xS%xcMACn#TqY{gh~! zw3j5)7jdDutdw-pJIHlBDGOtufaMR7#7~^Nh`23a^G<6?2dNM(3l$N7FdSGp#4`v(n+^6^}?WKMJ(EMv`Z6%_-}boPv+XDLoygBkF-EYuC2%^|n1aaKze)WjRS5 z8DiF3iR6JJT>W>=4p`kc*K}mx;~^v=VskcQm&G*~%@=s*F5<+vDs33$aLsbh+Wdia z#lugZHxv#V)2=f*4qH^6oEWcYz&y0H!0a(87}MDR7<{Bw(MPC0?rB|QJS3-JRY!8m z8Ef!0-(^!*?|oU)wFfhkE&Z`K9$4Zm&OviGI{pB3M^9Gw?y^kS+OE>dLyb!Q0@yMv zteMvQ$+PMBuBZdF>32$gmKPY9XjWLg%$A_6F7@_t$Hz1a4U_$Q1+Eqb4w@sHnR~)| z1DBEAH}Is_()k*`7<+?F38)i0gugGI$ppOM%R$h5<1OqSOxKyP_~&aK&to6lVV-rM zJy=UPLb}FsJhb@KYBEl+74SEK>*@IB;Y&i~qn@Wvfbsp{pYQpwL-XP-0!FYeMYlIH zNYGwSkmm(8yQh!Jx@7qUj+aPa(6oyK{LR5o(m|Qk_S~7bxc_il=@UPON2u^~+GV2m zO#fG}*$i+aahh%m4JZ0>?PDkK>17{{u3Vh}&H35`NZl#@RFcJ}V^vF^&m8`N+~@-Q z2zPX@@kaO=-=O%703q_(MO9VCzWssF75f{LT~;FGh;T!Q!m_UCYgK!46V~i@EO2`+ zdeM^zvbjWbiirVo$77TCE!s^Z7B<7oDy7`V$ru`VQ9@FXqTR|oTOahQ{f#%-6}r*N zzy5-N%*?=Bzl`+0VSmAOCeup+oPw=-71%p@1b#~Q5a1$3capd_>K~x7eVsrR`gnc= z{PMO=$`W1K*z@1A{+oq<@Z5ucD_@-cc+whc8uHVa_zZD#mSz6>UxBr%G z-n?xS@9hYQdxkws)7kaZ`s;Nr=nok87JyzXaJ{L)s3ahwZRt zs|sD*1_(|#{X>IE`C~&!a?hpGq3>Vh+87u^FZeTWtHVvFtqVb;%)qCE%}l{Q>=kC4x4~8+SAQyBAA1}9q2K)X_>Bkk zZ4WX>?G@Cs7e-XTtI@XYTxJJOr(G+;0+jqnx*6MAc@OTcbr@j6nbaa$ut6uvuSiok zQ8BxidkVEjZC$dwdC;0IlX`xQqbW~(hZDO=@Pd>;0I;&n={}dUnH9DdIio;Xkj+{G z4er(bRNDe;@o1dgPzB-kW~~g$3p~b(9&S-udEtsQ?#?zgWn4FkSFSVH2a$L=NZN9v zK&hu$E6zFS^wb;s1<nY{{#0N&!dun zc|n!xbd4smmhK#^C8(w)(a?}>C1Gu`QOZ!%$6u=MX(Z1`{!zMWk8mbM z^x9-FleEGHZ`Sx zeB4Ya`5QzWr*8`OByGs1xEfq-nZ0rW0encqB&FW)Lfj(cVsJN*1FZ_$qE3A60s+Uf zgjew-=*|I6JK1aQAp0E2RPH}@>Mq;1!gW{6!ys-V4a0TxY?lYd?_qR_2$EqWe`MvU zlY2~*;z=za(?l8Jp!NA~(t~Q~#tV$jXhBL_@HpmJgHC)pDG0W(15i*MzKTDCe;jyO zYyV19Kv8I~ysb5<6_<5uxcvdQ2){$h+LdoA49ZWZ5GlXL7&|BrgoYlax|DrC+44I#c{PDYqu?BW(f)!``({RgiEIr!k zEM^{=FWeitSFVyVV|XTQyW;9kEp!35lagdVZQFsyW-{koM-B-pELXO4P7AWgGfrSl z`Q!}VU$a%&(-kZT%QNr8X`pf_4{X%h4#fp$e~Y8C5Qg&?OiLbJ3tSeIC$xo_NO^sl z(<)o`%k;tfqu$-Em`)X&Ox$DDNs{j9q=}x9U~=Kh?EXyj$Q!mGNsS6swSjH|RdjVD!rNOsNr za;RO2*{UE*DoH5gJAo_x!?H{ATu$#)yU5DhSbHQkW9`u%^2XKcHqMnChHh2zpCmL$sl=WuxnX?G zTlbO6Y3EZvdbsMj$8X2K(;gq+HI>xgJYxBfa@II_#k%#Mt+;KRJu&S&y5^T5m-DOM zNe73Yg_Kmf-{33wdWD1oTG!Ynok~g?-Y@iWE({YgwRjCLH@^(xYkf#4DXZ?xA0P5u zKfC8P^D`>-jxN^&C7=_Z&KF^4Ov;C^547$^ZQ90+{Z8qT@!1>*+q7AWX57TBX>LpR z$}L}!4xlmh$g`Bk{3xg|$i*`;IHgo$&Ey&FZmYSiafeG=dQ<$!uacd7_8I^>iP6^4 zmHW#TCW>?gC}X|jn4fHp#rS8CvCW9J~w;D0x%iaLNt61U47Tb`6sahP-! z)l1h*2{OF~lFenes;L3v`4TqM)2oB*t+XP8-8-PPUtE+ttMIY+kPhfc*Jw=)Hr@xB zlf7#>?OBoeDOc0wrD;cFm#stE z_FY7$B>ma%M8q~M-E9_O@|OW41H9XlaJ;6H0J$-~A2_;oQtuYQ*qgF>Bkk~ug_=o6 z`=$( z?Vv}yZe36T?~rXcQ@@t7Ahf4<{63Gh&na#Ie6d4#^#HS(%tE40W*;XkupLb2BAB;8 z{mpgT_C9m#tv<~vw=PRQ>{7p#no=P@hEt;zjj8Xr?xnh%j-fH{TBm2f!e<>^Y(`6v zEb(1SP;f0Xb8jEoXBn_|kh_DCGEz^-@2Ma>s(OCsQ@?9^D ztw;tyH&?}=fND((CbQN`3;OIn3T!^J*^ntX*4%YZ9uf3o_yGaV0lQE?{#VKYjalg^ zg2o7StYu$IB9S*VYH=xOUx|%k-{$wZ6*;skH&bP zET}wK{v$tt$k1ANjoDy@d`& zuV+7eNR9`0VmnH2JuXsE-iJ0nHy#0;r63Idl6#Y6-iTjuV6lzAjeCYm=5mrnh3$aL zP+CxF{xvhPE3GFdX)A(VrSU^tlUkt7x~F;%H4+E(-}5b|pu?cV!z_r1w_enUo!P~d zfvf*GhQ0A7|4E_xAKQ$9fXcOI`ii4?=3ZS=MMq-#%r4{>P8dEiz5>2wP{rSj{XT1} zoX5{8MBem=GP8+a%|IV^6faPjzx5tg^ZU{WOUlAeEv+`tgs83L>OV{J)b&4FINyDs zqVTZhTIsV#fhLQ$IO<$t$|QWFy6pRl=be$?7jV;lC^=m-+HDkl;{J;@)_a_%x~n`WL?Qpf4Xsx26?+V-u$T_)iZIzi{z7#Tlj6lQTMcC zgeIRZ&1Y_J`s3JDMtY0Os%gGm?1fox`YUm_)j610U!#-uEg0#RI){Q>=LSt^qY)pM zlUh?|TN8$K%rNH}IaXb?PPLkTeo!+4xxpo`Y3QXw)ee&lP&QoH&9kbP~p9A8#CM@6qk>pTx-%2gSwUaE(luFUne_6Tau`)Jwc>R zksbfI@3p84YDKTJa2kx)mK5hzkt1(Q;cm6=|tjA|1?_@JwHu?5W$Yri( z8bo(EtG#^-tZ~6+btcsNf=%sn|Ig*a#BcJs`ze zL2o}Hk*NA`k0g6Rh{7cwX=H?!`}7^@+bc~Hc{0Db^<*@7UdEoWwM-0A$aL{hglC9*Pg~g3ao3Prxckwj&7D&GHL0ijkk#VpVsAqVsb+Mi{FV?l6XB+M>LDp z(xd5|iKzAqqK8&7I`yqfQaYdJ50FFhW5R~)!*~^GiJhFWN=bHpf~n#+w`(8@?^#6s z-3m0q?&yZD>)|>qhODD|bXA-T-rZxn=Dv3fg+k-sXnjuQ=C!=TMvYxA(riwVI!?v^ zdxD{vB|aqXl8?P*-aV$H^skk~cmp#J3DB{aX<(U z!&HN*-D8HQH#Cs~hd5=2BOp}DmYlMl%8`bP9j-o>f_#ZARB~<%6elh62F9cx=_I;M ztLb%V{NS5_{oDd{DU77cbPvBj8v)mbNH#8PcX+W=YKKJr@an$H(iAVX*L7>w*exTh zv#}(qdNt|hur}KwqbmeZuKi`s*fBeICGeJn$(w#t5u+e?#m}L&7@bI4{}Z_bawJ!k zef6F$t9M=_O1jjxpVjb+XrOsVU{7dAl4-mm-{sD+hMKr1>Z{+K-tdky5r1k!)6wYH z;i`$my!BZ^HiwC)?6G$1sf?#p`=T50*}5VWy;VoF)kc{4W?dolhB)5i6ge$YFv4gW zRu*rK)IDP(AE{d}XLJSC*pw-7!n9+9&hX7ur$zCQo;|JHv@+MBcL^Tgh)52HMq!NT zyg<+#oH7_87LQkmR?4ZmZ*VMTute4kk$1&ZbSG~UIcer^;*%4x3O$Z*sgp`+|w78e?et}D>*Q#?7XxxTp= z_G2sgb?ETkKDI|^@#2D`snW;O)!Q$fZV!SquN%e4Up`&pY1rUZZ$cGV+^`^6Xbn|s zu{^y`6ngEIzD&=oUjA#bj5erQX-OZim##*sP$?Qo$#VQ>gU@g~p;2P4@h$v|aJTA; zalmVslB?rSind7C^TE~&?2<9;^3HSM{$bi%bZUqG6jMa8YxKC^m*jNZ{bVh-64LlF zHiovg(Xx?6sWJME;O_Cp5bq^C(#K{6y^^`)vuJO!6m7#^=hNuBJnn=~Zyl0f$6aYM zRjKQD@H1vz8c`;Vr@Xti+afbpW}BX1f5j}Vh^p8_@ymnKjZh7}Z#AB8oKoirLI1b3 zZ|ij{S6h65tqi_K8D?Bh^F=s#87aqhp|?E@&8OMn?gaCGrPB<4)ibvqZJiv<=Adco znj?$@9;RL<)O}hKs_fiU_RXZ;^v-jMw7%yjrb&sJmit}Qix(s{7P?SW!quM!#X5yr z)qAhZ(#8veQeL^&plz3*f)vdZ(>H1{yBr#ynXXJv{WGjEd#2V%cWSiVQ5#qA3B@wT z;;}-XkN(@}ZP_=B${tFGH0bqZ9Tl%62ByF#Tr_lKq9mxdg#sA(>Z zbv^yh5QRQ5#|Ac4p))uLF}$POn~XiI^d^i!)v)NH?#h8!x4dyl-!n3wK8iAL(OZ9ab!`c-XX}dvtt!oV4rB zQ@@16Qih~=4S2$-J~4o2#5PA{>V6rwpqaqMwIJrWc_>OZ)Gq9ndsb@5=lXiBHa=qh zRuyX+54m3jp(X5nB5d~rIxAe68ecJ)S|#H?-FZlIg$7FXfQuNuJ`^@()t`!JTpN*A zU*S!%J=SIw&y2s_;1&U*Se@3J^DFfSq#G^WpLU#ak5YD7NDqpK!kz6o3BHLJB5Mmn zec1-icMUZ|@;!SKkiI3sQnjF8a@;s8X)Wr?$#{Ek zw|A%0)tjhAT9FlkUX7w;2ek%OJ(22F?y;4cTp1_V_xhUSGL=g-aoeOiG_8rMm0%HA zco8gJ8nlQ-H4gP^zNB#D#jKyYq*`V*4L-&$!%AOYnO{@+u(SKjZrqg|;df@Ad70tbOiR2sST2%@1A=f<<1@Sv`V#ve4QVeEm%M zd4L4s_%n(jJ}FU#0eG}ctV6!Bi{>U-XxtN(pUE2-+**5)=-OW|(v{O6APIRK8_RUe zZ&OVay@C6S3l5}8m$wl-dn-G(gu9TvrzWAX$d!@kaT=RW+f>tW*fzQ=PRuoF17KQ# zMV3$YX9S)h*}knk|MOP`ZgoewY-?VdI_757SceIBCobQRzTUVnv918k={Jh4cv?GNCVX;LZl=KFfz?bXnXjWLvM zO(PoG8fI^EoeXp|adVsME+P)1*TZOmz(Mk2w-QoLDLQp{1!tJ9Y&KDJGO+pKExi?V zThzDNU7+qyvw_h;&@5uw_C1u&So=-wFZ6x(*x!BENq4s5@-2vDidKDbg`kI8C8Bkk zbXA>>FgM$IRcppr@rL*}d!xNWUu6m$_#p6X&q|Dz!QafOzhu|Z2t8`b+Rk!Cg(EqE zj%qe-_4k?KPlyt>3~BiXdp3Yx05pe6Iq8N2PpQWZ;5UI6XLd`P2>)Wj>R%XSlGth)?mN=HxyB)qEVcD*t?^tkG%BXP=lk{ z2B=F<@S^aTF_K+6=0lj+DczKIVp;|9{Mk%0jR;KpQ$_@`$p=oed&NZ|xOzg<&~w6& z9bsa7BKgpvLySBB`p~Q<$jCeK#*M+#|FU3rhZ<@&xNY8?mm$vI{uMJlmJ#k=#-~EU zScb-`Rc&K^Q}Bjz#!R69nqcCJ83+A?e?YS}j4vj3R0(%Kd?|4Cs=L-l{@QrHupLHgzh4YI(>?EhS)9;r zo*_OJ_ii+b@{V;Zw#v{q5m@#K-B-7_x}yn|L6GoH!ApFU>*A3 zg|mMf5A1BtAj;_bmT^LG1HVhyI)r|Hr=cpV%YxY2!4H3I8!9 z{0D-8{;(_h@52E2Q2Oj9`@bsod8tFQdHDaBhW~$r0SMlV{`bW`FZD0?fB$V5fIdG+ z{Xc*K2tM%m>dyGTV~^1PDf%X@fWZ0n|AE-&r4D^rYy1B$_I&;6eAOkqN;yzwLHI$x z7>Wx?nuu1=F#!&^z5cS~K-Wu{8zml8hn%9Oz9`L&?eqQyF?j#4M+>JQj+xflMIr7n z0z0a7B3#94{Z?6{cxs>w5+q`_E(~$+3(9@+w{(V}39Q$SC5Wz~Ndb1naJUhyxxrs0 zrMspnB0*W-mQ@I!_xWYP`-)U?F_;KMh;{T|mZzdhMDOFZHbRR+RAM&!QKdfPs)emv zdw4UV|K%o8o77dog=00$e;``-fSSWLxK4KT%R1SXkxRpf(We6|+`$&zPQIYE-;^`* zN}lih4MLl(jfXUfZnr>#M`yLq)LvnK@NF!v9qk(ckcnCUW&Kc9ol< z)ZRZX5j+}(QC}F6Yi3^j3ASqx7QBvzggMiJ z9;&ViQts4}81gDaxv&7xN)&}5eHT4Yg_z)rzTLsCXWVt6qImG@=PpZlW!GWOi~(n{ zQp;wW8sb)STfBJs!rkePi09t5Q`xS=jRL!4HQ)&=yA%sIA4Pr^4LzDco}Rp076hcr~J`Rbn z!grY(xQ%ky9}yw<0=dH#L^A$9r~ZrvH+D}5M`kg?`*cgrv0lHnBF#|abh5M0q6bTX z?RW><}mU-k6)=bSBhTL%4C{#?N9({8|AK{)ZvV)Ja9DRjckAMUnrR6z$4*G<#^S zQic{KCnbe}Ka&Y>a6>$|WQ^Y&+q`+R*EB&mJcZ}32j&rO0n^M3v*1fQs!7f2(vOek z(Q3af2EVCp0yV^tF3#X|Fr>}qfzg`}r-Ev(?9*64xVrdhEb^3w_o>;VwH)f?fTq_k zD)1!g@wA|cV7-F~1Q)zn$(*tQ)wn)qk{_#Clk=A|$FKHT1(uRJqA(2jb?sXX{!xe; zC*C3d69GLBTf*B9|9Zjb3#v0w9VB^cnr%2^kXIRROsAAh@HqBDsTrjA6_Y$JE-*|b|b>h z>={@sbfenyj}wa*;}r#yKJ7&>4UOcqEkGpbOY`BSCUiDBEk(4Ry-bIH4FnuFFW`KC zF7-*$Q}N6GtkgmUVozK0K^;%~Se6wa@&U}3Hn&j7PRfcf)}4B{23CxZY+?t( z?rMuER-<4^p$ z57GZN(O)%gbFiK?i~z$`c*276-^`$QwZP7bZ(E@3KZ)807Ii&rH113>l5bgncpZ8A zcQSJkOl~L!>D%D65Ye9^X4oGvd~%-QjH6ey91i}uS zA;NzWX#t^L&9B?qUu-~IZNVgdTg=>bC$_Vv5D4%e!kt)YcxFv6@E7d9(oKkU=`i@@ zm4LNd&8_|QBI!u}z(&9-{mqC-Xs@5#Yd|L#!Es{VhcTk@--}gUKmH z?9Dkmc_6LHw$6J2|LJtDhXlg)gV-bUe+84*tKRQKbjN_c&P4W9)r%=pz%0}rX~Dnk zFc&3sK`H};q(;tK%2VoGgpeO8w8WBj1*E~+YwLrJ;j-7FkY+^}7Q`yW>P!m9rNPH1 zB+637+_?i*;^$e>yx#?8V64YdS0ac?4eo$2w_dCio-d-Cju{CRy@K!(aTF0_V0z3p zRwxoxi8956PUXu?C?4S*0#QX_&jiQYW zwo^@_i3|}J5|q9uH3!__fLU+6Ge_Cu{mTq|@MO5yJ;Ij29(GNqL|)*q4`Fwieid0O z-?K6Wjv0NOCK@04lA4HwN^rD{+^8g_Z|ml6Da5<_38vW)~KfQREZLKF5L{}Czcnh)#QQkJu zC!i5I;NVgxv3>W_x{5M0I7qeGysh=0hlKq_DE1q%+Ltc_w0EC!*Dc~4s_Jjn239Ol_Uw0js3ue-9^fnV?RFXNEAbMVz3msECxYvZC z&?d$O*f+o9_B7idEuSw%Fg|DoGv#w)(=-z&fi^Yjfh*Q(mOHzH_a*|0MUxG#&eC-+ zyx6@Zo2&x1k#kPN64yEfsLvbWM~*mZz<$#4#2NV$0JO)LWnHf%>I^^T-OF-aMn=mc z$}>Tl(E~m4AGTF?SwKz+a(4*^=bcm&jiJ(W%L7U}x43nJDFgGMp-Eu(T-VFe4upx( zXg0(>ngV?H)^M=L`&jw93M?~!B*3QZ9y7n=Iwgd^ zx}YzAlU2!R0BY>=wAN1V&&PxM?`H&7#)U!Aq z=-@NU>*ujUJiGUu#NAaZcOi-T zb91s5kKehJpr96AwFu;ClRb?+P%ZO4FgczcN$}#D83zMM{HnF4ptmNO#THJ|C}EKt z_LcQ@bN(VG!GM0ybiBw301vzvM8=zy`98N2>R?0F=m}(KVkn2nAKjL-+0t@JXvC>OaDWaK8Ku9 z7~I{8=LTHJe%Y z$BD)sJhu%VT^h-TtxyL`qWfN0xwymsd0BuyEz)+X1Os`hMlQX$eJ({46M+)0b_!!_ zdKVz{I8Jx=^V?P{-)0ePB;5v#Ll3FQ`Gr7NFDOU3BRHc0tP=Fqju>*r&( zn2z@y>9XA@9Z*a*=lkJ+4V~BHt<0Y=zjULH`*59&D&ypHBl2`m&>mXYJ$e7^vS{W4 zH5iS+`=g*1D*mbe$z536Hv+mT&HVL?JVroA36Ec|okBq}_#Vyyr3nXLXlxu*b!VbI zw?=Yw>@I#G%yn%Oj?r>pKQJ)h#Xig@Y6DZIvKa)AGd5~qdfg{CwP>M*G05OL?v?d5 zvt|hEAN(+W&foN7KiwVixTy~w@(p`A<0lwc|xv#G@kmL+-V#re!y zJQhfBbVh>iDTB5pDP#ihUzO?2ra5%(ONr82lT=n! zSBmFO;XUKRB)DTC>#P5WCU(!;6r%tj?XT10PiyArSgYtYFx%?^cu0Xe2b%zqXqbqT zNVY7VT^9Wqvjwsu$-OT65>HZR{36{oL}8l19R{w^g3OrImRe|Bj!kii7B z-B!wZK7$t%0I=Gm2*c|Bu$1AlU^T2`mDlr5!CvyU=vr1S5F!Pv$A-kSk;6`Pw?DzS zJvjfR7UX8MkcEOH7;r`=Unx^fkyH%ejDpl*-E5D z=BrC|--|03H!ITW@3HauNBL<*Le&1NU;0&pwHWDf1E3Ab1_bz^ByyI$76e#HV!kr3 zc4?4Vmc|>TO(FXPLz$;Z3M!E7>jz(I#Ct{~Zuqi!;V_>YvgC_oVP_t}Wg86Au65DcXaS#SQ3pj&xlp*6y^5&PjYhJ|lc+Fw z)brZSnIoJJ?}UW?^V@Q<96-ttKD&a&_s@B)-xMg+ahQ?w7PBaV^`*1>8k>(H;|wXad2 z$;9hRJI_}n=3L~N*hR`w#c;9#TSW@_S*p2;o^ln_rQBTF3e7mV^By_aW9T%AoCeY$ zcDRtg|KOKOF@k1R)7T6wv=?KTHJdja|1qaDwZ{HRGfE7XSfkjhQx!vBr7%mNuD1g% z+Kx4LL3ueL^~s^n`o{d#QA!^B0HCA!dWpN~(tR9%#D@8bj(8#U&`<9D;-KdtyK=gJ zjNO-iNg0fQfLXfk`dvH88G`zQ!?sj;@BU7{Yloto$+l&akrc2}tdW0$|L+9&=Hk z3F82bI@U*L&be-SEYe4i0~PVYjiT5U$7LZa&Mc*`1@b2Vd#d=yE$X5>!t@)t?{)eL z17M-(aY_?vdatano!|e>d0FsG6s{G!7C9A!>mWtiG+==FV@?&U5$;`hT8aAk?cJO~ zjLaCsnwc2a7-qsB(j=#+d;SrjGYM>_MZ+M4fFKNrz#{)a%!%ZPj5sEXDX1Ybb|A!)>Ms#E2@xzgu z^jeGVQbIDie`me}jH-Oj=$u04`OM!TUqGL_sGP6rPD<>3|64Vgbs;{G9qO zv^LvG8PKdP{fVj?6NA2)2|hjF9yM#O=_3yQqn=cIkh5#HlSe$((w+QwnJ>4BunGg7 zuptI6gmi+P2UPGVsWwWwC2~X8FcOL>M3hhN;4MLwdA#jstT_j`w3(G$=7)GPEnsM1 zdP1Koo3EHZ(9hPA&Hha&{EGEISPKsQl5_GT5$9~_)F0SVpsNE>J~rn{89N$WP*7WJ zn~%^0x^$~<#N#a8sr5_C1d3}&IIiLSYBJvtKg7;kGe_)bZRw#F@Qq`)npv+tD>E2A z&ZXwX$(N)?dh1v@^4HsZ%}tbRR*guTU>Ie@8q(&3fu{kSn)j z5pyzu-{{wlc)X)C1HLAECE*2`G0d7EF0LO!E{=>+!SZNA&Pw|lO`L27e7j+TO4Og-k*XsU6 zm6zF5ypej)0aROFr*uxl)&wFD{agp+=q0L2i`UMLQ{EAwl6_97ud%G|xVx=BoK@A} z&hw*^y%2UmG3YBqNI&85L68wyNz6*%Bv%ZP!Fh3jTce0j(>~@`$rUif50xMJbUqc#c%_ogZ?;*+5q4Y}wB8SozDqEM(ZUZ2G!i=>7ZuVk8g#YA%5l6qJ;3=?Fz%}eQ5Too<25nHhJiw{Y5`(s2ZW2)@8y!Gik5m5gKySZ z9h}w8PJh^3sF40FLcIP>h*6buxl(u6WmojrO!}S#-?>hUZMKrrrZE`f^`5U1S5tv{ zL!s+AZ@T?PnbYq}ujq3@I1ZdsO^?9X26DvdPiwI^mF!N8m`>?^2>g-v-Qrg>3jd^U zuBoeEBE*Ev$e%q#6fx24q0W0mp8TrydS<`<_(Z+ghj@4uK^UW-QHO1#lZS;|qNI^K z2&bj=S^e!2OQmY~wuoCZ+8~MpbII#7Qy$tme-Q)F8YRC3Pn z37o!+2yzre65gs>pu#y8hjR!o6;5sTDl{2htPVbXRX!Fsi>75m;ri8rN(*qwUaxWF zb+It%tD<5(R?qB9^IvsI^Kdvalocp8o3UV1x&`@uhdS=2ReFqXG7DgTQSdB2oP&^M znCVKF{DFydB66@64g>&JuL?6^aQFfnx{C>FD7G=(C#@5qy4j66T$;=y`<`xo-|7`k z%)U{O%yA0l=j+D%p&lHEbW0Al~$8FiNj zf)pr{W0R|xKQ%&@*yP$-J>rqv$E1EGL?O&79r94j>2b>^FSbd)E~ziOS;K zPo}_?z3iA-7j7YoQxCn|xHc(GTEmD(S06KY7xa~wjIc7Ww1lQ!bqP8)IoeyKB?)8f z>v9~e)2vE}h7lmjBeJvSh}MbYiPjTk_G;j6)JeRI1m#rl_*YUAgh%YgJw#=#fj(p`apL?+x^iz}YcKiQ57W0h=O?qj)+6a^z*pWAVDjxC5!%?puzd4vw>}X$9oD%5hhf# z0{%Z1vsnl0J%}I;UPmpdn?NdCI)(%mkZ-jJa1`(*N6t0L{(gSoexrG90ufHZ=Objx ztLW0EbQBWU(DVc|R6@hOFQBN=Yh%Dy;xFQXLUawItELg(R&RRjnX)}+Hy|}1&x@u% zC4$J-X7RE%=ymT_JS}hN&vFP^d`(g+3 zz#t>(14A8TH;5veS-2@8$$}JnSH~t%67N@QRG#J}q+a!^xO%J`IBonNofg#Zx=PEY ztTpgc!S_4H{ozdzqCk0$2NsBOyV*;%)i&w|PuSV30Wy1Y<#Z0d=>8%VM!f#5Bzj09 z|HV*I(@YfpoD4Kz2eC}4%Ud|Gt$6EXMq91^`f|>~?yVr*$xyJZ18EQ9f!k~(voZ$g zDXK%i$d+jdO13}W)mQxS&*28KKLgG}5#@oiX=C>!Do=Y7+RI*4vKt6QDBdLXg3;|? z9bK3A!Yw5e-cYp1_q>tvY|w**I&7_5bz8)zfdO8TqDX|7QO9uoo1#+uh6NHL*k zh!;t^C&D&o6SMejH;IL7s!x28{?`&zOK51ZfA zbq5B_?+Hb|^cre^vy22wiE_gU`g49F9yzz~Egw61pTeQ$s5LkB0?*L^8p>bI`u*>A zXAgpw3M}y)QqC;cJsN#I>$4LSUibM{o5U#o4^ez z{E5o-{j}5Vy)w;w`ga@p{Uu<>ddUu?k)-UIUHKI!uTmHizKFVFam;V!3tWKKl6h!r ztxR-`{S_Mh{>WEs4IVRJt8i`}3`=A)N^L-4%M$OU^RdKAZQjJ8zbqOQFk$FR2XZG; zShX;MX~_nh%9bXd+)4am6DMY|;D=e)9FJiX63MK3A7SJS)^!`mw?u$M)ar{w6dnd4 z<}|(EQVeY=!;vC2Hn(^;Tzb%w-K#)>hklvEif8;Z62y&EVil|Q{}FZ_P)(kD-`Z;L z)uOEmC^BxfifoZ3yAGs+fPe%DBWf5z*kKsftF_2Q1Vl#IRFGvzB7uMqNUX{VOI9K? zC?-Kdh!6vW`Mp7~?Y-Vlj>mKK`1*|h{{8;X^IRFx(Uq7;=QMxLpNYQNtloc@Sw|OE zTmXAfQOy8m7nO8nC(;ouU;I)`6p%ASpurLeXD}cWl{0>`&iTyetWGrIr_$f|WJV&T zJ%WU5FD|689e#)54ue|>{QrB2;n7F3{n=428?t+;M(_UbASN0I{P{GLJxmmkIdwsg z^;dx)<;TvrBmYZkz$dX`xUJI@Ly)Thv^sLv!6<(Pnq-jV4u|MNnP}^ z52s%g+Q5%HJ1ETSm$l^SDWKG#pAq;cc|Yyf0<&kJb*UDYS|`1;T$P^sB|$&!|KP@B zt+hvhpX_B&Tfu1T;DS^7Uu*kwX(Cky>%hWhlo~zlW0fADSBnFq1@NE9$@=16{<@Lh z;PT`n3a$7?xQ~E?#K{I{r!Pv{ejP`tkHr*$3Fg>`AYYZwc^=U~Hza^f$4YE39ydkp zri;LxHtC%?7C5ypuWP)fVdh)Z8tpHM#h6b}0_sa%#96E;kozw9!$}^%s6+C>eLP7@ zL9~Oquk!z4USrs^;D>GZ>;6t3y+w3Aj6)T{qwt&YDTvN5xsS{H|8yTj zob(jnKSG^(+Ssba{!-{Ye)m>Gcl0Pm6lj24aI`ee7e^bLU6~ag#51Fye|2+D9BSu4 z)nC_q;4h%z-&J3gAzIbE7nr8$FP?1PDyc@#`=Ws|v!Vj|BlV`60_c$5?OeZ?)Ac_E z0KyvU(D>MFY7?>NY5M#%7X`6EFw*D-t$b0nobyDs%wH`Bt#iRTahq$N^Q|vhCwhDx zA^>se)Ok-AK*;3lxVFtaZA(GC{F3m-fBV|&F6YBy8{swleOW;#B@_rVy08`PI8%oJ++xY7L`zXk8gd(h|mltW} zVnm{dS1|qGo&?wk+UP%Bq!ld<7UoaR9S5-(PWKo0gegknHF?bhT)uY%HVNDxNZ_A@9CqH~}-!BMrjP(by0V zz3}Dte>8a{eyd84BZ41pM+5&+bciJINdN&e9=+WRzEQcp&RRPBW?NX0FNiij_+H_cMwBQ&2GJMf=&cZ@s3b}J_I5I-_lvv#W*vK8 z#VCE-JA>Ah*l&rm{^I7x&#dR}^R6I~1T-5*t+jISZ?9iIS!?-4WmathxBn=wp>9?L z?t+C~Gn3PA-(~tq{jIGc0DNaJg~N0>^Rb*-6pgBaUv^YcHsuaQ=G6P+7N8DhCMO4t{QfkJqmS z0&I$RnHDw;)-~8D;=Q)~%nAC)oSw{G&!}WEBA?BX26j4I)JA_s?|!Z!f!GeOEq7_i zpSk}e#>b`?d<+eQ{%kg&8O+j5CDz_kM2RJ(iAcOvkj{g(g2GEhe2&b?xs>&a;8m(5 zg5eTlDqFf}SHXf@RR0;IY!uX!R0UrY(4Q7G>6Ew)hjV`Z8Fw`HP@gw7<G)28W>#U z$jwRxK!vsc^S{*z4^{7hL_kGw}44(-|*oag5zND9(((%#vD1gVT{A%fp0m3-Mwmy-HI;623PCuaiuN!2goayrvHP9Ndh4uz9ftz8k~Mb_(Z zE-9#>*6YN;GQVLybb6E_oIKWLm7%n@vd$cUY?+<6>;B%uFn@I!qJKJXM#zbd_)r(S zCIpi^z`^oan>w01VW=7{*UYb4dA*=E1hg+!9%Ha85ytuP!1H!vIX+#{xUjO`HM&>= z`KI#ya140k5kO`!hIsh`;e1$n*8y;co|fMqtF3CS3x<6{3DsAMS)& zLLxc!c9Gqvd7{$=VR-Gi)kT7{N2L>^3!_%zwOyI2;E77;eaQK(URBpmop_tT*RB&p z<=J;EBX@u^2{^D}H4_l2SF^52+%p#er+?F*$SdFP*ep5+}RBki(56!-yy_+#qBdjYqFC5*)p6jR&)-$h! z*+WoR>B3aU20>3%;b`TUB@LzIU z5wk#DwG%QNHM+dAqZXwGyv0H=#hU7ZhWv8i%9JjQl=EvkKI{iof-dGENM}Z>a7YBR z-Vs8+Nitjl*`46G4&E#BulId_9RzTf1-SYT+f7AM5n{_*$4D5?Altshd6UR+4L&XdWX@l7(S3E0 z3j!$?wdBvlkH>RhF!LGI^&71PLF9Bv;%!W?_I2>We2CP)2?KsOO{DwEPB;(XMW(@7 zglZ)stK7~Kf@xq^LgyN2mdPB%1!V=}Thg{tOu}@GdK&6oL{gj4K}SkPyk9U!Kkc!0 z5;Dr-K~zE-IJYg5o16n9ZSUahYMCg!e{?p%R}(-3_~Sov#>*oD9eH0MLjah-3NL!y zr!HpMNsV}0SR$hmOrv=6oD)P3Ty2qG7=72GBBmNcPs{wG4BM-#d0?0MK; z7)|vkLeiak)jR)YrA}Q)esEZ@;?N!@Uvtedm6Pg0Wy`;7z^}W*>jN8Bu`sfpKIg9& z{Sw#ct$^0&__7dt#G*o(R-8Z!6_Wcsq_Vu**YRun?s-=;Z~0(Q%5x2Bli4KPc0wgo z+bR|YXf!KBY2T+a5ShIvSSROe7>c|H54H1=MKelxV=L?xY|EfslgbjA5RJooz1Pf# ziL|jT9Spkw2nvXYqvWDVQL<9Abb`LgEjnR4 z&d#dkQ3IOIE8)9Umq!G)ciKBL+y`1c9RWy`ScoZJBh!bKacPuOZ_SN4THSND`q_e= zK&wum)e7z%pjzLJWgDhTYmr>Wazvv1q-S|3J((56sQyMizHKm_GyExT{24YlQ=%a0 zGn-k0S16k}=w$g#+oEa|_?kc;wj8e@Phl>Mb1r4k2!84q?N=&@DrksodMih@cy2|k z2pI9LYY=wME&rgm*AZ#u^@gh6Y;igbG*r-?DM*2IQ*OD_1#E?)pyLlOT(7622K^B-N;L&& z_3&Cy#M`lu1OG%4ozu?MkW;=xC?J><5ys21-aL^D8*^{lKuO?*qNLpRV^ThdMvQ!J zKOW)Fmud=9@oMI}0>x(Vk?0xC>PpShkar}@^E63E{^=DrLZ(1VH&k7+`+J~&9;x^a zAxruPCMUYudvO#&Q!Um`YGWPcNaoHjW#unam;bm=G>JnSEMYlmy`Jvs16e{CQaQjd z$AJgtY5&O(I@lMTm(LDUJt5-uGx3>=QhkeA1vZQjGXl9K%YA)(;&v?1>p*K4tW(Vy z@fR&I`kYo@;)j(Bm7(fHl(V*uV?NchidK%wN-eIf*A~g7ZKI9o@$@?C>^VtI%J*%^ zg5Tu)NGE+J`JwfjXfAwUijoCkRvG>jSF__x6kVZp@em@tpANiz)z~LhWhrWo;i$6Q zHS1h1eeJ+{1oqkJ<}hX*J1R;#yo~VRz*{`iKBlRUJ3rR5YMZ*iIZUtr+`!geZq#$R z=;WTWsrZIcaAZ;20fAgRua}bRUrBDMYxMC2Rs_2p8AaeB=k;kQ;Yk@}Rz)R9{VkCq zb0uB*?>VA|AUiT82Q!OoTeRB{kYvxqoU`s9I8Cv?6Vw-b9c>qZ!>$C}khmNb=OnnPN;78Dzv z>)ttN5Guj+OvleW>jCYF`tm+Y+iVW_yoO`wpZ`vAN(KP?Sl4VvxCqqj}o);%x$wY&k}kw#)k>p zs~UMk%}ORc3Fg^456&IWtGq{4tDkQ34%W}12PMn`y5$Y$(B$nMc1EJ2=T9Y1{0P0g zb8A`?f|yN$^iF4Ec{&B0+kdhOwDY z8yz|5Nb^X{nhLjMPcG$|hco66e9%fx17E>>3)HXL4!SN2KlG>fu^wt(7ig`@G|pAse-h&MsLf0fCr8J&OKdY3-U#~xZ*zn1;j`e;D*|N?0Kb$Jy{dbCaBcvy6Pd_Rv zI9=;yzhy0yR;p=*^(v|$FMC$Z^+=BwOhFqsn~(86gwqH=G@o?*gKa$#UB za(3A>Fj#Le4nJS-cOV7t=r(dyl>lZDwjRQ0GYv*J!pQhF_HO1Huv{6f&g2M1jQXE8 zlWVY!VH!`~=^eh@@Rs-0XDru25{$4u?WhNTu)!Kom!-Lwb;DaeN1&x>h&YbXxuDWU z=&co{?@F58f+9>Z=k$f6+3d`e3+%4t9DHEkvi890aR6vgidV~qIklUBH~YJEpx73| z_V$D0qS?5ne=K!xgv@{n$O7HS8hfQX4(t=oWo_p$U+_e2ApaG1B$=srpH9bXJ@0(Z z>Zi53Y2cThA%Zo*j6+c-_m}Et@20n3qHVJufz{+iaLHE_=6hCzc0-O z4fks14%JZf+5x-SXqv`da(*w?sb-b2OpN)k3a|D|qwM}fF_+NilYR#1bFZs#{&L-5 z%Sn`97cJ1>fjBngoAO5WXk31(TAM8TBvvd zvvj~arnpeLCZmw@5*11qpmzA7yWfU_m#l;D0K=$D$|X4FkzOynv44>MYeA|oH>G6FfZT#BYRzh_1+`#^ zfe@ql!lh3-uc?yqTba)Brie(|SoP_>W5bGcH5ku8X1dh+@v7w6Bk@d7RDG+zVtM=& zI({97q1G!eMY>bjmHZ`<^SB=q%an!%Fts5|2CiaxmwC0tRfL2>6F@08pbHqRhJHJ7wMFm*P z5<1Oc0jg92ZIqXmRt6*|UVP{O3_ z5zF;EX+%x-mrpX)EN9ik64z$OR_9{Y%zfi$1ro@S)zhN<^~PpP-&kG5I#&@__eQgZ z^ZG<~;YlDDi^UoTFJE8@A4En~L>tJiRTSc&fUI!o=BB$uhI9HRAgiyZmu1-sYrluk z<~uCx4Lv{U((xQJc*j&ZaNCq(#nPw|k{2(J9O zaIJLQvj|67?SwWHLR3-r-&5+QN`dp3DyU?{(p9W*}5xCmhOW-R%pZdyl8_3%qa|mjWcy86Clw3Iw zY3@A7d1C+v9M^A}5;>cv0Ux2jr;{5-g2Svco;yViL*T`4%G^3^H&=0RYQa(3bD+#; zd}bj@*W*W~<`ZNaLvoYQ%e-l7Ogwm0bD4oSB$k9AlSc28Kv4k(CSiydeP;m~546uH$wCnh4+ zy~Id?IcI(?ScxYHn9A;AumdGV*)fUqPA@QFbG%Bx>t)d@|0=x7a;>n z1yoL2Q$-_>hZ#ZGB}F`;D#i@`|2kBN9qJF%^@dDdC2kaEH3Y)mU+qdM8q0$o*?YaB28xbBxU6VQmjV^s_lB$tQR|$27GYK@so-LWutI6ybi4KJh6IcXX z>d{||#5~PGw8nTQ%?hMnGKFQ~@=a>aZ1D8mx0{$5&o(P7 zh+);L*kM`pgHm(DV_@PvNB3wy&RVLJFxLX6qV(Tr=$`iwsruRbE{m>(VX#Xm07%m{ z4BzeUiq1I^798$m^|hl4MpM31p!Lsm*7I_F*~+q+s<_6b(fk{P#5DdGj5^4jVo2qtxw_XJdnz?{8~ zR_W3BSo{hAX?}uA&zq~f*6Mk!s5miedF7MQE)9bX(-}+AiSsflUM*1CT{~Zh(?!xb z&y?Z&M+tV7)bnsp-(b!`dnxWB>%+uPPx59kZfWQ03hL3)`dx~A4SP#!+l*ShWT)z% z`pHz2puz&c&?Kn?rY_PsjPR12>?2mgzW0Ai7nL(bzd=%xBQy)`_Y>F?qZ%M zu;-4xuHjbav!|9{>PVU}5P3&IK$yDJqP`Q3)|Mxay$_j{if;|F{Bd)2qJ@0w!g?A4 z65^E3rF`6SepmCFVe@Q|vTir#q2}oZSXM<|iDtG6qFxU`ZS6#wH_d55(t7*NdhHW4 zOCqs3bC6L^=MIa&2C>WLSzTu1v@j;oEU)Vd?772vfn1!+95i`0D&3YvMWAb^vQr9E z=h1jwI{ob{`r}v3fc9)uLd+$~n%!I851ZD=z?7_$8I$>9OoStdQi>sVE?R!A1Xu)M zXz8iju|3xyQuB#DNSl$$MegX)F>-Mw?p)1ml*b4UPpohCjp6ZzPOy&@Rp(qsYpM0g zb()ZyoEeB*rW}N)FM~ti96mYn^=;TBE^lxOH1W&^D|<5y=R_v6cBJ?B{;(Z%8jU9B zH?Qdkq~X~a1)2u#+|!RbzGEU}1kLZfS&Aj40<9nwR0DZ_0CjqZ>zUx%uUn>-mT;ozMFzg&3! zkaN#V`oQ&9^L4~pM^@-c#2OyQdTPhy?cJ0rCo4*Cnb%>CWt>6M=2g5@g0UipTHLutj8?02BgN$`;& znktC7f`w@aa@fFyG0x4KfAX+wy5-7rHr+dl@1%R+mMd{idq6TpyRjdVGSc zc_D2(7WYA`T#&0xqxbdGzYASnxkP5faKcsxvcj#9POqg5#ct&$^hV+BmmCFUQL=dr zv5RFl0Oj=q;i996>pxW+U94kz8KN^7+hmEO63AmJ}orU-xCPRz5 zvHtCf31FCLwXF9r?En=LL{L+v&FZom((5Vr(<}?hay#b@sm|X%FX!t`1Qxgy7>skJ!WZ~&(pM|B;>!jN1vWSaWoJA?RC1$>=B5_`; zrmCCknBwGlYoMEGZ_rxKJ6kCDmC1M*8tb@buaNO5yZLFzY$XKZBO8xi`{S=PqA}?OCXKDHeDc{aWt zn|xGi#PaZeA7{p9TQslb%^PGs&&tnXY2Q7Pa6VIRSEW-^D#+nvk$bqkI(5FGeJ&1! zuY4SP2e!RETiHaQw=ZT5nMbF~2$-Izf@xG;w1l||YB%6n=aEeD+$@S$6urf+3|xmG zQnPd}C5Vn{E<^1rZRxH4U9LRG=fjFrL>gU%2NobBJrC!UhvWoW<+ z6<@a;-R`$FkCqLeZ+b!dZu%C%>5&y~%`C@M3p`pC8B=P?X3T! zcmJ8Eh!*hK)RvSj_gyq@zeq{5je9uDaX)ubh&k z8tsx2e}9Rc%F~H#xcbJh)AhY^V2)Ck6!TSPWddSfT|;iO)QhS4`$3~%k=E8$k&!G! zCWx2%?)ZJXi8n9m{Q`!@kTi~5^R&Xf{q9bw*&oo=m80@ISgN^sM*Ec>llJ&k?I7Wt zCLmF2ulMg5VM(m~fd2U&IIoF*j9_xN&{2MTN;s(oi=3s^5LDU}^a+NM3-1eU?rGVS zYAR8u1K6=rBVr}{^xaqg6{;FcdKHJ0M)LMcune=nKlMb@_me5$yutm{HSSDFoTLw`_*QVoeuTaLub9JnbXHi{3T<|t-8iJ$iEK z|AkX-Qez*#uM?RIv}@C6N*fLjBt*LA9}8a6<0E7(_PtAZ%L`UvWt@z)NTwPEP5-&^ z{X6ZJKvZAr|eco-t!n2Ly-q{Y1&jq8lURnggsOX zPMs@F@mgBI^uVyEi9vq0Ca&1IBPZ7C(vJnVIeSpAs!kGkV90qQ!)!~Qb${-Vsupqr zNau$>A5W#X?9-E=(}^DEvARB!@goSYySMgaM$=Qtt;o@)$+ZPzN;VKG3~M?Gwl6&` zbzVqI7H-*M7)~@2Mn!kFKF)RmsGXkr`^X6rT84v#PrQHPo#^Z;fjT@+iYusG^MA55 z^x#4R%PDPS#%3T+ZOE^1>Lps3nJ=|PJQ;*Lv{vCmn7A zC%!2qkOtF+<7GN$fv%e5=3~?@iiTPuc<5z8}7DAwlR^M8!vPk44B z_7Pn^R3{7R{gYk3r^bzD9dv}UiRUChm@!IJ`E##D-6YsnoKsj_7@J9ICSM$Enu|ZO zNLvo_eiN^GvWg}hnu4@MNT;?elZpi~3%kJs8vr}s7Y^{ZeIT2>1ov^?L3Nqh0$vL} z+CJLBeb-8Hb6T_xg+?sAf6YGJcp-bgQn{im*Ls2$o(s)JTt7Z5_57NI#uWU~OJ6^A z##v(*;lNbk!DD8mIJkr^0LB9*)1kd(*`<%RH;s4>Zaj})sRzn$V5;yd-%+X)-GiDd zz+PU=ko8hf05ahqjP{4cwT>$~y6mc^Q*rGS zb13W;Xen>`_idMce15cKSpqzQzh(3uu#qV{@~>4PC*K45U46gRt=3Ahyfq6YK){@b;I=1UKTa^@X&?5=cqkw#VlwC~p> zG>m$B=>(Ne>b8ft?*fk&#jpDw(tf3j5i1u16tm7l`fd1%RuC6*sfOX%jPIKKt zEvln0{3dNMlO`2gF+WUIYYfHyTHh{r4htT0fx-7@>YH+*=vVb&b199^eeMh}-I7kB zq2-s1rn>qUPrFU+OjWY9l1r6|CU6~w-Mar-QzD3Q;k4;J`6pI)>L@#hcJf%VFw8`# z;*HfMMOquk`_m|3;RtLo{Yf&~-OXsr&sLo@c}jbi4%~W{pi+b1=aAc+61!V2`ol!X zSA%qtgsw|f+pop9rYE%R{sFmDPw05*On>Eq^a5-oGYAEK! zd~?sG2Nl|I0CIInpwC#Z86m*jCvA5gw_|T(cmBs>7`B zyrv4tiOq8Uz?F!B82@s>oBsQYR}tAgP;~bs{HU9{WXOOBziM`yY)ff3e&|B^890xf zJD}qj{ERzevM203Vpm7wB#6yB zGUU_0W3LXkb19_iC3a@Clkt2g)3~U5=jFJvh~I$Qf11>Vs2`Jsv3-m8AIxo|LO45P zd{fo@t0^NTb4R|9@)BP-7Cc@}WF3$3^Y_l>v*PD^dzFlpRk!(OlEjdDpcB&BOfcRw zR;F0-D?6^&FI}m2Kd_f{Bkd}7@-#o*rRUK$7vkw!Q!qA}CY-K;SObu__^p^A@=*Sj z)T_iAxrR||uGy+dws+tkg>yK+BYC@a)|lONLUmzJ<4x1H)|SmzCj^ltSL#qnl6Xhl z6@gxAsY`r~>wI_GvTrJ-Yx~~f#F`om|KFa+9H5DfciS2LIfp9txEtD3%Vbr$mYv1y zeKJZz({bte%6}DlsR* z@yxwiG~V7ZzB?QX%}(!GL*;O!lXg0SmmAH2ohDD!9SJY7%iHs2V;UXqiW`1MB>#TQ zda36&nMj_pooMn!bX`4;nchWh|xPm-&eH8zz$^Y-tzJm zA$w?m-w&Iu>_~IKuio=@?Ca}vKSE`o-&Eagk0`WIct({}Iy$H=SzuMwaJNYn>Hnf{ z7aWrGoFF8gR%<1&@@`0q3j6m^-3c_PPmLeFGBJA9;O^iq zcfbid(sWzh?l@ghHv3LbwcSFsLMmyYaqRhg?{aMv_9Yklj*KDG;||qcX>Y}>>=`Mr zyYZweynv;~^8Fybmyi)(Hzm4d0#0yyFchLmxp-|E^3x(s@%;chUSXmK+|2s5*yMNS zh@_#=KcE~PV*ie}pa~{ge2g~04cU5!{K)(Hh^9BZE(oQiS{XAnXLsiT;rKhLnUDdl z3e1yZO>)3GPC)Lkp)ro6vv72!xnzt}>_oOle$|c_vJKPtvJvJZb%BwbR%m^MW}u-> ztDJ6=_PMaiY$f)du8WWBrQ;7|QZTb^-h9u_14XYChY~VvQ?&$bfh7P9(O*y>s^FUK z6riI_9jtkYy+%}FUy7jEngk)?OJx3nQ%A@@HSnB^vhe-HtNI=-n~6taYoDZiCSYGh z{yB4THYQq&l3_E^^h4_sus@SjMcb9r&zK5*ASjx@lq@ZhaLY#t2hdlh?HNmR7&gY3 z$p*6SRtj1HccZxx|V%m&M2no$?^efzp-GI049E zVO7wp(`qz7ZgF*67r}}0HbR;33SkNSG4f!?NbwF1G|GN(deJpDnMW$_mqQMM_j9kN z)KspFIpc_h6Wwi}RvmX*C%oXLm}}emI!nt&*dEKpm1m+3fShUojQI?IxBc5KPdKhd z`l!5ouO`qJ^mkRNgi)(+_%LMJja0Wep7k-Da`Mp;JbvUOt) zkWLx{lp02)Ka-fh9HEPzip`3okjV3?&HK+q2hwahDfLPIqeDU>YNSSv*Ncu-4R)H$ zqPxL%A4clHuMXu)!kqoONXtT1`a9}^)Y;Kn*?|$O;X_MRk#T5Ut!yv1~PK zwWP2>|8_$UgzSJbNu~iku6{LRD3UAF42-ZsD7ASo|2G9zO{1oxYtLJT6?AlWL1FLF z^Vvc;6c*ZL2$H5xqtZVHt}#_5Qf)5Q9_Z}SJiyk4c{okuO!4t8MtK!&P6|*ZePZn5Vu7zXwi% z))|lpO3^+1KJaY2Y~zoiS4mHH*$?`6De=S7kas{w?7HrVO%c9l<7zqk%v`G*I>T?? zrwCCizjQ-=JD$GuaOr$Eo8_q z_2I)G!;E{usCvZe?Ys_uJ4F+f1T|At7$!2#))haq&62YmCL|OeW2ZOoZ+eS%Dl*n- zyddD{-|aw$fJa>PcWbaN$N24Z=IhRC#a49GJ^{iW#pFFd#;XWn_z;`uOb2C{1H@IQ znIm50Tj)?Gf$XH*E%ea=wXkeX*4)k7jw9>esrxk&&n|xNd)#uC7pra%-K%o`MI8IC>NV6hs+;;-1!LnPvQ(JJ9a)!e0vnM@*Gi z`(6XiGj$H7jv2P`Hpgw2dWr-l=5a3M@4dx;vJg-4jb7@{Tgfyz3*Tiu5z3)Qek%-r zevBSqyN@_t>%T)rzOz<~tPP(Lpl|m7S|p7>BdOnIArS=nV#e%H{p=Gb+xgYutB(ro zE^39A)1)EU$lIYZYDdEKzkSOPI}Gz|$KHkA;^+A2-*s$$^0F@0n}6u9KGuF^hR%zW zH*UKdGcx=;S1-mdHlV_MIE_Bibm>Q!LUo&V;A$n%bSZ`ZNk3!Nv09GE=n8)hdRv#{ zx6gh<%Xn{<0?Zs3*p+QOGgqpv#=)v#+s%wV7YCecM+DVCJ1ln}I;CNs}&~ zYb2~g@A27c2UO#QMzbNaTKuliIEea1{;2L6sVo9i;Xd{G1ZX!D^SwWk(b+dSUa<-$ zFuLsTETVMv#IbzkWV}xB%fRC{%Q}7astKzHdi8i^6(Y@LYzBb%Dc1H_q~wl~qn!_y zm;FAlJLw~0ez+W`%{jP|#G;FSHOR+!fEb zAl}t3>^O~`cUoqeculHwQ%>-BIGL|I!60d5H}Xo2z9Jk@bm@3DDGe zs4K;}x2>Z4I)EQ?Zt$#z@}KrKI2>xGH%`ZNAe^Ufaic0wavGtDO6t{xS1>xP5{+e-j$xsXZp!bOU(%oBgOXUoGRM&;fI-_+1zp!rL zz}H)bP4G1Nwe);=(;Fr~OxD9`%wn&JN6p;bfK}*P9^UZZ-TCT<-aOWvCVxH+8NcaF zW3yO;1ynU*9yH~6wa0IUf0i~6?Z#{lf%|9o(+Rt80BW^I z@;GU~rnJj6IXvhGlA;&ida;PJwwQl-RKeu$ENC~{9fp0MW{k*1aN~m+grykT_h^Zf@I zw%+WE1vF1lk@l~Tb?H+VKAlk>eJ}q?(;E=DR36%DKazI3CXWAvfEnuZ^TYH{UN+uM z6*g|-k7wF&99<~K`4K1hmCGhV5^$k-hun#^dr+9-T?sp}sgb!5^@{+};p(G*728E> zL(gi?gfrvs`<&m`CYnQ=1ak>!_=xmOmWb=(cH)e?52-rAPN||@@uBHV&BRBR z{Uu+$bkm$A*AsF_V$OF+k#;N@5ZdSD8MSB+?N>Ua2&AK)U&}>wgK5u;S7-%nF1Bg5 z#_WMP%O75K&65z|aW2q$TrW}Ji81z$@vDjIz#mS^?^cu^_FhRZ+mi{q(D5}`bGnuZ z7D|lejAnHkYg9E|k84-+i;xDUG$18atX?Q+ z2wS9YZF;rVHa5?oy-TgI!bn)-v-2*=JjRbLn?qsIQM-nYv7z@n*Os`;q*KlVE8IF< zyE?e~Kv9+}SFA}tB}P-JqFuhQLbw{5`X^FSwiON5`;g?8OJBVr`?90sx^0GpUO@R{ zjKIBRsvw<@xKt2{vKbvZ-n1hCO0Tjj@6)4K9C}dpEK@f|z9;~(v`U@1&GRiUMdZK9 zyyeU{W88J&b6UnJDBL({vZzevxgwnq-c=vXMXg+_+S!MbINM)^a{|{1<)7xXHM9Hz z5|DlkuH04pi20G?(Cfp47=J*DetlYi?Tk7+??JL+H@JF}W6l0!FF+6P9vyuk-gtE} zm*?hmd00j%Sc%R5sq4zY-Ev0C#-8C9S9R9>4zjrz4>8_u%iY$P$iJhUr^Obt~JOqW>YdHguwP?b2-6ps!F+Ikqsntk>B znz*+Z5$7IP!8sA4(uR&0@VKC0*DU;|7u%n^};71!!2Dmg7QEt?IVtV+!P_x8c|}k>TqZ+@*tdpcvAc) zhEcWSTM)bXQER8#QL^%@8eh!Fk5?TcHSF#Z{41KJJAO?~b{T_`)cWuE7cU0+upe{0 z1zy;f?vn=igYa$kOH}yo!Vp*qm{wE(&#+~v%hQM&T$gII!kixMY~Z_B4GeD$!B8!9 zp7v@XPw^Y+D67N8i%0ojoh^H4cGzjY&w*GXCDl> zrrWg%>qP#3=1%~@OZ+g1&YtlWcXjJNJ6Pijuw?aa<3|*!$0|fqFUnAW@n)q>chJ4T zeyn#Xc+>b>qmOC^&avc9W2_J{s+nOE*GBwFR5))*Zyn6?rnPP>x^_ZLW ztClF|syhbFcb1{-45}A z7?NLS95wqP;l*4cM2?cI|FUkot^O4*roV)E8r`lREIq5os))5#Iw_sv8>C zU2Gnp&OP5BA!mYVK~6>ci8on@v$UF@wg`#S3|+iVs&8y^tqDt7kMQru`~Kw8NO zse%=L+yg$Xm6-sP(w8s)(&(}%W7 zKkL^8uc1;_5pjxN%lyTAVfH@|c`wj;?bCEyeM$Cp;!<}3?jSPX@#el^ykY1}AxM>F z;hhSWh1w;diMDLIqMoRbc^TdTebD9$<8!X%AqpRJ#1dSnW_J^kXa*NWLgUy*aI-kl znEue~9ZuT4tlnu8*$*K z_qpzl4B9RyCeMjPX6~{m>kqYDO5o4;*SUJ-pGLE^N~;{rIOMztO4VZN3kRTvb<<_> znzv;2Ys+74p(JctMjhqRwww|xBT9SO)SQm;H@;r3cr$f-R)<##)ei}JgiP4*+)3ct zsI3OW(|cq{2YkJF%a-uukEzDx^LQG@_$@o_ZY3K-dDS8IEv&T4iPID5($5X3|cC)5t?Nkl^!2VFmh(e&X|7$cRo?f zqGN2@?RIcagdIdKl?dvNfM3AIpC{d-aXO;%%R<_-U!{S>(C?BP)}KB*DJ03UJk!>l zZg0@&$M^w&MDWkCe=TvPL0$wbacS4YG2%}AG~dERVofO%vLP*0+*CA z*#D^1W!z@J&7rk=u>P)rHlBT+Tj>pLyZ~=Jj^)@ZwRjU1)Y;JKppN(+por025CT+B zb2=h&p1|%veze2>UKW~E@23Hb;#Jvr{{d1kU0^PAczml5f zkiR_Y=l9ftbYdQq-a6R(w9d7G>cNn3*@IwFP?mk0LA zYVB~!^7Y(zUz~WAL}y2Zm{wanuo};~?cGc^fD|q~wEOp^tL3l!7;iEmGxpp%UoNu4 zY2E>21+pEk^L!eyjC-#pVNf*!i~7AE4~Nnx1T)29qgjgEvu%O*_INZtAN++IJ#BY!iuY%EPkn`UBNnon_zO2wTmy*gsye9&Edf>0m-24bda zd?eK&wI1||*K|c|U8fuWwpK6kCq6s&oC|$8DBpCaE6YUku<#5(_Zm`sdaPUVMVWY~ z&tQYG>+dHVzk?{aW+`4P6IV&_692bb)#zGALnnWE#iRQ|lS6(L&IR)?O#gJq&|<_W zJF8~83z}WfKTU{YMjuc*OWlvKPeoFP+vtc7h>kwP?kV28>dN?s)CM%SHs;-S3bF1^wLF&|8ebk}}w>|sh7ER#o z%I42!2@f!{{BT_1$`cv=Oxt+c{ye?TE6t}GTsYE*+5OL3od3d`ja4^X51&;N9&lG) zUG)*fgOb}DwE8Kn`@2;J=(^n%2coKWs21P(7p}MZn)n6o-jqfijU7N}oJ(l#ptpFg z58Sqj5PN3S6nnLh7Lu(9n&5~$lwKbKBqqdQJxB*kE@Q7H#M1=Xlk_Z_2+{b;%^YK; zaV|{G=b8*DB)4s$W7*~Eq$`-q4oQED&HX8i%b}raSl@|e4cZqVqK3z`qh?y27t33|~9~Cq} zkrN`|mK0k1K&_8o)grd2e%=700-Ybtpb4_{7%rWhgmKp?Rt8{nw@mjvt?AS_SW3-;Z)ARg`a;#(MF&k`sD~J zPc7;~^S`)^MNTEFy(raMMZ6A9ZGDY}<_@sz}+9j&tt@IY&W4_&0`Rn01M3XDAZ zRq9nB&tR3wajyK`3$w3{h_gD^nj6uv%Vr|<^-(;Evr>a|$BekkbqpKg_igV``5rNn zM4Cfba6m-l1FH5MDkrLHdZ~?`ZT)=)l#U6>jWtV#V6JgzuUo&ThjVMk%bv6bUaU$q zTr!ZqBOazJ2ddZ7u?=(sWKXk)01TTKo#FeHUr#>@yg>6aIgf&wV&irl8MuB-T0uhl zP}8N?&q4;PeM0lY*IJF&TYzkS2|Dn9jJZGtAg@Dwk$fn7Iw*GPx~g){O1<+SECxQ{Uh3xBu8) zuh;YSd_JDn*Yo{;4T{jFny>dV45D_`?XFY5ZqUW(1XXREjI!u+C3`z_sPGR=INbV` zHJd`XZjWvfsA73~D3dnmI;LW%K!6k*fIH}tpW)UgFAr9!K+Zy62I(SoF;N+Q3^p`W zMIo#e2%gd`-qWAB;kd%Gc)y``-hQ`J6QghJcg|~pN-dlnMwZjpT6^crDNjDJQKhAm zk4R7b3}iTg`4S#D|HhBcR(Jv_#1x(>=@L$ZrIpiq_YC60QfX3<7c6o}U&=O{7S2>&9;CxH!UA z3^bWSA54^%wXX1w`YfcSU5KyW+Y`!y=Hq-{N+zj z4w(`mwi^$=)NZoCNlW^m*ZtzpT`eKdeIVRJO-IlNZ%D5<=b7z1yPJsjxO(e+Jn`rg zMV@U(q&oYf-`w!Dm*^4SEQzcgvQa{xE9J|fA&B7+{Ll+~n%eR-aq2aG4X_6E)dXqT zKOWmzVH=Jy$Y^9S9I7jZ{@mV+$HJqo!N7pU~l9^dwW3ea%Xr z*^MSZ6xvp?DL8u+jr~)4qm}IrT{%gXz}dJbJ9vJ5F%j?}38 z3#6YLhQZU~5nI2Y*pkogjSvy}4iXAQ^<`4!J6YS%2X9Hs9=YO*Uzw?0QuMz;d|^5` zJPe7FA*b@VgY%KI1EZ%`ha`3FxT7Nn5YqEE>ry1Fi!c5>>VL-c-;@0=nXG5euF$zt zWgejgquCWV1&>4HpiiIsEt~k&X^?(Be^=ZJVDiSk?(=`As}j=>)jnPS(!=RWS0egT zs`Lii1K4D<-?C4TG?pOPRUESLNLfGPqO0k3ME7D3VMBQMM$<466h&^d<+IQbG>d~8 z-NAm9h+i$2%FL}_+v-M^VpXQVt zI?ZRRfS$uTf6!f6A2E@5`qt;!N|zX_?*GEi>Kuvb?%x*m`9z#3eGW${lHCR(ov$rv zH)qPT*}~sUuidSk9q0w-?w7*G6XJRo`u!d0%^Pl_K-nZI{b22fIC2!rutVA+YCtbbi^@C@X|rX0?Z+R&!-@u8*N+h8aD8MFRPv{zm_ z%PX$yU6bJcrCn3X zfXO8u>&6~Vvb`bwVLOJOn7@3GJx*@%FL-723$A~;X2@Etc!fD1 zLiEeUA+(qs!LX2j*55GZK7l}B)5xHcWl06Ru*n5*-&?}{^~7Xgy2ag~9ddmdmD-Tl z4WVUjNN-*@<^u*nP}!^*7!(~ST;TlA?XM;B*e(M5pU6#l`7a7kVhSY5KG=|L(>ck8 z))F6;W4cBtzRLp8gGNK>fJf55{<4=LaTe+7wSOTH2mAw-Ibv(|>(7ry2gA5sbH4FF zogafk)PMG{u5l7X6mA2oJK|jEZAJ>^?}ax=4PC~&&Tlcby8v`flr%0Cc8`;UHc15& z);u5(3GhcONMQmE=hj2<`5{kvH1Kg zFF`UCiGC3+ttOL35+uxx?Ue)5O<+=3fAe64R2ev{Qp!si{rg|*r0$6K&hsaUn7*st z694tp2B|v>Wu<$Qp!B8rLIY(F7VGLcQ1W;@uk?^mGhUA-rARBSn9u~XG$tT3zEEo_W+Z)ffG5ef zL7?DU*ckWK6e|J3_K67tc`0sljn*6f!s06{Ah2i=W;gN~`e(5`0z{HF>!_t-W`d5n zSP8{)XibyQQ73E~R`?)&QO|O)a@G4cMraj4=(=uA&9?3717y*r1-T?hII*#2{?vj9 zQ$#|UezEQYERF>hN+y(#lf?Ou09#8`@ie^R9ui#mH)l6Z+@vB9z!o<^g5FzV`?dC8 zKvb4h5z9qvF)kQNb<$2Ht?G_N7vGdtTKO0P6jY?`MrKJiv*N8OAk_IpQ<8)t`2)SA z&jSU^z=0;2261}DyV&QFq>m=wm)`O-xY+tcRFbI2OU!6>mZbz9KRJ*xqyt6= z7{G3dr%?Sllsm_i;q-nM>rx{c`CKy3`nTzlI!W*6a}sOkC-s~Xiq?7n{1>G+y&x)H zMDkiVkw8hc4jPR}w0hn2AU%wGbB-6e5$wL*r782vf~MjHbpkce2NI>Xte(|!*Du$^ zt&wU8G?Dyg#q3$2;FttXj%4i>ZHiDCGcBDWYakzrj6*g52bhiOvH}0C5p0S zfVGlhBye&iBjf_gtHp7xFg$H?if<@`+bqQytdbD5WwoCU3MtsrB~^q;agt29jtFl8 zK4+dfvJ8lmIncfE!{shwk!^;N#d@N;JOQW);zScxvV~u2m_fj$r-@=E3*SsY=1Ufq z58y3u0eYz;6zKPg5M_(cn!@TNQ^?T3nJef@fv9>?W11}Bc>%0{=|d#pFkLFpd{aot zW+?$Bv`wOW8!DW{0V}7MeJ({b@71yN%4h>&;j0xDhGNaQn*x`Rzk(>p zw<#(9UpBW8Z-s=5Wl#Zwu_S80jv|nlMhK@PmIX4fNy2&AL^~9m0^x2h6wMdcydS7S z`#%B!!XCJfSVu=_3-QailtD^LxMYRp9v##*;NXlWnRo@I7-%Q+9tXQ1yCNmA?AE|U zl5c;Ze3n>5p`o!DUfpRa*CccN;!)*{73zvom20E94cozPF=&-!>EAX9vQWryZUi@5 zqUAt5m`lOR;N67_hHe9*SKP)SR5ZRTQCdAIfRdXF`|i@kFSLV-_eTuWm=XK>Ez8kB zj1y@o(UKpn=yC@@Bkp9mOJuRKZw9DXAL0$aT_S^(6`RF8BL-S63|?0!$(nix#U}48 z47NQSeKk({*RA^Of9xTdf(B==^YZCc++VvE1sE1KQvPM>sF+TwxL{B5U0gHX5ZWPG zW^ILoco{)qBlYi}uB@S!i1~;{;v{@r8Gr=)czbg<2PZKgzXTv9L7zxn88{KCi5n^D z;vLCBS48R6g3yO!``PBb*OZqVeflHG{E^`wQ_UlVJps!YNs2*UTdqadKnD)I47eF6 z6XQ`NuyHz8^qV5N%+V@h-A|Z}l(%|IH~o3&-k&R?4i4#VDSb~WTlUwb%D4mN>1S+v zNBqZC@xKChG)pPnr*6|fvC`LsKsf6+?6SoY5pl zCn?D&fqSmb+ZT#oNhki)Y^nbXdt7{_P{r^RPmO%&g>W!LE201D;s;dc)fBw=2w3tl z_{jm>5eROSmy&l8_6&sVXeZBUcm^5;Tmi4KI7dKz`I*$sUqR9dQ@*m@nh{Ks*;edsOvgwT&f@pah(9wKDBt1Ai5OBl^(yk| zN<70Po#IT6ng^u{r=fj!N^uhQUe*parXHjW*c-rQOm1opu>!a0%e(t5E1!cpwEYLP z{y)}me_F%kE6I3`&vHjKrz7-KHk>;#Zxk1DdVys|NnsPPxclz!_t<7YQEGO9ybiDQ z`B&$M2ba-Kv1jgvZiGHADYD>)C-go!E1Duc0xv#Z1g?&~G1w`2r!m+@kxHt$ep7Mn z@8de^%}o-C^))=;Vdw+xtDd9Wslgqg9N4^1L3kU)cb@JZXA*aUQILts9Oq$Lx+bng zb$rj z^Yq;stJj?&>i7SK)E7jZHQgVB$jGhGXJn#C^_Rwa?4QhB8=XSMvdxn}pd6m1UUvg< zg=!LZvUT&st1)^FGLODreS9oXa6DEMe+Uul(qJX}ORBFSP&7QdiZ6JZGceRoJS9ym zo^gr(P9xgmtTMWulg__?qIwRMw=xeoURU_yaQw^>E++*S^L1a!ZGusu)T zjX#Ki=C>`f9(6NiC*c~ei&CYAc`x3LeFPiZcN&|3U6bM*#rP2eSK5W&aoB)2*^8m3 zO*ka1gwycKR) z-Frr+M?`gwGqcKgH$J7hy{u%ZA*{y%a~WFdWub!KgT)$!f+GyK`rg~9BtQ>_ zpIn0&;Hm#(EB-CmYd7vhhS)B*A}@nSY-2fq6fFghOYw>o04@EBEv&_m%A=t2{xUnVoO>}dMP zoc9~^MuIsTDFc-cpO7D)i_dcLlgB0@(eExwPtW#UoCy+Il~R;wx}AS{H?W<6e3n7r z^52b#a9|(BpPC8vkgVscH|z?@ZXGV`UXeMdgz9@=xLu}+cWlES4AXMC{W3Xx$9bY1OWjgdi6H8{MOLcy{#PF z5khNws|`=+vx~xa&zW@UhI%zaR7^QBy3JhAOHp=HS1g!yR696Ffzz(x@A4A)@x!J9 zUgUA(40Q#Ca#(Lz^$Xn{vWB_3#xL^~;D0Gz3{q4w#cNntv)`ZYXDL)%j`gSZP;E4pr9QubWtp$c%KL){y{3N{E`0L1!j^aG+PmmzMuWRCYOSsw z%m4hOW5V?}w$n~Q97NEJgX#z4y)Jh>=ntRm{9Nk`UXQ@`$P1r) zRqVv6ZP)S8Z_al!rA!{G75;VoSlY|O*E*T>Vrw;%-P^;WmZdrK;tI+4$nxW=^aE(@ zk}<0&)_1xLNm*sBbl$$wT4ncT7r7%LTg}LamQamzVcz*gAv^Lc-7J+G3EF4+jN&ne z%--8>Wa^M$4)&?0ZqzrAp6FtHg7Q?^@?k@kSteT#!Hf2x#vBDork+o)o-Ozkc0K}m z_4BLni}TLBHwz{`LV;*^+~Y$Oe#ZHp-epfk3KL3Hn?ZaIb;slz6NA0lhub3O(Ax&m zP2bd1vY);4--e%{4Mac4p}o$WxiSBO=2?waa-*VQh;3Bb36C*6F>O@lq=`YYajJNm zb>*JI>c!bR$jI*lfi9=9*}Y}aj&90&#NhrVudUbE$tcoBAbVq^llALzOEa?d>z6Sf znTrPV6`5*xZY^U}yRv?YiOSp5UEuE{A5Y>cHpj>_up884W3Z|dN~X^QpOFOA-8Wg( zu$>Db0mtk7vV6S2T-aeVML26q;WR$gf)f^xbkgh+h~Wjv7q2)Dy^qCleVf6h+606a z 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�$*)u| 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 delta 119721 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 W95wf{pADpinVZ>sU2x3p+}{BH The platform **MUST** dispatch the `Lifecycle.onRequestCreate` > notification to the app, and wait for `appCreateTimeout` milliseconds @@ -335,6 +418,21 @@ Apps **MAY** load a limited set of global display resources, e.g. a global style sheet or a logo used throughout the experience, during initialization. +During the `create()` transition, apps **MUST** inspect the `params` +parameter for [LaunchParameters](#7-launch-parameters) and prepare to fulfill the +provided launch configuration. + +Example Launch Parameters: + +```json +{ + "preload": true, + "privacy": { + "limitAdTracking": true + } +} +``` + **TODO**: discuss this ^^ Once the `create` method returns the app **MUST** be transitioned to @@ -342,26 +440,22 @@ the `RUNNING` state within 100 milliseconds. **TODO** Discuss ^^ -### 3.3. Activating an app +### 4.3. Activating an app -Launching an app transitions it to the `ACTIVE` state so that it becomes part +Activating an app transitions it to the `ACTIVE` state so that it becomes part of the user's experience. -**TODO**: is graphics available at beginning of activate? -**TODO**: Outline when RAM/CPU/GRAPHICS, etc. becaome available for each transition, e.g. start vs end -**TODO**: rename "suspended" to "Low Resource". +Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:activate` capability **MUST** implement `Activity.activate()`. -The platform may launch apps for any number of reasons that are out of +The platform may activate apps for any number of reasons that are out of scope for this document. -To launch an app, platforms **MUST** use the following process. - -**TODO**: Write words about how you can't activate two apps into "foreground" at the same time. +To activate an app, platforms **MUST** use the following process. If the app is already in the `ACTIVE` state, then it is already -launched and there is no need to do anything else. The platform **MUST +activated and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting -to launch an app that is already in the foreground state and the +to activate an app that is already in the foreground state and the remainder of this section does not apply. If the app is not loaded, then the platform **MUST** [load](#31-loading-an-app) it first. @@ -372,9 +466,9 @@ If the app is suspended, then it **MUST** be [resumed](#37-resuming-an-app) firs At this point, the app **MUST** be in the `RUNNING` state. -If an app provides the `xrn:firebolt:capability:lifecycle:management` +If an app provides the `xrn:firebolt:capability:lifecycle:activity` capability, then the platform **MUST** call the app's implementation of -`LifecycleManagement.activate()`: +`Activity.activate()`: > The platform **MUST** dispatch the `Lifecycle.onRequestActivate` > notification to the app, and wait for `appActivateTimeout` milliseconds @@ -383,17 +477,40 @@ capability, then the platform **MUST** call the app's implementation of > > The `onRequestActivate` call **MUST** include a `NavigationIntent`. > +> If the app sends a `Lifecycle.activateFocus` request and has +> permission to use the `xrn:firebolt:capability:lifecycle:loading-screen` +> capability, then the platform **SHOULD** give the app focus and set +> the [Presentation display](./presentation.md) to one of the visible modes, +> so that the app may display a custom loading screen. +> > Once the platform receives the `activateResult` call, then the app > may be moved to the `ACTIVE` state. > > If the app times out or makes an `activateError` call, then the app > **MUST** be terminated. -### 3.4. Deactivating an app +During the `activate()` transition, the app **MUST** inspect the `intent` +parameter and prepare to fulfill a specific [Navigation Intent](../intents/navigation.md) for +this activation which may include: + + - Loading any metadata needed to display the user's intended content. + - Performing any entitlement checks to decide whether to display a player or a purchase flow + - Any other steps necesary to present content to the user quickly + +The platform will display a loading screen for the entire duration of +the `activate()` callback, and apps **SHOULD** do whatever is necessary +to present the user with content that fulfills the `intent` without +additional loading screens in the app's UX. + +**TODO**: Discuss ^^ + +### 4.4. Deactivating an app Closing an app transitions it to the `RUNNING` state, so that it is no longer part of the user's experience. +Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:activate` capability **MUST** implement `Activity.deactivate()`. + The platform may close apps for any number of reasons that are out of scope for this document. @@ -427,9 +544,9 @@ remainder of this section does not apply. At this point, the app **MUST** be in the `ACTIVE` state. -If an app provides the `xrn:firebolt:capability:lifecycle:management` +If an app provides the `xrn:firebolt:capability:lifecycle:application` capability, then the platform **MUST** call the app's implementation of -`LifecycleManagement.deactivate()`: +`Activity.deactivate()`: > The platform **MUST** dispatch the `Lifecycle.onRequestDeactivate` > notification to the app, and wait for `appDeactivateTimeout` milliseconds @@ -442,17 +559,33 @@ capability, then the platform **MUST** call the app's implementation of > If the app times out or makes a `deactivateError` call, then the app > **MUST** be terminated. -### 3.5. Suspending an app +During the `deactivate()` transition, the app **MUST** deallocate any +A/V decoders. + +The platform **MAY** begin to transition your app out of view as soon as +`deactivate()` is called. + +### 4.5. Suspending an app -Suspending an app transitions it to the `SUSPENDED` state, so that it is -no longer using resources on the device. +Suspending an app transitions it to the `SUSPENDED` state, where it is +no longer allowed to use graphics composition, and is expected to consume +less CPU and RAM. -The platform may suspend apps for any number of reasons that are out of -scope for this document. However, it is the platform's decision to -suspend an app, not the app itself. +The platform may suspend apps in order to free up memory, or for any +number of reasons that are out of scope for this document. However, it +is the platform's decision to suspend an app, not the app itself. To suspend an app, platforms **MUST** use the following process. +If an app is in the `ACTIVE` state then it cannot yet be suspended, and +**MUST** be deactivated first. + +If an app is in the `SLEEPING` state then it cannot be suspended and there +is no need to do anything else. The platform **MUST NOT** dispatch any +*additional* lifecycle notifications when attempting to suspend an app +that is already in the `SLEEPING` state and the remainder of this section +does not apply. + If an app is already in the `SUSPENDED` state, then it is already suspended and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting @@ -465,12 +598,9 @@ happen. At this point, the app **MUST** be in the `RUNNING` state. -If an app provides the `xrn:firebolt:capability:lifecycle:management` +If an app provides the `xrn:firebolt:capability:lifecycle:application` capability, then the platform **MUST** call the app's implementation of -`LifecycleManagement.suspend()`: - -**TODO** What is different about STARTED vs SUSPENDED? -**TODO** Netflix needs a boolean in created (launch visible or launch invisible) +`Application.suspend()`: > The platform **MUST** dispatch the `Lifecycle.onRequestSuspend` > notification to the app, and wait for `appSuspendTimeout` milliseconds @@ -483,17 +613,21 @@ capability, then the platform **MUST** call the app's implementation of > If the app times out or makes a `suspendError` call, then the app > **MUST** be [unloaded](#38-unloading-an-app). -If an app does not provide the capability, then it cannot be suspended -and the platform **MUST NOT** attempt to. +During the `suspend()` transition, the app: -### 3.6. Resuming an app +> **MUST** deallocate any graphics compositors. +> +> **SHOULD** reduce memory usage to under XXX megabytes -Unsuspending an app loads it's previous state back into memory and -transitions it to the started state, so that it may be launched back -into its original state. +**TODO**: discuss ^^ -The platform may unsuspend apps for any number of reasons that are out -of scope for this document. +### 4.6. Resuming an app + +Resuming an app allows it to reallocate graphics composition and +reload any resources it might have deallocated during `suspend()`. + +The platform may unsuspend apps so they can access more resources or +in preperation to activate them. To unsuspend an app, platforms **MUST** use the following process. @@ -505,15 +639,12 @@ this section does not apply. At this point, the app **MUST** be in the `SUSPENDED` state. -Next, the platform **MUST** load the app's saved memory state back into -an appropriate container. If this fails for any reason then the unsuspend -operation failed and should error out and the app **MUST** be considered -unloaded. Additionally, the app **MUST** be removed from the list of -suspended apps, so that an unsuspend operation is not attempted again. +Next, the platform **MUST** remove any restrictions on access the graphics +compositor. -Suspended apps **MUST** provide the `xrn:firebolt:capability:lifecycle:management` +Suspended apps **MUST** provide the `xrn:firebolt:capability:lifecycle:application` capability, so the platform **MUST** call the app's implementation of -`LifecycleManagement.resume()`: +`Application.resume()`: The platform **MUST** dispatch the `Lifecycle.onRequestResume` notification to the app, and wait for `appResumeTimeout` milliseconds @@ -526,13 +657,20 @@ may be moved to the `RUNNING` state. If the app times out or makes a `resumeError` call, then the app **MUST** be terminated. -### 3.7. Putting an app to sleep +During the `resume()` transition, apps **SHOULD** reallocate graphics +composition and other necessary resources. + +### 4.7. Putting an app to sleep TBD -### 3.8. Waking an app from sleep +Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:sleep` capability **MUST** implement `Sleepable.sleep()`. + +### 4.8. Waking an app from sleep TBD -### 3.9. Unloading an app +Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:sleep` capability **MUST** implement `Sleepable.wake()`. + +### 4.9. Unloading an app Unloading an app transitions it out of memory, so that it is no longer using resources on the device. @@ -550,30 +688,22 @@ does not need to happen. At this point, the app **MUST** be in the `RUNNING` state. -If an app provides the `xrn:firebolt:capability:lifecycle:management` +If an app provides the `xrn:firebolt:capability:lifecycle:application` capability, then the platform **MUST** call the app's implementation of -`LifecycleManagement.unload()`: +`Application.unload()`: -> The platform **MUST** dispatch the `Lifecycle.onRequestUnload` -> notification to the app, and wait for `appUnloadTimeout` milliseconds -> for either a `Lifecycle.finished` or `Lifecycle.unloadError` +> The platform **MUST** dispatch the `Lifecycle.onRequestDestroy` +> notification to the app, and wait for `appDestroyTimeout` milliseconds +> for either a `Lifecycle.destroyResult` or `Lifecycle.destroyError` > call in response. > -> Once the platform receives the `finished` call, then the platform +> Once the platform receives the `destroyResult` call, then the platform > may proceed with app unloading. > -> If the app times out or makes an `activateError` call, then the app +> If the app times out or makes an `destroyError` call, then the app > **MUST** be terminated. -If an app does not provide the capability, then: - -> The platform **MUST** dispatch the `onUnloading` notification and -> wait `appUnloadTimeout` milliseconds for the app to call `Lifecycle.finished` -> -> When the `finished` call occurs, or the timeout is reached, the platform -> **MUST** unload and terminate the app. - -### 3.10. Terminating an app +### 4.10. Terminating an app Terminating an app removes it from memory without dispatching any state changes. @@ -587,71 +717,203 @@ held by the app and it's container being freed up. Platforms **MAY** terminate an app when needed but **SHOULD NOT** do this in place of graceful [unloading](#38-unloading-an-app). -## 4. Core SDK APIs +## 5. Getting the current status +The Lifecycle module **MUST** provide a `status` property API that +returns the current lifecycle transition of the app if one is in +progress, otherwise, it returns the current state. + +If an app is in a transtition from one state to another, then it +**MUST** be considered in the transition until +such time as the app's implementation of the [transition](#4-lifecycle-state-transitions) has returned +and the platfrom has finshed the transition. + +The `status` API **MUST** have a corresponding `onStatusChanged` +notification. + +The `status` API must have one of the following values: + +- `Initializing` +- `Creating` +- `Running` +- `Suspending` +- `Suspended` +- `Resuming` +- `Activating` +- `Active` +- `Deactivating` +- `Sleeping` +- `Waking` +- `Destroying` + +## 6. Activity Navigation +Typically navigation is handled either when the app is activated, via +the `intent` parameter of the `activate` method, or by internal input +within the app. + +There are other times when the platform needs to inform an app of a user's +intent to navigate when the app is already `ACTIVE`, e.g. when a voice +command is executed or a soft remote sends a message while the app is in +focus. + +In these cases, the platform **MUST** call the `Activity.navigate` method +of the App, and pass the `intent`. + +Within the `navigate()` method, the app **MUST** inspect the `intent` +parameter and prepare to fulfill a specific [Navigation Intent](../intents/navigation.md) for +the app, which may include: + + - Loading any metadata needed to display the user's intended content. + - Performing any entitlement checks to decide whether to display a player or a purchase flow + - Any other steps necesary to present content to the user quickly + +## 7. Launch Parameters +The `LaunchParameters` type is an object with the following properties: + +```typescript +type LaunchParameters = { + preload: boolean, + privacy: { + limitAdTrackign: boolean + } +} +``` + +^^^ need to dicuss what we need in here, and also what to do w/ US-centric stuff like 'limitAdTracking' + +## 8. Core SDK APIs The following APIs are exposed by the Firebolt Core SDK. -### 4.1. LifecycleManagement Interface -The `LifeCycleManagement` interface is implemented by Apps to provide resource management. +### 8.1. Application Interface +The `Application` interface is implemented by Apps to provide resource management around memory as an Application moves through the core lifecycle states: + +- `INITIALIZING` +- `RUNNING` +- `SUSPENDED` + +All apps **MUST** implement the Application interface. ```typescript -interface LifecycleManagement { +interface Application { function create(params: LaunchParameters): Promise; - function activate(intent: NavigationIntent): Promise; - function deactivate(): Promise; function suspend(): Promise; function resume(): Promise; + function destroy(): Promsie; +} + +``` + +| Method | Description | +| -------- | ----------- | +| `create()` | Called when the platform is ready to create the lifecycle session for the app. Only called only once, during the `INITIALIZING` state. | +| `suspend()` | Called when the platform requires the app to deallocate its graphics compositor and reduce memory as much as possible. This may be called anytime the app is in the `RUNNING` state. | +| `resume()` | Called when the platform wants the app to reallocate its graphics compositor and prepare to be potentially used. | +| `destroy()` | Called when the platform is ready to end the lifecycle session for the app. Only called once. | + +### 8.2. Activity Interface +The `Activity` interface is implemented by Apps that provide user perceptible experiences, e.g. visible, audible, or user input. + +These types of apps require additional resource management + +```typescript +interface Activity { + function activate(intent: NavigationIntent): Promise; + function deactivate(): Promise; + function navigate(intent: NavigationIntent): Promise; +} +``` + +| Method | Description | +| -------- | ----------- | +| `activate()` | Called when the platform is ready to move the app into the `ACTIVE` state where it will contribute to the user-perceptible experience, typically via presenting the app on screen. A/V resources are allowed to be allocated when this is called if the app has permission to use them and the platform has the necesarry resources available.| +| `deactivate()` | Called when the platform is ready to move the app out of the `ACTIVE` state and into `RUNNING` to deallocate any A/V decoders. | +| `navigate()` | Called when an app is already `ACTIVE` and the platform wants the app to navigate to a new [Navigation Intent](../intents/navigation.md) | + +### 8.3. Sleepable Interface +The `Sleepable` interface is implemented by Apps that are able to handle being put to sleep and then woken at a later point in time. + +These types of apps require additional resource management to reestablish network connections and may also require additional thread safety checks. + +```typescript +interface Sleepable { + function sleep(): Promise; + function wake(): Promise; } ``` +| Method | Description | +| -------- | ----------- | +| `sleep()` | Called when the platform is ready to move the app into the `SLEEPING` state where it will no longer have access to the CPU. | +| `wake()` | Called when the platform is ready to move the app out of the `SLEEPING` state and into `SUSPENDED`. Network connections should be reestablished here. | + +### 8.4. Example App + Example: ```typescript import { Lifecycle } from '@firebolt-js/sdk' -class ExampleLifecycleManager implements Lifecycle.LifecycleManagement { - function create(params: LaunchParameters): Promise { +class ExampleApplication implements Lifecycle.Application, Lifecycle.Activity { + + async function create(params: LaunchParameters): void { const limitTracking:boolean = params.limitAdTracking } - function activate(intent: NavigationIntent): Promise { - if (intent.action === "playback") { - console.log("Deep link to playback of " + intent.data.entityId) - } + async function activate(intent: NavigationIntent, session: ProviderSession): void { + // reallocate A/V + + // handle intent + return navigate(intent) } - function deactivate(): Promise { + async function deactivate(): void { // free up MSE video.src = "" video.load() } - function suspend(): Promise { - // unload all images - document.querySelectorAll("img").forEach((img:HTMLElement) => { - img.parentElement.removeChild(img) - }) + async function navigate(intent: NavigationIntent): void { + if (intent.action === "playback") { + console.log("Deep link to playback of " + intent.data.entityId) + } + } + + async function suspend(): void { + // The quicket way to save memory & CPU is to clear the DOM + document.body.innerHTML = '' } - function resume(): Promise { - // reload images + async function resume(): void { + // recreate UI + const ux = await createMyUX(); + document.body.appendChild(ux) + } + + async function destroy(): void { + // final analytics call + await fetch("https://example.com/app/metrics/destroy"); } } -Lifecycle.provide("xrn:firebolt:capability:lifecycle:management", new ExampleLifecycleManager()) +Lifecycle.provide([ + "xrn:firebolt:capability:lifecycle:application", + "xrn:firebolt:capability:lifecycle:activity" + ], new ExampleApplication()) ``` +**NOTE**: we need to support passing an array of capabilities for a single class. + See the [Firebolt API Documentation](https://developer.comcast.com/firebolt/core/sdk/latest/api/) for details around syntax, etc. -### 4.2. Ready +### 8.5. Ready The Lifecycle.ready() API allows an app to notify the platform that it is initialized and ready to be displayed to the end user. This method **MUST NOT** be called more than once. -### 4.3. Close +### 8.6. Close The Lifecycle.close() API allows an app to request that it be closed by the platform. @@ -678,15 +940,15 @@ provided. For example, apps closed due to the RCU are less likely to be unloaded since it may be an accidental RCU press, whereas an explicit user exit is more likely to be intentional. -### 4.4. State +### 8.7. State The Lifecycle.state() method provides convenient access to the current state, and is implemented by the Core SDK listening to all state notifications. This method **MUST NOT** be asynchronous. -## 5. Lifecycle Configuration +## 9. Lifecycle Configuration -TODO: do we want these to be per spec, per distributor, or per app? +**TODO**: do we want these to be per spec, per distributor, or per app? In order to enable Firebolt Certification of a device's Lifecycle Management features, the device **MUST** support the following @@ -696,9 +958,13 @@ for state transitions. The LifecyclePolicy fields are: -| Field | Type | Required | Description | +| Field | Type | Required | Description | |-------------------|-------|----------|-------------------------------------| -| appReadyTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating a loaded app that did not call ready(). | -| appFinishedTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onUnloading notification before finally unloading an app that did not call finished(). | -| appSuspendTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestSuspend notification before finally suspending (or terminating) an app that did not call onSuspendResponse(). | -| appStartedTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestStarted notification before finally inactivating (or terminating) an app that did not call onStartedResponse(). | +| appCreateTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating a loaded app that did not finish `create()`. | +| appDestroyTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onUnloading notification before terminating an app that did not finsih `destroy()`. | +| appActivateTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestActivate notification before terminating an app that did finish `activate()` | +| appDeactivateTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestDeactivate notification before terminating an app that did finish `deactivate()` | +| appSuspendTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestSuspend notification before terminating an app that did finish `suspend()` | +| appResumeTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestResume notification before terminating an app that did finish `resume()` | +| appSleepTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestSleep notification before terminating an app that did finish `sleep()` | +| appWakeTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestWake notification before terminating an app that did finish `wake()` | diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index 91710bd6d..65c7abfc1 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -25,9 +25,10 @@ TBD... - [3. Display](#3-display) - [3.1. Display vs Lifecycle](#31-display-vs-lifecycle) - [4. Overlay](#4-overlay) -- [5. Off-screen Video](#5-off-screen-video) -- [6. Platform-provided Loading Screen](#6-platform-provided-loading-screen) -- [7. App-provided Loading Screen](#7-app-provided-loading-screen) +- [5. Background Audio](#5-background-audio) +- [6. Picture-in-Picture Video](#6-picture-in-picture-video) +- [7. Platform-provided Loading Screen](#7-platform-provided-loading-screen) +- [8. App-provided Loading Screen](#8-app-provided-loading-screen) ## 2. Focus @@ -40,41 +41,47 @@ The `Presentation` module **MUST** have a `display` string property that returns | Value | Description | |-------|-------------| -| `FULLSCREEN` | The app is displayed such that the dimensions fill the entire screen | -| `OFFSCREEN` | The app is not displayed on the screen at all | -| `SCALED` | The app is displayed at a size smaller than the entire screen but at least 25% of the width or height | -| `THUMBNAIL` | The app is displayed at a size smaller than 25% of the width or height of the entire screen | -| `LOADING` | The platform is displaying a loading screen while the app loads | -| `NONE` | The app does not have a graphics surface allocated | +| `fullscreen` | The app is displayed such that the dimensions fill the entire screen | +| `offscreen` | The app is has it's graphics surface attached, but not displayed on the screen at the moment, e.g. scrolled out of view | +| `scaled` | The app is displayed at a size smaller than the entire screen but at least 25% of the width or height | +| `thumbnail` | The app is displayed at a size smaller than 25% of the width or height of the entire screen | +| `loading` | The platform is displaying a loading screen while the app prepares to be activated | +| `none` | The app does not have it's graphics surface attached to the screen | ### 3.1. Display vs Lifecycle Each Lifecycle state only supports certain display states: -| Lifecycle | Supported Displays | -|----------------|-------------------------------------| -| `INITIALIZING` | `NONE`, `LOADING` | -| `ACTIVE` | `FULLSCREEN`, `SCALED`, `THUMBNAIL` | -| `INACTIVE` | `OFFSCREEN` | -| `SUSPENDED` | `NONE`, `LOADING` | +| Lifecycle | Supported Displays | +|----------------|--------------------------------------------------| +| `initializing` | `none`, `loading` | +| `active` | `fullscreen`, `scaled`, `thumbnail`, `offscreen` | +| `running` | `none`, `loading` | +| `suspended` | `none`, `loading` | +| `sleeping` | `none`, `loading` | -See [Off-screen Video](#2-offscreen-video) for an exception to this. +See [Picture-in-picture](#6-picture-in-picture-video) and [Background Audio](#5-background-audio) for exceptions to this. ## 4. Overlay The `Presentation` module **MUST** have an `overlay` string property that returns one of the following values: | Value | Description | |-------|-------------| -| `ICON` | There is an informative icon, e.g. volume, on top of the app. | -| `BAND` | There is a horizontal overlay at the top or bottom of the app. | -| `SIDEBAR` | There is a vertical sidebar covering less than 33% of the app on one side. | -| `BLOCKED` | There is a significantly sized UX covering a majority of the app. | +| `icon` | There is an informative icon, e.g. volume, on top of the app. | +| `band` | There is a horizontal overlay at the top or bottom of the app. | +| `sidebar` | There is a vertical sidebar covering less than 33% of the app on one side. | +| `blocked` | There is a significantly sized UX covering a majority of the app. | -## 5. Off-screen Video -If an app has the `xrn:firebolt:capability:presentation:offscreen-audio` or `-video` capability, then it can keep playing video/audio when the app is off-screen. +## 5. Background Audio +If an app has the `xrn:firebolt:capability:media:background-audio`, then it can keep playing audio/video when the app is in the `none` display state and the audio will be played for the user. -When an app has this capability, it **MAY** be put into the `OFFSCREEN` display state while in the `ACTIVE` Lifecycle state. +When an app has this capability, it **MAY** be put into the `none` display state while in the `active` Lifecycle state. -## 6. Platform-provided Loading Screen +## 6. Picture-in-Picture Video +If an app has the `xrn:firebolt:capability:media:picture-in-picture`, then it can keep playing audio/video when the app is in the `none` display state and the audio & video will be presented to the user in bounding box determined by the platform. Note that this does not include the entire UX of the app, just the active media pipeline. + +When an app has this capability, it **MAY** be put into the `none` display state while in the `active` Lifecycle state. + +## 7. Platform-provided Loading Screen Most apps will leverage a platform-provided loading screen. If an app provides the `xrn:firebolt:capability:presentation:loading-screen` @@ -95,24 +102,20 @@ the loading screen is displayed. See [Lifecycle](./index.md) for more info on launching. -## 7. App-provided Loading Screen -If an app provides the `xrn:firebolt:capability:presentation:loading-screen` +## 8. App-provided Loading Screen +If an app provides the `xrn:firebolt:capability:lifecycle:loading-screen` capability, then the platform **MAY** invoke this capability in some situations. - -**TODO**: Remove metrics collection from loading screen / usability. -**TODO**: talk to Ben Grey about detecting loading screen animation automatically... - In order for an app and use an app-provided loading screen, the app **MUST** -provide the `xrn:firebolt:capability:lifecycle:management` capability. If the app +provide the `xrn:firebolt:capability:lifecycle:activity` capability. If the app does not provide this capability, then app-provided loading screens **MUST NOT** but invoked for the app. Apps that provide the loading screen capability **MUST** be made visible at -the very beginning of the `LifecycleManagement.activate()` transition, rather +the very beginning of the `Activity.activate()` transition, rather than at the end. -The presentation state of the app **MUST** be `FULLSCREEN` or `SCALED` during +The presentation state of the app **SHOULD NOT** be `none` at any time during the `activate()` transition. See [Lifecycle](./index.md) for more info on loading and activating apps. From 069ead619ab0db664668f61f5ad088a14524c239 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Fri, 13 Oct 2023 14:35:55 -0400 Subject: [PATCH 15/43] Update index.md --- requirements/specifications/lifecycle/index.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 3db9a9ef9..5c099a095 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -10,9 +10,11 @@ See [Firebolt Requirements Governance](../../governance.md) for more info. | Cody Bonney | Charter | | Bart Catrysse | Liberty | | Tim Dibben | Sky | +| Piotr Kobzda | Liberty | | Jeremy LaCivita | Comcast | | Ramprasad Lakshminarayana | Sky | | Kevin Pearson | Comcast | +| Jan Pedersen | Sky | | Peter Yu | Comcast | From 218cefb5039a533fe1bbe11b70499bc35910bf60 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Thu, 19 Oct 2023 15:23:32 -0400 Subject: [PATCH 16/43] fix: Updates from today's working group --- .../specifications/lifecycle/index.md | 312 +++++++----------- src/js/github.io/markdown.mjs | 62 ++++ 2 files changed, 184 insertions(+), 190 deletions(-) create mode 100644 src/js/github.io/markdown.mjs diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 5c099a095..f1ba59f21 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -6,7 +6,7 @@ See [Firebolt Requirements Governance](../../governance.md) for more info. | Contributor | Organization | | -------------- | -------------- | -| Andrew Bennet | Sky | +| Andrew Bennett | Sky | | Cody Bonney | Charter | | Bart Catrysse | Liberty | | Tim Dibben | Sky | @@ -23,40 +23,39 @@ See [Firebolt Requirements Governance](../../governance.md) for more info. This document describes the requirements that Firebolt platforms and Firebolt applications must fulfill when managing App Lifecycles. *App Lifecycle* refers to the lifecycle of an individual app from the time -it is launched/loaded to the time it is unloaded and all runtime +it is launched/loaded to the time it is destroyed and all runtime resources are discarded. -*Loading* an app refers to fetching the initial resources, e.g. the +*Initializing* an app refers to fetching the initial resources, e.g. the app-manifest and index.html, and loading them into a container capable of running the app, e.g. a web browser. *Activating* an app refers to the process of getting an app into a state where it is presented as part of the user-perceptible experience (e.g. -visible, audible, or responding to input). This may include *loading* +visible, audible, or responding to input). This may include *initializing* the app first, if needed. For details on presentation, see [App Presentation](./presentation.md). *Closing* an app refers to the process of getting an app out of a state where it is the primary user experience (e.g not visible, not audible, -and not responding to input). This **does not** involve *unloading* the +and not responding to input). This **does not** involve *destroying* the app. -*Suspending* an app refers to reducing the app's memory usage and CPU -cycles, and deallocating its graphics compositors so that other apps -will have more resources available. +*Suspending* an app refers to reducing the app's memory and CPU usage, +and deallocating its graphics surface so that other apps will have +more resources available. -*Resuming* an app refers to reallocating its graphics compositors and +*Resuming* an app refers to reallocating its graphics surface and resuming normal CPU and memory allocations. -*Destroying* / unloading an app refers to the process of notifying an app to do any +*Destroying* an app refers to the process of notifying an app to do any needed clean up, and then *terminating* it. *Terminating* an app refers to shutting down the app's container and reclaiming any memory, CPU, etc. that it was consuming. -*Sleeping* an app refers to turning off all CPU cycles for that app -and possibly copying the app's memory stack out of RAM so it may be -revived later. +*Sleeping* an app refers to putting the app into a state where it does +not use CPU cycles, which allows the platform to optimise memory consumption. *Waking* an app refers to copying a Sleeping app back into the memory space of a compatible process so that it resumes where it left @@ -71,7 +70,6 @@ off. - [2.5. Sleeping](#25-sleeping) - [3. Getting the current state](#3-getting-the-current-state) - [4. Lifecycle State Transitions](#4-lifecycle-state-transitions) - - [4.1. Loading an app](#41-loading-an-app) - [4.2. Initializing an app](#42-initializing-an-app) - [4.3. Activating an app](#43-activating-an-app) - [4.4. Deactivating an app](#44-deactivating-an-app) @@ -79,9 +77,8 @@ off. - [4.6. Resuming an app](#46-resuming-an-app) - [4.7. Putting an app to sleep](#47-putting-an-app-to-sleep) - [4.8. Waking an app from sleep](#48-waking-an-app-from-sleep) - - [4.9. Unloading an app](#49-unloading-an-app) + - [4.9. Destroying an app](#49-destroying-an-app) - [4.10. Terminating an app](#410-terminating-an-app) -- [5. Getting the current status](#5-getting-the-current-status) - [6. Activity Navigation](#6-activity-navigation) - [7. Launch Parameters](#7-launch-parameters) - [8. Core SDK APIs](#8-core-sdk-apis) @@ -103,7 +100,7 @@ to state. A Firebolt app, once running, **MUST** be in one of several states and **MUST NOT** be in more than one state at a time. -As an app changes states the platform will invoke specific app-provided transition methods, see [Transitions](#3-lifecycle-state-transitions), for more on this. +As an app changes states the platform will invoke specific app-provided transition methods, see [Transitions](#4-lifecycle-state-transitions), for more on this. ![Lifecycle States](../../images/specifications/lifecycle/lifecycle-states.png) @@ -122,7 +119,7 @@ As an app changes states the platform will invoke specific app-provided transiti | F/S | File System | | Net | Network | | GFX | Graphics rendering | -| SFC | Graphics compositor surface | +| SFC | Graphics surface | | A/V | Audio Video Decoder | | ↓ | Limited | | ✔ | Normal access | @@ -132,10 +129,10 @@ As an app changes states the platform will invoke specific app-provided transiti This is the initial state an app exists from the moment it starts receiving CPU cycles. -When an app starts running is **MUST** initialize the Firebolt SDK as quickly as possible -and then wait for the `Application.create()` inteface to be called before doing further setup. +When an app starts running it **MUST** initialize the Firebolt SDK as quickly as possible +and then wait for the `Application.create()` interface to be called before doing further setup. -Apps in this state **MUST NOT** have access to the graphics compositor. +Apps in this state **MUST NOT** have a graphics surface allocated yet. Apps in this state **MUST NOT** be visible. @@ -145,6 +142,8 @@ Apps in this state **MUST NOT** have access to the audio-video decoder. Apps in this state **MUST NOT** use the media pipeline. +See [Initializing an app](#42-initializing-an-app) for more information. + ### 2.2. Running This state allows an app to be running and ready to go, but not actively part @@ -153,7 +152,10 @@ of the user-perceptible experience. Running apps can execute code, but are not [Presented](./presentation.md) to the user, do not receive any input from RCUs, and cannot use the video decoder. -Apps in this state **MUST** have access to the graphics compositor. +Apps in this state **MUST** have access to the graphics surface. + +Apps in this state **MAY** have created, allocated a graphics surface +but it will not be made visible by platform compositor. Apps in this state **MUST NOT** be visible. @@ -190,19 +192,12 @@ they have permission to the `xrn:firebolt:capability:decoder:video` capability and the platform has an available software or hardware decoder. -Apps in this state **MUST** have access to the graphics compositor. - -Apps in this state **SHOULD NOT** have performance negatively impacted -by other processes on the device. +Apps in this state **MUST** have access to the graphics surface. -Apps in this state **SHOULD** use less than XXX megabytes of RAM. - -**TODO**: do we want tiers of apps? per-app config? +Apps in this state **SHOULD** reduce memory usage, if possible. When an app transitions to this state, the platform **MUST** dispatch -the `Lifecycle.onActive` notification with the current state and -previous states. - +the `Lifecycle.onStateChanged` notification with the current state. ### 2.4. Suspended @@ -211,7 +206,8 @@ This state allows an app to remain in memory and consume fewer resources. Suspended apps can execute code, but are not [Presented](./presentation.md) to the user, do not receive any input from RCUs, and cannot use the video decoder. -Apps in this state **MUST NOT** have access to the graphics compositor. +Apps in this state **MUST NOT** have a graphics surface allocated any +longer. It **MUST** have been deallocated in the `suspend()` transition. Apps in this state **MUST NOT** be visible. @@ -219,16 +215,9 @@ Apps in this state **MUST NOT** receive RCU key presses. Apps in this state **MUST NOT** have access to the audio-video decoder. -Apps in this state **SHOULD NOT** have performance negatively impacted -by other processes on the device. - -Apps in this state **SHOULD** use less than XXX megabytes of RAM. +Apps in this state **SHOULD** further reduce memory usage (more so than in the `active` state), if possible. -**TODO**: do we want tiers of apps? per-app config? - -When an app transitions to this state, the platform **MUST** dispatch -the `Lifecycle.onSuspended` notification with the current state and -previous states. +**TODO**:: add all the transition pre-requisites, e.g. Apps **MUST** only enter this state from the `SUSPENDED` state, via the `sleep()` interface. ### 2.5. Sleeping @@ -236,34 +225,25 @@ This state allows an app to be copied from memory to local storage and then terminated to save resources. Subsequently, the app may be copied back into memory, and resume in the same state. -Apps **MUST** be able to subscribe to the Lifecycle.onSleeping -notification without errors regardless of whether the platform supports -suspending apps. For platforms that do not support it the notification -will just never fire. - *If* a platform does not support the -`xrn:firebolt:capability:lifecycle:sleep`, then the following +`xrn:firebolt:capability:lifecycle:sleepable` capability, then the following requirements **MUST NOT** be fulfilled, even partially. A platform **MUST NOT** use the APIs documented here to implement an alternate, non-compliant version of the app sleeping feature. -*If* a platform supports the `xrn:firebolt:capability:lifecycle:sleep` +*If* a platform supports the `xrn:firebolt:capability:lifecycle:sleepable` capability, then the following requirements **MUST** be fulfilled. -Apps **MUST** only enter this state from the `RUNNING` state, via -the `suspend()` interface. +Apps **MUST** only enter this state from the `SUSPENDED` state, via +the `sleep()` interface. -*Immediately before* an app transitions to this state, the platform -**MUST** dispatch the Lifecycle.onSleeping notification with the -current state and previous states. +If a platform supports copying sleeping apps memory out of RAM then: -The platform **MUST** save the app's memory space at this point, so -that it may be unsuspended later. If storing the app\'s memory space -fails for any reason, then the app **MUST** be treated as though it -were unloaded. - -Finally, the app and its container **MUST** be removed from memory -and have other resources released as well. +> The platform **MAY** save the app's memory space at this point, so +> that it may be woken later. +> +> Finally, the app and its container **MAY** be removed from memory +> and have other resources released as well. ## 3. Getting the current state The Lifecycle module **MUST** provide a `state` property API that @@ -283,9 +263,10 @@ The `state` API must have one of the following values: - `Running` - `Suspended` - `Active` +- `Sleeping` -Note that an app could never call `state` while the app is in the -`Sleeping` state, so it is not a valid value. +Note that the `onStateChanged` notification **MUST** never be dispatched +for the `Sleeping` state since it would not be received anyway. ## 4. Lifecycle State Transitions There are several state transitions where the app and the platform need @@ -304,8 +285,8 @@ methods from the `Application` interface: | | CPU | RAM | Net | GFX | A/V | Description | |----------------|-----|-----|-----|-----|-----|-------------------------------------------------------------------------------| | `create()` | ✔ | ✔ | ✔ | ✔ | | Creation of the app, from a Firebolt Lifecycle perspective. | -| `suspend()` | ✔ | ✔ | ✔ | ✔ | | Reduce memory usage and CPU cycles, deallocate graphics compositors. | -| `resume()` | ✔ | ✔ | ✔ | ✔ | | Graphics compositors reallocated, full memory usage and normal CPU cycles. | +| `suspend()` | ✔ | ✔ | ✔ | ✔ | | Reduce memory and CPU usage, deallocate graphics surface. | +| `resume()` | ✔ | ✔ | ✔ | ✔ | | graphics surface reallocated, full memory usage and normal CPU cycles. | | `destroy()` | ✔/↓ | ✔/↓ | ✔ | | | Preprare for the app to be deallocated and removed from execution. CPU & RAM based on previous state. | If an app implements the `Activity` interface, then the following transitions may be invoked: @@ -323,7 +304,7 @@ Finally, if an app implements the `Sleepable` interface, then the following tran | `sleep()` | ↓ | ↓ | ✔ | | | Prepare for an extended period with no CPU cycles given to app. | | `wake()` | ↓ | ↓ | ✔ | | | Cleanup after an extended period with no CPU, e.g. reset timers / network connections. | -These transition APIs are asynchronous, and each one has a platform-configurable timeout that specifies how long the app has to fulfill the method. +All of these transition APIs are blocking, and each one has a platform-configurable timeout that specifies how long the app has to fulfill the method. The platform **MUST** never invoke a transions on an app when that app is already running a transition. @@ -338,9 +319,9 @@ This includes: By providing an implementation of the `xrn:firebolt:capability:lifecycle:application` interface, an app can -influence how resources are managed during these state transitions. See [Application Interface](#71-application-interface) for more info. +influence how resources are managed during these state transitions. See [Application Interface](#81-application-interface) for more info. -User-facing apps **MUST** implement the `Activity` interface, `xrn:firebolt:capability:lifecycle:activity`. +User-facing apps **MUST** implement the `Activity` interface, `xrn:firebolt:capability:lifecycle:activatible`. This includes: @@ -349,41 +330,13 @@ This includes: - `Application.navigate()` By providing an implementation of the -`xrn:firebolt:capability:lifecycle:activity` interface, an app can -influence how resources are managed during these state transitions. See [Activity Interface](#72-activity-interface) for more info. - -### 4.1. Loading an app - -**TODO**: Should this be it's own spec, and out of scope? - -Loading an app fetches the initial resources, e.g. the app-manifest and -index.html, and loads them into a container capable of running the app, -e.g. a web browser. This happens before any Lifecycle transition occur, -because part of the loading process is connecting to the Firebolt SDK. - -The platform may load apps for any number of reasons that are out of -scope for this document. - -Loading an app requires the platform to know the URL to the app's -Firebolt manifest. - -To load an app, platforms **MUST** use the following process. - -First, fetch the app manifest and validate its signature (See 'App -Manifests' for more info). - -The app **MUST** be terminated if the signature is not valid and the -manifest's releaseStatus is not developer. - -Next, if the app is an HTML/JavaScript app, then load the app's initial -URL (from the app manifest) into the browser. - -**TODO**: add more details here, e.g. containers, graphics, media pipeline, ram +`xrn:firebolt:capability:lifecycle:activatible` interface, an app can +influence how resources are managed during these state transitions. See [Activity Interface](#82-activity-interface) for more info. ### 4.2. Initializing an app Once an app is loaded it **MUST** be initialized immediately. -Initialzing consists of three parts: +Initializing consists of three parts: - Registration of the Firebolt Application provider - Any other code that automatically runs within the app executable @@ -406,7 +359,7 @@ Otherwise, the platform **MUST** call the app's implementation of > and is ready to be activated and presented to the user. > > If the app times out or makes a `createError` call, then the app -> **MUST** be terminated. +> **MUST** be immediately terminated by the platform. Apps **SHOULD** set up any Firebolt event listeners either before calling `Lifecycle.provide` or during `create()`, since the platform will wait until @@ -421,7 +374,7 @@ global style sheet or a logo used throughout the experience, during initialization. During the `create()` transition, apps **MUST** inspect the `params` -parameter for [LaunchParameters](#7-launch-parameters) and prepare to fulfill the +parameter for [Parameters](#7-launch-parameters) and prepare to fulfill the provided launch configuration. Example Launch Parameters: @@ -429,6 +382,7 @@ Example Launch Parameters: ```json { "preload": true, + "launchMode"?: "running" | "suspend", "privacy": { "limitAdTracking": true } @@ -437,10 +391,8 @@ Example Launch Parameters: **TODO**: discuss this ^^ -Once the `create` method returns the app **MUST** be transitioned to -the `RUNNING` state within 100 milliseconds. - -**TODO** Discuss ^^ +Once the `create` method returns the app **MUST** be immediately transitioned to +the `RUNNING` state. ### 4.3. Activating an app @@ -457,18 +409,18 @@ To activate an app, platforms **MUST** use the following process. If the app is already in the `ACTIVE` state, then it is already activated and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting -to activate an app that is already in the foreground state and the +to activate an app that is already in the active state and the remainder of this section does not apply. -If the app is not loaded, then the platform **MUST** [load](#31-loading-an-app) it first. +If the app is not loaded, then the platform **MUST** [load](undefined) it first. -If the app is not initialized, the platform **MUST** [initialize](#32-initializing-an-app) it first. +If the app is not initialized, the platform **MUST** [initialize](#42-initializing-an-app) it first. -If the app is suspended, then it **MUST** be [resumed](#37-resuming-an-app) first. +If the app is suspended, then it **MUST** be [resumed](#46-resuming-an-app) first. At this point, the app **MUST** be in the `RUNNING` state. -If an app provides the `xrn:firebolt:capability:lifecycle:activity` +If an app provides the `xrn:firebolt:capability:lifecycle:activatible` capability, then the platform **MUST** call the app's implementation of `Activity.activate()`: @@ -526,6 +478,8 @@ dispatch any *additional* lifecycle notifications when attempting to close an app that is already in the `RUNNING` state and the remainder of this section does not apply. +**TODO**: list out all possible transition "interuptions" and make sure they are described in this doc. + If an app is in the `initializing` state, then it is not If an app is already performing a `deactivate()` transition, the platform @@ -534,19 +488,19 @@ closure to complete, and the remainder of this section does not apply. If an app is already performing an `activate()` transition, the platform **MUST** wait for the activate call to succeed or fail and then skip the -remaining [activation steps](#33-activating-an-app). +remaining [activation steps](#43-activating-an-app). -If an app is currently [initializing](#32-initializing-an-app), the +If an app is currently [initializing](#42-initializing-an-app), the platform **MUST** wait for initialization to succeed or fail and then skip any activation that may have been pending. -If an app is currently [unloading](#38-unloading-an-app) then the app -cannot be closed and the platform **MUST NOT** close it, and the +If an app is currently in a [destroy](#49-destroying-an-app) transition then +the app cannot be closed and the platform **MUST NOT** close it, and the remainder of this section does not apply. At this point, the app **MUST** be in the `ACTIVE` state. -If an app provides the `xrn:firebolt:capability:lifecycle:application` +If an app provides the `xrn:firebolt:capability:lifecycle:activatible` capability, then the platform **MUST** call the app's implementation of `Activity.deactivate()`: @@ -564,7 +518,7 @@ capability, then the platform **MUST** call the app's implementation of During the `deactivate()` transition, the app **MUST** deallocate any A/V decoders. -The platform **MAY** begin to transition your app out of view as soon as +The platform **MAY** begin to transition the app out of view as soon as `deactivate()` is called. ### 4.5. Suspending an app @@ -600,8 +554,8 @@ happen. At this point, the app **MUST** be in the `RUNNING` state. -If an app provides the `xrn:firebolt:capability:lifecycle:application` -capability, then the platform **MUST** call the app's implementation of +Since every app **MUST** provide the `xrn:firebolt:capability:lifecycle:application` +capability, the platform **MUST** call the app's implementation of `Application.suspend()`: > The platform **MUST** dispatch the `Lifecycle.onRequestSuspend` @@ -613,30 +567,28 @@ capability, then the platform **MUST** call the app's implementation of > may be moved to the `SUSPENDED` state. > > If the app times out or makes a `suspendError` call, then the app -> **MUST** be [unloaded](#38-unloading-an-app). +> **MUST** be [destroyed](#49-destroying-an-app). During the `suspend()` transition, the app: -> **MUST** deallocate any graphics compositors. +> **MUST** deallocate any graphics surface. > -> **SHOULD** reduce memory usage to under XXX megabytes - -**TODO**: discuss ^^ +> **SHOULD** reduce memory usage, if possible. ### 4.6. Resuming an app Resuming an app allows it to reallocate graphics composition and reload any resources it might have deallocated during `suspend()`. -The platform may unsuspend apps so they can access more resources or +The platform may resume apps so they can access more resources or in preperation to activate them. -To unsuspend an app, platforms **MUST** use the following process. +To resume an app, platforms **MUST** use the following process. -If an app is not in the `SUSPENDED` state, then it cannot be unsuspended +If an app is not in the `SUSPENDED` state, then it cannot be resumed and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to -unsuspend an app that is not in the `SUSPENDED` state and the remainder of +resume an app that is not in the `SUSPENDED` state and the remainder of this section does not apply. At this point, the app **MUST** be in the `SUSPENDED` state. @@ -665,34 +617,36 @@ composition and other necessary resources. ### 4.7. Putting an app to sleep TBD -Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:sleep` capability **MUST** implement `Sleepable.sleep()`. +Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement `Sleepable.sleep()`. + +TODO: if you don't call provide, we won't do this. ### 4.8. Waking an app from sleep TBD -Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:sleep` capability **MUST** implement `Sleepable.wake()`. +Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement `Sleepable.wake()`. -### 4.9. Unloading an app +### 4.9. Destroying an app -Unloading an app transitions it out of memory, so that it is no longer +Destroying an app transitions it out of memory, so that it is no longer using resources on the device. -The platform may unload apps for any number of reasons that are out of +The platform may destroy apps for any number of reasons that are out of scope for this document. -To unload an app, platforms **MUST** use the following process. +To destroy an app, platforms **MUST** use the following process. -If an app is not in the `RUNNING` state, then it cannot be unloaded and +If an app is not in the `RUNNING` state, then it cannot be destroyed and there is no need to do anything else. The platform **MUST NOT** dispatch -any *additional* lifecycle notifications when attempting to unload an +any *additional* lifecycle notifications when attempting to destroy an app that is not in the `RUNNING` state and the remainder of this section does not need to happen. At this point, the app **MUST** be in the `RUNNING` state. -If an app provides the `xrn:firebolt:capability:lifecycle:application` -capability, then the platform **MUST** call the app's implementation of -`Application.unload()`: +Since every app **MUST** provide the `xrn:firebolt:capability:lifecycle:application` +capability, the platform **MUST** call the app's implementation of +`Application.destroy()`: > The platform **MUST** dispatch the `Lifecycle.onRequestDestroy` > notification to the app, and wait for `appDestroyTimeout` milliseconds @@ -700,7 +654,7 @@ capability, then the platform **MUST** call the app's implementation of > call in response. > > Once the platform receives the `destroyResult` call, then the platform -> may proceed with app unloading. +> may proceed with app destroying. > > If the app times out or makes an `destroyError` call, then the app > **MUST** be terminated. @@ -717,35 +671,7 @@ Terminating an app results in removing it from memory and all resources held by the app and it's container being freed up. Platforms **MAY** terminate an app when needed but **SHOULD NOT** do -this in place of graceful [unloading](#38-unloading-an-app). - -## 5. Getting the current status -The Lifecycle module **MUST** provide a `status` property API that -returns the current lifecycle transition of the app if one is in -progress, otherwise, it returns the current state. - -If an app is in a transtition from one state to another, then it -**MUST** be considered in the transition until -such time as the app's implementation of the [transition](#4-lifecycle-state-transitions) has returned -and the platfrom has finshed the transition. - -The `status` API **MUST** have a corresponding `onStatusChanged` -notification. - -The `status` API must have one of the following values: - -- `Initializing` -- `Creating` -- `Running` -- `Suspending` -- `Suspended` -- `Resuming` -- `Activating` -- `Active` -- `Deactivating` -- `Sleeping` -- `Waking` -- `Destroying` +this in place of graceful [destroying](#49-destroying-an-app). ## 6. Activity Navigation Typically navigation is handled either when the app is activated, via @@ -772,14 +698,21 @@ the app, which may include: The `LaunchParameters` type is an object with the following properties: ```typescript -type LaunchParameters = { +type Parameters = { preload: boolean, + reason: "boot" | "restart" // load-reason, preload-reason privacy: { - limitAdTrackign: boolean + limitAdTracking: boolean } } ``` +// Parameters.initialization() + +- suspended after app restart +- suspended after power on +- foreground after app start + ^^^ need to dicuss what we need in here, and also what to do w/ US-centric stuff like 'limitAdTracking' ## 8. Core SDK APIs @@ -797,7 +730,7 @@ All apps **MUST** implement the Application interface. ```typescript interface Application { - function create(params: LaunchParameters): Promise; + function create(params: Parameters): Promise; function suspend(): Promise; function resume(): Promise; function destroy(): Promsie; @@ -808,8 +741,8 @@ interface Application { | Method | Description | | -------- | ----------- | | `create()` | Called when the platform is ready to create the lifecycle session for the app. Only called only once, during the `INITIALIZING` state. | -| `suspend()` | Called when the platform requires the app to deallocate its graphics compositor and reduce memory as much as possible. This may be called anytime the app is in the `RUNNING` state. | -| `resume()` | Called when the platform wants the app to reallocate its graphics compositor and prepare to be potentially used. | +| `suspend()` | Called when the platform requires the app to deallocate its graphics surface and reduce memory as much as possible. This may be called anytime the app is in the `RUNNING` state. | +| `resume()` | Called when the platform wants the app to reallocate its graphics surface and prepare to be potentially used. | | `destroy()` | Called when the platform is ready to end the lifecycle session for the app. Only called once. | ### 8.2. Activity Interface @@ -899,7 +832,7 @@ class ExampleApplication implements Lifecycle.Application, Lifecycle.Activity { Lifecycle.provide([ "xrn:firebolt:capability:lifecycle:application", - "xrn:firebolt:capability:lifecycle:activity" + "xrn:firebolt:capability:lifecycle:activatible" ], new ExampleApplication()) ``` @@ -927,19 +860,19 @@ the app is requesting to be closed: |------------------------------------|------------------------------------| | CloseReason.REMOTE_BUTTON | The user pressed the back or last button on the RCU and the App has determined it is at the top of it's navigation stack and should go back to the platform home screen. | | CloseReason.USER_EXIT | The user selected an exit control exposed by the app's UI. | -| CloseReason.ERROR | The app is experiencing unrecoverable issues and needs to be closed and unloaded. | +| CloseReason.ERROR | The app is experiencing unrecoverable issues and needs to be closed and destroyed. | Platforms generally **SHOULD** respect this call and move the app to the -started state, but there may be edge cases where this is not possible, +running state, but there may be edge cases where this is not possible, e.g. the app is considered to be the default experience for the device, and closing it would leave no other UX present. When the request to close is not respected, the Lifecycle.close() method **MUST** return an error. -Platforms **MAY** prioritize apps to be unloaded based on the reason +Platforms **MAY** prioritize apps to be destroyed based on the reason provided. For example, apps closed due to the RCU are less likely to be -unloaded since it may be an accidental RCU press, whereas an explicit +destroyed since it may be an accidental RCU press, whereas an explicit user exit is more likely to be intentional. ### 8.7. State @@ -950,8 +883,6 @@ notifications. This method **MUST NOT** be asynchronous. ## 9. Lifecycle Configuration -**TODO**: do we want these to be per spec, per distributor, or per app? - In order to enable Firebolt Certification of a device's Lifecycle Management features, the device **MUST** support the following configuration options, so that the Firebolt Certification Test Suite @@ -960,13 +891,14 @@ for state transitions. The LifecyclePolicy fields are: -| Field | Type | Required | Description | -|-------------------|-------|----------|-------------------------------------| -| appCreateTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating a loaded app that did not finish `create()`. | -| appDestroyTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onUnloading notification before terminating an app that did not finsih `destroy()`. | -| appActivateTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestActivate notification before terminating an app that did finish `activate()` | -| appDeactivateTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestDeactivate notification before terminating an app that did finish `deactivate()` | -| appSuspendTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestSuspend notification before terminating an app that did finish `suspend()` | -| appResumeTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestResume notification before terminating an app that did finish `resume()` | -| appSleepTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestSleep notification before terminating an app that did finish `sleep()` | -| appWakeTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestWake notification before terminating an app that did finish `wake()` | +| Field | Type | Required | Description | +|----------------------|--------|----------|--------------------------------------------------------------------------------------------------------------------------| +| appInitializeTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating a loaded app that did not call `Lifecycle.provide()`. | +| appCreateTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating a loaded app that did not finish `create()`. | +| appDestroyTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did not finsih `destroy()`. | +| appActivateTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `activate()`. | +| appDeactivateTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `deactivate()`. | +| appSuspendTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `suspend()`. | +| appResumeTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `resume()`. | +| appSleepTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `sleep()`. | +| appWakeTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `wake()`. | diff --git a/src/js/github.io/markdown.mjs b/src/js/github.io/markdown.mjs new file mode 100644 index 000000000..9068792e0 --- /dev/null +++ b/src/js/github.io/markdown.mjs @@ -0,0 +1,62 @@ +import nopt from 'nopt' +import path from 'path' +import { readJson, readDir, readFiles, readText, writeFiles, writeText, writeJson } from '../../../node_modules/@firebolt-js/openrpc/src/shared/filesystem.mjs' + +const knownOpts = { + 'file': [String] +} + +const defaultOpts = { +} + +const shortHands = { + 'f': '--file' +} + +// Last 2 arguments are the defaults. +const parsedArgs = Object.assign(defaultOpts, nopt(knownOpts, shortHands, process.argv, 2)) + +const signOff = () => console.log('\nThis has been a presentation of \x1b[38;5;202mFirebolt\x1b[0m \u{1F525} \u{1F529}\n') + +//const packageJson = await readJson(process.env.npm_package_json) +//const version = channel(packageJson.version) +const requirements = await readFiles(await readDir(path.join('.', 'requirements'), { recursive: true }), path.join('.')) + +const processFiles = (docs) => { + Object.keys(docs).forEach(ref => { + + if (ref.endsWith('.md')) { + let data = docs[ref] + +// console.log(data) + // find all headers + const headers = data.match(/#+[ \t]+(([0-9]+\.)+)[ /t]+(.*?)\n/g) + + // turn to slugs + const slugs = headers.map(h => h.replace(/#/g, '')) + .map(h => h.replace(/\t/g, '')) + .map(h => h.replace(/\./g, '')) + .map(h => h.replace(/^ /g, '')) + .map(h => h.replace(/\n$/g, '')) + .map(h => h.replace(/ /g, '-')) + .map(h => h.toLowerCase()) + .map(h => '#' + h) + + const links = data.match(/\]\(.*?\#.*?\)/g) + + links.map(l => l.slice(2, -1)).forEach(link => { + if (!slugs.find(s => s === link)) { + const best = slugs.find(s => s.match(new RegExp(link.replace(/^\#[0-9]+/, '#[0-9]+')))) || slugs.find(s => s.startsWith(link.split('-')[0] + '-')) + console.log('Fixing broken link: (' + link + ') -> (' + best + ')') + data = data.replace('](' + link + ')', '](' + best + ')') + } + }) + docs[ref] = data + } + }) +} + +processFiles(requirements) +writeFiles(requirements) + +signOff() From 24e17e1718920ef64f60c94eaf520aeeaefea501 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Fri, 20 Oct 2023 11:32:19 -0400 Subject: [PATCH 17/43] fix: table clean up --- requirements/specifications/lifecycle/index.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index f1ba59f21..2447badfe 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -302,7 +302,7 @@ Finally, if an app implements the `Sleepable` interface, then the following tran | | CPU | RAM | Net | GFX | A/V | Description | |----------------|-----|-----|-----|-----|-----|-------------------------------------------------------------------------------| | `sleep()` | ↓ | ↓ | ✔ | | | Prepare for an extended period with no CPU cycles given to app. | -| `wake()` | ↓ | ↓ | ✔ | | | Cleanup after an extended period with no CPU, e.g. reset timers / network connections. | +| `wake()` | ↓ | ↓ | ✔ | | | Cleanup after an extended period with no CPU, e.g. reset timers / network connections. | All of these transition APIs are blocking, and each one has a platform-configurable timeout that specifies how long the app has to fulfill the method. @@ -735,7 +735,6 @@ interface Application { function resume(): Promise; function destroy(): Promsie; } - ``` | Method | Description | @@ -758,11 +757,11 @@ interface Activity { } ``` -| Method | Description | -| -------- | ----------- | -| `activate()` | Called when the platform is ready to move the app into the `ACTIVE` state where it will contribute to the user-perceptible experience, typically via presenting the app on screen. A/V resources are allowed to be allocated when this is called if the app has permission to use them and the platform has the necesarry resources available.| -| `deactivate()` | Called when the platform is ready to move the app out of the `ACTIVE` state and into `RUNNING` to deallocate any A/V decoders. | -| `navigate()` | Called when an app is already `ACTIVE` and the platform wants the app to navigate to a new [Navigation Intent](../intents/navigation.md) | +| Method | Description | +| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| `activate()` | Called when the platform is ready to move the app into the `ACTIVE` state. A/V resources may be allocated. | +| `deactivate()` | Called when the platform is ready to move the app out of the `ACTIVE` state and into `RUNNING` to deallocate any A/V decoders. | +| `navigate()` | Called when an app is already `ACTIVE` and the platform wants the app to navigate to a new [Navigation Intent](../intents/navigation.md) | ### 8.3. Sleepable Interface The `Sleepable` interface is implemented by Apps that are able to handle being put to sleep and then woken at a later point in time. From fe97adc1c0b4055750169cc6f28f67ba2860c84e Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Fri, 20 Oct 2023 12:49:44 -0400 Subject: [PATCH 18/43] chore: Added Markdown Beautifier and link fixer --- requirements/glossary.md | 116 +- requirements/governance.md | 342 ++++-- .../specifications/lifecycle/index.md | 1059 +++++++++-------- .../specifications/lifecycle/presentation.md | 169 ++- requirements/style-guide-and-template.md | 160 ++- src/js/github.io/markdown.mjs | 193 ++- 6 files changed, 1331 insertions(+), 708 deletions(-) diff --git a/requirements/glossary.md b/requirements/glossary.md index 5f8d7d4c8..03ad1e1cf 100644 --- a/requirements/glossary.md +++ b/requirements/glossary.md @@ -1,17 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # Glossary -Document Status: Working Draft +Document Status: Working Draft -| Contributor | Organization | -| -------------- | -------------- | -| Jeremy LaCivita | Comcast | +| Contributor | Organization | +| --------------- | ------------ | +| Jeremy LaCivita | Comcast | ## 1. Overview -This document describes various terms used as part of Firebolt APIs, e.g. method names or parameters, and how they are used by Firebolt, for consistency. +This document describes various terms used as part of Firebolt APIs, e.g. +method names or parameters, and how they are used by Firebolt, for +consistency. -The terms are this document are commonly used across multiple modules. However, new APIs should be deferential to all existing APIs, not just words listed here. +The terms are this document are commonly used across multiple modules. However, + new APIs should be deferential to all existing APIs, not just words listed +here. -The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**NOT RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be interpreted as described in [BCP 14](https://www.rfc-editor.org/rfc/rfc2119.txt) [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. +The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL + NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**NOT +RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be +interpreted as described in [BCP +14](https://www.rfc-editor.org/rfc/rfc2119.txt) [RFC2119] [RFC8174] when, and + only when, they appear in all capitals, as shown here. ## 2. Table of Contents - [1. Overview](#1-overview) @@ -35,43 +76,76 @@ The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL ## 3. Firebolt Terms ### 3.1. app -noun. - A Firebolt app. Any component that calls [Firebolt APIs](https://github.com/rdkcentral/firebolt-apis), either directly, or by running inside of a container that calls Firebolt APIs, is a Firebolt app. +noun. - A Firebolt app. Any component that calls [Firebolt +APIs](https://github.com/rdkcentral/firebolt-apis), either directly, or by +running inside of a container that calls Firebolt APIs, is a Firebolt app. ### 3.2. available -adj. - Used in the context of a [capability](#34-capability) to denote that the capability *could* be leveraged now if it is [permitted](#311-permitted) and either [granted](#38-granted) or is not gated by a [user grant](#313-user-grant). Available capabilities are, by definition, [supported](#314-supported). +adj. - Used in the context of a [capability](#34-capability) to denote that the + capability *could* be leveraged now if it is [permitted](#311-permitted) +and either [granted](#38-granted) or is not gated by a [user +grant](#313-user-grant). Available capabilities are, by definition, +[supported](#314-supported). ### 3.3. availability -noun. - Used in the context of [content](#36-content) to denote that the content *could* be consumed if either the device has an [entitlement](#37-entitlement) to the content, or the content does not require any entitlement. +noun. - Used in the context of [content](#36-content) to denote that the +content *could* be consumed if either the device has an +[entitlement](#37-entitlement) to the content, or the content does not +require any entitlement. ### 3.4. capability -noun. - A discrete unit of functionality that a Firebolt device might be able to perform. It is granular enough to enable appropriate access controls across all Firebolt Apps, but useful enough to be a meaningful functional unit that an App might care about. +noun. - A discrete unit of functionality that a Firebolt device might be able +to perform. It is granular enough to enable appropriate access controls +across all Firebolt Apps, but useful enough to be a meaningful functional +unit that an App might care about. ### 3.5. closed captions -noun. - Closed Captions are text tracks rendered over or near [content](#36-content) with the intention of making the audio track of the content more accessible, for example to deaf or hard-of-hearing individuals. +noun. - Closed Captions are text tracks rendered over or near +[content](#36-content) with the intention of making the audio track of the +content more accessible, for example to deaf or hard-of-hearing individuals. ### 3.6. content -noun. - Content consumed on Firebolt platforms, e.g. video, games, music, etc. +noun. - Content consumed on Firebolt platforms, e.g. video, games, music, etc. ### 3.7. entitlement -noun. - Used in the context of [content](#36-content) to denote that the device or user has acquired the *right* to consume the content. Content may also have [availability](#33-availability) requirements for consumption, e.g. a user may have pre-orded a piece of content, and therefor have an entitlement to it, that becomes available in the future. +noun. - Used in the context of [content](#36-content) to denote that the device + or user has acquired the *right* to consume the content. Content may also +have [availability](#33-availability) requirements for consumption, e.g. a +user may have pre-orded a piece of content, and therefor have an entitlement +to it, that becomes available in the future. ### 3.8. granted -adj. - Used in the context of a [capability](#34-capability) to denote that the capability has been granted to an app by the user. Capabilities that are gated by [user grant](#313-user-grant) cannot be leveraged by any app w/out being granted. +adj. - Used in the context of a [capability](#34-capability) to denote that the + capability has been granted to an app by the user. Capabilities that are +gated by [user grant](#313-user-grant) cannot be leveraged by any app w/out +being granted. ### 3.9. lifecycle -noun. - Used to describe the life, from being loaded to unloaded, of a Firebolt [app](#31-app). The app lifecycle has many states that inform the app how it is being percieved and how it should behave. +noun. - Used to describe the life, from being loaded to unloaded, of a Firebolt + [app](#31-app). The app lifecycle has many states that inform the app how +it is being percieved and how it should behave. ### 3.10. media -noun. - [Content](#36-content) that that plays back over time without requiring interaction from the user, e.g. video or music. Media must have a start-time, or a duration, or both. +noun. - [Content](#36-content) that that plays back over time without requiring + interaction from the user, e.g. video or music. Media must have a +start-time, or a duration, or both. ### 3.11. permitted -adj. - Used in the context of a [capability](#34-capability) to denote that the capability has been permitted to an app by the distributor of the device. +adj. - Used in the context of a [capability](#34-capability) to denote that the + capability has been permitted to an app by the distributor of the device. ### 3.12. policy -noun. - A group of user, device, and/or distributor settings that affect a particular domain, e.g. Advertising. +noun. - A group of user, device, and/or distributor settings that affect a +particular domain, e.g. Advertising. ### 3.13. user grant -noun. - A secure process in which a user of a device grants an app on the device access to a capability. +noun. - A secure process in which a user of a device grants an app on the +device access to a capability. ### 3.14. supported -adj. - Used in the context of a [capability](#34-capability) to denote that the capability *could* be leveraged at some point on this device, because the distributor offers it as part of this device's feature set. Leveraging a capability also requires that it is [available](#32-available), [permitted](#311-permitted), and either [granted](#38-granted) or is not gated by a [user grant](#313-user-grant). +adj. - Used in the context of a [capability](#34-capability) to denote that the + capability *could* be leveraged at some point on this device, because the +distributor offers it as part of this device's feature set. Leveraging a +capability also requires that it is [available](#32-available), +[permitted](#311-permitted), and either [granted](#38-granted) or is not +gated by a [user grant](#313-user-grant). diff --git a/requirements/governance.md b/requirements/governance.md index 2f3f2e404..2608b5990 100644 --- a/requirements/governance.md +++ b/requirements/governance.md @@ -1,10 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # Requirements Governance -This document outlines the governance model for the Firebolt® Open-Source Project, including the structure of an Advisory Board and Working Groups, as well as the process used to codify Requirements Specifications and Architectural Decision Records. +This document outlines the governance model for the Firebolt® Open-Source +Project, including the structure of an Advisory Board and Working Groups, as +well as the process used to codify Requirements Specifications and +Architectural Decision Records. ## 1. Overview -The Firebolt Open-Source Project is governed by an Advisory Board that creates and delegates work to Working Groups, which then create proposals for Requirements Specifications and Architectural Decision Records. +The Firebolt Open-Source Project is governed by an Advisory Board that creates +and delegates work to Working Groups, which then create proposals for +Requirements Specifications and Architectural Decision Records. -![Governance Structure](./images/governance/structure.png) +![Governance Structure](./images/governance/structure.png) ## 2. Table of Contents - [1. Overview](#1-overview) @@ -31,9 +68,12 @@ The Firebolt Open-Source Project is governed by an Advisory Board that creates a - [4.12. Release Versions](#412-release-versions) ## 3. Goals -The goal of the Firebolt Open-Source Project is to provide a Distributor-configurable set of integration APIs and functional requirements for those APIs so that Apps can integrate with the APIs once and run their app on every Firebolt platform (regardless of distributor) consistently. +The goal of the Firebolt Open-Source Project is to provide a +Distributor-configurable set of integration APIs and functional requirements +for those APIs so that Apps can integrate with the APIs once and run their +app on every Firebolt platform (regardless of distributor) consistently. -Specifically, Firebolt provides: +Specifically, Firebolt provides: - Write Apps once, run on all Firebolt distributors - Discovery and launching of Apps @@ -42,9 +82,9 @@ Specifically, Firebolt provides: - Platform integration APIs, (e.g. captions, media info, etc.) - Device and account management - Integration APIs for broader eco-system integrations -(e.g. user experience, advertising, voice, etc.) +(e.g. user experience, advertising, voice, etc.) -While enabling Distributors to: +While enabling Distributors to: - Provide differentiating Discovery and Settings experiences - Configure Firebolt features to meet their business needs @@ -53,28 +93,38 @@ While enabling Distributors to: - Negotiate access to features and APIs with each app ## 4. Governance -The Firebolt Open-Source Project is governed by an Advisory Board. The purpose of the Advisory Board is to ensure that each major, minor, and patch version of the Firebolt Requirements is aligned with the goals of the Firebolt Open-Source Project. - -The Firebolt Requirements are the collection of all Requirements Specifications and all Architectural Decision Records that are ratified by the Advisory Board (and contained in this repository). +The Firebolt Open-Source Project is governed by an Advisory Board. The purpose +of the Advisory Board is to ensure that each major, minor, and patch version +of the Firebolt Requirements is aligned with the goals of the Firebolt +Open-Source Project. + +The Firebolt Requirements are the collection of all Requirements Specifications + and all Architectural Decision Records that are ratified by the Advisory +Board (and contained in this repository). ### 4.1. Scope -This document describes the governance model for the following components: +This document describes the governance model for the following components: - Firebolt RPC APIs & SDKs - Firebolt Media Pipeline (aka Rialto) - Firebolt API Reference Implementation (Ripple) ### 4.2. Firebolt Version -A Firebolt Version is a snapshot of the Firebolt Requirements that has been ratified as an official release of the requirements. Note that the requirements are decoupled from any implementation of those requirements, and iterations to the requirements will occur with input from any teams implementing them. +A Firebolt Version is a snapshot of the Firebolt Requirements that has been +ratified as an official release of the requirements. Note that the +requirements are decoupled from any implementation of those requirements, and + iterations to the requirements will occur with input from any teams +implementing them. -Firebolt Versions **MUST** follow Semantic Versioning. +Firebolt Versions **MUST** follow Semantic Versioning. ### 4.3. Advisory Board -The Advisory Board oversees all aspects of Firebolt Requirements Governance. +The Advisory Board oversees all aspects of Firebolt Requirements Governance. -Advisory Board decisions should aim to be unanimous whenever possible, but in cases of deadlock, may be decided by simple majority. +Advisory Board decisions should aim to be unanimous whenever possible, but in +cases of deadlock, may be decided by simple majority. -The Advisory Board is responsible for: +The Advisory Board is responsible for: - Prioritization of Working Groups needed - Creation of balanced Working Groups with relevant subject matter experts @@ -85,68 +135,121 @@ The Advisory Board is responsible for: - Determination of when a sanctioned fork is warranted ### 4.4. Advisory Board Members -The Firebolt Advisory Board is currently being formed and will be published soon. +The Firebolt Advisory Board is currently being formed and will be published +soon. -Contact the `rdkcentral/firebolt-apis` maintainer, [Jeremy LaCivita](https://github.com/jlacivita), to submit proposals to the Advisory Board. +Contact the `rdkcentral/firebolt-apis` maintainer, [Jeremy +LaCivita](https://github.com/jlacivita), to submit proposals to the Advisory +Board. ### 4.5. Working Group -Working Groups build consensus on requirements for Firebolt features or architectural solutions. They should ideally be three to five individuals spanning technical and product experts. Further recommendations on working group composition are left to the Advisory Board. +Working Groups build consensus on requirements for Firebolt features or +architectural solutions. They should ideally be three to five individuals +spanning technical and product experts. Further recommendations on working +group composition are left to the Advisory Board. -As new features are prioritized, Working Groups should be formed to gather and document requirements for those features. Working groups may be self-forming or selected by the Advisory Board, but all working groups must have their membership reviewed and approved by the board to ensure that they are well balanced. +As new features are prioritized, Working Groups should be formed to gather and +document requirements for those features. Working groups may be self-forming +or selected by the Advisory Board, but all working groups must have their +membership reviewed and approved by the board to ensure that they are well +balanced. -The Advisory Board **MAY** appoint a Working Group Chair or instruct the Working Group to select a chair amongst themselves. +The Advisory Board **MAY** appoint a Working Group Chair or instruct the +Working Group to select a chair amongst themselves. -The Working Group Chair is responsible for driving consensus and reporting back to the Advisory Board +The Working Group Chair is responsible for driving consensus and reporting back + to the Advisory Board ### 4.6. Requirements Specification -A Requirements Specification includes all details necessary for multiple, disassociated teams to build a consistent implementation of a feature, including API signatures, validation, and functionality, as well as functional and behavioral requirements of the feature that are not directly exposed by an API. - -Requirements and APIs may be targeted towards traditional 3rd party apps, as well as more foundational 1st party apps. - -The level of detail in an acceptable Requirements Specification should be such that any App should run consistently on any implementation of the feature that is based on the Specification. - -Requirements Specifications are written using the [IETF Best Common Practice 14](https://www.rfc-editor.org/rfc/rfc2119.txt) and should include the following at the end of the Overview: - -The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**NOT RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be interpreted as described in [BCP 14](https://www.rfc-editor.org/rfc/rfc2119.txt) [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. - -Requirements Specification move through several [stages](#48-approval-stages) from being a draft, to being an official versioned requirements specification. +A Requirements Specification includes all details necessary for multiple, +disassociated teams to build a consistent implementation of a feature, +including API signatures, validation, and functionality, as well as +functional and behavioral requirements of the feature that are not directly +exposed by an API. + +Requirements and APIs may be targeted towards traditional 3rd party apps, as +well as more foundational 1st party apps. + +The level of detail in an acceptable Requirements Specification should be such +that any App should run consistently on any implementation of the feature +that is based on the Specification. + +Requirements Specifications are written using the [IETF Best Common Practice +14](https://www.rfc-editor.org/rfc/rfc2119.txt) and should include the +following at the end of the Overview: + +The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL + NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**NOT +RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be +interpreted as described in [BCP +14](https://www.rfc-editor.org/rfc/rfc2119.txt) [RFC2119] [RFC8174] when, and + only when, they appear in all capitals, as shown here. + +Requirements Specification move through several [stages](#48-approval-stages) +from being a draft, to being an official versioned requirements +specification. ### 4.7. Architectural Decision Record -An Architectural Decision Record includes all details necessary to ensure that Firebolt Requirements are fulfilled with an architecturally sound design. This is often used in cases where listing out explicit requirements, e.g. performance or operational requirements, is not possible or realistic, e.g. Requiring use of a well-known open source component to fulfill some aspect of the platform, or requiring adherence to a high level modular breakdown of concerns to keep platform maintenance manageable. - -Since ADRs included in the Firebolt Requirements **MUST** be adhered to, not every architectural decision made in order to fulfill the Firebolt Requirements needs to have a formal ADR in the Firebolt Requirements repository. It is up to the Advisory Board which ADRs warrent a formal inclusion in the Firebolt Requirements. - -ADRs move through the same [stages](#48-approval-stages) as Requirements Specifications. +An Architectural Decision Record includes all details necessary to ensure that +Firebolt Requirements are fulfilled with an architecturally sound design. +This is often used in cases where listing out explicit requirements, e.g. +performance or operational requirements, is not possible or realistic, e.g. +Requiring use of a well-known open source component to fulfill some aspect of + the platform, or requiring adherence to a high level modular breakdown of +concerns to keep platform maintenance manageable. + +Since ADRs included in the Firebolt Requirements **MUST** be adhered to, not +every architectural decision made in order to fulfill the Firebolt +Requirements needs to have a formal ADR in the Firebolt Requirements +repository. It is up to the Advisory Board which ADRs warrent a formal +inclusion in the Firebolt Requirements. + +ADRs move through the same [stages](#48-approval-stages) as Requirements +Specifications. ### 4.8. Approval Stages -Requirements specifications and ADRs are written by working groups and go through several stages of approval before becoming official requirements documents. +Requirements specifications and ADRs are written by working groups and go +through several stages of approval before becoming official requirements +documents. -![Approval Track](./images/governance/approval-track.png) +![Approval Track](./images/governance/approval-track.png) #### 4.8.1. Draft -This is any first draft of a requirements specification submitted by an individual or individuals to a Working Group. +This is any first draft of a requirements specification submitted by an +individual or individuals to a Working Group. -Artifacts: +Artifacts: - A markdown document, ready to be presented to the Working Group -Note that a Draft **MUST** not be committed to any public location, e.g. the Requirements Repository, because it has not yet been reviewed by the Working Group and could mistakenly contain sensative, private information related to a specific Firebolt distributor. +Note that a Draft **MUST** not be committed to any public location, e.g. the +Requirements Repository, because it has not yet been reviewed by the Working +Group and could mistakenly contain sensative, private information related to +a specific Firebolt distributor. #### 4.8.2. Working Draft -A version of the requirements specification that is approved by the Working Group for feedback and review by individuals not on the Working Group. Individuals are selected for review at the discretion of the Working Group. Working drafts may or may not satisfy all requirements of the feature and should not be used for derivative works. +A version of the requirements specification that is approved by the Working +Group for feedback and review by individuals not on the Working Group. +Individuals are selected for review at the discretion of the Working Group. +Working drafts may or may not satisfy all requirements of the feature and +should not be used for derivative works. -Artifacts: +Artifacts: - Markdown specification in a named feature branch of the Requirements Repository - Working Group members identified - Working Group progress is being tracked via GitHub project in the Requirements Repository #### 4.8.3. Candidate Specification -A version of the requirements specification that is approved by the Working Group for proof-of-concept implementations and peer-review by the larger Community. Candidate Specifications have been through significant review by the Working Group and are ready for feedback from the larger community. +A version of the requirements specification that is approved by the Working +Group for proof-of-concept implementations and peer-review by the larger +Community. Candidate Specifications have been through significant review by +the Working Group and are ready for feedback from the larger community. -Once this is published to the peer group for review, they’ll have two weeks to add their comments, make amendments requests, etc. +Once this is published to the peer group for review, they’ll have two weeks to +add their comments, make amendments requests, etc. -Artifacts: +Artifacts: - Markdown specification in a named feature branch of the Requirements Repository - Domain experts for peer-review identified and notified @@ -154,17 +257,22 @@ Artifacts: - JSON-Schema API changes outlined by the document are in the OpenRPC schemas #### 4.8.4. Candidate Specification Draft -A fork of the current Candidate Specification that has changes requested, but not yet approved, by the Working Group. +A fork of the current Candidate Specification that has changes requested, but +not yet approved, by the Working Group. -Artifacts: +Artifacts: - A Pull Request into the feature branch containing in-progress changes - Previous Candidate Specification does not include changes until approved by W.G. #### 4.8.5. Proposed Specification -A version of the requirements specification that is considered, by the Working Group, to be the final Candidate Specification, and has been submitted to the Advisory Board for final approval. This version may be used for experimental implementations and final peer-review by the larger community. +A version of the requirements specification that is considered, by the Working +Group, to be the final Candidate Specification, and has been submitted to the + Advisory Board for final approval. This version may be used for +experimental implementations and final peer-review by the larger community. + -Artifacts: +Artifacts: - Markdown specification merged into the #proposed branch of the Requirements Repository - A Pull Request into the #next branch of Requirements Repository @@ -172,54 +280,136 @@ Artifacts: - Unit tests for any API changes #### 4.8.6. Specification -An official versioned stage of the requirements specification that is done and will not change until a future version is created. This version may be used for official production implementations. +An official versioned stage of the requirements specification that is done and +will not change until a future version is created. This version may be used +for official production implementations. -Artifacts: +Artifacts: - Markdown specification merged into the #main branch of the Requirements Repository - Spec Review notes and green light from implementation teams of all member organizations with a vested interest in the specification - Status tracking link for any Open Source implementations of the spec, if appropriate ### 4.9. Requirements Repository -A public GitHub repository used to manage the progress of a requirements specification. Requirements Specification **MUST** live in their own repository, and not along side of the code that is implementing them. +A public GitHub repository used to manage the progress of a requirements +specification. Requirements Specification **MUST** live in their own +repository, and not along side of the code that is implementing them. + +The Requirements Repository **MUST** be located at: + + + + + + + + + + -The Requirements Repository **MUST** be located at: -[https://github.com/rdkcentral/firebolt-apis](https://github.com/rdkcentral/firebolt-apis) + + + + + + + + + + + + + + + + + + + + + +[https://github.com/rdkcentral/firebolt-apis](https://github.com/rdkcentral/firebolt-apis) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ### 4.10. Requirements Repository Branching -The Requirements Repository **MUST** have the following branches: +The Requirements Repository **MUST** have the following branches: -| Branch | Purpose | -| ------ | ------- | -| main | For officially approved specifications that have been released under a version. | -| next | For all approved specifications, even those that have not been released under a version. | -| proposed | An experimental branch containing all proposed specifications. | +| Branch | Purpose | +| -------- | ---------------------------------------------------------------------------------------- | +| main | For officially approved specifications that have been released under a version. | +| next | For all approved specifications, even those that have not been released under a version. | +| proposed | An experimental branch containing all proposed specifications. | -Working Drafts and Candidate Specification Drafts **MUST** be housed in a named feature branch in the Requirements Repository (see below). +Working Drafts and Candidate Specification Drafts **MUST** be housed in a named + feature branch in the Requirements Repository (see below). -Branches are merged based on the approval process: +Branches are merged based on the approval process: -![Branching](./images/governance/branching.png) +![Branching](./images/governance/branching.png) ### 4.11. Sanctioned Forks -From time to time an organization with access to the Requirements Repository may want to spearhead a new feature without going through the formal approval process. +From time to time an organization with access to the Requirements Repository +may want to spearhead a new feature without going through the formal approval + process. -In this case the member may submit a request to the Approval Board for a sanctioned fork inside the Requirements Repository, so that research and development can be done on the feature. +In this case the member may submit a request to the Approval Board for a +sanctioned fork inside the Requirements Repository, so that research and +development can be done on the feature. -The Approval Board **MAY** grant or deny the request for a sanctioned fork. +The Approval Board **MAY** grant or deny the request for a sanctioned fork. -After the R&D is complete, the forking organization **MUST** submit the resulting requirements to the formal process and work to have them approved. +After the R&D is complete, the forking organization **MUST** submit the +resulting requirements to the formal process and work to have them approved. -The organization requesting the fork **MUST** be willing to migrate to the approved APIs, which may be different than the API in the fork. +The organization requesting the fork **MUST** be willing to migrate to the +approved APIs, which may be different than the API in the fork. -The Advisory Board, and selected Working Group, **SHOULD** be willing to avoid unnecessary changes to make migration as easy as possible, without sacrificing the integrity of the Firebolt Open-Source Project’s goals. +The Advisory Board, and selected Working Group, **SHOULD** be willing to avoid +unnecessary changes to make migration as easy as possible, without +sacrificing the integrity of the Firebolt Open-Source Project’s goals. ### 4.12. Release Versions -The Advisory Board has ownership of when to do major, minor, and patch releases of the Firebolt Requirements. +The Advisory Board has ownership of when to do major, minor, and patch releases + of the Firebolt Requirements. -Releases **MUST** follow Semantic Versioning. +Releases **MUST** follow Semantic Versioning. -Approved changes are all housed in the next branch until the Advisory Board decides that the next branch warrants an officially released version of the requirements. +Approved changes are all housed in the next branch until the Advisory Board +decides that the next branch warrants an officially released version of the +requirements. -If a feature that requires a major version increment, i.e. a breaking change, is proposed, the Advisory Board may decide to keep it unapproved so that any features requiring a minor version change can be pushed through the process. Management of this is the responsibility of the Advisory Board. +If a feature that requires a major version increment, i.e. a breaking change, +is proposed, the Advisory Board may decide to keep it unapproved so that any +features requiring a minor version change can be pushed through the process. +Management of this is the responsibility of the Advisory Board. diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 2447badfe..73e4401f2 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -1,65 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # App Lifecycle Management -Document Status: Working Draft +Document Status: Working Draft -See [Firebolt Requirements Governance](../../governance.md) for more info. +See [Firebolt Requirements Governance](../../governance.md) for more info. -| Contributor | Organization | -| -------------- | -------------- | -| Andrew Bennett | Sky | -| Cody Bonney | Charter | -| Bart Catrysse | Liberty | -| Tim Dibben | Sky | -| Piotr Kobzda | Liberty | -| Jeremy LaCivita | Comcast | -| Ramprasad Lakshminarayana | Sky | -| Kevin Pearson | Comcast | -| Jan Pedersen | Sky | -| Peter Yu | Comcast | +| Contributor | Organization | +| ------------------------- | ------------ | +| Andrew Bennett | Sky | +| Cody Bonney | Charter | +| Bart Catrysse | Liberty | +| Tim Dibben | Sky | +| Piotr Kobzda | Liberty | +| Jeremy LaCivita | Comcast | +| Ramprasad Lakshminarayana | Sky | +| Kevin Pearson | Comcast | +| Jan Pedersen | Sky | +| Peter Yu | Comcast | ## 1. Overview -This document describes the requirements that Firebolt platforms and -Firebolt applications must fulfill when managing App Lifecycles. *App -Lifecycle* refers to the lifecycle of an individual app from the time -it is launched/loaded to the time it is destroyed and all runtime -resources are discarded. +This document describes the requirements that Firebolt platforms and Firebolt +applications must fulfill when managing App Lifecycles. *App Lifecycle* +refers to the lifecycle of an individual app from the time it is +launched/loaded to the time it is destroyed and all runtime resources are +discarded. -*Initializing* an app refers to fetching the initial resources, e.g. the -app-manifest and index.html, and loading them into a container capable -of running the app, e.g. a web browser. +*Initializing* an app refers to fetching the initial resources, e.g. the +app-manifest and index.html, and loading them into a container capable of +running the app, e.g. a web browser. -*Activating* an app refers to the process of getting an app into a state -where it is presented as part of the user-perceptible experience (e.g. -visible, audible, or responding to input). This may include *initializing* -the app first, if needed. For details on presentation, see [App -Presentation](./presentation.md). +*Activating* an app refers to the process of getting an app into a state where +it is presented as part of the user-perceptible experience (e.g. visible, +audible, or responding to input). This may include *initializing* the app +first, if needed. For details on presentation, see [App +Presentation](./presentation.md). -*Closing* an app refers to the process of getting an app out of a state -where it is the primary user experience (e.g not visible, not audible, -and not responding to input). This **does not** involve *destroying* the -app. +*Closing* an app refers to the process of getting an app out of a state where +it is the primary user experience (e.g not visible, not audible, and not +responding to input). This **does not** involve *destroying* the app. -*Suspending* an app refers to reducing the app's memory and CPU usage, -and deallocating its graphics surface so that other apps will have -more resources available. +*Suspending* an app refers to reducing the app's memory and CPU usage, and +deallocating its graphics surface so that other apps will have more resources + available. -*Resuming* an app refers to reallocating its graphics surface and -resuming normal CPU and memory allocations. +*Resuming* an app refers to reallocating its graphics surface and resuming +normal CPU and memory allocations. -*Destroying* an app refers to the process of notifying an app to do any -needed clean up, and then *terminating* it. +*Destroying* an app refers to the process of notifying an app to do any needed +clean up, and then *terminating* it. -*Terminating* an app refers to shutting down the app's container and -reclaiming any memory, CPU, etc. that it was consuming. +*Terminating* an app refers to shutting down the app's container and reclaiming + any memory, CPU, etc. that it was consuming. -*Sleeping* an app refers to putting the app into a state where it does -not use CPU cycles, which allows the platform to optimise memory consumption. +*Sleeping* an app refers to putting the app into a state where it does not use +CPU cycles, which allows the platform to optimise memory consumption. -*Waking* an app refers to copying a Sleeping app back into the -memory space of a compatible process so that it resumes where it left -off. +*Waking* an app refers to copying a Sleeping app back into the memory space of +a compatible process so that it resumes where it left off. - [1. Overview](#1-overview) - [2. Lifecycle States](#2-lifecycle-states) @@ -93,16 +121,46 @@ off. ## 2. Lifecycle States -Firebolt platforms **MUST** support running one or more apps -concurrently. The platform **MUST** manage transition of apps from state -to state. - -A Firebolt app, once running, **MUST** be in one of several states and -**MUST NOT** be in more than one state at a time. - -As an app changes states the platform will invoke specific app-provided transition methods, see [Transitions](#4-lifecycle-state-transitions), for more on this. - -![Lifecycle States](../../images/specifications/lifecycle/lifecycle-states.png) +Firebolt platforms **MUST** support running one or more apps concurrently. The +platform **MUST** manage transition of apps from state to state. + +A Firebolt app, once running, **MUST** be in one of several states and **MUST +NOT** be in more than one state at a time. + +As an app changes states the platform will invoke specific app-provided +transition methods, see [Transitions](#4-lifecycle-state-transitions), for +more on this. + +![Lifecycle States](../../images/specifications/lifecycle/lifecycle-states.png) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + | | CPU | RAM | F/S | Net | GFX | SFC | A/V | Description | |--------------|-----|-----|-----|-----|-----|-----|-----|----------------------------------------------------------------------------| @@ -112,152 +170,154 @@ As an app changes states the platform will invoke specific app-provided transiti | Suspended | ↓ | ↓ | ✔ | ✔ | | | | Reduced memory footprint and no access to graphics or A/V. | | Sleeping | | | | | | | | No CPU cycles are given to the app. App may stay in RAM or be stored. | -| | Legend | -| - | ------ | +| | Legend | +| --- | ----------------------- | | CPU | Central Processing Unit | -| RAM | Ramdon Access Memory | -| F/S | File System | -| Net | Network | -| GFX | Graphics rendering | -| SFC | Graphics surface | -| A/V | Audio Video Decoder | -| ↓ | Limited | -| ✔ | Normal access | -| ? | Unknown | +| RAM | Ramdon Access Memory | +| F/S | File System | +| Net | Network | +| GFX | Graphics rendering | +| SFC | Graphics surface | +| A/V | Audio Video Decoder | +| ↓ | Limited | +| ✔ | Normal access | +| ? | Unknown | ### 2.1. Initializing -This is the initial state an app exists from the moment it starts receiving CPU cycles. +This is the initial state an app exists from the moment it starts receiving CPU + cycles. -When an app starts running it **MUST** initialize the Firebolt SDK as quickly as possible -and then wait for the `Application.create()` interface to be called before doing further setup. +When an app starts running it **MUST** initialize the Firebolt SDK as quickly +as possible and then wait for the `Application.create()` interface to be +called before doing further setup. -Apps in this state **MUST NOT** have a graphics surface allocated yet. +Apps in this state **MUST NOT** have a graphics surface allocated yet. -Apps in this state **MUST NOT** be visible. +Apps in this state **MUST NOT** be visible. -Apps in this state **MUST NOT** receive RCU key presses. +Apps in this state **MUST NOT** receive RCU key presses. -Apps in this state **MUST NOT** have access to the audio-video decoder. +Apps in this state **MUST NOT** have access to the audio-video decoder. -Apps in this state **MUST NOT** use the media pipeline. +Apps in this state **MUST NOT** use the media pipeline. -See [Initializing an app](#42-initializing-an-app) for more information. +See [Initializing an app](#42-initializing-an-app) for more information. ### 2.2. Running -This state allows an app to be running and ready to go, but not actively part -of the user-perceptible experience. +This state allows an app to be running and ready to go, but not actively part +of the user-perceptible experience. -Running apps can execute code, but are not [Presented](./presentation.md) to the user, do not receive -any input from RCUs, and cannot use the video decoder. +Running apps can execute code, but are not [Presented](./presentation.md) to +the user, do not receive any input from RCUs, and cannot use the video +decoder. -Apps in this state **MUST** have access to the graphics surface. +Apps in this state **MUST** have access to the graphics surface. -Apps in this state **MAY** have created, allocated a graphics surface -but it will not be made visible by platform compositor. +Apps in this state **MAY** have created, allocated a graphics surface but it +will not be made visible by platform compositor. -Apps in this state **MUST NOT** be visible. +Apps in this state **MUST NOT** be visible. -Apps in this state **MUST NOT** receive RCU key presses. +Apps in this state **MUST NOT** receive RCU key presses. -Apps in this state **MUST NOT** have access to the audio-video decoder. +Apps in this state **MUST NOT** have access to the audio-video decoder. -Apps in this state **MUST NOT** use the media pipeline and the platform -**MUST** tear down any Media Pipeline sessions associated with this app. +Apps in this state **MUST NOT** use the media pipeline and the platform +**MUST** tear down any Media Pipeline sessions associated with this app. ### 2.3. Active -This state allows an app to be presented as part of the user-perceptible -experience. +This state allows an app to be presented as part of the user-perceptible +experience. -To determine if an app is the *primary* experience, e.g. fullscreen, -etc., see [Presentation](./presentation.md). +To determine if an app is the *primary* experience, e.g. fullscreen, etc., see +[Presentation](./presentation.md#3-display). -It is a platform decision as to how many apps may be in this state at -once. +It is a platform decision as to how many apps may be in this state at once. -Apps in this state **MAY** be visible. +Apps in this state **MAY** be visible. -Apps in this state **MAY** receive RCU key presses that they have -permissions for. +Apps in this state **MAY** receive RCU key presses that they have permissions +for. -Apps in this state **MUST** have access to the audio decoder if -they have permission to the `xrn:firebolt:capability:decoder:audio` -capability and the platform has an available software or hardware -decoder. +Apps in this state **MUST** have access to the audio decoder if they have +permission to the `xrn:firebolt:capability:decoder:audio` capability and the +platform has an available software or hardware decoder. -Apps in this state **MUST** have access to the video decoder if -they have permission to the `xrn:firebolt:capability:decoder:video` -capability and the platform has an available software or hardware -decoder. +Apps in this state **MUST** have access to the video decoder if they have +permission to the `xrn:firebolt:capability:decoder:video` capability and the +platform has an available software or hardware decoder. -Apps in this state **MUST** have access to the graphics surface. +Apps in this state **MUST** have access to the graphics surface. -Apps in this state **SHOULD** reduce memory usage, if possible. +Apps in this state **SHOULD** reduce memory usage, if possible. -When an app transitions to this state, the platform **MUST** dispatch -the `Lifecycle.onStateChanged` notification with the current state. +When an app transitions to this state, the platform **MUST** dispatch the +`Lifecycle.onStateChanged` notification with the current state. ### 2.4. Suspended -This state allows an app to remain in memory and consume fewer resources. +This state allows an app to remain in memory and consume fewer resources. -Suspended apps can execute code, but are not [Presented](./presentation.md) to the user, do not receive -any input from RCUs, and cannot use the video decoder. +Suspended apps can execute code, but are not [Presented](./presentation.md) to +the user, do not receive any input from RCUs, and cannot use the video +decoder. -Apps in this state **MUST NOT** have a graphics surface allocated any -longer. It **MUST** have been deallocated in the `suspend()` transition. +Apps in this state **MUST NOT** have a graphics surface allocated any longer. +It **MUST** have been deallocated in the `suspend()` transition. -Apps in this state **MUST NOT** be visible. +Apps in this state **MUST NOT** be visible. -Apps in this state **MUST NOT** receive RCU key presses. +Apps in this state **MUST NOT** receive RCU key presses. -Apps in this state **MUST NOT** have access to the audio-video decoder. +Apps in this state **MUST NOT** have access to the audio-video decoder. -Apps in this state **SHOULD** further reduce memory usage (more so than in the `active` state), if possible. +Apps in this state **SHOULD** further reduce memory usage (more so than in the +`active` state), if possible. -**TODO**:: add all the transition pre-requisites, e.g. Apps **MUST** only enter this state from the `SUSPENDED` state, via the `sleep()` interface. +**TODO**:: add all the transition pre-requisites, e.g. Apps **MUST** only enter + this state from the `SUSPENDED` state, via the `sleep()` interface. ### 2.5. Sleeping -This state allows an app to be copied from memory to local storage and -then terminated to save resources. Subsequently, the app may be copied -back into memory, and resume in the same state. +This state allows an app to be copied from memory to local storage and then +terminated to save resources. Subsequently, the app may be copied back into +memory, and resume in the same state. -*If* a platform does not support the -`xrn:firebolt:capability:lifecycle:sleepable` capability, then the following -requirements **MUST NOT** be fulfilled, even partially. A platform -**MUST NOT** use the APIs documented here to implement an alternate, -non-compliant version of the app sleeping feature. +*If* a platform does not support the +`xrn:firebolt:capability:lifecycle:sleepable` capability, then the following +requirements **MUST NOT** be fulfilled, even partially. A platform **MUST +NOT** use the APIs documented here to implement an alternate, non-compliant +version of the app sleeping feature. -*If* a platform supports the `xrn:firebolt:capability:lifecycle:sleepable` -capability, then the following requirements **MUST** be fulfilled. +*If* a platform supports the `xrn:firebolt:capability:lifecycle:sleepable` +capability, then the following requirements **MUST** be fulfilled. -Apps **MUST** only enter this state from the `SUSPENDED` state, via -the `sleep()` interface. +Apps **MUST** only enter this state from the `SUSPENDED` state, via the +`sleep()` interface. -If a platform supports copying sleeping apps memory out of RAM then: +If a platform supports copying sleeping apps memory out of RAM then: -> The platform **MAY** save the app's memory space at this point, so -> that it may be woken later. -> -> Finally, the app and its container **MAY** be removed from memory -> and have other resources released as well. +> The platform **MAY** save the app's memory space at this point, so that it +> may be woken later. +> +> Finally, the app and its container **MAY** be removed from memory and have +> other resources released as well. ## 3. Getting the current state -The Lifecycle module **MUST** provide a `state` property API that -returns the current lifecycle state of the app. +The Lifecycle module **MUST** provide a `state` property API that returns the +current lifecycle state of the app. -If an app is in a transtition from one state to another, then it -**MUST** be considered in the state *before* the transition until -such time as the app's implementation of the [transition](#4-lifecycle-state-transitions) has returned -and the platfrom has finshed the transition. +If an app is in a transtition from one state to another, then it **MUST** be +considered in the state *before* the transition until such time as the app's +implementation of the [transition](#4-lifecycle-state-transitions) has +returned and the platfrom has finshed the transition. -The `state` API **MUST** have a corresponding `onStateChanged` -notification. +The `state` API **MUST** have a corresponding `onStateChanged` notification. -The `state` API must have one of the following values: +The `state` API must have one of the following values: - `Initializing` - `Running` @@ -265,119 +325,127 @@ The `state` API must have one of the following values: - `Active` - `Sleeping` -Note that the `onStateChanged` notification **MUST** never be dispatched -for the `Sleeping` state since it would not be received anyway. +Note that the `onStateChanged` notification **MUST** never be dispatched for +the `Sleeping` state since it would not be received anyway. ## 4. Lifecycle State Transitions -There are several state transitions where the app and the platform need -to interact to ensure the transition goes smoothly. +There are several state transitions where the app and the platform need to +interact to ensure the transition goes smoothly. -![Lifecycle States](../../images/specifications/lifecycle/lifecycle-transitions.png) +![Lifecycle +States](../../images/specifications/lifecycle/lifecycle-transitions.png) -As an app changes states the platform will invoke specific app-provided transition -methods from the `Application` interface: +As an app changes states the platform will invoke specific app-provided +transition methods from the `Application` interface: -| | Legend | -| - | ------ | -| ↓ | Limited | +| | Legend | +| - | ------------- | +| ↓ | Limited | | ✔ | Normal access | -| | CPU | RAM | Net | GFX | A/V | Description | -|----------------|-----|-----|-----|-----|-----|-------------------------------------------------------------------------------| -| `create()` | ✔ | ✔ | ✔ | ✔ | | Creation of the app, from a Firebolt Lifecycle perspective. | -| `suspend()` | ✔ | ✔ | ✔ | ✔ | | Reduce memory and CPU usage, deallocate graphics surface. | -| `resume()` | ✔ | ✔ | ✔ | ✔ | | graphics surface reallocated, full memory usage and normal CPU cycles. | -| `destroy()` | ✔/↓ | ✔/↓ | ✔ | | | Preprare for the app to be deallocated and removed from execution. CPU & RAM based on previous state. | +| | CPU | RAM | Net | GFX | A/V | Description | +|-------------|-----|-----|-----|-----|-----|-------------------------------------------------------------------------------------------------------| +| `create()` | ✔ | ✔ | ✔ | ✔ | | Creation of the app, from a Firebolt Lifecycle perspective. | +| `suspend()` | ✔ | ✔ | ✔ | ✔ | | Reduce memory and CPU usage, deallocate graphics surface. | +| `resume()` | ✔ | ✔ | ✔ | ✔ | | graphics surface reallocated, full memory usage and normal CPU cycles. | +| `destroy()` | ✔/↓ | ✔/↓ | ✔ | | | Preprare for the app to be deallocated and removed from execution. CPU & RAM based on previous state. | -If an app implements the `Activity` interface, then the following transitions may be invoked: +If an app implements the `Activity` interface, then the following transitions +may be invoked: -| | CPU | RAM | Net | GFX | A/V | Description | -|----------------|-----|-----|-----|-----|-----|-------------------------------------------------------------------------------| -| `activate()` | ✔ | ✔ | ✔ | ✔ | ✔ | App is expected to become a user-perceptible part of the user experience. | -| `deactivate()` | ✔ | ✔ | ✔ | ✔ | ✔ | Must remove any user-perceptible activities and deallocate A/V decoders. | +| | CPU | RAM | Net | GFX | A/V | Description | +|----------------|-----|-----|-----|-----|-----|---------------------------------------------------------------------------| +| `activate()` | ✔ | ✔ | ✔ | ✔ | ✔ | App is expected to become a user-perceptible part of the user experience. | +| `deactivate()` | ✔ | ✔ | ✔ | ✔ | ✔ | Must remove any user-perceptible activities and deallocate A/V decoders. | -Finally, if an app implements the `Sleepable` interface, then the following transistions may be invoked. +Finally, if an app implements the `Sleepable` interface, then the following +transistions may be invoked. -| | CPU | RAM | Net | GFX | A/V | Description | -|----------------|-----|-----|-----|-----|-----|-------------------------------------------------------------------------------| -| `sleep()` | ↓ | ↓ | ✔ | | | Prepare for an extended period with no CPU cycles given to app. | -| `wake()` | ↓ | ↓ | ✔ | | | Cleanup after an extended period with no CPU, e.g. reset timers / network connections. | +| | CPU | RAM | Net | GFX | A/V | Description | +|-----------|-----|-----|-----|-----|-----|----------------------------------------------------------------------------------------| +| `sleep()` | ↓ | ↓ | ✔ | | | Prepare for an extended period with no CPU cycles given to app. | +| `wake()` | ↓ | ↓ | ✔ | | | Cleanup after an extended period with no CPU, e.g. reset timers / network connections. | -All of these transition APIs are blocking, and each one has a platform-configurable timeout that specifies how long the app has to fulfill the method. +All of these transition APIs are blocking, and each one has a +platform-configurable timeout that specifies how long the app has to fulfill +the method. -The platform **MUST** never invoke a transions on an app when that app is already running a transition. +The platform **MUST** never invoke a transions on an app when that app is +already running a transition. -All Firebolt apps **MUST** implement the `Application` interface, `xrn:firebolt:capability:lifecycle:application`. +All Firebolt apps **MUST** implement the `Application` interface, +`xrn:firebolt:capability:lifecycle:application`. -This includes: +This includes: - `Application.create()` - `Application.suspend()` - `Application.resume()` - `Application.destroy()` -By providing an implementation of the -`xrn:firebolt:capability:lifecycle:application` interface, an app can -influence how resources are managed during these state transitions. See [Application Interface](#81-application-interface) for more info. +By providing an implementation of the +`xrn:firebolt:capability:lifecycle:application` interface, an app can +influence how resources are managed during these state transitions. See +[Application Interface](#81-application-interface) for more info. -User-facing apps **MUST** implement the `Activity` interface, `xrn:firebolt:capability:lifecycle:activatible`. +User-facing apps **MUST** implement the `Activity` interface, +`xrn:firebolt:capability:lifecycle:activatible`. -This includes: +This includes: - `Application.activate()` - `Application.deactivate()` - `Application.navigate()` -By providing an implementation of the -`xrn:firebolt:capability:lifecycle:activatible` interface, an app can -influence how resources are managed during these state transitions. See [Activity Interface](#82-activity-interface) for more info. +By providing an implementation of the +`xrn:firebolt:capability:lifecycle:activatible` interface, an app can +influence how resources are managed during these state transitions. See +[Activity Interface](#82-activity-interface) for more info. ### 4.2. Initializing an app -Once an app is loaded it **MUST** be initialized immediately. +Once an app is loaded it **MUST** be initialized immediately. -Initializing consists of three parts: +Initializing consists of three parts: - Registration of the Firebolt Application provider - Any other code that automatically runs within the app executable - Invoking the app's Application.create() method -If an app does not provide the `xrn:firebolt:capability:lifecycle:application` -capability within `initializeTimeout` milliseconds, then the platform **MUST** -terminate the app. +If an app does not provide the `xrn:firebolt:capability:lifecycle:application` +capability within `initializeTimeout` milliseconds, then the platform +**MUST** terminate the app. -Otherwise, the platform **MUST** call the app's implementation of -`Application.create()`: +Otherwise, the platform **MUST** call the app's implementation of +`Application.create()`: -> The platform **MUST** dispatch the `Lifecycle.onRequestCreate` -> notification to the app, and wait for `appCreateTimeout` milliseconds -> for either a `Lifecycle.createResult` or `Lifecycle.createError` call in -> response. -> -> Once the platform receives the `createResult` call, then the app -> is considered to have any important Firebolt notifications set up -> and is ready to be activated and presented to the user. -> -> If the app times out or makes a `createError` call, then the app -> **MUST** be immediately terminated by the platform. +> The platform **MUST** dispatch the `Lifecycle.onRequestCreate` notification +> to the app, and wait for `appCreateTimeout` milliseconds for either a +> `Lifecycle.createResult` or `Lifecycle.createError` call in response. +> +> Once the platform receives the `createResult` call, then the app is +> considered to have any important Firebolt notifications set up and is ready +> to be activated and presented to the user. +> +> If the app times out or makes a `createError` call, then the app **MUST** be +> immediately terminated by the platform. -Apps **SHOULD** set up any Firebolt event listeners either before calling -`Lifecycle.provide` or during `create()`, since the platform will wait until -the app is ready before dispatching many critical events such as Lifecycle -and Presentation events. +Apps **SHOULD** set up any Firebolt event listeners either before calling +`Lifecycle.provide` or during `create()`, since the platform will wait until +the app is ready before dispatching many critical events such as Lifecycle +and Presentation events. -Apps **SHOULD** acquire any important authentication needed for the -app to function during initialization. +Apps **SHOULD** acquire any important authentication needed for the app to +function during initialization. -Apps **MAY** load a limited set of global display resources, e.g. a -global style sheet or a logo used throughout the experience, during -initialization. +Apps **MAY** load a limited set of global display resources, e.g. a global +style sheet or a logo used throughout the experience, during initialization. -During the `create()` transition, apps **MUST** inspect the `params` -parameter for [Parameters](#7-launch-parameters) and prepare to fulfill the -provided launch configuration. +During the `create()` transition, apps **MUST** inspect the `params` parameter +for [Parameters](#7-launch-parameters) and prepare to fulfill the provided +launch configuration. -Example Launch Parameters: +Example Launch Parameters: ```json { @@ -387,315 +455,322 @@ Example Launch Parameters: "limitAdTracking": true } } -``` +``` -**TODO**: discuss this ^^ +**TODO**: discuss this ^^ -Once the `create` method returns the app **MUST** be immediately transitioned to -the `RUNNING` state. +Once the `create` method returns the app **MUST** be immediately transitioned +to the `RUNNING` state. ### 4.3. Activating an app -Activating an app transitions it to the `ACTIVE` state so that it becomes part -of the user's experience. - -Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:activate` capability **MUST** implement `Activity.activate()`. - -The platform may activate apps for any number of reasons that are out of -scope for this document. - -To activate an app, platforms **MUST** use the following process. - -If the app is already in the `ACTIVE` state, then it is already -activated and there is no need to do anything else. The platform **MUST -NOT** dispatch any *additional* lifecycle notifications when attempting -to activate an app that is already in the active state and the -remainder of this section does not apply. - -If the app is not loaded, then the platform **MUST** [load](undefined) it first. - -If the app is not initialized, the platform **MUST** [initialize](#42-initializing-an-app) it first. - -If the app is suspended, then it **MUST** be [resumed](#46-resuming-an-app) first. - -At this point, the app **MUST** be in the `RUNNING` state. - -If an app provides the `xrn:firebolt:capability:lifecycle:activatible` -capability, then the platform **MUST** call the app's implementation of -`Activity.activate()`: - -> The platform **MUST** dispatch the `Lifecycle.onRequestActivate` -> notification to the app, and wait for `appActivateTimeout` milliseconds -> for either a `Lifecycle.activateResult` or `Lifecycle.activateError` -> call in response. -> -> The `onRequestActivate` call **MUST** include a `NavigationIntent`. -> -> If the app sends a `Lifecycle.activateFocus` request and has -> permission to use the `xrn:firebolt:capability:lifecycle:loading-screen` -> capability, then the platform **SHOULD** give the app focus and set -> the [Presentation display](./presentation.md) to one of the visible modes, -> so that the app may display a custom loading screen. -> -> Once the platform receives the `activateResult` call, then the app -> may be moved to the `ACTIVE` state. -> -> If the app times out or makes an `activateError` call, then the app -> **MUST** be terminated. - -During the `activate()` transition, the app **MUST** inspect the `intent` -parameter and prepare to fulfill a specific [Navigation Intent](../intents/navigation.md) for -this activation which may include: +Activating an app transitions it to the `ACTIVE` state so that it becomes part +of the user's experience. + +Firebolt apps that have permission to use the +`xrn:firebolt:capability:lifecycle:activate` capability **MUST** implement +`Activity.activate()`. + +The platform may activate apps for any number of reasons that are out of scope +for this document. + +To activate an app, platforms **MUST** use the following process. + +If the app is already in the `ACTIVE` state, then it is already activated and +there is no need to do anything else. The platform **MUST NOT** dispatch any +*additional* lifecycle notifications when attempting to activate an app that +is already in the active state and the remainder of this section does not +apply. + +If the app is not loaded, then the platform **MUST** [load](undefined) it +first. + +If the app is not initialized, the platform **MUST** +[initialize](#42-initializing-an-app) it first. + +If the app is suspended, then it **MUST** be [resumed](#46-resuming-an-app) +first. + +At this point, the app **MUST** be in the `RUNNING` state. + +If an app provides the `xrn:firebolt:capability:lifecycle:activatible` +capability, then the platform **MUST** call the app's implementation of +`Activity.activate()`: + +> The platform **MUST** dispatch the `Lifecycle.onRequestActivate` notification +> to the app, and wait for `appActivateTimeout` milliseconds for either a +> `Lifecycle.activateResult` or `Lifecycle.activateError` call in response. +> +> The `onRequestActivate` call **MUST** include a `NavigationIntent`. +> +> If the app sends a `Lifecycle.activateFocus` request and has permission to +> use the `xrn:firebolt:capability:lifecycle:loading-screen` capability, then +> the platform **SHOULD** give the app focus and set the [Presentation +> display](./presentation.md) to one of the visible modes, so that the app may +> display a custom loading screen. +> +> Once the platform receives the `activateResult` call, then the app may be +> moved to the `ACTIVE` state. +> +> If the app times out or makes an `activateError` call, then the app **MUST** +> be terminated. + +During the `activate()` transition, the app **MUST** inspect the `intent` +parameter and prepare to fulfill a specific [Navigation +Intent](../intents/navigation.md) for this activation which may include: - Loading any metadata needed to display the user's intended content. - Performing any entitlement checks to decide whether to display a player or a purchase flow - Any other steps necesary to present content to the user quickly -The platform will display a loading screen for the entire duration of -the `activate()` callback, and apps **SHOULD** do whatever is necessary -to present the user with content that fulfills the `intent` without -additional loading screens in the app's UX. +The platform will display a loading screen for the entire duration of the +`activate()` callback, and apps **SHOULD** do whatever is necessary to +present the user with content that fulfills the `intent` without additional +loading screens in the app's UX. -**TODO**: Discuss ^^ +**TODO**: Discuss ^^ ### 4.4. Deactivating an app -Closing an app transitions it to the `RUNNING` state, so that it is no -longer part of the user's experience. +Closing an app transitions it to the `RUNNING` state, so that it is no longer +part of the user's experience. -Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:activate` capability **MUST** implement `Activity.deactivate()`. +Firebolt apps that have permission to use the +`xrn:firebolt:capability:lifecycle:activate` capability **MUST** implement +`Activity.deactivate()`. -The platform may close apps for any number of reasons that are out of -scope for this document. +The platform may close apps for any number of reasons that are out of scope for + this document. -Apps **MAY** request to be closed, via the `Lifecycle.close()` API method. +Apps **MAY** request to be closed, via the `Lifecycle.close()` API method. -To close an app, platforms **MUST** use the following process. +To close an app, platforms **MUST** use the following process. -If an app is already in the `RUNNING`, `SUSPENDED`, or `SLEEPING` state, then it is already closed -and there is no need to do anything else. The platform **MUST NOT** -dispatch any *additional* lifecycle notifications when attempting to -close an app that is already in the `RUNNING` state and the remainder of -this section does not apply. +If an app is already in the `RUNNING`, `SUSPENDED`, or `SLEEPING` state, then +it is already closed and there is no need to do anything else. The platform +**MUST NOT** dispatch any *additional* lifecycle notifications when +attempting to close an app that is already in the `RUNNING` state and the +remainder of this section does not apply. -**TODO**: list out all possible transition "interuptions" and make sure they are described in this doc. +**TODO**: list out all possible transition "interuptions" and make sure they +are described in this doc. -If an app is in the `initializing` state, then it is not +If an app is in the `initializing` state, then it is not -If an app is already performing a `deactivate()` transition, the platform -**MUST** ignore the new attempt to close the app, allow the pending -closure to complete, and the remainder of this section does not apply. +If an app is already performing a `deactivate()` transition, the platform +**MUST** ignore the new attempt to close the app, allow the pending closure +to complete, and the remainder of this section does not apply. -If an app is already performing an `activate()` transition, the platform -**MUST** wait for the activate call to succeed or fail and then skip the -remaining [activation steps](#43-activating-an-app). +If an app is already performing an `activate()` transition, the platform +**MUST** wait for the activate call to succeed or fail and then skip the +remaining [activation steps](#43-activating-an-app). -If an app is currently [initializing](#42-initializing-an-app), the -platform **MUST** wait for initialization to succeed or fail and then skip -any activation that may have been pending. +If an app is currently [initializing](#42-initializing-an-app), the platform +**MUST** wait for initialization to succeed or fail and then skip any +activation that may have been pending. -If an app is currently in a [destroy](#49-destroying-an-app) transition then -the app cannot be closed and the platform **MUST NOT** close it, and the -remainder of this section does not apply. +If an app is currently in a [destroy](#49-destroying-an-app) transition then +the app cannot be closed and the platform **MUST NOT** close it, and the +remainder of this section does not apply. -At this point, the app **MUST** be in the `ACTIVE` state. +At this point, the app **MUST** be in the `ACTIVE` state. -If an app provides the `xrn:firebolt:capability:lifecycle:activatible` -capability, then the platform **MUST** call the app's implementation of -`Activity.deactivate()`: +If an app provides the `xrn:firebolt:capability:lifecycle:activatible` +capability, then the platform **MUST** call the app's implementation of +`Activity.deactivate()`: -> The platform **MUST** dispatch the `Lifecycle.onRequestDeactivate` -> notification to the app, and wait for `appDeactivateTimeout` milliseconds -> for either a `Lifecycle.deactivateResult` or `Lifecycle.deactivateError` -> call in response. -> -> Once the platform receives the `deactivateResult` call, then the app -> may be moved to the `RUNNING` state. -> -> If the app times out or makes a `deactivateError` call, then the app -> **MUST** be terminated. +> The platform **MUST** dispatch the `Lifecycle.onRequestDeactivate` +> notification to the app, and wait for `appDeactivateTimeout` milliseconds for +> either a `Lifecycle.deactivateResult` or `Lifecycle.deactivateError` call in +> response. +> +> Once the platform receives the `deactivateResult` call, then the app may be +> moved to the `RUNNING` state. +> +> If the app times out or makes a `deactivateError` call, then the app +> **MUST** be terminated. -During the `deactivate()` transition, the app **MUST** deallocate any -A/V decoders. +During the `deactivate()` transition, the app **MUST** deallocate any A/V +decoders. -The platform **MAY** begin to transition the app out of view as soon as -`deactivate()` is called. +The platform **MAY** begin to transition the app out of view as soon as +`deactivate()` is called. ### 4.5. Suspending an app -Suspending an app transitions it to the `SUSPENDED` state, where it is -no longer allowed to use graphics composition, and is expected to consume -less CPU and RAM. +Suspending an app transitions it to the `SUSPENDED` state, where it is no +longer allowed to use graphics composition, and is expected to consume less +CPU and RAM. -The platform may suspend apps in order to free up memory, or for any -number of reasons that are out of scope for this document. However, it -is the platform's decision to suspend an app, not the app itself. +The platform may suspend apps in order to free up memory, or for any number of +reasons that are out of scope for this document. However, it is the +platform's decision to suspend an app, not the app itself. -To suspend an app, platforms **MUST** use the following process. +To suspend an app, platforms **MUST** use the following process. -If an app is in the `ACTIVE` state then it cannot yet be suspended, and -**MUST** be deactivated first. +If an app is in the `ACTIVE` state then it cannot yet be suspended, and +**MUST** be deactivated first. -If an app is in the `SLEEPING` state then it cannot be suspended and there -is no need to do anything else. The platform **MUST NOT** dispatch any -*additional* lifecycle notifications when attempting to suspend an app -that is already in the `SLEEPING` state and the remainder of this section -does not apply. +If an app is in the `SLEEPING` state then it cannot be suspended and there is +no need to do anything else. The platform **MUST NOT** dispatch any +*additional* lifecycle notifications when attempting to suspend an app that +is already in the `SLEEPING` state and the remainder of this section does not + apply. -If an app is already in the `SUSPENDED` state, then it is already -suspended and there is no need to do anything else. The platform **MUST -NOT** dispatch any *additional* lifecycle notifications when attempting -to suspend an app that is already in the suspended state and the -remainder of this section does not apply. +If an app is already in the `SUSPENDED` state, then it is already suspended and + there is no need to do anything else. The platform **MUST NOT** dispatch +any *additional* lifecycle notifications when attempting to suspend an app +that is already in the suspended state and the remainder of this section +does not apply. -If the app is not loaded, or is not in the `RUNNING` state, then it -cannot be suspended, and the remainder of this section does not need to -happen. +If the app is not loaded, or is not in the `RUNNING` state, then it cannot be +suspended, and the remainder of this section does not need to happen. -At this point, the app **MUST** be in the `RUNNING` state. +At this point, the app **MUST** be in the `RUNNING` state. -Since every app **MUST** provide the `xrn:firebolt:capability:lifecycle:application` -capability, the platform **MUST** call the app's implementation of -`Application.suspend()`: +Since every app **MUST** provide the +`xrn:firebolt:capability:lifecycle:application` capability, the platform +**MUST** call the app's implementation of `Application.suspend()`: -> The platform **MUST** dispatch the `Lifecycle.onRequestSuspend` -> notification to the app, and wait for `appSuspendTimeout` milliseconds -> for either a `Lifecycle.suspendResult` or `Lifecycle.suspendError` -> call in response. -> -> Once the platform receives the `suspendResult` call, then the app -> may be moved to the `SUSPENDED` state. -> -> If the app times out or makes a `suspendError` call, then the app -> **MUST** be [destroyed](#49-destroying-an-app). +> The platform **MUST** dispatch the `Lifecycle.onRequestSuspend` notification +> to the app, and wait for `appSuspendTimeout` milliseconds for either a +> `Lifecycle.suspendResult` or `Lifecycle.suspendError` call in response. +> +> Once the platform receives the `suspendResult` call, then the app may be +> moved to the `SUSPENDED` state. +> +> If the app times out or makes a `suspendError` call, then the app **MUST** +> be [destroyed](#49-destroying-an-app). -During the `suspend()` transition, the app: +During the `suspend()` transition, the app: -> **MUST** deallocate any graphics surface. -> -> **SHOULD** reduce memory usage, if possible. +> **MUST** deallocate any graphics surface. +> +> **SHOULD** reduce memory usage, if possible. ### 4.6. Resuming an app -Resuming an app allows it to reallocate graphics composition and -reload any resources it might have deallocated during `suspend()`. +Resuming an app allows it to reallocate graphics composition and reload any +resources it might have deallocated during `suspend()`. -The platform may resume apps so they can access more resources or -in preperation to activate them. +The platform may resume apps so they can access more resources or in +preperation to activate them. -To resume an app, platforms **MUST** use the following process. +To resume an app, platforms **MUST** use the following process. -If an app is not in the `SUSPENDED` state, then it cannot be resumed -and there is no need to do anything else. The platform **MUST NOT** -dispatch any *additional* lifecycle notifications when attempting to -resume an app that is not in the `SUSPENDED` state and the remainder of -this section does not apply. +If an app is not in the `SUSPENDED` state, then it cannot be resumed and there +is no need to do anything else. The platform **MUST NOT** dispatch any +*additional* lifecycle notifications when attempting to resume an app that is + not in the `SUSPENDED` state and the remainder of this section does not +apply. -At this point, the app **MUST** be in the `SUSPENDED` state. +At this point, the app **MUST** be in the `SUSPENDED` state. -Next, the platform **MUST** remove any restrictions on access the graphics -compositor. +Next, the platform **MUST** remove any restrictions on access the graphics +compositor. -Suspended apps **MUST** provide the `xrn:firebolt:capability:lifecycle:application` -capability, so the platform **MUST** call the app's implementation of -`Application.resume()`: +Suspended apps **MUST** provide the +`xrn:firebolt:capability:lifecycle:application` capability, so the platform +**MUST** call the app's implementation of `Application.resume()`: -The platform **MUST** dispatch the `Lifecycle.onRequestResume` -notification to the app, and wait for `appResumeTimeout` milliseconds -for either a `Lifecycle.resumeResult` or `Lifecycle.resumeError` -call in response. +The platform **MUST** dispatch the `Lifecycle.onRequestResume` notification to +the app, and wait for `appResumeTimeout` milliseconds for either a +`Lifecycle.resumeResult` or `Lifecycle.resumeError` call in response. -Once the platform receives the `resumeResult` call, then the app -may be moved to the `RUNNING` state. +Once the platform receives the `resumeResult` call, then the app may be moved +to the `RUNNING` state. -If the app times out or makes a `resumeError` call, then the app -**MUST** be terminated. +If the app times out or makes a `resumeError` call, then the app **MUST** be +terminated. -During the `resume()` transition, apps **SHOULD** reallocate graphics -composition and other necessary resources. +During the `resume()` transition, apps **SHOULD** reallocate graphics +composition and other necessary resources. ### 4.7. Putting an app to sleep -TBD +TBD -Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement `Sleepable.sleep()`. +Firebolt apps that have permission to use the +`xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement +`Sleepable.sleep()`. -TODO: if you don't call provide, we won't do this. +TODO: if you don't call provide, we won't do this. ### 4.8. Waking an app from sleep -TBD +TBD -Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement `Sleepable.wake()`. +Firebolt apps that have permission to use the +`xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement +`Sleepable.wake()`. ### 4.9. Destroying an app -Destroying an app transitions it out of memory, so that it is no longer -using resources on the device. +Destroying an app transitions it out of memory, so that it is no longer using +resources on the device. -The platform may destroy apps for any number of reasons that are out of -scope for this document. +The platform may destroy apps for any number of reasons that are out of scope +for this document. -To destroy an app, platforms **MUST** use the following process. +To destroy an app, platforms **MUST** use the following process. -If an app is not in the `RUNNING` state, then it cannot be destroyed and -there is no need to do anything else. The platform **MUST NOT** dispatch -any *additional* lifecycle notifications when attempting to destroy an -app that is not in the `RUNNING` state and the remainder of this section -does not need to happen. +If an app is not in the `RUNNING` state, then it cannot be destroyed and there +is no need to do anything else. The platform **MUST NOT** dispatch any +*additional* lifecycle notifications when attempting to destroy an app that +is not in the `RUNNING` state and the remainder of this section does not need + to happen. -At this point, the app **MUST** be in the `RUNNING` state. +At this point, the app **MUST** be in the `RUNNING` state. -Since every app **MUST** provide the `xrn:firebolt:capability:lifecycle:application` -capability, the platform **MUST** call the app's implementation of -`Application.destroy()`: +Since every app **MUST** provide the +`xrn:firebolt:capability:lifecycle:application` capability, the platform +**MUST** call the app's implementation of `Application.destroy()`: -> The platform **MUST** dispatch the `Lifecycle.onRequestDestroy` -> notification to the app, and wait for `appDestroyTimeout` milliseconds -> for either a `Lifecycle.destroyResult` or `Lifecycle.destroyError` -> call in response. -> -> Once the platform receives the `destroyResult` call, then the platform -> may proceed with app destroying. -> -> If the app times out or makes an `destroyError` call, then the app -> **MUST** be terminated. +> The platform **MUST** dispatch the `Lifecycle.onRequestDestroy` notification +> to the app, and wait for `appDestroyTimeout` milliseconds for either a +> `Lifecycle.destroyResult` or `Lifecycle.destroyError` call in response. +> +> Once the platform receives the `destroyResult` call, then the platform may +> proceed with app destroying. +> +> If the app times out or makes an `destroyError` call, then the app **MUST** +> be terminated. ### 4.10. Terminating an app -Terminating an app removes it from memory without dispatching any state -changes. +Terminating an app removes it from memory without dispatching any state +changes. -The platform **SHOULD** terminate apps when one of the transitions outlined -here fails for some reason, or if an app becomes non-responsesive. +The platform **SHOULD** terminate apps when one of the transitions outlined +here fails for some reason, or if an app becomes non-responsesive. -Terminating an app results in removing it from memory and all resources -held by the app and it's container being freed up. +Terminating an app results in removing it from memory and all resources held by + the app and it's container being freed up. -Platforms **MAY** terminate an app when needed but **SHOULD NOT** do -this in place of graceful [destroying](#49-destroying-an-app). +Platforms **MAY** terminate an app when needed but **SHOULD NOT** do this in +place of graceful [destroying](#49-destroying-an-app). ## 6. Activity Navigation -Typically navigation is handled either when the app is activated, via -the `intent` parameter of the `activate` method, or by internal input -within the app. +Typically navigation is handled either when the app is activated, via the +`intent` parameter of the `activate` method, or by internal input within the +app. -There are other times when the platform needs to inform an app of a user's -intent to navigate when the app is already `ACTIVE`, e.g. when a voice -command is executed or a soft remote sends a message while the app is in -focus. +There are other times when the platform needs to inform an app of a user's +intent to navigate when the app is already `ACTIVE`, e.g. when a voice +command is executed or a soft remote sends a message while the app is in +focus. -In these cases, the platform **MUST** call the `Activity.navigate` method -of the App, and pass the `intent`. +In these cases, the platform **MUST** call the `Activity.navigate` method of +the App, and pass the `intent`. -Within the `navigate()` method, the app **MUST** inspect the `intent` -parameter and prepare to fulfill a specific [Navigation Intent](../intents/navigation.md) for -the app, which may include: +Within the `navigate()` method, the app **MUST** inspect the `intent` parameter + and prepare to fulfill a specific [Navigation +Intent](../intents/navigation.md) for the app, which may include: - Loading any metadata needed to display the user's intended content. - Performing any entitlement checks to decide whether to display a player or a purchase flow - Any other steps necesary to present content to the user quickly ## 7. Launch Parameters -The `LaunchParameters` type is an object with the following properties: +The `LaunchParameters` type is an object with the following properties: ```typescript type Parameters = { @@ -705,28 +780,31 @@ type Parameters = { limitAdTracking: boolean } } -``` +``` -// Parameters.initialization() +// Parameters.initialization() - suspended after app restart - suspended after power on - foreground after app start -^^^ need to dicuss what we need in here, and also what to do w/ US-centric stuff like 'limitAdTracking' +^^^ need to dicuss what we need in here, and also what to do w/ US-centric +stuff like 'limitAdTracking' ## 8. Core SDK APIs -The following APIs are exposed by the Firebolt Core SDK. +The following APIs are exposed by the Firebolt Core SDK. ### 8.1. Application Interface -The `Application` interface is implemented by Apps to provide resource management around memory as an Application moves through the core lifecycle states: +The `Application` interface is implemented by Apps to provide resource +management around memory as an Application moves through the core lifecycle +states: - `INITIALIZING` - `RUNNING` - `SUSPENDED` -All apps **MUST** implement the Application interface. +All apps **MUST** implement the Application interface. ```typescript interface Application { @@ -735,19 +813,20 @@ interface Application { function resume(): Promise; function destroy(): Promsie; } -``` +``` -| Method | Description | -| -------- | ----------- | -| `create()` | Called when the platform is ready to create the lifecycle session for the app. Only called only once, during the `INITIALIZING` state. | +| Method | Description | +| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `create()` | Called when the platform is ready to create the lifecycle session for the app. Only called only once, during the `INITIALIZING` state. | | `suspend()` | Called when the platform requires the app to deallocate its graphics surface and reduce memory as much as possible. This may be called anytime the app is in the `RUNNING` state. | -| `resume()` | Called when the platform wants the app to reallocate its graphics surface and prepare to be potentially used. | -| `destroy()` | Called when the platform is ready to end the lifecycle session for the app. Only called once. | +| `resume()` | Called when the platform wants the app to reallocate its graphics surface and prepare to be potentially used. | +| `destroy()` | Called when the platform is ready to end the lifecycle session for the app. Only called once. | ### 8.2. Activity Interface -The `Activity` interface is implemented by Apps that provide user perceptible experiences, e.g. visible, audible, or user input. +The `Activity` interface is implemented by Apps that provide user perceptible +experiences, e.g. visible, audible, or user input. -These types of apps require additional resource management +These types of apps require additional resource management ```typescript interface Activity { @@ -755,7 +834,7 @@ interface Activity { function deactivate(): Promise; function navigate(intent: NavigationIntent): Promise; } -``` +``` | Method | Description | | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | @@ -764,25 +843,27 @@ interface Activity { | `navigate()` | Called when an app is already `ACTIVE` and the platform wants the app to navigate to a new [Navigation Intent](../intents/navigation.md) | ### 8.3. Sleepable Interface -The `Sleepable` interface is implemented by Apps that are able to handle being put to sleep and then woken at a later point in time. +The `Sleepable` interface is implemented by Apps that are able to handle being +put to sleep and then woken at a later point in time. -These types of apps require additional resource management to reestablish network connections and may also require additional thread safety checks. +These types of apps require additional resource management to reestablish +network connections and may also require additional thread safety checks. ```typescript interface Sleepable { function sleep(): Promise; function wake(): Promise; } -``` +``` -| Method | Description | -| -------- | ----------- | -| `sleep()` | Called when the platform is ready to move the app into the `SLEEPING` state where it will no longer have access to the CPU. | -| `wake()` | Called when the platform is ready to move the app out of the `SLEEPING` state and into `SUSPENDED`. Network connections should be reestablished here. | +| Method | Description | +| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sleep()` | Called when the platform is ready to move the app into the `SLEEPING` state where it will no longer have access to the CPU. | +| `wake()` | Called when the platform is ready to move the app out of the `SLEEPING` state and into `SUSPENDED`. Network connections should be reestablished here. | ### 8.4. Example App -Example: +Example: ```typescript import { Lifecycle } from '@firebolt-js/sdk' @@ -833,62 +914,62 @@ Lifecycle.provide([ "xrn:firebolt:capability:lifecycle:application", "xrn:firebolt:capability:lifecycle:activatible" ], new ExampleApplication()) -``` +``` -**NOTE**: we need to support passing an array of capabilities for a single class. +**NOTE**: we need to support passing an array of capabilities for a single +class. -See the [Firebolt API -Documentation](https://developer.comcast.com/firebolt/core/sdk/latest/api/) -for details around syntax, etc. +See the [Firebolt API +Documentation](https://developer.comcast.com/firebolt/core/sdk/latest/api/) +for details around syntax, etc. ### 8.5. Ready -The Lifecycle.ready() API allows an app to notify the platform that it -is initialized and ready to be displayed to the end user. This method -**MUST NOT** be called more than once. +The Lifecycle.ready() API allows an app to notify the platform that it is +initialized and ready to be displayed to the end user. This method **MUST +NOT** be called more than once. ### 8.6. Close -The Lifecycle.close() API allows an app to request that it be closed by -the platform. +The Lifecycle.close() API allows an app to request that it be closed by the +platform. -This method requires a reason parameter, which tells the platform why -the app is requesting to be closed: +This method requires a reason parameter, which tells the platform why the app +is requesting to be closed: | Reason | Description | -|------------------------------------|------------------------------------| +|---------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | CloseReason.REMOTE_BUTTON | The user pressed the back or last button on the RCU and the App has determined it is at the top of it's navigation stack and should go back to the platform home screen. | | CloseReason.USER_EXIT | The user selected an exit control exposed by the app's UI. | -| CloseReason.ERROR | The app is experiencing unrecoverable issues and needs to be closed and destroyed. | +| CloseReason.ERROR | The app is experiencing unrecoverable issues and needs to be closed and destroyed. | -Platforms generally **SHOULD** respect this call and move the app to the -running state, but there may be edge cases where this is not possible, -e.g. the app is considered to be the default experience for the device, -and closing it would leave no other UX present. +Platforms generally **SHOULD** respect this call and move the app to the +running state, but there may be edge cases where this is not possible, e.g. +the app is considered to be the default experience for the device, and +closing it would leave no other UX present. -When the request to close is not respected, the Lifecycle.close() method -**MUST** return an error. +When the request to close is not respected, the Lifecycle.close() method +**MUST** return an error. -Platforms **MAY** prioritize apps to be destroyed based on the reason -provided. For example, apps closed due to the RCU are less likely to be -destroyed since it may be an accidental RCU press, whereas an explicit -user exit is more likely to be intentional. +Platforms **MAY** prioritize apps to be destroyed based on the reason provided. + For example, apps closed due to the RCU are less likely to be destroyed +since it may be an accidental RCU press, whereas an explicit user exit is +more likely to be intentional. ### 8.7. State -The Lifecycle.state() method provides convenient access to the current -state, and is implemented by the Core SDK listening to all state -notifications. This method **MUST NOT** be asynchronous. +The Lifecycle.state() method provides convenient access to the current state, +and is implemented by the Core SDK listening to all state notifications. This + method **MUST NOT** be asynchronous. ## 9. Lifecycle Configuration -In order to enable Firebolt Certification of a device's Lifecycle -Management features, the device **MUST** support the following -configuration options, so that the Firebolt Certification Test Suite -knows which optional conditions to test for, and for how long to wait -for state transitions. +In order to enable Firebolt Certification of a device's Lifecycle Management +features, the device **MUST** support the following configuration options, so + that the Firebolt Certification Test Suite knows which optional conditions +to test for, and for how long to wait for state transitions. -The LifecyclePolicy fields are: +The LifecyclePolicy fields are: | Field | Type | Required | Description | |----------------------|--------|----------|--------------------------------------------------------------------------------------------------------------------------| diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index 65c7abfc1..c752f7098 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -1,24 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # App Presentation -need to write this up... +need to write this up... -Document Status: Working Draft +Document Status: Working Draft -See [Firebolt Requirements Governance](../../governance.md) for more info. +See [Firebolt Requirements Governance](../../governance.md) for more info. -| Contributor | Organization | -| -------------- | -------------- | -| Andrew Bennet | Sky | -| Cody Bonney | Charter | -| Bart Catrysse | Liberty | -| Tim Dibben | Sky | -| Jeremy LaCivita | Comcast | -| Ramprasad Lakshminarayana | Sky | -| Kevin Pearson | Comcast | -| Peter Yu | Comcast | +| Contributor | Organization | +| ------------------------- | ------------ | +| Andrew Bennet | Sky | +| Cody Bonney | Charter | +| Bart Catrysse | Liberty | +| Tim Dibben | Sky | +| Jeremy LaCivita | Comcast | +| Ramprasad Lakshminarayana | Sky | +| Kevin Pearson | Comcast | +| Peter Yu | Comcast | ## 1. Overview -TBD... +TBD... - [1. Overview](#1-overview) - [2. Focus](#2-focus) @@ -32,24 +64,26 @@ TBD... ## 2. Focus -The `Presentation` module **MUST** have a `focus` boolean property that returns whether or not the app has input, e.g. RCU, focus. +The `Presentation` module **MUST** have a `focus` boolean property that returns + whether or not the app has input, e.g. RCU, focus. -As a property, this API also has an `onFocusChanged` notification. +As a property, this API also has an `onFocusChanged` notification. ## 3. Display -The `Presentation` module **MUST** have a `display` string property that returns one of the following values: +The `Presentation` module **MUST** have a `display` string property that +returns one of the following values: -| Value | Description | -|-------|-------------| -| `fullscreen` | The app is displayed such that the dimensions fill the entire screen | +| Value | Description | +|--------------|-------------------------------------------------------------------------------------------------------------------------| +| `fullscreen` | The app is displayed such that the dimensions fill the entire screen | | `offscreen` | The app is has it's graphics surface attached, but not displayed on the screen at the moment, e.g. scrolled out of view | -| `scaled` | The app is displayed at a size smaller than the entire screen but at least 25% of the width or height | -| `thumbnail` | The app is displayed at a size smaller than 25% of the width or height of the entire screen | -| `loading` | The platform is displaying a loading screen while the app prepares to be activated | -| `none` | The app does not have it's graphics surface attached to the screen | +| `scaled` | The app is displayed at a size smaller than the entire screen but at least 25% of the width or height | +| `thumbnail` | The app is displayed at a size smaller than 25% of the width or height of the entire screen | +| `loading` | The platform is displaying a loading screen while the app prepares to be activated | +| `none` | The app does not have it's graphics surface attached to the screen | ### 3.1. Display vs Lifecycle -Each Lifecycle state only supports certain display states: +Each Lifecycle state only supports certain display states: | Lifecycle | Supported Displays | |----------------|--------------------------------------------------| @@ -59,63 +93,74 @@ Each Lifecycle state only supports certain display states: | `suspended` | `none`, `loading` | | `sleeping` | `none`, `loading` | -See [Picture-in-picture](#6-picture-in-picture-video) and [Background Audio](#5-background-audio) for exceptions to this. +See [Picture-in-picture](#6-picture-in-picture-video) and [Background +Audio](#5-background-audio) for exceptions to this. ## 4. Overlay -The `Presentation` module **MUST** have an `overlay` string property that returns one of the following values: +The `Presentation` module **MUST** have an `overlay` string property that +returns one of the following values: -| Value | Description | -|-------|-------------| -| `icon` | There is an informative icon, e.g. volume, on top of the app. | -| `band` | There is a horizontal overlay at the top or bottom of the app. | -| `sidebar` | There is a vertical sidebar covering less than 33% of the app on one side. | -| `blocked` | There is a significantly sized UX covering a majority of the app. | +| Value | Description | +|-----------|----------------------------------------------------------------------------| +| `icon` | There is an informative icon, e.g. volume, on top of the app. | +| `band` | There is a horizontal overlay at the top or bottom of the app. | +| `sidebar` | There is a vertical sidebar covering less than 33% of the app on one side. | +| `blocked` | There is a significantly sized UX covering a majority of the app. | ## 5. Background Audio -If an app has the `xrn:firebolt:capability:media:background-audio`, then it can keep playing audio/video when the app is in the `none` display state and the audio will be played for the user. +If an app has the `xrn:firebolt:capability:media:background-audio`, then it can + keep playing audio/video when the app is in the `none` display state and +the audio will be played for the user. -When an app has this capability, it **MAY** be put into the `none` display state while in the `active` Lifecycle state. +When an app has this capability, it **MAY** be put into the `none` display +state while in the `active` Lifecycle state. ## 6. Picture-in-Picture Video -If an app has the `xrn:firebolt:capability:media:picture-in-picture`, then it can keep playing audio/video when the app is in the `none` display state and the audio & video will be presented to the user in bounding box determined by the platform. Note that this does not include the entire UX of the app, just the active media pipeline. +If an app has the `xrn:firebolt:capability:media:picture-in-picture`, then it +can keep playing audio/video when the app is in the `none` display state and +the audio & video will be presented to the user in bounding box determined by + the platform. Note that this does not include the entire UX of the app, +just the active media pipeline. -When an app has this capability, it **MAY** be put into the `none` display state while in the `active` Lifecycle state. +When an app has this capability, it **MAY** be put into the `none` display +state while in the `active` Lifecycle state. ## 7. Platform-provided Loading Screen -Most apps will leverage a platform-provided loading screen. +Most apps will leverage a platform-provided loading screen. -If an app provides the `xrn:firebolt:capability:presentation:loading-screen` -capability, then the platform **MAY** use the app-provided loading screen, in -which case, the rest of the section does not apply. +If an app provides the `xrn:firebolt:capability:presentation:loading-screen` +capability, then the platform **MAY** use the app-provided loading screen, in + which case, the rest of the section does not apply. -The loading screen **SHOULD** include a loading image referenced in the app's -manifest and cached on the device. +The loading screen **SHOULD** include a loading image referenced in the app's +manifest and cached on the device. -The loading screen **MUST** be displayed when the user attempts to launch the -app. +The loading screen **MUST** be displayed when the user attempts to launch the +app. -The loading screen **MUST** stay displayed until the app becomes active, or -launching is cancelled. +The loading screen **MUST** stay displayed until the app becomes active, or +launching is cancelled. -The presentation state of the app **MUST** be `LOADING` for the entire time -the loading screen is displayed. +The presentation state of the app **MUST** be `LOADING` for the entire time the + loading screen is displayed. -See [Lifecycle](./index.md) for more info on launching. +See [Lifecycle](./index.md) for more info on launching. ## 8. App-provided Loading Screen -If an app provides the `xrn:firebolt:capability:lifecycle:loading-screen` -capability, then the platform **MAY** invoke this capability in some situations. +If an app provides the `xrn:firebolt:capability:lifecycle:loading-screen` +capability, then the platform **MAY** invoke this capability in some +situations. -In order for an app and use an app-provided loading screen, the app **MUST** -provide the `xrn:firebolt:capability:lifecycle:activity` capability. If the app -does not provide this capability, then app-provided loading screens **MUST NOT** -but invoked for the app. +In order for an app and use an app-provided loading screen, the app **MUST** +provide the `xrn:firebolt:capability:lifecycle:activity` capability. If the +app does not provide this capability, then app-provided loading screens +**MUST NOT** but invoked for the app. -Apps that provide the loading screen capability **MUST** be made visible at -the very beginning of the `Activity.activate()` transition, rather -than at the end. +Apps that provide the loading screen capability **MUST** be made visible at the + very beginning of the `Activity.activate()` transition, rather than at the +end. -The presentation state of the app **SHOULD NOT** be `none` at any time during -the `activate()` transition. +The presentation state of the app **SHOULD NOT** be `none` at any time during +the `activate()` transition. -See [Lifecycle](./index.md) for more info on loading and activating apps. +See [Lifecycle](./index.md) for more info on loading and activating apps. diff --git a/requirements/style-guide-and-template.md b/requirements/style-guide-and-template.md index 2a9a1ed1d..1d935d9d3 100644 --- a/requirements/style-guide-and-template.md +++ b/requirements/style-guide-and-template.md @@ -1,27 +1,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + # Requirements Style Guide -Document Status: Working Draft +Document Status: Working Draft -See [Firebolt Requirements Governance](./governance.md) for more info. +See [Firebolt Requirements Governance](./governance.md) for more info. -**NOTE**: Update this link based on your directory depth ^^ +**NOTE**: Update this link based on your directory depth ^^ -| Contributor | Organization | -| -------------- | -------------- | -| TBD | TBD | +| Contributor | Organization | +| ----------- | ------------ | +| TBD | TBD | ## 1. Overview -This document is both a style guide *and* a template for Firebolt Requirements Specifications. +This document is both a style guide *and* a template for Firebolt Requirements +Specifications. -The Overview section is a non-normative or informative introduction to the contents and subject matter of the document. This is included to introduce the reader to the overall problem, solution, and scope. No formal requirements will be included here, as it will often be skipped by readers that are already familiar with the document. +The Overview section is a non-normative or informative introduction to the +contents and subject matter of the document. This is included to introduce +the reader to the overall problem, solution, and scope. No formal +requirements will be included here, as it will often be skipped by readers +that are already familiar with the document. -Overviews can be as long or short as appropriate for the subject matter, and should have a target audience ranging from technical product managers to engineering teams that may be testing, implementing, or integrating with the functionality described in the document. +Overviews can be as long or short as appropriate for the subject matter, and +should have a target audience ranging from technical product managers to +engineering teams that may be testing, implementing, or integrating with the +functionality described in the document. -The overview must contain the following towards the end: +The overview must contain the following towards the end: -Requirements documents are written using the [IETF Best Common Practice 14](https://www.rfc-editor.org/rfc/rfc2119.txt) and should include the following summary in the Overview section: +Requirements documents are written using the [IETF Best Common Practice +14](https://www.rfc-editor.org/rfc/rfc2119.txt) and should include the +following summary in the Overview section: -The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**NOT RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be interpreted as described in [BCP 14](https://www.rfc-editor.org/rfc/rfc2119.txt) [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here. +The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL + NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**NOT +RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be +interpreted as described in [BCP +14](https://www.rfc-editor.org/rfc/rfc2119.txt) [RFC2119] [RFC8174] when, and + only when, they appear in all capitals, as shown here. ## 2. Table of Contents - [1. Overview](#1-overview) @@ -33,60 +80,101 @@ The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL - [4. Example Section](#4-example-section) - [4.1. Example Feature](#41-example-feature) -**NOTE**: This is a simple table of contents. It should include links to all headers in the document, except for the top-level header (i.e. `# Title`). It is recommended to use a Markdown plugin to generate this based on headers ranging from level two to level six. Delete this note from your actual spec :) +**NOTE**: This is a simple table of contents. It should include links to all +headers in the document, except for the top-level header (i.e. `# Title`). It + is recommended to use a Markdown plugin to generate this based on headers +ranging from level two to level six. Delete this note from your actual spec +:) ## 3. Specification Style Requirements -Firebolt uses method templates in order to code-generate consistent APIs. For example, methods with the `"property"` tag only need to have the `getter` editorially defined. The Firebolt OpenRPC tools will auto-generate the `setter` and `subscriber` as OpenRPC methods with matching types. Additionally, the Firebolt OpenRPC tools wil then code-generate the getter, setter, and subscriber as APIs in various languages using templates. +Firebolt uses method templates in order to code-generate consistent APIs. For +example, methods with the `"property"` tag only need to have the `getter` +editorially defined. The Firebolt OpenRPC tools will auto-generate the +`setter` and `subscriber` as OpenRPC methods with matching types. +Additionally, the Firebolt OpenRPC tools wil then code-generate the getter, +setter, and subscriber as APIs in various languages using templates. -This enables both consistent APIs (all properties have a recongnizable pattern) and consistent SDK implementation, which reduces the code that needs to be tested. +This enables both consistent APIs (all properties have a recongnizable pattern) + and consistent SDK implementation, which reduces the code that needs to be +tested. ### 3.1. General Style Requirements -All headers **MUST** be numbered, and have the parent header as the prefix, separated with '.' +All headers **MUST** be numbered, and have the parent header as the prefix, +separated with '.' -Module and method names, as well as constants **MUST** be in monospace font, e.g. the `Foo` module **MUST** have a `bar` method that returns `true`. Specs should use JavaScript notation for any code examples if the spec is not targeting another specific language binding, e.g. a spec about Event listeners in C++ would use C++ syntax. +Module and method names, as well as constants **MUST** be in monospace font, +e.g. the `Foo` module **MUST** have a `bar` method that returns `true`. Specs + should use JavaScript notation for any code examples if the spec is not +targeting another specific language binding, e.g. a spec about Event +listeners in C++ would use C++ syntax. -String constants and values **MUST** be wrapped in quotes for clarity, e.g. `"Hello World"`. +String constants and values **MUST** be wrapped in quotes for clarity, e.g. +`"Hello World"`. ### 3.2. Firebolt Style Requirements -All Firebolt APIs exposed for building Firebolt Apps **MUST** be exposed as JSON-RPC methods on a WebSocket accessible to the device, typically running locally. +All Firebolt APIs exposed for building Firebolt Apps **MUST** be exposed as +JSON-RPC methods on a WebSocket accessible to the device, typically running +locally. -Parameters and return values for all APIs **MUST** be described using JSON-Schema schemas. +Parameters and return values for all APIs **MUST** be described using +JSON-Schema schemas. -Methods **MUST** be grouped into “modules” or “packages” of functionality. +Methods **MUST** be grouped into “modules” or “packages” of functionality. -The JSON-RPC method name of any method **MUST** follow the template: +The JSON-RPC method name of any method **MUST** follow the template: ``` . -``` +``` -e.g. +e.g. ``` lifecycle.ready -``` +``` -JSON-RPC method names are case sensitive. +JSON-RPC method names are case sensitive. -Methods **MUST** have at least one capability used, managed, or provided by the method. +Methods **MUST** have at least one capability used, managed, or provided by the + method. -Methods **MAY** require the use of more than one capability, but this means that the app must have permission to all of them. In order to enable App permissions to be evaluated in an isolated layer, separate from the method implementation itself, a Firebolt method **MUST NOT** be specified to add or remove fields based on the caller's permissions. +Methods **MAY** require the use of more than one capability, but this means +that the app must have permission to all of them. In order to enable App +permissions to be evaluated in an isolated layer, separate from the method +implementation itself, a Firebolt method **MUST NOT** be specified to add or +remove fields based on the caller's permissions. -The words used in method and parameter names **SHOULD** be used as consistently as possible across the Firebolt API surface. See the [Firebolt API Glossary](./glossary.md) for words that Firebolt uses and how they are used. +The words used in method and parameter names **SHOULD** be used as consistently + as possible across the Firebolt API surface. See the [Firebolt API +Glossary](./glossary.md) for words that Firebolt uses and how they are used. ### 3.3. Firebolt Method Templates -Methods **SHOULD** consider using the existing Firebolt method tags, in order to have a level of consistency across APIs. +Methods **SHOULD** consider using the existing Firebolt method tags, in order +to have a level of consistency across APIs. -If a Firebolt method is specified such that it requires a non-existant template, then a new Requirements Specification **MUST** be written and referenced by the specification that inspired it. Method templates **MUST** be designed with re-use in mind. +If a Firebolt method is specified such that it requires a non-existant +template, then a new Requirements Specification **MUST** be written and +referenced by the specification that inspired it. Method templates **MUST** +be designed with re-use in mind. ## 4. Example Section -A section describes group of closely related features. Many specifications have only one section, however, more complicated specifications may have many. The first paragraph of a section is typically a non-normative introduction to that section, and therefor does not contain any formal requirements. +A section describes group of closely related features. Many specifications have + only one section, however, more complicated specifications may have many. +The first paragraph of a section is typically a non-normative introduction +to that section, and therefor does not contain any formal requirements. ### 4.1. Example Feature -Each feature under a section will have it's own heading. Non-normative introductions to features are not typically needed, as the reader is ready to get into requirements at this point. It is recommended that all Feature headings under each Section contain only sentences or short paragraphs with formal requirements, e.g. MUST, SHOULD, MAY, MUST NOT, SHOULD NOT, etc. These sentences should be separated by blank lines for readability, e.g.: +Each feature under a section will have it's own heading. Non-normative +introductions to features are not typically needed, as the reader is ready to + get into requirements at this point. It is recommended that all Feature +headings under each Section contain only sentences or short paragraphs with +formal requirements, e.g. **MUST**, **SHOULD**, **MAY**, **MUST** NOT, +**SHOULD NOT**, etc. These sentences should be separated by blank lines for +readability, e.g.: -This requirement **MUST** be satisifed. +This requirement **MUST** be satisifed. -This requirement **SHOULD** be satisfied. +This requirement **SHOULD** be satisfied. -This requirement **MUST** be satisfied. The requirement **MUST** be satisifed in this particular way. +This requirement **MUST** be satisfied. The requirement **MUST** be satisifed +in this particular way. diff --git a/src/js/github.io/markdown.mjs b/src/js/github.io/markdown.mjs index 9068792e0..071c83a6a 100644 --- a/src/js/github.io/markdown.mjs +++ b/src/js/github.io/markdown.mjs @@ -24,38 +24,183 @@ const requirements = await readFiles(await readDir(path.join('.', 'requirements' const processFiles = (docs) => { Object.keys(docs).forEach(ref => { - if (ref.endsWith('.md')) { let data = docs[ref] -// console.log(data) - // find all headers - const headers = data.match(/#+[ \t]+(([0-9]+\.)+)[ /t]+(.*?)\n/g) - - // turn to slugs - const slugs = headers.map(h => h.replace(/#/g, '')) - .map(h => h.replace(/\t/g, '')) - .map(h => h.replace(/\./g, '')) - .map(h => h.replace(/^ /g, '')) - .map(h => h.replace(/\n$/g, '')) - .map(h => h.replace(/ /g, '-')) - .map(h => h.toLowerCase()) - .map(h => '#' + h) - - const links = data.match(/\]\(.*?\#.*?\)/g) - - links.map(l => l.slice(2, -1)).forEach(link => { - if (!slugs.find(s => s === link)) { - const best = slugs.find(s => s.match(new RegExp(link.replace(/^\#[0-9]+/, '#[0-9]+')))) || slugs.find(s => s.startsWith(link.split('-')[0] + '-')) - console.log('Fixing broken link: (' + link + ') -> (' + best + ')') - data = data.replace('](' + link + ')', '](' + best + ')') - } - }) + data = fixBrokenLinks(data, ref, docs) + data = wrapText(data) + data = prettyTables(data) + data = bcp14(data) + docs[ref] = data } }) } +function fixBrokenLinks(data, ref, files) { + + const getSlugs = (data) => { + // find all headers + const headers = data.match(/#+[ \t]+(([0-9]+\.)+)[ /t]+(.*?)\n/g) + + // turn to slugs + return headers.map(h => h.replace(/#/g, '')) + .map(h => h.replace(/\t/g, '')) + .map(h => h.replace(/\./g, '')) + .map(h => h.replace(/^ /g, '')) + .map(h => h.replace(/\n$/g, '')) + .map(h => h.replace(/ /g, '-')) + .map(h => h.toLowerCase()) + .map(h => '#' + h) + } + + const slugs = getSlugs(data) + const links = data.match(/\]\([^\)]*?\#[^\)]*?\)/gms) + + links.map(l => l.slice(2, -1)).forEach(link => { + if (!slugs.find(s => s === link)) { + const best = slugs.find(s => s.match(new RegExp(link.replace(/^\#[0-9]+/, '#[0-9]+')))) || slugs.find(s => s.startsWith(link.split('-')[0] + '-')) + if (best) { + console.log('Fixing broken link: (' + link + ') -> (' + best + ')') + data = data.replace('](' + link + ')', '](' + best + ')') + } + // TODO: fix bad slugs in links to other files + else if (link.match(/[^\)]+?\#[^\)]*?/gms)) { + // external + const [file, slug] = link.split('#') + const fileRef = path.join(path.dirname(ref), file) + const fileSlugs = getSlugs(files[fileRef]) + if (!fileSlugs.find(s => s === '#' + slug)) { + const best = fileSlugs.find(s => s.match(new RegExp(('#'+slug).replace(/^\#[0-9]+/, '#[0-9]+')))) || slugs.find(s => s.startsWith(link.split('-')[0] + '-')) + if (best) { + console.log('Fixing broken external link: (' + link + ') -> (' + file + best + ')') + data = data.replace('](' + link + ')', '](' + file + best + ')') + } + } + } + } + }) + + return data +} + +function wrapText(data) { + const lines = data.split('\n') + const maximum = 80 + let buffer = '' + let wrapped = '' + let width = 0 + const block_regex = /^\s*?\>/ + const code_regex = /^\s*?```/ + let code = false + + lines.forEach( (line, index) => { + + if (line.match(code_regex)) { + code = !code + } + + // skip lists, tables, headers, and blanks + if (code || line.match(/^\s*?\-/) || line.match(/^\s*?\|/) || line.match(/^\#+/) || line.match(/^\s*?$/)) { + buffer && (wrapped += '\n' + buffer) + buffer = '' + wrapped += '\n' + line + width = 0 + } + else { + const quote = line.match(block_regex) ? true : false + + if (quote) { + line = line.replace(block_regex, '').trim() + + if (!buffer) { + buffer = '> ' + width = 2 + } + else if (!line.trim()) { + buffer += '\n> \n>' + width = 2 + } + } + + line.split(/\s+/).forEach(word => { + if (word.match(block_regex)) { + throw "Found > in line: " + line + } + let len = word.length + 1 // .replace(/\(.*?\)/g, '') + if (width + len > maximum) { + buffer += '\n' + (quote ? '> ' : '') + word + ' ' + width = len + 2 + } + else { + buffer += word + ' ' + width += len + } + }) + } + }) + + buffer && (wrapped += '\n' + buffer) + + return wrapped +} + +function prettyTables(data) { + const lines = data.split('\n') + const table_regex = /^\s*?\|/ + const column_regex = /(? line.trim().split(column_regex).slice(1, -1).map(c => (' ' + c.trim() + ' ').length) + + for (var i=0; i Math.max(w, widths[index])) + } + // pad each cell to match the max width + for (j=i; lines[j].match(table_regex); j++) { + lines[j] = lines[j].split(column_regex).map((cell, index) => { + // stuff before or after the table row + if (index === 0 || index === widths.length + 1) { + return cell + } + else { + if (cell.match(/^ \-+ $/)) { + return ' ' + '-'.repeat(widths[index-1]-2) + ' ' + } + else if (cell.match(/^\-+$/)) { + return '-'.repeat(widths[index-1]) + } + else { + return (' ' + cell.trim() + ' ').padEnd(widths[index-1]) + } + } + }).join('|') + i++ + } + } + } + + return lines.join('\n') +} + +function bcp14(data) { + return data + .replace(/([^\*])MUST(\s+)NOT([^\*])/gms, '$1**MUST$2NOT**$3') + .replace(/([^\*])SHOULD(\s+)NOT([^\*])/gms, '$1**SHOULD$2NOT**$3') + .replace(/([^\*])SHALL(\s+)NOT([^\*])/gms, '$1**SHALL$2NOT**$3') + .replace(/([^\*])NOT(\s+)RECOMMENDED([^\*])/gms, '$1**NOT$2RECOMMENDED**$3') + .replace(/([^\*])MUST([^\*])/gms, '$1**MUST**$2') + .replace(/([^\*])SHOULD([^\*])/gms, '$1**SHOULD**$2') + .replace(/([^\*])SHALL([^\*])/gms, '$1**SHALL**$2') + .replace(/([^\*])RECOMMENDED([^\*])/gms, '$1**RECOMMENDED**$2') + .replace(/([^\*])MAY([^\*])/gms, '$1**MAY**$2') + .replace(/([^\*])REQUIRED([^\*])/gms, '$1**REQUIRED**$2') + .replace(/([^\*])OPTIONAL([^\*])/gms, '$1**OPTIONAL**$2') +} + processFiles(requirements) writeFiles(requirements) From 31cebed5bcc27113dfa86e3d9e4d1965f3055460 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Mon, 23 Oct 2023 14:58:03 -0400 Subject: [PATCH 19/43] fix: Today's working group edits --- requirements/glossary.md | 2 + requirements/governance.md | 6 + .../specifications/lifecycle/index.md | 229 +++++------------- .../specifications/lifecycle/navigation.md | 61 +++++ .../specifications/lifecycle/presentation.md | 2 + requirements/style-guide-and-template.md | 2 + src/js/github.io/markdown.mjs | 2 +- 7 files changed, 134 insertions(+), 170 deletions(-) create mode 100644 requirements/specifications/lifecycle/navigation.md diff --git a/requirements/glossary.md b/requirements/glossary.md index 03ad1e1cf..d4e792ffb 100644 --- a/requirements/glossary.md +++ b/requirements/glossary.md @@ -27,6 +27,8 @@ + + diff --git a/requirements/governance.md b/requirements/governance.md index 2608b5990..3b806323f 100644 --- a/requirements/governance.md +++ b/requirements/governance.md @@ -27,6 +27,8 @@ + + @@ -326,6 +328,8 @@ The Requirements Repository **MUST** be located at: + + @@ -358,6 +362,8 @@ The Requirements Repository **MUST** be located at: + + diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 73e4401f2..dee27cf73 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -1,33 +1,3 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # App Lifecycle Management Document Status: Working Draft @@ -98,26 +68,25 @@ a compatible process so that it resumes where it left off. - [2.5. Sleeping](#25-sleeping) - [3. Getting the current state](#3-getting-the-current-state) - [4. Lifecycle State Transitions](#4-lifecycle-state-transitions) - - [4.2. Initializing an app](#42-initializing-an-app) - - [4.3. Activating an app](#43-activating-an-app) - - [4.4. Deactivating an app](#44-deactivating-an-app) - - [4.5. Suspending an app](#45-suspending-an-app) - - [4.6. Resuming an app](#46-resuming-an-app) - - [4.7. Putting an app to sleep](#47-putting-an-app-to-sleep) - - [4.8. Waking an app from sleep](#48-waking-an-app-from-sleep) - - [4.9. Destroying an app](#49-destroying-an-app) - - [4.10. Terminating an app](#410-terminating-an-app) -- [6. Activity Navigation](#6-activity-navigation) -- [7. Launch Parameters](#7-launch-parameters) -- [8. Core SDK APIs](#8-core-sdk-apis) - - [8.1. Application Interface](#81-application-interface) - - [8.2. Activity Interface](#82-activity-interface) - - [8.3. Sleepable Interface](#83-sleepable-interface) - - [8.4. Example App](#84-example-app) - - [8.5. Ready](#85-ready) - - [8.6. Close](#86-close) - - [8.7. State](#87-state) -- [9. Lifecycle Configuration](#9-lifecycle-configuration) + - [4.1. Initializing an app](#41-initializing-an-app) + - [4.2. Activating an app](#42-activating-an-app) + - [4.3. Deactivating an app](#43-deactivating-an-app) + - [4.4. Suspending an app](#44-suspending-an-app) + - [4.5. Resuming an app](#45-resuming-an-app) + - [4.6. Putting an app to sleep](#46-putting-an-app-to-sleep) + - [4.7. Waking an app from sleep](#47-waking-an-app-from-sleep) + - [4.8. Destroying an app](#48-destroying-an-app) + - [4.9. Terminating an app](#49-terminating-an-app) +- [6. Create Parameters](#6-create-parameters) +- [7. Core SDK APIs](#7-core-sdk-apis) + - [7.1. Application Interface](#71-application-interface) + - [7.2. Activatible Interface](#72-activatible-interface) + - [7.3. Sleepable Interface](#73-sleepable-interface) + - [7.4. Example App](#74-example-app) + - [7.5. Ready](#75-ready) + - [7.6. Close](#76-close) + - [7.7. State](#77-state) +- [8. Lifecycle Configuration](#8-lifecycle-configuration) ## 2. Lifecycle States @@ -132,35 +101,6 @@ transition methods, see [Transitions](#4-lifecycle-state-transitions), for more on this. ![Lifecycle States](../../images/specifications/lifecycle/lifecycle-states.png) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | | CPU | RAM | F/S | Net | GFX | SFC | A/V | Description | |--------------|-----|-----|-----|-----|-----|-----|-----|----------------------------------------------------------------------------| @@ -202,7 +142,7 @@ Apps in this state **MUST NOT** have access to the audio-video decoder. Apps in this state **MUST NOT** use the media pipeline. -See [Initializing an app](#42-initializing-an-app) for more information. +See [Initializing an app](#41-initializing-an-app) for more information. ### 2.2. Running @@ -387,7 +327,7 @@ This includes: By providing an implementation of the `xrn:firebolt:capability:lifecycle:application` interface, an app can influence how resources are managed during these state transitions. See -[Application Interface](#81-application-interface) for more info. +[Application Interface](#71-application-interface) for more info. User-facing apps **MUST** implement the `Activity` interface, `xrn:firebolt:capability:lifecycle:activatible`. @@ -396,14 +336,13 @@ This includes: - `Application.activate()` - `Application.deactivate()` - - `Application.navigate()` - + By providing an implementation of the `xrn:firebolt:capability:lifecycle:activatible` interface, an app can influence how resources are managed during these state transitions. See [Activity Interface](#82-activity-interface) for more info. -### 4.2. Initializing an app +### 4.1. Initializing an app Once an app is loaded it **MUST** be initialized immediately. Initializing consists of three parts: @@ -442,7 +381,7 @@ Apps **MAY** load a limited set of global display resources, e.g. a global style sheet or a logo used throughout the experience, during initialization. During the `create()` transition, apps **MUST** inspect the `params` parameter -for [Parameters](#7-launch-parameters) and prepare to fulfill the provided +for [Parameters](#6-create-parameters) and prepare to fulfill the provided launch configuration. Example Launch Parameters: @@ -450,10 +389,7 @@ Example Launch Parameters: ```json { "preload": true, - "launchMode"?: "running" | "suspend", - "privacy": { - "limitAdTracking": true - } + "preloadReason": "boot" } ``` @@ -462,7 +398,7 @@ Example Launch Parameters: Once the `create` method returns the app **MUST** be immediately transitioned to the `RUNNING` state. -### 4.3. Activating an app +### 4.2. Activating an app Activating an app transitions it to the `ACTIVE` state so that it becomes part of the user's experience. @@ -486,9 +422,9 @@ If the app is not loaded, then the platform **MUST** [load](undefined) it first. If the app is not initialized, the platform **MUST** -[initialize](#42-initializing-an-app) it first. +[initialize](#41-initializing-an-app) it first. -If the app is suspended, then it **MUST** be [resumed](#46-resuming-an-app) +If the app is suspended, then it **MUST** be [resumed](#45-resuming-an-app) first. At this point, the app **MUST** be in the `RUNNING` state. @@ -530,7 +466,7 @@ loading screens in the app's UX. **TODO**: Discuss ^^ -### 4.4. Deactivating an app +### 4.3. Deactivating an app Closing an app transitions it to the `RUNNING` state, so that it is no longer part of the user's experience. @@ -563,13 +499,13 @@ to complete, and the remainder of this section does not apply. If an app is already performing an `activate()` transition, the platform **MUST** wait for the activate call to succeed or fail and then skip the -remaining [activation steps](#43-activating-an-app). +remaining [activation steps](#42-activating-an-app). -If an app is currently [initializing](#42-initializing-an-app), the platform +If an app is currently [initializing](#41-initializing-an-app), the platform **MUST** wait for initialization to succeed or fail and then skip any activation that may have been pending. -If an app is currently in a [destroy](#49-destroying-an-app) transition then +If an app is currently in a [destroy](#48-destroying-an-app) transition then the app cannot be closed and the platform **MUST NOT** close it, and the remainder of this section does not apply. @@ -596,7 +532,7 @@ decoders. The platform **MAY** begin to transition the app out of view as soon as `deactivate()` is called. -### 4.5. Suspending an app +### 4.4. Suspending an app Suspending an app transitions it to the `SUSPENDED` state, where it is no longer allowed to use graphics composition, and is expected to consume less @@ -640,7 +576,7 @@ Since every app **MUST** provide the > moved to the `SUSPENDED` state. > > If the app times out or makes a `suspendError` call, then the app **MUST** -> be [destroyed](#49-destroying-an-app). +> be [destroyed](#48-destroying-an-app). During the `suspend()` transition, the app: @@ -648,7 +584,7 @@ During the `suspend()` transition, the app: > > **SHOULD** reduce memory usage, if possible. -### 4.6. Resuming an app +### 4.5. Resuming an app Resuming an app allows it to reallocate graphics composition and reload any resources it might have deallocated during `suspend()`. @@ -686,7 +622,7 @@ terminated. During the `resume()` transition, apps **SHOULD** reallocate graphics composition and other necessary resources. -### 4.7. Putting an app to sleep +### 4.6. Putting an app to sleep TBD Firebolt apps that have permission to use the @@ -695,14 +631,14 @@ Firebolt apps that have permission to use the TODO: if you don't call provide, we won't do this. -### 4.8. Waking an app from sleep +### 4.7. Waking an app from sleep TBD Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement `Sleepable.wake()`. -### 4.9. Destroying an app +### 4.8. Destroying an app Destroying an app transitions it out of memory, so that it is no longer using resources on the device. @@ -734,7 +670,7 @@ Since every app **MUST** provide the > If the app times out or makes an `destroyError` call, then the app **MUST** > be terminated. -### 4.10. Terminating an app +### 4.9. Terminating an app Terminating an app removes it from memory without dispatching any state changes. @@ -746,56 +682,23 @@ Terminating an app results in removing it from memory and all resources held by the app and it's container being freed up. Platforms **MAY** terminate an app when needed but **SHOULD NOT** do this in -place of graceful [destroying](#49-destroying-an-app). - -## 6. Activity Navigation -Typically navigation is handled either when the app is activated, via the -`intent` parameter of the `activate` method, or by internal input within the -app. +place of graceful [destroying](#48-destroying-an-app). -There are other times when the platform needs to inform an app of a user's -intent to navigate when the app is already `ACTIVE`, e.g. when a voice -command is executed or a soft remote sends a message while the app is in -focus. - -In these cases, the platform **MUST** call the `Activity.navigate` method of -the App, and pass the `intent`. - -Within the `navigate()` method, the app **MUST** inspect the `intent` parameter - and prepare to fulfill a specific [Navigation -Intent](../intents/navigation.md) for the app, which may include: - - - Loading any metadata needed to display the user's intended content. - - Performing any entitlement checks to decide whether to display a player or a purchase flow - - Any other steps necesary to present content to the user quickly - -## 7. Launch Parameters -The `LaunchParameters` type is an object with the following properties: +## 6. Create Parameters +The `CreateParameters` type is an object with the following properties: ```typescript type Parameters = { preload: boolean, - reason: "boot" | "restart" // load-reason, preload-reason - privacy: { - limitAdTracking: boolean - } + preloadReason?: "boot" | "restart" | "user" } ``` -// Parameters.initialization() - -- suspended after app restart -- suspended after power on -- foreground after app start - -^^^ need to dicuss what we need in here, and also what to do w/ US-centric -stuff like 'limitAdTracking' - -## 8. Core SDK APIs +## 7. Core SDK APIs The following APIs are exposed by the Firebolt Core SDK. -### 8.1. Application Interface +### 7.1. Application Interface The `Application` interface is implemented by Apps to provide resource management around memory as an Application moves through the core lifecycle states: @@ -822,27 +725,25 @@ interface Application { | `resume()` | Called when the platform wants the app to reallocate its graphics surface and prepare to be potentially used. | | `destroy()` | Called when the platform is ready to end the lifecycle session for the app. Only called once. | -### 8.2. Activity Interface -The `Activity` interface is implemented by Apps that provide user perceptible -experiences, e.g. visible, audible, or user input. +### 7.2. Activatible Interface +The `Activatible` interface is implemented by Apps that provide user +perceptible experiences, e.g. visible, audible, or user input. These types of apps require additional resource management ```typescript -interface Activity { +interface Activatible { function activate(intent: NavigationIntent): Promise; function deactivate(): Promise; - function navigate(intent: NavigationIntent): Promise; } ``` -| Method | Description | -| -------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| `activate()` | Called when the platform is ready to move the app into the `ACTIVE` state. A/V resources may be allocated. | -| `deactivate()` | Called when the platform is ready to move the app out of the `ACTIVE` state and into `RUNNING` to deallocate any A/V decoders. | -| `navigate()` | Called when an app is already `ACTIVE` and the platform wants the app to navigate to a new [Navigation Intent](../intents/navigation.md) | +| Method | Description | +| -------------- | ------------------------------------------------------------------------------------------------------------------------------ | +| `activate()` | Called when the platform is ready to move the app into the `ACTIVE` state. A/V resources may be allocated. | +| `deactivate()` | Called when the platform is ready to move the app out of the `ACTIVE` state and into `RUNNING` to deallocate any A/V decoders. | -### 8.3. Sleepable Interface +### 7.3. Sleepable Interface The `Sleepable` interface is implemented by Apps that are able to handle being put to sleep and then woken at a later point in time. @@ -861,7 +762,7 @@ interface Sleepable { | `sleep()` | Called when the platform is ready to move the app into the `SLEEPING` state where it will no longer have access to the CPU. | | `wake()` | Called when the platform is ready to move the app out of the `SLEEPING` state and into `SUSPENDED`. Network connections should be reestablished here. | -### 8.4. Example App +### 7.4. Example App Example: @@ -870,15 +771,11 @@ import { Lifecycle } from '@firebolt-js/sdk' class ExampleApplication implements Lifecycle.Application, Lifecycle.Activity { - async function create(params: LaunchParameters): void { - const limitTracking:boolean = params.limitAdTracking + async function create(params: CreateParameters): void { } async function activate(intent: NavigationIntent, session: ProviderSession): void { // reallocate A/V - - // handle intent - return navigate(intent) } async function deactivate(): void { @@ -887,12 +784,6 @@ class ExampleApplication implements Lifecycle.Application, Lifecycle.Activity { video.load() } - async function navigate(intent: NavigationIntent): void { - if (intent.action === "playback") { - console.log("Deep link to playback of " + intent.data.entityId) - } - } - async function suspend(): void { // The quicket way to save memory & CPU is to clear the DOM document.body.innerHTML = '' @@ -923,13 +814,13 @@ See the [Firebolt API Documentation](https://developer.comcast.com/firebolt/core/sdk/latest/api/) for details around syntax, etc. -### 8.5. Ready +### 7.5. Ready The Lifecycle.ready() API allows an app to notify the platform that it is initialized and ready to be displayed to the end user. This method **MUST NOT** be called more than once. -### 8.6. Close +### 7.6. Close The Lifecycle.close() API allows an app to request that it be closed by the platform. @@ -956,13 +847,13 @@ Platforms **MAY** prioritize apps to be destroyed based on the reason provided. since it may be an accidental RCU press, whereas an explicit user exit is more likely to be intentional. -### 8.7. State +### 7.7. State The Lifecycle.state() method provides convenient access to the current state, and is implemented by the Core SDK listening to all state notifications. This method **MUST NOT** be asynchronous. -## 9. Lifecycle Configuration +## 8. Lifecycle Configuration In order to enable Firebolt Certification of a device's Lifecycle Management features, the device **MUST** support the following configuration options, so diff --git a/requirements/specifications/lifecycle/navigation.md b/requirements/specifications/lifecycle/navigation.md new file mode 100644 index 000000000..dcb3be20d --- /dev/null +++ b/requirements/specifications/lifecycle/navigation.md @@ -0,0 +1,61 @@ + + +## 5. Activity Navigation +Typically navigation is handled either when the app is activated, via the +`intent` parameter of the `activate` method, or by internal input within the +app. + +There are other times when the platform needs to inform an app of a user's +intent to navigate when the app is already `ACTIVE`, e.g. when a voice +command is executed or a soft remote sends a message while the app is in +focus. + +In these cases, the platform **MUST** call the `Activity.navigate` method of +the App, and pass the `intent`. + +Within the `navigate()` method, the app **MUST** inspect the `intent` parameter + and prepare to fulfill a specific [Navigation +Intent](../intents/navigation.md) for the app, which may include: + + - Loading any metadata needed to display the user's intended content. + - Performing any entitlement checks to decide whether to display a player or a purchase flow + - Any other steps necesary to present content to the user quickly + +### Option 1 +During the `navigate()` transition, the app **MUST** inspect the `intent` +parameter and prepare to fulfill a specific [Navigation +Intent](../intents/navigation.md) which may include: + + - Loading any metadata needed to display the user's intended content. + - Performing any entitlement checks to decide whether to display a player or a purchase flow + - Any other steps necesary to present content to the user quickly + +The app **MAY** display a loading screen.. + +An app **MUST NOT** receive a navigate call while it is already executing a +navigate call. + +### Option 2 +An app **MAY** receive a navigate call while it is already executing a navigate + call. + +> The platform **MUST** dispatch the `Lifecycle.onRequestNavigate` notification +> to the app, and wait for `appNavigateTimeout` milliseconds for either a +> `Lifecycle.navigateResult` or `Lifecycle.navigateError` call in response. +> +> Once the platform receives the `navigateResult` call, then the platform may +> proceed with app destroying. +> +> If the app times out or makes an `navigateError` call, then the app **MAY** +> be terminated. + +An app **MUST** acknowledge receipt of each navigate call. + +An app **MUST** decide how to prioritize multiple navigate calls. + +### Option 3 +```typescript +Discovery.listen('navigateTo', (intent) => { + // +}) +``` \ No newline at end of file diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index c752f7098..bcfb01bcb 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -27,6 +27,8 @@ + + diff --git a/requirements/style-guide-and-template.md b/requirements/style-guide-and-template.md index 1d935d9d3..e2ca581d5 100644 --- a/requirements/style-guide-and-template.md +++ b/requirements/style-guide-and-template.md @@ -27,6 +27,8 @@ + + diff --git a/src/js/github.io/markdown.mjs b/src/js/github.io/markdown.mjs index 071c83a6a..ea3f1857f 100644 --- a/src/js/github.io/markdown.mjs +++ b/src/js/github.io/markdown.mjs @@ -57,7 +57,7 @@ function fixBrokenLinks(data, ref, files) { const slugs = getSlugs(data) const links = data.match(/\]\([^\)]*?\#[^\)]*?\)/gms) - links.map(l => l.slice(2, -1)).forEach(link => { + links && links.map(l => l.slice(2, -1)).forEach(link => { if (!slugs.find(s => s === link)) { const best = slugs.find(s => s.match(new RegExp(link.replace(/^\#[0-9]+/, '#[0-9]+')))) || slugs.find(s => s.startsWith(link.split('-')[0] + '-')) if (best) { From b559ea7d757240cc940e0c45930203beb8a0a9f0 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Tue, 24 Oct 2023 12:37:22 -0400 Subject: [PATCH 20/43] fix: Presentation Working Group Edits --- requirements/glossary.md | 150 ++-- requirements/governance.md | 397 ++++----- .../specifications/lifecycle/index.md | 775 +++++++++--------- .../specifications/lifecycle/navigation.md | 61 -- .../specifications/lifecycle/presentation.md | 229 +++--- requirements/style-guide-and-template.md | 208 ++--- src/js/github.io/markdown.mjs | 34 +- 7 files changed, 911 insertions(+), 943 deletions(-) delete mode 100644 requirements/specifications/lifecycle/navigation.md diff --git a/requirements/glossary.md b/requirements/glossary.md index d4e792ffb..d64bf031d 100644 --- a/requirements/glossary.md +++ b/requirements/glossary.md @@ -1,61 +1,26 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Glossary -Document Status: Working Draft - +Document Status: Working Draft | Contributor | Organization | | --------------- | ------------ | | Jeremy LaCivita | Comcast | ## 1. Overview -This document describes various terms used as part of Firebolt APIs, e.g. -method names or parameters, and how they are used by Firebolt, for -consistency. + +This document describes various terms used as part of Firebolt APIs, e.g. +method names or parameters, and how they are used by Firebolt, for +consistency. The terms are this document are commonly used across multiple modules. However, - new APIs should be deferential to all existing APIs, not just words listed -here. +new APIs should be deferential to all existing APIs, not just words listed +here. The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL - NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**NOT -RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be -interpreted as described in [BCP +NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**NOT +RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be +interpreted as described in [BCP 14](https://www.rfc-editor.org/rfc/rfc2119.txt) [RFC2119] [RFC8174] when, and - only when, they appear in all capitals, as shown here. - +only when, they appear in all capitals, as shown here. ## 2. Table of Contents - [1. Overview](#1-overview) - [2. Table of Contents](#2-table-of-contents) @@ -78,76 +43,77 @@ interpreted as described in [BCP ## 3. Firebolt Terms ### 3.1. app -noun. - A Firebolt app. Any component that calls [Firebolt -APIs](https://github.com/rdkcentral/firebolt-apis), either directly, or by -running inside of a container that calls Firebolt APIs, is a Firebolt app. +noun. - A Firebolt app. Any component that calls [Firebolt +APIs](https://github.com/rdkcentral/firebolt-apis), either directly, or by +running inside of a container that calls Firebolt APIs, is a Firebolt app. ### 3.2. available -adj. - Used in the context of a [capability](#34-capability) to denote that the - capability *could* be leveraged now if it is [permitted](#311-permitted) -and either [granted](#38-granted) or is not gated by a [user -grant](#313-user-grant). Available capabilities are, by definition, -[supported](#314-supported). +adj. - Used in the context of a [capability](#34-capability) to denote that the +capability *could* be leveraged now if it is [permitted](#311-permitted) and +either [granted](#38-granted) or is not gated by a [user +grant](#313-user-grant). Available capabilities are, by definition, +[supported](#314-supported). ### 3.3. availability -noun. - Used in the context of [content](#36-content) to denote that the -content *could* be consumed if either the device has an -[entitlement](#37-entitlement) to the content, or the content does not -require any entitlement. +noun. - Used in the context of [content](#36-content) to denote that the +content *could* be consumed if either the device has an +[entitlement](#37-entitlement) to the content, or the content does not +require any entitlement. ### 3.4. capability -noun. - A discrete unit of functionality that a Firebolt device might be able -to perform. It is granular enough to enable appropriate access controls -across all Firebolt Apps, but useful enough to be a meaningful functional -unit that an App might care about. +noun. - A discrete unit of functionality that a Firebolt device might be able +to perform. It is granular enough to enable appropriate access controls +across all Firebolt Apps, but useful enough to be a meaningful functional +unit that an App might care about. ### 3.5. closed captions -noun. - Closed Captions are text tracks rendered over or near -[content](#36-content) with the intention of making the audio track of the -content more accessible, for example to deaf or hard-of-hearing individuals. +noun. - Closed Captions are text tracks rendered over or near +[content](#36-content) with the intention of making the audio track of the +content more accessible, for example to deaf or hard-of-hearing individuals. ### 3.6. content -noun. - Content consumed on Firebolt platforms, e.g. video, games, music, etc. +noun. - Content consumed on Firebolt platforms, e.g. video, games, music, etc. ### 3.7. entitlement -noun. - Used in the context of [content](#36-content) to denote that the device - or user has acquired the *right* to consume the content. Content may also -have [availability](#33-availability) requirements for consumption, e.g. a -user may have pre-orded a piece of content, and therefor have an entitlement -to it, that becomes available in the future. +noun. - Used in the context of [content](#36-content) to denote that the device +or user has acquired the *right* to consume the content. Content may also +have [availability](#33-availability) requirements for consumption, e.g. a +user may have pre-orded a piece of content, and therefor have an entitlement +to it, that becomes available in the future. ### 3.8. granted -adj. - Used in the context of a [capability](#34-capability) to denote that the - capability has been granted to an app by the user. Capabilities that are -gated by [user grant](#313-user-grant) cannot be leveraged by any app w/out -being granted. +adj. - Used in the context of a [capability](#34-capability) to denote that the +capability has been granted to an app by the user. Capabilities that are +gated by [user grant](#313-user-grant) cannot be leveraged by any app w/out +being granted. ### 3.9. lifecycle -noun. - Used to describe the life, from being loaded to unloaded, of a Firebolt - [app](#31-app). The app lifecycle has many states that inform the app how -it is being percieved and how it should behave. +noun. - Used to describe the life, from being loaded to unloaded, of a Firebolt +[app](#31-app). The app lifecycle has many states that inform the app how it +is being percieved and how it should behave. ### 3.10. media -noun. - [Content](#36-content) that that plays back over time without requiring - interaction from the user, e.g. video or music. Media must have a -start-time, or a duration, or both. +noun. - [Content](#36-content) that that plays back over time without requiring +interaction from the user, e.g. video or music. Media must have a start-time, +or a duration, or both. ### 3.11. permitted -adj. - Used in the context of a [capability](#34-capability) to denote that the - capability has been permitted to an app by the distributor of the device. +adj. - Used in the context of a [capability](#34-capability) to denote that the +capability has been permitted to an app by the distributor of the device. ### 3.12. policy -noun. - A group of user, device, and/or distributor settings that affect a -particular domain, e.g. Advertising. +noun. - A group of user, device, and/or distributor settings that affect a +particular domain, e.g. Advertising. ### 3.13. user grant -noun. - A secure process in which a user of a device grants an app on the -device access to a capability. +noun. - A secure process in which a user of a device grants an app on the +device access to a capability. ### 3.14. supported + adj. - Used in the context of a [capability](#34-capability) to denote that the - capability *could* be leveraged at some point on this device, because the -distributor offers it as part of this device's feature set. Leveraging a -capability also requires that it is [available](#32-available), -[permitted](#311-permitted), and either [granted](#38-granted) or is not -gated by a [user grant](#313-user-grant). +capability *could* be leveraged at some point on this device, because the +distributor offers it as part of this device's feature set. Leveraging a +capability also requires that it is [available](#32-available), +[permitted](#311-permitted), and either [granted](#38-granted) or is not +gated by a [user grant](#313-user-grant). diff --git a/requirements/governance.md b/requirements/governance.md index 3b806323f..4991757e1 100644 --- a/requirements/governance.md +++ b/requirements/governance.md @@ -1,50 +1,16 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Requirements Governance -This document outlines the governance model for the Firebolt® Open-Source -Project, including the structure of an Advisory Board and Working Groups, as -well as the process used to codify Requirements Specifications and -Architectural Decision Records. +This document outlines the governance model for the Firebolt® Open-Source +Project, including the structure of an Advisory Board and Working Groups, as +well as the process used to codify Requirements Specifications and +Architectural Decision Records. ## 1. Overview -The Firebolt Open-Source Project is governed by an Advisory Board that creates -and delegates work to Working Groups, which then create proposals for -Requirements Specifications and Architectural Decision Records. -![Governance Structure](./images/governance/structure.png) +The Firebolt Open-Source Project is governed by an Advisory Board that creates +and delegates work to Working Groups, which then create proposals for +Requirements Specifications and Architectural Decision Records. +![Governance Structure](./images/governance/structure.png) ## 2. Table of Contents - [1. Overview](#1-overview) - [2. Table of Contents](#2-table-of-contents) @@ -70,13 +36,13 @@ Requirements Specifications and Architectural Decision Records. - [4.12. Release Versions](#412-release-versions) ## 3. Goals -The goal of the Firebolt Open-Source Project is to provide a -Distributor-configurable set of integration APIs and functional requirements -for those APIs so that Apps can integrate with the APIs once and run their -app on every Firebolt platform (regardless of distributor) consistently. -Specifically, Firebolt provides: +The goal of the Firebolt Open-Source Project is to provide a +Distributor-configurable set of integration APIs and functional requirements +for those APIs so that Apps can integrate with the APIs once and run their +app on every Firebolt platform (regardless of distributor) consistently. +Specifically, Firebolt provides: - Write Apps once, run on all Firebolt distributors - Discovery and launching of Apps - Detection of, and access control for, Firebolt APIs and features @@ -84,10 +50,10 @@ Specifically, Firebolt provides: - Platform integration APIs, (e.g. captions, media info, etc.) - Device and account management - Integration APIs for broader eco-system integrations -(e.g. user experience, advertising, voice, etc.) -While enabling Distributors to: +(e.g. user experience, advertising, voice, etc.) +While enabling Distributors to: - Provide differentiating Discovery and Settings experiences - Configure Firebolt features to meet their business needs - Configure Firebolt user privacy & opt-in settings @@ -95,39 +61,39 @@ While enabling Distributors to: - Negotiate access to features and APIs with each app ## 4. Governance -The Firebolt Open-Source Project is governed by an Advisory Board. The purpose -of the Advisory Board is to ensure that each major, minor, and patch version -of the Firebolt Requirements is aligned with the goals of the Firebolt -Open-Source Project. + +The Firebolt Open-Source Project is governed by an Advisory Board. The purpose +of the Advisory Board is to ensure that each major, minor, and patch version +of the Firebolt Requirements is aligned with the goals of the Firebolt +Open-Source Project. The Firebolt Requirements are the collection of all Requirements Specifications - and all Architectural Decision Records that are ratified by the Advisory -Board (and contained in this repository). - +and all Architectural Decision Records that are ratified by the Advisory +Board (and contained in this repository). ### 4.1. Scope -This document describes the governance model for the following components: +This document describes the governance model for the following components: - Firebolt RPC APIs & SDKs - Firebolt Media Pipeline (aka Rialto) - Firebolt API Reference Implementation (Ripple) ### 4.2. Firebolt Version -A Firebolt Version is a snapshot of the Firebolt Requirements that has been -ratified as an official release of the requirements. Note that the -requirements are decoupled from any implementation of those requirements, and - iterations to the requirements will occur with input from any teams -implementing them. -Firebolt Versions **MUST** follow Semantic Versioning. +A Firebolt Version is a snapshot of the Firebolt Requirements that has been +ratified as an official release of the requirements. Note that the +requirements are decoupled from any implementation of those requirements, and +iterations to the requirements will occur with input from any teams +implementing them. +Firebolt Versions **MUST** follow Semantic Versioning. ### 4.3. Advisory Board -The Advisory Board oversees all aspects of Firebolt Requirements Governance. -Advisory Board decisions should aim to be unanimous whenever possible, but in -cases of deadlock, may be decided by simple majority. +The Advisory Board oversees all aspects of Firebolt Requirements Governance. -The Advisory Board is responsible for: +Advisory Board decisions should aim to be unanimous whenever possible, but in +cases of deadlock, may be decided by simple majority. +The Advisory Board is responsible for: - Prioritization of Working Groups needed - Creation of balanced Working Groups with relevant subject matter experts - Solicitation of peer review by SMEs that are not from the working group @@ -137,167 +103,202 @@ The Advisory Board is responsible for: - Determination of when a sanctioned fork is warranted ### 4.4. Advisory Board Members -The Firebolt Advisory Board is currently being formed and will be published -soon. -Contact the `rdkcentral/firebolt-apis` maintainer, [Jeremy -LaCivita](https://github.com/jlacivita), to submit proposals to the Advisory -Board. +The Firebolt Advisory Board is currently being formed and will be published +soon. +Contact the `rdkcentral/firebolt-apis` maintainer, [Jeremy +LaCivita](https://github.com/jlacivita), to submit proposals to the Advisory +Board. ### 4.5. Working Group -Working Groups build consensus on requirements for Firebolt features or -architectural solutions. They should ideally be three to five individuals -spanning technical and product experts. Further recommendations on working -group composition are left to the Advisory Board. -As new features are prioritized, Working Groups should be formed to gather and -document requirements for those features. Working groups may be self-forming -or selected by the Advisory Board, but all working groups must have their -membership reviewed and approved by the board to ensure that they are well -balanced. +Working Groups build consensus on requirements for Firebolt features or +architectural solutions. They should ideally be three to five individuals +spanning technical and product experts. Further recommendations on working +group composition are left to the Advisory Board. -The Advisory Board **MAY** appoint a Working Group Chair or instruct the -Working Group to select a chair amongst themselves. +As new features are prioritized, Working Groups should be formed to gather and +document requirements for those features. Working groups may be self-forming +or selected by the Advisory Board, but all working groups must have their +membership reviewed and approved by the board to ensure that they are well +balanced. -The Working Group Chair is responsible for driving consensus and reporting back - to the Advisory Board +The Advisory Board **MAY** appoint a Working Group Chair or instruct the +Working Group to select a chair amongst themselves. +The Working Group Chair is responsible for driving consensus and reporting back +to the Advisory Board ### 4.6. Requirements Specification -A Requirements Specification includes all details necessary for multiple, -disassociated teams to build a consistent implementation of a feature, -including API signatures, validation, and functionality, as well as -functional and behavioral requirements of the feature that are not directly -exposed by an API. -Requirements and APIs may be targeted towards traditional 3rd party apps, as -well as more foundational 1st party apps. +A Requirements Specification includes all details necessary for multiple, +disassociated teams to build a consistent implementation of a feature, +including API signatures, validation, and functionality, as well as +functional and behavioral requirements of the feature that are not directly +exposed by an API. -The level of detail in an acceptable Requirements Specification should be such -that any App should run consistently on any implementation of the feature -that is based on the Specification. +Requirements and APIs may be targeted towards traditional 3rd party apps, as +well as more foundational 1st party apps. -Requirements Specifications are written using the [IETF Best Common Practice -14](https://www.rfc-editor.org/rfc/rfc2119.txt) and should include the -following at the end of the Overview: +The level of detail in an acceptable Requirements Specification should be such +that any App should run consistently on any implementation of the feature +that is based on the Specification. + +Requirements Specifications are written using the [IETF Best Common Practice +14](https://www.rfc-editor.org/rfc/rfc2119.txt) and should include the +following at the end of the Overview: The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL - NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**NOT -RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be -interpreted as described in [BCP +NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**NOT +RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be +interpreted as described in [BCP 14](https://www.rfc-editor.org/rfc/rfc2119.txt) [RFC2119] [RFC8174] when, and - only when, they appear in all capitals, as shown here. - -Requirements Specification move through several [stages](#48-approval-stages) -from being a draft, to being an official versioned requirements -specification. +only when, they appear in all capitals, as shown here. +Requirements Specification move through several [stages](#48-approval-stages) +from being a draft, to being an official versioned requirements +specification. ### 4.7. Architectural Decision Record -An Architectural Decision Record includes all details necessary to ensure that -Firebolt Requirements are fulfilled with an architecturally sound design. -This is often used in cases where listing out explicit requirements, e.g. -performance or operational requirements, is not possible or realistic, e.g. -Requiring use of a well-known open source component to fulfill some aspect of - the platform, or requiring adherence to a high level modular breakdown of -concerns to keep platform maintenance manageable. -Since ADRs included in the Firebolt Requirements **MUST** be adhered to, not -every architectural decision made in order to fulfill the Firebolt -Requirements needs to have a formal ADR in the Firebolt Requirements -repository. It is up to the Advisory Board which ADRs warrent a formal -inclusion in the Firebolt Requirements. +An Architectural Decision Record includes all details necessary to ensure that +Firebolt Requirements are fulfilled with an architecturally sound design. +This is often used in cases where listing out explicit requirements, e.g. +performance or operational requirements, is not possible or realistic, e.g. +Requiring use of a well-known open source component to fulfill some aspect of +the platform, or requiring adherence to a high level modular breakdown of +concerns to keep platform maintenance manageable. -ADRs move through the same [stages](#48-approval-stages) as Requirements -Specifications. +Since ADRs included in the Firebolt Requirements **MUST** be adhered to, not +every architectural decision made in order to fulfill the Firebolt +Requirements needs to have a formal ADR in the Firebolt Requirements +repository. It is up to the Advisory Board which ADRs warrent a formal +inclusion in the Firebolt Requirements. +ADRs move through the same [stages](#48-approval-stages) as Requirements +Specifications. ### 4.8. Approval Stages -Requirements specifications and ADRs are written by working groups and go -through several stages of approval before becoming official requirements -documents. -![Approval Track](./images/governance/approval-track.png) +Requirements specifications and ADRs are written by working groups and go +through several stages of approval before becoming official requirements +documents. +![Approval Track](./images/governance/approval-track.png) #### 4.8.1. Draft -This is any first draft of a requirements specification submitted by an -individual or individuals to a Working Group. -Artifacts: +This is any first draft of a requirements specification submitted by an +individual or individuals to a Working Group. +Artifacts: - A markdown document, ready to be presented to the Working Group -Note that a Draft **MUST** not be committed to any public location, e.g. the -Requirements Repository, because it has not yet been reviewed by the Working -Group and could mistakenly contain sensative, private information related to -a specific Firebolt distributor. +Note that a Draft **MUST** not be committed to any public location, e.g. the +Requirements Repository, because it has not yet been reviewed by the Working +Group and could mistakenly contain sensative, private information related to +a specific Firebolt distributor. #### 4.8.2. Working Draft -A version of the requirements specification that is approved by the Working -Group for feedback and review by individuals not on the Working Group. -Individuals are selected for review at the discretion of the Working Group. -Working drafts may or may not satisfy all requirements of the feature and -should not be used for derivative works. -Artifacts: +A version of the requirements specification that is approved by the Working +Group for feedback and review by individuals not on the Working Group. +Individuals are selected for review at the discretion of the Working Group. +Working drafts may or may not satisfy all requirements of the feature and +should not be used for derivative works. +Artifacts: - Markdown specification in a named feature branch of the Requirements Repository - Working Group members identified - Working Group progress is being tracked via GitHub project in the Requirements Repository #### 4.8.3. Candidate Specification -A version of the requirements specification that is approved by the Working -Group for proof-of-concept implementations and peer-review by the larger -Community. Candidate Specifications have been through significant review by -the Working Group and are ready for feedback from the larger community. -Once this is published to the peer group for review, they’ll have two weeks to -add their comments, make amendments requests, etc. +A version of the requirements specification that is approved by the Working +Group for proof-of-concept implementations and peer-review by the larger +Community. Candidate Specifications have been through significant review by +the Working Group and are ready for feedback from the larger community. -Artifacts: +Once this is published to the peer group for review, they’ll have two weeks to +add their comments, make amendments requests, etc. +Artifacts: - Markdown specification in a named feature branch of the Requirements Repository - Domain experts for peer-review identified and notified - Repeat process for any C.S. Drafts that are formalized into the C.S. (see below) - JSON-Schema API changes outlined by the document are in the OpenRPC schemas #### 4.8.4. Candidate Specification Draft -A fork of the current Candidate Specification that has changes requested, but -not yet approved, by the Working Group. -Artifacts: +A fork of the current Candidate Specification that has changes requested, but +not yet approved, by the Working Group. +Artifacts: - A Pull Request into the feature branch containing in-progress changes - Previous Candidate Specification does not include changes until approved by W.G. #### 4.8.5. Proposed Specification -A version of the requirements specification that is considered, by the Working + +A version of the requirements specification that is considered, by the Working Group, to be the final Candidate Specification, and has been submitted to the - Advisory Board for final approval. This version may be used for -experimental implementations and final peer-review by the larger community. - +Advisory Board for final approval. This version may be used for experimental +implementations and final peer-review by the larger community. -Artifacts: +Artifacts: - Markdown specification merged into the #proposed branch of the Requirements Repository - A Pull Request into the #next branch of Requirements Repository - JSON-Schema API changes outlined by the document are in the OpenRPC schemas - Unit tests for any API changes #### 4.8.6. Specification -An official versioned stage of the requirements specification that is done and -will not change until a future version is created. This version may be used -for official production implementations. -Artifacts: +An official versioned stage of the requirements specification that is done and +will not change until a future version is created. This version may be used +for official production implementations. +Artifacts: - Markdown specification merged into the #main branch of the Requirements Repository - Spec Review notes and green light from implementation teams of all member organizations with a vested interest in the specification - Status tracking link for any Open Source implementations of the spec, if appropriate ### 4.9. Requirements Repository -A public GitHub repository used to manage the progress of a requirements -specification. Requirements Specification **MUST** live in their own -repository, and not along side of the code that is implementing them. -The Requirements Repository **MUST** be located at: +A public GitHub repository used to manage the progress of a requirements +specification. Requirements Specification **MUST** live in their own +repository, and not along side of the code that is implementing them. + +The Requirements Repository **MUST** be located at: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -349,6 +350,25 @@ The Requirements Repository **MUST** be located at: + + + + + + + + + + + + + + + + + + + @@ -369,53 +389,54 @@ The Requirements Repository **MUST** be located at: ### 4.10. Requirements Repository Branching -The Requirements Repository **MUST** have the following branches: +The Requirements Repository **MUST** have the following branches: | Branch | Purpose | | -------- | ---------------------------------------------------------------------------------------- | | main | For officially approved specifications that have been released under a version. | | next | For all approved specifications, even those that have not been released under a version. | | proposed | An experimental branch containing all proposed specifications. | + Working Drafts and Candidate Specification Drafts **MUST** be housed in a named - feature branch in the Requirements Repository (see below). +feature branch in the Requirements Repository (see below). -Branches are merged based on the approval process: - -![Branching](./images/governance/branching.png) +Branches are merged based on the approval process: +![Branching](./images/governance/branching.png) ### 4.11. Sanctioned Forks -From time to time an organization with access to the Requirements Repository -may want to spearhead a new feature without going through the formal approval - process. -In this case the member may submit a request to the Approval Board for a -sanctioned fork inside the Requirements Repository, so that research and -development can be done on the feature. +From time to time an organization with access to the Requirements Repository +may want to spearhead a new feature without going through the formal approval +process. -The Approval Board **MAY** grant or deny the request for a sanctioned fork. +In this case the member may submit a request to the Approval Board for a +sanctioned fork inside the Requirements Repository, so that research and +development can be done on the feature. -After the R&D is complete, the forking organization **MUST** submit the -resulting requirements to the formal process and work to have them approved. +The Approval Board **MAY** grant or deny the request for a sanctioned fork. -The organization requesting the fork **MUST** be willing to migrate to the -approved APIs, which may be different than the API in the fork. +After the R&D is complete, the forking organization **MUST** submit the +resulting requirements to the formal process and work to have them approved. -The Advisory Board, and selected Working Group, **SHOULD** be willing to avoid -unnecessary changes to make migration as easy as possible, without -sacrificing the integrity of the Firebolt Open-Source Project’s goals. +The organization requesting the fork **MUST** be willing to migrate to the +approved APIs, which may be different than the API in the fork. +The Advisory Board, and selected Working Group, **SHOULD** be willing to avoid +unnecessary changes to make migration as easy as possible, without +sacrificing the integrity of the Firebolt Open-Source Project’s goals. ### 4.12. Release Versions + The Advisory Board has ownership of when to do major, minor, and patch releases - of the Firebolt Requirements. +of the Firebolt Requirements. -Releases **MUST** follow Semantic Versioning. +Releases **MUST** follow Semantic Versioning. -Approved changes are all housed in the next branch until the Advisory Board -decides that the next branch warrants an officially released version of the -requirements. +Approved changes are all housed in the next branch until the Advisory Board +decides that the next branch warrants an officially released version of the +requirements. -If a feature that requires a major version increment, i.e. a breaking change, -is proposed, the Advisory Board may decide to keep it unapproved so that any -features requiring a minor version change can be pushed through the process. -Management of this is the responsibility of the Advisory Board. +If a feature that requires a major version increment, i.e. a breaking change, +is proposed, the Advisory Board may decide to keep it unapproved so that any +features requiring a minor version change can be pushed through the process. +Management of this is the responsibility of the Advisory Board. diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index dee27cf73..a5c5ed793 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -1,9 +1,8 @@ # App Lifecycle Management -Document Status: Working Draft - -See [Firebolt Requirements Governance](../../governance.md) for more info. +Document Status: Working Draft +See [Firebolt Requirements Governance](../../governance.md) for more info. | Contributor | Organization | | ------------------------- | ------------ | | Andrew Bennett | Sky | @@ -20,45 +19,45 @@ See [Firebolt Requirements Governance](../../governance.md) for more info. ## 1. Overview -This document describes the requirements that Firebolt platforms and Firebolt -applications must fulfill when managing App Lifecycles. *App Lifecycle* -refers to the lifecycle of an individual app from the time it is -launched/loaded to the time it is destroyed and all runtime resources are -discarded. -*Initializing* an app refers to fetching the initial resources, e.g. the -app-manifest and index.html, and loading them into a container capable of -running the app, e.g. a web browser. +This document describes the requirements that Firebolt platforms and Firebolt +applications must fulfill when managing App Lifecycles. *App Lifecycle* +refers to the lifecycle of an individual app from the time it is +launched/loaded to the time it is destroyed and all runtime resources are +discarded. + +*Initializing* an app refers to fetching the initial resources, e.g. the +app-manifest and index.html, and loading them into a container capable of +running the app, e.g. a web browser. -*Activating* an app refers to the process of getting an app into a state where -it is presented as part of the user-perceptible experience (e.g. visible, -audible, or responding to input). This may include *initializing* the app -first, if needed. For details on presentation, see [App -Presentation](./presentation.md). +*Activating* an app refers to the process of getting an app into a state where +it is presented as part of the user-perceptible experience (e.g. visible, +audible, or responding to input). This may include *initializing* the app +first, if needed. For details on presentation, see [App +Presentation](./presentation.md). -*Closing* an app refers to the process of getting an app out of a state where -it is the primary user experience (e.g not visible, not audible, and not -responding to input). This **does not** involve *destroying* the app. +*Closing* an app refers to the process of getting an app out of a state where +it is the primary user experience (e.g not visible, not audible, and not +responding to input). This **does not** involve *destroying* the app. -*Suspending* an app refers to reducing the app's memory and CPU usage, and +*Suspending* an app refers to reducing the app's memory and CPU usage, and deallocating its graphics surface so that other apps will have more resources - available. +available. -*Resuming* an app refers to reallocating its graphics surface and resuming -normal CPU and memory allocations. +*Resuming* an app refers to reallocating its graphics surface and resuming +normal CPU and memory allocations. -*Destroying* an app refers to the process of notifying an app to do any needed -clean up, and then *terminating* it. +*Destroying* an app refers to the process of notifying an app to do any needed +clean up, and then *terminating* it. *Terminating* an app refers to shutting down the app's container and reclaiming - any memory, CPU, etc. that it was consuming. +any memory, CPU, etc. that it was consuming. -*Sleeping* an app refers to putting the app into a state where it does not use -CPU cycles, which allows the platform to optimise memory consumption. - -*Waking* an app refers to copying a Sleeping app back into the memory space of -a compatible process so that it resumes where it left off. +*Sleeping* an app refers to putting the app into a state where it does not use +CPU cycles, which allows the platform to optimise memory consumption. +*Waking* an app refers to copying a Sleeping app back into the memory space of +a compatible process so that it resumes where it left off. - [1. Overview](#1-overview) - [2. Lifecycle States](#2-lifecycle-states) - [2.1. Initializing](#21-initializing) @@ -90,17 +89,37 @@ a compatible process so that it resumes where it left off. ## 2. Lifecycle States -Firebolt platforms **MUST** support running one or more apps concurrently. The -platform **MUST** manage transition of apps from state to state. -A Firebolt app, once running, **MUST** be in one of several states and **MUST -NOT** be in more than one state at a time. +Firebolt platforms **MUST** support running one or more apps concurrently. The +platform **MUST** manage transition of apps from state to state. + +A Firebolt app, once running, **MUST** be in one of several states and **MUST +NOT** be in more than one state at a time. -As an app changes states the platform will invoke specific app-provided -transition methods, see [Transitions](#4-lifecycle-state-transitions), for -more on this. +As an app changes states the platform will invoke specific app-provided +transition methods, see [Transitions](#4-lifecycle-state-transitions), for +more on this. ![Lifecycle States](../../images/specifications/lifecycle/lifecycle-states.png) + + + + + + + + + + + + + + + + + + + | | CPU | RAM | F/S | Net | GFX | SFC | A/V | Description | |--------------|-----|-----|-----|-----|-----|-----|-----|----------------------------------------------------------------------------| @@ -125,159 +144,159 @@ more on this. ### 2.1. Initializing -This is the initial state an app exists from the moment it starts receiving CPU - cycles. -When an app starts running it **MUST** initialize the Firebolt SDK as quickly -as possible and then wait for the `Application.create()` interface to be -called before doing further setup. +This is the initial state an app exists from the moment it starts receiving CPU +cycles. -Apps in this state **MUST NOT** have a graphics surface allocated yet. +When an app starts running it **MUST** initialize the Firebolt SDK as quickly +as possible and then wait for the `Application.create()` interface to be +called before doing further setup. -Apps in this state **MUST NOT** be visible. +Apps in this state **MUST NOT** have a graphics surface allocated yet. -Apps in this state **MUST NOT** receive RCU key presses. +Apps in this state **MUST NOT** be visible. -Apps in this state **MUST NOT** have access to the audio-video decoder. +Apps in this state **MUST NOT** receive RCU key presses. -Apps in this state **MUST NOT** use the media pipeline. +Apps in this state **MUST NOT** have access to the audio-video decoder. -See [Initializing an app](#41-initializing-an-app) for more information. +Apps in this state **MUST NOT** use the media pipeline. +See [Initializing an app](#41-initializing-an-app) for more information. ### 2.2. Running -This state allows an app to be running and ready to go, but not actively part -of the user-perceptible experience. -Running apps can execute code, but are not [Presented](./presentation.md) to -the user, do not receive any input from RCUs, and cannot use the video -decoder. +This state allows an app to be running and ready to go, but not actively part +of the user-perceptible experience. -Apps in this state **MUST** have access to the graphics surface. +Running apps can execute code, but are not [Presented](./presentation.md) to +the user, do not receive any input from RCUs, and cannot use the video +decoder. -Apps in this state **MAY** have created, allocated a graphics surface but it -will not be made visible by platform compositor. +Apps in this state **MUST** have access to the graphics surface. -Apps in this state **MUST NOT** be visible. +Apps in this state **MAY** have created, allocated a graphics surface but it +will not be made visible by platform compositor. -Apps in this state **MUST NOT** receive RCU key presses. +Apps in this state **MUST NOT** be visible. -Apps in this state **MUST NOT** have access to the audio-video decoder. +Apps in this state **MUST NOT** receive RCU key presses. -Apps in this state **MUST NOT** use the media pipeline and the platform -**MUST** tear down any Media Pipeline sessions associated with this app. +Apps in this state **MUST NOT** have access to the audio-video decoder. +Apps in this state **MUST NOT** use the media pipeline and the platform +**MUST** tear down any Media Pipeline sessions associated with this app. ### 2.3. Active -This state allows an app to be presented as part of the user-perceptible -experience. -To determine if an app is the *primary* experience, e.g. fullscreen, etc., see -[Presentation](./presentation.md#3-display). +This state allows an app to be presented as part of the user-perceptible +experience. -It is a platform decision as to how many apps may be in this state at once. +To determine if an app is the *primary* experience, e.g. fullscreen, etc., see +[Presentation](./presentation.md#3-display). -Apps in this state **MAY** be visible. +It is a platform decision as to how many apps may be in this state at once. -Apps in this state **MAY** receive RCU key presses that they have permissions -for. +Apps in this state **MAY** be visible. -Apps in this state **MUST** have access to the audio decoder if they have -permission to the `xrn:firebolt:capability:decoder:audio` capability and the -platform has an available software or hardware decoder. +Apps in this state **MAY** receive RCU key presses that they have permissions +for. -Apps in this state **MUST** have access to the video decoder if they have -permission to the `xrn:firebolt:capability:decoder:video` capability and the -platform has an available software or hardware decoder. +Apps in this state **MUST** have access to the audio decoder if they have +permission to the `xrn:firebolt:capability:decoder:audio` capability and the +platform has an available software or hardware decoder. -Apps in this state **MUST** have access to the graphics surface. +Apps in this state **MUST** have access to the video decoder if they have +permission to the `xrn:firebolt:capability:decoder:video` capability and the +platform has an available software or hardware decoder. -Apps in this state **SHOULD** reduce memory usage, if possible. +Apps in this state **MUST** have access to the graphics surface. -When an app transitions to this state, the platform **MUST** dispatch the -`Lifecycle.onStateChanged` notification with the current state. +Apps in this state **SHOULD** reduce memory usage, if possible. +When an app transitions to this state, the platform **MUST** dispatch the +`Lifecycle.onStateChanged` notification with the current state. ### 2.4. Suspended -This state allows an app to remain in memory and consume fewer resources. -Suspended apps can execute code, but are not [Presented](./presentation.md) to -the user, do not receive any input from RCUs, and cannot use the video -decoder. +This state allows an app to remain in memory and consume fewer resources. -Apps in this state **MUST NOT** have a graphics surface allocated any longer. -It **MUST** have been deallocated in the `suspend()` transition. +Suspended apps can execute code, but are not [Presented](./presentation.md) to +the user, do not receive any input from RCUs, and cannot use the video +decoder. -Apps in this state **MUST NOT** be visible. +Apps in this state **MUST NOT** have a graphics surface allocated any longer. +It **MUST** have been deallocated in the `suspend()` transition. -Apps in this state **MUST NOT** receive RCU key presses. +Apps in this state **MUST NOT** be visible. -Apps in this state **MUST NOT** have access to the audio-video decoder. +Apps in this state **MUST NOT** receive RCU key presses. -Apps in this state **SHOULD** further reduce memory usage (more so than in the -`active` state), if possible. +Apps in this state **MUST NOT** have access to the audio-video decoder. -**TODO**:: add all the transition pre-requisites, e.g. Apps **MUST** only enter - this state from the `SUSPENDED` state, via the `sleep()` interface. +Apps in this state **SHOULD** further reduce memory usage (more so than in the +`active` state), if possible. +**TODO**:: add all the transition pre-requisites, e.g. Apps **MUST** only enter +this state from the `SUSPENDED` state, via the `sleep()` interface. ### 2.5. Sleeping -This state allows an app to be copied from memory to local storage and then -terminated to save resources. Subsequently, the app may be copied back into -memory, and resume in the same state. -*If* a platform does not support the -`xrn:firebolt:capability:lifecycle:sleepable` capability, then the following -requirements **MUST NOT** be fulfilled, even partially. A platform **MUST -NOT** use the APIs documented here to implement an alternate, non-compliant -version of the app sleeping feature. +This state allows an app to be copied from memory to local storage and then +terminated to save resources. Subsequently, the app may be copied back into +memory, and resume in the same state. + +*If* a platform does not support the +`xrn:firebolt:capability:lifecycle:sleepable` capability, then the following +requirements **MUST NOT** be fulfilled, even partially. A platform **MUST +NOT** use the APIs documented here to implement an alternate, non-compliant +version of the app sleeping feature. -*If* a platform supports the `xrn:firebolt:capability:lifecycle:sleepable` -capability, then the following requirements **MUST** be fulfilled. +*If* a platform supports the `xrn:firebolt:capability:lifecycle:sleepable` +capability, then the following requirements **MUST** be fulfilled. -Apps **MUST** only enter this state from the `SUSPENDED` state, via the -`sleep()` interface. +Apps **MUST** only enter this state from the `SUSPENDED` state, via the +`sleep()` interface. -If a platform supports copying sleeping apps memory out of RAM then: +If a platform supports copying sleeping apps memory out of RAM then: > The platform **MAY** save the app's memory space at this point, so that it > may be woken later. > > Finally, the app and its container **MAY** be removed from memory and have > other resources released as well. - ## 3. Getting the current state -The Lifecycle module **MUST** provide a `state` property API that returns the -current lifecycle state of the app. -If an app is in a transtition from one state to another, then it **MUST** be -considered in the state *before* the transition until such time as the app's -implementation of the [transition](#4-lifecycle-state-transitions) has -returned and the platfrom has finshed the transition. +The Lifecycle module **MUST** provide a `state` property API that returns the +current lifecycle state of the app. -The `state` API **MUST** have a corresponding `onStateChanged` notification. +If an app is in a transtition from one state to another, then it **MUST** be +considered in the state *before* the transition until such time as the app's +implementation of the [transition](#4-lifecycle-state-transitions) has +returned and the platfrom has finshed the transition. -The `state` API must have one of the following values: +The `state` API **MUST** have a corresponding `onStateChanged` notification. +The `state` API must have one of the following values: - `Initializing` - `Running` - `Suspended` - `Active` - `Sleeping` -Note that the `onStateChanged` notification **MUST** never be dispatched for -the `Sleeping` state since it would not be received anyway. +Note that the `onStateChanged` notification **MUST** never be dispatched for +the `Sleeping` state since it would not be received anyway. ## 4. Lifecycle State Transitions -There are several state transitions where the app and the platform need to -interact to ensure the transition goes smoothly. -![Lifecycle -States](../../images/specifications/lifecycle/lifecycle-transitions.png) +There are several state transitions where the app and the platform need to +interact to ensure the transition goes smoothly. -As an app changes states the platform will invoke specific app-provided -transition methods from the `Application` interface: +![Lifecycle +States](../../images/specifications/lifecycle/lifecycle-transitions.png) +As an app changes states the platform will invoke specific app-provided +transition methods from the `Application` interface: | | Legend | | - | ------------- | | ↓ | Limited | @@ -290,73 +309,74 @@ transition methods from the `Application` interface: | `resume()` | ✔ | ✔ | ✔ | ✔ | | graphics surface reallocated, full memory usage and normal CPU cycles. | | `destroy()` | ✔/↓ | ✔/↓ | ✔ | | | Preprare for the app to be deallocated and removed from execution. CPU & RAM based on previous state. | -If an app implements the `Activity` interface, then the following transitions -may be invoked: +If an app implements the `Activity` interface, then the following transitions +may be invoked: | | CPU | RAM | Net | GFX | A/V | Description | |----------------|-----|-----|-----|-----|-----|---------------------------------------------------------------------------| | `activate()` | ✔ | ✔ | ✔ | ✔ | ✔ | App is expected to become a user-perceptible part of the user experience. | | `deactivate()` | ✔ | ✔ | ✔ | ✔ | ✔ | Must remove any user-perceptible activities and deallocate A/V decoders. | -Finally, if an app implements the `Sleepable` interface, then the following -transistions may be invoked. +Finally, if an app implements the `Sleepable` interface, then the following +transistions may be invoked. | | CPU | RAM | Net | GFX | A/V | Description | |-----------|-----|-----|-----|-----|-----|----------------------------------------------------------------------------------------| | `sleep()` | ↓ | ↓ | ✔ | | | Prepare for an extended period with no CPU cycles given to app. | | `wake()` | ↓ | ↓ | ✔ | | | Cleanup after an extended period with no CPU, e.g. reset timers / network connections. | -All of these transition APIs are blocking, and each one has a -platform-configurable timeout that specifies how long the app has to fulfill -the method. -The platform **MUST** never invoke a transions on an app when that app is -already running a transition. +All of these transition APIs are blocking, and each one has a +platform-configurable timeout that specifies how long the app has to fulfill +the method. -All Firebolt apps **MUST** implement the `Application` interface, -`xrn:firebolt:capability:lifecycle:application`. +The platform **MUST** never invoke a transions on an app when that app is +already running a transition. -This includes: +All Firebolt apps **MUST** implement the `Application` interface, +`xrn:firebolt:capability:lifecycle:application`. +This includes: - `Application.create()` - `Application.suspend()` - `Application.resume()` - `Application.destroy()` -By providing an implementation of the -`xrn:firebolt:capability:lifecycle:application` interface, an app can -influence how resources are managed during these state transitions. See -[Application Interface](#71-application-interface) for more info. -User-facing apps **MUST** implement the `Activity` interface, -`xrn:firebolt:capability:lifecycle:activatible`. +By providing an implementation of the +`xrn:firebolt:capability:lifecycle:application` interface, an app can +influence how resources are managed during these state transitions. See +[Application Interface](#71-application-interface) for more info. -This includes: +User-facing apps **MUST** implement the `Activity` interface, +`xrn:firebolt:capability:lifecycle:activatible`. +This includes: - `Application.activate()` - `Application.deactivate()` -By providing an implementation of the -`xrn:firebolt:capability:lifecycle:activatible` interface, an app can -influence how resources are managed during these state transitions. See -[Activity Interface](#82-activity-interface) for more info. +By providing an implementation of the +`xrn:firebolt:capability:lifecycle:activatible` interface, an app can +influence how resources are managed during these state transitions. See +[Activity Interface](#82-activity-interface) for more info. ### 4.1. Initializing an app -Once an app is loaded it **MUST** be initialized immediately. -Initializing consists of three parts: +Once an app is loaded it **MUST** be initialized immediately. +Initializing consists of three parts: - Registration of the Firebolt Application provider - Any other code that automatically runs within the app executable - Invoking the app's Application.create() method -If an app does not provide the `xrn:firebolt:capability:lifecycle:application` -capability within `initializeTimeout` milliseconds, then the platform -**MUST** terminate the app. -Otherwise, the platform **MUST** call the app's implementation of -`Application.create()`: +If an app does not provide the `xrn:firebolt:capability:lifecycle:application` +capability within `initializeTimeout` milliseconds, then the platform +**MUST** terminate the app. + +Otherwise, the platform **MUST** call the app's implementation of +`Application.create()`: > The platform **MUST** dispatch the `Lifecycle.onRequestCreate` notification > to the app, and wait for `appCreateTimeout` milliseconds for either a @@ -369,69 +389,69 @@ Otherwise, the platform **MUST** call the app's implementation of > If the app times out or makes a `createError` call, then the app **MUST** be > immediately terminated by the platform. -Apps **SHOULD** set up any Firebolt event listeners either before calling -`Lifecycle.provide` or during `create()`, since the platform will wait until -the app is ready before dispatching many critical events such as Lifecycle -and Presentation events. +Apps **SHOULD** set up any Firebolt event listeners either before calling +`Lifecycle.provide` or during `create()`, since the platform will wait until +the app is ready before dispatching many critical events such as Lifecycle +and Presentation events. -Apps **SHOULD** acquire any important authentication needed for the app to -function during initialization. +Apps **SHOULD** acquire any important authentication needed for the app to +function during initialization. -Apps **MAY** load a limited set of global display resources, e.g. a global -style sheet or a logo used throughout the experience, during initialization. +Apps **MAY** load a limited set of global display resources, e.g. a global +style sheet or a logo used throughout the experience, during initialization. -During the `create()` transition, apps **MUST** inspect the `params` parameter -for [Parameters](#6-create-parameters) and prepare to fulfill the provided -launch configuration. - -Example Launch Parameters: +During the `create()` transition, apps **MUST** inspect the `params` parameter +for [Parameters](#6-create-parameters) and prepare to fulfill the provided +launch configuration. +Example Launch Parameters: ```json { "preload": true, "preloadReason": "boot" } -``` -**TODO**: discuss this ^^ +``` -Once the `create` method returns the app **MUST** be immediately transitioned -to the `RUNNING` state. +**TODO**: discuss this ^^ +Once the `create` method returns the app **MUST** be immediately transitioned +to the `RUNNING` state. ### 4.2. Activating an app -Activating an app transitions it to the `ACTIVE` state so that it becomes part -of the user's experience. -Firebolt apps that have permission to use the -`xrn:firebolt:capability:lifecycle:activate` capability **MUST** implement -`Activity.activate()`. +Activating an app transitions it to the `ACTIVE` state so that it becomes part +of the user's experience. + +Firebolt apps that have permission to use the +`xrn:firebolt:capability:lifecycle:activate` capability **MUST** implement +`Activity.activate()`. -The platform may activate apps for any number of reasons that are out of scope -for this document. +The platform may activate apps for any number of reasons that are out of scope +for this document. -To activate an app, platforms **MUST** use the following process. +To activate an app, platforms **MUST** use the following process. -If the app is already in the `ACTIVE` state, then it is already activated and -there is no need to do anything else. The platform **MUST NOT** dispatch any -*additional* lifecycle notifications when attempting to activate an app that -is already in the active state and the remainder of this section does not -apply. +If the app is already in the `ACTIVE` state, then it is already activated and +there is no need to do anything else. The platform **MUST NOT** dispatch any +*additional* lifecycle notifications when attempting to activate an app that +is already in the active state and the remainder of this section does not +apply. -If the app is not loaded, then the platform **MUST** [load](undefined) it -first. +If the app is not loaded, then the platform **MUST** [load](undefined) it +first. -If the app is not initialized, the platform **MUST** -[initialize](#41-initializing-an-app) it first. +If the app is not initialized, the platform **MUST** +[initialize](#41-initializing-an-app) it first. -If the app is suspended, then it **MUST** be [resumed](#45-resuming-an-app) -first. +If the app is suspended, then it **MUST** be [resumed](#45-resuming-an-app) +first. -At this point, the app **MUST** be in the `RUNNING` state. +At this point, the app **MUST** be in the `RUNNING` state. -If an app provides the `xrn:firebolt:capability:lifecycle:activatible` -capability, then the platform **MUST** call the app's implementation of -`Activity.activate()`: +If an app provides the `xrn:firebolt:capability:lifecycle:activatible` +capability, then the platform **MUST** call the app's implementation of +`Activity.activate()`: > The platform **MUST** dispatch the `Lifecycle.onRequestActivate` notification > to the app, and wait for `appActivateTimeout` milliseconds for either a @@ -451,69 +471,76 @@ capability, then the platform **MUST** call the app's implementation of > If the app times out or makes an `activateError` call, then the app **MUST** > be terminated. -During the `activate()` transition, the app **MUST** inspect the `intent` -parameter and prepare to fulfill a specific [Navigation -Intent](../intents/navigation.md) for this activation which may include: +If the app provides the `xrn:firebolt:capability:presentation:navigation` +capability then the `intent` **MAY** be any [Navigation +Intent](../intents/navigation.md) the app is configured to support. + +If the app does not provide the capability, then the `intent` **MUST** be the +[Launch Intent](../intents/navigation.md). +During the `activate()` transition, the app **MUST** inspect the `intent` +parameter and prepare to fulfill a specific Navigation Intent for this +activation which may include: - Loading any metadata needed to display the user's intended content. - Performing any entitlement checks to decide whether to display a player or a purchase flow - Any other steps necesary to present content to the user quickly -The platform will display a loading screen for the entire duration of the -`activate()` callback, and apps **SHOULD** do whatever is necessary to -present the user with content that fulfills the `intent` without additional -loading screens in the app's UX. -**TODO**: Discuss ^^ +The platform will display a loading screen for the entire duration of the +`activate()` callback, and apps **SHOULD** do whatever is necessary to +present the user with content that fulfills the `intent` without additional +loading screens in the app's UX. +**TODO**: Discuss ^^ ### 4.3. Deactivating an app -Closing an app transitions it to the `RUNNING` state, so that it is no longer -part of the user's experience. -Firebolt apps that have permission to use the -`xrn:firebolt:capability:lifecycle:activate` capability **MUST** implement -`Activity.deactivate()`. +Closing an app transitions it to the `RUNNING` state, so that it is no longer +part of the user's experience. + +Firebolt apps that have permission to use the +`xrn:firebolt:capability:lifecycle:activate` capability **MUST** implement +`Activity.deactivate()`. The platform may close apps for any number of reasons that are out of scope for - this document. +this document. -Apps **MAY** request to be closed, via the `Lifecycle.close()` API method. +Apps **MAY** request to be closed, via the `Lifecycle.close()` API method. -To close an app, platforms **MUST** use the following process. +To close an app, platforms **MUST** use the following process. -If an app is already in the `RUNNING`, `SUSPENDED`, or `SLEEPING` state, then -it is already closed and there is no need to do anything else. The platform -**MUST NOT** dispatch any *additional* lifecycle notifications when -attempting to close an app that is already in the `RUNNING` state and the -remainder of this section does not apply. +If an app is already in the `RUNNING`, `SUSPENDED`, or `SLEEPING` state, then +it is already closed and there is no need to do anything else. The platform +**MUST NOT** dispatch any *additional* lifecycle notifications when +attempting to close an app that is already in the `RUNNING` state and the +remainder of this section does not apply. -**TODO**: list out all possible transition "interuptions" and make sure they -are described in this doc. +**TODO**: list out all possible transition "interuptions" and make sure they +are described in this doc. -If an app is in the `initializing` state, then it is not +If an app is in the `initializing` state, then it is not -If an app is already performing a `deactivate()` transition, the platform -**MUST** ignore the new attempt to close the app, allow the pending closure -to complete, and the remainder of this section does not apply. +If an app is already performing a `deactivate()` transition, the platform +**MUST** ignore the new attempt to close the app, allow the pending closure +to complete, and the remainder of this section does not apply. -If an app is already performing an `activate()` transition, the platform -**MUST** wait for the activate call to succeed or fail and then skip the -remaining [activation steps](#42-activating-an-app). +If an app is already performing an `activate()` transition, the platform +**MUST** wait for the activate call to succeed or fail and then skip the +remaining [activation steps](#42-activating-an-app). -If an app is currently [initializing](#41-initializing-an-app), the platform -**MUST** wait for initialization to succeed or fail and then skip any -activation that may have been pending. +If an app is currently [initializing](#41-initializing-an-app), the platform +**MUST** wait for initialization to succeed or fail and then skip any +activation that may have been pending. -If an app is currently in a [destroy](#48-destroying-an-app) transition then -the app cannot be closed and the platform **MUST NOT** close it, and the -remainder of this section does not apply. +If an app is currently in a [destroy](#48-destroying-an-app) transition then +the app cannot be closed and the platform **MUST NOT** close it, and the +remainder of this section does not apply. -At this point, the app **MUST** be in the `ACTIVE` state. +At this point, the app **MUST** be in the `ACTIVE` state. -If an app provides the `xrn:firebolt:capability:lifecycle:activatible` -capability, then the platform **MUST** call the app's implementation of -`Activity.deactivate()`: +If an app provides the `xrn:firebolt:capability:lifecycle:activatible` +capability, then the platform **MUST** call the app's implementation of +`Activity.deactivate()`: > The platform **MUST** dispatch the `Lifecycle.onRequestDeactivate` > notification to the app, and wait for `appDeactivateTimeout` milliseconds for @@ -523,50 +550,50 @@ capability, then the platform **MUST** call the app's implementation of > Once the platform receives the `deactivateResult` call, then the app may be > moved to the `RUNNING` state. > -> If the app times out or makes a `deactivateError` call, then the app -> **MUST** be terminated. - -During the `deactivate()` transition, the app **MUST** deallocate any A/V -decoders. +> If the app times out or makes a `deactivateError` call, then the app **MUST** +> be terminated. -The platform **MAY** begin to transition the app out of view as soon as -`deactivate()` is called. +During the `deactivate()` transition, the app **MUST** deallocate any A/V +decoders. +The platform **MAY** begin to transition the app out of view as soon as +`deactivate()` is called. ### 4.4. Suspending an app -Suspending an app transitions it to the `SUSPENDED` state, where it is no -longer allowed to use graphics composition, and is expected to consume less -CPU and RAM. -The platform may suspend apps in order to free up memory, or for any number of -reasons that are out of scope for this document. However, it is the -platform's decision to suspend an app, not the app itself. +Suspending an app transitions it to the `SUSPENDED` state, where it is no +longer allowed to use graphics composition, and is expected to consume less +CPU and RAM. -To suspend an app, platforms **MUST** use the following process. +The platform may suspend apps in order to free up memory, or for any number of +reasons that are out of scope for this document. However, it is the +platform's decision to suspend an app, not the app itself. -If an app is in the `ACTIVE` state then it cannot yet be suspended, and -**MUST** be deactivated first. +To suspend an app, platforms **MUST** use the following process. -If an app is in the `SLEEPING` state then it cannot be suspended and there is -no need to do anything else. The platform **MUST NOT** dispatch any -*additional* lifecycle notifications when attempting to suspend an app that +If an app is in the `ACTIVE` state then it cannot yet be suspended, and +**MUST** be deactivated first. + +If an app is in the `SLEEPING` state then it cannot be suspended and there is +no need to do anything else. The platform **MUST NOT** dispatch any +*additional* lifecycle notifications when attempting to suspend an app that is already in the `SLEEPING` state and the remainder of this section does not - apply. +apply. If an app is already in the `SUSPENDED` state, then it is already suspended and - there is no need to do anything else. The platform **MUST NOT** dispatch -any *additional* lifecycle notifications when attempting to suspend an app -that is already in the suspended state and the remainder of this section -does not apply. +there is no need to do anything else. The platform **MUST NOT** dispatch any +*additional* lifecycle notifications when attempting to suspend an app that +is already in the suspended state and the remainder of this section does not +apply. -If the app is not loaded, or is not in the `RUNNING` state, then it cannot be -suspended, and the remainder of this section does not need to happen. +If the app is not loaded, or is not in the `RUNNING` state, then it cannot be +suspended, and the remainder of this section does not need to happen. -At this point, the app **MUST** be in the `RUNNING` state. +At this point, the app **MUST** be in the `RUNNING` state. -Since every app **MUST** provide the -`xrn:firebolt:capability:lifecycle:application` capability, the platform -**MUST** call the app's implementation of `Application.suspend()`: +Since every app **MUST** provide the +`xrn:firebolt:capability:lifecycle:application` capability, the platform +**MUST** call the app's implementation of `Application.suspend()`: > The platform **MUST** dispatch the `Lifecycle.onRequestSuspend` notification > to the app, and wait for `appSuspendTimeout` milliseconds for either a @@ -575,90 +602,90 @@ Since every app **MUST** provide the > Once the platform receives the `suspendResult` call, then the app may be > moved to the `SUSPENDED` state. > -> If the app times out or makes a `suspendError` call, then the app **MUST** -> be [destroyed](#48-destroying-an-app). +> If the app times out or makes a `suspendError` call, then the app **MUST** be +> [destroyed](#48-destroying-an-app). -During the `suspend()` transition, the app: +During the `suspend()` transition, the app: > **MUST** deallocate any graphics surface. > > **SHOULD** reduce memory usage, if possible. - ### 4.5. Resuming an app -Resuming an app allows it to reallocate graphics composition and reload any -resources it might have deallocated during `suspend()`. -The platform may resume apps so they can access more resources or in -preperation to activate them. +Resuming an app allows it to reallocate graphics composition and reload any +resources it might have deallocated during `suspend()`. -To resume an app, platforms **MUST** use the following process. +The platform may resume apps so they can access more resources or in +preperation to activate them. -If an app is not in the `SUSPENDED` state, then it cannot be resumed and there -is no need to do anything else. The platform **MUST NOT** dispatch any -*additional* lifecycle notifications when attempting to resume an app that is - not in the `SUSPENDED` state and the remainder of this section does not -apply. +To resume an app, platforms **MUST** use the following process. -At this point, the app **MUST** be in the `SUSPENDED` state. +If an app is not in the `SUSPENDED` state, then it cannot be resumed and there +is no need to do anything else. The platform **MUST NOT** dispatch any +*additional* lifecycle notifications when attempting to resume an app that is +not in the `SUSPENDED` state and the remainder of this section does not +apply. -Next, the platform **MUST** remove any restrictions on access the graphics -compositor. +At this point, the app **MUST** be in the `SUSPENDED` state. -Suspended apps **MUST** provide the -`xrn:firebolt:capability:lifecycle:application` capability, so the platform -**MUST** call the app's implementation of `Application.resume()`: +Next, the platform **MUST** remove any restrictions on access the graphics +compositor. -The platform **MUST** dispatch the `Lifecycle.onRequestResume` notification to -the app, and wait for `appResumeTimeout` milliseconds for either a -`Lifecycle.resumeResult` or `Lifecycle.resumeError` call in response. +Suspended apps **MUST** provide the +`xrn:firebolt:capability:lifecycle:application` capability, so the platform +**MUST** call the app's implementation of `Application.resume()`: -Once the platform receives the `resumeResult` call, then the app may be moved -to the `RUNNING` state. +The platform **MUST** dispatch the `Lifecycle.onRequestResume` notification to +the app, and wait for `appResumeTimeout` milliseconds for either a +`Lifecycle.resumeResult` or `Lifecycle.resumeError` call in response. -If the app times out or makes a `resumeError` call, then the app **MUST** be -terminated. +Once the platform receives the `resumeResult` call, then the app may be moved +to the `RUNNING` state. -During the `resume()` transition, apps **SHOULD** reallocate graphics -composition and other necessary resources. +If the app times out or makes a `resumeError` call, then the app **MUST** be +terminated. +During the `resume()` transition, apps **SHOULD** reallocate graphics +composition and other necessary resources. ### 4.6. Putting an app to sleep -TBD -Firebolt apps that have permission to use the -`xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement -`Sleepable.sleep()`. +TBD -TODO: if you don't call provide, we won't do this. +Firebolt apps that have permission to use the +`xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement +`Sleepable.sleep()`. +TODO: if you don't call provide, we won't do this. ### 4.7. Waking an app from sleep -TBD -Firebolt apps that have permission to use the -`xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement -`Sleepable.wake()`. +TBD +Firebolt apps that have permission to use the +`xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement +`Sleepable.wake()`. ### 4.8. Destroying an app -Destroying an app transitions it out of memory, so that it is no longer using -resources on the device. -The platform may destroy apps for any number of reasons that are out of scope -for this document. +Destroying an app transitions it out of memory, so that it is no longer using +resources on the device. + +The platform may destroy apps for any number of reasons that are out of scope +for this document. -To destroy an app, platforms **MUST** use the following process. +To destroy an app, platforms **MUST** use the following process. -If an app is not in the `RUNNING` state, then it cannot be destroyed and there -is no need to do anything else. The platform **MUST NOT** dispatch any -*additional* lifecycle notifications when attempting to destroy an app that +If an app is not in the `RUNNING` state, then it cannot be destroyed and there +is no need to do anything else. The platform **MUST NOT** dispatch any +*additional* lifecycle notifications when attempting to destroy an app that is not in the `RUNNING` state and the remainder of this section does not need - to happen. +to happen. -At this point, the app **MUST** be in the `RUNNING` state. +At this point, the app **MUST** be in the `RUNNING` state. -Since every app **MUST** provide the -`xrn:firebolt:capability:lifecycle:application` capability, the platform -**MUST** call the app's implementation of `Application.destroy()`: +Since every app **MUST** provide the +`xrn:firebolt:capability:lifecycle:application` capability, the platform +**MUST** call the app's implementation of `Application.destroy()`: > The platform **MUST** dispatch the `Lifecycle.onRequestDestroy` notification > to the app, and wait for `appDestroyTimeout` milliseconds for either a @@ -669,55 +696,54 @@ Since every app **MUST** provide the > > If the app times out or makes an `destroyError` call, then the app **MUST** > be terminated. - ### 4.9. Terminating an app -Terminating an app removes it from memory without dispatching any state -changes. -The platform **SHOULD** terminate apps when one of the transitions outlined -here fails for some reason, or if an app becomes non-responsesive. +Terminating an app removes it from memory without dispatching any state +changes. -Terminating an app results in removing it from memory and all resources held by - the app and it's container being freed up. +The platform **SHOULD** terminate apps when one of the transitions outlined +here fails for some reason, or if an app becomes non-responsesive. -Platforms **MAY** terminate an app when needed but **SHOULD NOT** do this in -place of graceful [destroying](#48-destroying-an-app). +Terminating an app results in removing it from memory and all resources held by +the app and it's container being freed up. +Platforms **MAY** terminate an app when needed but **SHOULD NOT** do this in +place of graceful [destroying](#48-destroying-an-app). ## 6. Create Parameters -The `CreateParameters` type is an object with the following properties: +The `CreateParameters` type is an object with the following properties: ```typescript -type Parameters = { +type CreateParameters = { preload: boolean, preloadReason?: "boot" | "restart" | "user" } -``` +``` ## 7. Core SDK APIs -The following APIs are exposed by the Firebolt Core SDK. +The following APIs are exposed by the Firebolt Core SDK. ### 7.1. Application Interface -The `Application` interface is implemented by Apps to provide resource -management around memory as an Application moves through the core lifecycle -states: +The `Application` interface is implemented by Apps to provide resource +management around memory as an Application moves through the core lifecycle +states: - `INITIALIZING` - `RUNNING` - `SUSPENDED` -All apps **MUST** implement the Application interface. +All apps **MUST** implement the Application interface. ```typescript interface Application { - function create(params: Parameters): Promise; + function create(params: CreateParameters): Promise; function suspend(): Promise; function resume(): Promise; function destroy(): Promsie; } -``` +``` | Method | Description | | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `create()` | Called when the platform is ready to create the lifecycle session for the app. Only called only once, during the `INITIALIZING` state. | @@ -726,37 +752,37 @@ interface Application { | `destroy()` | Called when the platform is ready to end the lifecycle session for the app. Only called once. | ### 7.2. Activatible Interface -The `Activatible` interface is implemented by Apps that provide user -perceptible experiences, e.g. visible, audible, or user input. -These types of apps require additional resource management +The `Activatible` interface is implemented by Apps that provide user +perceptible experiences, e.g. visible, audible, or user input. +These types of apps require additional resource management ```typescript interface Activatible { function activate(intent: NavigationIntent): Promise; function deactivate(): Promise; } -``` +``` | Method | Description | | -------------- | ------------------------------------------------------------------------------------------------------------------------------ | | `activate()` | Called when the platform is ready to move the app into the `ACTIVE` state. A/V resources may be allocated. | | `deactivate()` | Called when the platform is ready to move the app out of the `ACTIVE` state and into `RUNNING` to deallocate any A/V decoders. | ### 7.3. Sleepable Interface -The `Sleepable` interface is implemented by Apps that are able to handle being -put to sleep and then woken at a later point in time. -These types of apps require additional resource management to reestablish -network connections and may also require additional thread safety checks. +The `Sleepable` interface is implemented by Apps that are able to handle being +put to sleep and then woken at a later point in time. +These types of apps require additional resource management to reestablish +network connections and may also require additional thread safety checks. ```typescript interface Sleepable { function sleep(): Promise; function wake(): Promise; } -``` +``` | Method | Description | | --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | | `sleep()` | Called when the platform is ready to move the app into the `SLEEPING` state where it will no longer have access to the CPU. | @@ -764,8 +790,8 @@ interface Sleepable { ### 7.4. Example App -Example: +Example: ```typescript import { Lifecycle } from '@firebolt-js/sdk' @@ -805,63 +831,63 @@ Lifecycle.provide([ "xrn:firebolt:capability:lifecycle:application", "xrn:firebolt:capability:lifecycle:activatible" ], new ExampleApplication()) -``` -**NOTE**: we need to support passing an array of capabilities for a single -class. +``` -See the [Firebolt API -Documentation](https://developer.comcast.com/firebolt/core/sdk/latest/api/) -for details around syntax, etc. +**NOTE**: we need to support passing an array of capabilities for a single +class. +See the [Firebolt API +Documentation](https://developer.comcast.com/firebolt/core/sdk/latest/api/) +for details around syntax, etc. ### 7.5. Ready -The Lifecycle.ready() API allows an app to notify the platform that it is -initialized and ready to be displayed to the end user. This method **MUST -NOT** be called more than once. +The Lifecycle.ready() API allows an app to notify the platform that it is +initialized and ready to be displayed to the end user. This method **MUST +NOT** be called more than once. ### 7.6. Close -The Lifecycle.close() API allows an app to request that it be closed by the -platform. -This method requires a reason parameter, which tells the platform why the app -is requesting to be closed: +The Lifecycle.close() API allows an app to request that it be closed by the +platform. +This method requires a reason parameter, which tells the platform why the app +is requesting to be closed: | Reason | Description | |---------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | CloseReason.REMOTE_BUTTON | The user pressed the back or last button on the RCU and the App has determined it is at the top of it's navigation stack and should go back to the platform home screen. | | CloseReason.USER_EXIT | The user selected an exit control exposed by the app's UI. | | CloseReason.ERROR | The app is experiencing unrecoverable issues and needs to be closed and destroyed. | -Platforms generally **SHOULD** respect this call and move the app to the -running state, but there may be edge cases where this is not possible, e.g. -the app is considered to be the default experience for the device, and -closing it would leave no other UX present. -When the request to close is not respected, the Lifecycle.close() method -**MUST** return an error. +Platforms generally **SHOULD** respect this call and move the app to the +running state, but there may be edge cases where this is not possible, e.g. +the app is considered to be the default experience for the device, and +closing it would leave no other UX present. -Platforms **MAY** prioritize apps to be destroyed based on the reason provided. - For example, apps closed due to the RCU are less likely to be destroyed -since it may be an accidental RCU press, whereas an explicit user exit is -more likely to be intentional. +When the request to close is not respected, the Lifecycle.close() method +**MUST** return an error. +Platforms **MAY** prioritize apps to be destroyed based on the reason provided. +For example, apps closed due to the RCU are less likely to be destroyed since +it may be an accidental RCU press, whereas an explicit user exit is more +likely to be intentional. ### 7.7. State -The Lifecycle.state() method provides convenient access to the current state, -and is implemented by the Core SDK listening to all state notifications. This - method **MUST NOT** be asynchronous. +The Lifecycle.state() method provides convenient access to the current state, +and is implemented by the Core SDK listening to all state notifications. This +method **MUST NOT** be asynchronous. ## 8. Lifecycle Configuration -In order to enable Firebolt Certification of a device's Lifecycle Management -features, the device **MUST** support the following configuration options, so - that the Firebolt Certification Test Suite knows which optional conditions -to test for, and for how long to wait for state transitions. -The LifecyclePolicy fields are: +In order to enable Firebolt Certification of a device's Lifecycle Management +features, the device **MUST** support the following configuration options, so +that the Firebolt Certification Test Suite knows which optional conditions to +test for, and for how long to wait for state transitions. +The LifecyclePolicy fields are: | Field | Type | Required | Description | |----------------------|--------|----------|--------------------------------------------------------------------------------------------------------------------------| | appInitializeTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating a loaded app that did not call `Lifecycle.provide()`. | @@ -873,3 +899,4 @@ The LifecyclePolicy fields are: | appResumeTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `resume()`. | | appSleepTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `sleep()`. | | appWakeTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `wake()`. | + diff --git a/requirements/specifications/lifecycle/navigation.md b/requirements/specifications/lifecycle/navigation.md deleted file mode 100644 index dcb3be20d..000000000 --- a/requirements/specifications/lifecycle/navigation.md +++ /dev/null @@ -1,61 +0,0 @@ - - -## 5. Activity Navigation -Typically navigation is handled either when the app is activated, via the -`intent` parameter of the `activate` method, or by internal input within the -app. - -There are other times when the platform needs to inform an app of a user's -intent to navigate when the app is already `ACTIVE`, e.g. when a voice -command is executed or a soft remote sends a message while the app is in -focus. - -In these cases, the platform **MUST** call the `Activity.navigate` method of -the App, and pass the `intent`. - -Within the `navigate()` method, the app **MUST** inspect the `intent` parameter - and prepare to fulfill a specific [Navigation -Intent](../intents/navigation.md) for the app, which may include: - - - Loading any metadata needed to display the user's intended content. - - Performing any entitlement checks to decide whether to display a player or a purchase flow - - Any other steps necesary to present content to the user quickly - -### Option 1 -During the `navigate()` transition, the app **MUST** inspect the `intent` -parameter and prepare to fulfill a specific [Navigation -Intent](../intents/navigation.md) which may include: - - - Loading any metadata needed to display the user's intended content. - - Performing any entitlement checks to decide whether to display a player or a purchase flow - - Any other steps necesary to present content to the user quickly - -The app **MAY** display a loading screen.. - -An app **MUST NOT** receive a navigate call while it is already executing a -navigate call. - -### Option 2 -An app **MAY** receive a navigate call while it is already executing a navigate - call. - -> The platform **MUST** dispatch the `Lifecycle.onRequestNavigate` notification -> to the app, and wait for `appNavigateTimeout` milliseconds for either a -> `Lifecycle.navigateResult` or `Lifecycle.navigateError` call in response. -> -> Once the platform receives the `navigateResult` call, then the platform may -> proceed with app destroying. -> -> If the app times out or makes an `navigateError` call, then the app **MAY** -> be terminated. - -An app **MUST** acknowledge receipt of each navigate call. - -An app **MUST** decide how to prioritize multiple navigate calls. - -### Option 3 -```typescript -Discovery.listen('navigateTo', (intent) => { - // -}) -``` \ No newline at end of file diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index bcfb01bcb..964c77e24 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -1,47 +1,13 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # App Presentation -need to write this up... -Document Status: Working Draft +need to write this up... -See [Firebolt Requirements Governance](../../governance.md) for more info. +Document Status: Working Draft +See [Firebolt Requirements Governance](../../governance.md) for more info. | Contributor | Organization | | ------------------------- | ------------ | -| Andrew Bennet | Sky | +| Andrew Bennett | Sky | | Cody Bonney | Charter | | Bart Catrysse | Liberty | | Tim Dibben | Sky | @@ -50,31 +16,35 @@ See [Firebolt Requirements Governance](../../governance.md) for more info. | Kevin Pearson | Comcast | | Peter Yu | Comcast | - ## 1. Overview -TBD... +TBD... - [1. Overview](#1-overview) - [2. Focus](#2-focus) - [3. Display](#3-display) - [3.1. Display vs Lifecycle](#31-display-vs-lifecycle) - [4. Overlay](#4-overlay) + - [4.1. 4.1 Overlay vs Focus](#41-41-overlay-vs-focus) - [5. Background Audio](#5-background-audio) - [6. Picture-in-Picture Video](#6-picture-in-picture-video) -- [7. Platform-provided Loading Screen](#7-platform-provided-loading-screen) -- [8. App-provided Loading Screen](#8-app-provided-loading-screen) +- [7. Navigation](#7-navigation) +- [8. Platform-provided Loading Screen](#8-platform-provided-loading-screen) +- [9. App-provided Loading Screen](#9-app-provided-loading-screen) +- [10. When to use a loading screen](#10-when-to-use-a-loading-screen) ## 2. Focus + The `Presentation` module **MUST** have a `focus` boolean property that returns - whether or not the app has input, e.g. RCU, focus. +whether or not the app has input, e.g. RCU, focus. -As a property, this API also has an `onFocusChanged` notification. +**TODO**: let's clearly define focus. RCU, soft-keyboard, soft-remote, +As a property, this API also has an `onFocusChanged` notification. ## 3. Display -The `Presentation` module **MUST** have a `display` string property that -returns one of the following values: +The `Presentation` module **MUST** have a `display` string property that +returns one of the following values: | Value | Description | |--------------|-------------------------------------------------------------------------------------------------------------------------| | `fullscreen` | The app is displayed such that the dimensions fill the entire screen | @@ -84,9 +54,12 @@ returns one of the following values: | `loading` | The platform is displaying a loading screen while the app prepares to be activated | | `none` | The app does not have it's graphics surface attached to the screen | + +**TODO**: an app could be offscreen & scaled. If a scaled or thumbnailed app +goes offscreen, it's now offscreen. ### 3.1. Display vs Lifecycle -Each Lifecycle state only supports certain display states: +Each Lifecycle state only supports certain display states: | Lifecycle | Supported Displays | |----------------|--------------------------------------------------| | `initializing` | `none`, `loading` | @@ -95,74 +68,144 @@ Each Lifecycle state only supports certain display states: | `suspended` | `none`, `loading` | | `sleeping` | `none`, `loading` | -See [Picture-in-picture](#6-picture-in-picture-video) and [Background -Audio](#5-background-audio) for exceptions to this. +See [Picture-in-picture](#6-picture-in-picture-video) and [Background +Audio](#5-background-audio) for exceptions to this. ## 4. Overlay -The `Presentation` module **MUST** have an `overlay` string property that -returns one of the following values: -| Value | Description | -|-----------|----------------------------------------------------------------------------| -| `icon` | There is an informative icon, e.g. volume, on top of the app. | -| `band` | There is a horizontal overlay at the top or bottom of the app. | -| `sidebar` | There is a vertical sidebar covering less than 33% of the app on one side. | -| `blocked` | There is a significantly sized UX covering a majority of the app. | +The `Presentation` module **MUST** have an `overlay` string property that +returns one of the following values: +| Value | Description | +|------------|----------------------------------------------------------------------------| +| `partial` | There is a vertical sidebar covering less than 33% of the app on one side. | +| `blocking` | There is a significantly sized UX covering a majority of the app. | +| `none` | There is nothing covering the app. | + +### 4.1. 4.1 Overlay vs Focus + +| Focus | Overlay | +| ----- | ----------------------- | +| true | none | +| false | partial, blocking, none | ## 5. Background Audio -If an app has the `xrn:firebolt:capability:media:background-audio`, then it can - keep playing audio/video when the app is in the `none` display state and -the audio will be played for the user. -When an app has this capability, it **MAY** be put into the `none` display -state while in the `active` Lifecycle state. +When an app has this capability, it **MAY** be put into the `none` display +state while in the `active` Lifecycle state. + +If an app has the `xrn:firebolt:capability:media:background-audio`, then it can +keep playing audio/video when the app is in the `none` display state and the +audio will be played for the user. +TODO: do we want background apps to have a gfx surface? that means they'd be in +'offscreen' display and using more memory TODO: we probably want to support +both modes here. ## 6. Picture-in-Picture Video -If an app has the `xrn:firebolt:capability:media:picture-in-picture`, then it -can keep playing audio/video when the app is in the `none` display state and + +When an app has the `xrn:firebolt:capability:media:picture-in-picture` +capability, it **MAY** be put into the `none` display state while in the +`active` Lifecycle state. + +If an app has the `xrn:firebolt:capability:media:picture-in-picture`, then it +can keep playing audio/video when the app is in the `none` display state and the audio & video will be presented to the user in bounding box determined by - the platform. Note that this does not include the entire UX of the app, -just the active media pipeline. +the platform. Note that this does not include the entire UX of the app, just +the active media pipeline. + +## 7. Navigation +Typically navigation is handled either when the app is activated, via the +`intent` parameter of the [`activate` +method](./index.md#42-activating-an-app), or by internal input within the +app. -When an app has this capability, it **MAY** be put into the `none` display -state while in the `active` Lifecycle state. +There are other times when the platform needs to inform an app of a user's +intent to navigate when the app is already `ACTIVE`, e.g. when a voice +command is executed or an RCU sends a reserved key to the platform that would +result in the app taking some action, e.g. going to its home screen. -## 7. Platform-provided Loading Screen -Most apps will leverage a platform-provided loading screen. +If the app provides the `xrn:firebolt:capability:presentation:navigation` +capability then the platform **MUST** call the `Navigation.navigateTo` method +of the app's provider and pass an `intent` to an app that is in the `ACTIVE` +state. -If an app provides the `xrn:firebolt:capability:presentation:loading-screen` +An app **MAY** receive a navigate call while it is already executing a navigate +call. + +An app **MUST** acknowledge receipt of each navigate call. + +Platforms **MAY** decide to remove focus from or deactivate apps that do not +acknowledge the `navigateTo` call. + +An app **MAY** decide how to prioritize multiple navigate calls, but likely +**SHOULD** prioritize the most recent one. + +To fullfil a prioritized `navigateTo()` call, the app **MUST** inspect the +`intent` parameter and prepare to fulfill a specific [Navigation +Intent](../intents/navigation.md) which may include: + + - Loading any metadata needed to display the user's intended content. + - Performing any entitlement checks to decide whether to display a player or a purchase flow + - Any other steps necesary to present content to the user quickly + +The app **MAY** display a loading indicator. + +To invoke an app's `navigateTo` provider API the platform **MUST**: + +> The platform **MUST** dispatch the `Presentation.onRequestNavigateTo` +> notification to the app, and wait for `appNavigateToTimeout` milliseconds for +> either a `Presentation.navigateToResult` or `Presentation.navigateToError` +> call in response. +> +> Once the platform receives the `navigateToResult` call, then the platform may +> proceed with the expectation that the app in fact will handle the `intent` +> +> If the app times out or makes an `navigateToError` call, then the app **MAY** +> have focus removed or be deactivated, so that the platform can handle the +> `intent` in some other way + + +## 8. Platform-provided Loading Screen + +Most apps will leverage a platform-provided loading screen. + +If an app provides the `xrn:firebolt:capability:presentation:loading-screen` capability, then the platform **MAY** use the app-provided loading screen, in - which case, the rest of the section does not apply. +which case, the rest of the section does not apply. -The loading screen **SHOULD** include a loading image referenced in the app's -manifest and cached on the device. +The loading screen **SHOULD** include a loading image referenced in the app's +manifest and cached on the device. -The loading screen **MUST** be displayed when the user attempts to launch the -app. +The loading screen **MUST** be displayed when the user attempts to launch the +app. -The loading screen **MUST** stay displayed until the app becomes active, or -launching is cancelled. +The loading screen **MUST** stay displayed until the app becomes active, or +launching is cancelled. The presentation state of the app **MUST** be `LOADING` for the entire time the - loading screen is displayed. +loading screen is displayed. -See [Lifecycle](./index.md) for more info on launching. +See [Lifecycle](./index.md) for more info on launching. +## 9. App-provided Loading Screen -## 8. App-provided Loading Screen -If an app provides the `xrn:firebolt:capability:lifecycle:loading-screen` -capability, then the platform **MAY** invoke this capability in some -situations. +If an app provides the `xrn:firebolt:capability:presentation:loading-screen` +capability, then the platform **MAY** invoke this capability in some +situations. -In order for an app and use an app-provided loading screen, the app **MUST** -provide the `xrn:firebolt:capability:lifecycle:activity` capability. If the -app does not provide this capability, then app-provided loading screens -**MUST NOT** but invoked for the app. +If the app is being created w/ preload: false then: Apps that provide the loading screen capability **MUST** be made visible at the - very beginning of the `Activity.activate()` transition, rather than at the -end. +end of the `Application.create()` transition, rather than at the end of the +activate transition. + +**TODO**: if an app is in the running state already, show it at the beginning +of `activate()` + +The presentation state of the app **SHOULD NOT** be `none` at any time during +the `activate()` transition. + +See [Lifecycle](./index.md) for more info on loading and activating apps. -The presentation state of the app **SHOULD NOT** be `none` at any time during -the `activate()` transition. +## 10. When to use a loading screen -See [Lifecycle](./index.md) for more info on loading and activating apps. +- cold launch +- wake from sleep diff --git a/requirements/style-guide-and-template.md b/requirements/style-guide-and-template.md index e2ca581d5..78665a6a6 100644 --- a/requirements/style-guide-and-template.md +++ b/requirements/style-guide-and-template.md @@ -1,77 +1,42 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Requirements Style Guide -Document Status: Working Draft - -See [Firebolt Requirements Governance](./governance.md) for more info. +Document Status: Working Draft -**NOTE**: Update this link based on your directory depth ^^ +See [Firebolt Requirements Governance](./governance.md) for more info. +**NOTE**: Update this link based on your directory depth ^^ | Contributor | Organization | | ----------- | ------------ | | TBD | TBD | ## 1. Overview -This document is both a style guide *and* a template for Firebolt Requirements -Specifications. -The Overview section is a non-normative or informative introduction to the -contents and subject matter of the document. This is included to introduce -the reader to the overall problem, solution, and scope. No formal -requirements will be included here, as it will often be skipped by readers -that are already familiar with the document. +This document is both a style guide *and* a template for Firebolt Requirements +Specifications. + +The Overview section is a non-normative or informative introduction to the +contents and subject matter of the document. This is included to introduce +the reader to the overall problem, solution, and scope. No formal +requirements will be included here, as it will often be skipped by readers +that are already familiar with the document. -Overviews can be as long or short as appropriate for the subject matter, and -should have a target audience ranging from technical product managers to -engineering teams that may be testing, implementing, or integrating with the -functionality described in the document. +Overviews can be as long or short as appropriate for the subject matter, and +should have a target audience ranging from technical product managers to +engineering teams that may be testing, implementing, or integrating with the +functionality described in the document. -The overview must contain the following towards the end: +The overview must contain the following towards the end: -Requirements documents are written using the [IETF Best Common Practice -14](https://www.rfc-editor.org/rfc/rfc2119.txt) and should include the -following summary in the Overview section: +Requirements documents are written using the [IETF Best Common Practice +14](https://www.rfc-editor.org/rfc/rfc2119.txt) and should include the +following summary in the Overview section: The key words "**MUST**", "**MUST NOT**", "**REQUIRED**", "**SHALL**", "**SHALL - NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**NOT -RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be -interpreted as described in [BCP +NOT**", "**SHOULD**", "**SHOULD NOT**", "**RECOMMENDED**", "**NOT +RECOMMENDED**", "**MAY**", and "**OPTIONAL**" in this document are to be +interpreted as described in [BCP 14](https://www.rfc-editor.org/rfc/rfc2119.txt) [RFC2119] [RFC8174] when, and - only when, they appear in all capitals, as shown here. - +only when, they appear in all capitals, as shown here. ## 2. Table of Contents - [1. Overview](#1-overview) - [2. Table of Contents](#2-table-of-contents) @@ -82,101 +47,102 @@ interpreted as described in [BCP - [4. Example Section](#4-example-section) - [4.1. Example Feature](#41-example-feature) -**NOTE**: This is a simple table of contents. It should include links to all -headers in the document, except for the top-level header (i.e. `# Title`). It - is recommended to use a Markdown plugin to generate this based on headers -ranging from level two to level six. Delete this note from your actual spec -:) +**NOTE**: This is a simple table of contents. It should include links to all +headers in the document, except for the top-level header (i.e. `# Title`). It +is recommended to use a Markdown plugin to generate this based on headers +ranging from level two to level six. Delete this note from your actual spec +:) ## 3. Specification Style Requirements -Firebolt uses method templates in order to code-generate consistent APIs. For -example, methods with the `"property"` tag only need to have the `getter` -editorially defined. The Firebolt OpenRPC tools will auto-generate the -`setter` and `subscriber` as OpenRPC methods with matching types. -Additionally, the Firebolt OpenRPC tools wil then code-generate the getter, -setter, and subscriber as APIs in various languages using templates. -This enables both consistent APIs (all properties have a recongnizable pattern) - and consistent SDK implementation, which reduces the code that needs to be -tested. +Firebolt uses method templates in order to code-generate consistent APIs. For +example, methods with the `"property"` tag only need to have the `getter` +editorially defined. The Firebolt OpenRPC tools will auto-generate the +`setter` and `subscriber` as OpenRPC methods with matching types. +Additionally, the Firebolt OpenRPC tools wil then code-generate the getter, +setter, and subscriber as APIs in various languages using templates. +This enables both consistent APIs (all properties have a recongnizable pattern) +and consistent SDK implementation, which reduces the code that needs to be +tested. ### 3.1. General Style Requirements -All headers **MUST** be numbered, and have the parent header as the prefix, -separated with '.' -Module and method names, as well as constants **MUST** be in monospace font, -e.g. the `Foo` module **MUST** have a `bar` method that returns `true`. Specs - should use JavaScript notation for any code examples if the spec is not -targeting another specific language binding, e.g. a spec about Event -listeners in C++ would use C++ syntax. +All headers **MUST** be numbered, and have the parent header as the prefix, +separated with '.' -String constants and values **MUST** be wrapped in quotes for clarity, e.g. -`"Hello World"`. +Module and method names, as well as constants **MUST** be in monospace font, +e.g. the `Foo` module **MUST** have a `bar` method that returns `true`. Specs +should use JavaScript notation for any code examples if the spec is not +targeting another specific language binding, e.g. a spec about Event +listeners in C++ would use C++ syntax. +String constants and values **MUST** be wrapped in quotes for clarity, e.g. +`"Hello World"`. ### 3.2. Firebolt Style Requirements -All Firebolt APIs exposed for building Firebolt Apps **MUST** be exposed as -JSON-RPC methods on a WebSocket accessible to the device, typically running -locally. -Parameters and return values for all APIs **MUST** be described using -JSON-Schema schemas. +All Firebolt APIs exposed for building Firebolt Apps **MUST** be exposed as +JSON-RPC methods on a WebSocket accessible to the device, typically running +locally. -Methods **MUST** be grouped into “modules” or “packages” of functionality. +Parameters and return values for all APIs **MUST** be described using +JSON-Schema schemas. -The JSON-RPC method name of any method **MUST** follow the template: +Methods **MUST** be grouped into “modules” or “packages” of functionality. +The JSON-RPC method name of any method **MUST** follow the template: ``` . -``` -e.g. +``` +e.g. ``` lifecycle.ready -``` -JSON-RPC method names are case sensitive. +``` + +JSON-RPC method names are case sensitive. Methods **MUST** have at least one capability used, managed, or provided by the - method. +method. -Methods **MAY** require the use of more than one capability, but this means -that the app must have permission to all of them. In order to enable App -permissions to be evaluated in an isolated layer, separate from the method -implementation itself, a Firebolt method **MUST NOT** be specified to add or -remove fields based on the caller's permissions. +Methods **MAY** require the use of more than one capability, but this means +that the app must have permission to all of them. In order to enable App +permissions to be evaluated in an isolated layer, separate from the method +implementation itself, a Firebolt method **MUST NOT** be specified to add or +remove fields based on the caller's permissions. The words used in method and parameter names **SHOULD** be used as consistently - as possible across the Firebolt API surface. See the [Firebolt API -Glossary](./glossary.md) for words that Firebolt uses and how they are used. - +as possible across the Firebolt API surface. See the [Firebolt API +Glossary](./glossary.md) for words that Firebolt uses and how they are used. ### 3.3. Firebolt Method Templates -Methods **SHOULD** consider using the existing Firebolt method tags, in order -to have a level of consistency across APIs. -If a Firebolt method is specified such that it requires a non-existant -template, then a new Requirements Specification **MUST** be written and -referenced by the specification that inspired it. Method templates **MUST** -be designed with re-use in mind. +Methods **SHOULD** consider using the existing Firebolt method tags, in order +to have a level of consistency across APIs. +If a Firebolt method is specified such that it requires a non-existant +template, then a new Requirements Specification **MUST** be written and +referenced by the specification that inspired it. Method templates **MUST** +be designed with re-use in mind. ## 4. Example Section -A section describes group of closely related features. Many specifications have - only one section, however, more complicated specifications may have many. -The first paragraph of a section is typically a non-normative introduction -to that section, and therefor does not contain any formal requirements. +A section describes group of closely related features. Many specifications have +only one section, however, more complicated specifications may have many. The +first paragraph of a section is typically a non-normative introduction to +that section, and therefor does not contain any formal requirements. ### 4.1. Example Feature -Each feature under a section will have it's own heading. Non-normative + +Each feature under a section will have it's own heading. Non-normative introductions to features are not typically needed, as the reader is ready to - get into requirements at this point. It is recommended that all Feature -headings under each Section contain only sentences or short paragraphs with -formal requirements, e.g. **MUST**, **SHOULD**, **MAY**, **MUST** NOT, -**SHOULD NOT**, etc. These sentences should be separated by blank lines for -readability, e.g.: +get into requirements at this point. It is recommended that all Feature +headings under each Section contain only sentences or short paragraphs with +formal requirements, e.g. **MUST**, **SHOULD**, **MAY**, **MUST** NOT, +**SHOULD NOT**, etc. These sentences should be separated by blank lines for +readability, e.g.: -This requirement **MUST** be satisifed. +This requirement **MUST** be satisifed. -This requirement **SHOULD** be satisfied. +This requirement **SHOULD** be satisfied. -This requirement **MUST** be satisfied. The requirement **MUST** be satisifed -in this particular way. +This requirement **MUST** be satisfied. The requirement **MUST** be satisifed +in this particular way. diff --git a/src/js/github.io/markdown.mjs b/src/js/github.io/markdown.mjs index ea3f1857f..4e1da98b9 100644 --- a/src/js/github.io/markdown.mjs +++ b/src/js/github.io/markdown.mjs @@ -84,11 +84,15 @@ function fixBrokenLinks(data, ref, files) { return data } +/* TODO: + - Newline at top bug + - Multiple spaces bug +*/ function wrapText(data) { const lines = data.split('\n') const maximum = 80 let buffer = '' - let wrapped = '' + let wrapped = [] let width = 0 const block_regex = /^\s*?\>/ const code_regex = /^\s*?```/ @@ -102,9 +106,9 @@ function wrapText(data) { // skip lists, tables, headers, and blanks if (code || line.match(/^\s*?\-/) || line.match(/^\s*?\|/) || line.match(/^\#+/) || line.match(/^\s*?$/)) { - buffer && (wrapped += '\n' + buffer) + buffer && (wrapped.push(buffer)) buffer = '' - wrapped += '\n' + line + wrapped.push(line) width = 0 } else { @@ -118,7 +122,7 @@ function wrapText(data) { width = 2 } else if (!line.trim()) { - buffer += '\n> \n>' + buffer += '\n> \n> ' width = 2 } } @@ -127,22 +131,24 @@ function wrapText(data) { if (word.match(block_regex)) { throw "Found > in line: " + line } - let len = word.length + 1 // .replace(/\(.*?\)/g, '') - if (width + len > maximum) { - buffer += '\n' + (quote ? '> ' : '') + word + ' ' - width = len + 2 - } - else { - buffer += word + ' ' - width += len + if (word && !word.match(/^\s+$/)) { + let len = word.length + 1 // .replace(/\(.*?\)/g, '') + if (width + len > maximum) { + buffer += '\n' + (quote ? '> ' : '') + word + ' ' + width = len + 2 + } + else { + buffer += word + ' ' + width += len + } } }) } }) - buffer && (wrapped += '\n' + buffer) + buffer && (wrapped.push(buffer)) - return wrapped + return wrapped.join('\n') } function prettyTables(data) { From 869c3219b7ea52d96363ab03a1716f22dac53c8f Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Tue, 24 Oct 2023 12:39:48 -0400 Subject: [PATCH 21/43] chore: minor formatting --- requirements/governance.md | 1 + requirements/specifications/lifecycle/presentation.md | 2 ++ 2 files changed, 3 insertions(+) diff --git a/requirements/governance.md b/requirements/governance.md index 4991757e1..d14ddd905 100644 --- a/requirements/governance.md +++ b/requirements/governance.md @@ -332,6 +332,7 @@ The Requirements Repository **MUST** be located at: + [https://github.com/rdkcentral/firebolt-apis](https://github.com/rdkcentral/firebolt-apis) diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index 964c77e24..209dd1a81 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -45,6 +45,7 @@ As a property, this API also has an `onFocusChanged` notification. The `Presentation` module **MUST** have a `display` string property that returns one of the following values: + | Value | Description | |--------------|-------------------------------------------------------------------------------------------------------------------------| | `fullscreen` | The app is displayed such that the dimensions fill the entire screen | @@ -71,6 +72,7 @@ Each Lifecycle state only supports certain display states: See [Picture-in-picture](#6-picture-in-picture-video) and [Background Audio](#5-background-audio) for exceptions to this. + ## 4. Overlay The `Presentation` module **MUST** have an `overlay` string property that From d2d89394b830571a53ec5f2afe71c14e012eaf55 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Tue, 24 Oct 2023 17:14:07 -0400 Subject: [PATCH 22/43] chore: whitespace cleanup --- requirements/governance.md | 124 +----------------- .../specifications/lifecycle/index.md | 20 --- .../specifications/lifecycle/presentation.md | 3 +- 3 files changed, 4 insertions(+), 143 deletions(-) diff --git a/requirements/governance.md b/requirements/governance.md index d14ddd905..da7d64978 100644 --- a/requirements/governance.md +++ b/requirements/governance.md @@ -266,129 +266,8 @@ repository, and not along side of the code that is implementing them. The Requirements Repository **MUST** be located at: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [https://github.com/rdkcentral/firebolt-apis](https://github.com/rdkcentral/firebolt-apis) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ### 4.10. Requirements Repository Branching The Requirements Repository **MUST** have the following branches: @@ -398,13 +277,13 @@ The Requirements Repository **MUST** have the following branches: | next | For all approved specifications, even those that have not been released under a version. | | proposed | An experimental branch containing all proposed specifications. | - Working Drafts and Candidate Specification Drafts **MUST** be housed in a named feature branch in the Requirements Repository (see below). Branches are merged based on the approval process: ![Branching](./images/governance/branching.png) + ### 4.11. Sanctioned Forks From time to time an organization with access to the Requirements Repository @@ -426,6 +305,7 @@ approved APIs, which may be different than the API in the fork. The Advisory Board, and selected Working Group, **SHOULD** be willing to avoid unnecessary changes to make migration as easy as possible, without sacrificing the integrity of the Firebolt Open-Source Project’s goals. + ### 4.12. Release Versions The Advisory Board has ownership of when to do major, minor, and patch releases diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index a5c5ed793..dd66c9742 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -19,7 +19,6 @@ See [Firebolt Requirements Governance](../../governance.md) for more info. ## 1. Overview - This document describes the requirements that Firebolt platforms and Firebolt applications must fulfill when managing App Lifecycles. *App Lifecycle* refers to the lifecycle of an individual app from the time it is @@ -101,26 +100,7 @@ transition methods, see [Transitions](#4-lifecycle-state-transitions), for more on this. ![Lifecycle States](../../images/specifications/lifecycle/lifecycle-states.png) - - - - - - - - - - - - - - - - - - - | | CPU | RAM | F/S | Net | GFX | SFC | A/V | Description | |--------------|-----|-----|-----|-----|-----|-----|-----|----------------------------------------------------------------------------| | Initializing | ✔ | ✔ | ✔ | ✔ | | | | Started executing, but is not yet instantiated as a Firebolt app. | diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index 209dd1a81..7ba84f5ce 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -41,6 +41,7 @@ whether or not the app has input, e.g. RCU, focus. **TODO**: let's clearly define focus. RCU, soft-keyboard, soft-remote, As a property, this API also has an `onFocusChanged` notification. + ## 3. Display The `Presentation` module **MUST** have a `display` string property that @@ -55,9 +56,9 @@ returns one of the following values: | `loading` | The platform is displaying a loading screen while the app prepares to be activated | | `none` | The app does not have it's graphics surface attached to the screen | - **TODO**: an app could be offscreen & scaled. If a scaled or thumbnailed app goes offscreen, it's now offscreen. + ### 3.1. Display vs Lifecycle Each Lifecycle state only supports certain display states: From 9e8c7fd0d2f4fadd58750acdfe030271147c1587 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Thu, 26 Oct 2023 16:23:29 -0400 Subject: [PATCH 23/43] fix: Extra newline for really long words --- requirements/glossary.md | 35 +++--- requirements/governance.md | 66 +++++----- .../specifications/lifecycle/index.md | 115 +++++++++--------- .../specifications/lifecycle/presentation.md | 11 +- requirements/style-guide-and-template.md | 37 +++--- src/js/github.io/markdown.mjs | 45 +++++-- 6 files changed, 162 insertions(+), 147 deletions(-) diff --git a/requirements/glossary.md b/requirements/glossary.md index d64bf031d..d7f7c227f 100644 --- a/requirements/glossary.md +++ b/requirements/glossary.md @@ -8,8 +8,7 @@ Document Status: Working Draft ## 1. Overview This document describes various terms used as part of Firebolt APIs, e.g. -method names or parameters, and how they are used by Firebolt, for -consistency. +method names or parameters, and how they are used by Firebolt, for consistency. The terms are this document are commonly used across multiple modules. However, new APIs should be deferential to all existing APIs, not just words listed @@ -58,14 +57,14 @@ grant](#313-user-grant). Available capabilities are, by definition, noun. - Used in the context of [content](#36-content) to denote that the content *could* be consumed if either the device has an -[entitlement](#37-entitlement) to the content, or the content does not -require any entitlement. +[entitlement](#37-entitlement) to the content, or the content does not require +any entitlement. ### 3.4. capability noun. - A discrete unit of functionality that a Firebolt device might be able -to perform. It is granular enough to enable appropriate access controls -across all Firebolt Apps, but useful enough to be a meaningful functional -unit that an App might care about. +to perform. It is granular enough to enable appropriate access controls across +all Firebolt Apps, but useful enough to be a meaningful functional unit that an +App might care about. ### 3.5. closed captions noun. - Closed Captions are text tracks rendered over or near @@ -77,21 +76,21 @@ noun. - Content consumed on Firebolt platforms, e.g. video, games, music, etc. ### 3.7. entitlement noun. - Used in the context of [content](#36-content) to denote that the device -or user has acquired the *right* to consume the content. Content may also -have [availability](#33-availability) requirements for consumption, e.g. a -user may have pre-orded a piece of content, and therefor have an entitlement -to it, that becomes available in the future. +or user has acquired the *right* to consume the content. Content may also have +[availability](#33-availability) requirements for consumption, e.g. a user may +have pre-orded a piece of content, and therefor have an entitlement to it, that +becomes available in the future. ### 3.8. granted adj. - Used in the context of a [capability](#34-capability) to denote that the -capability has been granted to an app by the user. Capabilities that are -gated by [user grant](#313-user-grant) cannot be leveraged by any app w/out -being granted. +capability has been granted to an app by the user. Capabilities that are gated +by [user grant](#313-user-grant) cannot be leveraged by any app w/out being +granted. ### 3.9. lifecycle noun. - Used to describe the life, from being loaded to unloaded, of a Firebolt -[app](#31-app). The app lifecycle has many states that inform the app how it -is being percieved and how it should behave. +[app](#31-app). The app lifecycle has many states that inform the app how it is +being percieved and how it should behave. ### 3.10. media noun. - [Content](#36-content) that that plays back over time without requiring @@ -115,5 +114,5 @@ adj. - Used in the context of a [capability](#34-capability) to denote that the capability *could* be leveraged at some point on this device, because the distributor offers it as part of this device's feature set. Leveraging a capability also requires that it is [available](#32-available), -[permitted](#311-permitted), and either [granted](#38-granted) or is not -gated by a [user grant](#313-user-grant). +[permitted](#311-permitted), and either [granted](#38-granted) or is not gated +by a [user grant](#313-user-grant). diff --git a/requirements/governance.md b/requirements/governance.md index da7d64978..7869b937d 100644 --- a/requirements/governance.md +++ b/requirements/governance.md @@ -39,8 +39,8 @@ Requirements Specifications and Architectural Decision Records. The goal of the Firebolt Open-Source Project is to provide a Distributor-configurable set of integration APIs and functional requirements -for those APIs so that Apps can integrate with the APIs once and run their -app on every Firebolt platform (regardless of distributor) consistently. +for those APIs so that Apps can integrate with the APIs once and run their app +on every Firebolt platform (regardless of distributor) consistently. Specifically, Firebolt provides: - Write Apps once, run on all Firebolt distributors @@ -63,13 +63,13 @@ While enabling Distributors to: ## 4. Governance The Firebolt Open-Source Project is governed by an Advisory Board. The purpose -of the Advisory Board is to ensure that each major, minor, and patch version -of the Firebolt Requirements is aligned with the goals of the Firebolt -Open-Source Project. +of the Advisory Board is to ensure that each major, minor, and patch version of +the Firebolt Requirements is aligned with the goals of the Firebolt Open-Source +Project. The Firebolt Requirements are the collection of all Requirements Specifications -and all Architectural Decision Records that are ratified by the Advisory -Board (and contained in this repository). +and all Architectural Decision Records that are ratified by the Advisory Board +(and contained in this repository). ### 4.1. Scope This document describes the governance model for the following components: @@ -80,10 +80,9 @@ This document describes the governance model for the following components: ### 4.2. Firebolt Version A Firebolt Version is a snapshot of the Firebolt Requirements that has been -ratified as an official release of the requirements. Note that the -requirements are decoupled from any implementation of those requirements, and -iterations to the requirements will occur with input from any teams -implementing them. +ratified as an official release of the requirements. Note that the requirements +are decoupled from any implementation of those requirements, and iterations to +the requirements will occur with input from any teams implementing them. Firebolt Versions **MUST** follow Semantic Versioning. ### 4.3. Advisory Board @@ -118,8 +117,8 @@ spanning technical and product experts. Further recommendations on working group composition are left to the Advisory Board. As new features are prioritized, Working Groups should be formed to gather and -document requirements for those features. Working groups may be self-forming -or selected by the Advisory Board, but all working groups must have their +document requirements for those features. Working groups may be self-forming or +selected by the Advisory Board, but all working groups must have their membership reviewed and approved by the board to ensure that they are well balanced. @@ -132,16 +131,16 @@ to the Advisory Board A Requirements Specification includes all details necessary for multiple, disassociated teams to build a consistent implementation of a feature, -including API signatures, validation, and functionality, as well as -functional and behavioral requirements of the feature that are not directly -exposed by an API. +including API signatures, validation, and functionality, as well as functional +and behavioral requirements of the feature that are not directly exposed by an +API. Requirements and APIs may be targeted towards traditional 3rd party apps, as well as more foundational 1st party apps. The level of detail in an acceptable Requirements Specification should be such -that any App should run consistently on any implementation of the feature -that is based on the Specification. +that any App should run consistently on any implementation of the feature that +is based on the Specification. Requirements Specifications are written using the [IETF Best Common Practice 14](https://www.rfc-editor.org/rfc/rfc2119.txt) and should include the @@ -155,23 +154,22 @@ interpreted as described in [BCP only when, they appear in all capitals, as shown here. Requirements Specification move through several [stages](#48-approval-stages) -from being a draft, to being an official versioned requirements -specification. +from being a draft, to being an official versioned requirements specification. ### 4.7. Architectural Decision Record An Architectural Decision Record includes all details necessary to ensure that -Firebolt Requirements are fulfilled with an architecturally sound design. -This is often used in cases where listing out explicit requirements, e.g. +Firebolt Requirements are fulfilled with an architecturally sound design. This +is often used in cases where listing out explicit requirements, e.g. performance or operational requirements, is not possible or realistic, e.g. Requiring use of a well-known open source component to fulfill some aspect of the platform, or requiring adherence to a high level modular breakdown of concerns to keep platform maintenance manageable. Since ADRs included in the Firebolt Requirements **MUST** be adhered to, not -every architectural decision made in order to fulfill the Firebolt -Requirements needs to have a formal ADR in the Firebolt Requirements -repository. It is up to the Advisory Board which ADRs warrent a formal -inclusion in the Firebolt Requirements. +every architectural decision made in order to fulfill the Firebolt Requirements +needs to have a formal ADR in the Firebolt Requirements repository. It is up to +the Advisory Board which ADRs warrent a formal inclusion in the Firebolt +Requirements. ADRs move through the same [stages](#48-approval-stages) as Requirements Specifications. @@ -193,8 +191,8 @@ Artifacts: Note that a Draft **MUST** not be committed to any public location, e.g. the Requirements Repository, because it has not yet been reviewed by the Working -Group and could mistakenly contain sensative, private information related to -a specific Firebolt distributor. +Group and could mistakenly contain sensative, private information related to a +specific Firebolt distributor. #### 4.8.2. Working Draft A version of the requirements specification that is approved by the Working @@ -212,8 +210,8 @@ Artifacts: A version of the requirements specification that is approved by the Working Group for proof-of-concept implementations and peer-review by the larger -Community. Candidate Specifications have been through significant review by -the Working Group and are ready for feedback from the larger community. +Community. Candidate Specifications have been through significant review by the +Working Group and are ready for feedback from the larger community. Once this is published to the peer group for review, they’ll have two weeks to add their comments, make amendments requests, etc. @@ -250,8 +248,8 @@ Artifacts: #### 4.8.6. Specification An official versioned stage of the requirements specification that is done and -will not change until a future version is created. This version may be used -for official production implementations. +will not change until a future version is created. This version may be used for +official production implementations. Artifacts: - Markdown specification merged into the #main branch of the Requirements Repository @@ -303,8 +301,8 @@ The organization requesting the fork **MUST** be willing to migrate to the approved APIs, which may be different than the API in the fork. The Advisory Board, and selected Working Group, **SHOULD** be willing to avoid -unnecessary changes to make migration as easy as possible, without -sacrificing the integrity of the Firebolt Open-Source Project’s goals. +unnecessary changes to make migration as easy as possible, without sacrificing +the integrity of the Firebolt Open-Source Project’s goals. ### 4.12. Release Versions diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index dd66c9742..091cbe377 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -20,10 +20,9 @@ See [Firebolt Requirements Governance](../../governance.md) for more info. ## 1. Overview This document describes the requirements that Firebolt platforms and Firebolt -applications must fulfill when managing App Lifecycles. *App Lifecycle* -refers to the lifecycle of an individual app from the time it is -launched/loaded to the time it is destroyed and all runtime resources are -discarded. +applications must fulfill when managing App Lifecycles. *App Lifecycle* refers +to the lifecycle of an individual app from the time it is launched/loaded to +the time it is destroyed and all runtime resources are discarded. *Initializing* an app refers to fetching the initial resources, e.g. the app-manifest and index.html, and loading them into a container capable of @@ -96,8 +95,8 @@ A Firebolt app, once running, **MUST** be in one of several states and **MUST NOT** be in more than one state at a time. As an app changes states the platform will invoke specific app-provided -transition methods, see [Transitions](#4-lifecycle-state-transitions), for -more on this. +transition methods, see [Transitions](#4-lifecycle-state-transitions), for more +on this. ![Lifecycle States](../../images/specifications/lifecycle/lifecycle-states.png) @@ -129,8 +128,8 @@ This is the initial state an app exists from the moment it starts receiving CPU cycles. When an app starts running it **MUST** initialize the Firebolt SDK as quickly -as possible and then wait for the `Application.create()` interface to be -called before doing further setup. +as possible and then wait for the `Application.create()` interface to be called +before doing further setup. Apps in this state **MUST NOT** have a graphics surface allocated yet. @@ -150,8 +149,7 @@ This state allows an app to be running and ready to go, but not actively part of the user-perceptible experience. Running apps can execute code, but are not [Presented](./presentation.md) to -the user, do not receive any input from RCUs, and cannot use the video -decoder. +the user, do not receive any input from RCUs, and cannot use the video decoder. Apps in this state **MUST** have access to the graphics surface. @@ -202,8 +200,7 @@ When an app transitions to this state, the platform **MUST** dispatch the This state allows an app to remain in memory and consume fewer resources. Suspended apps can execute code, but are not [Presented](./presentation.md) to -the user, do not receive any input from RCUs, and cannot use the video -decoder. +the user, do not receive any input from RCUs, and cannot use the video decoder. Apps in this state **MUST NOT** have a graphics surface allocated any longer. It **MUST** have been deallocated in the `suspend()` transition. @@ -228,9 +225,9 @@ memory, and resume in the same state. *If* a platform does not support the `xrn:firebolt:capability:lifecycle:sleepable` capability, then the following -requirements **MUST NOT** be fulfilled, even partially. A platform **MUST -NOT** use the APIs documented here to implement an alternate, non-compliant -version of the app sleeping feature. +requirements **MUST NOT** be fulfilled, even partially. A platform **MUST NOT** +use the APIs documented here to implement an alternate, non-compliant version +of the app sleeping feature. *If* a platform supports the `xrn:firebolt:capability:lifecycle:sleepable` capability, then the following requirements **MUST** be fulfilled. @@ -252,8 +249,8 @@ current lifecycle state of the app. If an app is in a transtition from one state to another, then it **MUST** be considered in the state *before* the transition until such time as the app's -implementation of the [transition](#4-lifecycle-state-transitions) has -returned and the platfrom has finshed the transition. +implementation of the [transition](#4-lifecycle-state-transitions) has returned +and the platfrom has finshed the transition. The `state` API **MUST** have a corresponding `onStateChanged` notification. @@ -325,9 +322,9 @@ This includes: By providing an implementation of the -`xrn:firebolt:capability:lifecycle:application` interface, an app can -influence how resources are managed during these state transitions. See -[Application Interface](#71-application-interface) for more info. +`xrn:firebolt:capability:lifecycle:application` interface, an app can influence +how resources are managed during these state transitions. See [Application +Interface](#71-application-interface) for more info. User-facing apps **MUST** implement the `Activity` interface, `xrn:firebolt:capability:lifecycle:activatible`. @@ -338,9 +335,9 @@ This includes: By providing an implementation of the -`xrn:firebolt:capability:lifecycle:activatible` interface, an app can -influence how resources are managed during these state transitions. See -[Activity Interface](#82-activity-interface) for more info. +`xrn:firebolt:capability:lifecycle:activatible` interface, an app can influence +how resources are managed during these state transitions. See [Activity +Interface](#82-activity-interface) for more info. ### 4.1. Initializing an app Once an app is loaded it **MUST** be initialized immediately. @@ -352,8 +349,8 @@ Initializing consists of three parts: If an app does not provide the `xrn:firebolt:capability:lifecycle:application` -capability within `initializeTimeout` milliseconds, then the platform -**MUST** terminate the app. +capability within `initializeTimeout` milliseconds, then the platform **MUST** +terminate the app. Otherwise, the platform **MUST** call the app's implementation of `Application.create()`: @@ -371,8 +368,8 @@ Otherwise, the platform **MUST** call the app's implementation of Apps **SHOULD** set up any Firebolt event listeners either before calling `Lifecycle.provide` or during `create()`, since the platform will wait until -the app is ready before dispatching many critical events such as Lifecycle -and Presentation events. +the app is ready before dispatching many critical events such as Lifecycle and +Presentation events. Apps **SHOULD** acquire any important authentication needed for the app to function during initialization. @@ -414,9 +411,8 @@ To activate an app, platforms **MUST** use the following process. If the app is already in the `ACTIVE` state, then it is already activated and there is no need to do anything else. The platform **MUST NOT** dispatch any -*additional* lifecycle notifications when attempting to activate an app that -is already in the active state and the remainder of this section does not -apply. +*additional* lifecycle notifications when attempting to activate an app that is +already in the active state and the remainder of this section does not apply. If the app is not loaded, then the platform **MUST** [load](undefined) it first. @@ -467,9 +463,9 @@ activation which may include: The platform will display a loading screen for the entire duration of the -`activate()` callback, and apps **SHOULD** do whatever is necessary to -present the user with content that fulfills the `intent` without additional -loading screens in the app's UX. +`activate()` callback, and apps **SHOULD** do whatever is necessary to present +the user with content that fulfills the `intent` without additional loading +screens in the app's UX. **TODO**: Discuss ^^ ### 4.3. Deactivating an app @@ -491,9 +487,9 @@ To close an app, platforms **MUST** use the following process. If an app is already in the `RUNNING`, `SUSPENDED`, or `SLEEPING` state, then it is already closed and there is no need to do anything else. The platform -**MUST NOT** dispatch any *additional* lifecycle notifications when -attempting to close an app that is already in the `RUNNING` state and the -remainder of this section does not apply. +**MUST NOT** dispatch any *additional* lifecycle notifications when attempting +to close an app that is already in the `RUNNING` state and the remainder of +this section does not apply. **TODO**: list out all possible transition "interuptions" and make sure they are described in this doc. @@ -501,8 +497,8 @@ are described in this doc. If an app is in the `initializing` state, then it is not If an app is already performing a `deactivate()` transition, the platform -**MUST** ignore the new attempt to close the app, allow the pending closure -to complete, and the remainder of this section does not apply. +**MUST** ignore the new attempt to close the app, allow the pending closure to +complete, and the remainder of this section does not apply. If an app is already performing an `activate()` transition, the platform **MUST** wait for the activate call to succeed or fail and then skip the @@ -542,12 +538,12 @@ The platform **MAY** begin to transition the app out of view as soon as Suspending an app transitions it to the `SUSPENDED` state, where it is no -longer allowed to use graphics composition, and is expected to consume less -CPU and RAM. +longer allowed to use graphics composition, and is expected to consume less CPU +and RAM. The platform may suspend apps in order to free up memory, or for any number of -reasons that are out of scope for this document. However, it is the -platform's decision to suspend an app, not the app itself. +reasons that are out of scope for this document. However, it is the platform's +decision to suspend an app, not the app itself. To suspend an app, platforms **MUST** use the following process. @@ -556,14 +552,14 @@ If an app is in the `ACTIVE` state then it cannot yet be suspended, and If an app is in the `SLEEPING` state then it cannot be suspended and there is no need to do anything else. The platform **MUST NOT** dispatch any -*additional* lifecycle notifications when attempting to suspend an app that -is already in the `SLEEPING` state and the remainder of this section does not +*additional* lifecycle notifications when attempting to suspend an app that is +already in the `SLEEPING` state and the remainder of this section does not apply. If an app is already in the `SUSPENDED` state, then it is already suspended and there is no need to do anything else. The platform **MUST NOT** dispatch any -*additional* lifecycle notifications when attempting to suspend an app that -is already in the suspended state and the remainder of this section does not +*additional* lifecycle notifications when attempting to suspend an app that is +already in the suspended state and the remainder of this section does not apply. If the app is not loaded, or is not in the `RUNNING` state, then it cannot be @@ -604,8 +600,7 @@ To resume an app, platforms **MUST** use the following process. If an app is not in the `SUSPENDED` state, then it cannot be resumed and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to resume an app that is -not in the `SUSPENDED` state and the remainder of this section does not -apply. +not in the `SUSPENDED` state and the remainder of this section does not apply. At this point, the app **MUST** be in the `SUSPENDED` state. @@ -657,9 +652,9 @@ To destroy an app, platforms **MUST** use the following process. If an app is not in the `RUNNING` state, then it cannot be destroyed and there is no need to do anything else. The platform **MUST NOT** dispatch any -*additional* lifecycle notifications when attempting to destroy an app that -is not in the `RUNNING` state and the remainder of this section does not need -to happen. +*additional* lifecycle notifications when attempting to destroy an app that is +not in the `RUNNING` state and the remainder of this section does not need to +happen. At this point, the app **MUST** be in the `RUNNING` state. @@ -818,14 +813,14 @@ Lifecycle.provide([ class. See the [Firebolt API -Documentation](https://developer.comcast.com/firebolt/core/sdk/latest/api/) -for details around syntax, etc. +Documentation](https://developer.comcast.com/firebolt/core/sdk/latest/api/) for +details around syntax, etc. ### 7.5. Ready The Lifecycle.ready() API allows an app to notify the platform that it is -initialized and ready to be displayed to the end user. This method **MUST -NOT** be called more than once. +initialized and ready to be displayed to the end user. This method **MUST NOT** +be called more than once. ### 7.6. Close @@ -842,17 +837,17 @@ is requesting to be closed: Platforms generally **SHOULD** respect this call and move the app to the -running state, but there may be edge cases where this is not possible, e.g. -the app is considered to be the default experience for the device, and -closing it would leave no other UX present. +running state, but there may be edge cases where this is not possible, e.g. the +app is considered to be the default experience for the device, and closing it +would leave no other UX present. When the request to close is not respected, the Lifecycle.close() method **MUST** return an error. Platforms **MAY** prioritize apps to be destroyed based on the reason provided. For example, apps closed due to the RCU are less likely to be destroyed since -it may be an accidental RCU press, whereas an explicit user exit is more -likely to be intentional. +it may be an accidental RCU press, whereas an explicit user exit is more likely +to be intentional. ### 7.7. State diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index 7ba84f5ce..70b754e5d 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -117,14 +117,13 @@ the active media pipeline. ## 7. Navigation Typically navigation is handled either when the app is activated, via the -`intent` parameter of the [`activate` -method](./index.md#42-activating-an-app), or by internal input within the -app. +`intent` parameter of the [`activate` method](./index.md#42-activating-an-app), +or by internal input within the app. There are other times when the platform needs to inform an app of a user's -intent to navigate when the app is already `ACTIVE`, e.g. when a voice -command is executed or an RCU sends a reserved key to the platform that would -result in the app taking some action, e.g. going to its home screen. +intent to navigate when the app is already `ACTIVE`, e.g. when a voice command +is executed or an RCU sends a reserved key to the platform that would result in +the app taking some action, e.g. going to its home screen. If the app provides the `xrn:firebolt:capability:presentation:navigation` capability then the platform **MUST** call the `Navigation.navigateTo` method diff --git a/requirements/style-guide-and-template.md b/requirements/style-guide-and-template.md index 78665a6a6..09180e575 100644 --- a/requirements/style-guide-and-template.md +++ b/requirements/style-guide-and-template.md @@ -15,10 +15,10 @@ This document is both a style guide *and* a template for Firebolt Requirements Specifications. The Overview section is a non-normative or informative introduction to the -contents and subject matter of the document. This is included to introduce -the reader to the overall problem, solution, and scope. No formal -requirements will be included here, as it will often be skipped by readers -that are already familiar with the document. +contents and subject matter of the document. This is included to introduce the +reader to the overall problem, solution, and scope. No formal requirements will +be included here, as it will often be skipped by readers that are already +familiar with the document. Overviews can be as long or short as appropriate for the subject matter, and should have a target audience ranging from technical product managers to @@ -51,16 +51,15 @@ only when, they appear in all capitals, as shown here. **NOTE**: This is a simple table of contents. It should include links to all headers in the document, except for the top-level header (i.e. `# Title`). It is recommended to use a Markdown plugin to generate this based on headers -ranging from level two to level six. Delete this note from your actual spec -:) +ranging from level two to level six. Delete this note from your actual spec :) ## 3. Specification Style Requirements Firebolt uses method templates in order to code-generate consistent APIs. For example, methods with the `"property"` tag only need to have the `getter` -editorially defined. The Firebolt OpenRPC tools will auto-generate the -`setter` and `subscriber` as OpenRPC methods with matching types. -Additionally, the Firebolt OpenRPC tools wil then code-generate the getter, -setter, and subscriber as APIs in various languages using templates. +editorially defined. The Firebolt OpenRPC tools will auto-generate the `setter` +and `subscriber` as OpenRPC methods with matching types. Additionally, the +Firebolt OpenRPC tools wil then code-generate the getter, setter, and +subscriber as APIs in various languages using templates. This enables both consistent APIs (all properties have a recongnizable pattern) and consistent SDK implementation, which reduces the code that needs to be @@ -73,8 +72,8 @@ separated with '.' Module and method names, as well as constants **MUST** be in monospace font, e.g. the `Foo` module **MUST** have a `bar` method that returns `true`. Specs should use JavaScript notation for any code examples if the spec is not -targeting another specific language binding, e.g. a spec about Event -listeners in C++ would use C++ syntax. +targeting another specific language binding, e.g. a spec about Event listeners +in C++ would use C++ syntax. String constants and values **MUST** be wrapped in quotes for clarity, e.g. `"Hello World"`. @@ -122,23 +121,23 @@ to have a level of consistency across APIs. If a Firebolt method is specified such that it requires a non-existant template, then a new Requirements Specification **MUST** be written and -referenced by the specification that inspired it. Method templates **MUST** -be designed with re-use in mind. +referenced by the specification that inspired it. Method templates **MUST** be +designed with re-use in mind. ## 4. Example Section A section describes group of closely related features. Many specifications have only one section, however, more complicated specifications may have many. The -first paragraph of a section is typically a non-normative introduction to -that section, and therefor does not contain any formal requirements. +first paragraph of a section is typically a non-normative introduction to that +section, and therefor does not contain any formal requirements. ### 4.1. Example Feature Each feature under a section will have it's own heading. Non-normative introductions to features are not typically needed, as the reader is ready to get into requirements at this point. It is recommended that all Feature headings under each Section contain only sentences or short paragraphs with -formal requirements, e.g. **MUST**, **SHOULD**, **MAY**, **MUST** NOT, -**SHOULD NOT**, etc. These sentences should be separated by blank lines for -readability, e.g.: +formal requirements, e.g. **MUST**, **SHOULD**, **MAY**, **MUST** NOT, **SHOULD +NOT**, etc. These sentences should be separated by blank lines for readability, +e.g.: This requirement **MUST** be satisifed. diff --git a/src/js/github.io/markdown.mjs b/src/js/github.io/markdown.mjs index 4e1da98b9..a7641d3e5 100644 --- a/src/js/github.io/markdown.mjs +++ b/src/js/github.io/markdown.mjs @@ -35,9 +35,19 @@ const processFiles = (docs) => { docs[ref] = data } }) + + // do external links after all local links are fixed + Object.keys(docs).forEach(ref => { + if (ref.endsWith('.md')) { + docs[ref] = fixBrokenExternalLinks(docs[ref], ref, docs) + } + }) } -function fixBrokenLinks(data, ref, files) { +function fixBrokenExternalLinks(data, ref, files) { + return fixBrokenLinks(data, ref, files, true) +} +function fixBrokenLinks(data, ref, files, external=false) { const getSlugs = (data) => { // find all headers @@ -59,13 +69,16 @@ function fixBrokenLinks(data, ref, files) { links && links.map(l => l.slice(2, -1)).forEach(link => { if (!slugs.find(s => s === link)) { - const best = slugs.find(s => s.match(new RegExp(link.replace(/^\#[0-9]+/, '#[0-9]+')))) || slugs.find(s => s.startsWith(link.split('-')[0] + '-')) - if (best) { - console.log('Fixing broken link: (' + link + ') -> (' + best + ')') - data = data.replace('](' + link + ')', '](' + best + ')') + // fix local links + if (!external) { + const best = slugs.find(s => s.match(new RegExp(link.replace(/^\#[0-9]+/, '#[0-9]+')))) || slugs.find(s => s.startsWith(link.split('-')[0] + '-')) + if (best) { + console.log('Fixing broken link: (' + link + ') -> (' + best + ')') + data = data.replace('](' + link + ')', '](' + best + ')') + } } - // TODO: fix bad slugs in links to other files - else if (link.match(/[^\)]+?\#[^\)]*?/gms)) { + // fix bad slugs in links to other files + else if (external && link.match(/[^\)]+?\#[^\)]*?/gms)) { // external const [file, slug] = link.split('#') const fileRef = path.join(path.dirname(ref), file) @@ -127,21 +140,33 @@ function wrapText(data) { } } - line.split(/\s+/).forEach(word => { + let first = true + line.split(/\s+/).filter(word => word).forEach((word, i, words) => { if (word.match(block_regex)) { throw "Found > in line: " + line } + + if (i === 0) { + console.error(`First word of line: ${word}`) + } + if (word && !word.match(/^\s+$/)) { let len = word.length + 1 // .replace(/\(.*?\)/g, '') - if (width + len > maximum) { + if (len > maximum && width === (quote ? 2 : 0)) { + buffer += (quote ? '> ' : '') + word + ' ' + width = len + (quote ? 2 : 0) + } + else if (width + len > maximum) { buffer += '\n' + (quote ? '> ' : '') + word + ' ' - width = len + 2 + width = len + (quote ? 2 : 0) +// !first && (first = true) } else { buffer += word + ' ' width += len } } + first = false }) } }) From 06a0f40938a935c3828f0ec02aedbca996e3a34f Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Mon, 30 Oct 2023 09:47:56 -0400 Subject: [PATCH 24/43] fix: Cleaned up Presentation spec --- .../specifications/lifecycle/index.md | 93 +++++---- .../specifications/lifecycle/presentation.md | 195 ++++++++++-------- src/js/github.io/markdown.mjs | 4 - 3 files changed, 156 insertions(+), 136 deletions(-) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 091cbe377..5ae71cb67 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -56,24 +56,27 @@ CPU cycles, which allows the platform to optimise memory consumption. *Waking* an app refers to copying a Sleeping app back into the memory space of a compatible process so that it resumes where it left off. + +## 2. Table of Contents - [1. Overview](#1-overview) -- [2. Lifecycle States](#2-lifecycle-states) - - [2.1. Initializing](#21-initializing) - - [2.2. Running](#22-running) - - [2.3. Active](#23-active) - - [2.4. Suspended](#24-suspended) - - [2.5. Sleeping](#25-sleeping) -- [3. Getting the current state](#3-getting-the-current-state) -- [4. Lifecycle State Transitions](#4-lifecycle-state-transitions) - - [4.1. Initializing an app](#41-initializing-an-app) - - [4.2. Activating an app](#42-activating-an-app) - - [4.3. Deactivating an app](#43-deactivating-an-app) - - [4.4. Suspending an app](#44-suspending-an-app) - - [4.5. Resuming an app](#45-resuming-an-app) - - [4.6. Putting an app to sleep](#46-putting-an-app-to-sleep) - - [4.7. Waking an app from sleep](#47-waking-an-app-from-sleep) - - [4.8. Destroying an app](#48-destroying-an-app) - - [4.9. Terminating an app](#49-terminating-an-app) +- [2. Table of Contents](#2-table-of-contents) +- [3. Lifecycle States](#3-lifecycle-states) + - [3.1. Initializing](#31-initializing) + - [3.2. Running](#32-running) + - [3.3. Active](#33-active) + - [3.4. Suspended](#34-suspended) + - [3.5. Sleeping](#35-sleeping) +- [4. Getting the current state](#4-getting-the-current-state) +- [5. Lifecycle State Transitions](#5-lifecycle-state-transitions) + - [5.1. Initializing an app](#51-initializing-an-app) + - [5.2. Activating an app](#52-activating-an-app) + - [5.3. Deactivating an app](#53-deactivating-an-app) + - [5.4. Suspending an app](#54-suspending-an-app) + - [5.5. Resuming an app](#55-resuming-an-app) + - [5.6. Putting an app to sleep](#56-putting-an-app-to-sleep) + - [5.7. Waking an app from sleep](#57-waking-an-app-from-sleep) + - [5.8. Destroying an app](#58-destroying-an-app) + - [5.9. Terminating an app](#59-terminating-an-app) - [6. Create Parameters](#6-create-parameters) - [7. Core SDK APIs](#7-core-sdk-apis) - [7.1. Application Interface](#71-application-interface) @@ -86,7 +89,7 @@ a compatible process so that it resumes where it left off. - [8. Lifecycle Configuration](#8-lifecycle-configuration) -## 2. Lifecycle States +## 3. Lifecycle States Firebolt platforms **MUST** support running one or more apps concurrently. The platform **MUST** manage transition of apps from state to state. @@ -95,7 +98,7 @@ A Firebolt app, once running, **MUST** be in one of several states and **MUST NOT** be in more than one state at a time. As an app changes states the platform will invoke specific app-provided -transition methods, see [Transitions](#4-lifecycle-state-transitions), for more +transition methods, see [Transitions](#5-lifecycle-state-transitions), for more on this. ![Lifecycle States](../../images/specifications/lifecycle/lifecycle-states.png) @@ -121,7 +124,7 @@ on this. | ✔ | Normal access | | ? | Unknown | -### 2.1. Initializing +### 3.1. Initializing This is the initial state an app exists from the moment it starts receiving CPU @@ -141,8 +144,8 @@ Apps in this state **MUST NOT** have access to the audio-video decoder. Apps in this state **MUST NOT** use the media pipeline. -See [Initializing an app](#41-initializing-an-app) for more information. -### 2.2. Running +See [Initializing an app](#51-initializing-an-app) for more information. +### 3.2. Running This state allows an app to be running and ready to go, but not actively part @@ -164,14 +167,14 @@ Apps in this state **MUST NOT** have access to the audio-video decoder. Apps in this state **MUST NOT** use the media pipeline and the platform **MUST** tear down any Media Pipeline sessions associated with this app. -### 2.3. Active +### 3.3. Active This state allows an app to be presented as part of the user-perceptible experience. To determine if an app is the *primary* experience, e.g. fullscreen, etc., see -[Presentation](./presentation.md#3-display). +[Presentation](./presentation.md#4-display). It is a platform decision as to how many apps may be in this state at once. @@ -194,7 +197,7 @@ Apps in this state **SHOULD** reduce memory usage, if possible. When an app transitions to this state, the platform **MUST** dispatch the `Lifecycle.onStateChanged` notification with the current state. -### 2.4. Suspended +### 3.4. Suspended This state allows an app to remain in memory and consume fewer resources. @@ -216,7 +219,7 @@ Apps in this state **SHOULD** further reduce memory usage (more so than in the **TODO**:: add all the transition pre-requisites, e.g. Apps **MUST** only enter this state from the `SUSPENDED` state, via the `sleep()` interface. -### 2.5. Sleeping +### 3.5. Sleeping This state allows an app to be copied from memory to local storage and then @@ -242,14 +245,14 @@ If a platform supports copying sleeping apps memory out of RAM then: > > Finally, the app and its container **MAY** be removed from memory and have > other resources released as well. -## 3. Getting the current state +## 4. Getting the current state The Lifecycle module **MUST** provide a `state` property API that returns the current lifecycle state of the app. If an app is in a transtition from one state to another, then it **MUST** be considered in the state *before* the transition until such time as the app's -implementation of the [transition](#4-lifecycle-state-transitions) has returned +implementation of the [transition](#5-lifecycle-state-transitions) has returned and the platfrom has finshed the transition. The `state` API **MUST** have a corresponding `onStateChanged` notification. @@ -264,7 +267,7 @@ The `state` API must have one of the following values: Note that the `onStateChanged` notification **MUST** never be dispatched for the `Sleeping` state since it would not be received anyway. -## 4. Lifecycle State Transitions +## 5. Lifecycle State Transitions There are several state transitions where the app and the platform need to interact to ensure the transition goes smoothly. @@ -338,7 +341,7 @@ By providing an implementation of the `xrn:firebolt:capability:lifecycle:activatible` interface, an app can influence how resources are managed during these state transitions. See [Activity Interface](#82-activity-interface) for more info. -### 4.1. Initializing an app +### 5.1. Initializing an app Once an app is loaded it **MUST** be initialized immediately. @@ -394,7 +397,7 @@ Example Launch Parameters: Once the `create` method returns the app **MUST** be immediately transitioned to the `RUNNING` state. -### 4.2. Activating an app +### 5.2. Activating an app Activating an app transitions it to the `ACTIVE` state so that it becomes part @@ -418,9 +421,9 @@ If the app is not loaded, then the platform **MUST** [load](undefined) it first. If the app is not initialized, the platform **MUST** -[initialize](#41-initializing-an-app) it first. +[initialize](#51-initializing-an-app) it first. -If the app is suspended, then it **MUST** be [resumed](#45-resuming-an-app) +If the app is suspended, then it **MUST** be [resumed](#55-resuming-an-app) first. At this point, the app **MUST** be in the `RUNNING` state. @@ -468,7 +471,7 @@ the user with content that fulfills the `intent` without additional loading screens in the app's UX. **TODO**: Discuss ^^ -### 4.3. Deactivating an app +### 5.3. Deactivating an app Closing an app transitions it to the `RUNNING` state, so that it is no longer @@ -502,13 +505,13 @@ complete, and the remainder of this section does not apply. If an app is already performing an `activate()` transition, the platform **MUST** wait for the activate call to succeed or fail and then skip the -remaining [activation steps](#42-activating-an-app). +remaining [activation steps](#52-activating-an-app). -If an app is currently [initializing](#41-initializing-an-app), the platform +If an app is currently [initializing](#51-initializing-an-app), the platform **MUST** wait for initialization to succeed or fail and then skip any activation that may have been pending. -If an app is currently in a [destroy](#48-destroying-an-app) transition then +If an app is currently in a [destroy](#58-destroying-an-app) transition then the app cannot be closed and the platform **MUST NOT** close it, and the remainder of this section does not apply. @@ -534,7 +537,7 @@ decoders. The platform **MAY** begin to transition the app out of view as soon as `deactivate()` is called. -### 4.4. Suspending an app +### 5.4. Suspending an app Suspending an app transitions it to the `SUSPENDED` state, where it is no @@ -579,14 +582,14 @@ Since every app **MUST** provide the > moved to the `SUSPENDED` state. > > If the app times out or makes a `suspendError` call, then the app **MUST** be -> [destroyed](#48-destroying-an-app). +> [destroyed](#58-destroying-an-app). During the `suspend()` transition, the app: > **MUST** deallocate any graphics surface. > > **SHOULD** reduce memory usage, if possible. -### 4.5. Resuming an app +### 5.5. Resuming an app Resuming an app allows it to reallocate graphics composition and reload any @@ -623,7 +626,7 @@ terminated. During the `resume()` transition, apps **SHOULD** reallocate graphics composition and other necessary resources. -### 4.6. Putting an app to sleep +### 5.6. Putting an app to sleep TBD @@ -632,14 +635,14 @@ Firebolt apps that have permission to use the `Sleepable.sleep()`. TODO: if you don't call provide, we won't do this. -### 4.7. Waking an app from sleep +### 5.7. Waking an app from sleep TBD Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement `Sleepable.wake()`. -### 4.8. Destroying an app +### 5.8. Destroying an app Destroying an app transitions it out of memory, so that it is no longer using @@ -671,7 +674,7 @@ Since every app **MUST** provide the > > If the app times out or makes an `destroyError` call, then the app **MUST** > be terminated. -### 4.9. Terminating an app +### 5.9. Terminating an app Terminating an app removes it from memory without dispatching any state @@ -684,7 +687,7 @@ Terminating an app results in removing it from memory and all resources held by the app and it's container being freed up. Platforms **MAY** terminate an app when needed but **SHOULD NOT** do this in -place of graceful [destroying](#48-destroying-an-app). +place of graceful [destroying](#58-destroying-an-app). ## 6. Create Parameters The `CreateParameters` type is an object with the following properties: diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index 70b754e5d..95add4178 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -1,7 +1,5 @@ # App Presentation -need to write this up... - Document Status: Working Draft See [Firebolt Requirements Governance](../../governance.md) for more info. @@ -18,22 +16,37 @@ See [Firebolt Requirements Governance](../../governance.md) for more info. ## 1. Overview -TBD... +This document describes the requirements that Firebolt platforms and Firebolt +applications must fulfill when managing App Presention. *App Presentation* +refers to the display, focus, and navigational aspects of an App. + +The *display* of an app refers to it its visibility and size. + +Whether an app has an *overlay* refers to any other apps or UX being presented +on top of the app. + +Apps that are presented to users by the platform may receive *navigation* +intents, which are like deep links from the platform. + + +## 2. Table of Contents - [1. Overview](#1-overview) -- [2. Focus](#2-focus) -- [3. Display](#3-display) - - [3.1. Display vs Lifecycle](#31-display-vs-lifecycle) -- [4. Overlay](#4-overlay) - - [4.1. 4.1 Overlay vs Focus](#41-41-overlay-vs-focus) -- [5. Background Audio](#5-background-audio) -- [6. Picture-in-Picture Video](#6-picture-in-picture-video) +- [2. Table of Contents](#2-table-of-contents-) +- [3. Focus](#3-focus) +- [4. Display](#4-display) + - [4.1. Display vs Lifecycle](#41-display-vs-lifecycle) +- [5. Loading Screen](#5-loading-screen) + - [5.1. Platform-provided Loading Screen](#51-platform-provided-loading-screen) + - [5.2. App-provided Loading Screen](#52-app-provided-loading-screen) + - [5.3. When to use a loading screen](#53-when-to-use-a-loading-screen) +- [6. Overlay](#6-overlay) + - [6.1. 4.1 Overlay vs Focus](#61-41-overlay-vs-focus) - [7. Navigation](#7-navigation) -- [8. Platform-provided Loading Screen](#8-platform-provided-loading-screen) -- [9. App-provided Loading Screen](#9-app-provided-loading-screen) -- [10. When to use a loading screen](#10-when-to-use-a-loading-screen) +- [8. Background Audio](#8-background-audio) +- [9. Picture-in-Picture Video](#9-picture-in-picture-video) -## 2. Focus +## 3. Focus The `Presentation` module **MUST** have a `focus` boolean property that returns whether or not the app has input, e.g. RCU, focus. @@ -42,7 +55,7 @@ whether or not the app has input, e.g. RCU, focus. As a property, this API also has an `onFocusChanged` notification. -## 3. Display +## 4. Display The `Presentation` module **MUST** have a `display` string property that returns one of the following values: @@ -59,7 +72,7 @@ returns one of the following values: **TODO**: an app could be offscreen & scaled. If a scaled or thumbnailed app goes offscreen, it's now offscreen. -### 3.1. Display vs Lifecycle +### 4.1. Display vs Lifecycle Each Lifecycle state only supports certain display states: | Lifecycle | Supported Displays | @@ -71,10 +84,66 @@ Each Lifecycle state only supports certain display states: | `sleeping` | `none`, `loading` | -See [Picture-in-picture](#6-picture-in-picture-video) and [Background -Audio](#5-background-audio) for exceptions to this. +See [Picture-in-picture](#9-picture-in-picture-video) and [Background +Audio](#8-background-audio) for exceptions to this. + +## 5. Loading Screen +In order to manage user expectations, Firebolt platforms **MAY** display +loading screens to end users when an app is going to be activated. Loading +Screens may be rendered either by the platform, the app, or both, depending on +Capability configuration. + +### 5.1. Platform-provided Loading Screen + +Most apps will leverage a platform-provided loading screen. + +If an app provides the `xrn:firebolt:capability:presentation:loading-screen` +capability, then the platform **MAY** use the app-provided loading screen, in +which case, the rest of the section does not apply. + +The loading screen **SHOULD** include a loading image referenced in the app's +manifest and cached on the device. + +The loading screen **MUST** be displayed when the user attempts to launch the +app. + +The loading screen **MUST** stay displayed until the app becomes active, or +launching is cancelled. + +The presentation state of the app **MUST** be `LOADING` for the entire time the +loading screen is displayed. + +See [Lifecycle](./index.md) for more info on launching. -## 4. Overlay +### 5.2. App-provided Loading Screen + +If an app provides the `xrn:firebolt:capability:presentation:loading-screen` +capability, then the platform **MAY** invoke this capability in some +situations. + +If the app is in the [Initializing](./index.md#51-initializing-an-app) state or +the create transition w/ `preload: false` then it **MUST** be made visible at +the end of the `Application.create()` transition. + +If the app is in any other state or transition, then it **MUST** be made +visible at the beginning of the `activate()` transition. + +The presentation state of the app **SHOULD NOT** be `none` at any time during +the `activate()` transition. + +See [Lifecycle](./index.md) for more info on loading and activating apps. + +### 5.3. When to use a loading screen + +It is up to each platform to determine when a loading screen is useful. + +Platforms **SHOULD** consider displaying a loading screen for: + +- app cold launch +- app wake from sleep + + +## 6. Overlay The `Presentation` module **MUST** have an `overlay` string property that returns one of the following values: @@ -84,41 +153,17 @@ returns one of the following values: | `blocking` | There is a significantly sized UX covering a majority of the app. | | `none` | There is nothing covering the app. | -### 4.1. 4.1 Overlay vs Focus +### 6.1. 4.1 Overlay vs Focus | Focus | Overlay | | ----- | ----------------------- | | true | none | | false | partial, blocking, none | -## 5. Background Audio - -When an app has this capability, it **MAY** be put into the `none` display -state while in the `active` Lifecycle state. - -If an app has the `xrn:firebolt:capability:media:background-audio`, then it can -keep playing audio/video when the app is in the `none` display state and the -audio will be played for the user. - -TODO: do we want background apps to have a gfx surface? that means they'd be in -'offscreen' display and using more memory TODO: we probably want to support -both modes here. -## 6. Picture-in-Picture Video - -When an app has the `xrn:firebolt:capability:media:picture-in-picture` -capability, it **MAY** be put into the `none` display state while in the -`active` Lifecycle state. - -If an app has the `xrn:firebolt:capability:media:picture-in-picture`, then it -can keep playing audio/video when the app is in the `none` display state and -the audio & video will be presented to the user in bounding box determined by -the platform. Note that this does not include the entire UX of the app, just -the active media pipeline. - ## 7. Navigation Typically navigation is handled either when the app is activated, via the -`intent` parameter of the [`activate` method](./index.md#42-activating-an-app), -or by internal input within the app. +`intent` parameter of the [`activate()` +method](./index.md#52-activating-an-app), or by internal input within the app. There are other times when the platform needs to inform an app of a user's intent to navigate when the app is already `ACTIVE`, e.g. when a voice command @@ -166,48 +211,24 @@ To invoke an app's `navigateTo` provider API the platform **MUST**: > `intent` in some other way -## 8. Platform-provided Loading Screen - -Most apps will leverage a platform-provided loading screen. - -If an app provides the `xrn:firebolt:capability:presentation:loading-screen` -capability, then the platform **MAY** use the app-provided loading screen, in -which case, the rest of the section does not apply. - -The loading screen **SHOULD** include a loading image referenced in the app's -manifest and cached on the device. - -The loading screen **MUST** be displayed when the user attempts to launch the -app. - -The loading screen **MUST** stay displayed until the app becomes active, or -launching is cancelled. - -The presentation state of the app **MUST** be `LOADING` for the entire time the -loading screen is displayed. - -See [Lifecycle](./index.md) for more info on launching. -## 9. App-provided Loading Screen - -If an app provides the `xrn:firebolt:capability:presentation:loading-screen` -capability, then the platform **MAY** invoke this capability in some -situations. - -If the app is being created w/ preload: false then: - -Apps that provide the loading screen capability **MUST** be made visible at the -end of the `Application.create()` transition, rather than at the end of the -activate transition. - -**TODO**: if an app is in the running state already, show it at the beginning -of `activate()` +## 8. Background Audio +If an app has the `xrn:firebolt:capability:media:background-audio`, then it can +keep playing audio/video when the app is in the `none` display state and the +audio will be played for the user. -The presentation state of the app **SHOULD NOT** be `none` at any time during -the `activate()` transition. +When an app has this capability, it **MAY** be put into the `none` display +state while in the `active` Lifecycle state. -See [Lifecycle](./index.md) for more info on loading and activating apps. +TODO: do we want background apps to have a gfx surface? that means they'd be in +'offscreen' display and using more memory TODO: we probably want to support +both modes here. -## 10. When to use a loading screen +## 9. Picture-in-Picture Video +If an app has the `xrn:firebolt:capability:media:picture-in-picture`, then it +can keep playing audio/video when the app is in the `none` display state and +the audio & video will be presented to the user in bounding box determined by +the platform. Note that this does not include the entire UX of the app, just +the active media pipeline. -- cold launch -- wake from sleep +When an app has this capability, it **MAY** be put into the `none` display +state while in the `active` Lifecycle state. diff --git a/src/js/github.io/markdown.mjs b/src/js/github.io/markdown.mjs index a7641d3e5..b0e78a06e 100644 --- a/src/js/github.io/markdown.mjs +++ b/src/js/github.io/markdown.mjs @@ -145,10 +145,6 @@ function wrapText(data) { if (word.match(block_regex)) { throw "Found > in line: " + line } - - if (i === 0) { - console.error(`First word of line: ${word}`) - } if (word && !word.match(/^\s+$/)) { let len = word.length + 1 // .replace(/\(.*?\)/g, '') From 17b0b2f9eff05a9353905cafe4c229c69fc13793 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Mon, 30 Oct 2023 09:48:31 -0400 Subject: [PATCH 25/43] Update presentation.md --- requirements/specifications/lifecycle/presentation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index 95add4178..8105c5b31 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -29,9 +29,9 @@ Apps that are presented to users by the platform may receive *navigation* intents, which are like deep links from the platform. -## 2. Table of Contents +## 2. Table of Contents - [1. Overview](#1-overview) -- [2. Table of Contents](#2-table-of-contents-) +- [2. Table of Contents](#2-table-of-contents) - [3. Focus](#3-focus) - [4. Display](#4-display) - [4.1. Display vs Lifecycle](#41-display-vs-lifecycle) From 0feb4d6d853a6255e5a245f86ad31a8a01bef20f Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Mon, 30 Oct 2023 12:44:38 -0400 Subject: [PATCH 26/43] fix: Latest WG edits --- .../specifications/lifecycle/index.md | 8 +++-- .../specifications/lifecycle/presentation.md | 33 ++++++++++++------- 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 5ae71cb67..69feb8568 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -145,8 +145,8 @@ Apps in this state **MUST NOT** have access to the audio-video decoder. Apps in this state **MUST NOT** use the media pipeline. See [Initializing an app](#51-initializing-an-app) for more information. -### 3.2. Running +### 3.2. Running This state allows an app to be running and ready to go, but not actively part of the user-perceptible experience. @@ -167,8 +167,8 @@ Apps in this state **MUST NOT** have access to the audio-video decoder. Apps in this state **MUST NOT** use the media pipeline and the platform **MUST** tear down any Media Pipeline sessions associated with this app. -### 3.3. Active +### 3.3. Active This state allows an app to be presented as part of the user-perceptible experience. @@ -626,6 +626,7 @@ terminated. During the `resume()` transition, apps **SHOULD** reallocate graphics composition and other necessary resources. + ### 5.6. Putting an app to sleep TBD @@ -691,13 +692,14 @@ place of graceful [destroying](#58-destroying-an-app). ## 6. Create Parameters The `CreateParameters` type is an object with the following properties: + ```typescript type CreateParameters = { preload: boolean, preloadReason?: "boot" | "restart" | "user" } - ``` + ## 7. Core SDK APIs diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index 8105c5b31..bf5ab6395 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -40,7 +40,7 @@ intents, which are like deep links from the platform. - [5.2. App-provided Loading Screen](#52-app-provided-loading-screen) - [5.3. When to use a loading screen](#53-when-to-use-a-loading-screen) - [6. Overlay](#6-overlay) - - [6.1. 4.1 Overlay vs Focus](#61-41-overlay-vs-focus) + - [6.1. Overlay vs Focus](#61-overlay-vs-focus) - [7. Navigation](#7-navigation) - [8. Background Audio](#8-background-audio) - [9. Picture-in-Picture Video](#9-picture-in-picture-video) @@ -75,6 +75,7 @@ goes offscreen, it's now offscreen. ### 4.1. Display vs Lifecycle Each Lifecycle state only supports certain display states: + | Lifecycle | Supported Displays | |----------------|--------------------------------------------------| | `initializing` | `none`, `loading` | @@ -83,7 +84,6 @@ Each Lifecycle state only supports certain display states: | `suspended` | `none`, `loading` | | `sleeping` | `none`, `loading` | - See [Picture-in-picture](#9-picture-in-picture-video) and [Background Audio](#8-background-audio) for exceptions to this. @@ -93,6 +93,12 @@ loading screens to end users when an app is going to be activated. Loading Screens may be rendered either by the platform, the app, or both, depending on Capability configuration. +Proposal: + +If an app has the `xrn:firebolt:capability:presentation:loading-screen` capability, it **MAY** be made visible any time from the beginning of activate() transition and **MUST** be made visible no later than the end. + +If an app does not have the `xrn:firebolt:capability:presentation:loading-screen` capability, it **MUST** be made visible at the end of the activate() transition. + ### 5.1. Platform-provided Loading Screen Most apps will leverage a platform-provided loading screen. @@ -121,12 +127,14 @@ If an app provides the `xrn:firebolt:capability:presentation:loading-screen` capability, then the platform **MAY** invoke this capability in some situations. -If the app is in the [Initializing](./index.md#51-initializing-an-app) state or -the create transition w/ `preload: false` then it **MUST** be made visible at -the end of the `Application.create()` transition. +**TODO**: this section only applies for app-provided loading screens... -If the app is in any other state or transition, then it **MUST** be made -visible at the beginning of the `activate()` transition. +If the app is being explicitly launched by the user then it **MAY** be made visible either: + +- as soon as the platform detects changes to the graphics plane +- at the beginning of the activate() transition + +In this case, it **MUST** be made visible no later than the end of the activate transition. The presentation state of the app **SHOULD NOT** be `none` at any time during the `activate()` transition. @@ -142,18 +150,19 @@ Platforms **SHOULD** consider displaying a loading screen for: - app cold launch - app wake from sleep +TODO: define all the various happy path & edge cases for this. ## 6. Overlay - The `Presentation` module **MUST** have an `overlay` string property that -returns one of the following values: +informs the app when a focus-consuming overlay is present. + | Value | Description | |------------|----------------------------------------------------------------------------| -| `partial` | There is a vertical sidebar covering less than 33% of the app on one side. | -| `blocking` | There is a significantly sized UX covering a majority of the app. | +| `partial` | There is a overlay partially covering the app such that the content is still mostly viewable. | +| `blocking` | There is a blocking overlay covering a majority of the app. | | `none` | There is nothing covering the app. | -### 6.1. 4.1 Overlay vs Focus +### 6.1. Overlay vs Focus | Focus | Overlay | | ----- | ----------------------- | From 1608784a64319650c9cd1e51b047c2b54ac486fd Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Mon, 30 Oct 2023 14:35:54 -0400 Subject: [PATCH 27/43] fix: Formatting --- .../specifications/lifecycle/presentation.md | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index bf5ab6395..67a78ed16 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -93,11 +93,15 @@ loading screens to end users when an app is going to be activated. Loading Screens may be rendered either by the platform, the app, or both, depending on Capability configuration. -Proposal: +Proposal: -If an app has the `xrn:firebolt:capability:presentation:loading-screen` capability, it **MAY** be made visible any time from the beginning of activate() transition and **MUST** be made visible no later than the end. +If an app has the `xrn:firebolt:capability:presentation:loading-screen` +capability, it **MAY** be made visible any time from the beginning of +activate() transition and **MUST** be made visible no later than the end. -If an app does not have the `xrn:firebolt:capability:presentation:loading-screen` capability, it **MUST** be made visible at the end of the activate() transition. +If an app does not have the +`xrn:firebolt:capability:presentation:loading-screen` capability, it **MUST** +be made visible at the end of the activate() transition. ### 5.1. Platform-provided Loading Screen @@ -127,14 +131,16 @@ If an app provides the `xrn:firebolt:capability:presentation:loading-screen` capability, then the platform **MAY** invoke this capability in some situations. -**TODO**: this section only applies for app-provided loading screens... +**TODO**: this section only applies for app-provided loading screens... -If the app is being explicitly launched by the user then it **MAY** be made visible either: +If the app is being explicitly launched by the user then it **MAY** be made +visible either: - as soon as the platform detects changes to the graphics plane - at the beginning of the activate() transition -In this case, it **MUST** be made visible no later than the end of the activate transition. +In this case, it **MUST** be made visible no later than the end of the activate +transition. The presentation state of the app **SHOULD NOT** be `none` at any time during the `activate()` transition. @@ -150,17 +156,17 @@ Platforms **SHOULD** consider displaying a loading screen for: - app cold launch - app wake from sleep -TODO: define all the various happy path & edge cases for this. +TODO: define all the various happy path & edge cases for this. ## 6. Overlay The `Presentation` module **MUST** have an `overlay` string property that -informs the app when a focus-consuming overlay is present. +informs the app when a focus-consuming overlay is present. -| Value | Description | -|------------|----------------------------------------------------------------------------| +| Value | Description | +|------------|-----------------------------------------------------------------------------------------------| | `partial` | There is a overlay partially covering the app such that the content is still mostly viewable. | -| `blocking` | There is a blocking overlay covering a majority of the app. | -| `none` | There is nothing covering the app. | +| `blocking` | There is a blocking overlay covering a majority of the app. | +| `none` | There is nothing covering the app. | ### 6.1. Overlay vs Focus From ab21aac7e96304a239bbda78b62ee19ec54137ff Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Tue, 31 Oct 2023 10:55:24 -0400 Subject: [PATCH 28/43] fix: Updates form today's WG --- .../specifications/lifecycle/index.md | 1 + .../specifications/lifecycle/presentation.md | 68 ++++++++++++------- 2 files changed, 44 insertions(+), 25 deletions(-) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 69feb8568..1b64badd1 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -3,6 +3,7 @@ Document Status: Working Draft See [Firebolt Requirements Governance](../../governance.md) for more info. + | Contributor | Organization | | ------------------------- | ------------ | | Andrew Bennett | Sky | diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index 67a78ed16..f4163db3e 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -3,15 +3,18 @@ Document Status: Working Draft See [Firebolt Requirements Governance](../../governance.md) for more info. + | Contributor | Organization | | ------------------------- | ------------ | | Andrew Bennett | Sky | | Cody Bonney | Charter | | Bart Catrysse | Liberty | | Tim Dibben | Sky | +| Piotr Kobzda | Liberty | | Jeremy LaCivita | Comcast | | Ramprasad Lakshminarayana | Sky | | Kevin Pearson | Comcast | +| Jan Pedersen | Sky | | Peter Yu | Comcast | ## 1. Overview @@ -93,35 +96,45 @@ loading screens to end users when an app is going to be activated. Loading Screens may be rendered either by the platform, the app, or both, depending on Capability configuration. +Firebolt platforms **MAY** decide when an app activation warrents a loading +screen, for example when an app will be initialized or woken from sleep before +activation. + Proposal: If an app has the `xrn:firebolt:capability:presentation:loading-screen` -capability, it **MAY** be made visible any time from the beginning of -activate() transition and **MUST** be made visible no later than the end. +capability and the platform chooses to utilize the app's loading screen, the +app **MAY** be made visible any time from the beginning of activate() +transition and **MUST** be made visible no later than the end. If an app does not have the -`xrn:firebolt:capability:presentation:loading-screen` capability, it **MUST** -be made visible at the end of the activate() transition. +`xrn:firebolt:capability:presentation:loading-screen` capability or the +platform decides not to use the app's loading screen, the app **MUST** be made +visible at the end of the activate() transition. ### 5.1. Platform-provided Loading Screen -Most apps will leverage a platform-provided loading screen. - If an app provides the `xrn:firebolt:capability:presentation:loading-screen` capability, then the platform **MAY** use the app-provided loading screen, in which case, the rest of the section does not apply. -The loading screen **SHOULD** include a loading image referenced in the app's -manifest and cached on the device. - -The loading screen **MUST** be displayed when the user attempts to launch the -app. +If the platform determines that a platform loading screen will be displayed, +then: -The loading screen **MUST** stay displayed until the app becomes active, or -launching is cancelled. - -The presentation state of the app **MUST** be `LOADING` for the entire time the -loading screen is displayed. +> The loading screen **SHOULD** include a loading image referenced in the app's +> manifest and cached on the device. +> +> The loading screen **MUST** be displayed when the user attempts to launch the +> app. +> +> The loading screen **MUST** stay displayed until the app becomes active, or +> launching is cancelled. +> +> The presentation state of the app **MUST** be `LOADING` for the entire time +> the loading screen is displayed. +> +> Each Firebolt platform **MAY** define what "load screen" means in these +> requirements. See [Lifecycle](./index.md) for more info on launching. @@ -131,16 +144,21 @@ If an app provides the `xrn:firebolt:capability:presentation:loading-screen` capability, then the platform **MAY** invoke this capability in some situations. -**TODO**: this section only applies for app-provided loading screens... +If the platform determines that an app loading screen will be displayed, then: -If the app is being explicitly launched by the user then it **MAY** be made -visible either: - -- as soon as the platform detects changes to the graphics plane -- at the beginning of the activate() transition - -In this case, it **MUST** be made visible no later than the end of the activate -transition. +> The platform provided loading screen **MAY** be displayed first. +> +> If the platform provided loading screen is displayed then the app's +> presentation state should be `loading`. +> +> The app **MAY** be made visible at the beginning of the activate transition. +> +> The app **MAY** be made visible at a later point during the activate +> transition based on platform-specific requirements, e.g. detecting that the +> app's graphics surface has been utilized. +> +> The app **MUST** be made visible no later than the end of the activate +> transition. The presentation state of the app **SHOULD NOT** be `none` at any time during the `activate()` transition. From c64aab6b77d508b1f4f655d5f4045a7f6190fc33 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Fri, 8 Dec 2023 13:42:03 -0500 Subject: [PATCH 29/43] fix: latest udpates --- .../specifications/lifecycle/index.md | 70 +++++---- .../specifications/lifecycle/presentation.md | 134 +++++++++--------- 2 files changed, 98 insertions(+), 106 deletions(-) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 1b64badd1..72922bc9d 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -1,11 +1,11 @@ # App Lifecycle Management -Document Status: Working Draft +Document Status: Candidate Specification See [Firebolt Requirements Governance](../../governance.md) for more info. | Contributor | Organization | -| ------------------------- | ------------ | +|---------------------------|--------------| | Andrew Bennett | Sky | | Cody Bonney | Charter | | Bart Catrysse | Liberty | @@ -36,7 +36,7 @@ first, if needed. For details on presentation, see [App Presentation](./presentation.md). *Closing* an app refers to the process of getting an app out of a state where -it is the primary user experience (e.g not visible, not audible, and not +it is the primary user experience (e.g. not visible, not audible, and not responding to input). This **does not** involve *destroying* the app. *Suspending* an app refers to reducing the app's memory and CPU usage, and @@ -81,7 +81,7 @@ a compatible process so that it resumes where it left off. - [6. Create Parameters](#6-create-parameters) - [7. Core SDK APIs](#7-core-sdk-apis) - [7.1. Application Interface](#71-application-interface) - - [7.2. Activatible Interface](#72-activatible-interface) + - [7.2. Activatable Interface](#72-activatable-interface) - [7.3. Sleepable Interface](#73-sleepable-interface) - [7.4. Example App](#74-example-app) - [7.5. Ready](#75-ready) @@ -92,8 +92,8 @@ a compatible process so that it resumes where it left off. ## 3. Lifecycle States -Firebolt platforms **MUST** support running one or more apps concurrently. The -platform **MUST** manage transition of apps from state to state. +Firebolt platforms **MUST** support running one or more apps concurrently. The +platform **MUST** manage transition of apps from state to state. A Firebolt app, once running, **MUST** be in one of several states and **MUST NOT** be in more than one state at a time. @@ -127,7 +127,6 @@ on this. ### 3.1. Initializing - This is the initial state an app exists from the moment it starts receiving CPU cycles. @@ -198,8 +197,8 @@ Apps in this state **SHOULD** reduce memory usage, if possible. When an app transitions to this state, the platform **MUST** dispatch the `Lifecycle.onStateChanged` notification with the current state. -### 3.4. Suspended +### 3.4. Suspended This state allows an app to remain in memory and consume fewer resources. @@ -220,8 +219,8 @@ Apps in this state **SHOULD** further reduce memory usage (more so than in the **TODO**:: add all the transition pre-requisites, e.g. Apps **MUST** only enter this state from the `SUSPENDED` state, via the `sleep()` interface. -### 3.5. Sleeping +### 3.5. Sleeping This state allows an app to be copied from memory to local storage and then terminated to save resources. Subsequently, the app may be copied back into @@ -246,6 +245,7 @@ If a platform supports copying sleeping apps memory out of RAM then: > > Finally, the app and its container **MAY** be removed from memory and have > other resources released as well. + ## 4. Getting the current state The Lifecycle module **MUST** provide a `state` property API that returns the @@ -268,6 +268,7 @@ The `state` API must have one of the following values: Note that the `onStateChanged` notification **MUST** never be dispatched for the `Sleeping` state since it would not be received anyway. + ## 5. Lifecycle State Transitions There are several state transitions where the app and the platform need to @@ -278,6 +279,7 @@ States](../../images/specifications/lifecycle/lifecycle-transitions.png) As an app changes states the platform will invoke specific app-provided transition methods from the `Application` interface: + | | Legend | | - | ------------- | | ↓ | Limited | @@ -290,24 +292,22 @@ transition methods from the `Application` interface: | `resume()` | ✔ | ✔ | ✔ | ✔ | | graphics surface reallocated, full memory usage and normal CPU cycles. | | `destroy()` | ✔/↓ | ✔/↓ | ✔ | | | Preprare for the app to be deallocated and removed from execution. CPU & RAM based on previous state. | - If an app implements the `Activity` interface, then the following transitions may be invoked: + | | CPU | RAM | Net | GFX | A/V | Description | |----------------|-----|-----|-----|-----|-----|---------------------------------------------------------------------------| | `activate()` | ✔ | ✔ | ✔ | ✔ | ✔ | App is expected to become a user-perceptible part of the user experience. | | `deactivate()` | ✔ | ✔ | ✔ | ✔ | ✔ | Must remove any user-perceptible activities and deallocate A/V decoders. | - - Finally, if an app implements the `Sleepable` interface, then the following transistions may be invoked. + | | CPU | RAM | Net | GFX | A/V | Description | |-----------|-----|-----|-----|-----|-----|----------------------------------------------------------------------------------------| | `sleep()` | ↓ | ↓ | ✔ | | | Prepare for an extended period with no CPU cycles given to app. | | `wake()` | ↓ | ↓ | ✔ | | | Cleanup after an extended period with no CPU, e.g. reset timers / network connections. | - All of these transition APIs are blocking, and each one has a platform-configurable timeout that specifies how long the app has to fulfill the method. @@ -319,6 +319,7 @@ All Firebolt apps **MUST** implement the `Application` interface, `xrn:firebolt:capability:lifecycle:application`. This includes: + - `Application.create()` - `Application.suspend()` - `Application.resume()` @@ -331,17 +332,19 @@ how resources are managed during these state transitions. See [Application Interface](#71-application-interface) for more info. User-facing apps **MUST** implement the `Activity` interface, -`xrn:firebolt:capability:lifecycle:activatible`. +`xrn:firebolt:capability:lifecycle:activatable`. This includes: + - `Application.activate()` - `Application.deactivate()` By providing an implementation of the -`xrn:firebolt:capability:lifecycle:activatible` interface, an app can influence +`xrn:firebolt:capability:lifecycle:activatable` interface, an app can influence how resources are managed during these state transitions. See [Activity Interface](#82-activity-interface) for more info. + ### 5.1. Initializing an app Once an app is loaded it **MUST** be initialized immediately. @@ -386,20 +389,18 @@ for [Parameters](#6-create-parameters) and prepare to fulfill the provided launch configuration. Example Launch Parameters: + ```json { "preload": true, "preloadReason": "boot" } - ``` -**TODO**: discuss this ^^ - Once the `create` method returns the app **MUST** be immediately transitioned to the `RUNNING` state. -### 5.2. Activating an app +### 5.2. Activating an app Activating an app transitions it to the `ACTIVE` state so that it becomes part of the user's experience. @@ -429,7 +430,7 @@ first. At this point, the app **MUST** be in the `RUNNING` state. -If an app provides the `xrn:firebolt:capability:lifecycle:activatible` +If an app provides the `xrn:firebolt:capability:lifecycle:activatable` capability, then the platform **MUST** call the app's implementation of `Activity.activate()`: @@ -465,16 +466,11 @@ activation which may include: - Performing any entitlement checks to decide whether to display a player or a purchase flow - Any other steps necesary to present content to the user quickly +The platform **MAY** display a loading screen during the `activate()` callback, see +[Loading Screen](./presentation.md#5-loading-screen) for more info. -The platform will display a loading screen for the entire duration of the -`activate()` callback, and apps **SHOULD** do whatever is necessary to present -the user with content that fulfills the `intent` without additional loading -screens in the app's UX. - -**TODO**: Discuss ^^ ### 5.3. Deactivating an app - Closing an app transitions it to the `RUNNING` state, so that it is no longer part of the user's experience. @@ -518,7 +514,7 @@ remainder of this section does not apply. At this point, the app **MUST** be in the `ACTIVE` state. -If an app provides the `xrn:firebolt:capability:lifecycle:activatible` +If an app provides the `xrn:firebolt:capability:lifecycle:activatable` capability, then the platform **MUST** call the app's implementation of `Activity.deactivate()`: @@ -590,9 +586,9 @@ During the `suspend()` transition, the app: > **MUST** deallocate any graphics surface. > > **SHOULD** reduce memory usage, if possible. +> ### 5.5. Resuming an app - Resuming an app allows it to reallocate graphics composition and reload any resources it might have deallocated during `suspend()`. @@ -644,8 +640,8 @@ TBD Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement `Sleepable.wake()`. -### 5.8. Destroying an app +### 5.8. Destroying an app Destroying an app transitions it out of memory, so that it is no longer using resources on the device. @@ -703,8 +699,8 @@ type CreateParameters = { ## 7. Core SDK APIs - The following APIs are exposed by the Firebolt Core SDK. + ### 7.1. Application Interface The `Application` interface is implemented by Apps to provide resource @@ -723,8 +719,8 @@ interface Application { function resume(): Promise; function destroy(): Promsie; } - ``` + | Method | Description | | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `create()` | Called when the platform is ready to create the lifecycle session for the app. Only called only once, during the `INITIALIZING` state. | @@ -732,14 +728,14 @@ interface Application { | `resume()` | Called when the platform wants the app to reallocate its graphics surface and prepare to be potentially used. | | `destroy()` | Called when the platform is ready to end the lifecycle session for the app. Only called once. | -### 7.2. Activatible Interface +### 7.2. Activatable Interface -The `Activatible` interface is implemented by Apps that provide user +The `Activatable` interface is implemented by Apps that provide user perceptible experiences, e.g. visible, audible, or user input. These types of apps require additional resource management ```typescript -interface Activatible { +interface Activatable { function activate(intent: NavigationIntent): Promise; function deactivate(): Promise; } @@ -810,11 +806,13 @@ class ExampleApplication implements Lifecycle.Application, Lifecycle.Activity { Lifecycle.provide([ "xrn:firebolt:capability:lifecycle:application", - "xrn:firebolt:capability:lifecycle:activatible" + "xrn:firebolt:capability:lifecycle:activatable" ], new ExampleApplication()) ``` +**TODO**: remove old APIs + **NOTE**: we need to support passing an array of capabilities for a single class. diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index f4163db3e..bcb4c7a79 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -1,10 +1,11 @@ # App Presentation -Document Status: Working Draft +Document Status: Candidate Specification See [Firebolt Requirements Governance](../../governance.md) for more info. | Contributor | Organization | + | ------------------------- | ------------ | | Andrew Bennett | Sky | | Cody Bonney | Charter | @@ -23,7 +24,7 @@ This document describes the requirements that Firebolt platforms and Firebolt applications must fulfill when managing App Presention. *App Presentation* refers to the display, focus, and navigational aspects of an App. -The *display* of an app refers to it its visibility and size. +The *display* of an app refers to its visibility and size. Whether an app has an *overlay* refers to any other apps or UX being presented on top of the app. @@ -36,16 +37,15 @@ intents, which are like deep links from the platform. - [1. Overview](#1-overview) - [2. Table of Contents](#2-table-of-contents) - [3. Focus](#3-focus) -- [4. Display](#4-display) - - [4.1. Display vs Lifecycle](#41-display-vs-lifecycle) -- [5. Loading Screen](#5-loading-screen) - - [5.1. Platform-provided Loading Screen](#51-platform-provided-loading-screen) - - [5.2. App-provided Loading Screen](#52-app-provided-loading-screen) - - [5.3. When to use a loading screen](#53-when-to-use-a-loading-screen) -- [6. Overlay](#6-overlay) - - [6.1. Overlay vs Focus](#61-overlay-vs-focus) -- [7. Navigation](#7-navigation) -- [8. Background Audio](#8-background-audio) +- [4. Visible](#4-visible) +- [5. Display](#5-display) + - [5.1. Display vs Lifecycle](#51-display-vs-lifecycle) +- [6. Loading Screen](#6-loading-screen) + - [6.1. Platform-provided Loading Screen](#61-platform-provided-loading-screen) + - [6.2. App-provided Loading Screen](#62-app-provided-loading-screen) +- [7. Overlay](#7-overlay) + - [7.1. Overlay vs Focus](#71-overlay-vs-focus) +- [8. Navigation](#8-navigation) - [9. Picture-in-Picture Video](#9-picture-in-picture-video) @@ -54,11 +54,20 @@ intents, which are like deep links from the platform. The `Presentation` module **MUST** have a `focus` boolean property that returns whether or not the app has input, e.g. RCU, focus. -**TODO**: let's clearly define focus. RCU, soft-keyboard, soft-remote, +An app with focus **MUST** receive key presses from the RCU. + +Firebolt platforms **MAY** decide which RCU keys are privilleged, and do not go to apps. + +Firebolt platforms **MAY** forward RCU keys to an app that does not have focus, e.g. a pause key while there's a settings overlay. + +An app **MAY** receive intents from the platform regardless of whether it has focus or not. As a property, this API also has an `onFocusChanged` notification. -## 4. Display +## 4. Visible +The `Presentation` module **MUST** have a `visibile` boolean property that returns `true` if the `display` is one of `fullscreen`, `scaled`, `thumbnail`. + +## 5. Display The `Presentation` module **MUST** have a `display` string property that returns one of the following values: @@ -66,16 +75,15 @@ returns one of the following values: | Value | Description | |--------------|-------------------------------------------------------------------------------------------------------------------------| | `fullscreen` | The app is displayed such that the dimensions fill the entire screen | -| `offscreen` | The app is has it's graphics surface attached, but not displayed on the screen at the moment, e.g. scrolled out of view | +| `offscreen` | The app has it's graphics surface attached, but not displayed on the screen at the moment, e.g. scrolled out of view | | `scaled` | The app is displayed at a size smaller than the entire screen but at least 25% of the width or height | | `thumbnail` | The app is displayed at a size smaller than 25% of the width or height of the entire screen | | `loading` | The platform is displaying a loading screen while the app prepares to be activated | -| `none` | The app does not have it's graphics surface attached to the screen | +| `none` | The app does not have its graphics surface attached to the screen | -**TODO**: an app could be offscreen & scaled. If a scaled or thumbnailed app -goes offscreen, it's now offscreen. +Note that if a scaled or thumbnailed app goes offscreen, it's now offscreen. -### 4.1. Display vs Lifecycle +### 5.1. Display vs Lifecycle Each Lifecycle state only supports certain display states: @@ -90,7 +98,7 @@ Each Lifecycle state only supports certain display states: See [Picture-in-picture](#9-picture-in-picture-video) and [Background Audio](#8-background-audio) for exceptions to this. -## 5. Loading Screen +## 6. Loading Screen In order to manage user expectations, Firebolt platforms **MAY** display loading screens to end users when an app is going to be activated. Loading Screens may be rendered either by the platform, the app, or both, depending on @@ -100,19 +108,26 @@ Firebolt platforms **MAY** decide when an app activation warrents a loading screen, for example when an app will be initialized or woken from sleep before activation. -Proposal: - If an app has the `xrn:firebolt:capability:presentation:loading-screen` capability and the platform chooses to utilize the app's loading screen, the app **MAY** be made visible any time from the beginning of activate() transition and **MUST** be made visible no later than the end. +When the app is made visbile, the platform **MUST** update the display state to one of: + +- `fullscreen` +- `scaled` +- `thumbnail` +- `offscreen` + If an app does not have the `xrn:firebolt:capability:presentation:loading-screen` capability or the platform decides not to use the app's loading screen, the app **MUST** be made visible at the end of the activate() transition. -### 5.1. Platform-provided Loading Screen +It is up to each platform to determine when a loading screen is useful. + +### 6.1. Platform-provided Loading Screen If an app provides the `xrn:firebolt:capability:presentation:loading-screen` capability, then the platform **MAY** use the app-provided loading screen, in @@ -127,8 +142,7 @@ then: > The loading screen **MUST** be displayed when the user attempts to launch the > app. > -> The loading screen **MUST** stay displayed until the app becomes active, or -> launching is cancelled. +> The loading screen **MUST** stay displayed until the app becomes active. > > The presentation state of the app **MUST** be `LOADING` for the entire time > the loading screen is displayed. @@ -138,7 +152,7 @@ then: See [Lifecycle](./index.md) for more info on launching. -### 5.2. App-provided Loading Screen +### 6.2. App-provided Loading Screen If an app provides the `xrn:firebolt:capability:presentation:loading-screen` capability, then the platform **MAY** invoke this capability in some @@ -165,18 +179,7 @@ the `activate()` transition. See [Lifecycle](./index.md) for more info on loading and activating apps. -### 5.3. When to use a loading screen - -It is up to each platform to determine when a loading screen is useful. - -Platforms **SHOULD** consider displaying a loading screen for: - -- app cold launch -- app wake from sleep - -TODO: define all the various happy path & edge cases for this. - -## 6. Overlay +## 7. Overlay The `Presentation` module **MUST** have an `overlay` string property that informs the app when a focus-consuming overlay is present. @@ -186,14 +189,14 @@ informs the app when a focus-consuming overlay is present. | `blocking` | There is a blocking overlay covering a majority of the app. | | `none` | There is nothing covering the app. | -### 6.1. Overlay vs Focus +### 7.1. Overlay vs Focus | Focus | Overlay | | ----- | ----------------------- | | true | none | | false | partial, blocking, none | -## 7. Navigation +## 8. Navigation Typically navigation is handled either when the app is activated, via the `intent` parameter of the [`activate()` method](./index.md#52-activating-an-app), or by internal input within the app. @@ -208,16 +211,34 @@ capability then the platform **MUST** call the `Navigation.navigateTo` method of the app's provider and pass an `intent` to an app that is in the `ACTIVE` state. +To invoke an app's `navigateTo` provider API the platform **MUST**: + +> The platform **MUST** dispatch the `Presentation.onRequestNavigateTo` +> notification to the app, and wait for `appNavigateToTimeout` milliseconds for +> either a `Presentation.navigateToResult` or `Presentation.navigateToError` +> call in response. +> +> Once the platform receives the `navigateToResult` call, then the platform may +> proceed with the expectation that the app in fact will handle the `intent`. +> +> If the app times out or makes an `navigateToError` call, then the app **MAY** +> have focus removed or be deactivated, so that the platform can handle the +> `intent` in some other way. + +An app **SHOULD** call `navigateToResult` after the `onRequestNavigateTo` call if the app is capabable of handling the intent. Otherwise the app **SHOULD** call `navigateToError`. + An app **MAY** receive a navigate call while it is already executing a navigate call. -An app **MUST** acknowledge receipt of each navigate call. +An app **MUST** acknowledge receipt of each navigate call with either `navigateToResult` `navigateToError`. Platforms **MAY** decide to remove focus from or deactivate apps that do not acknowledge the `navigateTo` call. -An app **MAY** decide how to prioritize multiple navigate calls, but likely -**SHOULD** prioritize the most recent one. +If an app receives multiple navigate calls in parallel, it **MAY** ignore all but the final call. + +An app can decide how to handle multiple navigate calls, but +**SHOULD** execute the final call. To fullfil a prioritized `navigateTo()` call, the app **MUST** inspect the `intent` parameter and prepare to fulfill a specific [Navigation @@ -229,33 +250,6 @@ Intent](../intents/navigation.md) which may include: The app **MAY** display a loading indicator. -To invoke an app's `navigateTo` provider API the platform **MUST**: - -> The platform **MUST** dispatch the `Presentation.onRequestNavigateTo` -> notification to the app, and wait for `appNavigateToTimeout` milliseconds for -> either a `Presentation.navigateToResult` or `Presentation.navigateToError` -> call in response. -> -> Once the platform receives the `navigateToResult` call, then the platform may -> proceed with the expectation that the app in fact will handle the `intent` -> -> If the app times out or makes an `navigateToError` call, then the app **MAY** -> have focus removed or be deactivated, so that the platform can handle the -> `intent` in some other way - - -## 8. Background Audio -If an app has the `xrn:firebolt:capability:media:background-audio`, then it can -keep playing audio/video when the app is in the `none` display state and the -audio will be played for the user. - -When an app has this capability, it **MAY** be put into the `none` display -state while in the `active` Lifecycle state. - -TODO: do we want background apps to have a gfx surface? that means they'd be in -'offscreen' display and using more memory TODO: we probably want to support -both modes here. - ## 9. Picture-in-Picture Video If an app has the `xrn:firebolt:capability:media:picture-in-picture`, then it can keep playing audio/video when the app is in the `none` display state and From 84c9d6571b4969fcb7a253a13a0550a4e14d69d4 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Mon, 19 Feb 2024 17:12:17 -0500 Subject: [PATCH 30/43] fix: Piotr's feedback/edits --- .../specifications/lifecycle/index.md | 341 ++++++++++-------- .../specifications/lifecycle/presentation.md | 31 +- 2 files changed, 206 insertions(+), 166 deletions(-) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 72922bc9d..1073628e7 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -30,10 +30,8 @@ app-manifest and index.html, and loading them into a container capable of running the app, e.g. a web browser. *Activating* an app refers to the process of getting an app into a state where -it is presented as part of the user-perceptible experience (e.g. visible, -audible, or responding to input). This may include *initializing* the app -first, if needed. For details on presentation, see [App -Presentation](./presentation.md). +it is given full resources, e.g. media pipeline. This may include *initializing* the app +first, if needed. *Closing* an app refers to the process of getting an app out of a state where it is the primary user experience (e.g. not visible, not audible, and not @@ -84,16 +82,15 @@ a compatible process so that it resumes where it left off. - [7.2. Activatable Interface](#72-activatable-interface) - [7.3. Sleepable Interface](#73-sleepable-interface) - [7.4. Example App](#74-example-app) - - [7.5. Ready](#75-ready) - - [7.6. Close](#76-close) - - [7.7. State](#77-state) + - [7.5. Close](#75-close) + - [7.6. State](#76-state) - [8. Lifecycle Configuration](#8-lifecycle-configuration) ## 3. Lifecycle States -Firebolt platforms **MUST** support running one or more apps concurrently. The -platform **MUST** manage transition of apps from state to state. +Firebolt platforms **MUST** support running one or more apps concurrently. The +platform **MUST** manage transition of apps from state to state. A Firebolt app, once running, **MUST** be in one of several states and **MUST NOT** be in more than one state at a time. @@ -103,7 +100,7 @@ transition methods, see [Transitions](#5-lifecycle-state-transitions), for more on this. ![Lifecycle States](../../images/specifications/lifecycle/lifecycle-states.png) - + | | CPU | RAM | F/S | Net | GFX | SFC | A/V | Description | |--------------|-----|-----|-----|-----|-----|-----|-----|----------------------------------------------------------------------------| | Initializing | ✔ | ✔ | ✔ | ✔ | | | | Started executing, but is not yet instantiated as a Firebolt app. | @@ -113,7 +110,7 @@ on this. | Sleeping | | | | | | | | No CPU cycles are given to the app. App may stay in RAM or be stored. | | | Legend | -| --- | ----------------------- | +|-----|-------------------------| | CPU | Central Processing Unit | | RAM | Ramdon Access Memory | | F/S | File System | @@ -151,12 +148,12 @@ See [Initializing an app](#51-initializing-an-app) for more information. This state allows an app to be running and ready to go, but not actively part of the user-perceptible experience. -Running apps can execute code, but are not [Presented](./presentation.md) to -the user, do not receive any input from RCUs, and cannot use the video decoder. +Running apps can execute code, but are not presented to the user, do not +receive any input from RCUs, and cannot use the video decoder. Apps in this state **MUST** have access to the graphics surface. -Apps in this state **MAY** have created, allocated a graphics surface but it +Apps in this state **MAY** have created, allocated a graphics surface, but it will not be made visible by platform compositor. Apps in this state **MUST NOT** be visible. @@ -168,13 +165,22 @@ Apps in this state **MUST NOT** have access to the audio-video decoder. Apps in this state **MUST NOT** use the media pipeline and the platform **MUST** tear down any Media Pipeline sessions associated with this app. +Apps **MUST** only enter this state from: + + - the `INITIALIZING` state, via the `create()` method + - the `ACTIVE` state, via the `deactivate()` method + - the `SUSPENDED` state, via the `resume()` method + +When an app transitions to this state, the platform **MUST** dispatch the +`Lifecycle.onStateChanged` notification with the current state. + ### 3.3. Active This state allows an app to be presented as part of the user-perceptible experience. To determine if an app is the *primary* experience, e.g. fullscreen, etc., see -[Presentation](./presentation.md#4-display). +[Presentation](./presentation.md#5-display). It is a platform decision as to how many apps may be in this state at once. @@ -195,6 +201,8 @@ Apps in this state **MUST** have access to the graphics surface. Apps in this state **SHOULD** reduce memory usage, if possible. +Apps **MUST** only enter this state from the `RUNNING` state, via the `activate()` method. + When an app transitions to this state, the platform **MUST** dispatch the `Lifecycle.onStateChanged` notification with the current state. @@ -202,8 +210,8 @@ When an app transitions to this state, the platform **MUST** dispatch the This state allows an app to remain in memory and consume fewer resources. -Suspended apps can execute code, but are not [Presented](./presentation.md) to -the user, do not receive any input from RCUs, and cannot use the video decoder. +Suspended apps can execute code, but are not presented to the user, do not +receive any input from RCUs, and cannot use the video decoder. Apps in this state **MUST NOT** have a graphics surface allocated any longer. It **MUST** have been deallocated in the `suspend()` transition. @@ -217,8 +225,13 @@ Apps in this state **MUST NOT** have access to the audio-video decoder. Apps in this state **SHOULD** further reduce memory usage (more so than in the `active` state), if possible. -**TODO**:: add all the transition pre-requisites, e.g. Apps **MUST** only enter -this state from the `SUSPENDED` state, via the `sleep()` interface. +Apps **MUST** only enter this state from: + + - the `SLEEPING` state, via the `wake()` method + - the `RUNNING` state, via the `suspend()` method + +When an app transitions to this state, the platform **MUST** dispatch the +`Lifecycle.onStateChanged` notification with the current state. ### 3.5. Sleeping @@ -236,7 +249,7 @@ of the app sleeping feature. capability, then the following requirements **MUST** be fulfilled. Apps **MUST** only enter this state from the `SUSPENDED` state, via the -`sleep()` interface. +`sleep()` method. If a platform supports copying sleeping apps memory out of RAM then: @@ -251,10 +264,10 @@ If a platform supports copying sleeping apps memory out of RAM then: The Lifecycle module **MUST** provide a `state` property API that returns the current lifecycle state of the app. -If an app is in a transtition from one state to another, then it **MUST** be +If an app is in a transition from one state to another, then it **MUST** be considered in the state *before* the transition until such time as the app's implementation of the [transition](#5-lifecycle-state-transitions) has returned -and the platfrom has finshed the transition. +and the platform has finished the transition. The `state` API **MUST** have a corresponding `onStateChanged` notification. @@ -265,7 +278,6 @@ The `state` API must have one of the following values: - `Active` - `Sleeping` - Note that the `onStateChanged` notification **MUST** never be dispatched for the `Sleeping` state since it would not be received anyway. @@ -281,49 +293,52 @@ As an app changes states the platform will invoke specific app-provided transition methods from the `Application` interface: | | Legend | -| - | ------------- | +|---|---------------| | ↓ | Limited | | ✔ | Normal access | -| | CPU | RAM | Net | GFX | A/V | Description | -|-------------|-----|-----|-----|-----|-----|-------------------------------------------------------------------------------------------------------| -| `create()` | ✔ | ✔ | ✔ | ✔ | | Creation of the app, from a Firebolt Lifecycle perspective. | -| `suspend()` | ✔ | ✔ | ✔ | ✔ | | Reduce memory and CPU usage, deallocate graphics surface. | -| `resume()` | ✔ | ✔ | ✔ | ✔ | | graphics surface reallocated, full memory usage and normal CPU cycles. | -| `destroy()` | ✔/↓ | ✔/↓ | ✔ | | | Preprare for the app to be deallocated and removed from execution. CPU & RAM based on previous state. | +| | CPU | RAM | Net | GFX | A/V | Description | +|-------------|-----|-----|-----|-----|-----|------------------------------------------------------------------------------------------------------| +| `create()` | ✔ | ✔ | ✔ | ✔ | | Creation of the app, from a Firebolt Lifecycle perspective. | +| `suspend()` | ✔ | ✔ | ✔ | ✔ | | Reduce memory and CPU usage, deallocate graphics surface. | +| `resume()` | ✔ | ✔ | ✔ | ✔ | | graphics surface reallocated, full memory usage and normal CPU cycles. | +| `destroy()` | ✔/↓ | ✔/↓ | ✔ | | | Prepare for the app to be deallocated and removed from execution. CPU & RAM based on previous state. | -If an app implements the `Activity` interface, then the following transitions -may be invoked: + +If an app implements the `Activatable` interface, then the following +transitions may be invoked: | | CPU | RAM | Net | GFX | A/V | Description | |----------------|-----|-----|-----|-----|-----|---------------------------------------------------------------------------| | `activate()` | ✔ | ✔ | ✔ | ✔ | ✔ | App is expected to become a user-perceptible part of the user experience. | | `deactivate()` | ✔ | ✔ | ✔ | ✔ | ✔ | Must remove any user-perceptible activities and deallocate A/V decoders. | + + Finally, if an app implements the `Sleepable` interface, then the following -transistions may be invoked. +transitions may be invoked. | | CPU | RAM | Net | GFX | A/V | Description | |-----------|-----|-----|-----|-----|-----|----------------------------------------------------------------------------------------| | `sleep()` | ↓ | ↓ | ✔ | | | Prepare for an extended period with no CPU cycles given to app. | | `wake()` | ↓ | ↓ | ✔ | | | Cleanup after an extended period with no CPU, e.g. reset timers / network connections. | + All of these transition APIs are blocking, and each one has a platform-configurable timeout that specifies how long the app has to fulfill the method. -The platform **MUST** never invoke a transions on an app when that app is +The platform **MUST** never invoke any transitions on an app when that app is already running a transition. All Firebolt apps **MUST** implement the `Application` interface, `xrn:firebolt:capability:lifecycle:application`. This includes: - - - `Application.create()` - - `Application.suspend()` - - `Application.resume()` - - `Application.destroy()` +- `Application.create()` +- `Application.suspend()` +- `Application.resume()` +- `Application.destroy()` By providing an implementation of the @@ -331,20 +346,18 @@ By providing an implementation of the how resources are managed during these state transitions. See [Application Interface](#71-application-interface) for more info. -User-facing apps **MUST** implement the `Activity` interface, +User-facing apps **MUST** implement the `Activatable` interface, `xrn:firebolt:capability:lifecycle:activatable`. This includes: +- `Application.activate()` +- `Application.deactivate()` - - `Application.activate()` - - `Application.deactivate()` - By providing an implementation of the `xrn:firebolt:capability:lifecycle:activatable` interface, an app can influence -how resources are managed during these state transitions. See [Activity -Interface](#82-activity-interface) for more info. - +how resources are managed during these state transitions. See [Activatable +Interface](#72-activatable-interface) for more info. ### 5.1. Initializing an app Once an app is loaded it **MUST** be initialized immediately. @@ -362,15 +375,15 @@ terminate the app. Otherwise, the platform **MUST** call the app's implementation of `Application.create()`: -> The platform **MUST** dispatch the `Lifecycle.onRequestCreate` notification -> to the app, and wait for `appCreateTimeout` milliseconds for either a -> `Lifecycle.createResult` or `Lifecycle.createError` call in response. +> The platform **MUST** call the `Application.create` method of the app, +> and wait for `appCreateTimeout` milliseconds for either a successful +> result or error response. > -> Once the platform receives the `createResult` call, then the app is -> considered to have any important Firebolt notifications set up and is ready +> Once the platform receives a success, then the app is considered to have any +> important Firebolt notifications set up and is ready > to be activated and presented to the user. > -> If the app times out or makes a `createError` call, then the app **MUST** be +> If the app times out or throws an error, then the app **MUST** be > immediately terminated by the platform. Apps **SHOULD** set up any Firebolt event listeners either before calling @@ -389,25 +402,25 @@ for [Parameters](#6-create-parameters) and prepare to fulfill the provided launch configuration. Example Launch Parameters: - ```json { "preload": true, "preloadReason": "boot" } + ``` Once the `create` method returns the app **MUST** be immediately transitioned to the `RUNNING` state. - ### 5.2. Activating an app + Activating an app transitions it to the `ACTIVE` state so that it becomes part of the user's experience. Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:activate` capability **MUST** implement -`Activity.activate()`. +`Activatable.activate()`. The platform may activate apps for any number of reasons that are out of scope for this document. @@ -419,8 +432,7 @@ there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to activate an app that is already in the active state and the remainder of this section does not apply. -If the app is not loaded, then the platform **MUST** [load](undefined) it -first. +If the app is not loaded, then the platform **MUST** load it first. If the app is not initialized, the platform **MUST** [initialize](#51-initializing-an-app) it first. @@ -432,24 +444,18 @@ At this point, the app **MUST** be in the `RUNNING` state. If an app provides the `xrn:firebolt:capability:lifecycle:activatable` capability, then the platform **MUST** call the app's implementation of -`Activity.activate()`: +`Activatable.activate()`: -> The platform **MUST** dispatch the `Lifecycle.onRequestActivate` notification -> to the app, and wait for `appActivateTimeout` milliseconds for either a -> `Lifecycle.activateResult` or `Lifecycle.activateError` call in response. +> The platform **MUST** call the `Activatable.activate` method of the app, +> and wait for `appActivateTimeout` milliseconds for either a success or an +> error response. > -> The `onRequestActivate` call **MUST** include a `NavigationIntent`. +> The `activate` call **MUST** include a `NavigationIntent`. > -> If the app sends a `Lifecycle.activateFocus` request and has permission to -> use the `xrn:firebolt:capability:lifecycle:loading-screen` capability, then -> the platform **SHOULD** give the app focus and set the [Presentation -> display](./presentation.md) to one of the visible modes, so that the app may -> display a custom loading screen. -> -> Once the platform receives the `activateResult` call, then the app may be +> Once the platform receives a success response, then the app may be > moved to the `ACTIVE` state. > -> If the app times out or makes an `activateError` call, then the app **MUST** +> If the app times out or throws an error, then the app **MUST** > be terminated. If the app provides the `xrn:firebolt:capability:presentation:navigation` @@ -462,71 +468,68 @@ If the app does not provide the capability, then the `intent` **MUST** be the During the `activate()` transition, the app **MUST** inspect the `intent` parameter and prepare to fulfill a specific Navigation Intent for this activation which may include: - - Loading any metadata needed to display the user's intended content. - - Performing any entitlement checks to decide whether to display a player or a purchase flow - - Any other steps necesary to present content to the user quickly -The platform **MAY** display a loading screen during the `activate()` callback, see -[Loading Screen](./presentation.md#5-loading-screen) for more info. +- Loading any metadata needed to display the user's intended content. +- Performing any entitlement checks to decide whether to display a player or a purchase flow +- Any other steps necessary to present content to the user quickly + +The platform **MAY** display a loading screen for the entire duration of the +`activate()` callback, and apps **SHOULD** do whatever is necessary to present +the user with content that fulfills the `intent` without additional loading +screens in the app's UX. ### 5.3. Deactivating an app -Closing an app transitions it to the `RUNNING` state, so that it is no longer -part of the user's experience. +Deactivating an app transitions it to the `RUNNING` state, so that it consumes +fewer resources. This **MAY** be paired with a transition of the [Presentation](./presentation.md) +state, so that it is no longer part of the user's experience. Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:activate` capability **MUST** implement -`Activity.deactivate()`. +`Activatable.deactivate()`. -The platform may close apps for any number of reasons that are out of scope for +The platform may deactivate apps for any number of reasons that are out of scope for this document. -Apps **MAY** request to be closed, via the `Lifecycle.close()` API method. +Apps **MAY** request to be deactivated, via the `Lifecycle.close()` API method. -To close an app, platforms **MUST** use the following process. +To deactivate an app, platforms **MUST** use the following process. If an app is already in the `RUNNING`, `SUSPENDED`, or `SLEEPING` state, then -it is already closed and there is no need to do anything else. The platform +it is already deactivated and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting -to close an app that is already in the `RUNNING` state and the remainder of -this section does not apply. - -**TODO**: list out all possible transition "interuptions" and make sure they -are described in this doc. - -If an app is in the `initializing` state, then it is not +to deactivate such an app and the remainder of this section does not apply. If an app is already performing a `deactivate()` transition, the platform -**MUST** ignore the new attempt to close the app, allow the pending closure to +**MUST** ignore the new attempt to deactivate the app, allow the pending closure to complete, and the remainder of this section does not apply. If an app is already performing an `activate()` transition, the platform **MUST** wait for the activate call to succeed or fail and then skip the -remaining [activation steps](#52-activating-an-app). +remaining [activation steps](#52-activating-an-app) and fulfill the remainder +of this section instead. If an app is currently [initializing](#51-initializing-an-app), the platform **MUST** wait for initialization to succeed or fail and then skip any -activation that may have been pending. +activation that may have been pending, and the remainder of this section does +not apply. If an app is currently in a [destroy](#58-destroying-an-app) transition then -the app cannot be closed and the platform **MUST NOT** close it, and the +the app cannot be deactivated and the platform **MUST NOT** attempt to, and the remainder of this section does not apply. At this point, the app **MUST** be in the `ACTIVE` state. If an app provides the `xrn:firebolt:capability:lifecycle:activatable` capability, then the platform **MUST** call the app's implementation of -`Activity.deactivate()`: +`Activatable.deactivate()`: -> The platform **MUST** dispatch the `Lifecycle.onRequestDeactivate` -> notification to the app, and wait for `appDeactivateTimeout` milliseconds for -> either a `Lifecycle.deactivateResult` or `Lifecycle.deactivateError` call in -> response. +> The platform **MUST** call the `Activatable.deactivate` method on the app, +> and wait for `appDeactivateTimeout` milliseconds for a success or error response. > -> Once the platform receives the `deactivateResult` call, then the app may be -> moved to the `RUNNING` state. +> Once the platform receives a success, then the app may be moved to the `RUNNING` state. > -> If the app times out or makes a `deactivateError` call, then the app **MUST** +> If the app times out or makes an error, then the app **MUST** > be terminated. During the `deactivate()` transition, the app **MUST** deallocate any A/V @@ -571,14 +574,14 @@ Since every app **MUST** provide the `xrn:firebolt:capability:lifecycle:application` capability, the platform **MUST** call the app's implementation of `Application.suspend()`: -> The platform **MUST** dispatch the `Lifecycle.onRequestSuspend` notification -> to the app, and wait for `appSuspendTimeout` milliseconds for either a -> `Lifecycle.suspendResult` or `Lifecycle.suspendError` call in response. +> The platform **MUST** call the `Application.suspend` method of the app, +> and wait for `appSuspendTimeout` milliseconds for either a success or error +> in response. > -> Once the platform receives the `suspendResult` call, then the app may be -> moved to the `SUSPENDED` state. +> Once the platform receives a success, then the app may be moved to the +> `SUSPENDED` state. > -> If the app times out or makes a `suspendError` call, then the app **MUST** be +> If the app times out or throws an error, then the app **MUST** be > [destroyed](#58-destroying-an-app). During the `suspend()` transition, the app: @@ -586,14 +589,13 @@ During the `suspend()` transition, the app: > **MUST** deallocate any graphics surface. > > **SHOULD** reduce memory usage, if possible. -> ### 5.5. Resuming an app Resuming an app allows it to reallocate graphics composition and reload any resources it might have deallocated during `suspend()`. The platform may resume apps so they can access more resources or in -preperation to activate them. +preparation to activate them. To resume an app, platforms **MUST** use the following process. @@ -611,36 +613,89 @@ Suspended apps **MUST** provide the `xrn:firebolt:capability:lifecycle:application` capability, so the platform **MUST** call the app's implementation of `Application.resume()`: -The platform **MUST** dispatch the `Lifecycle.onRequestResume` notification to -the app, and wait for `appResumeTimeout` milliseconds for either a -`Lifecycle.resumeResult` or `Lifecycle.resumeError` call in response. +The platform **MUST** call the `Application.resume` method of the app, +and wait for `appResumeTimeout` milliseconds for either a success or error +response. -Once the platform receives the `resumeResult` call, then the app may be moved +Once the platform receives a success, then the app may be moved to the `RUNNING` state. -If the app times out or makes a `resumeError` call, then the app **MUST** be +If the app times out or throws an error, then the app **MUST** be terminated. During the `resume()` transition, apps **SHOULD** reallocate graphics composition and other necessary resources. ### 5.6. Putting an app to sleep +Putting an app to sleep allows the platform to copy the apps memory stack to +storage and terminate the app in order to save memory. -TBD +An app that has been put to sleep **MUST** be able to be brought back into +memory / CPU in the same state it had been in. Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement `Sleepable.sleep()`. -TODO: if you don't call provide, we won't do this. -### 5.7. Waking an app from sleep +To put an app to sleep, platforms **MUST** use the following process. + +If an app is not in the `SUSPENDED` state, then it cannot be put to sleep and there +is no need to do anything else. The platform **MUST NOT** dispatch any +*additional* lifecycle notifications when attempting to resume an app that is +not in the `SUSPENDED` state and the remainder of this section does not apply. + +At this point, the app **MUST** be in the `SUSPENDED` state. -TBD +Next, the platform **MUST** copy the apps CPU and memory state to some persistant +storage. How platforms implement this is out of scope for this document. + +Sleepable apps **MUST** provide the +`xrn:firebolt:capability:lifecycle:sleepable` capability, so the platform +**MUST** call the app's implementation of `Sleepable.sleep()`: + +Once the platform receives a success, then the app may be moved +to the `SLEEPING` state. + +If the app times out or throws an error, then the app **MUST** be +terminated. + +During the `sleep()` transition, apps **SHOULD** note the clock time in order +to determine the duration of sleep when the app is woken. +composition and other necessary resources. + +### 5.7. Waking an app from sleep +Waking an app from sleep allows the platform to copy the apps memory stack back +from storage and relaunch the app in the original state. Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement `Sleepable.wake()`. +To wake an app from sleep, platforms **MUST** use the following process. + +If an app is not in the `SLEEPING` state, then it cannot be woken from sleep and there +is no need to do anything else. The platform **MUST NOT** dispatch any +*additional* lifecycle notifications when attempting to resume an app that is +not in the `SLEEPING` state and the remainder of this section does not apply. + +At this point, the app **MUST** be in the `SLEEPING` state. + +Next, the platform **MUST** copy the apps CPU and memory state back from persistant +storage. How platforms implement this is out of scope for this document. + +Sleepable apps **MUST** provide the +`xrn:firebolt:capability:lifecycle:sleepable` capability, so the platform +**MUST** call the app's implementation of `Sleepable.wake()`: + +Once the platform receives a success, then the app may be moved +to the `SUSPENDED` state. + +If the app times out or throws an error, then the app **MUST** be +terminated. + +During the `sleep()` transition, apps **SHOULD** check how long it had been in +the `SLEEPING` state to determine if any processes need to be reset, reauthenticated, etc. + ### 5.8. Destroying an app Destroying an app transitions it out of memory, so that it is no longer using @@ -663,29 +718,30 @@ Since every app **MUST** provide the `xrn:firebolt:capability:lifecycle:application` capability, the platform **MUST** call the app's implementation of `Application.destroy()`: -> The platform **MUST** dispatch the `Lifecycle.onRequestDestroy` notification -> to the app, and wait for `appDestroyTimeout` milliseconds for either a -> `Lifecycle.destroyResult` or `Lifecycle.destroyError` call in response. +> The platform **MUST** call the `Application.destroy` method of the app, +> and wait for `appDestroyTimeout` milliseconds for either a success or error +> response. > -> Once the platform receives the `destroyResult` call, then the platform may -> proceed with app destroying. +> Once the platform receives a success, then the platform may proceed with app +> destroying. > -> If the app times out or makes an `destroyError` call, then the app **MUST** +> If the app times out or throws an error, then the app **MUST** > be terminated. -### 5.9. Terminating an app +### 5.9. Terminating an app Terminating an app removes it from memory without dispatching any state changes. The platform **SHOULD** terminate apps when one of the transitions outlined -here fails for some reason, or if an app becomes non-responsesive. +here fails for some reason, or if an app becomes non-responsive. Terminating an app results in removing it from memory and all resources held by the app and it's container being freed up. Platforms **MAY** terminate an app when needed but **SHOULD NOT** do this in place of graceful [destroying](#58-destroying-an-app). + ## 6. Create Parameters The `CreateParameters` type is an object with the following properties: @@ -719,10 +775,10 @@ interface Application { function resume(): Promise; function destroy(): Promsie; } -``` +``` | Method | Description | -| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +|-------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `create()` | Called when the platform is ready to create the lifecycle session for the app. Only called only once, during the `INITIALIZING` state. | | `suspend()` | Called when the platform requires the app to deallocate its graphics surface and reduce memory as much as possible. This may be called anytime the app is in the `RUNNING` state. | | `resume()` | Called when the platform wants the app to reallocate its graphics surface and prepare to be potentially used. | @@ -742,7 +798,7 @@ interface Activatable { ``` | Method | Description | -| -------------- | ------------------------------------------------------------------------------------------------------------------------------ | +|----------------|--------------------------------------------------------------------------------------------------------------------------------| | `activate()` | Called when the platform is ready to move the app into the `ACTIVE` state. A/V resources may be allocated. | | `deactivate()` | Called when the platform is ready to move the app out of the `ACTIVE` state and into `RUNNING` to deallocate any A/V decoders. | @@ -761,18 +817,17 @@ interface Sleepable { ``` | Method | Description | -| --------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +|-----------|-------------------------------------------------------------------------------------------------------------------------------------------------------| | `sleep()` | Called when the platform is ready to move the app into the `SLEEPING` state where it will no longer have access to the CPU. | | `wake()` | Called when the platform is ready to move the app out of the `SLEEPING` state and into `SUSPENDED`. Network connections should be reestablished here. | ### 7.4. Example App - Example: ```typescript import { Lifecycle } from '@firebolt-js/sdk' -class ExampleApplication implements Lifecycle.Application, Lifecycle.Activity { +class ExampleApplication implements Lifecycle.Application, Lifecycle.Activatable { async function create(params: CreateParameters): void { } @@ -811,55 +866,47 @@ Lifecycle.provide([ ``` -**TODO**: remove old APIs - **NOTE**: we need to support passing an array of capabilities for a single class. See the [Firebolt API Documentation](https://developer.comcast.com/firebolt/core/sdk/latest/api/) for details around syntax, etc. -### 7.5. Ready - - -The Lifecycle.ready() API allows an app to notify the platform that it is -initialized and ready to be displayed to the end user. This method **MUST NOT** -be called more than once. -### 7.6. Close +### 7.5. Close The Lifecycle.close() API allows an app to request that it be closed by the platform. This method requires a reason parameter, which tells the platform why the app is requesting to be closed: + | Reason | Description | |---------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | CloseReason.REMOTE_BUTTON | The user pressed the back or last button on the RCU and the App has determined it is at the top of it's navigation stack and should go back to the platform home screen. | | CloseReason.USER_EXIT | The user selected an exit control exposed by the app's UI. | | CloseReason.ERROR | The app is experiencing unrecoverable issues and needs to be closed and destroyed. | - Platforms generally **SHOULD** respect this call and move the app to the running state, but there may be edge cases where this is not possible, e.g. the app is considered to be the default experience for the device, and closing it would leave no other UX present. -When the request to close is not respected, the Lifecycle.close() method +When the request to close is not respected, the `Lifecycle.close()` method **MUST** return an error. Platforms **MAY** prioritize apps to be destroyed based on the reason provided. For example, apps closed due to the RCU are less likely to be destroyed since it may be an accidental RCU press, whereas an explicit user exit is more likely to be intentional. -### 7.7. State +### 7.6. State The Lifecycle.state() method provides convenient access to the current state, and is implemented by the Core SDK listening to all state notifications. This method **MUST NOT** be asynchronous. -## 8. Lifecycle Configuration +## 8. Lifecycle Configuration In order to enable Firebolt Certification of a device's Lifecycle Management features, the device **MUST** support the following configuration options, so @@ -867,15 +914,15 @@ that the Firebolt Certification Test Suite knows which optional conditions to test for, and for how long to wait for state transitions. The LifecyclePolicy fields are: + | Field | Type | Required | Description | |----------------------|--------|----------|--------------------------------------------------------------------------------------------------------------------------| | appInitializeTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating a loaded app that did not call `Lifecycle.provide()`. | | appCreateTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating a loaded app that did not finish `create()`. | -| appDestroyTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did not finsih `destroy()`. | +| appDestroyTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did not finish `destroy()`. | | appActivateTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `activate()`. | | appDeactivateTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `deactivate()`. | | appSuspendTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `suspend()`. | | appResumeTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `resume()`. | | appSleepTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `sleep()`. | | appWakeTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `wake()`. | - diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index bcb4c7a79..ae401fc07 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -5,7 +5,6 @@ Document Status: Candidate Specification See [Firebolt Requirements Governance](../../governance.md) for more info. | Contributor | Organization | - | ------------------------- | ------------ | | Andrew Bennett | Sky | | Cody Bonney | Charter | @@ -95,8 +94,7 @@ Each Lifecycle state only supports certain display states: | `suspended` | `none`, `loading` | | `sleeping` | `none`, `loading` | -See [Picture-in-picture](#9-picture-in-picture-video) and [Background -Audio](#8-background-audio) for exceptions to this. +See [Picture-in-picture](#9-picture-in-picture-video) for exceptions to this. ## 6. Loading Screen In order to manage user expectations, Firebolt platforms **MAY** display @@ -207,33 +205,28 @@ is executed or an RCU sends a reserved key to the platform that would result in the app taking some action, e.g. going to its home screen. If the app provides the `xrn:firebolt:capability:presentation:navigation` -capability then the platform **MUST** call the `Navigation.navigateTo` method +capability then the platform **MUST** call the `Presentation.navigateTo` method of the app's provider and pass an `intent` to an app that is in the `ACTIVE` state. To invoke an app's `navigateTo` provider API the platform **MUST**: -> The platform **MUST** dispatch the `Presentation.onRequestNavigateTo` -> notification to the app, and wait for `appNavigateToTimeout` milliseconds for -> either a `Presentation.navigateToResult` or `Presentation.navigateToError` -> call in response. +> The platform **MUST** call the `Presentation.navigateTo` method of the App, +> and wait for `appNavigateToTimeout` milliseconds for either a result or error +> response. > -> Once the platform receives the `navigateToResult` call, then the platform may -> proceed with the expectation that the app in fact will handle the `intent`. +> Once the platform receives a result, then the platform may proceed with the +> expectation that the app in fact will handle the `intent`. > -> If the app times out or makes an `navigateToError` call, then the app **MAY** -> have focus removed or be deactivated, so that the platform can handle the +> If the app times out or returns an error, then the app **MAY** have focus +> removed or be deactivated, so that the platform can handle the > `intent` in some other way. -An app **SHOULD** call `navigateToResult` after the `onRequestNavigateTo` call if the app is capabable of handling the intent. Otherwise the app **SHOULD** call `navigateToError`. - -An app **MAY** receive a navigate call while it is already executing a navigate -call. - -An app **MUST** acknowledge receipt of each navigate call with either `navigateToResult` `navigateToError`. +An app **SHOULD** successfully handle the `navigateTo` call if the app is capabable +of handling the intent. Otherwise the app **SHOULD** throw an error. Platforms **MAY** decide to remove focus from or deactivate apps that do not -acknowledge the `navigateTo` call. +acknowledge the `navigateTo` call successfully. If an app receives multiple navigate calls in parallel, it **MAY** ignore all but the final call. From 32a1d0f6b01eeae9d609676c7cd850d401a34a94 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Tue, 11 Jun 2024 12:45:39 -0400 Subject: [PATCH 31/43] BREAKING CHANGE: First pass at Lifecycle 2.0 API schemas & tests --- package-lock.json | 2366 +++++------ package.json | 23 +- src/openrpc/_internal.json | 161 +- src/openrpc/accessibility.json | 466 +-- src/openrpc/account.json | 276 +- src/openrpc/acknowledge_challenge.json | 292 +- src/openrpc/activatable.json | 85 + src/openrpc/advertising.json | 652 +-- src/openrpc/application.json | 133 + src/openrpc/audio_descriptions.json | 106 +- src/openrpc/authentication.json | 470 ++- src/openrpc/capabilities.json | 1820 ++++----- src/openrpc/closed_captions.json | 1298 +++--- src/openrpc/device.json | 1621 ++++---- src/openrpc/discovery.json | 3587 +++++++++-------- src/openrpc/keyboard.json | 623 ++- src/openrpc/lifecycle.json | 644 ++- src/openrpc/localization.json | 962 ++--- src/openrpc/metrics.json | 2297 ++++++----- src/openrpc/parameters.json | 178 +- src/openrpc/pin_challenge.json | 344 +- src/openrpc/privacy.json | 1260 +++--- src/openrpc/profile.json | 200 +- src/openrpc/second_screen.json | 374 +- src/openrpc/secure_storage.json | 1144 +++--- src/openrpc/sleepable.json | 64 + src/openrpc/user_grants.json | 1064 ++--- src/openrpc/voice_guidance.json | 189 +- src/openrpc/wifi.json | 704 ++-- src/schemas/accessibility.json | 41 +- src/schemas/advertising.json | 23 + src/schemas/capabilities.json | 345 ++ src/schemas/discovery.json | 62 + src/schemas/entertainment.json | 336 ++ src/schemas/errors.json | 2 +- src/schemas/intents.json | 2275 +++++++++++ src/schemas/lifecycle.json | 59 + src/schemas/localization.json | 46 + src/schemas/secondscreen.json | 2 +- src/schemas/types.json | 194 + src/sdks/core/package.json | 38 +- src/sdks/core/sdk.config.json | 29 +- src/sdks/core/src/js/sdk/Device/index.mjs | 4 +- .../core/src/js/sdk/Lifecycle/defaults.mjs | 30 +- src/sdks/core/src/js/sdk/Lifecycle/index.mjs | 2 +- src/sdks/core/src/js/sdk/Metrics/index.mjs | 8 +- src/sdks/core/test/suite/declarations.test.ts | 18 +- src/sdks/core/test/suite/device.test.ts | 16 +- src/sdks/core/test/suite/discovery.test.ts | 10 +- src/sdks/core/test/suite/federation.test.ts | 69 +- .../core/test/suite/lazy-transport.test.ts | 53 +- src/sdks/core/test/suite/lifecycle.test.ts | 146 +- .../test/suite/listeners-transport.test.ts | 20 +- .../test/suite/synchronous-transport.test.ts | 72 +- src/sdks/manage/package.json | 34 +- .../test/suite/acknowledgeChallenge.test.ts | 21 +- .../manage/test/suite/closedCaptions.test.ts | 2 +- src/sdks/manage/test/suite/keyboard.test.ts | 33 +- .../manage/test/suite/pinChallenge.test.ts | 16 +- test/Setup.js | 15 + test/suite/basic.test.ts | 23 + tsconfig.json | 3 +- 62 files changed, 15468 insertions(+), 11982 deletions(-) create mode 100644 src/openrpc/activatable.json create mode 100644 src/openrpc/application.json create mode 100644 src/openrpc/sleepable.json create mode 100644 src/schemas/advertising.json create mode 100644 src/schemas/capabilities.json create mode 100644 src/schemas/discovery.json create mode 100644 src/schemas/entertainment.json create mode 100644 src/schemas/intents.json create mode 100644 src/schemas/lifecycle.json create mode 100644 src/schemas/localization.json create mode 100644 src/schemas/types.json create mode 100644 test/suite/basic.test.ts diff --git a/package-lock.json b/package-lock.json index f82e874d7..f0f372893 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "devDependencies": { "@commitlint/cli": "^17.0.3", "@commitlint/config-conventional": "^17.0.3", - "@firebolt-js/openrpc": "2.0.4", + "@firebolt-js/openrpc": "../firebolt-openrpc", "@firebolt-js/schemas": "1.0.0-next.0", "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", @@ -35,132 +35,93 @@ "typescript": "^4.6.4" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "../firebolt-openrpc": { + "name": "@firebolt-js/openrpc", + "version": "3.0.0-next.4", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "Apache-2.0", + "dependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^2.1.1", + "array.prototype.groupby": "^1.1.0", + "crocks": "^0.12.4", + "deepmerge": "^4.2.2", + "fs-extra": "^10.1.0", + "highland": "^2.13.5", + "mkdirp": "^0.5.6", + "node-fetch": "^3.2.10", + "nopt": "^5.0.0", + "util": "^0.12.4" + }, + "bin": { + "firebolt-openrpc": "src/cli.mjs" + }, + "devDependencies": { + "@commitlint/cli": "^17.1.2", + "@commitlint/config-conventional": "^17.1.0", + "@semantic-release/changelog": "^6.0.1", + "@semantic-release/git": "^10.0.1", + "@semantic-release/npm": "^9.0.1", + "husky": "^8.0.1", + "jest": "^27.3.1", + "semantic-release": "^19.0.5" } }, "node_modules/@ampproject/remapping": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", - "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@babel/code-frame": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.10.tgz", - "integrity": "sha512-/KKIMG4UEL35WmI9OlvMhurwtytjvXoFcGNrOvyG9zIzA8YmPjVtIZUf7b05+TPO7G7/GEmLHDaoCgACHl9hhA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.10", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.9.tgz", - "integrity": "sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.7.tgz", + "integrity": "sha512-qJzAIcv03PyaWqxRgO4mSU3lihncDT296vnyuE2O8uA4w3UHWI4S3hgeZd1L8W1Bft40w9JxJ2b412iDUFFRhw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.10.tgz", - "integrity": "sha512-fTmqbbUBAwCcre6zPzNngvsI0aNrPZe77AeqvDxWM9Nm+04RrJ3CAmGHA9f7lJQY6ZMhRztNemy4uslDxTX4Qw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.7.tgz", + "integrity": "sha512-nykK+LEK86ahTkX/3TgauT0ikKoNCfKHEaZYTUVupJdTLzGNvrblu4u6fa7DhZONAltdf8e662t/abY8idrd/g==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-compilation-targets": "^7.22.10", - "@babel/helper-module-transforms": "^7.22.9", - "@babel/helpers": "^7.22.10", - "@babel/parser": "^7.22.10", - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.10", - "@babel/types": "^7.22.10", - "convert-source-map": "^1.7.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helpers": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7", + "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", - "json5": "^2.2.2", + "json5": "^2.2.3", "semver": "^6.3.1" }, "engines": { @@ -171,6 +132,12 @@ "url": "https://opencollective.com/babel" } }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -181,14 +148,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.10.tgz", - "integrity": "sha512-79KIf7YiWjjdZ81JnLujDRApWtl7BxTqWD88+FFdQEIOG8LJ0etDOM7CXuIgGJa55sGOwZVwuEsaLEm0PJ5/+A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.7.tgz", + "integrity": "sha512-oipXieGC3i45Y1A41t4tAqpnEZWgB/lC6Ehh6+rOviR5XWpTtMmLN+fGjz9vOiNRt0p6RtO6DtD0pdU3vpqdSA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.10", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -196,14 +163,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.10.tgz", - "integrity": "sha512-JMSwHD4J7SLod0idLq5PKgI+6g/hLD/iuWBq08ZX49xE14VpVEojJ5rHWptpirV2j020MvypRLAXAO50igCJ5Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.7.tgz", + "integrity": "sha512-ctSdRHBi20qWOfy27RUb4Fhp07KSJ3sXcuSvTrXrc4aG8NSYDo1ici3Vhg9bg69y5bj0Mr1lh0aeEgTvc12rMg==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.5", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.24.7", + "@babel/helper-validator-option": "^7.24.7", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -221,62 +188,66 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.5.tgz", - "integrity": "sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.22.5.tgz", - "integrity": "sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.5.tgz", - "integrity": "sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.22.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.9.tgz", - "integrity": "sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.7.tgz", + "integrity": "sha512-1fuJEwIrp+97rM4RWdO+qrRsZlAeL1lQJoPqtCYWv0NL115XM93hIH4CSRln2w52SqvmY5hqdtauB6QFCDiZNQ==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-module-imports": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.5" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -286,88 +257,89 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.7.tgz", + "integrity": "sha512-Rq76wjt7yz9AAc1KnlRKNAi/dMSVWgDRx43FHoJEbcYU6xOWaE2dVPwcdTukJrjxS65GITyfbvEYHvkirZ6uEg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.7.tgz", + "integrity": "sha512-7MbVt6xrwFQbunH2DNQsAP5sTGxfqQtErvBIvIMi6EQnbgUOuVYanvREcmFrOPhoXBrTtjhhP+lW+o5UfK+tDg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz", - "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz", - "integrity": "sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.7.tgz", + "integrity": "sha512-yy1/KvjhV/ZCL+SM7hBrvnZJ3ZuT9OuZgIJAGpPEToANvc3iM6iDvBnRjtElWibHU6n8/LPR/EjX9EtIEYO3pw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.10.tgz", - "integrity": "sha512-a41J4NW8HyZa1I1vAndrraTlPZ/eZoga2ZgS7fEr0tZJGVU4xqdE80CEm0CcNjha5EZ8fTBYLKHF0kqDUuAwQw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.7.tgz", + "integrity": "sha512-NlmJJtvcw72yRJRcnCmGvSi+3jDEg8qFu3z0AFoymmzLx5ERVWyzd9kVXr7Th9/8yIJi2Zc6av4Tqz3wFs8QWg==", "dev": true, "dependencies": { - "@babel/template": "^7.22.5", - "@babel/traverse": "^7.22.10", - "@babel/types": "^7.22.10" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz", - "integrity": "sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -436,9 +408,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.22.10.tgz", - "integrity": "sha512-lNbdGsQb9ekfsnjFGhEiF4hfFqGgfOP3H3d27re3n+CGhNuTSUEQdfWk556sTLNTloczcdM5TYF2LhzmDQKyvQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.7.tgz", + "integrity": "sha512-9uUYRm6OqQrCqQdG1iCBwBPZgN8ciDBro2nIOFaiRz1/BCxaI7CNvQbDHvsArAC7Tw9Hda/B3U+6ui9u4HWXPw==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -595,12 +567,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.22.5.tgz", - "integrity": "sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", + "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -610,34 +582,34 @@ } }, "node_modules/@babel/template": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", - "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.5", - "@babel/parser": "^7.22.5", - "@babel/types": "^7.22.5" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.22.10.tgz", - "integrity": "sha512-Q/urqV4pRByiNNpb/f5OSv28ZlGJiFiiTh+GAHktbIrkPhPbl90+uW6SmpoLyZqutrg9AEaEf3Q/ZBRHBXgxig==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.22.10", - "@babel/generator": "^7.22.10", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.22.10", - "@babel/types": "^7.22.10", - "debug": "^4.1.0", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.7.tgz", + "integrity": "sha512-yb65Ed5S/QAcewNPh0nZczy9JdYXkkAbIsEo+P7BE7yO3txAY30Y/oPa3QkQ5It3xVG2kpKMg9MsdxZaO31uKA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -645,13 +617,13 @@ } }, "node_modules/@babel/types": { - "version": "7.22.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.22.10.tgz", - "integrity": "sha512-obaoigiLrlDZ7TUQln/8m4mSqIW2QFeOrCQc9r+xsaHGNoplVNYlRVpsfE8Vj35GEm2ZH4ZhrNYogs/3fj85kg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.7.tgz", + "integrity": "sha512-XEFXSlxiG5td2EJRe8vOmRbaXVgfcBlszKujvVmWIK/UpywWljQCfzAv3RQCGujWQ1RD4YYWEAqDXfuJiy8f5Q==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.5", + "@babel/helper-string-parser": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -675,16 +647,16 @@ } }, "node_modules/@commitlint/cli": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.6.7.tgz", - "integrity": "sha512-nzZmfO5KIOupYppn1MsnYX/80I+KDlxiwkks3CJT0XT+t34UgqGi3eSyEuzgcIjPlORk5/GMaAEiys78iLfGMg==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-17.8.1.tgz", + "integrity": "sha512-ay+WbzQesE0Rv4EQKfNbSMiJJ12KdKTDzIt0tcK4k11FdsWmtwP0Kp1NWMOUswfIWo6Eb7p7Ln721Nx9FLNBjg==", "dev": true, "dependencies": { - "@commitlint/format": "^17.4.4", - "@commitlint/lint": "^17.6.7", - "@commitlint/load": "^17.6.7", - "@commitlint/read": "^17.5.1", - "@commitlint/types": "^17.4.4", + "@commitlint/format": "^17.8.1", + "@commitlint/lint": "^17.8.1", + "@commitlint/load": "^17.8.1", + "@commitlint/read": "^17.8.1", + "@commitlint/types": "^17.8.1", "execa": "^5.0.0", "lodash.isfunction": "^3.0.9", "resolve-from": "5.0.0", @@ -699,24 +671,24 @@ } }, "node_modules/@commitlint/config-conventional": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-17.6.7.tgz", - "integrity": "sha512-4oTpEUC0HRM54QRHBPMOJW1pETp7usxXn9RuNYNWHcmu8wi1mpws95hvS20u2n6HtIkTn0jfn7vHioCm4AGUTw==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-17.8.1.tgz", + "integrity": "sha512-NxCOHx1kgneig3VLauWJcDWS40DVjg7nKOpBEEK9E5fjJpQqLCilcnKkIIjdBH98kEO1q3NpE5NSrZ2kl/QGJg==", "dev": true, "dependencies": { - "conventional-changelog-conventionalcommits": "^5.0.0" + "conventional-changelog-conventionalcommits": "^6.1.0" }, "engines": { "node": ">=v14" } }, "node_modules/@commitlint/config-validator": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.6.7.tgz", - "integrity": "sha512-vJSncmnzwMvpr3lIcm0I8YVVDJTzyjy7NZAeXbTXy+MPUdAr9pKyyg7Tx/ebOQ9kqzE6O9WT6jg2164br5UdsQ==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-17.8.1.tgz", + "integrity": "sha512-UUgUC+sNiiMwkyiuIFR7JG2cfd9t/7MV8VB4TZ+q02ZFkHoduUS4tJGsCBWvBOGD9Btev6IecPMvlWUfJorkEA==", "dev": true, "dependencies": { - "@commitlint/types": "^17.4.4", + "@commitlint/types": "^17.8.1", "ajv": "^8.11.0" }, "engines": { @@ -724,15 +696,15 @@ } }, "node_modules/@commitlint/config-validator/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -746,12 +718,12 @@ "dev": true }, "node_modules/@commitlint/ensure": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.6.7.tgz", - "integrity": "sha512-mfDJOd1/O/eIb/h4qwXzUxkmskXDL9vNPnZ4AKYKiZALz4vHzwMxBSYtyL2mUIDeU9DRSpEUins8SeKtFkYHSw==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-17.8.1.tgz", + "integrity": "sha512-xjafwKxid8s1K23NFpL8JNo6JnY/ysetKo8kegVM7c8vs+kWLP8VrQq+NbhgVlmCojhEDbzQKp4eRXSjVOGsow==", "dev": true, "dependencies": { - "@commitlint/types": "^17.4.4", + "@commitlint/types": "^17.8.1", "lodash.camelcase": "^4.3.0", "lodash.kebabcase": "^4.1.1", "lodash.snakecase": "^4.1.1", @@ -763,21 +735,21 @@ } }, "node_modules/@commitlint/execute-rule": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.4.0.tgz", - "integrity": "sha512-LIgYXuCSO5Gvtc0t9bebAMSwd68ewzmqLypqI2Kke1rqOqqDbMpYcYfoPfFlv9eyLIh4jocHWwCK5FS7z9icUA==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-17.8.1.tgz", + "integrity": "sha512-JHVupQeSdNI6xzA9SqMF+p/JjrHTcrJdI02PwesQIDCIGUrv04hicJgCcws5nzaoZbROapPs0s6zeVHoxpMwFQ==", "dev": true, "engines": { "node": ">=v14" } }, "node_modules/@commitlint/format": { - "version": "17.4.4", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-17.4.4.tgz", - "integrity": "sha512-+IS7vpC4Gd/x+uyQPTAt3hXs5NxnkqAZ3aqrHd5Bx/R9skyCAWusNlNbw3InDbAK6j166D9asQM8fnmYIa+CXQ==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-17.8.1.tgz", + "integrity": "sha512-f3oMTyZ84M9ht7fb93wbCKmWxO5/kKSbwuYvS867duVomoOsgrgljkGGIztmT/srZnaiGbaK8+Wf8Ik2tSr5eg==", "dev": true, "dependencies": { - "@commitlint/types": "^17.4.4", + "@commitlint/types": "^17.8.1", "chalk": "^4.1.0" }, "engines": { @@ -785,44 +757,44 @@ } }, "node_modules/@commitlint/is-ignored": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.6.7.tgz", - "integrity": "sha512-vqyNRqtbq72P2JadaoWiuoLtXIs9SaAWDqdtef6G2zsoXqKFc7vqj1f+thzVgosXG3X/5K9jNp+iYijmvOfc/g==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-17.8.1.tgz", + "integrity": "sha512-UshMi4Ltb4ZlNn4F7WtSEugFDZmctzFpmbqvpyxD3la510J+PLcnyhf9chs7EryaRFJMdAKwsEKfNK0jL/QM4g==", "dev": true, "dependencies": { - "@commitlint/types": "^17.4.4", - "semver": "7.5.2" + "@commitlint/types": "^17.8.1", + "semver": "7.5.4" }, "engines": { "node": ">=v14" } }, "node_modules/@commitlint/lint": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.6.7.tgz", - "integrity": "sha512-TW+AozfuOFMrHn+jdwtz0IWu8REKFp0eryOvoBp2r8IXNc4KihKB1spAiUB6SFyHD6hVVeolz12aHnJ3Mb+xVQ==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-17.8.1.tgz", + "integrity": "sha512-aQUlwIR1/VMv2D4GXSk7PfL5hIaFSfy6hSHV94O8Y27T5q+DlDEgd/cZ4KmVI+MWKzFfCTiTuWqjfRSfdRllCA==", "dev": true, "dependencies": { - "@commitlint/is-ignored": "^17.6.7", - "@commitlint/parse": "^17.6.7", - "@commitlint/rules": "^17.6.7", - "@commitlint/types": "^17.4.4" + "@commitlint/is-ignored": "^17.8.1", + "@commitlint/parse": "^17.8.1", + "@commitlint/rules": "^17.8.1", + "@commitlint/types": "^17.8.1" }, "engines": { "node": ">=v14" } }, "node_modules/@commitlint/load": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.6.7.tgz", - "integrity": "sha512-QZ2rJTbX55BQdYrCm/p6+hh/pFBgC9nTJxfsrK6xRPe2thiQzHN0AQDBqBwAirn6gIkHrjIbCbtAE6kiDYLjrw==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-17.8.1.tgz", + "integrity": "sha512-iF4CL7KDFstP1kpVUkT8K2Wl17h2yx9VaR1ztTc8vzByWWcbO/WaKwxsnCOqow9tVAlzPfo1ywk9m2oJ9ucMqA==", "dev": true, "dependencies": { - "@commitlint/config-validator": "^17.6.7", - "@commitlint/execute-rule": "^17.4.0", - "@commitlint/resolve-extends": "^17.6.7", - "@commitlint/types": "^17.4.4", - "@types/node": "*", + "@commitlint/config-validator": "^17.8.1", + "@commitlint/execute-rule": "^17.8.1", + "@commitlint/resolve-extends": "^17.8.1", + "@commitlint/types": "^17.8.1", + "@types/node": "20.5.1", "chalk": "^4.1.0", "cosmiconfig": "^8.0.0", "cosmiconfig-typescript-loader": "^4.0.0", @@ -831,43 +803,43 @@ "lodash.uniq": "^4.5.0", "resolve-from": "^5.0.0", "ts-node": "^10.8.1", - "typescript": "^4.6.4 || ^5.0.0" + "typescript": "^4.6.4 || ^5.2.2" }, "engines": { "node": ">=v14" } }, "node_modules/@commitlint/message": { - "version": "17.4.2", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.4.2.tgz", - "integrity": "sha512-3XMNbzB+3bhKA1hSAWPCQA3lNxR4zaeQAQcHj0Hx5sVdO6ryXtgUBGGv+1ZCLMgAPRixuc6en+iNAzZ4NzAa8Q==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-17.8.1.tgz", + "integrity": "sha512-6bYL1GUQsD6bLhTH3QQty8pVFoETfFQlMn2Nzmz3AOLqRVfNNtXBaSY0dhZ0dM6A2MEq4+2d7L/2LP8TjqGRkA==", "dev": true, "engines": { "node": ">=v14" } }, "node_modules/@commitlint/parse": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-17.6.7.tgz", - "integrity": "sha512-ibO03BgEns+JJpohpBZYD49mCdSNMg6fTv7vA5yqzEFWkBQk5NWhEBw2yG+Z1UClStIRkMkAYyI2HzoQG9tCQQ==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-17.8.1.tgz", + "integrity": "sha512-/wLUickTo0rNpQgWwLPavTm7WbwkZoBy3X8PpkUmlSmQJyWQTj0m6bDjiykMaDt41qcUbfeFfaCvXfiR4EGnfw==", "dev": true, "dependencies": { - "@commitlint/types": "^17.4.4", - "conventional-changelog-angular": "^5.0.11", - "conventional-commits-parser": "^3.2.2" + "@commitlint/types": "^17.8.1", + "conventional-changelog-angular": "^6.0.0", + "conventional-commits-parser": "^4.0.0" }, "engines": { "node": ">=v14" } }, "node_modules/@commitlint/read": { - "version": "17.5.1", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-17.5.1.tgz", - "integrity": "sha512-7IhfvEvB//p9aYW09YVclHbdf1u7g7QhxeYW9ZHSO8Huzp8Rz7m05aCO1mFG7G8M+7yfFnXB5xOmG18brqQIBg==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-17.8.1.tgz", + "integrity": "sha512-Fd55Oaz9irzBESPCdMd8vWWgxsW3OWR99wOntBDHgf9h7Y6OOHjWEdS9Xzen1GFndqgyoaFplQS5y7KZe0kO2w==", "dev": true, "dependencies": { - "@commitlint/top-level": "^17.4.0", - "@commitlint/types": "^17.4.4", + "@commitlint/top-level": "^17.8.1", + "@commitlint/types": "^17.8.1", "fs-extra": "^11.0.0", "git-raw-commits": "^2.0.11", "minimist": "^1.2.6" @@ -877,13 +849,13 @@ } }, "node_modules/@commitlint/resolve-extends": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.6.7.tgz", - "integrity": "sha512-PfeoAwLHtbOaC9bGn/FADN156CqkFz6ZKiVDMjuC2N5N0740Ke56rKU7Wxdwya8R8xzLK9vZzHgNbuGhaOVKIg==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-17.8.1.tgz", + "integrity": "sha512-W/ryRoQ0TSVXqJrx5SGkaYuAaE/BUontL1j1HsKckvM6e5ZaG0M9126zcwL6peKSuIetJi7E87PRQF8O86EW0Q==", "dev": true, "dependencies": { - "@commitlint/config-validator": "^17.6.7", - "@commitlint/types": "^17.4.4", + "@commitlint/config-validator": "^17.8.1", + "@commitlint/types": "^17.8.1", "import-fresh": "^3.0.0", "lodash.mergewith": "^4.6.2", "resolve-from": "^5.0.0", @@ -894,15 +866,15 @@ } }, "node_modules/@commitlint/rules": { - "version": "17.6.7", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-17.6.7.tgz", - "integrity": "sha512-x/SDwDTN3w3Gr5xkhrIORu96rlKCc8ZLYEMXRqi9+MB33st2mKcGvKa5uJuigHlbl3xm75bAAubATrodVrjguQ==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-17.8.1.tgz", + "integrity": "sha512-2b7OdVbN7MTAt9U0vKOYKCDsOvESVXxQmrvuVUZ0rGFMCrCPJWWP1GJ7f0lAypbDAhaGb8zqtdOr47192LBrIA==", "dev": true, "dependencies": { - "@commitlint/ensure": "^17.6.7", - "@commitlint/message": "^17.4.2", - "@commitlint/to-lines": "^17.4.0", - "@commitlint/types": "^17.4.4", + "@commitlint/ensure": "^17.8.1", + "@commitlint/message": "^17.8.1", + "@commitlint/to-lines": "^17.8.1", + "@commitlint/types": "^17.8.1", "execa": "^5.0.0" }, "engines": { @@ -910,18 +882,18 @@ } }, "node_modules/@commitlint/to-lines": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-17.4.0.tgz", - "integrity": "sha512-LcIy/6ZZolsfwDUWfN1mJ+co09soSuNASfKEU5sCmgFCvX5iHwRYLiIuoqXzOVDYOy7E7IcHilr/KS0e5T+0Hg==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-17.8.1.tgz", + "integrity": "sha512-LE0jb8CuR/mj6xJyrIk8VLz03OEzXFgLdivBytoooKO5xLt5yalc8Ma5guTWobw998sbR3ogDd+2jed03CFmJA==", "dev": true, "engines": { "node": ">=v14" } }, "node_modules/@commitlint/top-level": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-17.4.0.tgz", - "integrity": "sha512-/1loE/g+dTTQgHnjoCy0AexKAEFyHsR2zRB4NWrZ6lZSMIxAhBJnmCqwao7b4H8888PsfoTBCLBYIw8vGnej8g==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-17.8.1.tgz", + "integrity": "sha512-l6+Z6rrNf5p333SHfEte6r+WkOxGlWK4bLuZKbtf/2TXRN+qhrvn1XE63VhD8Oe9oIHQ7F7W1nG2k/TJFhx2yA==", "dev": true, "dependencies": { "find-up": "^5.0.0" @@ -931,9 +903,9 @@ } }, "node_modules/@commitlint/types": { - "version": "17.4.4", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.4.4.tgz", - "integrity": "sha512-amRN8tRLYOsxRr6mTnGGGvB5EmW/4DDjLMgiwK3CCVEmN6Sr/6xePGEpWaspKkckILuUORCwe6VfDBw6uj4axQ==", + "version": "17.8.1", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-17.8.1.tgz", + "integrity": "sha512-PXDQXkAmiMEG162Bqdh9ChML/GJZo6vU+7F03ALKDK8zYc6SuAr47LjG7hGYRqUOz+WK0dU7bQ0xzuqFMdxzeQ==", "dev": true, "dependencies": { "chalk": "^4.1.0" @@ -1045,95 +1017,8 @@ "link": true }, "node_modules/@firebolt-js/openrpc": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@firebolt-js/openrpc/-/openrpc-2.0.4.tgz", - "integrity": "sha512-jMdLillhMZA1hXol4KGb68XMT44TnbDoiJZLvcVOqT6eH/SgpPb5NSDFsGTu9awGy+eYZh/eIdWg+prwUvmoVQ==", - "dev": true, - "dependencies": { - "ajv": "^8.3.0", - "ajv-formats": "^2.1.0", - "array.prototype.groupby": "^1.1.0", - "crocks": "^0.12.4", - "deepmerge": "^4.2.2", - "fs-extra": "^10.1.0", - "highland": "^2.13.5", - "mkdirp": "^0.5.6", - "node-fetch": "^3.2.10", - "nopt": "^5.0.0", - "util": "^0.12.4" - }, - "bin": { - "firebolt-openrpc": "src/cli.mjs" - } - }, - "node_modules/@firebolt-js/openrpc/node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/@firebolt-js/openrpc/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@firebolt-js/openrpc/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@firebolt-js/openrpc/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/@firebolt-js/openrpc/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/@firebolt-js/openrpc/node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } + "resolved": "../firebolt-openrpc", + "link": true }, "node_modules/@firebolt-js/schemas": { "version": "1.0.0-next.0", @@ -1147,15 +1032,15 @@ } }, "node_modules/@firebolt-js/schemas/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -1551,32 +1436,32 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" @@ -1589,9 +1474,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.19", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.19.tgz", - "integrity": "sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1689,9 +1574,9 @@ } }, "node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", + "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==", "dev": true }, "node_modules/@octokit/plugin-paginate-rest": { @@ -1773,48 +1658,6 @@ "node": ">= 14" } }, - "node_modules/@octokit/request/node_modules/node-fetch": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", - "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/@octokit/request/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/@octokit/request/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/@octokit/request/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/@octokit/tsconfig": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@octokit/tsconfig/-/tsconfig-1.0.2.tgz", @@ -1910,6 +1753,39 @@ "semantic-release": ">=18.0.0-beta.1" } }, + "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@semantic-release/error": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", @@ -1973,9 +1849,9 @@ } }, "node_modules/@semantic-release/github/node_modules/agent-base": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", - "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "dependencies": { "debug": "^4.3.4" @@ -1985,9 +1861,9 @@ } }, "node_modules/@semantic-release/github/node_modules/http-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", - "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "dependencies": { "agent-base": "^7.1.0", @@ -1998,9 +1874,9 @@ } }, "node_modules/@semantic-release/github/node_modules/https-proxy-agent": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.1.tgz", - "integrity": "sha512-Eun8zV0kcYS1g19r78osiQLEFIRspRUDd9tIfBCTBPBeMieF/EsJNL8VI3xOIdYRDEkjQnqOYPsZ2DsWsVsFwQ==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, "dependencies": { "agent-base": "^7.0.2", @@ -2061,6 +1937,39 @@ "semantic-release": ">=18.0.0-beta.1" } }, + "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-angular": { + "version": "5.0.13", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", + "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "dev": true, + "dependencies": { + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@sinclair/typebox": { "version": "0.24.51", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.51.tgz", @@ -2095,9 +2004,9 @@ } }, "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", "dev": true }, "node_modules/@tsconfig/node12": { @@ -2119,9 +2028,9 @@ "dev": true }, "node_modules/@types/babel__core": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz", - "integrity": "sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==", + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, "dependencies": { "@babel/parser": "^7.20.7", @@ -2132,18 +2041,18 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, "dependencies": { "@babel/parser": "^7.1.0", @@ -2151,42 +2060,42 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.1.tgz", - "integrity": "sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, "dependencies": { "@babel/types": "^7.20.7" } }, "node_modules/@types/graceful-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.6.tgz", - "integrity": "sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==", + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", "dev": true }, "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dev": true, "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dev": true, "dependencies": { "@types/istanbul-lib-report": "*" @@ -2210,27 +2119,27 @@ "dev": true }, "node_modules/@types/minimist": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz", - "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", "dev": true }, "node_modules/@types/node": { - "version": "20.4.8", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.8.tgz", - "integrity": "sha512-0mHckf6D2DiIAzh8fM8f3HQCvMKDpK94YQ0DSVkfWTG9BZleYIWudw9cJxX8oCk9bM+vAkDyujDV6dmKHbvQpg==", + "version": "20.5.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz", + "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==", "dev": true }, "node_modules/@types/normalize-package-data": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz", - "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==", + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", "dev": true }, "node_modules/@types/parse5": { @@ -2246,36 +2155,37 @@ "dev": true }, "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", "dev": true }, "node_modules/@types/tough-cookie": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz", - "integrity": "sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", "dev": true }, "node_modules/@types/yargs": { - "version": "17.0.24", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", - "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dev": true, "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", "dev": true }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", "dev": true }, "node_modules/abbrev": { @@ -2288,9 +2198,9 @@ } }, "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2398,15 +2308,15 @@ } }, "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -2505,13 +2415,16 @@ "dev": true }, "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2524,15 +2437,16 @@ "dev": true }, "node_modules/array-includes": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", - "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", "is-string": "^1.0.7" }, "engines": { @@ -2552,14 +2466,14 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", - "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -2570,14 +2484,14 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.1.tgz", - "integrity": "sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", "es-shim-unscopables": "^1.0.0" }, "engines": { @@ -2587,30 +2501,19 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.groupby": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array.prototype.groupby/-/array.prototype.groupby-1.1.0.tgz", - "integrity": "sha512-p+QtvmnNEBqajQWLG3kPls8cLPBfJgvayzc/qplsX8Vchtevtq+TR2gyav5xs5h+mdUjfgOvYoCdTsVxu3b5sA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.1" - } - }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz", - "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", "is-shared-array-buffer": "^1.0.2" }, "engines": { @@ -2645,10 +2548,13 @@ "dev": true }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -2776,12 +2682,12 @@ } }, "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "fill-range": "^7.1.1" }, "engines": { "node": ">=8" @@ -2794,9 +2700,9 @@ "dev": true }, "node_modules/browserslist": { - "version": "4.21.10", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.10.tgz", - "integrity": "sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==", + "version": "4.23.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.1.tgz", + "integrity": "sha512-TUfofFo/KsK/bWZ9TWQ5O26tsWW4Uhmt8IYklbnUa70udB6P2wA7w7o4PY4muaEPBQaAX+CEnmmIA41NVHtPVw==", "dev": true, "funding": [ { @@ -2813,10 +2719,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001517", - "electron-to-chromium": "^1.4.477", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.11" + "caniuse-lite": "^1.0.30001629", + "electron-to-chromium": "^1.4.796", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.16" }, "bin": { "browserslist": "cli.js" @@ -2841,13 +2747,19 @@ "dev": true }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2889,9 +2801,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001519", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001519.tgz", - "integrity": "sha512-0QHgqR+Jv4bxHMp8kZ1Kn8CH55OikjKJ6JmKkZYP1F3D7w+lnFXF70nG5eNfsZS89jadi5Ywy5UCSKLAglIRkg==", + "version": "1.0.30001632", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001632.tgz", + "integrity": "sha512-udx3o7yHJfUxMLkGohMlVHCvFvWmirKh9JAH/d7WOLPetlH+LTL5cocMZ0t7oZx/mdlOWXti97xLZWc8uURRHg==", "dev": true, "funding": [ { @@ -2947,9 +2859,9 @@ } }, "node_modules/ci-info": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz", - "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, "funding": [ { @@ -2962,9 +2874,9 @@ } }, "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.3.1.tgz", + "integrity": "sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==", "dev": true }, "node_modules/clean-stack": { @@ -2977,9 +2889,9 @@ } }, "node_modules/cli-table3": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", - "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", "dev": true, "dependencies": { "string-width": "^4.2.0" @@ -3076,32 +2988,29 @@ "ini": "^1.3.4", "proto-list": "~1.2.1" } - }, - "node_modules/conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + }, + "node_modules/conventional-changelog-angular": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-6.0.0.tgz", + "integrity": "sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==", "dev": true, "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "compare-func": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/conventional-changelog-conventionalcommits": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-5.0.0.tgz", - "integrity": "sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-6.1.0.tgz", + "integrity": "sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==", "dev": true, "dependencies": { - "compare-func": "^2.0.0", - "lodash": "^4.17.15", - "q": "^1.5.1" + "compare-func": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/conventional-changelog-writer": { @@ -3150,23 +3059,21 @@ } }, "node_modules/conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-4.0.0.tgz", + "integrity": "sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==", "dev": true, "dependencies": { "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" + "JSONStream": "^1.3.5", + "meow": "^8.1.2", + "split2": "^3.2.2" }, "bin": { "conventional-commits-parser": "cli.js" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/convert-source-map": { @@ -3182,14 +3089,14 @@ "dev": true }, "node_modules/cosmiconfig": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", "dev": true, "dependencies": { - "import-fresh": "^3.2.1", + "import-fresh": "^3.3.0", "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", + "parse-json": "^5.2.0", "path-type": "^4.0.0" }, "engines": { @@ -3197,6 +3104,14 @@ }, "funding": { "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/cosmiconfig-typescript-loader": { @@ -3220,12 +3135,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/crocks": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/crocks/-/crocks-0.12.4.tgz", - "integrity": "sha512-paln6xJUrR9e/OWMFsyTi4dLyr+q99C5f7PQbGgSDHtwsfW0sCNZvnpHzvniI2dAE0uoBgeIP1Ukmme8Z0HxxA==", - "dev": true - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -3282,15 +3191,6 @@ "node": ">=8" } }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/data-urls": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", @@ -3318,6 +3218,57 @@ "node": ">=12" } }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/dateformat": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", @@ -3328,9 +3279,9 @@ } }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -3414,12 +3365,30 @@ "node": ">=0.10.0" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -3537,6 +3506,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", "dev": true, "dependencies": { "webidl-conversions": "^7.0.0" @@ -3567,9 +3537,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.487", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.487.tgz", - "integrity": "sha512-XbCRs/34l31np/p33m+5tdBrdXu9jJkZxSbNxj5I0H1KtV2ZMSB+i/HYqDiRzHaFx2T5EdytjoBRe8QRJE2vQg==", + "version": "1.4.796", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.796.tgz", + "integrity": "sha512-NglN/xprcM+SHD2XCli4oC6bWe6kHoytcyLKCWXmRL854F0qhPhaYgUswUsglnPxYaNQIg2uMY4BvaomIf3kLA==", "dev": true }, "node_modules/emittery": { @@ -3627,50 +3597,57 @@ } }, "node_modules/es-abstract": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz", - "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.1", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", "globalthis": "^1.0.3", "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", + "is-shared-array-buffer": "^1.0.3", "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", + "is-typed-array": "^1.1.13", "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", + "object-inspect": "^1.13.1", "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "safe-array-concat": "^1.0.0", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.7", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.10" + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -3679,27 +3656,60 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { @@ -3720,9 +3730,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -3883,9 +3893,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", - "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", "dev": true, "dependencies": { "debug": "^3.2.7" @@ -4197,12 +4207,12 @@ } }, "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.4.tgz", - "integrity": "sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -4468,9 +4478,9 @@ "dev": true }, "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", @@ -4496,9 +4506,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", - "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -4513,29 +4523,6 @@ "bser": "2.1.1" } }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -4564,9 +4551,9 @@ } }, "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { "to-regex-range": "^5.0.1" @@ -4607,12 +4594,13 @@ } }, "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, "dependencies": { - "flatted": "^3.1.0", + "flatted": "^3.2.9", + "keyv": "^4.5.3", "rimraf": "^3.0.2" }, "engines": { @@ -4620,9 +4608,9 @@ } }, "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", "dev": true }, "node_modules/for-each": { @@ -4648,18 +4636,6 @@ "node": ">= 6" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -4691,9 +4667,9 @@ ] }, "node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -4711,9 +4687,9 @@ "dev": true }, "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "hasInstallScript": true, "optional": true, @@ -4725,21 +4701,24 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { "node": ">= 0.4" @@ -4782,15 +4761,19 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -4830,13 +4813,14 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" @@ -4901,6 +4885,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -4951,12 +4936,13 @@ } }, "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -5034,13 +5020,10 @@ } }, "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, "engines": { "node": ">= 0.4.0" } @@ -5064,21 +5047,21 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", "dev": true, "engines": { "node": ">= 0.4" @@ -5100,12 +5083,12 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -5114,13 +5097,16 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/highland": { - "version": "2.13.5", - "resolved": "https://registry.npmjs.org/highland/-/highland-2.13.5.tgz", - "integrity": "sha512-dn2flPapIIAa4BtkB2ahjshg8iSJtrJtdhEb9/oiOrS5HMQTR/GuhFpqJ+11YBdtnl3AwWKvbZd1Uxr8uAmA7A==", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "dependencies": { - "util-deprecate": "^1.0.2" + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/hook-std": { @@ -5244,9 +5230,9 @@ } }, "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "engines": { "node": ">= 4" @@ -5330,6 +5316,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "dependencies": { "once": "^1.3.0", @@ -5349,13 +5336,13 @@ "dev": true }, "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "hasown": "^2.0.0", "side-channel": "^1.0.4" }, "engines": { @@ -5378,14 +5365,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -5394,20 +5381,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -5455,12 +5428,27 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5508,21 +5496,6 @@ "node": ">=6" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -5536,9 +5509,9 @@ } }, "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "engines": { "node": ">= 0.4" @@ -5639,12 +5612,15 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -5705,12 +5681,12 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.11" + "which-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -5760,9 +5736,9 @@ } }, "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { "node": ">=8" @@ -5822,9 +5798,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", - "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { "html-escaper": "^2.0.0", @@ -6493,6 +6469,12 @@ "node": ">=4" } }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -6587,6 +6569,15 @@ "node": ">=4.0" } }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -6823,39 +6814,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/make-dir/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-dir/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/make-error": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", @@ -6916,13 +6874,10 @@ } }, "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.0.tgz", - "integrity": "sha512-kzRaCqXnpzWs+3z5ABPQiVke+iq0KXkHo8xiWV4RPTi5Yli0l97BEQuhXV1s7+aSU/fu1kUuxgS4MsQ0fRuygw==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", "dev": true, - "dependencies": { - "type-fest": "^3.0.0" - }, "engines": { "node": ">=14.16" }, @@ -6942,18 +6897,6 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/marked-terminal/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/meow": { "version": "8.1.2", "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", @@ -7007,12 +6950,12 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", "dev": true, "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -7153,25 +7096,6 @@ "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", "dev": true }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, "node_modules/node-emoji": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", @@ -7182,21 +7106,45 @@ } }, "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" + "whatwg-url": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "4.x || >=6.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/node-int64": { @@ -7206,15 +7154,15 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", "dev": true }, "node_modules/nopt": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz", - "integrity": "sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", "dev": true, "dependencies": { "abbrev": "^2.0.0" @@ -9841,9 +9789,9 @@ "license": "ISC" }, "node_modules/nwsapi": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", - "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.10.tgz", + "integrity": "sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==", "dev": true }, "node_modules/object-assign": { @@ -9856,9 +9804,9 @@ } }, "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9874,13 +9822,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -9892,28 +9840,29 @@ } }, "node_modules/object.entries": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.6.tgz", - "integrity": "sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" } }, "node_modules/object.fromentries": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.6.tgz", - "integrity": "sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -9923,27 +9872,31 @@ } }, "node_modules/object.hasown": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.2.tgz", - "integrity": "sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", "dev": true, "dependencies": { - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object.values": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", - "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -9977,17 +9930,17 @@ } }, "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", "levn": "^0.4.1", "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, "engines": { "node": ">= 0.8.0" @@ -10162,9 +10115,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -10420,6 +10373,15 @@ "node": ">=4" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -10429,6 +10391,21 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.1.tgz", + "integrity": "sha512-7CAwy5dRsxs8PHXT3twixW9/OEll8MLE0VRPCJyl7CkS6VHGPSlsVaWTiASPTyGyYRyApxlaWTzwUxVNrhcwDg==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/pretty-format": { "version": "28.1.3", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", @@ -10518,9 +10495,9 @@ "dev": true }, "node_modules/punycode": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", - "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "engines": { "node": ">=6" @@ -10596,9 +10573,9 @@ } }, "node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, "node_modules/read-pkg": { @@ -10768,14 +10745,15 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -10833,9 +10811,9 @@ "dev": true }, "node_modules/resolve": { - "version": "1.22.4", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz", - "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "dependencies": { "is-core-module": "^2.13.0", @@ -10905,6 +10883,7 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "dependencies": { "glob": "^7.1.3" @@ -10940,13 +10919,13 @@ } }, "node_modules/safe-array-concat": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz", - "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", "has-symbols": "^1.0.3", "isarray": "^2.0.5" }, @@ -10970,15 +10949,18 @@ "dev": true }, "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", "is-regex": "^1.1.4" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -11089,9 +11071,9 @@ } }, "node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -11154,6 +11136,38 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -11176,14 +11190,18 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11351,9 +11369,9 @@ } }, "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true }, "node_modules/spdx-expression-parse": { @@ -11367,9 +11385,9 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.13", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz", - "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==", + "version": "3.0.18", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", "dev": true }, "node_modules/split": { @@ -11676,33 +11694,41 @@ } }, "node_modules/string.prototype.matchall": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.8.tgz", - "integrity": "sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==", + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "get-intrinsic": "^1.1.3", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "regexp.prototype.flags": "^1.4.3", - "side-channel": "^1.0.4" + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trim": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz", - "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==", + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -11712,28 +11738,31 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -11837,9 +11866,9 @@ "dev": true }, "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "dev": true, "dependencies": { "ajv": "^8.0.1", @@ -11853,15 +11882,15 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", "json-schema-traverse": "^1.0.0", "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "uri-js": "^4.4.1" }, "funding": { "type": "github", @@ -12016,9 +12045,9 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", - "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dev": true, "dependencies": { "psl": "^1.1.33", @@ -12052,10 +12081,18 @@ } }, "node_modules/traverse": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.7.tgz", - "integrity": "sha512-/y956gpUo9ZNCb99YjxG7OaslxZWHfCHAUUfshwqOXmxUIvqLjVO581BT+gM59+QV9tFe6/CGG53tsA1Y7RSdg==", + "version": "0.6.9", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.9.tgz", + "integrity": "sha512-7bBrcF+/LQzSgFmT0X5YclVqQxtv7TDJ1f8Wj7ibBu/U6BMLeOpUxuZjV7rMc44UtKxlnMFigdhFAIszSX1DMg==", "dev": true, + "dependencies": { + "gopd": "^1.0.1", + "typedarray.prototype.slice": "^1.0.3", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -12070,9 +12107,9 @@ } }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -12113,18 +12150,18 @@ } }, "node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", + "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", "dev": true, "engines": { "node": ">=0.4.0" } }, "node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", @@ -12188,29 +12225,30 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -12220,16 +12258,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" }, "engines": { "node": ">= 0.4" @@ -12239,14 +12278,40 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", + "call-bind": "^1.0.7", "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typedarray.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz", + "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-errors": "^1.3.0", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-offset": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -12266,9 +12331,9 @@ } }, "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz", + "integrity": "sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==", "dev": true, "optional": true, "bin": { @@ -12306,24 +12371,24 @@ } }, "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", "dev": true }, "node_modules/universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "engines": { "node": ">= 10.0.0" } }, "node_modules/update-browserslist-db": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz", - "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==", + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", + "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", "dev": true, "funding": [ { @@ -12340,8 +12405,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -12375,19 +12440,6 @@ "requires-port": "^1.0.0" } }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -12395,9 +12447,9 @@ "dev": true }, "node_modules/v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", "dev": true }, "node_modules/v8-compile-cache-lib": { @@ -12407,19 +12459,25 @@ "dev": true }, "node_modules/v8-to-istanbul": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.0.tgz", - "integrity": "sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0" + "convert-source-map": "^2.0.0" }, "engines": { "node": ">=10.12.0" } }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -12461,15 +12519,6 @@ "makeerror": "1.0.12" } }, - "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -12545,16 +12594,16 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -12563,6 +12612,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -12606,9 +12664,9 @@ } }, "node_modules/ws": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", - "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", + "version": "8.17.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.0.tgz", + "integrity": "sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==", "dev": true, "engines": { "node": ">=10.0.0" @@ -12753,21 +12811,23 @@ }, "src/sdks/core": { "name": "@firebolt-js/sdk", - "version": "0.16.0-next.2", + "version": "0.16.0-next.3", "license": "Apache-2.0", "devDependencies": { "jest": "^28.1.0", "jest-environment-jsdom": "^28.1.3", + "prettier": "^3.1.0", "typescript": "^4.6.4" } }, "src/sdks/manage": { "name": "@firebolt-js/manage-sdk", - "version": "0.16.0-next.2", + "version": "0.16.0-next.3", "license": "Apache-2.0", "devDependencies": { "jest": "^28.1.0", "jest-environment-jsdom": "^28.1.3", + "prettier": "^3.1.0", "typescript": "^4.6.4" } } diff --git a/package.json b/package.json index 1e6d5492c..a78652909 100644 --- a/package.json +++ b/package.json @@ -11,19 +11,20 @@ "src/sdks/manage" ], "scripts": { - "fs:setup": "npm run clean && mkdir -p dist", - "validate:each": "npx firebolt-openrpc validate --input src/openrpc --schemas node_modules/@firebolt-js/schemas/src/schemas --schemas src/schemas --transformations", - "validate:compiled": "npx firebolt-openrpc validate --input dist/firebolt-open-rpc.json && npm run validate --workspaces", - "validate": "npm run validate:each && npm run validate:compiled ", - "compile": "npx firebolt-openrpc openrpc --input src --template src/template/openrpc/template.json --output ./dist/firebolt-open-rpc.json --schemas src/schemas --schemas node_modules/@firebolt-js/schemas/src/schemas", + "fs:setup": "npm run clean ; mkdir -p dist", + "validate:each": "npx firebolt-openrpc validate --input src/openrpc --schemas src/schemas --transformations --bidirectional", + "validate:compiled": "npx firebolt-openrpc validate --server dist/firebolt-open-rpc.json --client dist/firebolt-app-open-rpc.json ; npm run validate --workspaces", + "validate": "npm run validate:each ; npm run validate:compiled ", + "compile": "npx firebolt-openrpc openrpc --input src --template src/template/openrpc/template.json --server ./dist/firebolt-open-rpc.json --client ./dist/firebolt-app-open-rpc.json --schemas src/schemas", + "update": "npx firebolt-openrpc update --input src --schemas src/schemas", "slice": "npm run slice --workspaces", - "sdks": "npm run sdk --workspaces", + "sdk": "npm run sdk --workspaces", "docs": "npm run docs --workspaces", "wiki": "npm run wiki --workspaces", - "test:setup": "npm run test:setup --workspaces", - "test": "npm run test:setup && NODE_OPTIONS=--experimental-vm-modules npx --config=jest.config.json --detectOpenHandles jest", - "clean": "rm -rf dist && npm run clean --workspaces", - "dist": "npm run fs:setup && npm run compile && npm run specification && npm run version && npm run dist:notest --workspaces && npm run test", + "test:setup": "rm -rf test/transpiled-suite ; npx tsc --target es6 --moduleResolution node --outDir test/transpiled-suite ; npm run test:setup --workspaces", + "test": "npm run test:setup ; NODE_OPTIONS=--experimental-vm-modules npx --config=jest.config.json --detectOpenHandles jest", + "clean": "rm -rf dist ; npm run clean --workspaces", + "dist": "npm run fs:setup ; npm run validate:each ; npm run compile ; npm run specification ; npm run version ; npm run dist:notest --workspaces ; npm run test", "specification": "node ./src/js/version-specification/index.mjs --source ./src/json/firebolt-specification.json", "specification:report": "node ./src/js/version-specification/index.mjs --source ./dist/firebolt-specification.json --report", "version": "node ./src/js/version.mjs sync", @@ -44,7 +45,7 @@ "devDependencies": { "@commitlint/cli": "^17.0.3", "@commitlint/config-conventional": "^17.0.3", - "@firebolt-js/openrpc": "2.0.4", + "@firebolt-js/openrpc": "../firebolt-openrpc", "@firebolt-js/schemas": "1.0.0-next.0", "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", diff --git a/src/openrpc/_internal.json b/src/openrpc/_internal.json index 7f04a6dc1..f172cb5c4 100644 --- a/src/openrpc/_internal.json +++ b/src/openrpc/_internal.json @@ -1,82 +1,83 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Internal", - "description": "Internal methods for SDK / FEE integration", - "version": "0.0.0" - }, - "methods": [ - { - "name": "initialize", - "tags": [ - { - "name": "rpc-only" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:lifecycle:initialize" - ] - } - ], - "summary": "Initialize the SDK / FEE session.", - "description": "A single version of the Firebolt SDK is compiled into each app. When an app starts up, the SDK **MUST** call this method as soon as possible and **before** any other JSON-RPC methods are sent.", - "params": [ - { - "name": "version", - "required": true, - "schema": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/SemanticVersion" - }, - "summary": "The semantic version of the SDK." - } - ], - "result": { - "name": "session", - "summary": "Info about the SDK/FEE session", - "schema": { - "type": "object", - "required": ["version"], - "properties": { - "version": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/SemanticVersion", - "description": "The semantic version of the FEE." - } - }, - "additionalProperties": false - } - }, - "examples": [ - { - "name": "Default Example", - "params": [ - { - "name": "version", - "value": { - "major": 1, - "minor": 0, - "patch": 0, - "readable": "Firebolt SDK 1.0.0" - } - } - ], - "result": { - "name": "Default Result", - "value": { - "version": { - "major": 1, - "minor": 0, - "patch": 0, - "readable": "Firebolt FEE 1.0.0" - } - } - } - } - ] - } - ], - "components": { - "schemas": { - } - } + "openrpc": "1.2.4", + "info": { + "title": "Internal", + "description": "Internal methods for SDK / FEE integration", + "version": "0.0.0" + }, + "methods": [ + { + "name": "initialize", + "tags": [ + { + "name": "rpc-only" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:lifecycle:initialize" + ] + } + ], + "summary": "Initialize the SDK / FEE session.", + "description": "A single version of the Firebolt SDK is compiled into each app. When an app starts up, the SDK **MUST** call this method as soon as possible and **before** any other JSON-RPC methods are sent.", + "params": [ + { + "name": "version", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/SemanticVersion" + }, + "summary": "The semantic version of the SDK." + } + ], + "result": { + "name": "session", + "summary": "Info about the SDK/FEE session", + "schema": { + "type": "object", + "required": [ + "version" + ], + "properties": { + "version": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/SemanticVersion", + "description": "The semantic version of the FEE." + } + }, + "additionalProperties": false + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "version", + "value": { + "major": 1, + "minor": 0, + "patch": 0, + "readable": "Firebolt SDK 1.0.0" + } + } + ], + "result": { + "name": "Default Result", + "value": { + "version": { + "major": 1, + "minor": 0, + "patch": 0, + "readable": "Firebolt FEE 1.0.0" + } + } + } + } + ] + } + ], + "components": { + "schemas": {} + } } \ No newline at end of file diff --git a/src/openrpc/accessibility.json b/src/openrpc/accessibility.json index 8e805965d..48f02ba77 100644 --- a/src/openrpc/accessibility.json +++ b/src/openrpc/accessibility.json @@ -1,234 +1,236 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Accessibility", - "version": "0.0.0", - "description": "The `Accessibility` module provides access to the user/device settings for closed captioning and voice guidance.\n\nApps **SHOULD** attempt o respect these settings, rather than manage and persist seprate settings, which would be different per-app." - }, - "methods": [ - { - "name": "closedCaptions", - "summary": "Get the user's preferred closed-captions settings", - "params": [], - "tags": [ - { - "name": "deprecated", - "x-alternative": "Accessibility.closedCaptionsSettings()", - "x-since": "0.6.0" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:closedcaptions" - ] - } - ], - "result": { - "name": "closedCaptionsSettings", - "summary": "the closed captions settings", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/ClosedCaptionsSettings" - } - }, - "examples": [ - { - "name": "Getting the closed captions settings", - "params": [], - "result": { - "name": "settings", - "value": { - "enabled": true, - "styles": { - "fontFamily": "Monospace sans-serif", - "fontSize": 1, - "fontColor": "#ffffff", - "fontEdge": "none", - "fontEdgeColor": "#7F7F7F", - "fontOpacity": 100, - "backgroundColor": "#000000", - "backgroundOpacity": 100, - "textAlign": "center", - "textAlignVertical": "middle", - "windowColor": "white", - "windowOpacity": 50 - } - } - } - } - ] - }, - { - "name": "closedCaptionsSettings", - "summary": "Get the user's preferred closed-captions settings", - "params": [], - "tags": [ - { - "name": "property:readonly" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:closedcaptions" - ] - } - ], - "result": { - "name": "closedCaptionsSettings", - "summary": "the closed captions settings", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/ClosedCaptionsSettings" - } - }, - "examples": [ - { - "name": "Getting the closed captions settings", - "params": [], - "result": { - "name": "settings", - "value": { - "enabled": true, - "styles": { - "fontFamily": "Monospace sans-serif", - "fontSize": 1, - "fontColor": "#ffffff", - "fontEdge": "none", - "fontEdgeColor": "#7F7F7F", - "fontOpacity": 100, - "backgroundColor": "#000000", - "backgroundOpacity": 100, - "textAlign": "center", - "textAlignVertical": "middle", - "windowColor": "white", - "windowOpacity": 50 - } - } - } - } - ] - }, - { - "name": "voiceGuidance", - "summary": "Get the user's preferred voice guidance settings", - "params": [], - "tags": [ - { - "name": "deprecated", - "x-alternative": "Accessibility.voiceGuidanceSettings()", - "x-since": "0.6.0" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:voiceguidance" - ] - } - ], - "result": { - "name": "settings", - "summary": "the voice guidance settings", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/VoiceGuidanceSettings" - } - }, - "examples": [ - { - "name": "Getting the voice guidance settings", - "params": [], - "result": { - "name": "Default Result", - "value": { - "enabled": true, - "speed": 2 - } - } - } - ] - }, - { - "name": "voiceGuidanceSettings", - "summary": "Get the user's preferred voice guidance settings", - "params": [], - "tags": [ - { - "name": "property:readonly" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:voiceguidance" - ] - } - ], - "result": { - "name": "settings", - "summary": "the voice guidance settings", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/VoiceGuidanceSettings" - } - }, - "examples": [ - { - "name": "Getting the voice guidance settings", - "params": [], - "result": { - "name": "Default Result", - "value": { - "enabled": true, - "speed": 2 - } - } - } - ] - }, - { - "name": "audioDescriptionSettings", - "summary": "Get the user's preferred audio description settings", - "params": [], - "tags": [ - { - "name": "property:readonly" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:audiodescriptions" - ] - } - ], - "result": { - "name": "settings", - "summary": "the audio description settings", - "schema": { - "$ref": "#/components/schemas/AudioDescriptionSettings" - } - }, - "examples": [ - { - "name": "Getting the audio description settings", - "params": [], - "result": { - "name": "Default Result", - "value": { - "enabled": true - } - } - } - ] - } - ], - "components": { - "schemas": { - "AudioDescriptionSettings": { - "title": "AudioDescriptionSettings", - "type": "object", - "required": ["enabled"], - "properties": { - "enabled": { - "type": "boolean", - "description": "Whether or not audio descriptions should be enabled by default" - } - } - } - } - } + "openrpc": "1.2.4", + "info": { + "title": "Accessibility", + "version": "0.0.0", + "description": "The `Accessibility` module provides access to the user/device settings for closed captioning and voice guidance.\n\nApps **SHOULD** attempt o respect these settings, rather than manage and persist seprate settings, which would be different per-app." + }, + "methods": [ + { + "name": "closedCaptions", + "summary": "Get the user's preferred closed-captions settings", + "params": [], + "tags": [ + { + "name": "deprecated", + "x-alternative": "Accessibility.closedCaptionsSettings()", + "x-since": "0.6.0" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:closedcaptions" + ] + } + ], + "result": { + "name": "closedCaptionsSettings", + "summary": "the closed captions settings", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/ClosedCaptionsSettings" + } + }, + "examples": [ + { + "name": "Getting the closed captions settings", + "params": [], + "result": { + "name": "settings", + "value": { + "enabled": true, + "styles": { + "fontFamily": "monospace_serif", + "fontSize": 1, + "fontColor": "#ffffff", + "fontEdge": "none", + "fontEdgeColor": "#7F7F7F", + "fontOpacity": 100, + "backgroundColor": "#000000", + "backgroundOpacity": 100, + "textAlign": "center", + "textAlignVertical": "middle", + "windowColor": "white", + "windowOpacity": 50 + } + } + } + } + ] + }, + { + "name": "closedCaptionsSettings", + "summary": "Get the user's preferred closed-captions settings", + "params": [], + "tags": [ + { + "name": "property:readonly" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:closedcaptions" + ] + } + ], + "result": { + "name": "closedCaptionsSettings", + "summary": "the closed captions settings", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/ClosedCaptionsSettings" + } + }, + "examples": [ + { + "name": "Getting the closed captions settings", + "params": [], + "result": { + "name": "settings", + "value": { + "enabled": true, + "styles": { + "fontFamily": "monospace_serif", + "fontSize": 1, + "fontColor": "#ffffff", + "fontEdge": "none", + "fontEdgeColor": "#7F7F7F", + "fontOpacity": 100, + "backgroundColor": "#000000", + "backgroundOpacity": 100, + "textAlign": "center", + "textAlignVertical": "middle", + "windowColor": "white", + "windowOpacity": 50 + } + } + } + } + ] + }, + { + "name": "voiceGuidance", + "summary": "Get the user's preferred voice guidance settings", + "params": [], + "tags": [ + { + "name": "deprecated", + "x-alternative": "Accessibility.voiceGuidanceSettings()", + "x-since": "0.6.0" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:voiceguidance" + ] + } + ], + "result": { + "name": "settings", + "summary": "the voice guidance settings", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/VoiceGuidanceSettings" + } + }, + "examples": [ + { + "name": "Getting the voice guidance settings", + "params": [], + "result": { + "name": "Default Result", + "value": { + "enabled": true, + "speed": 2 + } + } + } + ] + }, + { + "name": "voiceGuidanceSettings", + "summary": "Get the user's preferred voice guidance settings", + "params": [], + "tags": [ + { + "name": "property:readonly" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:voiceguidance" + ] + } + ], + "result": { + "name": "settings", + "summary": "the voice guidance settings", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/VoiceGuidanceSettings" + } + }, + "examples": [ + { + "name": "Getting the voice guidance settings", + "params": [], + "result": { + "name": "Default Result", + "value": { + "enabled": true, + "speed": 2 + } + } + } + ] + }, + { + "name": "audioDescriptionSettings", + "summary": "Get the user's preferred audio description settings", + "params": [], + "tags": [ + { + "name": "property:readonly" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:audiodescriptions" + ] + } + ], + "result": { + "name": "settings", + "summary": "the audio description settings", + "schema": { + "$ref": "#/components/schemas/AudioDescriptionSettings" + } + }, + "examples": [ + { + "name": "Getting the audio description settings", + "params": [], + "result": { + "name": "Default Result", + "value": { + "enabled": true + } + } + } + ] + } + ], + "components": { + "schemas": { + "AudioDescriptionSettings": { + "title": "AudioDescriptionSettings", + "type": "object", + "required": [ + "enabled" + ], + "properties": { + "enabled": { + "type": "boolean", + "description": "Whether or not audio descriptions should be enabled by default" + } + } + } + } + } } \ No newline at end of file diff --git a/src/openrpc/account.json b/src/openrpc/account.json index ed641d20c..cc9e2bc98 100644 --- a/src/openrpc/account.json +++ b/src/openrpc/account.json @@ -1,140 +1,140 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Account", - "description": "A module for querying about the device account.", - "version": "0.0.0" - }, - "methods": [ - { - "name": "id", - "summary": "Get the platform back-office account identifier", - "params": [], - "tags": [ - { - "name": "property:immutable" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:account:id" - ] - } - ], - "result": { - "name": "id", - "summary": "the id", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": "123" - } - } - ] - }, - { - "name": "uid", - "summary": "Gets a unique id for the current app & account", - "params": [], - "tags": [ - { - "name": "property:immutable" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:account:uid" - ] - } - ], - "result": { - "name": "uniqueId", - "summary": "a unique ID", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Getting the unique ID", - "params": [], - "result": { - "name": "Default Result", - "value": "ee6723b8-7ab3-462c-8d93-dbf61227998e" - } - } - ] - }, - { - "name": "session", - "summary": "Used by a distributor to push Session token to firebolt.", - "tags": [ - { - "name": "capabilities", - "x-manages": [ - "xrn:firebolt:capability:token:account" - ] - } - ], - "params": [ - { - "name": "token", - "schema": { - "$ref": "#/components/schemas/Token" - } - }, - { - "name": "expiresIn", - "schema": { - "$ref": "#/components/schemas/Expiry" - } - } - ], - "result": { - "name": "result", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Default Example", - "params": [ - { - "name": "token", - "value": "RmlyZWJvbHQgTWFuYWdlIFNESyBSb2NrcyEhIQ==" - }, - { - "name": "expiresIn", - "value": 84000 - } - ], - "result": { - "name": "defaultResult", - "value": null - } - } - ] - } - ], - "components": { - "schemas": { - "Token": { - "type": "string", - "description": "Encoded token provided by the Distributor for Device Authentication." - }, - "Expiry": { - "type": "integer", - "description": "Number of secs before the token expires", - "minimum": 1 - } - } - } + "openrpc": "1.2.4", + "info": { + "title": "Account", + "description": "A module for querying about the device account.", + "version": "0.0.0" + }, + "methods": [ + { + "name": "id", + "summary": "Get the platform back-office account identifier", + "params": [], + "tags": [ + { + "name": "property:immutable" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:account:id" + ] + } + ], + "result": { + "name": "id", + "summary": "the id", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "Default Result", + "value": "123" + } + } + ] + }, + { + "name": "uid", + "summary": "Gets a unique id for the current app & account", + "params": [], + "tags": [ + { + "name": "property:immutable" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:account:uid" + ] + } + ], + "result": { + "name": "uniqueId", + "summary": "a unique ID", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Getting the unique ID", + "params": [], + "result": { + "name": "Default Result", + "value": "ee6723b8-7ab3-462c-8d93-dbf61227998e" + } + } + ] + }, + { + "name": "session", + "summary": "Used by a distributor to push Session token to firebolt.", + "tags": [ + { + "name": "capabilities", + "x-manages": [ + "xrn:firebolt:capability:token:account" + ] + } + ], + "params": [ + { + "name": "token", + "schema": { + "$ref": "#/components/schemas/Token" + } + }, + { + "name": "expiresIn", + "schema": { + "$ref": "#/components/schemas/Expiry" + } + } + ], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "token", + "value": "RmlyZWJvbHQgTWFuYWdlIFNESyBSb2NrcyEhIQ==" + }, + { + "name": "expiresIn", + "value": 84000 + } + ], + "result": { + "name": "defaultResult", + "value": null + } + } + ] + } + ], + "components": { + "schemas": { + "Token": { + "type": "string", + "description": "Encoded token provided by the Distributor for Device Authentication." + }, + "Expiry": { + "type": "integer", + "description": "Number of secs before the token expires", + "minimum": 1 + } + } + } } \ No newline at end of file diff --git a/src/openrpc/acknowledge_challenge.json b/src/openrpc/acknowledge_challenge.json index a51d60c2c..d7417cea1 100644 --- a/src/openrpc/acknowledge_challenge.json +++ b/src/openrpc/acknowledge_challenge.json @@ -1,145 +1,151 @@ { - "openrpc": "1.2.4", - "info": { - "title": "AcknowledgeChallenge", - "description": "A module for registering as a provider for a user grant in which the user confirms access to a capability", - "version": "0.0.0" - }, - "methods": [ - { - "name": "onRequestChallenge", - "summary": "Registers as a provider for when the user should be challenged in order to confirm access to a capability", - "params": [], - "tags": [ - { - "name": "event", - "x-response": { - "$ref": "#/components/schemas/GrantResult" - } - }, - { - "name": "capabilities", - "x-provides": "xrn:firebolt:capability:usergrant:acknowledgechallenge", - "x-allow-focus": true - } - ], - "result": { - "name": "challenge", - "summary": "The request to challenge the user", - "schema": { - "$ref": "#/components/schemas/ChallengeProviderRequest" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": { - "correlationId": "abc", - "parameters": { - "capability": "xrn:firebolt:capability:localization::postal-code", - "requestor": { - "id": "ReferenceApp", - "name": "Firebolt Reference App" - } - } - } - } - } - ] - } - ], - "components": { - "schemas": { - "ChallengeRequestor": { - "title": "ChallengeRequestor", - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "type": "string", - "description": "The id of the app that requested the challenge" - }, - "name": { - "type": "string", - "description": "The name of the app that requested the challenge" - } - } - }, - "Challenge": { - "title": "Challenge", - "type": "object", - "required": [ - "capability", - "requestor" - ], - "properties": { - "capability": { - "type": "string", - "description": "The capability that is being requested by the user to approve" - }, - "requestor": { - "description": "The identity of which app is requesting access to this capability", - "$ref": "#/components/schemas/ChallengeRequestor" - } - } - }, - "ChallengeProviderRequest": { - "title": "ChallengeProviderRequest", - "allOf": [ - { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/ProviderRequest" - }, - { - "type": "object", - "required": [ - "parameters" - ], - "properties": { - "parameters": { - "description": "The request to challenge the user", - "$ref": "#/components/schemas/Challenge" - } - } - } - ] - }, - "GrantResult": { - "title": "GrantResult", - "type": "object", - "required": [ - "granted" - ], - "properties": { - "granted": { - "oneOf": [ - { - "type": "boolean", - "description": "Whether the user approved or denied the challenge" - }, - { - "const": null - } - ] - } - }, - "examples": [ - { - "granted": true - }, - { - "granted": false - }, - { - "granted": null - } - ] - } - } - } + "openrpc": "1.2.4", + "info": { + "title": "AcknowledgeChallenge", + "description": "A module for registering as a provider for a user grant in which the user confirms access to a capability", + "version": "0.0.0" + }, + "methods": [ + { + "name": "challenge", + "summary": "Registers as a provider for when the user should be challenged in order to confirm access to a capability", + "params": [ + { + "name": "capability", + "required": true, + "schema": { + "type": "string", + "description": "The capability that is being requested by the user to approve" + } + }, + { + "name": "requestor", + "required": true, + "schema": { + "description": "The identity of which app is requesting access to this capability", + "$ref": "#/components/schemas/ChallengeRequestor" + } + } + ], + "tags": [ + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:usergrant:acknowledgechallenge", + "x-allow-focus": true + } + ], + "result": { + "name": "result", + "schema": { + "$ref": "#/components/schemas/GrantResult" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "capability", + "value": "xrn:firebolt:capability:localization::postal-code" + }, + { + "name": "requestor", + "value": { + "id": "ReferenceApp", + "name": "Firebolt Reference App" + } + } + ], + "result": { + "name": "result", + "value": { + "granted": true + } + } + } + ] + } + ], + "components": { + "schemas": { + "ChallengeRequestor": { + "title": "ChallengeRequestor", + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "description": "The id of the app that requested the challenge" + }, + "name": { + "type": "string", + "description": "The name of the app that requested the challenge" + } + } + }, + "Challenge": { + "title": "Challenge", + "type": "object", + "required": [ + "capability", + "requestor" + ], + "properties": {} + }, + "ChallengeProviderRequest": { + "title": "ChallengeProviderRequest", + "allOf": [ + { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/ProviderRequest" + }, + { + "type": "object", + "required": [ + "parameters" + ], + "properties": { + "parameters": { + "description": "The request to challenge the user", + "$ref": "#/components/schemas/Challenge" + } + } + } + ] + }, + "GrantResult": { + "title": "GrantResult", + "type": "object", + "required": [ + "granted" + ], + "properties": { + "granted": { + "oneOf": [ + { + "type": "boolean", + "description": "Whether the user approved or denied the challenge" + }, + { + "const": null + } + ] + } + }, + "examples": [ + { + "granted": true + }, + { + "granted": false + }, + { + "granted": null + } + ] + } + } + } } \ No newline at end of file diff --git a/src/openrpc/activatable.json b/src/openrpc/activatable.json new file mode 100644 index 000000000..6efa74619 --- /dev/null +++ b/src/openrpc/activatable.json @@ -0,0 +1,85 @@ +{ + "openrpc": "1.2.4", + "info": { + "title": "Activatable", + "description": "Methods and events for responding to lifecycle changes in your app", + "version": "0.0.0" + }, + "methods": [ + { + "name": "activate", + "tags": [ + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:lifecycle:activatable" + } + ], + "summary": "Called when the platform is ready to create the lifecycle session for the app. Only called only once, during the `INITIALIZING` state.", + "params": [ + { + "name": "intent", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/intents#/definitions/NavigationIntent" + } + } + ], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "App creation.", + "params": [ + { + "name": "intent", + "value": { + "action": "search", + "data": { + "query": "cats" + }, + "context": { + "source": "voice" + } + } + } + ], + "result": { + "name": "result", + "value": null + } + } + ] + }, + { + "name": "deactivate", + "tags": [ + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:lifecycle:activatable" + } + ], + "summary": "Called when the platform wants the app to reallocate its graphics surface and prepare to be potentially used.", + "params": [], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "App resuming.", + "params": [], + "result": { + "name": "result", + "value": null + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/openrpc/advertising.json b/src/openrpc/advertising.json index 41e5ad51b..fac91c0f5 100644 --- a/src/openrpc/advertising.json +++ b/src/openrpc/advertising.json @@ -1,328 +1,328 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Advertising", - "version": "0.0.0", - "description": "A module for platform provided advertising settings and functionality." - }, - "methods": [ - { - "name": "config", - "summary": "Build configuration object for Ad Framework initialization", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:advertising:configuration" - ] - } - ], - "params": [ - { - "name": "options", - "summary": "Configuration options", - "required": true, - "schema": { - "$ref": "#/components/schemas/AdConfigurationOptions" - } - } - ], - "result": { - "name": "adFrameworkConfig", - "summary": "the ad framework config", - "schema": { - "type": "object", - "description": "An opaque object represneting the AdConfiguration" - } - }, - "examples": [ - { - "name": "Initializing the Ad Framework", - "params": [ - { - "name": "options", - "value": { - "environment": "prod", - "authenticationEntity": "MVPD" - } - } - ], - "result": { - "name": "Default Result", - "value": { - "adServerUrl": "https://demo.v.fwmrm.net/ad/p/1", - "adServerUrlTemplate": "https://demo.v.fwmrm.net/ad/p/1?flag=+sltp+exvt+slcb+emcr+amcb+aeti&prof=12345:caf_allinone_profile &nw=12345&mode=live&vdur=123&caid=a110523018&asnw=372464&csid=gmott_ios_tablet_watch_live_ESPNU&ssnw=372464&vip=198.205.92.1&resp=vmap1&metr=1031&pvrn=12345&vprn=12345&vcid=1X0Ce7L3xRWlTeNhc7br8Q%3D%3D", - "adNetworkId": "519178", - "adProfileId": "12345:caf_allinone_profile", - "adSiteSectionId": "caf_allinone_profile_section", - "adOptOut": true, - "privacyData": "ew0KICAicGR0IjogImdkcDp2MSIsDQogICJ1c19wcml2YWN5IjogIjEtTi0iLA0KICAibG10IjogIjEiIA0KfQ0K", - "ifaValue": "01234567-89AB-CDEF-GH01-23456789ABCD", - "ifa": "ewogICJ2YWx1ZSI6ICIwMTIzNDU2Ny04OUFCLUNERUYtR0gwMS0yMzQ1Njc4OUFCQ0QiLAogICJpZmFfdHlwZSI6ICJzc3BpZCIsCiAgImxtdCI6ICIwIgp9Cg==", - "appName": "FutureToday", - "appBundleId": "FutureToday.comcast", - "distributorAppId": "1001", - "deviceAdAttributes": "ewogICJib0F0dHJpYnV0ZXNGb3JSZXZTaGFyZUlkIjogIjEyMzQiCn0=", - "coppa": 0, - "authenticationEntity": "60f72475281cfba3852413bd53e957f6" - } - } - } - ] - }, - { - "name": "policy", - "summary": "Get the advertising privacy and playback policy", - "params": [], - "tags": [ - { - "name": "property:readonly" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:privacy:advertising", - "xrn:firebolt:capability:advertising:configuration" - ] - } - ], - "result": { - "name": "adPolicy", - "summary": "the ad policy", - "schema": { - "$ref": "#/components/schemas/AdPolicy" - } - }, - "examples": [ - { - "name": "Getting the advertising policy settings", - "params": [], - "result": { - "name": "Default Result", - "value": { - "skipRestriction": "adsUnwatched", - "limitAdTracking": false - } - } - } - ] - }, - { - "name": "skipRestriction", - "summary": "Set the value for AdPolicy.skipRestriction", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-manages": [ - "xrn:firebolt:capability:advertising:configuration" - ] - } - ], - "params": [], - "result": { - "name": "result", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/advertising#/definitions/SkipRestriction" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "result", - "value": "none" - } - }, - { - "name": "Additional Example", - "params": [], - "result": { - "name": "result", - "value": "all" - } - } - ] - }, - { - "name": "advertisingId", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:advertising:identifier" - ] - } - ], - "summary": "Get the advertising ID", - "params": [], - "result": { - "name": "advertisingId", - "summary": "the advertising ID", - "schema": { - "type": "object", - "properties": { - "ifa": { - "type": "string" - }, - "ifa_type": { - "type": "string" - }, - "lmt": { - "type": "string" - } - }, - "required": [ - "ifa" - ] - } - }, - "examples": [ - { - "name": "Getting the advertising ID", - "params": [], - "result": { - "name": "Default Result", - "value": { - "ifa": "01234567-89AB-CDEF-GH01-23456789ABCD", - "ifa_type": "idfa", - "lmt": "0" - } - } - } - ] - }, - { - "name": "deviceAttributes", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:advertising:configuration" - ] - } - ], - "summary": "Get the device advertising device attributes", - "params": [], - "result": { - "name": "deviceAttributes", - "summary": "the device attributes", - "schema": { - "type": "object" - } - }, - "examples": [ - { - "name": "Getting the device attributes", - "params": [], - "result": { - "name": "Default Result", - "value": {} - } - } - ] - }, - { - "name": "appBundleId", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:advertising:configuration" - ] - } - ], - "summary": "Get the App's Bundle ID", - "params": [], - "result": { - "name": "appBundleId", - "summary": "the app bundle ID", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": "operator.app" - } - } - ] - }, - { - "name": "resetIdentifier", - "summary": "Resets a user's identifier in the ad platform so that the advertising id that apps get will be a new value", - "tags": [ - { - "name": "capabilities", - "x-manages": [ - "xrn:firebolt:capability:advertising:identifier" - ] - } - ], - "params": [], - "result": { - "name": "result", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "defaultResult", - "value": null - } - } - ] - } - ], - "components": { - "schemas": { - "AdPolicy": { - "title": "AdPolicy", - "description": "Describes various ad playback enforcement rules that the app should follow.", - "type": "object", - "properties": { - "skipRestriction": { - "$ref": "https://meta.comcast.com/firebolt/advertising#/definitions/SkipRestriction" - }, - "limitAdTracking": { - "type": "boolean" - } - } - }, - "AdConfigurationOptions": { - "title": "AdConfigurationOptions", - "type": "object", - "properties": { - "coppa": { - "type": "boolean", - "description": "Whether or not the app requires US COPPA compliance." - }, - "environment": { - "type": "string", - "enum": [ - "prod", - "test" - ], - "default": "prod", - "description": "Whether the app is running in a production or test mode." - }, - "authenticationEntity": { - "type": "string", - "description": "The authentication provider, when it is separate entity than the app provider, e.g. an MVPD." - } - } - } - } - } + "openrpc": "1.2.4", + "info": { + "title": "Advertising", + "version": "0.0.0", + "description": "A module for platform provided advertising settings and functionality." + }, + "methods": [ + { + "name": "config", + "summary": "Build configuration object for Ad Framework initialization", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:advertising:configuration" + ] + } + ], + "params": [ + { + "name": "options", + "summary": "Configuration options", + "required": true, + "schema": { + "$ref": "#/components/schemas/AdConfigurationOptions" + } + } + ], + "result": { + "name": "adFrameworkConfig", + "summary": "the ad framework config", + "schema": { + "type": "object", + "description": "An opaque object represneting the AdConfiguration" + } + }, + "examples": [ + { + "name": "Initializing the Ad Framework", + "params": [ + { + "name": "options", + "value": { + "environment": "prod", + "authenticationEntity": "MVPD" + } + } + ], + "result": { + "name": "Default Result", + "value": { + "adServerUrl": "https://demo.v.fwmrm.net/ad/p/1", + "adServerUrlTemplate": "https://demo.v.fwmrm.net/ad/p/1?flag=+sltp+exvt+slcb+emcr+amcb+aeti&prof=12345:caf_allinone_profile &nw=12345&mode=live&vdur=123&caid=a110523018&asnw=372464&csid=gmott_ios_tablet_watch_live_ESPNU&ssnw=372464&vip=198.205.92.1&resp=vmap1&metr=1031&pvrn=12345&vprn=12345&vcid=1X0Ce7L3xRWlTeNhc7br8Q%3D%3D", + "adNetworkId": "519178", + "adProfileId": "12345:caf_allinone_profile", + "adSiteSectionId": "caf_allinone_profile_section", + "adOptOut": true, + "privacyData": "ew0KICAicGR0IjogImdkcDp2MSIsDQogICJ1c19wcml2YWN5IjogIjEtTi0iLA0KICAibG10IjogIjEiIA0KfQ0K", + "ifaValue": "01234567-89AB-CDEF-GH01-23456789ABCD", + "ifa": "ewogICJ2YWx1ZSI6ICIwMTIzNDU2Ny04OUFCLUNERUYtR0gwMS0yMzQ1Njc4OUFCQ0QiLAogICJpZmFfdHlwZSI6ICJzc3BpZCIsCiAgImxtdCI6ICIwIgp9Cg==", + "appName": "FutureToday", + "appBundleId": "FutureToday.comcast", + "distributorAppId": "1001", + "deviceAdAttributes": "ewogICJib0F0dHJpYnV0ZXNGb3JSZXZTaGFyZUlkIjogIjEyMzQiCn0=", + "coppa": 0, + "authenticationEntity": "60f72475281cfba3852413bd53e957f6" + } + } + } + ] + }, + { + "name": "policy", + "summary": "Get the advertising privacy and playback policy", + "params": [], + "tags": [ + { + "name": "property:readonly" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:privacy:advertising", + "xrn:firebolt:capability:advertising:configuration" + ] + } + ], + "result": { + "name": "adPolicy", + "summary": "the ad policy", + "schema": { + "$ref": "#/components/schemas/AdPolicy" + } + }, + "examples": [ + { + "name": "Getting the advertising policy settings", + "params": [], + "result": { + "name": "Default Result", + "value": { + "skipRestriction": "adsUnwatched", + "limitAdTracking": false + } + } + } + ] + }, + { + "name": "skipRestriction", + "summary": "Set the value for AdPolicy.skipRestriction", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-manages": [ + "xrn:firebolt:capability:advertising:configuration" + ] + } + ], + "params": [], + "result": { + "name": "result", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/advertising#/definitions/SkipRestriction" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "result", + "value": "none" + } + }, + { + "name": "Additional Example", + "params": [], + "result": { + "name": "result", + "value": "all" + } + } + ] + }, + { + "name": "advertisingId", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:advertising:identifier" + ] + } + ], + "summary": "Get the advertising ID", + "params": [], + "result": { + "name": "advertisingId", + "summary": "the advertising ID", + "schema": { + "type": "object", + "properties": { + "ifa": { + "type": "string" + }, + "ifa_type": { + "type": "string" + }, + "lmt": { + "type": "string" + } + }, + "required": [ + "ifa" + ] + } + }, + "examples": [ + { + "name": "Getting the advertising ID", + "params": [], + "result": { + "name": "Default Result", + "value": { + "ifa": "01234567-89AB-CDEF-GH01-23456789ABCD", + "ifa_type": "idfa", + "lmt": "0" + } + } + } + ] + }, + { + "name": "deviceAttributes", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:advertising:configuration" + ] + } + ], + "summary": "Get the device advertising device attributes", + "params": [], + "result": { + "name": "deviceAttributes", + "summary": "the device attributes", + "schema": { + "type": "object" + } + }, + "examples": [ + { + "name": "Getting the device attributes", + "params": [], + "result": { + "name": "Default Result", + "value": {} + } + } + ] + }, + { + "name": "appBundleId", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:advertising:configuration" + ] + } + ], + "summary": "Get the App's Bundle ID", + "params": [], + "result": { + "name": "appBundleId", + "summary": "the app bundle ID", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "Default Result", + "value": "operator.app" + } + } + ] + }, + { + "name": "resetIdentifier", + "summary": "Resets a user's identifier in the ad platform so that the advertising id that apps get will be a new value", + "tags": [ + { + "name": "capabilities", + "x-manages": [ + "xrn:firebolt:capability:advertising:identifier" + ] + } + ], + "params": [], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "defaultResult", + "value": null + } + } + ] + } + ], + "components": { + "schemas": { + "AdPolicy": { + "title": "AdPolicy", + "description": "Describes various ad playback enforcement rules that the app should follow.", + "type": "object", + "properties": { + "skipRestriction": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/advertising#/definitions/SkipRestriction" + }, + "limitAdTracking": { + "type": "boolean" + } + } + }, + "AdConfigurationOptions": { + "title": "AdConfigurationOptions", + "type": "object", + "properties": { + "coppa": { + "type": "boolean", + "description": "Whether or not the app requires US COPPA compliance." + }, + "environment": { + "type": "string", + "enum": [ + "prod", + "test" + ], + "default": "prod", + "description": "Whether the app is running in a production or test mode." + }, + "authenticationEntity": { + "type": "string", + "description": "The authentication provider, when it is separate entity than the app provider, e.g. an MVPD." + } + } + } + } + } } \ No newline at end of file diff --git a/src/openrpc/application.json b/src/openrpc/application.json new file mode 100644 index 000000000..2c4c99a9e --- /dev/null +++ b/src/openrpc/application.json @@ -0,0 +1,133 @@ +{ + "openrpc": "1.2.4", + "info": { + "title": "Application", + "description": "Methods and events for responding to lifecycle changes in your app", + "version": "0.0.0" + }, + "methods": [ + { + "name": "create", + "tags": [ + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:lifecycle:application" + } + ], + "summary": "Called when the platform is ready to create the lifecycle session for the app. Only called only once, during the `INITIALIZING` state.", + "params": [ + { + "name": "params", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/lifecycle#/definitions/CreateParameters" + } + } + ], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "App creation.", + "params": [ + { + "name": "params", + "value": { + "preload": false + } + } + ], + "result": { + "name": "result", + "value": null + } + } + ] + }, + { + "name": "resume", + "tags": [ + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:lifecycle:application" + } + ], + "summary": "Called when the platform wants the app to reallocate its graphics surface and prepare to be potentially used.", + "params": [], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "App resuming.", + "params": [], + "result": { + "name": "result", + "value": null + } + } + ] + }, + { + "name": "suspend", + "tags": [ + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:lifecycle:application" + } + ], + "summary": "Called when the platform requires the app to deallocate its graphics surface and reduce memory as much as possible. This may be called anytime the app is in the `RUNNING` state.", + "params": [], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "App suspending.", + "params": [], + "result": { + "name": "result", + "value": null + } + } + ] + }, + { + "name": "destroy", + "tags": [ + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:lifecycle:application" + } + ], + "summary": "Called when the platform is ready to end the lifecycle session for the app. Only called once.", + "params": [], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "App destruction.", + "params": [], + "result": { + "name": "result", + "value": null + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/openrpc/audio_descriptions.json b/src/openrpc/audio_descriptions.json index fb909285e..58803be17 100644 --- a/src/openrpc/audio_descriptions.json +++ b/src/openrpc/audio_descriptions.json @@ -1,57 +1,53 @@ { - "openrpc": "1.2.4", - "info": { - "title": "AudioDescriptions", - "description": "A module for managing audio-description Settings.", - "version": "0.0.0" - }, - "methods": [ - { - "name": "enabled", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:audiodescriptions" - ] - } - ], - "summary": "Whether or not audio-descriptions are enabled.", - "params": [ - ], - "result": { - "name": "enabled", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [ - ], - "result": { - "name": "enabled", - "value": true - } - }, - { - "name": "Default example #2", - "params": [ - ], - "result": { - "name": "enabled", - "value": false - } - } - ] - } - ], - "components": { - "schemas": { - } - } + "openrpc": "1.2.4", + "info": { + "title": "AudioDescriptions", + "description": "A module for managing audio-description Settings.", + "version": "0.0.0" + }, + "methods": [ + { + "name": "enabled", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:audiodescriptions" + ] + } + ], + "summary": "Whether or not audio-descriptions are enabled.", + "params": [], + "result": { + "name": "enabled", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "enabled", + "value": true + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "enabled", + "value": false + } + } + ] + } + ], + "components": { + "schemas": {} + } } \ No newline at end of file diff --git a/src/openrpc/authentication.json b/src/openrpc/authentication.json index 18a633183..1e29e3205 100644 --- a/src/openrpc/authentication.json +++ b/src/openrpc/authentication.json @@ -1,239 +1,233 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Authentication", - "description": "A module for acquiring authentication tokens.", - "version": "0.0.0" - }, - "methods": [ - { - "name": "token", - "summary": "Get a specific `type` of authentication token", - "tags": [ - { - "name": "deprecated", - "x-alternative": "Authentication module has individual methods for each token type.", - "x-since": "0.9.0" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:token:platform" - ] - } - ], - "params": [ - { - "name": "type", - "summary": "What type of token to get", - "schema": { - "$ref": "#/components/schemas/TokenType" - }, - "required": true - }, - { - "name": "options", - "summary": "Additional options for acquiring the token.", - "schema": { - "type": "object" - }, - "required": false - } - ], - "result": { - "name": "token", - "summary": "the token value, type, and expiration", - "schema": { - "type": "object", - "properties": { - "value": { - "type": "string" - }, - "expires": { - "type": "string", - "format": "date-time" - }, - "type": { - "type": "string" - } - }, - "required": [ - "value" - ] - } - }, - "examples": [ - { - "name": "Acquire a Firebolt platform token", - "params": [ - { - "name": "type", - "value": "platform" - } - ], - "result": { - "name": "token", - "value": { - "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", - "expires": "2022-04-23T18:25:43.511Z", - "type": "platform" - } - } - }, - { - "name": "Acquire a Firebolt device identity token", - "params": [ - { - "name": "type", - "value": "device" - } - ], - "result": { - "name": "token", - "value": { - "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", - "expires": "2022-04-23T18:25:43.511Z", - "type": "device" - } - } - }, - { - "name": "Acquire a Firebolt distributor token", - "params": [ - { - "name": "type", - "value": "distributor" - }, - { - "name": "options", - "value": { - "clientId": "xyz" - } - } - ], - "result": { - "name": "token", - "value": { - "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", - "expires": "2022-04-23T18:25:43.511Z", - "type": "distributor", - "data": { - "tid": "EB00E9230AB2A35F57DB4EFDDC4908F6446D38F08F4FF0BD57FE6A61E21EEFD9", - "scope": "scope" - } - } - } - } - ] - }, - { - "name": "device", - "summary": "Get a device token scoped to the current app.", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:token:device" - ] - } - ], - "params": [ - ], - "result": { - "name": "token", - "summary": "the token value and expiration", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Acquire a Firebolt device identity token", - "params": [ - ], - "result": { - "name": "token", - "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" - } - } - ] - }, - { - "name": "session", - "summary": "Get a destributor session token.", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:token:session" - ] - } - ], - "params": [ - ], - "result": { - "name": "token", - "summary": "the token value", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Acquire a distributor session token", - "params": [ - ], - "result": { - "name": "token", - "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" - } - } - ] - }, - { - "name": "root", - "summary": "Get a root device token.", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:token:root" - ] - } - ], - "params": [ - ], - "result": { - "name": "token", - "summary": "the token value", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Acquire a Firebolt root device identity token", - "params": [ - ], - "result": { - "name": "token", - "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" - } - } - ] - } - ], - "components": { - "schemas": { - "TokenType": { - "title": "TokenType", - "type": "string", - "enum": [ - "platform", - "device", - "distributor" - ] - } - } - } -} + "openrpc": "1.2.4", + "info": { + "title": "Authentication", + "description": "A module for acquiring authentication tokens.", + "version": "0.0.0" + }, + "methods": [ + { + "name": "token", + "summary": "Get a specific `type` of authentication token", + "tags": [ + { + "name": "deprecated", + "x-alternative": "Authentication module has individual methods for each token type.", + "x-since": "0.9.0" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:token:platform" + ] + } + ], + "params": [ + { + "name": "type", + "summary": "What type of token to get", + "schema": { + "$ref": "#/components/schemas/TokenType" + }, + "required": true + }, + { + "name": "options", + "summary": "Additional options for acquiring the token.", + "schema": { + "type": "object" + }, + "required": false + } + ], + "result": { + "name": "token", + "summary": "the token value, type, and expiration", + "schema": { + "type": "object", + "properties": { + "value": { + "type": "string" + }, + "expires": { + "type": "string", + "format": "date-time" + }, + "type": { + "type": "string" + } + }, + "required": [ + "value" + ] + } + }, + "examples": [ + { + "name": "Acquire a Firebolt platform token", + "params": [ + { + "name": "type", + "value": "platform" + } + ], + "result": { + "name": "token", + "value": { + "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", + "expires": "2022-04-23T18:25:43.511Z", + "type": "platform" + } + } + }, + { + "name": "Acquire a Firebolt device identity token", + "params": [ + { + "name": "type", + "value": "device" + } + ], + "result": { + "name": "token", + "value": { + "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", + "expires": "2022-04-23T18:25:43.511Z", + "type": "device" + } + } + }, + { + "name": "Acquire a Firebolt distributor token", + "params": [ + { + "name": "type", + "value": "distributor" + }, + { + "name": "options", + "value": { + "clientId": "xyz" + } + } + ], + "result": { + "name": "token", + "value": { + "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", + "expires": "2022-04-23T18:25:43.511Z", + "type": "distributor", + "data": { + "tid": "EB00E9230AB2A35F57DB4EFDDC4908F6446D38F08F4FF0BD57FE6A61E21EEFD9", + "scope": "scope" + } + } + } + } + ] + }, + { + "name": "device", + "summary": "Get a device token scoped to the current app.", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:token:device" + ] + } + ], + "params": [], + "result": { + "name": "token", + "summary": "the token value and expiration", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Acquire a Firebolt device identity token", + "params": [], + "result": { + "name": "token", + "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" + } + } + ] + }, + { + "name": "session", + "summary": "Get a destributor session token.", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:token:session" + ] + } + ], + "params": [], + "result": { + "name": "token", + "summary": "the token value", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Acquire a distributor session token", + "params": [], + "result": { + "name": "token", + "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" + } + } + ] + }, + { + "name": "root", + "summary": "Get a root device token.", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:token:root" + ] + } + ], + "params": [], + "result": { + "name": "token", + "summary": "the token value", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Acquire a Firebolt root device identity token", + "params": [], + "result": { + "name": "token", + "value": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c" + } + } + ] + } + ], + "components": { + "schemas": { + "TokenType": { + "title": "TokenType", + "type": "string", + "enum": [ + "platform", + "device", + "distributor" + ] + } + } + } +} \ No newline at end of file diff --git a/src/openrpc/capabilities.json b/src/openrpc/capabilities.json index 892f0e493..c5d7e61d6 100644 --- a/src/openrpc/capabilities.json +++ b/src/openrpc/capabilities.json @@ -1,910 +1,914 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Capabilities", - "description": "The Capabilities module provides information about which discreet unit of functionality is enabled for the apps.", - "version": "0.0.0" - }, - "methods": [ - { - "name": "supported", - "summary": "Returns whether the platform supports the passed capability.", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:capabilities:info" - ] - } - ], - "params": [ - { - "name": "capability", - "required": true, - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Capability" - } - } - ], - "result": { - "name": "supported", - "summary": "Whether or not capability is supported in device.", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Wifi scan supported capability", - "params": [ - { - "name": "capability", - "value": "xrn:firebolt:capability:wifi:scan" - } - ], - "result": { - "name": "Default Result", - "value": true - } - }, - { - "name": "BLE protocol unsupported capability", - "params": [ - { - "name": "capability", - "value": "xrn:firebolt:capability:protocol:bluetoothle" - } - ], - "result": { - "name": "Default Result", - "value": false - } - } - ] - }, - { - "name": "available", - "summary": "Returns whether a capability is available now.", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:capabilities:info" - ] - } - ], - "params": [ - { - "name": "capability", - "required": true, - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Capability" - } - } - ], - "result": { - "name": "available", - "summary": "Whether or not capability is available now.", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Device Token.", - "params": [ - { - "name": "capability", - "value": "xrn:firebolt:capability:token:device" - } - ], - "result": { - "name": "Default Result", - "value": true - } - }, - { - "name": "Unavailable Platform token.", - "params": [ - { - "name": "capability", - "value": "xrn:firebolt:capability:token:platform" - } - ], - "result": { - "name": "Default Result", - "value": false - } - } - ] - }, - { - "name": "permitted", - "summary": "Returns whether the current App has permission to the passed capability and role.", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:capabilities:info" - ] - } - ], - "params": [ - { - "name": "capability", - "required": true, - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Capability" - } - }, - { - "name": "options", - "summary": "Capability options", - "schema": { - "$ref": "#/components/schemas/CapabilityOption" - } - } - ], - "result": { - "name": "permitted", - "summary": "Whether or not app is permitted for the given capability and the role", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Keyboard", - "params": [ - { - "name": "capability", - "value": "xrn:firebolt:capability:input:keyboard" - } - ], - "result": { - "name": "Default Result", - "value": true - } - }, - { - "name": "Keyboard incorrect manage role capability", - "params": [ - { - "name": "capability", - "value": "xrn:firebolt:capability:input:keyboard" - }, - { - "name": "options", - "value": { - "role": "manage" - } - } - ], - "result": { - "name": "Default Result", - "value": false - } - }, - { - "name": "Wifi scan not permitted capability", - "params": [ - { - "name": "capability", - "value": "xrn:firebolt:capability:wifi:scan" - } - ], - "result": { - "name": "Default Result", - "value": false - } - } - ] - }, - { - "name": "granted", - "summary": "Returns whether the current App has a user grant for passed capability and role.", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:capabilities:info" - ] - } - ], - "params": [ - { - "name": "capability", - "required": true, - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Capability" - } - }, - { - "name": "options", - "summary": "Capability options", - "schema": { - "$ref": "#/components/schemas/CapabilityOption" - } - } - ], - "result": { - "name": "granted", - "summary": "Whether or not app is granted to use the given capability and the role", - "schema": { - "oneOf": [ - { - "type": "boolean" - }, - { - "const": null - } - ] - } - }, - "examples": [ - { - "name": "Default capabilities without grants.", - "params": [ - { - "name": "capability", - "value": "xrn:firebolt:capability:input:keyboard" - } - ], - "result": { - "name": "Default Result", - "value": true - } - }, - { - "name": "Get Postal code without grants.", - "params": [ - { - "name": "capability", - "value": "xrn:firebolt:capability:localization:postal-code" - } - ], - "result": { - "name": "Default Result", - "value": false - } - }, - { - "name": "Get Postal code with grants.", - "params": [ - { - "name": "capability", - "value": "xrn:firebolt:capability:localization:postal-code" - } - ], - "result": { - "name": "Default Result", - "value": null - } - } - ] - }, - { - "name": "info", - "summary": "Returns an array of CapabilityInfo objects for the passed in capabilities.", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:capabilities:info" - ] - } - ], - "params": [ - { - "name": "capabilities", - "required": true, - "schema": { - "type": "array", - "items": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Capability" - }, - "minItems": 1 - } - } - ], - "result": { - "name": "info", - "summary": "Returns an array of CapabilityInfo objects for the passed in capabilities.", - "schema": { - "type": "array", - "items": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/CapabilityInfo" - }, - "minItems": 1 - } - }, - "examples": [ - { - "name": "Default result", - "params": [ - { - "name": "capabilities", - "value": [ - "xrn:firebolt:capability:device:model", - "xrn:firebolt:capability:input:keyboard", - "xrn:firebolt:capability:protocol:bluetoothle", - "xrn:firebolt:capability:token:device", - "xrn:firebolt:capability:token:platform", - "xrn:firebolt:capability:protocol:moca", - "xrn:firebolt:capability:wifi:scan", - "xrn:firebolt:capability:localization:postal-code", - "xrn:firebolt:capability:localization:locality" - ] - } - ], - "result": { - "name": "Default Result", - "value": [ - { - "capability": "xrn:firebolt:capability:device:model", - "supported": true, - "available": true, - "use": { - "permitted": true, - "granted": true - }, - "manage": { - "permitted": true, - "granted": true - }, - "provide": { - "permitted": true, - "granted": true - } - }, - { - "capability": "xrn:firebolt:capability:input:keyboard", - "supported": true, - "available": true, - "use": { - "permitted": true, - "granted": true - }, - "manage": { - "permitted": true, - "granted": true - }, - "provide": { - "permitted": true, - "granted": true - } - }, - { - "capability": "xrn:firebolt:capability:protocol:bluetoothle", - "supported": false, - "available": false, - "use": { - "permitted": true, - "granted": true - }, - "manage": { - "permitted": true, - "granted": true - }, - "provide": { - "permitted": true, - "granted": true - }, - "details": [ - "unsupported" - ] - }, - { - "capability": "xrn:firebolt:capability:token:device", - "supported": true, - "available": true, - "use": { - "permitted": true, - "granted": true - }, - "manage": { - "permitted": true, - "granted": true - }, - "provide": { - "permitted": true, - "granted": true - } - }, - { - "capability": "xrn:firebolt:capability:token:platform", - "supported": true, - "available": false, - "use": { - "permitted": true, - "granted": true - }, - "manage": { - "permitted": true, - "granted": true - }, - "provide": { - "permitted": true, - "granted": true - }, - "details": [ - "unavailable" - ] - }, - { - "capability": "xrn:firebolt:capability:protocol:moca", - "supported": true, - "available": false, - "use": { - "permitted": true, - "granted": true - }, - "manage": { - "permitted": true, - "granted": true - }, - "provide": { - "permitted": true, - "granted": true - }, - "details": [ - "disabled", - "unavailable" - ] - }, - { - "capability": "xrn:firebolt:capability:wifi:scan", - "supported": true, - "available": true, - "use": { - "permitted": true, - "granted": true - }, - "manage": { - "permitted": true, - "granted": true - }, - "provide": { - "permitted": true, - "granted": true - }, - "details": [ - "unpermitted" - ] - }, - { - "capability": "xrn:firebolt:capability:localization:postal-code", - "supported": true, - "available": true, - "use": { - "permitted": true, - "granted": null - }, - "manage": { - "permitted": true, - "granted": true - }, - "provide": { - "permitted": true, - "granted": true - }, - "details": [ - "ungranted" - ] - }, - { - "capability": "xrn:firebolt:capability:localization:postal-code", - "supported": true, - "available": true, - "use": { - "permitted": true, - "granted": true - }, - "manage": { - "permitted": true, - "granted": true - }, - "provide": { - "permitted": true, - "granted": true - }, - "details": [ - "ungranted" - ] - }, - { - "capability": "xrn:firebolt:capability:localization:locality", - "supported": true, - "available": true, - "use": { - "permitted": true, - "granted": true - }, - "manage": { - "permitted": true, - "granted": true - }, - "provide": { - "permitted": true, - "granted": true - }, - "details": [ - "grantDenied", - "ungranted" - ] - } - ] - } - } - ] - }, - { - "name": "request", - "summary": "Requests grants for all capability/role combinations in the roles array.", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:capabilities:request" - ] - } - ], - "params": [ - { - "name": "grants", - "required": true, - "schema": { - "type": "array", - "items": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Permission" - }, - "minItems": 1 - } - } - ], - "result": { - "name": "Default Result", - "summary": "Returns an array of CapabilityInfo objects for the passed in capabilities.", - "schema": { - "type": "array", - "items": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/CapabilityInfo" - }, - "minItems": 1 - } - }, - "examples": [ - { - "name": "Default result", - "params": [ - { - "name": "grants", - "value": [ - { - "role": "use", - "capability": "xrn:firebolt:capability:commerce:purchase" - } - ] - } - ], - "result": { - "name": "Default Result", - "value": [ - { - "capability": "xrn:firebolt:capability:commerce:purchase", - "supported": true, - "available": true, - "use": { - "permitted": true, - "granted": true - }, - "manage": { - "permitted": true, - "granted": true - }, - "provide": { - "permitted": true, - "granted": true - } - } - ] - } - } - ] - }, - { - "name": "onAvailable", - "tags": [ - { - "name": "event" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:capabilities:info" - ] - } - ], - "summary": "Listens for all App permitted capabilities to become available.", - "params": [ - { - "name": "capability", - "required": true, - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Capability" - } - } - ], - "result": { - "name": "value", - "summary": "Provides the capability info.", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/CapabilityInfo" - } - }, - "examples": [ - { - "name": "Platform token is available", - "params": [ - { - "name": "capability", - "value": "xrn:firebolt:capability:token:platform" - } - ], - "result": { - "name": "Default result", - "value": { - "capability": "xrn:firebolt:capability:token:platform", - "supported": true, - "available": true, - "use": { - "permitted": true, - "granted": true - }, - "manage": { - "permitted": true, - "granted": true - }, - "provide": { - "permitted": true, - "granted": true - }, - "details": [ - "unpermitted" - ] - } - } - } - ] - }, - { - "name": "onUnavailable", - "tags": [ - { - "name": "event" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:capabilities:info" - ] - } - ], - "summary": "Listens for all App permitted capabilities to become unavailable.", - "params": [ - { - "name": "capability", - "required": true, - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Capability" - } - } - ], - "result": { - "name": "value", - "summary": "Provides the capability info.", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/CapabilityInfo" - } - }, - "examples": [ - { - "name": "Platform token is unavailable.", - "params": [ - { - "name": "capability", - "value": "xrn:firebolt:capability:token:platform" - } - ], - "result": { - "name": "Default Result", - "value": { - "capability": "xrn:firebolt:capability:token:platform", - "supported": true, - "available": false, - "use": { - "permitted": true, - "granted": true - }, - "manage": { - "permitted": true, - "granted": true - }, - "provide": { - "permitted": true, - "granted": true - }, - "details": [ - "unavailable" - ] - } - } - } - ] - }, - { - "name": "onGranted", - "tags": [ - { - "name": "event" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:capabilities:info" - ] - } - ], - "summary": "Listens for all App permitted capabilities to become granted.", - "params": [ - { - "name": "role", - "required": true, - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Role" - } - }, - { - "name": "capability", - "required": true, - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Capability" - } - } - ], - "result": { - "name": "value", - "summary": "Provides the capability info.", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/CapabilityInfo" - } - }, - "examples": [ - { - "name": "Postal code granted", - "params": [ - { - "name": "role", - "value": "use" - }, - { - "name": "capability", - "value": "xrn:firebolt:capability:localization:postal-code" - } - ], - "result": { - "name": "Default Result", - "value": { - "capability": "xrn:firebolt:capability:localization:postal-code", - "supported": true, - "available": true, - "use": { - "permitted": true, - "granted": true - }, - "manage": { - "permitted": true, - "granted": true - }, - "provide": { - "permitted": true, - "granted": true - } - } - } - } - ] - }, - { - "name": "onRevoked", - "tags": [ - { - "name": "event" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:capabilities:info" - ] - } - ], - "summary": "Listens for all App permitted capabilities to become revoked.", - "params": [ - { - "name": "role", - "required": true, - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Role" - } - }, - { - "name": "capability", - "required": true, - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Capability" - } - } - ], - "result": { - "name": "value", - "summary": "Provides the capability info.", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/CapabilityInfo" - } - }, - "examples": [ - { - "name": "Postal code revoked", - "params": [ - { - "name": "role", - "value": "use" - }, - { - "name": "capability", - "value": "xrn:firebolt:capability:localization:postal-code" - } - ], - "result": { - "name": "Default Result", - "value": { - "capability": "xrn:firebolt:capability:localization:postal-code", - "supported": true, - "available": true, - "use": { - "permitted": true, - "granted": true - }, - "manage": { - "permitted": true, - "granted": true - }, - "provide": { - "permitted": true, - "granted": true - }, - "details": [ - "grantDenied" - ] - } - } - } - ] - } - ], - "components": { - "schemas": { - "CapabilityOption": { - "title": "CapabilityOption", - "type": "object", - "properties": { - "role": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Role", - "description": "Which role of the capability to check the state of, default will be 'use'", - "default": "use" - } - } - } - } - } + "openrpc": "1.2.4", + "info": { + "title": "Capabilities", + "description": "The Capabilities module provides information about which discreet unit of functionality is enabled for the apps.", + "version": "0.0.0" + }, + "methods": [ + { + "name": "supported", + "summary": "Returns whether the platform supports the passed capability.", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:capabilities:info" + ] + } + ], + "params": [ + { + "name": "capability", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Capability" + } + } + ], + "result": { + "name": "supported", + "summary": "Whether or not capability is supported in device.", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Wifi scan supported capability", + "params": [ + { + "name": "capability", + "value": "xrn:firebolt:capability:wifi:scan" + } + ], + "result": { + "name": "Default Result", + "value": true + } + }, + { + "name": "BLE protocol unsupported capability", + "params": [ + { + "name": "capability", + "value": "xrn:firebolt:capability:protocol:bluetoothle" + } + ], + "result": { + "name": "Default Result", + "value": false + } + } + ] + }, + { + "name": "available", + "summary": "Returns whether a capability is available now.", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:capabilities:info" + ] + } + ], + "params": [ + { + "name": "capability", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Capability" + } + } + ], + "result": { + "name": "available", + "summary": "Whether or not capability is available now.", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Device Token.", + "params": [ + { + "name": "capability", + "value": "xrn:firebolt:capability:token:device" + } + ], + "result": { + "name": "Default Result", + "value": true + } + }, + { + "name": "Unavailable Platform token.", + "params": [ + { + "name": "capability", + "value": "xrn:firebolt:capability:token:platform" + } + ], + "result": { + "name": "Default Result", + "value": false + } + } + ] + }, + { + "name": "permitted", + "summary": "Returns whether the current App has permission to the passed capability and role.", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:capabilities:info" + ] + } + ], + "params": [ + { + "name": "capability", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Capability" + } + }, + { + "name": "options", + "summary": "Capability options", + "schema": { + "$ref": "#/components/schemas/CapabilityOption" + } + } + ], + "result": { + "name": "permitted", + "summary": "Whether or not app is permitted for the given capability and the role", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Keyboard", + "params": [ + { + "name": "capability", + "value": "xrn:firebolt:capability:input:keyboard" + } + ], + "result": { + "name": "Default Result", + "value": true + } + }, + { + "name": "Keyboard incorrect manage role capability", + "params": [ + { + "name": "capability", + "value": "xrn:firebolt:capability:input:keyboard" + }, + { + "name": "options", + "value": { + "role": "manage" + } + } + ], + "result": { + "name": "Default Result", + "value": false + } + }, + { + "name": "Wifi scan not permitted capability", + "params": [ + { + "name": "capability", + "value": "xrn:firebolt:capability:wifi:scan" + } + ], + "result": { + "name": "Default Result", + "value": false + } + } + ] + }, + { + "name": "granted", + "summary": "Returns whether the current App has a user grant for passed capability and role.", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:capabilities:info" + ] + } + ], + "params": [ + { + "name": "capability", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Capability" + } + }, + { + "name": "options", + "summary": "Capability options", + "schema": { + "$ref": "#/components/schemas/CapabilityOption" + } + } + ], + "result": { + "name": "granted", + "summary": "Whether or not app is granted to use the given capability and the role", + "schema": { + "oneOf": [ + { + "type": "boolean" + }, + { + "const": null + } + ] + } + }, + "examples": [ + { + "name": "Default capabilities without grants.", + "params": [ + { + "name": "capability", + "value": "xrn:firebolt:capability:input:keyboard" + } + ], + "result": { + "name": "Default Result", + "value": true + } + }, + { + "name": "Get Postal code without grants.", + "params": [ + { + "name": "capability", + "value": "xrn:firebolt:capability:localization:postal-code" + } + ], + "result": { + "name": "Default Result", + "value": false + } + }, + { + "name": "Get Postal code with grants.", + "params": [ + { + "name": "capability", + "value": "xrn:firebolt:capability:localization:postal-code" + } + ], + "result": { + "name": "Default Result", + "value": null + } + } + ] + }, + { + "name": "info", + "summary": "Returns an array of CapabilityInfo objects for the passed in capabilities.", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:capabilities:info" + ] + } + ], + "params": [ + { + "name": "capabilities", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Capability" + }, + "minItems": 1 + } + } + ], + "result": { + "name": "info", + "summary": "Returns an array of CapabilityInfo objects for the passed in capabilities.", + "schema": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/CapabilityInfo" + }, + "minItems": 1 + } + }, + "examples": [ + { + "name": "Default result", + "params": [ + { + "name": "capabilities", + "value": [ + "xrn:firebolt:capability:device:model", + "xrn:firebolt:capability:input:keyboard", + "xrn:firebolt:capability:protocol:bluetoothle", + "xrn:firebolt:capability:token:device", + "xrn:firebolt:capability:token:platform", + "xrn:firebolt:capability:protocol:moca", + "xrn:firebolt:capability:wifi:scan", + "xrn:firebolt:capability:localization:postal-code", + "xrn:firebolt:capability:localization:locality" + ] + } + ], + "result": { + "name": "Default Result", + "value": [ + { + "capability": "xrn:firebolt:capability:device:model", + "supported": true, + "available": true, + "use": { + "permitted": true, + "granted": true + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + } + }, + { + "capability": "xrn:firebolt:capability:input:keyboard", + "supported": true, + "available": true, + "use": { + "permitted": true, + "granted": true + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + } + }, + { + "capability": "xrn:firebolt:capability:protocol:bluetoothle", + "supported": false, + "available": false, + "use": { + "permitted": true, + "granted": true + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + }, + "details": [ + "unsupported" + ] + }, + { + "capability": "xrn:firebolt:capability:token:device", + "supported": true, + "available": true, + "use": { + "permitted": true, + "granted": true + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + } + }, + { + "capability": "xrn:firebolt:capability:token:platform", + "supported": true, + "available": false, + "use": { + "permitted": true, + "granted": true + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + }, + "details": [ + "unavailable" + ] + }, + { + "capability": "xrn:firebolt:capability:protocol:moca", + "supported": true, + "available": false, + "use": { + "permitted": true, + "granted": true + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + }, + "details": [ + "disabled", + "unavailable" + ] + }, + { + "capability": "xrn:firebolt:capability:wifi:scan", + "supported": true, + "available": true, + "use": { + "permitted": true, + "granted": true + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + }, + "details": [ + "unpermitted" + ] + }, + { + "capability": "xrn:firebolt:capability:localization:postal-code", + "supported": true, + "available": true, + "use": { + "permitted": true, + "granted": null + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + }, + "details": [ + "ungranted" + ] + }, + { + "capability": "xrn:firebolt:capability:localization:postal-code", + "supported": true, + "available": true, + "use": { + "permitted": true, + "granted": true + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + }, + "details": [ + "ungranted" + ] + }, + { + "capability": "xrn:firebolt:capability:localization:locality", + "supported": true, + "available": true, + "use": { + "permitted": true, + "granted": true + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + }, + "details": [ + "grantDenied", + "ungranted" + ] + } + ] + } + } + ] + }, + { + "name": "request", + "summary": "Requests grants for all capability/role combinations in the roles array.", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:capabilities:request" + ] + } + ], + "params": [ + { + "name": "grants", + "required": true, + "schema": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Permission" + }, + "minItems": 1 + } + } + ], + "result": { + "name": "Default Result", + "summary": "Returns an array of CapabilityInfo objects for the passed in capabilities.", + "schema": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/CapabilityInfo" + }, + "minItems": 1 + } + }, + "examples": [ + { + "name": "Default result", + "params": [ + { + "name": "grants", + "value": [ + { + "role": "use", + "capability": "xrn:firebolt:capability:commerce:purchase" + } + ] + } + ], + "result": { + "name": "Default Result", + "value": [ + { + "capability": "xrn:firebolt:capability:commerce:purchase", + "supported": true, + "available": true, + "use": { + "permitted": true, + "granted": true + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + } + } + ] + } + } + ] + }, + { + "name": "available", + "tags": [ + { + "name": "notifier", + "x-event": "Capabilities.onAvailable" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:capabilities:info" + ] + } + ], + "summary": "Listens for all App permitted capabilities to become available.", + "params": [ + { + "name": "capability", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Capability" + } + }, + { + "name": "value", + "summary": "Provides the capability info.", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/CapabilityInfo" + } + } + ], + "examples": [ + { + "name": "Platform token is available", + "params": [ + { + "name": "capability", + "value": "xrn:firebolt:capability:token:platform" + }, + { + "name": "Default result", + "value": { + "capability": "xrn:firebolt:capability:token:platform", + "supported": true, + "available": true, + "use": { + "permitted": true, + "granted": true + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + }, + "details": [ + "unpermitted" + ] + } + } + ] + } + ] + }, + { + "name": "unavailable", + "tags": [ + { + "name": "notifier", + "x-event": "Capabilities.onUnavailable" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:capabilities:info" + ] + } + ], + "summary": "Listens for all App permitted capabilities to become unavailable.", + "params": [ + { + "name": "capability", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Capability" + } + }, + { + "name": "value", + "summary": "Provides the capability info.", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/CapabilityInfo" + } + } + ], + "examples": [ + { + "name": "Platform token is unavailable.", + "params": [ + { + "name": "capability", + "value": "xrn:firebolt:capability:token:platform" + }, + { + "name": "Default Result", + "value": { + "capability": "xrn:firebolt:capability:token:platform", + "supported": true, + "available": false, + "use": { + "permitted": true, + "granted": true + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + }, + "details": [ + "unavailable" + ] + } + } + ] + } + ] + }, + { + "name": "granted", + "tags": [ + { + "name": "notifier", + "x-event": "Capabilities.onGranted" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:capabilities:info" + ] + } + ], + "summary": "Listens for all App permitted capabilities to become granted.", + "params": [ + { + "name": "role", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Role" + } + }, + { + "name": "capability", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Capability" + } + }, + { + "name": "value", + "summary": "Provides the capability info.", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/CapabilityInfo" + } + } + ], + "examples": [ + { + "name": "Postal code granted", + "params": [ + { + "name": "role", + "value": "use" + }, + { + "name": "capability", + "value": "xrn:firebolt:capability:localization:postal-code" + }, + { + "name": "Default Result", + "value": { + "capability": "xrn:firebolt:capability:localization:postal-code", + "supported": true, + "available": true, + "use": { + "permitted": true, + "granted": true + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + } + } + } + ] + } + ] + }, + { + "name": "revoked", + "tags": [ + { + "name": "notifier", + "x-event": "Capabilities.onRevoked" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:capabilities:info" + ] + } + ], + "summary": "Listens for all App permitted capabilities to become revoked.", + "params": [ + { + "name": "role", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Role" + } + }, + { + "name": "capability", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Capability" + } + }, + { + "name": "value", + "summary": "Provides the capability info.", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/CapabilityInfo" + } + } + ], + "examples": [ + { + "name": "Postal code revoked", + "params": [ + { + "name": "role", + "value": "use" + }, + { + "name": "capability", + "value": "xrn:firebolt:capability:localization:postal-code" + }, + { + "name": "Default Result", + "value": { + "capability": "xrn:firebolt:capability:localization:postal-code", + "supported": true, + "available": true, + "use": { + "permitted": true, + "granted": true + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + }, + "details": [ + "grantDenied" + ] + } + } + ] + } + ] + } + ], + "components": { + "schemas": { + "CapabilityOption": { + "title": "CapabilityOption", + "type": "object", + "properties": { + "role": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Role", + "description": "Which role of the capability to check the state of, default will be 'use'", + "default": "use" + } + } + } + } + } } \ No newline at end of file diff --git a/src/openrpc/closed_captions.json b/src/openrpc/closed_captions.json index f04ab7cbc..2bca1c270 100644 --- a/src/openrpc/closed_captions.json +++ b/src/openrpc/closed_captions.json @@ -1,651 +1,651 @@ { - "openrpc": "1.2.4", - "info": { - "title": "ClosedCaptions", - "description": "A module for managing closed-captions Settings.", - "version": "0.0.0" - }, - "methods": [ - { - "name": "enabled", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:closedcaptions" - ] - } - ], - "summary": "Whether or not closed-captions are enabled.", - "params": [], - "result": { - "name": "enabled", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "enabled", - "value": true - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "enabled", - "value": false - } - } - ] - }, - { - "name": "fontFamily", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:closedcaptions" - ] - } - ], - "summary": "The preferred font family for displaying closed-captions.", - "params": [], - "result": { - "name": "family", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/FontFamily" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "family", - "value": "monospace" - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "family", - "value": "cursive" - } - }, - { - "name": "Default example #3", - "params": [], - "result": { - "name": "family", - "value": null - } - } - ] - }, - { - "name": "fontSize", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:closedcaptions" - ] - } - ], - "summary": "The preferred font size for displaying closed-captions.", - "params": [], - "result": { - "name": "size", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/FontSize" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "size", - "value": 1 - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "size", - "value": 1 - } - }, - { - "name": "Default example #3", - "params": [], - "result": { - "name": "size", - "value": null - } - } - ] - }, - { - "name": "fontColor", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:closedcaptions" - ] - } - ], - "summary": "The preferred font color for displaying closed-captions.", - "params": [], - "result": { - "name": "color", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/Color" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "color", - "value": "#ffffff" - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "color", - "value": "#000000" - } - }, - { - "name": "Default example #3", - "params": [], - "result": { - "name": "color", - "value": null - } - } - ] - }, - { - "name": "fontEdge", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:closedcaptions" - ] - } - ], - "summary": "The preferred font edge style for displaying closed-captions.", - "params": [], - "result": { - "name": "edge", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/FontEdge" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "edge", - "value": "none" - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "edge", - "value": "solid" - } - }, - { - "name": "Default example #3", - "params": [], - "result": { - "name": "edge", - "value": null - } - } - ] - }, - { - "name": "fontEdgeColor", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:closedcaptions" - ] - } - ], - "summary": "The preferred font edge color for displaying closed-captions.", - "params": [], - "result": { - "name": "color", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/Color" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "color", - "value": "#000000" - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "color", - "value": "#ffffff" - } - }, - { - "name": "Default example #3", - "params": [], - "result": { - "name": "color", - "value": null - } - } - ] - }, - { - "name": "fontOpacity", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:closedcaptions" - ] - } - ], - "summary": "The preferred opacity for displaying closed-captions characters.", - "params": [], - "result": { - "name": "opacity", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/Opacity" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "opacity", - "value": 99 - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "opacity", - "value": 100 - } - }, - { - "name": "Default example #3", - "params": [], - "result": { - "name": "opacity", - "value": null - } - } - ] - }, - { - "name": "backgroundColor", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:closedcaptions" - ] - } - ], - "summary": "The preferred background color for displaying closed-captions, .", - "params": [], - "result": { - "name": "color", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/Color" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "color", - "value": "#000000" - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "color", - "value": "#ffffff" - } - }, - { - "name": "Default example #3", - "params": [], - "result": { - "name": "color", - "value": null - } - } - ] - }, - { - "name": "backgroundOpacity", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:closedcaptions" - ] - } - ], - "summary": "The preferred opacity for displaying closed-captions backgrounds.", - "params": [], - "result": { - "name": "opacity", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/Opacity" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "opacity", - "value": 99 - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "opacity", - "value": 100 - } - }, - { - "name": "Default example #3", - "params": [], - "result": { - "name": "opacity", - "value": null - } - } - ] - }, - { - "name": "textAlign", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:closedcaptions" - ] - } - ], - "summary": "The preferred horizontal alignment for displaying closed-captions characters.", - "params": [], - "result": { - "name": "alignment", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/HorizontalAlignment" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "alignment", - "value": "center" - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "alignment", - "value": "left" - } - }, - { - "name": "Default example #3", - "params": [], - "result": { - "name": "alignment", - "value": null - } - } - ] - }, - { - "name": "textAlignVertical", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:closedcaptions" - ] - } - ], - "summary": "The preferred horizontal alignment for displaying closed-captions characters.", - "params": [], - "result": { - "name": "alignment", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/VerticalAlignment" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "alignment", - "value": "middle" - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "alignment", - "value": "top" - } - }, - { - "name": "Default example #3", - "params": [], - "result": { - "name": "alignment", - "value": null - } - } - ] - }, - { - "name": "windowColor", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:closedcaptions" - ] - } - ], - "summary": "The preferred window color for displaying closed-captions, .", - "params": [], - "result": { - "name": "color", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/Color" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "color", - "value": "#000000" - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "color", - "value": "white" - } - }, - { - "name": "Default example #3", - "params": [], - "result": { - "name": "color", - "value": null - } - } - ] - }, - { - "name": "windowOpacity", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:closedcaptions" - ] - } - ], - "summary": "The preferred window opacity for displaying closed-captions backgrounds.", - "params": [], - "result": { - "name": "opacity", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/Opacity" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "opacity", - "value": 99 - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "opacity", - "value": 100 - } - }, - { - "name": "Default example #3", - "params": [], - "result": { - "name": "opacity", - "value": null - } - } - ] - } - ], - "components": { - "schemas": { - "ClosedCaptionsSettingsProviderRequest": { - "title": "ClosedCaptionsSettingsProviderRequest", - "allOf": [ - { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/ProviderRequest" - }, - { - "type": "object", - "properties": { - "parameters": { - "const": null - } - } - } - ], - "examples": [ - { - "correlationId": "abc" - } - ] - } - } - } + "openrpc": "1.2.4", + "info": { + "title": "ClosedCaptions", + "description": "A module for managing closed-captions Settings.", + "version": "0.0.0" + }, + "methods": [ + { + "name": "enabled", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:closedcaptions" + ] + } + ], + "summary": "Whether or not closed-captions are enabled.", + "params": [], + "result": { + "name": "enabled", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "enabled", + "value": true + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "enabled", + "value": false + } + } + ] + }, + { + "name": "fontFamily", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:closedcaptions" + ] + } + ], + "summary": "The preferred font family for displaying closed-captions.", + "params": [], + "result": { + "name": "family", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/FontFamily" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "family", + "value": "monospace_serif" + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "family", + "value": "cursive" + } + }, + { + "name": "Default example #3", + "params": [], + "result": { + "name": "family", + "value": null + } + } + ] + }, + { + "name": "fontSize", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:closedcaptions" + ] + } + ], + "summary": "The preferred font size for displaying closed-captions.", + "params": [], + "result": { + "name": "size", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/FontSize" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "size", + "value": 1 + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "size", + "value": 1 + } + }, + { + "name": "Default example #3", + "params": [], + "result": { + "name": "size", + "value": null + } + } + ] + }, + { + "name": "fontColor", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:closedcaptions" + ] + } + ], + "summary": "The preferred font color for displaying closed-captions.", + "params": [], + "result": { + "name": "color", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/Color" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "color", + "value": "#ffffff" + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "color", + "value": "#000000" + } + }, + { + "name": "Default example #3", + "params": [], + "result": { + "name": "color", + "value": null + } + } + ] + }, + { + "name": "fontEdge", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:closedcaptions" + ] + } + ], + "summary": "The preferred font edge style for displaying closed-captions.", + "params": [], + "result": { + "name": "edge", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/FontEdge" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "edge", + "value": "none" + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "edge", + "value": "uniform" + } + }, + { + "name": "Default example #3", + "params": [], + "result": { + "name": "edge", + "value": null + } + } + ] + }, + { + "name": "fontEdgeColor", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:closedcaptions" + ] + } + ], + "summary": "The preferred font edge color for displaying closed-captions.", + "params": [], + "result": { + "name": "color", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/Color" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "color", + "value": "#000000" + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "color", + "value": "#ffffff" + } + }, + { + "name": "Default example #3", + "params": [], + "result": { + "name": "color", + "value": null + } + } + ] + }, + { + "name": "fontOpacity", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:closedcaptions" + ] + } + ], + "summary": "The preferred opacity for displaying closed-captions characters.", + "params": [], + "result": { + "name": "opacity", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/Opacity" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "opacity", + "value": 99 + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "opacity", + "value": 100 + } + }, + { + "name": "Default example #3", + "params": [], + "result": { + "name": "opacity", + "value": null + } + } + ] + }, + { + "name": "backgroundColor", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:closedcaptions" + ] + } + ], + "summary": "The preferred background color for displaying closed-captions, .", + "params": [], + "result": { + "name": "color", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/Color" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "color", + "value": "#000000" + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "color", + "value": "#ffffff" + } + }, + { + "name": "Default example #3", + "params": [], + "result": { + "name": "color", + "value": null + } + } + ] + }, + { + "name": "backgroundOpacity", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:closedcaptions" + ] + } + ], + "summary": "The preferred opacity for displaying closed-captions backgrounds.", + "params": [], + "result": { + "name": "opacity", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/Opacity" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "opacity", + "value": 99 + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "opacity", + "value": 100 + } + }, + { + "name": "Default example #3", + "params": [], + "result": { + "name": "opacity", + "value": null + } + } + ] + }, + { + "name": "textAlign", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:closedcaptions" + ] + } + ], + "summary": "The preferred horizontal alignment for displaying closed-captions characters.", + "params": [], + "result": { + "name": "alignment", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/HorizontalAlignment" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "alignment", + "value": "center" + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "alignment", + "value": "left" + } + }, + { + "name": "Default example #3", + "params": [], + "result": { + "name": "alignment", + "value": null + } + } + ] + }, + { + "name": "textAlignVertical", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:closedcaptions" + ] + } + ], + "summary": "The preferred horizontal alignment for displaying closed-captions characters.", + "params": [], + "result": { + "name": "alignment", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/VerticalAlignment" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "alignment", + "value": "middle" + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "alignment", + "value": "top" + } + }, + { + "name": "Default example #3", + "params": [], + "result": { + "name": "alignment", + "value": null + } + } + ] + }, + { + "name": "windowColor", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:closedcaptions" + ] + } + ], + "summary": "The preferred window color for displaying closed-captions, .", + "params": [], + "result": { + "name": "color", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/Color" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "color", + "value": "#000000" + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "color", + "value": "white" + } + }, + { + "name": "Default example #3", + "params": [], + "result": { + "name": "color", + "value": null + } + } + ] + }, + { + "name": "windowOpacity", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:closedcaptions" + ] + } + ], + "summary": "The preferred window opacity for displaying closed-captions backgrounds.", + "params": [], + "result": { + "name": "opacity", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/Opacity" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "opacity", + "value": 99 + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "opacity", + "value": 100 + } + }, + { + "name": "Default example #3", + "params": [], + "result": { + "name": "opacity", + "value": null + } + } + ] + } + ], + "components": { + "schemas": { + "ClosedCaptionsSettingsProviderRequest": { + "title": "ClosedCaptionsSettingsProviderRequest", + "allOf": [ + { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/ProviderRequest" + }, + { + "type": "object", + "properties": { + "parameters": { + "const": null + } + } + } + ], + "examples": [ + { + "correlationId": "abc" + } + ] + } + } + } } \ No newline at end of file diff --git a/src/openrpc/device.json b/src/openrpc/device.json index dc0031397..47cd12772 100644 --- a/src/openrpc/device.json +++ b/src/openrpc/device.json @@ -1,811 +1,814 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Device", - "description": "A module for querying about the device and it's capabilities.", - "version": "0.0.0" - }, - "methods": [ - { - "name": "id", - "summary": "Get the platform back-office device identifier", - "params": [], - "tags": [ - { - "name": "property:immutable" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:id" - ] - } - ], - "result": { - "name": "id", - "summary": "the id", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": "123" - } - } - ] - }, - { - "name": "distributor", - "summary": "Get the distributor ID for this device", - "params": [], - "tags": [ - { - "name": "property:immutable" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:distributor" - ] - } - ], - "result": { - "name": "distributorId", - "summary": "the distributor ID", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Getting the distributor ID", - "params": [], - "result": { - "name": "Default Result", - "value": "Company" - } - } - ] - }, - { - "name": "platform", - "summary": "Get the platform ID for this device", - "params": [], - "tags": [ - { - "name": "property:immutable" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:info" - ] - } - ], - "result": { - "name": "platformId", - "summary": "the platform ID", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Getting the platform ID", - "params": [], - "result": { - "name": "Default Result", - "value": "WPE" - } - } - ] - }, - { - "name": "uid", - "summary": "Gets a unique id for the current app & device", - "params": [], - "tags": [ - { - "name": "property:immutable" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:uid" - ] - } - ], - "result": { - "name": "uniqueId", - "summary": "a unique ID", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Getting the unique ID", - "params": [], - "result": { - "name": "Default Result", - "value": "ee6723b8-7ab3-462c-8d93-dbf61227998e" - } - } - ] - }, - { - "name": "type", - "summary": "Get the device type", - "params": [], - "tags": [ - { - "name": "property:immutable" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:info" - ] - } - ], - "result": { - "name": "deviceType", - "summary": "the device type", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Getting the device type", - "params": [], - "result": { - "name": "Default Result", - "value": "STB" - } - } - ] - }, - { - "name": "model", - "summary": "Get the device model", - "params": [], - "tags": [ - { - "name": "property:immutable" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:model" - ] - } - ], - "result": { - "name": "model", - "summary": "the device model", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Getting the device model", - "params": [], - "result": { - "name": "Default Result", - "value": "xi6" - } - } - ] - }, - { - "name": "sku", - "summary": "Get the device sku", - "params": [], - "tags": [ - { - "name": "property:immutable" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:sku" - ] - } - ], - "result": { - "name": "sku", - "summary": "the device sku", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Getting the device sku", - "params": [], - "result": { - "name": "Default Result", - "value": "AX061AEI" - } - } - ] - }, - { - "name": "make", - "summary": "Get the device make", - "params": [], - "tags": [ - { - "name": "property:immutable" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:make" - ] - } - ], - "result": { - "name": "make", - "summary": "the device make", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Getting the device make", - "params": [], - "result": { - "name": "Default Result", - "value": "Arris" - } - } - ] - }, - { - "name": "version", - "summary": "Get the SDK, OS and other version info", - "params": [], - "tags": [ - { - "name": "exclude-from-sdk" - }, - { - "name": "property:immutable" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:info" - ] - } - ], - "result": { - "name": "versions", - "summary": "the versions", - "schema": { - "type": "object", - "properties": { - "sdk": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/SemanticVersion", - "description": "The Firebolt SDK version" - }, - "api": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/SemanticVersion", - "description": "The lateset Firebolt API version supported by the curent device." - }, - "firmware": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/SemanticVersion", - "description": "The device firmware version." - }, - "os": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/SemanticVersion", - "description": "**Deprecated** Use `firmware`, instead." - }, - "debug": { - "type": "string", - "description": "Detail version as a string, for debugging purposes" - } - }, - "required": [ - "sdk", - "api", - "firmware", - "os" - ] - } - }, - "examples": [ - { - "name": "Getting the os and sdk versions", - "params": [], - "result": { - "name": "Default Result", - "value": { - "sdk": { - "major": 0, - "minor": 8, - "patch": 0, - "readable": "Firebolt JS SDK v0.8.0" - }, - "api": { - "major": 0, - "minor": 8, - "patch": 0, - "readable": "Firebolt API v0.8.0" - }, - "firmware": { - "major": 1, - "minor": 2, - "patch": 3, - "readable": "Device Firmware v1.2.3" - }, - "os": { - "major": 0, - "minor": 1, - "patch": 0, - "readable": "Firebolt OS v0.1.0" - }, - "debug": "Non-parsable build info for error logging only." - } - } - } - ] - }, - { - "name": "hdcp", - "summary": "Get the supported HDCP profiles", - "params": [], - "tags": [ - { - "name": "property:readonly" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:info" - ] - } - ], - "result": { - "name": "supportedHdcpProfiles", - "summary": "the supported HDCP profiles", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/BooleanMap" - } - }, - "examples": [ - { - "name": "Getting the supported HDCP profiles", - "params": [], - "result": { - "name": "Default Result", - "value": { - "hdcp1.4": true, - "hdcp2.2": true - } - } - } - ] - }, - { - "name": "hdr", - "summary": "Get the supported HDR profiles", - "params": [], - "tags": [ - { - "name": "property:readonly" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:info" - ] - } - ], - "result": { - "name": "supportedHdrProfiles", - "summary": "the supported HDR profiles", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/BooleanMap" - } - }, - "examples": [ - { - "name": "Getting the supported HDR profiles", - "params": [], - "result": { - "name": "Default Result", - "value": { - "hdr10": true, - "hdr10Plus": true, - "dolbyVision": true, - "hlg": true - } - } - } - ] - }, - { - "name": "audio", - "summary": "Get the supported audio profiles", - "params": [], - "tags": [ - { - "name": "property:readonly" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:info" - ] - } - ], - "result": { - "name": "supportedAudioProfiles", - "summary": "the supported audio profiles", - "schema": { - "$ref": "#/components/schemas/AudioProfiles" - } - }, - "examples": [ - { - "name": "Getting the supported audio profiles", - "params": [], - "result": { - "name": "Default Result", - "value": { - "stereo": true, - "dolbyDigital5.1": true, - "dolbyDigital5.1+": true, - "dolbyAtmos": true - } - } - } - ] - }, - { - "name": "screenResolution", - "summary": "Get the current screen resolution", - "params": [], - "tags": [ - { - "name": "property:readonly" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:info" - ] - } - ], - "result": { - "name": "screenResolution", - "summary": "the resolution", - "schema": { - "$ref": "#/components/schemas/Resolution" - } - }, - "examples": [ - { - "name": "Getting the screen resolution", - "params": [], - "result": { - "name": "Default Result", - "value": [ - 1920, - 1080 - ] - } - } - ] - }, - { - "name": "videoResolution", - "summary": "Get the current video resolution", - "params": [], - "tags": [ - { - "name": "property:readonly" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:info" - ] - } - ], - "result": { - "name": "videoResolution", - "summary": "the resolution", - "schema": { - "$ref": "#/components/schemas/Resolution" - } - }, - "examples": [ - { - "name": "Getting the video resolution", - "params": [], - "result": { - "name": "Default Result", - "value": [ - 1920, - 1080 - ] - } - } - ] - }, - { - "name": "name", - "summary": "The human readable name of the device", - "params": [], - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:name" - ] - } - ], - "result": { - "name": "value", - "summary": "the device friendly-name", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "Default Result", - "value": "Living Room" - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "Default Result", - "value": "Kitchen" - } - } - ] - }, - { - "name": "onDeviceNameChanged", - "tags": [ - { - "name": "event" - }, - { - "name": "deprecated", - "x-since": "0.6.0", - "x-alternative": "Device.name()" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:name" - ] - } - ], - "summary": "Get the human readable name of the device", - "params": [], - "result": { - "name": "value", - "summary": "the device friendly-name", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Getting the device name", - "params": [], - "result": { - "name": "Default Result", - "value": "Living Room" - } - } - ] - }, - { - "name": "network", - "summary": "Get the current network status and type", - "params": [], - "tags": [ - { - "name": "property:readonly" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:network:status" - ] - } - ], - "result": { - "name": "networkInfo", - "summary": "the status and type", - "schema": { - "type": "object", - "properties": { - "state": { - "$ref": "#/components/schemas/NetworkState" - }, - "type": { - "$ref": "#/components/schemas/NetworkType" - } - }, - "required": [ - "state", - "type" - ] - } - }, - "examples": [ - { - "name": "Getting the network info", - "params": [], - "result": { - "name": "Default Result", - "value": { - "state": "connected", - "type": "wifi" - } - } - } - ] - }, - { - "name": "provision", - "summary": "Used by a distributor to push provision info to firebolt.", - "tags": [ - { - "name": "capabilities", - "x-manages": [ - "xrn:firebolt:capability:account:id", - "xrn:firebolt:capability:device:id", - "xrn:firebolt:capability:device:distributor" - ] - } - ], - "params": [ - { - "name": "accountId", - "summary": "The id of the account that is device is attached to in the back office.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "deviceId", - "summary": "The id of the device in the back office.", - "required": true, - "schema": { - "type": "string" - } - }, - { - "name": "distributorId", - "summary": "The id of the distributor in the back office.", - "schema": { - "type": "string" - } - } - ], - "result": { - "name": "result", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Default Example", - "params": [ - { - "name": "accountId", - "value": "12345678910" - }, - { - "name": "deviceId", - "value": "987654321111" - } - ], - "result": { - "name": "defaultResult", - "value": null - } - }, - { - "name": "With distributor id", - "params": [ - { - "name": "accountId", - "value": "12345678910" - }, - { - "name": "deviceId", - "value": "987654321111" - }, - { - "name": "distributorId", - "value": "global_partner" - } - ], - "result": { - "name": "partnerResult", - "value": null - } - } - ] - } - ], - "components": { - "schemas": { - "Resolution": { - "type": "array", - "items": [ - { - "type": "integer" - }, - { - "type": "integer" - } - ], - "additionalItems": false, - "minItems": 2, - "maxItems": 2 - }, - "NetworkType": { - "title": "NetworkType", - "type": "string", - "enum": [ - "wifi", - "ethernet", - "hybrid" - ], - "description": "The type of network that is currently active" - }, - "NetworkState": { - "title": "NetworkState", - "type": "string", - "enum": [ - "connected", - "disconnected" - ], - "description": "The type of network that is currently active" - }, - "AudioProfiles": { - "title": "AudioProfiles", - "allOf": [ - { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/BooleanMap" - }, - { - "type": "object", - "propertyNames": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/AudioProfile" - } - } - ] - } - } - } + "openrpc": "1.2.4", + "info": { + "title": "Device", + "description": "A module for querying about the device and it's capabilities.", + "version": "0.0.0" + }, + "methods": [ + { + "name": "id", + "summary": "Get the platform back-office device identifier", + "params": [], + "tags": [ + { + "name": "property:immutable" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:id" + ] + } + ], + "result": { + "name": "id", + "summary": "the id", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "Default Result", + "value": "123" + } + } + ] + }, + { + "name": "distributor", + "summary": "Get the distributor ID for this device", + "params": [], + "tags": [ + { + "name": "property:immutable" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:distributor" + ] + } + ], + "result": { + "name": "distributorId", + "summary": "the distributor ID", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Getting the distributor ID", + "params": [], + "result": { + "name": "Default Result", + "value": "Company" + } + } + ] + }, + { + "name": "platform", + "summary": "Get the platform ID for this device", + "params": [], + "tags": [ + { + "name": "property:immutable" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:info" + ] + } + ], + "result": { + "name": "platformId", + "summary": "the platform ID", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Getting the platform ID", + "params": [], + "result": { + "name": "Default Result", + "value": "WPE" + } + } + ] + }, + { + "name": "uid", + "summary": "Gets a unique id for the current app & device", + "params": [], + "tags": [ + { + "name": "property:immutable" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:uid" + ] + } + ], + "result": { + "name": "uniqueId", + "summary": "a unique ID", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Getting the unique ID", + "params": [], + "result": { + "name": "Default Result", + "value": "ee6723b8-7ab3-462c-8d93-dbf61227998e" + } + } + ] + }, + { + "name": "type", + "summary": "Get the device type", + "params": [], + "tags": [ + { + "name": "property:immutable" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:info" + ] + } + ], + "result": { + "name": "deviceType", + "summary": "the device type", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Getting the device type", + "params": [], + "result": { + "name": "Default Result", + "value": "STB" + } + } + ] + }, + { + "name": "model", + "summary": "Get the device model", + "params": [], + "tags": [ + { + "name": "property:immutable" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:model" + ] + } + ], + "result": { + "name": "model", + "summary": "the device model", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Getting the device model", + "params": [], + "result": { + "name": "Default Result", + "value": "xi6" + } + } + ] + }, + { + "name": "sku", + "summary": "Get the device sku", + "params": [], + "tags": [ + { + "name": "property:immutable" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:sku" + ] + } + ], + "result": { + "name": "sku", + "summary": "the device sku", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Getting the device sku", + "params": [], + "result": { + "name": "Default Result", + "value": "AX061AEI" + } + } + ] + }, + { + "name": "make", + "summary": "Get the device make", + "params": [], + "tags": [ + { + "name": "property:immutable" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:make" + ] + } + ], + "result": { + "name": "make", + "summary": "the device make", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Getting the device make", + "params": [], + "result": { + "name": "Default Result", + "value": "Arris" + } + } + ] + }, + { + "name": "version", + "summary": "Get the SDK, OS and other version info", + "params": [], + "tags": [ + { + "name": "exclude-from-sdk" + }, + { + "name": "property:immutable" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:info" + ] + } + ], + "result": { + "name": "versions", + "summary": "the versions", + "schema": { + "type": "object", + "properties": { + "sdk": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/SemanticVersion", + "description": "The Firebolt SDK version" + }, + "api": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/SemanticVersion", + "description": "The lateset Firebolt API version supported by the curent device." + }, + "firmware": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/SemanticVersion", + "description": "The device firmware version." + }, + "os": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/SemanticVersion", + "description": "**Deprecated** Use `firmware`, instead." + }, + "debug": { + "type": "string", + "description": "Detail version as a string, for debugging purposes" + } + }, + "required": [ + "sdk", + "api", + "firmware", + "os" + ] + } + }, + "examples": [ + { + "name": "Getting the os and sdk versions", + "params": [], + "result": { + "name": "Default Result", + "value": { + "sdk": { + "major": 0, + "minor": 8, + "patch": 0, + "readable": "Firebolt JS SDK v0.8.0" + }, + "api": { + "major": 0, + "minor": 8, + "patch": 0, + "readable": "Firebolt API v0.8.0" + }, + "firmware": { + "major": 1, + "minor": 2, + "patch": 3, + "readable": "Device Firmware v1.2.3" + }, + "os": { + "major": 0, + "minor": 1, + "patch": 0, + "readable": "Firebolt OS v0.1.0" + }, + "debug": "Non-parsable build info for error logging only." + } + } + } + ] + }, + { + "name": "hdcp", + "summary": "Get the supported HDCP profiles", + "params": [], + "tags": [ + { + "name": "property:readonly" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:info" + ] + } + ], + "result": { + "name": "supportedHdcpProfiles", + "summary": "the supported HDCP profiles", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/BooleanMap" + } + }, + "examples": [ + { + "name": "Getting the supported HDCP profiles", + "params": [], + "result": { + "name": "Default Result", + "value": { + "hdcp1.4": true, + "hdcp2.2": true + } + } + } + ] + }, + { + "name": "hdr", + "summary": "Get the supported HDR profiles", + "params": [], + "tags": [ + { + "name": "property:readonly" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:info" + ] + } + ], + "result": { + "name": "supportedHdrProfiles", + "summary": "the supported HDR profiles", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/BooleanMap" + } + }, + "examples": [ + { + "name": "Getting the supported HDR profiles", + "params": [], + "result": { + "name": "Default Result", + "value": { + "hdr10": true, + "hdr10Plus": true, + "dolbyVision": true, + "hlg": true + } + } + } + ] + }, + { + "name": "audio", + "summary": "Get the supported audio profiles", + "params": [], + "tags": [ + { + "name": "property:readonly" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:info" + ] + } + ], + "result": { + "name": "supportedAudioProfiles", + "summary": "the supported audio profiles", + "schema": { + "$ref": "#/components/schemas/AudioProfiles" + } + }, + "examples": [ + { + "name": "Getting the supported audio profiles", + "params": [], + "result": { + "name": "Default Result", + "value": { + "stereo": true, + "dolbyDigital5.1": true, + "dolbyDigital5.1+": true, + "dolbyAtmos": true + } + } + } + ] + }, + { + "name": "screenResolution", + "summary": "Get the current screen resolution", + "params": [], + "tags": [ + { + "name": "property:readonly" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:info" + ] + } + ], + "result": { + "name": "screenResolution", + "summary": "the resolution", + "schema": { + "$ref": "#/components/schemas/Resolution" + } + }, + "examples": [ + { + "name": "Getting the screen resolution", + "params": [], + "result": { + "name": "Default Result", + "value": [ + 1920, + 1080 + ] + } + } + ] + }, + { + "name": "videoResolution", + "summary": "Get the current video resolution", + "params": [], + "tags": [ + { + "name": "property:readonly" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:info" + ] + } + ], + "result": { + "name": "videoResolution", + "summary": "the resolution", + "schema": { + "$ref": "#/components/schemas/Resolution" + } + }, + "examples": [ + { + "name": "Getting the video resolution", + "params": [], + "result": { + "name": "Default Result", + "value": [ + 1920, + 1080 + ] + } + } + ] + }, + { + "name": "name", + "summary": "The human readable name of the device", + "params": [], + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:name" + ] + } + ], + "result": { + "name": "value", + "summary": "the device friendly-name", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "Default Result", + "value": "Living Room" + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "Default Result", + "value": "Kitchen" + } + } + ] + }, + { + "name": "deviceNameChanged", + "tags": [ + { + "name": "notifier", + "x-event": "Device.onDeviceNameChanged" + }, + { + "name": "deprecated", + "x-since": "0.6.0", + "x-alternative": "Device.name()" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:name" + ] + } + ], + "summary": "Get the human readable name of the device", + "params": [ + { + "name": "value", + "summary": "the device friendly-name", + "schema": { + "type": "string" + } + } + ], + "examples": [ + { + "name": "Getting the device name", + "params": [ + { + "name": "Default Result", + "value": "Living Room" + } + ] + } + ] + }, + { + "name": "network", + "summary": "Get the current network status and type", + "params": [], + "tags": [ + { + "name": "property:readonly" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:network:status" + ] + } + ], + "result": { + "name": "networkInfo", + "summary": "the status and type", + "schema": { + "type": "object", + "properties": { + "state": { + "$ref": "#/components/schemas/NetworkState" + }, + "type": { + "$ref": "#/components/schemas/NetworkType" + } + }, + "required": [ + "state", + "type" + ] + } + }, + "examples": [ + { + "name": "Getting the network info", + "params": [], + "result": { + "name": "Default Result", + "value": { + "state": "connected", + "type": "wifi" + } + } + } + ] + }, + { + "name": "provision", + "summary": "Used by a distributor to push provision info to firebolt.", + "tags": [ + { + "name": "capabilities", + "x-manages": [ + "xrn:firebolt:capability:account:id", + "xrn:firebolt:capability:device:id", + "xrn:firebolt:capability:device:distributor" + ] + } + ], + "params": [ + { + "name": "accountId", + "summary": "The id of the account that is device is attached to in the back office.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "deviceId", + "summary": "The id of the device in the back office.", + "required": true, + "schema": { + "type": "string" + } + }, + { + "name": "distributorId", + "summary": "The id of the distributor in the back office.", + "schema": { + "type": "string" + } + } + ], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "accountId", + "value": "12345678910" + }, + { + "name": "deviceId", + "value": "987654321111" + } + ], + "result": { + "name": "defaultResult", + "value": null + } + }, + { + "name": "With distributor id", + "params": [ + { + "name": "accountId", + "value": "12345678910" + }, + { + "name": "deviceId", + "value": "987654321111" + }, + { + "name": "distributorId", + "value": "global_partner" + } + ], + "result": { + "name": "partnerResult", + "value": null + } + } + ] + } + ], + "components": { + "schemas": { + "Resolution": { + "type": "array", + "items": [ + { + "type": "integer" + }, + { + "type": "integer" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + }, + "NetworkType": { + "title": "NetworkType", + "type": "string", + "enum": [ + "wifi", + "ethernet", + "hybrid" + ], + "description": "The type of network that is currently active" + }, + "NetworkState": { + "title": "NetworkState", + "type": "string", + "enum": [ + "connected", + "disconnected" + ], + "description": "The type of network that is currently active" + }, + "AudioProfiles": { + "title": "AudioProfiles", + "allOf": [ + { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/BooleanMap" + }, + { + "type": "object", + "propertyNames": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/AudioProfile" + } + } + ] + } + } + } } \ No newline at end of file diff --git a/src/openrpc/discovery.json b/src/openrpc/discovery.json index 949ff09a5..eaf626bf5 100644 --- a/src/openrpc/discovery.json +++ b/src/openrpc/discovery.json @@ -1,1791 +1,1800 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Discovery", - "version": "0.0.0", - "description": "Your App likely wants to integrate with the Platform's discovery capabilities. For example to add a \"Watch Next\" tile that links to your app from the platform's home screen.\n\nGetting access to this information requires to connect to lower level APIs made available by the platform. Since implementations differ between operators and platforms, the Firebolt SDK offers a Discovery module, that exposes a generic, agnostic interface to the developer.\n\nUnder the hood, an underlaying transport layer will then take care of calling the right APIs for the actual platform implementation that your App is running on.\n\nThe Discovery plugin is used to _send_ information to the Platform.\n\n### Localization\nApps should provide all user-facing strings in the device's language, as specified by the Firebolt `Localization.language` property.\n\nApps should provide prices in the same currency presented in the app. If multiple currencies are supported in the app, the app should provide prices in the user's current default currency." - }, - "methods": [ - { - "name": "policy", - "summary": "get the discovery policy", - "params": [], - "tags": [ - { - "name": "property:readonly" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:discovery:policy" - ] - } - ], - "result": { - "name": "policy", - "summary": "discovery policy opt-in/outs", - "schema": { - "$ref": "#/components/schemas/DiscoveryPolicy" - } - }, - "examples": [ - { - "name": "Getting the discovery policy", - "params": [], - "result": { - "name": "Default Result", - "value": { - "enableRecommendations": true, - "shareWatchHistory": true, - "rememberWatchedPrograms": true - } - } - } - ] - }, - { - "name": "entityInfo", - "tags": [ - { - "name": "polymorphic-pull" - }, - { - "name": "capabilities", - "x-provides": "xrn:firebolt:capability:discovery:entity-info" - } - ], - "summary": "Provide information about a program entity and its available watchable assets, such as entitlement status and price, via either a push or pull call flow.", - "description": "Provide information about a program entity and its available watchable assets, such as entitlement status and price, via either a push or pull call flow. Includes information about the program entity and its relevant associated entities, such as extras, previews, and, in the case of TV series, seasons and episodes.\n\nSee the `EntityInfo` and `WayToWatch` data structures below for more information.\n\nThe app only needs to implement Pull support for `entityInfo` at this time.", - "params": [ - { - "name": "correlationId", - "required": true, - "schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "result", - "required": true, - "schema": { - "$ref": "https://meta.comcast.com/firebolt/discovery#/definitions/EntityInfoResult" - }, - "summary": "The entityInfo data." - } - ], - "result": { - "name": "success", - "summary": "True if the push operation is successful", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send entity info for a movie to the platform.", - "params": [ - { - "name": "correlationId", - "value": null - }, - { - "name": "result", - "value": { - "expires": "2025-01-01T00:00:00.000Z", - "entity": { - "identifiers": { - "entityId": "345" - }, - "entityType": "program", - "programType": "movie", - "title": "Cool Runnings", - "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", - "releaseDate": "1993-01-01T00:00:00.000Z", - "contentRatings": [ - { - "scheme": "US-Movie", - "rating": "PG" - }, - { - "scheme": "CA-Movie", - "rating": "G" - } - ], - "waysToWatch": [ - { - "identifiers": { - "assetId": "123" - }, - "expires": "2025-01-01T00:00:00.000Z", - "entitled": true, - "entitledExpires": "2025-01-01T00:00:00.000Z", - "offeringType": "buy", - "price": 2.99, - "videoQuality": [ - "UHD" - ], - "audioProfile": [ - "dolbyAtmos" - ], - "audioLanguages": [ - "en" - ], - "closedCaptions": [ - "en" - ], - "subtitles": [ - "es" - ], - "audioDescriptions": [ - "en" - ] - } - ] - } - } - } - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Send entity info for a movie with a trailer to the platform.", - "params": [ - { - "name": "correlationId", - "value": null - }, - { - "name": "result", - "value": { - "expires": "2025-01-01T00:00:00.000Z", - "entity": { - "identifiers": { - "entityId": "345" - }, - "entityType": "program", - "programType": "movie", - "title": "Cool Runnings", - "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", - "releaseDate": "1993-01-01T00:00:00.000Z", - "contentRatings": [ - { - "scheme": "US-Movie", - "rating": "PG" - }, - { - "scheme": "CA-Movie", - "rating": "G" - } - ], - "waysToWatch": [ - { - "identifiers": { - "assetId": "123" - }, - "expires": "2025-01-01T00:00:00.000Z", - "entitled": true, - "entitledExpires": "2025-01-01T00:00:00.000Z", - "offeringType": "buy", - "price": 2.99, - "videoQuality": [ - "UHD" - ], - "audioProfile": [ - "dolbyAtmos" - ], - "audioLanguages": [ - "en" - ], - "closedCaptions": [ - "en" - ], - "subtitles": [ - "es" - ], - "audioDescriptions": [ - "en" - ] - } - ] - }, - "related": [ - { - "identifiers": { - "entityId": "345" - }, - "entityType": "program", - "programType": "preview", - "title": "Cool Runnings Trailer", - "waysToWatch": [ - { - "identifiers": { - "assetId": "123111", - "entityId": "345" - }, - "entitled": true, - "videoQuality": [ - "HD" - ], - "audioProfile": [ - "dolbyAtmos" - ], - "audioLanguages": [ - "en" - ], - "closedCaptions": [ - "en" - ] - } - ] - } - ] - } - } - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Send entity info for a TV Series with seasons and episodes to the platform.", - "params": [ - { - "name": "correlationId", - "value": null - }, - { - "name": "result", - "value": { - "expires": "2025-01-01T00:00:00.000Z", - "entity": { - "identifiers": { - "entityId": "98765" - }, - "entityType": "program", - "programType": "series", - "title": "Perfect Strangers", - "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", - "releaseDate": "1986-01-01T00:00:00.000Z", - "contentRatings": [ - { - "scheme": "US-TV", - "rating": "TV-PG" - } - ] - }, - "related": [ - { - "identifiers": { - "entityId": "111", - "seriesId": "98765" - }, - "entityType": "program", - "programType": "season", - "seasonNumber": 1, - "title": "Perfect Strangers Season 3", - "contentRatings": [ - { - "scheme": "US-TV", - "rating": "TV-PG" - } - ], - "waysToWatch": [ - { - "identifiers": { - "assetId": "556", - "entityId": "111", - "seriesId": "98765" - }, - "entitled": true, - "offeringType": "free", - "videoQuality": [ - "SD" - ], - "audioProfile": [ - "stereo" - ], - "audioLanguages": [ - "en" - ], - "closedCaptions": [ - "en" - ] - } - ] - }, - { - "identifiers": { - "entityId": "111", - "seriesId": "98765" - }, - "entityType": "program", - "programType": "episode", - "seasonNumber": 1, - "episodeNumber": 1, - "title": "Knock Knock, Who's There?", - "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", - "releaseDate": "1986-03-25T00:00:00.000Z", - "contentRatings": [ - { - "scheme": "US-TV", - "rating": "TV-PG" - } - ], - "waysToWatch": [ - { - "identifiers": { - "assetId": "556", - "entityId": "111", - "seriesId": "98765" - }, - "entitled": true, - "offeringType": "free", - "videoQuality": [ - "SD" - ], - "audioProfile": [ - "stereo" - ], - "audioLanguages": [ - "en" - ], - "closedCaptions": [ - "en" - ] - } - ] - }, - { - "identifiers": { - "entityId": "112", - "seriesId": "98765" - }, - "entityType": "program", - "programType": "episode", - "seasonNumber": 1, - "episodeNumber": 2, - "title": "Picture This", - "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", - "releaseDate": "1986-04-01T00:00:00.000Z", - "contentRatings": [ - { - "scheme": "US-TV", - "rating": "TV-PG" - } - ], - "waysToWatch": [ - { - "identifiers": { - "assetId": "557", - "entityId": "112", - "seriesId": "98765" - }, - "entitled": true, - "offeringType": "free", - "videoQuality": [ - "SD" - ], - "audioProfile": [ - "stereo" - ], - "audioLanguages": [ - "en" - ], - "closedCaptions": [ - "en" - ] - } - ] - } - ] - } - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "purchasedContent", - "tags": [ - { - "name": "polymorphic-pull" - }, - { - "name": "capabilities", - "x-provides": "xrn:firebolt:capability:discovery:purchased-content" - } - ], - "summary": "Provide a list of purchased content for the authenticated account, such as rentals and electronic sell through purchases.", - "params": [ - { - "name": "correlationId", - "required": true, - "schema": { - "type": [ - "string", - "null" - ] - } - }, - { - "name": "result", - "required": true, - "schema": { - "$ref": "https://meta.comcast.com/firebolt/discovery#/definitions/PurchasedContentResult" - }, - "summary": "The data for the purachasedContent" - } - ], - "result": { - "name": "success", - "summary": "True if the push operation is successful", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Inform the platform of the user's purchased content", - "params": [ - { - "name": "correlationId", - "value": null - }, - { - "name": "result", - "value": { - "totalCount": 10, - "expires": "2025-01-01T00:00:00.000Z", - "entries": [ - { - "identifiers": { - "entityId": "345" - }, - "entityType": "program", - "programType": "movie", - "title": "Cool Runnings", - "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", - "releaseDate": "1993-01-01T00:00:00.000Z", - "contentRatings": [ - { - "scheme": "US-Movie", - "rating": "PG" - }, - { - "scheme": "CA-Movie", - "rating": "G" - } - ], - "waysToWatch": [ - { - "identifiers": { - "assetId": "123" - }, - "expires": "2025-01-01T00:00:00.000Z", - "entitled": true, - "entitledExpires": "2025-01-01T00:00:00.000Z", - "offeringType": "buy", - "price": 2.99, - "videoQuality": [ - "UHD" - ], - "audioProfile": [ - "dolbyAtmos" - ], - "audioLanguages": [ - "en" - ], - "closedCaptions": [ - "en" - ], - "subtitles": [ - "es" - ], - "audioDescriptions": [ - "en" - ] - } - ] - } - ] - } - } - ], - "result": { - "name": "success", - "value": true - } - } - ], - "description": "Return content purchased by the user, such as rentals and electronic sell through purchases.\n\nThe app should return the user's 100 most recent purchases in `entries`. The total count of purchases must be provided in `count`. If `count` is greater than the total number of `entries`, the UI may provide a link into the app to see the complete purchase list.\n\nThe `EntityInfo` object returned is not required to have `waysToWatch` populated, but it is recommended that it do so in case the UI wants to surface additional information on the purchases screen.\n\nThe app should implement both Push and Pull methods for `purchasedContent`.\n\nThe app should actively push `purchasedContent` when:\n\n* The app becomes Active.\n* When the state of the purchasedContent set has changed.\n* The app goes into Inactive or Background state, if there is a chance a change event has been missed." - }, - { - "name": "watched", - "summary": "Notify the platform that content was partially or completely watched", - "tags": [ - { - "name": "polymorphic-reducer" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:discovery:watched" - ] - } - ], - "params": [ - { - "name": "entityId", - "required": true, - "schema": { - "type": "string" - }, - "summary": "The entity Id of the watched content." - }, - { - "name": "progress", - "summary": "How much of the content has been watched (percentage as 0-1 for VOD, number of seconds for live)", - "schema": { - "type": "number", - "minimum": 0 - } - }, - { - "name": "completed", - "summary": "Whether or not this viewing is considered \"complete,\" per the app's definition thereof", - "schema": { - "type": "boolean" - } - }, - { - "name": "watchedOn", - "summary": "Date/Time the content was watched, ISO 8601 Date/Time", - "schema": { - "type": "string", - "format": "date-time" - } - } - ], - "result": { - "name": "success", - "summary": "whether the call was successful or not", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Notifying the platform of watched content", - "params": [ - { - "name": "entityId", - "value": "partner.com/entity/123" - }, - { - "name": "progress", - "value": 0.95 - }, - { - "name": "completed", - "value": true - }, - { - "name": "watchedOn", - "value": "2021-04-23T18:25:43.511Z" - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "watchNext", - "summary": "Suggest a call-to-action for this app on the platform home screen", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:discovery:watch-next" - ] - } - ], - "params": [ - { - "name": "title", - "summary": "The title of this call to action", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/LocalizedString" - }, - "required": true - }, - { - "name": "identifiers", - "summary": "A set of content identifiers for this call to action", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/entertainment#/definitions/ContentIdentifiers" - }, - "required": true - }, - { - "name": "expires", - "summary": "When this call to action should no longer be presented to users", - "schema": { - "type": "string", - "format": "date-time" - } - }, - { - "name": "images", - "summary": "A set of images for this call to action", - "schema": { - "type": "object", - "patternProperties": { - "^.*$": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/LocalizedString" - } - } - } - } - ], - "result": { - "name": "success", - "summary": "whether the call was successful or not", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Suggest a watch-next tile for the home screen", - "params": [ - { - "name": "title", - "value": "A Cool Show" - }, - { - "name": "identifiers", - "value": { - "entityId": "partner.com/entity/123" - } - }, - { - "name": "expires", - "value": "2021-04-23T18:25:43.511Z" - }, - { - "name": "images", - "value": { - "3x4": { - "en-US": "https://i.ytimg.com/vi/4r7wHMg5Yjg/maxresdefault.jpg", - "es": "https://i.ytimg.com/vi/4r7wHMg5Yjg/maxresdefault.jpg" - }, - "16x9": { - "en": "https://i.ytimg.com/vi/4r7wHMg5Yjg/maxresdefault.jpg" - } - } - } - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Suggest a watch-next tile for the home screen", - "params": [ - { - "name": "title", - "value": "A Fantastic Show" - }, - { - "name": "identifiers", - "value": { - "entityId": "partner.com/entity/456" - } - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "entitlements", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:discovery:content-access" - ] - }, - { - "name": "deprecated", - "x-since": "0.10.0", - "x-alternative": "Discovery.contentAccess()" - } - ], - "summary": "Inform the platform of the users latest entitlements w/in this app.", - "params": [ - { - "name": "entitlements", - "summary": "Array of entitlement objects", - "schema": { - "type": "array", - "items": { - "$ref": "https://meta.comcast.com/firebolt/entertainment#/definitions/Entitlement" - } - }, - "required": true - } - ], - "result": { - "name": "success", - "summary": "whether the call was successful or not", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Update user's entitlements", - "params": [ - { - "name": "entitlements", - "value": [ - { - "entitlementId": "partner.com/entitlement/123", - "startTime": "2021-04-23T18:25:43.511Z", - "endTime": "2021-04-23T18:25:43.511Z" - }, - { - "entitlementId": "partner.com/entitlement/456", - "startTime": "2021-04-23T18:25:43.511Z", - "endTime": "2021-04-23T18:25:43.511Z" - } - ] - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "contentAccess", - "summary": "Inform the platform of what content the user can access either by discovering it or consuming it. Availabilities determine which content is discoverable to a user, while entitlements determine if the user can currently consume that content. Content can be available but not entitled, this means that user can see the content but when they try to open it they must gain an entitlement either through purchase or subscription upgrade. In case the access changed off-device, this API should be called any time the app comes to the foreground to refresh the access. This API should also be called any time the availabilities or entitlements change within the app for any reason. Typical reasons may include the user signing into an account or upgrading a subscription. Less common cases can cause availabilities to change, such as moving to a new service location. When availabilities or entitlements are removed from the subscriber (such as when the user signs out), then an empty array should be given. To clear both, use the Discovery.clearContentAccess convenience API.", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:discovery:content-access" - ] - } - ], - "params": [ - { - "name": "ids", - "summary": "A list of identifiers that represent content that is discoverable or consumable for the subscriber", - "schema": { - "$ref": "#/components/schemas/ContentAccessIdentifiers" - }, - "required": true - } - ], - "result": { - "name": "result", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Update subscriber's availabilities", - "params": [ - { - "name": "ids", - "value": { - "availabilities": [ - { - "type": "channel-lineup", - "id": "partner.com/availability/123", - "startTime": "2021-04-23T18:25:43.511Z", - "endTime": "2021-04-23T18:25:43.511Z" - }, - { - "type": "channel-lineup", - "id": "partner.com/availability/456", - "startTime": "2021-04-23T18:25:43.511Z", - "endTime": "2021-04-23T18:25:43.511Z" - } - ] - } - } - ], - "result": { - "name": "result", - "value": null - } - }, - { - "name": "Update subscriber's availabilities and entitlements", - "params": [ - { - "name": "ids", - "value": { - "availabilities": [ - { - "type": "channel-lineup", - "id": "partner.com/availability/123", - "startTime": "2021-04-23T18:25:43.511Z", - "endTime": "2021-04-23T18:25:43.511Z" - }, - { - "type": "channel-lineup", - "id": "partner.com/availability/456", - "startTime": "2021-04-23T18:25:43.511Z", - "endTime": "2021-04-23T18:25:43.511Z" - } - ], - "entitlements": [ - { - "entitlementId": "123", - "startTime": "2025-01-01T00:00:00.000Z", - "endTime": "2025-01-01T00:00:00.000Z" - } - ] - } - } - ], - "result": { - "name": "result", - "value": null - } - }, - { - "name": "Update subscriber's entitlements", - "params": [ - { - "name": "ids", - "value": { - "entitlements": [ - { - "entitlementId": "123", - "startTime": "2025-01-01T00:00:00.000Z", - "endTime": "2025-01-01T00:00:00.000Z" - } - ] - } - } - ], - "result": { - "name": "result", - "value": null - } - }, - { - "name": "Clear a subscriber's entitlements", - "params": [ - { - "name": "ids", - "value": { - "entitlements": [] - } - } - ], - "result": { - "name": "result", - "value": null - } - }, - { - "name": "Clear a subscriber's availabilities", - "params": [ - { - "name": "ids", - "value": { - "availabilities": [] - } - } - ], - "result": { - "name": "result", - "value": null - } - } - ] - }, - { - "name": "clearContentAccess", - "summary": "Clear both availabilities and entitlements from the subscriber. This is equivalent of calling `Discovery.contentAccess({ availabilities: [], entitlements: []})`. This is typically called when the user signs out of an account.", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:discovery:content-access" - ] - } - ], - "params": [], - "result": { - "name": "result", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Clear subscriber's availabilities and entitlements", - "params": [], - "result": { - "name": "result", - "value": null - } - } - ] - }, - { - "name": "launch", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:lifecycle:launch" - ] - } - ], - "summary": "Launch or foreground the specified app, and optionally instructs it to navigate to the specified user action", - "params": [ - { - "name": "appId", - "required": true, - "summary": "The durable app Id of the app to launch", - "schema": { - "type": "string" - } - }, - { - "name": "intent", - "required": false, - "summary": "An optional `NavigationIntent` with details about what part of the app to show first, and context around how/why it was launched", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/intents#/definitions/NavigationIntent" - } - } - ], - "result": { - "name": "success", - "summary": "whether the call was successful or not", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Launch the 'Foo' app to it's home screen.", - "params": [ - { - "name": "appId", - "value": "foo" - }, - { - "name": "intent", - "value": { - "action": "home", - "context": { - "source": "voice" - } - } - } - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Launch the 'Foo' app to it's own page for a specific entity.", - "params": [ - { - "name": "appId", - "value": "foo" - }, - { - "name": "intent", - "value": { - "action": "entity", - "data": { - "entityType": "program", - "programType": "movie", - "entityId": "example-movie-id" - }, - "context": { - "source": "voice" - } - } - } - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Launch the 'Foo' app to a fullscreen playback experience for a specific entity.", - "params": [ - { - "name": "appId", - "value": "foo" - }, - { - "name": "intent", - "value": { - "action": "playback", - "data": { - "entityType": "program", - "programType": "movie", - "entityId": "example-movie-id" - }, - "context": { - "source": "voice" - } - } - } - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Launch the Aggregated Experience to a global page for a specific entity.", - "params": [ - { - "name": "appId", - "value": "urn:firebolt:apps:main" - }, - { - "name": "intent", - "value": { - "action": "entity", - "data": { - "entityType": "program", - "programType": "movie", - "entityId": "example-movie-id" - }, - "context": { - "source": "voice" - } - } - } - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Launch the Aggregated Experience to a global page for the company / partner with the ID 'foo'.", - "params": [ - { - "name": "appId", - "value": "urn:firebolt:apps:main" - }, - { - "name": "intent", - "value": { - "action": "section", - "data": { - "sectionName": "company:foo" - }, - "context": { - "source": "voice" - } - } - } - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Launch the Aggregated Experience to it's home screen, as if the Home remote button was pressed.", - "params": [ - { - "name": "appId", - "value": "urn:firebolt:apps:main" - }, - { - "name": "intent", - "value": { - "action": "home", - "context": { - "source": "voice" - } - } - } - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Launch the Aggregated Experience to it's search screen.", - "params": [ - { - "name": "appId", - "value": "urn:firebolt:apps:main" - }, - { - "name": "intent", - "value": { - "action": "search", - "context": { - "source": "voice" - } - } - } - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Launch the Aggregated Experience to it's settings screen.", - "params": [ - { - "name": "appId", - "value": "urn:firebolt:apps:main" - }, - { - "name": "intent", - "value": { - "action": "section", - "data": { - "sectionName": "settings" - }, - "context": { - "source": "voice" - } - } - } - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Launch the Aggregated Experience to it's linear/epg guide.", - "params": [ - { - "name": "appId", - "value": "urn:firebolt:apps:main" - }, - { - "name": "intent", - "value": { - "action": "section", - "data": { - "sectionName": "guide" - }, - "context": { - "source": "voice" - } - } - } - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Launch the Aggregated Experience to the App Store details page for a specfic app with the ID 'foo'.", - "params": [ - { - "name": "appId", - "value": "urn:firebolt:apps:main" - }, - { - "name": "intent", - "value": { - "action": "section", - "data": { - "sectionName": "app:foo" - }, - "context": { - "source": "voice" - } - } - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "onNavigateTo", - "tags": [ - { - "name": "event" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:discovery:navigate-to" - ] - } - ], - "summary": "listen to `navigateTo` events", - "params": [], - "result": { - "name": "value", - "summary": "An object describing where in the app the user intends to navigate to", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/intents#/definitions/NavigationIntent" - } - }, - "examples": [ - { - "name": "Listening for `navigateTo` events", - "params": [], - "result": { - "name": "event", - "value": { - "action": "search", - "data": { - "query": "a cool show" - }, - "context": { - "campaign": "unknown", - "source": "voice" - } - } - } - } - ] - }, - { - "name": "signIn", - "tags": [ - { - "name": "calls-metrics" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:discovery:sign-in-status" - ] - } - ], - "summary": "Inform the platform that your user is signed in, for increased visiblity in search & discovery. Sign-in state is used separately from what content can be access through entitlements and availabilities. Sign-in state may be used when deciding whether to choose this app to handle a user intent. For instance, if the user tries to launch something generic like playing music from an artist, only a signed-in app will be chosen. If the user wants to tune to a channel, only a signed-in app will be chosen to handle that intent. While signIn can optionally include entitlements as those typically change at signIn time, it is recommended to make a separate call to Discovery.contentAccess for entitlements. signIn is not only for when a user explicitly enters login credentials. If an app does not require any credentials from the user to consume content, such as in a free app, then the app should call signIn immediately on launch.", - "params": [ - { - "name": "entitlements", - "summary": "Optional array of Entitlements, in case of a different user account, or a long time since last sign-in.", - "schema": { - "type": "array", - "items": { - "$ref": "https://meta.comcast.com/firebolt/entertainment#/definitions/Entitlement" - } - }, - "required": false - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send signIn metric", - "params": [], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Send signIn notification with entitlements", - "params": [ - { - "name": "entitlements", - "value": [ - { - "entitlementId": "123", - "startTime": "2025-01-01T00:00:00.000Z", - "endTime": "2025-01-01T00:00:00.000Z" - } - ] - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "signOut", - "tags": [ - { - "name": "calls-metrics" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:discovery:sign-in-status" - ] - } - ], - "summary": "Inform the platform that your user has signed out. See `Discovery.signIn` for more details on how the sign-in state is used.signOut will NOT clear entitlements, the app should make a separate call to Discovery.clearContentAccess. Apps should also call signOut when a login token has expired and the user is now in a signed-out state.", - "params": [], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send signOut notification", - "params": [], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "onSignIn", - "tags": [ - { - "name": "event" - }, - { - "name": "capabilities", - "x-manages": [ - "xrn:firebolt:capability:discovery:sign-in-status" - ] - } - ], - "summary": "Listen to events from all apps that call Discovery.signIn", - "params": [], - "result": { - "name": "event", - "schema": { - "type": "object", - "properties": { - "appId": { - "type": "string" - } - }, - "required": [ - "appId" - ] - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Event", - "value": { - "appId": "firecert" - } - } - } - ] - }, - { - "name": "onSignOut", - "tags": [ - { - "name": "event" - }, - { - "name": "capabilities", - "x-manages": [ - "xrn:firebolt:capability:discovery:sign-in-status" - ] - } - ], - "summary": "Listen to events from all apps that call Discovery.signOut", - "params": [], - "result": { - "name": "event", - "schema": { - "type": "object", - "properties": { - "appId": { - "type": "string" - } - }, - "required": [ - "appId" - ] - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Event", - "value": { - "appId": "firecert" - } - } - } - ] - } - ], - "components": { - "schemas": { - "DiscoveryPolicy": { - "title": "DiscoveryPolicy", - "type": "object", - "required": [ - "enableRecommendations", - "shareWatchHistory", - "rememberWatchedPrograms" - ], - "properties": { - "enableRecommendations": { - "type": "boolean", - "description": "Whether or not to the user has enabled history-based recommendations" - }, - "shareWatchHistory": { - "type": "boolean", - "description": "Whether or not the user has enabled app watch history data to be shared with the platform" - }, - "rememberWatchedPrograms": { - "type": "boolean", - "description": "Whether or not the user has enabled watch history" - } - } - }, - "FederatedRequest": { - "title": "FederatedRequest", - "type": "object", - "properties": { - "correlationId": { - "type": "string" - } - }, - "required": [ - "correlationId" - ], - "propertyNames": { - "enum": [ - "correlationId", - "parameters" - ] - }, - "examples": [ - { - "correlationId": "xyz" - } - ] - }, - "FederatedResponse": { - "title": "FederatedResponse", - "type": "object", - "properties": { - "correlationId": { - "type": "string" - } - }, - "required": [ - "correlationId", - "result" - ], - "propertyNames": { - "enum": [ - "correlationId", - "result" - ] - }, - "examples": [ - { - "correlationId": "xyz" - } - ] - }, - "EntityInfoFederatedRequest": { - "title": "EntityInfoFederatedRequest", - "allOf": [ - { - "$ref": "#/components/schemas/FederatedRequest" - }, - { - "type": "object", - "properties": { - "parameters": { - "$ref": "#/components/schemas/EntityInfoParameters" - } - }, - "required": [ - "correlationId", - "parameters" - ] - } - ], - "examples": [ - { - "correlationId": "xyz", - "parameters": { - "entityId": "345" - } - } - ] - }, - "EntityInfoParameters": { - "title": "EntityInfoParameters", - "type": "object", - "properties": { - "entityId": { - "type": "string" - }, - "assetId": { - "type": "string" - } - }, - "required": [ - "entityId" - ], - "additionalProperties": false, - "examples": [ - { - "entityId": "345" - } - ] - }, - "EntityInfoFederatedResponse": { - "title": "EntityInfoFederatedResponse", - "allOf": [ - { - "$ref": "#/components/schemas/FederatedResponse" - }, - { - "type": "object", - "properties": { - "result": { - "$ref": "https://meta.comcast.com/firebolt/discovery#/definitions/EntityInfoResult" - } - } - } - ] - }, - "EntityInfoResult": { - "title": "EntityInfoResult", - "description": "The result for an `entityInfo()` push or pull.", - "type": "object", - "properties": { - "expires": { - "type": "string", - "format": "date-time" - }, - "entity": { - "$ref": "https://meta.comcast.com/firebolt/entertainment#/definitions/EntityInfo" - }, - "related": { - "type": "array", - "items": { - "$ref": "https://meta.comcast.com/firebolt/entertainment#/definitions/EntityInfo" - } - } - }, - "required": [ - "expires", - "entity" - ], - "additionalProperties": false - }, - "PurchasedContentFederatedRequest": { - "title": "PurchasedContentFederatedRequest", - "allOf": [ - { - "$ref": "#/components/schemas/FederatedRequest" - }, - { - "type": "object", - "properties": { - "parameters": { - "$ref": "#/components/schemas/PurchasedContentParameters" - } - }, - "required": [ - "correlationId", - "parameters" - ] - } - ], - "examples": [ - { - "correlationId": "xyz", - "parameters": { - "limit": 100 - } - } - ] - }, - "PurchasedContentParameters": { - "title": "PurchasedContentParameters", - "type": "object", - "properties": { - "limit": { - "type": "integer", - "minimum": -1 - }, - "offeringType": { - "$ref": "https://meta.comcast.com/firebolt/entertainment#/definitions/OfferingType" - }, - "programType": { - "$ref": "https://meta.comcast.com/firebolt/entertainment#/definitions/ProgramType" - } - }, - "required": [ - "limit" - ], - "additionalProperties": false, - "examples": [ - { - "limit": 100 - } - ] - }, - "PurchasedContentFederatedResponse": { - "title": "PurchasedContentFederatedResponse", - "allOf": [ - { - "$ref": "#/components/schemas/FederatedResponse" - }, - { - "type": "object", - "properties": { - "result": { - "$ref": "https://meta.comcast.com/firebolt/discovery#/definitions/PurchasedContentResult" - } - } - } - ] - }, - "PurchasedContentResult": { - "title": "PurchasedContentResult", - "type": "object", - "properties": { - "expires": { - "type": "string", - "format": "date-time" - }, - "totalCount": { - "type": "integer", - "minimum": 0 - }, - "entries": { - "type": "array", - "items": { - "$ref": "https://meta.comcast.com/firebolt/entertainment#/definitions/EntityInfo" - } - } - }, - "required": [ - "expires", - "totalCount", - "entries" - ], - "additionalProperties": false - }, - "Availability": { - "title": "Availability", - "type": "object", - "properties": { - "type": { - "type": "string", - "enum": [ - "channel-lineup", - "program-lineup" - ] - }, - "id": { - "type": "string" - }, - "catalogId": { - "type": "string" - }, - "startTime": { - "type": "string", - "format": "date-time" - }, - "endTime": { - "type": "string", - "format": "date-time" - } - }, - "required": [ - "type", - "id" - ] - }, - "ContentAccessIdentifiers": { - "title": "ContentAccessIdentifiers", - "type": "object", - "properties": { - "availabilities": { - "type": "array", - "items": { - "$ref": "#/components/schemas/Availability" - }, - "description": "A list of identifiers that represent what content is discoverable for the subscriber. Excluding availabilities will cause no change to the availabilities that are stored for this subscriber. Providing an empty array will clear the subscriber's availabilities" - }, - "entitlements": { - "type": "array", - "items": { - "$ref": "https://meta.comcast.com/firebolt/entertainment#/definitions/Entitlement" - }, - "description": "A list of identifiers that represent what content is consumable for the subscriber. Excluding entitlements will cause no change to the entitlements that are stored for this subscriber. Providing an empty array will clear the subscriber's entitlements" - } - }, - "required": [] - }, - "TuneChannels": { - "title": "TuneChannels", - "description": "An enumeration of xrn values for the TuneIntent that have special meaning.", - "type": "string", - "enum": [ - "xrn:firebolt:channel:any" - ] - } - } - } + "openrpc": "1.2.4", + "info": { + "title": "Discovery", + "version": "0.0.0", + "description": "Your App likely wants to integrate with the Platform's discovery capabilities. For example to add a \"Watch Next\" tile that links to your app from the platform's home screen.\n\nGetting access to this information requires to connect to lower level APIs made available by the platform. Since implementations differ between operators and platforms, the Firebolt SDK offers a Discovery module, that exposes a generic, agnostic interface to the developer.\n\nUnder the hood, an underlaying transport layer will then take care of calling the right APIs for the actual platform implementation that your App is running on.\n\nThe Discovery plugin is used to _send_ information to the Platform.\n\n### Localization\nApps should provide all user-facing strings in the device's language, as specified by the Firebolt `Localization.language` property.\n\nApps should provide prices in the same currency presented in the app. If multiple currencies are supported in the app, the app should provide prices in the user's current default currency." + }, + "methods": [ + { + "name": "policy", + "summary": "get the discovery policy", + "params": [], + "tags": [ + { + "name": "property:readonly" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:discovery:policy" + ] + } + ], + "result": { + "name": "policy", + "summary": "discovery policy opt-in/outs", + "schema": { + "$ref": "#/components/schemas/DiscoveryPolicy" + } + }, + "examples": [ + { + "name": "Getting the discovery policy", + "params": [], + "result": { + "name": "Default Result", + "value": { + "enableRecommendations": true, + "shareWatchHistory": true, + "rememberWatchedPrograms": true + } + } + } + ] + }, + { + "name": "entityInfo", + "tags": [ + { + "name": "polymorphic-pull" + }, + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:discovery:entity-info" + } + ], + "summary": "Provide information about a program entity and its available watchable assets, such as entitlement status and price, via either a push or pull call flow.", + "description": "Provide information about a program entity and its available watchable assets, such as entitlement status and price, via either a push or pull call flow. Includes information about the program entity and its relevant associated entities, such as extras, previews, and, in the case of TV series, seasons and episodes.\n\nSee the `EntityInfo` and `WayToWatch` data structures below for more information.\n\nThe app only needs to implement Pull support for `entityInfo` at this time.", + "params": [ + { + "name": "correlationId", + "required": true, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "result", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/EntityInfoResult" + }, + "summary": "The entityInfo data." + } + ], + "result": { + "name": "success", + "summary": "True if the push operation is successful", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send entity info for a movie to the platform.", + "params": [ + { + "name": "correlationId", + "value": null + }, + { + "name": "result", + "value": { + "expires": "2025-01-01T00:00:00.000Z", + "entity": { + "identifiers": { + "entityId": "345" + }, + "entityType": "program", + "programType": "movie", + "title": "Cool Runnings", + "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", + "releaseDate": "1993-01-01T00:00:00.000Z", + "contentRatings": [ + { + "scheme": "US-Movie", + "rating": "PG" + }, + { + "scheme": "CA-Movie", + "rating": "G" + } + ], + "waysToWatch": [ + { + "identifiers": { + "assetId": "123" + }, + "expires": "2025-01-01T00:00:00.000Z", + "entitled": true, + "entitledExpires": "2025-01-01T00:00:00.000Z", + "offeringType": "buy", + "price": 2.99, + "videoQuality": [ + "UHD" + ], + "audioProfile": [ + "dolbyAtmos" + ], + "audioLanguages": [ + "en" + ], + "closedCaptions": [ + "en" + ], + "subtitles": [ + "es" + ], + "audioDescriptions": [ + "en" + ] + } + ] + } + } + } + ], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Send entity info for a movie with a trailer to the platform.", + "params": [ + { + "name": "correlationId", + "value": null + }, + { + "name": "result", + "value": { + "expires": "2025-01-01T00:00:00.000Z", + "entity": { + "identifiers": { + "entityId": "345" + }, + "entityType": "program", + "programType": "movie", + "title": "Cool Runnings", + "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", + "releaseDate": "1993-01-01T00:00:00.000Z", + "contentRatings": [ + { + "scheme": "US-Movie", + "rating": "PG" + }, + { + "scheme": "CA-Movie", + "rating": "G" + } + ], + "waysToWatch": [ + { + "identifiers": { + "assetId": "123" + }, + "expires": "2025-01-01T00:00:00.000Z", + "entitled": true, + "entitledExpires": "2025-01-01T00:00:00.000Z", + "offeringType": "buy", + "price": 2.99, + "videoQuality": [ + "UHD" + ], + "audioProfile": [ + "dolbyAtmos" + ], + "audioLanguages": [ + "en" + ], + "closedCaptions": [ + "en" + ], + "subtitles": [ + "es" + ], + "audioDescriptions": [ + "en" + ] + } + ] + }, + "related": [ + { + "identifiers": { + "entityId": "345" + }, + "entityType": "program", + "programType": "preview", + "title": "Cool Runnings Trailer", + "waysToWatch": [ + { + "identifiers": { + "assetId": "123111", + "entityId": "345" + }, + "entitled": true, + "videoQuality": [ + "HD" + ], + "audioProfile": [ + "dolbyAtmos" + ], + "audioLanguages": [ + "en" + ], + "closedCaptions": [ + "en" + ] + } + ] + } + ] + } + } + ], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Send entity info for a TV Series with seasons and episodes to the platform.", + "params": [ + { + "name": "correlationId", + "value": null + }, + { + "name": "result", + "value": { + "expires": "2025-01-01T00:00:00.000Z", + "entity": { + "identifiers": { + "entityId": "98765" + }, + "entityType": "program", + "programType": "series", + "title": "Perfect Strangers", + "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", + "releaseDate": "1986-01-01T00:00:00.000Z", + "contentRatings": [ + { + "scheme": "US-TV", + "rating": "TV-PG" + } + ] + }, + "related": [ + { + "identifiers": { + "entityId": "111", + "seriesId": "98765" + }, + "entityType": "program", + "programType": "season", + "seasonNumber": 1, + "title": "Perfect Strangers Season 3", + "contentRatings": [ + { + "scheme": "US-TV", + "rating": "TV-PG" + } + ], + "waysToWatch": [ + { + "identifiers": { + "assetId": "556", + "entityId": "111", + "seriesId": "98765" + }, + "entitled": true, + "offeringType": "free", + "videoQuality": [ + "SD" + ], + "audioProfile": [ + "stereo" + ], + "audioLanguages": [ + "en" + ], + "closedCaptions": [ + "en" + ] + } + ] + }, + { + "identifiers": { + "entityId": "111", + "seriesId": "98765" + }, + "entityType": "program", + "programType": "episode", + "seasonNumber": 1, + "episodeNumber": 1, + "title": "Knock Knock, Who's There?", + "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", + "releaseDate": "1986-03-25T00:00:00.000Z", + "contentRatings": [ + { + "scheme": "US-TV", + "rating": "TV-PG" + } + ], + "waysToWatch": [ + { + "identifiers": { + "assetId": "556", + "entityId": "111", + "seriesId": "98765" + }, + "entitled": true, + "offeringType": "free", + "videoQuality": [ + "SD" + ], + "audioProfile": [ + "stereo" + ], + "audioLanguages": [ + "en" + ], + "closedCaptions": [ + "en" + ] + } + ] + }, + { + "identifiers": { + "entityId": "112", + "seriesId": "98765" + }, + "entityType": "program", + "programType": "episode", + "seasonNumber": 1, + "episodeNumber": 2, + "title": "Picture This", + "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", + "releaseDate": "1986-04-01T00:00:00.000Z", + "contentRatings": [ + { + "scheme": "US-TV", + "rating": "TV-PG" + } + ], + "waysToWatch": [ + { + "identifiers": { + "assetId": "557", + "entityId": "112", + "seriesId": "98765" + }, + "entitled": true, + "offeringType": "free", + "videoQuality": [ + "SD" + ], + "audioProfile": [ + "stereo" + ], + "audioLanguages": [ + "en" + ], + "closedCaptions": [ + "en" + ] + } + ] + } + ] + } + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "purchasedContent", + "tags": [ + { + "name": "polymorphic-pull" + }, + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:discovery:purchased-content" + } + ], + "summary": "Provide a list of purchased content for the authenticated account, such as rentals and electronic sell through purchases.", + "params": [ + { + "name": "correlationId", + "required": true, + "schema": { + "type": [ + "string", + "null" + ] + } + }, + { + "name": "result", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/PurchasedContentResult" + }, + "summary": "The data for the purachasedContent" + } + ], + "result": { + "name": "success", + "summary": "True if the push operation is successful", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Inform the platform of the user's purchased content", + "params": [ + { + "name": "correlationId", + "value": null + }, + { + "name": "result", + "value": { + "totalCount": 10, + "expires": "2025-01-01T00:00:00.000Z", + "entries": [ + { + "identifiers": { + "entityId": "345" + }, + "entityType": "program", + "programType": "movie", + "title": "Cool Runnings", + "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", + "releaseDate": "1993-01-01T00:00:00.000Z", + "contentRatings": [ + { + "scheme": "US-Movie", + "rating": "PG" + }, + { + "scheme": "CA-Movie", + "rating": "G" + } + ], + "waysToWatch": [ + { + "identifiers": { + "assetId": "123" + }, + "expires": "2025-01-01T00:00:00.000Z", + "entitled": true, + "entitledExpires": "2025-01-01T00:00:00.000Z", + "offeringType": "buy", + "price": 2.99, + "videoQuality": [ + "UHD" + ], + "audioProfile": [ + "dolbyAtmos" + ], + "audioLanguages": [ + "en" + ], + "closedCaptions": [ + "en" + ], + "subtitles": [ + "es" + ], + "audioDescriptions": [ + "en" + ] + } + ] + } + ] + } + } + ], + "result": { + "name": "success", + "value": true + } + } + ], + "description": "Return content purchased by the user, such as rentals and electronic sell through purchases.\n\nThe app should return the user's 100 most recent purchases in `entries`. The total count of purchases must be provided in `count`. If `count` is greater than the total number of `entries`, the UI may provide a link into the app to see the complete purchase list.\n\nThe `EntityInfo` object returned is not required to have `waysToWatch` populated, but it is recommended that it do so in case the UI wants to surface additional information on the purchases screen.\n\nThe app should implement both Push and Pull methods for `purchasedContent`.\n\nThe app should actively push `purchasedContent` when:\n\n* The app becomes Active.\n* When the state of the purchasedContent set has changed.\n* The app goes into Inactive or Background state, if there is a chance a change event has been missed." + }, + { + "name": "watched", + "summary": "Notify the platform that content was partially or completely watched", + "tags": [ + { + "name": "polymorphic-reducer" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:discovery:watched" + ] + } + ], + "params": [ + { + "name": "entityId", + "required": true, + "schema": { + "type": "string" + }, + "summary": "The entity Id of the watched content." + }, + { + "name": "progress", + "summary": "How much of the content has been watched (percentage as 0-1 for VOD, number of seconds for live)", + "schema": { + "type": "number", + "minimum": 0 + } + }, + { + "name": "completed", + "summary": "Whether or not this viewing is considered \"complete,\" per the app's definition thereof", + "schema": { + "type": "boolean" + } + }, + { + "name": "watchedOn", + "summary": "Date/Time the content was watched, ISO 8601 Date/Time", + "schema": { + "type": "string", + "format": "date-time" + } + } + ], + "result": { + "name": "success", + "summary": "whether the call was successful or not", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Notifying the platform of watched content", + "params": [ + { + "name": "entityId", + "value": "partner.com/entity/123" + }, + { + "name": "progress", + "value": 0.95 + }, + { + "name": "completed", + "value": true + }, + { + "name": "watchedOn", + "value": "2021-04-23T18:25:43.511Z" + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "watchNext", + "summary": "Suggest a call-to-action for this app on the platform home screen", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:discovery:watch-next" + ] + } + ], + "params": [ + { + "name": "title", + "summary": "The title of this call to action", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/LocalizedString" + }, + "required": true + }, + { + "name": "identifiers", + "summary": "A set of content identifiers for this call to action", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/ContentIdentifiers" + }, + "required": true + }, + { + "name": "expires", + "summary": "When this call to action should no longer be presented to users", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "images", + "summary": "A set of images for this call to action", + "schema": { + "type": "object", + "patternProperties": { + "^.*$": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/LocalizedString" + } + } + } + } + ], + "result": { + "name": "success", + "summary": "whether the call was successful or not", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Suggest a watch-next tile for the home screen", + "params": [ + { + "name": "title", + "value": "A Cool Show" + }, + { + "name": "identifiers", + "value": { + "entityId": "partner.com/entity/123" + } + }, + { + "name": "expires", + "value": "2021-04-23T18:25:43.511Z" + }, + { + "name": "images", + "value": { + "3x4": { + "en-US": "https://i.ytimg.com/vi/4r7wHMg5Yjg/maxresdefault.jpg", + "es": "https://i.ytimg.com/vi/4r7wHMg5Yjg/maxresdefault.jpg" + }, + "16x9": { + "en": "https://i.ytimg.com/vi/4r7wHMg5Yjg/maxresdefault.jpg" + } + } + } + ], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Suggest a watch-next tile for the home screen", + "params": [ + { + "name": "title", + "value": "A Fantastic Show" + }, + { + "name": "identifiers", + "value": { + "entityId": "partner.com/entity/456" + } + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "entitlements", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:discovery:content-access" + ] + }, + { + "name": "deprecated", + "x-since": "0.10.0", + "x-alternative": "Discovery.contentAccess()" + } + ], + "summary": "Inform the platform of the users latest entitlements w/in this app.", + "params": [ + { + "name": "entitlements", + "summary": "Array of entitlement objects", + "schema": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/Entitlement" + } + }, + "required": true + } + ], + "result": { + "name": "success", + "summary": "whether the call was successful or not", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Update user's entitlements", + "params": [ + { + "name": "entitlements", + "value": [ + { + "entitlementId": "partner.com/entitlement/123", + "startTime": "2021-04-23T18:25:43.511Z", + "endTime": "2021-04-23T18:25:43.511Z" + }, + { + "entitlementId": "partner.com/entitlement/456", + "startTime": "2021-04-23T18:25:43.511Z", + "endTime": "2021-04-23T18:25:43.511Z" + } + ] + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "contentAccess", + "summary": "Inform the platform of what content the user can access either by discovering it or consuming it. Availabilities determine which content is discoverable to a user, while entitlements determine if the user can currently consume that content. Content can be available but not entitled, this means that user can see the content but when they try to open it they must gain an entitlement either through purchase or subscription upgrade. In case the access changed off-device, this API should be called any time the app comes to the foreground to refresh the access. This API should also be called any time the availabilities or entitlements change within the app for any reason. Typical reasons may include the user signing into an account or upgrading a subscription. Less common cases can cause availabilities to change, such as moving to a new service location. When availabilities or entitlements are removed from the subscriber (such as when the user signs out), then an empty array should be given. To clear both, use the Discovery.clearContentAccess convenience API.", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:discovery:content-access" + ] + } + ], + "params": [ + { + "name": "ids", + "summary": "A list of identifiers that represent content that is discoverable or consumable for the subscriber", + "schema": { + "$ref": "#/components/schemas/ContentAccessIdentifiers" + }, + "required": true + } + ], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Update subscriber's availabilities", + "params": [ + { + "name": "ids", + "value": { + "availabilities": [ + { + "type": "channel-lineup", + "id": "partner.com/availability/123", + "startTime": "2021-04-23T18:25:43.511Z", + "endTime": "2021-04-23T18:25:43.511Z" + }, + { + "type": "channel-lineup", + "id": "partner.com/availability/456", + "startTime": "2021-04-23T18:25:43.511Z", + "endTime": "2021-04-23T18:25:43.511Z" + } + ] + } + } + ], + "result": { + "name": "result", + "value": null + } + }, + { + "name": "Update subscriber's availabilities and entitlements", + "params": [ + { + "name": "ids", + "value": { + "availabilities": [ + { + "type": "channel-lineup", + "id": "partner.com/availability/123", + "startTime": "2021-04-23T18:25:43.511Z", + "endTime": "2021-04-23T18:25:43.511Z" + }, + { + "type": "channel-lineup", + "id": "partner.com/availability/456", + "startTime": "2021-04-23T18:25:43.511Z", + "endTime": "2021-04-23T18:25:43.511Z" + } + ], + "entitlements": [ + { + "entitlementId": "123", + "startTime": "2025-01-01T00:00:00.000Z", + "endTime": "2025-01-01T00:00:00.000Z" + } + ] + } + } + ], + "result": { + "name": "result", + "value": null + } + }, + { + "name": "Update subscriber's entitlements", + "params": [ + { + "name": "ids", + "value": { + "entitlements": [ + { + "entitlementId": "123", + "startTime": "2025-01-01T00:00:00.000Z", + "endTime": "2025-01-01T00:00:00.000Z" + } + ] + } + } + ], + "result": { + "name": "result", + "value": null + } + }, + { + "name": "Clear a subscriber's entitlements", + "params": [ + { + "name": "ids", + "value": { + "entitlements": [] + } + } + ], + "result": { + "name": "result", + "value": null + } + }, + { + "name": "Clear a subscriber's availabilities", + "params": [ + { + "name": "ids", + "value": { + "availabilities": [] + } + } + ], + "result": { + "name": "result", + "value": null + } + } + ] + }, + { + "name": "clearContentAccess", + "summary": "Clear both availabilities and entitlements from the subscriber. This is equivalent of calling `Discovery.contentAccess({ availabilities: [], entitlements: []})`. This is typically called when the user signs out of an account.", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:discovery:content-access" + ] + } + ], + "params": [], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Clear subscriber's availabilities and entitlements", + "params": [], + "result": { + "name": "result", + "value": null + } + } + ] + }, + { + "name": "launch", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:lifecycle:launch" + ] + } + ], + "summary": "Launch or foreground the specified app, and optionally instructs it to navigate to the specified user action", + "params": [ + { + "name": "appId", + "required": true, + "summary": "The durable app Id of the app to launch", + "schema": { + "type": "string" + } + }, + { + "name": "intent", + "required": false, + "summary": "An optional `NavigationIntent` with details about what part of the app to show first, and context around how/why it was launched", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/intents#/definitions/NavigationIntent" + } + } + ], + "result": { + "name": "success", + "summary": "whether the call was successful or not", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Launch the 'Foo' app to it's home screen.", + "params": [ + { + "name": "appId", + "value": "foo" + }, + { + "name": "intent", + "value": { + "action": "home", + "context": { + "source": "voice" + } + } + } + ], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Launch the 'Foo' app to it's own page for a specific entity.", + "params": [ + { + "name": "appId", + "value": "foo" + }, + { + "name": "intent", + "value": { + "action": "entity", + "data": { + "entityType": "program", + "programType": "movie", + "entityId": "example-movie-id" + }, + "context": { + "source": "voice" + } + } + } + ], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Launch the 'Foo' app to a fullscreen playback experience for a specific entity.", + "params": [ + { + "name": "appId", + "value": "foo" + }, + { + "name": "intent", + "value": { + "action": "playback", + "data": { + "entityType": "program", + "programType": "movie", + "entityId": "example-movie-id" + }, + "context": { + "source": "voice" + } + } + } + ], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Launch the Aggregated Experience to a global page for a specific entity.", + "params": [ + { + "name": "appId", + "value": "urn:firebolt:apps:main" + }, + { + "name": "intent", + "value": { + "action": "entity", + "data": { + "entityType": "program", + "programType": "movie", + "entityId": "example-movie-id" + }, + "context": { + "source": "voice" + } + } + } + ], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Launch the Aggregated Experience to a global page for the company / partner with the ID 'foo'.", + "params": [ + { + "name": "appId", + "value": "urn:firebolt:apps:main" + }, + { + "name": "intent", + "value": { + "action": "section", + "data": { + "sectionName": "company:foo" + }, + "context": { + "source": "voice" + } + } + } + ], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Launch the Aggregated Experience to it's home screen, as if the Home remote button was pressed.", + "params": [ + { + "name": "appId", + "value": "urn:firebolt:apps:main" + }, + { + "name": "intent", + "value": { + "action": "home", + "context": { + "source": "voice" + } + } + } + ], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Launch the Aggregated Experience to it's search screen.", + "params": [ + { + "name": "appId", + "value": "urn:firebolt:apps:main" + }, + { + "name": "intent", + "value": { + "action": "search", + "context": { + "source": "voice" + } + } + } + ], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Launch the Aggregated Experience to it's settings screen.", + "params": [ + { + "name": "appId", + "value": "urn:firebolt:apps:main" + }, + { + "name": "intent", + "value": { + "action": "section", + "data": { + "sectionName": "settings" + }, + "context": { + "source": "voice" + } + } + } + ], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Launch the Aggregated Experience to it's linear/epg guide.", + "params": [ + { + "name": "appId", + "value": "urn:firebolt:apps:main" + }, + { + "name": "intent", + "value": { + "action": "section", + "data": { + "sectionName": "guide" + }, + "context": { + "source": "voice" + } + } + } + ], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Launch the Aggregated Experience to the App Store details page for a specfic app with the ID 'foo'.", + "params": [ + { + "name": "appId", + "value": "urn:firebolt:apps:main" + }, + { + "name": "intent", + "value": { + "action": "section", + "data": { + "sectionName": "app:foo" + }, + "context": { + "source": "voice" + } + } + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "navigateTo", + "tags": [ + { + "name": "notifier", + "x-event": "Discovery.onNavigateTo" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:discovery:navigate-to" + ] + } + ], + "summary": "listen to `navigateTo` events", + "params": [ + { + "name": "value", + "summary": "An object describing where in the app the user intends to navigate to", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/intents#/definitions/NavigationIntent" + } + } + ], + "examples": [ + { + "name": "Listening for `navigateTo` events", + "params": [ + { + "name": "event", + "value": { + "action": "search", + "data": { + "query": "a cool show" + }, + "context": { + "campaign": "unknown", + "source": "voice" + } + } + } + ] + } + ] + }, + { + "name": "signIn", + "tags": [ + { + "name": "calls-metrics" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:discovery:sign-in-status" + ] + } + ], + "summary": "Inform the platform that your user is signed in, for increased visiblity in search & discovery. Sign-in state is used separately from what content can be access through entitlements and availabilities. Sign-in state may be used when deciding whether to choose this app to handle a user intent. For instance, if the user tries to launch something generic like playing music from an artist, only a signed-in app will be chosen. If the user wants to tune to a channel, only a signed-in app will be chosen to handle that intent. While signIn can optionally include entitlements as those typically change at signIn time, it is recommended to make a separate call to Discovery.contentAccess for entitlements. signIn is not only for when a user explicitly enters login credentials. If an app does not require any credentials from the user to consume content, such as in a free app, then the app should call signIn immediately on launch.", + "params": [ + { + "name": "entitlements", + "summary": "Optional array of Entitlements, in case of a different user account, or a long time since last sign-in.", + "schema": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/Entitlement" + } + }, + "required": false + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send signIn metric", + "params": [], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Send signIn notification with entitlements", + "params": [ + { + "name": "entitlements", + "value": [ + { + "entitlementId": "123", + "startTime": "2025-01-01T00:00:00.000Z", + "endTime": "2025-01-01T00:00:00.000Z" + } + ] + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "signOut", + "tags": [ + { + "name": "calls-metrics" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:discovery:sign-in-status" + ] + } + ], + "summary": "Inform the platform that your user has signed out. See `Discovery.signIn` for more details on how the sign-in state is used.signOut will NOT clear entitlements, the app should make a separate call to Discovery.clearContentAccess. Apps should also call signOut when a login token has expired and the user is now in a signed-out state.", + "params": [], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send signOut notification", + "params": [], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "signIn", + "tags": [ + { + "name": "notifier", + "x-event": "Discovery.onSignIn" + }, + { + "name": "capabilities", + "x-manages": [ + "xrn:firebolt:capability:discovery:sign-in-status" + ] + } + ], + "summary": "Listen to events from all apps that call Discovery.signIn", + "params": [ + { + "name": "event", + "schema": { + "type": "object", + "properties": { + "appId": { + "type": "string" + } + }, + "required": [ + "appId" + ] + } + } + ], + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "Default Event", + "value": { + "appId": "firecert" + } + } + ] + } + ] + }, + { + "name": "signOut", + "tags": [ + { + "name": "notifier", + "x-event": "Discovery.onSignOut" + }, + { + "name": "capabilities", + "x-manages": [ + "xrn:firebolt:capability:discovery:sign-in-status" + ] + } + ], + "summary": "Listen to events from all apps that call Discovery.signOut", + "params": [ + { + "name": "event", + "schema": { + "type": "object", + "properties": { + "appId": { + "type": "string" + } + }, + "required": [ + "appId" + ] + } + } + ], + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "Default Event", + "value": { + "appId": "firecert" + } + } + ] + } + ] + } + ], + "components": { + "schemas": { + "DiscoveryPolicy": { + "title": "DiscoveryPolicy", + "type": "object", + "required": [ + "enableRecommendations", + "shareWatchHistory", + "rememberWatchedPrograms" + ], + "properties": { + "enableRecommendations": { + "type": "boolean", + "description": "Whether or not to the user has enabled history-based recommendations" + }, + "shareWatchHistory": { + "type": "boolean", + "description": "Whether or not the user has enabled app watch history data to be shared with the platform" + }, + "rememberWatchedPrograms": { + "type": "boolean", + "description": "Whether or not the user has enabled watch history" + } + } + }, + "FederatedRequest": { + "title": "FederatedRequest", + "type": "object", + "properties": { + "correlationId": { + "type": "string" + } + }, + "required": [ + "correlationId" + ], + "propertyNames": { + "enum": [ + "correlationId", + "parameters" + ] + }, + "examples": [ + { + "correlationId": "xyz" + } + ] + }, + "FederatedResponse": { + "title": "FederatedResponse", + "type": "object", + "properties": { + "correlationId": { + "type": "string" + } + }, + "required": [ + "correlationId", + "result" + ], + "propertyNames": { + "enum": [ + "correlationId", + "result" + ] + }, + "examples": [ + { + "correlationId": "xyz" + } + ] + }, + "EntityInfoFederatedRequest": { + "title": "EntityInfoFederatedRequest", + "allOf": [ + { + "$ref": "#/components/schemas/FederatedRequest" + }, + { + "type": "object", + "properties": { + "parameters": { + "$ref": "#/components/schemas/EntityInfoParameters" + } + }, + "required": [ + "correlationId", + "parameters" + ] + } + ], + "examples": [ + { + "correlationId": "xyz", + "parameters": { + "entityId": "345" + } + } + ] + }, + "EntityInfoParameters": { + "title": "EntityInfoParameters", + "type": "object", + "properties": { + "entityId": { + "type": "string" + }, + "assetId": { + "type": "string" + } + }, + "required": [ + "entityId" + ], + "additionalProperties": false, + "examples": [ + { + "entityId": "345" + } + ] + }, + "EntityInfoFederatedResponse": { + "title": "EntityInfoFederatedResponse", + "allOf": [ + { + "$ref": "#/components/schemas/FederatedResponse" + }, + { + "type": "object", + "properties": { + "result": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/EntityInfoResult" + } + } + } + ] + }, + "EntityInfoResult": { + "title": "EntityInfoResult", + "description": "The result for an `entityInfo()` push or pull.", + "type": "object", + "properties": { + "expires": { + "type": "string", + "format": "date-time" + }, + "entity": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/EntityInfo" + }, + "related": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/EntityInfo" + } + } + }, + "required": [ + "expires", + "entity" + ], + "additionalProperties": false + }, + "PurchasedContentFederatedRequest": { + "title": "PurchasedContentFederatedRequest", + "allOf": [ + { + "$ref": "#/components/schemas/FederatedRequest" + }, + { + "type": "object", + "properties": { + "parameters": { + "$ref": "#/components/schemas/PurchasedContentParameters" + } + }, + "required": [ + "correlationId", + "parameters" + ] + } + ], + "examples": [ + { + "correlationId": "xyz", + "parameters": { + "limit": 100 + } + } + ] + }, + "PurchasedContentParameters": { + "title": "PurchasedContentParameters", + "type": "object", + "properties": { + "limit": { + "type": "integer", + "minimum": -1 + }, + "offeringType": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/OfferingType" + }, + "programType": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/ProgramType" + } + }, + "required": [ + "limit" + ], + "additionalProperties": false, + "examples": [ + { + "limit": 100 + } + ] + }, + "PurchasedContentFederatedResponse": { + "title": "PurchasedContentFederatedResponse", + "allOf": [ + { + "$ref": "#/components/schemas/FederatedResponse" + }, + { + "type": "object", + "properties": { + "result": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/PurchasedContentResult" + } + } + } + ] + }, + "PurchasedContentResult": { + "title": "PurchasedContentResult", + "type": "object", + "properties": { + "expires": { + "type": "string", + "format": "date-time" + }, + "totalCount": { + "type": "integer", + "minimum": 0 + }, + "entries": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/EntityInfo" + } + } + }, + "required": [ + "expires", + "totalCount", + "entries" + ], + "additionalProperties": false + }, + "Availability": { + "title": "Availability", + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": [ + "channel-lineup", + "program-lineup" + ] + }, + "id": { + "type": "string" + }, + "catalogId": { + "type": "string" + }, + "startTime": { + "type": "string", + "format": "date-time" + }, + "endTime": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "type", + "id" + ] + }, + "ContentAccessIdentifiers": { + "title": "ContentAccessIdentifiers", + "type": "object", + "properties": { + "availabilities": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Availability" + }, + "description": "A list of identifiers that represent what content is discoverable for the subscriber. Excluding availabilities will cause no change to the availabilities that are stored for this subscriber. Providing an empty array will clear the subscriber's availabilities" + }, + "entitlements": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/Entitlement" + }, + "description": "A list of identifiers that represent what content is consumable for the subscriber. Excluding entitlements will cause no change to the entitlements that are stored for this subscriber. Providing an empty array will clear the subscriber's entitlements" + } + }, + "required": [] + }, + "TuneChannels": { + "title": "TuneChannels", + "description": "An enumeration of xrn values for the TuneIntent that have special meaning.", + "type": "string", + "enum": [ + "xrn:firebolt:channel:any" + ] + } + } + } } \ No newline at end of file diff --git a/src/openrpc/keyboard.json b/src/openrpc/keyboard.json index 0ef1f725b..8f34ea773 100644 --- a/src/openrpc/keyboard.json +++ b/src/openrpc/keyboard.json @@ -1,382 +1,245 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Keyboard", - "description": "Methods for prompting users to enter text with task-oriented UX", - "version": "0.0.0" - }, - "methods": [ - { - "name": "email", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:input:keyboard" - ] - } - ], - "summary": "Prompt the user for their email address with a simplified list of choices.", - "params": [ - { - "name": "type", - "summary": "Why the email is being requested, e.g. sign on or sign up", - "required": true, - "schema": { - "$ref": "#/components/schemas/EmailUsage" - } - }, - { - "name": "message", - "summary": "The message to display while prompting", - "required": false, - "schema": { - "type": "string" - } - } - ], - "result": { - "name": "email", - "summary": "the selected or entered email", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Prompt the user to select or type an email address", - "params": [ - { - "name": "type", - "value": "signIn" - }, - { - "name": "message", - "value": "Enter your email to sign into this app" - } - ], - "result": { - "name": "Default Result", - "value": "user@domain.com" - } - }, - { - "name": "Prompt the user to type an email address to sign up", - "params": [ - { - "name": "type", - "value": "signUp" - }, - { - "name": "message", - "value": "Enter your email to sign up for this app" - } - ], - "result": { - "name": "Default Result", - "value": "user@domain.com" - } - } - ] - }, - { - "name": "password", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:input:keyboard" - ] - } - ], - "summary": "Show the password entry keyboard, with typing obfuscated from visibility", - "params": [ - { - "name": "message", - "summary": "The message to display while prompting", - "required": false, - "schema": { - "type": "string" - } - } - ], - "result": { - "name": "value", - "summary": "the selected or entered password", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Prompt the user to enter their password", - "params": [ - { - "name": "message", - "value": "Enter your password" - } - ], - "result": { - "name": "Default Result", - "value": "abc123" - } - } - ] - }, - { - "name": "standard", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:input:keyboard" - ] - } - ], - "summary": "Show the standard platform keyboard, and return the submitted value", - "params": [ - { - "name": "message", - "summary": "The message to display while prompting", - "required": true, - "schema": { - "type": "string" - } - } - ], - "result": { - "name": "value", - "summary": "the selected or entered text", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Prompt the user for an arbitrary string", - "params": [ - { - "name": "message", - "value": "Enter the name you'd like to associate with this device" - } - ], - "result": { - "name": "Default Result", - "value": "Living Room" - } - } - ] - }, - { - "name": "onRequestStandard", - "summary": "Registers as a provider for when the user should be shown a standard keyboard.", - "params": [], - "tags": [ - { - "name": "event", - "x-response": { - "$ref": "#/components/schemas/KeyboardResult", - "examples": [ - { - "text": "username" - } - ] - } - }, - { - "name": "capabilities", - "x-provides": "xrn:firebolt:capability:input:keyboard", - "x-allow-focus": true - } - ], - "result": { - "name": "sessionRequest", - "summary": "The request to start a keyboard session", - "schema": { - "$ref": "#/components/schemas/KeyboardProviderRequest" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": { - "correlationId": "abc", - "parameters": { - "message": "Enter your user name." - } - } - } - } - ] - }, - { - "name": "onRequestPassword", - "summary": "Registers as a provider for when the user should be shown a password keyboard, with dots for each character entered.", - "params": [], - "tags": [ - { - "name": "event", - "x-response": { - "$ref": "#/components/schemas/KeyboardResult", - "examples": [ - { - "text": "password" - } - ] - } - }, - { - "name": "capabilities", - "x-provides": "xrn:firebolt:capability:input:keyboard", - "x-allow-focus": true - } - ], - "result": { - "name": "sessionRequest", - "summary": "The request to start a keyboard session", - "schema": { - "$ref": "#/components/schemas/KeyboardProviderRequest" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": { - "correlationId": "abc", - "parameters": { - "message": "Enter your user name." - } - } - } - } - ] - }, - { - "name": "onRequestEmail", - "summary": "Registers as a provider for when the user should be shown a keyboard optimized for email address entry.", - "params": [], - "tags": [ - { - "name": "event", - "x-response": { - "$ref": "#/components/schemas/KeyboardResult", - "examples": [ - { - "text": "email@address.com" - } - ] - } - }, - { - "name": "capabilities", - "x-provides": "xrn:firebolt:capability:input:keyboard", - "x-allow-focus": true - } - ], - "result": { - "name": "sessionRequest", - "summary": "The request to start a keyboard session", - "schema": { - "$ref": "#/components/schemas/KeyboardProviderRequest" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": { - "correlationId": "abc", - "parameters": { - "message": "Enter your user name." - } - } - } - } - ] - } - ], - "components": { - "schemas": { - "EmailUsage": { - "title": "EmailUsage", - "type": "string", - "enum": [ - "signIn", - "signUp" - ] - }, - "KeyboardType": { - "title": "KeyboardType", - "type": "string", - "description": "The type of keyboard to show to the user", - "enum": [ - "standard", - "email", - "password" - ] - }, - "KeyboardParameters": { - "title": "KeyboardParameters", - "type": "object", - "required": [ - "message" - ], - "properties": { - "message": { - "description": "The message to display to the user so the user knows what they are entering", - "type": "string" - } - }, - "examples": [ - { - "type": "standard", - "message": "Enter your user name." - } - ] - }, - "KeyboardProviderRequest": { - "title": "KeyboardProviderRequest", - "type": "object", - "required": [ - "correlationId", - "parameters" - ], - "properties": { - "correlationId": { - "type": "string", - "description": "An id to correlate the provider response with this request" - }, - "parameters": { - "description": "The request to start a keyboard session", - "$ref": "#/components/schemas/KeyboardParameters" - } - } - }, - "KeyboardResult": { - "title": "KeyboardResult", - "type": "object", - "required": [ - "text" - ], - "properties": { - "text": { - "type": "string", - "description": "The text the user entered into the keyboard" - }, - "canceled": { - "type": "boolean", - "description": "Whether the user canceled entering text before they were finished typing on the keyboard" - } - } - } - } - } + "openrpc": "1.2.4", + "info": { + "title": "Keyboard", + "description": "Methods for prompting users to enter text with task-oriented UX", + "version": "0.0.0" + }, + "methods": [ + { + "name": "email", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:input:keyboard" + ], + "x-provided-by": "Keyboard.email" + } + ], + "summary": "Prompt the user for their email address with a simplified list of choices.", + "params": [ + { + "name": "type", + "summary": "Why the email is being requested, e.g. sign on or sign up", + "required": true, + "schema": { + "$ref": "#/components/schemas/EmailUsage" + } + }, + { + "name": "message", + "summary": "The message to display while prompting", + "required": false, + "schema": { + "type": "string" + } + } + ], + "result": { + "name": "email", + "summary": "the selected or entered email", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Prompt the user to select or type an email address", + "params": [ + { + "name": "type", + "value": "signIn" + }, + { + "name": "message", + "value": "Enter your email to sign into this app" + } + ], + "result": { + "name": "Default Result", + "value": "user@domain.com" + } + }, + { + "name": "Prompt the user to type an email address to sign up", + "params": [ + { + "name": "type", + "value": "signUp" + }, + { + "name": "message", + "value": "Enter your email to sign up for this app" + } + ], + "result": { + "name": "Default Result", + "value": "user@domain.com" + } + } + ] + }, + { + "name": "password", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:input:keyboard" + ], + "x-provided-by": "Keyboard.password" + } + ], + "summary": "Show the password entry keyboard, with typing obfuscated from visibility", + "params": [ + { + "name": "message", + "summary": "The message to display while prompting", + "required": false, + "schema": { + "type": "string" + } + } + ], + "result": { + "name": "value", + "summary": "the selected or entered password", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Prompt the user to enter their password", + "params": [ + { + "name": "message", + "value": "Enter your password" + } + ], + "result": { + "name": "Default Result", + "value": "abc123" + } + } + ] + }, + { + "name": "standard", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:input:keyboard" + ], + "x-provided-by": "Keyboard.standard" + } + ], + "summary": "Show the standard platform keyboard, and return the submitted value", + "params": [ + { + "name": "message", + "summary": "The message to display while prompting", + "required": true, + "schema": { + "type": "string" + } + } + ], + "result": { + "name": "value", + "summary": "the selected or entered text", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Prompt the user for an arbitrary string", + "params": [ + { + "name": "message", + "value": "Enter the name you'd like to associate with this device" + } + ], + "result": { + "name": "Default Result", + "value": "Living Room" + } + } + ] + } + ], + "components": { + "schemas": { + "EmailUsage": { + "title": "EmailUsage", + "type": "string", + "enum": [ + "signIn", + "signUp" + ] + }, + "KeyboardType": { + "title": "KeyboardType", + "type": "string", + "description": "The type of keyboard to show to the user", + "enum": [ + "standard", + "email", + "password" + ] + }, + "KeyboardParameters": { + "title": "KeyboardParameters", + "type": "object", + "required": [ + "message" + ], + "properties": {}, + "examples": [ + { + "type": "standard", + "message": "Enter your user name." + } + ] + }, + "KeyboardProviderRequest": { + "title": "KeyboardProviderRequest", + "type": "object", + "required": [ + "correlationId", + "parameters" + ], + "properties": { + "correlationId": { + "type": "string", + "description": "An id to correlate the provider response with this request" + }, + "parameters": { + "description": "The request to start a keyboard session", + "$ref": "#/components/schemas/KeyboardParameters" + } + } + }, + "KeyboardResult": { + "title": "KeyboardResult", + "type": "object", + "required": [ + "text" + ], + "properties": { + "text": { + "type": "string", + "description": "The text the user entered into the keyboard" + }, + "canceled": { + "type": "boolean", + "description": "Whether the user canceled entering text before they were finished typing on the keyboard" + } + } + } + } + } } \ No newline at end of file diff --git a/src/openrpc/lifecycle.json b/src/openrpc/lifecycle.json index 4bddae9d1..f992c7136 100644 --- a/src/openrpc/lifecycle.json +++ b/src/openrpc/lifecycle.json @@ -1,387 +1,261 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Lifecycle", - "description": "Methods and events for responding to lifecycle changes in your app", - "version": "0.0.0" - }, - "methods": [ - { - "name": "ready", - "tags": [ - { - "name": "calls-metrics" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:lifecycle:ready" - ] - }, - { - "name": "exclude-from-sdk" - } - ], - "summary": "Notify the platform that the app is ready", - "params": [], - "result": { - "name": "result", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Let the platform know that your app is ready", - "params": [], - "result": { - "name": "Default Result", - "value": null - } - } - ] - }, - { - "name": "close", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:lifecycle:state" - ] - } - ], - "summary": "Request that the platform move your app out of focus", - "params": [ - { - "name": "reason", - "summary": "The reason the app is requesting to be closed", - "required": true, - "schema": { - "$ref": "https://meta.comcast.com/firebolt/lifecycle#/definitions/CloseReason" - } - } - ], - "result": { - "name": "success", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Close the app when the user presses back on the app home screen", - "params": [ - { - "name": "reason", - "value": "remoteButton" - } - ], - "result": { - "name": "Default Result", - "value": null - } - }, - { - "name": "Close the app when the user selects an exit menu item", - "params": [ - { - "name": "reason", - "value": "userExit" - } - ], - "result": { - "name": "Default Result", - "value": null - } - } - ] - }, - { - "name": "finished", - "tags": [ - { - "name": "exclude-from-sdk" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:lifecycle:state" - ] - } - ], - "summary": "Notify the platform that the app is done unloading", - "params": [], - "result": { - "name": "results", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": null - } - } - ] - }, - { - "name": "state", - "summary": "Get the current state of the app. This function is **synchronous**.", - "tags": [ - { - "name": "synchronous" - }, - { - "name": "exclude-from-sdk" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:lifecycle:state" - ] - } - ], - "params": [], - "result": { - "name": "state", - "summary": "the current state of the app.", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/lifecycle#/definitions/LifecycleState" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": "foreground" - } - } - ] - }, - { - "name": "onInactive", - "tags": [ - { - "name": "event" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:lifecycle:state" - ] - } - ], - "summary": "Listen to the inactive event", - "params": [], - "result": { - "name": "value", - "schema": { - "$ref": "#/components/schemas/LifecycleEvent" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": { - "state": "inactive", - "previous": "initializing" - } - } - } - ] - }, - { - "name": "onForeground", - "tags": [ - { - "name": "event" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:lifecycle:state" - ] - } - ], - "summary": "Listen to the foreground event", - "params": [], - "result": { - "name": "value", - "schema": { - "$ref": "#/components/schemas/LifecycleEvent" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": { - "state": "foreground", - "previous": "inactive" - } - } - }, - { - "name": "Move to foreground via remote branded buton", - "params": [], - "result": { - "name": "value", - "value": { - "state": "foreground", - "previous": "inactive", - "source": "remote" - } - } - } - ] - }, - { - "name": "onBackground", - "tags": [ - { - "name": "event" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:lifecycle:state" - ] - } - ], - "summary": "Listen to the background event", - "params": [], - "result": { - "name": "value", - "schema": { - "$ref": "#/components/schemas/LifecycleEvent" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": { - "state": "background", - "previous": "foreground" - } - } - } - ] - }, - { - "name": "onSuspended", - "tags": [ - { - "name": "event" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:lifecycle:state" - ] - } - ], - "summary": "Listen to the suspended event", - "params": [], - "result": { - "name": "value", - "schema": { - "$ref": "#/components/schemas/LifecycleEvent" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": { - "state": "suspended", - "previous": "inactive" - } - } - } - ] - }, - { - "name": "onUnloading", - "tags": [ - { - "name": "event" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:lifecycle:state" - ] - } - ], - "summary": "Listen to the unloading event", - "params": [], - "result": { - "name": "value", - "schema": { - "$ref": "#/components/schemas/LifecycleEvent" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": { - "state": "unloading", - "previous": "inactive" - } - } - } - ] - } - ], - "components": { - "schemas": { - "LifecycleEvent": { - "title": "LifecycleEvent", - "description": "A an object describing the previous and current states", - "type": "object", - "required": [ - "state", - "previous" - ], - "properties": { - "state": { - "$ref": "https://meta.comcast.com/firebolt/lifecycle#/definitions/LifecycleState", - "description": "The current lifcycle state" - }, - "previous": { - "$ref": "https://meta.comcast.com/firebolt/lifecycle#/definitions/LifecycleState", - "description": "The previous lifcycle state" - }, - "source": { - "type": "string", - "enum": [ - "voice", - "remote" - ], - "description": "The source of the lifecycle change." - } - } - } - } - } + "openrpc": "1.2.4", + "info": { + "title": "Lifecycle", + "description": "Methods and events for responding to lifecycle changes in your app", + "version": "0.0.0" + }, + "methods": [ + { + "name": "provideApplication", + "tags": [ + { + "name": "registration", + "x-interface": "Application" + }, + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:lifecycle:application" + } + ], + "summary": "Register an app's Application interface.", + "params": [ + { + "name": "enabled", + "required": true, + "schema": { + "type": "boolean" + } + } + ], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "enabled", + "value": true + } + ], + "result": { + "name": "result", + "value": null + } + } + ] + }, + { + "name": "provideActivatable", + "tags": [ + { + "name": "registration", + "x-interface": "Activatable" + }, + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:lifecycle:activatable" + } + ], + "summary": "Register an app's Activatable interface.", + "params": [ + { + "name": "enabled", + "required": true, + "schema": { + "type": "boolean" + } + } + ], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "enabled", + "value": true + } + ], + "result": { + "name": "result", + "value": null + } + } + ] + }, + { + "name": "provideSleepable", + "tags": [ + { + "name": "registration", + "x-interface": "Sleepable" + }, + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:lifecycle:sleepable" + } + ], + "summary": "Register an app's Sleepable interface.", + "params": [ + { + "name": "enabled", + "required": true, + "schema": { + "type": "boolean" + } + } + ], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "enabled", + "value": true + } + ], + "result": { + "name": "result", + "value": null + } + } + ] + }, + { + "name": "close", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:lifecycle:state" + ] + } + ], + "summary": "Request that the platform move your app out of focus", + "params": [ + { + "name": "reason", + "summary": "The reason the app is requesting to be closed", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/lifecycle#/definitions/CloseReason" + } + } + ], + "result": { + "name": "success", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Close the app when the user presses back on the app home screen", + "params": [ + { + "name": "reason", + "value": "remoteButton" + } + ], + "result": { + "name": "Default Result", + "value": null + } + }, + { + "name": "Close the app when the user selects an exit menu item", + "params": [ + { + "name": "reason", + "value": "userExit" + } + ], + "result": { + "name": "Default Result", + "value": null + } + } + ] + }, + { + "name": "finished", + "tags": [ + { + "name": "exclude-from-sdk" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:lifecycle:application" + ] + } + ], + "summary": "Notify the platform that the app is done unloading", + "params": [], + "result": { + "name": "results", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "Default Result", + "value": null + } + } + ] + } + ], + "components": { + "schemas": { + "LifecycleEvent": { + "title": "LifecycleEvent", + "description": "A an object describing the previous and current states", + "type": "object", + "required": [ + "state", + "previous" + ], + "properties": { + "state": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/lifecycle#/definitions/LifecycleState", + "description": "The current lifcycle state" + }, + "previous": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/lifecycle#/definitions/LifecycleState", + "description": "The previous lifcycle state" + }, + "source": { + "type": "string", + "enum": [ + "voice", + "remote" + ], + "description": "The source of the lifecycle change." + } + } + } + } + } } \ No newline at end of file diff --git a/src/openrpc/localization.json b/src/openrpc/localization.json index 544847c54..3c9101ca8 100644 --- a/src/openrpc/localization.json +++ b/src/openrpc/localization.json @@ -1,475 +1,489 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Localization", - "description": "Methods for accessessing location and language preferences", - "version": "0.0.0" - }, - "methods": [ - { - "name": "locality", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:localization:locality" - ] - }, - { - "name": "property" - } - ], - "summary": "Get the locality/city the device is located in", - "params": [], - "result": { - "name": "locality", - "summary": "the device city", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/localization#/definitions/Locality" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "Default Result", - "value": "Philadelphia" - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "Default Result", - "value": "Rockville" - } - } - ] - }, - { - "name": "postalCode", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:localization:postal-code" - ] - } - ], - "summary": "Get the postal code the device is located in", - "params": [], - "result": { - "name": "postalCode", - "summary": "the device postal code", - "schema": { "type": "string" } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "Default Result", - "value": "19103" - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "Default Result", - "value": "20850" - } - } - ] - }, - { - "name": "countryCode", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:localization:country-code" - ] - } - ], - "summary": "Get the ISO 3166 code for the counrty device is located in", - "params": [], - "result": { - "name": "code", - "summary": "the device country code", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/localization#/definitions/CountryCode" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "Default Result", - "value": "US" - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "Default Result", - "value": "UK" - } - } - ] - }, - { - "name": "language", - "summary": "Get the ISO 639 1/2 code for the preferred language", - "params": [], - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:localization:language" - ] - } - ], - "result": { - "name": "lang", - "summary": "the device language", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/localization#/definitions/Language" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "Default Result", - "value": "en" - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "Default Result", - "value": "es" - } - } - ] - }, - { - "name": "preferredAudioLanguages", - "summary": "A prioritized list of ISO 639 1/2 codes for the preferred audio languages on this device.", - "params": [], - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:localization:language" - ] - } - ], - "result": { - "name": "languages", - "summary": "the preferred audio languages", - "schema": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": ["es", "en"] - } - }, - { - "name": "Default Example #2", - "params": [], - "result": { - "name": "Default Result", - "value": ["en", "es"] - } - } - ] - }, - { - "name": "locale", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:localization:locale" - ] - } - ], - "summary": "Get the *full* BCP 47 code, including script, region, variant, etc., for the preferred langauage/locale", - "params": [], - "result": { - "name": "locale", - "summary": "the device locale", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/localization#/definitions/Locale" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "Default Result", - "value": "en-US" - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "Default Result", - "value": "es-US" - } - } - ] - }, - { - "name": "latlon", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:localization:location" - ] - } - ], - "summary": "Get the approximate latitude and longitude coordinates of the device location", - "params": [], - "result": { - "name": "latlong", - "summary": "lat/long tuple", - "schema": { - "$ref": "#/components/schemas/LatLon" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": [39.9549, 75.1699] - } - } - ] - }, - { - "name": "additionalInfo", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:localization:additional-info" - ] - } - ], - "summary": "Get any platform-specific localization information, in an Map", - "params": [], - "result": { - "name": "info", - "summary": "the additional info", - "schema": { - "type": "object", - "additionalProperties": { - "type": "string", - "maxLength": 1024 - }, - "maxProperties": 32 - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "info", - "value": { - } - } - } - ] - }, - { - "name": "addAdditionalInfo", - "tags": [ - { - "name": "capabilities", - "x-manages": [ - "xrn:firebolt:capability:localization:additional-info" - ] - } - ], - "summary": "Add any platform-specific localization information in key/value pair", - "params": [ - { - "name": "key", - "summary": "Key to add additionalInfo", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "value", - "summary": "Value to be set for additionalInfo", - "schema": { - "type": "string" - }, - "required": true - } - ], - "result": { - "name": "result", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Add an additionalInfo for localization", - "params": [ - { - "name": "key", - "value": "defaultKey" - }, - { - "name": "value", - "value": "defaultValue=" - } - ], - "result": { - "name": "defaultResult", - "value": null - } - } - ] - }, - { - "name": "removeAdditionalInfo", - "tags": [ - { - "name": "capabilities", - "x-manages": [ - "xrn:firebolt:capability:localization:additional-info" - ] - } - ], - "summary": "Remove any platform-specific localization information from map", - "params": [ - { - "name": "key", - "summary": "Key to remove additionalInfo", - "schema": { - "type": "string" - }, - "required": true - } - ], - "result": { - "name": "result", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Remove an additionalInfo for localization", - "params": [ - { - "name": "key", - "value": "defaultKey" - } - ], - "result": { - "name": "defaultResult", - "value": null - } - } - ] - }, - { - "name": "timeZone", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:localization:time-zone" - ] - } - ], - "summary": "Set the IANA timezone for the device", - "params": [], - "result": { - "name": "result", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/localization#/definitions/TimeZone" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": "America/New_York" - } - }, - { - "name": "Additional Example", - "params": [], - "result": { - "name": "Default Result", - "value": "America/Los_Angeles" - } - } - ] - } - ], - "components": { - "schemas": { - "LatLon": { - "type": "array", - "items": [ - { "type": "number" }, - { "type": "number" } - ], - "additionalItems": false, - "minItems": 2, - "maxItems": 2 - } - } - } -} + "openrpc": "1.2.4", + "info": { + "title": "Localization", + "description": "Methods for accessessing location and language preferences", + "version": "0.0.0" + }, + "methods": [ + { + "name": "locality", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:localization:locality" + ] + }, + { + "name": "property" + } + ], + "summary": "Get the locality/city the device is located in", + "params": [], + "result": { + "name": "locality", + "summary": "the device city", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/localization#/definitions/Locality" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "Default Result", + "value": "Philadelphia" + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "Default Result", + "value": "Rockville" + } + } + ] + }, + { + "name": "postalCode", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:localization:postal-code" + ] + } + ], + "summary": "Get the postal code the device is located in", + "params": [], + "result": { + "name": "postalCode", + "summary": "the device postal code", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "Default Result", + "value": "19103" + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "Default Result", + "value": "20850" + } + } + ] + }, + { + "name": "countryCode", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:localization:country-code" + ] + } + ], + "summary": "Get the ISO 3166 code for the counrty device is located in", + "params": [], + "result": { + "name": "code", + "summary": "the device country code", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/localization#/definitions/CountryCode" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "Default Result", + "value": "US" + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "Default Result", + "value": "UK" + } + } + ] + }, + { + "name": "language", + "summary": "Get the ISO 639 1/2 code for the preferred language", + "params": [], + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:localization:language" + ] + } + ], + "result": { + "name": "lang", + "summary": "the device language", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/localization#/definitions/Language" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "Default Result", + "value": "en" + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "Default Result", + "value": "es" + } + } + ] + }, + { + "name": "preferredAudioLanguages", + "summary": "A prioritized list of ISO 639 1/2 codes for the preferred audio languages on this device.", + "params": [], + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:localization:language" + ] + } + ], + "result": { + "name": "languages", + "summary": "the preferred audio languages", + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "Default Result", + "value": [ + "es", + "en" + ] + } + }, + { + "name": "Default Example #2", + "params": [], + "result": { + "name": "Default Result", + "value": [ + "en", + "es" + ] + } + } + ] + }, + { + "name": "locale", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:localization:locale" + ] + } + ], + "summary": "Get the *full* BCP 47 code, including script, region, variant, etc., for the preferred langauage/locale", + "params": [], + "result": { + "name": "locale", + "summary": "the device locale", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/localization#/definitions/Locale" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "Default Result", + "value": "en-US" + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "Default Result", + "value": "es-US" + } + } + ] + }, + { + "name": "latlon", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:localization:location" + ] + } + ], + "summary": "Get the approximate latitude and longitude coordinates of the device location", + "params": [], + "result": { + "name": "latlong", + "summary": "lat/long tuple", + "schema": { + "$ref": "#/components/schemas/LatLon" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "Default Result", + "value": [ + 39.9549, + 75.1699 + ] + } + } + ] + }, + { + "name": "additionalInfo", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:localization:additional-info" + ] + } + ], + "summary": "Get any platform-specific localization information, in an Map", + "params": [], + "result": { + "name": "info", + "summary": "the additional info", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string", + "maxLength": 1024 + }, + "maxProperties": 32 + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "info", + "value": {} + } + } + ] + }, + { + "name": "addAdditionalInfo", + "tags": [ + { + "name": "capabilities", + "x-manages": [ + "xrn:firebolt:capability:localization:additional-info" + ] + } + ], + "summary": "Add any platform-specific localization information in key/value pair", + "params": [ + { + "name": "key", + "summary": "Key to add additionalInfo", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "value", + "summary": "Value to be set for additionalInfo", + "schema": { + "type": "string" + }, + "required": true + } + ], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Add an additionalInfo for localization", + "params": [ + { + "name": "key", + "value": "defaultKey" + }, + { + "name": "value", + "value": "defaultValue=" + } + ], + "result": { + "name": "defaultResult", + "value": null + } + } + ] + }, + { + "name": "removeAdditionalInfo", + "tags": [ + { + "name": "capabilities", + "x-manages": [ + "xrn:firebolt:capability:localization:additional-info" + ] + } + ], + "summary": "Remove any platform-specific localization information from map", + "params": [ + { + "name": "key", + "summary": "Key to remove additionalInfo", + "schema": { + "type": "string" + }, + "required": true + } + ], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Remove an additionalInfo for localization", + "params": [ + { + "name": "key", + "value": "defaultKey" + } + ], + "result": { + "name": "defaultResult", + "value": null + } + } + ] + }, + { + "name": "timeZone", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:localization:time-zone" + ] + } + ], + "summary": "Set the IANA timezone for the device", + "params": [], + "result": { + "name": "result", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/localization#/definitions/TimeZone" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "Default Result", + "value": "America/New_York" + } + }, + { + "name": "Additional Example", + "params": [], + "result": { + "name": "Default Result", + "value": "America/Los_Angeles" + } + } + ] + } + ], + "components": { + "schemas": { + "LatLon": { + "type": "array", + "items": [ + { + "type": "number" + }, + { + "type": "number" + } + ], + "additionalItems": false, + "minItems": 2, + "maxItems": 2 + } + } + } +} \ No newline at end of file diff --git a/src/openrpc/metrics.json b/src/openrpc/metrics.json index d3a9516c5..0fee85631 100644 --- a/src/openrpc/metrics.json +++ b/src/openrpc/metrics.json @@ -1,1153 +1,1148 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Metrics", - "description": "Methods for sending metrics", - "version": "0.0.0" - }, - "methods": [ - { - "name": "ready", - "tags": [ - { - "name": "rpc-only" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:general" - ] - } - ], - "summary": "Inform the platform that your app is minimally usable. This method is called automatically by `Lifecycle.ready()`", - "params": [], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send ready metric", - "params": [ - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "signIn", - "tags": [ - { - "name": "rpc-only" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:general" - ] - } - ], - "summary": "Log a sign in event, called by Discovery.signIn().", - "params": [], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send signIn metric", - "params": [ - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Send signIn metric with entitlements", - "params": [ - { - "name": "entitlements", - "value": [ - { - "entitlementId": "123", - "startTime": "2025-01-01T00:00:00.000Z", - "endTime": "2025-01-01T00:00:00.000Z" - } - ] - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "signOut", - "tags": [ - { - "name": "rpc-only" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:general" - ] - } - ], - "summary": "Log a sign out event, called by Discovery.signOut().", - "params": [], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send signOut metric", - "params": [ - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "startContent", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:general" - ] - } - ], - "summary": "Inform the platform that your user has started content.", - "params": [ - { - "name": "entityId", - "summary": "Optional entity ID of the content.", - "schema": { - "type": "string" - }, - "required": false - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send startContent metric", - "params": [ - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Send startContent metric w/ entity", - "params": [ - { - "name": "entityId", - "value": "abc" - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "stopContent", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:general" - ] - } - ], - "summary": "Inform the platform that your user has stopped content.", - "params": [ - { - "name": "entityId", - "summary": "Optional entity ID of the content.", - "schema": { - "type": "string" - }, - "required": false - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send stopContent metric", - "params": [ - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Send stopContent metric w/ entity", - "params": [ - { - "name": "entityId", - "value": "abc" - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "page", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:general" - ] - } - ], - "summary": "Inform the platform that your user has navigated to a page or view.", - "params": [ - { - "name": "pageId", - "summary": "Page ID of the content.", - "schema": { - "type": "string" - }, - "required": true - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send page metric", - "params": [ - { - "name": "pageId", - "value": "xyz" - } - ], - "result": { - "name": "success", - "value": true - } - }, - { - "name": "Send startContent metric w/ entity", - "params": [ - { - "name": "pageId", - "value": "home" - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "action", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:general" - ] - } - ], - "summary": "Inform the platform of something not covered by other Metrics APIs.", - "params": [ - { - "name": "category", - "summary": "The category of action being logged. Must be 'user' for user-initated actions or 'app' for all other actions", - "schema": { - "type": "string", - "enum": [ - "user", - "app" - ] - }, - "required": true - }, - { - "name": "type", - "summary": "A short, indexible identifier for the action, e.g. 'SignIn Prompt Displayed'", - "schema": { - "type": "string", - "maxLength": 256 - }, - "required": true - }, - { - "name": "parameters", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/FlatMap" - }, - "required": false - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send foo action", - "params": [ - { - "name": "category", - "value": "user" - }, - { - "name": "type", - "value": "The user did foo" - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "error", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:general" - ] - } - ], - "summary": "Inform the platform of an error that has occured in your app.", - "params": [ - { - "name": "type", - "summary": "The type of error", - "schema": { - "$ref": "#/components/schemas/ErrorType" - }, - "required": true - }, - { - "name": "code", - "summary": "an app-specific error code", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "description", - "summary": "A short description of the error", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "visible", - "summary": "Whether or not this error was visible to the user.", - "schema": { - "type": "boolean" - }, - "required": true - }, - { - "name": "parameters", - "summary": "Optional additional parameters to be logged with the error", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/FlatMap" - }, - "required": false - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send error metric", - "params": [ - { - "name": "type", - "value": "media" - }, - { - "name": "code", - "value": "MEDIA-STALLED" - }, - { - "name": "description", - "value": "playback stalled" - }, - { - "name": "visible", - "value": true - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "mediaLoadStart", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:media" - ] - } - ], - "summary": "Called when setting the URL of a media asset to play, in order to infer load time.", - "params": [ - { - "name": "entityId", - "summary": "The entityId of the media.", - "schema": { - "type": "string" - }, - "required": true - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send loadstart metric.", - "params": [ - { - "name": "entityId", - "value": "345" - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "mediaPlay", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:media" - ] - } - ], - "summary": "Called when media playback should start due to autoplay, user-initiated play, or unpausing.", - "params": [ - { - "name": "entityId", - "summary": "The entityId of the media.", - "schema": { - "type": "string" - }, - "required": true - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send play metric.", - "params": [ - { - "name": "entityId", - "value": "345" - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "mediaPlaying", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:media" - ] - } - ], - "summary": "Called when media playback actually starts due to autoplay, user-initiated play, unpausing, or recovering from a buffering interuption.", - "params": [ - { - "name": "entityId", - "summary": "The entityId of the media.", - "schema": { - "type": "string" - }, - "required": true - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send playing metric.", - "params": [ - { - "name": "entityId", - "value": "345" - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "mediaPause", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:media" - ] - } - ], - "summary": "Called when media playback will pause due to an intentional pause operation.", - "params": [ - { - "name": "entityId", - "summary": "The entityId of the media.", - "schema": { - "type": "string" - }, - "required": true - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send pause metric.", - "params": [ - { - "name": "entityId", - "value": "345" - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "mediaWaiting", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:media" - ] - } - ], - "summary": "Called when media playback will halt due to a network, buffer, or other unintentional constraint.", - "params": [ - { - "name": "entityId", - "summary": "The entityId of the media.", - "schema": { - "type": "string" - }, - "required": true - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send waiting metric.", - "params": [ - { - "name": "entityId", - "value": "345" - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "mediaProgress", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:media" - ] - } - ], - "summary": "Called every 60 seconds as media playback progresses.", - "params": [ - { - "name": "entityId", - "summary": "The entityId of the media.", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "progress", - "summary": "Progress of playback, as a decimal percentage (0-0.999) for content with a known duration, or an integer number of seconds (0-86400) for content with an unknown duration.", - "schema": { - "$ref": "#/components/schemas/MediaPosition" - }, - "required": true - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send progress metric.", - "params": [ - { - "name": "entityId", - "value": "345" - }, - { - "name": "progress", - "value": 0.75 - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "mediaSeeking", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:media" - ] - } - ], - "summary": "Called when a seek is initiated during media playback.", - "params": [ - { - "name": "entityId", - "summary": "The entityId of the media.", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "target", - "summary": "Target destination of the seek, as a decimal percentage (0-0.999) for content with a known duration, or an integer number of seconds (0-86400) for content with an unknown duration.", - "schema": { - "$ref": "#/components/schemas/MediaPosition" - }, - "required": true - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send seeking metric.", - "params": [ - { - "name": "entityId", - "value": "345" - }, - { - "name": "target", - "value": 0.50 - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "mediaSeeked", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:media" - ] - } - ], - "summary": "Called when a seek is completed during media playback.", - "params": [ - { - "name": "entityId", - "summary": "The entityId of the media.", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "position", - "summary": "Resulting position of the seek operation, as a decimal percentage (0-0.999) for content with a known duration, or an integer number of seconds (0-86400) for content with an unknown duration.", - "schema": { - "$ref": "#/components/schemas/MediaPosition" - }, - "required": true - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send seeked metric.", - "params": [ - { - "name": "entityId", - "value": "345" - }, - { - "name": "position", - "value": 0.51 - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "mediaRateChange", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:media" - ] - } - ], - "summary": "Called when the playback rate of media is changed.", - "params": [ - { - "name": "entityId", - "summary": "The entityId of the media.", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "rate", - "summary": "The new playback rate.", - "schema": { - "type": "number" - }, - "required": true - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send ratechange metric.", - "params": [ - { - "name": "entityId", - "value": "345" - }, - { - "name": "rate", - "value": 2 - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "mediaRenditionChange", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:media" - ] - } - ], - "summary": "Called when the playback rendition (e.g. bitrate, dimensions, profile, etc) is changed.", - "params": [ - { - "name": "entityId", - "summary": "The entityId of the media.", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "bitrate", - "summary": "The new bitrate in kbps.", - "schema": { - "type": "number" - }, - "required": true - }, - { - "name": "width", - "summary": "The new resolution width.", - "schema": { - "type": "number" - }, - "required": true - }, - { - "name": "height", - "summary": "The new resolution height.", - "schema": { - "type": "number" - }, - "required": true - }, - { - "name": "profile", - "summary": "A description of the new profile, e.g. 'HDR' etc.", - "schema": { - "type": "string" - }, - "required": false - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send renditionchange metric.", - "params": [ - { - "name": "entityId", - "value": "345" - }, - { - "name": "bitrate", - "value": 5000 - }, - { - "name": "width", - "value": 1920 - }, - { - "name": "height", - "value": 1080 - }, - { - "name": "profile", - "value": "HDR+" - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "mediaEnded", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:media" - ] - } - ], - "summary": "Called when playback has stopped because the end of the media was reached.", - "params": [ - { - "name": "entityId", - "summary": "The entityId of the media.", - "schema": { - "type": "string" - }, - "required": true - } - ], - "result": { - "name": "success", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Send ended metric.", - "params": [ - { - "name": "entityId", - "value": "345" - } - ], - "result": { - "name": "success", - "value": true - } - } - ] - }, - { - "name": "event", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:metrics:distributor" - ] - } - ], - "summary": "Inform the platform of 1st party distributor metrics.", - "params": [ - { - "name": "schema", - "summary": "The schema URI of the metric type", - "schema": { - "type": "string", - "format": "uri" - }, - "required": true - }, - { - "name": "data", - "summary": "A JSON payload conforming the the provided schema", - "schema": { - "$ref": "#/components/schemas/EventObject" - }, - "required": true - } - ], - "result": { - "name": "results", - "schema": { - "type": "null" - } - }, - "examples": [ - { - "name": "Send foo event", - "params": [ - { - "name": "schema", - "value": "http://meta.rdkcentral.com/some/schema" - }, - { - "name": "data", - "value": { - "foo": "foo" - } - } - ], - "result": { - "name": "result", - "value": null - } - } - ] - } - ], - "components": { - "schemas": { - "MediaPosition": { - "title": "MediaPosition", - "description": "Represents a position inside playback content, as a decimal percentage (0-0.999) for content with a known duration, or an integer number of seconds (0-86400) for content with an unknown duration.", - "oneOf": [ - { - "const": 0 - }, - { - "type": "number", - "exclusiveMinimum": 0, - "exclusiveMaximum": 1 - }, - { - "type": "integer", - "minimum": 1, - "maximum": 86400 - } - ] - }, - "ErrorType": { - "title": "ErrorType", - "type": "string", - "enum": [ - "network", - "media", - "restriction", - "entitlement", - "other" - ] - }, - "EventObjectPrimitives": { - "title": "EventObjectPrimitives", - "anyOf": [ - { - "type": "string", - "maxLength": 256 - }, - { - "type": "number" - }, - { - "type": "integer" - }, - { - "type": "boolean" - }, - { - "type": "null" - } - ] - }, - "EventObject": { - "title": "EventObject", - "type": "object", - "maxProperties": 256, - "additionalProperties": { - "anyOf": [ - { - "$ref": "#/components/schemas/EventObjectPrimitives" - }, - { - "type": "array", - "maxItems": 256, - "items": { - "anyOf": [ - { - "$ref": "#/components/schemas/EventObjectPrimitives" - }, - { - "$ref": "#/components/schemas/EventObject" - } - ] - } - }, - { - "$ref": "#/components/schemas/EventObject" - } - ] - } - } - } - } + "openrpc": "1.2.4", + "info": { + "title": "Metrics", + "description": "Methods for sending metrics", + "version": "0.0.0" + }, + "methods": [ + { + "name": "ready", + "tags": [ + { + "name": "rpc-only" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:general" + ] + } + ], + "summary": "Inform the platform that your app is minimally usable. This method is called automatically by `Lifecycle.ready()`", + "params": [], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send ready metric", + "params": [], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "signIn", + "tags": [ + { + "name": "rpc-only" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:general" + ] + } + ], + "summary": "Log a sign in event, called by Discovery.signIn().", + "params": [], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send signIn metric", + "params": [], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Send signIn metric with entitlements", + "params": [ + { + "name": "entitlements", + "value": [ + { + "entitlementId": "123", + "startTime": "2025-01-01T00:00:00.000Z", + "endTime": "2025-01-01T00:00:00.000Z" + } + ] + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "signOut", + "tags": [ + { + "name": "rpc-only" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:general" + ] + } + ], + "summary": "Log a sign out event, called by Discovery.signOut().", + "params": [], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send signOut metric", + "params": [], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "startContent", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:general" + ] + } + ], + "summary": "Inform the platform that your user has started content.", + "params": [ + { + "name": "entityId", + "summary": "Optional entity ID of the content.", + "schema": { + "type": "string" + }, + "required": false + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send startContent metric", + "params": [], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Send startContent metric w/ entity", + "params": [ + { + "name": "entityId", + "value": "abc" + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "stopContent", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:general" + ] + } + ], + "summary": "Inform the platform that your user has stopped content.", + "params": [ + { + "name": "entityId", + "summary": "Optional entity ID of the content.", + "schema": { + "type": "string" + }, + "required": false + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send stopContent metric", + "params": [], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Send stopContent metric w/ entity", + "params": [ + { + "name": "entityId", + "value": "abc" + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "page", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:general" + ] + } + ], + "summary": "Inform the platform that your user has navigated to a page or view.", + "params": [ + { + "name": "pageId", + "summary": "Page ID of the content.", + "schema": { + "type": "string" + }, + "required": true + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send page metric", + "params": [ + { + "name": "pageId", + "value": "xyz" + } + ], + "result": { + "name": "success", + "value": true + } + }, + { + "name": "Send startContent metric w/ entity", + "params": [ + { + "name": "pageId", + "value": "home" + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "action", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:general" + ] + } + ], + "summary": "Inform the platform of something not covered by other Metrics APIs.", + "params": [ + { + "name": "category", + "summary": "The category of action being logged. Must be 'user' for user-initated actions or 'app' for all other actions", + "schema": { + "type": "string", + "enum": [ + "user", + "app" + ] + }, + "required": true + }, + { + "name": "type", + "summary": "A short, indexible identifier for the action, e.g. 'SignIn Prompt Displayed'", + "schema": { + "type": "string", + "maxLength": 256 + }, + "required": true + }, + { + "name": "parameters", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/FlatMap" + }, + "required": false + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send foo action", + "params": [ + { + "name": "category", + "value": "user" + }, + { + "name": "type", + "value": "The user did foo" + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "error", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:general" + ] + } + ], + "summary": "Inform the platform of an error that has occured in your app.", + "params": [ + { + "name": "type", + "summary": "The type of error", + "schema": { + "$ref": "#/components/schemas/ErrorType" + }, + "required": true + }, + { + "name": "code", + "summary": "an app-specific error code", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "description", + "summary": "A short description of the error", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "visible", + "summary": "Whether or not this error was visible to the user.", + "schema": { + "type": "boolean" + }, + "required": true + }, + { + "name": "parameters", + "summary": "Optional additional parameters to be logged with the error", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/FlatMap" + }, + "required": false + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send error metric", + "params": [ + { + "name": "type", + "value": "media" + }, + { + "name": "code", + "value": "MEDIA-STALLED" + }, + { + "name": "description", + "value": "playback stalled" + }, + { + "name": "visible", + "value": true + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "mediaLoadStart", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:media" + ] + } + ], + "summary": "Called when setting the URL of a media asset to play, in order to infer load time.", + "params": [ + { + "name": "entityId", + "summary": "The entityId of the media.", + "schema": { + "type": "string" + }, + "required": true + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send loadstart metric.", + "params": [ + { + "name": "entityId", + "value": "345" + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "mediaPlay", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:media" + ] + } + ], + "summary": "Called when media playback should start due to autoplay, user-initiated play, or unpausing.", + "params": [ + { + "name": "entityId", + "summary": "The entityId of the media.", + "schema": { + "type": "string" + }, + "required": true + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send play metric.", + "params": [ + { + "name": "entityId", + "value": "345" + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "mediaPlaying", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:media" + ] + } + ], + "summary": "Called when media playback actually starts due to autoplay, user-initiated play, unpausing, or recovering from a buffering interuption.", + "params": [ + { + "name": "entityId", + "summary": "The entityId of the media.", + "schema": { + "type": "string" + }, + "required": true + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send playing metric.", + "params": [ + { + "name": "entityId", + "value": "345" + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "mediaPause", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:media" + ] + } + ], + "summary": "Called when media playback will pause due to an intentional pause operation.", + "params": [ + { + "name": "entityId", + "summary": "The entityId of the media.", + "schema": { + "type": "string" + }, + "required": true + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send pause metric.", + "params": [ + { + "name": "entityId", + "value": "345" + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "mediaWaiting", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:media" + ] + } + ], + "summary": "Called when media playback will halt due to a network, buffer, or other unintentional constraint.", + "params": [ + { + "name": "entityId", + "summary": "The entityId of the media.", + "schema": { + "type": "string" + }, + "required": true + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send waiting metric.", + "params": [ + { + "name": "entityId", + "value": "345" + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "mediaProgress", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:media" + ] + } + ], + "summary": "Called every 60 seconds as media playback progresses.", + "params": [ + { + "name": "entityId", + "summary": "The entityId of the media.", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "progress", + "summary": "Progress of playback, as a decimal percentage (0-0.999) for content with a known duration, or an integer number of seconds (0-86400) for content with an unknown duration.", + "schema": { + "$ref": "#/components/schemas/MediaPosition" + }, + "required": true + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send progress metric.", + "params": [ + { + "name": "entityId", + "value": "345" + }, + { + "name": "progress", + "value": 0.75 + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "mediaSeeking", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:media" + ] + } + ], + "summary": "Called when a seek is initiated during media playback.", + "params": [ + { + "name": "entityId", + "summary": "The entityId of the media.", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "target", + "summary": "Target destination of the seek, as a decimal percentage (0-0.999) for content with a known duration, or an integer number of seconds (0-86400) for content with an unknown duration.", + "schema": { + "$ref": "#/components/schemas/MediaPosition" + }, + "required": true + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send seeking metric.", + "params": [ + { + "name": "entityId", + "value": "345" + }, + { + "name": "target", + "value": 0.5 + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "mediaSeeked", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:media" + ] + } + ], + "summary": "Called when a seek is completed during media playback.", + "params": [ + { + "name": "entityId", + "summary": "The entityId of the media.", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "position", + "summary": "Resulting position of the seek operation, as a decimal percentage (0-0.999) for content with a known duration, or an integer number of seconds (0-86400) for content with an unknown duration.", + "schema": { + "$ref": "#/components/schemas/MediaPosition" + }, + "required": true + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send seeked metric.", + "params": [ + { + "name": "entityId", + "value": "345" + }, + { + "name": "position", + "value": 0.51 + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "mediaRateChange", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:media" + ] + } + ], + "summary": "Called when the playback rate of media is changed.", + "params": [ + { + "name": "entityId", + "summary": "The entityId of the media.", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "rate", + "summary": "The new playback rate.", + "schema": { + "type": "number" + }, + "required": true + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send ratechange metric.", + "params": [ + { + "name": "entityId", + "value": "345" + }, + { + "name": "rate", + "value": 2 + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "mediaRenditionChange", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:media" + ] + } + ], + "summary": "Called when the playback rendition (e.g. bitrate, dimensions, profile, etc) is changed.", + "params": [ + { + "name": "entityId", + "summary": "The entityId of the media.", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "bitrate", + "summary": "The new bitrate in kbps.", + "schema": { + "type": "number" + }, + "required": true + }, + { + "name": "width", + "summary": "The new resolution width.", + "schema": { + "type": "number" + }, + "required": true + }, + { + "name": "height", + "summary": "The new resolution height.", + "schema": { + "type": "number" + }, + "required": true + }, + { + "name": "profile", + "summary": "A description of the new profile, e.g. 'HDR' etc.", + "schema": { + "type": "string" + }, + "required": false + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send renditionchange metric.", + "params": [ + { + "name": "entityId", + "value": "345" + }, + { + "name": "bitrate", + "value": 5000 + }, + { + "name": "width", + "value": 1920 + }, + { + "name": "height", + "value": 1080 + }, + { + "name": "profile", + "value": "HDR+" + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "mediaEnded", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:media" + ] + } + ], + "summary": "Called when playback has stopped because the end of the media was reached.", + "params": [ + { + "name": "entityId", + "summary": "The entityId of the media.", + "schema": { + "type": "string" + }, + "required": true + } + ], + "result": { + "name": "success", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Send ended metric.", + "params": [ + { + "name": "entityId", + "value": "345" + } + ], + "result": { + "name": "success", + "value": true + } + } + ] + }, + { + "name": "event", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:metrics:distributor" + ] + } + ], + "summary": "Inform the platform of 1st party distributor metrics.", + "params": [ + { + "name": "schema", + "summary": "The schema URI of the metric type", + "schema": { + "type": "string", + "format": "uri" + }, + "required": true + }, + { + "name": "data", + "summary": "A JSON payload conforming the the provided schema", + "schema": { + "$ref": "#/components/schemas/EventObject" + }, + "required": true + } + ], + "result": { + "name": "results", + "schema": { + "type": "null" + } + }, + "examples": [ + { + "name": "Send foo event", + "params": [ + { + "name": "schema", + "value": "http://meta.rdkcentral.com/some/schema" + }, + { + "name": "data", + "value": { + "foo": "foo" + } + } + ], + "result": { + "name": "result", + "value": null + } + } + ] + } + ], + "components": { + "schemas": { + "MediaPosition": { + "title": "MediaPosition", + "description": "Represents a position inside playback content, as a decimal percentage (0-0.999) for content with a known duration, or an integer number of seconds (0-86400) for content with an unknown duration.", + "oneOf": [ + { + "const": 0 + }, + { + "type": "number", + "exclusiveMinimum": 0, + "exclusiveMaximum": 1 + }, + { + "type": "integer", + "minimum": 1, + "maximum": 86400 + } + ] + }, + "ErrorType": { + "title": "ErrorType", + "type": "string", + "enum": [ + "network", + "media", + "restriction", + "entitlement", + "other" + ] + }, + "EventObjectPrimitives": { + "title": "EventObjectPrimitives", + "anyOf": [ + { + "type": "string", + "maxLength": 256 + }, + { + "type": "number" + }, + { + "type": "integer" + }, + { + "type": "boolean" + }, + { + "type": "null" + } + ] + }, + "EventObject": { + "title": "EventObject", + "type": "object", + "maxProperties": 256, + "additionalProperties": { + "anyOf": [ + { + "$ref": "#/components/schemas/EventObjectPrimitives" + }, + { + "type": "array", + "maxItems": 256, + "items": { + "anyOf": [ + { + "$ref": "#/components/schemas/EventObjectPrimitives" + }, + { + "$ref": "#/components/schemas/EventObject" + } + ] + } + }, + { + "$ref": "#/components/schemas/EventObject" + } + ] + } + } + } + } } \ No newline at end of file diff --git a/src/openrpc/parameters.json b/src/openrpc/parameters.json index 101d140bd..d510d3c65 100644 --- a/src/openrpc/parameters.json +++ b/src/openrpc/parameters.json @@ -1,90 +1,90 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Parameters", - "description": "Methods for getting initialization parameters for an app cold launch.", - "version": "0.0.0" - }, - "methods": [ - { - "name": "initialization", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:lifecycle:state" - ] - } - ], - "summary": "Returns any initialization parameters for the app, e.g. initialial `NavigationIntent`.", - "params": [], - "result": { - "name": "init", - "summary": "The initialization parameters.", - "schema": { - "$ref": "#/components/schemas/AppInitialization" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "init", - "value": { - "lmt": 0, - "us_privacy": "1-Y-", - "discovery": { - "navigateTo": { - "action": "entity", - "data": { - "entityId": "abc", - "entityType": "program", - "programType": "movie" - }, - "context": { - "source": "voice" - } - } - } - } - } - } - ] - } - ], - "components": { - "schemas": { - "AppInitialization": { - "title": "AppInitialization", - "type": "object", - "properties": { - "us_privacy": { - "type": "string", - "description": "The IAB US Privacy string." - }, - "lmt": { - "type": "integer", - "description": "The IAB limit ad tracking opt out value." - }, - "discovery": { - "type": "object", - "properties": { - "navigateTo": { - "$ref": "https://meta.comcast.com/firebolt/intents#/definitions/NavigationIntent" - } - } - }, - "secondScreen": { - "type": "object", - "properties": { - "launchRequest": { - "$ref": "https://meta.comcast.com/firebolt/secondscreen#/definitions/SecondScreenEvent" - } - } - } - } - } - } - } - } \ No newline at end of file + "openrpc": "1.2.4", + "info": { + "title": "Parameters", + "description": "Methods for getting initialization parameters for an app cold launch.", + "version": "0.0.0" + }, + "methods": [ + { + "name": "initialization", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:lifecycle:state" + ] + } + ], + "summary": "Returns any initialization parameters for the app, e.g. initialial `NavigationIntent`.", + "params": [], + "result": { + "name": "init", + "summary": "The initialization parameters.", + "schema": { + "$ref": "#/components/schemas/AppInitialization" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "init", + "value": { + "lmt": 0, + "us_privacy": "1-Y-", + "discovery": { + "navigateTo": { + "action": "entity", + "data": { + "entityId": "abc", + "entityType": "program", + "programType": "movie" + }, + "context": { + "source": "voice" + } + } + } + } + } + } + ] + } + ], + "components": { + "schemas": { + "AppInitialization": { + "title": "AppInitialization", + "type": "object", + "properties": { + "us_privacy": { + "type": "string", + "description": "The IAB US Privacy string." + }, + "lmt": { + "type": "integer", + "description": "The IAB limit ad tracking opt out value." + }, + "discovery": { + "type": "object", + "properties": { + "navigateTo": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/intents#/definitions/NavigationIntent" + } + } + }, + "secondScreen": { + "type": "object", + "properties": { + "launchRequest": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/secondscreen#/definitions/SecondScreenEvent" + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/src/openrpc/pin_challenge.json b/src/openrpc/pin_challenge.json index c1a61ef7b..275d0b4c6 100644 --- a/src/openrpc/pin_challenge.json +++ b/src/openrpc/pin_challenge.json @@ -1,174 +1,174 @@ { - "openrpc": "1.2.4", - "info": { - "title": "PinChallenge", - "description": "A module for registering as a provider for a user grant in which the user is prompted for a pin for access to a capability", - "version": "0.0.0" - }, - "methods": [ - { - "name": "onRequestChallenge", - "summary": "Registers as a provider for when the user should be challenged in order to confirm access to a capability through a pin prompt", - "params": [], - "tags": [ - { - "name": "event", - "x-response": { - "$ref": "#/components/schemas/PinChallengeResult", - "examples": [ - { - "granted": true, - "reason": "correctPin" - }, - { - "granted": false, - "reason": "exceededPinFailures" - }, - { - "granted": null, - "reason": "cancelled" - } - ] - } - }, - { - "name": "capabilities", - "x-provides": "xrn:firebolt:capability:usergrant:pinchallenge", - "x-allow-focus": true - } - ], - "result": { - "name": "challenge", - "summary": "The request to challenge the user", - "schema": { - "$ref": "#/components/schemas/PinChallengeProviderRequest" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": { - "correlationId": "abc", - "parameters": { - "capability": "xrn:firebolt:capability:commerce::purchase", - "requestor": { - "id": "ReferenceApp", - "name": "Firebolt Reference App" - }, - "pinSpace": "purchase" - } - } - } - } - ] - } - ], - "components": { - "schemas": { - "PinChallenge": { - "title": "PinChallenge", - "type": "object", - "required": [ - "requestor", - "pinSpace" - ], - "properties": { - "pinSpace": { - "type": "string", - "description": "The pin space that this challenge is for", - "enum": [ - "purchase", - "content" - ] - }, - "capability": { - "type": "string", - "description": "The capability that is gated by a pin challenge" - }, - "requestor": { - "description": "The identity of which app is requesting access to this capability", - "$ref": "#/components/schemas/ChallengeRequestor" - } - } - }, - "ChallengeRequestor": { - "title": "ChallengeRequestor", - "type": "object", - "required": [ - "id", - "name" - ], - "properties": { - "id": { - "type": "string", - "description": "The id of the app that requested the challenge" - }, - "name": { - "type": "string", - "description": "The name of the app that requested the challenge" - } - } - }, - "PinChallengeProviderRequest": { - "title": "PinChallengeProviderRequest", - "allOf": [ - { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/ProviderRequest" - }, - { - "type": "object", - "required": [ - "parameters" - ], - "properties": { - "parameters": { - "description": "The request to challenge the user", - "$ref": "#/components/schemas/PinChallenge" - } - } - } - ] - }, - "ResultReason": { - "title": "ResultReason", - "type": "string", - "description": "The reason for the result of challenging the user", - "enum": [ - "noPinRequired", - "noPinRequiredWindow", - "exceededPinFailures", - "correctPin", - "cancelled" - ] - }, - "PinChallengeResult": { - "title": "PinChallengeResult", - "type": "object", - "required": [ - "granted", - "reason" - ], - "properties": { - "granted": { - "oneOf": [ - { - "type": "boolean", - "description": "Whether the user succeeded in the pin challenge" - }, - { - "const": null - } - ] - }, - "reason": { - "$ref": "#/components/schemas/ResultReason", - "description": "The reason for the result " - } - } - } - } - } + "openrpc": "1.2.4", + "info": { + "title": "PinChallenge", + "description": "A module for registering as a provider for a user grant in which the user is prompted for a pin for access to a capability", + "version": "0.0.0" + }, + "methods": [ + { + "name": "challenge", + "summary": "Registers as a provider for when the user should be challenged in order to confirm access to a capability through a pin prompt", + "params": [ + { + "name": "requestor", + "required": true, + "schema": { + "description": "The identity of which app is requesting access to this capability", + "$ref": "#/components/schemas/ChallengeRequestor" + } + }, + { + "name": "pinSpace", + "required": true, + "schema": { + "type": "string", + "description": "The pin space that this challenge is for", + "enum": [ + "purchase", + "content" + ] + } + }, + { + "name": "capability", + "required": false, + "schema": { + "type": "string", + "description": "The capability that is gated by a pin challenge" + } + } + ], + "tags": [ + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:usergrant:pinchallenge", + "x-allow-focus": true + } + ], + "result": { + "name": "result", + "schema": { + "$ref": "#/components/schemas/PinChallengeResult" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "capability", + "value": "xrn:firebolt:capability:commerce::purchase" + }, + { + "name": "requestor", + "value": { + "id": "ReferenceApp", + "name": "Firebolt Reference App" + } + }, + { + "name": "pinSpace", + "value": "purchase" + } + ], + "result": { + "name": "result", + "value": { + "granted": true, + "reason": "correctPin" + } + } + } + ] + } + ], + "components": { + "schemas": { + "PinChallenge": { + "title": "PinChallenge", + "type": "object", + "required": [ + "requestor", + "pinSpace" + ], + "properties": {} + }, + "ChallengeRequestor": { + "title": "ChallengeRequestor", + "type": "object", + "required": [ + "id", + "name" + ], + "properties": { + "id": { + "type": "string", + "description": "The id of the app that requested the challenge" + }, + "name": { + "type": "string", + "description": "The name of the app that requested the challenge" + } + } + }, + "PinChallengeProviderRequest": { + "title": "PinChallengeProviderRequest", + "allOf": [ + { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/ProviderRequest" + }, + { + "type": "object", + "required": [ + "parameters" + ], + "properties": { + "parameters": { + "description": "The request to challenge the user", + "$ref": "#/components/schemas/PinChallenge" + } + } + } + ] + }, + "ResultReason": { + "title": "ResultReason", + "type": "string", + "description": "The reason for the result of challenging the user", + "enum": [ + "noPinRequired", + "noPinRequiredWindow", + "exceededPinFailures", + "correctPin", + "cancelled" + ] + }, + "PinChallengeResult": { + "title": "PinChallengeResult", + "type": "object", + "required": [ + "granted", + "reason" + ], + "properties": { + "granted": { + "oneOf": [ + { + "type": "boolean", + "description": "Whether the user succeeded in the pin challenge" + }, + { + "const": null + } + ] + }, + "reason": { + "$ref": "#/components/schemas/ResultReason", + "description": "The reason for the result " + } + } + } + } + } } \ No newline at end of file diff --git a/src/openrpc/privacy.json b/src/openrpc/privacy.json index ed117f6c1..f5e489d5f 100644 --- a/src/openrpc/privacy.json +++ b/src/openrpc/privacy.json @@ -1,632 +1,632 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Privacy", - "description": "A module for managing device settings.", - "version": "0.0.0" - }, - "methods": [ - { - "name": "allowResumePoints", - "tags": [ - { - "name": "property", - "x-allow-value": true - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:privacy:settings" - ] - } - ], - "summary": "Whether the user allows resume points for content to show in the main experience", - "params": [], - "result": { - "name": "allow", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "allow", - "value": true - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "allow", - "value": false - } - } - ] - }, - { - "name": "allowUnentitledResumePoints", - "tags": [ - { - "name": "property", - "x-allow-value": true - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:privacy:settings" - ] - } - ], - "summary": "Whether the user allows resume points for content from unentitled providers to show in the main experience", - "params": [], - "result": { - "name": "allow", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "allow", - "value": true - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "allow", - "value": false - } - } - ] - }, - { - "name": "allowWatchHistory", - "tags": [ - { - "name": "property", - "x-allow-value": true - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:privacy:settings" - ] - } - ], - "summary": "Whether the user allows their watch history from all sources to show in the main experience", - "params": [], - "result": { - "name": "allow", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "allow", - "value": true - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "allow", - "value": false - } - } - ] - }, - { - "name": "allowProductAnalytics", - "tags": [ - { - "name": "property", - "x-allow-value": true - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:privacy:settings" - ] - } - ], - "summary": "Whether the user allows their usage data can be used for analytics about the product", - "params": [], - "result": { - "name": "allow", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "allow", - "value": true - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "allow", - "value": false - } - } - ] - }, - { - "name": "allowPersonalization", - "tags": [ - { - "name": "property", - "x-allow-value": true - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:privacy:settings" - ] - } - ], - "summary": "Whether the user allows their usage data to be used for personalization and recommendations", - "params": [], - "result": { - "name": "allow", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "allow", - "value": true - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "allow", - "value": false - } - } - ] - }, - { - "name": "allowUnentitledPersonalization", - "tags": [ - { - "name": "property", - "x-allow-value": true - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:privacy:settings" - ] - } - ], - "summary": "Whether the user allows their usage data to be used for personalization and recommendations for unentitled content", - "params": [], - "result": { - "name": "allow", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "allow", - "value": true - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "allow", - "value": false - } - } - ] - }, - { - "name": "allowRemoteDiagnostics", - "tags": [ - { - "name": "property", - "x-allow-value": true - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:privacy:settings" - ] - } - ], - "summary": "Whether the user allows their personal data to be included in diagnostic telemetry. This also allows whether device logs can be remotely accessed from the client device", - "params": [], - "result": { - "name": "allow", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "allow", - "value": true - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "allow", - "value": false - } - } - ] - }, - { - "name": "allowPrimaryContentAdTargeting", - "tags": [ - { - "name": "property", - "x-allow-value": true - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:privacy:settings" - ] - } - ], - "summary": "Whether the user allows ads to be targeted to the user while watching content in the primary experience", - "params": [], - "result": { - "name": "allow", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "allow", - "value": true - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "allow", - "value": false - } - } - ] - }, - { - "name": "allowPrimaryBrowseAdTargeting", - "tags": [ - { - "name": "property", - "x-allow-value": true - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:privacy:settings" - ] - } - ], - "summary": "Whether the user allows ads to be targeted to the user while browsing in the primary experience", - "params": [], - "result": { - "name": "allow", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "allow", - "value": true - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "allow", - "value": false - } - } - ] - }, - { - "name": "allowAppContentAdTargeting", - "tags": [ - { - "name": "property", - "x-allow-value": true - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:privacy:settings" - ] - } - ], - "summary": "Whether the user allows ads to be targeted to the user while watching content in apps", - "params": [], - "result": { - "name": "allow", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "allow", - "value": true - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "allow", - "value": false - } - } - ] - }, - { - "name": "allowACRCollection", - "tags": [ - { - "name": "property", - "x-allow-value": true - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:privacy:settings" - ] - } - ], - "summary": "Whether the user allows their automatic content recognition data to be collected", - "params": [], - "result": { - "name": "allow", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "allow", - "value": true - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "allow", - "value": false - } - } - ] - }, - { - "name": "allowCameraAnalytics", - "tags": [ - { - "name": "property", - "x-allow-value": true - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:privacy:settings" - ] - } - ], - "summary": "Whether the user allows data from their camera to be used for Product Analytics", - "params": [], - "result": { - "name": "allow", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [], - "result": { - "name": "allow", - "value": true - } - }, - { - "name": "Default example #2", - "params": [], - "result": { - "name": "allow", - "value": false - } - } - ] - }, - { - "name": "settings", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:privacy:settings" - ] - } - ], - "summary": "Gets the allowed value for all privacy settings", - "params": [], - "result": { - "name": "settings", - "schema": { - "$ref": "#/components/schemas/PrivacySettings" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "settings", - "value": { - "allowACRCollection": true, - "allowResumePoints": false, - "allowAppContentAdTargeting": false, - "allowCameraAnalytics": true, - "allowPersonalization": true, - "allowPrimaryBrowseAdTargeting": false, - "allowPrimaryContentAdTargeting": false, - "allowProductAnalytics": true, - "allowRemoteDiagnostics": true, - "allowUnentitledPersonalization": true, - "allowUnentitledResumePoints": false, - "allowWatchHistory": true - } - } - } - ] - } - ], - "components": { - "schemas": { - "PrivacySettings": { - "title": "PrivacySettings", - "type": "object", - "required": [ - "allowACRCollection", - "allowResumePoints", - "allowAppContentAdTargeting", - "allowCameraAnalytics", - "allowPersonalization", - "allowPrimaryBrowseAdTargeting", - "allowPrimaryContentAdTargeting", - "allowProductAnalytics", - "allowRemoteDiagnostics", - "allowUnentitledPersonalization", - "allowUnentitledResumePoints", - "allowWatchHistory" - ], - "properties": { - "allowACRCollection": { - "description": "", - "type": "boolean" - }, - "allowResumePoints": { - "description": "", - "type": "boolean" - }, - "allowAppContentAdTargeting": { - "description": "", - "type": "boolean" - }, - "allowCameraAnalytics": { - "description": "", - "type": "boolean" - }, - "allowPersonalization": { - "description": "", - "type": "boolean" - }, - "allowPrimaryBrowseAdTargeting": { - "description": "", - "type": "boolean" - }, - "allowPrimaryContentAdTargeting": { - "description": "", - "type": "boolean" - }, - "allowProductAnalytics": { - "description": "", - "type": "boolean" - }, - "allowRemoteDiagnostics": { - "description": "", - "type": "boolean" - }, - "allowUnentitledPersonalization": { - "description": "", - "type": "boolean" - }, - "allowUnentitledResumePoints": { - "description": "", - "type": "boolean" - }, - "allowWatchHistory": { - "description": "", - "type": "boolean" - } - }, - "examples": [ - { - "allowACRCollection": true, - "allowResumePoints": false, - "allowAppContentAdTargeting": false, - "allowCameraAnalytics": true, - "allowPersonalization": true, - "allowPrimaryBrowseAdTargeting": false, - "allowPrimaryContentAdTargeting": false, - "allowProductAnalytics": true, - "allowRemoteDiagnostics": true, - "allowUnentitledPersonalization": true, - "allowUnentitledResumePoints": false, - "allowWatchHistory": true - } - ] - } - } - } + "openrpc": "1.2.4", + "info": { + "title": "Privacy", + "description": "A module for managing device settings.", + "version": "0.0.0" + }, + "methods": [ + { + "name": "allowResumePoints", + "tags": [ + { + "name": "property", + "x-allow-value": true + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:privacy:settings" + ] + } + ], + "summary": "Whether the user allows resume points for content to show in the main experience", + "params": [], + "result": { + "name": "allow", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "allow", + "value": true + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "allow", + "value": false + } + } + ] + }, + { + "name": "allowUnentitledResumePoints", + "tags": [ + { + "name": "property", + "x-allow-value": true + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:privacy:settings" + ] + } + ], + "summary": "Whether the user allows resume points for content from unentitled providers to show in the main experience", + "params": [], + "result": { + "name": "allow", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "allow", + "value": true + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "allow", + "value": false + } + } + ] + }, + { + "name": "allowWatchHistory", + "tags": [ + { + "name": "property", + "x-allow-value": true + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:privacy:settings" + ] + } + ], + "summary": "Whether the user allows their watch history from all sources to show in the main experience", + "params": [], + "result": { + "name": "allow", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "allow", + "value": true + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "allow", + "value": false + } + } + ] + }, + { + "name": "allowProductAnalytics", + "tags": [ + { + "name": "property", + "x-allow-value": true + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:privacy:settings" + ] + } + ], + "summary": "Whether the user allows their usage data can be used for analytics about the product", + "params": [], + "result": { + "name": "allow", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "allow", + "value": true + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "allow", + "value": false + } + } + ] + }, + { + "name": "allowPersonalization", + "tags": [ + { + "name": "property", + "x-allow-value": true + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:privacy:settings" + ] + } + ], + "summary": "Whether the user allows their usage data to be used for personalization and recommendations", + "params": [], + "result": { + "name": "allow", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "allow", + "value": true + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "allow", + "value": false + } + } + ] + }, + { + "name": "allowUnentitledPersonalization", + "tags": [ + { + "name": "property", + "x-allow-value": true + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:privacy:settings" + ] + } + ], + "summary": "Whether the user allows their usage data to be used for personalization and recommendations for unentitled content", + "params": [], + "result": { + "name": "allow", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "allow", + "value": true + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "allow", + "value": false + } + } + ] + }, + { + "name": "allowRemoteDiagnostics", + "tags": [ + { + "name": "property", + "x-allow-value": true + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:privacy:settings" + ] + } + ], + "summary": "Whether the user allows their personal data to be included in diagnostic telemetry. This also allows whether device logs can be remotely accessed from the client device", + "params": [], + "result": { + "name": "allow", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "allow", + "value": true + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "allow", + "value": false + } + } + ] + }, + { + "name": "allowPrimaryContentAdTargeting", + "tags": [ + { + "name": "property", + "x-allow-value": true + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:privacy:settings" + ] + } + ], + "summary": "Whether the user allows ads to be targeted to the user while watching content in the primary experience", + "params": [], + "result": { + "name": "allow", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "allow", + "value": true + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "allow", + "value": false + } + } + ] + }, + { + "name": "allowPrimaryBrowseAdTargeting", + "tags": [ + { + "name": "property", + "x-allow-value": true + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:privacy:settings" + ] + } + ], + "summary": "Whether the user allows ads to be targeted to the user while browsing in the primary experience", + "params": [], + "result": { + "name": "allow", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "allow", + "value": true + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "allow", + "value": false + } + } + ] + }, + { + "name": "allowAppContentAdTargeting", + "tags": [ + { + "name": "property", + "x-allow-value": true + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:privacy:settings" + ] + } + ], + "summary": "Whether the user allows ads to be targeted to the user while watching content in apps", + "params": [], + "result": { + "name": "allow", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "allow", + "value": true + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "allow", + "value": false + } + } + ] + }, + { + "name": "allowACRCollection", + "tags": [ + { + "name": "property", + "x-allow-value": true + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:privacy:settings" + ] + } + ], + "summary": "Whether the user allows their automatic content recognition data to be collected", + "params": [], + "result": { + "name": "allow", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "allow", + "value": true + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "allow", + "value": false + } + } + ] + }, + { + "name": "allowCameraAnalytics", + "tags": [ + { + "name": "property", + "x-allow-value": true + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:privacy:settings" + ] + } + ], + "summary": "Whether the user allows data from their camera to be used for Product Analytics", + "params": [], + "result": { + "name": "allow", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "allow", + "value": true + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "allow", + "value": false + } + } + ] + }, + { + "name": "settings", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:privacy:settings" + ] + } + ], + "summary": "Gets the allowed value for all privacy settings", + "params": [], + "result": { + "name": "settings", + "schema": { + "$ref": "#/components/schemas/PrivacySettings" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "settings", + "value": { + "allowACRCollection": true, + "allowResumePoints": false, + "allowAppContentAdTargeting": false, + "allowCameraAnalytics": true, + "allowPersonalization": true, + "allowPrimaryBrowseAdTargeting": false, + "allowPrimaryContentAdTargeting": false, + "allowProductAnalytics": true, + "allowRemoteDiagnostics": true, + "allowUnentitledPersonalization": true, + "allowUnentitledResumePoints": false, + "allowWatchHistory": true + } + } + } + ] + } + ], + "components": { + "schemas": { + "PrivacySettings": { + "title": "PrivacySettings", + "type": "object", + "required": [ + "allowACRCollection", + "allowResumePoints", + "allowAppContentAdTargeting", + "allowCameraAnalytics", + "allowPersonalization", + "allowPrimaryBrowseAdTargeting", + "allowPrimaryContentAdTargeting", + "allowProductAnalytics", + "allowRemoteDiagnostics", + "allowUnentitledPersonalization", + "allowUnentitledResumePoints", + "allowWatchHistory" + ], + "properties": { + "allowACRCollection": { + "description": "", + "type": "boolean" + }, + "allowResumePoints": { + "description": "", + "type": "boolean" + }, + "allowAppContentAdTargeting": { + "description": "", + "type": "boolean" + }, + "allowCameraAnalytics": { + "description": "", + "type": "boolean" + }, + "allowPersonalization": { + "description": "", + "type": "boolean" + }, + "allowPrimaryBrowseAdTargeting": { + "description": "", + "type": "boolean" + }, + "allowPrimaryContentAdTargeting": { + "description": "", + "type": "boolean" + }, + "allowProductAnalytics": { + "description": "", + "type": "boolean" + }, + "allowRemoteDiagnostics": { + "description": "", + "type": "boolean" + }, + "allowUnentitledPersonalization": { + "description": "", + "type": "boolean" + }, + "allowUnentitledResumePoints": { + "description": "", + "type": "boolean" + }, + "allowWatchHistory": { + "description": "", + "type": "boolean" + } + }, + "examples": [ + { + "allowACRCollection": true, + "allowResumePoints": false, + "allowAppContentAdTargeting": false, + "allowCameraAnalytics": true, + "allowPersonalization": true, + "allowPrimaryBrowseAdTargeting": false, + "allowPrimaryContentAdTargeting": false, + "allowProductAnalytics": true, + "allowRemoteDiagnostics": true, + "allowUnentitledPersonalization": true, + "allowUnentitledResumePoints": false, + "allowWatchHistory": true + } + ] + } + } + } } \ No newline at end of file diff --git a/src/openrpc/profile.json b/src/openrpc/profile.json index 15019931e..428904495 100644 --- a/src/openrpc/profile.json +++ b/src/openrpc/profile.json @@ -1,102 +1,102 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Profile", - "description": "Methods for getting information about the current user/account profile", - "version": "0.0.0" - }, - "methods": [ - { - "name": "approveContentRating", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:approve:content" - ] - } - ], - "summary": "Verifies that the current profile should have access to mature/adult content.", - "params": [], - "result": { - "name": "allow", - "summary": "Whether or not to allow access", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "allow", - "value": false - } - } - ] - }, - { - "name": "approvePurchase", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:approve:purchase" - ] - } - ], - "summary": "Verifies that the current profile should have access to making purchases.", - "params": [], - "result": { - "name": "allow", - "summary": "Whether or not to allow access", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "allow", - "value": false - } - } - ] - }, - { - "name": "flags", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:profile:flags" - ] - } - ], - "summary": "Get a map of profile flags for the current session.", - "params": [], - "result": { - "name": "flags", - "summary": "The profile flags.", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/FlatMap" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "flags", - "value": { - "userExperience": "1000" - } - } - } - ] - } - ] + "openrpc": "1.2.4", + "info": { + "title": "Profile", + "description": "Methods for getting information about the current user/account profile", + "version": "0.0.0" + }, + "methods": [ + { + "name": "approveContentRating", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:approve:content" + ] + } + ], + "summary": "Verifies that the current profile should have access to mature/adult content.", + "params": [], + "result": { + "name": "allow", + "summary": "Whether or not to allow access", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "allow", + "value": false + } + } + ] + }, + { + "name": "approvePurchase", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:approve:purchase" + ] + } + ], + "summary": "Verifies that the current profile should have access to making purchases.", + "params": [], + "result": { + "name": "allow", + "summary": "Whether or not to allow access", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "allow", + "value": false + } + } + ] + }, + { + "name": "flags", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:profile:flags" + ] + } + ], + "summary": "Get a map of profile flags for the current session.", + "params": [], + "result": { + "name": "flags", + "summary": "The profile flags.", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/FlatMap" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "flags", + "value": { + "userExperience": "1000" + } + } + } + ] + } + ] } \ No newline at end of file diff --git a/src/openrpc/second_screen.json b/src/openrpc/second_screen.json index af25e2c9d..186a3e210 100644 --- a/src/openrpc/second_screen.json +++ b/src/openrpc/second_screen.json @@ -1,186 +1,192 @@ { - "openrpc": "1.2.4", - "info": { - "title": "SecondScreen", - "version": "0.0.0", - "description": "Methods for communicating with second screen devices" - }, - "methods": [ - { - "name": "protocols", - "summary": "Get the supported second screen discovery protocols", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:device:info" - ] - } - ], - "params": [], - "result": { - "name": "protocols", - "summary": "the supported protocols", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/BooleanMap" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": { - "dial1.7": true - } - } - } - ] - }, - { - "name": "device", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:protocol:dial" - ] - } - ], - "summary": "Get the broadcasted id for the device", - "params": [ - { - "name": "type", - "summary": "The type of second screen protocol, e.g. \"dial\"", - "required": false, - "schema": { - "type": "string" - } - } - ], - "result": { - "name": "deviceId", - "summary": "the device id", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": "device-id" - } - } - ] - }, - { - "name": "friendlyName", - "summary": "Get the broadcasted friendly name for the device", - "params": [], - "tags": [ - { - "name": "property:readonly" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:protocol:dial" - ] - } - ], - "result": { - "name": "friendlyName", - "summary": "the device friendly-name", - "schema": { - "type": "string" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "friendlyName", - "value": "Living Room" - } - } - ] - }, - { - "name": "onLaunchRequest", - "tags": [ - { - "name": "event" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:protocol:dial" - ] - } - ], - "summary": "Listen to the launchRequest event", - "params": [], - "result": { - "name": "launchRequestEvent", - "summary": "Dispatched when a second screen device on the local network has requested this app to be launched", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/secondscreen#/definitions/SecondScreenEvent" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": { - "type": "dial", - "version": "1.7", - "data": "{\"code\":\"AQDPQZiQcb3KQ7gY7yy5tHTMbbkGHR9Zjp-KL53H3eKBZIeAt7O9UKYPu6B21l2UZVmIqkFXDXBmXvK4g2e3EgZtjMNmKPsTltgnRl95DImtOXjSpWtTjSaOkW4w1kZKUTwLKdwVWTzBVH8ERHorvLU6vCGOVHxXt65LNwdl5HKRweShVC1V9QsyvRnQS61ov0UclmrH_xZML2Bt-Q-rZFjey5MjwupIb4x4f53XUJMhjHpDHoIUKrjpdPDQvK2a\",\"friendlyName\":\"Operator_TX061AEI\",\"UDN\":\"608fef11-2800-482a-962b-23a6690c93c1\"}" - } - } - } - ] - }, - { - "name": "onCloseRequest", - "tags": [ - { - "name": "event" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:protocol:dial" - ] - } - ], - "summary": "Listen to the closeRequest event", - "params": [], - "result": { - "name": "closeRequestEvent", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/secondscreen#/definitions/SecondScreenEvent" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "Default Result", - "value": { - "type": "dial", - "version": "1.7" - } - } - } - ] - } - ] + "openrpc": "1.2.4", + "info": { + "title": "SecondScreen", + "version": "0.0.0", + "description": "Methods for communicating with second screen devices" + }, + "methods": [ + { + "name": "protocols", + "summary": "Get the supported second screen discovery protocols", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:device:info" + ] + } + ], + "params": [], + "result": { + "name": "protocols", + "summary": "the supported protocols", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/BooleanMap" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "Default Result", + "value": { + "dial1.7": true + } + } + } + ] + }, + { + "name": "device", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:protocol:dial" + ] + } + ], + "summary": "Get the broadcasted id for the device", + "params": [ + { + "name": "type", + "summary": "The type of second screen protocol, e.g. \"dial\"", + "required": false, + "schema": { + "type": "string" + } + } + ], + "result": { + "name": "deviceId", + "summary": "the device id", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "Default Result", + "value": "device-id" + } + } + ] + }, + { + "name": "friendlyName", + "summary": "Get the broadcasted friendly name for the device", + "params": [], + "tags": [ + { + "name": "property:readonly" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:protocol:dial" + ] + } + ], + "result": { + "name": "friendlyName", + "summary": "the device friendly-name", + "schema": { + "type": "string" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "friendlyName", + "value": "Living Room" + } + } + ] + }, + { + "name": "launchRequest", + "tags": [ + { + "name": "notifier", + "x-event": "SecondScreen.onLaunchRequest" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:protocol:dial" + ] + } + ], + "summary": "Listen to the launchRequest event", + "params": [ + { + "name": "launchRequestEvent", + "summary": "Dispatched when a second screen device on the local network has requested this app to be launched", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/secondscreen#/definitions/SecondScreenEvent" + } + } + ], + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "Default Result", + "value": { + "type": "dial", + "version": "1.7", + "data": "{\"code\":\"AQDPQZiQcb3KQ7gY7yy5tHTMbbkGHR9Zjp-KL53H3eKBZIeAt7O9UKYPu6B21l2UZVmIqkFXDXBmXvK4g2e3EgZtjMNmKPsTltgnRl95DImtOXjSpWtTjSaOkW4w1kZKUTwLKdwVWTzBVH8ERHorvLU6vCGOVHxXt65LNwdl5HKRweShVC1V9QsyvRnQS61ov0UclmrH_xZML2Bt-Q-rZFjey5MjwupIb4x4f53XUJMhjHpDHoIUKrjpdPDQvK2a\",\"friendlyName\":\"Operator_TX061AEI\",\"UDN\":\"608fef11-2800-482a-962b-23a6690c93c1\"}" + } + } + ] + } + ] + }, + { + "name": "closeRequest", + "tags": [ + { + "name": "notifier", + "x-event": "SecondScreen.onCloseRequest" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:protocol:dial" + ] + } + ], + "summary": "Listen to the closeRequest event", + "params": [ + { + "name": "closeRequestEvent", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/secondscreen#/definitions/SecondScreenEvent" + } + } + ], + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "Default Result", + "value": { + "type": "dial", + "version": "1.7" + } + } + ] + } + ] + } + ] } \ No newline at end of file diff --git a/src/openrpc/secure_storage.json b/src/openrpc/secure_storage.json index 1d65c1d4b..ae79d07da 100644 --- a/src/openrpc/secure_storage.json +++ b/src/openrpc/secure_storage.json @@ -1,571 +1,577 @@ { - "openrpc": "1.2.4", - "info": { - "title": "SecureStorage", - "version": "0.0.0", - "description": "A module for storing and retrieving secure data owned by the app" - }, - "methods": [ - { - "name": "get", - "summary": "Get stored value by key", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:storage:secure" - ] - } - ], - "params": [ - { - "name": "scope", - "summary": "The scope of the key/value", - "schema": { - "$ref": "#/components/schemas/StorageScope" - }, - "required": true - }, - { - "name": "key", - "summary": "Key to get", - "schema": { - "type": "string" - }, - "required": true - } - ], - "result": { - "name": "value", - "summary": "The retrieved value, if found.", - "schema": { - "oneOf": [ - {"type": "string"}, - {"type": "null"} - ] - } - }, - "examples": [ - { - "name": "Successfully retrieve a refresh token with key authRefreshToken", - "params": [ - { - "name": "scope", - "value": "device" - }, - { - "name": "key", - "value": "authRefreshToken" - } - ], - "result": { - "name": "value", - "value": "VGhpcyBub3QgYSByZWFsIHRva2VuLgo=" - } - }, - { - "name": "Attempt to retrieve a key with no value set", - "params": [ - { - "name": "scope", - "value": "account" - }, - { - "name": "key", - "value": "authRefreshToken" - } - ], - "result": { - "name": "value", - "value": null - } - } - ] - }, - { - "name": "set", - "summary": "Set or update a secure data value", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:storage:secure" - ] - } - ], - "params": [ - { - "name": "scope", - "summary": "The scope of the data key", - "schema": { - "$ref": "#/components/schemas/StorageScope" - }, - "required": true - }, - { - "name": "key", - "summary": "Key to set", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "value", - "summary": "Value to set", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "options", - "summary": "Optional parameters to set", - "schema": { - "$ref": "#/components/schemas/StorageOptions" - }, - "required": false - } - ], - "result": { - "name": "success", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Set a refresh token with name authRefreshToken with optional paramter", - "params": [ - { - "name": "scope", - "value": "device" - }, - { - "name": "key", - "value": "authRefreshToken" - }, - { - "name": "value", - "value": "VGhpcyBub3QgYSByZWFsIHRva2VuLgo=" - }, - { - "name": "options", - "value": { - "ttl": 600 - } - } - ], - "result": { - "name": "defaultResult", - "value": null - } - }, - { - "name": "Set a refresh token with name authRefreshToken without optional parameter", - "params": [ - { - "name": "scope", - "value": "account" - }, - { - "name": "key", - "value": "authRefreshToken" - }, - { - "name": "value", - "value": "VGhpcyBub3QgYSByZWFsIHRva2VuLgo=" - } - ], - "result": { - "name": "defaultResult", - "value": null - } - } - ] - }, - { - "name": "remove", - "summary": "Remove a secure data value", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:storage:secure" - ] - } - ], - "params": [ - { - "name": "scope", - "summary": "The scope of the data key", - "schema": { - "$ref": "#/components/schemas/StorageScope" - }, - "required": true - }, - { - "name": "key", - "summary": "Key to remove", - "schema": { - "type": "string" - }, - "required": true - } - ], - "result": { - "name": "success", - "summary": "", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Remove the value with key authRefreshToken for device", - "params": [ - { - "name": "scope", - "value": "device" - }, - { - "name": "key", - "value": "authRefreshToken" - } - ], - "result": { - "name": "defaultResult", - "value": null - } - }, - { - "name": "Remove the value with key authRefreshToken for account", - "params": [ - { - "name": "scope", - "value": "account" - }, - { - "name": "key", - "value": "authRefreshToken" - } - ], - "result": { - "name": "defaultResult", - "value": null - } - } - ] - }, - { - "name": "setForApp", - "summary": "Set or update a secure data value for a specific app.", - "tags": [ - { - "name": "capabilities", - "x-manages": [ - "xrn:firebolt:capability:storage:secure" - ] - } - ], - "params": [ - { - "name": "appId", - "summary": "appId for which value is being set", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "scope", - "summary": "The scope of the data key", - "schema": { - "$ref": "#/components/schemas/StorageScope" - }, - "required": true - }, - { - "name": "key", - "summary": "Key to set", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "value", - "summary": "Value to set", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "options", - "summary": "Optional parameters to set", - "schema": { - "$ref": "#/components/schemas/StorageOptions" - }, - "required": false - } - ], - "result": { - "name": "success", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Set a refresh token with name authRefreshToken with optional parameter for appId foo", - "params": [ - { - "name": "appId", - "value": "foo" - }, - { - "name": "scope", - "value": "device" - }, - { - "name": "key", - "value": "authRefreshToken" - }, - { - "name": "value", - "value": "VGhpcyBub3QgYSByZWFsIHRva2VuLgo=" - }, - { - "name": "options", - "value": { - "ttl": 600 - } - } - ], - "result": { - "name": "defaultResult", - "value": null - } - }, - { - "name": "Set a refresh token with name authRefreshToken without optional parameter for appId foo", - "params": [ - { - "name": "appId", - "value": "foo" - }, - { - "name": "scope", - "value": "account" - }, - { - "name": "key", - "value": "authRefreshToken" - }, - { - "name": "value", - "value": "VGhpcyBub3QgYSByZWFsIHRva2VuLgo=" - } - ], - "result": { - "name": "defaultResult", - "value": null - } - } - ] - }, - { - "name": "removeForApp", - "summary": "Removes single data value for a specific app.", - "tags": [ - { - "name": "capabilities", - "x-manages": [ - "xrn:firebolt:capability:storage:secure" - ] - } - ], - "params": [ - { - "name": "appId", - "summary": "appId for which values are removed", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "scope", - "summary": "The scope of the key/value", - "schema": { - "$ref": "#/components/schemas/StorageScope" - }, - "required": true - }, - { - "name": "key", - "summary": "Key to remove", - "schema": { - "type": "string" - }, - "required": true - } - ], - "result": { - "name": "success", - "summary": "", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Removes authRefreshToken for appId foo", - "params": [ - { - "name": "appId", - "value": "foo" - }, - { - "name": "scope", - "value": "account" - }, - { - "name": "key", - "value": "authRefreshToken" - } - ], - "result": { - "name": "defaultResult", - "value": null - } - } - ] - }, - { - "name": "clearForApp", - "summary": "Clears all the secure data values for a specific app", - "tags": [ - { - "name": "capabilities", - "x-manages": [ - "xrn:firebolt:capability:storage:secure" - ] - } - ], - "params": [ - { - "name": "appId", - "summary": "appId for which values are removed", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "scope", - "summary": "The scope of the key/value", - "schema": { - "$ref": "#/components/schemas/StorageScope" - }, - "required": true - } - ], - "result": { - "name": "success", - "summary": "", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Clears all the secure data values for appId foo", - "params": [ - { - "name": "appId", - "value": "foo" - }, - { - "name": "scope", - "value": "account" - } - ], - "result": { - "name": "defaultResult", - "value": null - } - } - ] - }, - { - "name": "clear", - "summary": "Clears all the secure data values", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:storage:secure" - ] - } - ], - "params": [ - { - "name": "scope", - "summary": "The scope of the key/value", - "schema": { - "$ref": "#/components/schemas/StorageScope" - }, - "required": true - } - ], - "result": { - "name": "success", - "summary": "", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Clears all the data values of storage", - "params": [ - { - "name": "scope", - "value": "account" - } - ], - "result": { - "name": "defaultResult", - "value": null - } - } - ] - } - ], - "components": { - "schemas": { - "StorageScope": { - "title": "StorageScope", - "type": "string", - "enum": [ - "device", - "account" - ], - "description": "The scope of the data" - }, - "StorageOptions": { - "title": "StorageOptions", - "type": "object", - "required": ["ttl"], - "properties": { - "ttl": { - "type": "number", - "description": "Seconds from set time before the data expires and is removed" - } - } - } - } - } + "openrpc": "1.2.4", + "info": { + "title": "SecureStorage", + "version": "0.0.0", + "description": "A module for storing and retrieving secure data owned by the app" + }, + "methods": [ + { + "name": "get", + "summary": "Get stored value by key", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:storage:secure" + ] + } + ], + "params": [ + { + "name": "scope", + "summary": "The scope of the key/value", + "schema": { + "$ref": "#/components/schemas/StorageScope" + }, + "required": true + }, + { + "name": "key", + "summary": "Key to get", + "schema": { + "type": "string" + }, + "required": true + } + ], + "result": { + "name": "value", + "summary": "The retrieved value, if found.", + "schema": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "examples": [ + { + "name": "Successfully retrieve a refresh token with key authRefreshToken", + "params": [ + { + "name": "scope", + "value": "device" + }, + { + "name": "key", + "value": "authRefreshToken" + } + ], + "result": { + "name": "value", + "value": "VGhpcyBub3QgYSByZWFsIHRva2VuLgo=" + } + }, + { + "name": "Attempt to retrieve a key with no value set", + "params": [ + { + "name": "scope", + "value": "account" + }, + { + "name": "key", + "value": "authRefreshToken" + } + ], + "result": { + "name": "value", + "value": null + } + } + ] + }, + { + "name": "set", + "summary": "Set or update a secure data value", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:storage:secure" + ] + } + ], + "params": [ + { + "name": "scope", + "summary": "The scope of the data key", + "schema": { + "$ref": "#/components/schemas/StorageScope" + }, + "required": true + }, + { + "name": "key", + "summary": "Key to set", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "value", + "summary": "Value to set", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "options", + "summary": "Optional parameters to set", + "schema": { + "$ref": "#/components/schemas/StorageOptions" + }, + "required": false + } + ], + "result": { + "name": "success", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Set a refresh token with name authRefreshToken with optional paramter", + "params": [ + { + "name": "scope", + "value": "device" + }, + { + "name": "key", + "value": "authRefreshToken" + }, + { + "name": "value", + "value": "VGhpcyBub3QgYSByZWFsIHRva2VuLgo=" + }, + { + "name": "options", + "value": { + "ttl": 600 + } + } + ], + "result": { + "name": "defaultResult", + "value": null + } + }, + { + "name": "Set a refresh token with name authRefreshToken without optional parameter", + "params": [ + { + "name": "scope", + "value": "account" + }, + { + "name": "key", + "value": "authRefreshToken" + }, + { + "name": "value", + "value": "VGhpcyBub3QgYSByZWFsIHRva2VuLgo=" + } + ], + "result": { + "name": "defaultResult", + "value": null + } + } + ] + }, + { + "name": "remove", + "summary": "Remove a secure data value", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:storage:secure" + ] + } + ], + "params": [ + { + "name": "scope", + "summary": "The scope of the data key", + "schema": { + "$ref": "#/components/schemas/StorageScope" + }, + "required": true + }, + { + "name": "key", + "summary": "Key to remove", + "schema": { + "type": "string" + }, + "required": true + } + ], + "result": { + "name": "success", + "summary": "", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Remove the value with key authRefreshToken for device", + "params": [ + { + "name": "scope", + "value": "device" + }, + { + "name": "key", + "value": "authRefreshToken" + } + ], + "result": { + "name": "defaultResult", + "value": null + } + }, + { + "name": "Remove the value with key authRefreshToken for account", + "params": [ + { + "name": "scope", + "value": "account" + }, + { + "name": "key", + "value": "authRefreshToken" + } + ], + "result": { + "name": "defaultResult", + "value": null + } + } + ] + }, + { + "name": "setForApp", + "summary": "Set or update a secure data value for a specific app.", + "tags": [ + { + "name": "capabilities", + "x-manages": [ + "xrn:firebolt:capability:storage:secure" + ] + } + ], + "params": [ + { + "name": "appId", + "summary": "appId for which value is being set", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "scope", + "summary": "The scope of the data key", + "schema": { + "$ref": "#/components/schemas/StorageScope" + }, + "required": true + }, + { + "name": "key", + "summary": "Key to set", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "value", + "summary": "Value to set", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "options", + "summary": "Optional parameters to set", + "schema": { + "$ref": "#/components/schemas/StorageOptions" + }, + "required": false + } + ], + "result": { + "name": "success", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Set a refresh token with name authRefreshToken with optional parameter for appId foo", + "params": [ + { + "name": "appId", + "value": "foo" + }, + { + "name": "scope", + "value": "device" + }, + { + "name": "key", + "value": "authRefreshToken" + }, + { + "name": "value", + "value": "VGhpcyBub3QgYSByZWFsIHRva2VuLgo=" + }, + { + "name": "options", + "value": { + "ttl": 600 + } + } + ], + "result": { + "name": "defaultResult", + "value": null + } + }, + { + "name": "Set a refresh token with name authRefreshToken without optional parameter for appId foo", + "params": [ + { + "name": "appId", + "value": "foo" + }, + { + "name": "scope", + "value": "account" + }, + { + "name": "key", + "value": "authRefreshToken" + }, + { + "name": "value", + "value": "VGhpcyBub3QgYSByZWFsIHRva2VuLgo=" + } + ], + "result": { + "name": "defaultResult", + "value": null + } + } + ] + }, + { + "name": "removeForApp", + "summary": "Removes single data value for a specific app.", + "tags": [ + { + "name": "capabilities", + "x-manages": [ + "xrn:firebolt:capability:storage:secure" + ] + } + ], + "params": [ + { + "name": "appId", + "summary": "appId for which values are removed", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "scope", + "summary": "The scope of the key/value", + "schema": { + "$ref": "#/components/schemas/StorageScope" + }, + "required": true + }, + { + "name": "key", + "summary": "Key to remove", + "schema": { + "type": "string" + }, + "required": true + } + ], + "result": { + "name": "success", + "summary": "", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Removes authRefreshToken for appId foo", + "params": [ + { + "name": "appId", + "value": "foo" + }, + { + "name": "scope", + "value": "account" + }, + { + "name": "key", + "value": "authRefreshToken" + } + ], + "result": { + "name": "defaultResult", + "value": null + } + } + ] + }, + { + "name": "clearForApp", + "summary": "Clears all the secure data values for a specific app", + "tags": [ + { + "name": "capabilities", + "x-manages": [ + "xrn:firebolt:capability:storage:secure" + ] + } + ], + "params": [ + { + "name": "appId", + "summary": "appId for which values are removed", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "scope", + "summary": "The scope of the key/value", + "schema": { + "$ref": "#/components/schemas/StorageScope" + }, + "required": true + } + ], + "result": { + "name": "success", + "summary": "", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Clears all the secure data values for appId foo", + "params": [ + { + "name": "appId", + "value": "foo" + }, + { + "name": "scope", + "value": "account" + } + ], + "result": { + "name": "defaultResult", + "value": null + } + } + ] + }, + { + "name": "clear", + "summary": "Clears all the secure data values", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:storage:secure" + ] + } + ], + "params": [ + { + "name": "scope", + "summary": "The scope of the key/value", + "schema": { + "$ref": "#/components/schemas/StorageScope" + }, + "required": true + } + ], + "result": { + "name": "success", + "summary": "", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Clears all the data values of storage", + "params": [ + { + "name": "scope", + "value": "account" + } + ], + "result": { + "name": "defaultResult", + "value": null + } + } + ] + } + ], + "components": { + "schemas": { + "StorageScope": { + "title": "StorageScope", + "type": "string", + "enum": [ + "device", + "account" + ], + "description": "The scope of the data" + }, + "StorageOptions": { + "title": "StorageOptions", + "type": "object", + "required": [ + "ttl" + ], + "properties": { + "ttl": { + "type": "number", + "description": "Seconds from set time before the data expires and is removed" + } + } + } + } + } } \ No newline at end of file diff --git a/src/openrpc/sleepable.json b/src/openrpc/sleepable.json new file mode 100644 index 000000000..40db30dc4 --- /dev/null +++ b/src/openrpc/sleepable.json @@ -0,0 +1,64 @@ +{ + "openrpc": "1.2.4", + "info": { + "title": "Sleepable", + "description": "Methods and events for responding to lifecycle changes in your app", + "version": "0.0.0" + }, + "methods": [ + { + "name": "sleep", + "tags": [ + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:lifecycle:sleepable" + } + ], + "summary": "Called when the platform is ready to create the lifecycle session for the app. Only called only once, during the `INITIALIZING` state.", + "params": [], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "App creation.", + "params": [], + "result": { + "name": "result", + "value": null + } + } + ] + }, + { + "name": "wake", + "tags": [ + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:lifecycle:sleepable" + } + ], + "summary": "Called when the platform wants the app to reallocate its graphics surface and prepare to be potentially used.", + "params": [], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "App resuming.", + "params": [], + "result": { + "name": "result", + "value": null + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/openrpc/user_grants.json b/src/openrpc/user_grants.json index 789fe4461..c92c42046 100644 --- a/src/openrpc/user_grants.json +++ b/src/openrpc/user_grants.json @@ -1,534 +1,534 @@ { - "openrpc": "1.2.4", - "info": { - "title": "UserGrants", - "description": "A module for managing grants given by the user", - "version": "0.0.0" - }, - "methods": [ - { - "name": "app", - "summary": "Get all granted and denied user grants for the given app", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:grants:state" - ] - } - ], - "params": [ - { - "name": "appId", - "schema": { - "type": "string" - }, - "required": true - } - ], - "result": { - "name": "info", - "summary": "The list of grants for this app", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GrantInfo" - } - } - }, - "examples": [ - { - "name": "Default Example", - "params": [ - { - "name": "appId", - "value": "certapp" - } - ], - "result": { - "name": "defaultResult", - "value": [ - { - "app": { - "id": "certapp", - "title": "Firebolt Certification" - }, - "state": "granted", - "capability": "xrn:firebolt:capability:data:app-usage", - "role": "use", - "lifespan": "seconds", - "expires": "2022-12-14T20:20:39+00:00" - }, - { - "app": { - "id": "certapp", - "title": "Firebolt Certification" - }, - "state": "denied", - "capability": "xrn:firebolt:capability:localization:postal-code", - "role": "use", - "lifespan": "appActive" - } - ] - } - } - ] - }, - { - "name": "device", - "summary": "Get all granted and denied user grants for the device", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:grants:state" - ] - } - ], - "params": [], - "result": { - "name": "info", - "summary": "The list of grants for the device", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GrantInfo" - } - } - }, - "examples": [ - { - "name": "Default Example", - "params": [], - "result": { - "name": "defaultResult", - "value": [ - { - "state": "granted", - "capability": "xrn:firebolt:capability:localization:postal-code", - "role": "use", - "lifespan": "powerActive" - } - ] - } - } - ] - }, - { - "name": "capability", - "summary": "Get all granted and denied user grants for the given capability", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:grants:state" - ] - } - ], - "params": [ - { - "name": "capability", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Capability" - }, - "required": true - } - ], - "result": { - "name": "info", - "summary": "The list of grants associated with the given capability", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GrantInfo" - } - } - }, - "examples": [ - { - "name": "Default Example", - "params": [ - { - "name": "capability", - "value": "xrn:firebolt:capability:localization:postal-code" - } - ], - "result": { - "name": "defaultResult", - "value": [ - { - "state": "granted", - "capability": "xrn:firebolt:capability:localization:postal-code", - "role": "use", - "lifespan": "powerActive" - } - ] - } - } - ] - }, - { - "name": "grant", - "summary": "Grants a given capability to a specific app, if appropriate. Calling this results in a persisted active grant that lasts for the duration of the grant policy lifespan. ", - "tags": [ - { - "name": "capabilities", - "x-manages": [ - "xrn:firebolt:capability:grants:state" - ] - } - ], - "params": [ - { - "name": "role", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Role" - }, - "required": true - }, - { - "name": "capability", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Capability" - }, - "required": true - }, - { - "name": "options", - "schema": { - "$ref": "#/components/schemas/GrantModificationOptions" - } - } - ], - "result": { - "name": "result", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Default Example", - "params": [ - { - "name": "role", - "value": "use" - }, - { - "name": "capability", - "value": "xrn:firebolt:capability:localization:postal-code" - }, - { - "name": "options", - "value": { - "appId": "certapp" - } - } - ], - "result": { - "name": "defaultResult", - "value": null - } - } - ] - }, - { - "name": "deny", - "summary": "Denies a given capability, to a specific app if appropriate. Calling this results in a persisted Denied Grant that lasts for the duration of the Grant Policy lifespan. ", - "tags": [ - { - "name": "capabilities", - "x-manages": [ - "xrn:firebolt:capability:grants:state" - ] - } - ], - "params": [ - { - "name": "role", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Role" - }, - "required": true - }, - { - "name": "capability", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Capability" - }, - "required": true - }, - { - "name": "options", - "schema": { - "$ref": "#/components/schemas/GrantModificationOptions" - } - } - ], - "result": { - "name": "result", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Default Example", - "params": [ - { - "name": "role", - "value": "use" - }, - { - "name": "capability", - "value": "xrn:firebolt:capability:localization:postal-code" - }, - { - "name": "options", - "value": { - "appId": "certapp" - } - } - ], - "result": { - "name": "defaultResult", - "value": null - } - } - ] - }, - { - "name": "clear", - "summary": "Clears the grant for a given capability, to a specific app if appropriate. Calling this results in a persisted Denied Grant that lasts for the duration of the Grant Policy lifespan. ", - "tags": [ - { - "name": "capabilities", - "x-manages": [ - "xrn:firebolt:capability:grants:state" - ] - } - ], - "params": [ - { - "name": "role", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Role" - }, - "required": true - }, - { - "name": "capability", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Capability" - }, - "required": true - }, - { - "name": "options", - "schema": { - "$ref": "#/components/schemas/GrantModificationOptions" - } - } - ], - "result": { - "name": "result", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Default Example", - "params": [ - { - "name": "role", - "value": "use" - }, - { - "name": "capability", - "value": "xrn:firebolt:capability:localization:postal-code" - }, - { - "name": "options", - "value": { - "appId": "certapp" - } - } - ], - "result": { - "name": "defaultResult", - "value": null - } - } - ] - }, - { - "name": "request", - "summary": "Requests Firebolt to carry out a set of user grants for a given application such that the user grant provider is notified or an existing user grant is reused.", - "tags": [ - { - "name": "capabilities", - "x-manages": [ - "xrn:firebolt:capability:grants:state" - ] - } - ], - "params": [ - { - "name": "appId", - "schema": { - "type": "string" - }, - "required": true - }, - { - "name": "permissions", - "schema": { - "type": "array", - "items": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Permission" - }, - "minItems": 1 - }, - "required": true - } - ], - "result": { - "name": "info", - "summary": "The result of all grants requested by this", - "schema": { - "type": "array", - "items": { - "$ref": "#/components/schemas/GrantInfo" - } - } - }, - "examples": [ - { - "name": "Default result", - "params": [ - { - "name": "appId", - "value": "certapp" - }, - { - "name": "permissions", - "value": [ - { - "role": "use", - "capability": "xrn:firebolt:capability:localization:postal-code" - } - ] - } - ], - "result": { - "name": "defaultResult", - "value": [ - { - "app": { - "id": "certapp", - "title": "Certification App" - }, - "state": "granted", - "capability": "xrn:firebolt:capability:localization:postal-code", - "role": "use", - "lifespan": "powerActive" - } - ] - } - } - ] - } - ], - "components": { - "schemas": { - "GrantInfo": { - "description": "Information about a grant given by a user", - "type": "object", - "properties": { - "app": { - "$ref": "#/components/schemas/AppInfo" - }, - "state": { - "$ref": "#/components/schemas/GrantState" - }, - "capability": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Capability" - }, - "role": { - "$ref": "https://meta.comcast.com/firebolt/capabilities#/definitions/Role" - }, - "lifespan": { - "type": "string", - "enum": [ - "once", - "forever", - "appActive", - "powerActive", - "seconds" - ] - }, - "expires": { - "type": "string", - "format": "date-time" - } - }, - "additionalProperties": false, - "required": [ - "state", - "capability", - "role", - "lifespan" - ], - "examples": [ - { - "app": { - "id": "certapp", - "title": "Firebolt Certification" - }, - "state": "granted", - "capability": "xrn:firebolt:capability:data:app-usage", - "role": "use", - "lifespan": "seconds", - "expires": "2022-12-14T20:20:39+00:00" - } - ] - }, - "AppInfo": { - "description": "Information about an app that a grant was for", - "type": "object", - "properties": { - "id": { - "type": "string" - }, - "title": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [ - "id" - ] - }, - "GrantState": { - "description": "The state the grant is in", - "type": "string", - "enum": [ - "granted", - "denied" - ] - }, - "GrantModificationOptions": { - "description": "Options when modifying any grant", - "type": "object", - "properties": { - "appId": { - "type": "string" - } - }, - "additionalProperties": false, - "required": [] - } - } - } + "openrpc": "1.2.4", + "info": { + "title": "UserGrants", + "description": "A module for managing grants given by the user", + "version": "0.0.0" + }, + "methods": [ + { + "name": "app", + "summary": "Get all granted and denied user grants for the given app", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:grants:state" + ] + } + ], + "params": [ + { + "name": "appId", + "schema": { + "type": "string" + }, + "required": true + } + ], + "result": { + "name": "info", + "summary": "The list of grants for this app", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GrantInfo" + } + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "appId", + "value": "certapp" + } + ], + "result": { + "name": "defaultResult", + "value": [ + { + "app": { + "id": "certapp", + "title": "Firebolt Certification" + }, + "state": "granted", + "capability": "xrn:firebolt:capability:data:app-usage", + "role": "use", + "lifespan": "seconds", + "expires": "2022-12-14T20:20:39+00:00" + }, + { + "app": { + "id": "certapp", + "title": "Firebolt Certification" + }, + "state": "denied", + "capability": "xrn:firebolt:capability:localization:postal-code", + "role": "use", + "lifespan": "appActive" + } + ] + } + } + ] + }, + { + "name": "device", + "summary": "Get all granted and denied user grants for the device", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:grants:state" + ] + } + ], + "params": [], + "result": { + "name": "info", + "summary": "The list of grants for the device", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GrantInfo" + } + } + }, + "examples": [ + { + "name": "Default Example", + "params": [], + "result": { + "name": "defaultResult", + "value": [ + { + "state": "granted", + "capability": "xrn:firebolt:capability:localization:postal-code", + "role": "use", + "lifespan": "powerActive" + } + ] + } + } + ] + }, + { + "name": "capability", + "summary": "Get all granted and denied user grants for the given capability", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:grants:state" + ] + } + ], + "params": [ + { + "name": "capability", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Capability" + }, + "required": true + } + ], + "result": { + "name": "info", + "summary": "The list of grants associated with the given capability", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GrantInfo" + } + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "capability", + "value": "xrn:firebolt:capability:localization:postal-code" + } + ], + "result": { + "name": "defaultResult", + "value": [ + { + "state": "granted", + "capability": "xrn:firebolt:capability:localization:postal-code", + "role": "use", + "lifespan": "powerActive" + } + ] + } + } + ] + }, + { + "name": "grant", + "summary": "Grants a given capability to a specific app, if appropriate. Calling this results in a persisted active grant that lasts for the duration of the grant policy lifespan. ", + "tags": [ + { + "name": "capabilities", + "x-manages": [ + "xrn:firebolt:capability:grants:state" + ] + } + ], + "params": [ + { + "name": "role", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Role" + }, + "required": true + }, + { + "name": "capability", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Capability" + }, + "required": true + }, + { + "name": "options", + "schema": { + "$ref": "#/components/schemas/GrantModificationOptions" + } + } + ], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "role", + "value": "use" + }, + { + "name": "capability", + "value": "xrn:firebolt:capability:localization:postal-code" + }, + { + "name": "options", + "value": { + "appId": "certapp" + } + } + ], + "result": { + "name": "defaultResult", + "value": null + } + } + ] + }, + { + "name": "deny", + "summary": "Denies a given capability, to a specific app if appropriate. Calling this results in a persisted Denied Grant that lasts for the duration of the Grant Policy lifespan. ", + "tags": [ + { + "name": "capabilities", + "x-manages": [ + "xrn:firebolt:capability:grants:state" + ] + } + ], + "params": [ + { + "name": "role", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Role" + }, + "required": true + }, + { + "name": "capability", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Capability" + }, + "required": true + }, + { + "name": "options", + "schema": { + "$ref": "#/components/schemas/GrantModificationOptions" + } + } + ], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "role", + "value": "use" + }, + { + "name": "capability", + "value": "xrn:firebolt:capability:localization:postal-code" + }, + { + "name": "options", + "value": { + "appId": "certapp" + } + } + ], + "result": { + "name": "defaultResult", + "value": null + } + } + ] + }, + { + "name": "clear", + "summary": "Clears the grant for a given capability, to a specific app if appropriate. Calling this results in a persisted Denied Grant that lasts for the duration of the Grant Policy lifespan. ", + "tags": [ + { + "name": "capabilities", + "x-manages": [ + "xrn:firebolt:capability:grants:state" + ] + } + ], + "params": [ + { + "name": "role", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Role" + }, + "required": true + }, + { + "name": "capability", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Capability" + }, + "required": true + }, + { + "name": "options", + "schema": { + "$ref": "#/components/schemas/GrantModificationOptions" + } + } + ], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "role", + "value": "use" + }, + { + "name": "capability", + "value": "xrn:firebolt:capability:localization:postal-code" + }, + { + "name": "options", + "value": { + "appId": "certapp" + } + } + ], + "result": { + "name": "defaultResult", + "value": null + } + } + ] + }, + { + "name": "request", + "summary": "Requests Firebolt to carry out a set of user grants for a given application such that the user grant provider is notified or an existing user grant is reused.", + "tags": [ + { + "name": "capabilities", + "x-manages": [ + "xrn:firebolt:capability:grants:state" + ] + } + ], + "params": [ + { + "name": "appId", + "schema": { + "type": "string" + }, + "required": true + }, + { + "name": "permissions", + "schema": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Permission" + }, + "minItems": 1 + }, + "required": true + } + ], + "result": { + "name": "info", + "summary": "The result of all grants requested by this", + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/GrantInfo" + } + } + }, + "examples": [ + { + "name": "Default result", + "params": [ + { + "name": "appId", + "value": "certapp" + }, + { + "name": "permissions", + "value": [ + { + "role": "use", + "capability": "xrn:firebolt:capability:localization:postal-code" + } + ] + } + ], + "result": { + "name": "defaultResult", + "value": [ + { + "app": { + "id": "certapp", + "title": "Certification App" + }, + "state": "granted", + "capability": "xrn:firebolt:capability:localization:postal-code", + "role": "use", + "lifespan": "powerActive" + } + ] + } + } + ] + } + ], + "components": { + "schemas": { + "GrantInfo": { + "description": "Information about a grant given by a user", + "type": "object", + "properties": { + "app": { + "$ref": "#/components/schemas/AppInfo" + }, + "state": { + "$ref": "#/components/schemas/GrantState" + }, + "capability": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Capability" + }, + "role": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Role" + }, + "lifespan": { + "type": "string", + "enum": [ + "once", + "forever", + "appActive", + "powerActive", + "seconds" + ] + }, + "expires": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false, + "required": [ + "state", + "capability", + "role", + "lifespan" + ], + "examples": [ + { + "app": { + "id": "certapp", + "title": "Firebolt Certification" + }, + "state": "granted", + "capability": "xrn:firebolt:capability:data:app-usage", + "role": "use", + "lifespan": "seconds", + "expires": "2022-12-14T20:20:39+00:00" + } + ] + }, + "AppInfo": { + "description": "Information about an app that a grant was for", + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "title": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [ + "id" + ] + }, + "GrantState": { + "description": "The state the grant is in", + "type": "string", + "enum": [ + "granted", + "denied" + ] + }, + "GrantModificationOptions": { + "description": "Options when modifying any grant", + "type": "object", + "properties": { + "appId": { + "type": "string" + } + }, + "additionalProperties": false, + "required": [] + } + } + } } \ No newline at end of file diff --git a/src/openrpc/voice_guidance.json b/src/openrpc/voice_guidance.json index ead88fa48..5e18a009f 100644 --- a/src/openrpc/voice_guidance.json +++ b/src/openrpc/voice_guidance.json @@ -1,100 +1,93 @@ { - "openrpc": "1.2.4", - "info": { - "title": "VoiceGuidance", - "description": "A module for managing voice-guidance Settings.", - "version": "0.0.0" - }, - "methods": [ - { - "name": "enabled", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:voiceguidance" - ] - } - ], - "summary": "Whether or not voice-guidance is enabled.", - "params": [ - ], - "result": { - "name": "enabled", - "schema": { - "type": "boolean" - } - }, - "examples": [ - { - "name": "Default example #1", - "params": [ - ], - "result": { - "name": "enabled", - "value": true - } - }, - { - "name": "Default example #2", - "params": [ - ], - "result": { - "name": "enabled", - "value": false - } - } - ] - }, - { - "name": "speed", - "tags": [ - { - "name": "property" - }, - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:accessibility:voiceguidance" - ] - } - ], - "summary": "The speed at which voice guidance speech will be read back to the user.", - "params": [ - ], - "result": { - "name": "speed", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/VoiceSpeed" - } - }, - "examples": [ - { - "name": "Voice guidance speed to 1", - "params": [ - ], - "result": { - "name": "speed", - "value": 1 - } - }, - { - "name": "Voice guidance speed to 2", - "params": [ - ], - "result": { - "name": "speed", - "value": 2 - } - } - ] - } - ], - "components": { - "schemas": { - } - } + "openrpc": "1.2.4", + "info": { + "title": "VoiceGuidance", + "description": "A module for managing voice-guidance Settings.", + "version": "0.0.0" + }, + "methods": [ + { + "name": "enabled", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:voiceguidance" + ] + } + ], + "summary": "Whether or not voice-guidance is enabled.", + "params": [], + "result": { + "name": "enabled", + "schema": { + "type": "boolean" + } + }, + "examples": [ + { + "name": "Default example #1", + "params": [], + "result": { + "name": "enabled", + "value": true + } + }, + { + "name": "Default example #2", + "params": [], + "result": { + "name": "enabled", + "value": false + } + } + ] + }, + { + "name": "speed", + "tags": [ + { + "name": "property" + }, + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:accessibility:voiceguidance" + ] + } + ], + "summary": "The speed at which voice guidance speech will be read back to the user.", + "params": [], + "result": { + "name": "speed", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/VoiceSpeed" + } + }, + "examples": [ + { + "name": "Voice guidance speed to 1", + "params": [], + "result": { + "name": "speed", + "value": 1 + } + }, + { + "name": "Voice guidance speed to 2", + "params": [], + "result": { + "name": "speed", + "value": 2 + } + } + ] + } + ], + "components": { + "schemas": {} + } } \ No newline at end of file diff --git a/src/openrpc/wifi.json b/src/openrpc/wifi.json index 1661ed2e6..165ac2361 100644 --- a/src/openrpc/wifi.json +++ b/src/openrpc/wifi.json @@ -1,351 +1,355 @@ { - "openrpc": "1.2.4", - "info": { - "title": "Wifi", - "description": "A module for providing support for Wifi.", - "version": "0.0.0" - }, - "components": { - "schemas": { - "AccessPointList": { - "title": "AccessPointList", - "type": "object", - "description": "List of scanned Wifi networks available near the device.", - "properties": { - "list": { - "type": "array", - "items": { - "$ref": "#/components/schemas/AccessPoint" - } - } - } - }, - "WifiSecurityMode": { - "title": "WifiSecurityMode", - "description": "Security Mode supported for Wifi", - "type": "string", - "enum": [ - "none", - "wep64", - "wep128", - "wpaPskTkip", - "wpaPskAes", - "wpa2PskTkip", - "wpa2PskAes", - "wpaEnterpriseTkip", - "wpaEnterpriseAes", - "wpa2EnterpriseTkip", - "wpa2EnterpriseAes", - "wpa2Psk", - "wpa2Enterprise", - "wpa3PskAes", - "wpa3Sae" - ] - }, - "WifiSignalStrength": { - "title": "WifiSignalStrength", - "description": "Strength of Wifi signal, value is negative based on RSSI specification.", - "type": "integer", - "default": -255, - "minimum": -255, - "maximum": 0 - }, - "WifiFrequency": { - "title": "WifiFrequency", - "description": "Wifi Frequency in Ghz, example 2.4Ghz and 5Ghz.", - "type": "number", - "default": 0, - "minimum": 0 - }, - "AccessPoint": { - "title": "AccessPoint", - "description": "Properties of a scanned wifi list item.", - "type": "object", - "properties": { - "ssid": { - "type": "string", - "description": "Name of the wifi." - }, - "securityMode": { - "$ref": "#/components/schemas/WifiSecurityMode" - }, - "signalStrength": { - "$ref": "#/components/schemas/WifiSignalStrength" - }, - "frequency": { - "$ref": "#/components/schemas/WifiFrequency" - } - } - }, - "WPSSecurityPin": { - "title": "WPSSecurityPin", - "description": "Security pin type for WPS(Wifi Protected Setup).", - "type": "string", - "enum": ["pushButton", "pin", "manufacturerPin"] - }, - "WifiConnectRequest": { - "title": "WifiConnectRequest", - "description": "Request object for the wifi connection.", - "type": "object", - "properties": { - "ssid": { - "schema": { - "type": "string" - } - }, - "passphrase": { - "schema": { - "type": "string" - } - }, - "securityMode": { - "schema": { - "$ref": "#/components/schemas/WifiSecurityMode" - } - }, - "timeout": { - "schema": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/Timeout" - } - } - } - } - } - }, - "methods": [ - { - "name": "scan", - "summary": "Scan available wifi networks in the location.", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:protocol:wifi" - ] - } - ], - "params": [ - { - "name": "timeout", - "schema": { - "$ref": "https://meta.comcast.com/firebolt/types#/definitions/Timeout" - } - } - ], - "result": { - "name": "list", - "summary": "Contains a list of wifi networks available near the device.", - "schema": { - "$ref": "#/components/schemas/AccessPointList" - } - }, - "examples": [ - { - "name": "Successful Wifi List", - "params": [ - { - "name": "timeout", - "value": 30 - } - ], - "result": { - "name": "successfulWifiResultExample", - "value": { - "list": [ - { - "ssid": "DND", - "security": "wpa2Psk", - "signalStrength": -70, - "frequency": 2.4 - }, - { - "ssid": "Fortnite", - "security": "WPA2_ENTERPRISE_AES", - "signalStrength": -70, - "frequency": 5 - }, - { - "ssid": "Guardian", - "security": "none", - "signalStrength": -70, - "frequency": 2.4 - } - ] - } - } - } - ] - }, - { - "name": "connect", - "summary": "Connect the device to the specified SSID.", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:protocol:wifi" - ] - } - ], - "params": [ - { - "name": "ssid", - "schema": { - "type": "string" - }, - "description": "Name of Wifi SSID to connect for the device." - }, - { - "name": "passphrase", - "schema": { - "type": "string" - }, - "description": "Password or Passphrase for the wifi." - }, - { - "name": "security", - "schema": { - "$ref": "#/components/schemas/WifiSecurityMode" - } - } - ], - "result": { - "name": "connectedWifi", - "summary": "Successful Response after connecting to the Wifi.", - "schema": { - "$ref": "#/components/schemas/AccessPoint" - } - }, - "examples": [ - { - "name": "Connect to a wpa2Psk Wifi with password", - "params": [ - { - "name": "ssid", - "value": "DND" - }, - { - "name": "passphrase", - "value": "gargoyle" - }, - { - "name": "security", - "value": "wpa2Psk" - } - ], - "result": { - "name": "successfulWifiConnection", - "value": { - "ssid": "DND", - "security": "wpa2Psk", - "signalStrength": -70, - "frequency": 2.4 - } - } - }, - { - "name": "Connect to a WPA2 PSK Wifi with password", - "params": [ - { - "name": "ssid", - "value": "Guardian WIFI" - }, - { - "name": "passphrase", - "value": "" - }, - { - "name": "security", - "value": "none" - } - ], - "result": { - "name": "successfulWifiConnection", - "value": { - "ssid": "Guardian WIFI", - "security": "none", - "signalStrength": -70, - "frequency": 2.4 - } - } - } - ] - }, - { - "name": "disconnect", - "summary": "Disconnect the device if connected via WIFI.", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:protocol:wifi" - ] - } - ], - "params": [], - "result": { - "name": "result", - "schema": { - "const": null - } - }, - "examples": [ - { - "name": "Disconnect", - "params": [], - "result": { - "name": "defaultResult", - "value": null - } - } - ] - }, - { - "name": "wps", - "summary": "Connect to WPS", - "tags": [ - { - "name": "capabilities", - "x-uses": [ - "xrn:firebolt:capability:protocol:wifi" - ] - } - ], - "params": [ - { - "name": "security", - "schema": { - "$ref": "#/components/schemas/WPSSecurityPin" - } - } - ], - "result": { - "name": "connectedWifi", - "summary": "Successful Response after connecting to the Wifi.", - "schema": { - "$ref": "#/components/schemas/AccessPoint" - } - }, - "examples": [ - { - "name": "Connect to a WPS Wifi router", - "params": [ - { - "name": "security", - "value": "pushButton" - } - ], - "result": { - "name": "successfulWifiConnection", - "value": { - "ssid": "DND", - "security": "wpa2Psk", - "signalStrength": -70, - "frequency": 2.4 - } - } - } - ] - } - ] -} + "openrpc": "1.2.4", + "info": { + "title": "Wifi", + "description": "A module for providing support for Wifi.", + "version": "0.0.0" + }, + "components": { + "schemas": { + "AccessPointList": { + "title": "AccessPointList", + "type": "object", + "description": "List of scanned Wifi networks available near the device.", + "properties": { + "list": { + "type": "array", + "items": { + "$ref": "#/components/schemas/AccessPoint" + } + } + } + }, + "WifiSecurityMode": { + "title": "WifiSecurityMode", + "description": "Security Mode supported for Wifi", + "type": "string", + "enum": [ + "none", + "wep64", + "wep128", + "wpaPskTkip", + "wpaPskAes", + "wpa2PskTkip", + "wpa2PskAes", + "wpaEnterpriseTkip", + "wpaEnterpriseAes", + "wpa2EnterpriseTkip", + "wpa2EnterpriseAes", + "wpa2Psk", + "wpa2Enterprise", + "wpa3PskAes", + "wpa3Sae" + ] + }, + "WifiSignalStrength": { + "title": "WifiSignalStrength", + "description": "Strength of Wifi signal, value is negative based on RSSI specification.", + "type": "integer", + "default": -255, + "minimum": -255, + "maximum": 0 + }, + "WifiFrequency": { + "title": "WifiFrequency", + "description": "Wifi Frequency in Ghz, example 2.4Ghz and 5Ghz.", + "type": "number", + "default": 0, + "minimum": 0 + }, + "AccessPoint": { + "title": "AccessPoint", + "description": "Properties of a scanned wifi list item.", + "type": "object", + "properties": { + "ssid": { + "type": "string", + "description": "Name of the wifi." + }, + "securityMode": { + "$ref": "#/components/schemas/WifiSecurityMode" + }, + "signalStrength": { + "$ref": "#/components/schemas/WifiSignalStrength" + }, + "frequency": { + "$ref": "#/components/schemas/WifiFrequency" + } + } + }, + "WPSSecurityPin": { + "title": "WPSSecurityPin", + "description": "Security pin type for WPS(Wifi Protected Setup).", + "type": "string", + "enum": [ + "pushButton", + "pin", + "manufacturerPin" + ] + }, + "WifiConnectRequest": { + "title": "WifiConnectRequest", + "description": "Request object for the wifi connection.", + "type": "object", + "properties": { + "ssid": { + "schema": { + "type": "string" + } + }, + "passphrase": { + "schema": { + "type": "string" + } + }, + "securityMode": { + "schema": { + "$ref": "#/components/schemas/WifiSecurityMode" + } + }, + "timeout": { + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/Timeout" + } + } + } + } + } + }, + "methods": [ + { + "name": "scan", + "summary": "Scan available wifi networks in the location.", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:protocol:wifi" + ] + } + ], + "params": [ + { + "name": "timeout", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/Timeout" + } + } + ], + "result": { + "name": "list", + "summary": "Contains a list of wifi networks available near the device.", + "schema": { + "$ref": "#/components/schemas/AccessPointList" + } + }, + "examples": [ + { + "name": "Successful Wifi List", + "params": [ + { + "name": "timeout", + "value": 30 + } + ], + "result": { + "name": "successfulWifiResultExample", + "value": { + "list": [ + { + "ssid": "DND", + "security": "wpa2Psk", + "signalStrength": -70, + "frequency": 2.4 + }, + { + "ssid": "Fortnite", + "security": "WPA2_ENTERPRISE_AES", + "signalStrength": -70, + "frequency": 5 + }, + { + "ssid": "Guardian", + "security": "none", + "signalStrength": -70, + "frequency": 2.4 + } + ] + } + } + } + ] + }, + { + "name": "connect", + "summary": "Connect the device to the specified SSID.", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:protocol:wifi" + ] + } + ], + "params": [ + { + "name": "ssid", + "schema": { + "type": "string" + }, + "description": "Name of Wifi SSID to connect for the device." + }, + { + "name": "passphrase", + "schema": { + "type": "string" + }, + "description": "Password or Passphrase for the wifi." + }, + { + "name": "security", + "schema": { + "$ref": "#/components/schemas/WifiSecurityMode" + } + } + ], + "result": { + "name": "connectedWifi", + "summary": "Successful Response after connecting to the Wifi.", + "schema": { + "$ref": "#/components/schemas/AccessPoint" + } + }, + "examples": [ + { + "name": "Connect to a wpa2Psk Wifi with password", + "params": [ + { + "name": "ssid", + "value": "DND" + }, + { + "name": "passphrase", + "value": "gargoyle" + }, + { + "name": "security", + "value": "wpa2Psk" + } + ], + "result": { + "name": "successfulWifiConnection", + "value": { + "ssid": "DND", + "security": "wpa2Psk", + "signalStrength": -70, + "frequency": 2.4 + } + } + }, + { + "name": "Connect to a WPA2 PSK Wifi with password", + "params": [ + { + "name": "ssid", + "value": "Guardian WIFI" + }, + { + "name": "passphrase", + "value": "" + }, + { + "name": "security", + "value": "none" + } + ], + "result": { + "name": "successfulWifiConnection", + "value": { + "ssid": "Guardian WIFI", + "security": "none", + "signalStrength": -70, + "frequency": 2.4 + } + } + } + ] + }, + { + "name": "disconnect", + "summary": "Disconnect the device if connected via WIFI.", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:protocol:wifi" + ] + } + ], + "params": [], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Disconnect", + "params": [], + "result": { + "name": "defaultResult", + "value": null + } + } + ] + }, + { + "name": "wps", + "summary": "Connect to WPS", + "tags": [ + { + "name": "capabilities", + "x-uses": [ + "xrn:firebolt:capability:protocol:wifi" + ] + } + ], + "params": [ + { + "name": "security", + "schema": { + "$ref": "#/components/schemas/WPSSecurityPin" + } + } + ], + "result": { + "name": "connectedWifi", + "summary": "Successful Response after connecting to the Wifi.", + "schema": { + "$ref": "#/components/schemas/AccessPoint" + } + }, + "examples": [ + { + "name": "Connect to a WPS Wifi router", + "params": [ + { + "name": "security", + "value": "pushButton" + } + ], + "result": { + "name": "successfulWifiConnection", + "value": { + "ssid": "DND", + "security": "wpa2Psk", + "signalStrength": -70, + "frequency": 2.4 + } + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/schemas/accessibility.json b/src/schemas/accessibility.json index 5c4692b71..3194d9b38 100644 --- a/src/schemas/accessibility.json +++ b/src/schemas/accessibility.json @@ -1,6 +1,6 @@ { - "$id": "https://meta.comcast.com/firebolt/accessibility", "title": "Accessibility", + "$id": "https://meta.rdkcentral.com/firebolt/schemas/accessibility", "anyOf": [ { "$ref": "#/definitions/ClosedCaptionsStyles" @@ -11,14 +11,33 @@ ], "definitions": { "FontFamily": { - "type": ["string", "null"] + "type": ["string", "null"], + "enum": [ + "monospace_serif", + "proportional_serif", + "monospaced_sanserif", + "proportional_sanserif", + "smallcaps", + "cursive", + "casual", + null + ] }, "FontSize": { "type": ["number", "null"], "minimum": 0 }, "FontEdge": { - "type": ["string", "null"] + "type": ["string", "null"], + "enum": [ + "none", + "raised", + "depressed", + "uniform", + "drop_shadow_left", + "drop_shadow_right", + null + ] }, "Color": { "type": ["string", "null"] @@ -91,13 +110,19 @@ }, "styles": { "$ref": "#/definitions/ClosedCaptionsStyles" + }, + "preferredLanguages": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/localization#/definitions/ISO639_2Language" + } } }, "examples": [ { "enabled": true, "styles": { - "fontFamily": "Monospace sans-serif", + "fontFamily": "monospace_serif", "fontSize": 1, "fontColor": "#ffffff", "fontEdge": "none", @@ -109,7 +134,11 @@ "textAlignVertical": "middle", "windowColor": "white", "windowOpacity": 50 - } + }, + "preferredLanguages": [ + "eng", + "spa" + ] } ] }, @@ -132,7 +161,7 @@ "description": "Whether or not voice guidance should be enabled by default" }, "speed": { - "$ref": "https://meta.comcast.com/firebolt/accessibility#/definitions/VoiceSpeed", + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/accessibility#/definitions/VoiceSpeed", "description": "The speed at which voice guidance speech will be read back to the user" } }, diff --git a/src/schemas/advertising.json b/src/schemas/advertising.json new file mode 100644 index 000000000..713f9c181 --- /dev/null +++ b/src/schemas/advertising.json @@ -0,0 +1,23 @@ +{ + "title": "Advertising", + "$id": "https://meta.rdkcentral.com/firebolt/schemas/advertising", + "oneOf": [ + { + "$ref": "#/definitions/SkipRestriction" + } + ], + "definitions": { + "SkipRestriction": { + "title": "SkipRestriction", + "$comment": "xrn:advertising:policy:skipRestriction:", + "type": "string", + "enum": [ + "none", + "adsUnwatched", + "adsAll", + "all" + ], + "description": "The advertisement skip restriction.\n\nApplies to fast-forward/rewind (e.g. trick mode), seeking over an entire opportunity (e.g. jump), seeking out of what's currently playing, and \"Skip this ad...\" features. Seeking over multiple ad opportunities only requires playback of the _last_ opportunity, not all opportunities, preceding the seek destination.\n\n| Value | Description |\n|--------------|--------------------------------------------------------------------------------|\n| none |No fast-forward, jump, or skip restrictions |\n| adsUnwatched | Restrict fast-forward, jump, and skip for unwatched ad opportunities only. |\n| adsAll | Restrict fast-forward, jump, and skip for all ad opportunities |\n| all | Restrict fast-forward, jump, and skip for all ad opportunities and all content |\n\nNamespace: `xrn:advertising:policy:skipRestriction:`\n\n" + } + } + } \ No newline at end of file diff --git a/src/schemas/capabilities.json b/src/schemas/capabilities.json new file mode 100644 index 000000000..91617c777 --- /dev/null +++ b/src/schemas/capabilities.json @@ -0,0 +1,345 @@ +{ + "title": "Capabilities", + "$id": "https://meta.rdkcentral.com/firebolt/schemas/capabilities", + "oneOf": [ + { + "$ref": "#/definitions/Capability" + }, + { + "$ref": "#/definitions/Role" + }, + { + "$ref": "#/definitions/DenyReason" + }, + { + "$ref": "#/definitions/CapabilityInfo" + } + ], + "definitions": { + "GrantPolicy": { + "type": "object", + "required": [ + "options", + "scope", + "lifespan", + "overridable" + ], + "if": { + "properties": { + "lifespan": { + "const": "seconds" + } + } + }, + "then": { + "required": [ + "lifespanTtl" + ] + }, + "properties": { + "options": { + "type": "array", + "items": { + "$ref": "#/definitions/GrantRequirements" + } + }, + "scope": { + "type": "string", + "enum": [ + "app", + "device" + ] + }, + "lifespan": { + "type": "string", + "enum": [ + "once", + "forever", + "appActive", + "powerActive", + "seconds" + ] + }, + "lifespanTtl": { + "type": "integer", + "minimum": 0 + }, + "privacySetting": { + "$ref": "#/definitions/PrivacySetting" + }, + "overridable": { + "type": "boolean" + }, + "evaluateAt": { + "type": "array", + "minItems": 1, + "items": { + "type": "string", + "enum": [ + "invocation", + "activeSession" + ], + "description": "Describes when this grant policy should be evaluated. 'invocation' causes this policy to be evaluated when a firebolt method is invoked and that method requires the capability this policy is for. 'activeSession' is when an application's firebolt state transitions to an active state (foreground/background) from an inactive state and this application is permitted to this capability. This field on the policy is an array, which means this policy could be evaluated at multiple places. For instance the policy could be evaluated at both invocation time and activeSession time. The default value for this field is ['invocation'], meaning the policy is only evaluated when a method is invoked." + } + }, + "persistence": { + "type": "string", + "enum": [ + "account", + "device" + ], + "description": "Tells Firebolt how to persist the grant state for this policy. If this is set to account, then any device that shares the same account id will have their user grant synced. If a user makes a grant decision on one device, that grant decision will be used by another device on the same account. The time of expiration for the grant is shared across devices as well. Only lifespan of 'forever' and 'seconds' are supported for account persistence. The means of syncing the user grants across devices is left up to the Firebolt implementation. The default value for persistence is 'device', this just means the grants are stored locally on the current device and are not shared to any other devices." + } + }, + "additionalProperties": false, + "examples": [ + { + "options": [ + { + "steps": [ + { + "capability": "xrn:firebolt:capability:usergrant:acknowledge" + } + ] + } + ], + "scope": "app", + "lifespan": "seconds", + "lifespanTtl": 86400, + "overridable": true + }, + { + "options": [], + "scope": "device", + "lifespan": "once", + "overridable": true, + "privacySetting": { + "property": "Privacy.allowACR", + "autoApplyPolicy": "always" + } + }, + { + "options": [ + { + "steps": [ + { + "capability": "xrn:firebolt:capability:usergrant:acknowledge" + } + ] + } + ], + "scope": "app", + "lifespan": "seconds", + "lifespanTtl": 86400, + "overridable": true, + "evaluateAt": [ + "invocation", + "activeSession" + ], + "persistence": "account" + } + ] + }, + "PrivacySetting": { + "type": "object", + "required": [ + "property", + "autoApplyPolicy" + ], + "properties": { + "property": { + "type": "string", + "description": "The Firebolt . RPC method name for a property", + "pattern": "^[a-zA-Z]+\\.[a-zA-Z]+$" + }, + "autoApplyPolicy": { + "type": "string", + "enum": [ + "always", + "allowed", + "disallowed", + "never" + ], + "description": "Policy which describes how to to silently apply the grant. 'always' - Silently grant if value matches allow-value and silently deny if value does not match allow value. 'allowed' - Silently grant if value matches allow-value. 'disallowed' - Silently deny if value does not match allow-value. 'never' - Do not silently grant for any case" + }, + "updateProperty": { + "type": "boolean", + "description": "Whether to update the property value to match the grant." + } + }, + "additionalProperties": false + }, + "GrantRequirements": { + "type": "object", + "required": [ + "steps" + ], + "properties": { + "steps": { + "type": "array", + "minItems": 1, + "items": { + "$ref": "#/definitions/GrantStep" + } + } + }, + "additionalProperties": false + }, + "GrantStep": { + "type": "object", + "required": [ + "capability" + ], + "additionalProperties": false, + "properties": { + "capability": { + "$ref": "#/definitions/GrantKey" + }, + "configuration": { + "type": "object", + "additionalProperties": true + } + } + }, + "GrantKey": { + "title": "GrantKey", + "allOf": [ + { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/capabilities#/definitions/Capability" + }, + { + "type": "string", + "pattern": ":usergrant:[a-z0-9]+?$" + } + ] + }, + "Capability": { + "title": "Capability", + "type": "string", + "description": "A Capability is a discrete unit of functionality that a Firebolt device might be able to perform.", + "pattern": "^xrn:firebolt:capability:([a-z0-9\\-]+)((:[a-z0-9\\-]+)?)$" + }, + "Role": { + "title": "Role", + "description": "Role provides access level for the app for a given capability.", + "type": "string", + "enum": [ + "use", + "manage", + "provide" + ] + }, + "Permission": { + "title": "Permission", + "description": "A capability combined with a Role, which an app may be permitted (by a distributor) or granted (by an end user).", + "type": "object", + "required": [ + "capability" + ], + "properties": { + "role": { + "$ref": "#/definitions/Role" + }, + "capability": { + "$ref": "#/definitions/Capability" + } + }, + "additionalProperties": false + }, + "DenyReason": { + "title": "DenyReason", + "description": "Reasons why a Capability might not be invokable", + "type": "string", + "enum": [ + "unpermitted", + "unsupported", + "disabled", + "unavailable", + "grantDenied", + "ungranted" + ] + }, + "CapPermissionStatus": { + "type": "object", + "properties": { + "permitted": { + "type": "boolean", + "description": "Provides info whether the capability is permitted" + }, + "granted": { + "oneOf": [ + { + "type": "boolean", + "description": "Provides info whether the capability is granted" + }, + { + "const": null + } + ] + } + }, + "additionalProperties": false + }, + "CapabilityInfo": { + "title": "CapabilityInfo", + "type": "object", + "required": [ + "supported", + "available", + "use", + "manage", + "provide" + ], + "properties": { + "capability": { + "$ref": "#/definitions/Capability" + }, + "supported": { + "type": "boolean", + "description": "Provides info whether the capability is supported" + }, + "available": { + "type": "boolean", + "description": "Provides info whether the capability is available" + }, + "use": { + "$ref": "#/definitions/CapPermissionStatus" + }, + "manage": { + "$ref": "#/definitions/CapPermissionStatus" + }, + "provide": { + "$ref": "#/definitions/CapPermissionStatus" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/DenyReason" + }, + "minItems": 1, + "maxItems": 6 + } + }, + "additionalProperties": false, + "examples": [ + { + "capability": "xrn:firebolt:capability:keyboard", + "supported": true, + "available": true, + "use": { + "permitted": true, + "granted": true + }, + "manage": { + "permitted": true, + "granted": true + }, + "provide": { + "permitted": true, + "granted": true + } + } + ] + } + } +} diff --git a/src/schemas/discovery.json b/src/schemas/discovery.json new file mode 100644 index 000000000..9602a7d03 --- /dev/null +++ b/src/schemas/discovery.json @@ -0,0 +1,62 @@ +{ + "title": "Discovery", + "$id": "https://meta.rdkcentral.com/firebolt/schemas/discovery", + "anyOf": [ + { + "$ref": "#/definitions/PurchasedContentResult" + } + ], + "definitions": { + "PurchasedContentResult": { + "title": "PurchasedContentResult", + "type": "object", + "properties": { + "expires": { + "type": "string", + "format": "date-time" + }, + "totalCount": { + "type": "integer", + "minimum": 0 + }, + "entries": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/EntityInfo" + } + } + }, + "required": [ + "expires", + "totalCount", + "entries" + ], + "additionalProperties": false + }, + "EntityInfoResult": { + "title": "EntityInfoResult", + "description": "The result for an `entityInfo()` push or pull.", + "type": "object", + "properties": { + "expires": { + "type": "string", + "format": "date-time" + }, + "entity": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/EntityInfo" + }, + "related": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/EntityInfo" + } + } + }, + "required": [ + "expires", + "entity" + ], + "additionalProperties": false + } + } + } \ No newline at end of file diff --git a/src/schemas/entertainment.json b/src/schemas/entertainment.json new file mode 100644 index 000000000..17618f97d --- /dev/null +++ b/src/schemas/entertainment.json @@ -0,0 +1,336 @@ +{ + "title": "Entertainment", + "$id": "https://meta.rdkcentral.com/firebolt/schemas/entertainment", + "anyOf": [ + { + "$ref": "#/definitions/ProgramType" + }, + { + "$ref": "#/definitions/Entitlement" + }, + { + "$ref": "#/definitions/EntityInfo" + }, + { + "$ref": "#/definitions/OfferingType" + }, + { + "$ref": "#/definitions/WayToWatch" + }, + { + "$ref": "#/definitions/ContentRating" + }, + { + "$ref": "#/definitions/ContentIdentifiers" + } + ], + "definitions": { + "ProgramType": { + "title": "ProgramType", + "type": "string", + "description": "In the case of a program `entityType`, specifies the program type.", + "enum": [ + "movie", + "episode", + "season", + "series", + "other", + "preview", + "extra", + "concert", + "sportingEvent", + "advertisement", + "musicVideo", + "minisode" + ] + }, + "MusicType": { + "title": "MusicType", + "type": "string", + "description": "In the case of a music `entityType`, specifies the type of music entity.", + "enum": [ + "song", + "album" + ] + }, + "Entitlement": { + "title": "Entitlement", + "type": "object", + "properties": { + "entitlementId": { + "type": "string" + }, + "startTime": { + "type": "string", + "format": "date-time" + }, + "endTime": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "entitlementId" + ] + }, + "EntityInfo": { + "title": "EntityInfo", + "description": "An EntityInfo object represents an \"entity\" on the platform. Currently, only entities of type `program` are supported. `programType` must be supplied to identify the program type.\n\nAdditionally, EntityInfo objects must specify a properly formed\nContentIdentifiers object, `entityType`, and `title`. The app should provide\nthe `synopsis` property for a good user experience if the content\nmetadata is not available another way.\n\nThe ContentIdentifiers must be sufficient for navigating the user to the\nappropriate entity or detail screen via a `detail` intent or deep link.\n\nEntityInfo objects must provide at least one WayToWatch object when returned as\npart of an `entityInfo` method and a streamable asset is available to the user.\nIt is optional for the `purchasedContent` method, but recommended because the UI\nmay use those data.", + "type": "object", + "required": [ + "identifiers", + "entityType", + "programType", + "title" + ], + "properties": { + "identifiers": { + "$ref": "#/definitions/ContentIdentifiers" + }, + "title": { + "type": "string", + "description": "Title of the entity." + }, + "entityType": { + "type": "string", + "enum": [ + "program", + "music" + ], + "description": "The type of the entity, e.g. `program` or `music`." + }, + "programType": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/ProgramType" + }, + "musicType": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/MusicType" + }, + "synopsis": { + "type": "string", + "description": "Short description of the entity." + }, + "seasonNumber": { + "type": "number", + "description": "For TV seasons, the season number. For TV episodes, the season that the episode belongs to." + }, + "seasonCount": { + "type": "number", + "description": "For TV series, seasons, and episodes, the total number of seasons." + }, + "episodeNumber": { + "type": "number", + "description": "For TV episodes, the episode number." + }, + "episodeCount": { + "type": "number", + "description": "For TV seasons and episodes, the total number of episodes in the current season." + }, + "releaseDate": { + "type": "string", + "format": "date-time", + "description": "The date that the program or entity was released or first aired." + }, + "contentRatings": { + "type": "array", + "items": { + "$ref": "#/definitions/ContentRating" + }, + "description": "A list of ContentRating objects, describing the entity's ratings in various rating schemes." + }, + "waysToWatch": { + "type": "array", + "items": { + "$ref": "#/definitions/WayToWatch" + }, + "description": "An array of ways a user is might watch this entity, regardless of entitlements." + } + }, + "if": { + "properties": { + "entityType": { + "const": "program" + } + } + }, + "then": { + "required": [ + "programType" + ], + "not": { + "required": [ + "musicType" + ] + } + }, + "else": { + "required": [ + "musicType" + ], + "not": { + "required": [ + "programType" + ] + } + } + }, + "OfferingType": { + "title": "OfferingType", + "type": "string", + "enum": [ + "free", + "subscribe", + "buy", + "rent" + ], + "description": "The offering type of the WayToWatch." + }, + "WayToWatch": { + "title": "WayToWatch", + "type": "object", + "required": [ + "identifiers", + "audioProfile" + ], + "properties": { + "identifiers": { + "$ref": "#/definitions/ContentIdentifiers" + }, + "expires": { + "type": "string", + "format": "date-time", + "description": "Time when the WayToWatch is no longer available." + }, + "entitled": { + "type": "boolean", + "description": "Specify if the user is entitled to watch the entity." + }, + "entitledExpires": { + "type": "string", + "format": "date-time", + "description": "Time when the entity is no longer entitled." + }, + "offeringType": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/OfferingType" + }, + "hasAds": { + "type": "boolean", + "description": "True if the streamable asset contains ads." + }, + "price": { + "type": "number", + "description": "For \"buy\" and \"rent\" WayToWatch, the price to buy or rent in the user's preferred currency." + }, + "videoQuality": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "SD", + "HD", + "UHD" + ] + }, + "description": "List of the video qualities available via the WayToWatch." + }, + "audioProfile": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/types#/definitions/AudioProfile" + }, + "description": "List of the audio types available via the WayToWatch." + }, + "audioLanguages": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of audio track languages available on the WayToWatch. The first is considered the primary language. Languages are expressed as ISO 639 1/2 codes." + }, + "closedCaptions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of languages for which closed captions are available on the WayToWatch. Languages are expressed as ISO 639 1/2 codes." + }, + "subtitles": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of languages for which subtitles are available on the WayToWatch. Languages are expressed as ISO 639 1/2 codes." + }, + "audioDescriptions": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of languages for which audio descriptions (DVD) as available on the WayToWatch. Languages are expressed as ISO 639 1/2 codes." + } + }, + "description": "A WayToWatch describes a way to watch a video program. It may describe a single\nstreamable asset or a set of streamable assets. For example, an app provider may\ndescribe HD, SD, and UHD assets as individual WayToWatch objects or rolled into\na single WayToWatch.\n\nIf the WayToWatch represents a single streamable asset, the provided\nContentIdentifiers must be sufficient to play back the specific asset when sent\nvia a playback intent or deep link. If the WayToWatch represents multiple\nstreamable assets, the provided ContentIdentifiers must be sufficient to\nplayback one of the assets represented with no user action. In this scenario,\nthe app SHOULD choose the best asset for the user based on their device and\nsettings. The ContentIdentifiers MUST also be sufficient for navigating the user\nto the appropriate entity or detail screen via an entity intent.\n\nThe app should set the `entitled` property to indicate if the user can watch, or\nnot watch, the asset without making a purchase. If the entitlement is known to\nexpire at a certain time (e.g., a rental), the app should also provide the\n`entitledExpires` property. If the entitlement is not expired, the UI will use\nthe `entitled` property to display watchable assets to the user, adjust how\nassets are presented to the user, and how intents into the app are generated.\nFor example, the the Aggregated Experience could render a \"Watch\" button for an\nentitled asset versus a \"Subscribe\" button for an non-entitled asset.\n\nThe app should set the `offeringType` to define how the content may be\nauthorized. The UI will use this to adjust how content is presented to the user.\n\nA single WayToWatch cannot represent streamable assets available via multiple\npurchase paths. If, for example, an asset has both Buy, Rent and Subscription\navailability, the three different entitlement paths MUST be represented as\nmultiple WayToWatch objects.\n\n`price` should be populated for WayToWatch objects with `buy` or `rent`\n`offeringType`. If the WayToWatch represents a set of assets with various price\npoints, the `price` provided must be the lowest available price." + }, + "ContentRating": { + "title": "ContentRating", + "type": "object", + "required": [ + "scheme", + "rating" + ], + "properties": { + "scheme": { + "type": "string", + "enum": [ + "CA-Movie", + "CA-TV", + "CA-Movie-Fr", + "CA-TV-Fr", + "US-Movie", + "US-TV" + ], + "description": "The rating scheme." + }, + "rating": { + "type": "string", + "description": "The content rating." + }, + "advisories": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional list of subratings or content advisories." + } + }, + "description": "A ContentRating represents an age or content based of an entity. Supported rating schemes and associated types are below.\n\n## United States\n\n`US-Movie` (MPAA):\n\nRatings: `NR`, `G`, `PG`, `PG13`, `R`, `NC17`\n\nAdvisories: `AT`, `BN`, `SL`, `SS`, `N`, `V`\n\n`US-TV` (Vchip):\n\nRatings: `TVY`, `TVY7`, `TVG`, `TVPG`, `TV14`, `TVMA`\n\nAdvisories: `FV`, `D`, `L`, `S`, `V`\n\n## Canada\n\n`CA-Movie` (OFRB):\n\nRatings: `G`, `PG`, `14A`, `18A`, `R`, `E`\n\n`CA-TV` (AGVOT)\n\nRatings: `E`, `C`, `C8`, `G`, `PG`, `14+`, `18+`\n\nAdvisories: `C`, `C8`, `G`, `PG`, `14+`, `18+`\n\n`CA-Movie-Fr` (Canadian French language movies):\n\nRatings: `G`, `8+`, `13+`, `16+`, `18+`\n\n`CA-TV-Fr` (Canadian French language TV):\n\nRatings: `G`, `8+`, `13+`, `16+`, `18+`\n" + }, + "ContentIdentifiers": { + "title": "ContentIdentifiers", + "type": "object", + "properties": { + "assetId": { + "type": "string", + "description": "Identifies a particular playable asset. For example, the HD version of a particular movie separate from the UHD version." + }, + "entityId": { + "type": "string", + "description": "Identifies an entity, such as a Movie, TV Series or TV Episode." + }, + "seasonId": { + "type": "string", + "description": "The TV Season for a TV Episode." + }, + "seriesId": { + "type": "string", + "description": "The TV Series for a TV Episode or TV Season." + }, + "appContentData": { + "type": "string", + "description": "App-specific content identifiers.", + "maxLength": 1024 + } + }, + "description": "The ContentIdentifiers object is how the app identifies an entity or asset to\nthe Firebolt platform. These ids are used to look up metadata and deep link into\nthe app.\n\nApps do not need to provide all ids. They only need to provide the minimum\nrequired to target a playable stream or an entity detail screen via a deep link.\nIf an id isn't needed to get to those pages, it doesn't need to be included." + } + } +} \ No newline at end of file diff --git a/src/schemas/errors.json b/src/schemas/errors.json index c8116a53f..f826bd4f3 100644 --- a/src/schemas/errors.json +++ b/src/schemas/errors.json @@ -1,6 +1,6 @@ { - "$id": "https://meta.comcast.com/firebolt/errors", "title": "Errors", + "$id": "https://meta.rdkcentral.com/firebolt/schemas/errors", "oneOf": [ { "$ref": "#/definitions/FireboltError" }, { "$ref": "#/definitions/UserNotAuthenticatedError" } diff --git a/src/schemas/intents.json b/src/schemas/intents.json new file mode 100644 index 000000000..6e0ddd270 --- /dev/null +++ b/src/schemas/intents.json @@ -0,0 +1,2275 @@ +{ + "title": "Intents", + "$id": "https://meta.rdkcentral.com/firebolt/schemas/intents", + "oneOf": [ + { + "$ref": "#/definitions/AppIntentMessage" + }, + { + "$ref": "#/definitions/PlatformIntentMessage" + } + ], + "definitions": { + "AppIntentMessage": { + "title": "AppIntentMessage", + "description": "A message sent to a Firebolt app.", + "allOf": [ + { + "$ref": "#/definitions/IntentMessage" + }, + { + "type": "object", + "required": [ + "appId", + "intent" + ], + "properties": { + "appId": { + "type": "string" + }, + "intent": { + "$ref": "#/definitions/NavigationIntent" + }, + "metadata": { + "type": "object" + } + }, + "propertyNames": { + "enum": [ + "type", + "appId", + "intent", + "metadata" + ] + } + } + ], + "examples": [ + { + "type": "xrn:firebolt:intent:app:launch", + "appId": "Netflix", + "intent": { + "action": "launch", + "context": { + "source": "voice" + } + }, + "metadata": { + "foo": "bar" + } + }, + { + "type": "xrn:firebolt:intent:app:entity", + "appId": "Netflix", + "intent": { + "action": "entity", + "data": { + "entityType": "program", + "programType": "movie", + "entityId": "jerry-mcguire" + }, + "context": { + "source": "voice" + } + }, + "metadata": { + "foo": "bar" + } + } + ] + }, + "PlatformIntentMessage": { + "title": "PlatformIntentMessage", + "description": "A message sent to the Firebolt platform.", + "allOf": [ + { + "$ref": "#/definitions/IntentMessage" + }, + { + "type": "object", + "required": [ + "intent" + ], + "properties": { + "intent": { + "anyOf": [ + { + "$ref": "#/definitions/DiscoveryIntent" + }, + { + "$ref": "#/definitions/PlaybackControlIntent" + }, + { + "$ref": "#/definitions/DeviceIntent" + }, + { + "$ref": "#/definitions/DialogIntent" + } + ] + }, + "metadata": { + "type": "object" + } + }, + "propertyNames": { + "enum": [ + "type", + "intent", + "metadata" + ] + } + } + ], + "examples": [ + { + "type": "xrn:firebolt:intent:platform:power", + "intent": { + "action": "power", + "data": { + "toggle": true + }, + "context": { + "source": "voice" + } + }, + "metadata": { + "foo": "bar" + } + }, + { + "type": "xrn:firebolt:intent:platform:discovery", + "intent": { + "action": "discovery", + "data": { + "query": "christmas", + "menus": [ + "christmas-menu" + ], + "federation": [ + { + "appId": "netflix", + "exclude": true + } + ] + }, + "context": { + "source": "voice" + } + } + } + ] + }, + "Intent": { + "description": "A Firebolt compliant representation of a user intention.", + "type": "object", + "required": [ + "action", + "context" + ], + "properties": { + "action": { + "type": "string" + }, + "context": { + "type": "object", + "required": [ + "source" + ], + "properties": { + "source": { + "type": "string" + } + } + } + } + }, + "IntentProperties": { + "type": "object", + "propertyNames": { + "enum": [ + "action", + "data", + "context" + ] + } + }, + "NavigationIntent": { + "title": "NavigationIntent", + "description": "A Firebolt compliant representation of a user intention to navigate to a specific place in an app.", + "anyOf": [ + { + "$ref": "#/definitions/HomeIntent" + }, + { + "$ref": "#/definitions/LaunchIntent" + }, + { + "$ref": "#/definitions/EntityIntent" + }, + { + "$ref": "#/definitions/PlaybackIntent" + }, + { + "$ref": "#/definitions/SearchIntent" + }, + { + "$ref": "#/definitions/SectionIntent" + }, + { + "$ref": "#/definitions/TuneIntent" + }, + { + "$ref": "#/definitions/PlayEntityIntent" + }, + { + "$ref": "#/definitions/PlayQueryIntent" + } + ] + }, + "DiscoveryIntent": { + "description": "A Firebolt compliant representation of a user intention to discover something at the aggregate experience level, e.g. content, apps, etc.", + "anyOf": [ + { + "$ref": "#/definitions/ContentDiscoveryIntent" + }, + { + "$ref": "#/definitions/EntityAppSelectionIntent" + } + ] + }, + "DeviceIntent": { + "description": "A Firebolt compliant representation of a user intention to control some aspect of their device.", + "anyOf": [ + { + "$ref": "#/definitions/ButtonIntent" + }, + { + "$ref": "#/definitions/PowerIntent" + }, + { + "$ref": "#/definitions/VolumeIntent" + }, + { + "$ref": "#/definitions/MicrophoneIntent" + }, + { + "$ref": "#/definitions/InputIntent" + }, + { + "$ref": "#/definitions/TuneIntent" + } + ] + }, + "PlaybackControlIntent": { + "description": "A Firebolt compliant representation of a user intention to control some aspect of in-progress playback.", + "anyOf": [ + { + "$ref": "#/definitions/PauseIntent" + }, + { + "$ref": "#/definitions/SeekIntent" + }, + { + "$ref": "#/definitions/SkipIntent" + }, + { + "$ref": "#/definitions/TrickPlayIntent" + }, + { + "$ref": "#/definitions/ClosedCaptionsIntent" + }, + { + "$ref": "#/definitions/AudioDescriptionIntent" + } + ] + }, + "DialogIntent": { + "description": "A Firebolt compliant representation of a platform or user intention to converse in a dialog.", + "anyOf": [ + { + "$ref": "#/definitions/MessageIntent" + } + ] + }, + "LaunchIntent": { + "description": "A Firebolt compliant representation of a user intention to launch an app.", + "title": "LaunchIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "launch" + } + } + } + ], + "examples": [ + { + "action": "launch", + "context": { + "source": "voice" + } + } + ] + }, + "HomeIntent": { + "description": "A Firebolt compliant representation of a user intention to navigate an app to it's home screen, and bring that app to the foreground if needed.", + "title": "HomeIntent", + "allOf": [ + { + "title": "HomeIntent", + "$ref": "#/definitions/Intent" + }, + { + "title": "HomeIntent", + "$ref": "#/definitions/IntentProperties" + }, + { + "title": "HomeIntent", + "type": "object", + "properties": { + "action": { + "const": "home" + } + } + } + ], + "examples": [ + { + "action": "home", + "context": { + "source": "voice" + } + } + ] + }, + "EntityIntent": { + "description": "A Firebolt compliant representation of a user intention to navigate an app to a specific entity page, and bring that app to the foreground if needed.", + "title": "EntityIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "required": [ + "data" + ], + "properties": { + "action": { + "const": "entity" + }, + "data": { + "anyOf": [ + { + "$ref": "#/definitions/MovieEntity" + }, + { + "$ref": "#/definitions/TVEpisodeEntity" + }, + { + "$ref": "#/definitions/TVSeriesEntity" + }, + { + "$ref": "#/definitions/TVSeasonEntity" + }, + { + "$ref": "#/definitions/MusicEntity" + }, + { + "$ref": "#/definitions/PlaylistEntity" + }, + { + "$ref": "#/definitions/AdditionalEntity" + }, + { + "$ref": "#/definitions/UntypedEntity" + } + ] + } + } + } + ], + "examples": [ + { + "action": "entity", + "context": { + "source": "voice" + }, + "data": { + "entityType": "program", + "programType": "movie", + "entityId": "el-camino" + } + } + ] + }, + "ChannelEntity": { + "title": "ChannelEntity", + "type": "object", + "properties": { + "entityType": { + "const": "channel" + }, + "channelType": { + "type": "string", + "enum": [ + "streaming", + "overTheAir" + ] + }, + "entityId": { + "type": "string", + "description": "ID of the channel, in the target App's scope." + }, + "appContentData": { + "type": "string", + "maxLength": 256 + } + }, + "required": [ + "entityType", + "channelType", + "entityId" + ], + "additionalProperties": false + }, + "ProgramEntity": { + "title": "ProgramEntity", + "type": "object", + "properties": { + "entityType": { + "const": "program" + }, + "programType": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/ProgramType" + }, + "entityId": { + "type": "string" + } + }, + "required": [ + "entityType", + "programType", + "entityId" + ] + }, + "MusicEntity": { + "title": "MusicEntity", + "type": "object", + "properties": { + "entityType": { + "const": "music" + }, + "musicType": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/MusicType" + }, + "entityId": { + "type": "string" + } + }, + "required": [ + "entityType", + "musicType", + "entityId" + ] + }, + "MovieEntity": { + "title": "MovieEntity", + "allOf": [ + { + "$ref": "#/definitions/ProgramEntity" + }, + { + "description": "A Firebolt compliant representation of a Movie entity.", + "title": "MovieEntity", + "type": "object", + "required": [ + "entityType", + "programType", + "entityId" + ], + "properties": { + "entityType": { + "const": "program" + }, + "programType": { + "const": "movie" + }, + "entityId": { + "$ref": "#/definitions/Identifier" + }, + "assetId": { + "$ref": "#/definitions/Identifier" + }, + "appContentData": { + "type": "string", + "maxLength": 256 + } + }, + "additionalProperties": false + } + ], + "examples": [ + { + "entityType": "program", + "programType": "movie", + "entityId": "el-camino" + } + ] + }, + "TVEpisodeEntity": { + "title": "TVEpisodeEntity", + "allOf": [ + { + "$ref": "#/definitions/ProgramEntity" + }, + { + "description": "A Firebolt compliant representation of a TV Episode entity.", + "title": "TVEpisodeEntity", + "type": "object", + "required": [ + "entityType", + "programType", + "entityId", + "seriesId", + "seasonId" + ], + "properties": { + "entityType": { + "const": "program" + }, + "programType": { + "const": "episode" + }, + "entityId": { + "$ref": "#/definitions/Identifier" + }, + "seriesId": { + "$ref": "#/definitions/Identifier" + }, + "seasonId": { + "$ref": "#/definitions/Identifier" + }, + "assetId": { + "$ref": "#/definitions/Identifier" + }, + "appContentData": { + "type": "string", + "maxLength": 256 + } + }, + "additionalProperties": false + } + ], + "examples": [ + { + "entityType": "program", + "programType": "episode", + "entityId": "breaking-bad-pilot", + "seriesId": "breaking-bad", + "seasonId": "breaking-bad-season-1" + } + ] + }, + "TVSeasonEntity": { + "title": "TVSeasonEntity", + "description": "A Firebolt compliant representation of a TV Season entity.", + "allOf": [ + { + "$ref": "#/definitions/ProgramEntity" + }, + { + "type": "object", + "required": [ + "entityType", + "programType", + "entityId", + "seriesId" + ], + "properties": { + "entityType": { + "const": "program" + }, + "programType": { + "const": "season" + }, + "entityId": { + "$ref": "#/definitions/Identifier" + }, + "seriesId": { + "$ref": "#/definitions/Identifier" + }, + "assetId": { + "$ref": "#/definitions/Identifier" + }, + "appContentData": { + "type": "string", + "maxLength": 256 + } + }, + "additionalProperties": false + } + ], + "examples": [ + { + "entityType": "program", + "programType": "season", + "entityId": "breaking-bad-season-1", + "seriesId": "breaking-bad" + } + ] + }, + "TVSeriesEntity": { + "title": "TVSeriesEntity", + "allOf": [ + { + "$ref": "#/definitions/ProgramEntity" + }, + { + "description": "A Firebolt compliant representation of a TV Series entity.", + "type": "object", + "required": [ + "entityType", + "programType", + "entityId" + ], + "properties": { + "entityType": { + "const": "program" + }, + "programType": { + "const": "series" + }, + "entityId": { + "$ref": "#/definitions/Identifier" + }, + "assetId": { + "$ref": "#/definitions/Identifier" + }, + "appContentData": { + "type": "string", + "maxLength": 256 + } + }, + "additionalProperties": false + } + ], + "examples": [ + { + "entityType": "program", + "programType": "series", + "entityId": "breaking-bad" + } + ] + }, + "PlaylistEntity": { + "title": "PlaylistEntity", + "description": "A Firebolt compliant representation of a Playlist entity.", + "type": "object", + "required": [ + "entityType", + "entityId" + ], + "properties": { + "entityType": { + "const": "playlist" + }, + "entityId": { + "$ref": "#/definitions/Identifier" + }, + "assetId": { + "$ref": "#/definitions/Identifier" + }, + "appContentData": { + "type": "string", + "maxLength": 256 + } + }, + "additionalProperties": false, + "examples": [ + { + "entityType": "playlist", + "entityId": "playlist/xyz" + } + ] + }, + "PlayableEntity": { + "title": "PlayableEntity", + "anyOf": [ + { + "$ref": "#/definitions/MovieEntity" + }, + { + "$ref": "#/definitions/TVEpisodeEntity" + }, + { + "$ref": "#/definitions/PlaylistEntity" + }, + { + "$ref": "#/definitions/MusicEntity" + }, + { + "$ref": "#/definitions/AdditionalEntity" + } + ] + }, + "AdditionalEntity": { + "title": "AdditionalEntity", + "allOf": [ + { + "$ref": "#/definitions/ProgramEntity" + }, + { + "description": "A Firebolt compliant representation of the remaining entity types.", + "type": "object", + "required": [ + "entityType", + "entityId" + ], + "properties": { + "entityType": { + "const": "program" + }, + "programType": { + "type": "string", + "enum": [ + "concert", + "sportingEvent", + "preview", + "other", + "advertisement", + "musicVideo", + "minisode", + "extra" + ] + }, + "entityId": { + "$ref": "#/definitions/Identifier" + }, + "assetId": { + "$ref": "#/definitions/Identifier" + }, + "appContentData": { + "type": "string", + "maxLength": 256 + } + }, + "additionalProperties": false + } + ], + "examples": [ + { + "entityType": "program", + "programType": "concert", + "entityId": "live-aid" + } + ] + }, + "UntypedEntity": { + "title": "UntypedEntity", + "allOf": [ + { + "description": "A Firebolt compliant representation of the remaining entity types.", + "type": "object", + "required": [ + "entityId" + ], + "properties": { + "entityId": { + "$ref": "#/definitions/Identifier" + }, + "assetId": { + "$ref": "#/definitions/Identifier" + }, + "appContentData": { + "type": "string", + "maxLength": 256 + } + }, + "additionalProperties": false + } + ], + "examples": [ + { + "entityId": "an-entity" + } + ] + }, + "TuneIntent": { + "description": "A Firebolt compliant representation of a user intention to 'tune' to a traditional over-the-air broadcast, or an OTT Stream from an OTT or vMVPD App.", + "title": "TuneIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "required": [ + "data" + ], + "properties": { + "action": { + "const": "tune" + }, + "data": { + "type": "object", + "required": [ + "entity" + ], + "additionalProperties": false, + "properties": { + "entity": { + "$ref": "#/definitions/ChannelEntity" + }, + "options": { + "description": "The options property of the data property MUST have only one of the following fields.", + "type": "object", + "required": [], + "additionalProperties": false, + "minProperties": 1, + "maxProperties": 1, + "properties": { + "assetId": { + "type": "string", + "description": "The ID of a specific 'listing', as scoped by the target App's ID-space, which the App should begin playback from." + }, + "restartCurrentProgram": { + "type": "boolean", + "description": "Denotes that the App should start playback at the most recent program boundary, rather than 'live.'" + }, + "time": { + "type": "string", + "format": "date-time", + "description": "ISO 8601 Date/Time where the App should begin playback from." + } + } + } + } + } + } + } + ], + "examples": [ + { + "action": "tune", + "data": { + "entity": { + "entityType": "channel", + "channelType": "streaming", + "entityId": "an-ott-channel" + }, + "options": { + "restartCurrentProgram": true + } + }, + "context": { + "source": "voice" + } + } + ] + }, + "PlaybackIntent": { + "description": "A Firebolt compliant representation of a user intention to navigate an app to a the video player for a specific, playable entity, and bring that app to the foreground if needed.", + "title": "PlaybackIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "required": [ + "data" + ], + "properties": { + "action": { + "const": "playback" + }, + "data": { + "$ref": "#/definitions/PlayableEntity" + } + } + } + ], + "examples": [ + { + "action": "playback", + "data": { + "entityType": "program", + "programType": "episode", + "entityId": "breaking-bad-pilot", + "seriesId": "breaking-bad", + "seasonId": "breaking-bad-season-1" + }, + "context": { + "source": "voice" + } + } + ] + }, + "SearchIntent": { + "description": "A Firebolt compliant representation of a user intention to navigate an app to it's search UI with a search term populated, and bring that app to the foreground if needed.", + "title": "SearchIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "search" + }, + "data": { + "type": "object", + "required": [ + "query" + ], + "properties": { + "query": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + ], + "examples": [ + { + "action": "search", + "data": { + "query": "walter white" + }, + "context": { + "source": "voice" + } + } + ] + }, + "SectionIntent": { + "description": "A Firebolt compliant representation of a user intention to navigate an app to a section not covered by `home`, `entity`, `player`, or `search`, and bring that app to the foreground if needed.", + "title": "SectionIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "section" + }, + "data": { + "type": "object", + "required": [ + "sectionName" + ], + "properties": { + "sectionName": { + "type": "string" + } + }, + "additionalProperties": false + } + } + } + ], + "examples": [ + { + "action": "section", + "data": { + "sectionName": "settings" + }, + "context": { + "source": "voice" + } + } + ] + }, + "PlayEntityIntent": { + "description": "A Firebolt compliant representation of a user intention to navigate an app to a the video player for a specific, playable entity, and bring that app to the foreground if needed.", + "title": "PlayEntityIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "required": [ + "data" + ], + "properties": { + "action": { + "const": "play-entity" + }, + "data": { + "type": "object", + "properties": { + "entity": { + "$ref": "#/definitions/PlayableEntity" + }, + "options": { + "type": "object", + "properties": { + "playFirstId": { + "type": "string" + }, + "playFirstTrack": { + "type": "integer", + "minimum": 1 + } + }, + "additionalProperties": false + } + }, + "required": [ + "entity" + ], + "propertyNames": { + "enum": [ + "entity", + "options" + ] + }, + "if": { + "properties": { + "entity": { + "type": "object", + "required": [ + "entityType" + ], + "properties": { + "entityType": { + "const": "playlist" + } + } + } + } + }, + "then": { + "type": "object", + "properties": { + "options": { + "maxProperties": 1 + } + } + }, + "else": { + "type": "object", + "properties": { + "options": { + "maxProperties": 0 + } + } + } + } + } + } + ], + "examples": [ + { + "action": "play-entity", + "data": { + "entity": { + "entityType": "playlist", + "entityId": "playlist/xyz" + }, + "options": { + "playFirstId": "song/xyz" + } + }, + "context": { + "source": "voice" + } + }, + { + "action": "play-entity", + "data": { + "entity": { + "entityType": "playlist", + "entityId": "playlist/xyz" + }, + "options": { + "playFirstTrack": 3 + } + }, + "context": { + "source": "voice" + } + } + ] + }, + "PlayQueryIntent": { + "description": "A Firebolt compliant representation of a user intention to navigate an app to a the video player for an abstract query to be searched for and played by the app.", + "title": "PlayQueryIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "required": [ + "data" + ], + "properties": { + "action": { + "const": "play-query" + }, + "data": { + "type": "object", + "properties": { + "query": { + "type": "string" + }, + "options": { + "type": "object", + "properties": { + "programTypes": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/ProgramType" + } + }, + "musicTypes": { + "type": "array", + "items": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/MusicType" + } + } + }, + "additionalProperties": false + } + }, + "required": [ + "query" + ], + "propertyNames": { + "enum": [ + "query", + "options" + ] + } + } + } + } + ], + "examples": [ + { + "action": "play-query", + "data": { + "query": "Ed Sheeran" + }, + "context": { + "source": "voice" + } + }, + { + "action": "play-query", + "data": { + "query": "Ed Sheeran", + "options": { + "programTypes": [ + "movie" + ] + } + }, + "context": { + "source": "voice" + } + }, + { + "action": "play-query", + "data": { + "query": "Ed Sheeran", + "options": { + "programTypes": [ + "movie" + ], + "musicTypes": [ + "song" + ] + } + }, + "context": { + "source": "voice" + } + } + ] + }, + "ContentDiscoveryIntent": { + "description": "A Firebolt compliant representation of a user intention to discover content with out a clear specific entity match.", + "title": "ContentDiscoveryIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "required": [ + "data" + ], + "properties": { + "action": { + "const": "discovery" + }, + "data": { + "type": "object", + "required": [ + "query" + ], + "properties": { + "query": { + "type": "string" + }, + "filters": { + "type": "array", + "items": { + "$ref": "#/definitions/Filter" + }, + "minItems": 1, + "maxItems": 100 + }, + "keywords": { + "type": "array", + "items": { + "$ref": "#/definitions/Keyword" + }, + "minItems": 1, + "maxItems": 100 + }, + "menus": { + "type": "array", + "items": { + "$ref": "#/definitions/Identifier" + }, + "minItems": 1, + "maxItems": 100 + }, + "federation": { + "type": "array", + "items": { + "type": "object", + "properties": { + "appId": { + "$ref": "#/definitions/Identifier" + }, + "exclude": { + "type": "boolean" + } + } + } + } + } + } + } + } + ], + "examples": [ + { + "action": "discovery", + "context": { + "source": "voice" + }, + "data": { + "query": "Bill Murray Comedies in 4K", + "filters": [ + { + "key": "videoResolution", + "value": "UHD" + } + ], + "keywords": [ + { + "keyword": "Bill Murray", + "type": "Person", + "appId": "FooApp" + }, + { + "keyword": "Comedies", + "type": "Genre", + "appId": "FooApp" + } + ], + "menus": [ + "abcdef", + "ghijkl" + ], + "federation": [ + { + "appId": "BarApp", + "exclude": false + } + ] + } + } + ] + }, + "EntityAppSelectionIntent": { + "description": "A Firebolt compliant representation of a user intention to navigate to a specific entity that could be served by more than one app.", + "title": "EntityAppSelectionIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "required": [ + "data" + ], + "properties": { + "action": { + "const": "entityAppSelection" + }, + "data": { + "type": "object", + "required": [ + "query", + "entity", + "apps" + ], + "properties": { + "query": { + "type": "string" + }, + "entity": { + "anyOf": [ + { + "$ref": "#/definitions/MovieEntity" + }, + { + "$ref": "#/definitions/TVEpisodeEntity" + }, + { + "$ref": "#/definitions/TVSeriesEntity" + }, + { + "$ref": "#/definitions/TVSeasonEntity" + }, + { + "$ref": "#/definitions/AdditionalEntity" + } + ] + }, + "apps": { + "type": "array", + "items": { + "type": "object", + "properties": { + "appId": { + "$ref": "#/definitions/Identifier" + }, + "entity": { + "anyOf": [ + { + "$ref": "#/definitions/MovieEntity" + }, + { + "$ref": "#/definitions/TVEpisodeEntity" + }, + { + "$ref": "#/definitions/TVSeriesEntity" + }, + { + "$ref": "#/definitions/TVSeasonEntity" + }, + { + "$ref": "#/definitions/AdditionalEntity" + } + ] + } + } + }, + "minItems": 2 + }, + "menus": { + "type": "array", + "items": { + "$ref": "#/definitions/Identifier" + }, + "minItems": 1, + "maxItems": 100 + }, + "federation": { + "type": "array", + "items": { + "type": "object", + "properties": { + "appId": { + "$ref": "#/definitions/Identifier" + }, + "exclude": { + "type": "boolean" + } + } + } + } + } + } + } + } + ], + "examples": [ + { + "action": "entityAppSelection", + "context": { + "source": "voice" + }, + "data": { + "query": "the departed", + "entity": { + "entityType": "program", + "programType": "movie", + "entityId": "departed-merlin-id" + }, + "apps": [ + { + "appId": "hbo", + "entity": { + "entityType": "program", + "programType": "movie", + "entityId": "departed-hbo-id" + } + }, + { + "appId": "netflix", + "entity": { + "entityType": "program", + "programType": "movie", + "entityId": "departed-netflix-id" + } + } + ], + "federation": [ + { + "appId": "netflix", + "exclude": true + } + ], + "menusIds": [ + "123" + ] + } + } + ] + }, + "ButtonIntent": { + "description": "A Firebolt compliant representation of a user intention to interact with their device in a way analogous to pressing one of the remote buttons.", + "title": "ButtonIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "button" + }, + "data": { + "type": "object", + "required": [ + "operation" + ], + "properties": { + "operation": { + "type": "string", + "enum": [ + "down", + "up", + "prev", + "next", + "enter", + "exit", + "info", + "menu", + "back", + "cancel", + "record" + ] + } + }, + "additionalProperties": false + } + } + } + ], + "examples": [ + { + "action": "button", + "data": { + "operation": "menu" + }, + "context": { + "source": "voice" + } + } + ] + }, + "VolumeIntent": { + "description": "A Firebolt compliant representation of a user intention to change the device volume.", + "title": "VolumeIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "volume" + }, + "data": { + "anyOf": [ + { + "type": "object", + "properties": { + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "toggle": { + "const": true + } + }, + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "value": { + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "relative": { + "const": true + } + }, + "additionalProperties": false + } + ] + } + } + } + ], + "examples": [ + { + "action": "volume", + "data": { + "toggle": true + }, + "context": { + "source": "voice" + } + }, + { + "action": "volume", + "data": { + "value": 0.7 + }, + "context": { + "source": "voice" + } + }, + { + "action": "volume", + "data": { + "value": 0.1, + "relative": true + }, + "context": { + "source": "voice" + } + } + ] + }, + "PowerIntent": { + "description": "A Firebolt compliant representation of a user intention to turn their device on or off.", + "title": "PowerIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "power" + }, + "data": { + "$ref": "#/definitions/BooleanToggle" + } + } + } + ], + "examples": [ + { + "action": "power", + "data": { + "value": false + }, + "context": { + "source": "voice" + } + }, + { + "action": "power", + "data": { + "toggle": true + }, + "context": { + "source": "voice" + } + } + ] + }, + "MicrophoneIntent": { + "description": "A Firebolt compliant representation of a user intention to turn their microphone on or off.", + "title": "MicrophoneIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "microphone" + }, + "data": { + "$ref": "#/definitions/BooleanToggle" + } + } + } + ], + "examples": [ + { + "action": "microphone", + "data": { + "value": false + }, + "context": { + "source": "voice" + } + }, + { + "action": "microphone", + "data": { + "toggle": true + }, + "context": { + "source": "voice" + } + } + ] + }, + "InputIntent": { + "description": "A Firebolt compliant representation of a user intention to change which video input is active.", + "title": "InputIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "input" + }, + "data": { + "type": "object", + "required": [ + "interface" + ], + "properties": { + "interface": { + "type": "string", + "enum": [ + "hdmi", + "rca", + "vga", + "etc..." + ] + }, + "number": { + "type": "integer", + "minimum": 1, + "maximum": 100 + } + }, + "additionalProperties": false + } + } + } + ], + "examples": [ + { + "action": "input", + "data": { + "interface": "hdmi" + }, + "context": { + "source": "voice" + } + }, + { + "action": "input", + "data": { + "interface": "hdmi", + "number": 1 + }, + "context": { + "source": "voice" + } + } + ] + }, + "PauseIntent": { + "description": "A Firebolt compliant representation of a user intention to pause/unpause in-progress playback.", + "title": "PauseIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "pause" + }, + "data": { + "$ref": "#/definitions/BooleanToggle" + } + } + } + ], + "examples": [ + { + "action": "pause", + "data": { + "value": false + }, + "context": { + "source": "voice" + } + }, + { + "action": "pause", + "data": { + "toggle": true + }, + "context": { + "source": "voice" + } + } + ] + }, + "PlaybackSpeedIntent": { + "description": "A Firebolt compliant representation of a user intention to change the speed of in-progress playback.", + "title": "PlaybackSpeedIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "speed" + }, + "data": { + "type": "object", + "properties": { + "value": { + "type": "number", + "exclusiveMinimum": 0, + "maximum": 4 + }, + "toggle": { + "type": "boolean" + } + }, + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": false + } + } + } + ], + "examples": [ + { + "action": "speed", + "data": { + "value": 2 + }, + "context": { + "source": "voice" + } + }, + { + "action": "speed", + "data": { + "toggle": true + }, + "context": { + "source": "voice" + } + } + ] + }, + "TrickPlayIntent": { + "description": "A Firebolt compliant representation of a user intention to fast-forward or rewind in-progress playback.", + "title": "TrickPlayIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "trickplay" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/DirectionalOperation" + }, + { + "type": "object", + "properties": { + "speed": { + "type": "number", + "exclusiveMinimum": 0, + "maximum": 10 + } + }, + "propertyNames": { + "enum": [ + "direction", + "speed" + ] + } + } + ] + } + } + } + ], + "examples": [ + { + "action": "trickplay", + "data": { + "direction": "forward", + "speed": 2 + }, + "context": { + "source": "voice" + } + }, + { + "action": "trickplay", + "data": { + "direction": "backward", + "speed": 2 + }, + "context": { + "source": "voice" + } + } + ] + }, + "SeekIntent": { + "description": "A Firebolt compliant representation of a user intention to seek to a different time for in-progress playback.", + "title": "SeekIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "seek" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/DirectionalOperation" + }, + { + "type": "object", + "properties": { + "seconds": { + "type": "number", + "minimum": 0, + "maximum": 1800 + } + }, + "propertyNames": { + "enum": [ + "direction", + "seconds" + ] + } + } + ] + } + } + } + ], + "examples": [ + { + "action": "seek", + "data": { + "seconds": 300 + }, + "context": { + "source": "voice" + } + }, + { + "action": "seek", + "data": { + "direction": "forward", + "seconds": 30 + }, + "context": { + "source": "voice" + } + }, + { + "action": "seek", + "data": { + "direction": "backward", + "seconds": 30 + }, + "context": { + "source": "voice" + } + } + ] + }, + "SkipIntent": { + "description": "A Firebolt compliant representation of a user intention to skip a scene/chapter/ad during in-progress playback.", + "title": "SkipIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "skip" + }, + "data": { + "allOf": [ + { + "$ref": "#/definitions/DirectionalOperation" + }, + { + "type": "object", + "properties": { + "count": { + "type": "number", + "exclusiveMinimum": 0, + "maximum": 100 + } + }, + "propertyNames": { + "enum": [ + "direction", + "count" + ] + } + } + ] + } + } + } + ], + "examples": [ + { + "action": "skip", + "data": { + "direction": "forward", + "count": 1 + }, + "context": { + "source": "voice" + } + }, + { + "action": "skip", + "data": { + "direction": "backward", + "count": 1 + }, + "context": { + "source": "voice" + } + } + ] + }, + "ClosedCaptionsIntent": { + "description": "A Firebolt compliant representation of a user intention to enable/disable closed captions.", + "title": "ClosedCaptionsIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "closedcaptions" + }, + "data": { + "$ref": "#/definitions/BooleanToggle" + } + } + } + ], + "examples": [ + { + "action": "closedcaptions", + "data": { + "value": false + }, + "context": { + "source": "voice" + } + }, + { + "action": "closedcaptions", + "data": { + "toggle": true + }, + "context": { + "source": "voice" + } + } + ] + }, + "AudioDescriptionIntent": { + "description": "A Firebolt compliant representation of a user intention to enable/disable audio descriptions.", + "title": "AudioDescriptionIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "audiodescriptions" + }, + "data": { + "$ref": "#/definitions/BooleanToggle" + } + } + } + ], + "examples": [ + { + "action": "audiodescriptions", + "data": { + "value": false + }, + "context": { + "source": "voice" + } + }, + { + "action": "audiodescriptions", + "data": { + "toggle": true + }, + "context": { + "source": "voice" + } + } + ] + }, + "MessageIntent": { + "description": "A Firebolt compliant representation of a platform intention to display a message on the device.", + "title": "MessageIntent", + "allOf": [ + { + "$ref": "#/definitions/Intent" + }, + { + "$ref": "#/definitions/IntentProperties" + }, + { + "type": "object", + "properties": { + "action": { + "const": "message" + }, + "data": { + "type": "object", + "properties": { + "value": { + "type": "string" + } + } + } + } + } + ], + "examples": [ + { + "action": "message", + "data": { + "value": "Here's a message" + }, + "context": { + "source": "voice" + } + } + ] + }, + "Identifier": { + "type": "string" + }, + "Filter": { + "type": "object", + "properties": { + "key": { + "type": "string" + }, + "value": { + "type": "string" + } + } + }, + "Keyword": { + "type": "object", + "properties": { + "keyword": { + "type": "string" + }, + "type": { + "type": "string" + }, + "appId": { + "$ref": "#/definitions/Identifier" + } + } + }, + "DirectionalOperation": { + "type": "object", + "properties": { + "direction": { + "type": "string", + "enum": [ + "forward", + "backward" + ] + } + } + }, + "BooleanToggle": { + "type": "object", + "properties": { + "value": { + "type": "boolean" + }, + "toggle": { + "const": true + } + }, + "minProperties": 1, + "maxProperties": 1, + "additionalProperties": false + }, + "IntentMessage": { + "type": "object", + "properties": { + "type": { + "type": "string", + "pattern": "^xrn:firebolt:intent:(app|platform):[a-zA-Z]+$" + } + }, + "required": [ + "type" + ] + } + } +} \ No newline at end of file diff --git a/src/schemas/lifecycle.json b/src/schemas/lifecycle.json new file mode 100644 index 000000000..7613d5286 --- /dev/null +++ b/src/schemas/lifecycle.json @@ -0,0 +1,59 @@ +{ + "title": "Lifecycle", + "$id": "https://meta.rdkcentral.com/firebolt/schemas/lifecycle", + "oneOf": [ + { + "$ref": "#/definitions/LifecycleState" + }, + { + "$ref": "#/definitions/CloseReason" + } + ], + "definitions": { + "LifecycleState": { + "title": "LifecycleState", + "description": "The application lifecycle state", + "type": "string", + "enum": [ + "initializing", + "inactive", + "foreground", + "background", + "unloading", + "suspended" + ] + }, + "CloseReason": { + "title": "CloseReason", + "description": "The application close reason", + "type": "string", + "enum": [ + "remoteButton", + "userExit", + "done", + "error" + ] + }, + "CreateParameters": { + "title": "CreateParameters", + "description": "A an object describing the initialization parameters passed to an app during the create method.", + "type": "object", + "required": [ + "preload" + ], + "properties": { + "preload": { + "type": "boolean" + }, + "preloadReason": { + "type": "string", + "enum": [ + "boot", + "restart", + "user" + ] + } + } + } + } + } \ No newline at end of file diff --git a/src/schemas/localization.json b/src/schemas/localization.json new file mode 100644 index 000000000..0e6d17471 --- /dev/null +++ b/src/schemas/localization.json @@ -0,0 +1,46 @@ +{ + "title": "Localization", + "$id": "https://meta.rdkcentral.com/firebolt/schemas/localization", + "oneOf": [ + { + "$ref": "#/definitions/Locality" + }, + { + "$ref": "#/definitions/CountryCode" + }, + { + "$ref": "#/definitions/Language" + }, + { + "$ref": "#/definitions/Locale" + }, + { + "$ref": "#/definitions/TimeZone" + } + ], + "definitions": { + "CountryCode": { + "type": "string", + "pattern": "^[A-Z]{2}$" + }, + "Language": { + "type": "string", + "pattern": "^[A-Za-z]{2}$" + }, + "ISO639_2Language": { + "type": "string", + "pattern": "^[a-z]{3}$" + }, + "Locality": { + "type": "string" + }, + "Locale": { + "type": "string", + "pattern": "^[a-zA-Z]+([a-zA-Z0-9\\-]*)$" + }, + "TimeZone": { + "type": "string", + "pattern": "^[-+_\/ A-Za-z 0-9]*$" + } + } +} diff --git a/src/schemas/secondscreen.json b/src/schemas/secondscreen.json index 03ce1593b..9a44c6824 100644 --- a/src/schemas/secondscreen.json +++ b/src/schemas/secondscreen.json @@ -1,6 +1,6 @@ { - "$id": "https://meta.comcast.com/firebolt/secondscreen", "title": "SecondScreen", + "$id": "https://meta.rdkcentral.com/firebolt/schemas/secondscreen", "anyOf": [ { "$ref": "#/definitions/SecondScreenEvent" } ], diff --git a/src/schemas/types.json b/src/schemas/types.json new file mode 100644 index 000000000..985766b7d --- /dev/null +++ b/src/schemas/types.json @@ -0,0 +1,194 @@ +{ + "title": "Types", + "$id": "https://meta.rdkcentral.com/firebolt/schemas/types", + "definitions": { + "SemanticVersion": { + "title": "SemanticVersion", + "type": "object", + "properties": { + "major": { + "type": "integer", + "minimum": 0 + }, + "minor": { + "type": "integer", + "minimum": 0 + }, + "patch": { + "type": "integer", + "minimum": 0 + }, + "readable": { + "type": "string" + } + }, + "required": [ + "major", + "minor", + "patch", + "readable" + ], + "additionalProperties": false + }, + "AudioProfile": { + "title": "AudioProfile", + "type": "string", + "enum": [ + "stereo", + "dolbyDigital5.1", + "dolbyDigital7.1", + "dolbyDigital5.1+", + "dolbyDigital7.1+", + "dolbyAtmos" + ] + }, + "BooleanMap": { + "title": "BooleanMap", + "type": "object", + "additionalProperties": { + "type": "boolean" + } + }, + "FlatMap": { + "type": "object", + "additionalProperties": { + "oneOf": [ + { + "type": "string" + }, + { + "type": "number" + }, + { + "type": "boolean" + } + ] + } + }, + "LocalizedString": { + "title": "LocalizedString", + "description": "Localized string supports either a simple `string` or a Map of language codes to strings. When using a simple `string`, the current preferred langauge from `Localization.langauge()` is assumed.", + "oneOf": [ + { + "type": "string" + }, + { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + ], + "examples": [ + "A simple string, with no language code", + { + "en": "This is english", + "es": "esto es español" + } + ] + }, + "ListenResponse": { + "title": "ListenResponse", + "type": "object", + "required": [ + "event", + "listening" + ], + "properties": { + "event": { + "type": "string", + "pattern": "[a-zA-Z]+\\.on[A-Z][a-zA-Z]+" + }, + "listening": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "ProviderRequest": { + "title": "ProviderRequest", + "type": "object", + "required": [ + "correlationId" + ], + "additionalProperties": false, + "properties": { + "correlationId": { + "type": "string", + "description": "The id that was passed in to the event that triggered a provider method to be called" + }, + "parameters": { + "description": "The result of the provider response.", + "type": ["object", "null"] + } + } + }, + "ProviderResponse": { + "title": "ProviderResponse", + "type": "object", + "required": [ + "correlationId" + ], + "additionalProperties": false, + "properties": { + "correlationId": { + "type": "string", + "description": "The id that was passed in to the event that triggered a provider method to be called" + }, + "result": { + "description": "The result of the provider response." + } + } + }, + "Timeout": { + "title": "Timeout", + "description": "Defines the timeout in seconds. If the threshold for timeout is passed for any operation without a result it will throw an error.", + "type": "integer", + "default": 0, + "minimum": 0, + "maximum": 9999 + }, + "Dimensions": { + "type": "object", + "properties": { + "width": { + "type": "integer", + "minimum": 1 + }, + "height": { + "type": "integer", + "minimum": 1 + } + }, + "required": [ "width", "height" ] + }, + "Image": { + "type": "object", + "properties": { + "uri": { + "description": "URI for the image. May be a relative path (e.g. ./foo/image.png) or absolute (e.g. https://foo.com/bar.png) depending on usage.", + "type": "string" + }, + "aspectRatio": { + "description": "The aspect ratio of the image", + "type": "string", + "pattern": "^\\d+x\\d+" + }, + "description": { + "description": "Description of the image.", + "type": "string" + }, + "type": { + "description": "The type of the image.", + "type": "string", + "enum": [ + "icon", "poster", "banner", "splash", "hero" + ] + } + }, + "required": [ + "uri", "aspectRatio", "type" + ] + } + } +} \ No newline at end of file diff --git a/src/sdks/core/package.json b/src/sdks/core/package.json index 6613ee3f0..a1787193b 100644 --- a/src/sdks/core/package.json +++ b/src/sdks/core/package.json @@ -9,23 +9,26 @@ }, "type": "module", "scripts": { - "validate": "npx firebolt-openrpc validate --input ./dist/firebolt-core-open-rpc.json", - "sdk": "npx firebolt-openrpc sdk --input ./dist/firebolt-core-open-rpc.json --template ./src/js --output ./build/javascript/src --static-module Platform", - "native": "npx firebolt-openrpc sdk --input ./dist/firebolt-core-open-rpc.json --template ./src/cpp --output ./build/c/src --static-module Platform --language ../../../node_modules/@firebolt-js/openrpc/languages/c", - "compile": "cd ../../.. && npm run compile", - "slice": "npx firebolt-openrpc slice -i ../../../dist/firebolt-open-rpc.json --sdk ./sdk.config.json -o ./dist/firebolt-core-open-rpc.json", - "docs": "npx firebolt-openrpc docs --input ./dist/firebolt-core-open-rpc.json --output build/docs/markdown --as-path", - "wiki": "npx firebolt-openrpc docs --input ./dist/firebolt-core-open-rpc.json --output build/docs/markdown", - "dist:notest": "npm run clean && npm run slice && npm run validate && npm run sdk && npm run docs && npm run dist:copy && echo 'Firebolt Core SDK /dist/ is ready.\n'", - "dist:copy": "npm run dist:copy:sdk && npm run dist:copy:docs", - "dist:copy:sdk": "mkdirp ./dist && cp -R build/javascript/src dist/lib && cp ./dist/firebolt-core-open-rpc.json ../../../dist/firebolt-core-open-rpc.json", - "dist:copy:docs": "mkdirp ./dist && cp -R build/docs/markdown dist/docs", - "dist": "npm run dist:notest && npm run test", - "clean": "rm -rf ./build && rm -rf ./dist", - "test:setup": "rm -rf test/transpiled-suite && npx tsc --target es6 --moduleResolution node --outDir test/transpiled-suite", - "test": "npm run test:setup && NODE_OPTIONS=--experimental-vm-modules npx --config=jest.config.json --detectOpenHandles jest", - "prepack": "node ../../js/version.mjs validate && npm run broilerplate", - "broilerplate": "rm ./CONTRIBUTING.md && cp ../../../CONTRIBUTING.md ./CONTRIBUTING.md && rm ./LICENSE && cp ../../../LICENSE ./LICENSE && rm ./NOTICE && cp ../../../NOTICE ./NOTICE" + "validate": "npx firebolt-openrpc validate --input ./dist/firebolt-open-rpc.json", + "sdk": "npx firebolt-openrpc sdk --server ./dist/firebolt-open-rpc.json --client ./dist/firebolt-app-open-rpc.json --template ./src/js --output ./build/javascript/src", + "native": "npx firebolt-openrpc sdk --server ./dist/firebolt-open-rpc.json --client ./dist/firebolt-app-open-rpc.json --template ./src/cpp --output ./build/c/src --static-module Platform --language ../../../node_modules/@firebolt-js/openrpc/languages/cpp", + "compile": "cd ../../.. ; npm run compile", + "slice": "npm run slice:server; npm run slice:client", + "slice:server": "npx firebolt-openrpc slice -i ../../../dist/firebolt-open-rpc.json --sdk ./sdk.config.json -o ./dist/firebolt-open-rpc.json", + "slice:client": "npx firebolt-openrpc slice -i ../../../dist/firebolt-app-open-rpc.json --sdk ./sdk.config.json -o ./dist/firebolt-app-open-rpc.json", + "docs": "npx firebolt-openrpc docs --server ./dist/firebolt-open-rpc.json --client ./dist/firebolt-app-open-rpc.json --output build/docs/markdown --as-path", + "wiki": "npx firebolt-openrpc docs --input ./dist/firebolt-open-rpc.json --output build/docs/markdown", + "dist:notest": "npm run clean ; npm run slice ; npm run validate ; npm run sdk ; npm run docs ; npm run prettier ; npm run dist:copy ; echo 'Firebolt Core SDK /dist/ is ready.\n'", + "dist:copy": "npm run dist:copy:sdk ; npm run dist:copy:docs", + "dist:copy:sdk": "mkdirp ./dist ; cp -R build/javascript/src dist/lib ; cp ./dist/firebolt-open-rpc.json ../../../dist/firebolt-core-open-rpc.json ; cp ./dist/firebolt-app-open-rpc.json ../../../dist/firebolt-core-app-open-rpc.json", + "dist:copy:docs": "mkdirp ./dist ; cp -R build/docs/markdown dist/docs", + "dist": "npm run dist:notest ; npm run test", + "clean": "rm -rf ./build ; rm -rf ./dist", + "test:setup": "rm -rf test/transpiled-suite ; npx tsc --target es6 --moduleResolution node --outDir test/transpiled-suite", + "test": "npm run test:setup ; NODE_OPTIONS=--experimental-vm-modules npx --config=jest.config.json --detectOpenHandles jest", + "prepack": "node ../../js/version.mjs validate ; npm run broilerplate", + "broilerplate": "rm ./CONTRIBUTING.md ; cp ../../../CONTRIBUTING.md ./CONTRIBUTING.md ; rm ./LICENSE ; cp ../../../LICENSE ./LICENSE ; rm ./NOTICE ; cp ../../../NOTICE ./NOTICE", + "prettier": "prettier build/**/*.mjs --write --parser babel ; prettier build/**/*.md --write --parser markdown" }, "repository": { "type": "git", @@ -40,6 +43,7 @@ "devDependencies": { "jest": "^28.1.0", "jest-environment-jsdom": "^28.1.3", + "prettier": "^3.1.0", "typescript": "^4.6.4" }, "keywords": [ diff --git a/src/sdks/core/sdk.config.json b/src/sdks/core/sdk.config.json index f406f8bea..b680db141 100644 --- a/src/sdks/core/sdk.config.json +++ b/src/sdks/core/sdk.config.json @@ -87,10 +87,35 @@ { "module": "Lifecycle", "use": [ - "xrn:firebolt:capability:lifecycle:ready", - "xrn:firebolt:capability:lifecycle:state" + "xrn:firebolt:capability:lifecycle:state", + "xrn:firebolt:capability:lifecycle:application", + "xrn:firebolt:capability:lifecycle:activatable", + "xrn:firebolt:capability:lifecycle:sleepable" + ], + "provide": [ + "xrn:firebolt:capability:lifecycle:application", + "xrn:firebolt:capability:lifecycle:activatable", + "xrn:firebolt:capability:lifecycle:sleepable" ] }, + { + "module": "Application", + "provide": [ + "xrn:firebolt:capability:lifecycle:application" + ] + }, + { + "module": "Activatable", + "provide": [ + "xrn:firebolt:capability:lifecycle:activatable" + ] + }, + { + "module": "Sleepable", + "provide": [ + "xrn:firebolt:capability:lifecycle:sleepable" + ] + }, { "module": "Localization", "use": [ diff --git a/src/sdks/core/src/js/sdk/Device/index.mjs b/src/sdks/core/src/js/sdk/Device/index.mjs index 86f9fb39a..ed129a42c 100644 --- a/src/sdks/core/src/js/sdk/Device/index.mjs +++ b/src/sdks/core/src/js/sdk/Device/index.mjs @@ -22,7 +22,7 @@ function version() { return new Promise( (resolve, reject) => { - Transport.send('device', 'version').then( v => { + Gateway.request('Device.version').then( v => { v = v || {} v.sdk = v.sdk || {} v.sdk.major = parseInt('${major}') @@ -41,7 +41,7 @@ function version() { export default { /* ${EVENTS_ENUM} */ - /* ${ENUMS} */ + /* ${ENUM_IMPLEMENTATIONS} */ version, /* ${METHOD_LIST} */ diff --git a/src/sdks/core/src/js/sdk/Lifecycle/defaults.mjs b/src/sdks/core/src/js/sdk/Lifecycle/defaults.mjs index 324d4267a..47ca2e9dc 100644 --- a/src/sdks/core/src/js/sdk/Lifecycle/defaults.mjs +++ b/src/sdks/core/src/js/sdk/Lifecycle/defaults.mjs @@ -18,11 +18,11 @@ import MockTransport from '../Transport/MockTransport.mjs' -let inactive = 0 /* ${EXAMPLE:onInactive} */ -let foreground = 0 /* ${EXAMPLE:onForeground} */ -let background = 0 /* ${EXAMPLE:onBackground} */ -let suspended = 0 /* ${EXAMPLE:onSuspended} */ -let unloading = 0 /* ${EXAMPLE:onUnloading} */ +// let inactive = 0 /* {EXAMPLE:inactive} */ +// let foreground = 0 /* {EXAMPLE:foreground} */ +// let background = 0 /* {EXAMPLE:background} */ +// let suspended = 0 /* {EXAMPLE:suspended} */ +// let unloading = 0 /* {EXAMPLE:unloading} */ const emit = (value) => { MockTransport.event('Lifecycle', value.state, value) @@ -32,24 +32,22 @@ const win = typeof window !== 'undefined' ? window : {} const automation = win.__firebolt ? !!win.__firebolt.automation : false export default { - ready: function() { - inactive.previous = 'initializing' - setTimeout(() => emit(inactive), automation ? 1 : 500) - foreground.previous = 'inactive' - setTimeout(() => emit(foreground), automation ? 2 : 1000) + provideApplication: async function() { + await MockTransport.request('Application.create', { params: { preload: false }}) + await MockTransport.request('Activatable.activate', { intent: { action: "launch" }}) }, close: function(params) { let reason = params.reason if (reason === 'remoteButton') { - inactive.previous = 'foreground' - setTimeout(() => emit(inactive), automation ? 1 : 500) +// inactive.previous = 'foreground' +// setTimeout(() => emit(inactive), automation ? 1 : 500) } else if (['userExit', 'error'].includes(reason)) { - inactive.previous = 'foreground' - unloading.previous = 'inactive' - setTimeout(() => emit(inactive), automation ? 1 : 500) - setTimeout(() => emit(unloading), automation ? 2 : 1000) + // inactive.previous = 'foreground' + // unloading.previous = 'inactive' + // setTimeout(() => emit(inactive), automation ? 1 : 500) + // setTimeout(() => emit(unloading), automation ? 2 : 1000) } else { throw "Invalid close reason" diff --git a/src/sdks/core/src/js/sdk/Lifecycle/index.mjs b/src/sdks/core/src/js/sdk/Lifecycle/index.mjs index e0184ff91..ee8526c60 100644 --- a/src/sdks/core/src/js/sdk/Lifecycle/index.mjs +++ b/src/sdks/core/src/js/sdk/Lifecycle/index.mjs @@ -60,7 +60,7 @@ export default { /* ${EVENTS_ENUM} */ - /* ${ENUMS} */ + /* ${ENUM_IMPLEMENTATIONS} */ ready, state, diff --git a/src/sdks/core/src/js/sdk/Metrics/index.mjs b/src/sdks/core/src/js/sdk/Metrics/index.mjs index 630914358..86499a2da 100644 --- a/src/sdks/core/src/js/sdk/Metrics/index.mjs +++ b/src/sdks/core/src/js/sdk/Metrics/index.mjs @@ -21,15 +21,15 @@ /* ${INITIALIZATION} */ function ready() { - return Transport.send('metrics', 'ready', {}) + return Gateway.request('Metrics.ready', {}) } function signIn() { - return Transport.send('metrics', 'signIn', {}) + return Gateway.request('Metrics.signIn', {}) } function signOut() { - return Transport.send('metrics', 'signOut', {}) + return Gateway.request('Metrics.signOut', {}) } @@ -38,7 +38,7 @@ function signOut() { export default { /* ${EVENTS_ENUM} */ - /* ${ENUMS} */ + /* ${ENUM_IMPLEMENTATIONS} */ /* ${METHOD_LIST} */ } diff --git a/src/sdks/core/test/suite/declarations.test.ts b/src/sdks/core/test/suite/declarations.test.ts index 8ec319eeb..af93acbe4 100644 --- a/src/sdks/core/test/suite/declarations.test.ts +++ b/src/sdks/core/test/suite/declarations.test.ts @@ -2,16 +2,16 @@ import Setup from "../../../../../test/Setup" import { sent } from "../../../../../test/Setup" import { test, expect } from "@jest/globals" -import { Lifecycle, Device, Discovery } from "../../build/javascript/src/firebolt"; +import { Lifecycle, Device, Discovery, Entertainment } from "../../build/javascript/src/firebolt"; let listenerId:number -test('Able to get TypeScript listenerId', () => { - return Lifecycle.listen('inactive', () => {}).then((id:number) => { - listenerId = id - expect(listenerId > 0).toBe(true) - }) -}) +// test('Able to get TypeScript listenerId', () => { +// return Lifecycle.listen('inactive', () => {}).then((id:number) => { +// listenerId = id +// expect(listenerId > 0).toBe(true) +// }) +// }) test('Able to get resolution', () => { return Device.screenResolution().then( (res:[number, number]) => { @@ -39,7 +39,7 @@ const result: Discovery.EntityInfoResult = { "identifiers": { "entityId": "123" }, - "programType": Discovery.ProgramType.MOVIE, + "programType": Entertainment.ProgramType.MOVIE, "title": "A title" }, "expires": "" @@ -67,7 +67,7 @@ test('entityInfo pull', () => { return Promise.resolve(result) }) - Setup.emit('discovery', 'pullEntityInfo', { + Setup.emit('Discovery', 'pullEntityInfo', { correlationId: '123', parameters: { entityId: '123' diff --git a/src/sdks/core/test/suite/device.test.ts b/src/sdks/core/test/suite/device.test.ts index 7f9601cac..84ddfd537 100644 --- a/src/sdks/core/test/suite/device.test.ts +++ b/src/sdks/core/test/suite/device.test.ts @@ -17,33 +17,33 @@ */ import { test, expect } from "@jest/globals"; -import { Device } from "../../build/javascript/src/firebolt"; +import { Device, Types } from "../../build/javascript/src/firebolt"; test("Device.version()", () => { const debug: string = "Non-parsable build info for error logging only." - const os:Device.SemanticVersion = { + const os:Types.SemanticVersion = { major: 0, minor: 1, patch: 0, readable: "Firebolt OS v0.1.0" } - const sdk:Device.SemanticVersion = { + const sdk:Types.SemanticVersion = { major: 0, minor: 8, patch: 0, readable: "The Firebolt JS SDK", } - const firmware:Device.SemanticVersion = { + const firmware:Types.SemanticVersion = { major: 1, minor: 2, patch: 3, readable: "Device Firmware v1.2.3" } - const api:Device.SemanticVersion = { + const api:Types.SemanticVersion = { major: 0, minor: 8, patch: 0, @@ -112,17 +112,17 @@ test("Device.make()", () => { }); test("Device.hdcp()", () => { - const expectedOutput: Device.BooleanMap = { + const expectedOutput: Types.BooleanMap = { "hdcp1.4": true, "hdcp2.2": true, }; - return Device.hdcp().then((res: Device.BooleanMap) => { + return Device.hdcp().then((res: Types.BooleanMap) => { expect(res).toEqual(expectedOutput); }); }); test("Device.hdcp(subscriber)", () => { - return Device.hdcp((supportedHdrProfiles: Device.BooleanMap) => {}).then( + return Device.hdcp((supportedHdrProfiles: Types.BooleanMap) => {}).then( (res: number) => { expect(res > 0).toBe(true); } diff --git a/src/sdks/core/test/suite/discovery.test.ts b/src/sdks/core/test/suite/discovery.test.ts index 638c57432..445d3ac47 100644 --- a/src/sdks/core/test/suite/discovery.test.ts +++ b/src/sdks/core/test/suite/discovery.test.ts @@ -17,7 +17,7 @@ */ import { test, expect } from "@jest/globals"; -import { Discovery } from "../../build/javascript/src/firebolt"; +import { Discovery, Entertainment } from "../../build/javascript/src/firebolt"; test("watched(entityId)", () => { return Discovery.watched("abc").then((success: boolean) => { @@ -50,7 +50,7 @@ test("entityInfo(EntityInfoResult)", () => { }, title: "Test", entityType: "program", - programType: Discovery.ProgramType.MOVIE, + programType: Entertainment.ProgramType.MOVIE, }, }; return Discovery.entityInfo(dummyData).then((res: boolean) => { @@ -65,7 +65,7 @@ test("watchNext(title?: LocalizedString, identifiers: ContentIdentifiers, expire }); test("entitlements(entitlements: Entitlement[])", () => { - const dummyData: Array = [ + const dummyData: Array = [ { entitlementId: "test123", startTime: `${new Date().getTime()}`, @@ -84,7 +84,7 @@ test("launch(appId)", () => { }); test("signIn(appId)", () => { - const dummyData: Array = [ + const dummyData: Array = [ { entitlementId: "test123", startTime: `${new Date().getTime()}`, @@ -113,7 +113,7 @@ test("purchasedContent()", () => { }, title: "TEST", entityType: "program", - programType: Discovery.ProgramType.MOVIE, + programType: Entertainment.ProgramType.MOVIE, }, ], }; diff --git a/src/sdks/core/test/suite/federation.test.ts b/src/sdks/core/test/suite/federation.test.ts index 6e8dab8e1..120e1030a 100644 --- a/src/sdks/core/test/suite/federation.test.ts +++ b/src/sdks/core/test/suite/federation.test.ts @@ -20,12 +20,12 @@ // setup for Firebolt SDK/TL handshake import { test, expect, beforeAll } from "@jest/globals"; -import { Lifecycle, Discovery } from '../../build/javascript/src/firebolt' +import { Lifecycle, Discovery, Entertainment, Types } from '../../build/javascript/src/firebolt' // holds test transport layer state, e.g. callback const state = { - callback:(a:string) => {} + callback:(a:object) => {} } let pullEntityInfoListenCount = 0 @@ -40,9 +40,8 @@ let secondRegistrationFailed = false beforeAll(() => { return new Promise( (resolve, reject) => { const transport = { - send: function(message: string) { + send: function(json: any) { sendCalled = true - const json = JSON.parse(message) if (json.method.toLowerCase() === 'discovery.onpullentityinfo') { // we'll assert on this later... pullEntityInfoListenCount++ @@ -54,12 +53,12 @@ beforeAll(() => { id: json.id, result: { listening: true, - event: 'discovery.onPullEntityInfo' + event: 'Discovery.onPullEntityInfo' } } // catching errors, so all tests don't fail if this breaks try { - state.callback(JSON.stringify(response)) + state.callback(response) } catch (err) { throw err @@ -71,27 +70,31 @@ beforeAll(() => { try { response = { jsonrpc: '2.0', - id: json.id, - result: { - correlationId: correlationId, - parameters: { - entityId: "345" + method: 'Discovery.pullEntityInfo', + params: { + value: { + correlationId: correlationId, + parameters: { + entityId: "345" + } } } } - state.callback(JSON.stringify(response)) + state.callback(response) - state.callback(JSON.stringify({ + state.callback({ jsonrpc: '2.0', - id: json.id, - result: { - correlationId: 'this-will-fail', - parameters: { - entityId: "this-will-fail" + method: 'Discovery.pullEntityInfo', + params: { + value: { + correlationId: 'this-will-fail', + parameters: { + entityId: "this-will-fail" + } } } - })) + }) } catch (err) { throw err @@ -111,21 +114,24 @@ beforeAll(() => { else if (!json.params.correlationId && json.params.result.entity.identifiers.entityId === "PUSH:345") { entityInfoPushed = true } - state.callback(JSON.stringify({ - jsonrpc: '2.0', - id: json.id, - result: true - })) + + setTimeout(() => { + state.callback({ + jsonrpc: '2.0', + id: json.id, + result: true + }) + }, 100) } }, - receive: function(callback: (a:string) => void) { + receive: function(callback: (a:object) => void) { // store the callback state.callback = callback } } const win:any = window; - win.__firebolt.setTransportLayer(transport) + win.__firebolt.transport = transport const result:Discovery.EntityInfoResult = { "expires": "2025-01-01T00:00:00.000Z", @@ -134,7 +140,7 @@ beforeAll(() => { "entityId": "PUSH:345" }, "entityType": "program", - "programType": Discovery.ProgramType.MOVIE, + "programType": Entertainment.ProgramType.MOVIE, "title": "Cool Runnings", "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", "releaseDate": "1993-01-01T00:00:00.000Z", @@ -156,9 +162,9 @@ beforeAll(() => { "expires": "2025-01-01T00:00:00.000Z", "entitled": true, "entitledExpires": "2025-01-01T00:00:00.000Z", - "offeringType": Discovery.OfferingType.BUY, + "offeringType": Entertainment.OfferingType.BUY, "price": 2.99, - "audioProfile": [Discovery.AudioProfile.DOLBY_ATMOS], + "audioProfile": [Types.AudioProfile.DOLBY_ATMOS], "videoQuality": ["UHD"], "audioLanguages": [ "en" @@ -180,6 +186,8 @@ beforeAll(() => { // Setup a callback that returns the correct payload Discovery.entityInfo((parameters:Discovery.EntityInfoParameters) => { + console.dir(parameters) + if (parameters.entityId === 'this-will-fail') { throw "Intentional Test failure" } @@ -196,7 +204,7 @@ beforeAll(() => { // secondRegistrationFailed = true // }) - Lifecycle.ready() + //Lifecycle.ready() }) }) @@ -209,6 +217,7 @@ test('Transport was sent each listener only once', () => { }); test('Entity Info was pulled from the app', ()=> { + expect(callbackWiredUp).toBe(true) expect(entityInfoPulled).toBe(true) expect(entityInfoReceived).toBe(true) }); diff --git a/src/sdks/core/test/suite/lazy-transport.test.ts b/src/sdks/core/test/suite/lazy-transport.test.ts index ebfb739fe..5b9c8abd0 100644 --- a/src/sdks/core/test/suite/lazy-transport.test.ts +++ b/src/sdks/core/test/suite/lazy-transport.test.ts @@ -20,13 +20,45 @@ // setup for Firebolt SDK/TL handshake const win = globalThis || window +let _queue = [] +let _callback:Function +let target + +const queue = { + + send: function(json) { + if (target) { + target.send(json) + } + else { + _queue.push(json) + } + }, + + receive: function (callback) { + _callback = callback + }, + + flush: function (transport:any) { + target = transport + transport.receive(_callback) + _queue.forEach(item => transport.send(item)) + _queue = null + } +} + +// set up a queue to hold all Firebolt messages +win.__firebolt.transport = queue + import Setup from '../../../../../test/Setup' +import { DefaultApplication } from '../../../../../test/Setup' + import { beforeAll, test, expect } from '@jest/globals'; -import { Lifecycle, Discovery } from "../../build/javascript/src/firebolt"; +import { Lifecycle, Discovery } from "../../build/javascript/src/firebolt"; // holds test transport layer state, e.g. callback type stateType = { - callback: (arg0: string) => void | null + callback: (arg0: any) => void | null } const state:stateType = { @@ -39,11 +71,9 @@ let callbackWiredUp = false let sendCalled = false const transport = { - send: function(message) { + send: function(json) { sendCalled = true - const json = JSON.parse(message) - console.log('transport.send: ' + json.method) - if (json.method.toLowerCase() === 'lifecycle.ready') { + if (json.method === 'Lifecycle.provideApplication') { // we'll assert on this later... navigateToListenCount++ if (state.callback) { @@ -52,24 +82,23 @@ const transport = { let response = { jsonrpc: '2.0', id: json.id, - result: true + result: null } // catching errors, so all tests don't fail if this breaks try { // send back the onInactive event immediately, to test for race conditions - state.callback(JSON.stringify(response)) + state.callback(response) } catch (err) { // fail silenetly (the boolean-based tests below will figure it out...) } } } - else if (json.method.toLowerCase() === 'discovery.onpullentityinfo') { + else if (json.method === 'Discovery.onPullEntityInfo') { pullEntityInfoListenCount++ } }, receive: function(callback) { - console.log('transport.receive') // store the callback state.callback = callback } @@ -90,9 +119,9 @@ beforeAll(()=> { }, 4000) }) - Lifecycle.ready() + Lifecycle.provideApplication(new DefaultApplication()) - win.__firebolt.setTransportLayer(transport) + queue.flush(transport) return p }) diff --git a/src/sdks/core/test/suite/lifecycle.test.ts b/src/sdks/core/test/suite/lifecycle.test.ts index 00d777575..0c5617a10 100644 --- a/src/sdks/core/test/suite/lifecycle.test.ts +++ b/src/sdks/core/test/suite/lifecycle.test.ts @@ -18,7 +18,7 @@ import { jest, test, expect, beforeAll } from "@jest/globals"; import { testHarness } from "../../../../../test/Setup"; -import { Lifecycle } from "../../build/javascript/src/firebolt"; +import { Lifecycle, Intents, Settings } from "../../build/javascript/src/firebolt"; let readyResolved: boolean = false; let readyCalled: boolean = false; @@ -26,9 +26,9 @@ let readyMetricCalled: boolean = false; let readyMetricCalledAfterResolve: boolean = false; testHarness.onSend = function (module: string, method: string) { - if (module === "lifecycle" && method === "ready") { + if (module === "Lifecycle" && method === "ready") { readyCalled = true; - } else if (module === "metrics" && method === "ready") { + } else if (module === "Metrics" && method === "ready") { readyMetricCalled = true; if (readyResolved) { @@ -38,125 +38,51 @@ testHarness.onSend = function (module: string, method: string) { }; const callback = jest.fn(); -const startupState: Lifecycle.LifecycleState = Lifecycle.state(); -beforeAll(() => { - Lifecycle.listen((event: string, _) => { - callback(event); - }); - - Lifecycle.once("foreground", () => { - Lifecycle.close(Lifecycle.CloseReason.USER_EXIT); - }); - - Lifecycle.once("unloading", () => { - Lifecycle.finished(); - }); - - let p = new Promise((resolve, reject) => { - Lifecycle.once("unloading", (_) => { - resolve(); - }); - }); - - Lifecycle.ready().then((_) => { - readyResolved = true; - }); - - return p; -}); - -test("Lifecycle.ready Promise resolved", () => { - expect(readyCalled).toBe(true); - expect(readyResolved).toBe(true); -}); - -test("Lifecycle.ready calls Metrics.ready", () => { - expect(readyMetricCalled).toBe(true); - expect(readyMetricCalledAfterResolve).toBe(true); -}); - -test('App starts up in the "initializing" state', () => { - expect(startupState).toBe("initializing"); -}); - -test('App moves to the "inactive" state next', () => { - expect(callback).nthCalledWith(1, "inactive"); -}); - -test('App moves to the "foreground" state next', () => { - expect(callback).nthCalledWith(2, "foreground"); -}); - -test('App moves to the "inactive" state next', () => { - expect(callback).nthCalledWith(3, "inactive"); -}); +let created, activated -test('App moves to the "unloading" state next', () => { - expect(callback).nthCalledWith(4, "unloading"); -}); +beforeAll(() => { + Settings.setLogLevel('DEBUG') -test("listen() background event.", () => { - return Lifecycle.listen("background", () => {}).then((res: number) => { - expect(res > 0).toBe(true); - }); -}); + class App implements Lifecycle.Application, Lifecycle.Activatable { + create(params: Lifecycle.CreateParameters): Promise { + created = true + return Promise.resolve(null) + } -test("once() background event.", () => { - return Lifecycle.once("background", () => {}).then((res: number) => { - expect(res > 0).toBe(true); - }); -}); + suspend(): Promise { + return Promise.resolve(null) + } -test("listen() foreground event.", () => { - return Lifecycle.listen("foreground", () => {}).then((res: number) => { - expect(res > 0).toBe(true); - }); -}); + resume(): Promise { + return Promise.resolve(null) + } -test("once() foreground event.", () => { - return Lifecycle.once("foreground", () => {}).then((res: number) => { - expect(res > 0).toBe(true); - }); -}); + destroy(): Promise { + return Promise.resolve(null) + } -test("listen() inactive event.", () => { - return Lifecycle.listen("inactive", () => {}).then((res: number) => { - expect(res > 0).toBe(true); - }); -}); + activate(intent: Intents.NavigationIntent): Promise { + activated = true + return Promise.resolve(null) + } -test("once() inactive event.", () => { - return Lifecycle.once("inactive", () => {}).then((res: number) => { - expect(res > 0).toBe(true); - }); -}); + deactivate(): Promise { + return Promise.resolve(null) + } -test("listen() suspended event.", () => { - return Lifecycle.listen("suspended", () => {}).then((res: number) => { - expect(res > 0).toBe(true); - }); -}); + } -test("once() suspended event.", () => { - return Lifecycle.once("suspended", () => {}).then((res: number) => { - expect(res > 0).toBe(true); - }); -}); + const app = new App() + Lifecycle.provideApplication(app) + Lifecycle.provideActivatable(app) +}) -test("listen() unloading event.", () => { - return Lifecycle.listen("unloading", () => {}).then((res: number) => { - expect(res > 0).toBe(true); - }); +test('App moves to the "running" state next', () => { + expect(created).toBe(true) }); -test("once() unloading event.", () => { - return Lifecycle.once("unloading", () => {}).then((res: number) => { - expect(res > 0).toBe(true); - }); +test('App moves to the "active" state next', () => { + expect(activated).toBe(true) }); -test("clear()", () => { - const result: boolean = Lifecycle.clear(-1000); - expect(result).toBeFalsy(); -}); diff --git a/src/sdks/core/test/suite/listeners-transport.test.ts b/src/sdks/core/test/suite/listeners-transport.test.ts index bec4db1b7..08dfa3d89 100644 --- a/src/sdks/core/test/suite/listeners-transport.test.ts +++ b/src/sdks/core/test/suite/listeners-transport.test.ts @@ -19,7 +19,6 @@ const win = globalThis || window; import { test, expect } from "@jest/globals"; -import { Lifecycle, Discovery } from "../../build/javascript/src/firebolt"; // holds test transport layer state, e.g. callback const state = { @@ -31,9 +30,8 @@ let callbackWiredUp: boolean = false; let sendCalled: boolean = false; const transport = { - send: function (message: string) { + send: function (json: any) { sendCalled = true; - const json = JSON.parse(message); if (json.method.toLowerCase() === "discovery.onnavigateto") { // we'll assert on this later... navigateToListenCount++; @@ -61,14 +59,21 @@ const transport = { }, }; -win.__firebolt.setTransportLayer(transport); +win.__firebolt = win.__firebolt || {} +const transportAlreadyExisted = !!win.__firebolt.transport + +win.__firebolt = { + transport +} + +import { Lifecycle, Discovery, Intents } from "../../build/javascript/src/firebolt"; // listen twice, using event-specific call FIRST -Discovery.listen("navigateTo", (value: Discovery.NavigationIntent) => { +Discovery.listen("navigateTo", (value: Intents.NavigationIntent) => { callbackWiredUp = true; }); -Discovery.listen("navigateTo", (value: Discovery.NavigationIntent) => { +Discovery.listen("navigateTo", (value: Intents.NavigationIntent) => { /* this just adds more listen calls to make sure we don't spam */ }); Discovery.listen((event: string, value: object) => { @@ -78,10 +83,11 @@ Discovery.listen((event: string, value: object) => { /* testing both listen signatures */ }); -Lifecycle.ready(); +//Lifecycle.ready(); test("Transport injected after SDK", () => { expect(callbackWiredUp).toBe(true); + expect(transportAlreadyExisted).toBe(false) }); test("Transport send method working", () => { diff --git a/src/sdks/core/test/suite/synchronous-transport.test.ts b/src/sdks/core/test/suite/synchronous-transport.test.ts index f7ab896d4..e5daef94e 100644 --- a/src/sdks/core/test/suite/synchronous-transport.test.ts +++ b/src/sdks/core/test/suite/synchronous-transport.test.ts @@ -16,41 +16,45 @@ * SPDX-License-Identifier: Apache-2.0 */ -import transport from "../../../../../test/helpers/synchronous-transport.mjs"; +const win: any = window; -// These all get set synchronously, so we'll update them as they happen -let sendCalled: boolean = false; -let inactiveListened: boolean = false; -let callbackWiredUp: boolean = false; +let sendCalled = false +let inactiveCalled = false +let _callback: Function; +let firstId: Number -transport.onSend((json) => { - // we'll assert on this later... - sendCalled = true; - if (json.method.toLowerCase() === "device.name") { - // we'll assert on this later... - inactiveListened = true; - - // we'll assert on this later... - callbackWiredUp = true; - let response = { - jsonrpc: "2.0", - id: json.id, - result: "Test Name", - }; - // catching errors, so all tests don't fail if this breaks - try { - // send back the onInactive event immediately, to test for race conditions - transport.response(response); - } catch (err) { - // fail silenetly (the boolean-based tests below will figure it out...) +win.__firebolt = { + transport: { + send: function(json: any) { + if (firstId === undefined) { + firstId = json.id + } + sendCalled = true + if (json.method === 'Lifecycle.onInactive') { + inactiveCalled = true + } + else if (json.method === 'Device.name') { + console.dir(json) + _callback && setTimeout(() => { + _callback({ + jsonrpc: '2.0', + id: json.id, + result: 'Test Name' + }) + }, 100) + } + }, + receive: function(callback: Function) { + _callback = callback } } -}); +} import { test, expect, beforeAll } from "@jest/globals"; import { Lifecycle, Device } from "../../build/javascript/src/firebolt"; +import { DefaultApplication } from '../../../../../test/Setup' -Lifecycle.ready(); +Lifecycle.provideApplication(new DefaultApplication()) // Wire up our synchronous transport layer before the SDK loads beforeAll(() => { @@ -60,21 +64,17 @@ beforeAll(() => { }); test("Transport injected before SDK", () => { - expect(transport.instantiatedBeforeSdk()).toBe(true); + // NOTE: this assumes an implementation detail that we start at 1 (we do at time of this test writing) + // this isn't the best test, since there's no requirement that we start at 1 or even use numbers + // at all (could be strings or even null). + // if this test ever fails, we should find a better way to test that we didn't miss any requests + expect(firstId).toBe(1) }); test("Transport send method working", () => { expect(sendCalled).toBe(true); }); -test("Transport was sent `Lifecycle.onInactive` listener", () => { - expect( - !!transport - .history() - .find((json) => json.method.toLowerCase() === "lifecycle.oninactive") - ).toBe(true); -}); - test("Transport `receive` callback wired up", () => { return Device.name().then((name) => { expect(name).toBe("Test Name"); diff --git a/src/sdks/manage/package.json b/src/sdks/manage/package.json index 9ad290f9e..359dc8ad1 100644 --- a/src/sdks/manage/package.json +++ b/src/sdks/manage/package.json @@ -10,22 +10,25 @@ "type": "module", "scripts": { "validate": "npx firebolt-openrpc validate --input ./dist/firebolt-manage-open-rpc.json", - "sdk": "npx firebolt-openrpc sdk --input ./dist/firebolt-manage-open-rpc.json --template ./src/js --output ./build/javascript/src", + "sdk": "npx firebolt-openrpc sdk --server ./dist/firebolt-manage-open-rpc.json --client ./dist/firebolt-manage-app-open-rpc.json --template ./src/js --output ./build/javascript/src", "native": "npx firebolt-openrpc sdk --input ./dist/firebolt-manage-open-rpc.json --template ./src/js --output ./build/c/src --language ../../../node_modules/@firebolt-js/openrpc/languages/c", - "compile": "cd ../../.. && npm run compile", - "slice": "npx firebolt-openrpc slice -i ../../../dist/firebolt-open-rpc.json --sdk ./sdk.config.json -o ./dist/firebolt-manage-open-rpc.json", - "docs": "npx firebolt-openrpc docs --input ./dist/firebolt-manage-open-rpc.json --output build/docs/markdown --as-path", + "compile": "cd ../../.. ; npm run compile", + "slice": "npm run slice:server; npm run slice:client", + "slice:server": "npx firebolt-openrpc slice -i ../../../dist/firebolt-open-rpc.json --sdk ./sdk.config.json -o ./dist/firebolt-manage-open-rpc.json", + "slice:client": "npx firebolt-openrpc slice -i ../../../dist/firebolt-app-open-rpc.json --sdk ./sdk.config.json -o ./dist/firebolt-manage-app-open-rpc.json", + "docs": "npx firebolt-openrpc docs --server ./dist/firebolt-manage-open-rpc.json --client ./dist/firebolt-manage-app-open-rpc.json --output build/docs/markdown --as-path", "wiki": "npx firebolt-openrpc docs --input ./dist/firebolt-manage-open-rpc.json --output build/docs/markdown", - "dist:notest": "npm run clean && npm run slice && npm run validate && npm run sdk && npm run docs && npm run dist:copy && echo 'Firebolt Manage SDK /dist/ is ready.\n'", - "dist:copy": "npm run dist:copy:sdk && npm run dist:copy:docs", - "dist:copy:sdk": "mkdirp ./dist && cp -R build/javascript/src dist/lib && cp ./dist/firebolt-manage-open-rpc.json ../../../dist/firebolt-manage-open-rpc.json", - "dist:copy:docs": "mkdirp ./dist && cp -R build/docs/markdown dist/docs", - "dist": "npm run dist:notest && npm run test", - "clean": "rm -rf ./build && rm -rf ./dist", - "test:setup": "rm -rf test/transpiled-suite && npx tsc --target es6 --moduleResolution node --outDir test/transpiled-suite", - "test": "npm run test:setup && NODE_OPTIONS=--experimental-vm-modules npx --config=jest.config.json --detectOpenHandles jest", - "prepack": "node ../../js/version.mjs validate && npm run broilerplate", - "broilerplate": "rm ./CONTRIBUTING.md && cp ../../../CONTRIBUTING.md ./CONTRIBUTING.md && rm ./LICENSE && cp ../../../LICENSE ./LICENSE && rm ./NOTICE && cp ../../../NOTICE ./NOTICE" + "dist:notest": "npm run clean ; npm run slice ; npm run validate ; npm run sdk ; npm run docs ; npm run prettier ; npm run dist:copy ; echo 'Firebolt Manage SDK /dist/ is ready.\n'", + "dist:copy": "npm run dist:copy:sdk ; npm run dist:copy:docs", + "dist:copy:sdk": "mkdirp ./dist ; cp -R build/javascript/src dist/lib ; cp ./dist/firebolt-manage-open-rpc.json ../../../dist/firebolt-manage-open-rpc.json ; cp ./dist/firebolt-manage-app-open-rpc.json ../../../dist/firebolt-core-app-open-rpc.json", + "dist:copy:docs": "mkdirp ./dist ; cp -R build/docs/markdown dist/docs", + "dist": "npm run dist:notest ; npm run test", + "clean": "rm -rf ./build ; rm -rf ./dist", + "test:setup": "rm -rf test/transpiled-suite ; npx tsc --target es6 --moduleResolution node --outDir test/transpiled-suite", + "test": "npm run test:setup ; NODE_OPTIONS=--experimental-vm-modules npx --config=jest.config.json --detectOpenHandles jest", + "prepack": "node ../../js/version.mjs validate ; npm run broilerplate", + "broilerplate": "rm ./CONTRIBUTING.md ; cp ../../../CONTRIBUTING.md ./CONTRIBUTING.md ; rm ./LICENSE ; cp ../../../LICENSE ./LICENSE ; rm ./NOTICE ; cp ../../../NOTICE ./NOTICE", + "prettier": "prettier build/**/*.mjs --write --parser babel ; prettier build/**/*.md --write --parser markdown" }, "repository": { "type": "git", @@ -40,7 +43,8 @@ "devDependencies": { "jest": "^28.1.0", "jest-environment-jsdom": "^28.1.3", - "typescript": "^4.6.4" + "typescript": "^4.6.4", + "prettier": "^3.1.0" }, "keywords": [ "firebolt", diff --git a/src/sdks/manage/test/suite/acknowledgeChallenge.test.ts b/src/sdks/manage/test/suite/acknowledgeChallenge.test.ts index 50b180d0d..d1e38c899 100644 --- a/src/sdks/manage/test/suite/acknowledgeChallenge.test.ts +++ b/src/sdks/manage/test/suite/acknowledgeChallenge.test.ts @@ -19,32 +19,21 @@ import { test, expect } from "@jest/globals"; import { AcknowledgeChallenge } from "../../build/javascript/src/firebolt-manage"; -class ACKPovider implements AcknowledgeChallenge.ChallengeProvider { - challenge( - parameters: object, - session: AcknowledgeChallenge.FocusableProviderSession - ): Promise { - return Promise.resolve(null); + + +class ACKPovider implements AcknowledgeChallenge.AcknowledgeChallenge { + challenge(capability: string, requestor: AcknowledgeChallenge.ChallengeRequestor): Promise { + return Promise.resolve(null) } } test("AcknowledgeChallenge.provide() declarations", () => { AcknowledgeChallenge.provide( - "xrn:firebolt:capability:usergrant:acknowledgechallenge", new ACKPovider() ); expect(1).toBe(1); }); -test("AcknowledgeChallenge.provide() with blank object", () => { - expect(() => { - AcknowledgeChallenge.provide( - "xrn:firebolt:capability:usergrant:acknowledgechallenge", - {} - ); - }).toThrow(); -}); - // Events Test cases // test("AcknowledgeChallenge.listen() for requestChallenge event", () => { diff --git a/src/sdks/manage/test/suite/closedCaptions.test.ts b/src/sdks/manage/test/suite/closedCaptions.test.ts index 8d48bcf6d..9110b845d 100644 --- a/src/sdks/manage/test/suite/closedCaptions.test.ts +++ b/src/sdks/manage/test/suite/closedCaptions.test.ts @@ -27,7 +27,7 @@ test("ClosedCaptions.enabled()", () => { test("ClosedCaptions.fontFamily()", () => { return ClosedCaptions.fontFamily().then((res: string) => { - expect(res).toEqual("monospace"); + expect(res).toEqual("monospace_serif"); }); }); diff --git a/src/sdks/manage/test/suite/keyboard.test.ts b/src/sdks/manage/test/suite/keyboard.test.ts index 501a10479..f6584b066 100644 --- a/src/sdks/manage/test/suite/keyboard.test.ts +++ b/src/sdks/manage/test/suite/keyboard.test.ts @@ -19,38 +19,25 @@ import { test, expect } from "@jest/globals"; import { Keyboard } from "../../build/javascript/src/firebolt-manage"; -class KBProvider implements Keyboard.KeyboardInputProvider { - standard( - parameters: Keyboard.KeyboardParameters, - session: Keyboard.FocusableProviderSession - ): Promise { - return Promise.resolve(null); +class KBProvider implements Keyboard.Keyboard { + standard(message: string): Promise { + return Promise.resolve(null) } - password( - parameters: Keyboard.KeyboardParameters, - session: Keyboard.FocusableProviderSession - ): Promise { - return Promise.resolve(null); + + email(type: Keyboard.EmailUsage, message?: string): Promise { + return Promise.resolve(null) } - email( - parameters: Keyboard.KeyboardParameters, - session: Keyboard.FocusableProviderSession - ): Promise { - return Promise.resolve(null); + + password(message?: string): Promise { + return Promise.resolve(null) } } test("Keyboard.provide() declarations", () => { - Keyboard.provide("xrn:firebolt:capability:input:keyboard", new KBProvider()); + Keyboard.provide(new KBProvider()); expect(1).toBe(1); }); -test("Keyboard.provide() with blank object", () => { - expect(() => { - Keyboard.provide("xrn:firebolt:capability:input:keyboard", {}); - }).toThrow(); -}); - // Events Test cases // test("Keyboard.listen() for requestEmail event", () => { diff --git a/src/sdks/manage/test/suite/pinChallenge.test.ts b/src/sdks/manage/test/suite/pinChallenge.test.ts index 2612cfa5d..565e292bf 100644 --- a/src/sdks/manage/test/suite/pinChallenge.test.ts +++ b/src/sdks/manage/test/suite/pinChallenge.test.ts @@ -19,29 +19,19 @@ import { test, expect } from "@jest/globals"; import { PinChallenge } from "../../build/javascript/src/firebolt-manage"; -class PCProvider implements PinChallenge.ChallengeProvider { - challenge( - parameters: object, - session: PinChallenge.FocusableProviderSession - ): Promise { - return Promise.resolve(null); +class PCProvider implements PinChallenge.PinChallenge { + challenge(requestor: PinChallenge.ChallengeRequestor, pinSpace: "purchase" | "content", capability?: string): Promise { + return Promise.resolve(null) } } test("PinChallenge.provide() declarations", () => { PinChallenge.provide( - "xrn:firebolt:capability:usergrant:pinchallenge", new PCProvider() ); expect(1).toBe(1); }); -test("PinChallenge.provide() with blank object", () => { - expect(() => { - PinChallenge.provide("xrn:firebolt:capability:usergrant:pinchallenge", {}); - }).toThrow(); -}); - // Events Test cases // test("PinChallenge.listen() for requestChallenge event", () => { diff --git a/test/Setup.js b/test/Setup.js index 7b4bdee97..587a05a38 100644 --- a/test/Setup.js +++ b/test/Setup.js @@ -49,4 +49,19 @@ export const testHarness = { window.__firebolt.testHarness = testHarness +export class DefaultApplication { + create(params) { + return Promise.resolve(null) + } + resume() { + return Promise.resolve(null) + } + suspend() { + return Promise.resolve(null) + } + destroy() { + return Promise.resolve(null) + } +} + export default testHarness \ No newline at end of file diff --git a/test/suite/basic.test.ts b/test/suite/basic.test.ts new file mode 100644 index 000000000..399c8fd6e --- /dev/null +++ b/test/suite/basic.test.ts @@ -0,0 +1,23 @@ +/* + * Copyright 2021 Comcast Cable Communications Management, LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + */ + +import { test, expect } from '@jest/globals'; + +test('Basic', () => { + expect(1).toBe(1) +}) \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 0e5a8d3af..56ff58bc8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,5 @@ { "include": [ - "src/sdks/core/test/suite/*", - "src/sdks/manage/test/suite/*" + "test/suite/*" ] } \ No newline at end of file From c6f87676e3ff7dfc986865114205a20982763836 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Tue, 11 Jun 2024 15:08:05 -0400 Subject: [PATCH 32/43] fix: Post-merge cleanup --- package-lock.json | 4997 +++++++++++++++++++++++++++--- package.json | 14 +- src/openrpc/closed_captions.json | 2 +- src/openrpc/content.json | 93 +- src/openrpc/discovery.json | 154 +- src/openrpc/hdmi-input.json | 103 +- src/openrpc/localization.json | 2 +- src/schemas/entity.json | 8 +- src/schemas/intents.json | 30 +- src/sdks/core/package.json | 26 +- src/sdks/discovery/package.json | 2 +- src/sdks/manage/package.json | 26 +- 12 files changed, 4896 insertions(+), 561 deletions(-) diff --git a/package-lock.json b/package-lock.json index f0f372893..8d87f6811 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,16 +1,17 @@ { "name": "@firebolt-js/sdks", - "version": "0.16.0-next.3", + "version": "1.2.0-next.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@firebolt-js/sdks", - "version": "0.16.0-next.3", + "version": "1.2.0-next.4", "license": "Apache-2.0", "workspaces": [ "src/sdks/core", - "src/sdks/manage" + "src/sdks/manage", + "src/sdks/discovery" ], "bin": { "firebolt-version": "src/js/version.mjs" @@ -19,7 +20,8 @@ "@commitlint/cli": "^17.0.3", "@commitlint/config-conventional": "^17.0.3", "@firebolt-js/openrpc": "../firebolt-openrpc", - "@firebolt-js/schemas": "1.0.0-next.0", + "@firebolt-js/schemas": "2.0.0", + "@saithodev/semantic-release-backmerge": "^3.2.0", "@semantic-release/changelog": "^6.0.1", "@semantic-release/git": "^10.0.1", "@semantic-release/npm": "^9.0.1", @@ -31,7 +33,7 @@ "mkdirp": "^2.1.6", "nopt": "^7.1.0", "production-changelog": "./src/js/production-changelog/", - "semantic-release": "^19.0.5", + "semantic-release": "^21.1.1", "typescript": "^4.6.4" } }, @@ -1012,6 +1014,10 @@ "node": ">=8" } }, + "node_modules/@firebolt-js/discovery-sdk": { + "resolved": "src/sdks/discovery", + "link": true + }, "node_modules/@firebolt-js/manage-sdk": { "resolved": "src/sdks/manage", "link": true @@ -1021,9 +1027,9 @@ "link": true }, "node_modules/@firebolt-js/schemas": { - "version": "1.0.0-next.0", - "resolved": "https://registry.npmjs.org/@firebolt-js/schemas/-/schemas-1.0.0-next.0.tgz", - "integrity": "sha512-PaVx5HhOW+mJZfADyVrcQl0y6uRkIGeyQOGHNdx3gNtQS2s6y8cw8edVlJ9p77WZQtK7t/5Lg3DerR8v4sdagA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@firebolt-js/schemas/-/schemas-2.0.0.tgz", + "integrity": "sha512-RSPyEfbKBclQQfKYgsHYQEPWQP2uka0JQKoq9h9V5S5swJtcVMLZAZcoK+G0R8/30jz12Pfl6MipIRhpJIoaFQ==", "dev": true, "dependencies": { "ajv": "^8.9.0", @@ -1519,158 +1525,194 @@ } }, "node_modules/@octokit/auth-token": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz", - "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", "dev": true, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/core": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.4.tgz", - "integrity": "sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", + "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", "dev": true, "dependencies": { - "@octokit/auth-token": "^3.0.0", - "@octokit/graphql": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.3.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.0.0", "before-after-hook": "^2.2.0", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/endpoint": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", + "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", "dev": true, "dependencies": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", + "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/graphql": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz", - "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", + "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", "dev": true, "dependencies": { - "@octokit/request": "^6.0.0", - "@octokit/types": "^9.0.0", + "@octokit/request": "^8.3.0", + "@octokit/types": "^13.0.0", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/openapi-types": { - "version": "18.1.1", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", - "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==", + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", + "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", "dev": true }, "node_modules/@octokit/plugin-paginate-rest": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz", - "integrity": "sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==", + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.1.tgz", + "integrity": "sha512-wfGhE/TAkXZRLjksFXuDZdmGnJQHvtU/joFQdweXUgzo1XwvBCD4o4+75NtFfjfLK5IwLf9vHTfSiU3sLRYpRw==", "dev": true, "dependencies": { - "@octokit/tsconfig": "^1.0.2", - "@octokit/types": "^9.2.3" + "@octokit/types": "^12.6.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=4" + "@octokit/core": "5" + } + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/plugin-retry": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-4.1.6.tgz", - "integrity": "sha512-obkYzIgEC75r8+9Pnfiiqy3y/x1bc3QLE5B7qvv9wi9Kj0R5tGQFC6QMBg1154WQ9lAVypuQDGyp3hNpp15gQQ==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-6.0.1.tgz", + "integrity": "sha512-SKs+Tz9oj0g4p28qkZwl/topGcb0k0qPNX/i7vBKmDsjoeqnVfFUquqrE/O9oJY7+oLzdCtkiWSXLpLjvl6uog==", "dev": true, "dependencies": { - "@octokit/types": "^9.0.0", + "@octokit/request-error": "^5.0.0", + "@octokit/types": "^12.0.0", "bottleneck": "^2.15.3" }, "engines": { - "node": ">= 14" + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": ">=3" + "@octokit/core": ">=5" + } + }, + "node_modules/@octokit/plugin-retry/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true + }, + "node_modules/@octokit/plugin-retry/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/plugin-throttling": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-5.2.3.tgz", - "integrity": "sha512-C9CFg9mrf6cugneKiaI841iG8DOv6P5XXkjmiNNut+swePxQ7RWEdAZRp5rJoE1hjsIqiYcKa/ZkOQ+ujPI39Q==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-8.2.0.tgz", + "integrity": "sha512-nOpWtLayKFpgqmgD0y3GqXafMFuKcA4tRPZIfu7BArd2lEZeb1988nhWhwx4aZWmjDmUfdgVf7W+Tt4AmvRmMQ==", "dev": true, "dependencies": { - "@octokit/types": "^9.0.0", + "@octokit/types": "^12.2.0", "bottleneck": "^2.15.3" }, "engines": { - "node": ">= 14" + "node": ">= 18" }, "peerDependencies": { - "@octokit/core": "^4.0.0" + "@octokit/core": "^5.0.0" + } + }, + "node_modules/@octokit/plugin-throttling/node_modules/@octokit/openapi-types": { + "version": "20.0.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz", + "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==", + "dev": true + }, + "node_modules/@octokit/plugin-throttling/node_modules/@octokit/types": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz", + "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^20.0.0" } }, "node_modules/@octokit/request": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", + "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", "dev": true, "dependencies": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", + "@octokit/endpoint": "^9.0.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.1.0", "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, "node_modules/@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", + "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", "dev": true, "dependencies": { - "@octokit/types": "^9.0.0", + "@octokit/types": "^13.1.0", "deprecation": "^2.0.0", "once": "^1.4.0" }, "engines": { - "node": ">= 14" + "node": ">= 18" } }, - "node_modules/@octokit/tsconfig": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@octokit/tsconfig/-/tsconfig-1.0.2.tgz", - "integrity": "sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==", - "dev": true - }, "node_modules/@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", + "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", "dev": true, "dependencies": { - "@octokit/openapi-types": "^18.0.0" + "@octokit/openapi-types": "^22.2.0" } }, "node_modules/@pnpm/config.env-replace": { @@ -1714,6 +1756,20 @@ "node": ">=12" } }, + "node_modules/@saithodev/semantic-release-backmerge": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@saithodev/semantic-release-backmerge/-/semantic-release-backmerge-3.2.1.tgz", + "integrity": "sha512-mC9cA6lhNzpy4rKOT5jjRLhlT3myubmVeo+BqWyR2WqF5PRJpG0jaU8pBC87S11GCUHKxqXf0QQDZNPbbNP1bA==", + "dev": true, + "dependencies": { + "@semantic-release/error": "^3.0.0", + "aggregate-error": "^3.1.0", + "debug": "^4.3.4", + "execa": "^5.1.1", + "lodash": "^4.17.21", + "semantic-release": ">=20.0.0 <22.0.0" + } + }, "node_modules/@semantic-release/changelog": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", @@ -1733,57 +1789,100 @@ } }, "node_modules/@semantic-release/commit-analyzer": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-9.0.2.tgz", - "integrity": "sha512-E+dr6L+xIHZkX4zNMe6Rnwg4YQrWNXK+rNsvwOPpdFppvZO1olE2fIgWhv89TkQErygevbjsZFSIxp+u6w2e5g==", + "version": "10.0.4", + "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-10.0.4.tgz", + "integrity": "sha512-pFGn99fn8w4/MHE0otb2A/l5kxgOuxaaauIh4u30ncoTJuqWj4hXTgEJ03REqjS+w1R2vPftSsO26WC61yOcpw==", "dev": true, "dependencies": { - "conventional-changelog-angular": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", + "conventional-changelog-angular": "^6.0.0", + "conventional-commits-filter": "^3.0.0", + "conventional-commits-parser": "^5.0.0", "debug": "^4.0.0", "import-from": "^4.0.0", - "lodash": "^4.17.4", + "lodash-es": "^4.17.21", "micromatch": "^4.0.2" }, "engines": { - "node": ">=14.17" + "node": ">=18" }, "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" + "semantic-release": ">=20.1.0" } }, - "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", + "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-commits-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz", + "integrity": "sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==", "dev": true, "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">=14" } }, "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", "dev": true, "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" }, "bin": { - "conventional-commits-parser": "cli.js" + "conventional-commits-parser": "cli.mjs" }, "engines": { - "node": ">=10" + "node": ">=16" + } + }, + "node_modules/@semantic-release/commit-analyzer/node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "dev": true, + "dependencies": { + "text-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@semantic-release/commit-analyzer/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/commit-analyzer/node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/@semantic-release/commit-analyzer/node_modules/text-extensions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@semantic-release/error": { @@ -1818,34 +1917,42 @@ } }, "node_modules/@semantic-release/github": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-8.1.0.tgz", - "integrity": "sha512-erR9E5rpdsz0dW1I7785JtndQuMWN/iDcemcptf67tBNOmBUN0b2YNOgcjYUnBpgRpZ5ozfBHrK7Bz+2ets/Dg==", - "dev": true, - "dependencies": { - "@octokit/core": "^4.2.1", - "@octokit/plugin-paginate-rest": "^6.1.2", - "@octokit/plugin-retry": "^4.1.3", - "@octokit/plugin-throttling": "^5.2.3", - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "fs-extra": "^11.0.0", - "globby": "^11.0.0", + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-9.2.6.tgz", + "integrity": "sha512-shi+Lrf6exeNZF+sBhK+P011LSbhmIAoUEgEY6SsxF8irJ+J2stwI5jkyDQ+4gzYyDImzV6LCKdYB9FXnQRWKA==", + "dev": true, + "dependencies": { + "@octokit/core": "^5.0.0", + "@octokit/plugin-paginate-rest": "^9.0.0", + "@octokit/plugin-retry": "^6.0.0", + "@octokit/plugin-throttling": "^8.0.0", + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "debug": "^4.3.4", + "dir-glob": "^3.0.1", + "globby": "^14.0.0", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.0", "issue-parser": "^6.0.0", - "lodash": "^4.17.4", - "mime": "^3.0.0", - "p-filter": "^2.0.0", - "url-join": "^4.0.0" + "lodash-es": "^4.17.21", + "mime": "^4.0.0", + "p-filter": "^4.0.0", + "url-join": "^5.0.0" }, "engines": { - "node": ">=14.17" + "node": ">=18" }, "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" + "semantic-release": ">=20.1.0" + } + }, + "node_modules/@semantic-release/github/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", + "dev": true, + "engines": { + "node": ">=18" } }, "node_modules/@semantic-release/github/node_modules/agent-base": { @@ -1860,6 +1967,69 @@ "node": ">= 14" } }, + "node_modules/@semantic-release/github/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", + "dev": true, + "dependencies": { + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/globby": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", + "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", + "dev": true, + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@semantic-release/github/node_modules/http-proxy-agent": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", @@ -1886,6 +2056,42 @@ "node": ">= 14" } }, + "node_modules/@semantic-release/github/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@semantic-release/github/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@semantic-release/npm": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-9.0.2.tgz", @@ -1976,6 +2182,18 @@ "integrity": "sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA==", "dev": true }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@sinonjs/commons": { "version": "1.8.6", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", @@ -2136,12 +2354,6 @@ "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", "dev": true }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true - }, "node_modules/@types/parse5": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", @@ -3574,46 +3786,155 @@ } }, "node_modules/env-ci": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.5.0.tgz", - "integrity": "sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A==", + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-9.1.1.tgz", + "integrity": "sha512-Im2yEWeF4b2RAMAaWvGioXk6m0UNaIjD8hj28j2ij5ldnIFrDQT0+pzDvpbRkcjurhXhf/AsBKv8P2rtmGi9Aw==", "dev": true, "dependencies": { - "execa": "^5.0.0", - "fromentries": "^1.3.2", - "java-properties": "^1.0.0" + "execa": "^7.0.0", + "java-properties": "^1.0.2" }, "engines": { - "node": ">=10.17" + "node": "^16.14 || >=18" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/env-ci/node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "dev": true, "dependencies": { - "is-arrayish": "^0.2.1" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "node_modules/env-ci/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "dev": true, + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/env-ci/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/env-ci/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", "function.prototype.name": "^1.1.6", "get-intrinsic": "^1.2.4", "get-symbol-description": "^1.0.2", @@ -4524,15 +4845,28 @@ } }, "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", + "integrity": "sha512-ej8ksPF4x6e5wvK9yevct0UCXh8TTFlWGVLlgjZuoBH1HwjIfKE/IdL5mq89sFA7zELi1VhKpmtDnrs7zWyeyg==", "dev": true, "dependencies": { - "escape-string-regexp": "^1.0.5" + "escape-string-regexp": "^5.0.0", + "is-unicode-supported": "^1.2.0" }, "engines": { - "node": ">=8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4579,15 +4913,15 @@ } }, "node_modules/find-versions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", + "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", "dev": true, "dependencies": { - "semver-regex": "^3.1.2" + "semver-regex": "^4.0.5" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -4646,26 +4980,6 @@ "readable-stream": "^2.0.0" } }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/fs-extra": { "version": "11.2.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", @@ -5110,12 +5424,15 @@ } }, "node_modules/hook-std": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", - "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", + "integrity": "sha512-jHRQzjSDzMtFy34AGj1DN+vq54WVuhSvKgrHf0OMiFQTwDD4L/qqofVEWjLOBMTn5+lCD3fPg32W9yOfnEJTTw==", "dev": true, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/hosted-git-info": { @@ -5580,15 +5897,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-potential-custom-element-name": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", @@ -5695,6 +6003,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -6682,6 +7002,12 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true + }, "node_modules/lodash.camelcase": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", @@ -6842,15 +7168,15 @@ } }, "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/marked/-/marked-5.1.2.tgz", + "integrity": "sha512-ahRPGXJpjMjwSOlBoTMZAK7ATXkli5qCPxZ21TG44rx1KEo44bii4ekgTDQPNRQ4Kh7JMb9Ub1PVk1NxRSsorg==", "dev": true, "bin": { "marked": "bin/marked.js" }, "engines": { - "node": ">= 12" + "node": ">= 16" } }, "node_modules/marked-terminal": { @@ -6963,15 +7289,18 @@ } }, "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.3.tgz", + "integrity": "sha512-KgUb15Oorc0NEKPbvfa0wRU+PItIEZmiv+pyAO2i0oTIVTJhlzMclU7w4RXWQrSOVH5ax/p/CkIO7KI4OyFJTQ==", "dev": true, + "funding": [ + "https://github.com/sponsors/broofa" + ], "bin": { - "mime": "cli.js" + "mime": "bin/cli.js" }, "engines": { - "node": ">=10.0.0" + "node": ">=16" } }, "node_modules/mime-db": { @@ -7105,48 +7434,6 @@ "lodash": "^4.17.21" } }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -9947,27 +10234,30 @@ } }, "node_modules/p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-3.0.0.tgz", + "integrity": "sha512-lastgtAdoH9YaLyDa5i5z64q+kzOcQHsQ5SsZJD3q0VEyI8mq872S3geuNbRUQLVAE9siMfgKrpj7MloKFHruw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-4.1.0.tgz", + "integrity": "sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==", "dev": true, "dependencies": { - "p-map": "^2.0.0" + "p-map": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-is-promise": { @@ -10010,12 +10300,15 @@ } }, "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.2.tgz", + "integrity": "sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==", "dev": true, "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-reduce": { @@ -10984,153 +11277,4088 @@ } }, "node_modules/semantic-release": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-19.0.5.tgz", - "integrity": "sha512-NMPKdfpXTnPn49FDogMBi36SiBfXkSOJqCkk0E4iWOY1tusvvgBwqUmxTX1kmlT6kIYed9YwNKD1sfPpqa5yaA==", + "version": "21.1.2", + "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-21.1.2.tgz", + "integrity": "sha512-kz76azHrT8+VEkQjoCBHE06JNQgTgsC4bT8XfCzb7DHcsk9vG3fqeMVik8h5rcWCYi2Fd+M3bwA7BG8Z8cRwtA==", "dev": true, "dependencies": { - "@semantic-release/commit-analyzer": "^9.0.2", - "@semantic-release/error": "^3.0.0", - "@semantic-release/github": "^8.0.0", - "@semantic-release/npm": "^9.0.0", - "@semantic-release/release-notes-generator": "^10.0.0", - "aggregate-error": "^3.0.0", - "cosmiconfig": "^7.0.0", + "@semantic-release/commit-analyzer": "^10.0.0", + "@semantic-release/error": "^4.0.0", + "@semantic-release/github": "^9.0.0", + "@semantic-release/npm": "^10.0.2", + "@semantic-release/release-notes-generator": "^11.0.0", + "aggregate-error": "^5.0.0", + "cosmiconfig": "^8.0.0", "debug": "^4.0.0", - "env-ci": "^5.0.0", - "execa": "^5.0.0", - "figures": "^3.0.0", - "find-versions": "^4.0.0", + "env-ci": "^9.0.0", + "execa": "^8.0.0", + "figures": "^5.0.0", + "find-versions": "^5.1.0", "get-stream": "^6.0.0", "git-log-parser": "^1.2.0", - "hook-std": "^2.0.0", - "hosted-git-info": "^4.0.0", - "lodash": "^4.17.21", - "marked": "^4.0.10", - "marked-terminal": "^5.0.0", + "hook-std": "^3.0.0", + "hosted-git-info": "^7.0.0", + "lodash-es": "^4.17.21", + "marked": "^5.0.0", + "marked-terminal": "^5.1.1", "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "p-reduce": "^2.0.0", - "read-pkg-up": "^7.0.0", + "p-each-series": "^3.0.0", + "p-reduce": "^3.0.0", + "read-pkg-up": "^10.0.0", "resolve-from": "^5.0.0", "semver": "^7.3.2", - "semver-diff": "^3.1.1", + "semver-diff": "^4.0.0", "signale": "^1.2.1", - "yargs": "^16.2.0" + "yargs": "^17.5.1" }, "bin": { "semantic-release": "bin/semantic-release.js" }, "engines": { - "node": ">=16 || ^14.17" + "node": ">=18" } }, - "node_modules/semantic-release/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/semantic-release/node_modules/@semantic-release/error": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", + "integrity": "sha512-mgdxrHTLOjOddRVYIYDo0fR3/v61GNN1YGkfbrjuIKg/uMgCd+Qzo3UAXJ+woLQQpos4pl5Esuw5A7AoNlzjUQ==", "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "engines": { + "node": ">=18" } }, - "node_modules/semantic-release/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "node_modules/semantic-release/node_modules/@semantic-release/npm": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-10.0.6.tgz", + "integrity": "sha512-DyqHrGE8aUyapA277BB+4kV0C4iMHh3sHzUWdf0jTgp5NNJxVUz76W1f57FB64Ue03him3CBXxFqQD2xGabxow==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "@semantic-release/error": "^4.0.0", + "aggregate-error": "^5.0.0", + "execa": "^8.0.0", + "fs-extra": "^11.0.0", + "lodash-es": "^4.17.21", + "nerf-dart": "^1.0.0", + "normalize-url": "^8.0.0", + "npm": "^9.5.0", + "rc": "^1.2.8", + "read-pkg": "^8.0.0", + "registry-auth-token": "^5.0.0", + "semver": "^7.1.2", + "tempy": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" } }, - "node_modules/semantic-release/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/semantic-release/node_modules/@semantic-release/release-notes-generator": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-11.0.7.tgz", + "integrity": "sha512-T09QB9ImmNx7Q6hY6YnnEbw/rEJ6a+22LBxfZq+pSAXg/OL/k0siwEm5cK4k1f9dE2Z2mPIjJKKohzUm0jbxcQ==", "dev": true, "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "conventional-changelog-angular": "^6.0.0", + "conventional-changelog-writer": "^6.0.0", + "conventional-commits-filter": "^4.0.0", + "conventional-commits-parser": "^5.0.0", + "debug": "^4.0.0", + "get-stream": "^7.0.0", + "import-from": "^4.0.0", + "into-stream": "^7.0.0", + "lodash-es": "^4.17.21", + "read-pkg-up": "^10.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" + }, + "peerDependencies": { + "semantic-release": ">=20.1.0" } }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/semantic-release/node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-7.0.1.tgz", + "integrity": "sha512-3M8C1EOFN6r8AMUhwUAACIoXZJEOufDU5+0gFFN5uNs6XYOralD2Pqkl7m046va6x77FwposWXbAhPPIOus7mQ==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, "engines": { - "node": ">=10" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "node_modules/semantic-release/node_modules/aggregate-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-5.0.0.tgz", + "integrity": "sha512-gOsf2YwSlleG6IjRYG2A7k0HmBMEo6qVNk9Bp/EaLgAJT5ngH6PXbqa4ItvnEwCm/velL5jAnQgsHsWnjhGmvw==", "dev": true, "dependencies": { - "semver": "^6.3.0" + "clean-stack": "^5.2.0", + "indent-string": "^5.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semver-regex": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", - "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", + "node_modules/semantic-release/node_modules/clean-stack": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-5.2.0.tgz", + "integrity": "sha512-TyUIUJgdFnCISzG5zu3291TAsE77ddchd0bepon1VVQrKLGKFED4iXFEDQ24mIPdPBbyE16PK3F8MYE1CmcBEQ==", "dev": true, + "dependencies": { + "escape-string-regexp": "5.0.0" + }, "engines": { - "node": ">=8" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/semantic-release/node_modules/conventional-changelog-writer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-6.0.1.tgz", + "integrity": "sha512-359t9aHorPw+U+nHzUXHS5ZnPBOizRxfQsWT5ZDHBfvfxQOAik+yfuhKXG66CN5LEWPpMNnIMHUTCKeYNprvHQ==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "conventional-commits-filter": "^3.0.0", + "dateformat": "^3.0.3", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "meow": "^8.1.2", + "semver": "^7.0.0", + "split": "^1.0.1" + }, + "bin": { + "conventional-changelog-writer": "cli.js" }, "engines": { - "node": ">=10" + "node": ">=14" } }, - "node_modules/semver/node_modules/yallist": { + "node_modules/semantic-release/node_modules/conventional-changelog-writer/node_modules/conventional-commits-filter": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-3.0.0.tgz", + "integrity": "sha512-1ymej8b5LouPx9Ox0Dw/qAO2dVdfpRFq28e5Y0jJEU8ZrLdy0vOSkkIInwmxErFGhg6SALro60ZrwYFVTUDo4Q==", + "dev": true, + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/semantic-release/node_modules/conventional-commits-filter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", + "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/semantic-release/node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "dev": true, + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/semantic-release/node_modules/conventional-commits-parser/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/execa/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/semantic-release/node_modules/indent-string": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", + "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/into-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-7.0.0.tgz", + "integrity": "sha512-2dYz766i9HprMBasCMvHMuazJ7u4WzhJwo5kb3iPSiW/iRYV6uPari3zHoqZlnuaR7V1bEiNMxikhp37rdBXbw==", + "dev": true, + "dependencies": { + "from2": "^2.3.0", + "p-is-promise": "^3.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "dev": true, + "dependencies": { + "text-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/semantic-release/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/semantic-release/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/normalize-package-data": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.1.tgz", + "integrity": "sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/normalize-url": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/npm": { + "version": "9.9.3", + "resolved": "https://registry.npmjs.org/npm/-/npm-9.9.3.tgz", + "integrity": "sha512-Z1l+rcQ5kYb17F3hHtO601arEpvdRYnCLtg8xo3AGtyj3IthwaraEOexI9903uANkifFbqHC8hT53KIrozWg8A==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/config", + "@npmcli/fs", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/promise-spawn", + "@npmcli/run-script", + "abbrev", + "archy", + "cacache", + "chalk", + "ci-info", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "fs-minipass", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minimatch", + "minipass", + "minipass-pipeline", + "ms", + "node-gyp", + "nopt", + "normalize-package-data", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "p-map", + "pacote", + "parse-conflict-json", + "proc-log", + "qrcode-terminal", + "read", + "semver", + "sigstore", + "spdx-expression-parse", + "ssri", + "supports-color", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dev": true, + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/arborist": "^6.5.0", + "@npmcli/config": "^6.4.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/map-workspaces": "^3.0.4", + "@npmcli/package-json": "^4.0.1", + "@npmcli/promise-spawn": "^6.0.2", + "@npmcli/run-script": "^6.0.2", + "abbrev": "^2.0.0", + "archy": "~1.0.0", + "cacache": "^17.1.4", + "chalk": "^5.3.0", + "ci-info": "^4.0.0", + "cli-columns": "^4.0.0", + "cli-table3": "^0.6.3", + "columnify": "^1.6.0", + "fastest-levenshtein": "^1.0.16", + "fs-minipass": "^3.0.3", + "glob": "^10.3.10", + "graceful-fs": "^4.2.11", + "hosted-git-info": "^6.1.1", + "ini": "^4.1.1", + "init-package-json": "^5.0.0", + "is-cidr": "^4.0.2", + "json-parse-even-better-errors": "^3.0.1", + "libnpmaccess": "^7.0.2", + "libnpmdiff": "^5.0.20", + "libnpmexec": "^6.0.4", + "libnpmfund": "^4.2.1", + "libnpmhook": "^9.0.3", + "libnpmorg": "^5.0.4", + "libnpmpack": "^5.0.20", + "libnpmpublish": "^7.5.1", + "libnpmsearch": "^6.0.2", + "libnpmteam": "^5.0.3", + "libnpmversion": "^4.0.2", + "make-fetch-happen": "^11.1.1", + "minimatch": "^9.0.3", + "minipass": "^7.0.4", + "minipass-pipeline": "^1.2.4", + "ms": "^2.1.2", + "node-gyp": "^9.4.1", + "nopt": "^7.2.0", + "normalize-package-data": "^5.0.0", + "npm-audit-report": "^5.0.0", + "npm-install-checks": "^6.3.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.2", + "npm-profile": "^7.0.1", + "npm-registry-fetch": "^14.0.5", + "npm-user-validate": "^2.0.0", + "npmlog": "^7.0.1", + "p-map": "^4.0.0", + "pacote": "^15.2.0", + "parse-conflict-json": "^3.0.1", + "proc-log": "^3.0.0", + "qrcode-terminal": "^0.12.0", + "read": "^2.1.0", + "semver": "^7.6.0", + "sigstore": "^1.9.0", + "spdx-expression-parse": "^3.0.1", + "ssri": "^10.0.5", + "supports-color": "^9.4.0", + "tar": "^6.2.0", + "text-table": "~0.2.0", + "tiny-relative-date": "^1.3.0", + "treeverse": "^3.0.0", + "validate-npm-package-name": "^5.0.0", + "which": "^3.0.1", + "write-file-atomic": "^5.0.1" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@colors/colors": { + "version": "1.5.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@gar/promisify": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@isaacs/cliui": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@npmcli/arborist": { + "version": "6.5.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.1.0", + "@npmcli/fs": "^3.1.0", + "@npmcli/installed-package-contents": "^2.0.2", + "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/metavuln-calculator": "^5.0.0", + "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^4.0.0", + "@npmcli/query": "^3.1.0", + "@npmcli/run-script": "^6.0.0", + "bin-links": "^4.0.1", + "cacache": "^17.0.4", + "common-ancestor-path": "^1.0.1", + "hosted-git-info": "^6.1.1", + "json-parse-even-better-errors": "^3.0.0", + "json-stringify-nice": "^1.1.4", + "minimatch": "^9.0.0", + "nopt": "^7.0.0", + "npm-install-checks": "^6.2.0", + "npm-package-arg": "^10.1.0", + "npm-pick-manifest": "^8.0.1", + "npm-registry-fetch": "^14.0.3", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "parse-conflict-json": "^3.0.0", + "proc-log": "^3.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.2", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "ssri": "^10.0.1", + "treeverse": "^3.0.0", + "walk-up-path": "^3.0.1" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@npmcli/config": { + "version": "6.4.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/map-workspaces": "^3.0.2", + "ci-info": "^4.0.0", + "ini": "^4.1.0", + "nopt": "^7.0.0", + "proc-log": "^3.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.5", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@npmcli/disparity-colors": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ansi-styles": "^4.3.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@npmcli/fs": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@npmcli/git": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "lib/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^2.0.0", + "glob": "^10.2.2", + "minimatch": "^9.0.0", + "read-package-json-fast": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^17.0.0", + "json-parse-even-better-errors": "^3.0.0", + "pacote": "^15.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@npmcli/move-file": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@npmcli/package-json": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^4.1.0", + "glob": "^10.2.2", + "hosted-git-info": "^6.1.1", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "proc-log": "^3.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@npmcli/query": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@npmcli/run-script": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@sigstore/bundle": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@sigstore/protobuf-specs": { + "version": "0.2.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@sigstore/sign": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "make-fetch-happen": "^11.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@sigstore/tuf": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0", + "tuf-js": "^1.1.7" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@tootallnate/once": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@tufjs/canonical-json": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/@tufjs/models": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "1.0.0", + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/abbrev": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/agent-base": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/agentkeepalive": { + "version": "4.5.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/are-we-there-yet": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/bin-links": { + "version": "4.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "read-cmd-shim": "^4.0.0", + "write-file-atomic": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/builtins": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/cacache": { + "version": "17.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/chalk": { + "version": "5.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/ci-info": { + "version": "4.0.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/cidr-regex": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^4.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/cli-columns": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/cli-table3": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/cmd-shim": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/color-support": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/columnify": { + "version": "1.6.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/debug": { + "version": "4.3.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/defaults": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/delegates": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/diff": { + "version": "5.2.0", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/eastasianwidth": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/exponential-backoff": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.16", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4.9.1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/foreground-child": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/fs-minipass": { + "version": "3.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/function-bind": { + "version": "1.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/gauge": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^4.0.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/glob": { + "version": "10.3.10", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.11", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/hasown": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/hosted-git-info": { + "version": "6.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/http-proxy-agent": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/https-proxy-agent": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/humanize-ms": { + "version": "1.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/ignore-walk": { + "version": "6.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/infer-owner": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/ini": { + "version": "4.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/init-package-json": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^10.0.0", + "promzard": "^1.0.0", + "read": "^2.0.0", + "read-package-json": "^6.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/ip-address": { + "version": "9.0.5", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "dev": true, + "inBundle": true, + "license": "BSD-3-Clause" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/ip-regex": { + "version": "4.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/is-cidr": { + "version": "4.0.2", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^3.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/is-core-module": { + "version": "2.13.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/jackspeak": { + "version": "2.3.6", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/jsbn": { + "version": "1.1.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "dev": true, + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/just-diff": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/just-diff-apply": { + "version": "5.5.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/libnpmaccess": { + "version": "7.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/libnpmdiff": { + "version": "5.0.21", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^6.5.0", + "@npmcli/disparity-colors": "^3.0.0", + "@npmcli/installed-package-contents": "^2.0.2", + "binary-extensions": "^2.2.0", + "diff": "^5.1.0", + "minimatch": "^9.0.0", + "npm-package-arg": "^10.1.0", + "pacote": "^15.0.8", + "tar": "^6.1.13" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/libnpmexec": { + "version": "6.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^6.5.0", + "@npmcli/run-script": "^6.0.0", + "ci-info": "^4.0.0", + "npm-package-arg": "^10.1.0", + "npmlog": "^7.0.1", + "pacote": "^15.0.8", + "proc-log": "^3.0.0", + "read": "^2.0.0", + "read-package-json-fast": "^3.0.2", + "semver": "^7.3.7", + "walk-up-path": "^3.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/libnpmfund": { + "version": "4.2.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^6.5.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/libnpmhook": { + "version": "9.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/libnpmorg": { + "version": "5.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/libnpmpack": { + "version": "5.0.21", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^6.5.0", + "@npmcli/run-script": "^6.0.0", + "npm-package-arg": "^10.1.0", + "pacote": "^15.0.8" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/libnpmpublish": { + "version": "7.5.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ci-info": "^4.0.0", + "normalize-package-data": "^5.0.0", + "npm-package-arg": "^10.1.0", + "npm-registry-fetch": "^14.0.3", + "proc-log": "^3.0.0", + "semver": "^7.3.7", + "sigstore": "^1.4.0", + "ssri": "^10.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/libnpmsearch": { + "version": "6.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/libnpmteam": { + "version": "5.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^14.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/libnpmversion": { + "version": "4.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^4.0.1", + "@npmcli/run-script": "^6.0.0", + "json-parse-even-better-errors": "^3.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/lru-cache": { + "version": "7.18.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/make-fetch-happen": { + "version": "11.1.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/make-fetch-happen/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/minimatch": { + "version": "9.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/minipass": { + "version": "7.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/minipass-collect": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/minipass-fetch": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/minipass-json-stream": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/mute-stream": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/negotiator": { + "version": "0.6.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp": { + "version": "9.4.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/@npmcli/fs": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/abbrev": { + "version": "1.1.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/are-we-there-yet": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/cacache": { + "version": "16.1.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/glob": { + "version": "8.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/cacache/node_modules/minimatch": { + "version": "5.1.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/gauge": { + "version": "4.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/make-fetch-happen": { + "version": "10.2.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/minipass-fetch": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/nopt": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { + "version": "6.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/ssri": { + "version": "9.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/unique-filename": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/unique-slug": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/nopt": { + "version": "7.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/normalize-package-data": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/npm-audit-report": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/npm-bundled": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/npm-install-checks": { + "version": "6.3.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/npm-package-arg": { + "version": "10.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/npm-packlist": { + "version": "7.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "ignore-walk": "^6.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/npm-pick-manifest": { + "version": "8.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/npm-profile": { + "version": "7.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/npm-registry-fetch": { + "version": "14.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/npm-registry-fetch/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/npm-user-validate": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "BSD-2-Clause", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/npmlog": { + "version": "7.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^4.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^5.0.0", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/once": { + "version": "1.4.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/pacote": { + "version": "15.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/pacote/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/parse-conflict-json": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "just-diff": "^6.0.0", + "just-diff-apply": "^5.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/path-scurry": { + "version": "1.10.1", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/postcss-selector-parser": { + "version": "6.0.15", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/proc-log": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/promise-call-limit": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/promzard": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "^2.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/read": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~1.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/read-cmd-shim": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/read-package-json": { + "version": "6.0.4", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/read-package-json-fast": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/readable-stream": { + "version": "3.6.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "optional": true + }, + "node_modules/semantic-release/node_modules/npm/node_modules/semver": { + "version": "7.6.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/signal-exit": { + "version": "4.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/sigstore": { + "version": "1.9.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "@sigstore/sign": "^1.0.0", + "@sigstore/tuf": "^1.0.3", + "make-fetch-happen": "^11.0.1" + }, + "bin": { + "sigstore": "bin/sigstore.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/socks": { + "version": "2.8.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/socks-proxy-agent": { + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/spdx-correct": { + "version": "3.2.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.5.0", + "dev": true, + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.17", + "dev": true, + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/ssri": { + "version": "10.0.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/supports-color": { + "version": "9.4.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/tar": { + "version": "6.2.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/treeverse": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/tuf-js": { + "version": "1.1.7", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/models": "1.0.4", + "debug": "^4.3.4", + "make-fetch-happen": "^11.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/unique-filename": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/unique-slug": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/validate-npm-package-name": { + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/walk-up-path": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/which": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/wide-align": { + "version": "1.1.5", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/wrap-ansi": { + "version": "8.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/wrap-ansi/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/wrap-ansi/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/npm/node_modules/write-file-atomic": { + "version": "5.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/semantic-release/node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "inBundle": true, + "license": "ISC" + }, + "node_modules/semantic-release/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/p-reduce": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-3.0.0.tgz", + "integrity": "sha512-xsrIUgI0Kn6iyDYm9StOpOeK29XM1aboGji26+QEortiFST1hGZaUQOLhtEbqHErPpGW/aSz6allwK2qcptp0Q==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/semantic-release/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/read-pkg-up": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", + "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0", + "read-pkg": "^8.1.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/semantic-release/node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/semantic-release/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/semantic-release/node_modules/tempy": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", + "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", + "dev": true, + "dependencies": { + "is-stream": "^3.0.0", + "temp-dir": "^3.0.0", + "type-fest": "^2.12.2", + "unique-string": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/tempy/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/text-extensions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/type-fest": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.20.0.tgz", + "integrity": "sha512-MBh+PHUHHisjXf4tlx0CFWoMdjx8zCMLJHOjnV1prABYZFHqtFOyauCIK2/7w4oIfwkF8iNhLtnJEfVY2vn3iw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "dependencies": { + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semantic-release/node_modules/yocto-queue": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", + "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver-regex": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", + "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", @@ -12358,6 +16586,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -12425,10 +16665,13 @@ } }, "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } }, "node_modules/url-parse": { "version": "1.5.10", @@ -12732,15 +16975,6 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/yargs": { "version": "17.7.2", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", @@ -12811,7 +17045,18 @@ }, "src/sdks/core": { "name": "@firebolt-js/sdk", - "version": "0.16.0-next.3", + "version": "1.2.0-next.4", + "license": "Apache-2.0", + "devDependencies": { + "jest": "^28.1.0", + "jest-environment-jsdom": "^28.1.3", + "prettier": "^3.1.0", + "typescript": "^4.6.4" + } + }, + "src/sdks/discovery": { + "name": "@firebolt-js/discovery-sdk", + "version": "1.2.0-next.2", "license": "Apache-2.0", "devDependencies": { "jest": "^28.1.0", @@ -12822,7 +17067,7 @@ }, "src/sdks/manage": { "name": "@firebolt-js/manage-sdk", - "version": "0.16.0-next.3", + "version": "1.2.0-next.4", "license": "Apache-2.0", "devDependencies": { "jest": "^28.1.0", diff --git a/package.json b/package.json index fb036b04d..5c61997af 100644 --- a/package.json +++ b/package.json @@ -12,20 +12,20 @@ "src/sdks/discovery" ], "scripts": { - "fs:setup": "npm run clean ; mkdir -p dist", + "fs:setup": "npm run clean && mkdir -p dist", "validate:each": "npx firebolt-openrpc validate --input src/openrpc --schemas src/schemas --transformations --bidirectional", - "validate:compiled": "npx firebolt-openrpc validate --server dist/firebolt-open-rpc.json --client dist/firebolt-app-open-rpc.json --pass-throughs; npm run validate --workspaces", - "validate": "npm run validate:each ; npm run validate:compiled ", + "validate:compiled": "npx firebolt-openrpc validate --server dist/firebolt-open-rpc.json --client dist/firebolt-app-open-rpc.json --pass-throughs && npm run validate --workspaces", + "validate": "npm run validate:each && npm run validate:compiled ", "compile": "npx firebolt-openrpc openrpc --input src --template src/template/openrpc/template.json --server ./dist/firebolt-open-rpc.json --client ./dist/firebolt-app-open-rpc.json --schemas src/schemas", "update": "npx firebolt-openrpc update --input src --schemas src/schemas", "slice": "npm run slice --workspaces", "sdk": "npm run sdk --workspaces", "docs": "npm run docs --workspaces", "wiki": "npm run wiki --workspaces", - "test:setup": "rm -rf test/transpiled-suite ; npx tsc --target es6 --moduleResolution node --outDir test/transpiled-suite ; npm run test:setup --workspaces", - "test": "npm run test:setup ; NODE_OPTIONS=--experimental-vm-modules npx --config=jest.config.json --detectOpenHandles jest", - "clean": "rm -rf dist ; npm run clean --workspaces", - "dist": "npm run fs:setup ; npm run validate:each ; npm run compile ; npm run specification ; npm run version ; npm run dist:notest --workspaces ; npm run test", + "test:setup": "rm -rf test/transpiled-suite && npx tsc --target es6 --moduleResolution node --outDir test/transpiled-suite && npm run test:setup --workspaces", + "test": "npm run test:setup && NODE_OPTIONS=--experimental-vm-modules npx --config=jest.config.json --detectOpenHandles jest", + "clean": "rm -rf dist && npm run clean --workspaces", + "dist": "npm run fs:setup && npm run validate:each && npm run compile && npm run specification && npm run version && npm run dist:notest --workspaces && npm run test", "specification": "node ./src/js/version-specification/index.mjs --source ./src/json/firebolt-specification.json", "specification:report": "node ./src/js/version-specification/index.mjs --source ./dist/firebolt-specification.json --report", "version": "node ./src/js/version.mjs sync", diff --git a/src/openrpc/closed_captions.json b/src/openrpc/closed_captions.json index 7ade57b6e..cef7fe1f2 100644 --- a/src/openrpc/closed_captions.json +++ b/src/openrpc/closed_captions.json @@ -643,7 +643,7 @@ "schema": { "type": "array", "items": { - "$ref": "https://meta.comcast.com/firebolt/localization#/definitions/ISO639_2Language" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/localization#/definitions/ISO639_2Language" } } }, diff --git a/src/openrpc/content.json b/src/openrpc/content.json index 0ffbeadbf..b698486ff 100644 --- a/src/openrpc/content.json +++ b/src/openrpc/content.json @@ -24,14 +24,14 @@ "name": "type", "required": true, "schema": { - "$ref": "https://meta.comcast.com/firebolt/discovery#/definitions/InterestType" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/InterestType" } }, { "name": "reason", "required": true, "schema": { - "$ref": "https://meta.comcast.com/firebolt/discovery#/definitions/InterestReason" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/InterestReason" } } ], @@ -87,10 +87,10 @@ ] }, { - "name": "onUserInterest", + "name": "userInterest", "tags": [ { - "name": "event" + "name": "notifier" }, { "name": "capabilities", @@ -102,48 +102,51 @@ ], "summary": "Provide information about the entity currently displayed or selected on the screen.", "description": "Provide information about the entity currently displayed or selected on the screen.", - "params": [], - "result": { - "name": "interest", - "schema": { - "$ref": "#/components/schemas/InterestEvent" - }, - "summary": "The EntityDetails data." - }, + "params": [ + { + "name": "interest", + "required": true, + "schema": { + "$ref": "#/components/schemas/InterestEvent" + }, + "summary": "The EntityDetails data." + } + ], "examples": [ { "name": "Default Example", - "params": [], - "result": { - "name": "interest", - "value": { - "appId": "cool-app", - "type": "interest", - "reason": "playlist", - "entity": { - "identifiers": { - "entityId": "345", - "entityType": "program", - "programType": "movie" - }, - "info": { - "title": "Cool Runnings", - "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", - "releaseDate": "1993-01-01T00:00:00.000Z", - "contentRatings": [ - { - "scheme": "US-Movie", - "rating": "PG" - }, - { - "scheme": "CA-Movie", - "rating": "G" - } - ] + "params": [ + { + "name": "interest", + "value": { + "appId": "cool-app", + "type": "interest", + "reason": "playlist", + "entity": { + "identifiers": { + "entityId": "345", + "entityType": "program", + "programType": "movie" + }, + "info": { + "title": "Cool Runnings", + "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", + "releaseDate": "1993-01-01T00:00:00.000Z", + "contentRatings": [ + { + "scheme": "US-Movie", + "rating": "PG" + }, + { + "scheme": "CA-Movie", + "rating": "G" + } + ] + } } } - } - } + } + ] } ] } @@ -158,7 +161,7 @@ "type": "string" }, "entity": { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/EntityDetails" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/EntityDetails" } }, "required": [ @@ -174,13 +177,13 @@ "type": "string" }, "type": { - "$ref": "https://meta.comcast.com/firebolt/discovery#/definitions/InterestType" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/InterestType" }, "reason": { - "$ref": "https://meta.comcast.com/firebolt/discovery#/definitions/InterestReason" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/InterestReason" }, "entity": { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/EntityDetails" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/EntityDetails" } }, "required": [ diff --git a/src/openrpc/discovery.json b/src/openrpc/discovery.json index 40d5c4f5a..f19d2af7e 100644 --- a/src/openrpc/discovery.json +++ b/src/openrpc/discovery.json @@ -1497,21 +1497,21 @@ "name": "type", "required": true, "schema": { - "$ref": "https://meta.comcast.com/firebolt/discovery#/definitions/InterestType" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/InterestType" } }, { "name": "reason", "required": true, "schema": { - "$ref": "https://meta.comcast.com/firebolt/discovery#/definitions/InterestReason" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/InterestReason" } }, { "name": "entity", "required": true, "schema": { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/EntityDetails" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/EntityDetails" } } ], @@ -1553,18 +1553,61 @@ ] }, { - "name": "Discovery.onRequestUserInterest", + "name": "Discovery.userInterest2", "tags": [ { - "name": "rpc-only" + "name": "push" }, { - "name": "event", - "x-response-name": "entity", - "x-response": { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/EntityDetails", - "examples": [ - { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:discovery:interest" + } + ], + "summary": "Provide information about the entity currently displayed or selected on the screen.", + "description": "Provide information about the entity currently displayed or selected on the screen.", + "params": [ + { + "name": "type", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/InterestType" + } + }, + { + "name": "reason", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/InterestReason" + } + }, + { + "name": "entity", + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/EntityDetails" + } + } + ], + "result": { + "name": "result", + "schema": { + "type": "null" + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "type", + "value": "interest" + }, + { + "name": "reason", + "value": "playlist" + }, + { + "name": "entity", + "value": { "identifiers": { "entityId": "345", "entityType": "program", @@ -1586,9 +1629,18 @@ ] } } - ] + } + ], + "result": { + "name": "result", + "value": null } - }, + } + ] + }, + { + "name": "Discovery.userInterest", + "tags": [ { "name": "capabilities", "x-provides": "xrn:firebolt:capability:discovery:interest" @@ -1596,43 +1648,69 @@ ], "summary": "Provide information about the entity currently displayed or selected on the screen.", "description": "Provide information about the entity currently displayed or selected on the screen.", - "params": [], + "params": [ + { + "name": "type", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/InterestType" + } + }, + { + "name": "reason", + "required": true, + "schema": { + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/InterestReason" + } + } + ], "result": { - "name": "request", + "name": "entity", "schema": { - "type": "object", - "required": [ - "correlationId", - "parameters" - ], - "properties": { - "correlationId": { - "type": "string" - }, - "parameters": { - "$ref": "#/components/schemas/UserInterestProviderParameters" - } - }, - "additionalProperties": false + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/EntityDetails" } }, "examples": [ { "name": "Default Example", - "params": [], + "params": [ + { + "name": "type", + "value": "interest" + }, + { + "name": "reason", + "value": "playlist" + } + ], "result": { - "name": "request", + "name": "entity", "value": { - "correlationId": "xyz", - "parameters": { - "type": "interest", - "reason": "playlist" + "identifiers": { + "entityId": "345", + "entityType": "program", + "programType": "movie" + }, + "info": { + "title": "Cool Runnings", + "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", + "releaseDate": "1993-01-01T00:00:00.000Z", + "contentRatings": [ + { + "scheme": "US-Movie", + "rating": "PG" + }, + { + "scheme": "CA-Movie", + "rating": "G" + } + ] } } } } ] - } + } ], "components": { "schemas": { @@ -1960,10 +2038,10 @@ ], "properties": { "type": { - "$ref": "https://meta.comcast.com/firebolt/discovery#/definitions/InterestType" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/InterestType" }, "reason": { - "$ref": "https://meta.comcast.com/firebolt/discovery#/definitions/InterestReason" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/InterestReason" } } } diff --git a/src/openrpc/hdmi-input.json b/src/openrpc/hdmi-input.json index 9a724aab2..13b340a82 100644 --- a/src/openrpc/hdmi-input.json +++ b/src/openrpc/hdmi-input.json @@ -173,10 +173,10 @@ ] }, { - "name": "onConnectionChanged", + "name": "connectionChanged", "tags": [ { - "name": "event" + "name": "notifier" }, { "name": "capabilities", @@ -186,32 +186,35 @@ } ], "summary": "Notification for when any HDMI port has a connection physically engaged or disengaged.", - "params": [], - "result": { - "name": "info", - "schema": { - "$ref": "#/components/schemas/ConnectionChangedInfo" + "params": [ + { + "name": "info", + "required": true, + "schema": { + "$ref": "#/components/schemas/ConnectionChangedInfo" + } } - }, + ], "examples": [ { "name": "Default Example", - "params": [], - "result": { - "name": "info", - "value": { - "port": "HDMI1", - "connected": true + "params": [ + { + "name": "info", + "value": { + "port": "HDMI1", + "connected": true + } } - } + ] } ] }, { - "name": "onSignalChanged", + "name": "signalChanged", "tags": [ { - "name": "event" + "name": "notifier" }, { "name": "capabilities", @@ -221,24 +224,27 @@ } ], "summary": "Notification for when any HDMI port has it's signal status changed.", - "params": [], - "result": { - "name": "info", - "schema": { - "$ref": "#/components/schemas/SignalChangedInfo" - } - }, + "params": [ + { + "name": "info", + "required": true, + "schema": { + "$ref": "#/components/schemas/SignalChangedInfo" + } + } + ], "examples": [ { "name": "Default Example", - "params": [], - "result": { - "name": "info", - "value": { - "port": "HDMI1", - "signal": "stable" + "params": [ + { + "name": "info", + "value": { + "port": "HDMI1", + "signal": "stable" + } } - } + ] } ] }, @@ -284,7 +290,7 @@ ] }, { - "name": "onAutoLowLatencyModeSignalChanged", + "name": "autoLowLatencyModeSignalChanged", "summary": "Notification for changes to ALLM status of any input device.", "tags": [ { @@ -294,27 +300,30 @@ ] }, { - "name": "event" + "name": "notifier" } ], - "params": [], - "result": { - "name": "info", - "schema": { - "$ref": "#/components/schemas/AutoLowLatencyModeSignalChangedInfo" - } - }, + "params": [ + { + "name": "info", + "required": true, + "schema": { + "$ref": "#/components/schemas/AutoLowLatencyModeSignalChangedInfo" + } + } + ], "examples": [ { "name": "Default Example", - "params": [], - "result": { - "name": "info", - "value": { - "port": "HDMI1", - "autoLowLatencyModeSignalled": true + "params": [ + { + "name": "info", + "value": { + "port": "HDMI1", + "autoLowLatencyModeSignalled": true + } } - } + ] } ] }, diff --git a/src/openrpc/localization.json b/src/openrpc/localization.json index 5a55146d9..0f31566ed 100644 --- a/src/openrpc/localization.json +++ b/src/openrpc/localization.json @@ -196,7 +196,7 @@ "schema": { "type": "array", "items": { - "$ref": "https://meta.comcast.com/firebolt/localization#/definitions/ISO639_2Language" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/localization#/definitions/ISO639_2Language" } } }, diff --git a/src/schemas/entity.json b/src/schemas/entity.json index 2e486e865..afd76bac7 100644 --- a/src/schemas/entity.json +++ b/src/schemas/entity.json @@ -1,5 +1,5 @@ { - "$id": "https://meta.comcast.com/firebolt/entity", + "$id": "https://meta.rdkcentral.com/firebolt/schemas/entity", "title": "Entity", "oneOf": [ { @@ -48,7 +48,7 @@ "waysToWatch": { "type": "array", "items": { - "$ref": "https://meta.comcast.com/firebolt/entertainment#/definitions/WayToWatch" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/WayToWatch" }, "description": "An array of ways a user is might watch this entity, regardless of entitlements." } @@ -112,7 +112,7 @@ "const": "music" }, "musicType": { - "$ref": "https://meta.comcast.com/firebolt/entertainment#/definitions/MusicType" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/MusicType" }, "entityId": { "type": "string" @@ -446,7 +446,7 @@ "contentRatings": { "type": "array", "items": { - "$ref": "https://meta.comcast.com/firebolt/entertainment#/definitions/ContentRating" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entertainment#/definitions/ContentRating" }, "description": "A list of ContentRating objects, describing the entity's ratings in various rating schemes." } diff --git a/src/schemas/intents.json b/src/schemas/intents.json index 9483aad36..06c93044c 100644 --- a/src/schemas/intents.json +++ b/src/schemas/intents.json @@ -421,7 +421,7 @@ "const": "entity" }, "data": { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/Entity" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/Entity" } } } @@ -495,7 +495,7 @@ "additionalProperties": false, "properties": { "entity": { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/ChannelEntity" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/ChannelEntity" }, "options": { "description": "The options property of the data property MUST have only one of the following fields.", @@ -564,7 +564,7 @@ "const": "playback" }, "data": { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/PlayableEntity" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/PlayableEntity" } } } @@ -695,7 +695,7 @@ "type": "object", "properties": { "entity": { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/PlayableEntity" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/PlayableEntity" }, "options": { "type": "object", @@ -1034,19 +1034,19 @@ "entity": { "anyOf": [ { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/MovieEntity" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/MovieEntity" }, { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/TVEpisodeEntity" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/TVEpisodeEntity" }, { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/TVSeriesEntity" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/TVSeriesEntity" }, { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/TVSeasonEntity" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/TVSeasonEntity" }, { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/AdditionalEntity" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/AdditionalEntity" } ] }, @@ -1061,19 +1061,19 @@ "entity": { "anyOf": [ { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/MovieEntity" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/MovieEntity" }, { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/TVEpisodeEntity" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/TVEpisodeEntity" }, { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/TVSeriesEntity" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/TVSeriesEntity" }, { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/TVSeasonEntity" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/TVSeasonEntity" }, { - "$ref": "https://meta.comcast.com/firebolt/entity#/definitions/AdditionalEntity" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/AdditionalEntity" } ] } @@ -2320,7 +2320,7 @@ "const": true }, "language": { - "$ref": "https://meta.comcast.com/firebolt/localization#/definitions/ISO639_2Language" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/localization#/definitions/ISO639_2Language" } }, "if": { diff --git a/src/sdks/core/package.json b/src/sdks/core/package.json index 1fb4638c2..1d34be44b 100644 --- a/src/sdks/core/package.json +++ b/src/sdks/core/package.json @@ -12,26 +12,26 @@ "validate": "npx firebolt-openrpc validate --input ./dist/firebolt-open-rpc.json", "sdk": "npx firebolt-openrpc sdk --server ./dist/firebolt-open-rpc.json --client ./dist/firebolt-app-open-rpc.json --template ./src/js --output ./build/javascript/src", "native": "npx firebolt-openrpc sdk --server ./dist/firebolt-open-rpc.json --client ./dist/firebolt-app-open-rpc.json --template ./src/cpp --output ./build/c/src --static-module Platform --language ../../../node_modules/@firebolt-js/openrpc/languages/cpp", - "compile": "cd ../../.. ; npm run compile", + "compile": "cd ../../.. && npm run compile", "cpp": "npm run cpp:compile && npm run cpp:install", "cpp:compile": "npx firebolt-openrpc sdk --input ./dist/firebolt-core-open-rpc.json --template ./src/cpp --output ./build/cpp/src --static-module Platform --language ../../../node_modules/@firebolt-js/openrpc/languages/cpp", "cpp:install": "./build/cpp/src/scripts/install.sh -i ./build/cpp/src -s ./build/cpp/src/ -m core", - "slice": "npm run slice:server; npm run slice:client", + "slice": "npm run slice:server&& npm run slice:client", "slice:server": "npx firebolt-openrpc slice -i ../../../dist/firebolt-open-rpc.json --sdk ./sdk.config.json -o ./dist/firebolt-open-rpc.json", "slice:client": "npx firebolt-openrpc slice -i ../../../dist/firebolt-app-open-rpc.json --sdk ./sdk.config.json -o ./dist/firebolt-app-open-rpc.json", "docs": "npx firebolt-openrpc docs --server ./dist/firebolt-open-rpc.json --client ./dist/firebolt-app-open-rpc.json --output build/docs/markdown --as-path", "wiki": "npx firebolt-openrpc docs --input ./dist/firebolt-open-rpc.json --output build/docs/markdown", - "dist:notest": "npm run clean ; npm run slice ; npm run validate ; npm run sdk ; npm run docs ; npm run prettier ; npm run dist:copy ; echo 'Firebolt Core SDK /dist/ is ready.\n'", - "dist:copy": "npm run dist:copy:sdk ; npm run dist:copy:docs", - "dist:copy:sdk": "mkdirp ./dist ; cp -R build/javascript/src dist/lib ; cp ./dist/firebolt-open-rpc.json ../../../dist/firebolt-core-open-rpc.json ; cp ./dist/firebolt-app-open-rpc.json ../../../dist/firebolt-core-app-open-rpc.json", - "dist:copy:docs": "mkdirp ./dist ; cp -R build/docs/markdown dist/docs", - "dist": "npm run dist:notest ; npm run test", - "clean": "rm -rf ./build ; rm -rf ./dist", - "test:setup": "rm -rf test/transpiled-suite ; npx tsc --target es6 --moduleResolution node --outDir test/transpiled-suite", - "test": "npm run test:setup ; NODE_OPTIONS=--experimental-vm-modules npx --config=jest.config.json --detectOpenHandles jest", - "prepack": "node ../../js/version.mjs validate ; npm run broilerplate", - "broilerplate": "rm ./CONTRIBUTING.md ; cp ../../../CONTRIBUTING.md ./CONTRIBUTING.md ; rm ./LICENSE ; cp ../../../LICENSE ./LICENSE ; rm ./NOTICE ; cp ../../../NOTICE ./NOTICE", - "prettier": "prettier build/**/*.mjs --write --parser babel ; prettier build/**/*.md --write --parser markdown" + "dist:notest": "npm run clean && npm run slice && npm run validate && npm run sdk && npm run docs && npm run prettier && npm run dist:copy && echo 'Firebolt Core SDK /dist/ is ready.\n'", + "dist:copy": "npm run dist:copy:sdk && npm run dist:copy:docs", + "dist:copy:sdk": "mkdirp ./dist && cp -R build/javascript/src dist/lib && cp ./dist/firebolt-open-rpc.json ../../../dist/firebolt-core-open-rpc.json && cp ./dist/firebolt-app-open-rpc.json ../../../dist/firebolt-core-app-open-rpc.json", + "dist:copy:docs": "mkdirp ./dist && cp -R build/docs/markdown dist/docs", + "dist": "npm run dist:notest && npm run test", + "clean": "rm -rf ./build && rm -rf ./dist", + "test:setup": "rm -rf test/transpiled-suite && npx tsc --target es6 --moduleResolution node --outDir test/transpiled-suite", + "test": "npm run test:setup && NODE_OPTIONS=--experimental-vm-modules npx --config=jest.config.json --detectOpenHandles jest", + "prepack": "node ../../js/version.mjs validate && npm run broilerplate", + "broilerplate": "rm ./CONTRIBUTING.md && cp ../../../CONTRIBUTING.md ./CONTRIBUTING.md && rm ./LICENSE && cp ../../../LICENSE ./LICENSE && rm ./NOTICE && cp ../../../NOTICE ./NOTICE", + "prettier": "prettier build/**/*.mjs --write --parser babel && prettier build/**/*.md --write --parser markdown" }, "repository": { "type": "git", diff --git a/src/sdks/discovery/package.json b/src/sdks/discovery/package.json index 40e4cd992..a90345af0 100644 --- a/src/sdks/discovery/package.json +++ b/src/sdks/discovery/package.json @@ -1,6 +1,6 @@ { "name": "@firebolt-js/discovery-sdk", - "version": "1.2.0-next.2", + "version": "1.2.0-next.4", "description": "The Firebolt Discovery JS SDK", "main": "./dist/lib/firebolt-discovery.mjs", "types": "./dist/lib/firebolt-discovery.d.ts", diff --git a/src/sdks/manage/package.json b/src/sdks/manage/package.json index 006df3cff..7af40c2ff 100644 --- a/src/sdks/manage/package.json +++ b/src/sdks/manage/package.json @@ -15,23 +15,23 @@ "cpp:compile": "npx firebolt-openrpc sdk --input ./dist/firebolt-manage-open-rpc.json --template ./src/cpp --output ./build/cpp/src --static-module Platform --language ../../../node_modules/@firebolt-js/openrpc/languages/cpp", "cpp:install": "./build/cpp/src/scripts/install.sh -i ./build/cpp/src -s ./build/cpp/src/ -m manage", "native": "npx firebolt-openrpc sdk --input ./dist/firebolt-manage-open-rpc.json --template ./src/js --output ./build/c/src --language ../../../node_modules/@firebolt-js/openrpc/languages/c", - "compile": "cd ../../.. ; npm run compile", - "slice": "npm run slice:server; npm run slice:client", + "compile": "cd ../../.. && npm run compile", + "slice": "npm run slice:server&& npm run slice:client", "slice:server": "npx firebolt-openrpc slice -i ../../../dist/firebolt-open-rpc.json --sdk ./sdk.config.json -o ./dist/firebolt-manage-open-rpc.json", "slice:client": "npx firebolt-openrpc slice -i ../../../dist/firebolt-app-open-rpc.json --sdk ./sdk.config.json -o ./dist/firebolt-manage-app-open-rpc.json", "docs": "npx firebolt-openrpc docs --server ./dist/firebolt-manage-open-rpc.json --client ./dist/firebolt-manage-app-open-rpc.json --output build/docs/markdown --as-path", "wiki": "npx firebolt-openrpc docs --input ./dist/firebolt-manage-open-rpc.json --output build/docs/markdown", - "dist:notest": "npm run clean ; npm run slice ; npm run validate ; npm run sdk ; npm run docs ; npm run prettier ; npm run dist:copy ; echo 'Firebolt Manage SDK /dist/ is ready.\n'", - "dist:copy": "npm run dist:copy:sdk ; npm run dist:copy:docs", - "dist:copy:sdk": "mkdirp ./dist ; cp -R build/javascript/src dist/lib ; cp ./dist/firebolt-manage-open-rpc.json ../../../dist/firebolt-manage-open-rpc.json ; cp ./dist/firebolt-manage-app-open-rpc.json ../../../dist/firebolt-core-app-open-rpc.json", - "dist:copy:docs": "mkdirp ./dist ; cp -R build/docs/markdown dist/docs", - "dist": "npm run dist:notest ; npm run test", - "clean": "rm -rf ./build ; rm -rf ./dist", - "test:setup": "rm -rf test/transpiled-suite ; npx tsc --target es6 --moduleResolution node --outDir test/transpiled-suite", - "test": "npm run test:setup ; NODE_OPTIONS=--experimental-vm-modules npx --config=jest.config.json --detectOpenHandles jest", - "prepack": "node ../../js/version.mjs validate ; npm run broilerplate", - "broilerplate": "rm ./CONTRIBUTING.md ; cp ../../../CONTRIBUTING.md ./CONTRIBUTING.md ; rm ./LICENSE ; cp ../../../LICENSE ./LICENSE ; rm ./NOTICE ; cp ../../../NOTICE ./NOTICE", - "prettier": "prettier build/**/*.mjs --write --parser babel ; prettier build/**/*.md --write --parser markdown" + "dist:notest": "npm run clean && npm run slice && npm run validate && npm run sdk && npm run docs && npm run prettier && npm run dist:copy && echo 'Firebolt Manage SDK /dist/ is ready.\n'", + "dist:copy": "npm run dist:copy:sdk && npm run dist:copy:docs", + "dist:copy:sdk": "mkdirp ./dist && cp -R build/javascript/src dist/lib && cp ./dist/firebolt-manage-open-rpc.json ../../../dist/firebolt-manage-open-rpc.json && cp ./dist/firebolt-manage-app-open-rpc.json ../../../dist/firebolt-core-app-open-rpc.json", + "dist:copy:docs": "mkdirp ./dist && cp -R build/docs/markdown dist/docs", + "dist": "npm run dist:notest && npm run test", + "clean": "rm -rf ./build && rm -rf ./dist", + "test:setup": "rm -rf test/transpiled-suite && npx tsc --target es6 --moduleResolution node --outDir test/transpiled-suite", + "test": "npm run test:setup && NODE_OPTIONS=--experimental-vm-modules npx --config=jest.config.json --detectOpenHandles jest", + "prepack": "node ../../js/version.mjs validate && npm run broilerplate", + "broilerplate": "rm ./CONTRIBUTING.md && cp ../../../CONTRIBUTING.md ./CONTRIBUTING.md && rm ./LICENSE && cp ../../../LICENSE ./LICENSE && rm ./NOTICE && cp ../../../NOTICE ./NOTICE", + "prettier": "prettier build/**/*.mjs --write --parser babel && prettier build/**/*.md --write --parser markdown" }, "repository": { "type": "git", From 462d6a1386b8bdd19e227c9833b942a92b937ee1 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Wed, 12 Jun 2024 13:43:06 -0400 Subject: [PATCH 33/43] fix: Move HDMI, UserInterest over to new RPC paradigm BREAKING CHANGE: previous breaking change commit had this in the wrong place, putting it here now. --- package-lock.json | 290 +++++++++++++++--- package.json | 2 +- .../specifications/discovery/user-interest.md | 7 + .../app-passthrough-apis.md | 7 +- src/openrpc/content.json | 2 +- src/openrpc/discovery.json | 164 ++++------ src/sdks/core/package.json | 2 +- src/sdks/core/sdk.config.json | 6 + src/sdks/core/test/suite/discovery.test.ts | 10 +- src/sdks/discovery/package.json | 12 +- src/sdks/discovery/test/suite/content.test.ts | 4 +- src/sdks/manage/test/suite/keyboard.test.ts | 40 +-- 12 files changed, 367 insertions(+), 179 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8d87f6811..09023228b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "devDependencies": { "@commitlint/cli": "^17.0.3", "@commitlint/config-conventional": "^17.0.3", - "@firebolt-js/openrpc": "../firebolt-openrpc", + "@firebolt-js/openrpc": "rdkcentral/firebolt-openrpc#major/rpc", "@firebolt-js/schemas": "2.0.0", "@saithodev/semantic-release-backmerge": "^3.2.0", "@semantic-release/changelog": "^6.0.1", @@ -37,38 +37,6 @@ "typescript": "^4.6.4" } }, - "../firebolt-openrpc": { - "name": "@firebolt-js/openrpc", - "version": "3.0.0-next.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "ajv": "^8.12.0", - "ajv-formats": "^2.1.1", - "array.prototype.groupby": "^1.1.0", - "crocks": "^0.12.4", - "deepmerge": "^4.2.2", - "fs-extra": "^10.1.0", - "highland": "^2.13.5", - "mkdirp": "^0.5.6", - "node-fetch": "^3.2.10", - "nopt": "^5.0.0", - "util": "^0.12.4" - }, - "bin": { - "firebolt-openrpc": "src/cli.mjs" - }, - "devDependencies": { - "@commitlint/cli": "^17.1.2", - "@commitlint/config-conventional": "^17.1.0", - "@semantic-release/changelog": "^6.0.1", - "@semantic-release/git": "^10.0.1", - "@semantic-release/npm": "^9.0.1", - "husky": "^8.0.1", - "jest": "^27.3.1", - "semantic-release": "^19.0.5" - } - }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -1023,8 +991,95 @@ "link": true }, "node_modules/@firebolt-js/openrpc": { - "resolved": "../firebolt-openrpc", - "link": true + "version": "3.0.0-next.4", + "resolved": "git+ssh://git@github.com/rdkcentral/firebolt-openrpc.git#b13d4cd581d1e990f8d01a3bba285df3b3bef7f7", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^2.1.1", + "array.prototype.groupby": "^1.1.0", + "crocks": "^0.12.4", + "deepmerge": "^4.2.2", + "fs-extra": "^10.1.0", + "highland": "^2.13.5", + "mkdirp": "^0.5.6", + "node-fetch": "^3.2.10", + "nopt": "^5.0.0", + "util": "^0.12.4" + }, + "bin": { + "firebolt-openrpc": "src/cli.mjs" + } + }, + "node_modules/@firebolt-js/openrpc/node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/@firebolt-js/openrpc/node_modules/ajv": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@firebolt-js/openrpc/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@firebolt-js/openrpc/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/@firebolt-js/openrpc/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/@firebolt-js/openrpc/node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "dev": true, + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } }, "node_modules/@firebolt-js/schemas": { "version": "2.0.0", @@ -2713,6 +2768,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.groupby": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/array.prototype.groupby/-/array.prototype.groupby-1.1.0.tgz", + "integrity": "sha512-p+QtvmnNEBqajQWLG3kPls8cLPBfJgvayzc/qplsX8Vchtevtq+TR2gyav5xs5h+mdUjfgOvYoCdTsVxu3b5sA==", + "deprecated": "This proposal has been altered; please use https://npmjs.com/object.groupby instead!", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.2", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.1.1" + } + }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", @@ -3347,6 +3416,12 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, + "node_modules/crocks": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/crocks/-/crocks-0.12.4.tgz", + "integrity": "sha512-paln6xJUrR9e/OWMFsyTi4dLyr+q99C5f7PQbGgSDHtwsfW0sCNZvnpHzvniI2dAE0uoBgeIP1Ukmme8Z0HxxA==", + "dev": true + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -3403,6 +3478,15 @@ "node": ">=8" } }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, "node_modules/data-urls": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", @@ -4844,6 +4928,29 @@ "bser": "2.1.1" } }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, "node_modules/figures": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", @@ -4970,6 +5077,18 @@ "node": ">= 6" } }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -5423,6 +5542,15 @@ "node": ">= 0.4" } }, + "node_modules/highland": { + "version": "2.13.5", + "resolved": "https://registry.npmjs.org/highland/-/highland-2.13.5.tgz", + "integrity": "sha512-dn2flPapIIAa4BtkB2ahjshg8iSJtrJtdhEb9/oiOrS5HMQTR/GuhFpqJ+11YBdtnl3AwWKvbZd1Uxr8uAmA7A==", + "dev": true, + "dependencies": { + "util-deprecate": "^1.0.2" + } + }, "node_modules/hook-std": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", @@ -5682,6 +5810,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-array-buffer": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", @@ -5813,6 +5957,21 @@ "node": ">=6" } }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -7425,6 +7584,25 @@ "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", "dev": true }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, "node_modules/node-emoji": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", @@ -7434,6 +7612,24 @@ "lodash": "^4.17.21" } }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -16683,6 +16879,19 @@ "requires-port": "^1.0.0" } }, + "node_modules/util": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "is-arguments": "^1.0.4", + "is-generator-function": "^1.0.7", + "is-typed-array": "^1.1.3", + "which-typed-array": "^1.1.2" + } + }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -16762,6 +16971,15 @@ "makeerror": "1.0.12" } }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -17056,7 +17274,7 @@ }, "src/sdks/discovery": { "name": "@firebolt-js/discovery-sdk", - "version": "1.2.0-next.2", + "version": "1.2.0-next.4", "license": "Apache-2.0", "devDependencies": { "jest": "^28.1.0", diff --git a/package.json b/package.json index 5c61997af..9da7a0201 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "devDependencies": { "@commitlint/cli": "^17.0.3", "@commitlint/config-conventional": "^17.0.3", - "@firebolt-js/openrpc": "../firebolt-openrpc", + "@firebolt-js/openrpc": "rdkcentral/firebolt-openrpc#major/rpc", "@firebolt-js/schemas": "2.0.0", "@saithodev/semantic-release-backmerge": "^3.2.0", "@semantic-release/changelog": "^6.0.1", diff --git a/requirements/specifications/discovery/user-interest.md b/requirements/specifications/discovery/user-interest.md index f53e239ba..637243f8c 100644 --- a/requirements/specifications/discovery/user-interest.md +++ b/requirements/specifications/discovery/user-interest.md @@ -168,6 +168,13 @@ EntityDetails, which is returned as the result to the pending ![](../../../requirements/images/specifications/intents/user-interest/media/image4.png) +**TODO**: clean this up and add to spec + +1. When an Aggregated Experience app calls `Content.requestUserInterst` the platform MUST dispatch a `Discovery.onRequestUserInterest` notification to the best candidated provider app. +2. The Firebolt SDK embedded in the provider app parses out the parameters from onRequestUserInterest API and calls the apps `Provider.userInterest` method, which was passed in via Discovery.provide() +3. The SDK waits for the response from `Provider.userInterest` and then it calls `Discovery.userInterestResponse` +4. If the app threw an error, the SDK calls `Discovery.userInterestError` + Once an App's callback is invoked, that app will have `interestTimeout` milliseconds to return a value or throw an error. Values returned after that time **MUST** be ignored. The timeout value is stored in the diff --git a/requirements/specifications/openrpc-extensions/app-passthrough-apis.md b/requirements/specifications/openrpc-extensions/app-passthrough-apis.md index ec23922e6..efc8f61c5 100644 --- a/requirements/specifications/openrpc-extensions/app-passthrough-apis.md +++ b/requirements/specifications/openrpc-extensions/app-passthrough-apis.md @@ -115,7 +115,7 @@ The platform **MUST** call the provider method from the [best candidate](#8-best If the platform method result schema matches the `x-response` schema on the provider method then the value **MUST** be used as-is. -Otherwise if the platform method result schema has a property that matches the `x-response` schema on the provider method then the value **MUST** be composed into an object under the corresponding property name and the platform **MUST** apply any [result transformations](#9-result-transformations) to the composed result. +Otherwise if the platform method result schema has any properties that matches the `x-response` schema on the provider method then the value **MUST** be composed into an object under the corresponding property name and the platform **MUST** apply any [result transformations](#9-result-transformations) to the composed result. ### 4.4. Pass-through notifications Firebolt events have a synchronous subscriber registration method, e.g. `Lifecycle.onInactive(true)`, in addition to asynchronous notifications when the event actually happens. For events powered by an app pass-through, only the asynchronous notifications are passed in by the providing app. The initial event registration is handled by the platform, and the success response is not handled by the providing app. @@ -239,6 +239,11 @@ The policy **MAY** have an `inFocus` boolean. If the policy has `inFocus` set to `true` then any app without RCU input focus when the capability is invoked **MUST NOT** be considered a candidate. ## 6. Best Candidate + +**TODO**: fix section 5 and this section... + +Candidate apps are all apps that have registered to provide the capability. + If there is only one candidate then it **MUST** be the best candidate. If there is more than one candidate, then the candidate app that most recently had RCU input focus **MUST** be the best candidate. diff --git a/src/openrpc/content.json b/src/openrpc/content.json index b698486ff..b0dede49c 100644 --- a/src/openrpc/content.json +++ b/src/openrpc/content.json @@ -11,7 +11,7 @@ "tags": [ { "name": "capabilities", - "x-provided-by": "Discovery.onRequestUserInterest", + "x-provided-by": "Interest.userInterest", "x-uses": [ "xrn:firebolt:capability:discovery:interest" ] diff --git a/src/openrpc/discovery.json b/src/openrpc/discovery.json index f19d2af7e..fa3239195 100644 --- a/src/openrpc/discovery.json +++ b/src/openrpc/discovery.json @@ -1483,8 +1483,52 @@ } ] }, + { + "name": "provideInterest", + "tags": [ + { + "name": "registration", + "x-interface": "Interest" + }, + { + "name": "capabilities", + "x-provides": "xrn:firebolt:capability:discovery:interest" + } + ], + "summary": "Register an app's Interest interface.", + "params": [ + { + "name": "enabled", + "required": true, + "schema": { + "type": "boolean" + } + } + ], + "result": { + "name": "result", + "schema": { + "const": null + } + }, + "examples": [ + { + "name": "Default Example", + "params": [ + { + "name": "enabled", + "value": true + } + ], + "result": { + "name": "result", + "value": null + } + } + ] + }, { - "name": "userInterest", + "name": "Interest.userInterest", "summary": "Send an entity that the user has expressed interest in to the platform.", "tags": [ { @@ -1506,19 +1550,12 @@ "schema": { "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/InterestReason" } - }, - { - "name": "entity", - "required": true, - "schema": { - "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/EntityDetails" - } } ], "result": { - "name": "result", + "name": "entity", "schema": { - "type": "null" + "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/EntityDetails" } }, "examples": [ @@ -1532,35 +1569,29 @@ { "name": "reason", "value": "playlist" - }, - { - "name": "entity", - "value": { - "identifiers": { - "entityId": "345", - "entityType": "program", - "programType": "movie" - }, - "info": {} - } } ], - "result": { - "name": "result", - "value": null + "result": { + "name": "entity", + "value": { + "identifiers": { + "entityId": "345", + "entityType": "program", + "programType": "movie" + }, + "info": {} + } } } ] }, { - "name": "Discovery.userInterest2", + "name": "userInterest", "tags": [ - { - "name": "push" - }, { "name": "capabilities", - "x-provides": "xrn:firebolt:capability:discovery:interest" + "x-provides": "xrn:firebolt:capability:discovery:interest", + "x-push": true } ], "summary": "Provide information about the entity currently displayed or selected on the screen.", @@ -1637,80 +1668,7 @@ } } ] - }, - { - "name": "Discovery.userInterest", - "tags": [ - { - "name": "capabilities", - "x-provides": "xrn:firebolt:capability:discovery:interest" - } - ], - "summary": "Provide information about the entity currently displayed or selected on the screen.", - "description": "Provide information about the entity currently displayed or selected on the screen.", - "params": [ - { - "name": "type", - "required": true, - "schema": { - "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/InterestType" - } - }, - { - "name": "reason", - "required": true, - "schema": { - "$ref": "https://meta.rdkcentral.com/firebolt/schemas/discovery#/definitions/InterestReason" - } - } - ], - "result": { - "name": "entity", - "schema": { - "$ref": "https://meta.rdkcentral.com/firebolt/schemas/entity#/definitions/EntityDetails" - } - }, - "examples": [ - { - "name": "Default Example", - "params": [ - { - "name": "type", - "value": "interest" - }, - { - "name": "reason", - "value": "playlist" - } - ], - "result": { - "name": "entity", - "value": { - "identifiers": { - "entityId": "345", - "entityType": "program", - "programType": "movie" - }, - "info": { - "title": "Cool Runnings", - "synopsis": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Pulvinar sapien et ligula ullamcorper malesuada proin libero nunc.", - "releaseDate": "1993-01-01T00:00:00.000Z", - "contentRatings": [ - { - "scheme": "US-Movie", - "rating": "PG" - }, - { - "scheme": "CA-Movie", - "rating": "G" - } - ] - } - } - } - } - ] - } + } ], "components": { "schemas": { diff --git a/src/sdks/core/package.json b/src/sdks/core/package.json index 1d34be44b..a89fef00f 100644 --- a/src/sdks/core/package.json +++ b/src/sdks/core/package.json @@ -20,7 +20,7 @@ "slice:server": "npx firebolt-openrpc slice -i ../../../dist/firebolt-open-rpc.json --sdk ./sdk.config.json -o ./dist/firebolt-open-rpc.json", "slice:client": "npx firebolt-openrpc slice -i ../../../dist/firebolt-app-open-rpc.json --sdk ./sdk.config.json -o ./dist/firebolt-app-open-rpc.json", "docs": "npx firebolt-openrpc docs --server ./dist/firebolt-open-rpc.json --client ./dist/firebolt-app-open-rpc.json --output build/docs/markdown --as-path", - "wiki": "npx firebolt-openrpc docs --input ./dist/firebolt-open-rpc.json --output build/docs/markdown", + "wiki": "npx firebolt-openrpc docs --server ./dist/firebolt-open-rpc.json --client ./dist/firebolt-app-open-rpc.json --output build/docs/markdown", "dist:notest": "npm run clean && npm run slice && npm run validate && npm run sdk && npm run docs && npm run prettier && npm run dist:copy && echo 'Firebolt Core SDK /dist/ is ready.\n'", "dist:copy": "npm run dist:copy:sdk && npm run dist:copy:docs", "dist:copy:sdk": "mkdirp ./dist && cp -R build/javascript/src dist/lib && cp ./dist/firebolt-open-rpc.json ../../../dist/firebolt-core-open-rpc.json && cp ./dist/firebolt-app-open-rpc.json ../../../dist/firebolt-core-app-open-rpc.json", diff --git a/src/sdks/core/sdk.config.json b/src/sdks/core/sdk.config.json index dffe86e92..f96b652da 100644 --- a/src/sdks/core/sdk.config.json +++ b/src/sdks/core/sdk.config.json @@ -117,6 +117,12 @@ "xrn:firebolt:capability:lifecycle:sleepable" ] }, + { + "module": "Interest", + "provide": [ + "xrn:firebolt:capability:discovery:interest" + ] + }, { "module": "Localization", "use": [ diff --git a/src/sdks/core/test/suite/discovery.test.ts b/src/sdks/core/test/suite/discovery.test.ts index b4901fc1e..1ab56a01d 100644 --- a/src/sdks/core/test/suite/discovery.test.ts +++ b/src/sdks/core/test/suite/discovery.test.ts @@ -17,7 +17,7 @@ */ import { test, expect } from "@jest/globals"; -import { Discovery, Entertainment } from "../../build/javascript/src/firebolt"; +import { Discovery, Entertainment, Entity } from "../../build/javascript/src/firebolt"; test("watched(entityId)", () => { return Discovery.watched("abc").then((success: boolean) => { @@ -153,9 +153,9 @@ test("clear()", () => { test("details() provider", () => { - class myUserInterestProvider implements Discovery.UserInterestProvider { - userInterest(parameters?: object, session?: Discovery.ProviderSession): Promise { - return null + class myUserInterestProvider implements Discovery.Interest { + userInterest(type: Discovery.InterestType, reason: Discovery.InterestReason): Promise { + return Promise.resolve(null) } } -}) \ No newline at end of file +}) diff --git a/src/sdks/discovery/package.json b/src/sdks/discovery/package.json index a90345af0..a8fd011e4 100644 --- a/src/sdks/discovery/package.json +++ b/src/sdks/discovery/package.json @@ -10,12 +10,14 @@ "type": "module", "scripts": { "validate": "npx firebolt-openrpc validate --input ./dist/firebolt-discovery-open-rpc.json", - "sdk": "npx firebolt-openrpc sdk --input ./dist/firebolt-discovery-open-rpc.json --template ./src/js --output ./build/javascript/src", - "native": "npx firebolt-openrpc sdk --input ./dist/firebolt-discovery-open-rpc.json --template ./src/js --output ./build/c/src --language ../../../node_modules/@firebolt-js/openrpc/languages/c", + "sdk": "npx firebolt-openrpc sdk --server ./dist/firebolt-discovery-open-rpc.json --client ./dist/firebolt-discovery-app-open-rpc.json --template ./src/js --output ./build/javascript/src", + "native": "npx firebolt-openrpc sdk --server ./dist/firebolt-discovery-open-rpc.json --client ./dist/firebolt-discovery-app-open-rpc.json --template ./src/cpp --output ./build/c/src --language ../../../node_modules/@firebolt-js/openrpc/languages/cpp", "compile": "cd ../../.. && npm run compile", - "slice": "npx firebolt-openrpc slice -i ../../../dist/firebolt-open-rpc.json --sdk ./sdk.config.json -o ./dist/firebolt-discovery-open-rpc.json", - "docs": "npx firebolt-openrpc docs --input ./dist/firebolt-discovery-open-rpc.json --output build/docs/markdown --as-path", - "wiki": "npx firebolt-openrpc docs --input ./dist/firebolt-discovery-open-rpc.json --output build/docs/markdown", + "slice": "npm run slice:server&& npm run slice:client", + "slice:server": "npx firebolt-openrpc slice -i ../../../dist/firebolt-open-rpc.json --sdk ./sdk.config.json -o ./dist/firebolt-discovery-open-rpc.json", + "slice:client": "npx firebolt-openrpc slice -i ../../../dist/firebolt-app-open-rpc.json --sdk ./sdk.config.json -o ./dist/firebolt-discovery-app-open-rpc.json", + "docs": "npx firebolt-openrpc docs --server ./dist/firebolt-discovery-open-rpc.json --client ./dist/firebolt-discovery-app-open-rpc.json --output build/docs/markdown --as-path", + "wiki": "npx firebolt-openrpc docs --server ./dist/firebolt-discovery-open-rpc.json --client ./dist/firebolt-discovery-app-open-rpc.json --output build/docs/markdown", "dist:notest": "npm run clean && npm run slice && npm run validate && npm run sdk && npm run docs && npm run prettier && npm run dist:copy && echo 'Firebolt Discovery SDK /dist/ is ready.\n'", "dist:copy": "npm run dist:copy:sdk && npm run dist:copy:docs", "dist:copy:sdk": "mkdirp ./dist && cp -R build/javascript/src dist/lib && cp ./dist/firebolt-discovery-open-rpc.json ../../../dist/firebolt-discovery-open-rpc.json", diff --git a/src/sdks/discovery/test/suite/content.test.ts b/src/sdks/discovery/test/suite/content.test.ts index 1ab4e98c8..828a909fd 100644 --- a/src/sdks/discovery/test/suite/content.test.ts +++ b/src/sdks/discovery/test/suite/content.test.ts @@ -17,10 +17,10 @@ */ import { test, expect } from "@jest/globals"; -import { Content } from "../../build/javascript/src/firebolt-discovery"; +import { Content, Discovery } from "../../build/javascript/src/firebolt-discovery"; test("Content.requestUserInterest()", () => { - return Content.requestUserInterest(Content.InterestType.INTEREST, Content.InterestReason.PLAYLIST).then((interest: Content.InterestResult) => { + return Content.requestUserInterest(Discovery.InterestType.INTEREST, Discovery.InterestReason.PLAYLIST).then((interest: Content.InterestResult) => { const entity = interest.entity const appId = interest.appId expect(appId).toBeDefined() diff --git a/src/sdks/manage/test/suite/keyboard.test.ts b/src/sdks/manage/test/suite/keyboard.test.ts index e6612453f..5991eb43a 100644 --- a/src/sdks/manage/test/suite/keyboard.test.ts +++ b/src/sdks/manage/test/suite/keyboard.test.ts @@ -30,9 +30,8 @@ class MockProviderBroker { constructor() { } - send(msg) { - let parsed = JSON.parse(msg) - if (parsed.method === 'keyboard.onRequestStandard') { + send(parsed) { + if (parsed.method === 'Keyboard.provide') { state.eventId = parsed.id } if ((parsed.method === 'keyboard.standardResponse') || (parsed.method === 'keyboard.standardError')) { @@ -61,7 +60,7 @@ class MockProviderBroker { correlationId: fullMsg.result.correlationId, callback: providerCallback }) - state.cb(JSON.stringify(fullMsg)) + state.cb(fullMsg) } } const broker = new MockProviderBroker() @@ -69,33 +68,26 @@ let provider = null beforeAll(async () => { Settings.setLogLevel('DEBUG') - window['__firebolt'].setTransportLayer(new MockProviderBroker()) + window['__firebolt'].transport = new MockProviderBroker() provider = new DelegatingKBProvider(new KBProvider()) - await Keyboard.provide("xrn:firebolt:capability:input:keyboard", provider); + Keyboard.provide(provider); }) -class DelegatingKBProvider implements Keyboard.KeyboardInputProvider { - delegate: Keyboard.KeyboardInputProvider; - constructor(delegate: Keyboard.KeyboardInputProvider) { +class DelegatingKBProvider implements Keyboard.Keyboard { + delegate: Keyboard.Keyboard; + constructor(delegate: Keyboard.Keyboard) { this.delegate = delegate; } - standard( - parameters: Keyboard.KeyboardParameters, - session: Keyboard.FocusableProviderSession - ): Promise { - return this.delegate.standard(parameters, session) + standard(message: string): Promise { + return this.delegate.standard(message) } - password( - parameters: Keyboard.KeyboardParameters, - session: Keyboard.FocusableProviderSession - ): Promise { - return this.delegate.password(parameters, session) + + password(message?: string): Promise { + return this.delegate.password(message) } - email( - parameters: Keyboard.KeyboardParameters, - session: Keyboard.FocusableProviderSession - ): Promise { - return this.delegate.email(parameters, session) + + email(type: Keyboard.EmailUsage, message?: string): Promise { + return this.delegate.email(type, message) } } From 543afc4c2a7e0b9895b410badbedb3078e1c24be Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Wed, 12 Jun 2024 13:45:05 -0400 Subject: [PATCH 34/43] fix: Update CI to use new npm script name --- .github/workflows/node.js.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/node.js.yml b/.github/workflows/node.js.yml index 2a2c3bb31..ac225d765 100644 --- a/.github/workflows/node.js.yml +++ b/.github/workflows/node.js.yml @@ -39,5 +39,5 @@ jobs: - run: npm run compile - run: npm run slice - run: npm run validate:compiled - - run: npm run sdks + - run: npm run sdk - run: npm run test From 1b719e14767d2a6312224aaed142717c48418025 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Wed, 12 Jun 2024 15:16:29 -0400 Subject: [PATCH 35/43] fix: Comment out sanity tests --- .../workflows/run-standalone-mfos-tests.yml | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/run-standalone-mfos-tests.yml b/.github/workflows/run-standalone-mfos-tests.yml index 675202521..7560c4f02 100644 --- a/.github/workflows/run-standalone-mfos-tests.yml +++ b/.github/workflows/run-standalone-mfos-tests.yml @@ -14,21 +14,21 @@ jobs: - name: Checkout uses: actions/checkout@v2 - - name: Run tests and create assets - env: - EVENT_NAME: ${{ github.event_name }} - GITHUB_REF: ${{ github.ref }} - PR_HEAD_REF: ${{ github.event.pull_request.head.ref }} - INTENT: ${{ secrets.INTENT }} - run: | - ./.github/workflows/utils.sh runTests + # - name: Run tests and create assets + # env: + # EVENT_NAME: ${{ github.event_name }} + # GITHUB_REF: ${{ github.ref }} + # PR_HEAD_REF: ${{ github.event.pull_request.head.ref }} + # INTENT: ${{ secrets.INTENT }} + # run: | + # ./.github/workflows/utils.sh runTests - - name: Upload report.json as an artifact - uses: actions/upload-artifact@v2 - with: - name: report - path: ${{ github.workspace }}/report + # - name: Upload report.json as an artifact + # uses: actions/upload-artifact@v2 + # with: + # name: report + # path: ${{ github.workspace }}/report - - name: Get results from report.json - run: | - ./.github/workflows/utils.sh getResults \ No newline at end of file + # - name: Get results from report.json + # run: | + # ./.github/workflows/utils.sh getResults \ No newline at end of file From 7bcf08e13839e49cf954a72bf9836ad915492e38 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Wed, 12 Jun 2024 15:18:37 -0400 Subject: [PATCH 36/43] chore: Bumping version --- package-lock.json | 10 +++++----- package.json | 2 +- src/sdks/core/package.json | 2 +- src/sdks/discovery/package.json | 2 +- src/sdks/manage/package.json | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 09023228b..1292110c0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@firebolt-js/sdks", - "version": "1.2.0-next.4", + "version": "2.0.0-next.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@firebolt-js/sdks", - "version": "1.2.0-next.4", + "version": "2.0.0-next.4", "license": "Apache-2.0", "workspaces": [ "src/sdks/core", @@ -17263,7 +17263,7 @@ }, "src/sdks/core": { "name": "@firebolt-js/sdk", - "version": "1.2.0-next.4", + "version": "2.0.0-next.4", "license": "Apache-2.0", "devDependencies": { "jest": "^28.1.0", @@ -17274,7 +17274,7 @@ }, "src/sdks/discovery": { "name": "@firebolt-js/discovery-sdk", - "version": "1.2.0-next.4", + "version": "2.0.0-next.4", "license": "Apache-2.0", "devDependencies": { "jest": "^28.1.0", @@ -17285,7 +17285,7 @@ }, "src/sdks/manage": { "name": "@firebolt-js/manage-sdk", - "version": "1.2.0-next.4", + "version": "2.0.0-next.4", "license": "Apache-2.0", "devDependencies": { "jest": "^28.1.0", diff --git a/package.json b/package.json index 9da7a0201..2b01b55a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@firebolt-js/sdks", - "version": "1.2.0-next.4", + "version": "2.0.0-next.4", "description": "The Firebolt JS SDK", "type": "module", "bin": { diff --git a/src/sdks/core/package.json b/src/sdks/core/package.json index a89fef00f..d7abe747f 100644 --- a/src/sdks/core/package.json +++ b/src/sdks/core/package.json @@ -1,6 +1,6 @@ { "name": "@firebolt-js/sdk", - "version": "1.2.0-next.4", + "version": "2.0.0-next.4", "description": "The Firebolt JS SDK", "main": "./dist/lib/firebolt.mjs", "types": "./dist/lib/firebolt.d.ts", diff --git a/src/sdks/discovery/package.json b/src/sdks/discovery/package.json index a8fd011e4..04c1baeff 100644 --- a/src/sdks/discovery/package.json +++ b/src/sdks/discovery/package.json @@ -1,6 +1,6 @@ { "name": "@firebolt-js/discovery-sdk", - "version": "1.2.0-next.4", + "version": "2.0.0-next.4", "description": "The Firebolt Discovery JS SDK", "main": "./dist/lib/firebolt-discovery.mjs", "types": "./dist/lib/firebolt-discovery.d.ts", diff --git a/src/sdks/manage/package.json b/src/sdks/manage/package.json index 7af40c2ff..5b33b5e50 100644 --- a/src/sdks/manage/package.json +++ b/src/sdks/manage/package.json @@ -1,6 +1,6 @@ { "name": "@firebolt-js/manage-sdk", - "version": "1.2.0-next.4", + "version": "2.0.0-next.4", "description": "The Firebolt Manage JS SDK", "main": "./dist/lib/firebolt-manage.mjs", "types": "./dist/lib/firebolt-manage.d.ts", From 247d20c3280c1bc9acf800a04b781489ad12c6a7 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Wed, 12 Jun 2024 15:22:56 -0400 Subject: [PATCH 37/43] fix: Trigger major version build --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index ed0fcaaae..6d63e22e0 100644 --- a/README.md +++ b/README.md @@ -8,3 +8,4 @@ title: Firebolt APIs Firebolt APIs are defined by [OpenRPC schemas](https://spec.open-rpc.org). The schemas are used to generate SDK and Documentation artifacts. + From b204cbadf175bbc9afba87a9d8ddb506ca117248 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Tue, 18 Jun 2024 09:31:09 -0400 Subject: [PATCH 38/43] fix: Move transport interface back to string, not json --- package-lock.json | 287 +++--------------- package.json | 4 +- src/js/version-specification/index.mjs | 4 +- src/sdks/core/test/suite/federation.test.ts | 19 +- .../core/test/suite/lazy-transport.test.ts | 5 +- .../test/suite/listeners-transport.test.ts | 115 ++++--- .../test/suite/synchronous-transport.test.ts | 13 +- 7 files changed, 136 insertions(+), 311 deletions(-) diff --git a/package-lock.json b/package-lock.json index 1292110c0..fb990c50d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,7 +19,7 @@ "devDependencies": { "@commitlint/cli": "^17.0.3", "@commitlint/config-conventional": "^17.0.3", - "@firebolt-js/openrpc": "rdkcentral/firebolt-openrpc#major/rpc", + "@firebolt-js/openrpc": "../firebolt-openrpc", "@firebolt-js/schemas": "2.0.0", "@saithodev/semantic-release-backmerge": "^3.2.0", "@semantic-release/changelog": "^6.0.1", @@ -37,6 +37,37 @@ "typescript": "^4.6.4" } }, + "../firebolt-openrpc": { + "version": "3.0.0-next.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^2.1.1", + "array.prototype.groupby": "^1.1.0", + "crocks": "^0.12.4", + "deepmerge": "^4.2.2", + "fs-extra": "^10.1.0", + "highland": "^2.13.5", + "mkdirp": "^0.5.6", + "node-fetch": "^3.2.10", + "nopt": "^5.0.0", + "util": "^0.12.4" + }, + "bin": { + "firebolt-openrpc": "src/cli.mjs" + }, + "devDependencies": { + "@commitlint/cli": "^17.1.2", + "@commitlint/config-conventional": "^17.1.0", + "@semantic-release/changelog": "^6.0.1", + "@semantic-release/git": "^10.0.1", + "@semantic-release/npm": "^9.0.1", + "husky": "^8.0.1", + "jest": "^27.3.1", + "semantic-release": "^19.0.5" + } + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -991,95 +1022,8 @@ "link": true }, "node_modules/@firebolt-js/openrpc": { - "version": "3.0.0-next.4", - "resolved": "git+ssh://git@github.com/rdkcentral/firebolt-openrpc.git#b13d4cd581d1e990f8d01a3bba285df3b3bef7f7", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "ajv": "^8.12.0", - "ajv-formats": "^2.1.1", - "array.prototype.groupby": "^1.1.0", - "crocks": "^0.12.4", - "deepmerge": "^4.2.2", - "fs-extra": "^10.1.0", - "highland": "^2.13.5", - "mkdirp": "^0.5.6", - "node-fetch": "^3.2.10", - "nopt": "^5.0.0", - "util": "^0.12.4" - }, - "bin": { - "firebolt-openrpc": "src/cli.mjs" - } - }, - "node_modules/@firebolt-js/openrpc/node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "dev": true - }, - "node_modules/@firebolt-js/openrpc/node_modules/ajv": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.16.0.tgz", - "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@firebolt-js/openrpc/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@firebolt-js/openrpc/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/@firebolt-js/openrpc/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/@firebolt-js/openrpc/node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } + "resolved": "../firebolt-openrpc", + "link": true }, "node_modules/@firebolt-js/schemas": { "version": "2.0.0", @@ -2768,20 +2712,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.groupby": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array.prototype.groupby/-/array.prototype.groupby-1.1.0.tgz", - "integrity": "sha512-p+QtvmnNEBqajQWLG3kPls8cLPBfJgvayzc/qplsX8Vchtevtq+TR2gyav5xs5h+mdUjfgOvYoCdTsVxu3b5sA==", - "deprecated": "This proposal has been altered; please use https://npmjs.com/object.groupby instead!", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.2", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.1.1" - } - }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", @@ -3416,12 +3346,6 @@ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/crocks": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/crocks/-/crocks-0.12.4.tgz", - "integrity": "sha512-paln6xJUrR9e/OWMFsyTi4dLyr+q99C5f7PQbGgSDHtwsfW0sCNZvnpHzvniI2dAE0uoBgeIP1Ukmme8Z0HxxA==", - "dev": true - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -3478,15 +3402,6 @@ "node": ">=8" } }, - "node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/data-urls": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", @@ -4928,29 +4843,6 @@ "bser": "2.1.1" } }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" - } - }, "node_modules/figures": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-5.0.0.tgz", @@ -5077,18 +4969,6 @@ "node": ">= 6" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "dev": true, - "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" - } - }, "node_modules/from2": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", @@ -5542,15 +5422,6 @@ "node": ">= 0.4" } }, - "node_modules/highland": { - "version": "2.13.5", - "resolved": "https://registry.npmjs.org/highland/-/highland-2.13.5.tgz", - "integrity": "sha512-dn2flPapIIAa4BtkB2ahjshg8iSJtrJtdhEb9/oiOrS5HMQTR/GuhFpqJ+11YBdtnl3AwWKvbZd1Uxr8uAmA7A==", - "dev": true, - "dependencies": { - "util-deprecate": "^1.0.2" - } - }, "node_modules/hook-std": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-3.0.0.tgz", @@ -5810,22 +5681,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-array-buffer": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", @@ -5957,21 +5812,6 @@ "node": ">=6" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", - "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-glob": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", @@ -7584,25 +7424,6 @@ "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", "dev": true }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], - "engines": { - "node": ">=10.5.0" - } - }, "node_modules/node-emoji": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", @@ -7612,24 +7433,6 @@ "lodash": "^4.17.21" } }, - "node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "dev": true, - "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" - } - }, "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -16879,19 +16682,6 @@ "requires-port": "^1.0.0" } }, - "node_modules/util": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", - "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", @@ -16971,15 +16761,6 @@ "makeerror": "1.0.12" } }, - "node_modules/web-streams-polyfill": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", - "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", diff --git a/package.json b/package.json index 2b01b55a3..c26b31d6f 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "test": "npm run test:setup && NODE_OPTIONS=--experimental-vm-modules npx --config=jest.config.json --detectOpenHandles jest", "clean": "rm -rf dist && npm run clean --workspaces", "dist": "npm run fs:setup && npm run validate:each && npm run compile && npm run specification && npm run version && npm run dist:notest --workspaces && npm run test", - "specification": "node ./src/js/version-specification/index.mjs --source ./src/json/firebolt-specification.json", + "specification": "node ./src/js/version-specification/index.mjs --source ./src/json/firebolt-specification.json --legacy-versions 0", "specification:report": "node ./src/js/version-specification/index.mjs --source ./dist/firebolt-specification.json --report", "version": "node ./src/js/version.mjs sync", "dev:setup": "husky install", @@ -46,7 +46,7 @@ "devDependencies": { "@commitlint/cli": "^17.0.3", "@commitlint/config-conventional": "^17.0.3", - "@firebolt-js/openrpc": "rdkcentral/firebolt-openrpc#major/rpc", + "@firebolt-js/openrpc": "../firebolt-openrpc", "@firebolt-js/schemas": "2.0.0", "@saithodev/semantic-release-backmerge": "^3.2.0", "@semantic-release/changelog": "^6.0.1", diff --git a/src/js/version-specification/index.mjs b/src/js/version-specification/index.mjs index ec7c03b8e..4c0abe565 100644 --- a/src/js/version-specification/index.mjs +++ b/src/js/version-specification/index.mjs @@ -9,7 +9,7 @@ const loadJson = file => readFile(file).then(data => JSON.parse(data.toString()) const knownOpts = { 'capabilities': [Boolean], - 'legacy-support': [Number], + 'legacy-versions': [Number], 'source': [String], 'report': [Boolean] } @@ -22,7 +22,7 @@ const defaultOpts = { } const shortHands = { - 'l': '--legacy-versions', + 'l': '--legacy-version', 'c': '--capabilities', 't': '--target', 's': '--source', diff --git a/src/sdks/core/test/suite/federation.test.ts b/src/sdks/core/test/suite/federation.test.ts index 120e1030a..41bf84968 100644 --- a/src/sdks/core/test/suite/federation.test.ts +++ b/src/sdks/core/test/suite/federation.test.ts @@ -25,7 +25,7 @@ import { Lifecycle, Discovery, Entertainment, Types } from '../../build/javascri // holds test transport layer state, e.g. callback const state = { - callback:(a:object) => {} + callback:(a:string) => {} } let pullEntityInfoListenCount = 0 @@ -40,7 +40,8 @@ let secondRegistrationFailed = false beforeAll(() => { return new Promise( (resolve, reject) => { const transport = { - send: function(json: any) { + send: function(message: string) { + const json = JSON.parse(message) sendCalled = true if (json.method.toLowerCase() === 'discovery.onpullentityinfo') { // we'll assert on this later... @@ -58,7 +59,7 @@ beforeAll(() => { } // catching errors, so all tests don't fail if this breaks try { - state.callback(response) + state.callback(JSON.stringify(response)) } catch (err) { throw err @@ -81,9 +82,9 @@ beforeAll(() => { } } - state.callback(response) + state.callback(JSON.stringify(response)) - state.callback({ + state.callback(JSON.stringify({ jsonrpc: '2.0', method: 'Discovery.pullEntityInfo', params: { @@ -94,7 +95,7 @@ beforeAll(() => { } } } - }) + })) } catch (err) { throw err @@ -116,15 +117,15 @@ beforeAll(() => { } setTimeout(() => { - state.callback({ + state.callback(JSON.stringify({ jsonrpc: '2.0', id: json.id, result: true - }) + })) }, 100) } }, - receive: function(callback: (a:object) => void) { + receive: function(callback: (a:string) => void) { // store the callback state.callback = callback } diff --git a/src/sdks/core/test/suite/lazy-transport.test.ts b/src/sdks/core/test/suite/lazy-transport.test.ts index 5b9c8abd0..04551a741 100644 --- a/src/sdks/core/test/suite/lazy-transport.test.ts +++ b/src/sdks/core/test/suite/lazy-transport.test.ts @@ -71,7 +71,8 @@ let callbackWiredUp = false let sendCalled = false const transport = { - send: function(json) { + send: function(message: string) { + const json = JSON.parse(message) sendCalled = true if (json.method === 'Lifecycle.provideApplication') { // we'll assert on this later... @@ -87,7 +88,7 @@ const transport = { // catching errors, so all tests don't fail if this breaks try { // send back the onInactive event immediately, to test for race conditions - state.callback(response) + state.callback(JSON.stringify(response)) } catch (err) { // fail silenetly (the boolean-based tests below will figure it out...) diff --git a/src/sdks/core/test/suite/listeners-transport.test.ts b/src/sdks/core/test/suite/listeners-transport.test.ts index 08dfa3d89..3cfbc8d63 100644 --- a/src/sdks/core/test/suite/listeners-transport.test.ts +++ b/src/sdks/core/test/suite/listeners-transport.test.ts @@ -18,30 +18,59 @@ const win = globalThis || window; -import { test, expect } from "@jest/globals"; +import { test, expect, beforeAll } from "@jest/globals"; +import { Settings, Lifecycle, Discovery, Intents } from "../../build/javascript/src/firebolt"; // holds test transport layer state, e.g. callback const state = { callback: Function, }; +let transportAlreadyExisted = false; let navigateToListenCount: number = 0; let callbackWiredUp: boolean = false; let sendCalled: boolean = false; -const transport = { - send: function (json: any) { - sendCalled = true; - if (json.method.toLowerCase() === "discovery.onnavigateto") { - // we'll assert on this later... - navigateToListenCount++; - if (state.callback) { +beforeAll( async () => { + Settings.setLogLevel('DEBUG') + const transport = { + send: function (message: string) { + const json = JSON.parse(message) + console.dir(json) + sendCalled = true; + if (json.method && json.params?.listen === true) { + if (state.callback) { + // we'll assert on this later... + callbackWiredUp = true; + let response = { + jsonrpc: "2.0", + id: json.id, + result: { + listening: true, + event: json.method + } + }; + // catching errors, so all tests don't fail if this breaks + try { + // send back the onInactive event immediately, to test for race conditions + state.callback(JSON.stringify(response)); + } catch (err) { + // fail silenetly (the boolean-based tests below will figure it out...) + } + } + } + + if (json.method === 'Discovery.onNavigateTo') { // we'll assert on this later... - callbackWiredUp = true; + navigateToListenCount++; let response = { jsonrpc: "2.0", - id: json.id, - result: true, + method: "Discovery.navigateTo", + params: { + value: { + action: "home" + } + } }; // catching errors, so all tests don't fail if this breaks try { @@ -51,37 +80,49 @@ const transport = { // fail silenetly (the boolean-based tests below will figure it out...) } } - } - }, - receive: function (callback: FunctionConstructor) { - // store the callback - state.callback = callback; - }, -}; + }, + receive: function (callback: FunctionConstructor) { + // store the callback + state.callback = callback; + callbackWiredUp = true + console.log(`receive`) + }, + }; + + win.__firebolt = win.__firebolt || {} + transportAlreadyExisted = !!win.__firebolt.transport + + win.__firebolt = { + transport + } -win.__firebolt = win.__firebolt || {} -const transportAlreadyExisted = !!win.__firebolt.transport + console.log('0') -win.__firebolt = { - transport -} + // listen twice, using event-specific call FIRST + await Discovery.listen("navigateTo", (value: Intents.NavigationIntent) => { + callbackWiredUp = true; + }); -import { Lifecycle, Discovery, Intents } from "../../build/javascript/src/firebolt"; + console.log('1') -// listen twice, using event-specific call FIRST -Discovery.listen("navigateTo", (value: Intents.NavigationIntent) => { - callbackWiredUp = true; -}); + await Discovery.listen("navigateTo", (value: Intents.NavigationIntent) => { + /* this just adds more listen calls to make sure we don't spam */ + }); -Discovery.listen("navigateTo", (value: Intents.NavigationIntent) => { - /* this just adds more listen calls to make sure we don't spam */ -}); -Discovery.listen((event: string, value: object) => { - /* testing both listen signatures */ -}); -Discovery.listen((event: string, value: object) => { - /* testing both listen signatures */ -}); + console.log('2') + + await Discovery.listen((event: string, value: object) => { + /* testing both listen signatures */ + }); + + console.log('3') + + await Discovery.listen((event: string, value: object) => { + /* testing both listen signatures */ + }); + + console.log(`end of beforeAll!`) +}) //Lifecycle.ready(); diff --git a/src/sdks/core/test/suite/synchronous-transport.test.ts b/src/sdks/core/test/suite/synchronous-transport.test.ts index e5daef94e..accbca64e 100644 --- a/src/sdks/core/test/suite/synchronous-transport.test.ts +++ b/src/sdks/core/test/suite/synchronous-transport.test.ts @@ -25,7 +25,8 @@ let firstId: Number win.__firebolt = { transport: { - send: function(json: any) { + send: function(message: string) { + const json = JSON.parse(message) if (firstId === undefined) { firstId = json.id } @@ -36,11 +37,11 @@ win.__firebolt = { else if (json.method === 'Device.name') { console.dir(json) _callback && setTimeout(() => { - _callback({ - jsonrpc: '2.0', - id: json.id, - result: 'Test Name' - }) + _callback(JSON.stringify({ + jsonrpc: '2.0', + id: json.id, + result: 'Test Name' + })) }, 100) } }, From b4f157c022f0dc4a130875f3f6f92c0633847515 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Tue, 18 Jun 2024 10:56:27 -0400 Subject: [PATCH 39/43] fix: Remove unused example macros --- src/sdks/core/src/js/sdk/Lifecycle/defaults.mjs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/sdks/core/src/js/sdk/Lifecycle/defaults.mjs b/src/sdks/core/src/js/sdk/Lifecycle/defaults.mjs index 47ca2e9dc..cf3000428 100644 --- a/src/sdks/core/src/js/sdk/Lifecycle/defaults.mjs +++ b/src/sdks/core/src/js/sdk/Lifecycle/defaults.mjs @@ -18,12 +18,6 @@ import MockTransport from '../Transport/MockTransport.mjs' -// let inactive = 0 /* {EXAMPLE:inactive} */ -// let foreground = 0 /* {EXAMPLE:foreground} */ -// let background = 0 /* {EXAMPLE:background} */ -// let suspended = 0 /* {EXAMPLE:suspended} */ -// let unloading = 0 /* {EXAMPLE:unloading} */ - const emit = (value) => { MockTransport.event('Lifecycle', value.state, value) } From 25c75181015a36d4afd20534a152c3408bac36c0 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Tue, 18 Jun 2024 10:58:29 -0400 Subject: [PATCH 40/43] fix: Valid firebolt-openrpc reference --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c26b31d6f..52e4c4ef5 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "devDependencies": { "@commitlint/cli": "^17.0.3", "@commitlint/config-conventional": "^17.0.3", - "@firebolt-js/openrpc": "../firebolt-openrpc", + "@firebolt-js/openrpc": "rdkcentral/firebolt-openrpc#major/rpc", "@firebolt-js/schemas": "2.0.0", "@saithodev/semantic-release-backmerge": "^3.2.0", "@semantic-release/changelog": "^6.0.1", From e74d1fe2d92e20687ec6fc118d6681b53f538f5f Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Tue, 2 Jul 2024 09:53:16 -0400 Subject: [PATCH 41/43] fix: Change Sleeping to Hibernating --- .../specifications/lifecycle/index.md | 117 +++++++++--------- 1 file changed, 58 insertions(+), 59 deletions(-) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 1073628e7..875bfaaa7 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -17,7 +17,6 @@ See [Firebolt Requirements Governance](../../governance.md) for more info. | Jan Pedersen | Sky | | Peter Yu | Comcast | - ## 1. Overview This document describes the requirements that Firebolt platforms and Firebolt @@ -50,10 +49,10 @@ clean up, and then *terminating* it. *Terminating* an app refers to shutting down the app's container and reclaiming any memory, CPU, etc. that it was consuming. -*Sleeping* an app refers to putting the app into a state where it does not use +*Hibernating* an app refers to putting the app into a state where it does not use CPU cycles, which allows the platform to optimise memory consumption. -*Waking* an app refers to copying a Sleeping app back into the memory space of +*Waking* an app refers to copying a Hibernating app back into the memory space of a compatible process so that it resumes where it left off. ## 2. Table of Contents @@ -64,7 +63,7 @@ a compatible process so that it resumes where it left off. - [3.2. Running](#32-running) - [3.3. Active](#33-active) - [3.4. Suspended](#34-suspended) - - [3.5. Sleeping](#35-sleeping) + - [3.5. Hibernating](#35-hibernating) - [4. Getting the current state](#4-getting-the-current-state) - [5. Lifecycle State Transitions](#5-lifecycle-state-transitions) - [5.1. Initializing an app](#51-initializing-an-app) @@ -72,15 +71,15 @@ a compatible process so that it resumes where it left off. - [5.3. Deactivating an app](#53-deactivating-an-app) - [5.4. Suspending an app](#54-suspending-an-app) - [5.5. Resuming an app](#55-resuming-an-app) - - [5.6. Putting an app to sleep](#56-putting-an-app-to-sleep) - - [5.7. Waking an app from sleep](#57-waking-an-app-from-sleep) + - [5.6. Putting an app into hibernation](#56-putting-an-app-into-hibernation) + - [5.7. Waking an app from hibernation](#57-waking-an-app-from-hibernation) - [5.8. Destroying an app](#58-destroying-an-app) - [5.9. Terminating an app](#59-terminating-an-app) - [6. Create Parameters](#6-create-parameters) - [7. Core SDK APIs](#7-core-sdk-apis) - [7.1. Application Interface](#71-application-interface) - [7.2. Activatable Interface](#72-activatable-interface) - - [7.3. Sleepable Interface](#73-sleepable-interface) + - [7.3. Hibernation Interface](#73-hibernation-interface) - [7.4. Example App](#74-example-app) - [7.5. Close](#75-close) - [7.6. State](#76-state) @@ -107,7 +106,7 @@ on this. | Running | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | Full access to resources, except A/V, and registered as a Firebolt app. | | Active | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | Full access to resources and is a perceptible part of the user experience. | | Suspended | ↓ | ↓ | ✔ | ✔ | | | | Reduced memory footprint and no access to graphics or A/V. | -| Sleeping | | | | | | | | No CPU cycles are given to the app. App may stay in RAM or be stored. | +| Hibernating | | | | | | | | No CPU cycles are given to the app. App may stay in RAM or be stored. | | | Legend | |-----|-------------------------| @@ -227,31 +226,31 @@ Apps in this state **SHOULD** further reduce memory usage (more so than in the Apps **MUST** only enter this state from: - - the `SLEEPING` state, via the `wake()` method + - the `HIBERNATING` state, via the `reconstruct()` method - the `RUNNING` state, via the `suspend()` method When an app transitions to this state, the platform **MUST** dispatch the `Lifecycle.onStateChanged` notification with the current state. -### 3.5. Sleeping +### 3.5. Hibernating This state allows an app to be copied from memory to local storage and then terminated to save resources. Subsequently, the app may be copied back into memory, and resume in the same state. *If* a platform does not support the -`xrn:firebolt:capability:lifecycle:sleepable` capability, then the following +`xrn:firebolt:capability:lifecycle:hibernation` capability, then the following requirements **MUST NOT** be fulfilled, even partially. A platform **MUST NOT** use the APIs documented here to implement an alternate, non-compliant version -of the app sleeping feature. +of the app hibernating feature. -*If* a platform supports the `xrn:firebolt:capability:lifecycle:sleepable` +*If* a platform supports the `xrn:firebolt:capability:lifecycle:hibernation` capability, then the following requirements **MUST** be fulfilled. Apps **MUST** only enter this state from the `SUSPENDED` state, via the -`sleep()` method. +`hibernate()` method. -If a platform supports copying sleeping apps memory out of RAM then: +If a platform supports copying hibernating apps memory out of RAM then: > The platform **MAY** save the app's memory space at this point, so that it > may be woken later. @@ -276,10 +275,10 @@ The `state` API must have one of the following values: - `Running` - `Suspended` - `Active` -- `Sleeping` +- `Hibernating` Note that the `onStateChanged` notification **MUST** never be dispatched for -the `Sleeping` state since it would not be received anyway. +the `Hibernating` state since it would not be received anyway. ## 5. Lifecycle State Transitions @@ -315,13 +314,13 @@ transitions may be invoked: -Finally, if an app implements the `Sleepable` interface, then the following +Finally, if an app implements the `Hibernation` interface, then the following transitions may be invoked. | | CPU | RAM | Net | GFX | A/V | Description | |-----------|-----|-----|-----|-----|-----|----------------------------------------------------------------------------------------| -| `sleep()` | ↓ | ↓ | ✔ | | | Prepare for an extended period with no CPU cycles given to app. | -| `wake()` | ↓ | ↓ | ✔ | | | Cleanup after an extended period with no CPU, e.g. reset timers / network connections. | +| `hibernate()` | ↓ | ↓ | ✔ | | | Prepare for an extended period with no CPU cycles given to app. | +| `reconstruct()` | ↓ | ↓ | ✔ | | | Cleanup after an extended period with no CPU, e.g. reset timers / network connections. | All of these transition APIs are blocking, and each one has a @@ -495,7 +494,7 @@ Apps **MAY** request to be deactivated, via the `Lifecycle.close()` API method. To deactivate an app, platforms **MUST** use the following process. -If an app is already in the `RUNNING`, `SUSPENDED`, or `SLEEPING` state, then +If an app is already in the `RUNNING`, `SUSPENDED`, or `HIBERNATING` state, then it is already deactivated and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to deactivate such an app and the remainder of this section does not apply. @@ -553,10 +552,10 @@ To suspend an app, platforms **MUST** use the following process. If an app is in the `ACTIVE` state then it cannot yet be suspended, and **MUST** be deactivated first. -If an app is in the `SLEEPING` state then it cannot be suspended and there is +If an app is in the `HIBERNATING` state then it cannot be suspended and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to suspend an app that is -already in the `SLEEPING` state and the remainder of this section does not +already in the `HIBERNATING` state and the remainder of this section does not apply. If an app is already in the `SUSPENDED` state, then it is already suspended and @@ -626,20 +625,20 @@ terminated. During the `resume()` transition, apps **SHOULD** reallocate graphics composition and other necessary resources. -### 5.6. Putting an app to sleep -Putting an app to sleep allows the platform to copy the apps memory stack to +### 5.6. Putting an app into hibernation +Putting an app into hibernation allows the platform to copy the apps memory stack to storage and terminate the app in order to save memory. -An app that has been put to sleep **MUST** be able to be brought back into +An app that has been put into hibernation **MUST** be able to be brought back into memory / CPU in the same state it had been in. Firebolt apps that have permission to use the -`xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement -`Sleepable.sleep()`. +`xrn:firebolt:capability:lifecycle:hibernation` capability **MUST** implement +`Hibernation.hibernate()`. -To put an app to sleep, platforms **MUST** use the following process. +To put an app into hibernation, platforms **MUST** use the following process. -If an app is not in the `SUSPENDED` state, then it cannot be put to sleep and there +If an app is not in the `SUSPENDED` state, then it cannot be put into hibernation and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to resume an app that is not in the `SUSPENDED` state and the remainder of this section does not apply. @@ -649,43 +648,43 @@ At this point, the app **MUST** be in the `SUSPENDED` state. Next, the platform **MUST** copy the apps CPU and memory state to some persistant storage. How platforms implement this is out of scope for this document. -Sleepable apps **MUST** provide the -`xrn:firebolt:capability:lifecycle:sleepable` capability, so the platform -**MUST** call the app's implementation of `Sleepable.sleep()`: +Hibernation apps **MUST** provide the +`xrn:firebolt:capability:lifecycle:hibernation` capability, so the platform +**MUST** call the app's implementation of `Hibernation.hibernate()`: Once the platform receives a success, then the app may be moved -to the `SLEEPING` state. +to the `HIBERNATING` state. If the app times out or throws an error, then the app **MUST** be terminated. -During the `sleep()` transition, apps **SHOULD** note the clock time in order -to determine the duration of sleep when the app is woken. +During the `hibernate()` transition, apps **SHOULD** note the clock time in order +to determine the duration of hibernation when the app is woken. composition and other necessary resources. -### 5.7. Waking an app from sleep -Waking an app from sleep allows the platform to copy the apps memory stack back +### 5.7. Waking an app from hibernation +Waking an app from hibernation allows the platform to copy the apps memory stack back from storage and relaunch the app in the original state. Firebolt apps that have permission to use the -`xrn:firebolt:capability:lifecycle:sleepable` capability **MUST** implement -`Sleepable.wake()`. +`xrn:firebolt:capability:lifecycle:hibernation` capability **MUST** implement +`Hibernation.reconstruct()`. -To wake an app from sleep, platforms **MUST** use the following process. +To wake an app from hibernation, platforms **MUST** use the following process. -If an app is not in the `SLEEPING` state, then it cannot be woken from sleep and there +If an app is not in the `HIBERNATING` state, then it cannot be woken from hibernation and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to resume an app that is -not in the `SLEEPING` state and the remainder of this section does not apply. +not in the `HIBERNATING` state and the remainder of this section does not apply. -At this point, the app **MUST** be in the `SLEEPING` state. +At this point, the app **MUST** be in the `HIBERNATING` state. Next, the platform **MUST** copy the apps CPU and memory state back from persistant storage. How platforms implement this is out of scope for this document. -Sleepable apps **MUST** provide the -`xrn:firebolt:capability:lifecycle:sleepable` capability, so the platform -**MUST** call the app's implementation of `Sleepable.wake()`: +Hibernation apps **MUST** provide the +`xrn:firebolt:capability:lifecycle:hibernation` capability, so the platform +**MUST** call the app's implementation of `Hibernation.reconstruct()`: Once the platform receives a success, then the app may be moved to the `SUSPENDED` state. @@ -693,8 +692,8 @@ to the `SUSPENDED` state. If the app times out or throws an error, then the app **MUST** be terminated. -During the `sleep()` transition, apps **SHOULD** check how long it had been in -the `SLEEPING` state to determine if any processes need to be reset, reauthenticated, etc. +During the `hibernate()` transition, apps **SHOULD** check how long it had been in +the `HIBERNATING` state to determine if any processes need to be reset, reauthenticated, etc. ### 5.8. Destroying an app @@ -802,24 +801,24 @@ interface Activatable { | `activate()` | Called when the platform is ready to move the app into the `ACTIVE` state. A/V resources may be allocated. | | `deactivate()` | Called when the platform is ready to move the app out of the `ACTIVE` state and into `RUNNING` to deallocate any A/V decoders. | -### 7.3. Sleepable Interface +### 7.3. Hibernation Interface -The `Sleepable` interface is implemented by Apps that are able to handle being -put to sleep and then woken at a later point in time. +The `Hibernation` interface is implemented by Apps that are able to handle being +put into hibernation and then woken at a later point in time. These types of apps require additional resource management to reestablish network connections and may also require additional thread safety checks. ```typescript -interface Sleepable { - function sleep(): Promise; - function wake(): Promise; +interface Hibernation { + function hibernate(): Promise; + function reconstruct(): Promise; } ``` | Method | Description | |-----------|-------------------------------------------------------------------------------------------------------------------------------------------------------| -| `sleep()` | Called when the platform is ready to move the app into the `SLEEPING` state where it will no longer have access to the CPU. | -| `wake()` | Called when the platform is ready to move the app out of the `SLEEPING` state and into `SUSPENDED`. Network connections should be reestablished here. | +| `hibernate()` | Called when the platform is ready to move the app into the `HIBERNATING` state where it will no longer have access to the CPU. | +| `reconstruct()` | Called when the platform is ready to move the app out of the `HIBERNATING` state and into `SUSPENDED`. Network connections should be reestablished here. | ### 7.4. Example App @@ -924,5 +923,5 @@ The LifecyclePolicy fields are: | appDeactivateTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `deactivate()`. | | appSuspendTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `suspend()`. | | appResumeTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `resume()`. | -| appSleepTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `sleep()`. | -| appWakeTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `wake()`. | +| appSleepTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `hibernate()`. | +| appWakeTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `reconstruct()`. | From e2e9dfaf8cd25561ac9262923496ed9d0c72e5a1 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Mon, 25 Nov 2024 12:25:28 -0500 Subject: [PATCH 42/43] fix: Update Hibernation based on last two discussions --- .../lifecycle/lifecycle-states.png | Bin 100537 -> 77188 bytes .../lifecycle/lifecycle-transitions.png | Bin 228229 -> 133356 bytes .../specifications/lifecycle/lifecycle.png | Bin 114766 -> 0 bytes .../specifications/lifecycle/index.md | 66 +++++++++--------- 4 files changed, 33 insertions(+), 33 deletions(-) delete mode 100644 requirements/images/specifications/lifecycle/lifecycle.png diff --git a/requirements/images/specifications/lifecycle/lifecycle-states.png b/requirements/images/specifications/lifecycle/lifecycle-states.png index 707e6263a9b78cc55ad7a950a7b9c29f7806742a..8da1ff2139527322b594582be4c5c35d89f183c8 100644 GIT binary patch literal 77188 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

B=WtSreQNI8SaHQWu}EI>>d7Wqy}O+MR>%%40oY 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 G`~L$R6rCvm diff --git a/requirements/images/specifications/lifecycle/lifecycle-transitions.png b/requirements/images/specifications/lifecycle/lifecycle-transitions.png index 195d0bc0bd1c88442ca64ffe9fa82ab9b52a1395..f3023bc80da44092fdcb4d0b040be47d9006fb87 100644 GIT binary patch literal 133356 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ΝPh)!iP7j%4iNhpz{)=ukA8UpE=-mrb8Ku=8@G7+^?%ReIMi z-iErCmQlE-0{1~&<#+1V=yx-1uSJ~^F5As~y{XO7KH-g``&3#P>Nwrmx7^C{d>WeC zSM{BMe%IyJ&^cDyN&CaoQ1>Ctp4{P%^f#n4ON5+>_~E8J`po-O!(tCC)^%Ox{;}Y8 zVTt==$>R3t9wn65bl8 z8;ZfdAw4E`hO*F1PY7os*v)+A5h5^UWe%fd503Q^T)--S!LnSvNGne9`s|+X_}QYH zLlGVC92G@t-PNOWVTx)0d8c9Ua=`6e-dl-m6gnn2MJ z)bv*>=GKO^oMx4hx1z^fwMvGSPAiod@)bJBCLeN5H4;L8ayNpVD#5=|;;Rv=UyPz& z#~~kYz?m1s4x$=zLTNXL;=Oe7!i#h--%w%)ogKFB0=$yn9n48*cmc+KwbaVgtH{wy zYuRd>H(P4(l5KFB{6hbX;Q`wV&i%0g&4C~N9Pct*{9K;mdQm;VB*j(asKQLLsvUeF zsMHlCz0eQxb)@mT5wmWqkt8pHamaV9VasZIQx52NG^G!&^`*X8cjL{yf$Jkw@@ zTen-9*e^ku!;{dt%(fxa9-rPzBPqHRAIYg)Wo(vKiT8V>7mZL(S%Dg=a!|YmZad@z zqr`c8AkIuQl#H#AQki;E8r;2+_(mes`nA4s0-4_#eo>9#RpH8Zr$
67Z~dc1bX zcXZCCJ5Z{NrK7=>bnp8}GM(?ZE>D+wDgbv;667Q&%&r8VYLz-Kp6jMDtA3mGeWh^I zIvQi+qF>_ft1&lPTUJ^*XBTr0KXn@a!orb&G z#9Q5_;X5u~{Y5gYv@R#|cXVR)ON$@@a)_Zmw#}Y5cS0}K`#1dpdqJonjtRUv`zo}Z z&gq4FZY$yiiQOc|dN>$sU!eYSMN-d7ceX}u1rwU?$UQ-B2A5?~Uo6Y;iR!99vHK=2 ztt92I&+a}aHH69^gxfb^*4k_yN|wr~Oc*b~7j~k8wNJQ=XL1?n~Z_ zvmPs>*2j4Sr<)9v06Q0LPNnpB+5EYy50gKy$Ibx{9D)&dy;r!)M;$~|895&mo!)V>O(KbaD~+`eNDalmdVA<4X8I!cT0PdZuGWJzrkhp(c- z`+MON$->*#V@|IkS-}MU&5!KI1udJ?LNLIZ1Bl<`-7ko~$1*y}aNlWp)fMjgdl-84 zDtWj*a@*7X7Bj_dp%{3a!c8vEjdd_&^av|m1;^rd*7lBVH;DW(^6V}BO2>#wDl4~) zm4Nb+wCy$;u-8j{(&`SsW_Fl8;y2bi*z!5)@i4YpknTQTqGGGK1qfl=*a_Vk%DqR< zQBNtQ75r+iiYDbj&CC!MY{lT*%&ryC0GoB(&D8c z*&i>%ehOBy$q{OXSMFqvrackm+$)dG_W66T*WbEWhp%WovudioEi+#!+zZ%_7<3c@ z16@ST7xOOh{bjF7!VLq4V}A$>)|BcUF^ujaoir^|s3gsdZRjhA#cf5KbAG;k&h?`E zjhju|ZNgkt=~BEz?1RSlTX?e!+X4XmUCHC1Z$GUvYStfz{Jk2Y@I~)O}KPeMC;I$R4 z%f2*inyZ+07nlW(>|+d`Su=1sV)Et!6Ed=3IPP%Ao)4k)Uzx;gL~}v;5UW3pd%jD` z!62?pSXQ{&_?l+2b1?Ao`VZ`K5!*0w%w4UC0c8YXey5K;K}K@YDBh$FFJ}pYcrrJ> zMwohi0_Ds0H$NcYbNHNfL%%RO__$ij;#Smo8khRvS7JNP%sw{?P7&XWSNG|BQqSP? zkyJ}Jc401MGI_K+kJqIoFxShMO!#03{FBCOEC_?p{!x_ARIlvjc;Mps1%y>>;6`-X zU1^|cSfk|X`CtQ%TI*`t@asZ8jM_dPYFl4i{d+i`ynBZpNUUG1dmw&T-meCDKaqY@ z{3Rn8Fu*I9bqDoSTGS31EG#H_+P@bno76TRg5Iq2C*UA?2B!ujDH6q7k1%EA(8UFbxJMis|SiTw>OEamk!sD(T75vU| zlkzcwIRmypIR?UK0eH!F|(`ugRlNKXo=&iA!n4@v+* zz2)Cd#Q^7Xz8wbob_VL((XVeO-o7351I7g4^X+`&w_}~(PP2a6PX2a?_uJX!g{R2h zj%-wjjW%)3;kFfD^u5z5(tWNn;7-GsOeD*?+d2DTq6`p{W;^h+Er+cwp#$HMiLD+=)Y@{NYT zMI+p&Yf2hN-FC;vKE%`p{}L6a3f!2Yg6D?8Ps|p>l*UHt(qLUo ze5>p(*f&S~zjQVBqx=S~!F!*~V9 zUF&fHPlZ8BUwjRx?I4_XGgM(A(}$oGU*oAzyey1<{$Jzjj|U*GDhb^HgOYDiNP%GQ5z(Ztf%FChl26!FyR|Jx5Tt&K(uf7m zolHL zUNIv3?$>_$8-yuU(3cqtZDrCDZ;6={FlQpN{|nH!=Ub976+C+=v*gG)?4KH(cfR)M zS*xA)oO-qz=@|j7PeQrrX-XSgG+J+{0xKEj9Z(p5K8ykw;*NTgtVD5bTsU z5{@^hX;sI6b>9GXKOvrhYod%XNam)QBzGBGisRXU>)%glerjDE9?}1IR(z%H!fyg=jgDu?z)YK*8 zYv0Go$kEbWG|;9k&~Ul86~hN94&tEub@y9k-IM3LmscIM5>&{Ts?_N#KOIwPdInfe z<&MOg zWbf!#?rc=J0A}Zea30F4%#~CoI9361|F7(92IF2n)h9xxk?RknF$=(Uc?w^7Xp2hA z>0vpC-e?STZZ{_O*=uH0q5P~U%L`wq|=Rx4=D z4uI|6Fc9Ds8_0+M%C`C8(3~ht4u&-|2X;^KUBFz21pSYpw-qiOYBS-QnjRBbCV_a1 z==mR`8?V+@%d&;(xk-Ye&uh8)YoA-lwCqGn22$ArT%(mzD15#^;k~Z|o+cX)$0%s= zOih^Efj$P)2kiWe!+!-_HaN3TQ}NcA+ho!#vqF|XOyPOP_wOk;D`(OWyMMua&%#eAr+qjQ}R^p_JGuq5uwhGSB9#cypeX zWDOWq^$7d4*%kbNC)8+Z3mOy|;o9^yaTOokoV0{R&xD0f?EQZh={dVome|Wbdm7g( zw$%#jpE9J2=K9?$`E%A76q95joV`;|4&MUQC%!KtvP%tDF;H=oO5yZb$>r}MyDL;F zd;ImM=lC#TZ}wQamId-2_Q?S2o+_vgPysin4>=KA_nli96SY%iQj!@Srwp0BhYtV> zzRGWRIOedxYOT|fOl8gR*)Hep7pDTY^~;mf(7+GLFF?nbRg5UC+$`*N1vjrzTo*wY1Byu30~PX#}#$1rO9YKGdARJ+UA^5xMiU^rLz# zOu9+g9w>QxaAPbCy_SJ7ga<8!e2C}6P?LkNOT4t|ceXSJ#sCeDY^i(OU&qIy*i1&V zI~Gy}eW(l6^mY6RG03-F5PSLD2FYLqA@eOzA2%g+7J7$$$`-p6lG~MJ!nPFdb|(Rn z8vcHB6vdE^FC|XPL4+Q;Ejzx_=1qAfSe~2aM!zN+_hMWVMVoLb z+aOg|Vf>MOCTySwn(w*wc=b6*Z<9z8kNBNT26{`a{{;&1JLJEvk3t2V zvrDC7N!4m22cUj*0CT%T_?`ujt+|!?4mI5s6|!wF*l>q!pSdae=u!ynZ#EP)%h~cr zyZ1`4G;ex^q|J-b=-vjYT4yYiqXfwLc|p$XyD`u_+l*B}lCk(M9I;MgXd~ zc=f3|^feX;bk{*1H=P^>iZIWBLLA5CAXJ$*3bG&QGO`xJz(0Cbwjo9u7luj;Suc?xUBo;Ir1#rU1|DXgZIV-~q zW4lA8@q*J?3QPHbLG?G6gaLYOFaeUyR zbuNPC3mxn(0y1dDIw7qKtb6V8M#&elXJ`u){GItR3PVUBN|!|ZC^LFF(5HjJC+e(< zBMiTXHKv9Ep)<9o^~yoQ2IqN*Y0KsP0r*fuJO8n`7(nC$!=;c2*o=}a{!y`bj_$%} z-}}N%D)G`9Xa%cTYZw~B{gBdjc>ypVEJas-l<9$tGtqx3w?s=Og1>R73Hv$l z8|Ui!-76lN&j4NxpaGCCjOFrxnF4Vh{gfYMe-9H+88S!|Kogl4gerhBIt#}9L;$fD zkO>y`j!B*84q%>JWjWQ8sodXKESTE^{AYPeJqE^m9}3y+2?lmRQtKjEy+G)GJFsYJ zp>lwiObBLPYv52aD@v8}oh_&MI%pznDmqtC2K>=@-V|fNl;0OHye|Z>J`JpgAAsgg z){yB!#B%vW(*J zmO%WjOg-xkI|`8U2EH~H4RD7{z{Yt2=3fY?nf%iX2vjBGGO zcT4~g9vJ%`QtBYfz=Hr*d7t6;vpZTu;vX}U6~))$ZgK}!zV*`}AEcG4tNw9N~AtWiy=U942&i6Lrwg+2V;_U;#^V^_iCHNY^E2H)Dww)!#I~roE4(c0-Lt* zpAHSMR*89OLMYn}&wNu_KX@)z^q+xMf6VX5AXV3KX^u(ajC0tfXA-IjHi{8$fFqt8 zy}j~;ngkl35`XP)pGsd~OXMSujh@*nVX0mkGzgm`OQ)iUq9{hiINTAUy$@7QXd#*` z#Bl73QK>fr0zG9IE6QN!XPwb#x{rWz+1~MPDL|tN6{w- zf;{L1Op~Q{ouvUVzN#kL{xH9vHJ+MGjfwl4usq_F96xb+L|y#HOub9#)EAV^i>+^& zALk~3qUF^23}T1H;awt!>(N4MvhC=W`k23bHzeIs7eGpZ!Qb7TbuNzjpw@Q-F21P( znZm}?P=^Q8R`qKp-NADdNZQ}eZ?^@>tT|RTZoC?~4kGMSM)L|-h+94Zc>BJ((!|X^ zMS%o^)E97D&nM2lk+Mv@cKCcQyfqE#5QmtbNhB#lsw!&-!X&M#4@t#0Ykk|iNWA#| zEp>hY7>oMt>kCk{2Kg$&*<8^m#|zDe<8`lT>jkaqg0^|FvuJ3)fz!i5Vjv!87vhmN zPp7F@yS#K1BTx@PER&CN6NIz_a*wRe8v*mnM_4UL1PTd^oRtVps-aQ5cK`!3t-m2a z)qkTFg#QVIwy6Upr)>XI*De-pIJ4lbeo5otfUifc z=#K^XTSjXa4lM@*fru3IH!~z{T$&zw0E&yde&MG}L$cvz1*9sx_T)v|O19O76I1SK zqA^mq=P^13BN8Nu$p`P>a(9(ZW276|zV@^i5BRzOC2etsL8^Xws7p+b|HtrND^g3Su_MEZxV8#XBPAAmwwOMtA4Z#q|WdY~j|y_2VO zy=KEb(%%hbrP9Y*3OzHx3}5yB0`ebL3;Ulv4Q_WlqBx+9jWrHl<#=CQNEG6dBCl*; zqh^v>D?K2Y(LxIYPMn!|vk&VQmxZ!Maf77OUOVxH5zYsziUw+oDl zyf)G6C#C&xW)b@?2-?S{xN5tAhyFSfp}u{p-*d*6t4YiD=n_hD$31eFPrYxNVnQVq z9{CsUlRaBo{Fc{Cq9|)y`)7lXV>*SoVHfbX$93n&;oii@2oHJ;6wNL+Y?-XO(Tr41J>feHcjNMaOdgGh=-R0ECUQqVYBj6Q}B|&XTcUO zmn*ytj$^O2T)Q(hRtKvmV#)=(h{P1?3#^8*GE6j{6Q;BTVhsQzbS0(SvW?j=n7B!$ ziPuax;3iw=XUm&v?8uErx`Z}%9urSn-GYEeeM^J3hh@3V<=i= z5)<01;$vqT1DM}6tbB~8y79P_dNKW4k3C~I6gx|`V_48_Y{xeyIX}9V>YqGdR_7H; zt+&-6POYt(G7lHy!^1>5+W!JnQYxYgt}`TOwUMy5C~I%sn!If262mvYc+ss5388;w zRTEyY?VryOOWYFP>|s8dvwqk)u*c9@X@|prQNLX`&jrE!En{6M#@kctWZ+FQ0k;OR zBC_8bHs=3SbNjISY9=!6`xjvs1c9FJw;Cm&L&i^v%xomNsv{ZaUd9$~X=A*&sU8*3 zwcfwo(H84&lJK|7mQ1ggZfy>)3?R2B0x&uE(y~Hpz1-H7->hUk3OzN$FrNuUb!O$q zl&@hwI{d!a%wPreD8ZNf-s@MR)wZwXd!Y>sbO8Q}{{(~dey1dF&F0*AWb~gpT=YqC zw3`mwGAZl)L>NNvhucuTi*s{^Hvdp!>!~`gAlA9U_4&KK55cai@cFsE{Sm&q$^Sk{ zk@rfkQ}H-1>n|^xRrOWxL)!0ApK;tMDaLV67;ZlCd&4^05}k`|H^l&#JXHc)us!O9 zKL}Fd%7K};LenR1p3w_#^(1BuD*+cV+RnX&SD+MQus<#Bu#sDi~6u z62t?PMAYD&dJOs=c0E9(1#gdbK0B9-Dc+GFX>*Ylz0;1)zvYsf1bSARZ=&lHXXT#H zdp2nw8bC;-4e#1jyv^GnAwQL#PZ=vbpdO1OW>4k%_YGC=#01_9=%-9HVlocurkz%< zLfs`w2LiHOgk;OfXZK23F=OK4eXsCA*y)|jxtBS1Dx(8Nh_1_(rf-CfWxY9GBGcRn z^k0bBsA2U}-QmaXyLXdwG_3pkjl0oDEh*3+ybe}icRtOn8MCL4y+ds2zA*9N&FPel zgsDIA`z;go-fF1x`;i_hdtnj|FsAJNJf;k`;>S%^6Rwvv{nDK`VH(-GUT%5zsvihqI{if-_oZ(ZU@w@+T8AX-ut5`uiQDQW&_E-l;{%MQ&7)yJ#l83SmWx#M((VgWWK_heDcJLgj^Uzbl(p zoTXS}PAG`^(V*c6LheF!+B=Pg7CN~|` z_D4_XEWNk7V+sB+;rYy|)D>9|x~1KrM+bLpS@&D`OTLQ^kiq{2x1@28=>8pB6kcKw z=c8|>@6{{F254Ho%N^(kl4q+@*7(S-nOB(jJYZi3t>sDr)G-5XevJ0`R2*q=S`k%y zSl!MJJwfm~ol*S!90?o?D|t+Y{)>`WpS(Pv`J>@73Hkkr|jN@>rCWmq1QE1R?y-;4~+r! zE;Gr0>-&nj0w!@~yE9K<0m93XTT}C1Lh01aG^#?z=*xHLE^S$jZ{D2{WJ#gnf4>yf z#Oz)r{1EUu>qO?kL9zZ%On-~i0&U8^nIsv%#sB47uw^wu{3;`Bn#r8olMrs3fiAy_ zS)W82xfOcKJ^SgLogmGoBRfEEI)>1+yJmA;`37hGiyC(H8XA715is`ymIDHztwGZ1 zS9YtFp;=H1k1@LeBZA#Do$W(5QSJ-mcr&N>W3t`_J3ggA_q|lmp}Z`z&48~Hb`|6j z!nya#^p86}uwRGintPxY9cmx@q-jmf%7l<0@$A^a${W2gpH~ct=0gPxyJ@*?x{(10 zlU_SHox-NaE*Wkog}161Yu2ngp|g4oXSe-RV?6@CcC=y3v()P5sSG&C`nAQs+Qc zBk!(waDJ035P%VE0Y=Z}{uJTEeKXu0Mi@hYy{4AOv7If>-a?Or6= zF}zP+)2SahU4(dVJjcwJ9;P12dVh2ir%pM|l1%vt;OKQIOz) z9Knt&iDzGsAN7Ym25<+k*ZM{56(eJ>C6i5eU>@6VszxT(?76l{f)F$dol2G2uW8KXYnMS`jsXfS1eCZ(fNEes|JUx2jIx{0nQID_k=c(?qEbf{D zyRZY>8!X@ZjGU|67M$+2sg?W^|KpPnwi!9~9O(I|5OAOLv%~kh>m)hHk18ERU>!y% zr{-{`03EfS*yrwFu~m=mUYz>chj+IBLJ2k3!L!+eb^4}V9lUO+uKXqHW79Q(ZptY^psdb*F!Ow@OHwWzWn8o?=KoB)|vc}uw5x`y};}{ z;8+5h-{@I5aQ%*cjp5eXK=}0PP|Bdqi4kx6Ia5>S3{pqox{mnogM-Gyyk7yG22^g5 zv1JduS(f(D^5L;lF-dM(h5X+5!>)BhbjrP%5zB4G-Pm!IByMwbPbl*Umaq@56?ZY4 zzSJwUUpt}p-dR@Ix)VO^-!CEXk-#G1_GczMW;Rqn1!&;CPUN4F_~h^#c5<)x!GACQ z%6XAb2qL$w?Cty8Wr$`cPhxKQ?#8_5Ug}`r&p2v)D5hz@wMKlxp_GHX zq1wBorsW=!nvmtyznM73|LulB7;HEAeT1tRiYmyN3k0Ee>=b+G<$6ML(QoW6N4QZt>nmxDfw3PTyB~>qw3BQDTj96P zPC1X4o5}A=IP6|%;$V`15Lzbea^_UlE4SV*v+845xo?;=B7~nj6&SN))Geg9!3ACX z&f4{z!zhn9)cqnrLrDkq`XaEdmnZNYy6RojnRZ%L-R538yhrA+x)IAg*L+i+nyLIQ zXudHWlfIW-7;g@22$LEX=6K`JJPgW@TEQc*q5b50OPZT{UEpVOPhjcLm%@?aws&IQ z=xVI$twYy81nD4_ezX~VhlD5W<+cy`qa4MH~!KHUtu73V|R*Kms9FYf+IUhCM3N5JF^z03j~+k{KW&C=kMqjIaXacL(d} zQ{VUZ)<3**ab4eh@B7?me9q^bb0-_hduWE<(_}|E<1+*Nf`swfRP=c5BbcV`{yesv zNKGTIai8U|DYAKT!F+kQ;qXF>u>~pP@skx{I78U$iF2Lku^JdCH^I(+PR|cZB6~bR{_%W2 z_SE|~VvIxs=j#Z>`{SlKE9dLPf>fxuLLV#>3dvB5lR}w@;J5s=po2fJuUM$sd3X_o zAKy#lwr$v!;VE9upZ~DC_=U9Wq7716CClRiU8{PO*dqhc z>Z=&o!PQ*&qvbs7=6|q`aIkK~0YU{aQ*FE|t@Od)b&M9xba*uE?Wgpigg`GPA# z=!PuzR44gG!}&}oVE5{SQJzINFj$ml6!VtHNM~k21k-gFP=KzineVvjF4>1vY;i?; zM1}pk3=g%)VD+5|j-|&><&HLeT?zgk+?kM^;@ zzeF*>uP**+Z^p+dIdm!|5GyVSNxOcV$UZ= zCkwyyR0fos`-xA}g3WMS-Ykr@iFa(Jw8#PsnR~(cikAG6(SDEw6gy`)xb?}_*uhh= z1=tp~>^A7W*yu0(d#tD$ym(pD3^#{~neaOAy#2Cbv{@_Uag132l@jbx)h523^wf%V zwt(qsgR4ncyWYakkwbCdve@~tVsfqeClBv?NOa|O#TDmMwYEqaM^6^%0M8@I(WWVD zr<|kOtv#egx*uu`Gb>}WWMXj{Z5Pc%w&3Q!cPu|RdY`;%7ki$i{sY-g2|His9P`*7 z>0u=mr|CasF}5r8-HfYpEOUU|b?2&FSCS!ib6=iYAo=dsJ$skzhJs`7V;i__?Sbxo ze^(&ZYbWC^FKhmEaeiNtV-;Kf=Q88h*~kZWE^e}S2CljvPmeV?IoEsK^m2gakUG{e z&v%Pey`@fnQoY%Pp5oz?4_^cdsedQj=VYvSqKx6vVTs-;xtwsFatEP^>I}RC9#luUv=PDCQCN8%9_v`oU40spnoAT zS+3ZQ=uOz{SHw1xhvkJ&%&zez%^N zV4$zK{|gCC+0HGcVcN>R!N(f(yItU8fHR9WJLap`X;(5*V=2F?RRWaCr5q@gh7^h$ zXW+c$aO_^w{5kb|jIKZ|FEL0GkV?^1o>S`m%KB%EgyTxu*~RKd3iPF2Wg&BcGVIC) z`T5-(SGWF*?Bo4fSc8+s#h6TnXIu_2B?*FCdcEECarK;{%kXU|MRq04Fy1};K_=Va zjBfBb08{sVhN;On8l6eFII&3a?Bn-JT!adbA58#h^xr*m{&l<$vV)BB)$so_0PMxg zc*{1cUfDy?t}O@70n!5AaK42R-3QUgMqp>3S(E@4;_Me*nNh5=n&~aO%00Ns-zRX* z`ikuh8t5v)XC+7nzAbhV9RqX);3vdvY^xlnm^Lgk_$lz$oNwG-trG0~&O~*=&=xZ1 zon<--nOoM5y4ep=@)MpunxM-o$D9nHSfaXga&LHIvfC<2S927j>b;AGt!m^Z+cm>w zYmD&|cCsAbskJ+XbsQDZcFUnjt+=$hk~g1J#9g+=w8*sxt_U#(q1|)uD6Yu4S;H4!WRLey+673-qnkM2 zy!}!BMzjjy1fMA$mx%_jk_8)P*YqVE zL~$ps$gq|ri>shP6GI&mRtW+2_^4U`^k`PwzChh@Ff)*9b2hi+_EFIuS@#I|@gP5(^# z5y^^;`o#D4T&S`0OMIa9bFA6kGvkwvve*}cb}mVOr7rRT7%V_L#ePxr1o4f5zQ7MR zZ#^LbVw3DrD3!lZk$3^KY{mC6^}FyvM@%vmkj*#<>cm;l%63cW!kJU%T9WzM|Iin6 zb6$HVY-}4LQ8*CD2hWwv2A~^!FG?eus19J%sBv|vdXIa=ruVb)8m|V7NlZ2boq@62}j^4Oc4+0p>+-6A4 z<;*Z!XSQho5n1yp(`Z%gPl3apArmyDhD1Rj?jMOrt9VfEmNf4CF>L+wYl_Mj|MI#q z71a8*;V~{C{o%}tBb#2b$1LNM;_-$(VirOU=uL9_0-@-#z=Q^Mku`c%2`It^;0G?SsD|+H&Hqz4T58_A zl4R(7}3EvCa=q+(QaVX>JU`c7oX9#jZ*S( zE*HnqNJVB&BxqXn%KZ(^WH?;FXqpD>2#iBL@Ka)I9mv2EmURRsge~JTy#yXcl$-PL z2;dP6Fr~nXU&k4nC@N<-7$?h4cEXWS-ka37FvND>o=fRdq)HM3THMR6lxyc z%6!>CFx}1%t7D;XMXL#erx5#w>y`F@rtG2tHK4kS@LR(^>~Gafoh$%aK6%`O9AW|0 zl9FR`o49RHs#)y5Pr@;hn|}PFUdT^g?4c)eN#z6R)5exGYOs-cj1lrMZHFw?sMLk( zbNARy5uuPPPZD!4R6Sa|k%78%)uV9k>=TfM4Vo|O0FG*1YX(*=KX{t@tuUZ9ZLw3p z!T|{uS^p{`$MLk`0{w4dYB-$NEHCTt-hjivn4lYBAa&BaDkR% zx)#M zP+4myi%xo0WO8|wFOUBDTqb9y4>{?9T~=(pOa)Z81UR0|84Zx}@8yh024V+2nv^yJ z5$efu@C$O^YhV)*dc-FE>beiiRJqBNjyGD2R)Y*ZUs3@EI4)@;(Qg3WQpBzqjBo=> z&Nmub@hXu>Kyyk@T%P0@HSJC1#d{?izygfXva5|<-sT$HV&^aK$LiZ5ImHE+5Dk2t z#>}=#!y3^6t(;Q)!Y|2RgMmex6hq869i?qavjFuQ4-4X7IRpV^v8e;E)@Ol{%(IBy z2ickf>N{q*A}?#r?QMo1;@16*D1iy7x=Ft39CWG^3i5qV@nO_%bNHOtTf#D8$%%Vw zV&+zJ)Sg>N&t0D6{cfiUT=ZyWo7Du@QBEzDwI0Fh!<;CNUZE(XOxG!^ZL(_P3X*D1 zCzNvoh(4H4F^qwh6~+(e5n{7u8Z3~rw!6%zvRwwnCXDd~k9Y%V_dK0lodNIn9mCi} zHR$IcGmxPRB}UGQsHr_3nQfR9+yCsrG0K0;8T=*6y}X4&GoZvs8N$s*kxHvx7OWTg zpsZlMKv<74=HQ%-8d!J6-!W zJx2B*%|7G54I@Z)fOCOIozt(rrnvtS5_w&hp8Xga9K*O_d0BG9(|Po1#l&@fa_{aD zfskGUAu%i{s2ZjyK!7cFuu_yVguAInT}>9f_6+Fe7g^T=Zl2_Dit$M2oq3MPvG{VA zJgoxzb!)U+mOsp6R8oR%0`&q=4RYt!Or3o)9#J zT&=T|1=QLWoT34w?QAD9aEf9%-f8<>4cpCrH0yT0Selxlh`n2Rb&7hyC**55ab#5Jtly8Hsg6djJ_^U|-brT_5X_fNS{Ej`<%1lo&e+efE$h+W zHOS$7CIx`+sT}CKW(}DKt6a}hvfHa9jCDL=>X!YYZ9#V7(q^DYsk2g;4FBrPI>q#ePuV|5e>J@j4q3EHlxS&IX47EMR%2b5R2!S?D$Vwtc>f8{%MnTS z-KU5^n*9Gzst{&s*3CA{P*(8aPrR>Dj9q&**V}_SM0=hlZ8J%)@*}UPcWyq_Y+qx= z)~m4v95B&EA)c2vrQBG|-+`QsiaI#BkuWbcZ`O)8$vEDxx$tL-!g913IL>NZc)EG- z)3#XYIVPN&l*q%r*oR$E_s5)dK6YiK)4A@|!#lw%*soCnX(~cGL$+Qkg1qe%`>203 zJ%*ce@0;fCno^x zsv^fywN+eBJmk*Jg-_Nm9lN$la;o#zw$^mnNBZfj(N@UM`3hq6XItlAi_~tCEhw_S zdqcmeehP6K!@=2I@X^~(p4Kq_bY*SIzS*?rt>mGAm=Y6C;RBGqfQWcij<5g>pWNaL z^2K(;O!N#p!EEnqSelOnsn^y|^t06i8Dkr{0W||>t3eb2w9}4Pi@%!WoxA8PZAdTh zDTI2Zk}ebLUwPQ71#j(118GaYQRZ>KOQXV8%N>U1;Y-lK`=3)HJ4HwfjL>RZ5p6b_ zZC<4kl*u{aFA1}^{%JMhCSlsn`#`VG@)>NU^9Xma>%p<#o=9OUo4W0ITWn^=uV1}J z%oGtDdNl<5S3p_A zuk1pS0KS88kfG=y^ZA}}nALnM-ioC@(z!p|C)aZM<@AAtOh*lcSH@4YDf2t_ezt0l zk_sJYj?b!2Mw|502l|fr?{i(JG=nFV1_+nQR(~EI9w)6N#RmCJhkB6Q;tE@cCoi%V zZDvyb5G1WwK^0QV22I2si$|J=PoB^0r<`$S29L(wWte_VC?9BGGVpxZ7jKwvS-^6Q zelm*B85HH(&U}|2Gkq(-`R5xRcCiZU9I$eR&jz}sEhiHs1T89`#G>Ognt$ARao61x zOGrcW7wE(tpc8l4LBzxHJ}prUjQ2b-{|U!z@8(+H+MWU!$te{uR6w!DEyzzM6~`== z7$|Nn?xCbP?ERVJpjJUqgWp2k0! zUH0SC!@UT6i^hEZTp=Wo`l|_7Jtv6Sxi+K@khFQu;BoC~sWfd=4o79a*rKmsEML3B zF*H!?^xQkSP^H*#n_7jhvB7C-LQwKvm(iblMK=^fy5u%V$*I{ooB1-*pxF8N=*^9T zIE!hGH+NvyC>rKJeyQ>VM1VAUcXHzf?S9(4Xt` z>P^yg(?zWJt(9dB$ilb`HalUVcT5#f`^566G|_e8$d3xABBNa&Zq;AvHepfbdkvkE zJ~C88nmeeMN?dgO!)_+m4`d`E^WMF>8BS`WKDDc!+XH zXgrNL^0gd_0?MmRM-4Z(%5Fdc1EW8+l5ev)zNl_dLm1no)<+0<3GHxme;!m9C>~26 z_~4rm@EKAqx^9^WJR#6t+3yotiRG=S=VfXV))Ms5XG*VzlfjK4$dZ z!*q6Hvh1MHQZW*d4zt2p5v2o%P#;3)i?+)5ZG$JOg9r9VMr^fU!ikhKpOb++Iqyjn zM3^~%T4lfot!oQiPF;fjWHAbp$HC`>bC6Zqt>^Bq8aG`anI7{f_j_?EDEQUsoZ|a4 zSRHoKQ(oIVE{JK!i;e>62o@Qvtsvd64QIlO-aT5Ief*2Gu+(fN-X?G@Bra8&8k>^o zDC%SQbpUtE3h{@H^1ZHh@rnups_J=w^ZR2Z@xA;Q?t>T1`nA(r%7*Wr)u8;gwC6_4 zBy{hYCTBr@x+NYz+qG_mpboQ+^mQn+L9*T}Rlf#L=%((RZkgsd9#8k(;P&6rO90aI z>CZS=(%_uEV>M-L>m!1=l-z0+=u-lfEN2w%;o-UEd@M?Va{qnam@|eJq6V@ ze>a^YiGKf!Zsj}Vo`(Bpq=U!K*4GD4h8_9R-MbF-s!825oop|DEiujrqV<|f%l6n> zn~lQfm$l9A!}&L<@ZFD$JBuGZn4W*76_A;7Y}2z6DB%oU(KA~`m{Con6=vz$jOwzF zQ_et?_NK-!d!V?sv(S*&<5ig5F+qNW+3UuCIFian6vq-;SoMo9+l~p7Gyjoz$t)Z_ zc5}~$2gkal@BFSe^YftnL8#g$tMqNho{4WrndUow>*|@D#)wqeFeO8H?R2F@W9Lsk z`XAMdvGCe~Fai@nPkB>ME)PKZ-~Zwhi(@Q~Z_==N^wHLwr0bA4!b2X)P@0i{;+5XP zLGFMrDPgcr=9S&z(akzq){aTjD~n`L(3^86Ed~5&n!HrSc+1fpj^DnDJB7$zWIqY> zA*Ubibyh#?6L==?s=Ra1LlO4dNc9v1Pph$J>V27iz)HPBji3sn^y6Rc&H@q;Oy8Vx zxKepIB`vn0?o*X_d(>doOvY+yonq`xw}T&1;&u&Pz+(-Bxb=C_Y+uAqVq<~0^UOTKPkfFtC9XpX+avEImv zRlBv(9?s1Bp8JB%W8EX4%N5`|A5>_ldFS*%2=#o5!MbOE6Df z0Gjqc7MW$(AddxuQ_F($UDbdjegy96MMKS z1UFOA{tmldZ|*0)jadc_(Sxioq_>$J zYxlcN-ut1!=pOGa%ni@?fr$YbAMN|Wvpe#SDlW72q|x7tq(!L+2p8IbOZr`e7Zpsp z?xyR4w@WKHgu)OF7;%>i73yPUW8Y>Qg3bD|5xpH6IQ0UM=^)a#Jg&((~B1 zNEjqTV2sxl9K3s8-!9z8x{FXMK_9=o=Ir22zt+B4X>G}k=~8==Q!&fD2Jt(9S@_=- zSxGP`f>}DSNPip4*e3Q_iC{5n1rUolUOGP&W|EPx{!UHmGfUf%`DXC#8kha7hvw(1 z4vAFLsf!CE+DO*m}pz?*Dw48JHLJEPyGcLjprkMf(IXeq|q- z-W>i}rIa!A{`{Eo9@lBZ@dACoj6Mfr0UiPQJ-=k$MZklfOuD4Q9u1=Yf9f-3@8I3r zzc%PKd(^r|SDV)-y*AEY>{r^|%tAN(_7SCRj~X|g!>3~;S0{?oF#K!`SLrZM)F%3a zWH0x;K3zC-yYMBEY@8ssAkzYy#Usi=E$qzD3cxxtGFD(>EjEh!>xWUDXRe^T02nN3 zFXAaLl|Rm}Sn(~;x_T-@3337rl!^?F)kUOGsKYHQSZaxpRnH^Z0A8AeZ z8a^KQ6KAk95WU1y$)oru=E%?1Qfa zGs9JXF%e+Q%@jDOw_{bOpIUd%pHQlZH&~f5mzR0q6L8MVp+7)6eMR0&*EtmZ`&0i8 zjDz&yfKI7?n}R){f2@Mo>LTKB*_=p8Phrakq4Fb0IUKHjihKa!{tV2yq7M)Im8b3% zJ+snzySxgjfC$xp5ReLES%_DtJSNBM#<=V*>+^Va-ZQky$1X&0jxsXG!JujEr<*pe zw5-Pz85y%r7Ju)aIbbJCq501aE0x$hTD+TA(ULnWmZ|T~p4u;3+Se#=Dmye-(Q;%b ztFj(%><|UHi! zzfKl66T4Z*!Q};k)Pb)0XXo+k;Rb#4CjDzzbLe=LpKb%|kJtS$g&!bx5%utp;?z+* z>{jB*m;~WIO_oc`Zxb$Ao;lPlH7pj06=1-yP7nz{4fFs}eeG+Ca83}eeA(1^ znndak=Dq9Ph^EYMRa2(kvpg>$j7-&=MfW#WuoDNA-fbNoyR?Kolcxt_hv2;r1-1N- z^ZtJs|Mn={C!;%aCI^HAyHxVs^Tf6JWa}*p?$hS-^2;~#j54@}=J~{m$zPiE-5ucz z-pYl4jsVe^z$h)Xp$m&wSA6KNOJL4ZRy8vv$**7HZo*7Zo;=w?s@S|chTLd%f5C5- zHBJd?QA^%Ik?lDH(>l3jl{agCT{j8+vv4DbH7 zxp=(8p(KetopQFutbz%-d)Kvzrm*7P=OnJM=uEAMS_UufWM!%1zj8s> z?T1Cpn^tXm-V~4lkfgozT@`AHZ<7*=~s=HMuGHh*xwE z3+l*SY~|VbGl%G|M;8*5ImiOfvjNQIyHr}G-FwyY5&7MF7>yk&$7d5ds}Rw`eZ$T1 zi5GdQXT*nAgRm9HXh%SF1@6ZP%w9Wxn!WBW1jRLhQ!@Vq7-VER0qn{%lpn4WhM$dJ zW)XFFP|xlX#tdNCqM}pk&Rxf(+ENrRYsU0uB<~g=UJ}AYD zb=;-{p2kp*u5pxiN$mD3F=}Zt61NmR;}h^N5Bvw=KcI^BC@vi8s`Opx-CqOv>5oOf z?`!0LYYjg}n{ddn3XtLyK0Atca^S<9-KV=AKQ#dhgpVqd<86*wtQO~Y>DY$O+R~}A z?W@HVM@bQh_XlOx`d<6NSj7YRV%!F2HdKw#NGmRXj;LqoK&TltzM%UIcyF0#L0bE1 zDEKdEBXfM$C-8Ldyvma1ZTwE*=PB$e6~gP6e_9{i73$Ts($>+m@@;0_U40u@Zz%i; zeZnCv$-09(fYA-#=mvfitClB`UDnbZsNK`jbi2jJxSFU^8t+A0%&f@Eq&^bmBOJpzo;FA&iuTVZScz@V`?;6Zzo;YdbSz`CQb@*zWo=Y8uyp9&vd7SVqyG z*@cUE@*9F#-lNniUhdie{mc?^#`X!}W%{{@%J_!x=-rkqs#o#~iU=(vzaP(9jIZ|F z>72;BIn7Bi@=(hN*y5xn7hcoNe_f)a+^Mr`+BN`2L0z~1cad7tSG3oBb|u*#TzbU` zoN#f8dSmQ;%Ea|W?}SYDZVYC8cm<{%I&+!UQ{@g~paIkGqT_ZbDPb z4R_uV5T7U)b=t|aq~6NR*|O-GK@f)O#&}I#9e2hb{W~YE6pWo5ZoGSi0P_o6=mS>) z(Zfw`-|VCtKb9NUi8U#RQA-G?dqAbgror#?SQE1YD+NtHBh1 zgd{(0S>!?~F347!JXk|hqpN0THIld&(?BON8YS3fMDby0`Eqb!V*G+M_#+biua5Hy z41qu}A8gc>3m%;eU|QYNKe>~>?TEriKz?7%PUn!vyEVcnwwFYG;ffCKz*wzn=@#`) z`PXG*B@Zj*)?-YL6mv|~ls#j{X*+y@VUG3nR0eH%U9ywqx}a>8C0N(e0&-@JtOLBr z5Z{%v?ermy_Lb-3e?p{VD;E!R7yfSE@3}k_eQMFEJM^K+eBFOw50Ay^?-Acp@*>N{ z#isD>onu|j&qONa!?rmD9@{z+2ho6Tsb_^5f{wtp7)KZ?7yM5 z8a&U`9gj|3_g78U06%#Qrzu5%3mKoQ&=UcZaPMAG8fei_JCzPDsktX_yms<7eR_?@ z!E|4%->bGdp>oSuWlk$#X2=H7f2qkYFhVl3Cu#0S|9+K3iiZ|0(q+G?W4X7e3fIEy z>R`UtBRVY@nRxkPu!q4UY1&RNMs?1&Mt{`?0dvIX_a!=QxMJuT9T9pW!fLf5e=<^^ zqeek7+N&#}+0BKF6mDJ1I?!{;1u$L}*&15|t_69UFlh`j@-t^_FN2~(;-9VH-jg#i zhxn2&mKEG~h&7&&m{j@2V*e$_ay7TUjR=oC@>E`XQpdF4+Mn4_t3mRi)WZC}i%i@1 zE1fH`5s4@!d2qJtHe1V_5+0OtdA|DBhQ2fDR&ePBe@4S3)9C`TyRn-vA=&Sv)@M|@ zU>p0C?LIN?8%{Blh>+7=2Tlq3mce^_8uejP;NHqx@DjCk9O|Y&EhU7weO3)%Lz{#Z z|L?}VG3W5^TKIA|ZS>4go$ErAiV|C_d6U`JbA*#+3Z;j$~F+!p|q^KuVBtN+duWdO_6whdADTSwqd+V-ja(8OGYk8N|HoP0%D zE{r96YWd@Bo+dE%(wvWT^rgAQz&%K@_p1xt)f2TY78~n4Wf-4u z=+wy;%bv>OwgD9D6x%p@pFL`Wy{+po2r0QVi0g`j_ zOraq4%-9PD2~v~Y94jB(uT|<2xDzDU+oLRh0xgV(uH6to)XX}}xo3+0?M>#XMk>E` zf{R&ZHGM;J7{S-U`EiG*{rmg$a}yr8^QOm>P)$u|)0YDr>F>xoiSBC&?!)+sPA_#j zy#(9KA5o{;a{^A8!ASSV2}_5_v0RD4e$PIFXO?#^{l}YX-X0uHWB1WGbYmZ7N+@TJQ6ib$d9Q2PM%j1E>{9hqRzz!Jc?tMKK%d9iN;UBr&04$tSB1i^L{S!PeIsdPHsFv^-z zo$u|NZdodu&Yqs#XV!F~@8lcFX!imX9;rrpM30z#?n3PuKS6Wq)DFqq;*RAAhIl-fq2lZ>K_f z1B%f&JsO@FKkGan7iQdNL4-OYS~OX%0s`T@au=XF63HVCj^MJ_>rL~A0Ld#OL-++y ze#UPA zs-I?u)hJ$2F}E1(oZxwA%^T;m5=+Qlevpm~3wpJgyw6+j;ACDuJB?kQD5V^2?0zR? zYB17;q$%2Y%{n5HTnP1-H`dMzw@36N`DF|9-l?%LAiz?4q^SO|J`(;qEbLn)?IP!kFhz~E{iXM~@v6q$3Nbzm>H(~A@ zNb5DInA#~yG=N(<@d_A{Ue;8-C6&(zeq1KbpfBy|QutS9a|5{8w^e*!{F=MaWRU88#S zub!l?%wtyjVN>Wld;N8vZs(Xz=g-ji?Ig_9D5i(EfCUdEn5EiVY<}93zv59I1LD#Z zIWc1+ue8?55{BgUkdpY5&(Z44nDMAoG;IeQ+@<8>nQz&A`ETf}a=`q>8fUd1vofi~ zU!-YRY`BG=Sp;fKm%esvPq5Ea=iL%vr>e6N+pE3t7kX=~G{z=F#d07iDygW0D zm;{05xuw%ivlAx-M?uk9e0zt(=G;sIh>R0h+=u7$FR%4P9yUn{is7+PL$3V^js%HY zkgJ5GDxddnK4TfHxMkJU7RfW7dKkM?k_P|*}3|TmmP2?+=$ z-7L(*Bt>gUcg8hct0~zVgfcH6%Wcm^t>v=iHVdNzCIFhv>tVhQ(#LsCeshcP)XTZ4 z<)y_s^m&;e-gkoh&9hyd6EUfG;6`BWLI~sFdBTyd`fs|y$(&&Q`s6eABp%>~mH39D zgt{Me!iKU0AoMCB3{jaWb&Ieh$6pay&=H}<030R6NLZPG80KO(JX7hacdP&H^cS1F z;2tF{RFb9mzPaUf=b80mv=#45;b-&X`6s@;m1wz}$Y#ImeZ&V-V-SFY;rEMugi2~{ zH3EGizdVy2yGy@$rq5^dXZz=Mc3SORKM%Oa4ITmWK6N%#U+CHQ+`VzBp>PAiwqlms zF)M2)smpyLDQjc?O#TZthDRXHw$Nn2d4R17c|;Za%n$wi<$izWtR=&S&9?}t?$_P@ z#T&%=GZ8bXXTTdU9RAuMrKL*cAUG5uLyL4e5lrlo^tyWIV!+bx36?G|cvgUlHvIlM zxv0Foc*tL<#G|->IB#8$VPOdBLKUV3v*VlRhgN1HFq8#yX%?^@p({9#8+11mFIhx~ z$8BHGU18}4aRQf0Yd*c9(N^Q6&#f#cgN1XOZaAfi-og*b#StM|9dV+&>& zCm~nCvW1>G3*~_6gMYIGi<6`^}e{cM3SH?&CmD-X@(W`{sGswHq7W ziY6DddL}&?odm_d&HXKGt+W63c|3R?wmJo_SY>7*%4=HrRRWg0GW2h2zCF^=>HahSRcqXqz>yL=@{OmNG0DToUyp2 z;>Q1`x*%D4uHklL!!6%d0WkEbEJ~nP&&>YsT6%=JL5Q6pSd+dW;jVR4rZH4wQZXNF z`~QDbw6>8LewNU!Bbeoge#~KA!{&IsfAv~t;9{}s7Rm*RQlm-=`^z#)-hsmA0(F(3 z%X^o&@}dDYd|q zH}qd39mg;EH<_)qdhw%^#eQA&U#(bMd9!o_j!=nBI1H}3O~}!Z7<Z5Bt9g1` z*^j3;v;!Nw9@^YFGLP?HdRqw7Me|>UocOrAAPmBRkYwl<)??N>QlcZ)*Y)C`n=usS z;4j%!EmP-W`D4&0d9l6o{VR+8m571(=)3ujrd36#%7Ysh<-@mWWSvjo?eVF1P#kX+ z!>de5r73QcoKZeBO38Z(oQetFm-kHo~Z3wjs9f*VKFLdyRg8u2$0wxAlk0>Ilow4J!nir1rKrPDqCX#VEZp0R_nN%!|#RhA%RtO zAz42_L!dY2Bh9~|a)TZ$Xqm$srBL3zM>tzHL;e)3sl7|QZ)|{+G?*kqaUlV@J#j-D z2E*4>hc2nmTF?^ZN_mFRx2TciZd;fivN3k}dCYq3Q1HA_eg;Xm{&2`55yd{unJO;v zs(EsD^ra}OR~X`}OB3aci?a%jYFykkKR%GZ+=Y{M@7(CkrE>cNS}$h#MnOcYt8p^0 zEGTSOON{){B1Ipw3ieMkS{g$#q%Qpo-!-8RcIQcMB@7=^Nv+eUS67M13qYV>oNG#! zWrsM(o!0mr$s^^Eb{A+;`(PKj;4^=NNBPp%`J45Yap1&0aMRtx8?i-33^-0{ie_N77;O8q=n*8HCkf(QpkVAOKF! zN9FapjJl!n*u?aFb{HFXREnr0Py+@c}&6icnR>%BxZ!Y8e z1NfU$`I97Ov!~J#faZRLvpl=%$-j5SQ8rrmYYuD0nent)OWxsPrzVM38-RvAp{ZUM z`zOHBvYf8;&$qT`_|@vGFBx|Z4ykoIU-d}J%u>v0xSceho$b@8k5EyqrqjqOR`>Fd zSM%CbY5jiQ5yt<{D z$V}vD#jn?rKqd1hm5>)l7OH&fm(9jyIv+P>Xq;_-^TwtH8zGreI6Q;ohQ#DZZc({4 ztpQ<=UV_BoFF$u|9oh6;A?GZq_){ndvIW=E)fHDVlUCw1&Q3Yjwk>JXa4Ie)&el7n z9}SWovP;Ou$=Ssb@9d<8%R6uN_F7S5yX+<4I#At~1WPe$coIiM7qF0&l4-{o&hPnT zu~QVPBm6sGBX{c30(7!4{M{w#+J65^6RD75AHN}?zoF!a%N40*&nM#?Zs6Z^$#$$u z%sq9fd!J1Qo)$?jDuKvwMpTC42Ejh>rsF~xIeU^Evwo=6M*5$v?dVRCD~Wyb0`#Od zJPGx`zU_mK6t{Z1S9)J7G=w8`?TjAt#+n*L;tfqG^Z8xl?w+LA0-?G0^`YGvQp?V2 zzODAqE2`Msd~Szd$b`Qe`kQrRXm{~1_iH1^KDO@I7CpimlHfE|GuX=$2iQYq?50Sv z((U@m?6urj=915~uq$I_ck)rXhIzZ54yv5k9FECrojm>(m-ldBwL{;*tg1Xk7G)8I zubgztxsYY?A4#8knRn+vz;WAkfju{mZK<2o1Xe4dWTyXCPnf2c)6HB~Eql?iWLdXx z{GwvT3rAByO%}V%dniQU@e~JnLIm1t&DxH*RKU0hFQ$m;r$S%%b2y8nmgVIsz6=jaFUEbPBrPBmHOt(SC-;4Tw&pIydbx5ao zY*emkj1Xx}s4?FbZ%7)p)~mjF8My~Q5Id5@D?(^RjEC|_7(vq{MC{k5PW)Qr?qmy8 zak(WWO>qsMDxz{fflb5Esz_uGGx*&x;Hqym)U{Lsyt{M)&eF>2iqpnQm=V0=!w|0= z-7i8gs=0x*3X%n1tOWztu5dScB|%Oha_=6a_^vV#9&s(~HCy=FQYphL(_(*ZG5;!G zn=p9U_x7}R9!)t<*NJc?r}ArZ@|hYy2Mf2W69(QL;r`%@1#aYe11+_xmFZ_VH=lWv zs=cJ(J@_qWpFdiTFs)?~nKy~#6UvFj&BZwHepDY}^`+ybkLnR{`Hec;?*aKn^NT+^ zBwTV;L^S8o7wy$+OFHyn8ZarCR>JP^&XRz4z1HJNBTZDeM3;U5ncua$eW>b&?>GIA zbI;Aq3rCy+3DYODU{P7wPz-#nwHI-pS-CB~ABnbgoHzF|Dz0|MXIaeBR%CilHMfQs z_0?&?&NaP)_@pW&(-Va9pp(i zw}_2%bx`^@)CFvdAZuGa6ycp;ug7jP+v>WsYyy;`0j=c()S}`N;+jjtQoupZpGUjI z(hY~1ODhC+Et25h+Hc+YLr&JE2m(LVSLLR>Sf9{apAUgfM}a0&Q-^71YhA5fUry$1 zV4m4WYw_qTvPBM@B8ER^S6k=dT`6vnJdZlsN#Ee2@X2E;x4V!-_WkTUn_mdD_LHJX zvHx_8vGUARx?W1TRAN=Lw`~=fIZu!oO=4Es-ql0EL?g#vmdM|>%2JeXn0?autSef7 zMxuSmHmkB{Ti01Zu9vN#TE-nN1Uok1klDj+zE@2>qm9oD4pr%D)QGY7kRw7SLdRnr z$%=|i!ba?79HVkUVOn8Osot$qWQMD-^itef803rBH9lmdULcb`SR}xAaqeLab~}l4 zQ&&`XGP1{4<;M~6j{hlQX6X=Cwzwe z1OM5kkGVt3{^lnO4DM_aUj(PyAPhfFSTb&ot_Fc@a325womzo8(*?)5Tc;0>Lqa;T z$I^Vn@gQ;^ zaQ+`1Ir;sg=@KWZTV0@CLDN2>+Jb*ALp$}bc#luNAuBi#L%I(ApKMXe_N``D2U0rG zoiS>^=dpg{KEns`I1&*DOp)jx1qm)h8HVG;8n}g-dv!}JoKkF`ic6UhF?H~}A2!x5 zD&99^sG2prJv#;&YnIVDWSQl@EhI-%Z)&g`?G3SYMAgOi6;+!z&t^Y@xwPk;voM3` z)I_3!Rs)iCL+rFR|IG`DgaX(s04oP;%;9z}gPo6*!kbp-ngNTs_`t1< zN(pg8&V$H^!1E~m;j&uz2$b(j~@)%hbNejQV-@>S-SVWt3NDaY0=O#nD@-HJ;t zkoynDRMZ@#4~(QkAg8@nh~G6aS>Rh8R`6M|TPP41c&I5+%rG_2=Ac zZDuChZC*>X@#YtfkR$floNx;CNm7v9sSzXfh%AE)TPnM!AWbu{|0(-jnBga2VdfvG zLrPMTOenif9R9^n%tvrqWkbgtSHt)2Gy@5#QKwXni)C@)${!1se<)S{W+>pM{<5i= zQNdRJ!cNJU9`&x?L#*If>lvw7k7y#vANay?z2m_tUAyPxu|)Wk*muoeNoi|-VJ?V4 z#|H8pJN2(1`>!N}R3T@v%WyLALhEto?Z_3okkTPFUVgAfb4)m~qTN=(p!25YAtal5 zrL>!{;Qu^w8Cm+%dJHJ(9`Vc5@U-8fws3H-229LUw}s4C4{1bhA_xckAx{>%o(t8R za{P~k@*#I4_Mi^}b3P_~R8wiJd6rVHv_)h1w3Yg(pKy_1oPt9!6j))3(}8rw+~gu*3&ZoCp3swDRc6MpBH@*^R#A*@yStZ*yJ;Sz-!8{(DZ8SmJ|ORQ#uW1;)MECQ#BRePcZUdq;zhzAC0&boWlXz4*(3o8 zTAK8My-mI7brB?Snd`wksHECdHT>@y*hy^;uxrTY_s7ysa=*ZhR`963^TviRpH-kvtwj4KeI6(#MEa5O`sWEL&TzS%qK6-s@AVA7oZ6ynFGIkDYvL*@l--*i2jp z+^w?=wH1FI@kNLZ)}+|pD)xzS2SiZaY*y#%m@r3zr|Fdc{pooSh~+i5EujK2sYUMJ zA^m^XIurb&scrTIjH=n~{B_*=Xk+C*f^d755&8}UdcI5c_iY*>WxpOybv;jf8aD&M zSL43jH$*PF;oop-)DR0363U10fYjNEJ(C!jSyf^z{K6tcb}9Dm=YyZzm&l^Iozsvv99gY@ttyRY-CPL)01%?Jc zOGq$ohQvN3GXP_SI?Ak6vx50ZYzv?O*a6I}aRGvXNz5duOMXQw@i$?^if?m5pXc0z z=}*W$w(!P3aN+jb{M=adz>jcxBobNY;E+}6mZ$h_4o$U!y3CPZa~|_9)*d3i5#wnu zbsr3MQJJdle{ad2zWGGHrLfnp&bmqXG+KCnte~Wk)E*<==gxdnF64E->9YGpv#rX- ztBZywhNTjBzsDv4J9J{+xR<~)>hsPson3v>e3?jQ!YL`_n&fd6B-+PAzO$@wpyRIF zooV|$f7td}cRibF3G``{Zac6!TfifKQUYh71lI&=jU2HHLl9Q8rspZcc?WCu!8jeL zK>S70P_awcpPjEQF|e=&x_gE3Qm-7v@kPKt%PBK)RXmS44GYxWNy~jVYX2W)-yO*I z-uDxiz=~GTcqQnt)ity&6ZjvQZs@iUBnJWf{>Ju zs30XGBF66%?Y)ot{od#IJl}u(8K3t#=Y7WOyv})Rj74e{G$jZ=?~9U8RyzJp#E$-X zaEm)PJV3ZW8v%apeYyA<`NWe?KZ}djSZ~*G<+kG%V%)0HCD*1ye1FrRUC`7MdCAi( zF5Y0YAqNsJRb#z?-`SaM|($FjA5ieA8328xu zpyZy!X%1N#ETxgywb3CF-V{wWk)oY*X+%4s;Etf85>0*AKIV6N$mA@0 zR{bAHp%K@c~bfAgjYbrj3v0$<4)oGnQR60!<2$%lj_22ffB}Jg|>_w=t&T(AxYmX~Z zkPDHaSA4Xsy@pev*7=H0AL3rEvs8Wo;Cv;v-ypH-l{Vc@$Q?z_KxI#K9zH z0q}-OR>!p?`zkTM$dq9yGNO@M{=b@bqq`b-`g^(M-;qbH4uWQjCl#vRSI!-7J7KSMyhU1*3yjiN zVo$1$imhM^1a1|LYBWNk8mqDlJT|MQIECse7RB^3q~_IDLjKuE?aPDp3eSb_MHP=* zH5B_DDqX2FH~hTVSS@47)As_!gU8BxdBwMGVz95D+2|qk5L3yb+xqjxk5J3%-&`kK zIK#!;J@l+z9S}{6Qnsa!D)SJy9dwA}cWb?3`j@Ybc58w3O&1(a+o3A5A231tH#8C8 z&r0~Tu=jDgaY3q@RPMx1t55rAhSZqFD9&|OPN-K}L~0_Hd&r|c7Hp|{AX?d0qjKK* zZS_@NiE^eYVnzcx9x-gs?|+T~ga@F*y5t8$%Ev{@VRyO@ViGma>|qv~Ba);Mkp9dKj+6MPp3(iz|5KkK`-cH3Y1B+w84 z&poqs@&DhqkJmTm{)K7$mwn$q0ipl00s2=7{a-e9|8nvIo-hA*r2+`X^X1R`DR9GK zoi6^{Zug&w-oJ0t|7YRXcB4k%X7tI(pH$I#fE|;CCmzKEX4`N0;p=RB^&I*LLGEv$wA0Z;Jrd$dMe`Je|dC8 zMA|^aEStIdDysAC|F=M1$c+0CN--XI?$G)FqPYX5 zY4w=km6864O?}noxZgiX2z>7YNSXh@D)`4sb&rb1JS4HivRywB3Aw{U0>M|pcK;*e zXHn`Y1*nyS!~a55-uq|6R=6a+<%x8&dGT5oO}vx#@^FP4rIor(z;`?U zgGZI0aA31?u*E46J>F8GrC;%E^eQ{vA1OC8$;FbwIu5bjaD~KlUW=qhv+`)@nEH~M z-U<@c{9&!R9{apXY;t(l4@BG}7u4aGoKHJvAoYs&p@5Jk7Ymt$bf77)Rp}LHT^DN| zSGK}(Gw*fRWhhL%TYP4a-AVd&IE7Vo=PpP()|+wTFSjkv>PAEW z&-?+`)*tcMSTrwg$PBaC5FKK_LEwOg&n?UYZKD}oK}#Hs-!5OMt+CqDUaLO!+C!Qv z$qfe%kpdi|cHd0c>IA?FIP!_@k$FVKE0A{qyKELXZ$stop$iR)H-z1z4gw9Exf7IX zfLouKO~)IBZ~-D7H%IxbGf;bk%ygDAFIANQftX;rtd4Dk#VVEShlXP zRebaEQ|d@I!W^yem#nENfM-lfbu_KTL*yC zAzYp{qjtw%CB+T9p@ykegj0B0EXd!}F?=ys3CoQ*;3ja-nePIhflrX*Eh5>`qBC?w z-(pEt?11qTPPC&ohq$sx86aJVVk8Tyh@hI_0Uc6jl5YwEx)QdD^#Fj}JGa6zIe>C9 zZB}_IFx{5!LAk*bvEBv7?J?4!JHHGLF80MNB-c|6Xh8uVoOE^hM+%&1RB;O2)XJx) z{MoEn!QeD*L%ZxWa2}Z_3(TEMJ&qd)dsT;fQi+;Yo8EGiJt1$Eo`lMCd0C;^832y) zvoY66SM;VouB+Q1P*AC+?4(~>6|DE>$pFsI{5L(?;ar&po&lyEtr*pcLw*b>jx1bi zTybu6`m;svTT>)k&F4hgljPl_Vun7Nd>Id1lnmoA@*oUn#SzeKghe-pF8}RW30VS*j;6ce-e7my`o5A>xt6`Gzw#>A=ru>0?6YONW=rv6p8MUm5 zfJ4SQW4cX4+|>IvHiUgmc-s%o5CJ%zJXHI@AO-G)@SDIcS z>LSwt3`bjo212HE^sau>vyLt@g3sJ_kyJ>>A~pj%*Qf4j0+&PRTq|1W)n z3%|^Lk;h`@F;WOE$lQR^Q(pEqo#Tywo&Dr_-E&xrsZP4EnSMu$|Q zF!sE|D~m02MLsHem3N4>@8R3sxF!Qh21>6$cJ)r?g~gn#_*TJJQN9xVQ)V48ZtT16 za5ZH7+&+6P{!ul9v_Jv5q+;UI!$xpc_*C@Z24U~#M#v%g%sOKIQHkKw(JHJ;%$_%2 z>fSLsV-`Z0Y85V6H1UPTT?{U?H*=810aaCMz(Yw1%4e{ng<>Nq_on#bq}Nl~>JZ4AGIE5+^p`Ye>Cl@djOFTikY0LssC{vk?>N|H zXqMwBmf6wlr>rLXcB>WrhK`MHU~q?~jj#rCtCiM14*@FF27a?pp{@7W*S`TaK78&K zICjQjKjCw9CE+a&LK@5`Fu~FWiQ}gza8`a5V$n7;1+~?Qu0Q4GJsIzGp@RcrF)#B8 z1o;Fm-u6hLvpKIlYCuzzO^(Kz&2loCiMW3?l6o=+G2El+rK6{dC=K*%*tA6ShI%=K%a%2ioNfq*QSG1r^e=;ErJ4y zX{f;i-j4x`l01!6v|#^Hq+!;=HFsSwS|m&Ip2aNKF_C02;nYOH75Cnw9@B(@)k6Wl z5fA}EoFbMC_zDC72UHP~@fI(OZGz3-Ep zE31njIYDHhW{nV^r*RemMMYdcZ#}jfdai?H0N!j2_GL#T+n>CO1K$yrTwQvG#jS(D z`ZP_vPqqP>k$d1Kf#fw$LbR^OkBmGkl700;On8h6+QKrJr-a4AeQ@c#Ky*0V>ieXW znRn|UF_i1gh_}Cn-x&_Q7>gz#yM#ii{+DQ?WnVM)Fz*`&uP$@++M*D=lIkwFBZ$hz zn5upln|Gh^_C?Hkdy62?<&wNZA!*0a+}1D9s_9gR{fb|{IebRW9nSg^ie)d_iHVp( z`!6ug6^2T|m(ALFHKy#k4hjT(z)=i87HC1Os-noeEVflZ1;dk2G2E|%>uR3x)fs@S z^Mb&fw=AzNuk3;c=vJQYakrz^rwjy{d20dUsq}E8zunoRjSX___{!ii zW~Imn;)5of&^DdQCVdg#q#+EV226kkAv>(!o^qgn0~%JMypyVqAhFykK3SozkrDj- zm1Eele9Rzvtu^n~I-v-9`6K2G6%A2_7`c~KFG?+B_)sXelWeNfSYj7Ow?r#%Y*U;S zuU1ddCyUvfC?^ffeLsw|8rlHwnhbbighV<`QHRJg8uO}VgZE2kXM1HUs=9c@=kZdr zD#&Pn2Ir*)7xc^@-J(RjqWUzJt$0x!pKeEz^xx^kSSEydwSRldg%|Xy_oQblz#sAl zwucsVl=^RX7B>sA*q1ZiRIOP#6_=UkstJ9itilN043H`wv0AE}&6}PQJMeH_;D(6- zJyd;$y+%@ov6A~;pz%koT=5LP(jEp9a;9>9;L${sO51Zr8M@ZY*jw#v8yy0JtFDII zPa|hL#r55#;@|Fm8V^Bd&0ts>$tyaI?th_`A4JjK{$VR46=>QCTN@Q1I}x1xnP-_z zxlNoaE0doW+AqcprONy&uz;N}eH&U6Z~!N?hoGI#xE7!K!X^&Iz~KGXYq3P~7I zQ3VrQ9n62r8&%&&fh*uVywb%=W2+iXeO4Uk#sqk%)0IT}?JSETb}fh(`8U*!(qN|n z?i8mMB(SK28gMK;4Ld(!0H>9<^klZN0_Hk~2HlJ?WK=CkH)!mcxPBf7Q~o$$f*GTk zWy>op{M+@2l|`P6xveH}qmf?)p^`_Sd+Y2Xk%!P52d^WJQEKh>4C6AkJ+B;@r!+ueVFs4H5>)9e7CTX_rBD%TV?M za=1-l!EI1aG|1Kjt9(U2W_yE#nIulO`jgw4-3vRZ^ z6tuD^#1U4rJvtw*QSbk3Z_Y2?D%H16?r10=l!G7?@}L$`6`n-F@XLmfl}cI}ysS5E zw@4_xrzczuY=vGlovx5^VphF?+cSubcFc zFmE%_XW$)GjdvKgn)S1y;eNzKXGOu)zgQw!3aKawqUT$UqUpvYo>VLDDP)yy5$o7) zRQihwJ+`9qWwCf;t;u!cZZM%XJz^E&ejuAy$I_Wo)q{dD&&$LGSbjd{uq=`BkgDYi z+=Xk&E2UrG^7BYlK~1!=Tiqr0{+KW}0Sx9>88R3N?PbcDs|qv1tgLYLt_%?A{p zrVZ#JkHhGyx{#+GvG)ftK{Iz+Yeb1}rAHZ{*+{i_qU(a<8o3lGXA)R_p`|_IAh`IK z>x3*1MO~S6YAD?Y6PFy0hKF{4%}{;d%*liy+j}+CMgA(<`Vz7u*zIy*CYJtdZvO6? z3o#aBnmxDPSuPWkVqixpOxn_T2ol+xu%+S9Lm3KIXu@3uE^4ao~qr>$xfHGqtF zOh4-r*FHcPprd@8vmcfw{63Qt=Nm)j(hqg)XSl_zON7W3>f(2+i!sxbK|R? zv;xae$m?kP&%{vdrv?r9;yH%SXoC(_Fgkx8@AY;jT?}@+Jo&}!t-3sRMM6MPcxj2U zrAnQj!nznaXs5yG(zG#^!NC~y&1F?@<`Z}h<`?XKbm7&A-*IsvnGeIWv;%En0I@|I zpCajF`Y-l>^|?e6yC5Q(8@5GY4a_0h*CPZYl0}<^(eL4-YGy(&!Q|$1lxO;k5!6zC zz5LcVCEs+C9@2e+&p1vvF4&+!%O6F`RzGPAxkme5Tiz)I&JD&Z)TR6Q7aJ8703+M3 z#Vcy7;c@{%RpD_ThRz=$KBz07QZ*iG$IcH2V8dW^WV2BfIg@Z1SS=u3M4h{&Iyt1~ zVKS6d(tn*Z;U-Oi20hiy41u%l5l9KIRljMbH%)bLNIE;zhl4=zcqse@uH?hTipF_F zcc>S{Uz%E(wt0BK{jQdmN1U>nob(*6Lsia)pO(A{DPTw7Sozk_o8gCUcA!pBeXv=; zX^u0ebvt?*zz@UQzCa2_xrq>-BOK9@LNF|UC;Lw(T9uSRPnHA$WHRIV^fmT|26HM&tN;J2|UyX86)zk}ww*ZpsylJNk zy0_^w)Tv)MyjHL1o}rIvL4eBKXTyqTYEZNqg7elhL8@R3vW!RVMyG?A!d~pUR<8>$ zHFbw5Q)Bl2EDwK%0Sl{YeA@K{)!;N(=!Y<6dK9P=a*C*3Gzh55>dgSwZEt zmrJ#JYf`ap0ypY@R1~625pH0Sz9=QCr@_VQ5jZd4wXJLE`((gDI0M3u%5ej~zPSXy zZVW_`mYBgt%B-G@H0Rk|$9=oLiJ<`Rj8Fx|Kxc(LOq7*H`*}{#ZSYyuq?fp9)uyB( z+*4_gi6gg9r3&G=oA|Z&ER*JJ_a0kF1+TItDH{n-w zf)MWT`IjW&qNtX^h>qor-VemRGHK_z&ZCb?zD|j-Sw# zz$lM2&AqNm^Ul%mn(%X< z_V%_Aash7Zu`m;GZe5?%gwCYP1UFy2IzMivZ6*_ZHyzvtR%K1qFw{zQ+P#c{g(A&f zDK+UB7MTpJY5}Zvs3$T&gCqT=ZoHHxWC8h}T%=_pm59=~%2=j3m%oIY+nM-Mecmdq zX`ZsY%c82r`LtD7p|X8IDOp3?)awjUef!^t)i_s=ER2f+$xcIoZ>s+GRcU?xo`0v; zEDv>RmWnhlgxJBb04vHE&iEIF{A)6lyVT&;e^dtfTnXqu%ya44LD)RpNwcBq^-) znyBijArs1TudcKY4y#o?Lmj5H>82=nv`THec6A)yQ)t%vR`_VOsYixeKWFJT!{HyeaKUo4se;TfD( zUBSI|yc$qr?Mzos8>;zR^IVb8q7l88Z0Ytw@+3h&xII5Fd{_XI;MX3qdZ-x-;}aVh z=Ia668Y`!8c1(PQ#$|7LypsxcCm_RQz6{H0Bhcda&@0awl43QzYF9Zf`hFK%Vj?C2 z2$8znn)(H|Z!0JhTY2W*5(`~#j|~&{6U+zXTLUtVA^^wCyDJeuKUKvaITrAj`b2tM zZJ~?P;ah~RyG|&&vn5f`)*f9ulTci3y7yfMhVb%s)ikxG2cozQvYmKl_9n>~c6 za`VVWkUzPhbnLbGnQS_Cj#ihHA;GasyskUH=Ve+&CE16dU`O$F5Mzuvv(hJwy}N-l z>LiQny|RlX_54kRpFB_D|M!JfAQ5I-oS;GQoNRWgZ77oITE|`}~vR zimoMT#Dg^gDIpl?S&lfLY4o!@iyX)4@wi%HCfEEExy=BKbqcmB@V4aib$u>`=E!7H@T zUR$WhwHGa)%>v(XwClNNl|K)8Vwq^A>t^i5IiXj>D=nK$tm_(@in^k@hmcLz{RPNR zE#glG?T+=9YpJ8s!G!BpAg5r< zWXb4oG`bd4Y}Ba*i+^rXY|IehF80>0o5u5Q2T-Y%`5(?NXY{NEmce&^9mvC*1W4ul zfKG6%XFBY#D9WMOKQ9To4^r*zVb~>*btgJ36>OhLB-l}CS?;Q<@r6Oqs$&{wz~Uh8`QpIa?^p=C)>aF3z@@S|N@K0BqZ_ek_3AO#+5| zehSZf&BSEd-vEKQk;IwMGLAFAkc&bBS9HF-)ss3I|KSUiP7TF9VEx7TcnD&RvBbAc{mc+eWL_X#{+O_P^MhOYR-3h5RtK}> z7fkn-;OywbgCoRO9rufX39G6B7&@682>?D3A7zgHklGioxzI-*p&r^q27l8Pbr9p` zp(l5lwTxZl)&&)~`$~L)Z_s@cQnFG%lWK9BzR&|xtKNT_YgeE$&z40gtlddlO;`~s zLN~CfXYdWJ69paXR3fO){j|02v=rCbwM)rQ9Dz$YrmpMK)^j~GjUp28Kt^m?s64B; zHtdl0*7d--8!+Yxv^z{?z-q?gL&-g5{#Xmhw-3QQvOTofPkoe~Rblju=Xjdpv%Gw_ z2|NOfEC1{qd`(`OE6&E&Q8vqfn%3HH8V3aKdHu-NuhuKs9+WJwd8F67#XHZ&#YZPd zbWe0;+7lYk#|gL(@>%sX$P%>J!gvusF! z(Unx`O?7%gMcEvhB%1DUnzO$(q+CkDxCzqurA%AeQ&(~+eB2Qc%oljJ;7X=O-R4axikmA00ZPc>KB|VPAi;Qq5=wbMP>}H~7 zUKs*NR`>-Bsr?Wug*=G-l7_p|E0nCld6Plk;m%L_u;>^_`K3D<1mNlpdV2u(V`)hG zFb)KaYji{}R%9UPA*8nobB)ul0ycn(O}GAySN}u2vC#l+_O7f`lZ@h2f4e?gXq7w*^X|Ai>VDC4xxRjr>C;Lnr?+4QU?=b!AS#d zQw5E8GPSJiOCcu&za$aV`J6p!?ff;~TPQ)pauqB3(GGC+^4sI}fxOUC=wiRNO3O%o zg+a!IhTA;kuCo;$3c0R}f0oj}plZ!5o=NQ|F1|NH=B6>?*nnGHFV)wq6vE)miybC* ztc1&qR?TGfQU2wga>(ee{nh;!XhA6sNSEiwufw?=dUTxW10ElCdY+x%lb#IrDZFFxpgEK?OK#J1_!L&_DPXM_M9q6d=9G#tj z<$<57y2q>24d_Zh1Eszu-$rR1VCK_*bWef+i0<&47E3CC;#UDs*2=Vql{3nwJMFSg ze$WQbSgP~9Z8JpdK>9iWT8WsxX;jn6r@hlo191LH28pVLCBQI=a~yo|LTkbrNp{f` zlbuBl=?@#!@Ywv2j2dkDjsfXW{r&|t^JVAyDbZ5}?-ZU)-6T-swZ_R9c*3#Zi8~$Z zJ~>NNGm{DCrHxei4TfN1TG z7NjPRxBJZUEw|n7!*zy^iR$QBHBe|*k1|*GSt&7w^4=wh=R(@=L{CHdnE#XMh{*u5 zMK6zV>9i7k*Qxw9N1$s5P*Y=(c$V8UWM1%Oy)i(C*t3s6M}?0K)slF0I4suV=Il)G(`1nvEnvynFVf-Pmm8_Lmtj)?Mbl$) z)dbkqwFOZ@+I+TmT$NpOI!LXOz@#0bk==kriUwpo`&@v#KUO~mINBoA!YQ%o_QZlT zT=G7e@yiT6kcglC6kFx!gSdUwpM+Y5fM$bMf3s36X5}c}Dduv&Z&7Ejo&-=^=d!#B zJJkc=(rn6hC!X|#VDz+D$NHo*1+=JZ2O$^HtF1e3cs!N*-!fn{gkC^CP`r@)*sqLOaAkz9WupIT)bw_D(A;2K8- zn5)_J-VR75i{IWX>^eWE$q8zoAalXAQjhk!C=(sZ(1uv=v0g?P0YD|q{CSp$u@!Id zr=jsEt*%~1FlzuMo({thoZZmq>l_%sDVp9#Ybf#Pz zzByACF!AWvx}z2nwz^(PM@prwzC>j$RYb-iT~>4Q-?B1EOS|I*o7 ztA~RLIHCP|fs?PXBpDn%3CZ%K_GHsHh2BnM)dubO<3DK22;c%XT>lNM(;-O)21$Sfo}235351@x@wwLmM)c~WYq*aLdpMPMJ*ySdT;Zq4`k zFUvbnt3w2)>$SuIOAGP_9M^?+9}Fyw`v2IC5ub7-FOhaWl)J>ji#gZ>oYI1I7F40i z3A)Iu>Gi!!S(tnYWK5Hd#i@_9{($6chMrw4RiFgM2)# z2Ut#RO{fgAV^rvUcdnVEiwBccox9y0IJdFqvZ$J_+A=W0LuT44+;PzK>miYd#+^I z>aw(oc#mTN01xuYJY0a*-0W$foB#jUo-AMh9N06VD~F9|6A=;0JfS9m_W|okyzl)j zf?SJ@YWVAN{nTn~xX1qUkMj9wDiW#ZMaKXVwZHZT0pv|Sd z8n^P@FtBs$pN9ZS8-Bp{ewRj{EsZiLtNL*#1->q>*Z9{{(Sxty;{D>JdH~As^#%WM z?%!>UErE5;0+-I~TmCyoKN5q8nDINS_*n7l3R7%k)V7!F>F&r0pL$;Px>}+1Le71n}Ya_yS>1;RN2t_OByczaLIkDFXuA zCvJk$Sp%T-U0YT6PsC+kg>v^xqp3^dtv;A+XF-7)@Aa%_^^T#Tp$oBFtBF9m*}R&r zCo$%#+A_BC)%xc)vwtJm4?iS(lmE*SJ zfU<=X6Yw4SscG=sC;SR*ewsX1K3UJJf6$>hUB7x?bO?HZb@!BdXjJ3#mxZy1OFaXfoqN?j?Ni(L6h2f||9(E_;l}&!@7~(=#JGP`JKuth=29)bCDuO$QoNHZMF&Ic&}r;kvx)S2qu?3pyWTSugm8uv{^ zTat5h&~KylQ}-a>$8t$#^*0_Lv~I{H;nA=S0{2*F_os^dR&bHLN>jr^vkpETk;X2_ zQRG6K^`%~_O=|yc!X%IW= zu=w#PuyAY^p~o>1?N(l@5y(GwcN35ot&r8uowAAB`R(Q6!a^FYMMNreXwM>KD1Y&c zBWtM*c&dTM{Jj1{eOJ4t9$xyeOTT0X(@8+!#sq_j;WSs&u-FC62w#p8W+rMi;%MT1 zu7KZ@QFOw^tUnymU0UJ{H_ny^KR|uXlV#>cpzq#lU1kTZ1k!_H3m0HZ^$SAp6%#lD z0vQDff(!9xln@+DEdi`>m(?H>5Y8aMM$*+>sRs7RC3yMf{h5hO=;|+89AIh){oVU` zEGOXUVrq+^Kx$5>kifmEg)qvmAM7=ZUW}bn3@FuZ-6nZrf|!a_Kx8_s$OD4sBw%e2 zQjoE}VX4g;K3ZQTgJ18`pWF=$Gc<$9IAGI#DFwPncEj?fd03^H@G{aXLm&Qel+Vqs zn5|CYp(&PuB?`Nr)kY-Tjvm`a+m(`5pMvG_V0|beR1{^1*bUuv;NI~c$AL6&xjHV2 zOHd9!t2@}D1Y~O7^*ViYL1z*XX4rbk;PO5nDI4tDVIV~Z5FyCMI;<~6%hV* zX?cH1+icXFWGja9SrppWo+i@1p>$iMw}5~rj>0qgmDa-fWY6_;K|KTG^@FExm^iVj zhbF2Zm)Sri0Bs^I*e?VizDW?Dp!_Gl3qQy}N}bZ&D-*J2JsjzkNoS@Ta35@#Bh{Ia z-q{!qSM;ahT%L98N<7~d*IU6hk(GOT}6#o@lWG1pLJB`v|IF-5o8Yr zV6q|uc1|&fuWSBz^KxKx59hf8W_B~=G3qlzrqAtpx|ytk7Xs=i@*Z_~O%0kU_5zXK zQ{($9fJ0QN(3%@_AoYcXoC8J$^H+s$D9S;8?bj&Rg*+MjOqes722X39s1N@>o(-*# zl{yk8`#x{|h2}1z^Z^Z}jLDVTH_411oF7I#RK+)u&W25m_m@DuB<-3>F3YZ_%ldVE zWd+CjqoWBe-=IvMUSHk+Jg|xa-}D}wQxg!NP1e=Gg%$4d@XY$v87z#BMlNYbpW?gT zTp4DP3%EHhN#-EqhKmj-zvXQ)7_b>OG?bZRmB)_IS2?S7Ec!0^ z=fVg&Ddmns_H-B0rczYXUAii}niW>Wyd=0tleO9I#UQ>qc2{Jj-Ic8x`T%tvx}yNh zVkLFvltIdGKTk)#Tx1QhzJ# zaC~YXN?`jC&Dp!2=A5}pM`ijLb?DBHRk+V;^W=5p0gw?@cDW6p^`!YsPy2Gr{a72WmPFBw0K0F+fHbbcqYPaZ15>QQg=U$k7P| zq~44{23=mcfG2aT#<^`{4X14}C8Gm#JnQVurjPkjtfn%dM>a#o5D!ta?&&=ol@z@~ z!;lSzAMClBD^Km9hp1j4Y+#RRgm7dQ)=>h2+R8-c#iyWHWH2!TuCa7F!iSBk6(Qgr z&0bf3E6M>K7`a|0*2gK@9PvV4`2b)4j8*+0yW7Um<^?;Wi z>V#1>@HhmPM}BA^hBnzs+w?iPnRo1vYRcV~IMtMTn_cpt_j?WJh3v8pG9It4uvXn> z&lob&K=kHPlbnsm4U_8$_*@rf(ShoKA;Wo3L;PV)H|XHxicXi^vEykb`Nx{W;==t6 zmeq2PRwLcP`Z)uw@suZI!w1(AFneohB|aMq&dmZX6V_ctzDgV~oVC6a8*o%Yx}z(# ziPL<}InncerVnX%zbaDnV3ogUf7Kec~EYVA1ao89ZOz>{Vc3lUFFN8vkcV-}wt z)(T3NHqW4{Ti_dUZ1_?PM|p}g;bhFZ1vh-9suL|Qy*n}sVivJMU3UAB0MNY0a$Ft6+lSfL&L)?hdMB;WSH3@7O zs4Az5k|9su9l3btWYD!%N4W!eu&_GUsTknZ>c2b$Cj2fBC3bx0XUy=LhtMR9RBH-X zb$XpXC4I2^3i+hQn4U$YZk48%^~u+hm*C__2^er(9ym@`xcq!&@W!$@Yn}^{o-C>v zGA?d+X>f9};(Y0?>``bS#u^l>=uupf&0BVxI%+Ieez{GDHCffa+jipt^)2gs;k@Qt zg(vXF=R?i%nVb3Hp>;l#-Ccd3k>4K6Q=Ti7bRU+cR0IEIq2}7ou`}g^=Y7WetG2%g z4~xt)sBXG?tu@QG@>Ee(-|^5W`r#8DPet!3EWb-1uhH4b&b7lIet+zR(;c?V*S_^h zQPu?&+3S!JPwjy;d|TtACu?T_Vw_n-_O*^1aY*>eq#igj%js-Bn^+K+zW3l_74pem z`r%M`C||5jMySWC#Nv5YSWwHla7oQc11)hX?6izdY>_eDUkZZ$D+) zFmg7gzzN1dYpu?F(_$`EwY}WY_RAxML{5UjlV(v_S6oX1$2jrEfy=%`ZGFP-TG}1u z?1bR`6v7eXtk98bJ7wx~r;?54x6LF->3Kx&0w;28rEC9)wCH;9d$!8s#Tp-r7}
    8m>3HDz((~Fk?0MkBC6~uX}#Pf749CV}`&xpXouAd9eHI&Z&TL zxBdsEgw%r)(zkOUO52o-SQO45=Q%H-6X7bQ#h)O%4XqE-HIh8*@}7@5enwi2+b%31 z;_T)J!*80atN>e9Fp%M?-^TPqtB;p!+wDiBNd7*ru(j)!#^c$&69tPQ$2+XracMIyU~vxty4e)kUY8 z<1a&h=M1yBU67s?&D$YywTcee(l)~|xA6tnK_{OAo`RmzHP+dVg}|<|0CZQ?i5!vn z_;4S{i*kbWGni$F%(0s_`vFP>Ge2sQHUX9ZcrO z-Khy)plGG~li^yCNE60Ft(=U0fCK!zd*I~Z%bpz#X`|4y8j0*|$mo<4Qor(|N|@}f zDjTrh%W4iaEWtj9=z20l(jn+BpeZ90@+t?*&0eBNZr1;8v%aO@n(N7Te(AZCx%a*+ z_0vU_v&XN+C#lFjF1Lsgz9N=b>SZ&~k-u+L&c_O>ON;W+(eF?Zz8inS%-S-`T4t?2UV_QsYGM4h}D zm6X&OfNY#z%w%@g9+>e9DgOQik=H;{-!)XQnrYrWzY=sU`Ik9ecy-)L*0Fl2%OyYp z=Fx-l-#&D9WG#Qcao6$H`QM@+tulduROqfuKurf9X__t_pN>s+7+)))KypkOV_Boe z!;{y$s%_8df;PX|{8FxOk8MJGVz^Aso0kcpn9ReMuNq~K(spm@QvJ3F)iZ?Z)W(e; zXw@hmbxuCmmN05ddeN!c!zp#{!5?Mp4j55Q|0C5nFf0AegJOAq*5f2pr0dFLnCQld z{vLXK$M80K7B!hzo>eq`Bve75;FQN~);Tr44W&Ll!>Hr@0%%u zY+K#Dc(_&KJn{M1k@79)`pb^!(qg8Mh|`U@o1FSyI3N#8L|1KZDX*TJ(ynwGDvi*) zmVK>9BUWDRxkEQ<7GvSBq^oPwW9X|GI^TZ=!R6*c7FbXGZ<^xGhzKZqwTrRif2gO? zUIQ|g%LbR0Dsh11at;~$x7#wJwu*zXA4B-3Jvgz?&5vXnzC6Uy)lM7+oZXnHLM2mAm1dBycbb1?T6t`RtPE2*|kj;*^EUr88zKCvuMF`4nsc zML1k5yQX40Og!Laarp94Lb=4B3E>Ay4oVR79?uvUO!&BkqWdec+W?U<+mE9nbv= zzO%|!kH^#U-0nM6XEt7saL{Qm+Af{z=FA;G0JaS~ku#I!V-f9SakN&fVelh9tHF}q zL^41fT78#Z!rY62;vvT-B6g37EG^O&cc0p|{$?;|HQXcdYGS&I$A+ookM#F@yVM(y z&ZSEMz#7Dm;i)usRWhKFfi_Nz^Zk~FAFc%9}ov_!4^p=?US)V9fJ^aXEbEG%lMJVrfR`e!4HlJI&6i1FS zWiIO;*WRBZ)tbn;yvRE%V^Kk%){hg34QbbS1UN2BG&|92Ok@ zj5Cy3!gzG$oN@X(8k4X`+?X3+=&VjLyGB>aDYL6|kgbh~q&!?WD-$aE{Zg@>i$<>T zfgmHw^t3Yad%IZlBDlB#@_R(-IQuNeZj+JzIwWS+p(~^Eu(&~Wqu)+xw`1X18nxcE z7AKr4J}CwXCJ^oFy>dl@9xp_!q$Q5Czfs-kygA4C^N}~7FLL18$-xp@SaRViva-~5 zsx0@`2URH5E*48(_z4qHd;*Bl5{qP)!}kO_xGm>^x_1F=kt*9{)J^N1sMzZQ%y_k?2+X=264 zX`=l}Gnr!VLuMQTb=c>y$8cA3E)dQ}h>Vb4Jkssg9htiNk@Wg=9_%vOg;V-y*0O^$ zWB5v8rIu9&C9L+iEmduL8nwPUXiK_)d*b4S@UCq1att;gIE`76TLE2;s_DtYHg}yC@mF`u~yOzk=Q@azmZ=bJZTvGgf_w0%;HX!3c z{Gpbb_uPFo=h43@NJ!U?XYl@rPpnY(Q_($GCL9A7?tT zcm_+~V>e7BY0f89e|Nqxb+4}wGPbAI>+?^np#JyA2ZeX8aj#3bRzc`;5Mo zQ_VSi#OZvh&M%R2lrtEoZCHAVSEyb9xSdr;F!V-eC(w9PySo_rbDC^3#?3 zDkW9nm`d}q5EC%s?v{qQc@b-Az!VuYeOH!JlM6I|Z#2Nu7U%D zYfd7$9-qKsA68q<{FrE;wV9-r^GCK^>*e#n2N11x&2^!PF?~6kq2S?cvEN@gR8@7T4W4-CmNV=<(G9Q z5)TZ}#4)Y{&bjNL!w{$Q)Fw|!u_2qC4q}ioi>~Fl^UN8160#T>CgMXPpJnvpdDrJ^ z{T$!#mqO+hm?YaLO5?dqPOP1ogxgYWPT=pJ|Bw^@x(3J*i^Px$ww*NDO{@*KDo4@5 z8(VkVuCNw^Ah^y4;>+Id3v#F!K&CDnnQNdIW{KSzOF`@h3NjPR99O@qcNHSqy9(}I zpf{hVD-Clb9pXP`TgZk*$She*F~(6TeEE{{$+y$?eSv^>qrFPD9nZvxxrO$`sNT0Y zvJM8T+u3#f%*kiRowu)s+%1{RSVYCognh)J7AvIdB(a8qjPPvp&vfGC7MBQM{{J_H z6^j~APo1Fl2EK_-rky5>9%hhOl$vunp zco`tm)hK+UUqAFxk0_9ZyW$al;CX~Dh!VYp)JsA~Bc}%3c1_Wj>)eFv0WYAt5;yQ> zW!e5f1F4V8Y*nj4#180s4HL(3MsfcFJZqJtDG@Y7050_TfxMWO)p$)kIIG6T%Z|u0 zla6*IRP^6c2_jIItb{OvgCR2@NZ3IFguO`!VLUgWRe#U(dtR^a_itV=^10`p zd(Qj3&-k9$$j-Z zcIB4(%a7z<^mODQInZDTU+p=?eviE!cw*}85SdUV_S?q-6|@QFkl2}2o~NKVbyv1O zZqxF--MhFbJF+cjLR6)-vB25u$D@O`y$xsw?%@b`UQEHUb$<4QW^qxOP?u}*W(FMm zI>MC*I0j}6#C;*&vw81*nz^qo;1E-w0H5Ak*-dNE3UBMr(aND>vF zA93A2`*!I^I5R;(|3UrISo{Q3ckcaWpx4ul0mFUXQo+0ql5GDu8OIMGK_%#HSD0=H z&l%exIv!DBF%zlZ;S4cZ4^dF(F6!6CJPXl#rohjUZ??gXRRCHAv+%K@0ys)xWY>bM zX)i@LNhl-dJ^KW%XgiLE6xM>>Kijs56q8%m`h_<8;(t)rAln}hCt!mCS92iZyyyS4H%i zUOZD9FRdZ{lzaXY<4aO zRkMB^ZvQgHkR0aEw6W4MC5|35a)yjI6(S1;`uz$D4Z-*5#=GmG^V!Q0Yu`&6QeBc4 zmtEP4JDI!i6|fR}b45(+gui{KdV#>d{jF=hoZbZO#!j1p(`P#AMy>N~u=^MgM@Lb3 zM}Bhvh;B(ek|9r|^+6h8q890rh?PdG-o=vIpbn&ChepQvaQC=lwpCs0&xjMjhQ335 z9nt`b9@5DQla4Sk2&X`8M|UEjc@0!&IVJ9mHI{Gnpr|9|otB2+s_ZqMUD_Hsz84b$ zYQecQ2~LLzsZB42xkkQby?&}`<19Y*gRkd0tnnN7U>eVB9H_pCApSa%PAWsO9vvy- za))#xyIJ7T%>uaL>|}q!M1p-5J=%u+icrlTf~~Hiwt`>oD}G;Sg88LsziSo5{^rnk zv@i1vOL4r(xg*HLfQHNS#L@W|7cIiw?E*}9ys$7m>|;noX(1eV=igXw`#JoQqO*)h zB_8xxQu8<8%4cd!_&q}|r`hs~R<2gaSBWOt9ZHtF|FPPt0Le-(Meqb~?fOORQpk5) zT>kl22N=P>_oIW?+q4=S{2OjCetA&?ZCE;T|} zVcEk112x@9-Gshlwr?eMujd}Coajqao|tha0GJuK&nbVT3>RXb zZHnT}Bh+l`(ukSv$}+dOzieWnqlimq0*2w4elC>9t$s#i*|=HpF-se=2EvQp;&>1` zNACBZRS9P-yYcE2hSC4D3BpJqs;@h5A%qQc16u&!5b9bD2u#~;aUH#Fq^lzR=dybe znrcp;d*)xZK6g%#1APQ<`YCqm1c@s&g#)S}LV9GX{k4eHPi41__7}_SvBXCPrkjZx z`%e#Odii28PnX}e$zsl|gb9wmFQ%u<@FaH~znN-TDT6~Ef~+LI#l$x=$Z^lCk=NsS z=q+qtSgP^L3_b465Z*i$A^zBeWE5#-ixN9?{42J)crmTH{+?K@<$-ju`J38>-jOjT z#xBl-9)G6lGqc)P*>}?|V+RH_q$=C^;QP)xBwxNicb<~BoaDdgX>34y^_rm2AvdKG zk!|0F0r33DF)U9_gVaWE?qG2!3`Y&>N2H!3h7uvEF+T1cCHu_odUdWZrpW13P-

    1@f%9;BIR%Lg)o6g?-#z$u{rfa7khtbnuGi8UejL*H0n~%J}w+ z27nE0Hi!+cmo~wb^<*)7I?82j11)f_UO!S#*u@R0J&BwkaZ~XIh1ulNw%(>(m!LHG z7?WVYm`Tujci0|fr%X$HT0Qn(q;SFD&5P3%wS30Jrmw#}a>WjzPfu=EUDE~N ziXvF%$}3CDLs|w31 zBTM#?9jEi@0@m^5chsNYsF1mGKP`kXAux5N-cI@Eisy1ZI7Ve0Lilq>{?>urUX>hg zZQsJyJ}$23rOBRM`#ilkbYt7E08b?^h4F=#Wj5Ya@PbNZMPhL2GkwLQc4P@v$jR=a z+IQhm-4aLF>%7JSw}LsuVBNn>jWgdn>Q-#l zMkf5=WY6jO^8noqfrB^C7%n;R6hFGUbalP)PZCxEl+TQA1f`m$D}AZpWY#uZAFkeAA_;MpOr z2H*TpFI}(6BV=OtnpuYl?T|pgjR%(m3loY8>W`Zgnv{lRioyc{`5#+WV0Sl0 za|zWzO4eN)Bfh=z4M(OmT*aYhzHLNuy;S7@SuOwyK-<3lD~THT+vfr$jYsLKM40O0 zo9_<}t&qS;YU}4P5)Z-N*r{+*-AC_~|1#}!{`R?VOk7)9oON?3HTc0DZ*BQ8%cWC+P>L^BZf65WR&E&Z4OQ>7q1<+iQ&$ zN)8fXL*+>3obXWAf3+xSrkE~~R%h~Uhd_*%9&_tkE-uA4|M|Bt7jgrR@4N7A2d`ep zTFJp`J)om%-bo7_z)g9;2~WEsfx};UHRo^tR`s{M=JZ0Ax+0T*a8e9e8-A5Klmyn~ zn*5(`l={w^48hktFd|@)dV9IJlAJk#m$O3!M}YHj-MX+-f(U-u4dMLlU$`+m5X=#@ zVfat+8XODRSj!R*{O|sc$ROI6{W9|L4-ygV7_4^n&R*RI>l*uy*JZS8+o$2b;L4c` zjiU2Vjq%xy zbnNK`7zDk@-d_4%{BQ3+0=AY4k2hFNY;c{F_!Pa~Sca^z1{-_q(y`*kiO`E64xKan zvQsquFv?NjeyyFxZTOqd0X9G{cwxBpeEK2p_vx_p8yizB<0{q z!%q>Bh-Oi+dg57+M1E`hW}>F)r-^{R@oDO2TY%yB+=KPw&gj)uR08F)Xu14WaDtqD zGyEduQRP>)uHW1G!icj@1;Ki{X67fY4u}9|^^@k6ZveSA8ZD&7OF0VIlWi_=P(NvT zphYQsOUCWUVuC=Q!+ul2%GKsLX38%bl5tFSBc>BbSfSL?NIr)4_fL1g4=1|#-?)G? zL>`S?FPG-=%tak0%hPDD_|{qJF3wkhKy7o7y8Y%EcD`iTOyd;Vo}>KjR)6z&nUdn< z8T+gzOP2dS`u^uowSR7?nq9xy0Ku3=V#1)2U@pR_ z!n`==K<+dkEE|yuufe4`le6sk<^2v6NfT~y#Nv@g_NEK@{2@yy$Y0~1e6yd&CYTH2%M5H)bO8AYKCgoQ60sG|VsA=cP9(hEy_LhwWM~7TIWzC*uK18cO z0QB8w)f?s2_NMJfJIx9R6ytTI$D8iZ{`?oj+eL6_fhC;uNQFLih7QK8bJ>x0;FceN zTS~!;t)%oiANS_C*Z0kapr;J?JIA1O6E;%7_ohR9?IK2XPR4u+<00EsCrv{S>(*Nf z+q^X@>em)On0UrTIkJ9TcgyNUdvS~)etp?`dDiZ}=7D-TnOK`LkWGJj;Qwb|{+5Jq z8h~EQ~Uy7oS*xj(SkIY5809#g6!T$^lz@qluU)*n?1iNe`K>gD zeICFb$woV;ty5K~!f@XiG4#3{dMj8Nqnl9K_RR!Yhb=(|PE5Jn;&Wg{bJ3|?isy2f zXZ8F$eT_6BboVMYY3s>^MmBW4@~hH&#})1pmx|WlO9MZ{$6kK;9PJcaH}C7Qdm^8P znZ)#ytH8J4o>tz`_!|$&?U@g!X+BEB+J?XR8)(e`mHmq~1%j_W|R-RK#bE?TfsVvpUG-mGfyTv4t-1agu>RozBjihqO zk6URgZjL=U{u8FSLerrn$lopN<(R1GL8R!*x4W>iqFbMkeJe{0B7cO!Dt~?;Dn>$+ z6k{Ub+G15-;}?>?nlpS9ZbTbf$CRSylbZ`o(v`2KFHeF8?b}(a@Tf!ddS~m(_jU3W z4)z3W)&O}xquAeJDau9je*M!9Agfy+9Plgmxj>fdGWYor&U$3gQN6y}y2u7|5gvsU z!daxTv?<5x&2mdReu@%~xe*kdQCjv0zc9TzJ=b`MHT`t-n~WN_ZozngRn@7h7^8PY zM1L=Hwi+Kt=&VLm$~LL{DWV23d|z&nV_5yg-lD&VOMvBJFVaDNyA}MIRx?@2P{LM? z?K7`+t*^fCSWP1XN3~1(SRj(hUgkTzecv3DWq{*L%l{USwKC_U7++qW=Qqb$^do#K z1^WCIf1TNHsaK=qAECdWVR@-P{|AsJyPf=1T_VDz_^~dLg1?=?>YPtHBxMVD_gZhnMkZU$w%4K1sz#E{}>$U zJV&cVc-xxNl&E-t3cO{AelV8rot7>|r&RDVEAWNEje9dpzX?qnvK*A2rvNo+z*e)4 zjd>#a3J=)Baup!I)0xv=W7jrVtpaCq99PHf_)P?#DQe99;3pS@? z=5zka;naC=BXMEP5$uC#Mv-0sz)dI)ZW`flWLutkk#GxU?sFx4WvEU$#37Uqhmp^J zbLfe6T#fX`RaMA~#CCF$d^S{Sp@c2Z^B_^O+&1!wcB386Z`@KthFQ(v~fYQbBT@pj)#I(v=T+jb*_en!XyJhYFT zi6?aElQ7;4WkZU%y~WDWPF(keZlQ4}uUE6Wg)!Z5?dLPAdP4bikz1PW8pX>k3K35Z ziOMyhS2ye@DT5XG%+R>%hC%KxeU#??~-y6Nh50F;tYIB@`va217!abA##|k3nHLt+EqgfzqtFuy)|?JsDr6$C-^t)1f>f znXiI6(*tjKKW|IE;63%MR4;3Ns0!Pnkj77yhRQAOGr1|O@F>^Cgjo=JUIwQ!M~L2{hUqCA`nqH0^9FzbGk=z09o z!%%_|LsMuT&RrHuf6$d^-ZpU=&18PnMb?GbZELk{Z%zQRlc%HRi9l~n_+vTh7&(We zJ}+$@@^qZ-;wgoR2Y819Zn=HD7;~%f@(+GH7sX=vy}Nh1oE*?>iXH+$O>+mR6~!|< zvY@Myd}gNIgEUH5xQX*Xw$$p-bVmzH_F3X{I7W6XD@0VV}8G1%`0;iiCxa|@ks z#zqtvF*}SsjOY(D8`&OgAM%u5guD6WaQEM>y615&HTYHx%y-6liGJBJcRg9U#}?b8 zI7HYO;&F7(_P>eZc35frJ1gzMHwVIZP}Os&yzjF2AEH?!&bgTE26R3|hvM&A^=x_V zOn$USY&?vft{l{;Iw4}-VY=Vm?b)hGQ;23veL`P%Lml^caM9fuBwDDDfa68<5?x@x8WX}O*bDGJbW(b z{zQ4hXyFxm`1H|@6ai~nHW*lFEp|PBeGTKb;x>2!FM!@$U*x8m#jgGu?sKk}y5IK8 ziYiD9DF11c8Ih4~MWtAsX%8e&vjLg(%f&B{$6yR8cqx%Pqv~qJ87e4Za|1RsIEO=( zb2u8zhLERO z<14h@YZt4K*ci9iQQ~DEFZe`5=X+|wUrMK!LLKvI;CchQD5kN$wvd9>BRp*-#9;2N zJ-dxn$1Sgyl?sOK$>7`%;!scoig#0;xvpS@KE*ob s-Y6VsX&M!Q)A4lZ}S85iI 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 PFxW9G`yVNXPha|f$}|_T diff --git a/requirements/images/specifications/lifecycle/lifecycle.png b/requirements/images/specifications/lifecycle/lifecycle.png deleted file mode 100644 index 1cae28a0f62dbccd909c7a35c798f5c2f1ea8150..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114766 zcmeFZc|4ST-#>gH>7-IwD@#czvcws(3`J5Rm8Gmvq(Uf6#>|wn#S*0yS(7M|v{-kJ>pJH6ewO!V|9lTu_)$xLde$eC?f(XqZ$jbOtE8)rgk-#SiLPpF@j86nR|LS(S?dWw?_IL3}q!IOy2w`j6`=!T$kT` z_pbYCe|psZRkseGy{5>00{Me|NUPC{x1Ume<0BCZXm}+Ra+NNx-kFmqFc{R1%)|H`ql2~ zJyE-5UmBh|`Qf#n&!*VbE4HWs$ z7ilUA^q}tkC1nsyGu(ZTM3dIv_=@qs-_pd|K&@TPhP2Q;ha_dZ-sAYv-Yb!q0_c0b z`;XtBFY)R4xj4v`_lTZDD(G;ehyLMfi$=)B*{S3=R_`yL4w Se1G)X-Ca>1&y^r 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�hIX&Pkf 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 A8vp The platform **MAY** save the app's memory space at this point, so that it -> may be woken later. +> may be restored later. > > Finally, the app and its container **MAY** be removed from memory and have > other resources released as well. @@ -275,10 +275,10 @@ The `state` API must have one of the following values: - `Running` - `Suspended` - `Active` -- `Hibernating` +- `Hibernated` Note that the `onStateChanged` notification **MUST** never be dispatched for -the `Hibernating` state since it would not be received anyway. +the `Hibernated` state since it would not be received anyway. ## 5. Lifecycle State Transitions @@ -494,7 +494,7 @@ Apps **MAY** request to be deactivated, via the `Lifecycle.close()` API method. To deactivate an app, platforms **MUST** use the following process. -If an app is already in the `RUNNING`, `SUSPENDED`, or `HIBERNATING` state, then +If an app is already in the `RUNNING`, `SUSPENDED`, or `HIBERNATED` state, then it is already deactivated and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to deactivate such an app and the remainder of this section does not apply. @@ -552,10 +552,10 @@ To suspend an app, platforms **MUST** use the following process. If an app is in the `ACTIVE` state then it cannot yet be suspended, and **MUST** be deactivated first. -If an app is in the `HIBERNATING` state then it cannot be suspended and there is +If an app is in the `HIBERNATED` state then it cannot be suspended and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to suspend an app that is -already in the `HIBERNATING` state and the remainder of this section does not +already in the `HIBERNATED` state and the remainder of this section does not apply. If an app is already in the `SUSPENDED` state, then it is already suspended and @@ -653,47 +653,47 @@ Hibernation apps **MUST** provide the **MUST** call the app's implementation of `Hibernation.hibernate()`: Once the platform receives a success, then the app may be moved -to the `HIBERNATING` state. +to the `HIBERNATED` state. If the app times out or throws an error, then the app **MUST** be terminated. During the `hibernate()` transition, apps **SHOULD** note the clock time in order -to determine the duration of hibernation when the app is woken. +to determine the duration of hibernation when the app is restored. composition and other necessary resources. -### 5.7. Waking an app from hibernation -Waking an app from hibernation allows the platform to copy the apps memory stack back +### 5.7. Restoring an app from hibernation +Restoring an app from hibernation allows the platform to copy the apps memory stack back from storage and relaunch the app in the original state. Firebolt apps that have permission to use the `xrn:firebolt:capability:lifecycle:hibernation` capability **MUST** implement `Hibernation.reconstruct()`. -To wake an app from hibernation, platforms **MUST** use the following process. +To restore an app from hibernation, platforms **MUST** use the following process. -If an app is not in the `HIBERNATING` state, then it cannot be woken from hibernation and there +If an app is not in the `HIBERNATED` state, then it cannot be restored from hibernation and there is no need to do anything else. The platform **MUST NOT** dispatch any -*additional* lifecycle notifications when attempting to resume an app that is -not in the `HIBERNATING` state and the remainder of this section does not apply. +*additional* lifecycle notifications when attempting to restore an app that is +not in the `HIBERNATED` state and the remainder of this section does not apply. -At this point, the app **MUST** be in the `HIBERNATING` state. +At this point, the app **MUST** be in the `HIBERNATED` state. Next, the platform **MUST** copy the apps CPU and memory state back from persistant storage. How platforms implement this is out of scope for this document. -Hibernation apps **MUST** provide the +Hibernated apps **MUST** provide the `xrn:firebolt:capability:lifecycle:hibernation` capability, so the platform -**MUST** call the app's implementation of `Hibernation.reconstruct()`: +**MUST** call the app's implementation of `Hibernation.restore()`. Once the platform receives a success, then the app may be moved -to the `SUSPENDED` state. +to the `RUNNING` state. Note the the app does not enter the `SUSPENDED` state. If the app times out or throws an error, then the app **MUST** be terminated. -During the `hibernate()` transition, apps **SHOULD** check how long it had been in -the `HIBERNATING` state to determine if any processes need to be reset, reauthenticated, etc. +During the `restore()` transition, apps **SHOULD** check how long it had been in +the `HIBERNATED` state to determine if any processes need to be reset, reauthenticated, etc. ### 5.8. Destroying an app @@ -804,7 +804,7 @@ interface Activatable { ### 7.3. Hibernation Interface The `Hibernation` interface is implemented by Apps that are able to handle being -put into hibernation and then woken at a later point in time. +put into hibernation and then restored at a later point in time. These types of apps require additional resource management to reestablish network connections and may also require additional thread safety checks. @@ -817,8 +817,8 @@ interface Hibernation { ``` | Method | Description | |-----------|-------------------------------------------------------------------------------------------------------------------------------------------------------| -| `hibernate()` | Called when the platform is ready to move the app into the `HIBERNATING` state where it will no longer have access to the CPU. | -| `reconstruct()` | Called when the platform is ready to move the app out of the `HIBERNATING` state and into `SUSPENDED`. Network connections should be reestablished here. | +| `hibernate()` | Called when the platform is ready to move the app into the `HIBERNATED` state where it will no longer have access to the CPU. | +| `reconstruct()` | Called when the platform is ready to move the app out of the `HIBERNATED` state and into `RUNNING`. Network connections should be reestablished here. | ### 7.4. Example App @@ -923,5 +923,5 @@ The LifecyclePolicy fields are: | appDeactivateTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `deactivate()`. | | appSuspendTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `suspend()`. | | appResumeTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `resume()`. | -| appSleepTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `hibernate()`. | -| appWakeTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `reconstruct()`. | +| appHibernateTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `hibernate()`. | +| appRestoreTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `reconstruct()`. | From 7d6d1fbf827b790d0404c0534e30af02e8190d7e Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Wed, 4 Dec 2024 11:05:54 -0500 Subject: [PATCH 43/43] fix: Updates post-working group meeting --- .../lifecycle/lifecycle-states.png | Bin 77188 -> 38525 bytes .../lifecycle/lifecycle-transitions.png | Bin 133356 -> 141426 bytes .../specifications/lifecycle/index.md | 14 +++++++------- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/requirements/images/specifications/lifecycle/lifecycle-states.png b/requirements/images/specifications/lifecycle/lifecycle-states.png index 8da1ff2139527322b594582be4c5c35d89f183c8..4a06d3314694a98c2f096d9502a4917bf7d02460 100644 GIT binary patch literal 38525 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 literal 133356 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 - function reconstruct(): Promise; + function restore(): Promise; } ``` | Method | Description | |-----------|-------------------------------------------------------------------------------------------------------------------------------------------------------| | `hibernate()` | Called when the platform is ready to move the app into the `HIBERNATED` state where it will no longer have access to the CPU. | -| `reconstruct()` | Called when the platform is ready to move the app out of the `HIBERNATED` state and into `RUNNING`. Network connections should be reestablished here. | +| `restore()` | Called when the platform is ready to move the app out of the `HIBERNATED` state and into `RUNNING`. Network connections should be reestablished here. | ### 7.4. Example App @@ -924,4 +924,4 @@ The LifecyclePolicy fields are: | appSuspendTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `suspend()`. | | appResumeTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `resume()`. | | appHibernateTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `hibernate()`. | -| appRestoreTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `reconstruct()`. | +| appRestoreTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating an app that did finish `restore()`. |

s_l?3L7 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 z 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 T6AaGVz~AKyO6QZ#8Q%SWld~fn diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index 5d2791e0b..eba329e96 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -1,7 +1,35 @@ # App Presentation need to write this up... -## 1. Display +Document Status: Working Draft + +See [Firebolt Requirements Governance](../../governance.md) for more info. + +| Contributor | Organization | +| -------------- | -------------- | +| Andrew Bennet | Sky | +| Cody Bonney | Charter | +| Bart Catrysse | Liberty | +| Tim Dibben | Sky | +| Jeremy LaCivita | Comcast | +| Ramprasad Lakshminarayana | Sky | +| Kevin Pearson | Comcast | +| Peter Yu | Comcast | + + +## 1. Overview +TBD... + +- [1. Overview](#1-overview) +- [2. Display](#2-display) + - [2.1. Display vs Lifecycle](#21-display-vs-lifecycle) +- [3. Overlay](#3-overlay) +- [4. Off-screen Video](#4-off-screen-video) +- [5. Platform-provided Loading Screen](#5-platform-provided-loading-screen) +- [6. App-provided Loading Screen](#6-app-provided-loading-screen) + + +## 2. Display The `Presentation` module **MUST** have a `display` string property that returns one of the following values: | Value | Description | @@ -12,7 +40,7 @@ The `Presentation` module **MUST** have a `display` string property that returns | `THUMBNAIL` | The app is displayed at a size smaller than 25% of the width or height of the entire screen | | `LOADING` | The platform is displaying a loading screen while the app loads | -### 1.1 Display vs Lifecycle +### 2.1. Display vs Lifecycle Each Lifecycle state only supports certain display states: | Lifecycle | Supported Displays | @@ -24,7 +52,7 @@ Each Lifecycle state only supports certain display states: See [Off-screen Video](#2-offscreen-video) for an exception to this. -## 2. Overlay +## 3. Overlay The `Presentation` module **MUST** have an `overlay` string property that returns one of the following values: | Value | Description | @@ -34,12 +62,12 @@ The `Presentation` module **MUST** have an `overlay` string property that return | `SIDEBAR` | There is a vertical sidebar covering less than 33% of the app on one side. | | `BLOCKED` | There is a significantly sized UX covering a majority of the app. | -## 2. Off-screen Video +## 4. Off-screen Video If an app has the `xrn:firebolt:capability:presentation:offscreen-audio` or `-video` capability, then it can keep playing video/audio when the app is off-screen. When an app has this capability, it **MAY** be put into the `OFFSCREEN` display state while in the `BACKGROUND` Lifecycle state. -## 3. Platform-provided Loading Screen +## 5. Platform-provided Loading Screen Most apps will leverage a platform-provided loading screen. If an app provides the `xrn:firebolt:capability:presentation:loading-screen` @@ -60,7 +88,7 @@ the loading screen is displayed. See [Lifecycle](./index.md) for more info on launching. -## 4. App-provided Loading Screen +## 6. App-provided Loading Screen If an app provides the `xrn:firebolt:capability:presentation:loading-screen` capability, then the platform **MAY** invoke this capability in some situations. @@ -69,40 +97,11 @@ provide the `xrn:firebolt:capability:lifecycle:management` capability. If the ap does not provide this capability, then app-provided loading screens **MUST NOT** but invoked for the app. -When cold launching apps with this capability: +Apps that provide the loading screen capability **MUST** be made visible at +the very beginning of the `LifecycleManagement.activate()` transition, rather +than at the end. -> The platform **MUST** display the platform-provided loading screen when -> the app starts loading. -> -> Then the app's loading screen **MUST** be requested immediately after the app -> is loaded. See [Displaying the app-provided loading screen](#41-displaying-the-app-provided-loading-screen), -> below. - -When hot launching apps with this capability: - -> The platform **MUST** display the platform-provided loading screen when -> the app launch is requested. -> -> Then the app's loading screen **MUST** be requested immediately. See -> [Displaying the app-provided loading screen](#41-displaying-the-app-provided-loading-screen), -> below. +The presentation state of the app **MUST** be `FULLSCREEN` or `SCALED` during +the `activate()` transition. See [Lifecycle](./index.md) for more info on loading and activating apps. - -### 4.1. Displaying the app provided loading screen. -To display the loading screen: - -The platform **MUST** dispatch the `Presentation.onRequestLoadingScreen` -notification to the app, and wait for `loadingScreenTimeout` milliseconds -for either a `Presentation.loadingScreenResult` or -`Lifecycle.loadingScreenError` call in response. - -**NOTE**: this requires a minor change to our code-generate to customize -a provider method name, e.g. x-method-name: "display". - -Once the platform receives the `loadingScreenResult` call, then the app -**MUST** be made visible in whatever presentation mode the app would -have been launched into (typically `FULLSCREEN`). - -If the app times out or makes an `loadingScreenError` call, then the app -will not be made visible until activation is complete. From 2049199fd050f251c5ef475dd00912e23d53067f Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Mon, 2 Oct 2023 13:41:09 -0400 Subject: [PATCH 10/43] fix: Added code example --- .../specifications/lifecycle/index.md | 43 +++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index ed7f85a11..9a1cecdf3 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -71,7 +71,6 @@ off. - [4. Core SDK APIs](#4-core-sdk-apis) - [4.1. LifecycleManagement Interface](#41-lifecyclemanagement-interface) - [4.2. Ready](#42-ready) - - [4.3. Loading](#43-loading) - [4.4. Close](#44-close) - [4.5. Background](#45-background) - [4.6. Finished](#46-finished) @@ -107,7 +106,6 @@ For information on *influencing* state transitions, see [State Transitions](#3-l | Background | ✔ | ✔ | ✔ | ✔ | | App has full access to CPU and RAM, but not RCU input focus. | | Suspended | | | | | | App state is persisted to storage and removed from CPU & RAM. | - ### 2.1. Started This state allows an app to be running, but not in one of the two active @@ -609,7 +607,7 @@ The `LifeCycleManagement` interface is implemented by Apps to provide resource m ```typescript interface LifecycleManagement { - function initialize(): Promise; + function create(params: LaunchParameters): Promise; function activate(intent: NavigationIntent): Promise; function deactivate(): Promise; function suspend(): Promise; @@ -617,6 +615,43 @@ interface LifecycleManagement { } ``` +Example: + +```typescript +import { Lifecycle } from '@firebolt-js/sdk' + +class ExampleLifecycleManager implements Lifecycle.LifecycleManagement { + function create(params: LaunchParameters): Promise { + const limitTracking:boolean = params.limitAdTracking + } + + function activate(intent: NavigationIntent): Promise { + if (intent.action === "playback") { + console.log("Deep link to playback of " + intent.data.entityId) + } + } + + function deactivate(): Promise { + // free up MSE + video.src = "" + video.load() + } + + function suspend(): Promise { + // unload all images + document.querySelectorAll("img").forEach((img:HTMLElement) => { + img.parentElement.removeChild(img) + }) + } + + function resume(): Promise { + // reload images + } +} + + +``` + See the [Firebolt API Documentation](https://developer.comcast.com/firebolt/core/sdk/latest/api/) for details around syntax, etc. @@ -750,6 +785,8 @@ app to unsuspend. ## 6. Lifecycle Configuration +TODO: do we want these to be per spec, per distributor, or per app? + In order to enable Firebolt Certification of a device's Lifecycle Management features, the device **MUST** support the following configuration options, so that the Firebolt Certification Test Suite From 71ce04ba511e4349458bff359f32b3d674169a5a Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Mon, 2 Oct 2023 13:41:33 -0400 Subject: [PATCH 11/43] fix: Typos --- requirements/specifications/lifecycle/index.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 9a1cecdf3..78216a0de 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -648,8 +648,6 @@ class ExampleLifecycleManager implements Lifecycle.LifecycleManagement { // reload images } } - - ``` See the [Firebolt API @@ -670,8 +668,6 @@ the platform. This method requires a reason parameter, which tells the platform why the app is requesting to be closed: -Lifecycle.appReadyTimeout - | Reason | Description | |------------------------------------|------------------------------------| | CloseReason.REMOTE_BUTTON | The user pressed the back or last button on the RCU and the App has determined it is at the top of it's navigation stack and should go back to the platform home screen. | From 64411c0e1a4758660b5d8cd0d49dfe15eb44f44d Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Mon, 9 Oct 2023 10:14:40 -0400 Subject: [PATCH 12/43] chore: Added todos from last meeting --- requirements/specifications/lifecycle/index.md | 10 ++++++++++ requirements/specifications/lifecycle/presentation.md | 4 ++++ 2 files changed, 14 insertions(+) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 78216a0de..85379a3ee 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -226,6 +226,8 @@ Apps may optionally implement the Lifecycle.ResourceDeallocator API for more control over app suspension. ## 3. Lifecycle State Transitions +**TODO**: write words about only one transition will be called on an app at a time... + There are several state transitions where the app and the platform need to interact to ensure the transition goes smoothly. @@ -319,11 +321,17 @@ Launching an app transitions it to one of the *active* states (foreground or background) so that it becomes part of the user's experience. +**TODO**: is graphics available at beginning of activate? +**TODO**: Outline when RAM/CPU/GRAPHICS, etc. becaome available for each transition, e.g. start vs end +**TODO**: rename "suspended" to "Low Resource". + The platform may launch apps for any number of reasons that are out of scope for this document. To launch an app, platforms **MUST** use the following process. +**TODO**: Write words about how you can't activate two apps into "foreground" at the same time. + If the app is already in the `FOREGROUND` state, then it is already launched and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting @@ -648,6 +656,8 @@ class ExampleLifecycleManager implements Lifecycle.LifecycleManagement { // reload images } } + +Lifecycle.provide("xrn:firebolt:capability:lifecycle:management", new ExampleLifecycleManager()) ``` See the [Firebolt API diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index eba329e96..22f7994dd 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -92,6 +92,10 @@ See [Lifecycle](./index.md) for more info on launching. If an app provides the `xrn:firebolt:capability:presentation:loading-screen` capability, then the platform **MAY** invoke this capability in some situations. + +**TODO**: Remove metrics collection from loading screen / usability. +**TODO**: talk to Ben Grey about detecting loading screen animation automatically... + In order for an app and use an app-provided loading screen, the app **MUST** provide the `xrn:firebolt:capability:lifecycle:management` capability. If the app does not provide this capability, then app-provided loading screens **MUST NOT** From de7fc8270e74b567d21757b07eef4d7cdf89b8d1 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Wed, 11 Oct 2023 12:44:13 -0400 Subject: [PATCH 13/43] fix: Latest working group changes --- .../lifecycle/lifecycle-states.png | Bin 125761 -> 100537 bytes .../lifecycle/lifecycle-transitions.png | Bin 224230 -> 225638 bytes .../specifications/lifecycle/index.md | 447 +++++++----------- .../specifications/lifecycle/presentation.md | 45 +- 4 files changed, 197 insertions(+), 295 deletions(-) diff --git a/requirements/images/specifications/lifecycle/lifecycle-states.png b/requirements/images/specifications/lifecycle/lifecycle-states.png index b3976af14452e06c6b11fb8fdbd08fff38bd576d..707e6263a9b78cc55ad7a950a7b9c29f7806742a 100644 GIT binary patch literal 100537 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

s_l?3L7 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 z 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 T6AaGVz~AKyO6QZ#8Q%SWld~fn literal 0 HcmV?d00001 diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index cbb0322e5..48a5e1ec4 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -1,17 +1,21 @@ # App Lifecycle Management -Document Status: Proposed Specification +Document Status: Working Draft See [Firebolt Requirements Governance](../../governance.md) for more info. | Contributor | Organization | | -------------- | -------------- | | Andrew Bennet | Sky | +| Cody Bonney | Charter | +| Bart Catrysse | Liberty | | Tim Dibben | Sky | | Jeremy LaCivita | Comcast | +| Ramprasad Lakshminarayana | Sky | | Kevin Pearson | Comcast | | Peter Yu | Comcast | + ## 1. Overview This document describes the requirements that Firebolt platforms must @@ -24,9 +28,10 @@ app-manifest and index.html, and loading them into a container capable of running the app, e.g. a web browser. *Launching* an app refers to the process of getting an app into a state -where it is some part of the user experience (e.g. visible, audible, or -responding to input). This may include *loading* the app first, if -needed. +where it is presented as a primary part of the user experience (e.g. +visible, audible, or responding to input). This may include *loading* +the app first, if needed. For details on presentation, see [App +Presentation](./presentation.md). *Closing* an app refers to the process of getting an app out of a state where it is the primary user experience (e.g not visible, not audible, @@ -39,31 +44,39 @@ needed clean up, and then *terminating* it. *Terminating* an app refers to shutting down the app's container and reclaiming any memory, CPU, etc. that it was consuming. +*Suspending* an app refers to copying the app's memory stack out of +RAM and terminated it's CPU process so that it stops consuming +resources, but may be revived later. + +*Resuming* an app refers to copying a suspended app back into the +memory space of a compatible process so that it resumes where it left +off. + - [1. Overview](#1-overview) - [2. Lifecycle States](#2-lifecycle-states) - - [2.1. Initializing](#21-initializing) - - [2.2. Inactive](#22-inactive) - - [2.3. Foreground](#23-foreground) - - [2.4. Background](#24-background) - - [2.5. Unloading](#25-unloading) - - [2.6. Suspended](#26-suspended) + - [2.1. Started](#21-started) + - [2.2. Foreground](#22-foreground) + - [2.3. Background](#23-background) + - [2.4. Suspended](#24-suspended) - [3. Lifecycle State Transitions](#3-lifecycle-state-transitions) - [3.1. Loading an app](#31-loading-an-app) - - [3.2. Launching an app](#32-launching-an-app) - - [3.3. Closing an app](#33-closing-an-app) - - [3.4. Backgrounding an app](#34-backgrounding-an-app) - - [3.5. Suspending an app](#35-suspending-an-app) - - [3.6. Unsuspending an app](#36-unsuspending-an-app) - - [3.7. Unloading an app](#37-unloading-an-app) - - [3.8. Terminating an app](#38-terminating-an-app) + - [3.2. Initializing an app](#32-initializing-an-app) + - [3.3. Activating an app](#33-activating-an-app) + - [3.4. Deactivating an app](#34-deactivating-an-app) + - [3.5. Backgrounding an app](#35-backgrounding-an-app) + - [3.6. Suspending an app](#36-suspending-an-app) + - [3.7. Resuming an app](#37-resuming-an-app) + - [3.8. Unloading an app](#38-unloading-an-app) + - [3.9. Terminating an app](#39-terminating-an-app) - [4. Core SDK APIs](#4-core-sdk-apis) - - [4.1. Ready](#41-ready) - - [4.2. Loading](#42-loading) - - [4.3. Close](#43-close) - - [4.4. Background](#44-background) - - [4.5. Finished](#45-finished) - - [4.6. State](#46-state) - - [4.7. ResourceDeallocator Interface](#47-resourcedeallocator-interface) + - [4.1. LifecycleManagement Interface](#41-lifecyclemanagement-interface) + - [4.2. Ready](#42-ready) + - [4.3. Loading](#43-loading) + - [4.4. Close](#44-close) + - [4.5. Background](#45-background) + - [4.6. Finished](#46-finished) + - [4.7. State](#47-state) + - [4.8. ResourceDeallocator Interface](#48-resourcedeallocator-interface) - [5. Manage SDK APIs](#5-manage-sdk-apis) - [5.1. Terminate](#51-terminate) - [5.2. Suspend](#52-suspend) @@ -72,74 +85,50 @@ reclaiming any memory, CPU, etc. that it was consuming. ## 2. Lifecycle States - Firebolt platforms **MUST** support running one or more apps concurrently. The platform **MUST** manage transition of apps from state to state. -A Firebolt app, once running, **MAY** be in one of several states and +A Firebolt app, once running, **MUST** be in one of several states and **MUST NOT** be in more than one state at a time. -| | CPU | Active | Visible | RCU | AV | Description | -|-----------|-------|-------|-------|-------|-------|---------------------------| -| Initializing | ✔ | | | | | App is preparing to be minimally usable. | -| Inactive | ✔ | | | | | App is ready for use, but not part of the user experience. | -| Foreground | ✔ | ✔ | ✔ | ✔ | ✔ | App is the primary user experience. | -| Background | ✔ | ✔ | ✔\* | ✔\* | ✔ | App is a secondary user experience, e.g. covered by a system modal. | -| Unloading | ✔ | | | | | App will be unloaded soon. | -| Suspended | | | | | | App state is being persisted to storage and will be stop running immediately. | +![Lifecycle States](../../images/specifications/lifecycle/lifecycle-states.png) -*\*Background apps may or may not be visible and/or receive input* -### 2.1. Initializing +| | CPU | RAM | GFX | A/V | RCU | Description | +|------------|-----|-----|-----|-----|-----|--------------------------------------------------------------------------------| +| Started | ✔ | ✔ | | | | App is loaded, initialized, and ready for use but consuming limited resources. | +| Foreground | ✔ | ✔ | ✔ | ✔ | ✔ | App has full access to CPU, RAM, and RCU input focus. | +| Background | ✔ | ✔ | ✔ | ✔ | | App has full access to CPU and RAM, but not RCU input focus. | +| Suspended | | | | | | App state is persisted to storage and removed from CPU & RAM. | -This state allows apps to do whatever initialization is required in -order to be a Firebolt compliant app, e.g. register for event listeners, -etc. -When an app is first loaded the platform **MUST** consider it to be in -the initializing state. Apps **MUST** remain in this state until they -register with the platform via Lifecycle.ready(), or -Lifecycle.onInactive(), or are unloaded by the platform. +### 2.1. Started -The platform **MUST NOT** ever put an app back into this state once it -has left unless it has been unloaded and then loaded again. +This state allows an app to be running, but not in one of the two active +states, i.e. `FOREGROUND` and `BACKGROUND`. Started apps can execute code, +but are not [Presented](./presentation.md) to the user, do not receive +any input from RCUs, and cannot use the video decoder or graphics plan. -There is no notification for this state, it just is. +Apps in this state **MUST NOT** be visible. -### 2.2. Inactive +Apps in this state **MUST NOT** receive RCU key presses. -This state allows an app to be running, but not in one of the two active -states, i.e. foreground and background. Inactive apps can execute code, -but are not visible, do not receive any input from RCUs, and cannot use -the video decoder. Apps should free up memory and other resources in -this state. +Apps in this state **MUST NOT** have access to the audio-video decoder. + +Apps in this state **MUST NOT** have access to the graphics plane. + +Apps in this state **SHOULD** use a low profile footprint for memory and other resources +in this state. When an app transitions to this state, the platform **MUST** dispatch -the Lifecycle.onInactive notification with the current state and +the `Lifecycle.onStarted` notification with the current state and previous states. -Apps in this state **MUST** not use the media pipeline and the platform +Apps in this state **MUST NOT** use the media pipeline and the platform **MUST** tear down any Media Pipeline sessions associated with this app. -When an app is initializing, and registers for Lifecycle.onInactive -notifications, the platform **MUST** transition the app to the inactive -state with the previous state set to initializing, since it is now able -to execute any code related to that transition. - -If an app is still initializing, and calls Lifecycle.ready(), the -platform **MUST** transition the app to the inactive state with the -previous state set to initializing. - -When an app is in either *active* state and is *closed* then the -platform **MUST** transition the app to the inactive state with the -previous and current state set correctly. - -When an app is in the suspended state and is then unsuspended, then the -platform **MUST** transition the app to the inactive state with the -previous state set to suspended. - -### 2.3. Foreground +### 2.2. Foreground This state allows an app to be presented as the primary experience to the user. @@ -154,64 +143,38 @@ permissions for. Apps in this state **MUST** have access to the audio-video decoder. +Apps in this state **MUST** have access to the graphics plane. + Apps in this state **SHOULD NOT** have performance negatively impacted by other processes on the device. When an app transitions to this state, the platform **MUST** dispatch -the Lifecycle.onForeground notification with the current state and +the `Lifecycle.onForeground` notification with the current state and previous states. -### 2.4. Background +### 2.3. Background This state allows an app to be present as the secondary experience to the user, e.g. when a system settings UI is overlayed on top of the app. -Different platforms **MAY** support differing numbers of background -apps. See [Background App -Requirements](https://comcastcorp.sharepoint.com/:w:/r/sites/hqppa/Shared%20Documents/Global%20App%20Platform/Firebolt/Requirements/Core/Lifecycle/Background%20App%20Requirements.docx?d=w185d9112bcd44376bb0635dad816919b&csf=1&web=1&e=cjmuSJ) -for more info. - Apps in this state **MUST** either be partially visible **OR** have access to an audio decoder, e.g. an app playing music in the background. Apps in this state **SHOULD NOT** receive most RCU key presses, although platforms **MAY** forward certain keys to the app, e.g. play/pause keys. -Apps in this state **MAY** have access to the audio-video decoder. How -many decoders are available is a decision for each device based on -resources. See [Background App -Requirements](https://comcastcorp.sharepoint.com/:w:/r/sites/hqppa/Shared%20Documents/Global%20App%20Platform/Firebolt/Requirements/Core/Lifecycle/Background%20App%20Requirements.docx?d=w185d9112bcd44376bb0635dad816919b&csf=1&web=1&e=cjmuSJ) -for more info. +Apps in this state **MUST** have access to the audio-video decoder. + +Apps in this state **MUST** have access to the graphics plane. Apps in this state **SHOULD NOT** have performance negatively impacted by other processes on the device. When an app transitions to this state, the platform **MUST** dispatch -the Lifecycle.onBackground notification with the current state and +the `Lifecycle.onBackground` notification with the current state and previous states. -If an app is in the inactive state and successfully calls -Lifecycle.loading(), the platform **MAY** transition the app to the -background state with the previous state set to inactive so that the app -may present a custom loading screen. See *Loading an App* for more -details. - -### 2.5. Unloading - -This state allows apps to do whatever cleanup is required in order to be -a Firebolt compliant app, e.g. unregister for event listeners, clean up -timers, post any final business analytics, etc. - -When an app is about to be unloaded the platform **MUST** transition it -to this state. Apps **MUST** remain in this state until they notify the -platform via Lifecycle.finished(), or are unloaded by the platform after -appFinishedTimeout milliseconds have passed. - -The platform **MUST NOT** ever put an app into any other state once it -is in the unloading state unless it has been unloaded and then loaded -again. - -### 2.6. Suspended +### 2.4. Suspended This state allows an app to be copied from memory to local storage and then terminated to save resources. Subsequently, the app may be copied @@ -230,7 +193,7 @@ non-compliant version of the app suspending feature. *If* a platform supports suspending apps, then the following requirements **MUST** be fulfilled. -Apps **MUST** only enter this state from the inactive state. +Apps **MUST** only enter this state from the started state. *Immediately before* an app transitions to this state, the platform **MUST** dispatch the Lifecycle.onSuspended notification with the @@ -248,21 +211,14 @@ Apps may optionally implement the Lifecycle.ResourceDeallocator API for more control over app suspension. ## 3. Lifecycle State Transitions +There are several state transitions where the app and the platform need +to interact to ensure the transition goes smoothly. -Firebolt platforms **MUST** support the app lifecycle states and -transitions denoted in blue. - -Platforms **MAY** support the app lifecycle states and transitions -denoted in gray. +By providing an implementation of the +`xrn:firebolt:capability:lifecycle:management` interface, an app can +influence how resources are managed during these state transitions. See [LifecycleManagement Interface](#41-lifecyclemanagement-interface) for more info. -Platforms **MUST NOT** support any other states or transitions not in -this diagram. - -Platforms **MAY** terminate an app and/or it's container process at any -time for operational reasons, e.g. an app becomes non-responsive. This -is left out of the diagram for simplicity. - -![Lifecycle States](../../images/specifications/lifecycle/lifecycle.png) +![Lifecycle States](../../images/specifications/lifecycle/lifecycle-transitions.png) ### 3.1. Loading an app @@ -287,36 +243,46 @@ manifest's releaseStatus is not developer. Next, if the app is an HTML/JavaScript app, then load the app's initial URL (from the app manifest) into the browser. -The Firebolt SDK will enforce that the app is in the initializing state -when the app first loads. - -If the app begins listening for the onInactive event during the -initializing state, then the platform **MUST** transition the app into -the inactive state. - -Next, if the app has permission to use the -xrn:firebolt:capability:lifecycle:loading-screen capability (and the -device supports it) then, if the app calls the Lifecycle.loading() API, -the platform **MUST** transition the app into the background state. This -enables apps to display a custom loading screen on devices that support -it. Supporting this capability is optional. - -The loading() API may only be called during an apps first time in the -inactive state. This API returns an error at all other times. - -Finally, wait for up to appReadyTimeout milliseconds for the app to call -the ready() API. Apps that do not call Lifecycle.ready() within the -timeout **MUST** be terminated. Once the app calls Lifecycle.ready(), -apps that are in the initializing state **MUST** be transitioned to the -inactive state within 500 milliseconds. See Launching an App for more -info. - -The ready() API may only be called during the initializing state, or -during an apps first time in the inactive state, or by an app that is -displaying a custom loading screen after its first cycle from -initializing to inactive to background. - -### 3.2. Launching an app +### 3.2. Initializing an app +Once an app is loaded it **MUST** be initialized immediately. + +If an app provides the `xrn:firebolt:capability:lifecycle:management` +capability, then the platform **MUST** call the app's implementation of +`LifecycleManagement.initialize()`: + +> The platform **MUST** dispatch the `Lifecycle.onRequestInitialize` +> notification to the app, and wait for `appReadyTimeout` milliseconds +> for either a `Lifecycle.ready` or `Lifecycle.initializeError` call in +> response. +> +> **NOTE**: this requires a minor change to our code-generate to customize +> a provider result method name. +> +> Once the platform receives the `initializeResult` call, then the app +> is considered "ready" to be activated and presented to the user. +> +> If the app times out or makes an `initializeError` call, then the app +> **MUST** be terminated. + +If an app does not provide the capability, then the app is doing a +synchronous initialization and needs to let the platform know when it +is complete: + +> The platform **MUST** wait `appReadyTimeout` milliseconds for the app +> to call `Lifecycle.ready()`, at which point the app is considered +> "ready" to be activated and presented to the user. +> +> If the app times out, then the app **MUST** be terminated. + +Once an app is "ready" it **MUST** be transitioned to the `STARTED` +state within 500 milliseconds. + +If an app provides the `xrn:firebolt:capability:lifecycle:management` +capability and calls `Lifecycle.ready` when the platform is not waiting +for the app to finish initializing, then the platform **MUST** return +and error, and terminate the app. + +### 3.3. Activating an app Launching an app transitions it to one of the *active* states (foreground or background) so that it becomes part of the user's @@ -325,89 +291,149 @@ experience. The platform may launch apps for any number of reasons that are out of scope for this document. -One app **MAY** request to launch another app, via the -Discovery.launch() API method, see -[Discovery](https://comcastcorp.sharepoint.com/:w:/r/sites/hqppa/Shared%20Documents/Global%20App%20Platform/Firebolt/Requirements/Core/Discovery/Discovery%20Requirements.docx?d=w81397bb577d149b995636834c4c3a302&csf=1&web=1&e=bdLI4q) -in [Core -Requirements](https://comcastcorp.sharepoint.com/:f:/r/sites/hqppa/Shared%20Documents/Global%20App%20Platform/Firebolt/Requirements/Core/Discovery?csf=1&web=1&e=qtZhFJ). - To launch an app, platforms **MUST** use the following process. -If the app is already in the foreground state, then it is already +If the app is already in the `FOREGROUND` state, then it is already launched and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to launch an app that is already in the foreground state and the -remainder of this section does not need to happen. +remainder of this section does not apply. -If the app is not loaded, then it **MUST** be fully *loaded*, i.e. -Lifecycle.ready() has been called, first. +If the app is not loaded, then the platform **MUST** [load](#31-loading-an-app) it first. -If the app is suspended, then it **MUST** be *unsuspended* first. +If the app is not initialized, the platform **MUST** [initialize](#32-initializing-an-app) it first. -At this point, the app **MUST** be in either the inactive or background -state. +If the app is suspended, then it **MUST** be [resumed](#37-resuming-an-app) first. -Finally, the platform **MUST** transition the app to intended state, -either the foreground or background state (see -'[Foreground](#23-foreground)' and 'Background' above). - -### 3.3. Closing an app +At this point, the app **MUST** be in either the `STARTED` or `BACKGROUND` +state. -Closing an app transitions it to the inactive state, so that it is no +If an app provides the `xrn:firebolt:capability:lifecycle:management` +capability, then the platform **MUST** call the app's implementation of +`LifecycleManagement.activate()`: + +> The platform **MUST** dispatch the `Lifecycle.onRequestActivate` +> notification to the app, and wait for `appActivateTimeout` milliseconds +> for either a `Lifecycle.activateResult` or `Lifecycle.activateError` +> call in response. +> +> The `onRequestActivate` call **MUST** include a `NavigationIntent`. +> +> Once the platform receives the `activateResult` call, then the app +> may be moved to the target state, `FOREGROUND` or `BACKGROUND` +> and presented to the user. +> +> If the app times out or makes an `activateError` call, then the app +> **MUST** be terminated. + +If an app does not provide the capability, then: + +> The platform **MUST** move the app to the target state, `FOREGROUND` +> or `BACKGROUND` and presented to the user. +> +> Then, the platform **MUST** dispatch a `Discovery.onNavigateTo` +> notification to the platform with a `NavigationIntent`. + +### 3.4. Deactivating an app + +Closing an app transitions it to the `STARTED` state, so that it is no longer part of the user's experience. The platform may close apps for any number of reasons that are out of scope for this document. -Apps **MAY** request to be closed, via the Lifecycle.close() API method. +Apps **MAY** request to be closed, via the `Lifecycle.close()` API method. To close an app, platforms **MUST** use the following process. -If an app is already in the inactive state, then it is already closed +If an app is already in the `STARTED` state, then it is already closed and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to -close an app that is already in the inactive state and the remainder of -this section does not need to happen. +close an app that is already in the `STARTED` state and the remainder of +this section does not apply. + +If an app is already performing a `deactivate()` transition, the platform +**MUST** ignore the new attempt to close the app, allow the pending +closure to complete, and the remainder of this section does not apply. + +If an app is already performing an `activate()` transition, the platform +**MUST** wait for the activate call to succeed or fail and then skip the +remaining [activation steps](#33-activating-an-app). + +If an app is currently [initializing](#32-initializing-an-app), the +platform **MUST** wait for initialization to succeed or fail. + +If an app is currently in the `SUSPENDED` state, is [unloading](#38-unloading-an-app), +or is performing a `suspend()` or `resume()` transition, then the app +cannot be closed and the platform **MUST NOT** close it, and the +remainder of this section does not apply. -If the app is not loaded, or is in the unloading, suspended, or -initializing state, then it cannot be closed, and the remainder of this -section does not need to happen. +At this point, the app **MUST** be in one of the active states. -Finally the platform transitions the app to the inactive state. +If an app provides the `xrn:firebolt:capability:lifecycle:management` +capability, then the platform **MUST** call the app's implementation of +`LifecycleManagement.deactivate()`: -### 3.4. Backgrounding an app +> The platform **MUST** dispatch the `Lifecycle.onRequestDeactivate` +> notification to the app, and wait for `appDeactivateTimeout` milliseconds +> for either a `Lifecycle.deactivateResult` or `Lifecycle.deactivateError` +> call in response. +> +> Once the platform receives the `deactivateResult` call, then the app +> may be moved to the `STARTED` state. +> +> If the app times out or makes a `deactivateError` call, then the app +> **MUST** be terminated. -Backgrounding an app transitions it to the background state, so that it -is no longer the user experience. +If an app does not provide the capability, then it will not provide any +resource management: + +> The platform **MUST** move the app to the `STARTED` state. +> +> The platform **SHOULD** prioritize this app for unloading if it is not +> reactivated within `appLegacyUnloadTimeout` milliseconds. + +### 3.5. Backgrounding an app + +Backgrounding an app transitions it to the `BACKGROUND` state, so that it +is no longer the primary user experience. The platform may background apps for any number of reasons that are out of scope for this document. -Apps that are in the foreground state **MAY** request to be -backgrounded, via the Lifecycle.background() API method. See the +Apps that are in the `FOREGROUND` state **MAY** request to be +backgrounded, via the `Lifecycle.background()` API method. See the Background API below. To background an app, platforms **MUST** use the following process. -If an app is already in the background state, then it is already +If an app is already in the `BACKGROUND` state, then it is already backgrounded and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when -attempting to background an app that is already in the background state -and the remainder of this section does not need to happen. +attempting to background an app that is already in the `BACKGROUND` state +and the remainder of this section does not apply. + +If an app is already performing a `activate()` transition, the platform +**MUST** ignore the new attempt to activate the app, allow the pending +activation to complete, and the remainder of this section does not apply. -If the app is not loaded, or is in the unloading, suspended, or -initializing state, then it cannot be backgrounded, and the remainder of -this section does not need to happen. +If an app is currently [initializing](#32-initializing-an-app), the +platform **MUST** wait for initialization to succeed or fail. -At this point, the app **MUST** be in either the foreground or inactive +If an app is currently in the `SUSPENDED` state, is [unloading](#38-unloading-an-app), +or is performing a `suspend()` or `resume()` transition, then the app +cannot be backgrounded and the platform **MUST NOT** try to, and the +remainder of this section does not apply. + +At this point, the app **MUST** be in either the `FOREGROUND` or `STARTED` state. Finally, the platform **MUST** transition the app to the background state (see '[Background](#24-background)' above). -### 3.5. Suspending an app +### 3.6. Suspending an app -Suspending an app transitions it to the suspended state, so that it is +Suspending an app transitions it to the `SUSPENDED` state, so that it is no longer using resources on the device. The platform may suspend apps for any number of reasons that are out of @@ -416,35 +442,40 @@ suspend an app, not the app itself. To suspend an app, platforms **MUST** use the following process. -If an app is already in the suspended state, then it is already +If an app is already in the `SUSPENDED` state, then it is already suspended and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to suspend an app that is already in the suspended state and the -remainder of this section does not need to happen. +remainder of this section does not apply. -If the app is not loaded, or is not in the inactive state, then it +If the app is not loaded, or is not in the `STARTED` state, then it cannot be suspended, and the remainder of this section does not need to happen. -At this point, the app **MUST** be in the inactive state. +At this point, the app **MUST** be in the `STARTED` state. + +If an app provides the `xrn:firebolt:capability:lifecycle:management` +capability, then the platform **MUST** call the app's implementation of +`LifecycleManagement.suspend()`: -Next, if the app has permission to use the -xrn:firebolt:capability:lifecycle:deallocation capability **and** the -app has registered its implementation of the -Lifecycle.ResourceDeallocator interface, then the platform **MUST** call -the apps ResourceDeallocator.suspend method via the onRequestSuspend RPC -call and wait for either the onSuspendResponse or onSuspendError -handshake before proceeding. +> The platform **MUST** dispatch the `Lifecycle.onRequestSuspend` +> notification to the app, and wait for `appSuspendTimeout` milliseconds +> for either a `Lifecycle.suspendResult` or `Lifecycle.suspendError` +> call in response. +> +> Once the platform receives the `suspendResult` call, then the app +> may be moved to the `SUSPENDED` state. +> +> If the app times out or makes a `suspendError` call, then the app +> **MUST** be [unloaded](#38-unloading-an-app). -Finally, if the app does not have a permitted ResourceDeallocator -implementation, or if the app's implementation has responded with a -success handshake, the platform **MUST** transition the app to the -suspended state (see '[Suspended](#26-suspended)' above). +If an app does not provide the capability, then it cannot be suspended +and the platform **MUST NOT** attempt to. -### 3.6. Unsuspending an app +### 3.7. Resuming an app Unsuspending an app loads it's previous state back into memory and -transitions it to the inactive state, so that it may be launched back +transitions it to the started state, so that it may be launched back into its original state. The platform may unsuspend apps for any number of reasons that are out @@ -452,24 +483,36 @@ of scope for this document. To unsuspend an app, platforms **MUST** use the following process. -If an app is not in the suspended state, then it cannot be unsuspended +If an app is not in the `SUSPENDED` state, then it cannot be unsuspended and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to -unsuspend an app that is not in the suspended state and the remainder of -this section does not need to happen. +unsuspend an app that is not in the `SUSPENDED` state and the remainder of +this section does not apply. -At this point, the app **MUST** be in the suspended state. +At this point, the app **MUST** be in the `SUSPENDED` state. Next, the platform **MUST** load the app's saved memory state back into -a browser container. If this fails for any reason then the unsuspend +an appropriate container. If this fails for any reason then the unsuspend operation failed and should error out and the app **MUST** be considered unloaded. Additionally, the app **MUST** be removed from the list of suspended apps, so that an unsuspend operation is not attempted again. -Finally, the platform **MUST** transition the app to the inactive state -(see '[Inactive](#22-inactive)' above). +Suspended apps **MUST** provide the `xrn:firebolt:capability:lifecycle:management` +capability, so the platform **MUST** call the app's implementation of +`LifecycleManagement.resume()`: + +The platform **MUST** dispatch the `Lifecycle.onRequestResume` +notification to the app, and wait for `appResumeTimeout` milliseconds +for either a `Lifecycle.resumeResult` or `Lifecycle.resumeError` +call in response. -### 3.7. Unloading an app +Once the platform receives the `resumeResult` call, then the app +may be moved to the `STARTED` state. + +If the app times out or makes a `resumeError` call, then the app +**MUST** be terminated. + +### 3.8. Unloading an app Unloading an app transitions it out of memory, so that it is no longer using resources on the device. @@ -479,64 +522,86 @@ scope for this document. To unload an app, platforms **MUST** use the following process. -If an app is not in the inactive state, then it cannot be unloaded and +If an app is not in the `STARTED` state, then it cannot be unloaded and there is no need to do anything else. The platform **MUST NOT** dispatch any *additional* lifecycle notifications when attempting to unload an -app that is not in the inactive state and the remainder of this section +app that is not in the `STARTED` state and the remainder of this section does not need to happen. -At this point, the app **MUST** be in the inactive state. +At this point, the app **MUST** be in the `STARTED` state. + +If an app provides the `xrn:firebolt:capability:lifecycle:management` +capability, then the platform **MUST** call the app's implementation of +`LifecycleManagement.unload()`: -Next, if the app has permission to use the -xrn:firebolt:capability:lifecycle:deallocation capability **and** the -app has registered its implementation of the -Lifecycle.ResourceDeallocator interface, then the platform **MUST** call -the apps ResourceDeallocator.unload method via the onRequestUnload RPC -call and wait for either the onUnloadResponse or onUnloadError handshake -before proceeding. The finished API has no effect for apps with a valid -ResourceDeallocator implementation. +> The platform **MUST** dispatch the `Lifecycle.onRequestUnload` +> notification to the app, and wait for `appUnloadTimeout` milliseconds +> for either a `Lifecycle.finished` or `Lifecycle.unloadError` +> call in response. +> +> Once the platform receives the `finished` call, then the platform +> may proceed with app unloading. +> +> If the app times out or makes an `activateError` call, then the app +> **MUST** be terminated. -Finally, if the app does not have a permitted ResourceDeallocator -implementation, or if the app's implementation has responded with a -success handshake,, the platform **MUST** transition the app to the -unloading state (see '[Unloading](#25-unloading)' above). +If an app does not provide the capability, then: -### 3.8. Terminating an app +> The platform **MUST** dispatch the `onUnloading` notification and +> wait `appUnloadTimeout` milliseconds for the app to call `Lifecycle.finished` +> +> When the `finished` call occurs, or the timeout is reached, the platform +> **MUST** unload and terminate the app. + +### 3.9. Terminating an app Terminating an app removes it from memory without dispatching any state changes. -The platform may terminate apps for any number of reasons that are out -of scope for this document, e.g. an app becomes non-responsive. +The platform **SHOULD** terminate apps when one of the transitions outlined +here fails for some reason, or if an app becomes non-responsesive. Terminating an app results in removing it from memory and all resources held by the app and it's container being freed up. Platforms **MAY** terminate an app when needed but **SHOULD NOT** do -this in place of graceful unloading. +this in place of graceful [unloading](#38-unloading-an-app). ## 4. Core SDK APIs The following APIs are exposed by the Firebolt Core SDK. +### 4.1. LifecycleManagement Interface +The `LifeCycleManagement` interface is implemented by Apps to provide resource management. + +```typescript +interface LifecycleManagement { + function initialize(): Promise; + function activate(intent: NavigationIntent): Promise; + function deactivate(): Promise; + function suspend(): Promise; + function resume(): Promise; +} +``` + See the [Firebolt API Documentation](https://developer.comcast.com/firebolt/core/sdk/latest/api/) for details around syntax, etc. -### 4.1. Ready +### 4.2. Ready The Lifecycle.ready() API allows an app to notify the platform that it is initialized and ready to be displayed to the end user. This method **MUST NOT** be called more than once. -### 4.2. Loading +### 4.3. Loading The Lifecycle.loading() API allows an app to notify the platform that it is presenting a custom loading screen and would like to be moved into the background state so the user can see the loading screen. This method **MUST NOT** be called more than once. -### 4.3. Close +### 4.4. Close The Lifecycle.close() API allows an app to request that it be closed by the platform. @@ -553,7 +618,7 @@ Lifecycle.appReadyTimeout | CloseReason.ERROR | The app is experiencing unrecoverable issues and needs to be closed and unloaded. | Platforms generally **SHOULD** respect this call and move the app to the -inactive state, but there may be edge cases where this is not possible, +started state, but there may be edge cases where this is not possible, e.g. the app is considered to be the default experience for the device, and closing it would leave no other UX present. @@ -565,7 +630,7 @@ provided. For example, apps closed due to the RCU are less likely to be unloaded since it may be an accidental RCU press, whereas an explicit user exit is more likely to be intentional. -### 4.4. Background +### 4.5. Background The Lifecycle.background() API allow an app to request that it be moved to the background state. @@ -594,7 +659,7 @@ the device, and hiding it would leave no other UX present. When the request to background an app is not respected, the Lifecycle.background() method **MUST** return an error. -### 4.5. Finished +### 4.6. Finished The Lifecycle.finished() API allows an app to notify the platform that it is done preparing to be unloaded. @@ -609,20 +674,20 @@ This method results in an error if it is called while the app is in any other state than unloading, or called more than once while in that state. -### 4.6. State +### 4.7. State The Lifecycle.state() method provides convenient access to the current state, and is implemented by the Core SDK listening to all state notifications. This method **MUST NOT** be asynchronous. -### 4.7. ResourceDeallocator Interface +### 4.8. ResourceDeallocator Interface An app may provide a ResourceDeallocator implementation in order to support more efficient resource usage in the various lifecycle states. | Method | Return | Description | |----------|--------|------------------------------------------------------| -| inactive() | void | Called when the platform wants to transition the app to the inactive state. The transition will not occur until the method returns, errors, or times out (see appInactiveTimeout, below) | +| started() | void | Called when the platform wants to transition the app to the started state. The transition will not occur until the method returns, errors, or times out (see appStartedTimeout, below) | | supend() | void | Called when the platform wants to transition the app to the suspended state. The transition will not occur until the method returns, errors, or times out (see appSuspendTimeout, below) | Note that these methods are implemented by the App, not the platform. @@ -672,4 +737,4 @@ The LifecyclePolicy fields are: | appReadyTimeout | bigint | Yes | Number of milliseconds the platform should wait before terminating a loaded app that did not call ready(). | | appFinishedTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onUnloading notification before finally unloading an app that did not call finished(). | | appSuspendTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestSuspend notification before finally suspending (or terminating) an app that did not call onSuspendResponse(). | -| appInactiveTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestInactive notification before finally inactivating (or terminating) an app that did not call onInactiveResponse(). | +| appStartedTimeout | bigint | Yes | Number of milliseconds the platform should wait after dispatching the onRequestStarted notification before finally inactivating (or terminating) an app that did not call onStartedResponse(). | diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md new file mode 100644 index 000000000..02dc976f1 --- /dev/null +++ b/requirements/specifications/lifecycle/presentation.md @@ -0,0 +1,21 @@ +# App Presentation +need to write this up... + +## States + +- fullscreen +- obscured +- offscreen +- scaled +- thumbnail +- splash + +## Off-screen Video +If an app has the `xrn:firebolt:capability:offscreen:audio` or `video` capability then it can keep playing video/audio. + +Need a transition interface, e.g. `PresentationManager.hide()` to allow app to tear down video. + +- Presentation. + +## + From 55e6fc383fe42e03980851180fb7654b10fcf0a5 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Fri, 29 Sep 2023 22:21:08 -0400 Subject: [PATCH 04/43] fix: Adding more details --- .../specifications/lifecycle/index.md | 14 ++++ .../specifications/lifecycle/presentation.md | 75 +++++++++++++++++-- 2 files changed, 83 insertions(+), 6 deletions(-) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 48a5e1ec4..936dd3094 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -274,6 +274,20 @@ is complete: > > If the app times out, then the app **MUST** be terminated. +Apps **SHOULD** set up any Firebolt event listeners during +initialization, since the platform will wait until the app is ready +before dispatching many critical events such as Lifecycle and +Presentation events. + +Apps **SHOULD** acquire any important authentication needed for the +app to function during initialization. + +Apps **MAY** load a limited set of global display resources, e.g. a +global style sheet or a logo used throughout the experience, during +initialization. + +**TODO**: discuss this ^^ + Once an app is "ready" it **MUST** be transitioned to the `STARTED` state within 500 milliseconds. diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index 02dc976f1..cf3694e99 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -1,21 +1,84 @@ # App Presentation need to write this up... -## States +## 1. States - fullscreen - obscured - offscreen - scaled - thumbnail -- splash +- loading -## Off-screen Video -If an app has the `xrn:firebolt:capability:offscreen:audio` or `video` capability then it can keep playing video/audio. +## 2. Off-screen Video +If an app has the `xrn:firebolt:capability:presentation:offscreen-audio` or `-video` capability, then it can keep playing video/audio. Need a transition interface, e.g. `PresentationManager.hide()` to allow app to tear down video. -- Presentation. +## 3. Platform-provided Loading Screen +Most apps will leverage a platform-provided loading screen. -## +If an app provides the `xrn:firebolt:capability:presentation:loading-screen` +capability, then the platform **MAY** use the app-provided loading screen, in +which case, the rest of the section does not apply. +The loading screen **SHOULD** include a loading image referenced in the app's +manifest and cached on the device. + +The loading screen **MUST** be displayed when the user attempts to launch the +app. + +The loading screen **MUST** stay displayed until the app becomes active, or +launching is cancelled. + +The presentation state of the app **MUST** be `LOADING` for the entire time +the loading screen is displayed. + +See [Lifecycle](./index.md) for more info on launching. + +## 4. App-provided Loading Screen +If an app provides the `xrn:firebolt:capability:presentation:loading-screen` +capability, then the platform **MAY** invoke this capability in some situations. + +In order for an app and use an app-provided loading screen, the app **MUST** +provide the `xrn:firebolt:capability:lifecycle:management` capability. If the app +does not provide this capability, then app-provided loading screens **MUST NOT** +but invoked for the app. + +When cold launching apps with this capability: + +> The platform **MUST** display the platform-provided loading screen when +> the app starts loading. +> +> Then the app's loading screen **MUST** be requested immediately after the app +> is loaded. See [Displaying the app-provided loading screen](#41-displaying-the-app-provided-loading-screen), +> below. + +When hot launching apps with this capability: + +> The platform **MUST** display the platform-provided loading screen when +> the app launch is requested. +> +> Then the app's loading screen **MUST** be requested immediately. See +> [Displaying the app-provided loading screen](#41-displaying-the-app-provided-loading-screen), +> below. + +See [Lifecycle](./index.md) for more info on loading and activating apps. + +### 4.1. Displaying the app provided loading screen. +To display the loading screen: + +The platform **MUST** dispatch the `Presentation.onRequestLoadingScreen` +notification to the app, and wait for `loadingScreenTimeout` milliseconds +for either a `Presentation.loadingScreenResult` or +`Lifecycle.loadingScreenError` call in response. + +**NOTE**: this requires a minor change to our code-generate to customize +a provider method name, e.g. x-method-name: "display". + +Once the platform receives the `loadingScreenResult` call, then the app +**MUST** be made visible in whatever presentation mode the app would +have been launched into (typically `FULLSCREEN`). + +If the app times out or makes an `loadingScreenError` call, then the app +will not be made visible until activation is complete. From ee9dd219ec48c234955cc72e9931e2ffdcf587eb Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Fri, 29 Sep 2023 22:23:50 -0400 Subject: [PATCH 05/43] fix: Add some context for events vs transitions --- requirements/specifications/lifecycle/index.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 936dd3094..8349ee4de 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -92,6 +92,11 @@ to state. A Firebolt app, once running, **MUST** be in one of several states and **MUST NOT** be in more than one state at a time. +As an app changes states, events are dispatched notifying the app of +it's current and previous state. These events are for reacting to each state. + +For information on *influencing* state transitions, see [State Transitions](#3-lifecycle-state-transitions). + ![Lifecycle States](../../images/specifications/lifecycle/lifecycle-states.png) From 88f29b173cb0cd89886978332b9e65221ce785dc Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Fri, 29 Sep 2023 22:30:11 -0400 Subject: [PATCH 06/43] fix: more ntoes --- requirements/specifications/lifecycle/index.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index 8349ee4de..b0010554f 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -126,6 +126,10 @@ Apps in this state **MUST NOT** have access to the graphics plane. Apps in this state **SHOULD** use a low profile footprint for memory and other resources in this state. +Apps in this state **SHOULD** use less than XXX megabytes of RAM. + +**TODO**: do we want tiers of apps? per-app config? + When an app transitions to this state, the platform **MUST** dispatch the `Lifecycle.onStarted` notification with the current state and previous states. @@ -153,6 +157,10 @@ Apps in this state **MUST** have access to the graphics plane. Apps in this state **SHOULD NOT** have performance negatively impacted by other processes on the device. +Apps in this state **SHOULD** use less than XXX megabytes of RAM. + +**TODO**: do we want tiers of apps? per-app config? + When an app transitions to this state, the platform **MUST** dispatch the `Lifecycle.onForeground` notification with the current state and previous states. @@ -175,6 +183,10 @@ Apps in this state **MUST** have access to the graphics plane. Apps in this state **SHOULD NOT** have performance negatively impacted by other processes on the device. +Apps in this state **SHOULD** use less than XXX megabytes of RAM. + +**TODO**: do we want tiers of apps? per-app config? + When an app transitions to this state, the platform **MUST** dispatch the `Lifecycle.onBackground` notification with the current state and previous states. @@ -248,6 +260,8 @@ manifest's releaseStatus is not developer. Next, if the app is an HTML/JavaScript app, then load the app's initial URL (from the app manifest) into the browser. +**TODO**: add more details here, e.g. contains, graphics, media pipeline, ram + ### 3.2. Initializing an app Once an app is loaded it **MUST** be initialized immediately. From 101b82589473344c7e9ccb2a9ce3d3bf3c798e2d Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Sat, 30 Sep 2023 00:57:59 -0400 Subject: [PATCH 07/43] Update index.md --- requirements/specifications/lifecycle/index.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/requirements/specifications/lifecycle/index.md b/requirements/specifications/lifecycle/index.md index b0010554f..ed7f85a11 100644 --- a/requirements/specifications/lifecycle/index.md +++ b/requirements/specifications/lifecycle/index.md @@ -627,13 +627,6 @@ The Lifecycle.ready() API allows an app to notify the platform that it is initialized and ready to be displayed to the end user. This method **MUST NOT** be called more than once. -### 4.3. Loading - -The Lifecycle.loading() API allows an app to notify the platform that it -is presenting a custom loading screen and would like to be moved into -the background state so the user can see the loading screen. This method -**MUST NOT** be called more than once. - ### 4.4. Close The Lifecycle.close() API allows an app to request that it be closed by From 68d67c819225b085e6e56ab5af5a0314cc14a789 Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Sat, 30 Sep 2023 20:25:44 -0400 Subject: [PATCH 08/43] fix: Aligning Presentation w/ Lifecycle --- .../specifications/lifecycle/presentation.md | 44 ++++++++++++++----- 1 file changed, 34 insertions(+), 10 deletions(-) diff --git a/requirements/specifications/lifecycle/presentation.md b/requirements/specifications/lifecycle/presentation.md index cf3694e99..5d2791e0b 100644 --- a/requirements/specifications/lifecycle/presentation.md +++ b/requirements/specifications/lifecycle/presentation.md @@ -1,19 +1,43 @@ # App Presentation need to write this up... -## 1. States - -- fullscreen -- obscured -- offscreen -- scaled -- thumbnail -- loading +## 1. Display +The `Presentation` module **MUST** have a `display` string property that returns one of the following values: + +| Value | Description | +|-------|-------------| +| `FULLSCREEN` | The app is displayed such that the dimensions fill the entire screen | +| `OFFSCREEN` | The app is not displayed on the screen at all | +| `SCALED` | The app is displayed at a size smaller than the entire screen but at least 25% of the width or height | +| `THUMBNAIL` | The app is displayed at a size smaller than 25% of the width or height of the entire screen | +| `LOADING` | The platform is displaying a loading screen while the app loads | + +### 1.1 Display vs Lifecycle +Each Lifecycle state only supports certain display states: + +| Lifecycle | Supported Displays | +|-------|-------------| +| `FOREGROUND` | `FULLSCREEN`, `SCALED` | +| `BACKGROUND` | `FULLSCREEN`, `SCALED`, `THUMBNAIL` | +| `STARTED` | `OFFSCREEN` | +| `SUSPENDED` | | + +See [Off-screen Video](#2-offscreen-video) for an exception to this. + +## 2. Overlay +The `Presentation` module **MUST** have an `overlay` string property that returns one of the following values: + +| Value | Description | +|-------|-------------| +| `ICON` | There is an informative icon, e.g. volume, on top of the app. | +| `BAND` | There is a horizontal overlay at the top or bottom of the app. | +| `SIDEBAR` | There is a vertical sidebar covering less than 33% of the app on one side. | +| `BLOCKED` | There is a significantly sized UX covering a majority of the app. | ## 2. Off-screen Video -If an app has the `xrn:firebolt:capability:presentation:offscreen-audio` or `-video` capability, then it can keep playing video/audio. +If an app has the `xrn:firebolt:capability:presentation:offscreen-audio` or `-video` capability, then it can keep playing video/audio when the app is off-screen. -Need a transition interface, e.g. `PresentationManager.hide()` to allow app to tear down video. +When an app has this capability, it **MAY** be put into the `OFFSCREEN` display state while in the `BACKGROUND` Lifecycle state. ## 3. Platform-provided Loading Screen Most apps will leverage a platform-provided loading screen. From cb3d6ace2944b302292d972f82109ae363ac391e Mon Sep 17 00:00:00 2001 From: Jeremy LaCivita Date: Mon, 2 Oct 2023 11:58:03 -0400 Subject: [PATCH 09/43] fix: Updates from today's WG --- .../lifecycle/lifecycle-states.png | Bin 198453 -> 125761 bytes .../lifecycle/lifecycle-transitions.png | Bin 326995 -> 224230 bytes .../specifications/lifecycle/presentation.md | 79 +++++++++--------- 3 files changed, 39 insertions(+), 40 deletions(-) diff --git a/requirements/images/specifications/lifecycle/lifecycle-states.png b/requirements/images/specifications/lifecycle/lifecycle-states.png index 5e6ce16e6bd305dbc33c50d2039660bb4ff7b3ff..b3976af14452e06c6b11fb8fdbd08fff38bd576d 100644 GIT binary patch literal 125761 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%0A`)({~_C;n1M%I&5l)_ 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Π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௑mj467;qTD=SB=F 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