48 lines
1.3 KiB
TypeScript
48 lines
1.3 KiB
TypeScript
import * as tg from "generic-type-guard";
|
|
|
|
export const isRectangle = new tg.IsInterface()
|
|
.withProperties({
|
|
x: tg.isNumber,
|
|
y: tg.isNumber,
|
|
width: tg.isNumber,
|
|
height: tg.isNumber,
|
|
})
|
|
.get();
|
|
|
|
export const isEmbeddedWebsiteEvent = new tg.IsInterface()
|
|
.withProperties({
|
|
name: tg.isString,
|
|
})
|
|
.withOptionalProperties({
|
|
url: tg.isString,
|
|
visible: tg.isBoolean,
|
|
allowApi: tg.isBoolean,
|
|
allow: tg.isString,
|
|
x: tg.isNumber,
|
|
y: tg.isNumber,
|
|
width: tg.isNumber,
|
|
height: tg.isNumber,
|
|
})
|
|
.get();
|
|
|
|
export const isCreateEmbeddedWebsiteEvent = new tg.IsInterface()
|
|
.withProperties({
|
|
name: tg.isString,
|
|
url: tg.isString,
|
|
position: isRectangle,
|
|
})
|
|
.withOptionalProperties({
|
|
visible: tg.isBoolean,
|
|
allowApi: tg.isBoolean,
|
|
allow: tg.isString,
|
|
})
|
|
.get();
|
|
|
|
/**
|
|
* A message sent from the iFrame to the game to modify an embedded website
|
|
*/
|
|
export type ModifyEmbeddedWebsiteEvent = tg.GuardedType<typeof isEmbeddedWebsiteEvent>;
|
|
|
|
export type CreateEmbeddedWebsiteEvent = tg.GuardedType<typeof isCreateEmbeddedWebsiteEvent>;
|
|
// TODO: make a variation that is all optional (except for the name)
|
|
export type Rectangle = tg.GuardedType<typeof isRectangle>;
|