@genesislcap/foundation-comms 14.370.0 → 14.370.1-alpha-fa13546.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.
@@ -7,19 +7,20 @@
7
7
  * @remarks
8
8
  * For filtering REQUEST_SERVER resources. Maps concatenated criteria filters
9
9
  * from a grid to a request fields object. Date/datetime groovy expressions will
10
- * append `_FROM` and `_TO` onto field names appropriately
10
+ * append `_FROM` and `_TO` onto field names appropriately.
11
+ *
12
+ * Also supports direct comparison operators (<=, >=) with numeric timestamps,
13
+ * which are automatically converted to the appropriate REQUEST field format.
11
14
  *
12
15
  * eg: converts
13
16
  *
14
17
  * ```
15
18
  * foo == 'bar' &&
16
- * asd == 'zxc' &&
17
19
  * Expr.containsIgnoreCase(FIELD, 'abc') &&
18
- * Expr.dateIsToday(DATE) &&
19
20
  * Expr.dateTimeIsGreaterEqual(DATETIME, '20231110-03:23') &&
20
21
  * Expr.dateTimeIsLessEqual(DATETIME, '20231115-03:23') &&
21
- * Expr.dateIsGreaterEqual(DATEONLY, '20231110') &&
22
- * Expr.dateIsLessEqual(DATEONLY, '20231115')
22
+ * FIELD_DATETIME >= 1704067200000 &&
23
+ * FIELD_DATETIME <= 1704153600000
23
24
  * ```
24
25
  *
25
26
  * into
@@ -27,14 +28,11 @@
27
28
  * ```
28
29
  * {
29
30
  * foo: 'bar',
30
- * asd: 'zxc',
31
31
  * FIELD: '*abc*',
32
- * DATE_FROM: '20231110-00:00',
33
- * DATE_TO: '20231111-00:00',
34
32
  * DATETIME_FROM: '20231110-03:23',
35
33
  * DATETIME_TO: '20231115-03:23',
36
- * DATEONLY_FROM: '20231110',
37
- * DATEONLY_TO: '20231115',
34
+ * fieldDatetimeFrom: '20240101-00:00',
35
+ * fieldDatetimeTo: '20240102-00:00',
38
36
  * }
39
37
  * ```
40
38
  */
