@actdim/dynstruct 0.9.7 → 1.0.0
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/appDomain/appContracts.d.ts +6 -0
- package/dist/appDomain/appContracts.d.ts.map +1 -1
- package/dist/appDomain/appContracts.es.js +7 -6
- package/dist/appDomain/appContracts.es.js.map +1 -1
- package/dist/appDomain/security/securityProvider.d.ts.map +1 -1
- package/dist/appDomain/security/securityProvider.es.js +7 -7
- package/dist/appDomain/security/securityProvider.es.js.map +1 -1
- package/dist/componentModel/componentModel.es.js +75 -76
- package/dist/componentModel/componentModel.es.js.map +1 -1
- package/dist/componentModel/scope.d.ts +0 -5
- package/dist/componentModel/scope.d.ts.map +1 -1
- package/dist/componentModel/scope.es.js +26 -68
- package/dist/componentModel/scope.es.js.map +1 -1
- package/dist/net/client.es.js +22 -22
- package/dist/net/client.es.js.map +1 -1
- package/dist/net/request.d.ts.map +1 -1
- package/dist/net/request.es.js +32 -27
- package/dist/net/request.es.js.map +1 -1
- package/package.json +38 -34
- package/dist/componentModel/componentModel.d.ts +0 -129
- package/dist/componentModel/componentModel.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.es.js","sources":["../../src/net/request.ts"],"sourcesContent":["// Transport\r\n\r\nimport httpStatus from \"http-status\";\r\nimport { AsyncFunc, AwaitedReturnType, Func, MaybeExtends } from \"@actdim/utico/typeCore\";\r\n\r\nexport type IFetcher = {\r\n fetch(url: RequestInfo | URL, init?: RequestInit): Promise<Response>;\r\n};\r\n\r\n// IParsedBody\r\nexport type IResolvedBody = {\r\n [K in keyof Body as Body[K] extends AsyncFunc ? K : never]?: AwaitedReturnType<MaybeExtends<Body[K], AsyncFunc>>;\r\n};\r\n\r\n// https://www.iana.org/assignments/media-types/media-types.xhtml\r\nexport type MimeType =\r\n // application\r\n | \"application/atom+xml\"\r\n | \"application/json\"\r\n | \"application/javascript\"\r\n | \"application/octet-stream\"\r\n | \"application/pdf\"\r\n | \"application/postscript\"\r\n | \"application/soap+xml\"\r\n | \"application/font-woff\"\r\n | \"application/xhtml+xml\"\r\n | \"application/zip\"\r\n | \"application/gzip\"\r\n | \"application/x-tex\"\r\n | \"application/xml\"\r\n | \"application/msword\"\r\n // text\r\n | \"text/cmd\"\r\n | \"text/css\"\r\n | \"text/csv\"\r\n | \"text/html\"\r\n // \"text/javascript\" |\r\n | \"text/plain\"\r\n | \"text/xml\"\r\n | \"text/markdown\"\r\n // image\r\n | \"image/png\"\r\n | \"image/jpeg\"\r\n | \"image/tiff\";\r\n\r\n// RequestExecutionStatus\r\nexport type RequestStatus =\r\n // Created\r\n | \"\" // none/created/new/unsent\r\n // Queued\r\n | \"queued\" // scheduled\r\n // Executing\r\n | \"executing\" // sent/pending/processing/in-progress\r\n // \"suspended\" | // on-hold\r\n // Successful\r\n | \"succeeded\" // successful/resolved/done/completed/finished/fulfilled/complete\r\n // Unsuccessful\r\n | \"failed\" // unsuccessful/rejected\r\n // Aborted\r\n | \"canceled\"; // aborted/terminated\r\n\r\nexport type IResponseState = Response & {\r\n // parsed?\r\n resolved?: IResolvedBody;\r\n};\r\n\r\nexport type IRequestState = IRequestParams & {\r\n status: RequestStatus;\r\n result?: any;\r\n};\r\n\r\nexport const getResponseBlob = (response: Response) => response.blob();\r\n\r\nexport const getResponseJson = (response: Response) => response.json();\r\n\r\nexport const getResponseText = (response: Response) => response.text();\r\n\r\nexport const getResponseArrayBuffer = (response: Response) => response.arrayBuffer();\r\n\r\n// https://stackoverflow.com/questions/64781995/how-to-get-mime-type-of-an-array-buffer-object\r\nexport async function getResponseResult(response: IResponseState, request: IRequestState): Promise<any> {\r\n // const headers: { [key: string]: string } = {};\r\n let
|
|
1
|
+
{"version":3,"file":"request.es.js","sources":["../../src/net/request.ts"],"sourcesContent":["// Transport\r\n\r\nimport httpStatus from \"http-status\";\r\nimport { AsyncFunc, AwaitedReturnType, Func, MaybeExtends } from \"@actdim/utico/typeCore\";\r\nimport { ApiError } from \"./apiError\";\r\n\r\nexport type IFetcher = {\r\n fetch(url: RequestInfo | URL, init?: RequestInit): Promise<Response>;\r\n};\r\n\r\n// IParsedBody\r\nexport type IResolvedBody = {\r\n [K in keyof Body as Body[K] extends AsyncFunc ? K : never]?: AwaitedReturnType<MaybeExtends<Body[K], AsyncFunc>>;\r\n};\r\n\r\n// https://www.iana.org/assignments/media-types/media-types.xhtml\r\nexport type MimeType =\r\n // application\r\n | \"application/atom+xml\"\r\n | \"application/json\"\r\n | \"application/javascript\"\r\n | \"application/octet-stream\"\r\n | \"application/pdf\"\r\n | \"application/postscript\"\r\n | \"application/soap+xml\"\r\n | \"application/font-woff\"\r\n | \"application/xhtml+xml\"\r\n | \"application/zip\"\r\n | \"application/gzip\"\r\n | \"application/x-tex\"\r\n | \"application/xml\"\r\n | \"application/msword\"\r\n // text\r\n | \"text/cmd\"\r\n | \"text/css\"\r\n | \"text/csv\"\r\n | \"text/html\"\r\n // \"text/javascript\" |\r\n | \"text/plain\"\r\n | \"text/xml\"\r\n | \"text/markdown\"\r\n // image\r\n | \"image/png\"\r\n | \"image/jpeg\"\r\n | \"image/tiff\";\r\n\r\n// RequestExecutionStatus\r\nexport type RequestStatus =\r\n // Created\r\n | \"\" // none/created/new/unsent\r\n // Queued\r\n | \"queued\" // scheduled\r\n // Executing\r\n | \"executing\" // sent/pending/processing/in-progress\r\n // \"suspended\" | // on-hold\r\n // Successful\r\n | \"succeeded\" // successful/resolved/done/completed/finished/fulfilled/complete\r\n // Unsuccessful\r\n | \"failed\" // unsuccessful/rejected\r\n // Aborted\r\n | \"canceled\"; // aborted/terminated\r\n\r\nexport type IResponseState = Response & {\r\n // parsed?\r\n resolved?: IResolvedBody;\r\n};\r\n\r\nexport type IRequestState = IRequestParams & {\r\n status: RequestStatus;\r\n result?: any;\r\n};\r\n\r\nexport const getResponseBlob = (response: Response) => response.blob();\r\n\r\nexport const getResponseJson = (response: Response) => response.json();\r\n\r\nexport const getResponseText = (response: Response) => response.text();\r\n\r\nexport const getResponseArrayBuffer = (response: Response) => response.arrayBuffer();\r\n\r\n// https://stackoverflow.com/questions/64781995/how-to-get-mime-type-of-an-array-buffer-object\r\nexport async function getResponseResult(response: IResponseState, request: IRequestState): Promise<any> {\r\n // const headers: { [key: string]: string } = {};\r\n let contentType =\r\n request.contentType ||\r\n (request.headers && request.headers instanceof Headers ? request.headers.get(\"content-type\") : request.headers[\"Content-Type\"]);\r\n if (response.headers) {\r\n // for (const k in response.headers.keys()) {\r\n // headers[k] = response.headers.get[k];\r\n // }\r\n // if (response.headers.forEach) {\r\n // response.headers.forEach((v, k) => headers[k] = v);\r\n // }\r\n contentType = response.headers instanceof Headers ? response.headers.get(\"content-type\") : response.headers[\"content-type\"];\r\n }\r\n let result: any = undefined;\r\n if (!response.resolved) {\r\n response.resolved = {};\r\n }\r\n const resolved = response.resolved;\r\n contentType = (contentType || \"\").toLowerCase();\r\n if (contentType.startsWith(\"text/\")) {\r\n result = await response.text();\r\n } else if (contentType.startsWith(\"image/\")) {\r\n result = await response.blob();\r\n } else {\r\n if (contentType.startsWith(\"application/json\")) {\r\n result = await response.json();\r\n resolved.json = result;\r\n } else if (contentType.startsWith(\"octet-stream\")) {\r\n result = await response.blob();\r\n resolved.blob = result;\r\n } else {\r\n try {\r\n resolved.json = await response.clone().json();\r\n } catch {\r\n try {\r\n resolved.text = await response.text();\r\n } catch {\r\n }\r\n }\r\n // unexpected response\r\n // throw new Error(`Unsupported content type: ${contentType}`);\r\n }\r\n }\r\n if (!(response.status === httpStatus.OK || response.status === httpStatus.NO_CONTENT)) {\r\n // JSON.stringify(resolved)\r\n throw ApiError.create(response, request);\r\n }\r\n\r\n request.result = result;\r\n return result;\r\n}\r\n\r\nexport interface IRequestCallbacks<TResult = any> {\r\n // onBeforeExecuteRequest\r\n onBeforeSendRequest?: (event: {\r\n request: IRequestParams;\r\n // interrupt\r\n cancel: boolean;\r\n handled: boolean;\r\n result?: TResult;\r\n }) => Promise<void>;\r\n onResponseRead?: (event: { response: Response; result: TResult }) => Promise<void>;\r\n}\r\n\r\n// IRequestOptions\r\nexport interface IRequestParams<TResult = any> extends RequestInit {\r\n // TODO: support WebSocket transport\r\n id?: string;\r\n tag?: string;\r\n url: string;\r\n // authType?: ...;\r\n useAuth?: boolean;\r\n // authToken?: string; // bearerToken\r\n // TODO: support\r\n // accepts: string[]; // https://developer.mozilla.org/ru/docs/Web/HTTP/Headers/Accept\r\n // TODO: support\r\n crossDomain?: boolean;\r\n contentType?: MimeType; // dataType\r\n httpOnly?: boolean;\r\n // transportType: ...;\r\n callbacks?: IRequestCallbacks<TResult>;\r\n}\r\n"],"names":["getResponseBlob","response","getResponseJson","getResponseText","getResponseArrayBuffer","getResponseResult","request","contentType","result","resolved","httpStatus","ApiError"],"mappings":";;AAwEO,MAAMA,IAAkB,CAACC,MAAuBA,EAAS,KAAA,GAEnDC,IAAkB,CAACD,MAAuBA,EAAS,KAAA,GAEnDE,IAAkB,CAACF,MAAuBA,EAAS,KAAA,GAEnDG,IAAyB,CAACH,MAAuBA,EAAS,YAAA;AAGvE,eAAsBI,EAAkBJ,GAA0BK,GAAsC;AAEpG,MAAIC,IACAD,EAAQ,gBACPA,EAAQ,WAAWA,EAAQ,mBAAmB,UAAUA,EAAQ,QAAQ,IAAI,cAAc,IAAIA,EAAQ,QAAQ,cAAc;AACjI,EAAIL,EAAS,YAOTM,IAAcN,EAAS,mBAAmB,UAAUA,EAAS,QAAQ,IAAI,cAAc,IAAIA,EAAS,QAAQ,cAAc;AAE9H,MAAIO;AACJ,EAAKP,EAAS,aACVA,EAAS,WAAW,CAAA;AAExB,QAAMQ,IAAWR,EAAS;AAE1B,MADAM,KAAeA,KAAe,IAAI,YAAA,GAC9BA,EAAY,WAAW,OAAO;AAC9B,IAAAC,IAAS,MAAMP,EAAS,KAAA;AAAA,WACjBM,EAAY,WAAW,QAAQ;AACtC,IAAAC,IAAS,MAAMP,EAAS,KAAA;AAAA,WAEpBM,EAAY,WAAW,kBAAkB;AACzC,IAAAC,IAAS,MAAMP,EAAS,KAAA,GACxBQ,EAAS,OAAOD;AAAA,WACTD,EAAY,WAAW,cAAc;AAC5C,IAAAC,IAAS,MAAMP,EAAS,KAAA,GACxBQ,EAAS,OAAOD;AAAA;AAEhB,QAAI;AACA,MAAAC,EAAS,OAAO,MAAMR,EAAS,MAAA,EAAQ,KAAA;AAAA,IAC3C,QAAQ;AACJ,UAAI;AACA,QAAAQ,EAAS,OAAO,MAAMR,EAAS,KAAA;AAAA,MACnC,QAAQ;AAAA,MACR;AAAA,IACJ;AAKR,MAAI,EAAEA,EAAS,WAAWS,EAAW,MAAMT,EAAS,WAAWS,EAAW;AAEtE,UAAMC,EAAS,OAAOV,GAAUK,CAAO;AAG3C,SAAAA,EAAQ,SAASE,GACVA;AACX;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actdim/dynstruct",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "A type-safe component system for large-scale apps: explicit dependencies, message bus communication, and structure-first, declarative design",
|
|
5
5
|
"author": "Pavel Borodaev",
|
|
6
6
|
"license": "Proprietary",
|
|
@@ -50,24 +50,23 @@
|
|
|
50
50
|
},
|
|
51
51
|
"sideEffects": false,
|
|
52
52
|
"sideEffects?": [],
|
|
53
|
-
"scripts": {
|
|
54
|
-
"test": "npx vitest",
|
|
55
|
-
"
|
|
56
|
-
"
|
|
53
|
+
"scripts": {
|
|
54
|
+
"test": "npx vitest --config=vitest.node.config.ts --no-cache",
|
|
55
|
+
"test:w": "npx vitest --config=vitest.node.config.ts --watch",
|
|
56
|
+
"test:v8": "npx vite",
|
|
57
57
|
"lint": "eslint . -f visualstudio --ext .ts,.tsx --report-unused-disable-directives --max-warnings 0",
|
|
58
|
-
"online": "vite --host",
|
|
59
58
|
"build": "tsc -b && vite build",
|
|
60
|
-
"
|
|
61
|
-
"
|
|
62
|
-
"ncu": "ncu",
|
|
59
|
+
"pnpm:u": "pnpm update",
|
|
60
|
+
"pnpm:ou": "pnpm outdated",
|
|
61
|
+
"ncu:l": "ncu",
|
|
63
62
|
"ncu:u": "ncu -u",
|
|
64
63
|
"ncu:ud": "ncu -u --dev",
|
|
65
64
|
"nvm:la": "nvm list available",
|
|
66
|
-
"nvm:il": "nvm install lts"
|
|
65
|
+
"nvm:il": "nvm install lts",
|
|
66
|
+
"format": "prettier --write .",
|
|
67
|
+
"format:check": "prettier --check ."
|
|
67
68
|
},
|
|
68
69
|
"peerDependencies": {
|
|
69
|
-
"rxjs": "^7.8.2",
|
|
70
|
-
"uuid": "^13.0.0",
|
|
71
70
|
"http-status": "^2.1.0",
|
|
72
71
|
"jwt-decode": "^4.0.0",
|
|
73
72
|
"mobx": "^6.15.0",
|
|
@@ -78,35 +77,40 @@
|
|
|
78
77
|
"react-dom": "^19.2.0",
|
|
79
78
|
"react-router": "^7.9.3",
|
|
80
79
|
"react-router-dom": "^7.9.4",
|
|
81
|
-
"@actdim/utico": "^0.
|
|
82
|
-
"@actdim/msgmesh": "^0.
|
|
80
|
+
"@actdim/utico": "^1.0.0",
|
|
81
|
+
"@actdim/msgmesh": "^1.0.0",
|
|
82
|
+
"rxjs": "^7.8.2",
|
|
83
|
+
"dexie": "^4.2.0",
|
|
84
|
+
"moment": "^2.30.1",
|
|
85
|
+
"uuid": "^13.0.0"
|
|
83
86
|
},
|
|
84
87
|
"devDependencies": {
|
|
85
|
-
"@swc/core": "^1.
|
|
86
|
-
"@
|
|
87
|
-
"@types/uuid": "^11.0.0",
|
|
88
|
-
"@typescript-eslint/eslint-plugin": "^8.45.0",
|
|
89
|
-
"@typescript-eslint/parser": "^8.46.0",
|
|
90
|
-
"@vitejs/plugin-react-swc": "^4.1.0",
|
|
91
|
-
"eslint": "^9.37.0",
|
|
92
|
-
"eslint-config-prettier": "^10.1.8",
|
|
93
|
-
"eslint-formatter-visualstudio": "^8.40.0",
|
|
94
|
-
"eslint-plugin-jsx-a11y": "^6.10.2",
|
|
95
|
-
"eslint-plugin-prettier": "^5.5.4",
|
|
88
|
+
"@swc/core": "^1.15.1",
|
|
89
|
+
"@vitejs/plugin-react-swc": "^4.2.1",
|
|
96
90
|
"eslint-plugin-react": "^7.37.5",
|
|
97
|
-
"eslint-plugin-react-hooks": "^7.0.
|
|
98
|
-
"eslint-plugin-react-refresh": "^0.4.
|
|
99
|
-
"
|
|
100
|
-
"
|
|
91
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
92
|
+
"eslint-plugin-react-refresh": "^0.4.24",
|
|
93
|
+
"@types/chai": "^5.2.3",
|
|
94
|
+
"@types/mocha": "^10.0.10",
|
|
95
|
+
"@types/node": "^24.10.0",
|
|
96
|
+
"@typescript-eslint/eslint-plugin": "^8.46.3",
|
|
97
|
+
"@typescript-eslint/parser": "^8.46.3",
|
|
98
|
+
"chai": "^6.2.0",
|
|
99
|
+
"eslint": "^9.39.1",
|
|
100
|
+
"eslint-config-prettier": "^10.1.8",
|
|
101
|
+
"eslint-formatter-visualstudio": "^9.0.1",
|
|
102
|
+
"eslint-plugin-prettier": "^5.5.4",
|
|
103
|
+
"globals": "^16.5.0",
|
|
104
|
+
"mocha": "^11.7.5",
|
|
105
|
+
"npm-check-updates": "^19.1.2",
|
|
101
106
|
"prettier": "^3.6.2",
|
|
102
|
-
"prettier-plugin-classnames": "^0.8.
|
|
107
|
+
"prettier-plugin-classnames": "^0.8.5",
|
|
103
108
|
"shx": "^0.4.0",
|
|
104
|
-
"ts-node": "^10.9.2",
|
|
105
109
|
"typescript": "^5.9.3",
|
|
106
|
-
"typescript-eslint": "^8.46.
|
|
107
|
-
"vite": "^7.
|
|
110
|
+
"typescript-eslint": "^8.46.3",
|
|
111
|
+
"vite": "^7.2.2",
|
|
108
112
|
"vite-plugin-dts": "^4.5.4",
|
|
109
113
|
"vite-tsconfig-paths": "^5.1.4",
|
|
110
|
-
"vitest": "^
|
|
114
|
+
"vitest": "^4.0.8"
|
|
111
115
|
}
|
|
112
116
|
}
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
import { PropsWithChildren, FC, ReactNode } from 'react';
|
|
2
|
-
import { $CG_IN, $CG_OUT, MsgBus, MsgBusProviderParams, MsgBusStruct, MsgBusSubscriberParams } from '@actdim/msgmesh/msgBusCore';
|
|
3
|
-
import { MaybePromise, SafeKey, Skip } from '@actdim/utico/typeCore';
|
|
4
|
-
export type MsgBusChannelGroupProviderParams<TStruct extends MsgBusStruct = MsgBusStruct, TChannel extends keyof TStruct = keyof TStruct, TGroup extends keyof TStruct[TChannel] = typeof $CG_IN> = Skip<MsgBusProviderParams<TStruct, TChannel, TGroup>, "channel" | "group">;
|
|
5
|
-
export type MsgBusChannelGroupSubscriberParams<TStruct extends MsgBusStruct = MsgBusStruct, TChannel extends keyof TStruct = keyof TStruct, TGroup extends keyof TStruct[TChannel] = typeof $CG_IN> = Skip<MsgBusSubscriberParams<TStruct, TChannel, TGroup>, "channel" | "group">;
|
|
6
|
-
export type MsgBusBrokerScope<TStruct extends MsgBusStruct, TKeysToProvide extends keyof TStruct = keyof TStruct, TKeysToSubscribe extends keyof TStruct = keyof TStruct, TKeysToPublish extends keyof TStruct = keyof TStruct> = {
|
|
7
|
-
provide?: TKeysToProvide;
|
|
8
|
-
subscribe?: TKeysToSubscribe;
|
|
9
|
-
publish?: TKeysToPublish;
|
|
10
|
-
};
|
|
11
|
-
export type ComponentPropStruct = Record<string, any>;
|
|
12
|
-
export type ComponentMethodStruct = Record<string, Function>;
|
|
13
|
-
export type ComponentRefStruct = {
|
|
14
|
-
[name: string]: ComponentStruct | ((params: any) => ComponentStruct);
|
|
15
|
-
};
|
|
16
|
-
export type ComponentStructBase<TMsgBusStruct extends MsgBusStruct = MsgBusStruct, TPropStruct extends ComponentPropStruct = ComponentPropStruct, TMsgScope extends MsgBusBrokerScope<TMsgBusStruct> = MsgBusBrokerScope<TMsgBusStruct>> = {
|
|
17
|
-
props?: TPropStruct;
|
|
18
|
-
methods?: ComponentMethodStruct;
|
|
19
|
-
children?: ComponentRefStruct;
|
|
20
|
-
msgScope?: TMsgScope;
|
|
21
|
-
};
|
|
22
|
-
export type ComponentStruct<TMsgBusStruct extends MsgBusStruct = MsgBusStruct, T extends ComponentStructBase<TMsgBusStruct> = ComponentStructBase<TMsgBusStruct>> = T & {
|
|
23
|
-
msgBus: TMsgBusStruct;
|
|
24
|
-
};
|
|
25
|
-
export type MsgBusBroker<TStructToProvide extends MsgBusStruct = MsgBusStruct, TStructToSubscribe extends MsgBusStruct = MsgBusStruct> = {
|
|
26
|
-
provide?: {
|
|
27
|
-
[TChannel in keyof TStructToProvide]: {
|
|
28
|
-
[TGroup in keyof Skip<TStructToProvide[TChannel], typeof $CG_OUT>]?: MsgBusChannelGroupProviderParams<TStructToProvide, TChannel, TGroup>;
|
|
29
|
-
};
|
|
30
|
-
};
|
|
31
|
-
subscribe?: {
|
|
32
|
-
[TChannel in keyof TStructToSubscribe]: {
|
|
33
|
-
[TGroup in keyof TStructToSubscribe[TChannel]]?: MsgBusChannelGroupSubscriberParams<TStructToSubscribe, TChannel, TGroup>;
|
|
34
|
-
};
|
|
35
|
-
};
|
|
36
|
-
};
|
|
37
|
-
type ValueConverter<TTo, TFrom> = {
|
|
38
|
-
convert(value: TFrom): TTo;
|
|
39
|
-
convertBack(value: TTo): TFrom;
|
|
40
|
-
};
|
|
41
|
-
type ValidationResult = {
|
|
42
|
-
valid: boolean;
|
|
43
|
-
message: string;
|
|
44
|
-
};
|
|
45
|
-
type Validator<T> = {
|
|
46
|
-
options: {
|
|
47
|
-
blur: boolean;
|
|
48
|
-
};
|
|
49
|
-
validate: (value: T) => MaybePromise<ValidationResult>;
|
|
50
|
-
};
|
|
51
|
-
export declare const symbols: {
|
|
52
|
-
$isBinding: symbol;
|
|
53
|
-
};
|
|
54
|
-
export interface IBinding<T = any, TFrom = any> {
|
|
55
|
-
readonly get: () => T;
|
|
56
|
-
readonly set: (value: T) => void;
|
|
57
|
-
readonly converter: ValueConverter<T, TFrom>;
|
|
58
|
-
readonly validator: Validator<T>;
|
|
59
|
-
readonly readOnly: boolean;
|
|
60
|
-
}
|
|
61
|
-
declare class Binding<T = any, TFrom = any> implements IBinding<any, any> {
|
|
62
|
-
[symbols.$isBinding]: boolean;
|
|
63
|
-
readonly get: () => T;
|
|
64
|
-
readonly set: (value: T) => void;
|
|
65
|
-
readonly converter: ValueConverter<T, TFrom>;
|
|
66
|
-
readonly validator: Validator<T>;
|
|
67
|
-
readonly readOnly: boolean;
|
|
68
|
-
constructor(get: () => T, set?: (value: T) => void, converter?: ValueConverter<T, TFrom>, validator?: Validator<T>);
|
|
69
|
-
}
|
|
70
|
-
export declare function isBinding(obj: any): obj is IBinding;
|
|
71
|
-
export declare function bind<T, TFrom = any>(get: () => T, set?: (value: T) => void, converter?: ValueConverter<T, TFrom>, validator?: Validator<T>): Binding<T, TFrom>;
|
|
72
|
-
export declare function bindProp<T extends object, P extends keyof T>(obj: T, prop: P): Binding<T[P], any>;
|
|
73
|
-
export type ComponentPropSource<T> = T | Binding<T>;
|
|
74
|
-
export type ComponentPropParams<TPropStruct extends ComponentPropStruct> = {
|
|
75
|
-
[P in keyof TPropStruct]?: ComponentPropSource<TPropStruct[P]>;
|
|
76
|
-
};
|
|
77
|
-
declare const $ON_GET = "onGet";
|
|
78
|
-
declare const $ON_CHANGING = "onChanging";
|
|
79
|
-
declare const $ON_CHANGE = "onChange";
|
|
80
|
-
type PropValueChangingHandler<TProp = PropKey> = (prop: TProp, oldValue: any, newValue: any) => boolean;
|
|
81
|
-
type PropValueChangeHandler<TProp = PropKey> = (prop: TProp, value: any) => void;
|
|
82
|
-
type ValueChangingHandler<T = any> = (oldValue: T, newValue: T) => boolean;
|
|
83
|
-
type ValueChangeHandler<T = any> = (value: T) => void;
|
|
84
|
-
type ComponentEvents<TStruct extends ComponentStruct = ComponentStruct> = {
|
|
85
|
-
onPropChanging?: PropValueChangingHandler<keyof TStruct["props"]>;
|
|
86
|
-
onPropChange?: PropValueChangeHandler<keyof TStruct["props"]>;
|
|
87
|
-
onInit?: (model: ComponentModel<TStruct>) => void;
|
|
88
|
-
onLayout?: (model: ComponentModel<TStruct>) => void;
|
|
89
|
-
onReady?: (model: ComponentModel<TStruct>) => void;
|
|
90
|
-
onLayoutDestroy?: (model: ComponentModel<TStruct>) => void;
|
|
91
|
-
onDestroy?: (model: ComponentModel<TStruct>) => void;
|
|
92
|
-
onError?: (model: ComponentModel<TStruct>, error: any) => void;
|
|
93
|
-
} & {
|
|
94
|
-
[P in keyof TStruct["props"] as `${typeof $ON_GET}${Capitalize<P & string>}`]?: () => TStruct["props"][P];
|
|
95
|
-
} & {
|
|
96
|
-
[P in keyof TStruct["props"] as `${typeof $ON_CHANGING}${Capitalize<P & string>}`]?: ValueChangingHandler<TStruct["props"]>;
|
|
97
|
-
} & {
|
|
98
|
-
[P in keyof TStruct["props"] as `${typeof $ON_CHANGE}${Capitalize<P & string>}`]?: ValueChangeHandler<TStruct["props"]>;
|
|
99
|
-
};
|
|
100
|
-
type ComponentViewProps = {
|
|
101
|
-
render?: boolean;
|
|
102
|
-
} & PropsWithChildren;
|
|
103
|
-
type ComponentViewFn = (props?: ComponentViewProps) => ReactNode;
|
|
104
|
-
export type Component<TStruct extends ComponentStruct> = {
|
|
105
|
-
props?: TStruct["props"];
|
|
106
|
-
methods?: TStruct["methods"];
|
|
107
|
-
children?: ComponentChildren<TStruct["children"]>;
|
|
108
|
-
events?: ComponentEvents<TStruct>;
|
|
109
|
-
msgBroker?: MsgBusBroker<Pick<TStruct["msgBus"], SafeKey<TStruct["msgBus"], TStruct["msgScope"]["provide"]>>, Pick<TStruct["msgBus"], SafeKey<TStruct["msgBus"], TStruct["msgScope"]["subscribe"]>>>;
|
|
110
|
-
msgBus?: MsgBus<Pick<TStruct["msgBus"], SafeKey<TStruct["msgBus"], TStruct["msgScope"]["provide"]> | SafeKey<TStruct["msgBus"], TStruct["msgScope"]["subscribe"]> | SafeKey<TStruct["msgBus"], TStruct["msgScope"]["publish"]>>>;
|
|
111
|
-
view?: ComponentViewFn;
|
|
112
|
-
};
|
|
113
|
-
type ComponentChildren<TRefStruct extends ComponentRefStruct> = {
|
|
114
|
-
[P in keyof TRefStruct]: TRefStruct[P] extends (params: infer TParams) => infer T ? T extends ComponentStruct ? (params: TParams) => ComponentModel<T> : never : TRefStruct[P] extends ComponentStruct ? ComponentModel<TRefStruct[P]> : never;
|
|
115
|
-
};
|
|
116
|
-
type ComponentModelChildren<TRefStruct extends ComponentRefStruct> = {
|
|
117
|
-
[P in keyof TRefStruct as TRefStruct[P] extends Function ? `${Capitalize<P & string>}` : P]: TRefStruct[P] extends (params: infer TParams) => infer T ? T extends ComponentStruct ? FC<ComponentParams<T> & TParams> : never : TRefStruct[P] extends ComponentStruct ? ComponentModel<TRefStruct[P]> : never;
|
|
118
|
-
};
|
|
119
|
-
export type ComponentModelBase<TStruct extends ComponentStruct = ComponentStruct> = {
|
|
120
|
-
readonly msgBus?: MsgBus<Pick<TStruct["msgBus"], SafeKey<TStruct["msgBus"], TStruct["msgScope"]["provide"]> | SafeKey<TStruct["msgBus"], TStruct["msgScope"]["subscribe"]> | SafeKey<TStruct["msgBus"], TStruct["msgScope"]["publish"]>>>;
|
|
121
|
-
readonly View: ComponentViewFn;
|
|
122
|
-
};
|
|
123
|
-
export type ComponentModel<TStruct extends ComponentStruct = ComponentStruct> = TStruct["props"] & TStruct["methods"] & ComponentModelChildren<TStruct["children"]> & ComponentModelBase<TStruct>;
|
|
124
|
-
type PropKey = string | symbol;
|
|
125
|
-
export type ComponentParams<TStruct extends ComponentStruct = ComponentStruct> = ComponentPropParams<TStruct["props"]> & ComponentEvents<TStruct>;
|
|
126
|
-
export declare function useComponent<TStruct extends ComponentStruct = ComponentStruct>(component: Component<TStruct>, params: ComponentParams<TStruct>): ComponentModel<TStruct>;
|
|
127
|
-
export declare function getFC<TStruct extends ComponentStruct>(factory: (params: ComponentParams<TStruct>) => ComponentModel<TStruct>): FC<ComponentParams<TStruct>>;
|
|
128
|
-
export {};
|
|
129
|
-
//# sourceMappingURL=componentModel.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"componentModel.d.ts","sourceRoot":"","sources":["../../src/componentModel/componentModel.tsx"],"names":[],"mappings":"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"}
|