@itwin/presentation-shared 1.1.0 → 1.2.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/CHANGELOG.md CHANGED
@@ -1,5 +1,34 @@
1
1
  # @itwin/presentation-shared
2
2
 
3
+ ## 1.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#791](https://github.com/iTwin/presentation/pull/791): Added a number of mapped types:
8
+
9
+ - `Props<TFunc>` obtains the type of the first `TFunc` function argument.
10
+
11
+ ```ts
12
+ function func(props: { x: number; y: string }) {
13
+ // ...
14
+ }
15
+ type FunctionProps = Props<typeof func>; // { x: number, y: string }
16
+ ```
17
+
18
+ - `EventListener<TEvent>` obtains the event listener type of given event type.
19
+
20
+ ```ts
21
+ type MyEvent = Event<(arg: number) => void>;
22
+ type MyEventListener = EventListener<MyEvent>; // (arg: number) => void
23
+ ```
24
+
25
+ - `EventArgs<TEvent>` obtains the type of the first event listener's argument of given event type.
26
+
27
+ ```ts
28
+ type MyEvent = Event<(arg: { x: number; y: string }) => void>;
29
+ type MyEventArgs = EventArgs<MyEvent>; // { x: number, y: string }
30
+ ```
31
+
3
32
  ## 1.1.0
4
33
 
5
34
  ### Minor Changes
