@azure/monitor-query-metrics 1.0.0

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 (216) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +243 -0
  3. package/dist/browser/api/index.d.ts +4 -0
  4. package/dist/browser/api/index.d.ts.map +1 -0
  5. package/dist/browser/api/index.js +5 -0
  6. package/dist/browser/api/index.js.map +1 -0
  7. package/dist/browser/api/metricsContext.d.ts +15 -0
  8. package/dist/browser/api/metricsContext.d.ts.map +1 -0
  9. package/dist/browser/api/metricsContext.js +38 -0
  10. package/dist/browser/api/metricsContext.js.map +1 -0
  11. package/dist/browser/api/operations.d.ts +9 -0
  12. package/dist/browser/api/operations.d.ts.map +1 -0
  13. package/dist/browser/api/operations.js +49 -0
  14. package/dist/browser/api/operations.js.map +1 -0
  15. package/dist/browser/api/options.d.ts +57 -0
  16. package/dist/browser/api/options.d.ts.map +1 -0
  17. package/dist/browser/api/options.js +4 -0
  18. package/dist/browser/api/options.js.map +1 -0
  19. package/dist/browser/index.d.ts +5 -0
  20. package/dist/browser/index.d.ts.map +1 -0
  21. package/dist/browser/index.js +6 -0
  22. package/dist/browser/index.js.map +1 -0
  23. package/dist/browser/internalMetricsClient.d.ts +15 -0
  24. package/dist/browser/internalMetricsClient.d.ts.map +1 -0
  25. package/dist/browser/internalMetricsClient.js +23 -0
  26. package/dist/browser/internalMetricsClient.js.map +1 -0
  27. package/dist/browser/logger.d.ts +2 -0
  28. package/dist/browser/logger.d.ts.map +1 -0
  29. package/dist/browser/logger.js +5 -0
  30. package/dist/browser/logger.js.map +1 -0
  31. package/dist/browser/metricsClient.d.ts +28 -0
  32. package/dist/browser/metricsClient.d.ts.map +1 -0
  33. package/dist/browser/metricsClient.js +48 -0
  34. package/dist/browser/metricsClient.js.map +1 -0
  35. package/dist/browser/models/index.d.ts +2 -0
  36. package/dist/browser/models/index.d.ts.map +1 -0
  37. package/dist/browser/models/index.js +4 -0
  38. package/dist/browser/models/index.js.map +1 -0
  39. package/dist/browser/models/models.d.ts +141 -0
  40. package/dist/browser/models/models.d.ts.map +1 -0
  41. package/dist/browser/models/models.js +136 -0
  42. package/dist/browser/models/models.js.map +1 -0
  43. package/dist/browser/models.d.ts +167 -0
  44. package/dist/browser/models.d.ts.map +1 -0
  45. package/dist/browser/models.js +46 -0
  46. package/dist/browser/models.js.map +1 -0
  47. package/dist/browser/package.json +3 -0
  48. package/dist/browser/static-helpers/urlTemplate.d.ts +5 -0
  49. package/dist/browser/static-helpers/urlTemplate.d.ts.map +1 -0
  50. package/dist/browser/static-helpers/urlTemplate.js +186 -0
  51. package/dist/browser/static-helpers/urlTemplate.js.map +1 -0
  52. package/dist/browser/utils.d.ts +13 -0
  53. package/dist/browser/utils.d.ts.map +1 -0
  54. package/dist/browser/utils.js +54 -0
  55. package/dist/browser/utils.js.map +1 -0
  56. package/dist/commonjs/api/index.d.ts +4 -0
  57. package/dist/commonjs/api/index.d.ts.map +1 -0
  58. package/dist/commonjs/api/index.js +10 -0
  59. package/dist/commonjs/api/index.js.map +1 -0
  60. package/dist/commonjs/api/metricsContext.d.ts +15 -0
  61. package/dist/commonjs/api/metricsContext.d.ts.map +1 -0
  62. package/dist/commonjs/api/metricsContext.js +41 -0
  63. package/dist/commonjs/api/metricsContext.js.map +1 -0
  64. package/dist/commonjs/api/operations.d.ts +9 -0
  65. package/dist/commonjs/api/operations.d.ts.map +1 -0
  66. package/dist/commonjs/api/operations.js +54 -0
  67. package/dist/commonjs/api/operations.js.map +1 -0
  68. package/dist/commonjs/api/options.d.ts +57 -0
  69. package/dist/commonjs/api/options.d.ts.map +1 -0
  70. package/dist/commonjs/api/options.js +5 -0
  71. package/dist/commonjs/api/options.js.map +1 -0
  72. package/dist/commonjs/index.d.ts +5 -0
  73. package/dist/commonjs/index.d.ts.map +1 -0
  74. package/dist/commonjs/index.js +13 -0
  75. package/dist/commonjs/index.js.map +1 -0
  76. package/dist/commonjs/internalMetricsClient.d.ts +15 -0
  77. package/dist/commonjs/internalMetricsClient.d.ts.map +1 -0
  78. package/dist/commonjs/internalMetricsClient.js +27 -0
  79. package/dist/commonjs/internalMetricsClient.js.map +1 -0
  80. package/dist/commonjs/logger.d.ts +2 -0
  81. package/dist/commonjs/logger.d.ts.map +1 -0
  82. package/dist/commonjs/logger.js +8 -0
  83. package/dist/commonjs/logger.js.map +1 -0
  84. package/dist/commonjs/metricsClient.d.ts +28 -0
  85. package/dist/commonjs/metricsClient.d.ts.map +1 -0
  86. package/dist/commonjs/metricsClient.js +52 -0
  87. package/dist/commonjs/metricsClient.js.map +1 -0
  88. package/dist/commonjs/models/index.d.ts +2 -0
  89. package/dist/commonjs/models/index.d.ts.map +1 -0
  90. package/dist/commonjs/models/index.js +8 -0
  91. package/dist/commonjs/models/index.js.map +1 -0
  92. package/dist/commonjs/models/models.d.ts +141 -0
  93. package/dist/commonjs/models/models.d.ts.map +1 -0
  94. package/dist/commonjs/models/models.js +157 -0
  95. package/dist/commonjs/models/models.js.map +1 -0
  96. package/dist/commonjs/models.d.ts +167 -0
  97. package/dist/commonjs/models.d.ts.map +1 -0
  98. package/dist/commonjs/models.js +49 -0
  99. package/dist/commonjs/models.js.map +1 -0
  100. package/dist/commonjs/package.json +3 -0
  101. package/dist/commonjs/static-helpers/urlTemplate.d.ts +5 -0
  102. package/dist/commonjs/static-helpers/urlTemplate.d.ts.map +1 -0
  103. package/dist/commonjs/static-helpers/urlTemplate.js +189 -0
  104. package/dist/commonjs/static-helpers/urlTemplate.js.map +1 -0
  105. package/dist/commonjs/tsdoc-metadata.json +11 -0
  106. package/dist/commonjs/utils.d.ts +13 -0
  107. package/dist/commonjs/utils.d.ts.map +1 -0
  108. package/dist/commonjs/utils.js +60 -0
  109. package/dist/commonjs/utils.js.map +1 -0
  110. package/dist/esm/api/index.d.ts +4 -0
  111. package/dist/esm/api/index.d.ts.map +1 -0
  112. package/dist/esm/api/index.js +5 -0
  113. package/dist/esm/api/index.js.map +1 -0
  114. package/dist/esm/api/metricsContext.d.ts +15 -0
  115. package/dist/esm/api/metricsContext.d.ts.map +1 -0
  116. package/dist/esm/api/metricsContext.js +38 -0
  117. package/dist/esm/api/metricsContext.js.map +1 -0
  118. package/dist/esm/api/operations.d.ts +9 -0
  119. package/dist/esm/api/operations.d.ts.map +1 -0
  120. package/dist/esm/api/operations.js +49 -0
  121. package/dist/esm/api/operations.js.map +1 -0
  122. package/dist/esm/api/options.d.ts +57 -0
  123. package/dist/esm/api/options.d.ts.map +1 -0
  124. package/dist/esm/api/options.js +4 -0
  125. package/dist/esm/api/options.js.map +1 -0
  126. package/dist/esm/index.d.ts +5 -0
  127. package/dist/esm/index.d.ts.map +1 -0
  128. package/dist/esm/index.js +6 -0
  129. package/dist/esm/index.js.map +1 -0
  130. package/dist/esm/internalMetricsClient.d.ts +15 -0
  131. package/dist/esm/internalMetricsClient.d.ts.map +1 -0
  132. package/dist/esm/internalMetricsClient.js +23 -0
  133. package/dist/esm/internalMetricsClient.js.map +1 -0
  134. package/dist/esm/logger.d.ts +2 -0
  135. package/dist/esm/logger.d.ts.map +1 -0
  136. package/dist/esm/logger.js +5 -0
  137. package/dist/esm/logger.js.map +1 -0
  138. package/dist/esm/metricsClient.d.ts +28 -0
  139. package/dist/esm/metricsClient.d.ts.map +1 -0
  140. package/dist/esm/metricsClient.js +48 -0
  141. package/dist/esm/metricsClient.js.map +1 -0
  142. package/dist/esm/models/index.d.ts +2 -0
  143. package/dist/esm/models/index.d.ts.map +1 -0
  144. package/dist/esm/models/index.js +4 -0
  145. package/dist/esm/models/index.js.map +1 -0
  146. package/dist/esm/models/models.d.ts +141 -0
  147. package/dist/esm/models/models.d.ts.map +1 -0
  148. package/dist/esm/models/models.js +136 -0
  149. package/dist/esm/models/models.js.map +1 -0
  150. package/dist/esm/models.d.ts +167 -0
  151. package/dist/esm/models.d.ts.map +1 -0
  152. package/dist/esm/models.js +46 -0
  153. package/dist/esm/models.js.map +1 -0
  154. package/dist/esm/package.json +3 -0
  155. package/dist/esm/static-helpers/urlTemplate.d.ts +5 -0
  156. package/dist/esm/static-helpers/urlTemplate.d.ts.map +1 -0
  157. package/dist/esm/static-helpers/urlTemplate.js +186 -0
  158. package/dist/esm/static-helpers/urlTemplate.js.map +1 -0
  159. package/dist/esm/utils.d.ts +13 -0
  160. package/dist/esm/utils.d.ts.map +1 -0
  161. package/dist/esm/utils.js +54 -0
  162. package/dist/esm/utils.js.map +1 -0
  163. package/dist/react-native/api/index.d.ts +4 -0
  164. package/dist/react-native/api/index.d.ts.map +1 -0
  165. package/dist/react-native/api/index.js +5 -0
  166. package/dist/react-native/api/index.js.map +1 -0
  167. package/dist/react-native/api/metricsContext.d.ts +15 -0
  168. package/dist/react-native/api/metricsContext.d.ts.map +1 -0
  169. package/dist/react-native/api/metricsContext.js +38 -0
  170. package/dist/react-native/api/metricsContext.js.map +1 -0
  171. package/dist/react-native/api/operations.d.ts +9 -0
  172. package/dist/react-native/api/operations.d.ts.map +1 -0
  173. package/dist/react-native/api/operations.js +49 -0
  174. package/dist/react-native/api/operations.js.map +1 -0
  175. package/dist/react-native/api/options.d.ts +57 -0
  176. package/dist/react-native/api/options.d.ts.map +1 -0
  177. package/dist/react-native/api/options.js +4 -0
  178. package/dist/react-native/api/options.js.map +1 -0
  179. package/dist/react-native/index.d.ts +5 -0
  180. package/dist/react-native/index.d.ts.map +1 -0
  181. package/dist/react-native/index.js +6 -0
  182. package/dist/react-native/index.js.map +1 -0
  183. package/dist/react-native/internalMetricsClient.d.ts +15 -0
  184. package/dist/react-native/internalMetricsClient.d.ts.map +1 -0
  185. package/dist/react-native/internalMetricsClient.js +23 -0
  186. package/dist/react-native/internalMetricsClient.js.map +1 -0
  187. package/dist/react-native/logger.d.ts +2 -0
  188. package/dist/react-native/logger.d.ts.map +1 -0
  189. package/dist/react-native/logger.js +5 -0
  190. package/dist/react-native/logger.js.map +1 -0
  191. package/dist/react-native/metricsClient.d.ts +28 -0
  192. package/dist/react-native/metricsClient.d.ts.map +1 -0
  193. package/dist/react-native/metricsClient.js +48 -0
  194. package/dist/react-native/metricsClient.js.map +1 -0
  195. package/dist/react-native/models/index.d.ts +2 -0
  196. package/dist/react-native/models/index.d.ts.map +1 -0
  197. package/dist/react-native/models/index.js +4 -0
  198. package/dist/react-native/models/index.js.map +1 -0
  199. package/dist/react-native/models/models.d.ts +141 -0
  200. package/dist/react-native/models/models.d.ts.map +1 -0
  201. package/dist/react-native/models/models.js +136 -0
  202. package/dist/react-native/models/models.js.map +1 -0
  203. package/dist/react-native/models.d.ts +167 -0
  204. package/dist/react-native/models.d.ts.map +1 -0
  205. package/dist/react-native/models.js +46 -0
  206. package/dist/react-native/models.js.map +1 -0
  207. package/dist/react-native/package.json +3 -0
  208. package/dist/react-native/static-helpers/urlTemplate.d.ts +5 -0
  209. package/dist/react-native/static-helpers/urlTemplate.d.ts.map +1 -0
  210. package/dist/react-native/static-helpers/urlTemplate.js +186 -0
  211. package/dist/react-native/static-helpers/urlTemplate.js.map +1 -0
  212. package/dist/react-native/utils.d.ts +13 -0
  213. package/dist/react-native/utils.d.ts.map +1 -0
  214. package/dist/react-native/utils.js +54 -0
  215. package/dist/react-native/utils.js.map +1 -0
  216. package/package.json +130 -0
