@forge/bridge 5.16.3-next.0-experimental-4a332af → 5.17.0-experimental-04cc2b9

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 (82) hide show
  1. package/CHANGELOG.md +106 -4
  2. package/out/bridge.d.ts +1 -1
  3. package/out/events/events.d.ts.map +1 -1
  4. package/out/events/serialiseBlob.d.ts.map +1 -1
  5. package/out/featureFlags/types.d.ts +5 -5
  6. package/out/featureFlags/types.d.ts.map +1 -1
  7. package/out/featureFlags/types.js +1 -1
  8. package/out/fetch/fetch.d.ts.map +1 -1
  9. package/out/fetch/index.d.ts.map +1 -1
  10. package/out/flag/flag.d.ts +2 -2
  11. package/out/flag/flag.d.ts.map +1 -1
  12. package/out/frontendCustomMetrics/frontendCustomMetrics.d.ts +17 -0
  13. package/out/frontendCustomMetrics/frontendCustomMetrics.d.ts.map +1 -0
  14. package/out/frontendCustomMetrics/frontendCustomMetrics.js +61 -0
  15. package/out/frontendCustomMetrics/index.d.ts +2 -0
  16. package/out/frontendCustomMetrics/index.d.ts.map +1 -0
  17. package/out/frontendCustomMetrics/index.js +4 -0
  18. package/out/i18n/index.d.ts +1 -1
  19. package/out/i18n/index.d.ts.map +1 -1
  20. package/out/index.d.ts +1 -0
  21. package/out/index.d.ts.map +1 -1
  22. package/out/index.js +1 -0
  23. package/out/invoke/invoke.d.ts +1 -1
  24. package/out/invoke/invoke.d.ts.map +1 -1
  25. package/out/invoke/invoke.js +2 -3
  26. package/out/invoke-endpoint/invoke-endpoint.d.ts +2 -2
  27. package/out/invoke-endpoint/invoke-endpoint.d.ts.map +1 -1
  28. package/out/invoke-endpoint/invoke-endpoint.js +1 -1
  29. package/out/invoke-endpoint/invoke-remote.d.ts +1 -1
  30. package/out/invoke-endpoint/invoke-remote.d.ts.map +1 -1
  31. package/out/invoke-endpoint/invoke-service.d.ts +1 -1
  32. package/out/invoke-endpoint/invoke-service.d.ts.map +1 -1
  33. package/out/modal/modal.d.ts +10 -2
  34. package/out/modal/modal.d.ts.map +1 -1
  35. package/out/modal/modal.js +16 -0
  36. package/out/object-store/deleteObjects.d.ts.map +1 -1
  37. package/out/object-store/download.d.ts.map +1 -1
  38. package/out/object-store/getMetadata.d.ts.map +1 -1
  39. package/out/object-store/types.d.ts +10 -10
  40. package/out/object-store/types.d.ts.map +1 -1
  41. package/out/object-store/upload.d.ts.map +1 -1
  42. package/out/object-store/utils.d.ts.map +1 -1
  43. package/out/permissions/permissions.d.ts.map +1 -1
  44. package/out/permissions/permissionsUtil.d.ts +3 -3
  45. package/out/permissions/permissionsUtil.d.ts.map +1 -1
  46. package/out/permissions/permissionsUtil.js +2 -3
  47. package/out/permissions/types.d.ts +11 -11
  48. package/out/permissions/types.d.ts.map +1 -1
  49. package/out/realtime/productContext.d.ts +1 -1
  50. package/out/realtime/productContext.d.ts.map +1 -1
  51. package/out/realtime/productContext.js +3 -3
  52. package/out/realtime/realtime.d.ts +3 -3
  53. package/out/realtime/realtime.d.ts.map +1 -1
  54. package/out/router/router.d.ts.map +1 -1
  55. package/out/router/types.d.ts +10 -10
  56. package/out/router/types.d.ts.map +1 -1
  57. package/out/rovo/open.d.ts.map +1 -1
  58. package/out/rovo/types.d.ts +4 -4
  59. package/out/rovo/types.d.ts.map +1 -1
  60. package/out/types.d.ts +10 -10
  61. package/out/types.d.ts.map +1 -1
  62. package/out/types.js +1 -1
  63. package/out/utils/blobParser.d.ts.map +1 -1
  64. package/out/utils/index.d.ts.map +1 -1
  65. package/out/view/adf-renderer.d.ts.map +1 -1
  66. package/out/view/adf-renderer.js +34 -1
  67. package/out/view/changeWindowTitle.d.ts.map +1 -1
  68. package/out/view/close.d.ts.map +1 -1
  69. package/out/view/createHistory.d.ts.map +1 -1
  70. package/out/view/emitReadyEvent.d.ts.map +1 -1
  71. package/out/view/getContext.d.ts.map +1 -1
  72. package/out/view/getFrameDispatch.d.ts +4 -0
  73. package/out/view/getFrameDispatch.d.ts.map +1 -0
  74. package/out/view/getFrameDispatch.js +9 -0
  75. package/out/view/onClose.d.ts.map +1 -1
  76. package/out/view/refresh.d.ts.map +1 -1
  77. package/out/view/submit.d.ts.map +1 -1
  78. package/out/view/theme.d.ts.map +1 -1
  79. package/out/view/view.d.ts +3 -2
  80. package/out/view/view.d.ts.map +1 -1
  81. package/out/view/view.js +2 -0
  82. package/package.json +15 -6
package/CHANGELOG.md CHANGED
@@ -1,13 +1,115 @@
1
1
  # @forge/bridge
2
2
 
