Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,29 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

# [7.5.0-release47.5](https://github.com/nrkno/sofie-timeline-state-resolver/compare/7.5.0-release47.4...7.5.0-release47.5) (2023-01-16)

**Note:** Version bump only for package timeline-state-resolver-packages





# [7.5.0-release47.4](https://github.com/nrkno/sofie-timeline-state-resolver/compare/7.5.0-release47.3...7.5.0-release47.4) (2023-01-13)


### Bug Fixes

* add optional parameter to HTTPSend timelineObj: paramsType ([979dc61](https://github.com/nrkno/sofie-timeline-state-resolver/commit/979dc61748c4c371a8b17c7fd8c5929c69f747d9))
* add support for Node 18 ([6242dd6](https://github.com/nrkno/sofie-timeline-state-resolver/commit/6242dd68f54a491aa71bdfd30b066550d6f7e90e))
* bug fix: HTTPSend device didn't send GET requests ([8315531](https://github.com/nrkno/sofie-timeline-state-resolver/commit/83155314706497a9c630dbde14d5c5d7e57103cf))
* prevent in place reverse in setDatastore ([473ab71](https://github.com/nrkno/sofie-timeline-state-resolver/commit/473ab713785325c2062db983c8ece80ea5dede4d))
* track ccg state internally ([fd5596f](https://github.com/nrkno/sofie-timeline-state-resolver/commit/fd5596fcf975a7a122c6fb21946f13c2e97a4233))





# [7.5.0-release47.3](https://github.com/nrkno/sofie-timeline-state-resolver/compare/7.5.0-release47.2...7.5.0-release47.3) (2022-11-07)

**Note:** Version bump only for package timeline-state-resolver-packages
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ Using the input, it resolves the expected state, diffs the state against current
* **Quantel** video server
* **[vMix](https://www.vmix.com/)** software vision mixer
* **VizRT MediaSequencer** graphics system - using the [v-connection](https://github.com/tv2/v-connection) library
* **NRK Nora** graphics system - an in-house graphics system developed by [NRK](https://www.nrk.no)
* Arbitrary [OSC](https://en.wikipedia.org/wiki/Open_Sound_Control) compatible devices
* Arbitrary HTTP (REST) compatible devices
* Arbitrary TCP-socket compatible devices
Expand Down
2 changes: 1 addition & 1 deletion lerna.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"version": "7.5.0-release47.3",
"version": "7.5.0-release47.5",
"npmClient": "yarn",
"useWorkspaces": true
}
11 changes: 11 additions & 0 deletions packages/timeline-state-resolver-types/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,17 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

# [7.5.0-release47.5](https://github.com/nrkno/sofie-timeline-state-resolver/compare/7.5.0-release47.4...7.5.0-release47.5) (2023-01-16)

**Note:** Version bump only for package timeline-state-resolver-types

# [7.5.0-release47.4](https://github.com/nrkno/sofie-timeline-state-resolver/compare/7.5.0-release47.3...7.5.0-release47.4) (2023-01-13)

### Bug Fixes

- add optional parameter to HTTPSend timelineObj: paramsType ([979dc61](https://github.com/nrkno/sofie-timeline-state-resolver/commit/979dc61748c4c371a8b17c7fd8c5929c69f747d9))
- add support for Node 18 ([6242dd6](https://github.com/nrkno/sofie-timeline-state-resolver/commit/6242dd68f54a491aa71bdfd30b066550d6f7e90e))

# [7.5.0-release47.3](https://github.com/nrkno/sofie-timeline-state-resolver/compare/7.5.0-release47.2...7.5.0-release47.3) (2022-11-07)

**Note:** Version bump only for package timeline-state-resolver-types
Expand Down
2 changes: 1 addition & 1 deletion packages/timeline-state-resolver-types/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "timeline-state-resolver-types",
"version": "7.5.0-release47.3",
"version": "7.5.0-release47.5",
"description": "Have timeline, control stuff",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
Expand Down
6 changes: 6 additions & 0 deletions packages/timeline-state-resolver-types/src/device.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {
HTTPWatcherOptions,
VizMSEOptions,
VMixOptions,
NoraNRKOptions,
} from '.'
import { ShotokuOptions } from './shotoku'
import { TelemetricsOptions } from './telemetrics'
Expand Down Expand Up @@ -74,6 +75,7 @@ export type DeviceOptionsAny =
| DeviceOptionsVizMSE
| DeviceOptionsShotoku
| DeviceOptionsTelemetrics
| DeviceOptionsNoraNRK

export interface DeviceOptionsAbstract extends DeviceOptionsBase<AbstractOptions> {
type: DeviceType.ABSTRACT
Expand Down Expand Up @@ -137,3 +139,7 @@ export interface DeviceOptionsVMix extends DeviceOptionsBase<VMixOptions> {
export interface DeviceOptionsTelemetrics extends DeviceOptionsBase<TelemetricsOptions> {
type: DeviceType.TELEMETRICS
}

export interface DeviceOptionsNoraNRK extends DeviceOptionsBase<NoraNRKOptions> {
type: DeviceType.NORA_NRK
}
4 changes: 4 additions & 0 deletions packages/timeline-state-resolver-types/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import { TimelineObjVIZMSEAny } from './vizMSE'
import { TimelineObjSingularLiveAny } from './singularLive'
import { TimelineObjVMixAny } from './vmix'
import { TimelineObjOBSAny } from './obs'
import { TimelineObjNoraNRKAny } from './noraNRK'

export * from './abstract'
export * from './atem'
Expand All @@ -40,6 +41,7 @@ export * from './singularLive'
export * from './vmix'
export * from './obs'
export * from './telemetrics'
export * from './noraNRK'

export * from './device'
export * from './mapping'
Expand Down Expand Up @@ -72,6 +74,7 @@ export enum DeviceType {
OBS = 21,
SOFIE_CHEF = 22,
TELEMETRICS = 23,
NORA_NRK = 24,
}

export interface TSRTimelineKeyframe<T> extends Timeline.TimelineKeyframe {
Expand Down Expand Up @@ -144,6 +147,7 @@ export type TSRTimelineObj =
| TimelineObjVMixAny
| TimelineObjVIZMSEAny
| TimelineObjTelemetricsAny
| TimelineObjNoraNRKAny

export type TSRTimeline = Array<TSRTimelineObj>

Expand Down
78 changes: 78 additions & 0 deletions packages/timeline-state-resolver-types/src/noraNRK.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
import { Mapping } from './mapping'
import { TSRTimelineObjBase, DeviceType, TimelineDatastoreReferencesContent } from '.'

export interface MappingNoraNRK extends Mapping {
device: DeviceType.NORA_NRK

group: string
groupSuffix?: string
channel: string
}

export enum TimelineContentTypeNoraNRK {
TEMPLATE = 'template',
LAYER = 'layer',
}

export interface NoraNRKCommandBase {
temporalPriority?: number // default: 0
/** Commands in the same queue will be sent in order (will wait for the previous to finish before sending next */
queueId?: string
}

export interface NoraNRKTemplateCommandContent extends NoraNRKCommandBase {
type: TimelineContentTypeNoraNRK.TEMPLATE
// The payload obejct is defined from the NORA API.
payload: {
manifest?: string
template: {
name: string
event: 'take' | 'takeout' | 'preview'
layer: string
[key: string]: string | number | any
}
[key: string]: string | number | any
}
}

export interface NoraNRKLayerCommandContent extends NoraNRKCommandBase {
type: TimelineContentTypeNoraNRK.LAYER
// The payload obejct is defined from the NORA API.
payload: {
template: {
event: 'takeout'
layer: string
}
}
}

type NoraNRKCommandContent = NoraNRKTemplateCommandContent | NoraNRKLayerCommandContent

export interface NoraNRKOptions {
// Base URL for relative urls
coreUrl?: string

// API Key to be added as a query argument ?apiKey=
apiKey?: string

makeReadyCommands?: NoraNRKCommandContent[]
/** Whether a makeReady should be treated as a reset of the device. It should be assumed clean, with the queue discarded, and state reapplied from empty */
makeReadyDoesReset?: boolean

/** Minimum time in ms before a command is resent, set to <= 0 or undefined to disable */
resendTime?: number
}

export type TimelineObjNoraNRKAny = TimelineObjNoraNRKRequest
export interface TimelineObjNoraNRKBase extends TSRTimelineObjBase {
content: {
deviceType: DeviceType.NORA_NRK
type: TimelineContentTypeNoraNRK
}
}
export interface TimelineObjNoraNRKRequest extends TimelineObjNoraNRKBase {
content: {
deviceType: DeviceType.NORA_NRK
} & NoraNRKCommandContent &
TimelineDatastoreReferencesContent
}
23 changes: 23 additions & 0 deletions packages/timeline-state-resolver/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,29 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.

# [7.5.0-release47.5](https://github.com/nrkno/tv-automation-state-timeline-resolver/compare/7.5.0-release47.4...7.5.0-release47.5) (2023-01-16)

**Note:** Version bump only for package timeline-state-resolver





# [7.5.0-release47.4](https://github.com/nrkno/tv-automation-state-timeline-resolver/compare/7.5.0-release47.3...7.5.0-release47.4) (2023-01-13)


### Bug Fixes

* add optional parameter to HTTPSend timelineObj: paramsType ([979dc61](https://github.com/nrkno/tv-automation-state-timeline-resolver/commit/979dc61748c4c371a8b17c7fd8c5929c69f747d9))
* add support for Node 18 ([6242dd6](https://github.com/nrkno/tv-automation-state-timeline-resolver/commit/6242dd68f54a491aa71bdfd30b066550d6f7e90e))
* bug fix: HTTPSend device didn't send GET requests ([8315531](https://github.com/nrkno/tv-automation-state-timeline-resolver/commit/83155314706497a9c630dbde14d5c5d7e57103cf))
* prevent in place reverse in setDatastore ([473ab71](https://github.com/nrkno/tv-automation-state-timeline-resolver/commit/473ab713785325c2062db983c8ece80ea5dede4d))
* track ccg state internally ([fd5596f](https://github.com/nrkno/tv-automation-state-timeline-resolver/commit/fd5596fcf975a7a122c6fb21946f13c2e97a4233))





# [7.5.0-release47.3](https://github.com/nrkno/tv-automation-state-timeline-resolver/compare/7.5.0-release47.2...7.5.0-release47.3) (2022-11-07)

**Note:** Version bump only for package timeline-state-resolver
Expand Down
6 changes: 3 additions & 3 deletions packages/timeline-state-resolver/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "timeline-state-resolver",
"version": "7.5.0-release47.3",
"version": "7.5.0-release47.5",
"description": "Have timeline, control stuff",
"main": "dist/index.js",
"typings": "dist/index.d.ts",
Expand Down Expand Up @@ -90,7 +90,7 @@
"atem-connection": "2.4.0",
"atem-state": "^0.12.2",
"casparcg-connection": "^5.1.0",
"casparcg-state": "2.1.2",
"casparcg-state": "2.1.3",
"debug": "^4.3.1",
"deepmerge": "^4.2.2",
"emberplus-connection": "^0.1.2",
Expand All @@ -106,7 +106,7 @@
"sprintf-js": "^1.1.2",
"superfly-timeline": "^8.3.1",
"threadedclass": "^1.1.1",
"timeline-state-resolver-types": "7.5.0-release47.3",
"timeline-state-resolver-types": "7.5.0-release47.5",
"tslib": "^2.3.1",
"tv-automation-quantel-gateway-client": "^2.0.5",
"underscore": "^1.13.4",
Expand Down
11 changes: 11 additions & 0 deletions packages/timeline-state-resolver/src/conductor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ import { VizMSEDevice, DeviceOptionsVizMSEInternal } from './integrations/vizMSE
import { ShotokuDevice, DeviceOptionsShotokuInternal } from './integrations/shotoku'
import { DeviceOptionsSofieChefInternal, SofieChefDevice } from './integrations/sofieChef'
import { TelemetricsDevice } from './integrations/telemetrics'
import { NoraNRKDevice, DeviceOptionsNoraNRKInternal } from './integrations/noraNRK'

export { DeviceContainer }
export { CommandWithContext }
Expand Down Expand Up @@ -611,6 +612,15 @@ export class Conductor extends EventEmitter<ConductorEvents> {
getCurrentTime,
threadedClassOptions
)
} else if (deviceOptions.type === DeviceType.NORA_NRK) {
newDevice = await DeviceContainer.create<DeviceOptionsNoraNRKInternal, typeof NoraNRKDevice>(
'../../dist/integrations/noraNRK/index.js',
'NoraNRKDevice',
deviceId,
deviceOptions,
getCurrentTime,
threadedClassOptions
)
} else {
// @ts-ignore deviceOptions.type is of type "never"
const type: any = deviceOptions.type
Expand Down Expand Up @@ -1493,6 +1503,7 @@ export type DeviceOptionsAnyInternal =
| DeviceOptionsShotokuInternal
| DeviceOptionsVizMSEInternal
| DeviceOptionsTelemetrics
| DeviceOptionsNoraNRKInternal

function removeParentFromState(o: TimelineState): TimelineState {
for (const key in o) {
Expand Down
Loading