@@ -0,0 +1,186 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ // ---------------------
4
+ // helpers
5
+ // ---------------------
6
+ function encodeComponent(val, reserved, op) {
7
+ return (reserved ?? op === "+") || op === "#"
8
+ ? encodeReservedComponent(val)
9
+ : encodeRFC3986URIComponent(val);
10
+ }
11
+ function encodeReservedComponent(str) {
12
+ return str
13
+ .split(/(%[0-9A-Fa-f]{2})/g)
14
+ .map((part) => (!/%[0-9A-Fa-f]/.test(part) ? encodeURI(part) : part))
15
+ .join("");
16
+ }
17
+ function encodeRFC3986URIComponent(str) {
18
+ return encodeURIComponent(str).replace(/[!'()*]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);
19
+ }
20
+ function isDefined(val) {
21
+ return val !== undefined && val !== null;
22
+ }
23
+ function getNamedAndIfEmpty(op) {
24
+ return [!!op && [";", "?", "&"].includes(op), !!op && ["?", "&"].includes(op) ? "=" : ""];
25
+ }
26
+ function getFirstOrSep(op, isFirst = false) {
27
+ if (isFirst) {
28
+ return !op || op === "+" ? "" : op;
29
+ }
30
+ else if (!op || op === "+" || op === "#") {
31
+ return ",";
32
+ }
33
+ else if (op === "?") {
34
+ return "&";
35
+ }
36
+ else {
37
+ return op;
38
+ }
39
+ }
40
+ function getExpandedValue(option) {
41
+ let isFirst = option.isFirst;
42
+ const { op, varName, varValue: value, reserved } = option;
43
+ const vals = [];
44
+ const [named, ifEmpty] = getNamedAndIfEmpty(op);
45
+ if (Array.isArray(value)) {
46
+ for (const val of value.filter(isDefined)) {
47
+ // prepare the following parts: separator, varName, value
48
+ vals.push(`${getFirstOrSep(op, isFirst)}`);
49
+ if (named && varName) {
50
+ vals.push(`${encodeURIComponent(varName)}`);
51
+ if (val === "") {
52
+ vals.push(ifEmpty);
53
+ }
54
+ else {
55
+ vals.push("=");
56
+ }
57
+ }
58
+ vals.push(encodeComponent(val, reserved, op));
59
+ isFirst = false;
60
+ }
61
+ }
62
+ else if (typeof value === "object") {
63
+ for (const key of Object.keys(value)) {
64
+ const val = value[key];
65
+ if (!isDefined(val)) {
66
+ continue;
67
+ }
68
+ // prepare the following parts: separator, key, value
69
+ vals.push(`${getFirstOrSep(op, isFirst)}`);
70
+ if (key) {
71
+ vals.push(`${encodeURIComponent(key)}`);
72
+ if (named && val === "") {
73
+ vals.push(ifEmpty);
74
+ }
75
+ else {
76
+ vals.push("=");
77
+ }
78
+ }
79
+ vals.push(encodeComponent(val, reserved, op));
80
+ isFirst = false;
81
+ }
82
+ }
83
+ return vals.join("");
84
+ }
85
+ function getNonExpandedValue(option) {
86
+ const { op, varName, varValue: value, isFirst, reserved } = option;
87
+ const vals = [];
88
+ const first = getFirstOrSep(op, isFirst);
89
+ const [named, ifEmpty] = getNamedAndIfEmpty(op);
90
+ if (named && varName) {
91
+ vals.push(encodeComponent(varName, reserved, op));
92
+ if (value === "") {
93
+ if (!ifEmpty) {
94
+ vals.push(ifEmpty);
95
+ }
96
+ return !vals.join("") ? undefined : `${first}${vals.join("")}`;
97
+ }
98
+ vals.push("=");
99
+ }
100
+ const items = [];
101
+ if (Array.isArray(value)) {
102
+ for (const val of value.filter(isDefined)) {
103
+ items.push(encodeComponent(val, reserved, op));
104
+ }
105
+ }
106
+ else if (typeof value === "object") {
107
+ for (const key of Object.keys(value)) {
108
+ if (!isDefined(value[key])) {
109
+ continue;
110
+ }
111
+ items.push(encodeRFC3986URIComponent(key));
112
+ items.push(encodeComponent(value[key], reserved, op));
113
+ }
114
+ }
115
+ vals.push(items.join(","));
116
+ return !vals.join(",") ? undefined : `${first}${vals.join("")}`;
117
+ }
118
+ function getVarValue(option) {
119
+ const { op, varName, modifier, isFirst, reserved, varValue: value } = option;
120
+ if (!isDefined(value)) {
121
+ return undefined;
122
+ }
123
+ else if (["string", "number", "boolean"].includes(typeof value)) {
124
+ let val = value.toString();
125
+ const [named, ifEmpty] = getNamedAndIfEmpty(op);
126
+ const vals = [getFirstOrSep(op, isFirst)];
127
+ if (named && varName) {
128
+ // No need to encode varName considering it is already encoded
129
+ vals.push(varName);
130
+ if (val === "") {
131
+ vals.push(ifEmpty);
132
+ }
133
+ else {
134
+ vals.push("=");
135
+ }
136
+ }
137
+ if (modifier && modifier !== "*") {
138
+ val = val.substring(0, parseInt(modifier, 10));
139
+ }
140
+ vals.push(encodeComponent(val, reserved, op));
141
+ return vals.join("");
142
+ }
143
+ else if (modifier === "*") {
144
+ return getExpandedValue(option);
145
+ }
146
+ else {
147
+ return getNonExpandedValue(option);
148
+ }
149
+ }
150
+ // ---------------------------------------------------------------------------------------------------
151
+ // This is an implementation of RFC 6570 URI Template: https://datatracker.ietf.org/doc/html/rfc6570.
152
+ // ---------------------------------------------------------------------------------------------------
153
+ export function expandUrlTemplate(template, context, option) {
154
+ return template.replace(/\{([^{}]+)\}|([^{}]+)/g, (_, expr, text) => {
155
+ if (!expr) {
156
+ return encodeReservedComponent(text);
157
+ }
158
+ let op;
159
+ let expressionToParse = expr;
160
+ if (["+", "#", ".", "/", ";", "?", "&"].includes(expressionToParse[0])) {
161
+ op = expressionToParse[0];
162
+ expressionToParse = expressionToParse.slice(1);
163
+ }
164
+ const varList = expressionToParse.split(/,/g);
165
+ const result = [];
166
+ for (const varSpec of varList) {
167
+ const varMatch = /([^:*]*)(?::(\d+)|(\*))?/.exec(varSpec);
168
+ if (!varMatch || !varMatch[1]) {
169
+ continue;
170
+ }
171
+ const varValue = getVarValue({
172
+ isFirst: result.length === 0,
173
+ op,
174
+ varValue: context[varMatch[1]],
175
+ varName: varMatch[1],
176
+ modifier: varMatch[2] || varMatch[3],
177
+ reserved: option?.allowReserved,
178
+ });
179
+ if (varValue) {
180
+ result.push(varValue);
181
+ }
182
+ }
183
+ return result.join("");
184
+ });
185
+ }
186
+ //# sourceMappingURL=urlTemplate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"urlTemplate.js","sourceRoot":"","sources":["../../../src/static-helpers/urlTemplate.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// ---------------------\n// interfaces\n// ---------------------\ninterface ValueOptions {\n isFirst: boolean; // is first value in the expression\n op?: string; // operator\n varValue?: any; // variable value\n varName?: string; // variable name\n modifier?: string; // modifier e.g *\n reserved?: boolean; // if true we'll keep reserved words with not encoding\n}\n\nexport interface UrlTemplateOptions {\n // if set to true, reserved characters will not be encoded\n allowReserved?: boolean;\n}\n\n// ---------------------\n// helpers\n// ---------------------\nfunction encodeComponent(val: string, reserved?: boolean, op?: string): string {\n return (reserved ?? op === \"+\") || op === \"#\"\n ? encodeReservedComponent(val)\n : encodeRFC3986URIComponent(val);\n}\n\nfunction encodeReservedComponent(str: string): string {\n return str\n .split(/(%[0-9A-Fa-f]{2})/g)\n .map((part) => (!/%[0-9A-Fa-f]/.test(part) ? encodeURI(part) : part))\n .join(\"\");\n}\n\nfunction encodeRFC3986URIComponent(str: string): string {\n return encodeURIComponent(str).replace(\n /[!'()*]/g,\n (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`,\n );\n}\n\nfunction isDefined(val: any): boolean {\n return val !== undefined && val !== null;\n}\n\nfunction getNamedAndIfEmpty(op?: string): [boolean, string] {\n return [!!op && [\";\", \"?\", \"&\"].includes(op), !!op && [\"?\", \"&\"].includes(op) ? \"=\" : \"\"];\n}\n\nfunction getFirstOrSep(op?: string, isFirst = false): string {\n if (isFirst) {\n return !op || op === \"+\" ? \"\" : op;\n } else if (!op || op === \"+\" || op === \"#\") {\n return \",\";\n } else if (op === \"?\") {\n return \"&\";\n } else {\n return op;\n }\n}\n\nfunction getExpandedValue(option: ValueOptions): string {\n let isFirst = option.isFirst;\n const { op, varName, varValue: value, reserved } = option;\n const vals: string[] = [];\n const [named, ifEmpty] = getNamedAndIfEmpty(op);\n\n if (Array.isArray(value)) {\n for (const val of value.filter(isDefined)) {\n // prepare the following parts: separator, varName, value\n vals.push(`${getFirstOrSep(op, isFirst)}`);\n if (named && varName) {\n vals.push(`${encodeURIComponent(varName)}`);\n if (val === \"\") {\n vals.push(ifEmpty);\n } else {\n vals.push(\"=\");\n }\n }\n vals.push(encodeComponent(val, reserved, op));\n isFirst = false;\n }\n } else if (typeof value === \"object\") {\n for (const key of Object.keys(value)) {\n const val = value[key];\n if (!isDefined(val)) {\n continue;\n }\n // prepare the following parts: separator, key, value\n vals.push(`${getFirstOrSep(op, isFirst)}`);\n if (key) {\n vals.push(`${encodeURIComponent(key)}`);\n if (named && val === \"\") {\n vals.push(ifEmpty);\n } else {\n vals.push(\"=\");\n }\n }\n vals.push(encodeComponent(val, reserved, op));\n isFirst = false;\n }\n }\n return vals.join(\"\");\n}\n\nfunction getNonExpandedValue(option: ValueOptions): string | undefined {\n const { op, varName, varValue: value, isFirst, reserved } = option;\n const vals: string[] = [];\n const first = getFirstOrSep(op, isFirst);\n const [named, ifEmpty] = getNamedAndIfEmpty(op);\n if (named && varName) {\n vals.push(encodeComponent(varName, reserved, op));\n if (value === \"\") {\n if (!ifEmpty) {\n vals.push(ifEmpty);\n }\n return !vals.join(\"\") ? undefined : `${first}${vals.join(\"\")}`;\n }\n vals.push(\"=\");\n }\n\n const items = [];\n if (Array.isArray(value)) {\n for (const val of value.filter(isDefined)) {\n items.push(encodeComponent(val, reserved, op));\n }\n } else if (typeof value === \"object\") {\n for (const key of Object.keys(value)) {\n if (!isDefined(value[key])) {\n continue;\n }\n items.push(encodeRFC3986URIComponent(key));\n items.push(encodeComponent(value[key], reserved, op));\n }\n }\n vals.push(items.join(\",\"));\n return !vals.join(\",\") ? undefined : `${first}${vals.join(\"\")}`;\n}\n\nfunction getVarValue(option: ValueOptions): string | undefined {\n const { op, varName, modifier, isFirst, reserved, varValue: value } = option;\n\n if (!isDefined(value)) {\n return undefined;\n } else if ([\"string\", \"number\", \"boolean\"].includes(typeof value)) {\n let val = value.toString();\n const [named, ifEmpty] = getNamedAndIfEmpty(op);\n const vals: string[] = [getFirstOrSep(op, isFirst)];\n if (named && varName) {\n // No need to encode varName considering it is already encoded\n vals.push(varName);\n if (val === \"\") {\n vals.push(ifEmpty);\n } else {\n vals.push(\"=\");\n }\n }\n if (modifier && modifier !== \"*\") {\n val = val.substring(0, parseInt(modifier, 10));\n }\n vals.push(encodeComponent(val, reserved, op));\n return vals.join(\"\");\n } else if (modifier === \"*\") {\n return getExpandedValue(option);\n } else {\n return getNonExpandedValue(option);\n }\n}\n\n// ---------------------------------------------------------------------------------------------------\n// This is an implementation of RFC 6570 URI Template: https://datatracker.ietf.org/doc/html/rfc6570.\n// ---------------------------------------------------------------------------------------------------\nexport function expandUrlTemplate(\n template: string,\n context: Record<string, any>,\n option?: UrlTemplateOptions,\n): string {\n return template.replace(/\\{([^{}]+)\\}|([^{}]+)/g, (_, expr, text) => {\n if (!expr) {\n return encodeReservedComponent(text);\n }\n let op;\n let expressionToParse = expr;\n if ([\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"].includes(expressionToParse[0])) {\n op = expressionToParse[0];\n expressionToParse = expressionToParse.slice(1);\n }\n const varList = expressionToParse.split(/,/g);\n const result = [];\n for (const varSpec of varList) {\n const varMatch = /([^:*]*)(?::(\\d+)|(\\*))?/.exec(varSpec);\n if (!varMatch || !varMatch[1]) {\n continue;\n }\n const varValue = getVarValue({\n isFirst: result.length === 0,\n op,\n varValue: context[varMatch[1]],\n varName: varMatch[1],\n modifier: varMatch[2] || varMatch[3],\n reserved: option?.allowReserved,\n });\n if (varValue) {\n result.push(varValue);\n }\n }\n return result.join(\"\");\n });\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import type { QueryResourcesOptionalParams } from "./api/options.js";
2
+ import type { MetricsQueryResourcesOptions, MetricsQueryResult } from "./models.js";
3
+ import type { MetricResultsResponseValuesItem } from "./models/models.js";
4
+ export declare const getSubscriptionFromResourceId: (resourceId: string) => string;
5
+ /**
6
+ * Helper function to convert MetricsQueryResourcesOptions to the internal format
7
+ */
8
+ export declare function mapToInternalQueryOptions(options?: MetricsQueryResourcesOptions): QueryResourcesOptionalParams;
9
+ /**
10
+ * Helper function to create MetricsQueryResult from MetricResultsResponseValuesItem
11
+ */
12
+ export declare function createMetricsQueryResult(item: MetricResultsResponseValuesItem): MetricsQueryResult;
13
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EACV,4BAA4B,EAC5B,kBAAkB,EAEnB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAU,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAElF,eAAO,MAAM,6BAA6B,GAAa,YAAY,MAAM,KAAG,MAI3E,CAAC;AASF;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,4BAAiC,GACzC,4BAA4B,CAS9B;AAYD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,+BAA+B,GACpC,kBAAkB,CAepB"}
@@ -0,0 +1,54 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ export const getSubscriptionFromResourceId = function (resourceId) {
4
+ const startPos = resourceId.indexOf("subscriptions/") + 14;
5
+ const subscriptionId = resourceId.substring(startPos, resourceId.indexOf("/", startPos));
6
+ return subscriptionId;
7
+ };
8
+ /**
9
+ * Helper function to convert Date objects to ISO string format
10
+ */
11
+ function dateToISOString(date) {
12
+ return date.toISOString();
13
+ }
14
+ /**
15
+ * Helper function to convert MetricsQueryResourcesOptions to the internal format
16
+ */
17
+ export function mapToInternalQueryOptions(options = {}) {
18
+ if (!options) {
19
+ return {};
20
+ }
21
+ return {
22
+ ...options,
23
+ startTime: options.startTime ? dateToISOString(options.startTime) : undefined,
24
+ endTime: options.endTime ? dateToISOString(options.endTime) : undefined,
25
+ };
26
+ }
27
+ /**
28
+ * Helper function to reconstruct QueryTimeInterval from start/end times
29
+ */
30
+ function reconstructTimeInterval(startTime, endTime) {
31
+ return {
32
+ startTime: new Date(startTime),
33
+ endTime: new Date(endTime),
34
+ };
35
+ }
36
+ /**
37
+ * Helper function to create MetricsQueryResult from MetricResultsResponseValuesItem
38
+ */
39
+ export function createMetricsQueryResult(item) {
40
+ const timespan = reconstructTimeInterval(item.startTime, item.endTime);
41
+ return {
42
+ cost: undefined, // Not available in the new API
43
+ granularity: item.interval,
44
+ metrics: item.metrics,
45
+ namespace: item.namespace,
46
+ resourceId: item.resourceId,
47
+ resourceRegion: item.resourceRegion,
48
+ timespan,
49
+ getMetricByName(metricName) {
50
+ return this.metrics.find((metric) => metric.name === metricName);
51
+ },
52
+ };
53
+ }
54
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAUlC,MAAM,CAAC,MAAM,6BAA6B,GAAG,UAAU,UAAkB;IACvE,MAAM,QAAQ,GAAW,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;IACnE,MAAM,cAAc,GAAW,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjG,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF;;GAEG;AACH,SAAS,eAAe,CAAC,IAAU;IACjC,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAAwC,EAAE;IAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO;QACL,GAAG,OAAO;QACV,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QAC7E,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;KACxE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,SAAiB,EAAE,OAAe;IACjE,OAAO;QACL,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC;QAC9B,OAAO,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC;KAC3B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAqC;IAErC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAEvE,OAAO;QACL,IAAI,EAAE,SAAS,EAAE,+BAA+B;QAChD,WAAW,EAAE,IAAI,CAAC,QAAQ;QAC1B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,QAAQ;QACR,eAAe,CAAC,UAAkB;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;QACnE,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { QueryResourcesOptionalParams } from \"./api/options.js\";\nimport type {\n MetricsQueryResourcesOptions,\n MetricsQueryResult,\n QueryTimeInterval,\n} from \"./models.js\";\nimport type { Metric, MetricResultsResponseValuesItem } from \"./models/models.js\";\n\nexport const getSubscriptionFromResourceId = function (resourceId: string): string {\n const startPos: number = resourceId.indexOf(\"subscriptions/\") + 14;\n const subscriptionId: string = resourceId.substring(startPos, resourceId.indexOf(\"/\", startPos));\n return subscriptionId;\n};\n\n/**\n * Helper function to convert Date objects to ISO string format\n */\nfunction dateToISOString(date: Date): string {\n return date.toISOString();\n}\n\n/**\n * Helper function to convert MetricsQueryResourcesOptions to the internal format\n */\nexport function mapToInternalQueryOptions(\n options: MetricsQueryResourcesOptions = {},\n): QueryResourcesOptionalParams {\n if (!options) {\n return {};\n }\n return {\n ...options,\n startTime: options.startTime ? dateToISOString(options.startTime) : undefined,\n endTime: options.endTime ? dateToISOString(options.endTime) : undefined,\n };\n}\n\n/**\n * Helper function to reconstruct QueryTimeInterval from start/end times\n */\nfunction reconstructTimeInterval(startTime: string, endTime: string): QueryTimeInterval {\n return {\n startTime: new Date(startTime),\n endTime: new Date(endTime),\n };\n}\n\n/**\n * Helper function to create MetricsQueryResult from MetricResultsResponseValuesItem\n */\nexport function createMetricsQueryResult(\n item: MetricResultsResponseValuesItem,\n): MetricsQueryResult {\n const timespan = reconstructTimeInterval(item.startTime, item.endTime);\n\n return {\n cost: undefined, // Not available in the new API\n granularity: item.interval,\n metrics: item.metrics,\n namespace: item.namespace,\n resourceId: item.resourceId,\n resourceRegion: item.resourceRegion,\n timespan,\n getMetricByName(metricName: string): Metric | undefined {\n return this.metrics.find((metric) => metric.name === metricName);\n },\n };\n}\n"]}
package/package.json ADDED
@@ -0,0 +1,130 @@
1
+ {
2
+ "name": "@azure/monitor-query-metrics",
3
+ "version": "1.0.0",
4
+ "description": "An isomorphic client library for querying Azure Monitor's Metrics data sources.",
5
+ "sdk-type": "client",
6
+ "main": "./dist/commonjs/index.js",
7
+ "module": "./dist/esm/index.js",
8
+ "browser": "./dist/browser/index.js",
9
+ "types": "./dist/commonjs/index.d.ts",
10
+ "scripts": {
11
+ "build": "npm run clean && dev-tool run build-package && dev-tool run extract-api",
12
+ "build:samples": "dev-tool samples publish --force",
13
+ "check-format": "dev-tool run vendored prettier --list-different --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"*.{js,json}\"",
14
+ "clean": "dev-tool run vendored rimraf --glob dist dist-* temp types *.tgz *.log coverage coverage-browser",
15
+ "execute:samples": "echo Obsolete",
16
+ "extract-api": "dev-tool run build-package && dev-tool run extract-api",
17
+ "format": "dev-tool run vendored prettier --write --config ../../../.prettierrc.json --ignore-path ../../../.prettierignore \"src/**/*.ts\" \"test/**/*.ts\" \"samples-dev/**/*.ts\" \"*.{js,json}\"",
18
+ "lint": "eslint package.json src test",
19
+ "lint:fix": "eslint package.json src test --fix --fix-type [problem,suggestion]",
20
+ "pack": "npm pack 2>&1",
21
+ "test": "npm run test:node && npm run test:browser",
22
+ "test:browser": "npm run clean && dev-tool run build-package && dev-tool run build-test && dev-tool run test:vitest --browser",
23
+ "test:node": "dev-tool run test:vitest",
24
+ "test:node:esm": "dev-tool run test:vitest --esm",
25
+ "test:node:live": "dev-tool run test:vitest -- -c vitest.int.config.ts",
26
+ "update-snippets": "dev-tool run update-snippets"
27
+ },
28
+ "files": [
29
+ "dist/",
30
+ "README.md",
31
+ "LICENSE"
32
+ ],
33
+ "repository": "github:Azure/azure-sdk-for-js",
34
+ "engines": {
35
+ "node": ">=20.0.0"
36
+ },
37
+ "keywords": [
38
+ "azure",
39
+ "cloud",
40
+ "typescript"
41
+ ],
42
+ "author": "Microsoft Corporation",
43
+ "license": "MIT",
44
+ "bugs": {
45
+ "url": "https://github.com/Azure/azure-sdk-for-js/issues"
46
+ },
47
+ "homepage": "https://github.com/Azure/azure-sdk-for-js/blob/main/sdk/monitor/monitor-query-metrics/README.md",
48
+ "sideEffects": false,
49
+ "prettier": "@azure/eslint-plugin-azure-sdk/prettier.json",
50
+ "dependencies": {
51
+ "@azure/core-auth": "^1.9.0",
52
+ "@azure-rest/core-client": "^2.5.0",
53
+ "@azure/core-rest-pipeline": "^1.19.0",
54
+ "@azure/core-tracing": "^1.2.0",
55
+ "@azure/logger": "^1.1.4",
56
+ "tslib": "^2.8.1"
57
+ },
58
+ "devDependencies": {
59
+ "@azure-tools/test-credential": "^2.0.0",
60
+ "@azure-tools/test-recorder": "^4.1.0",
61
+ "@azure-tools/test-utils-vitest": "^1.0.0",
62
+ "@azure/abort-controller": "^2.0.0",
63
+ "@azure/dev-tool": "^1.0.0",
64
+ "@azure/eslint-plugin-azure-sdk": "^3.0.0",
65
+ "@azure/identity": "^4.6.0",
66
+ "@azure/monitor-opentelemetry-exporter": "1.0.0-beta.32",
67
+ "@opentelemetry/api": "^1.9.0",
68
+ "@opentelemetry/sdk-trace-base": "^1.30.1",
69
+ "@opentelemetry/sdk-trace-node": "^1.30.1",
70
+ "@types/node": "^20.0.0",
71
+ "@vitest/browser": "^3.0.9",
72
+ "@vitest/coverage-istanbul": "^3.0.9",
73
+ "dotenv": "^16.0.0",
74
+ "eslint": "^9.9.0",
75
+ "playwright": "^1.50.1",
76
+ "typescript": "~5.8.2",
77
+ "vitest": "^3.0.9"
78
+ },
79
+ "//sampleConfiguration": {
80
+ "skipFolder": false,
81
+ "productName": "Monitor Query Metrics",
82
+ "productSlugs": [
83
+ "azure",
84
+ "azure-monitor"
85
+ ],
86
+ "apiRefLink": "https://learn.microsoft.com/javascript/api/",
87
+ "requiredResources": {
88
+ "Azure Monitor": "https://learn.microsoft.com/azure/azure-monitor/"
89
+ }
90
+ },
91
+ "type": "module",
92
+ "tshy": {
93
+ "project": "../../../tsconfig.src.build.json",
94
+ "exports": {
95
+ "./package.json": "./package.json",
96
+ ".": "./src/index.ts"
97
+ },
98
+ "dialects": [
99
+ "esm",
100
+ "commonjs"
101
+ ],
102
+ "esmDialects": [
103
+ "browser",
104
+ "react-native"
105
+ ],
106
+ "selfLink": false
107
+ },
108
+ "exports": {
109
+ "./package.json": "./package.json",
110
+ ".": {
111
+ "browser": {
112
+ "types": "./dist/browser/index.d.ts",
113
+ "default": "./dist/browser/index.js"
114
+ },
115
+ "react-native": {
116
+ "types": "./dist/react-native/index.d.ts",
117
+ "default": "./dist/react-native/index.js"
118
+ },
119
+ "import": {
120
+ "types": "./dist/esm/index.d.ts",
121
+ "default": "./dist/esm/index.js"
122
+ },
123
+ "require": {
124
+ "types": "./dist/commonjs/index.d.ts",
125
+ "default": "./dist/commonjs/index.js"
126
+ }
127
+ }
128
+ },
129
+ "react-native": "./dist/react-native/index.js"
130
+ }