@itwin/core-common 4.1.0-dev.68 → 4.1.0-dev.69
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/lib/cjs/EntityProps.js +2 -2
- package/lib/cjs/EntityProps.js.map +1 -1
- package/lib/cjs/geometry/ElementGeometry.js.map +1 -1
- package/lib/cjs/rpc/core/RpcMarshaling.js +2 -2
- package/lib/cjs/rpc/core/RpcMarshaling.js.map +1 -1
- package/lib/cjs/rpc/web/WebAppRpcProtocol.js +1 -1
- package/lib/cjs/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/lib/esm/EntityProps.js +2 -2
- package/lib/esm/EntityProps.js.map +1 -1
- package/lib/esm/geometry/ElementGeometry.js.map +1 -1
- package/lib/esm/rpc/core/RpcMarshaling.js +2 -2
- package/lib/esm/rpc/core/RpcMarshaling.js.map +1 -1
- package/lib/esm/rpc/web/WebAppRpcProtocol.js +1 -1
- package/lib/esm/rpc/web/WebAppRpcProtocol.js.map +1 -1
- package/package.json +9 -27
|
@@ -43,7 +43,7 @@ class RpcMarshaling {
|
|
|
43
43
|
}
|
|
44
44
|
marshalingTarget = serialized;
|
|
45
45
|
chunkThreshold = protocol ? protocol.transferChunkThreshold : 0;
|
|
46
|
-
serialized.objects = JSON.stringify(value, WireFormat.marshal);
|
|
46
|
+
serialized.objects = JSON.stringify(value, (_key, _value) => WireFormat.marshal(_key, _value));
|
|
47
47
|
marshalingTarget = undefined;
|
|
48
48
|
chunkThreshold = 0;
|
|
49
49
|
return serialized;
|
|
@@ -57,7 +57,7 @@ class RpcMarshaling {
|
|
|
57
57
|
chunkThreshold = protocol ? protocol.transferChunkThreshold : 0;
|
|
58
58
|
let result;
|
|
59
59
|
try {
|
|
60
|
-
result = JSON.parse(value.objects, WireFormat.unmarshal);
|
|
60
|
+
result = JSON.parse(value.objects, (_key, _value) => WireFormat.unmarshal(_key, _value));
|
|
61
61
|
}
|
|
62
62
|
catch (error) {
|
|
63
63
|
if (error instanceof SyntaxError)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcMarshaling.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcMarshaling.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RpcInterface\r\n */\r\n\r\nimport { BentleyStatus, IModelError } from \"../../IModelError\";\r\nimport { BackendReadable } from \"../../BackendTypes\";\r\nimport { RpcProtocol } from \"./RpcProtocol\";\r\n\r\n// cspell:ignore unmarshal\r\n/* eslint-disable deprecation/deprecation */\r\n\r\nfunction isBuffer(val: any): boolean {\r\n return val && typeof (val.constructor) !== \"undefined\" && typeof (val.constructor.isBuffer) === \"function\" && val.constructor.isBuffer(val);\r\n}\r\n\r\nlet marshalingTarget: RpcSerializedValue;\r\nlet chunkThreshold = 0;\r\n\r\n/** @internal */\r\nexport interface MarshalingBinaryMarker {\r\n isBinary: true;\r\n index: number;\r\n size: number;\r\n chunks: number;\r\n}\r\n\r\n/** @internal */\r\nexport namespace MarshalingBinaryMarker {\r\n export function createDefault(): MarshalingBinaryMarker {\r\n return { isBinary: true, index: 0, size: -1, chunks: 1 };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface RpcSerializedValue {\r\n objects: string;\r\n data: Uint8Array[];\r\n chunks?: number;\r\n stream?: BackendReadable;\r\n}\r\n\r\n/** @internal */\r\nexport namespace RpcSerializedValue {\r\n export function create(objects = \"\", data: Uint8Array[] = []): RpcSerializedValue {\r\n return { objects, data };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RpcMarshaling {\r\n private constructor() { }\r\n\r\n /** Serializes a value. */\r\n public static async serialize(protocol: RpcProtocol | undefined, value: any): Promise<RpcSerializedValue> {\r\n const serialized = RpcSerializedValue.create();\r\n\r\n if (typeof (value) === \"undefined\") {\r\n return serialized;\r\n }\r\n\r\n marshalingTarget = serialized;\r\n chunkThreshold = protocol ? protocol.transferChunkThreshold : 0;\r\n serialized.objects = JSON.stringify(value, WireFormat.marshal);\r\n marshalingTarget = undefined as any;\r\n chunkThreshold = 0;\r\n\r\n return serialized;\r\n }\r\n\r\n /** Deserializes a value. */\r\n public static deserialize(protocol: RpcProtocol | undefined, value: RpcSerializedValue): any {\r\n if (value.objects === \"\") {\r\n return undefined;\r\n }\r\n\r\n marshalingTarget = value;\r\n chunkThreshold = protocol ? protocol.transferChunkThreshold : 0;\r\n let result;\r\n try {\r\n result = JSON.parse(value.objects, WireFormat.unmarshal);\r\n } catch (error) {\r\n if (error instanceof SyntaxError)\r\n throw new IModelError(BentleyStatus.ERROR, `Invalid JSON: \"${value.objects}\"`);\r\n throw error;\r\n }\r\n marshalingTarget = undefined as any;\r\n chunkThreshold = 0;\r\n\r\n return result;\r\n }\r\n}\r\n\r\nclass WireFormat {\r\n /** JSON.stringify replacer callback. */\r\n public static marshal(this: any, _key: string, value: any) {\r\n const asBinary = WireFormat.marshalBinary(value);\r\n if (asBinary) {\r\n return asBinary;\r\n }\r\n\r\n const asError = WireFormat.marshalError(value);\r\n if (asError) {\r\n return asError;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /** JSON.parse reviver callback. */\r\n public static unmarshal(_key: string, value: any) {\r\n if (typeof (value) === \"object\" && value !== null && value.hasOwnProperty(\"isBinary\") && value.isBinary) {\r\n return WireFormat.unmarshalBinary(value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private static marshalBinary(value: any): any {\r\n if (value instanceof Uint8Array || isBuffer(value)) {\r\n const marker: MarshalingBinaryMarker = { isBinary: true, index: -1, size: value.byteLength, chunks: 1 };\r\n\r\n if (chunkThreshold && value.byteLength > chunkThreshold) {\r\n marker.index = marshalingTarget.data.length;\r\n marker.chunks = 0;\r\n\r\n let cursor = value.byteOffset;\r\n const end = cursor + value.byteLength;\r\n let chunk = chunkThreshold;\r\n\r\n for (; ;) {\r\n if (cursor >= end) {\r\n break;\r\n }\r\n\r\n marshalingTarget.data.push(new Uint8Array(value.buffer, cursor, chunk));\r\n ++marker.chunks;\r\n cursor += chunk;\r\n\r\n const consumed = cursor - value.byteOffset;\r\n const remaining = value.byteLength - consumed;\r\n chunk = Math.min(chunkThreshold, remaining);\r\n }\r\n } else {\r\n marker.index = marshalingTarget.data.push(value) - 1;\r\n }\r\n\r\n return marker;\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n private static unmarshalBinary(value: MarshalingBinaryMarker): any {\r\n if (value.index >= marshalingTarget.data.length) {\r\n throw new IModelError(BentleyStatus.ERROR, `Cannot unmarshal missing binary value.`);\r\n }\r\n\r\n if (value.chunks === 0) {\r\n return new Uint8Array();\r\n } else if (value.chunks === 1) {\r\n return new Uint8Array(marshalingTarget.data[value.index]);\r\n } else {\r\n const buffer = new ArrayBuffer(value.size);\r\n const view = new Uint8Array(buffer);\r\n\r\n let cursor = 0;\r\n for (let c = 0; c !== value.chunks; ++c) {\r\n const chunk = marshalingTarget.data[value.index + c];\r\n view.set(chunk, cursor);\r\n cursor += chunk.byteLength;\r\n }\r\n\r\n return view;\r\n }\r\n }\r\n\r\n private static marshalError(value: any) {\r\n if (value instanceof Error) {\r\n const props = Object.getOwnPropertyDescriptors(value);\r\n props.isError = { configurable: true, enumerable: true, writable: true, value: true };\r\n props.name = { configurable: true, enumerable: true, writable: true, value: value.name };\r\n props.message = { configurable: true, enumerable: true, writable: true, value: value.message };\r\n props.stack = { configurable: true, enumerable: true, writable: true, value: value.stack };\r\n return Object.create(Object.prototype, props);\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"RpcMarshaling.js","sourceRoot":"","sources":["../../../../src/rpc/core/RpcMarshaling.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RpcInterface\r\n */\r\n\r\nimport { BentleyStatus, IModelError } from \"../../IModelError\";\r\nimport { BackendReadable } from \"../../BackendTypes\";\r\nimport { RpcProtocol } from \"./RpcProtocol\";\r\n\r\n// cspell:ignore unmarshal\r\n/* eslint-disable deprecation/deprecation */\r\n\r\nfunction isBuffer(val: any): boolean {\r\n return val && typeof (val.constructor) !== \"undefined\" && typeof (val.constructor.isBuffer) === \"function\" && val.constructor.isBuffer(val);\r\n}\r\n\r\nlet marshalingTarget: RpcSerializedValue;\r\nlet chunkThreshold = 0;\r\n\r\n/** @internal */\r\nexport interface MarshalingBinaryMarker {\r\n isBinary: true;\r\n index: number;\r\n size: number;\r\n chunks: number;\r\n}\r\n\r\n/** @internal */\r\nexport namespace MarshalingBinaryMarker {\r\n export function createDefault(): MarshalingBinaryMarker {\r\n return { isBinary: true, index: 0, size: -1, chunks: 1 };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport interface RpcSerializedValue {\r\n objects: string;\r\n data: Uint8Array[];\r\n chunks?: number;\r\n stream?: BackendReadable;\r\n}\r\n\r\n/** @internal */\r\nexport namespace RpcSerializedValue {\r\n export function create(objects = \"\", data: Uint8Array[] = []): RpcSerializedValue {\r\n return { objects, data };\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport class RpcMarshaling {\r\n private constructor() { }\r\n\r\n /** Serializes a value. */\r\n public static async serialize(protocol: RpcProtocol | undefined, value: any): Promise<RpcSerializedValue> {\r\n const serialized = RpcSerializedValue.create();\r\n\r\n if (typeof (value) === \"undefined\") {\r\n return serialized;\r\n }\r\n\r\n marshalingTarget = serialized;\r\n chunkThreshold = protocol ? protocol.transferChunkThreshold : 0;\r\n serialized.objects = JSON.stringify(value, (_key, _value) => WireFormat.marshal(_key, _value));\r\n marshalingTarget = undefined as any;\r\n chunkThreshold = 0;\r\n\r\n return serialized;\r\n }\r\n\r\n /** Deserializes a value. */\r\n public static deserialize(protocol: RpcProtocol | undefined, value: RpcSerializedValue): any {\r\n if (value.objects === \"\") {\r\n return undefined;\r\n }\r\n\r\n marshalingTarget = value;\r\n chunkThreshold = protocol ? protocol.transferChunkThreshold : 0;\r\n let result;\r\n try {\r\n result = JSON.parse(value.objects, (_key, _value) => WireFormat.unmarshal(_key, _value));\r\n } catch (error) {\r\n if (error instanceof SyntaxError)\r\n throw new IModelError(BentleyStatus.ERROR, `Invalid JSON: \"${value.objects}\"`);\r\n throw error;\r\n }\r\n marshalingTarget = undefined as any;\r\n chunkThreshold = 0;\r\n\r\n return result;\r\n }\r\n}\r\n\r\nclass WireFormat {\r\n /** JSON.stringify replacer callback. */\r\n public static marshal(this: any, _key: string, value: any) {\r\n const asBinary = WireFormat.marshalBinary(value);\r\n if (asBinary) {\r\n return asBinary;\r\n }\r\n\r\n const asError = WireFormat.marshalError(value);\r\n if (asError) {\r\n return asError;\r\n }\r\n\r\n return value;\r\n }\r\n\r\n /** JSON.parse reviver callback. */\r\n public static unmarshal(_key: string, value: any) {\r\n if (typeof (value) === \"object\" && value !== null && value.hasOwnProperty(\"isBinary\") && value.isBinary) {\r\n return WireFormat.unmarshalBinary(value);\r\n }\r\n\r\n return value;\r\n }\r\n\r\n private static marshalBinary(value: any): any {\r\n if (value instanceof Uint8Array || isBuffer(value)) {\r\n const marker: MarshalingBinaryMarker = { isBinary: true, index: -1, size: value.byteLength, chunks: 1 };\r\n\r\n if (chunkThreshold && value.byteLength > chunkThreshold) {\r\n marker.index = marshalingTarget.data.length;\r\n marker.chunks = 0;\r\n\r\n let cursor = value.byteOffset;\r\n const end = cursor + value.byteLength;\r\n let chunk = chunkThreshold;\r\n\r\n for (; ;) {\r\n if (cursor >= end) {\r\n break;\r\n }\r\n\r\n marshalingTarget.data.push(new Uint8Array(value.buffer, cursor, chunk));\r\n ++marker.chunks;\r\n cursor += chunk;\r\n\r\n const consumed = cursor - value.byteOffset;\r\n const remaining = value.byteLength - consumed;\r\n chunk = Math.min(chunkThreshold, remaining);\r\n }\r\n } else {\r\n marker.index = marshalingTarget.data.push(value) - 1;\r\n }\r\n\r\n return marker;\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n\r\n private static unmarshalBinary(value: MarshalingBinaryMarker): any {\r\n if (value.index >= marshalingTarget.data.length) {\r\n throw new IModelError(BentleyStatus.ERROR, `Cannot unmarshal missing binary value.`);\r\n }\r\n\r\n if (value.chunks === 0) {\r\n return new Uint8Array();\r\n } else if (value.chunks === 1) {\r\n return new Uint8Array(marshalingTarget.data[value.index]);\r\n } else {\r\n const buffer = new ArrayBuffer(value.size);\r\n const view = new Uint8Array(buffer);\r\n\r\n let cursor = 0;\r\n for (let c = 0; c !== value.chunks; ++c) {\r\n const chunk = marshalingTarget.data[value.index + c];\r\n view.set(chunk, cursor);\r\n cursor += chunk.byteLength;\r\n }\r\n\r\n return view;\r\n }\r\n }\r\n\r\n private static marshalError(value: any) {\r\n if (value instanceof Error) {\r\n const props = Object.getOwnPropertyDescriptors(value);\r\n props.isError = { configurable: true, enumerable: true, writable: true, value: true };\r\n props.name = { configurable: true, enumerable: true, writable: true, value: value.name };\r\n props.message = { configurable: true, enumerable: true, writable: true, value: value.message };\r\n props.stack = { configurable: true, enumerable: true, writable: true, value: value.stack };\r\n return Object.create(Object.prototype, props);\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n"]}
|
|
@@ -110,7 +110,7 @@ class WebAppRpcProtocol extends RpcProtocol_1.RpcProtocol {
|
|
|
110
110
|
/** The RPC request class for this protocol. */
|
|
111
111
|
this.requestType = WebAppRpcRequest_1.WebAppRpcRequest;
|
|
112
112
|
this.supportsStatusCategory = true;
|
|
113
|
-
this.events.addListener(WebAppRpcLogging_1.WebAppRpcLogging.logProtocolEvent);
|
|
113
|
+
this.events.addListener(async (event, object) => WebAppRpcLogging_1.WebAppRpcLogging.logProtocolEvent(event, object));
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
exports.WebAppRpcProtocol = WebAppRpcProtocol;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebAppRpcProtocol.js","sourceRoot":"","sources":["../../../../src/rpc/web/WebAppRpcProtocol.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAA2D;AAC3D,qEAAkE;AAGlE,uDAA2F;AAE3F,qDAAwE;AACxE,uCAAiF;AACjF,yDAAsD;AACtD,yDAAsD;AA2CtD;;GAEG;AACH,MAAsB,iBAAkB,SAAQ,yBAAW;IAGzD,+EAA+E;IACxE,KAAK,CAAC,yBAAyB,CAAC,GAAsB,EAAE,GAAuB;QACpF,OAAO,IAAI,CAAC,0BAA0B,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,gFAAgF;IACzE,KAAK,CAAC,0BAA0B,CAAC,GAAsB,EAAE,GAAuB;QACrF,IAAI,OAA6B,CAAC;QAClC,IAAI;YACF,OAAO,GAAG,MAAM,mCAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SAC1D;QAAC,OAAO,KAAK,EAAE;YACd,MAAM,OAAO,GAAG,2BAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACpD,qBAAM,CAAC,QAAQ,CAAC,2CAAoB,CAAC,mBAAmB,EAAE,4BAA4B,OAAO,EAAE,EAAE,2BAAY,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;YACvI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YACrD,OAAO;SACR;QACD,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,mCAAgB,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5E,CAAC;IAED,iFAAiF;IAC1E,+BAA+B,CAAC,IAAuB,EAAE,GAAuB;QACrF,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC5D,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACxB,CAAC;IAED,wEAAwE;IACjE,MAAM,CAAC,kBAAkB,CAAC,QAAmC;QAClE,IAAI,CAAC,QAAQ;YACX,OAAO,6BAAc,CAAC,OAAO,CAAC;QAEhC,IAAI,QAAQ,CAAC,OAAO,CAAC,gCAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACtD,OAAO,6BAAc,CAAC,IAAI,CAAC;SAC5B;aAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,gCAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YAC3D,OAAO,6BAAc,CAAC,MAAM,CAAC;SAC9B;aAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,gCAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC9D,OAAO,6BAAc,CAAC,SAAS,CAAC;SACjC;aAAM;YACL,OAAO,6BAAc,CAAC,OAAO,CAAC;SAC/B;IACH,CAAC;IAWD,2EAA2E;IAC3D,SAAS,CAAC,IAAY;QACpC,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG,CAAC,CAAC,OAAO,+BAAgB,CAAC,QAAQ,CAAC;YAC3C,KAAK,GAAG,CAAC,CAAC,OAAO,+BAAgB,CAAC,OAAO,CAAC;YAC1C,KAAK,GAAG,CAAC,CAAC,OAAO,+BAAgB,CAAC,QAAQ,CAAC;YAC3C,KAAK,GAAG,CAAC,CAAC,OAAO,+BAAgB,CAAC,QAAQ,CAAC;YAC3C,KAAK,GAAG,CAAC,CAAC,OAAO,+BAAgB,CAAC,SAAS,CAAC;YAC5C,KAAK,GAAG,CAAC,CAAC,OAAO,+BAAgB,CAAC,UAAU,CAAC;YAC7C,KAAK,GAAG,CAAC,CAAC,OAAO,+BAAgB,CAAC,kBAAkB,CAAC;YACrD,KAAK,GAAG,CAAC,CAAC,OAAO,+BAAgB,CAAC,cAAc,CAAC;YACjD,KAAK,GAAG,CAAC,CAAC,OAAO,+BAAgB,CAAC,cAAc,CAAC;YACjD,KAAK,GAAG,CAAC,CAAC,OAAO,+BAAgB,CAAC,eAAe,CAAC;YAClD,OAAO,CAAC,CAAC,OAAO,+BAAgB,CAAC,OAAO,CAAC;SAC1C;IACH,CAAC;IAED,2EAA2E;IAC3D,OAAO,CAAC,MAAwB;QAC9C,QAAQ,MAAM,EAAE;YACd,KAAK,+BAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC;YAC3C,KAAK,+BAAgB,CAAC,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC;YAC1C,KAAK,+BAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC;YAC3C,KAAK,+BAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC;YAC3C,KAAK,+BAAgB,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,CAAC;YAC5C,KAAK,+BAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,GAAG,CAAC;YAC7C,KAAK,+BAAgB,CAAC,kBAAkB,CAAC,CAAC,OAAO,GAAG,CAAC;YACrD,KAAK,+BAAgB,CAAC,cAAc,CAAC,CAAC,OAAO,GAAG,CAAC;YACjD,KAAK,+BAAgB,CAAC,cAAc,CAAC,CAAC,OAAO,GAAG,CAAC;YACjD,KAAK,+BAAgB,CAAC,eAAe,CAAC,CAAC,OAAO,GAAG,CAAC;YAClD,OAAO,CAAC,CAAC,OAAO,GAAG,CAAC;SACrB;IACH,CAAC;IAID,+DAA+D;IACxD,SAAS,CAAC,IAAY;QAC3B,OAAO,IAAI,KAAK,GAAG,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,IAAW,kBAAkB,KAAK,OAAO,IAAI,+BAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAO3E,mCAAmC;IACnC,YAAmB,aAA+B;QAChD,KAAK,CAAC,aAAa,CAAC,CAAC;QA3GP,oBAAe,GAAG,IAAI,CAAC;QAgDvC,sDAAsD;QAC/C,eAAU,GAAW,EAAE,CAAC;QAE/B,+CAA+C;QAC/B,gBAAW,GAAG,mCAAgB,CAAC;QAoC/B,2BAAsB,GAAG,IAAI,CAAC;QAoB5C,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,mCAAgB,CAAC,gBAAgB,CAAC,CAAC;IAC7D,CAAC;CACF;AA/GD,8CA+GC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RpcInterface\r\n */\r\n\r\nimport { BentleyError, Logger } from \"@itwin/core-bentley\";\r\nimport { CommonLoggerCategory } from \"../../CommonLoggerCategory\";\r\nimport { BackendReadable, BackendWritable } from \"../../BackendTypes\";\r\nimport { RpcConfiguration } from \"../core/RpcConfiguration\";\r\nimport { RpcContentType, RpcRequestStatus, WEB_RPC_CONSTANTS } from \"../core/RpcConstants\";\r\nimport { RpcOperation } from \"../core/RpcOperation\";\r\nimport { RpcProtocol, SerializedRpcRequest } from \"../core/RpcProtocol\";\r\nimport { OpenAPIInfo, OpenAPIParameter, RpcOpenAPIDescription } from \"./OpenAPI\";\r\nimport { WebAppRpcLogging } from \"./WebAppRpcLogging\";\r\nimport { WebAppRpcRequest } from \"./WebAppRpcRequest\";\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\n/** An HTTP server request object.\r\n * @public\r\n * @deprecated in 3.6. The RPC system will be significantly refactored (or replaced) in version 5.0.\r\n */\r\nexport interface HttpServerRequest extends BackendReadable {\r\n aborted: boolean;\r\n httpVersion: string;\r\n httpVersionMajor: number;\r\n httpVersionMinor: number;\r\n complete: boolean;\r\n connection: any;\r\n headers: { [header: string]: string | string[] | undefined };\r\n rawHeaders: string[];\r\n trailers: { [key: string]: string | undefined };\r\n rawTrailers: string[];\r\n setTimeout(msecs: number, callback: () => void): void;\r\n setTimeout(msecs: number, callback: () => void): this;\r\n url?: string;\r\n statusCode?: number;\r\n statusMessage?: string;\r\n socket: any;\r\n destroy(error?: Error): this;\r\n body: string | Buffer;\r\n path: string;\r\n method: string;\r\n ip?: string;\r\n header: (field: string) => string | undefined;\r\n}\r\n\r\n/** An HTTP server response object.\r\n * @public\r\n * @deprecated in 3.6. The RPC system will be significantly refactored (or replaced) in version 5.0.\r\n */\r\nexport interface HttpServerResponse extends BackendWritable {\r\n send(body?: any): HttpServerResponse;\r\n status(code: number): HttpServerResponse;\r\n set(field: string, value: string): void;\r\n}\r\n\r\n/** The HTTP application protocol.\r\n * @internal\r\n */\r\nexport abstract class WebAppRpcProtocol extends RpcProtocol {\r\n public override preserveStreams = true;\r\n\r\n /** Convenience handler for an RPC operation get request for an HTTP server. */\r\n public async handleOperationGetRequest(req: HttpServerRequest, res: HttpServerResponse) {\r\n return this.handleOperationPostRequest(req, res);\r\n }\r\n\r\n /** Convenience handler for an RPC operation post request for an HTTP server. */\r\n public async handleOperationPostRequest(req: HttpServerRequest, res: HttpServerResponse) {\r\n let request: SerializedRpcRequest;\r\n try {\r\n request = await WebAppRpcRequest.parseRequest(this, req);\r\n } catch (error) {\r\n const message = BentleyError.getErrorMessage(error);\r\n Logger.logError(CommonLoggerCategory.RpcInterfaceBackend, `Failed to parse request: ${message}`, BentleyError.getErrorMetadata(error));\r\n res.status(400);\r\n res.send(JSON.stringify({ message, isError: true }));\r\n return;\r\n }\r\n const fulfillment = await this.fulfill(request);\r\n await WebAppRpcRequest.sendResponse(this, request, fulfillment, req, res);\r\n }\r\n\r\n /** Convenience handler for an OpenAPI description request for an HTTP server. */\r\n public handleOpenApiDescriptionRequest(_req: HttpServerRequest, res: HttpServerResponse) {\r\n const description = JSON.stringify(this.openAPIDescription);\r\n res.send(description);\r\n }\r\n\r\n /** Converts an HTTP content type value to an RPC content type value. */\r\n public static computeContentType(httpType: string | null | undefined): RpcContentType {\r\n if (!httpType)\r\n return RpcContentType.Unknown;\r\n\r\n if (httpType.indexOf(WEB_RPC_CONSTANTS.ANY_TEXT) === 0) {\r\n return RpcContentType.Text;\r\n } else if (httpType.indexOf(WEB_RPC_CONSTANTS.BINARY) === 0) {\r\n return RpcContentType.Binary;\r\n } else if (httpType.indexOf(WEB_RPC_CONSTANTS.MULTIPART) === 0) {\r\n return RpcContentType.Multipart;\r\n } else {\r\n return RpcContentType.Unknown;\r\n }\r\n }\r\n\r\n /** The OpenAPI-compatible info object for this protocol. */\r\n public abstract info: OpenAPIInfo;\r\n\r\n /** An optional prefix for RPC operation URI paths. */\r\n public pathPrefix: string = \"\";\r\n\r\n /** The RPC request class for this protocol. */\r\n public readonly requestType = WebAppRpcRequest;\r\n\r\n /** Supplies the status corresponding to a protocol-specific code value. */\r\n public override getStatus(code: number): RpcRequestStatus {\r\n switch (code) {\r\n case 404: return RpcRequestStatus.NotFound;\r\n case 202: return RpcRequestStatus.Pending;\r\n case 200: return RpcRequestStatus.Resolved;\r\n case 500: return RpcRequestStatus.Rejected;\r\n case 204: return RpcRequestStatus.NoContent;\r\n case 502: return RpcRequestStatus.BadGateway;\r\n case 503: return RpcRequestStatus.ServiceUnavailable;\r\n case 504: return RpcRequestStatus.GatewayTimeout;\r\n case 408: return RpcRequestStatus.RequestTimeout;\r\n case 429: return RpcRequestStatus.TooManyRequests;\r\n default: return RpcRequestStatus.Unknown;\r\n }\r\n }\r\n\r\n /** Supplies the protocol-specific code corresponding to a status value. */\r\n public override getCode(status: RpcRequestStatus): number {\r\n switch (status) {\r\n case RpcRequestStatus.NotFound: return 404;\r\n case RpcRequestStatus.Pending: return 202;\r\n case RpcRequestStatus.Resolved: return 200;\r\n case RpcRequestStatus.Rejected: return 500;\r\n case RpcRequestStatus.NoContent: return 204;\r\n case RpcRequestStatus.BadGateway: return 502;\r\n case RpcRequestStatus.ServiceUnavailable: return 503;\r\n case RpcRequestStatus.GatewayTimeout: return 504;\r\n case RpcRequestStatus.RequestTimeout: return 408;\r\n case RpcRequestStatus.TooManyRequests: return 429;\r\n default: return 501;\r\n }\r\n }\r\n\r\n public override supportsStatusCategory = true;\r\n\r\n /** Whether an HTTP status code indicates a request timeout. */\r\n public isTimeout(code: number): boolean {\r\n return code === 504;\r\n }\r\n\r\n /** An OpenAPI-compatible description of this protocol.\r\n * @internal\r\n */\r\n public get openAPIDescription() { return new RpcOpenAPIDescription(this); }\r\n\r\n /** Returns the OpenAPI-compatible URI path parameters for an RPC operation.\r\n * @internal\r\n */\r\n public abstract supplyPathParametersForOperation(_operation: RpcOperation): OpenAPIParameter[];\r\n\r\n /** Constructs an HTTP protocol. */\r\n public constructor(configuration: RpcConfiguration) {\r\n super(configuration);\r\n this.events.addListener(WebAppRpcLogging.logProtocolEvent);\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"WebAppRpcProtocol.js","sourceRoot":"","sources":["../../../../src/rpc/web/WebAppRpcProtocol.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RpcInterface\r\n */\r\n\r\nimport { BentleyError, Logger } from \"@itwin/core-bentley\";\r\nimport { CommonLoggerCategory } from \"../../CommonLoggerCategory\";\r\nimport { BackendReadable, BackendWritable } from \"../../BackendTypes\";\r\nimport { RpcConfiguration } from \"../core/RpcConfiguration\";\r\nimport { RpcContentType, RpcRequestStatus, WEB_RPC_CONSTANTS } from \"../core/RpcConstants\";\r\nimport { RpcOperation } from \"../core/RpcOperation\";\r\nimport { RpcProtocol, SerializedRpcRequest } from \"../core/RpcProtocol\";\r\nimport { OpenAPIInfo, OpenAPIParameter, RpcOpenAPIDescription } from \"./OpenAPI\";\r\nimport { WebAppRpcLogging } from \"./WebAppRpcLogging\";\r\nimport { WebAppRpcRequest } from \"./WebAppRpcRequest\";\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\n/** An HTTP server request object.\r\n * @public\r\n * @deprecated in 3.6. The RPC system will be significantly refactored (or replaced) in version 5.0.\r\n */\r\nexport interface HttpServerRequest extends BackendReadable {\r\n aborted: boolean;\r\n httpVersion: string;\r\n httpVersionMajor: number;\r\n httpVersionMinor: number;\r\n complete: boolean;\r\n connection: any;\r\n headers: { [header: string]: string | string[] | undefined };\r\n rawHeaders: string[];\r\n trailers: { [key: string]: string | undefined };\r\n rawTrailers: string[];\r\n setTimeout(msecs: number, callback: () => void): void;\r\n setTimeout(msecs: number, callback: () => void): this;\r\n url?: string;\r\n statusCode?: number;\r\n statusMessage?: string;\r\n socket: any;\r\n destroy(error?: Error): this;\r\n body: string | Buffer;\r\n path: string;\r\n method: string;\r\n ip?: string;\r\n header: (field: string) => string | undefined;\r\n}\r\n\r\n/** An HTTP server response object.\r\n * @public\r\n * @deprecated in 3.6. The RPC system will be significantly refactored (or replaced) in version 5.0.\r\n */\r\nexport interface HttpServerResponse extends BackendWritable {\r\n send(body?: any): HttpServerResponse;\r\n status(code: number): HttpServerResponse;\r\n set(field: string, value: string): void;\r\n}\r\n\r\n/** The HTTP application protocol.\r\n * @internal\r\n */\r\nexport abstract class WebAppRpcProtocol extends RpcProtocol {\r\n public override preserveStreams = true;\r\n\r\n /** Convenience handler for an RPC operation get request for an HTTP server. */\r\n public async handleOperationGetRequest(req: HttpServerRequest, res: HttpServerResponse) {\r\n return this.handleOperationPostRequest(req, res);\r\n }\r\n\r\n /** Convenience handler for an RPC operation post request for an HTTP server. */\r\n public async handleOperationPostRequest(req: HttpServerRequest, res: HttpServerResponse) {\r\n let request: SerializedRpcRequest;\r\n try {\r\n request = await WebAppRpcRequest.parseRequest(this, req);\r\n } catch (error) {\r\n const message = BentleyError.getErrorMessage(error);\r\n Logger.logError(CommonLoggerCategory.RpcInterfaceBackend, `Failed to parse request: ${message}`, BentleyError.getErrorMetadata(error));\r\n res.status(400);\r\n res.send(JSON.stringify({ message, isError: true }));\r\n return;\r\n }\r\n const fulfillment = await this.fulfill(request);\r\n await WebAppRpcRequest.sendResponse(this, request, fulfillment, req, res);\r\n }\r\n\r\n /** Convenience handler for an OpenAPI description request for an HTTP server. */\r\n public handleOpenApiDescriptionRequest(_req: HttpServerRequest, res: HttpServerResponse) {\r\n const description = JSON.stringify(this.openAPIDescription);\r\n res.send(description);\r\n }\r\n\r\n /** Converts an HTTP content type value to an RPC content type value. */\r\n public static computeContentType(httpType: string | null | undefined): RpcContentType {\r\n if (!httpType)\r\n return RpcContentType.Unknown;\r\n\r\n if (httpType.indexOf(WEB_RPC_CONSTANTS.ANY_TEXT) === 0) {\r\n return RpcContentType.Text;\r\n } else if (httpType.indexOf(WEB_RPC_CONSTANTS.BINARY) === 0) {\r\n return RpcContentType.Binary;\r\n } else if (httpType.indexOf(WEB_RPC_CONSTANTS.MULTIPART) === 0) {\r\n return RpcContentType.Multipart;\r\n } else {\r\n return RpcContentType.Unknown;\r\n }\r\n }\r\n\r\n /** The OpenAPI-compatible info object for this protocol. */\r\n public abstract info: OpenAPIInfo;\r\n\r\n /** An optional prefix for RPC operation URI paths. */\r\n public pathPrefix: string = \"\";\r\n\r\n /** The RPC request class for this protocol. */\r\n public readonly requestType = WebAppRpcRequest;\r\n\r\n /** Supplies the status corresponding to a protocol-specific code value. */\r\n public override getStatus(code: number): RpcRequestStatus {\r\n switch (code) {\r\n case 404: return RpcRequestStatus.NotFound;\r\n case 202: return RpcRequestStatus.Pending;\r\n case 200: return RpcRequestStatus.Resolved;\r\n case 500: return RpcRequestStatus.Rejected;\r\n case 204: return RpcRequestStatus.NoContent;\r\n case 502: return RpcRequestStatus.BadGateway;\r\n case 503: return RpcRequestStatus.ServiceUnavailable;\r\n case 504: return RpcRequestStatus.GatewayTimeout;\r\n case 408: return RpcRequestStatus.RequestTimeout;\r\n case 429: return RpcRequestStatus.TooManyRequests;\r\n default: return RpcRequestStatus.Unknown;\r\n }\r\n }\r\n\r\n /** Supplies the protocol-specific code corresponding to a status value. */\r\n public override getCode(status: RpcRequestStatus): number {\r\n switch (status) {\r\n case RpcRequestStatus.NotFound: return 404;\r\n case RpcRequestStatus.Pending: return 202;\r\n case RpcRequestStatus.Resolved: return 200;\r\n case RpcRequestStatus.Rejected: return 500;\r\n case RpcRequestStatus.NoContent: return 204;\r\n case RpcRequestStatus.BadGateway: return 502;\r\n case RpcRequestStatus.ServiceUnavailable: return 503;\r\n case RpcRequestStatus.GatewayTimeout: return 504;\r\n case RpcRequestStatus.RequestTimeout: return 408;\r\n case RpcRequestStatus.TooManyRequests: return 429;\r\n default: return 501;\r\n }\r\n }\r\n\r\n public override supportsStatusCategory = true;\r\n\r\n /** Whether an HTTP status code indicates a request timeout. */\r\n public isTimeout(code: number): boolean {\r\n return code === 504;\r\n }\r\n\r\n /** An OpenAPI-compatible description of this protocol.\r\n * @internal\r\n */\r\n public get openAPIDescription() { return new RpcOpenAPIDescription(this); }\r\n\r\n /** Returns the OpenAPI-compatible URI path parameters for an RPC operation.\r\n * @internal\r\n */\r\n public abstract supplyPathParametersForOperation(_operation: RpcOperation): OpenAPIParameter[];\r\n\r\n /** Constructs an HTTP protocol. */\r\n public constructor(configuration: RpcConfiguration) {\r\n super(configuration);\r\n this.events.addListener(async (event, object) => WebAppRpcLogging.logProtocolEvent(event, object));\r\n }\r\n}\r\n"]}
|
package/lib/esm/EntityProps.js
CHANGED
|
@@ -75,9 +75,9 @@ export class PropertyMetaData {
|
|
|
75
75
|
case PrimitiveTypeCode.String:
|
|
76
76
|
return jsonObj; // this works even for arrays or strings that are JSON because the parsed JSON is already the right type
|
|
77
77
|
case PrimitiveTypeCode.Point2d:
|
|
78
|
-
return this.createValueOrArray(Point2d.fromJSON, jsonObj);
|
|
78
|
+
return this.createValueOrArray((obj) => Point2d.fromJSON(obj), jsonObj);
|
|
79
79
|
case PrimitiveTypeCode.Point3d:
|
|
80
|
-
return this.createValueOrArray(Point3d.fromJSON, jsonObj);
|
|
80
|
+
return this.createValueOrArray((obj) => Point3d.fromJSON(obj), jsonObj);
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
if (this.isNavigation)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EntityProps.js","sourceRoot":"","sources":["../../src/EntityProps.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Entities\r\n */\r\n\r\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d } from \"@itwin/core-geometry\";\r\nimport { RelatedElement } from \"./ElementProps\";\r\n\r\n/** The persistent format of an [Entity]($backend), also used as the \"wire format\" when transmitting information about entities\r\n * between the backend and frontend.\r\n * EntityProps and all of its sub-types like [[ElementProps]] are \"plain old Javascript objects\" - that is, objects containing\r\n * no methods and no properties of `class` type.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface EntityProps {\r\n /** A non-existent property used to discriminate between [[EntityProps]] and [Entity]($backend).\r\n * @see [Entity.isInstanceOfEntity]($backend).\r\n */\r\n readonly isInstanceOfEntity?: never;\r\n /** The full name of the [ECClass]($docs/bis/guide/references/glossary/#ecclass) for this entity, in the form \"Schema:ClassName\" */\r\n classFullName: string;\r\n /** The Id of the entity. Must be present for SELECT, UPDATE, or DELETE, ignored for INSERT. */\r\n id?: Id64String;\r\n /** Optional [json properties]($docs/bis/guide/fundamentals/element-fundamentals.md#jsonproperties) of this Entity. */\r\n jsonProperties?: { [key: string]: any };\r\n}\r\n\r\n/** Specifies the source and target elements of a [[Relationship]] instance.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface SourceAndTarget {\r\n sourceId: Id64String;\r\n targetId: Id64String;\r\n}\r\n\r\n/** Properties that are common to all types of link table ECRelationships\r\n * @public\r\n * @extensions\r\n */\r\nexport interface RelationshipProps extends EntityProps, SourceAndTarget {\r\n}\r\n\r\n/** Parameters for performing a query on [Entity]($backend) classes.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface EntityQueryParams {\r\n /** The sql className, in the form \"Schema.ClassName\", of the class to search. */\r\n from?: string;\r\n /** Set to true to limit results to *not* include sub-classes of \"from\" class */\r\n only?: boolean;\r\n /** Optional \"WHERE\" clause to filter entities. Note: do *not* include the \"WHERE\" keyword. */\r\n where?: string;\r\n /** Optional \"ORDERBY\" clause to sort results. Note: do *not* include the \"ORDERBY\" keyword. */\r\n orderBy?: string;\r\n /** Optional \"LIMIT\" clause to limit the number of rows returned. */\r\n limit?: number;\r\n /** Optional \"OFFSET\" clause. Only valid if Limit is also present. */\r\n offset?: number;\r\n /** Bindings for parameterized values.\r\n * @see [[ECSqlStatement.bindValues]]\r\n */\r\n bindings?: any[] | object;\r\n}\r\n\r\n/** The primitive types of an Entity property.\r\n * @beta\r\n */\r\nexport enum PrimitiveTypeCode {\r\n Uninitialized = 0x00,\r\n Binary = 0x101,\r\n Boolean = 0x201,\r\n DateTime = 0x301,\r\n Double = 0x401,\r\n Integer = 0x501,\r\n Long = 0x601,\r\n Point2d = 0x701, // eslint-disable-line @typescript-eslint/no-shadow\r\n Point3d = 0x801, // eslint-disable-line @typescript-eslint/no-shadow\r\n String = 0x901,\r\n IGeometry = 0xa01, // Used for Bentley.Geometry.Common.IGeometry types\r\n}\r\n\r\n/** A callback function to process properties of an Entity\r\n * @beta\r\n */\r\nexport type PropertyCallback = (name: string, meta: PropertyMetaData) => void;\r\n\r\n/** A custom attribute instance\r\n * @beta\r\n */\r\nexport interface CustomAttribute {\r\n /** The class of the CustomAttribute */\r\n ecclass: string;\r\n /** An object whose properties correspond by name to the properties of this custom attribute instance. */\r\n properties: { [propName: string]: any };\r\n}\r\n\r\ntype FactoryFunc = (jsonObj: any) => any;\r\n\r\n/** @beta */\r\nexport interface PropertyMetaDataProps {\r\n primitiveType?: number;\r\n structName?: string;\r\n extendedType?: string;\r\n description?: string;\r\n displayLabel?: string;\r\n minimumValue?: any;\r\n maximumValue?: any;\r\n minimumLength?: number;\r\n maximumLength?: number;\r\n readOnly?: boolean;\r\n kindOfQuantity?: string;\r\n isCustomHandled?: boolean;\r\n isCustomHandledOrphan?: boolean;\r\n minOccurs?: number;\r\n maxOccurs?: number;\r\n direction?: string;\r\n relationshipClass?: string;\r\n customAttributes?: CustomAttribute[];\r\n}\r\n\r\n/** Metadata for a property.\r\n * @beta\r\n */\r\nexport class PropertyMetaData implements PropertyMetaDataProps {\r\n public primitiveType?: PrimitiveTypeCode;\r\n public structName?: string;\r\n public extendedType?: string;\r\n public description?: string;\r\n public displayLabel?: string;\r\n public minimumValue?: any;\r\n public maximumValue?: any;\r\n public minimumLength?: number;\r\n public maximumLength?: number;\r\n public readOnly?: boolean;\r\n public kindOfQuantity?: string;\r\n public isCustomHandled?: boolean;\r\n public isCustomHandledOrphan?: boolean;\r\n public minOccurs?: number;\r\n public maxOccurs?: number;\r\n public direction?: string;\r\n public relationshipClass?: string;\r\n public customAttributes?: CustomAttribute[];\r\n\r\n public constructor(jsonObj: PropertyMetaDataProps) {\r\n this.primitiveType = jsonObj.primitiveType;\r\n if (jsonObj.structName)\r\n this.structName = jsonObj.structName;\r\n this.extendedType = jsonObj.extendedType;\r\n this.description = jsonObj.description;\r\n this.displayLabel = jsonObj.displayLabel;\r\n if (undefined !== jsonObj.minimumValue)\r\n this.minimumValue = jsonObj.minimumValue;\r\n if (undefined !== jsonObj.maximumValue)\r\n this.maximumValue = jsonObj.maximumValue;\r\n if (undefined !== jsonObj.minimumLength)\r\n this.minimumLength = jsonObj.minimumLength;\r\n if (undefined !== jsonObj.maximumLength)\r\n this.maximumLength = jsonObj.maximumLength;\r\n this.readOnly = jsonObj.readOnly;\r\n this.kindOfQuantity = jsonObj.kindOfQuantity;\r\n this.isCustomHandled = jsonObj.isCustomHandled;\r\n if (undefined !== jsonObj.minOccurs)\r\n this.minOccurs = jsonObj.minOccurs;\r\n if (undefined !== jsonObj.maxOccurs)\r\n this.maxOccurs = jsonObj.maxOccurs;\r\n this.direction = jsonObj.direction;\r\n this.relationshipClass = jsonObj.relationshipClass;\r\n this.customAttributes = jsonObj.customAttributes;\r\n }\r\n\r\n /** Create a typed value, or array of values, from a factory and an input object */\r\n private createValueOrArray(func: FactoryFunc, jsonObj: any) {\r\n if (undefined === this.minOccurs)\r\n return func(jsonObj); // not an array\r\n\r\n const val: any = [];\r\n jsonObj.forEach((element: any) => val.push(func(element)));\r\n return val;\r\n }\r\n\r\n /** construct a single property from an input object according to this metadata */\r\n public createProperty(jsonObj: any): any {\r\n if (jsonObj === undefined)\r\n return undefined;\r\n\r\n if (undefined !== this.primitiveType) {\r\n switch (this.primitiveType) {\r\n case PrimitiveTypeCode.Boolean:\r\n case PrimitiveTypeCode.Double:\r\n case PrimitiveTypeCode.Integer:\r\n case PrimitiveTypeCode.String:\r\n return jsonObj; // this works even for arrays or strings that are JSON because the parsed JSON is already the right type\r\n\r\n case PrimitiveTypeCode.Point2d:\r\n return this.createValueOrArray(Point2d.fromJSON, jsonObj);\r\n\r\n case PrimitiveTypeCode.Point3d:\r\n return this.createValueOrArray(Point3d.fromJSON, jsonObj);\r\n }\r\n }\r\n if (this.isNavigation)\r\n return jsonObj.id !== undefined ? new RelatedElement(jsonObj) : Id64.fromJSON(jsonObj);\r\n\r\n return jsonObj;\r\n }\r\n\r\n /** Return `true` if this property is a NavigationProperty. */\r\n public get isNavigation(): boolean {\r\n return (this.direction !== undefined); // the presence of `direction` means it is a navigation property\r\n }\r\n}\r\n\r\n/** @beta */\r\nexport interface EntityMetaDataProps {\r\n ecclass: string;\r\n description?: string;\r\n modifier?: string;\r\n displayLabel?: string;\r\n /** The base classes from which this class derives. If more than one, the first is the super class and the others are [mixins]($docs/bis/ec/ec-mixin-class). */\r\n baseClasses: string[];\r\n /** The Custom Attributes for this class */\r\n customAttributes?: CustomAttribute[];\r\n /** An object whose properties correspond by name to the properties of this class. */\r\n properties: { [propName: string]: PropertyMetaData };\r\n}\r\n\r\n/** Metadata for an Entity.\r\n * @beta\r\n */\r\nexport class EntityMetaData implements EntityMetaDataProps {\r\n /** The Entity name */\r\n public readonly ecclass: string;\r\n public readonly description?: string;\r\n public readonly modifier?: string;\r\n public readonly displayLabel?: string;\r\n /** The base class that this class is derives from. If more than one, the first is the actual base class and the others are mixins. */\r\n public readonly baseClasses: string[];\r\n /** The Custom Attributes for this class */\r\n public readonly customAttributes?: CustomAttribute[];\r\n /** An object whose properties correspond by name to the properties of this class. */\r\n public readonly properties: { [propName: string]: PropertyMetaData };\r\n\r\n public constructor(jsonObj: EntityMetaDataProps) {\r\n this.ecclass = jsonObj.ecclass;\r\n this.description = jsonObj.description;\r\n this.modifier = jsonObj.modifier;\r\n this.displayLabel = jsonObj.displayLabel;\r\n this.baseClasses = jsonObj.baseClasses;\r\n this.customAttributes = jsonObj.customAttributes;\r\n this.properties = {};\r\n\r\n for (const propName in jsonObj.properties) { // eslint-disable-line guard-for-in\r\n this.properties[propName] = new PropertyMetaData(jsonObj.properties[propName]);\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"EntityProps.js","sourceRoot":"","sources":["../../src/EntityProps.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAc,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA6DhD;;GAEG;AACH,MAAM,CAAN,IAAY,iBAYX;AAZD,WAAY,iBAAiB;IAC3B,2EAAoB,CAAA;IACpB,+DAAc,CAAA;IACd,iEAAe,CAAA;IACf,mEAAgB,CAAA;IAChB,gEAAc,CAAA;IACd,kEAAe,CAAA;IACf,4DAAY,CAAA;IACZ,kEAAe,CAAA;IACf,kEAAe,CAAA;IACf,gEAAc,CAAA;IACd,sEAAiB,CAAA;AACnB,CAAC,EAZW,iBAAiB,KAAjB,iBAAiB,QAY5B;AAyCD;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAoB3B,YAAmB,OAA8B;QAC/C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC3C,IAAI,OAAO,CAAC,UAAU;YACpB,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,SAAS,KAAK,OAAO,CAAC,YAAY;YACpC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAC3C,IAAI,SAAS,KAAK,OAAO,CAAC,YAAY;YACpC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QAC3C,IAAI,SAAS,KAAK,OAAO,CAAC,aAAa;YACrC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC7C,IAAI,SAAS,KAAK,OAAO,CAAC,aAAa;YACrC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;QAC/C,IAAI,SAAS,KAAK,OAAO,CAAC,SAAS;YACjC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACrC,IAAI,SAAS,KAAK,OAAO,CAAC,SAAS;YACjC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;QACnD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IACnD,CAAC;IAED,mFAAmF;IAC3E,kBAAkB,CAAC,IAAiB,EAAE,OAAY;QACxD,IAAI,SAAS,KAAK,IAAI,CAAC,SAAS;YAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;QAEvC,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,OAAO,CAAC,OAAO,CAAC,CAAC,OAAY,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,GAAG,CAAC;IACb,CAAC;IAED,kFAAkF;IAC3E,cAAc,CAAC,OAAY;QAChC,IAAI,OAAO,KAAK,SAAS;YACvB,OAAO,SAAS,CAAC;QAEnB,IAAI,SAAS,KAAK,IAAI,CAAC,aAAa,EAAE;YACpC,QAAQ,IAAI,CAAC,aAAa,EAAE;gBAC1B,KAAK,iBAAiB,CAAC,OAAO,CAAC;gBAC/B,KAAK,iBAAiB,CAAC,MAAM,CAAC;gBAC9B,KAAK,iBAAiB,CAAC,OAAO,CAAC;gBAC/B,KAAK,iBAAiB,CAAC,MAAM;oBAC3B,OAAO,OAAO,CAAC,CAAC,wGAAwG;gBAE1H,KAAK,iBAAiB,CAAC,OAAO;oBAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;gBAE1E,KAAK,iBAAiB,CAAC,OAAO;oBAC5B,OAAO,IAAI,CAAC,kBAAkB,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;aAC3E;SACF;QACD,IAAI,IAAI,CAAC,YAAY;YACnB,OAAO,OAAO,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEzF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,8DAA8D;IAC9D,IAAW,YAAY;QACrB,OAAO,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,gEAAgE;IACzG,CAAC;CACF;AAgBD;;GAEG;AACH,MAAM,OAAO,cAAc;IAazB,YAAmB,OAA4B;QAC7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;QACzC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QAErB,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,EAAE,mCAAmC;YAC9E,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;SAChF;IACH,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Entities\r\n */\r\n\r\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport { Point2d, Point3d } from \"@itwin/core-geometry\";\r\nimport { RelatedElement } from \"./ElementProps\";\r\n\r\n/** The persistent format of an [Entity]($backend), also used as the \"wire format\" when transmitting information about entities\r\n * between the backend and frontend.\r\n * EntityProps and all of its sub-types like [[ElementProps]] are \"plain old Javascript objects\" - that is, objects containing\r\n * no methods and no properties of `class` type.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface EntityProps {\r\n /** A non-existent property used to discriminate between [[EntityProps]] and [Entity]($backend).\r\n * @see [Entity.isInstanceOfEntity]($backend).\r\n */\r\n readonly isInstanceOfEntity?: never;\r\n /** The full name of the [ECClass]($docs/bis/guide/references/glossary/#ecclass) for this entity, in the form \"Schema:ClassName\" */\r\n classFullName: string;\r\n /** The Id of the entity. Must be present for SELECT, UPDATE, or DELETE, ignored for INSERT. */\r\n id?: Id64String;\r\n /** Optional [json properties]($docs/bis/guide/fundamentals/element-fundamentals.md#jsonproperties) of this Entity. */\r\n jsonProperties?: { [key: string]: any };\r\n}\r\n\r\n/** Specifies the source and target elements of a [[Relationship]] instance.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface SourceAndTarget {\r\n sourceId: Id64String;\r\n targetId: Id64String;\r\n}\r\n\r\n/** Properties that are common to all types of link table ECRelationships\r\n * @public\r\n * @extensions\r\n */\r\nexport interface RelationshipProps extends EntityProps, SourceAndTarget {\r\n}\r\n\r\n/** Parameters for performing a query on [Entity]($backend) classes.\r\n * @public\r\n * @extensions\r\n */\r\nexport interface EntityQueryParams {\r\n /** The sql className, in the form \"Schema.ClassName\", of the class to search. */\r\n from?: string;\r\n /** Set to true to limit results to *not* include sub-classes of \"from\" class */\r\n only?: boolean;\r\n /** Optional \"WHERE\" clause to filter entities. Note: do *not* include the \"WHERE\" keyword. */\r\n where?: string;\r\n /** Optional \"ORDERBY\" clause to sort results. Note: do *not* include the \"ORDERBY\" keyword. */\r\n orderBy?: string;\r\n /** Optional \"LIMIT\" clause to limit the number of rows returned. */\r\n limit?: number;\r\n /** Optional \"OFFSET\" clause. Only valid if Limit is also present. */\r\n offset?: number;\r\n /** Bindings for parameterized values.\r\n * @see [[ECSqlStatement.bindValues]]\r\n */\r\n bindings?: any[] | object;\r\n}\r\n\r\n/** The primitive types of an Entity property.\r\n * @beta\r\n */\r\nexport enum PrimitiveTypeCode {\r\n Uninitialized = 0x00,\r\n Binary = 0x101,\r\n Boolean = 0x201,\r\n DateTime = 0x301,\r\n Double = 0x401,\r\n Integer = 0x501,\r\n Long = 0x601,\r\n Point2d = 0x701, // eslint-disable-line @typescript-eslint/no-shadow\r\n Point3d = 0x801, // eslint-disable-line @typescript-eslint/no-shadow\r\n String = 0x901,\r\n IGeometry = 0xa01, // Used for Bentley.Geometry.Common.IGeometry types\r\n}\r\n\r\n/** A callback function to process properties of an Entity\r\n * @beta\r\n */\r\nexport type PropertyCallback = (name: string, meta: PropertyMetaData) => void;\r\n\r\n/** A custom attribute instance\r\n * @beta\r\n */\r\nexport interface CustomAttribute {\r\n /** The class of the CustomAttribute */\r\n ecclass: string;\r\n /** An object whose properties correspond by name to the properties of this custom attribute instance. */\r\n properties: { [propName: string]: any };\r\n}\r\n\r\ntype FactoryFunc = (jsonObj: any) => any;\r\n\r\n/** @beta */\r\nexport interface PropertyMetaDataProps {\r\n primitiveType?: number;\r\n structName?: string;\r\n extendedType?: string;\r\n description?: string;\r\n displayLabel?: string;\r\n minimumValue?: any;\r\n maximumValue?: any;\r\n minimumLength?: number;\r\n maximumLength?: number;\r\n readOnly?: boolean;\r\n kindOfQuantity?: string;\r\n isCustomHandled?: boolean;\r\n isCustomHandledOrphan?: boolean;\r\n minOccurs?: number;\r\n maxOccurs?: number;\r\n direction?: string;\r\n relationshipClass?: string;\r\n customAttributes?: CustomAttribute[];\r\n}\r\n\r\n/** Metadata for a property.\r\n * @beta\r\n */\r\nexport class PropertyMetaData implements PropertyMetaDataProps {\r\n public primitiveType?: PrimitiveTypeCode;\r\n public structName?: string;\r\n public extendedType?: string;\r\n public description?: string;\r\n public displayLabel?: string;\r\n public minimumValue?: any;\r\n public maximumValue?: any;\r\n public minimumLength?: number;\r\n public maximumLength?: number;\r\n public readOnly?: boolean;\r\n public kindOfQuantity?: string;\r\n public isCustomHandled?: boolean;\r\n public isCustomHandledOrphan?: boolean;\r\n public minOccurs?: number;\r\n public maxOccurs?: number;\r\n public direction?: string;\r\n public relationshipClass?: string;\r\n public customAttributes?: CustomAttribute[];\r\n\r\n public constructor(jsonObj: PropertyMetaDataProps) {\r\n this.primitiveType = jsonObj.primitiveType;\r\n if (jsonObj.structName)\r\n this.structName = jsonObj.structName;\r\n this.extendedType = jsonObj.extendedType;\r\n this.description = jsonObj.description;\r\n this.displayLabel = jsonObj.displayLabel;\r\n if (undefined !== jsonObj.minimumValue)\r\n this.minimumValue = jsonObj.minimumValue;\r\n if (undefined !== jsonObj.maximumValue)\r\n this.maximumValue = jsonObj.maximumValue;\r\n if (undefined !== jsonObj.minimumLength)\r\n this.minimumLength = jsonObj.minimumLength;\r\n if (undefined !== jsonObj.maximumLength)\r\n this.maximumLength = jsonObj.maximumLength;\r\n this.readOnly = jsonObj.readOnly;\r\n this.kindOfQuantity = jsonObj.kindOfQuantity;\r\n this.isCustomHandled = jsonObj.isCustomHandled;\r\n if (undefined !== jsonObj.minOccurs)\r\n this.minOccurs = jsonObj.minOccurs;\r\n if (undefined !== jsonObj.maxOccurs)\r\n this.maxOccurs = jsonObj.maxOccurs;\r\n this.direction = jsonObj.direction;\r\n this.relationshipClass = jsonObj.relationshipClass;\r\n this.customAttributes = jsonObj.customAttributes;\r\n }\r\n\r\n /** Create a typed value, or array of values, from a factory and an input object */\r\n private createValueOrArray(func: FactoryFunc, jsonObj: any) {\r\n if (undefined === this.minOccurs)\r\n return func(jsonObj); // not an array\r\n\r\n const val: any = [];\r\n jsonObj.forEach((element: any) => val.push(func(element)));\r\n return val;\r\n }\r\n\r\n /** construct a single property from an input object according to this metadata */\r\n public createProperty(jsonObj: any): any {\r\n if (jsonObj === undefined)\r\n return undefined;\r\n\r\n if (undefined !== this.primitiveType) {\r\n switch (this.primitiveType) {\r\n case PrimitiveTypeCode.Boolean:\r\n case PrimitiveTypeCode.Double:\r\n case PrimitiveTypeCode.Integer:\r\n case PrimitiveTypeCode.String:\r\n return jsonObj; // this works even for arrays or strings that are JSON because the parsed JSON is already the right type\r\n\r\n case PrimitiveTypeCode.Point2d:\r\n return this.createValueOrArray((obj) => Point2d.fromJSON(obj), jsonObj);\r\n\r\n case PrimitiveTypeCode.Point3d:\r\n return this.createValueOrArray((obj) => Point3d.fromJSON(obj), jsonObj);\r\n }\r\n }\r\n if (this.isNavigation)\r\n return jsonObj.id !== undefined ? new RelatedElement(jsonObj) : Id64.fromJSON(jsonObj);\r\n\r\n return jsonObj;\r\n }\r\n\r\n /** Return `true` if this property is a NavigationProperty. */\r\n public get isNavigation(): boolean {\r\n return (this.direction !== undefined); // the presence of `direction` means it is a navigation property\r\n }\r\n}\r\n\r\n/** @beta */\r\nexport interface EntityMetaDataProps {\r\n ecclass: string;\r\n description?: string;\r\n modifier?: string;\r\n displayLabel?: string;\r\n /** The base classes from which this class derives. If more than one, the first is the super class and the others are [mixins]($docs/bis/ec/ec-mixin-class). */\r\n baseClasses: string[];\r\n /** The Custom Attributes for this class */\r\n customAttributes?: CustomAttribute[];\r\n /** An object whose properties correspond by name to the properties of this class. */\r\n properties: { [propName: string]: PropertyMetaData };\r\n}\r\n\r\n/** Metadata for an Entity.\r\n * @beta\r\n */\r\nexport class EntityMetaData implements EntityMetaDataProps {\r\n /** The Entity name */\r\n public readonly ecclass: string;\r\n public readonly description?: string;\r\n public readonly modifier?: string;\r\n public readonly displayLabel?: string;\r\n /** The base class that this class is derives from. If more than one, the first is the actual base class and the others are mixins. */\r\n public readonly baseClasses: string[];\r\n /** The Custom Attributes for this class */\r\n public readonly customAttributes?: CustomAttribute[];\r\n /** An object whose properties correspond by name to the properties of this class. */\r\n public readonly properties: { [propName: string]: PropertyMetaData };\r\n\r\n public constructor(jsonObj: EntityMetaDataProps) {\r\n this.ecclass = jsonObj.ecclass;\r\n this.description = jsonObj.description;\r\n this.modifier = jsonObj.modifier;\r\n this.displayLabel = jsonObj.displayLabel;\r\n this.baseClasses = jsonObj.baseClasses;\r\n this.customAttributes = jsonObj.customAttributes;\r\n this.properties = {};\r\n\r\n for (const propName in jsonObj.properties) { // eslint-disable-line guard-for-in\r\n this.properties[propName] = new PropertyMetaData(jsonObj.properties[propName]);\r\n }\r\n }\r\n}\r\n"]}
|