@itwin/core-common 5.14.0-dev.9 → 5.15.0-dev.1

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.
Files changed (46) hide show
  1. package/CHANGELOG.md +31 -1
  2. package/lib/cjs/ConcurrentQuery.d.ts +2 -2
  3. package/lib/cjs/ConcurrentQuery.d.ts.map +1 -1
  4. package/lib/cjs/ConcurrentQuery.js +1 -1
  5. package/lib/cjs/ConcurrentQuery.js.map +1 -1
  6. package/lib/cjs/ECSqlReader.d.ts +4 -4
  7. package/lib/cjs/ECSqlReader.js +4 -4
  8. package/lib/cjs/ECSqlReader.js.map +1 -1
  9. package/lib/cjs/ECSqlReaderBase.d.ts +3 -3
  10. package/lib/cjs/ECSqlReaderBase.js.map +1 -1
  11. package/lib/cjs/annotation/TextBlock.d.ts.map +1 -1
  12. package/lib/cjs/annotation/TextBlock.js +7 -4
  13. package/lib/cjs/annotation/TextBlock.js.map +1 -1
  14. package/lib/cjs/annotation/TextField.d.ts +76 -11
  15. package/lib/cjs/annotation/TextField.d.ts.map +1 -1
  16. package/lib/cjs/annotation/TextField.js.map +1 -1
  17. package/lib/cjs/internal/annotations/FieldFormatter.d.ts +32 -3
  18. package/lib/cjs/internal/annotations/FieldFormatter.d.ts.map +1 -1
  19. package/lib/cjs/internal/annotations/FieldFormatter.js +47 -17
  20. package/lib/cjs/internal/annotations/FieldFormatter.js.map +1 -1
  21. package/lib/cjs/internal/cross-package.d.ts +1 -1
  22. package/lib/cjs/internal/cross-package.d.ts.map +1 -1
  23. package/lib/cjs/internal/cross-package.js.map +1 -1
  24. package/lib/esm/ConcurrentQuery.d.ts +2 -2
  25. package/lib/esm/ConcurrentQuery.d.ts.map +1 -1
  26. package/lib/esm/ConcurrentQuery.js +1 -1
  27. package/lib/esm/ConcurrentQuery.js.map +1 -1
  28. package/lib/esm/ECSqlReader.d.ts +4 -4
  29. package/lib/esm/ECSqlReader.js +4 -4
  30. package/lib/esm/ECSqlReader.js.map +1 -1
  31. package/lib/esm/ECSqlReaderBase.d.ts +3 -3
  32. package/lib/esm/ECSqlReaderBase.js.map +1 -1
  33. package/lib/esm/annotation/TextBlock.d.ts.map +1 -1
  34. package/lib/esm/annotation/TextBlock.js +7 -4
  35. package/lib/esm/annotation/TextBlock.js.map +1 -1
  36. package/lib/esm/annotation/TextField.d.ts +76 -11
  37. package/lib/esm/annotation/TextField.d.ts.map +1 -1
  38. package/lib/esm/annotation/TextField.js.map +1 -1
  39. package/lib/esm/internal/annotations/FieldFormatter.d.ts +32 -3
  40. package/lib/esm/internal/annotations/FieldFormatter.d.ts.map +1 -1
  41. package/lib/esm/internal/annotations/FieldFormatter.js +47 -17
  42. package/lib/esm/internal/annotations/FieldFormatter.js.map +1 -1
  43. package/lib/esm/internal/cross-package.d.ts +1 -1
  44. package/lib/esm/internal/cross-package.d.ts.map +1 -1
  45. package/lib/esm/internal/cross-package.js.map +1 -1
  46. package/package.json +6 -6
