For the complete documentation index, see llms.txt. This page is also available as Markdown.

Migration.getOriginStorage

功能说明

上一个 web.tossmini.com Origin 和当前 apps.tossmini.com 会一并获取 Origin 的 localStorage、IndexedDB、OPFS 数据。获取到的数据请按应用规则自行迁移或合并。

类型

没有参数。

Migration.getOriginStorage(): Promise<{
  previous: OriginStorageDump;
  current: OriginStorageDump;
}>;

上一个当前的结构相同。 上一个其中放的是之前的 web.tossmini.com Origin 的值, 当前其中放的是当前的 apps.tossmini.com Origin 的值。

interface OriginStorageDump {
  /** 读取此快照的 Origin。 */
  origin: string;

  /** localStorage 的所有键和原始字符串值。 */
  localStorage: Record<string, string | null>;

  /** Origin 中的 IndexedDB 数据库列表。 */
  indexedDB: Array<{
    /** 数据库名称。 */
    name: string;
    /** 数据库版本。 */
    version: number;
    /** 数据库中的对象存储列表。 */
    objectStores: Array<{
      /** 对象存储名称。 */
      name: string;
      /** 对象存储的 keyPath。若是 out-of-line 键,则为 null。 */
      keyPath: string | string[] | null;
      /** 表示是否为自动生成键的对象存储。 */
      autoIncrement: boolean;
      /** 对象存储中定义的索引列表。 */
      indexes: Array<{
        name: string;
        keyPath: string | string[];
        multiEntry: boolean;
        unique: boolean;
      }>;
      /** 存储在对象存储中的所有记录。 */
      records: Array<{
        /** 从游标中读取的记录键。 */
        key: IDBValidKey;
        /** 记录所指向的对象存储的主键。 */
        primaryKey: IDBValidKey;
        /** 已保存的值。使用前需要按应用的类型进行校验。 */
        value: unknown;
      }>;
    }>;
  }>;

  /** 以 OPFS 根目录为基准的目录和文件列表。 */
  opfs: {
    /** 相对于根目录的路径。路径前不会带斜杠。 */
    directories: string[];
    files: Array<{
      /** 相对于根目录的文件路径。 */
      path: string;
      /** 文件的 MIME 类型。未知时可能为空字符串。 */
      type: string;
      /** 最后修改时间。以 Unix epoch 为基准的毫秒值。 */
      lastModified: number;
      /** 文件的原始字节。字符串文件可通过 TextDecoder 读取。 */
      data: ArrayBuffer;
    }>;
  };

  /** 各存储的读取失败信息。若为空数组,表示三个存储都已读取。 */
  errors: Array<{
    storage: "localStorage" | "indexedDB" | "opfs";
    message: string;
  }>;
}

OriginStorageDump可直接从包中导入。

如果调用本身失败,Promise 会被 reject。若只有部分存储读取失败,Promise 会 resolve,原因会记录在 previous.errorscurrent.errors中。

示例代码

下面的示例仅在没有读取错误且当前 Origin 中没有值时,才会迁移之前的 localStorage 值。如果两边都有值,则保留当前值。

这有帮助吗?