Class MapeoProject

Hierarchy

  • TypedEmitter
    • MapeoProject

Constructors

  • Parameters

    • opts: {
          coreStorage: CoreStorage;
          dbPath: string;
          encryptionKeys: EncryptionKeys;
          getMediaBaseUrl: ((mediaType: "blobs" | "icons") => Promise<string>);
          keyManager: KeyManager;
          localPeers: LocalPeers;
          logger: undefined | Logger;
          projectKey: Buffer;
          projectMigrationsFolder: string;
          projectSecretKey: undefined | Buffer;
          sharedDb: BetterSQLite3Database<Record<string, never>>;
          sharedIndexWriter: IndexWriter<MapeoDocTables>;
      }
      • coreStorage: CoreStorage

        Folder to store all hypercore data

      • dbPath: string

        Path to store project sqlite db. Use :memory: for memory storage

      • encryptionKeys: EncryptionKeys

        Encryption keys for each namespace

      • getMediaBaseUrl: ((mediaType: "blobs" | "icons") => Promise<string>)
          • (mediaType): Promise<string>
          • Parameters

            • mediaType: "blobs" | "icons"

            Returns Promise<string>

      • keyManager: KeyManager

        mapeo/crypto KeyManager instance

      • localPeers: LocalPeers
      • logger: undefined | Logger
      • projectKey: Buffer

        32-byte public key of the project creator core

      • projectMigrationsFolder: string

        path for drizzle migration folder for project

      • projectSecretKey: undefined | Buffer

        32-byte secret key of the project creator core

      • sharedDb: BetterSQLite3Database<Record<string, never>>
      • sharedIndexWriter: IndexWriter<MapeoDocTables>

    Returns MapeoProject

Properties

$blobs: BlobApi
EMPTY_PROJECT_SETTINGS: Readonly<{}> = EMPTY_PROJECT_SETTINGS

