Options
All
  • Public
  • Public/Protected
  • All
Menu

The base Token model definition which defines common behavior of a Token document between both client and server.

mixes

{TokenData}

memberof

documents

Hierarchy

Index

Constructors

Methods

  • testUserPermission(user: any, permission: any, __namedParameters?: { exact: boolean }): any
  • override

    Parameters

    • user: any
    • permission: any
    • __namedParameters: { exact: boolean } = {}
      • exact: boolean

    Returns any

  • toObject(source?: boolean): any
  • Copy and transform the DataModel into a plain object. Draw the values of the extracted object from the data source (by default) otherwise from its transformed values.

    Parameters

    • source: boolean = true

    Returns any

    The extracted primitive object

  • _configure(__namedParameters?: { pack: any; parentCollection: any }): void
  • override

    Parameters

    • __namedParameters: { pack: any; parentCollection: any } = {}
      • pack: any
      • parentCollection: any

    Returns void

  • _initialize(options?: {}): void
  • Initialize the instance by copying data from the source object to instance attributes. This mirrors the workflow of SchemaField#initialize but with some added functionality.

    Parameters

    • options: {} = {}

      Returns void

    • getUserLevel(user: BaseUser): number
    • Get the explicit permission level that a User has over this Document, a value in CONST.DOCUMENT_OWNERSHIP_LEVELS. This method returns the value recorded in Document ownership, regardless of the User's role. To test whether a user has a certain capability over the document, testUserPermission should be used.

      Parameters

      • user: BaseUser

        The User being tested

      Returns number

      A numeric permission level from CONST.DOCUMENT_OWNERSHIP_LEVELS or null

    • canUserModify(user: BaseUser, action: string, data?: any): boolean
    • Test whether a given User has permission to perform some action on this Document

      Parameters

      • user: BaseUser

        The User attempting modification

      • action: string

        The attempted action

      • data: any = {}

      Returns boolean

      Does the User have permission?

    • clone(data?: any, [context={}]?: DocumentConstructionContext): Document | Promise<Document>
    • Clone a document, creating a new document by combining current data with provided overrides. The cloned document is ephemeral and not yet saved to the database.

      Parameters

      • data: any = {}
      • [context={}]: DocumentConstructionContext = {}

        Additional context options passed to the create method

      Returns Document | Promise<Document>

      The cloned Document instance

    • migrateSystemData(): any
    • For Documents which include game system data, migrate the system data object to conform to its latest data model. The data model is defined by the template.json specification included by the game system.

      Returns any

      The migrated system data object

    • update(data?: any, context?: DocumentModificationContext): Promise<Document>
    • Update this Document using incremental data, saving it to the database.

      see

      Document.updateDocuments

      Parameters

      • data: any = {}
      • context: DocumentModificationContext = {}

      Returns Promise<Document>

      The updated Document instance

    • delete(context?: DocumentModificationContext): Promise<Document>
    • Obtain a reference to the Array of source data within the data object for a certain embedded Document name

      Parameters

      • embeddedName: string

        The name of the embedded Document type

      Returns DocumentCollection

      The Collection instance of embedded Documents of the requested type

    • getEmbeddedDocument(embeddedName: string, id: string, [options]?: { strict: boolean; invalid: boolean }): Document
    • Get an embedded document by its id from a named collection in the parent document.

      throws

      If the embedded collection does not exist, or if strict is true and the Embedded Document could not be found.

      Parameters

      • embeddedName: string

        The name of the embedded Document type

      • id: string

        The id of the child document to retrieve

      • [options]: { strict: boolean; invalid: boolean } = {}

        Additional options which modify how embedded documents are retrieved

        • strict: boolean
        • invalid: boolean

      Returns Document

      The retrieved embedded Document instance, or undefined

    • createEmbeddedDocuments(embeddedName: string, data?: any[], context?: DocumentModificationContext): Promise<Document[]>
    • Create multiple embedded Document instances within this parent Document using provided input data.

      see

      Document.createDocuments

      Parameters

      • embeddedName: string

        The name of the embedded Document type

      • data: any[] = []

        An array of data objects used to create multiple documents

      • context: DocumentModificationContext = {}

      Returns Promise<Document[]>

      An array of created Document instances

    • updateEmbeddedDocuments(embeddedName: string, updates?: any[], context?: DocumentModificationContext): Promise<Document[]>
    • Update multiple embedded Document instances within a parent Document using provided differential data.

      see

      Document.updateDocuments

      Parameters

      • embeddedName: string

        The name of the embedded Document type

      • updates: any[] = []

        An array of differential data objects, each used to update a single Document

      • context: DocumentModificationContext = {}

      Returns Promise<Document[]>

      An array of updated Document instances

    • deleteEmbeddedDocuments(embeddedName: string, ids: string[], context?: DocumentModificationContext): Promise<Document[]>
    • Delete multiple embedded Document instances within a parent Document using provided string ids.

      see

      Document.deleteDocuments

      Parameters

      • embeddedName: string

        The name of the embedded Document type

      • ids: string[]

        An array of string ids for each Document to be deleted

      • context: DocumentModificationContext = {}

      Returns Promise<Document[]>

      An array of deleted Document instances

    • getFlag(scope: string, key: string): any
    • Get the value of a "flag" for this document See the setFlag method for more details on flags

      Parameters

      • scope: string

        The flag scope which namespaces the key

      • key: string

        The flag key

      Returns any

      The flag value

    • setFlag(scope: string, key: string, value: any): Promise<Document>
    • Assign a "flag" to this document. Flags represent key-value type data which can be used to store flexible or arbitrary data required by either the core software, game systems, or user-created modules.

      Each flag should be set using a scope which provides a namespace for the flag to help prevent collisions.

      Flags set by the core software use the "core" scope. Flags set by game systems or modules should use the canonical name attribute for the module Flags set by an individual world should "world" as the scope.

      Flag values can assume almost any data type. Setting a flag value to null will delete that flag.

      Parameters

      • scope: string

        The flag scope which namespaces the key

      • key: string

        The flag key

      • value: any

        The flag value

      Returns Promise<Document>

      A Promise resolving to the updated document

    • unsetFlag(scope: string, key: string): Promise<Document>
    • Remove a flag assigned to the document

      Parameters

      • scope: string

        The flag scope which namespaces the key

      • key: string

        The flag key

      Returns Promise<Document>

      The updated document instance

    • _preCreate(data: any, options: any, user: BaseUser): Promise<boolean | void>
    • Perform preliminary operations before a Document of this type is created. Pre-creation operations only occur for the client which requested the operation. Modifications to the pending document before it is persisted should be performed with this.updateSource().

      Parameters

      • data: any

        The initial data object provided to the document creation request

      • options: any

        Additional options which modify the creation request

      • user: BaseUser

        The User requesting the document creation

      Returns Promise<boolean | void>

      A return value of false indicates the creation operation should be cancelled.

    • _preUpdate(changed: any, options: any, user: BaseUser): Promise<boolean | void>
    • Perform preliminary operations before a Document of this type is updated. Pre-update operations only occur for the client which requested the operation.

      Parameters

      • changed: any

        The differential data that is changed relative to the documents prior values

      • options: any

        Additional options which modify the update request

      • user: BaseUser

        The User requesting the document update

      Returns Promise<boolean | void>

      A return value of false indicates the update operation should be cancelled.

    • _preDelete(options: any, user: BaseUser): Promise<boolean | void>
    • Perform preliminary operations before a Document of this type is deleted. Pre-delete operations only occur for the client which requested the operation.

      Parameters

      • options: any

        Additional options which modify the deletion request

      • user: BaseUser

        The User requesting the document deletion

      Returns Promise<boolean | void>

      A return value of false indicates the deletion operation should be cancelled.

    • _onCreate(data: any, options: any, userId: string): void
    • Perform follow-up operations after a Document of this type is created. Post-creation operations occur for all clients after the creation is broadcast.

      Parameters

      • data: any

        The initial data object provided to the document creation request

      • options: any

        Additional options which modify the creation request

      • userId: string

        The id of the User requesting the document update

      Returns void

    • _onUpdate(changed: any, options: any, userId: string): void
    • Perform follow-up operations after a Document of this type is updated. Post-update operations occur for all clients after the update is broadcast.

      Parameters

      • changed: any

        The differential data that was changed relative to the documents prior values

      • options: any

        Additional options which modify the update request

      • userId: string

        The id of the User requesting the document update

      Returns void

    • _onDelete(options: any, userId: string): void
    • Perform follow-up operations after a Document of this type is deleted. Post-deletion operations occur for all clients after the deletion is broadcast.

      Parameters

      • options: any

        Additional options which modify the deletion request

      • userId: string

        The id of the User requesting the document update

      Returns void

    • migrateData(data: any): any
    • inheritdoc

      Parameters

      • data: any

      Returns any

    • shimData(data: any, options: any): any
    • inheritdoc

      Parameters

      • data: any
      • options: any

      Returns any

    • _initializationOrder(): Generator<any[], void, unknown>
    • canUserCreate(user: BaseUser): boolean
    • Test whether a given User has a sufficient role in order to create Documents of this type in general.

      Parameters

      • user: BaseUser

        The User being tested

      Returns boolean

      Does the User have a sufficient role to create?

    • createDocuments(data?: any[], context?: DocumentModificationContext): Promise<Document[]>
    • Create multiple Documents using provided input data. Data is provided as an array of objects where each individual object becomes one new Document.

      example

      Create a single Document

      const data = [{name: "New Actor", type: "character", img: "path/to/profile.jpg"}];
      const created = await Actor.createDocuments(data);
      example

      Create multiple Documents

      const data = [{name: "Tim", type: "npc"], [{name: "Tom", type: "npc"}];
      const created = await Actor.createDocuments(data);
      example

      Create multiple embedded Documents within a parent

      const actor = game.actors.getName("Tim");
      const data = [{name: "Sword", type: "weapon"}, {name: "Breastplate", type: "equipment"}];
      const created = await Item.createDocuments(data, {parent: actor});
      example

      Create a Document within a Compendium pack

      const data = [{name: "Compendium Actor", type: "character", img: "path/to/profile.jpg"}];
      const created = await Actor.createDocuments(data, {pack: "mymodule.mypack"});

      Parameters

      • data: any[] = []

        An array of data objects used to create multiple documents

      • context: DocumentModificationContext = {}

      Returns Promise<Document[]>

      An array of created Document instances

    • updateDocuments(updates?: any[], context?: DocumentModificationContext): Promise<Document[]>
    • Update multiple Document instances using provided differential data. Data is provided as an array of objects where each individual object updates one existing Document.

      example

      Update a single Document

      const updates = [{_id: "12ekjf43kj2312ds", name: "Timothy"}];
      const updated = await Actor.updateDocuments(updates);
      example

      Update multiple Documents

      const updates = [{_id: "12ekjf43kj2312ds", name: "Timothy"}, {_id: "kj549dk48k34jk34", name: "Thomas"}]};
      const updated = await Actor.updateDocuments(updates);
      example

      Update multiple embedded Documents within a parent

      const actor = game.actors.getName("Timothy");
      const updates = [{_id: sword.id, name: "Magic Sword"}, {_id: shield.id, name: "Magic Shield"}];
      const updated = await Item.updateDocuments(updates, {parent: actor});
      example

      Update Documents within a Compendium pack

      const actor = await pack.getDocument(documentId);
      const updated = await Actor.updateDocuments([{_id: actor.id, name: "New Name"}], {pack: "mymodule.mypack"});

      Parameters

      • updates: any[] = []

        An array of differential data objects, each used to update a single Document

      • context: DocumentModificationContext = {}

      Returns Promise<Document[]>

      An array of updated Document instances

    • deleteDocuments(ids?: string[], context?: DocumentModificationContext): Promise<Document[]>
    • Delete one or multiple existing Documents using an array of provided ids. Data is provided as an array of string ids for the documents to delete.

      example

      Delete a single Document

      const tim = game.actors.getName("Tim");
      const deleted = await Actor.deleteDocuments([tim.id]);
      example

      Delete multiple Documents

      const tim = game.actors.getName("Tim");
      const tom = game.actors.getName("Tom");
      const deleted = await Actor.deleteDocuments([tim.id, tom.id]);
      example

      Delete multiple embedded Documents within a parent

      const tim = game.actors.getName("Tim");
      const sword = tim.items.getName("Sword");
      const shield = tim.items.getName("Shield");
      const deleted = await Item.deleteDocuments([sword.id, shield.id], parent: actor});
      example

      Delete Documents within a Compendium pack

      const actor = await pack.getDocument(documentId);
      const deleted = await Actor.deleteDocuments([actor.id], {pack: "mymodule.mypack"});

      Parameters

      • ids: string[] = []

        An array of string ids for the documents to be deleted

      • context: DocumentModificationContext = {}

      Returns Promise<Document[]>

      An array of deleted Document instances

    • create(data: any, context?: DocumentModificationContext): Promise<Document>
    • Create a new Document using provided input data, saving it to the database.

      see

      Document.createDocuments

      example

      Create a World-level Item

      const data = [{name: "Special Sword", type: "weapon"}];
      const created = await Item.create(data);
      example

      Create an Actor-owned Item

      const data = [{name: "Special Sword", type: "weapon"}];
      const actor = game.actors.getName("My Hero");
      const created = await Item.create(data, {parent: actor});
      example

      Create an Item in a Compendium pack

      const data = [{name: "Special Sword", type: "weapon"}];
      const created = await Item.create(data, {pack: "mymodule.mypack"});

      Parameters

      • data: any
      • context: DocumentModificationContext = {}

      Returns Promise<Document>

      The created Document instance

    • get(documentId: string, options?: any): any
    • Get a World-level Document of this type by its id.

      Parameters

      • documentId: string

        The Document ID

      • options: any = {}

      Returns any

      The retrieved Document, or null

    • getCollectionName(name: string): string
    • A compatibility method that returns the appropriate name of an embedded collection within this Document.

      example

      Passing an existing collection name.

      Actor.getCollectionName("items");
      // returns "items"
      example

      Passing a document name.

      Actor.getCollectionName("Item");
      // returns "items"

      Parameters

      • name: string

        An existing collection name or a document name.

      Returns string

      The provided collection name if it exists, the first available collection for the document name provided, or null if no appropriate embedded collection could be found.

    • _addDataFieldMigration(data: any, oldKey: string, newKey: string, apply: ((arg0: any, arg1: any) => any)): void
    • Define a simple migration from one field name to another. The value of the data can be transformed during the migration by an optional application function.

      internal

      Parameters

      • data: any

        The data object being migrated

      • oldKey: string

        The old field name

      • newKey: string

        The new field name

      • apply: ((arg0: any, arg1: any) => any)
          • (arg0: any, arg1: any): any
          • Parameters

            • arg0: any
            • arg1: any

            Returns any

      Returns void

    • _onCreateDocuments(documents: Document[], context: DocumentModificationContext): Promise<void>
    • Perform follow-up operations when a set of Documents of this type are created. This is where side effects of creation should be implemented. Post-creation side effects are performed only for the client which requested the operation.

      Parameters

      • documents: Document[]

        The Document instances which were created

      • context: DocumentModificationContext

        The context for the modification operation

      Returns Promise<void>

    • _onUpdateDocuments(documents: Document[], context: DocumentModificationContext): Promise<void>
    • Perform follow-up operations when a set of Documents of this type are updated. This is where side effects of updates should be implemented. Post-update side effects are performed only for the client which requested the operation.

      Parameters

      • documents: Document[]

        The Document instances which were updated

      • context: DocumentModificationContext

        The context for the modification operation

      Returns Promise<void>

    • _onDeleteDocuments(documents: Document[], context: DocumentModificationContext): Promise<void>
    • Perform follow-up operations when a set of Documents of this type are deleted. This is where side effects of deletion should be implemented. Post-deletion side effects are performed only for the client which requested the operation.

      Parameters

      • documents: Document[]

        The Document instances which were deleted

      • context: DocumentModificationContext

        The context for the modification operation

      Returns Promise<void>

    • _logDataFieldMigration(oldKey: any, newKey: any, options?: {}): void
    • _logV10CompatibilityWarning(options: any): void
    • #validateDetectionModes(modes: any[]): void
    • Validate the structure of the detection modes array

      throws

      An error if the array is invalid

      Parameters

      • modes: any[]

        Configured detection modes

      Returns void

    • #canUpdate(user: any, doc: any, data: any): any
    • Is a user able to update an existing Token?

      Parameters

      • user: any
      • doc: any
      • data: any

      Returns any

    Accessors

    • get collectionName(): any
    • Returns any

    • get documentName(): any
    • Returns any

    • get id(): string
    • The canonical identifier for this Document.

      Returns string

    • get isEmbedded(): boolean
    • Test whether this Document is embedded within a parent Document

      Returns boolean

    • get database(): DatabaseBackend
    • The database backend used to execute operations and handle results.

      Returns DatabaseBackend

    • get implementation(): Class
    • Return a reference to the configured subclass of this base Document type.

      Returns Class

    • get collectionName(): string
    • The named collection to which this Document belongs.

      Returns string

    • get documentName(): string
    • The canonical name of this Document type, for example "Actor".

      Returns string

    • get hasTypeData(): boolean
    • Does this Document support additional sub-types?

      Returns boolean

    • get hierarchy(): any
    • The Embedded Document hierarchy for this Document.

      Returns any

    Properties

    metadata: any = ...

    Default metadata which applies to each instance of this Document type.

    DEFAULT_ICON: string = CONST.DEFAULT_TOKEN

    The default icon used for newly created Token documents