@@ -5,7 +5,7 @@ export { ECSqlBinding, ECSqlQueryDef, ECSqlQueryExecutor, ECSqlQueryReaderOption
5
5
  export { createDefaultValueFormatter, formatConcatenatedValue, IPrimitiveValueFormatter } from "./shared/Formatting.js";
6
6
  export { IInstanceLabelSelectClauseFactory, createDefaultInstanceLabelSelectClauseFactory, createClassBasedInstanceLabelSelectClauseFactory, createBisInstanceLabelSelectClauseFactory, parseInstanceLabel, } from "./shared/InstanceLabelSelectClauseFactory.js";
7
7
  export { ILogger, NOOP_LOGGER, LogFunction, LogLevel } from "./shared/Logging.js";
8
- export { ArrayElement, OmitOverUnion } from "./shared/MappedTypes.js";
8
+ export { ArrayElement, EventArgs, EventListener, OmitOverUnion, Props } from "./shared/MappedTypes.js";
9
9
  export { createCachingECClassHierarchyInspector, EC, getClass, ECClassHierarchyInspector, ECSchemaProvider } from "./shared/Metadata.js";
10
10
  export { createMainThreadReleaseOnTimePassedHandler, julianToDateTime, normalizeFullClassName, parseFullClassName, releaseMainThread, trimWhitespace, } from "./shared/Utils.js";
11
11
  export { InstanceKey, PrimitiveValue, TypedPrimitiveValue } from "./shared/Values.js";
@@ -1 +1 @@
1
- {"version":3,"file":"presentation-shared.d.ts","sourceRoot":"","sources":["../../src/presentation-shared.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,kCAAkC,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAChI,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACxH,OAAO,EACL,iCAAiC,EACjC,6CAA6C,EAC7C,gDAAgD,EAChD,yCAAyC,EACzC,kBAAkB,GACnB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,sCAAsC,EAAE,EAAE,EAAE,QAAQ,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACzI,OAAO,EACL,0CAA0C,EAC1C,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"presentation-shared.d.ts","sourceRoot":"","sources":["../../src/presentation-shared.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,kCAAkC,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAChI,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACxH,OAAO,EACL,iCAAiC,EACjC,6CAA6C,EAC7C,gDAAgD,EAChD,yCAAyC,EACzC,kBAAkB,GACnB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACvG,OAAO,EAAE,sCAAsC,EAAE,EAAE,EAAE,QAAQ,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACzI,OAAO,EACL,0CAA0C,EAC1C,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { Event } from "./Event.js";
1
2
  /**
2
3
  * An utility `Omit` type which works with union types.
3
4
  * @public
@@ -8,4 +9,19 @@ export type OmitOverUnion<T, K extends PropertyKey> = T extends T ? Omit<T, K> :
8
9
  * @public
9
10
  */
10
11
  export type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType extends readonly (infer ElementType)[] ? ElementType : never;
12
+ /**
13
+ * Returns type of the first `TFunc` parameter.
14
+ * @public
15
+ */
16
+ export type Props<TFunc extends (...args: any[]) => any> = Parameters<TFunc>[0];
17
+ /**
18
+ * Returns type of the given `Event` listener.
19
+ * @public
20
+ */
21
+ export type EventListener<TEvent extends Event> = TEvent extends Event<infer TListener> ? TListener : never;
22
+ /**
23
+ * Returns type of the given `Event` arguments.
24
+ * @public
25
+ */
26
+ export type EventArgs<TEvent extends Event> = Props<EventListener<TEvent>>;
11
27
  //# sourceMappingURL=MappedTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MappedTypes.d.ts","sourceRoot":"","sources":["../../../src/shared/MappedTypes.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AAEvF;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,SAAS,OAAO,EAAE,IAAI,SAAS,SAAS,SAAS,CAAC,MAAM,WAAW,CAAC,EAAE,GAAG,WAAW,GAAG,KAAK,CAAC"}
1
+ {"version":3,"file":"MappedTypes.d.ts","sourceRoot":"","sources":["../../../src/shared/MappedTypes.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AAEvF;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,SAAS,OAAO,EAAE,IAAI,SAAS,SAAS,SAAS,CAAC,MAAM,WAAW,CAAC,EAAE,GAAG,WAAW,GAAG,KAAK,CAAC;AAExI;;;GAGG;AACH,MAAM,MAAM,KAAK,CAAC,KAAK,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhF;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,MAAM,SAAS,KAAK,IAAI,MAAM,SAAS,KAAK,CAAC,MAAM,SAAS,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC;AAE5G;;;GAGG;AACH,MAAM,MAAM,SAAS,CAAC,MAAM,SAAS,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC"}
@@ -5,7 +5,7 @@ export { ECSqlBinding, ECSqlQueryDef, ECSqlQueryExecutor, ECSqlQueryReaderOption
5
5
  export { createDefaultValueFormatter, formatConcatenatedValue, IPrimitiveValueFormatter } from "./shared/Formatting.js";
6
6
  export { IInstanceLabelSelectClauseFactory, createDefaultInstanceLabelSelectClauseFactory, createClassBasedInstanceLabelSelectClauseFactory, createBisInstanceLabelSelectClauseFactory, parseInstanceLabel, } from "./shared/InstanceLabelSelectClauseFactory.js";
7
7
  export { ILogger, NOOP_LOGGER, LogFunction, LogLevel } from "./shared/Logging.js";
8
- export { ArrayElement, OmitOverUnion } from "./shared/MappedTypes.js";
8
+ export { ArrayElement, EventArgs, EventListener, OmitOverUnion, Props } from "./shared/MappedTypes.js";
9
9
  export { createCachingECClassHierarchyInspector, EC, getClass, ECClassHierarchyInspector, ECSchemaProvider } from "./shared/Metadata.js";
10
10
  export { createMainThreadReleaseOnTimePassedHandler, julianToDateTime, normalizeFullClassName, parseFullClassName, releaseMainThread, trimWhitespace, } from "./shared/Utils.js";
11
11
  export { InstanceKey, PrimitiveValue, TypedPrimitiveValue } from "./shared/Values.js";
@@ -1 +1 @@
1
- {"version":3,"file":"presentation-shared.d.ts","sourceRoot":"","sources":["../../src/presentation-shared.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,kCAAkC,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAChI,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACxH,OAAO,EACL,iCAAiC,EACjC,6CAA6C,EAC7C,gDAAgD,EAChD,yCAAyC,EACzC,kBAAkB,GACnB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,sCAAsC,EAAE,EAAE,EAAE,QAAQ,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACzI,OAAO,EACL,0CAA0C,EAC1C,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"presentation-shared.d.ts","sourceRoot":"","sources":["../../src/presentation-shared.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,kCAAkC,CAAC;AAE1D,OAAO,EAAE,KAAK,EAAE,CAAC;AAEjB,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAChI,OAAO,EAAE,2BAA2B,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACxH,OAAO,EACL,iCAAiC,EACjC,6CAA6C,EAC7C,gDAAgD,EAChD,yCAAyC,EACzC,kBAAkB,GACnB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACvG,OAAO,EAAE,sCAAsC,EAAE,EAAE,EAAE,QAAQ,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACzI,OAAO,EACL,0CAA0C,EAC1C,gBAAgB,EAChB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { Event } from "./Event.js";
1
2
  /**
2
3
  * An utility `Omit` type which works with union types.
3
4
  * @public
@@ -8,4 +9,19 @@ export type OmitOverUnion<T, K extends PropertyKey> = T extends T ? Omit<T, K> :
8
9
  * @public
9
10
  */
10
11
  export type ArrayElement<ArrayType extends readonly unknown[]> = ArrayType extends readonly (infer ElementType)[] ? ElementType : never;
12
+ /**
13
+ * Returns type of the first `TFunc` parameter.
14
+ * @public
15
+ */
16
+ export type Props<TFunc extends (...args: any[]) => any> = Parameters<TFunc>[0];
17
+ /**
18
+ * Returns type of the given `Event` listener.
19
+ * @public
20
+ */
21
+ export type EventListener<TEvent extends Event> = TEvent extends Event<infer TListener> ? TListener : never;
22
+ /**
23
+ * Returns type of the given `Event` arguments.
24
+ * @public
25
+ */
26
+ export type EventArgs<TEvent extends Event> = Props<EventListener<TEvent>>;
11
27
  //# sourceMappingURL=MappedTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MappedTypes.d.ts","sourceRoot":"","sources":["../../../src/shared/MappedTypes.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AAEvF;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,SAAS,OAAO,EAAE,IAAI,SAAS,SAAS,SAAS,CAAC,MAAM,WAAW,CAAC,EAAE,GAAG,WAAW,GAAG,KAAK,CAAC"}
1
+ {"version":3,"file":"MappedTypes.d.ts","sourceRoot":"","sources":["../../../src/shared/MappedTypes.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AAEvF;;;GAGG;AACH,MAAM,MAAM,YAAY,CAAC,SAAS,SAAS,SAAS,OAAO,EAAE,IAAI,SAAS,SAAS,SAAS,CAAC,MAAM,WAAW,CAAC,EAAE,GAAG,WAAW,GAAG,KAAK,CAAC;AAExI;;;GAGG;AACH,MAAM,MAAM,KAAK,CAAC,KAAK,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhF;;;GAGG;AACH,MAAM,MAAM,aAAa,CAAC,MAAM,SAAS,KAAK,IAAI,MAAM,SAAS,KAAK,CAAC,MAAM,SAAS,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC;AAE5G;;;GAGG;AACH,MAAM,MAAM,SAAS,CAAC,MAAM,SAAS,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/presentation-shared",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "The package contains types and utilities used across different iTwin.js Presentation packages.",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -32,10 +32,10 @@
32
32
  "./package.json": "./package.json"
33
33
  },
34
34
  "dependencies": {
35
- "@itwin/core-bentley": "^4.9.0"
35
+ "@itwin/core-bentley": "^4.10.1"
36
36
  },
37
37
  "devDependencies": {
38
- "@itwin/build-tools": "^4.10.0-dev.33",
38
+ "@itwin/build-tools": "^4.10.1",
39
39
  "@itwin/eslint-plugin": "5.0.0-dev.1",
40
40
  "@types/chai": "^4.3.16",
41
41
  "@types/chai-as-promised": "^7.1.8",