The singleton collection of User documents which exist within the active World. This Collection is accessible within the Game object as game.users.

foundry.documents.User: The User document

Hierarchy (View Summary)

Properties

An Array of application references which will be automatically updated when the collection content changes

current: null | documents.User

The User document of the currently connected user

invalidDocumentIds: Set<string> = ...

Record the set of document ids where the Document was not initialized because of invalid source data

documentName: string = "User"

Accessors

  • get activeGM(): null | documents.User

    Get one User who is an active Gamemaster (non-assistant if possible), or null if no active GM is available. This can be useful for workflows which occur on all clients, but where only one user should take action.

    Returns null | documents.User

  • get contents(): V[]

    Return an Array of all the entry values in the Collection

    Returns V[]

  • get directory(): DocumentDirectory<ClientDocument>

    Return a reference to the SidebarDirectory application for this WorldCollection.

    Returns DocumentDirectory<ClientDocument>

  • get documentClass(): typeof Document

    A reference to the Document class definition which is contained within this DocumentCollection.

    Returns typeof Document

  • get documentName(): any

    Returns any

  • get name(): string

    The Collection class name

    Returns string

  • get instance(): WorldCollection

    Return a reference to the singleton instance of this WorldCollection, or null if it has not yet been created.

    Returns WorldCollection

  • get registeredSheets(): DocumentSheet[]

    Return an array of currently registered sheet classes for this Document type.

    Returns DocumentSheet[]

