@flashist/appframework 0.0.225 → 0.0.227

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flashist/appframework",
3
- "version": "0.0.225",
3
+ "version": "0.0.227",
4
4
  "scripts": {
5
5
  "build": "gulp",
6
6
  "publish:patch": "npm version patch && npm run build && cd ./dist && npm publish",
@@ -21,7 +21,7 @@ export class PagesView extends AppResizableContainer {
21
21
  // let tempPageClass = pagesModuleState.pageIdToViewClassMap[singlePageId];
22
22
  // this.viewStack.addViewClass(tempPageClass, singlePageId);
23
23
  // }
24
- const appState = appStorage().getState();
24
+ const appState = appStorage().getMutableState();
25
25
  let pageIds = Object.keys(appState.pages.pageIdToViewClassMap);
26
26
  for (let singlePageId of pageIds) {
27
27
  let tempPageClass = appState.pages.pageIdToViewClassMap[singlePageId];
@@ -1 +1 @@
1
- {"version":3,"file":"PagesView.js","sourceRoot":"","sources":["../../../src/pages/views/PagesView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,EAAE,mCAAmC,EAAE,MAAM,mEAAmE,CAAC;AACxH,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAIxD,MAAM,OAAO,SAAU,SAAQ,qBAAqB;IAMtC,YAAY,CAAC,GAAG,IAAI;QAC1B,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAEzB,6CAA6C;QAE7C,IAAI,CAAC,SAAS,GAAG,IAAI,mCAAmC,EAAgB,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE9B,wEAAwE;QACxE,6DAA6D;QAC7D,6CAA6C;QAC7C,iFAAiF;QACjF,4EAA4E;QAC5E,qDAAqD;QAErD,8DAA8D;QAC9D,IAAI;QAEJ,oHAAoH;QACpH,8EAA8E;QAC9E,sCAAsC;QACtC,+EAA+E;QAC/E,gEAAgE;QAChE,IAAI;QAEJ,MAAM,QAAQ,GAAqB,UAAU,EAAE,CAAC,QAAQ,EAAoB,CAAC;QAC7E,IAAI,OAAO,GAAa,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACzE,KAAK,IAAI,YAAY,IAAI,OAAO,EAAE;YAC9B,IAAI,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;YACtE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;SAC5D;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAES,YAAY;QAClB,KAAK,CAAC,YAAY,EAAE,CAAC;QAErB,6CAA6C;QAC7C,uBAAuB;QACvB,sCAAsC;QACtC,0BAA0B;QAC1B,KAAK;QACL,gDAAgD;QAChD,cAAc;QAEd,QAAQ;QACR,IAAI;IACR,CAAC;IAED,qCAAqC;IACrC,8BAA8B;IAC9B,IAAI;IAEG,eAAe;QAClB,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,QAAQ,EAAoB,CAAC,KAAK,CAAC,MAAM,CAAC;QAEnF,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAES,OAAO;QACb,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAE5D,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;YAC7B,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE;gBAC1C,UAAU,EAAE,CAAC,MAAM,EAAoB,CACnC,8BAA8B,EAC9B;oBACI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;oBAC7C,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;iBAChD,CACJ,CAAC;aACL;SACJ;IACL,CAAC;CACJ"}
1
+ {"version":3,"file":"PagesView.js","sourceRoot":"","sources":["../../../src/pages/views/PagesView.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,kDAAkD,CAAC;AACzF,OAAO,EAAE,mCAAmC,EAAE,MAAM,mEAAmE,CAAC;AACxH,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAIxD,MAAM,OAAO,SAAU,SAAQ,qBAAqB;IAMtC,YAAY,CAAC,GAAG,IAAI;QAC1B,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAEzB,6CAA6C;QAE7C,IAAI,CAAC,SAAS,GAAG,IAAI,mCAAmC,EAAgB,CAAC;QACzE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE9B,wEAAwE;QACxE,6DAA6D;QAC7D,6CAA6C;QAC7C,iFAAiF;QACjF,4EAA4E;QAC5E,qDAAqD;QAErD,8DAA8D;QAC9D,IAAI;QAEJ,oHAAoH;QACpH,8EAA8E;QAC9E,sCAAsC;QACtC,+EAA+E;QAC/E,gEAAgE;QAChE,IAAI;QAEJ,MAAM,QAAQ,GAAqB,UAAU,EAAE,CAAC,eAAe,EAAoB,CAAC;QACpF,IAAI,OAAO,GAAa,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACzE,KAAK,IAAI,YAAY,IAAI,OAAO,EAAE;YAC9B,IAAI,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;YACtE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;SAC5D;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAES,YAAY;QAClB,KAAK,CAAC,YAAY,EAAE,CAAC;QAErB,6CAA6C;QAC7C,uBAAuB;QACvB,sCAAsC;QACtC,0BAA0B;QAC1B,KAAK;QACL,gDAAgD;QAChD,cAAc;QAEd,QAAQ;QACR,IAAI;IACR,CAAC;IAED,qCAAqC;IACrC,8BAA8B;IAC9B,IAAI;IAEG,eAAe;QAClB,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,EAAE,CAAC,QAAQ,EAAoB,CAAC,KAAK,CAAC,MAAM,CAAC;QAEnF,IAAI,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC;IAES,OAAO;QACb,KAAK,CAAC,OAAO,EAAE,CAAC;QAEhB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAE5D,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE;YAC7B,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE;gBAC1C,UAAU,EAAE,CAAC,MAAM,EAAoB,CACnC,8BAA8B,EAC9B;oBACI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;oBAC7C,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;iBAChD,CACJ,CAAC;aACL;SACJ;IACL,CAAC;CACJ"}
@@ -2,4 +2,6 @@ export declare class RendererManagerConfigVO {
2
2
  antialias: boolean;
3
3
  backgroundAlpha: number;
4
4
  targetFps?: number;
5
+ canvasCss: any;
6
+ canvasParentElementId?: string;
5
7
  }
@@ -2,6 +2,11 @@ export class RendererManagerConfigVO {
2
2
  constructor() {
3
3
  this.antialias = true;
4
4
  this.backgroundAlpha = 0;
5
+ this.canvasCss = {
6
+ position: "absolute",
7
+ top: "0px",
8
+ left: "0px"
9
+ };
5
10
  }
6
11
  }
7
12
  //# sourceMappingURL=RendererManagerConfigVO.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RendererManagerConfigVO.js","sourceRoot":"","sources":["../../../src/renderer/data/RendererManagerConfigVO.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAuB;IAApC;QACI,cAAS,GAAY,IAAI,CAAC;QAC1B,oBAAe,GAAW,CAAC,CAAA;IAG/B,CAAC;CAAA"}
1
+ {"version":3,"file":"RendererManagerConfigVO.js","sourceRoot":"","sources":["../../../src/renderer/data/RendererManagerConfigVO.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAuB;IAApC;QACI,cAAS,GAAY,IAAI,CAAC;QAC1B,oBAAe,GAAW,CAAC,CAAA;QAI3B,cAAS,GAAQ;YACb,QAAQ,EAAE,UAAU;YACpB,GAAG,EAAE,KAAK;YACV,IAAI,EAAE,KAAK;SACd,CAAC;IAGN,CAAC;CAAA"}
@@ -18,11 +18,21 @@ export class RendererManager extends BaseAppManager {
18
18
  // Renderer
19
19
  // Facade.instance.app.renderer.autoDensity = true;
20
20
  // CSS settings
21
- Facade.instance.app.renderer.view.style.position = "absolute";
22
- Facade.instance.app.renderer.view.style.top = "0px";
23
- Facade.instance.app.renderer.view.style.left = "0px";
21
+ // (Facade.instance.app.renderer.view.style as any).position = "absolute";
22
+ // (Facade.instance.app.renderer.view.style as any).top = "0px";
23
+ // (Facade.instance.app.renderer.view.style as any).left = "0px";
24
+ if (this.config.canvasCss) {
25
+ const canvasKeys = Object.keys(this.config.canvasCss);
26
+ for (let singleCssKey of canvasKeys) {
27
+ Facade.instance.app.renderer.view.style[singleCssKey] = this.config.canvasCss[singleCssKey];
28
+ }
29
+ }
30
+ let canvasParentElement = document.body;
31
+ if (this.config.canvasParentElementId) {
32
+ canvasParentElement = document.getElementById(this.config.canvasParentElementId);
33
+ }
24
34
  // Append the renderer canvas to DOM
25
- document.body.appendChild(Facade.instance.app.view);
35
+ canvasParentElement.appendChild(Facade.instance.app.view);
26
36
  }
27
37
  resize(width, height, pixelRatio) {
28
38
  this.dispatchEvent(RendererManagerEvent.PRE_RESIZE_HOOK, new Point(width, height));
@@ -1 +1 @@
1
- {"version":3,"file":"RendererManager.js","sourceRoot":"","sources":["../../../src/renderer/managers/RendererManager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAiB,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE1E,MAAM,OAAO,eAAgB,SAAQ,cAAc;IAIrC,YAAY;QAClB,KAAK,CAAC,YAAY,EAAE,CAAC;QAErB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,uBAAuB,CAAC,CAAC;QAEnD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;YACvB,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;SAC5D;QAED,MAAM,SAAS,GAAkB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1C,QAAQ;QACR,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QAE7C,WAAW;QACX,mDAAmD;QACnD,eAAe;QACd,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAa,CAAC,QAAQ,GAAG,UAAU,CAAC;QACtE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAa,CAAC,GAAG,GAAG,KAAK,CAAC;QAC5D,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAa,CAAC,IAAI,GAAG,KAAK,CAAC;QAE9D,oCAAoC;QACpC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAW,CAAC,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,KAAa,EAAE,MAAc,EAAE,UAAkB;QAC3D,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,eAAe,EAAE,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;QAEnF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,EAAE,MAAM,GAAG,UAAU,CAAC,CAAC;QAC7E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;QAC7D,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;QAE/D,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,IAAW,aAAa;QACpB,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;IAC9C,CAAC;IAED,IAAW,cAAc;QACrB,OAAO,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC/C,CAAC;CACJ"}
1
+ {"version":3,"file":"RendererManager.js","sourceRoot":"","sources":["../../../src/renderer/managers/RendererManager.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ export declare class AppStateStorage extends BaseObjectWithGlobalDispatcher {
27
27
 
28
28
  * @returns
29
29
  */
30
- changePropertyWrapper<StateType extends object>(): <WrapperStateType extends Partial<Flatten<StateType, never>[DeepKeyType]>, DeepKeyType extends keyof Flatten<StateType, never>>(key: DeepKeyType) => <WrapperDeepKeyType extends keyof Flatten<WrapperStateType, never>>(wrapperKey: WrapperDeepKeyType, value: DeepPartial<Flatten<WrapperStateType, never>[WrapperDeepKeyType]>) => void;
30
+ changePropertyWrapper<StateType extends object>(): <WrapperStateType extends Partial<Flatten<StateType, never>[DeepKeyType]>, DeepKeyType extends keyof Flatten<StateType, never>>(key: DeepKeyType) => <WrapperDeepKeyType extends keyof Flatten<WrapperStateType, never>>(wrapperKey: WrapperDeepKeyType, value: DeepPartial<Flatten<WrapperStateType, never>[WrapperDeepKeyType], {}>) => void;
31
31
  protected isInitialized: boolean;
32
32
  protected state: object;
33
33
  protected pathsHelperDataCache: {
@@ -44,9 +44,9 @@ export declare class AppStateStorage extends BaseObjectWithGlobalDispatcher {
44
44
  getValue<StateType extends object>(): <DeepKeyType extends keyof Flatten<StateType, never>>(key: DeepKeyType) => Partial<Flatten<StateType, never>[DeepKeyType]>;
45
45
  protected innerGetValue<StateType, DeepKeyType extends keyof Flatten<StateType>, ValueType extends Flatten<StateType>[DeepKeyType]>(stateForTypings: StateType, deepKey: DeepKeyType): Partial<ValueType>;
46
46
  protected processStateAction<StateType, DeepKeyType extends keyof Flatten<StateType>, ValueType extends Flatten<StateType>[DeepKeyType]>(stateForTypings: StateType, deepKey: DeepKeyType, config: IAppStateChangeConfigVO<ValueType>): any;
47
- substitute<StateType extends object>(): <DeepKeyType extends keyof Flatten<StateType, never>>(key: DeepKeyType, value: DeepPartial<Flatten<StateType, never>[DeepKeyType]>) => void;
47
+ substitute<StateType extends object>(): <DeepKeyType extends keyof Flatten<StateType, never>>(key: DeepKeyType, value: DeepPartial<Flatten<StateType, never>[DeepKeyType], {}>) => void;
48
48
  protected innerSubstitute<StateType, DeepKeyType extends keyof Flatten<StateType>, ValueType extends Flatten<StateType>[DeepKeyType]>(stateForTypings: StateType, deepKey: DeepKeyType, value: DeepPartial<ValueType>): void;
49
- change<StateType extends object>(): <DeepKeyType extends keyof Flatten<StateType, never>>(key: DeepKeyType, value: DeepPartial<Flatten<StateType, never>[DeepKeyType]>) => void;
49
+ change<StateType extends object>(): <DeepKeyType extends keyof Flatten<StateType, never>>(key: DeepKeyType, value: DeepPartial<Flatten<StateType, never>[DeepKeyType], {}>) => void;
50
50
  protected innerChange<StateType, DeepKeyType extends keyof Flatten<StateType>, ValueType extends Flatten<StateType>[DeepKeyType]>(stateForTypings: StateType, deepKey: DeepKeyType, value: DeepPartial<ValueType>): void;
51
51
  delete<StateType extends object>(): <DeepKeyType extends keyof Flatten<StateType, never>, ValueType extends Flatten<StateType, never>[DeepKeyType] & any[] = Flatten<StateType, never>[DeepKeyType] & any[]>(key: DeepKeyType) => Flatten<StateType, never>[DeepKeyType];
52
52
  protected innerDelete<StateType, DeepKeyType extends keyof Flatten<StateType>, ValueType extends Flatten<StateType>[DeepKeyType]>(stateForTypings: StateType, deepKey: DeepKeyType): ValueType;
@@ -1,3 +1,83 @@
1
- export type DeepPartial<T> = T extends object ? {
2
- [P in keyof T]?: DeepPartial<T[P]>;
3
- } : T;
1
+ import { BuiltIns } from "./DeepReadableTypings";
2
+ /**
3
+ @see DeepPartial
4
+ */
5
+ export type DeepPartialOptions = {
6
+ /**
7
+ Whether to affect the individual elements of arrays and tuples.
8
+
9
+ @default false
10
+ */
11
+ readonly recurseIntoArrays?: boolean;
12
+ };
13
+ /**
14
+ Create a type from another type with all keys and nested keys set to optional.
15
+
16
+ Use-cases:
17
+ - Merging a default settings/config object with another object, the second object would be a deep partial of the default object.
18
+ - Mocking and testing complex entities, where populating an entire object with its keys would be redundant in terms of the mock or test.
19
+
20
+ @example
21
+ ```
22
+ import type {DeepPartial} from 'type-fest';
23
+
24
+ const settings: Settings = {
25
+ textEditor: {
26
+ fontSize: 14;
27
+ fontColor: '#000000';
28
+ fontWeight: 400;
29
+ }
30
+ autocomplete: false;
31
+ autosave: true;
32
+ };
33
+
34
+ const applySavedSettings = (savedSettings: DeepPartial<Settings>) => {
35
+ return {...settings, ...savedSettings};
36
+ }
37
+
38
+ settings = applySavedSettings({textEditor: {fontWeight: 500}});
39
+ ```
40
+
41
+ By default, this does not affect elements in array and tuple types. You can change this by passing `{recurseIntoArrays: true}` as the second type argument:
42
+
43
+ ```
44
+ import type {DeepPartial} from 'type-fest';
45
+
46
+ interface Settings {
47
+ languages: string[];
48
+ }
49
+
50
+ const partialSettings: DeepPartial<Settings, {recurseIntoArrays: true}> = {
51
+ languages: [undefined]
52
+ };
53
+ ```
54
+
55
+ @category Object
56
+ @category Array
57
+ @category Set
58
+ @category Map
59
+ */
60
+ export type DeepPartial<T, Options extends DeepPartialOptions = {}> = T extends BuiltIns ? T : T extends Map<infer KeyType, infer ValueType> ? DeepPartialMap<KeyType, ValueType, Options> : T extends Set<infer ItemType> ? DeepPartialSet<ItemType, Options> : T extends ReadonlyMap<infer KeyType, infer ValueType> ? DeepPartialReadonlyMap<KeyType, ValueType, Options> : T extends ReadonlySet<infer ItemType> ? DeepPartialReadonlySet<ItemType, Options> : T extends ((...arguments_: any[]) => unknown) ? T | undefined : T extends object ? T extends ReadonlyArray<infer ItemType> ? Options['recurseIntoArrays'] extends true ? ItemType[] extends T ? readonly ItemType[] extends T ? ReadonlyArray<DeepPartial<ItemType | undefined, Options>> : Array<DeepPartial<ItemType | undefined, Options>> : DeepPartialObject<T, Options> : T : DeepPartialObject<T, Options> : unknown;
61
+ /**
62
+ Same as `DeepPartial`, but accepts only `Map`s and as inputs. Internal helper for `DeepPartial`.
63
+ */
64
+ type DeepPartialMap<KeyType, ValueType, Options extends DeepPartialOptions> = {} & Map<DeepPartial<KeyType, Options>, DeepPartial<ValueType, Options>>;
65
+ /**
66
+ Same as `DeepPartial`, but accepts only `Set`s as inputs. Internal helper for `DeepPartial`.
67
+ */
68
+ type DeepPartialSet<T, Options extends DeepPartialOptions> = {} & Set<DeepPartial<T, Options>>;
69
+ /**
70
+ Same as `DeepPartial`, but accepts only `ReadonlyMap`s as inputs. Internal helper for `DeepPartial`.
71
+ */
72
+ type DeepPartialReadonlyMap<KeyType, ValueType, Options extends DeepPartialOptions> = {} & ReadonlyMap<DeepPartial<KeyType, Options>, DeepPartial<ValueType, Options>>;
73
+ /**
74
+ Same as `DeepPartial`, but accepts only `ReadonlySet`s as inputs. Internal helper for `DeepPartial`.
75
+ */
76
+ type DeepPartialReadonlySet<T, Options extends DeepPartialOptions> = {} & ReadonlySet<DeepPartial<T, Options>>;
77
+ /**
78
+ Same as `DeepPartial`, but accepts only `object`s as inputs. Internal helper for `DeepPartial`.
79
+ */
80
+ type DeepPartialObject<ObjectType extends object, Options extends DeepPartialOptions> = {
81
+ [KeyType in keyof ObjectType]?: DeepPartial<ObjectType[KeyType], Options>;
82
+ };
83
+ export {};