3
- ## 5.16.3-next.0-experimental-4a332af
3
+ ## 5.17.0-experimental-04cc2b9
4
+
5
+ ### Major Changes
6
+
7
+ - d9ef926: Adds support for TypeScript 5
8
+
9
+ ### Minor Changes
10
+
11
+ - b0b69a2: **Experimental — not yet ready for use.** Add a new `frontendCustomMetrics` namespace providing `frontendCustomMetrics.counter(name)` with `incr()` and `incrBy(value)` for emitting frontend custom metrics. `incrBy(value)` rejects if `value <= 0`. The metric name must exactly match a metric registered in the Forge Dev Console.
12
+
13
+ ### Patch Changes
14
+
15
+ - 561f8f4: Remove "storage" module from "@forge/api"
16
+ - Updated dependencies [814b8fe]
17
+ - Updated dependencies [d9ef926]
18
+ - @forge/manifest@12.9.0-experimental-04cc2b9
19
+ - @forge/egress@2.3.2-experimental-04cc2b9
20
+ - @forge/i18n@0.0.7-experimental-04cc2b9
21
+ - @forge/resolver@1.8.0-experimental-04cc2b9
22
+
23
+ ## 5.17.0
24
+
25
+ ### Minor Changes
26
+
27
+ - 3cf97c3: Extend forge/bridge modal types with custom dimensions
28
+ - f7f06c8: Add resizable to modal named sizes type
29
+ - fc55c83: Add `getFrameDispatch` method to `view` module. The method fetches the dispatch prop passed to Frame inside the frame resource.
4
30
 
5
31
  ### Patch Changes
6
32
 
7
- - aa757af: Module add
8
33
  - dba5074: Send adf doc when ready for createAdfRendererIframeProps
9
- - Updated dependencies [aa757af]
10
- - @forge/manifest@12.8.0-experimental-4a332af
34
+ - Updated dependencies [ccdcfc3]
35
+ - Updated dependencies [8197e66]
36
+ - Updated dependencies [723fab8]
37
+ - Updated dependencies [4493006]
38
+ - Updated dependencies [5beb8ad]
39
+ - Updated dependencies [f1f11f0]
40
+ - Updated dependencies [b7b1f36]
41
+ - Updated dependencies [ee691bf]
42
+ - Updated dependencies [9f3add6]
43
+ - @forge/manifest@12.9.0
44
+
45
+ ## 5.17.0-next.10
46
+
47
+ ### Patch Changes
48
+
49
+ - Updated dependencies [ee691bf]
50
+ - @forge/manifest@12.9.0-next.6
51
+
52
+ ## 5.17.0-next.9
53
+
54
+ ### Patch Changes
55
+
56
+ - Updated dependencies [8197e66]
57
+ - @forge/manifest@12.9.0-next.5
58
+
59
+ ## 5.17.0-next.8
60
+
61
+ ### Patch Changes
62
+
63
+ - Updated dependencies [4493006]
64
+ - @forge/manifest@12.9.0-next.4
65
+
66
+ ## 5.17.0-next.7
67
+
68
+ ### Patch Changes
69
+
70
+ - Updated dependencies [723fab8]
71
+ - Updated dependencies [9f3add6]
72
+ - @forge/manifest@12.9.0-next.3
73
+
74
+ ## 5.17.0-next.6
75
+
76
+ ### Minor Changes
77
+
78
+ - fc55c83: Add `getFrameDispatch` method to `view` module. The method fetches the dispatch prop passed to Frame inside the frame resource.
79
+
80
+ ## 5.17.0-next.5
81
+
82
+ ### Patch Changes
83
+
84
+ - Updated dependencies [b7b1f36]
85
+ - @forge/manifest@12.8.1-next.2
86
+
87
+ ## 5.17.0-next.4
88
+
89
+ ### Minor Changes
90
+
91
+ - f7f06c8: Add resizable to modal named sizes type
92
+
93
+ ## 5.17.0-next.3
94
+
95
+ ### Patch Changes
96
+
97
+ - Updated dependencies [5beb8ad]
98
+ - Updated dependencies [f1f11f0]
99
+ - @forge/manifest@12.8.1-next.1
100
+
101
+ ## 5.17.0-next.2
102
+
103
+ ### Patch Changes
104
+
105
+ - Updated dependencies [ccdcfc3]
106
+ - @forge/manifest@12.8.1-next.0
107
+
108
+ ## 5.17.0-next.1
109
+
110
+ ### Minor Changes
111
+
112
+ - 3cf97c3: Extend forge/bridge modal types with custom dimensions
11
113
 
12
114
  ## 5.16.3-next.0
13
115
 
package/out/bridge.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const getCallBridge: () => Window['__bridge']['callBridge'];
1
+ export declare const getCallBridge: () => Window["__bridge"]["callBridge"];
2
2
  //# sourceMappingURL=bridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/events/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA4CxC,eAAO,MAAM,MAAM;kBAxBQ,MAAM,YAAY,GAAG,KAAG,QAAQ,IAAI,CAAC;gBAQ7C,MAAM,uBAAuB,GAAG,KAAK,GAAG,KAAG,QAAQ,YAAY,CAAC;wBAIlD,MAAM,YAAY,GAAG,KAAG,QAAQ,IAAI,CAAC;sBAQ7C,MAAM,uBAAuB,GAAG,KAAK,GAAG,KAAG,QAAQ,YAAY,CAAC;CASxF,CAAC"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/events/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AA4CxC,eAAO,MAAM,MAAM;kBAxBQ,MAAM,YAAY,GAAG,KAAG,OAAO,CAAC,IAAI,CAAC;gBAQ7C,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,GAAG,KAAG,OAAO,CAAC,YAAY,CAAC;wBAIlD,MAAM,YAAY,GAAG,KAAG,OAAO,CAAC,IAAI,CAAC;sBAQ7C,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,KAAK,GAAG,KAAG,OAAO,CAAC,YAAY,CAAC;CASxF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"serialiseBlob.d.ts","sourceRoot":"","sources":["../../src/events/serialiseBlob.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,uBAAuB,YAAmB,OAAO,KAAG,QAAQ,OAAO,CAyB/E,CAAC;AAGF,eAAO,MAAM,yBAAyB,YAAa,OAAO,KAAG,OAyB5D,CAAC;AAEF,eAAO,MAAM,aAAa,YAAa,OAAO,KAAG,OAchD,CAAC;AAEF,eAAO,MAAM,uBAAuB,YAAa,OAAO,KAAG,OAc1D,CAAC"}