Methods

  • Initialize the DocumentCollection by constructing any initially provided Document instances

    Returns void

  • Internal

    Follow-up actions to take when a database operation modifies Documents in this DocumentCollection.

    Parameters

    • action: DatabaseAction

      The database action performed

    • documents: ClientDocument[]

      The array of modified Documents

    • result: any[]

      The result of the database operation

    • operation: DatabaseOperation

      Database operation details

    • user: documents.User

      The User who performed the operation

    Returns void

  • Then iterating over a Collection, we should iterate over its values instead of over its entries

    Returns MapIterator<any>

  • Filter the Collection, returning an Array of entries which match a functional condition.

    Parameters

    • condition: (value: any, index: number, collection: Collection<any, any>) => unknown

      The functional condition to test.

    Returns any[]

    An Array of matched values

    let c = new Collection([["a", "AA"], ["b", "AB"], ["c", "CC"]]);
    let hasA = c.filters(entry => entry.slice(0) === "A");
  • Find an entry in the Map using a functional condition.

    Parameters

    • condition: (value: any, index: number, collection: Collection<any, any>) => unknown

      The functional condition to test.

    Returns any

    The value, if found, otherwise undefined

    let c = new Collection([["a", "A"], ["b", "B"], ["c", "C"]]);
    c.get("a") === c.find(entry => entry === "A"); // true
  • Apply a function to each element of the collection

    Parameters

    • fn: (value: any) => void

      A function to apply to each element

    Returns void

    Array#forEach

    let c = new Collection([["a", {active: false}], ["b", {active: false}], ["c", {active: false}]]);
    c.forEach(e => e.active = true);
  • Get an element from the DocumentCollection by its ID.

    Parameters

    • id: string

      The ID of the Document to retrieve.

    • Optionaloptions: { invalid?: boolean; strict?: boolean } = {}

      Additional options to configure retrieval.

      • Optionalinvalid?: boolean

        Allow retrieving an invalid Document.

      • Optionalstrict?: boolean

        Throw an Error if the requested Document does not exist.

    Returns Document<object, DocumentConstructionContext>

    If strict is true and the Document cannot be found.

  • Get the designated User among the Users that satisfy the given condition. Returns null if no Users satisfy the given condition. Returns a User with the highest role among the qualifying Users. Qualifying Users aren't necessary active Users unless it is part of the condition.

    Parameters

    • condition: (user: documents.User) => boolean

      The condition the Users must satisfy

    Returns null | documents.User

    The designated User or null

    // Get the designated User for creating Tokens that is active
    const user = game.users.getDesignatedUser(user => user.active && user.can("TOKEN_CREATE"));
  • Obtain a temporary Document instance for a document id which currently has invalid source data.

    Parameters

    • id: string

      A document ID with invalid source data.

    • Optionaloptions: { strict?: boolean } = {}

      Additional options to configure retrieval.

      • Optionalstrict?: boolean

        Throw an Error if the requested ID is not in the set of invalid IDs for this collection.

    Returns void | Document<object, DocumentConstructionContext>

    An in-memory instance for the invalid Document

    If strict is true and the requested ID is not in the set of invalid IDs for this collection.

  • Get an entry from the Collection by name. Use of this method assumes that the objects stored in the collection have a "name" attribute.

    Parameters

    • name: string

      The name of the entry to retrieve

    • Optionaloptions: { strict?: boolean } = {}

      Additional options that affect how entries are retrieved

      • Optionalstrict?: boolean

        Throw an Error if the requested name does not exist. Default false.

    Returns any

    The retrieved entry value, if one was found, otherwise undefined

    let c = new Collection([["a", "Alfred"], ["b", "Bob"], ["c", "Cynthia"]]);
    c.getName("Alfred"); // "Alfred"
    c.getName("D"); // undefined
    c.getName("D", {strict: true}); // throws Error
  • Transform each element of the Collection into a new form, returning an Array of transformed values

    Parameters

    • transformer: (arg0: any, arg1: number, arg2: Collection) => any

      A transformation function applied to each entry value. Positional arguments are the value, the index of iteration, and the collection being mapped.

    Returns any[]

    An Array of transformed values

  • Reduce the Collection by applying an evaluator function and accumulating entries

    Parameters

    • reducer: (arg0: any, arg1: any, arg2: number, arg3: Collection) => any

      A reducer function applied to each entry value. Positional arguments are the accumulator, the value, the index of iteration, and the collection being reduced.

    • initial: any

      An initial value which accumulates with each iteration

    Returns any

    The accumulated result

    let c = new Collection([["a", "A"], ["b", "B"], ["c", "C"]]);
    let letters = c.reduce((s, l) => {
    return s + l;
    }, ""); // "ABC"
  • Render any Applications associated with this DocumentCollection.

    Parameters

    • Optionalforce: boolean = false

      Force rendering

    • Optionaloptions: object = {}

      Optional options

    Returns void

  • Find all Documents which match a given search term using a full-text search against their indexed HTML fields and their name. If filters are provided, results are filtered to only those that match the provided values.

    Parameters

    • search: { exclude?: string[]; filters?: FieldFilter[]; query?: string }

      An object configuring the search

      • Optionalexclude?: string[]

        An array of document IDs to exclude from search results

      • Optionalfilters?: FieldFilter[]

        An array of filters to apply

      • Optionalquery?: string

        A case-insensitive search string

    Returns object[] | Document<object, DocumentConstructionContext>[]

  • Parameters

    • id: any
    • document: any

    Returns void

  • Test whether a condition is met by some entry in the Collection.

    Parameters

    • condition: (arg0: any, arg1: number, arg2: Collection) => boolean

      The functional condition to test. Positional arguments are the value, the index of iteration, and the collection being tested.

    Returns boolean

    Was the test condition passed by at least one entry?

  • Convert the Collection to a primitive array of its contents.

    Returns object[]

    An array of contained values

  • Update all objects in this DocumentCollection with a provided transformation. Conditionally filter to only apply to Entities which match a certain condition.

    Parameters

    • transformation: object | Function

      An object of data or function to apply to all matched objects

    • condition: null | Function = null

      A function which tests whether to target each object

    • Optionaloptions: object = {}

      Additional options passed to Document.updateDocuments

    Returns Promise<Document<object, DocumentConstructionContext>[]>

    An array of updated data once the operation is complete

  • Get the searchable fields for a given document or index, based on its data model

    Parameters

    • documentName: string

      The document name

    • Optionaltype: string

      A document subtype

    Returns Record<string, SearchableField>

    A record of searchable DataField definitions

  • Register a Document sheet class as a candidate which can be used to display Documents of a given type. See foundry.applications.apps.DocumentSheetConfig.registerSheet for details.

    Parameters

    • ...args: any[]

      Arguments forwarded to the DocumentSheetConfig.registerSheet method

    Returns void

    foundry.documents.collections.Actors.registerSheet("dnd5e", ActorSheet5eCharacter, {
    types: ["character],
    makeDefault: true
    });
  • Unregister a Document sheet class, removing it from the list of available sheet Applications to use. See foundry.applications.apps.DocumentSheetConfig.unregisterSheet for detauls.

    Parameters

    • ...args: any[]

      Arguments forwarded to the DocumentSheetConfig.unregisterSheet method

    Returns void

    foundry.documents.collections.Actors.unregisterSheet("core", ActorSheet);