MediaPlugin.
interface Media
extends Propertied, StoredMediaProperties {
accountId: string
api: () => Promise<DataOrError<Api>>
asStored: unknown
boolean: (key: string) => boolean
cacheMedia: (args: MediaCacheArgs) => Promise<DataOrError<number>>
canBeMuted: boolean
changeObject: (propertyId: SignalId, scalar?: Scalar) => ChangeEditObject
changeScalars: (scalars: ScalarsById) => void
changesObject: (scalars: ScalarsById) => ChangePropertiesEditObject
clipObject: (object?: InstanceObject) => ClipObject
constrainedValue: (found: Property, value?: Scalar) => Scalar | undefined
createdAt?: number
deletedAt?: number
duration: number
fetchResource: (resource: Resource) => Promise<DataOrError<true>>
findResource: (types: Strings) => Resource | undefined
frames: (quantize: number) => number
hasIntrinsicSizing?: boolean
hasIntrinsicTiming?: boolean
host: Plugins
id: string
instanceArgs: (object?: InstanceObject) => InstanceArgs
instanceFromObject: (object?: InstanceObject) => Instance
label: string
mediaIds: Strings
number: (key: string) => number
properties: Array<Property>
propertiesOfTarget: (targetId: string) => Array<Property>
propertyFind: (name: string) => Property | undefined
propertyIds: (targetId: string) => Array<SignalId>
resources: Array<Resource>
scalarsRecord: (idOrNames: Strings) => ScalarRecord
setValue: (nameOrId: string, scalar?: Scalar, dontConstrain?: boolean) => void
shouldSelectProperty: (property: Property) => boolean
source: string
string: (key: string) => string
targetId: string
toJSON: () => unknown
tweenValues: (key: string, time: Time, range: TimeRange) => Array<Scalar>
tweens: (key: string) => boolean
type: string
unload: () => void
updatedAt?: number
userId?: string
value: (key: string) => Scalar | undefined
}
type MediaContainerFunction = () => Media
type MediaContentFunction = () => Media
type MediaDocumentFunction = () => Document
type MediaElementTuple = ArrayOf2<string, DataOrError<BrowserMediaElement>>
type MediaElementTuplePromise = Promise<MediaElementTuple>
interface MediaFile {
asset: Media
avType?: 'audio' | 'video'
content?: string
file: AbsolutePath
type: MediaFileType
}
type MediaFileType = 'svg' | 'svgs' | 'txt' | FileType
interface MediaFindEventDetail {
promise?: Promise<DataOrError<Array<Media>>>
request: ApiFindRequest
}
type MediaMediaFunction = (args: StoredMedia) => Promise<DataOrError<Media>>
interface MediaOptions {
host: Plugins
media?: Array<StoredMedia>
}
type MediaOrStored = Media | StoredMedia
interface MediaPlugin
extends Plugable {
container: MediaContainerFunction
content: MediaContentFunction
document: MediaDocumentFunction
install: function
map: Map<string, Media>
media: MediaMediaFunction
}
interface MediaPluginOptions {
defaultContainerMedia?: VisibleMedia
defaultContentMedia?: VisibleMedia
}
type MediaType = 'audio' | 'image' | 'video'
type MediaTypeTuple = ArrayOf2<MediaType, string>
interface Storable
extends WithType, WithSource {
createdAt?: number
id?: string
source: string
type: string
updatedAt?: number
}
interface StorableEncode
extends StorableResource, EncodeProperties {
bytes?: number
createdAt?: number
decoded?: UnknownRecord
deletedAt?: number
error?: NamedError
extension: string
id?: string
request?: EndpointRequest
source: string
storedAt?: number
type: string
updatedAt?: number
}
/**
* A plain object representation of
* MashMedia.
*/
interface StorableMash
extends StorableMedia, MashProperties {
accountId?: string
buffer?: number
createdAt?: number
id?: string
label: string
resources?: Array<StorableResource>
source: string
tracks?: Array<TrackObject>
type: string
updatedAt?: number
}
interface StorableMedia
extends Storable {
accountId?: string
createdAt?: number
id?: string
label: string
resources?: Array<StorableResource>
source: string
type: string
updatedAt?: number
}
interface StorableTranscode
extends StorableResource, TranscodeProperties {
bytes?: number
createdAt?: number
decoded?: UnknownRecord
deletedAt?: number
error?: NamedError
extension: string
id?: string
request?: EndpointRequest
source: string
storedAt?: number
type: string
updatedAt?: number
}
type StoreDeleteFunction = (args: StoreDeleteRequest, opts?: ServerJobOptions) => Promise<DataOrError<Numbers>>
type StoreDirFunction = (args: StoreRequest, opts?: ServerJobOptions) => DataOrError<string>
type StoreFileFunction = (args: StoreRequest, opts?: ServerJobOptions) => DataOrError<string>
type StorePathFunction = (args: StoreRequest, opts?: ServerJobOptions) => DataOrError<string>
interface StorePlugin
extends Plugable {
delete: StoreDeleteFunction
dir: StoreDirFunction
download: StoreDownloadFunction
file: StoreFileFunction
install: function
path: StorePathFunction
upload: StoreUploadFunction
}
interface StorePluginOptions {
dirFormat?: string
fileFormat?: string
}
interface Stored
extends WithId, WithType, WithSource {
createdAt?: number
deletedAt?: number
id: string
source: string
type: string
updatedAt?: number
}
interface StoredDecode
extends StoredResource, DecodeProperties {
bytes?: number
createdAt?: number
decoded?: UnknownRecord
deletedAt?: number
error?: NamedError
extension: string
id: string
request?: EndpointRequest
source: string
storedAt?: number
type: string
updatedAt?: number
}
interface StoredEncode
extends StoredResource, EncodeProperties {
bytes?: number
createdAt?: number
decoded?: UnknownRecord
deletedAt?: number
error?: NamedError
extension: string
id: string
request?: EndpointRequest
source: string
storedAt?: number
type: string
updatedAt?: number
}
interface StoredMash
extends StoredMedia, MashProperties {
accountId: string
buffer?: number
createdAt?: number
deletedAt?: number
id: string
label: string
resources?: Array<StoredResource>
source: string
tracks?: Array<TrackObject>
type: string
updatedAt?: number
userId?: string
}
interface StoredMedia
extends StoredMediaProperties {
accountId: string
createdAt?: number
deletedAt?: number
id: string
label: string
resources?: Array<StoredResource>
source: string
type: string
updatedAt?: number
userId?: string
}
interface StoredMediaProperties
extends Stored {
accountId: string
createdAt?: number
deletedAt?: number
id: string
label: string
source: string
type: string
updatedAt?: number
userId?: string
}
interface StoredTranscode
extends StoredResource, TranscodeProperties {
bytes?: number
createdAt?: number
decoded?: UnknownRecord
deletedAt?: number
error?: NamedError
extension: string
id: string
request?: EndpointRequest
source: string
storedAt?: number
type: string
updatedAt?: number
}
/** @implements MediaPlugin */
class ClientMediaPluginClass {
_colorImage: (media: StoredMedia, opts: ClientJobOptions) => Promise<DataOrError<Media>>
_container: () => VisibleMedia
_content: () => VisibleMedia
_mash: (media: StoredMedia, opts: ClientJobOptions) => Promise<DataOrError<Media>>
_rawAudio: (media: StoredMedia, opts: ClientJobOptions) => Promise<DataOrError<Media>>
_rawImage: (media: StoredMedia, opts: ClientJobOptions) => Promise<DataOrError<Media>>
_rawVideo: (media: StoredMedia, opts: ClientJobOptions) => Promise<DataOrError<Media>>
_shapeImage: (media: StoredMedia, opts: ClientJobOptions) => Promise<DataOrError<Media>>
_textImage: (media: StoredMedia, opts: ClientJobOptions) => Promise<DataOrError<Media>>
container: MediaContainerFunction
content: MediaContentFunction
document: MediaDocumentFunction
install: function
map: Map<string, Media>
media: MediaMediaFunction
}
/** @implements MashMedia */
class MashMediaClass
extends MediaClass {
accountId: string
api: () => Promise<DataOrError<Api>>
asStored: unknown
boolean: (key: string) => boolean
cacheMedia: (args: MediaCacheArgs) => Promise<DataOrError<number>>
canBeMuted: boolean
changeObject: (propertyId: SignalId, scalar?: Scalar) => ChangeEditObject
changeScalars: (scalars: ScalarsById) => void
changesObject: (scalars: ScalarsById) => ChangePropertiesEditObject
clipInstance: (object: ClipObject) => Clip
clipObject: (object?: InstanceObject) => ClipObject
clips: Array<Clip>
clipsAudibleInTime: (time: Time) => Array<Clip>
clipsInTimeOfType: (time: Time, avType?: AudibleType) => Array<Clip>
constrainedValue: (found: Property, value?: Scalar) => Scalar | undefined
createdAt?: number
deletedAt?: number
duration: number
endTime: Time
fetchResource: (resource: Resource) => Promise<DataOrError<true>>
findResource: (types: Strings) => Resource | undefined
frames: (quantize: number) => number
hasIntrinsicSizing?: boolean
hasIntrinsicTiming?: boolean
host: Plugins
id: string
instanceArgs: (object?: InstanceObject) => InstanceArgs
instanceFromObject: (object?: InstanceObject) => Instance
label: string
mediaFromId: (assetId?: string) => Media | undefined
mediaIds: Strings
number: (key: string) => number
properties: Array<Property>
propertiesOfTarget: (targetId: string) => Array<Property>
propertyFind: (name: string) => Property | undefined
propertyIds: (targetId: string) => Array<SignalId>
resources: Array<Resource>
scalarsRecord: (idOrNames: Strings) => ScalarRecord
setValue: (nameOrId: string, scalar?: Scalar, dontConstrain?: boolean) => void
shouldSelectProperty: (property: Property) => boolean
size: Size
source: string
string: (key: string) => string
targetId: string
toJSON: () => unknown
totalFrames: number
trackInstance: (args: TrackArgs) => Track
tracks: Array<Track>
tweenValues: (key: string, time: Time, range: TimeRange) => Array<Scalar>
tweens: (key: string) => boolean
tweensProperty: (key: string) => boolean
type: string
unload: () => void
updatedAt?: number
userId?: string
value: (key: string) => Scalar | undefined
}
/** @implements Media */
class MediaClass
extends PropertiedClass {
accountId: string
api: () => Promise<DataOrError<Api>>
asStored: unknown
boolean: (key: string) => boolean
cacheMedia: (args: MediaCacheArgs) => Promise<DataOrError<number>>
canBeMuted: boolean
changeObject: (propertyId: SignalId, scalar?: Scalar) => ChangeEditObject
changeScalars: (scalars: ScalarsById) => void
changesObject: (scalars: ScalarsById) => ChangePropertiesEditObject
clipObject: (object?: InstanceObject) => ClipObject
constrainedValue: (found: Property, value?: Scalar) => Scalar | undefined
createdAt?: number
deletedAt?: number
duration: number
fetchResource: (resource: Resource) => Promise<DataOrError<true>>
findResource: (types: Strings) => Resource | undefined
frames: (quantize: number) => number
hasIntrinsicSizing?: boolean
hasIntrinsicTiming?: boolean
host: Plugins
id: string
instanceArgs: (object?: InstanceObject) => InstanceArgs
instanceFromObject: (object?: InstanceObject) => Instance
label: string
mediaIds: Strings
number: (key: string) => number
properties: Array<Property>
propertiesOfTarget: (targetId: string) => Array<Property>
propertyFind: (name: string) => Property | undefined
propertyIds: (targetId: string) => Array<SignalId>
resources: Array<Resource>
scalarsRecord: (idOrNames: Strings) => ScalarRecord
setValue: (nameOrId: string, scalar?: Scalar, dontConstrain?: boolean) => void
shouldSelectProperty: (property: Property) => boolean
source: string
string: (key: string) => string
targetId: string
toJSON: () => unknown
tweenValues: (key: string, time: Time, range: TimeRange) => Array<Scalar>
tweens: (key: string) => boolean
tweensProperty: (key: string) => boolean
type: string
unload: () => void
updatedAt?: number
userId?: string
value: (key: string) => Scalar | undefined
}
/** @implements MediaPlugin */
class MediaPluginClass
extends PluginClass {
container: MediaContainerFunction
content: MediaContentFunction
document: MediaDocumentFunction
install: function
map: Map<string, Media>
media: MediaMediaFunction
}
/** @implements MashMedia */
class ServerMashMediaClass {
accountId: string
api: () => Promise<DataOrError<Api>>
asStored: unknown
boolean: (key: string) => boolean
cacheMedia: (args: MediaCacheArgs) => Promise<DataOrError<number>>
canBeMuted: boolean
changeObject: (propertyId: SignalId, scalar?: Scalar) => ChangeEditObject
changeScalars: (scalars: ScalarsById) => void
changesObject: (scalars: ScalarsById) => ChangePropertiesEditObject
clipInstance: (object: ClipObject) => Clip
clipObject: (object?: InstanceObject) => ClipObject
clips: Array<Clip>
clipsAudibleInTime: (time: Time) => Array<Clip>
clipsInTimeOfType: (time: Time, avType?: AudibleType) => Array<Clip>
constrainedValue: (found: Property, value?: Scalar) => Scalar | undefined
createdAt?: number
deletedAt?: number
duration: number
endTime: Time
fetchResource: (resource: Resource) => Promise<DataOrError<true>>
findResource: (types: Strings) => Resource | undefined
frames: (quantize: number) => number
hasIntrinsicSizing?: boolean
hasIntrinsicTiming?: boolean
host: Plugins
id: string
instanceArgs: (object?: InstanceObject) => InstanceArgs
instanceFromObject: (object?: InstanceObject) => Instance
label: string
mediaFromId: (assetId?: string) => Media | undefined
mediaIds: Strings
number: (key: string) => number
properties: Array<Property>
propertiesOfTarget: (targetId: string) => Array<Property>
propertyFind: (name: string) => Property | undefined
propertyIds: (targetId: string) => Array<SignalId>
resources: Array<Resource>
scalarsRecord: (idOrNames: Strings) => ScalarRecord
setValue: (nameOrId: string, scalar?: Scalar, dontConstrain?: boolean) => void
shouldSelectProperty: (property: Property) => boolean
size: Size
source: string
string: (key: string) => string
targetId: string
toJSON: () => unknown
totalFrames: number
trackInstance: (args: TrackArgs) => Track
tracks: Array<Track>
tweenValues: (key: string, time: Time, range: TimeRange) => Array<Scalar>
tweens: (key: string) => boolean
type: string
unload: () => void
updatedAt?: number
userId?: string
value: (key: string) => Scalar | undefined
}
/** @implements MediaPlugin */
class ServerMediaPluginClass {
_colorImage: (media: StoredMedia, opts: ClientJobOptions) => Promise<DataOrError<Media>>
_container: () => VisibleMedia
_content: () => VisibleMedia
_mash: (media: StoredMedia, opts: ClientJobOptions) => Promise<DataOrError<Media>>
_rawAudio: (media: StoredMedia, opts: ClientJobOptions) => Promise<DataOrError<Media>>
_rawImage: (media: StoredMedia, opts: ClientJobOptions) => Promise<DataOrError<Media>>
_rawVideo: (media: StoredMedia, opts: ClientJobOptions) => Promise<DataOrError<Media>>
_shapeImage: (media: StoredMedia, opts: ClientJobOptions) => Promise<DataOrError<Media>>
_textImage: (media: StoredMedia, opts: ClientJobOptions) => Promise<DataOrError<Media>>
container: MediaContainerFunction
content: MediaContentFunction
document: MediaDocumentFunction
install: function
map: Map<string, Media>
media: MediaMediaFunction
}
/** @implements StorePlugin */
class StorePluginClass
extends PluginClass {
delete: StoreDeleteFunction
dir: StoreDirFunction
download: StoreDownloadFunction
file: StoreFileFunction
install: function
parseVariables: (args: StoreRequest) => StringRecord
path: StorePathFunction
upload: StoreUploadFunction
}
function storedFromStorable(
storableMedia: StorableMedia
): StoredMedia
function storedMashFromMedia(
stored: StoredMedia,
host: Plugins
): Promise<DataOrError<StoredMash>>
const STORABLE_COLOR_IMAGE = {
type: 'image',
source: 'color',
label: 'color'
}
const STORABLE_SHAPE_IMAGE = {
type: 'image',
source: 'shape',
label: 'shape'
}
const STORABLE_TEXT_IMAGE = {
type: 'image',
source: 'text',
label: 'text'
}