1
+ {"version":3,"file":"serialiseBlob.d.ts","sourceRoot":"","sources":["../../src/events/serialiseBlob.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,uBAAuB,GAAU,SAAS,OAAO,KAAG,OAAO,CAAC,OAAO,CAyB/E,CAAC;AAGF,eAAO,MAAM,yBAAyB,GAAI,SAAS,OAAO,KAAG,OAyB5D,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,SAAS,OAAO,KAAG,OAchD,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,SAAS,OAAO,KAAG,OAc1D,CAAC"}
@@ -8,21 +8,21 @@ export interface FeatureFlagUser {
8
8
  accountId?: string;
9
9
  };
10
10
  }
11
- export declare type InitFeatureFlagsPayload = {
11
+ export type InitFeatureFlagsPayload = {
12
12
  user: FeatureFlagUser;
13
13
  config: ForgeFeatureFlagConfig;
14
14
  };
15
- export declare type InitFeatureFlagsResponse = Record<string, any> | void;
15
+ export type InitFeatureFlagsResponse = Record<string, any> | void;
16
16
  export declare enum FeatureFlagEventType {
17
17
  CHECKFLAG = "checkFlag"
18
18
  }
19
- export declare type FeatureFlagEnvironment = 'development' | 'staging' | 'production';
20
- export declare type FeatureFlagEventProperties = {
19
+ export type FeatureFlagEnvironment = 'development' | 'staging' | 'production';
20
+ export type FeatureFlagEventProperties = {
21
21
  environment?: FeatureFlagEnvironment;
22
22
  success?: boolean;
23
23
  name?: string;
24
24
  };
25
- export declare type FeatureFlagEventTrackPayload = {
25
+ export type FeatureFlagEventTrackPayload = {
26
26
  type: FeatureFlagEventType;
27
27
  properties: FeatureFlagEventProperties;
28
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/featureFlags/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE;QACZ,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,oBAAY,uBAAuB,GAAG;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,sBAAsB,CAAC;CAChC,CAAC;AAEF,oBAAY,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AAElE,oBAAY,oBAAoB;IAC9B,SAAS,cAAc;CACxB;AAED,oBAAY,sBAAsB,GAAG,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC;AAE9E,oBAAY,0BAA0B,GAAG;IACvC,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,oBAAY,4BAA4B,GAAG;IACzC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,UAAU,EAAE,0BAA0B,CAAC;CACxC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/featureFlags/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,sBAAsB,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IAC7C,WAAW,CAAC,EAAE;QACZ,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,MAAM,EAAE,sBAAsB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;AAElE,oBAAY,oBAAoB;IAC9B,SAAS,cAAc;CACxB;AAED,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC;AAE9E,MAAM,MAAM,0BAA0B,GAAG;IACvC,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,IAAI,EAAE,oBAAoB,CAAC;IAC3B,UAAU,EAAE,0BAA0B,CAAC;CACxC,CAAC"}
@@ -4,4 +4,4 @@ exports.FeatureFlagEventType = void 0;
4
4
  var FeatureFlagEventType;
5
5
  (function (FeatureFlagEventType) {
6
6
  FeatureFlagEventType["CHECKFLAG"] = "checkFlag";
7
- })(FeatureFlagEventType = exports.FeatureFlagEventType || (exports.FeatureFlagEventType = {}));
7
+ })(FeatureFlagEventType || (exports.FeatureFlagEventType = FeatureFlagEventType = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/fetch/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAa,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAuEvD,eAAO,MAAM,cAAc,eAAgB,WAAW,oBAAoB,CAAC;+BAkB5C,MAAM,iBAAiB,gBAAgB,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAG,QAAQ,QAAQ,CAAC;CAG7G,CAAC;AAEF,eAAO,MAAM,eAAe,eAAgB,WAAW,oBAAoB,CAAC;kCAkC1C,MAAM,iBAAiB,gBAAgB,KAAG,QAAQ,QAAQ,CAAC;4BAGjE,MAAM,iBAAiB,gBAAgB,KAAG,QAAQ,QAAQ,CAAC;iCAGtD,MAAM,iBAAiB,gBAAgB,KAAG,QAAQ,QAAQ,CAAC;CAG3F,CAAC"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../src/fetch/fetch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EAAa,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAuEvD,eAAO,MAAM,cAAc,GAAI,YAAY,UAAU,CAAC,OAAO,aAAa,CAAC;+BAkB5C,MAAM,iBAAiB,gBAAgB,GAAG;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,KAAG,OAAO,CAAC,QAAQ,CAAC;CAG7G,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,YAAY,UAAU,CAAC,OAAO,aAAa,CAAC;kCAkC1C,MAAM,iBAAiB,gBAAgB,KAAG,OAAO,CAAC,QAAQ,CAAC;4BAGjE,MAAM,iBAAiB,gBAAgB,KAAG,OAAO,CAAC,QAAQ,CAAC;iCAGtD,MAAM,iBAAiB,gBAAgB,KAAG,OAAO,CAAC,QAAQ,CAAC;CAG3F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fetch/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAY5C,eAAO,MAAQ,iBAAiB,aATA,MAAM,iBAAiB,gBAAgB,KAAK,QAAQ,QAAQ,CAAC,EAS3D,WAAW,aARnB,MAAM,iBAAiB,gBAAgB,KAAK,QAAQ,QAAQ,CAAC,EAQxC,gBAAgB,aAPhC,MAAM,iBAAiB,gBAAgB,KAAK,QAAQ,QAAQ,CAO4B,CAAC;AACxH,eAAO,MAAQ,aAAa,cAJC,MAAM,iBAAiB,gBAAgB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,QAAQ,QAAQ,CAI3B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fetch/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAY5C,eAAO,MAAQ,iBAAiB,aATA,MAAM,iBAAiB,gBAAgB,KAAK,OAAO,CAAC,QAAQ,CAAC,EAS3D,WAAW,aARnB,MAAM,iBAAiB,gBAAgB,KAAK,OAAO,CAAC,QAAQ,CAAC,EAQxC,gBAAgB,aAPhC,MAAM,iBAAiB,gBAAgB,KAAK,OAAO,CAAC,QAAQ,CAO4B,CAAC;AACxH,eAAO,MAAQ,aAAa,cAJC,MAAM,iBAAiB,gBAAgB,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KAAK,OAAO,CAAC,QAAQ,CAI3B,CAAC"}
@@ -1,5 +1,5 @@
1
- export declare type FlagAppearance = 'info' | 'success' | 'warning' | 'error';
2
- export declare type FlagType = FlagAppearance;
1
+ export type FlagAppearance = 'info' | 'success' | 'warning' | 'error';
2
+ export type FlagType = FlagAppearance;
3
3
  export interface Flag {
4
4
  close: () => Promise<boolean | void>;
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"flag.d.ts","sourceRoot":"","sources":["../../src/flag/flag.ts"],"names":[],"mappings":"AAGA,oBAAY,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AACtE,oBAAY,QAAQ,GAAG,cAAc,CAAC;AAEtC,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAID,eAAO,MAAM,QAAQ,YAAa,WAAW,KAAG,IAgB/C,CAAC"}
1
+ {"version":3,"file":"flag.d.ts","sourceRoot":"","sources":["../../src/flag/flag.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AACtE,MAAM,MAAM,QAAQ,GAAG,cAAc,CAAC;AAEtC,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;OAEG;IACH,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAID,eAAO,MAAM,QAAQ,GAAI,SAAS,WAAW,KAAG,IAgB/C,CAAC"}
@@ -0,0 +1,17 @@
1
+ export interface Counter {
2
+ incr: () => Promise<void>;
3
+ incrBy: (value: number) => Promise<void>;
4
+ }
5
+ /**
6
+ * Public namespace for emitting Forge frontend custom metrics from a Forge UI app.
7
+ *
8
+ * @example
9
+ * import { frontendCustomMetrics } from '@forge/bridge';
10
+ * const c = frontendCustomMetrics.counter('button-click');
11
+ * c.incr(); // increment by 1
12
+ * c.incrBy(5); // increment by 5 (rejects if value <= 0)
13
+ */
14
+ export declare const frontendCustomMetrics: {
15
+ counter: (name: string) => Counter;
16
+ };
17
+ //# sourceMappingURL=frontendCustomMetrics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontendCustomMetrics.d.ts","sourceRoot":"","sources":["../../src/frontendCustomMetrics/frontendCustomMetrics.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1C;AAkDD;;;;;;;;GAQG;AACH,eAAO,MAAM,qBAAqB;oBAvBX,MAAM,KAAG,OAAO;CAuBS,CAAC"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.frontendCustomMetrics = void 0;
4
+ const bridge_1 = require("../bridge");
5
+ const errors_1 = require("../errors");
6
+ const callBridge = (0, bridge_1.getCallBridge)();
7
+ const emit = async (customMetricName, value) => {
8
+ await callBridge('emitFrontendCustomMetric', {
9
+ customMetricName,
10
+ value
11
+ });
12
+ };
13
+ const MAX_METRIC_NAME_LENGTH = 50;
14
+ // Must start and end with an alphanumeric character and may only contain
15
+ // letters, numbers, dots (.) and hyphens (-) in between.
16
+ const METRIC_NAME_REGEX = /^[a-zA-Z0-9]([a-zA-Z0-9.-]*[a-zA-Z0-9])?$/;
17
+ /**
18
+ * Validates a custom metric name against the same rules enforced when
19
+ * registering a metric in the developer console. Throws synchronously so
20
+ * developer errors fail fast without a wasted bridge round-trip.
21
+ *
22
+ * Note: this is a best-effort, client-side convenience check. The metric name
23
+ * must still match a custom metric registered in the developer console, which
24
+ * remains the source of truth and is validated by the backend.
25
+ */
26
+ const validateMetricName = (name) => {
27
+ if (name.trim().length === 0) {
28
+ throw new errors_1.BridgeAPIError('Custom metric name cannot be empty');
29
+ }
30
+ if (name.length > MAX_METRIC_NAME_LENGTH) {
31
+ throw new errors_1.BridgeAPIError(`Custom metric name cannot exceed ${MAX_METRIC_NAME_LENGTH} characters`);
32
+ }
33
+ if (!METRIC_NAME_REGEX.test(name)) {
34
+ throw new errors_1.BridgeAPIError('Custom metric name must start and end with alphanumeric characters and can only contain letters, numbers, dots (.), and hyphens (-)');
35
+ }
36
+ if (name.includes('..') || name.includes('--')) {
37
+ throw new errors_1.BridgeAPIError('Custom metric name cannot contain consecutive dots or hyphens');
38
+ }
39
+ };
40
+ const counter = (name) => {
41
+ validateMetricName(name);
42
+ return {
43
+ incr: () => emit(name, 1),
44
+ incrBy: (value) => {
45
+ if (value <= 0) {
46
+ throw new errors_1.BridgeAPIError('Counter value must be a positive number');
47
+ }
48
+ return emit(name, value);
49
+ }
50
+ };
51
+ };
52
+ /**
53
+ * Public namespace for emitting Forge frontend custom metrics from a Forge UI app.
54
+ *
55
+ * @example
56
+ * import { frontendCustomMetrics } from '@forge/bridge';
57
+ * const c = frontendCustomMetrics.counter('button-click');
58
+ * c.incr(); // increment by 1
59
+ * c.incrBy(5); // increment by 5 (rejects if value <= 0)
60
+ */
61
+ exports.frontendCustomMetrics = { counter };
@@ -0,0 +1,2 @@
1
+ export * from './frontendCustomMetrics';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/frontendCustomMetrics/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./frontendCustomMetrics"), exports);
@@ -9,7 +9,7 @@ export declare const getTranslations: (locale?: ForgeSupportedLocaleCode | null,
9
9
  * If not provided, the i18n key is returned.
10
10
  * @returns The translated string.
11
11
  */
12
- export declare type TranslationFunction = (i18nKey: string, defaultValue?: string) => string;
12
+ export type TranslationFunction = (i18nKey: string, defaultValue?: string) => string;
13
13
  /**
14
14
  * Creates a translation function (i.e. `t`) for the given locale.
15
15
  * If no locale is provided, the locale from the current view context is used.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAM3B,MAAM,aAAa,CAAC;AAuBrB,eAAO,MAAM,sBAAsB,QAAO,IAEzC,CAAC;AAEF,eAAO,MAAM,eAAe,YAClB,wBAAwB,GAAG,IAAI,YAC9B,sBAAsB,KAG9B,QAAQ,qBAAqB,CAO/B,CAAC;AAEF;;;;;;;GAOG;AACH,oBAAY,mBAAmB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AAErF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,YAC5B,wBAAwB,GAAG,IAAI,KACtC,QAAQ,mBAAmB,CAS7B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,wBAAwB,EAC7B,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAM3B,MAAM,aAAa,CAAC;AAuBrB,eAAO,MAAM,sBAAsB,QAAO,IAEzC,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,SAAQ,wBAAwB,GAAG,IAAW,EAC9C,UAAS,sBAER,KACA,OAAO,CAAC,qBAAqB,CAO/B,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,KAAK,MAAM,CAAC;AAErF;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,GACpC,SAAQ,wBAAwB,GAAG,IAAW,KAC7C,OAAO,CAAC,mBAAmB,CAS7B,CAAC"}
package/out/index.d.ts CHANGED
@@ -14,4 +14,5 @@ export * from './permissions';
14
14
  export * from './object-store';
15
15
  export { type FullContext } from './types';
16
16
  export * from './featureFlags';
17
+ export * from './frontendCustomMetrics';
17
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,yBAAyB,CAAC"}
package/out/index.js CHANGED
@@ -18,3 +18,4 @@ exports.i18n = tslib_1.__importStar(require("./i18n"));
18
18
  tslib_1.__exportStar(require("./permissions"), exports);
19
19
  tslib_1.__exportStar(require("./object-store"), exports);
20
20
  tslib_1.__exportStar(require("./featureFlags"), exports);
21
+ tslib_1.__exportStar(require("./frontendCustomMetrics"), exports);
@@ -19,7 +19,7 @@ export declare function invoke<Payload extends InvokePayload, T = InvokeResponse
19
19
  * const response = await invoke<{ message: string }>('greet', { name: 'Taylor' });
20
20
  */
21
21
  export declare function invoke<T = InvokeResponse>(functionKey: string, payload?: InvokePayload): Promise<T>;
22
- declare type Invoke<Defs extends Definitions> = <Def extends keyof Defs & string>(call: Def, ...arg: DefArguments<Defs, Def>) => Promise<DefResult<Defs, Def>>;
22
+ type Invoke<Defs extends Definitions> = <Def extends keyof Defs & string>(call: Def, ...arg: DefArguments<Defs, Def>) => Promise<DefResult<Defs, Def>>;
23
23
  /**
24
24
  * Specialises the invoke function to a given Definitions type.
25
25
  *
@@ -1 +1 @@
1
- {"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../src/invoke/invoke.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAInF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AA+BzD;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,OAAO,SAAS,aAAa,EAAE,CAAC,GAAG,cAAc,EACtE,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,CAAC,CAAC,CAAC;AAEd;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,CAAC,GAAG,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AASrG,aAAK,MAAM,CAAC,IAAI,SAAS,WAAW,IAAI,CAAC,GAAG,SAAS,MAAM,IAAI,GAAG,MAAM,EACtE,IAAI,EAAE,GAAG,EACT,GAAG,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,KAC5B,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAEnC;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,SAAS,WAAW,KAAK,MAAM,CAAC,IAAI,CAAC,CAEnE"}
1
+ {"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../src/invoke/invoke.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAInF,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AA+BzD;;;;;;;;;;GAUG;AACH,wBAAgB,MAAM,CAAC,OAAO,SAAS,aAAa,EAAE,CAAC,GAAG,cAAc,EACtE,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,CAAC,CAAC,CAAC;AAEd;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,CAAC,GAAG,cAAc,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AASrG,KAAK,MAAM,CAAC,IAAI,SAAS,WAAW,IAAI,CAAC,GAAG,SAAS,MAAM,IAAI,GAAG,MAAM,EACtE,IAAI,EAAE,GAAG,EACT,GAAG,GAAG,EAAE,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,KAC5B,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;AAEnC;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,SAAS,WAAW,KAAK,MAAM,CAAC,IAAI,CAAC,CAEnE"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.makeInvoke = exports.invoke = void 0;
3
+ exports.invoke = invoke;
4
+ exports.makeInvoke = makeInvoke;
4
5
  const bridge_1 = require("../bridge");
5
6
  const errors_1 = require("../errors");
6
7
  const utils_1 = require("../utils");
@@ -26,7 +27,6 @@ const limitedInvoke = (0, utils_1.withRateLimiter)(_invoke, 500, 1000 * 25, 'Res
26
27
  function invoke(functionKey, payload) {
27
28
  return limitedInvoke(functionKey, payload);
28
29
  }
29
- exports.invoke = invoke;
30
30
  /**
31
31
  * Specialises the invoke function to a given Definitions type.
32
32
  *
@@ -35,4 +35,3 @@ exports.invoke = invoke;
35
35
  function makeInvoke() {
36
36
  return invoke;
37
37
  }
38
- exports.makeInvoke = makeInvoke;
@@ -1,5 +1,5 @@
1
1
  import { InvokeResponse } from '../types';
2
- declare type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
2
+ type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
3
3
  export interface InvokeEndpointInput {
4
4
  path: string;
5
5
  method: HttpMethod;
@@ -13,6 +13,6 @@ export declare enum InvokeType {
13
13
  export interface CallBridgePayload extends InvokeEndpointInput {
14
14
  invokeType: string;
15
15
  }
16
- export declare const _invokeEndpointFn: (invokeType: InvokeType) => (input: InvokeEndpointInput) => Promise<InvokeResponse>;
16
+ export declare const _invokeEndpointFn: (invokeType: InvokeType) => ((input: InvokeEndpointInput) => Promise<InvokeResponse>);
17
17
  export {};
18
18
  //# sourceMappingURL=invoke-endpoint.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"invoke-endpoint.d.ts","sourceRoot":"","sources":["../../src/invoke-endpoint/invoke-endpoint.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,cAAc,EAAE,MAAM,UAAU,CAAC;AAOzD,aAAK,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,OAAO,cAAc;CACtB;AAED,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AAoCD,eAAO,MAAM,iBAAiB,eAChB,UAAU,aACZ,mBAAmB,KAAK,QAAQ,cAAc,CASzD,CAAC"}
1
+ {"version":3,"file":"invoke-endpoint.d.ts","sourceRoot":"","sources":["../../src/invoke-endpoint/invoke-endpoint.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiB,cAAc,EAAE,MAAM,UAAU,CAAC;AAOzD,KAAK,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,oBAAY,UAAU;IACpB,MAAM,WAAW;IACjB,OAAO,cAAc;CACtB;AAED,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,UAAU,EAAE,MAAM,CAAC;CACpB;AAoCD,eAAO,MAAM,iBAAiB,GAC5B,YAAY,UAAU,KACrB,CAAC,CAAC,KAAK,EAAE,mBAAmB,KAAK,OAAO,CAAC,cAAc,CAAC,CAS1D,CAAC"}
@@ -11,7 +11,7 @@ var InvokeType;
11
11
  (function (InvokeType) {
12
12
  InvokeType["REMOTE"] = "Remote";
13
13
  InvokeType["SERVICE"] = "Container";
14
- })(InvokeType = exports.InvokeType || (exports.InvokeType = {}));
14
+ })(InvokeType || (exports.InvokeType = InvokeType = {}));
15
15
  const callBridge = (0, bridge_1.getCallBridge)();
16
16
  const validatePayload = (payload) => {
17
17
  if (!payload)
@@ -1,4 +1,4 @@
1
1
  import { InvokeEndpointInput } from './invoke-endpoint';
2
- export declare type InvokeRemoteInput = InvokeEndpointInput;
2
+ export type InvokeRemoteInput = InvokeEndpointInput;
3
3
  export declare const invokeRemote: (input: InvokeRemoteInput) => Promise<import("../types").InvokeResponse>;
4
4
  //# sourceMappingURL=invoke-remote.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"invoke-remote.d.ts","sourceRoot":"","sources":["../../src/invoke-endpoint/invoke-remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,mBAAmB,EAAc,MAAM,mBAAmB,CAAC;AAEvF,oBAAY,iBAAiB,GAAG,mBAAmB,CAAC;AAEpD,eAAO,MAAM,YAAY,UAAW,iBAAiB,+CAIpD,CAAC"}
1
+ {"version":3,"file":"invoke-remote.d.ts","sourceRoot":"","sources":["../../src/invoke-endpoint/invoke-remote.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,mBAAmB,EAAc,MAAM,mBAAmB,CAAC;AAEvF,MAAM,MAAM,iBAAiB,GAAG,mBAAmB,CAAC;AAEpD,eAAO,MAAM,YAAY,GAAI,OAAO,iBAAiB,+CAIpD,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { InvokeEndpointInput } from './invoke-endpoint';
2
- export declare type InvokeServiceInput = InvokeEndpointInput;
2
+ export type InvokeServiceInput = InvokeEndpointInput;
3
3
  export declare const invokeService: (input: InvokeServiceInput) => Promise<import("../types").InvokeResponse>;
4
4
  //# sourceMappingURL=invoke-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"invoke-service.d.ts","sourceRoot":"","sources":["../../src/invoke-endpoint/invoke-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,mBAAmB,EAAc,MAAM,mBAAmB,CAAC;AAEvF,oBAAY,kBAAkB,GAAG,mBAAmB,CAAC;AAErD,eAAO,MAAM,aAAa,UAAW,kBAAkB,+CAItD,CAAC"}
1
+ {"version":3,"file":"invoke-service.d.ts","sourceRoot":"","sources":["../../src/invoke-endpoint/invoke-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,mBAAmB,EAAc,MAAM,mBAAmB,CAAC;AAEvF,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,CAAC;AAErD,eAAO,MAAM,aAAa,GAAI,OAAO,kBAAkB,+CAItD,CAAC"}
@@ -1,7 +1,14 @@
1
+ declare const NAMED_MODAL_SIZES: readonly ["small", "medium", "large", "xlarge", "max", "fullscreen", "resizable"];
2
+ type NamedModalSize = (typeof NAMED_MODAL_SIZES)[number];
3
+ type CustomModalSize = {
4
+ width: string;
5
+ height?: string;
6
+ };
7
+ export type ModalSizes = NamedModalSize | CustomModalSize;
1
8
  export interface ModalOptions {
2
9
  resource?: string | null;
3
10
  onClose?: (payload: any) => any;
4
- size?: string;
11
+ size?: ModalSizes;
5
12
  context?: any;
6
13
  closeOnEscape?: boolean;
7
14
  closeOnOverlayClick?: boolean;
@@ -11,7 +18,7 @@ export interface ModalOptions {
11
18
  export declare class Modal {
12
19
  resource: string | null;
13
20
  onClose: NonNullable<ModalOptions['onClose']>;
14
- size: string;
21
+ size: ModalSizes;
15
22
  context: any;
16
23
  closeOnEscape: boolean;
17
24
  closeOnOverlayClick: boolean;
@@ -20,4 +27,5 @@ export declare class Modal {
20
27
  constructor(opts?: ModalOptions);
21
28
  open(): Promise<void>;
22
29
  }
30
+ export {};
23
31
  //# sourceMappingURL=modal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../src/modal/modal.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAKD,qBAAa,KAAK;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,GAAG,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;gBACD,IAAI,CAAC,EAAE,YAAY;IAWzB,IAAI;CAoBX"}
1
+ {"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../src/modal/modal.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,iBAAiB,mFAAoF,CAAC;AAC5G,KAAK,cAAc,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,eAAe,CAAC;AAE1D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,CAAC;IAChC,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAmBD,qBAAa,KAAK;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IAC9C,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC;IACb,aAAa,EAAE,OAAO,CAAC;IACvB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;gBACD,IAAI,CAAC,EAAE,YAAY;IAWzB,IAAI;CA0BX"}
@@ -4,8 +4,21 @@ exports.Modal = void 0;
4
4
  const bridge_1 = require("../bridge");
5
5
  const errors_1 = require("../errors");
6
6
  const callBridge = (0, bridge_1.getCallBridge)();
7
+ const NAMED_MODAL_SIZES = ['small', 'medium', 'large', 'xlarge', 'max', 'fullscreen', 'resizable'];
7
8
  // eslint-disable-next-line @typescript-eslint/no-empty-function
8
9
  const noop = () => { };
10
+ function isNamedModalSize(size) {
11
+ return typeof size === 'string' && NAMED_MODAL_SIZES.includes(size);
12
+ }
13
+ function isCustomModalSize(size) {
14
+ if (typeof size !== 'object' || size === null)
15
+ return false;
16
+ const s = size;
17
+ return typeof s.width === 'string' && (s.height === undefined || typeof s.height === 'string');
18
+ }
19
+ function isValidModalSize(size) {
20
+ return isNamedModalSize(size) || isCustomModalSize(size);
21
+ }
9
22
  class Modal {
10
23
  constructor(opts) {
11
24
  var _a, _b;
@@ -19,6 +32,9 @@ class Modal {
19
32
  this.icon = (opts === null || opts === void 0 ? void 0 : opts.icon) || '';
20
33
  }
21
34
  async open() {
35
+ if (!isValidModalSize(this.size)) {
36
+ throw new errors_1.BridgeAPIError(`Invalid modal size: ${JSON.stringify(this.size)}. Must be one of the named sizes (${NAMED_MODAL_SIZES.join(', ')}) or a custom dimensions object with a "width" string property and an optional "height" string property.`);
37
+ }
22
38
  try {
23
39
  const success = await callBridge('openModal', {
24
40
  resource: this.resource,
@@ -1 +1 @@
1
- {"version":3,"file":"deleteObjects.d.ts","sourceRoot":"","sources":["../../src/object-store/deleteObjects.ts"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa;iBAAgD,MAAM;UAAQ,MAAM,EAAE;MAAK,QAAQ,IAAI,CAkBhH,CAAC"}
1
+ {"version":3,"file":"deleteObjects.d.ts","sourceRoot":"","sources":["../../src/object-store/deleteObjects.ts"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAU,uBAAuB;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,KAAG,OAAO,CAAC,IAAI,CAkBhH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/object-store/download.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,SAAS,CAAC;AAMlE;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ;iBAIN,MAAM;UACb,MAAM,EAAE;MACZ,QAAQ,cAAc,EAAE,CAyD3B,CAAC"}
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../src/object-store/download.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,SAAS,CAAC;AAMlE;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,GAAU,uBAG5B;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,KAAG,OAAO,CAAC,cAAc,EAAE,CAyD3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getMetadata.d.ts","sourceRoot":"","sources":["../../src/object-store/getMetadata.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAMjD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW;iBAIT,MAAM;UACb,MAAM,EAAE;MACZ,QAAQ,iBAAiB,EAAE,CA6B9B,CAAC"}
1
+ {"version":3,"file":"getMetadata.d.ts","sourceRoot":"","sources":["../../src/object-store/getMetadata.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAMjD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GAAU,uBAG/B;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,KAAG,OAAO,CAAC,iBAAiB,EAAE,CA6B9B,CAAC"}
@@ -1,45 +1,45 @@
1
- export declare type ObjectMetadata = {
1
+ export type ObjectMetadata = {
2
2
  length: number;
3
3
  checksum: string;
4
4
  checksumType: string;
5
5
  };
6
- export declare type Base64Object = {
6
+ export type Base64Object = {
7
7
  data: string;
8
8
  mimeType?: string;
9
9
  fileSize?: number;
10
10
  };
11
- export declare type UploadObject = Blob | Base64Object;
12
- export declare type FileMetadata = ObjectMetadata & {
11
+ export type UploadObject = Blob | Base64Object;
12
+ export type FileMetadata = ObjectMetadata & {
13
13
  key: string;
14
14
  ttlSeconds?: number;
15
15
  overwrite?: boolean;
16
16
  };
17
- export declare type UploadResult = {
17
+ export type UploadResult = {
18
18
  success: boolean;
19
19
  key: string;
20
20
  status?: number;
21
21
  error?: string;
22
22
  };
23
- export declare type UploadPromiseItem = {
23
+ export type UploadPromiseItem = {
24
24
  promise: Promise<UploadResult>;
25
25
  index: number;
26
26
  objectType?: string;
27
27
  objectSize?: number;
28
28
  };
29
- export declare type DownloadResult = {
29
+ export type DownloadResult = {
30
30
  success: boolean;
31
31
  key: string;
32
32
  blob?: Blob;
33
33
  status?: number;
34
34
  error?: string;
35
35
  };
36
- export declare type PresignedURLMapping = {
36
+ export type PresignedURLMapping = {
37
37
  [url: string]: FileMetadata;
38
38
  };
39
- export declare type DownloadURLMapping = {
39
+ export type DownloadURLMapping = {
40
40
  [url: string]: string;
41
41
  };
42
- export declare type GetMetadataResult = {
42
+ export type GetMetadataResult = {
43
43
  key: string;
44
44
  checksum?: string;
45
45
  size?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/object-store/types.ts"],"names":[],"mappings":"AAAA,oBAAY,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,oBAAY,YAAY,GAAG,IAAI,GAAG,YAAY,CAAC;AAE/C,oBAAY,YAAY,GAAG,cAAc,GAAG;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,oBAAY,YAAY,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,iBAAiB,GAAG;IAC9B,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,oBAAY,cAAc,GAAG;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,oBAAY,mBAAmB,GAAG;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC;CAC7B,CAAC;AAEF,oBAAY,kBAAkB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAE3D,oBAAY,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,gDAAgD,kPACoL,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/object-store/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,YAAY,CAAC;AAE/C,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG;IAC1C,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAE,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,eAAO,MAAM,gDAAgD,kPACoL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/object-store/upload.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAuC,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAwClH;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB;iBAIlB,MAAM;aACV,YAAY,EAAE;MACrB,QAAQ,iBAAiB,EAAE,CA0G9B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM;iBAIJ,MAAM;aACV,YAAY,EAAE;MACrB,QAAQ,YAAY,EAAE,CASzB,CAAC"}
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/object-store/upload.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAuC,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAwClH;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,GAAU,0BAGxC;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,KAAG,OAAO,CAAC,iBAAiB,EAAE,CA0G9B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,MAAM,GAAU,0BAG1B;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,KAAG,OAAO,CAAC,YAAY,EAAE,CASzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/object-store/utils.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,0BAA0B,QAAa,QAAQ,IAAI,CAK/D,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/object-store/utils.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,0BAA0B,QAAa,OAAO,CAAC,IAAI,CAK/D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/permissions/permissions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,EACN,YAAY,EACZ,iBAAiB,EAClB,MAAM,SAAS,CAAC;AA4BjB,eAAO,MAAM,WAAW;;uBAxBU,gBAAgB,KAAG,QAAQ,iBAAiB,CAAC;uBAI7C,gBAAgB,KAAG,QAAQ,iBAAiB,CAAC;gCAIpC,yBAAyB,KAAG,QAAQ,IAAI,CAAC;+BAI1C,wBAAwB,KAAG,QAAQ,IAAI,CAAC;;;uBAIhD,gBAAgB,KAAG,QAAQ,iBAAiB,CAAC;uBAI7C,gBAAgB,KAAG,QAAQ,IAAI,CAAC;;CAejE,CAAC;AAEF,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,EACN,YAAY,EACb,CAAC"}
1
+ {"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/permissions/permissions.ts"],"names":[],"mappings":"AACA,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,EACN,YAAY,EACZ,iBAAiB,EAClB,MAAM,SAAS,CAAC;AA4BjB,eAAO,MAAM,WAAW;;uBAxBU,gBAAgB,KAAG,OAAO,CAAC,iBAAiB,CAAC;uBAI7C,gBAAgB,KAAG,OAAO,CAAC,iBAAiB,CAAC;gCAIpC,yBAAyB,KAAG,OAAO,CAAC,IAAI,CAAC;+BAI1C,wBAAwB,KAAG,OAAO,CAAC,IAAI,CAAC;;;uBAIhD,gBAAgB,KAAG,OAAO,CAAC,iBAAiB,CAAC;uBAI7C,gBAAgB,KAAG,OAAO,CAAC,IAAI,CAAC;;CAejE,CAAC;AAEF,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,EACN,YAAY,EACb,CAAC"}