Accessors

  • get [kDataTypes](): {
        coreOwnership: DataType<DataStore<"auth", "coreOwnership" | "role">, SQLiteTableWithColumns<{}>, "coreOwnership", {}, {}>;
        deviceInfo: DataType<DataStore<"config",
            | "translation"
            | "preset"
            | "field"
            | "projectSettings"
            | "deviceInfo"
            | "icon">, SQLiteTableWithColumns<{}>, "deviceInfo", {}, {}>;
        field: DataType<DataStore<"config",
            | "translation"
            | "preset"
            | "field"
            | "projectSettings"
            | "deviceInfo"
            | "icon">, SQLiteTableWithColumns<{}>, "field", {}, {}>;
        icon: DataType<DataStore<"config",
            | "translation"
            | "preset"
            | "field"
            | "projectSettings"
            | "deviceInfo"
            | "icon">, SQLiteTableWithColumns<{}>, "icon", {}, {}>;
        observation: DataType<DataStore<"data", "observation" | "track">, SQLiteTableWithColumns<{}>, "observation", {}, {}>;
        preset: DataType<DataStore<"config",
            | "translation"
            | "preset"
            | "field"
            | "projectSettings"
            | "deviceInfo"
            | "icon">, SQLiteTableWithColumns<{}>, "preset", {}, {}>;
        projectSettings: DataType<DataStore<"config",
            | "translation"
            | "preset"
            | "field"
            | "projectSettings"
            | "deviceInfo"
            | "icon">, SQLiteTableWithColumns<{}>, "projectSettings", {}, {}>;
        role: DataType<DataStore<"auth", "coreOwnership" | "role">, SQLiteTableWithColumns<{}>, "role", {}, {}>;
        track: DataType<DataStore<"data", "observation" | "track">, SQLiteTableWithColumns<{}>, "track", {}, {}>;
        translation: DataType<DataStore<"config",
            | "translation"
            | "preset"
            | "field"
            | "projectSettings"
            | "deviceInfo"
            | "icon">, SQLiteTableWithColumns<{}>, "translation", {}, {}>;
    }
  • DataTypes object mappings, used for tests

    Returns {
        coreOwnership: DataType<DataStore<"auth", "coreOwnership" | "role">, SQLiteTableWithColumns<{}>, "coreOwnership", {}, {}>;
        deviceInfo: DataType<DataStore<"config",
            | "translation"
            | "preset"
            | "field"
            | "projectSettings"
            | "deviceInfo"
            | "icon">, SQLiteTableWithColumns<{}>, "deviceInfo", {}, {}>;
        field: DataType<DataStore<"config",
            | "translation"
            | "preset"
            | "field"
            | "projectSettings"
            | "deviceInfo"
            | "icon">, SQLiteTableWithColumns<{}>, "field", {}, {}>;
        icon: DataType<DataStore<"config",
            | "translation"
            | "preset"
            | "field"
            | "projectSettings"
            | "deviceInfo"
            | "icon">, SQLiteTableWithColumns<{}>, "icon", {}, {}>;
        observation: DataType<DataStore<"data", "observation" | "track">, SQLiteTableWithColumns<{}>, "observation", {}, {}>;
        preset: DataType<DataStore<"config",
            | "translation"
            | "preset"
            | "field"
            | "projectSettings"
            | "deviceInfo"
            | "icon">, SQLiteTableWithColumns<{}>, "preset", {}, {}>;
        projectSettings: DataType<DataStore<"config",
            | "translation"
            | "preset"
            | "field"
            | "projectSettings"
            | "deviceInfo"
            | "icon">, SQLiteTableWithColumns<{}>, "projectSettings", {}, {}>;
        role: DataType<DataStore<"auth", "coreOwnership" | "role">, SQLiteTableWithColumns<{}>, "role", {}, {}>;
        track: DataType<DataStore<"data", "observation" | "track">, SQLiteTableWithColumns<{}>, "track", {}, {}>;
        translation: DataType<DataStore<"config",
            | "translation"
            | "preset"
            | "field"
            | "projectSettings"
            | "deviceInfo"
            | "icon">, SQLiteTableWithColumns<{}>, "translation", {}, {}>;
    }

    • coreOwnership: DataType<DataStore<"auth", "coreOwnership" | "role">, SQLiteTableWithColumns<{}>, "coreOwnership", {}, {}>
    • deviceInfo: DataType<DataStore<"config",
          | "translation"
          | "preset"
          | "field"
          | "projectSettings"
          | "deviceInfo"
          | "icon">, SQLiteTableWithColumns<{}>, "deviceInfo", {}, {}>
    • field: DataType<DataStore<"config",
          | "translation"
          | "preset"
          | "field"
          | "projectSettings"
          | "deviceInfo"
          | "icon">, SQLiteTableWithColumns<{}>, "field", {}, {}>
    • icon: DataType<DataStore<"config",
          | "translation"
          | "preset"
          | "field"
          | "projectSettings"
          | "deviceInfo"
          | "icon">, SQLiteTableWithColumns<{}>, "icon", {}, {}>
    • observation: DataType<DataStore<"data", "observation" | "track">, SQLiteTableWithColumns<{}>, "observation", {}, {}>
    • preset: DataType<DataStore<"config",
          | "translation"
          | "preset"
          | "field"
          | "projectSettings"
          | "deviceInfo"
          | "icon">, SQLiteTableWithColumns<{}>, "preset", {}, {}>
    • projectSettings: DataType<DataStore<"config",
          | "translation"
          | "preset"
          | "field"
          | "projectSettings"
          | "deviceInfo"
          | "icon">, SQLiteTableWithColumns<{}>, "projectSettings", {}, {}>
    • role: DataType<DataStore<"auth", "coreOwnership" | "role">, SQLiteTableWithColumns<{}>, "role", {}, {}>
    • track: DataType<DataStore<"data", "observation" | "track">, SQLiteTableWithColumns<{}>, "track", {}, {}>
    • translation: DataType<DataStore<"config",
          | "translation"
          | "preset"
          | "field"
          | "projectSettings"
          | "deviceInfo"
          | "icon">, SQLiteTableWithColumns<{}>, "translation", {}, {}>
  • get deviceId(): string
  • Returns string

  • get field(): DataType<DataStore<"config",
        | "translation"
        | "preset"
        | "field"
        | "projectSettings"
        | "deviceInfo"
        | "icon">, SQLiteTableWithColumns<{}>, "field", {}, {}>
  • Returns DataType<DataStore<"config",
        | "translation"
        | "preset"
        | "field"
        | "projectSettings"
        | "deviceInfo"
        | "icon">, SQLiteTableWithColumns<{}>, "field", {}, {}>

  • get observation(): DataType<DataStore<"data", "observation" | "track">, SQLiteTableWithColumns<{}>, "observation", {}, {}>
  • Returns DataType<DataStore<"data", "observation" | "track">, SQLiteTableWithColumns<{}>, "observation", {}, {}>

  • get preset(): DataType<DataStore<"config",
        | "translation"
        | "preset"
        | "field"
        | "projectSettings"
        | "deviceInfo"
        | "icon">, SQLiteTableWithColumns<{}>, "preset", {}, {}>
  • Returns DataType<DataStore<"config",
        | "translation"
        | "preset"
        | "field"
        | "projectSettings"
        | "deviceInfo"
        | "icon">, SQLiteTableWithColumns<{}>, "preset", {}, {}>

  • get track(): DataType<DataStore<"data", "observation" | "track">, SQLiteTableWithColumns<{}>, "track", {}, {}>
  • Returns DataType<DataStore<"data", "observation" | "track">, SQLiteTableWithColumns<{}>, "track", {}, {}>

Methods

  • Returns Promise<Role<
        | "a12a6702b93bd7ff"
        | "f7c150f5a3a9a855"
        | "012fd2d431c0bf60"
        | "9e6d29263cba36c9"
        | "8ced989b1904606b"
        | "08e4251e36f6e7ed">>

  • Parameters

    • originalVersionId: string

      The originalVersionId from a document.

    Returns Promise<string>

    The device ID for this creator.

    When device ID cannot be found.

  • Clear data if we've left the project. No-op if you're still in the project.

    Returns Promise<void>

  • Returns Promise<void>

  • Replicate a project to a @hyperswarm/secret-stream. Invites will not function because the RPC channel is not connected for project replication, and only this project will replicate (to replicate multiple projects you need to replicate the manager instance via manager[kManagerReplicate])

    Parameters

    • stream: Protomux<Duplex<any, any, any, any, true, true, DuplexEvents<any, any>>>

      A duplex stream, a @hyperswarm/secret-stream, or a Protomux instance

    Returns Duplex<any, any, any, any, true, true, DuplexEvents<any, any>> & {} & Protomux<Duplex<any, any, any, any, true, true, DuplexEvents<any, any>>>

  • Parameters

    • value: Pick<{}, "name" | "deviceType">

    Returns Promise<{}>

  • Returns Promise<void>

  • Parameters

    • opts: {
          configPath: string;
      }
      • configPath: string

    Returns Promise<Error[]>

  • Resolves when hypercores have all loaded

    Returns Promise<void>