@knotx/data 0.2.11 → 0.2.13

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.
package/dist/index.cjs CHANGED
@@ -143,7 +143,7 @@ class DataManager {
143
143
  dryRun(operation) {
144
144
  switch (operation.type) {
145
145
  case "commitDraft": {
146
- const dataMap = this.applyOperation(new Map(this.dataMap$.value.entries().map(([key, val]) => [key, lodashEs.cloneDeep(val)])), __spreadProps(__spreadValues$1({}, operation), {
146
+ const dataMap = this.applyOperation(new Map(Array.from(this.dataMap$.value.entries()).map(([key, val]) => [key, lodashEs.cloneDeep(val)])), __spreadProps(__spreadValues$1({}, operation), {
147
147
  isDryRun: true
148
148
  }));
149
149
  return dataMap;
@@ -183,9 +183,16 @@ class DataManager {
183
183
  break;
184
184
  }
185
185
  case "draftOperation": {
186
- const draftDataMap = this.drafts$.value.get(operation.draftId);
187
- if (draftDataMap) {
188
- this.applyOperation(new Proxy(draftDataMap.value, {
186
+ let draftDataMap$ = this.drafts$.value.get(operation.draftId);
187
+ if (!draftDataMap$ && operation.isAutoStart) {
188
+ draftDataMap$ = new rxjs.BehaviorSubject(/* @__PURE__ */ new Map());
189
+ this.drafts$.next(this.drafts$.value.set(operation.draftId, draftDataMap$));
190
+ if (typeof operation.isAutoStart !== "object" || operation.isAutoStart.isSilent !== true) {
191
+ this.currentDraftDataMap$.next(draftDataMap$.value);
192
+ }
193
+ }
194
+ if (draftDataMap$) {
195
+ this.applyOperation(new Proxy(draftDataMap$.value, {
189
196
  get(target, prop) {
190
197
  const draft = target;
191
198
  switch (prop) {
@@ -205,17 +212,17 @@ class DataManager {
205
212
  }
206
213
  }
207
214
  }), operation.operation);
208
- if (this.currentDraftDataMap$.value === draftDataMap.value) {
209
- this.currentDraftDataMap$.next(draftDataMap.value);
215
+ if (this.currentDraftDataMap$.value === draftDataMap$.value) {
216
+ this.currentDraftDataMap$.next(draftDataMap$.value);
210
217
  }
211
218
  }
212
219
  break;
213
220
  }
214
221
  case "commitDraft": {
215
- const draftData = this.drafts$.value.get(operation.draftId);
216
- if (draftData) {
222
+ const draftDataMap$ = this.drafts$.value.get(operation.draftId);
223
+ if (draftDataMap$) {
217
224
  const operations = [];
218
- draftData.value.forEach((data, id) => {
225
+ draftDataMap$.value.forEach((data, id) => {
219
226
  if (data === false) {
220
227
  if (dataMap.has(id)) {
221
228
  operations.push({ type: "remove", id });
@@ -237,7 +244,7 @@ class DataManager {
237
244
  this.dispatch({ type: "batch", operations });
238
245
  this.drafts$.value.delete(operation.draftId);
239
246
  this.drafts$.next(this.drafts$.value);
240
- if (this.currentDraftDataMap$.value === draftData.value) {
247
+ if (this.currentDraftDataMap$.value === draftDataMap$.value) {
241
248
  this.currentDraftDataMap$.next(void 0);
242
249
  }
243
250
  }
@@ -246,8 +253,8 @@ class DataManager {
246
253
  case "discardDraft": {
247
254
  this.drafts$.value.delete(operation.draftId);
248
255
  this.drafts$.next(this.drafts$.value);
249
- const draftData = this.drafts$.value.get(operation.draftId);
250
- if (this.currentDraftDataMap$.value === (draftData == null ? void 0 : draftData.value)) {
256
+ const draftDataMap$ = this.drafts$.value.get(operation.draftId);
257
+ if (this.currentDraftDataMap$.value === (draftDataMap$ == null ? void 0 : draftDataMap$.value)) {
251
258
  this.currentDraftDataMap$.next(void 0);
252
259
  }
253
260
  break;
package/dist/index.d.cts CHANGED
@@ -61,6 +61,11 @@ interface DataDraftOperation<T extends IData = IData> {
61
61
  operation: Exclude<DataOperation<T>, {
62
62
  draftId: string;
63
63
  }>;
64
+ /**
65
+ * 是否自动启动草稿,如果为 true,则当草稿不存在时,会自动创建草稿
66
+ * 如果为对象,则自动启动草稿,并透传对应参数
67
+ */
68
+ isAutoStart?: boolean | Omit<DataStartDraftOperation<T>, 'type' | 'draftId'>;
64
69
  }
65
70
  type DataOperation<T extends IData = IData> = DataAddOperation<T> | DataRemoveOperation<T> | DataUpdateOperation<T> | DataBatchOperation<T> | DataStartDraftOperation<T> | DataCommitDraftOperation<T> | DataDiscardDraftOperation<T> | DataDraftOperation<T>;
66
71
  declare class DataManager<TData extends IData = IData, TTag extends string = any> {
package/dist/index.d.mts CHANGED
@@ -61,6 +61,11 @@ interface DataDraftOperation<T extends IData = IData> {
61
61
  operation: Exclude<DataOperation<T>, {
62
62
  draftId: string;
63
63
  }>;
64
+ /**
65
+ * 是否自动启动草稿,如果为 true,则当草稿不存在时,会自动创建草稿
66
+ * 如果为对象,则自动启动草稿,并透传对应参数
67
+ */
68
+ isAutoStart?: boolean | Omit<DataStartDraftOperation<T>, 'type' | 'draftId'>;
64
69
  }
65
70
  type DataOperation<T extends IData = IData> = DataAddOperation<T> | DataRemoveOperation<T> | DataUpdateOperation<T> | DataBatchOperation<T> | DataStartDraftOperation<T> | DataCommitDraftOperation<T> | DataDiscardDraftOperation<T> | DataDraftOperation<T>;
66
71
  declare class DataManager<TData extends IData = IData, TTag extends string = any> {
package/dist/index.d.ts CHANGED
@@ -61,6 +61,11 @@ interface DataDraftOperation<T extends IData = IData> {
61
61
  operation: Exclude<DataOperation<T>, {
62
62
  draftId: string;
63
63
  }>;
64
+ /**
65
+ * 是否自动启动草稿,如果为 true,则当草稿不存在时,会自动创建草稿
66
+ * 如果为对象,则自动启动草稿,并透传对应参数
67
+ */
68
+ isAutoStart?: boolean | Omit<DataStartDraftOperation<T>, 'type' | 'draftId'>;
64
69
  }
65
70
  type DataOperation<T extends IData = IData> = DataAddOperation<T> | DataRemoveOperation<T> | DataUpdateOperation<T> | DataBatchOperation<T> | DataStartDraftOperation<T> | DataCommitDraftOperation<T> | DataDiscardDraftOperation<T> | DataDraftOperation<T>;
66
71
  declare class DataManager<TData extends IData = IData, TTag extends string = any> {
package/dist/index.js CHANGED
@@ -141,7 +141,7 @@ class DataManager {
141
141
  dryRun(operation) {
142
142
  switch (operation.type) {
143
143
  case "commitDraft": {
144
- const dataMap = this.applyOperation(new Map(this.dataMap$.value.entries().map(([key, val]) => [key, cloneDeep(val)])), __spreadProps(__spreadValues$1({}, operation), {
144
+ const dataMap = this.applyOperation(new Map(Array.from(this.dataMap$.value.entries()).map(([key, val]) => [key, cloneDeep(val)])), __spreadProps(__spreadValues$1({}, operation), {
145
145
  isDryRun: true
146
146
  }));
147
147
  return dataMap;
@@ -181,9 +181,16 @@ class DataManager {
181
181
  break;
182
182
  }
183
183
  case "draftOperation": {
184
- const draftDataMap = this.drafts$.value.get(operation.draftId);
185
- if (draftDataMap) {
186
- this.applyOperation(new Proxy(draftDataMap.value, {
184
+ let draftDataMap$ = this.drafts$.value.get(operation.draftId);
185
+ if (!draftDataMap$ && operation.isAutoStart) {
186
+ draftDataMap$ = new BehaviorSubject(/* @__PURE__ */ new Map());
187
+ this.drafts$.next(this.drafts$.value.set(operation.draftId, draftDataMap$));
188
+ if (typeof operation.isAutoStart !== "object" || operation.isAutoStart.isSilent !== true) {
189
+ this.currentDraftDataMap$.next(draftDataMap$.value);
190
+ }
191
+ }
192
+ if (draftDataMap$) {
193
+ this.applyOperation(new Proxy(draftDataMap$.value, {
187
194
  get(target, prop) {
188
195
  const draft = target;
189
196
  switch (prop) {
@@ -203,17 +210,17 @@ class DataManager {
203
210
  }
204
211
  }
205
212
  }), operation.operation);
206
- if (this.currentDraftDataMap$.value === draftDataMap.value) {
207
- this.currentDraftDataMap$.next(draftDataMap.value);
213
+ if (this.currentDraftDataMap$.value === draftDataMap$.value) {
214
+ this.currentDraftDataMap$.next(draftDataMap$.value);
208
215
  }
209
216
  }
210
217
  break;
211
218
  }
212
219
  case "commitDraft": {
213
- const draftData = this.drafts$.value.get(operation.draftId);
214
- if (draftData) {
220
+ const draftDataMap$ = this.drafts$.value.get(operation.draftId);
221
+ if (draftDataMap$) {
215
222
  const operations = [];
216
- draftData.value.forEach((data, id) => {
223
+ draftDataMap$.value.forEach((data, id) => {
217
224
  if (data === false) {
218
225
  if (dataMap.has(id)) {
219
226
  operations.push({ type: "remove", id });
@@ -235,7 +242,7 @@ class DataManager {
235
242
  this.dispatch({ type: "batch", operations });
236
243
  this.drafts$.value.delete(operation.draftId);
237
244
  this.drafts$.next(this.drafts$.value);
238
- if (this.currentDraftDataMap$.value === draftData.value) {
245
+ if (this.currentDraftDataMap$.value === draftDataMap$.value) {
239
246
  this.currentDraftDataMap$.next(void 0);
240
247
  }
241
248
  }
@@ -244,8 +251,8 @@ class DataManager {
244
251
  case "discardDraft": {
245
252
  this.drafts$.value.delete(operation.draftId);
246
253
  this.drafts$.next(this.drafts$.value);
247
- const draftData = this.drafts$.value.get(operation.draftId);
248
- if (this.currentDraftDataMap$.value === (draftData == null ? void 0 : draftData.value)) {
254
+ const draftDataMap$ = this.drafts$.value.get(operation.draftId);
255
+ if (this.currentDraftDataMap$.value === (draftDataMap$ == null ? void 0 : draftDataMap$.value)) {
249
256
  this.currentDraftDataMap$.next(void 0);
250
257
  }
251
258
  break;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knotx/data",
3
- "version": "0.2.11",
3
+ "version": "0.2.13",
4
4
  "description": "Data for Knotx",
5
5
  "author": "boenfu",
6
6
  "license": "MIT",
@@ -33,9 +33,9 @@
33
33
  },
34
34
  "devDependencies": {
35
35
  "@types/lodash-es": "^4.17.12",
36
- "@knotx/build-config": "0.2.11",
37
- "@knotx/eslint-config": "0.2.11",
38
- "@knotx/typescript-config": "0.2.11"
36
+ "@knotx/build-config": "0.2.13",
37
+ "@knotx/eslint-config": "0.2.13",
38
+ "@knotx/typescript-config": "0.2.13"
39
39
  },
40
40
  "scripts": {
41
41
  "build": "unbuild",