@@ -1 +1 @@
1
- {"version":3,"file":"criteriaFiltersToFields.d.ts","sourceRoot":"","sources":["../../../src/datasource/criteriaFiltersToFields.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkE/E"}
1
+ {"version":3,"file":"criteriaFiltersToFields.d.ts","sourceRoot":"","sources":["../../../src/datasource/criteriaFiltersToFields.ts"],"names":[],"mappings":"AAyGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkD/E"}
@@ -1,3 +1,100 @@
1
+ /**
2
+ * Formats timestamp to reqrep date format (yyyyMMdd) or datetime format (yyyyMMdd-HH:mm).
3
+ * @internal
4
+ */
5
+ function formatTimestampForReqRep(timestamp, isDate) {
6
+ const date = new Date(timestamp);
7
+ const year = date.getUTCFullYear();
8
+ const month = String(date.getUTCMonth() + 1).padStart(2, '0');
9
+ const day = String(date.getUTCDate()).padStart(2, '0');
10
+ if (isDate) {
11
+ return `${year}${month}${day}`;
12
+ }
13
+ const hours = String(date.getUTCHours()).padStart(2, '0');
14
+ const minutes = String(date.getUTCMinutes()).padStart(2, '0');
15
+ return `${year}${month}${day}-${hours}:${minutes}`;
16
+ }
17
+ /**
18
+ * Processes a Groovy expression and adds the result to reqFields.
19
+ * @internal
20
+ */
21
+ function processGroovyExpression(c, reqFields) {
22
+ const exprMatch = c.match(/Expr\.(\w+)\(/);
23
+ if (!exprMatch) {
24
+ return;
25
+ }
26
+ switch (exprMatch[1]) {
27
+ case 'dateIsToday': {
28
+ const fieldNameMatcher = /Expr\.dateIsToday\((\w+)\)/;
29
+ const match = c.match(fieldNameMatcher);
30
+ if (match) {
31
+ const [, fieldName] = match;
32
+ const date = new Date();
33
+ reqFields[`${fieldName}_FROM`] = `${date.toISOString().replace(/-/g, '').split('T')[0]}-00:00`;
34
+ date.setDate(date.getDate() + 1);
35
+ reqFields[`${fieldName}_TO`] = `${date.toISOString().replace(/-/g, '').split('T')[0]}-00:00`;
36
+ }
37
+ break;
38
+ }
39
+ case 'dateTimeIsGreaterEqual': {
40
+ const fieldNameValueMatcher = /Expr\.dateTimeIsGreaterEqual\((\w+), ?['"](.+)['"]\)/;
41
+ const match = c.match(fieldNameValueMatcher);
42
+ if (match) {
43
+ const [, fieldName, value] = match;
44
+ reqFields[`${fieldName}_FROM`] = value;
45
+ }
46
+ break;
47
+ }
48
+ case 'dateTimeIsLessEqual': {
49
+ const fieldNameValueMatcher = /Expr\.dateTimeIsLessEqual\((\w+), ?['"](.+)['"]\)/;
50
+ const match = c.match(fieldNameValueMatcher);
51
+ if (match) {
52
+ const [, fieldName, value] = match;
53
+ reqFields[`${fieldName}_TO`] = value;
54
+ }
55
+ break;
56
+ }
57
+ case 'dateIsGreaterEqual': {
58
+ const fieldNameValueMatcher = /Expr\.dateIsGreaterEqual\((\w+), ?['"](.+)['"]\)/;
59
+ const match = c.match(fieldNameValueMatcher);
60
+ if (match) {
61
+ const [, fieldName, value] = match;
62
+ reqFields[`${fieldName}_FROM`] = value;
63
+ }
64
+ break;
65
+ }
66
+ case 'dateIsLessEqual': {
67
+ const fieldNameValueMatcher = /Expr\.dateIsLessEqual\((\w+), ?['"](.+)['"]\)/;
68
+ const match = c.match(fieldNameValueMatcher);
69
+ if (match) {
70
+ const [, fieldName, value] = match;
71
+ reqFields[`${fieldName}_TO`] = value;
72
+ }
73
+ break;
74
+ }
75
+ case 'containsIgnoreCase': {
76
+ const fieldNameValueMatcher = /Expr\.containsIgnoreCase\((\w+), ?['"](.+)['"]\)/;
77
+ const match = c.match(fieldNameValueMatcher);
78
+ if (match) {
79
+ const [, fieldName, value] = match;
80
+ reqFields[fieldName] = `*${value}*`;
81
+ }
82
+ break;
83
+ }
84
+ }
85
+ }
86
+ /**
87
+ * Processes an equality expression and adds the result to reqFields.
88
+ * @internal
89
+ */
90
+ function processEqualityExpression(c, reqFields) {
91
+ const key = c.substr(0, c.indexOf('=')).trim().replace(/["']/g, '');
92
+ const val = c
93
+ .substr(c.lastIndexOf('=') + 1, c.length)
94
+ .trim()
95
+ .replace(/["']/g, '');
96
+ reqFields[key] = val;
97
+ }
1
98
  /**
2
99
  * Criteria filters to fields.
3
100
  *
@@ -7,19 +104,20 @@
7
104
  * @remarks
8
105
  * For filtering REQUEST_SERVER resources. Maps concatenated criteria filters
9
106
  * from a grid to a request fields object. Date/datetime groovy expressions will
10
- * append `_FROM` and `_TO` onto field names appropriately
107
+ * append `_FROM` and `_TO` onto field names appropriately.
108
+ *
109
+ * Also supports direct comparison operators (<=, >=) with numeric timestamps,
110
+ * which are automatically converted to the appropriate REQUEST field format.
11
111
  *
12
112
  * eg: converts
13
113
  *
14
114
  * ```
15
115
  * foo == 'bar' &&
16
- * asd == 'zxc' &&
17
116
  * Expr.containsIgnoreCase(FIELD, 'abc') &&
18
- * Expr.dateIsToday(DATE) &&
19
117
  * Expr.dateTimeIsGreaterEqual(DATETIME, '20231110-03:23') &&
20
118
  * Expr.dateTimeIsLessEqual(DATETIME, '20231115-03:23') &&
21
- * Expr.dateIsGreaterEqual(DATEONLY, '20231110') &&
22
- * Expr.dateIsLessEqual(DATEONLY, '20231115')
119
+ * FIELD_DATETIME >= 1704067200000 &&
120
+ * FIELD_DATETIME <= 1704153600000
23
121
  * ```
24
122
  *
25
123
  * into
@@ -27,77 +125,54 @@
27
125
  * ```
28
126
  * {
29
127
  * foo: 'bar',
30
- * asd: 'zxc',
31
128
  * FIELD: '*abc*',
32
- * DATE_FROM: '20231110-00:00',
33
- * DATE_TO: '20231111-00:00',
34
129
  * DATETIME_FROM: '20231110-03:23',
35
130
  * DATETIME_TO: '20231115-03:23',
36
- * DATEONLY_FROM: '20231110',
37
- * DATEONLY_TO: '20231115',
131
+ * fieldDatetimeFrom: '20240101-00:00',
132
+ * fieldDatetimeTo: '20240102-00:00',
38
133
  * }
39
134
  * ```
40
135
  */
41
136
  export function criteriaFiltersToFields(filters) {
137
+ if (!filters) {
138
+ return {};
139
+ }
42
140
  const criteria = filters.split('&&').map((s) => s.trim());
43
141
  const reqFields = {};
44
142
  criteria.forEach((c) => {
143
+ if (!c) {
144
+ return;
145
+ }
146
+ // Handle Groovy expressions (Expr.*)
45
147
  if (c.startsWith('Expr')) {
46
- switch (c.match(/Expr\.(\w+)\(/)[1]) {
47
- case 'dateIsToday':
48
- {
49
- const fieldNameMatcher = /Expr\.dateIsToday\((\w+)\)/;
50
- const [, fieldName] = c.match(fieldNameMatcher);
51
- const date = new Date();
52
- reqFields[`${fieldName}_FROM`] = `${date.toISOString().replace(/-/g, '').split('T')[0]}-00:00`;
53
- date.setDate(date.getDate() + 1);
54
- reqFields[`${fieldName}_TO`] = `${date.toISOString().replace(/-/g, '').split('T')[0]}-00:00`;
55
- }
56
- break;
57
- case 'dateTimeIsGreaterEqual':
58
- {
59
- const fieldNameValueMatcher = /Expr\.dateTimeIsGreaterEqual\((\w+), ?['"](.+)['"]\)/;
60
- const [, fieldName, value] = c.match(fieldNameValueMatcher);
61
- reqFields[`${fieldName}_FROM`] = value;
62
- }
63
- break;
64
- case 'dateTimeIsLessEqual':
65
- {
66
- const fieldNameValueMatcher = /Expr\.dateTimeIsLessEqual\((\w+), ?['"](.+)['"]\)/;
67
- const [, fieldName, value] = c.match(fieldNameValueMatcher);
68
- reqFields[`${fieldName}_TO`] = value;
69
- }
70
- break;
71
- case 'dateIsGreaterEqual':
72
- {
73
- const fieldNameValueMatcher = /Expr\.dateIsGreaterEqual\((\w+), ?['"](.+)['"]\)/;
74
- const [, fieldName, value] = c.match(fieldNameValueMatcher);
75
- reqFields[`${fieldName}_FROM`] = value;
76
- }
77
- break;
78
- case 'dateIsLessEqual':
79
- {
80
- const fieldNameValueMatcher = /Expr\.dateIsLessEqual\((\w+), ?['"](.+)['"]\)/;
81
- const [, fieldName, value] = c.match(fieldNameValueMatcher);
82
- reqFields[`${fieldName}_TO`] = value;
83
- }
84
- break;
85
- case 'containsIgnoreCase':
86
- {
87
- const fieldNameValueMatcher = /Expr\.containsIgnoreCase\((\w+), ?['"](.+)['"]\)/;
88
- const [, fieldName, value] = c.match(fieldNameValueMatcher);
89
- reqFields[fieldName] = `*${value}*`;
90
- }
91
- break;
148
+ processGroovyExpression(c, reqFields);
149
+ }
150
+ // Handle direct comparison operators with numeric timestamps (FIELD >= timestamp, FIELD <= timestamp)
151
+ else if (/[A-Z_]+\s*(>=|<=)\s*\d+/.test(c)) {
152
+ // Parse FIELD >= timestamp
153
+ const greaterEqualMatch = c.match(/([A-Z_]+)\s*>=\s*(\d+)/);
154
+ if (greaterEqualMatch) {
155
+ const [, fieldName, timestampStr] = greaterEqualMatch;
156
+ const timestamp = parseInt(timestampStr, 10);
157
+ // Determine format: if field contains DATE but not DATETIME, use date format
158
+ const upperName = fieldName.toUpperCase();
159
+ const isDate = upperName.includes('DATE') && !upperName.includes('DATETIME');
160
+ reqFields[`${fieldName}_FROM`] = formatTimestampForReqRep(timestamp, isDate);
161
+ }
162
+ // Parse FIELD <= timestamp
163
+ const lessEqualMatch = c.match(/([A-Z_]+)\s*<=\s*(\d+)/);
164
+ if (lessEqualMatch) {
165
+ const [, fieldName, timestampStr] = lessEqualMatch;
166
+ const timestamp = parseInt(timestampStr, 10);
167
+ // Determine format: if field contains DATE but not DATETIME, use date format
168
+ const upperName = fieldName.toUpperCase();
169
+ const isDate = upperName.includes('DATE') && !upperName.includes('DATETIME');
170
+ reqFields[`${fieldName}_TO`] = formatTimestampForReqRep(timestamp, isDate);
92
171
  }
93
172
  }
173
+ // Handle equality expressions (FIELD == 'value' or FIELD = 'value')
94
174
  else {
95
- const key = c.substr(0, c.indexOf('=')).trim().replace(/["']/g, '');
96
- const val = c
97
- .substr(c.lastIndexOf('=') + 1, c.length)
98
- .trim()
99
- .replace(/["']/g, '');
100
- reqFields[key] = val;
175
+ processEqualityExpression(c, reqFields);
101
176
  }
102
177
  });
103
178
  return reqFields;
@@ -4797,7 +4797,7 @@
4797
4797
  {
4798
4798
  "kind": "Function",
4799
4799
  "canonicalReference": "@genesislcap/foundation-comms!criteriaFiltersToFields:function(1)",
4800
- "docComment": "/**\n * Criteria filters to fields.\n *\n * @remarks\n *\n * For filtering REQUEST_SERVER resources. Maps concatenated criteria filters from a grid to a request fields object. Date/datetime groovy expressions will append `_FROM` and `_TO` onto field names appropriately\n *\n * eg: converts\n * ```\n * foo == 'bar' &&\n * asd == 'zxc' &&\n * Expr.containsIgnoreCase(FIELD, 'abc') &&\n * Expr.dateIsToday(DATE) &&\n * Expr.dateTimeIsGreaterEqual(DATETIME, '20231110-03:23') &&\n * Expr.dateTimeIsLessEqual(DATETIME, '20231115-03:23') &&\n * Expr.dateIsGreaterEqual(DATEONLY, '20231110') &&\n * Expr.dateIsLessEqual(DATEONLY, '20231115')\n * ```\n *\n * into\n * ```\n * {\n * foo: 'bar',\n * asd: 'zxc',\n * FIELD: '*abc*',\n * DATE_FROM: '20231110-00:00',\n * DATE_TO: '20231111-00:00',\n * DATETIME_FROM: '20231110-03:23',\n * DATETIME_TO: '20231115-03:23',\n * DATEONLY_FROM: '20231110',\n * DATEONLY_TO: '20231115',\n * }\n * ```\n *\n * @param filters - Concatenated criteria filters.\n *\n * @public\n */\n",
4800
+ "docComment": "/**\n * Criteria filters to fields.\n *\n * @remarks\n *\n * For filtering REQUEST_SERVER resources. Maps concatenated criteria filters from a grid to a request fields object. Date/datetime groovy expressions will append `_FROM` and `_TO` onto field names appropriately.\n *\n * Also supports direct comparison operators (<=, >=) with numeric timestamps, which are automatically converted to the appropriate REQUEST field format.\n *\n * eg: converts\n * ```\n * foo == 'bar' &&\n * Expr.containsIgnoreCase(FIELD, 'abc') &&\n * Expr.dateTimeIsGreaterEqual(DATETIME, '20231110-03:23') &&\n * Expr.dateTimeIsLessEqual(DATETIME, '20231115-03:23') &&\n * FIELD_DATETIME >= 1704067200000 &&\n * FIELD_DATETIME <= 1704153600000\n * ```\n *\n * into\n * ```\n * {\n * foo: 'bar',\n * FIELD: '*abc*',\n * DATETIME_FROM: '20231110-03:23',\n * DATETIME_TO: '20231115-03:23',\n * fieldDatetimeFrom: '20240101-00:00',\n * fieldDatetimeTo: '20240102-00:00',\n * }\n * ```\n *\n * @param filters - Concatenated criteria filters.\n *\n * @public\n */\n",
4801
4801
  "excerptTokens": [
4802
4802
  {
4803
4803
  "kind": "Content",
@@ -853,19 +853,20 @@ export declare const credentialSeparator = ":";
853
853
  * @remarks
854
854
  * For filtering REQUEST_SERVER resources. Maps concatenated criteria filters
855
855
  * from a grid to a request fields object. Date/datetime groovy expressions will
856
- * append `_FROM` and `_TO` onto field names appropriately
856
+ * append `_FROM` and `_TO` onto field names appropriately.
857
+ *
858
+ * Also supports direct comparison operators (<=, >=) with numeric timestamps,
859
+ * which are automatically converted to the appropriate REQUEST field format.
857
860
  *
858
861
  * eg: converts
859
862
  *
860
863
  * ```
861
864
  * foo == 'bar' &&
862
- * asd == 'zxc' &&
863
865
  * Expr.containsIgnoreCase(FIELD, 'abc') &&
864
- * Expr.dateIsToday(DATE) &&
865
866
  * Expr.dateTimeIsGreaterEqual(DATETIME, '20231110-03:23') &&
866
867
  * Expr.dateTimeIsLessEqual(DATETIME, '20231115-03:23') &&
867
- * Expr.dateIsGreaterEqual(DATEONLY, '20231110') &&
868
- * Expr.dateIsLessEqual(DATEONLY, '20231115')
868
+ * FIELD_DATETIME >= 1704067200000 &&
869
+ * FIELD_DATETIME <= 1704153600000
869
870
  * ```
870
871
  *
871
872
  * into
@@ -873,14 +874,11 @@ export declare const credentialSeparator = ":";
873
874
  * ```
874
875
  * {
875
876
  * foo: 'bar',
876
- * asd: 'zxc',
877
877
  * FIELD: '*abc*',
878
- * DATE_FROM: '20231110-00:00',
879
- * DATE_TO: '20231111-00:00',
880
878
  * DATETIME_FROM: '20231110-03:23',
881
879
  * DATETIME_TO: '20231115-03:23',
882
- * DATEONLY_FROM: '20231110',
883
- * DATEONLY_TO: '20231115',
880
+ * fieldDatetimeFrom: '20240101-00:00',
881
+ * fieldDatetimeTo: '20240102-00:00',
884
882
  * }
885
883
  * ```
886
884
  */
@@ -54,33 +54,30 @@ Record&lt;string, string&gt;
54
54
 
55
55
  ## Remarks
56
56
 
57
- For filtering REQUEST\_SERVER resources. Maps concatenated criteria filters from a grid to a request fields object. Date/datetime groovy expressions will append `_FROM` and `_TO` onto field names appropriately
57
+ For filtering REQUEST\_SERVER resources. Maps concatenated criteria filters from a grid to a request fields object. Date/datetime groovy expressions will append `_FROM` and `_TO` onto field names appropriately.
58
+
59
+ Also supports direct comparison operators (<!-- -->&lt;<!-- -->=, &gt;<!-- -->=) with numeric timestamps, which are automatically converted to the appropriate REQUEST field format.
58
60
 
59
61
  eg: converts
60
62
 
61
63
  ```
62
64
  foo == 'bar' &&
63
- asd == 'zxc' &&
64
65
  Expr.containsIgnoreCase(FIELD, 'abc') &&
65
- Expr.dateIsToday(DATE) &&
66
66
  Expr.dateTimeIsGreaterEqual(DATETIME, '20231110-03:23') &&
67
67
  Expr.dateTimeIsLessEqual(DATETIME, '20231115-03:23') &&
68
- Expr.dateIsGreaterEqual(DATEONLY, '20231110') &&
69
- Expr.dateIsLessEqual(DATEONLY, '20231115')
68
+ FIELD_DATETIME >= 1704067200000 &&
69
+ FIELD_DATETIME <= 1704153600000
70
70
  ```
71
71
  into
72
72
 
73
73
  ```
74
74
  {
75
75
  foo: 'bar',
76
- asd: 'zxc',
77
76
  FIELD: '*abc*',
78
- DATE_FROM: '20231110-00:00',
79
- DATE_TO: '20231111-00:00',
80
77
  DATETIME_FROM: '20231110-03:23',
81
78
  DATETIME_TO: '20231115-03:23',
82
- DATEONLY_FROM: '20231110',
83
- DATEONLY_TO: '20231115',
79
+ fieldDatetimeFrom: '20240101-00:00',
80
+ fieldDatetimeTo: '20240102-00:00',
84
81
  }
85
82
  ```
86
83
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@genesislcap/foundation-comms",
3
3
  "description": "Genesis Foundation UI Comms",
4
- "version": "14.370.0",
4
+ "version": "14.370.1-alpha-fa13546.0",
5
5
  "sideEffects": false,
6
6
  "license": "SEE LICENSE IN license.txt",
7
7
  "main": "dist/esm/index.js",
@@ -75,23 +75,23 @@
75
75
  }
76
76
  },
77
77
  "devDependencies": {
78
- "@genesislcap/foundation-testing": "14.370.0",
79
- "@genesislcap/genx": "14.370.0",
80
- "@genesislcap/rollup-builder": "14.370.0",
81
- "@genesislcap/ts-builder": "14.370.0",
82
- "@genesislcap/uvu-playwright-builder": "14.370.0",
83
- "@genesislcap/vite-builder": "14.370.0",
84
- "@genesislcap/webpack-builder": "14.370.0",
78
+ "@genesislcap/foundation-testing": "14.370.1-alpha-fa13546.0",
79
+ "@genesislcap/genx": "14.370.1-alpha-fa13546.0",
80
+ "@genesislcap/rollup-builder": "14.370.1-alpha-fa13546.0",
81
+ "@genesislcap/ts-builder": "14.370.1-alpha-fa13546.0",
82
+ "@genesislcap/uvu-playwright-builder": "14.370.1-alpha-fa13546.0",
83
+ "@genesislcap/vite-builder": "14.370.1-alpha-fa13546.0",
84
+ "@genesislcap/webpack-builder": "14.370.1-alpha-fa13546.0",
85
85
  "@types/js-cookie": "^3.0.2",
86
86
  "@types/json-schema": "^7.0.11",
87
87
  "@types/webappsec-credential-management": "^0.6.2",
88
88
  "sinon": "^17.0.1"
89
89
  },
90
90
  "dependencies": {
91
- "@genesislcap/foundation-broadcast-channel": "14.370.0",
92
- "@genesislcap/foundation-logger": "14.370.0",
93
- "@genesislcap/foundation-user": "14.370.0",
94
- "@genesislcap/foundation-utils": "14.370.0",
91
+ "@genesislcap/foundation-broadcast-channel": "14.370.1-alpha-fa13546.0",
92
+ "@genesislcap/foundation-logger": "14.370.1-alpha-fa13546.0",
93
+ "@genesislcap/foundation-user": "14.370.1-alpha-fa13546.0",
94
+ "@genesislcap/foundation-utils": "14.370.1-alpha-fa13546.0",
95
95
  "@microsoft/fast-element": "1.14.0",
96
96
  "@microsoft/fast-foundation": "2.49.6",
97
97
  "analytics": "0.8.16",
@@ -110,5 +110,5 @@
110
110
  "publishConfig": {
111
111
  "access": "public"
112
112
  },
113
- "gitHead": "85079a1941403b9daee95a1cca7fc14bc5929435"
113
+ "gitHead": "563c0837d18d73bd4bad45e74e6809ab1922514c"
114
114
  }