@google-analytics/data 4.12.0 → 4.12.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # Changelog
2
2
 
3
+ ## [4.12.1](https://github.com/googleapis/google-cloud-node/compare/data-v4.12.0...data-v4.12.1) (2025-02-12)
4
+
5
+
6
+ ### Bug Fixes
7
+
8
+ * [Many APIs] finalize fixing typings for headers in generator ([#6011](https://github.com/googleapis/google-cloud-node/issues/6011)) ([ee865ff](https://github.com/googleapis/google-cloud-node/commit/ee865ff34a696fbd657e4cfb6cc4be2f6651f77a))
9
+
3
10
  ## [4.12.0](https://github.com/googleapis/google-cloud-node/compare/data-v4.11.0...data-v4.12.0) (2024-12-18)
4
11
 
5
12
 
@@ -1,4 +1,4 @@
1
- // Copyright 2024 Google LLC
1
+ // Copyright 2025 Google LLC
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,4 +1,4 @@
1
- // Copyright 2024 Google LLC
1
+ // Copyright 2025 Google LLC
2
2
  //
3
3
  // Licensed under the Apache License, Version 2.0 (the "License");
4
4
  // you may not use this file except in compliance with the License.
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2024 Google LLC
2
+ // Copyright 2025 Google LLC
3
3
  //
4
4
  // Licensed under the Apache License, Version 2.0 (the "License");
5
5
  // you may not use this file except in compliance with the License.
@@ -719,7 +719,7 @@ export declare class AlphaAnalyticsDataClient {
719
719
  listAudienceLists(request: protos.google.analytics.data.v1alpha.IListAudienceListsRequest, options: CallOptions, callback: PaginationCallback<protos.google.analytics.data.v1alpha.IListAudienceListsRequest, protos.google.analytics.data.v1alpha.IListAudienceListsResponse | null | undefined, protos.google.analytics.data.v1alpha.IAudienceList>): void;
720
720
  listAudienceLists(request: protos.google.analytics.data.v1alpha.IListAudienceListsRequest, callback: PaginationCallback<protos.google.analytics.data.v1alpha.IListAudienceListsRequest, protos.google.analytics.data.v1alpha.IListAudienceListsResponse | null | undefined, protos.google.analytics.data.v1alpha.IAudienceList>): void;
721
721
  /**
722
- * Equivalent to `method.name.toCamelCase()`, but returns a NodeJS Stream object.
722
+ * Equivalent to `listAudienceLists`, but returns a NodeJS Stream object.
723
723
  * @param {Object} request
724
724
  * The request object that will be sent.
725
725
  * @param {string} request.parent
@@ -833,7 +833,7 @@ export declare class AlphaAnalyticsDataClient {
833
833
  listRecurringAudienceLists(request: protos.google.analytics.data.v1alpha.IListRecurringAudienceListsRequest, options: CallOptions, callback: PaginationCallback<protos.google.analytics.data.v1alpha.IListRecurringAudienceListsRequest, protos.google.analytics.data.v1alpha.IListRecurringAudienceListsResponse | null | undefined, protos.google.analytics.data.v1alpha.IRecurringAudienceList>): void;
834
834
  listRecurringAudienceLists(request: protos.google.analytics.data.v1alpha.IListRecurringAudienceListsRequest, callback: PaginationCallback<protos.google.analytics.data.v1alpha.IListRecurringAudienceListsRequest, protos.google.analytics.data.v1alpha.IListRecurringAudienceListsResponse | null | undefined, protos.google.analytics.data.v1alpha.IRecurringAudienceList>): void;
835
835
  /**
836
- * Equivalent to `method.name.toCamelCase()`, but returns a NodeJS Stream object.
836
+ * Equivalent to `listRecurringAudienceLists`, but returns a NodeJS Stream object.
837
837
  * @param {Object} request
838
838
  * The request object that will be sent.
839
839
  * @param {string} request.parent
@@ -932,7 +932,7 @@ export declare class AlphaAnalyticsDataClient {
932
932
  listReportTasks(request: protos.google.analytics.data.v1alpha.IListReportTasksRequest, options: CallOptions, callback: PaginationCallback<protos.google.analytics.data.v1alpha.IListReportTasksRequest, protos.google.analytics.data.v1alpha.IListReportTasksResponse | null | undefined, protos.google.analytics.data.v1alpha.IReportTask>): void;
933
933
  listReportTasks(request: protos.google.analytics.data.v1alpha.IListReportTasksRequest, callback: PaginationCallback<protos.google.analytics.data.v1alpha.IListReportTasksRequest, protos.google.analytics.data.v1alpha.IListReportTasksResponse | null | undefined, protos.google.analytics.data.v1alpha.IReportTask>): void;
934
934
  /**
935
- * Equivalent to `method.name.toCamelCase()`, but returns a NodeJS Stream object.
935
+ * Equivalent to `listReportTasks`, but returns a NodeJS Stream object.
936
936
  * @param {Object} request
937
937
  * The request object that will be sent.
938
938
  * @param {string} request.parent
@@ -1012,7 +1012,7 @@ export declare class AlphaAnalyticsDataClient {
1012
1012
  * // doThingsWith(response)
1013
1013
  * ```
1014
1014
  */
1015
- getOperation(request: protos.google.longrunning.GetOperationRequest, options?: gax.CallOptions | Callback<protos.google.longrunning.Operation, protos.google.longrunning.GetOperationRequest, {} | null | undefined>, callback?: Callback<protos.google.longrunning.Operation, protos.google.longrunning.GetOperationRequest, {} | null | undefined>): Promise<[protos.google.longrunning.Operation]>;
1015
+ getOperation(request: protos.google.longrunning.GetOperationRequest, optionsOrCallback?: gax.CallOptions | Callback<protos.google.longrunning.Operation, protos.google.longrunning.GetOperationRequest, {} | null | undefined>, callback?: Callback<protos.google.longrunning.Operation, protos.google.longrunning.GetOperationRequest, {} | null | undefined>): Promise<[protos.google.longrunning.Operation]>;
1016
1016
  /**
1017
1017
  * Lists operations that match the specified filter in the request. If the
1018
1018
  * server doesn't support this method, it returns `UNIMPLEMENTED`. Returns an iterable object.
@@ -1075,7 +1075,7 @@ export declare class AlphaAnalyticsDataClient {
1075
1075
  * await client.cancelOperation({name: ''});
1076
1076
  * ```
1077
1077
  */
1078
- cancelOperation(request: protos.google.longrunning.CancelOperationRequest, options?: gax.CallOptions | Callback<protos.google.protobuf.Empty, protos.google.longrunning.CancelOperationRequest, {} | undefined | null>, callback?: Callback<protos.google.longrunning.CancelOperationRequest, protos.google.protobuf.Empty, {} | undefined | null>): Promise<protos.google.protobuf.Empty>;
1078
+ cancelOperation(request: protos.google.longrunning.CancelOperationRequest, optionsOrCallback?: gax.CallOptions | Callback<protos.google.longrunning.CancelOperationRequest, protos.google.protobuf.Empty, {} | undefined | null>, callback?: Callback<protos.google.longrunning.CancelOperationRequest, protos.google.protobuf.Empty, {} | undefined | null>): Promise<protos.google.protobuf.Empty>;
1079
1079
  /**
1080
1080
  * Deletes a long-running operation. This method indicates that the client is
1081
1081
  * no longer interested in the operation result. It does not cancel the
@@ -1101,7 +1101,7 @@ export declare class AlphaAnalyticsDataClient {
1101
1101
  * await client.deleteOperation({name: ''});
1102
1102
  * ```
1103
1103
  */
1104
- deleteOperation(request: protos.google.longrunning.DeleteOperationRequest, options?: gax.CallOptions | Callback<protos.google.protobuf.Empty, protos.google.longrunning.DeleteOperationRequest, {} | null | undefined>, callback?: Callback<protos.google.protobuf.Empty, protos.google.longrunning.DeleteOperationRequest, {} | null | undefined>): Promise<protos.google.protobuf.Empty>;
1104
+ deleteOperation(request: protos.google.longrunning.DeleteOperationRequest, optionsOrCallback?: gax.CallOptions | Callback<protos.google.protobuf.Empty, protos.google.longrunning.DeleteOperationRequest, {} | null | undefined>, callback?: Callback<protos.google.protobuf.Empty, protos.google.longrunning.DeleteOperationRequest, {} | null | undefined>): Promise<protos.google.protobuf.Empty>;
1105
1105
  /**
1106
1106
  * Return a fully-qualified audienceList resource name string.
1107
1107
  *
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2024 Google LLC
2
+ // Copyright 2025 Google LLC
3
3
  //
4
4
  // Licensed under the Apache License, Version 2.0 (the "License");
5
5
  // you may not use this file except in compliance with the License.
@@ -606,7 +606,7 @@ class AlphaAnalyticsDataClient {
606
606
  return this.innerApiCalls.listAudienceLists(request, options, callback);
607
607
  }
608
608
  /**
609
- * Equivalent to `method.name.toCamelCase()`, but returns a NodeJS Stream object.
609
+ * Equivalent to `listAudienceLists`, but returns a NodeJS Stream object.
610
610
  * @param {Object} request
611
611
  * The request object that will be sent.
612
612
  * @param {string} request.parent
@@ -718,7 +718,7 @@ class AlphaAnalyticsDataClient {
718
718
  return this.innerApiCalls.listRecurringAudienceLists(request, options, callback);
719
719
  }
720
720
  /**
721
- * Equivalent to `method.name.toCamelCase()`, but returns a NodeJS Stream object.
721
+ * Equivalent to `listRecurringAudienceLists`, but returns a NodeJS Stream object.
722
722
  * @param {Object} request
723
723
  * The request object that will be sent.
724
724
  * @param {string} request.parent
@@ -834,7 +834,7 @@ class AlphaAnalyticsDataClient {
834
834
  return this.innerApiCalls.listReportTasks(request, options, callback);
835
835
  }
836
836
  /**
837
- * Equivalent to `method.name.toCamelCase()`, but returns a NodeJS Stream object.
837
+ * Equivalent to `listReportTasks`, but returns a NodeJS Stream object.
838
838
  * @param {Object} request
839
839
  * The request object that will be sent.
840
840
  * @param {string} request.parent
@@ -942,7 +942,23 @@ class AlphaAnalyticsDataClient {
942
942
  * // doThingsWith(response)
943
943
  * ```
944
944
  */
945
- getOperation(request, options, callback) {
945
+ getOperation(request, optionsOrCallback, callback) {
946
+ var _a;
947
+ let options;
948
+ if (typeof optionsOrCallback === 'function' && callback === undefined) {
949
+ callback = optionsOrCallback;
950
+ options = {};
951
+ }
952
+ else {
953
+ options = optionsOrCallback;
954
+ }
955
+ options = options || {};
956
+ options.otherArgs = options.otherArgs || {};
957
+ options.otherArgs.headers = options.otherArgs.headers || {};
958
+ options.otherArgs.headers['x-goog-request-params'] =
959
+ this._gaxModule.routingHeader.fromParams({
960
+ name: (_a = request.name) !== null && _a !== void 0 ? _a : '',
961
+ });
946
962
  return this.operationsClient.getOperation(request, options, callback);
947
963
  }
948
964
  /**
@@ -976,6 +992,14 @@ class AlphaAnalyticsDataClient {
976
992
  * ```
977
993
  */
978
994
  listOperationsAsync(request, options) {
995
+ var _a;
996
+ options = options || {};
997
+ options.otherArgs = options.otherArgs || {};
998
+ options.otherArgs.headers = options.otherArgs.headers || {};
999
+ options.otherArgs.headers['x-goog-request-params'] =
1000
+ this._gaxModule.routingHeader.fromParams({
1001
+ name: (_a = request.name) !== null && _a !== void 0 ? _a : '',
1002
+ });
979
1003
  return this.operationsClient.listOperationsAsync(request, options);
980
1004
  }
981
1005
  /**
@@ -1009,7 +1033,23 @@ class AlphaAnalyticsDataClient {
1009
1033
  * await client.cancelOperation({name: ''});
1010
1034
  * ```
1011
1035
  */
1012
- cancelOperation(request, options, callback) {
1036
+ cancelOperation(request, optionsOrCallback, callback) {
1037
+ var _a;
1038
+ let options;
1039
+ if (typeof optionsOrCallback === 'function' && callback === undefined) {
1040
+ callback = optionsOrCallback;
1041
+ options = {};
1042
+ }
1043
+ else {
1044
+ options = optionsOrCallback;
1045
+ }
1046
+ options = options || {};
1047
+ options.otherArgs = options.otherArgs || {};
1048
+ options.otherArgs.headers = options.otherArgs.headers || {};
1049
+ options.otherArgs.headers['x-goog-request-params'] =
1050
+ this._gaxModule.routingHeader.fromParams({
1051
+ name: (_a = request.name) !== null && _a !== void 0 ? _a : '',
1052
+ });
1013
1053
  return this.operationsClient.cancelOperation(request, options, callback);
1014
1054
  }
1015
1055
  /**
@@ -1037,7 +1077,23 @@ class AlphaAnalyticsDataClient {
1037
1077
  * await client.deleteOperation({name: ''});
1038
1078
  * ```
1039
1079
  */
1040
- deleteOperation(request, options, callback) {
1080
+ deleteOperation(request, optionsOrCallback, callback) {
1081
+ var _a;
1082
+ let options;
1083
+ if (typeof optionsOrCallback === 'function' && callback === undefined) {
1084
+ callback = optionsOrCallback;
1085
+ options = {};
1086
+ }
1087
+ else {
1088
+ options = optionsOrCallback;
1089
+ }
1090
+ options = options || {};
1091
+ options.otherArgs = options.otherArgs || {};
1092
+ options.otherArgs.headers = options.otherArgs.headers || {};
1093
+ options.otherArgs.headers['x-goog-request-params'] =
1094
+ this._gaxModule.routingHeader.fromParams({
1095
+ name: (_a = request.name) !== null && _a !== void 0 ? _a : '',
1096
+ });
1041
1097
  return this.operationsClient.deleteOperation(request, options, callback);
1042
1098
  }
1043
1099
  // --------------------
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2024 Google LLC
2
+ // Copyright 2025 Google LLC
3
3
  //
4
4
  // Licensed under the Apache License, Version 2.0 (the "License");
5
5
  // you may not use this file except in compliance with the License.
@@ -762,7 +762,7 @@ export declare class BetaAnalyticsDataClient {
762
762
  listAudienceExports(request: protos.google.analytics.data.v1beta.IListAudienceExportsRequest, options: CallOptions, callback: PaginationCallback<protos.google.analytics.data.v1beta.IListAudienceExportsRequest, protos.google.analytics.data.v1beta.IListAudienceExportsResponse | null | undefined, protos.google.analytics.data.v1beta.IAudienceExport>): void;
763
763
  listAudienceExports(request: protos.google.analytics.data.v1beta.IListAudienceExportsRequest, callback: PaginationCallback<protos.google.analytics.data.v1beta.IListAudienceExportsRequest, protos.google.analytics.data.v1beta.IListAudienceExportsResponse | null | undefined, protos.google.analytics.data.v1beta.IAudienceExport>): void;
764
764
  /**
765
- * Equivalent to `method.name.toCamelCase()`, but returns a NodeJS Stream object.
765
+ * Equivalent to `listAudienceExports`, but returns a NodeJS Stream object.
766
766
  * @param {Object} request
767
767
  * The request object that will be sent.
768
768
  * @param {string} request.parent
@@ -854,7 +854,7 @@ export declare class BetaAnalyticsDataClient {
854
854
  * // doThingsWith(response)
855
855
  * ```
856
856
  */
857
- getOperation(request: protos.google.longrunning.GetOperationRequest, options?: gax.CallOptions | Callback<protos.google.longrunning.Operation, protos.google.longrunning.GetOperationRequest, {} | null | undefined>, callback?: Callback<protos.google.longrunning.Operation, protos.google.longrunning.GetOperationRequest, {} | null | undefined>): Promise<[protos.google.longrunning.Operation]>;
857
+ getOperation(request: protos.google.longrunning.GetOperationRequest, optionsOrCallback?: gax.CallOptions | Callback<protos.google.longrunning.Operation, protos.google.longrunning.GetOperationRequest, {} | null | undefined>, callback?: Callback<protos.google.longrunning.Operation, protos.google.longrunning.GetOperationRequest, {} | null | undefined>): Promise<[protos.google.longrunning.Operation]>;
858
858
  /**
859
859
  * Lists operations that match the specified filter in the request. If the
860
860
  * server doesn't support this method, it returns `UNIMPLEMENTED`. Returns an iterable object.
@@ -917,7 +917,7 @@ export declare class BetaAnalyticsDataClient {
917
917
  * await client.cancelOperation({name: ''});
918
918
  * ```
919
919
  */
920
- cancelOperation(request: protos.google.longrunning.CancelOperationRequest, options?: gax.CallOptions | Callback<protos.google.protobuf.Empty, protos.google.longrunning.CancelOperationRequest, {} | undefined | null>, callback?: Callback<protos.google.longrunning.CancelOperationRequest, protos.google.protobuf.Empty, {} | undefined | null>): Promise<protos.google.protobuf.Empty>;
920
+ cancelOperation(request: protos.google.longrunning.CancelOperationRequest, optionsOrCallback?: gax.CallOptions | Callback<protos.google.longrunning.CancelOperationRequest, protos.google.protobuf.Empty, {} | undefined | null>, callback?: Callback<protos.google.longrunning.CancelOperationRequest, protos.google.protobuf.Empty, {} | undefined | null>): Promise<protos.google.protobuf.Empty>;
921
921
  /**
922
922
  * Deletes a long-running operation. This method indicates that the client is
923
923
  * no longer interested in the operation result. It does not cancel the
@@ -943,7 +943,7 @@ export declare class BetaAnalyticsDataClient {
943
943
  * await client.deleteOperation({name: ''});
944
944
  * ```
945
945
  */
946
- deleteOperation(request: protos.google.longrunning.DeleteOperationRequest, options?: gax.CallOptions | Callback<protos.google.protobuf.Empty, protos.google.longrunning.DeleteOperationRequest, {} | null | undefined>, callback?: Callback<protos.google.protobuf.Empty, protos.google.longrunning.DeleteOperationRequest, {} | null | undefined>): Promise<protos.google.protobuf.Empty>;
946
+ deleteOperation(request: protos.google.longrunning.DeleteOperationRequest, optionsOrCallback?: gax.CallOptions | Callback<protos.google.protobuf.Empty, protos.google.longrunning.DeleteOperationRequest, {} | null | undefined>, callback?: Callback<protos.google.protobuf.Empty, protos.google.longrunning.DeleteOperationRequest, {} | null | undefined>): Promise<protos.google.protobuf.Empty>;
947
947
  /**
948
948
  * Return a fully-qualified audienceExport resource name string.
949
949
  *
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2024 Google LLC
2
+ // Copyright 2025 Google LLC
3
3
  //
4
4
  // Licensed under the Apache License, Version 2.0 (the "License");
5
5
  // you may not use this file except in compliance with the License.
@@ -554,7 +554,7 @@ class BetaAnalyticsDataClient {
554
554
  return this.innerApiCalls.listAudienceExports(request, options, callback);
555
555
  }
556
556
  /**
557
- * Equivalent to `method.name.toCamelCase()`, but returns a NodeJS Stream object.
557
+ * Equivalent to `listAudienceExports`, but returns a NodeJS Stream object.
558
558
  * @param {Object} request
559
559
  * The request object that will be sent.
560
560
  * @param {string} request.parent
@@ -674,7 +674,23 @@ class BetaAnalyticsDataClient {
674
674
  * // doThingsWith(response)
675
675
  * ```
676
676
  */
677
- getOperation(request, options, callback) {
677
+ getOperation(request, optionsOrCallback, callback) {
678
+ var _a;
679
+ let options;
680
+ if (typeof optionsOrCallback === 'function' && callback === undefined) {
681
+ callback = optionsOrCallback;
682
+ options = {};
683
+ }
684
+ else {
685
+ options = optionsOrCallback;
686
+ }
687
+ options = options || {};
688
+ options.otherArgs = options.otherArgs || {};
689
+ options.otherArgs.headers = options.otherArgs.headers || {};
690
+ options.otherArgs.headers['x-goog-request-params'] =
691
+ this._gaxModule.routingHeader.fromParams({
692
+ name: (_a = request.name) !== null && _a !== void 0 ? _a : '',
693
+ });
678
694
  return this.operationsClient.getOperation(request, options, callback);
679
695
  }
680
696
  /**
@@ -708,6 +724,14 @@ class BetaAnalyticsDataClient {
708
724
  * ```
709
725
  */
710
726
  listOperationsAsync(request, options) {
727
+ var _a;
728
+ options = options || {};
729
+ options.otherArgs = options.otherArgs || {};
730
+ options.otherArgs.headers = options.otherArgs.headers || {};
731
+ options.otherArgs.headers['x-goog-request-params'] =
732
+ this._gaxModule.routingHeader.fromParams({
733
+ name: (_a = request.name) !== null && _a !== void 0 ? _a : '',
734
+ });
711
735
  return this.operationsClient.listOperationsAsync(request, options);
712
736
  }
713
737
  /**
@@ -741,7 +765,23 @@ class BetaAnalyticsDataClient {
741
765
  * await client.cancelOperation({name: ''});
742
766
  * ```
743
767
  */
744
- cancelOperation(request, options, callback) {
768
+ cancelOperation(request, optionsOrCallback, callback) {
769
+ var _a;
770
+ let options;
771
+ if (typeof optionsOrCallback === 'function' && callback === undefined) {
772
+ callback = optionsOrCallback;
773
+ options = {};
774
+ }
775
+ else {
776
+ options = optionsOrCallback;
777
+ }
778
+ options = options || {};
779
+ options.otherArgs = options.otherArgs || {};
780
+ options.otherArgs.headers = options.otherArgs.headers || {};
781
+ options.otherArgs.headers['x-goog-request-params'] =
782
+ this._gaxModule.routingHeader.fromParams({
783
+ name: (_a = request.name) !== null && _a !== void 0 ? _a : '',
784
+ });
745
785
  return this.operationsClient.cancelOperation(request, options, callback);
746
786
  }
747
787
  /**
@@ -769,7 +809,23 @@ class BetaAnalyticsDataClient {
769
809
  * await client.deleteOperation({name: ''});
770
810
  * ```
771
811
  */
772
- deleteOperation(request, options, callback) {
812
+ deleteOperation(request, optionsOrCallback, callback) {
813
+ var _a;
814
+ let options;
815
+ if (typeof optionsOrCallback === 'function' && callback === undefined) {
816
+ callback = optionsOrCallback;
817
+ options = {};
818
+ }
819
+ else {
820
+ options = optionsOrCallback;
821
+ }
822
+ options = options || {};
823
+ options.otherArgs = options.otherArgs || {};
824
+ options.otherArgs.headers = options.otherArgs.headers || {};
825
+ options.otherArgs.headers['x-goog-request-params'] =
826
+ this._gaxModule.routingHeader.fromParams({
827
+ name: (_a = request.name) !== null && _a !== void 0 ? _a : '',
828
+ });
773
829
  return this.operationsClient.deleteOperation(request, options, callback);
774
830
  }
775
831
  // --------------------
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright 2024 Google LLC
2
+ // Copyright 2025 Google LLC
3
3
  //
4
4
  // Licensed under the Apache License, Version 2.0 (the "License");
5
5
  // you may not use this file except in compliance with the License.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@google-analytics/data",
3
- "version": "4.12.0",
3
+ "version": "4.12.1",
4
4
  "description": "Data client for Node.js",
5
5
  "repository": {
6
6
  "type": "git",
@@ -49,7 +49,7 @@
49
49
  },
50
50
  "devDependencies": {
51
51
  "@types/mocha": "^9.0.0",
52
- "@types/node": "^20.4.5",
52
+ "@types/node": "^22.0.0",
53
53
  "@types/sinon": "^17.0.0",
54
54
  "c8": "^9.0.0",
55
55
  "gapic-tools": "^0.4.0",