@camstack/types 1.2.434 → 1.2.436

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 (54) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/addon.js +1 -1
  3. package/dist/addon.mjs +1 -1
  4. package/dist/capabilities/addons.cap.d.ts +8 -0
  5. package/dist/capabilities/air-quality-sensor.cap.d.ts +8 -8
  6. package/dist/capabilities/ambient-light-sensor.cap.d.ts +4 -4
  7. package/dist/capabilities/battery.cap.d.ts +14 -14
  8. package/dist/capabilities/brightness.cap.d.ts +7 -7
  9. package/dist/capabilities/capability-definition.d.ts +3 -3
  10. package/dist/capabilities/color.cap.d.ts +6 -6
  11. package/dist/capabilities/device-history.cap.d.ts +2 -2
  12. package/dist/capabilities/dishwasher.cap.d.ts +11 -11
  13. package/dist/capabilities/fan-control.cap.d.ts +6 -6
  14. package/dist/capabilities/humidity-sensor.cap.d.ts +4 -4
  15. package/dist/capabilities/index.d.ts +1 -1
  16. package/dist/capabilities/lawn-mower-control.cap.d.ts +3 -3
  17. package/dist/capabilities/media-player.cap.d.ts +8 -8
  18. package/dist/capabilities/meter.cap.d.ts +1 -1
  19. package/dist/capabilities/network-link.cap.d.ts +13 -13
  20. package/dist/capabilities/notification-output.cap.d.ts +70 -0
  21. package/dist/capabilities/power-meter.cap.d.ts +22 -22
  22. package/dist/capabilities/presence.cap.d.ts +1 -15
  23. package/dist/capabilities/pressure-sensor.cap.d.ts +4 -4
  24. package/dist/capabilities/temperature-sensor.cap.d.ts +4 -4
  25. package/dist/capabilities/vacuum-control.cap.d.ts +3 -3
  26. package/dist/client.js +50 -2
  27. package/dist/client.mjs +50 -2
  28. package/dist/composition/composition-report.d.ts +1 -1
  29. package/dist/composition/examples.d.ts +1 -1
  30. package/dist/composition/helpers/appliance.d.ts +1 -1
  31. package/dist/composition/helpers/index.d.ts +1 -1
  32. package/dist/composition/helpers/source-pick.d.ts +7 -0
  33. package/dist/{composition-Bb8iwHEJ.mjs → composition-DwA0uVW5.mjs} +3 -2
  34. package/dist/{composition-CpAc0YfQ.js → composition-WNkEpwkF.js} +3 -2
  35. package/dist/device/base-device.d.ts +2 -2
  36. package/dist/device/device-runtime-state.d.ts +1 -1
  37. package/dist/device/device-state-handle.d.ts +1 -1
  38. package/dist/device/system-mirror.d.ts +1 -1
  39. package/dist/generated/addon-cap-facts.d.ts +1 -1
  40. package/dist/generated/customize-catalog.d.ts +15 -15
  41. package/dist/generated/history-catalog.d.ts +1 -1
  42. package/dist/index.d.ts +1 -0
  43. package/dist/index.js +331 -212
  44. package/dist/index.mjs +328 -213
  45. package/dist/interfaces/addon.d.ts +8 -0
  46. package/dist/interfaces/event-bus.d.ts +3 -3
  47. package/dist/node.js +1 -1
  48. package/dist/node.mjs +1 -1
  49. package/dist/notification/delivery-params.d.ts +15 -0
  50. package/dist/{sleep-DFaVPxfm.mjs → sleep-Crlmu_tO.mjs} +26 -30
  51. package/dist/{sleep-CO61AfwW.js → sleep-DHitF_e4.js} +26 -30
  52. package/dist/vendor-login-proxy/index.d.ts +1 -1
  53. package/dist/vendor-login-proxy/url-rewrite.d.ts +7 -0
  54. package/package.json +1 -1