@@ -1 +1 @@
1
- {"version":3,"file":"FieldFormatter.d.ts","sourceRoot":"","sources":["../../../../src/internal/annotations/FieldFormatter.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAA8B,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/G;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC;AAEjG;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,mBAAmB,CAAC;IAC3B,IAAI,EAAE,iBAAiB,CAAC;CACzB;AA6ED,gBAAgB;AAChB,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,kBAAkB,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG/G;AAED,gBAAgB;AAChB,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,iBAAiB,CAEhF"}
1
+ {"version":3,"file":"FieldFormatter.d.ts","sourceRoot":"","sources":["../../../../src/internal/annotations/FieldFormatter.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAA8B,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/G;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,UAAU,CAAC;AAEjG;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,KAAK,EAAE,mBAAmB,CAAC;IAC3B,6FAA6F;IAC7F,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;AAsF5D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,0CAA0C;IAC1C,KAAK,EAAE,UAAU,CAAC;IAClB,iFAAiF;IACjF,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,sEAAsE;IACtE,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,oBAAoB,GAAG,MAAM,GAAG,SAAS,CAG9G;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,iBAAiB,CAEhF"}
@@ -6,9 +6,8 @@ const formatters = {
6
6
  // eslint-disable-next-line @typescript-eslint/no-base-to-string
7
7
  "string": (v, o) => formatString(v.toString(), o),
8
8
  "datetime": (v, o) => formatString(formatDateTime(v, o?.dateTime), o),
9
- // eslint-disable-next-line @typescript-eslint/no-base-to-string
10
- "quantity": (v, o) => formatString(v.toString(), o),
11
- "coordinate": (v, o) => formatString(formatPointBasic(v), o),
9
+ "quantity": (v, o, fm) => formatString(formatMagnitudeValue(v, fm), o),
10
+ "coordinate": (v, o, fm) => formatString(formatPoint(v, fm), o),
12
11
  // eslint-disable-next-line @typescript-eslint/no-base-to-string
13
12
  "boolean": (v, o) => formatString(v.toString(), o),
14
13
  // eslint-disable-next-line @typescript-eslint/no-base-to-string
@@ -49,25 +48,56 @@ function formatDateTime(v, o) {
49
48
  }
50
49
  return undefined;
51
50
  }
52
- // ###TODO replace this with actual quantity coordinate formatting.
53
- function formatPointBasic(v) {
54
- if (typeof v === "object" && "x" in v && "y" in v) {
55
- const parts = [v.x, v.y];
56
- const z = v.z;
57
- if (undefined !== z) {
58
- parts.push(z);
59
- }
60
- return `(${parts.join(", ")})`;
51
+ /** A `"quantity"` magnitude rendered through `formatMagnitude`, or its raw string
52
+ * representation when no callback was supplied or the value is not a number.
53
+ */
54
+ function formatMagnitudeValue(v, formatMagnitude) {
55
+ if (formatMagnitude && typeof v === "number") {
56
+ return formatMagnitude(v);
61
57
  }
62
- return undefined;
58
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
59
+ return v.toString();
63
60
  }
64
- /** @internal */
65
- export function formatFieldValue(value, options) {
61
+ /** A coordinate rendered as `(x, y[, z])`, each component passed through `formatMagnitude` when
62
+ * one is supplied. Without a callback the components render bare, with no unit labels — Core
63
+ * carries no built-in coordinate format.
64
+ */
65
+ function formatPoint(v, formatMagnitude) {
66
+ const magnitudes = getCoordinateMagnitudes(v);
67
+ if (!magnitudes) {
68
+ return undefined;
69
+ }
70
+ return `(${magnitudes.map((m) => formatMagnitude ? formatMagnitude(m) : `${m}`).join(", ")})`;
71
+ }
72
+ /** Formats `value` through the per-type entry in [[formatters]], wrapping the result with
73
+ * prefix/suffix/case.
74
+ *
75
+ * `formatMagnitude` is consulted only by the `"quantity"` and `"coordinate"` branches. Omitting
76
+ * it falls those values back to `value.toString()`.
77
+ * @internal
78
+ */
79
+ export function formatFieldValue({ value, options, formatMagnitude }) {
66
80
  const formatter = formatters[value.type];
67
- return formatter ? formatter(value.value, options) : undefined;
81
+ return formatter ? formatter(value.value, options, formatMagnitude) : undefined;
68
82
  }
69
- /** @internal */
83
+ /** Type guard for [[FieldPropertyType]] strings that have a built-in per-type formatter.
84
+ * @internal
85
+ */
70
86
  export function isKnownFieldPropertyType(type) {
71
87
  return type in formatters;
72
88
  }
89
+ /** The `x`, `y` and (when present) `z` components of a coordinate value, or `undefined` if `v` is
90
+ * not one.
91
+ */
92
+ function getCoordinateMagnitudes(v) {
93
+ if (typeof v !== "object" || !("x" in v) || !("y" in v)) {
94
+ return undefined;
95
+ }
96
+ const parts = [v.x, v.y];
97
+ const z = "z" in v ? v.z : undefined;
98
+ if (undefined !== z) {
99
+ parts.push(z);
100
+ }
101
+ return parts;
102
+ }
73
103
  //# sourceMappingURL=FieldFormatter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldFormatter.js","sourceRoot":"","sources":["../../../../src/internal/annotations/FieldFormatter.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\r\nimport { XAndY, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { DateTimeFieldFormatOptions, FieldFormatOptions, FieldPropertyType } from \"../../annotation/TextField\";\r\n\r\n/** A FieldPropertyPath must ultimately resolve to one of these primitive types.\r\n * @internal\r\n */\r\nexport type FieldPrimitiveValue = boolean | number | string | Date | XAndY | XYAndZ | Uint8Array;\r\n\r\n/** Resolved value of a field.\r\n * @internal\r\n */\r\nexport interface FieldValue {\r\n value: FieldPrimitiveValue;\r\n type: FieldPropertyType;\r\n}\r\n\r\ntype FieldFormatter = (value: FieldPrimitiveValue, options: FieldFormatOptions | undefined) => string | undefined;\r\n\r\nconst formatters: { [type: string]: FieldFormatter | undefined } = {\r\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\r\n \"string\": (v, o) => formatString(v.toString(), o),\r\n\r\n \"datetime\": (v, o) => formatString(formatDateTime(v, o?.dateTime), o),\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\r\n \"quantity\": (v, o) => formatString(v.toString(), o),\r\n \r\n \"coordinate\": (v, o) => formatString(formatPointBasic(v), o),\r\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\r\n \"boolean\": (v, o) => formatString(v.toString(), o),\r\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\r\n \"int-enum\": (v, o) => formatString(v.toString(), o),\r\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\r\n \"string-enum\": (v, o) => formatString(v.toString(), o),\r\n};\r\n\r\nfunction formatString(s: string | undefined, o?: FieldFormatOptions): string | undefined {\r\n if (undefined === s || !o) {\r\n return s;\r\n }\r\n\r\n switch (o.case) {\r\n case \"upper\":\r\n s = s.toUpperCase();\r\n break;\r\n case \"lower\":\r\n s = s.toLowerCase();\r\n break;\r\n }\r\n\r\n if (o.prefix || o.suffix) {\r\n s = `${o.prefix ?? \"\"}${s}${o.suffix ?? \"\"}`;\r\n }\r\n\r\n return s;\r\n}\r\n\r\nfunction formatDateTime(v: FieldPrimitiveValue, o?: DateTimeFieldFormatOptions): string | undefined {\r\n if (!(v instanceof Date))\r\n return undefined;\r\n\r\n if (!isNaN(v.getTime())) {\r\n if (o?.formatOptions) {\r\n const locale = o.locale ?? \"en-US\";\r\n if (!Intl.DateTimeFormat.supportedLocalesOf([locale], { localeMatcher: \"lookup\" }).includes(locale)) {\r\n return undefined;\r\n }\r\n\r\n const formatter = new Intl.DateTimeFormat(locale, o.formatOptions);\r\n return formatter.format(v);\r\n }\r\n return v.toString();\r\n }\r\n return undefined;\r\n}\r\n\r\n// ###TODO replace this with actual quantity coordinate formatting.\r\nfunction formatPointBasic(v: FieldPrimitiveValue): string | undefined {\r\n if (typeof v === \"object\" && \"x\" in v && \"y\" in v) {\r\n const parts = [v.x, v.y];\r\n const z = (v as any).z;\r\n if (undefined !== z) {\r\n parts.push(z);\r\n }\r\n\r\n return `(${parts.join(\", \")})`;\r\n }\r\n\r\n return undefined;\r\n}\r\n\r\n/** @internal */\r\nexport function formatFieldValue(value: FieldValue, options: FieldFormatOptions | undefined): string | undefined {\r\n const formatter = formatters[value.type];\r\n return formatter ? formatter(value.value, options) : undefined;\r\n}\r\n\r\n/** @internal */\r\nexport function isKnownFieldPropertyType(type: string): type is FieldPropertyType {\r\n return type in formatters;\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"FieldFormatter.js","sourceRoot":"","sources":["../../../../src/internal/annotations/FieldFormatter.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\r\nimport { XAndY, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { DateTimeFieldFormatOptions, FieldFormatOptions, FieldPropertyType } from \"../../annotation/TextField\";\r\n\r\n/** A FieldPropertyPath must ultimately resolve to one of these primitive types.\r\n * @internal\r\n */\r\nexport type FieldPrimitiveValue = boolean | number | string | Date | XAndY | XYAndZ | Uint8Array;\r\n\r\n/** Resolved value of a field.\r\n * @internal\r\n */\r\nexport interface FieldValue {\r\n /** The raw property value, typed by [[type]]. For structured or array properties, this is\r\n * the primitive scalar the [FieldRun]($common)'s propertyPath ultimately resolved to.\r\n */\r\n value: FieldPrimitiveValue;\r\n /** How [[value]] should be formatted; drives the per-type branch in [[formatFieldValue]]. */\r\n type: FieldPropertyType;\r\n}\r\n\r\n/** Renders one magnitude of a `\"quantity\"` or `\"coordinate\"` value — typically by applying a\r\n * [FormatterSpec]($core-quantity) the caller resolved ahead of time. Supplying one is what lets\r\n * field evaluation stay synchronous on paths that cannot await.\r\n * @internal\r\n */\r\nexport type FormatMagnitude = (magnitude: number) => string;\r\n\r\ntype FieldFormatter = (value: FieldPrimitiveValue, options: FieldFormatOptions | undefined, formatMagnitude?: FormatMagnitude) => string | undefined;\r\n\r\nconst formatters: { [type: string]: FieldFormatter | undefined } = {\r\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\r\n \"string\": (v, o) => formatString(v.toString(), o),\r\n\r\n \"datetime\": (v, o) => formatString(formatDateTime(v, o?.dateTime), o),\r\n\r\n \"quantity\": (v, o, fm) => formatString(formatMagnitudeValue(v, fm), o),\r\n\r\n \"coordinate\": (v, o, fm) => formatString(formatPoint(v, fm), o),\r\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\r\n \"boolean\": (v, o) => formatString(v.toString(), o),\r\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\r\n \"int-enum\": (v, o) => formatString(v.toString(), o),\r\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\r\n \"string-enum\": (v, o) => formatString(v.toString(), o),\r\n};\r\n\r\nfunction formatString(s: string | undefined, o?: FieldFormatOptions): string | undefined {\r\n if (undefined === s || !o) {\r\n return s;\r\n }\r\n\r\n switch (o.case) {\r\n case \"upper\":\r\n s = s.toUpperCase();\r\n break;\r\n case \"lower\":\r\n s = s.toLowerCase();\r\n break;\r\n }\r\n\r\n if (o.prefix || o.suffix) {\r\n s = `${o.prefix ?? \"\"}${s}${o.suffix ?? \"\"}`;\r\n }\r\n\r\n return s;\r\n}\r\n\r\nfunction formatDateTime(v: FieldPrimitiveValue, o?: DateTimeFieldFormatOptions): string | undefined {\r\n if (!(v instanceof Date))\r\n return undefined;\r\n\r\n if (!isNaN(v.getTime())) {\r\n if (o?.formatOptions) {\r\n const locale = o.locale ?? \"en-US\";\r\n if (!Intl.DateTimeFormat.supportedLocalesOf([locale], { localeMatcher: \"lookup\" }).includes(locale)) {\r\n return undefined;\r\n }\r\n\r\n const formatter = new Intl.DateTimeFormat(locale, o.formatOptions);\r\n return formatter.format(v);\r\n }\r\n return v.toString();\r\n }\r\n return undefined;\r\n}\r\n\r\n/** A `\"quantity\"` magnitude rendered through `formatMagnitude`, or its raw string\r\n * representation when no callback was supplied or the value is not a number.\r\n */\r\nfunction formatMagnitudeValue(v: FieldPrimitiveValue, formatMagnitude?: FormatMagnitude): string | undefined {\r\n if (formatMagnitude && typeof v === \"number\") {\r\n return formatMagnitude(v);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\r\n return v.toString();\r\n}\r\n\r\n/** A coordinate rendered as `(x, y[, z])`, each component passed through `formatMagnitude` when\r\n * one is supplied. Without a callback the components render bare, with no unit labels — Core\r\n * carries no built-in coordinate format.\r\n */\r\nfunction formatPoint(v: FieldPrimitiveValue, formatMagnitude?: FormatMagnitude): string | undefined {\r\n const magnitudes = getCoordinateMagnitudes(v);\r\n if (!magnitudes) {\r\n return undefined;\r\n }\r\n\r\n return `(${magnitudes.map((m) => formatMagnitude ? formatMagnitude(m) : `${m}`).join(\", \")})`;\r\n}\r\n\r\n/** Arguments supplied to [[formatFieldValue]].\r\n * @internal\r\n */\r\nexport interface FormatFieldValueArgs {\r\n /** The resolved field value to render. */\r\n value: FieldValue;\r\n /** Prefix, suffix, case, and per-type options applied to the rendered string. */\r\n options?: FieldFormatOptions;\r\n /** Consulted only by the `\"quantity\"` and `\"coordinate\"` branches. */\r\n formatMagnitude?: FormatMagnitude;\r\n}\r\n\r\n/** Formats `value` through the per-type entry in [[formatters]], wrapping the result with\r\n * prefix/suffix/case.\r\n *\r\n * `formatMagnitude` is consulted only by the `\"quantity\"` and `\"coordinate\"` branches. Omitting\r\n * it falls those values back to `value.toString()`.\r\n * @internal\r\n */\r\nexport function formatFieldValue({ value, options, formatMagnitude }: FormatFieldValueArgs): string | undefined {\r\n const formatter = formatters[value.type];\r\n return formatter ? formatter(value.value, options, formatMagnitude) : undefined;\r\n}\r\n\r\n/** Type guard for [[FieldPropertyType]] strings that have a built-in per-type formatter.\r\n * @internal\r\n */\r\nexport function isKnownFieldPropertyType(type: string): type is FieldPropertyType {\r\n return type in formatters;\r\n}\r\n\r\n/** The `x`, `y` and (when present) `z` components of a coordinate value, or `undefined` if `v` is\r\n * not one.\r\n */\r\nfunction getCoordinateMagnitudes(v: FieldPrimitiveValue): number[] | undefined {\r\n if (typeof v !== \"object\" || !(\"x\" in v) || !(\"y\" in v)) {\r\n return undefined;\r\n }\r\n const parts = [v.x, v.y];\r\n const z = \"z\" in v ? v.z : undefined;\r\n if (undefined !== z) {\r\n parts.push(z);\r\n }\r\n return parts;\r\n}\r\n"]}
@@ -4,5 +4,5 @@ export { MultiModelPackedFeatureTable, PackedFeatureModelTable, PackedFeatureTab
4
4
  export type { BackendReadable, BackendWritable, BackendBuffer } from "./BackendTypes";
5
5
  export { RenderMaterialParams } from "./RenderMaterialParams";
6
6
  export { RenderTextureParams } from "./RenderTextureParams";
7
- export { type FieldPrimitiveValue, type FieldValue, formatFieldValue, isKnownFieldPropertyType } from "./annotations/FieldFormatter";
7
+ export { type FieldPrimitiveValue, type FieldValue, type FormatFieldValueArgs, type FormatMagnitude, formatFieldValue, isKnownFieldPropertyType } from "./annotations/FieldFormatter";
8
8
  //# sourceMappingURL=cross-package.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cross-package.d.ts","sourceRoot":"","sources":["../../../src/internal/cross-package.ts"],"names":[],"mappings":"AAKA,YAAY,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EACL,KAAK,uBAAuB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EACvI,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,4BAA4B,EAAE,uBAAuB,EAAE,kBAAkB,EAC1E,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,UAAU,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC"}
1
+ {"version":3,"file":"cross-package.d.ts","sourceRoot":"","sources":["../../../src/internal/cross-package.ts"],"names":[],"mappings":"AAKA,YAAY,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EACL,KAAK,uBAAuB,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EACvI,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,4BAA4B,EAAE,uBAAuB,EAAE,kBAAkB,EAC1E,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,UAAU,EAAE,KAAK,oBAAoB,EAAE,KAAK,eAAe,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cross-package.js","sourceRoot":"","sources":["../../../src/internal/cross-package.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAG/F,OAAO,EACyB,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAyB,gBAAgB,EAAE,kBAAkB,EACvI,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,4BAA4B,EAAE,uBAAuB,EAAE,kBAAkB,EAC1E,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAA6C,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC","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\r\nexport type { DecorationGeometryProps, SnapRequestProps, SnapResponseProps } from \"./Snapping\";\r\nexport {\r\n type EdgeAppearanceOverrides, EdgeArgs, MeshEdge, MeshEdges, MeshPolyline, type MeshPolylineList, PolylineEdgeArgs, SilhouetteEdgeArgs\r\n} from \"./RenderMesh\";\r\nexport {\r\n MultiModelPackedFeatureTable, PackedFeatureModelTable, PackedFeatureTable\r\n} from \"./PackedFeatureTable\";\r\n// eslint-disable-next-line @typescript-eslint/no-deprecated\r\nexport type { BackendReadable, BackendWritable, BackendBuffer } from \"./BackendTypes\";\r\nexport { RenderMaterialParams } from \"./RenderMaterialParams\";\r\nexport { RenderTextureParams } from \"./RenderTextureParams\";\r\nexport { type FieldPrimitiveValue, type FieldValue, formatFieldValue, isKnownFieldPropertyType } from \"./annotations/FieldFormatter\";\r\n"]}
1
+ {"version":3,"file":"cross-package.js","sourceRoot":"","sources":["../../../src/internal/cross-package.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAG/F,OAAO,EACyB,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAyB,gBAAgB,EAAE,kBAAkB,EACvI,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,4BAA4B,EAAE,uBAAuB,EAAE,kBAAkB,EAC1E,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAA8F,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC","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\r\nexport type { DecorationGeometryProps, SnapRequestProps, SnapResponseProps } from \"./Snapping\";\r\nexport {\r\n type EdgeAppearanceOverrides, EdgeArgs, MeshEdge, MeshEdges, MeshPolyline, type MeshPolylineList, PolylineEdgeArgs, SilhouetteEdgeArgs\r\n} from \"./RenderMesh\";\r\nexport {\r\n MultiModelPackedFeatureTable, PackedFeatureModelTable, PackedFeatureTable\r\n} from \"./PackedFeatureTable\";\r\n// eslint-disable-next-line @typescript-eslint/no-deprecated\r\nexport type { BackendReadable, BackendWritable, BackendBuffer } from \"./BackendTypes\";\r\nexport { RenderMaterialParams } from \"./RenderMaterialParams\";\r\nexport { RenderTextureParams } from \"./RenderTextureParams\";\r\nexport { type FieldPrimitiveValue, type FieldValue, type FormatFieldValueArgs, type FormatMagnitude, formatFieldValue, isKnownFieldPropertyType } from \"./annotations/FieldFormatter\";\r\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/core-common",
3
- "version": "5.14.0-dev.9",
3
+ "version": "5.15.0-dev.1",
4
4
  "description": "iTwin.js components common to frontend and backend",
5
5
  "main": "lib/cjs/core-common.js",
6
6
  "module": "lib/esm/core-common.js",
@@ -27,8 +27,8 @@
27
27
  "js-base64": "^3.6.1"
28
28
  },
29
29
  "peerDependencies": {
30
- "@itwin/core-bentley": "5.14.0-dev.9",
31
- "@itwin/core-geometry": "5.14.0-dev.9"
30
+ "@itwin/core-bentley": "5.15.0-dev.1",
31
+ "@itwin/core-geometry": "5.15.0-dev.1"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@itwin/eslint-plugin": "^6.0.0",
@@ -40,9 +40,9 @@
40
40
  "rimraf": "^6.0.1",
41
41
  "typescript": "~5.6.2",
42
42
  "vitest": "^4.1.10",
43
- "@itwin/build-tools": "5.14.0-dev.9",
44
- "@itwin/core-geometry": "5.14.0-dev.9",
45
- "@itwin/core-bentley": "5.14.0-dev.9"
43
+ "@itwin/build-tools": "5.15.0-dev.1",
44
+ "@itwin/core-geometry": "5.15.0-dev.1",
45
+ "@itwin/core-bentley": "5.15.0-dev.1"
46
46
  },
47
47
  "scripts": {
48
48
  "build": "npm run -s build:cjs && npm run -s build:esm",