ice-render 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -80,6 +80,18 @@ declare class ICE {
80
80
  typeMapping: Record<string, any>;
81
81
  /** 构造函数 → 类型名 的反查表(序列化用)。惰性构建,registerType/init 后失效重建。 */
82
82
  private __typeIdMapping;
83
+ /**
84
+ * 文档级元信息(当前只有 `createTime`)。
85
+ *
86
+ * 语义:**首次创建时间跨「打开 → 再保存」保留**。
87
+ * - `Deserializer` 读到合法 `createTime` 时写在这里(归一化成 ISO 8601 UTC);
88
+ * - `Serializer` 写出时优先用它,`lastModifyTime` 才是"这一次写出的时刻";
89
+ * - `clearAll()` 清空场景时一并清掉(清空后新建的内容属于新文档,不该继承旧文档的创建时间);
90
+ * - 因此"打开 A → 编辑 → 保存"里 `createTime` 稳定不变,只有 `lastModifyTime` 前进。
91
+ */
92
+ documentMeta: {
93
+ createTime?: string;
94
+ };
83
95
  renderer: any;
84
96
  animationManager: AnimationManager;
85
97
  eventDispatcher: DOMEventDispatcher;
@@ -80,6 +80,18 @@ declare class ICE {
80
80
  typeMapping: Record<string, any>;
81
81
  /** 构造函数 → 类型名 的反查表(序列化用)。惰性构建,registerType/init 后失效重建。 */
82
82
  private __typeIdMapping;
83
+ /**
84
+ * 文档级元信息(当前只有 `createTime`)。
85
+ *
86
+ * 语义:**首次创建时间跨「打开 → 再保存」保留**。
87
+ * - `Deserializer` 读到合法 `createTime` 时写在这里(归一化成 ISO 8601 UTC);
88
+ * - `Serializer` 写出时优先用它,`lastModifyTime` 才是"这一次写出的时刻";
89
+ * - `clearAll()` 清空场景时一并清掉(清空后新建的内容属于新文档,不该继承旧文档的创建时间);
90
+ * - 因此"打开 A → 编辑 → 保存"里 `createTime` 稳定不变,只有 `lastModifyTime` 前进。
91
+ */
92
+ documentMeta: {
93
+ createTime?: string;
94
+ };
83
95
  renderer: any;
84
96
  animationManager: AnimationManager;
85
97
  eventDispatcher: DOMEventDispatcher;
@@ -23,6 +23,13 @@ export default class Deserializer {
23
23
  private _unknownTypes;
24
24
  get unknownTypes(): string[];
25
25
  fromJSONObject(jsonObj: any): void;
26
+ /**
27
+ * 记住文档的「首次创建时间」,供之后 `Serializer` 沿用(见 `ICE.documentMeta`)。
28
+ *
29
+ * - 旧数据里的 `2022/1/1 00:00:00` 这类历史格式会被归一化成 ISO 8601 UTC;
30
+ * - 数据里没有 / 解析不了 → 清掉,让下一次写出取当前时刻(避免沿用上一个文档的时间)。
31
+ */
32
+ private __rememberCreateTime;
26
33
  fromJSONString(jsonStr: string): void;
27
34
  /**
28
35
  * 版本迁移钩子:当序列化格式版本变化时,在此处按版本逐级升级数据结构。
@@ -23,6 +23,13 @@ export default class Deserializer {
23
23
  private _unknownTypes;
24
24
  get unknownTypes(): string[];
25
25
  fromJSONObject(jsonObj: any): void;
26
+ /**
27
+ * 记住文档的「首次创建时间」,供之后 `Serializer` 沿用(见 `ICE.documentMeta`)。
28
+ *
29
+ * - 旧数据里的 `2022/1/1 00:00:00` 这类历史格式会被归一化成 ISO 8601 UTC;
30
+ * - 数据里没有 / 解析不了 → 清掉,让下一次写出取当前时刻(避免沿用上一个文档的时间)。
31
+ */
32
+ private __rememberCreateTime;
26
33
  fromJSONString(jsonStr: string): void;
27
34
  /**
28
35
  * 版本迁移钩子:当序列化格式版本变化时,在此处按版本逐级升级数据结构。
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 文档时间戳工具。
3
+ *
4
+ * 序列化产物里的 `createTime` / `lastModifyTime` 统一是 **ISO 8601 UTC**
5
+ * (`2026-09-13T04:12:33.123Z`):与运行环境的语言/时区无关、定长、字典序即时间序、任何工具都能解析。
6
+ *
7
+ * 但读进来的数据可能是历史格式(例如 `2022/1/1 00:00:00`),所以这里统一做一次归一化:
8
+ * 能解析成合法时间就转成 ISO,解析不了就当作"没有这个信息"(调用方回退到当前时刻)。
9
+ */
10
+ /**
11
+ * 把任意历史时间值归一化成 ISO 8601 UTC 字符串。
12
+ *
13
+ * @param value 待归一化的值(字符串 / 数字 / Date 都可以,其它类型一律视为无值)
14
+ * @returns ISO 字符串;无法解析时返回 `undefined`
15
+ */
16
+ export declare function toIsoTime(value: unknown): string | undefined;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * 文档时间戳工具。
3
+ *
4
+ * 序列化产物里的 `createTime` / `lastModifyTime` 统一是 **ISO 8601 UTC**
5
+ * (`2026-09-13T04:12:33.123Z`):与运行环境的语言/时区无关、定长、字典序即时间序、任何工具都能解析。
6
+ *
7
+ * 但读进来的数据可能是历史格式(例如 `2022/1/1 00:00:00`),所以这里统一做一次归一化:
8
+ * 能解析成合法时间就转成 ISO,解析不了就当作"没有这个信息"(调用方回退到当前时刻)。
9
+ */
10
+ /**
11
+ * 把任意历史时间值归一化成 ISO 8601 UTC 字符串。
12
+ *
13
+ * @param value 待归一化的值(字符串 / 数字 / Date 都可以,其它类型一律视为无值)
14
+ * @returns ISO 字符串;无法解析时返回 `undefined`
15
+ */
16
+ export declare function toIsoTime(value: unknown): string | undefined;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "author": "大漠穷秋",
3
3
  "name": "ice-render",
4
- "version": "2.0.0",
4
+ "version": "2.0.1",
5
5
  "description": "A canvas engine for interactive graphics.",
6
6
  "repository": {
7
7
  "type": "git",