@@ -974,6 +974,8 @@ export interface IAdminUI {
974
974
  * This is the SINGLE SOURCE OF TRUTH for addon identity and metadata.
975
975
  * Addon classes no longer declare a `manifest` property.
976
976
  */
977
+ /** The two blocks of the admin Integrations page. */
978
+ export type IntegrationSection = 'system' | 'providers';
977
979
  export interface AddonDeclaration {
978
980
  readonly id: string;
979
981
  /** JS entry point relative to package root (e.g., "./dist/addon.js") */
@@ -1036,6 +1038,12 @@ export interface AddonDeclaration {
1036
1038
  readonly supportsLocationImport?: boolean;
1037
1039
  /** Whether this addon is protected (required by the system, cannot be uninstalled) */
1038
1040
  readonly protected?: boolean;
1041
+ /**
1042
+ * Which block of the admin Integrations page this addon's integrations land in.
1043
+ * Declared per addon ENTRY (one package can host several addons). Absent: `system`
1044
+ * for an addon shipped in a framework package, `providers` otherwise.
1045
+ */
1046
+ readonly integrationSection?: IntegrationSection;
1039
1047
  /**
1040
1048
  * Group-runner execution model.
1041
1049
  *
@@ -1420,15 +1420,15 @@ export interface EventCatalog {
1420
1420
  * by hand (see also `BatteryStatus` in `capabilities/battery.cap.ts`).
1421
1421
  *
1422
1422
  * "By hand" failed exactly as the repo's no-duplicate-shapes rule predicts:
1423
- * `percentage` became nullable in the cap and stayed `number` here, so this
1423
+ * `level` became nullable in the cap and stayed `number` here, so this
1424
1424
  * copy refused the very value the cap now defines. Kept in lock-step is a
1425
1425
  * hope; the compiler noticing is the only reason it was caught.
1426
1426
  */
1427
1427
  'battery.onStatusChanged': {
1428
1428
  readonly deviceId: number;
1429
1429
  readonly status: {
1430
- /** `null` = NOT YET KNOWN. See `BatteryStatusSchema.percentage`. */
1431
- readonly percentage: number | null;
1430
+ /** `null` = NOT YET KNOWN. See `BatteryStatusSchema.level`. */
1431
+ readonly level: number | null;
1432
1432
  /** `'unknown'` = the power source was never read. See `BatteryStatusSchema.charging`. */
1433
1433
  readonly charging: 'dc' | 'solar' | 'none' | 'unknown';
1434
1434
  readonly sleeping: boolean;
package/dist/node.js CHANGED
@@ -21,7 +21,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
21
21
  enumerable: true
22
22
  }) : target, mod));
23
23
  //#endregion
24
- const require_composition = require("./composition-CpAc0YfQ.js");
24
+ const require_composition = require("./composition-WNkEpwkF.js");
25
25
  const require_err_msg = require("./err-msg-U7lLUMNz.js");
26
26
  let node_crypto = require("node:crypto");
27
27
  let node_fs = require("node:fs");
package/dist/node.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { F as compositionSourceKey, Fn as FFMPEG_RELEASE, In as getFfmpegArtifact, Ln as getFfmpegDownloadUrl, Mn as FFMPEG_PATH_ENV, Nn as chooseFfmpegBinary, Pn as ffmpegBinaryName, Rn as canonicalHash, Un as buildFfmpegArgs, a as CUSTOMIZATION_BLOCK_NAME_PREFIX, qn as isSoftwareDecode, zn as Fmp4BoxSplitter } from "./composition-Bb8iwHEJ.mjs";
1
+ import { F as compositionSourceKey, Fn as FFMPEG_RELEASE, In as getFfmpegArtifact, Ln as getFfmpegDownloadUrl, Mn as FFMPEG_PATH_ENV, Nn as chooseFfmpegBinary, Pn as ffmpegBinaryName, Rn as canonicalHash, Un as buildFfmpegArgs, a as CUSTOMIZATION_BLOCK_NAME_PREFIX, qn as isSoftwareDecode, zn as Fmp4BoxSplitter } from "./composition-DwA0uVW5.mjs";
2
2
  import { t as errMsg } from "./err-msg-DIorGYeC.mjs";
3
3
  import { createHash, createHmac, randomUUID, timingSafeEqual } from "node:crypto";
4
4
  import * as fs from "node:fs";
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Delivery parameters a notifier kind declares and a rule target carries (D938).
3
+ *
4
+ * Pure, shared by the dispatcher (what reaches `send`) and the rule editor
5
+ * (what it offers), so the two cannot disagree about which keys exist.
6
+ */
7
+ import type { DeliveryParam, DeliveryParamValue } from '../capabilities/notification-output.cap.js';
8
+ /**
9
+ * The values a rule target's `params` contribute for a kind: only declared
10
+ * keys, only valid values. `undefined` when nothing survives — a notifier that
11
+ * declared nothing is never handed a `delivery` block.
12
+ */
13
+ export declare function resolveDeliveryParams(declared: readonly DeliveryParam[] | undefined, params: Readonly<Record<string, unknown>> | undefined): Record<string, DeliveryParamValue> | undefined;
14
+ /** The union of several kinds' declarations; the first declaration of a key wins. */
15
+ export declare function deliveryParamsDeclaredBy(perKind: readonly (readonly DeliveryParam[] | undefined)[]): readonly DeliveryParam[];
@@ -6832,11 +6832,11 @@ var CAP_NAMES = Object.freeze([
6832
6832
  var CAP_STATE_LEAVES = Object.freeze({
6833
6833
  "air-quality-sensor": [
6834
6834
  {
6835
- "path": "co2Ppm",
6835
+ "path": "co2",
6836
6836
  "valueType": "number"
6837
6837
  },
6838
6838
  {
6839
- "path": "vocPpb",
6839
+ "path": "voc",
6840
6840
  "valueType": "number"
6841
6841
  },
6842
6842
  {
@@ -6886,7 +6886,7 @@ var CAP_STATE_LEAVES = Object.freeze({
6886
6886
  }
6887
6887
  ],
6888
6888
  "ambient-light-sensor": [{
6889
- "path": "lux",
6889
+ "path": "illuminance",
6890
6890
  "valueType": "number"
6891
6891
  }],
6892
6892
  "audio-metrics": [
@@ -6947,7 +6947,7 @@ var CAP_STATE_LEAVES = Object.freeze({
6947
6947
  ],
6948
6948
  "battery": [
6949
6949
  {
6950
- "path": "percentage",
6950
+ "path": "level",
6951
6951
  "valueType": "number"
6952
6952
  },
6953
6953
  {
@@ -6969,7 +6969,7 @@ var CAP_STATE_LEAVES = Object.freeze({
6969
6969
  "valueType": "number"
6970
6970
  },
6971
6971
  {
6972
- "path": "volts",
6972
+ "path": "voltage",
6973
6973
  "valueType": "number"
6974
6974
  },
6975
6975
  {
@@ -6990,7 +6990,7 @@ var CAP_STATE_LEAVES = Object.freeze({
6990
6990
  "valueType": "boolean"
6991
6991
  }],
6992
6992
  "brightness": [{
6993
- "path": "percentage",
6993
+ "path": "level",
6994
6994
  "valueType": "number"
6995
6995
  }],
6996
6996
  "broker": [{
@@ -7191,7 +7191,7 @@ var CAP_STATE_LEAVES = Object.freeze({
7191
7191
  "valueType": "number"
7192
7192
  },
7193
7193
  {
7194
- "path": "mireds",
7194
+ "path": "colorTemperature",
7195
7195
  "valueType": "number"
7196
7196
  }
7197
7197
  ],
@@ -7370,15 +7370,15 @@ var CAP_STATE_LEAVES = Object.freeze({
7370
7370
  "valueType": "string"
7371
7371
  },
7372
7372
  {
7373
- "path": "remainingSeconds",
7373
+ "path": "remaining",
7374
7374
  "valueType": "number"
7375
7375
  },
7376
7376
  {
7377
- "path": "delayedStartSeconds",
7377
+ "path": "delayedStart",
7378
7378
  "valueType": "number"
7379
7379
  },
7380
7380
  {
7381
- "path": "progressPercent",
7381
+ "path": "progress",
7382
7382
  "valueType": "number"
7383
7383
  },
7384
7384
  {
@@ -7492,7 +7492,7 @@ var CAP_STATE_LEAVES = Object.freeze({
7492
7492
  ],
7493
7493
  "fan-control": [
7494
7494
  {
7495
- "path": "percentage",
7495
+ "path": "speed",
7496
7496
  "valueType": "number"
7497
7497
  },
7498
7498
  {
@@ -7592,7 +7592,7 @@ var CAP_STATE_LEAVES = Object.freeze({
7592
7592
  }
7593
7593
  ],
7594
7594
  "humidity-sensor": [{
7595
- "path": "percent",
7595
+ "path": "humidity",
7596
7596
  "valueType": "number"
7597
7597
  }],
7598
7598
  "image": [{
@@ -7702,7 +7702,7 @@ var CAP_STATE_LEAVES = Object.freeze({
7702
7702
  "valueType": "number"
7703
7703
  },
7704
7704
  {
7705
- "path": "progressPercent",
7705
+ "path": "progress",
7706
7706
  "valueType": "number"
7707
7707
  },
7708
7708
  {
@@ -7781,11 +7781,11 @@ var CAP_STATE_LEAVES = Object.freeze({
7781
7781
  "valueType": "string"
7782
7782
  },
7783
7783
  {
7784
- "path": "positionMs",
7784
+ "path": "position",
7785
7785
  "valueType": "number"
7786
7786
  },
7787
7787
  {
7788
- "path": "durationMs",
7788
+ "path": "duration",
7789
7789
  "valueType": "number"
7790
7790
  },
7791
7791
  {
@@ -7887,11 +7887,11 @@ var CAP_STATE_LEAVES = Object.freeze({
7887
7887
  ]
7888
7888
  },
7889
7889
  {
7890
- "path": "signalPercent",
7890
+ "path": "signal",
7891
7891
  "valueType": "number"
7892
7892
  },
7893
7893
  {
7894
- "path": "rssiDbm",
7894
+ "path": "rssi",
7895
7895
  "valueType": "number"
7896
7896
  },
7897
7897
  {
@@ -8022,23 +8022,23 @@ var CAP_STATE_LEAVES = Object.freeze({
8022
8022
  ],
8023
8023
  "power-meter": [
8024
8024
  {
8025
- "path": "watts",
8025
+ "path": "power",
8026
8026
  "valueType": "number"
8027
8027
  },
8028
8028
  {
8029
- "path": "kwhTotal",
8029
+ "path": "energy",
8030
8030
  "valueType": "number"
8031
8031
  },
8032
8032
  {
8033
- "path": "volts",
8033
+ "path": "voltage",
8034
8034
  "valueType": "number"
8035
8035
  },
8036
8036
  {
8037
- "path": "amps",
8037
+ "path": "current",
8038
8038
  "valueType": "number"
8039
8039
  },
8040
8040
  {
8041
- "path": "va",
8041
+ "path": "apparentPower",
8042
8042
  "valueType": "number"
8043
8043
  },
8044
8044
  {
@@ -8066,14 +8066,10 @@ var CAP_STATE_LEAVES = Object.freeze({
8066
8066
  {
8067
8067
  "path": "gps.accuracyMeters",
8068
8068
  "valueType": "number"
8069
- },
8070
- {
8071
- "path": "batteryPercent",
8072
- "valueType": "number"
8073
8069
  }
8074
8070
  ],
8075
8071
  "pressure-sensor": [{
8076
- "path": "hpa",
8072
+ "path": "pressure",
8077
8073
  "valueType": "number"
8078
8074
  }],
8079
8075
  "privacy-mask": [{
@@ -8387,7 +8383,7 @@ var CAP_STATE_LEAVES = Object.freeze({
8387
8383
  "valueType": "boolean"
8388
8384
  }],
8389
8385
  "temperature-sensor": [{
8390
- "path": "celsius",
8386
+ "path": "temperature",
8391
8387
  "valueType": "number"
8392
8388
  }],
8393
8389
  "update": [
@@ -8435,7 +8431,7 @@ var CAP_STATE_LEAVES = Object.freeze({
8435
8431
  "valueType": "string"
8436
8432
  },
8437
8433
  {
8438
- "path": "progressPercent",
8434
+ "path": "progress",
8439
8435
  "valueType": "number"
8440
8436
  },
8441
8437
  {
@@ -8818,7 +8814,7 @@ function createMirrorSource(mirror, listeners, api) {
8818
8814
  *
8819
8815
  * const dev = createDeviceProxy(api, binding)
8820
8816
  * dev.state.battery.value // BatteryStatus | undefined
8821
- * dev.state.battery.value?.percentage
8817
+ * dev.state.battery.value?.level
8822
8818
  *
8823
8819
  * Two-arg form (deprecated path, kept for spec compatibility):
8824
8820
  * passes the api directly, builds a per-handle lazy source. New
@@ -6832,11 +6832,11 @@ var CAP_NAMES = Object.freeze([
6832
6832
  var CAP_STATE_LEAVES = Object.freeze({
6833
6833
  "air-quality-sensor": [
6834
6834
  {
6835
- "path": "co2Ppm",
6835
+ "path": "co2",
6836
6836
  "valueType": "number"
6837
6837
  },
6838
6838
  {
6839
- "path": "vocPpb",
6839
+ "path": "voc",
6840
6840
  "valueType": "number"
6841
6841
  },
6842
6842
  {
@@ -6886,7 +6886,7 @@ var CAP_STATE_LEAVES = Object.freeze({
6886
6886
  }
6887
6887
  ],
6888
6888
  "ambient-light-sensor": [{
6889
- "path": "lux",
6889
+ "path": "illuminance",
6890
6890
  "valueType": "number"
6891
6891
  }],
6892
6892
  "audio-metrics": [
@@ -6947,7 +6947,7 @@ var CAP_STATE_LEAVES = Object.freeze({
6947
6947
  ],
6948
6948
  "battery": [
6949
6949
  {
6950
- "path": "percentage",
6950
+ "path": "level",
6951
6951
  "valueType": "number"
6952
6952
  },
6953
6953
  {
@@ -6969,7 +6969,7 @@ var CAP_STATE_LEAVES = Object.freeze({
6969
6969
  "valueType": "number"
6970
6970
  },
6971
6971
  {
6972
- "path": "volts",
6972
+ "path": "voltage",
6973
6973
  "valueType": "number"
6974
6974
  },
6975
6975
  {
@@ -6990,7 +6990,7 @@ var CAP_STATE_LEAVES = Object.freeze({
6990
6990
  "valueType": "boolean"
6991
6991
  }],
6992
6992
  "brightness": [{
6993
- "path": "percentage",
6993
+ "path": "level",
6994
6994
  "valueType": "number"
6995
6995
  }],
6996
6996
  "broker": [{
@@ -7191,7 +7191,7 @@ var CAP_STATE_LEAVES = Object.freeze({
7191
7191
  "valueType": "number"
7192
7192
  },
7193
7193
  {
7194
- "path": "mireds",
7194
+ "path": "colorTemperature",
7195
7195
  "valueType": "number"
7196
7196
  }
7197
7197
  ],
@@ -7370,15 +7370,15 @@ var CAP_STATE_LEAVES = Object.freeze({
7370
7370
  "valueType": "string"
7371
7371
  },
7372
7372
  {
7373
- "path": "remainingSeconds",
7373
+ "path": "remaining",
7374
7374
  "valueType": "number"
7375
7375
  },
7376
7376
  {
7377
- "path": "delayedStartSeconds",
7377
+ "path": "delayedStart",
7378
7378
  "valueType": "number"
7379
7379
  },
7380
7380
  {
7381
- "path": "progressPercent",
7381
+ "path": "progress",
7382
7382
  "valueType": "number"
7383
7383
  },
7384
7384
  {
@@ -7492,7 +7492,7 @@ var CAP_STATE_LEAVES = Object.freeze({
7492
7492
  ],
7493
7493
  "fan-control": [
7494
7494
  {
7495
- "path": "percentage",
7495
+ "path": "speed",
7496
7496
  "valueType": "number"
7497
7497
  },
7498
7498
  {
@@ -7592,7 +7592,7 @@ var CAP_STATE_LEAVES = Object.freeze({
7592
7592
  }
7593
7593
  ],
7594
7594
  "humidity-sensor": [{
7595
- "path": "percent",
7595
+ "path": "humidity",
7596
7596
  "valueType": "number"
7597
7597
  }],
7598
7598
  "image": [{
@@ -7702,7 +7702,7 @@ var CAP_STATE_LEAVES = Object.freeze({
7702
7702
  "valueType": "number"
7703
7703
  },
7704
7704
  {
7705
- "path": "progressPercent",
7705
+ "path": "progress",
7706
7706
  "valueType": "number"
7707
7707
  },
7708
7708
  {
@@ -7781,11 +7781,11 @@ var CAP_STATE_LEAVES = Object.freeze({
7781
7781
  "valueType": "string"
7782
7782
  },
7783
7783
  {
7784
- "path": "positionMs",
7784
+ "path": "position",
7785
7785
  "valueType": "number"
7786
7786
  },
7787
7787
  {
7788
- "path": "durationMs",
7788
+ "path": "duration",
7789
7789
  "valueType": "number"
7790
7790
  },
7791
7791
  {
@@ -7887,11 +7887,11 @@ var CAP_STATE_LEAVES = Object.freeze({
7887
7887
  ]
7888
7888
  },
7889
7889
  {
7890
- "path": "signalPercent",
7890
+ "path": "signal",
7891
7891
  "valueType": "number"
7892
7892
  },
7893
7893
  {
7894
- "path": "rssiDbm",
7894
+ "path": "rssi",
7895
7895
  "valueType": "number"
7896
7896
  },
7897
7897
  {
@@ -8022,23 +8022,23 @@ var CAP_STATE_LEAVES = Object.freeze({
8022
8022
  ],
8023
8023
  "power-meter": [
8024
8024
  {
8025
- "path": "watts",
8025
+ "path": "power",
8026
8026
  "valueType": "number"
8027
8027
  },
8028
8028
  {
8029
- "path": "kwhTotal",
8029
+ "path": "energy",
8030
8030
  "valueType": "number"
8031
8031
  },
8032
8032
  {
8033
- "path": "volts",
8033
+ "path": "voltage",
8034
8034
  "valueType": "number"
8035
8035
  },
8036
8036
  {
8037
- "path": "amps",
8037
+ "path": "current",
8038
8038
  "valueType": "number"
8039
8039
  },
8040
8040
  {
8041
- "path": "va",
8041
+ "path": "apparentPower",
8042
8042
  "valueType": "number"
8043
8043
  },
8044
8044
  {
@@ -8066,14 +8066,10 @@ var CAP_STATE_LEAVES = Object.freeze({
8066
8066
  {
8067
8067
  "path": "gps.accuracyMeters",
8068
8068
  "valueType": "number"
8069
- },
8070
- {
8071
- "path": "batteryPercent",
8072
- "valueType": "number"
8073
8069
  }
8074
8070
  ],
8075
8071
  "pressure-sensor": [{
8076
- "path": "hpa",
8072
+ "path": "pressure",
8077
8073
  "valueType": "number"
8078
8074
  }],
8079
8075
  "privacy-mask": [{
@@ -8387,7 +8383,7 @@ var CAP_STATE_LEAVES = Object.freeze({
8387
8383
  "valueType": "boolean"
8388
8384
  }],
8389
8385
  "temperature-sensor": [{
8390
- "path": "celsius",
8386
+ "path": "temperature",
8391
8387
  "valueType": "number"
8392
8388
  }],
8393
8389
  "update": [
@@ -8435,7 +8431,7 @@ var CAP_STATE_LEAVES = Object.freeze({
8435
8431
  "valueType": "string"
8436
8432
  },
8437
8433
  {
8438
- "path": "progressPercent",
8434
+ "path": "progress",
8439
8435
  "valueType": "number"
8440
8436
  },
8441
8437
  {
@@ -8818,7 +8814,7 @@ function createMirrorSource(mirror, listeners, api) {
8818
8814
  *
8819
8815
  * const dev = createDeviceProxy(api, binding)
8820
8816
  * dev.state.battery.value // BatteryStatus | undefined
8821
- * dev.state.battery.value?.percentage
8817
+ * dev.state.battery.value?.level
8822
8818
  *
8823
8819
  * Two-arg form (deprecated path, kept for spec compatibility):
8824
8820
  * passes the api directly, builds a per-handle lazy source. New
@@ -1,3 +1,3 @@
1
1
  export { VendorLoginProxy, type LoginProxyAttemptSpec, type LoginProxyResponseView, type LoginProxyVerdict, type VendorLoginProxyOptions, } from './login-proxy.js';
2
- export { rewriteBody, rewriteLocation, rewriteReferer, rewriteSetCookie, type LoginProxyRoute, type LoginProxyScheme, type LoginProxyUpstream, } from './url-rewrite.js';
2
+ export { rewriteBody, rewriteLocation, rewriteReferer, rewriteFormBody, rewriteSetCookie, type LoginProxyRoute, type LoginProxyScheme, type LoginProxyUpstream, } from './url-rewrite.js';
3
3
  export { VENDOR_LOGIN_PROXY_PREFIX } from './prefix.js';
@@ -64,5 +64,12 @@ export declare function rewriteSetCookie(cookie: string, route: LoginProxyRoute)
64
64
  * stands for. A Referer that is not ours is dropped (null): it names the hub.
65
65
  */
66
66
  export declare function rewriteReferer(referer: string, route: LoginProxyRoute): string | null;
67
+ /**
68
+ * An `application/x-www-form-urlencoded` body whose field VALUES that are proxy URLs of
69
+ * this attempt (absolute or root-relative) are turned back into the vendor URL they stand
70
+ * for — the page's hidden inputs were rewritten on the way out (`rewriteBody`), and the
71
+ * vendor must get its own URL back. Field order and every untouched pair stay byte-identical.
72
+ */
73
+ export declare function rewriteFormBody(body: string, route: LoginProxyRoute): string;
67
74
  /** Cookies the browser holds for the hub itself must never reach a vendor. */
68
75
  export declare function filterForwardedCookies(cookieHeader: string): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@camstack/types",
3
- "version": "1.2.434",
3
+ "version": "1.2.436",
4
4
  "description": "Shared types, interfaces, and model catalogs for the CamStack detection ecosystem",
5
5
  "keywords": [
6
6
  "camstack",