@adobe/exc-app 1.0.3-beta → 1.0.4

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.
@@ -122,6 +122,10 @@ export interface RuntimeConfiguration {
122
122
  * Base URL
123
123
  */
124
124
  baseUrl: string;
125
+ /**
126
+ * Environment specific CDN string.
127
+ */
128
+ cdn: string;
125
129
  /**
126
130
  * List all properties changed in this configuration compared to the previous one sent
127
131
  */
package/appapi.d.ts CHANGED
@@ -74,6 +74,7 @@ export declare enum AppIds {
74
74
  MARKETO_ENGAGE = "marketo",
75
75
  OFFERS = "offers",
76
76
  PEOPLE = "people",
77
+ PERMISSIONS = "permissionsUI",
77
78
  PLACES_SERVICE = "places",
78
79
  PRIMETIME = "primetime",
79
80
  PRIVACY_UI = "privacyui",
package/appapi.js CHANGED
@@ -80,6 +80,7 @@ var AppIds;
80
80
  AppIds["MARKETO_ENGAGE"] = "marketo";
81
81
  AppIds["OFFERS"] = "offers";
82
82
  AppIds["PEOPLE"] = "people";
83
+ AppIds["PERMISSIONS"] = "permissionsUI";
83
84
  AppIds["PLACES_SERVICE"] = "places";
84
85
  AppIds["PRIMETIME"] = "primetime";
85
86
  AppIds["PRIVACY_UI"] = "privacyui";
package/appapi.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"appapi.js","sourceRoot":"","sources":["appapi.ts"],"names":[],"mappings":";AAAA;;;;;;;;;4EAS4E;;;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,yCAAqC;AAiCrC,0DAA0D;AAC1D,IAAY,MA8CX;AA9CD,WAAY,MAAM;IAChB,yBAAe,CAAA;IACf,wCAA8B,CAAA;IAC9B,oDAA0C,CAAA;IAC1C,iDAAuC,CAAA;IACvC,uCAA6B,CAAA;IAC7B,iCAAuB,CAAA;IACvB,2BAAiB,CAAA;IACjB,oCAA0B,CAAA;IAC1B,8CAAoC,CAAA;IACpC,6BAAmB,CAAA;IACnB,0BAAgB,CAAA;IAChB,yCAA+B,CAAA;IAC/B,0CAAgC,CAAA;IAChC,gEAAsD,CAAA;IACtD,0DAAgD,CAAA;IAChD,kDAAwC,CAAA;IACxC,kDAAwC,CAAA;IACxC,sCAA4B,CAAA;IAC5B,+BAAqB,CAAA;IACrB,sCAA4B,CAAA;IAC5B,oDAA0C,CAAA;IAC1C,kDAAwC,CAAA;IACxC,4DAAkD,CAAA;IAClD,gDAAsC,CAAA;IACtC,sDAA4C,CAAA;IAC5C,+BAAqB,CAAA;IACrB,wCAA8B,CAAA;IAC9B,4CAAkC,CAAA;IAClC,8CAAoC,CAAA;IACpC,wCAA8B,CAAA;IAC9B,kCAAwB,CAAA;IACxB,sCAA4B,CAAA;IAC5B,oCAA0B,CAAA;IAC1B,2BAAiB,CAAA;IACjB,2BAAiB,CAAA;IACjB,mCAAyB,CAAA;IACzB,iCAAuB,CAAA;IACvB,kCAAwB,CAAA;IACxB,0CAAgC,CAAA;IAChC,6CAAmC,CAAA;IACnC,qCAA2B,CAAA;IAC3B,wDAA8C,CAAA;IAC9C,wCAA8B,CAAA;IAC9B,2BAAiB,CAAA;IACjB,+BAAqB,CAAA;AACvB,CAAC,EA9CW,MAAM,GAAN,cAAM,KAAN,cAAM,QA8CjB;AAWD,MAAM,MAAM,GAAW;IACrB,GAAG,EAAE,MAAM,CAAC,EAAE;QACZ,OAAO,gBAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;CACF,CAAC;AAEF,kBAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"appapi.js","sourceRoot":"","sources":["appapi.ts"],"names":[],"mappings":";AAAA;;;;;;;;;4EAS4E;;;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,yCAAqC;AAiCrC,0DAA0D;AAC1D,IAAY,MA+CX;AA/CD,WAAY,MAAM;IAChB,yBAAe,CAAA;IACf,wCAA8B,CAAA;IAC9B,oDAA0C,CAAA;IAC1C,iDAAuC,CAAA;IACvC,uCAA6B,CAAA;IAC7B,iCAAuB,CAAA;IACvB,2BAAiB,CAAA;IACjB,oCAA0B,CAAA;IAC1B,8CAAoC,CAAA;IACpC,6BAAmB,CAAA;IACnB,0BAAgB,CAAA;IAChB,yCAA+B,CAAA;IAC/B,0CAAgC,CAAA;IAChC,gEAAsD,CAAA;IACtD,0DAAgD,CAAA;IAChD,kDAAwC,CAAA;IACxC,kDAAwC,CAAA;IACxC,sCAA4B,CAAA;IAC5B,+BAAqB,CAAA;IACrB,sCAA4B,CAAA;IAC5B,oDAA0C,CAAA;IAC1C,kDAAwC,CAAA;IACxC,4DAAkD,CAAA;IAClD,gDAAsC,CAAA;IACtC,sDAA4C,CAAA;IAC5C,+BAAqB,CAAA;IACrB,wCAA8B,CAAA;IAC9B,4CAAkC,CAAA;IAClC,8CAAoC,CAAA;IACpC,wCAA8B,CAAA;IAC9B,kCAAwB,CAAA;IACxB,sCAA4B,CAAA;IAC5B,oCAA0B,CAAA;IAC1B,2BAAiB,CAAA;IACjB,2BAAiB,CAAA;IACjB,uCAA6B,CAAA;IAC7B,mCAAyB,CAAA;IACzB,iCAAuB,CAAA;IACvB,kCAAwB,CAAA;IACxB,0CAAgC,CAAA;IAChC,6CAAmC,CAAA;IACnC,qCAA2B,CAAA;IAC3B,wDAA8C,CAAA;IAC9C,wCAA8B,CAAA;IAC9B,2BAAiB,CAAA;IACjB,+BAAqB,CAAA;AACvB,CAAC,EA/CW,MAAM,GAAN,cAAM,KAAN,cAAM,QA+CjB;AAWD,MAAM,MAAM,GAAW;IACrB,GAAG,EAAE,MAAM,CAAC,EAAE;QACZ,OAAO,gBAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;CACF,CAAC;AAEF,kBAAe,MAAM,CAAC"}
package/cache.d.ts CHANGED
@@ -37,6 +37,10 @@ export declare enum CacheScope {
37
37
  * @ignore
38
38
  */
39
39
  export declare enum CacheTTL {
40
+ /**
41
+ * Disable caching for this value.
42
+ */
43
+ DONT_CACHE = 0,
40
44
  /**
41
45
  * Cache data for the duration of the current IMS session only
42
46
  * Data will not be available once the user has logged in again.
package/cache.js CHANGED
@@ -57,7 +57,7 @@ exports.CacheTTL = exports.CacheScope = void 0;
57
57
  *
58
58
  * // Cache delete.
59
59
  * await cache.delete({key: 'some-cache-key'});
60
- *
60
+ * ```
61
61
  * @packageDocumentation
62
62
  * @module cache
63
63
  */
@@ -93,6 +93,10 @@ var CacheScope;
93
93
  */
94
94
  var CacheTTL;
95
95
  (function (CacheTTL) {
96
+ /**
97
+ * Disable caching for this value.
98
+ */
99
+ CacheTTL[CacheTTL["DONT_CACHE"] = 0] = "DONT_CACHE";
96
100
  /**
97
101
  * Cache data for the duration of the current IMS session only
98
102
  * Data will not be available once the user has logged in again.
package/cache.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["cache.ts"],"names":[],"mappings":";AAAA;;;;;;;;;4EAS4E;;;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,yCAAqC;AAErC;;GAEG;AACH,IAAY,UAqBX;AArBD,WAAY,UAAU;IACpB;;OAEG;IACH,8BAAgB,CAAA;IAChB;;OAEG;IACH,yBAAW,CAAA;IACX;;OAEG;IACH,iCAAmB,CAAA;IACnB;;OAEG;IACH,+BAAiB,CAAA;IACjB;;OAEG;IACH,2BAAa,CAAA;AACf,CAAC,EArBW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAqBrB;AAED;;GAEG;AACH,IAAY,QA0BX;AA1BD,WAAY,QAAQ;IAClB;;;OAGG;IACH,sDAAgB,CAAA;IAChB;;OAEG;IACH,kDAAuB,CAAA;IACvB;;OAEG;IACH,0CAAW,CAAA;IACX;;OAEG;IACH,yCAAe,CAAA;IACf;;OAEG;IACH,4CAAoB,CAAA;IACpB;;OAEG;IACH,+CAAsB,CAAA;AACxB,CAAC,EA1BW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA0BnB;AAiED,MAAM,KAAK,GAAa;IACtB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,gBAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;IACnD,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,gBAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;IAC7C,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,gBAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;CAC9C,CAAC;AAEF,kBAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["cache.ts"],"names":[],"mappings":";AAAA;;;;;;;;;4EAS4E;;;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,yCAAqC;AAErC;;GAEG;AACH,IAAY,UAqBX;AArBD,WAAY,UAAU;IACpB;;OAEG;IACH,8BAAgB,CAAA;IAChB;;OAEG;IACH,yBAAW,CAAA;IACX;;OAEG;IACH,iCAAmB,CAAA;IACnB;;OAEG;IACH,+BAAiB,CAAA;IACjB;;OAEG;IACH,2BAAa,CAAA;AACf,CAAC,EArBW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAqBrB;AAED;;GAEG;AACH,IAAY,QA8BX;AA9BD,WAAY,QAAQ;IAClB;;OAEG;IACH,mDAAc,CAAA;IACd;;;OAGG;IACH,sDAAgB,CAAA;IAChB;;OAEG;IACH,kDAAuB,CAAA;IACvB;;OAEG;IACH,0CAAW,CAAA;IACX;;OAEG;IACH,yCAAe,CAAA;IACf;;OAEG;IACH,4CAAoB,CAAA;IACpB;;OAEG;IACH,+CAAsB,CAAA;AACxB,CAAC,EA9BW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QA8BnB;AAiED,MAAM,KAAK,GAAa;IACtB,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,gBAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;IACnD,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,gBAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;IAC7C,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,gBAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC;CAC9C,CAAC;AAEF,kBAAe,KAAK,CAAC"}
package/docs/README.md CHANGED
@@ -9,6 +9,7 @@
9
9
  ### Modules
10
10
 
11
11
  * [appapi](modules/appapi.md)
12
+ * [cache](modules/cache.md)
12
13
  * [capabilityapi](modules/capabilityapi.md)
13
14
  * [helpCenter](modules/helpcenter.md)
14
15
  * [ims](modules/ims.md)
@@ -50,6 +50,7 @@
50
50
  * [SETTINGS](capabilityapi.capabilityids.md#settings)
51
51
  * [SOURCE](capabilityapi.capabilityids.md#source)
52
52
  * [SUBSCRIPTIONS](capabilityapi.capabilityids.md#subscriptions)
53
+ * [UNIFIEDTAGS](capabilityapi.capabilityids.md#unifiedtags)
53
54
  * [WORKFLOW](capabilityapi.capabilityids.md#workflow)
54
55
 
55
56
  ## Enumeration members
@@ -306,6 +307,12 @@ ___
306
307
 
307
308
  ___
308
309
 
310
+ ### UNIFIEDTAGS
311
+
312
+ • **UNIFIEDTAGS**: = "unifiedTags"
313
+
314
+ ___
315
+
309
316
  ### WORKFLOW
310
317
 
311
318
  • **WORKFLOW**: = "workflow"
@@ -50,6 +50,7 @@
50
50
  * [SETTINGS](capabilityapi.capabilitynames.md#settings)
51
51
  * [SOURCE](capabilityapi.capabilitynames.md#source)
52
52
  * [SUBSCRIPTIONS](capabilityapi.capabilitynames.md#subscriptions)
53
+ * [UNIFIEDTAGS](capabilityapi.capabilitynames.md#unifiedtags)
53
54
  * [WORKFLOW](capabilityapi.capabilitynames.md#workflow)
54
55
 
55
56
  ## Enumeration members
@@ -306,6 +307,12 @@ ___
306
307
 
307
308
  ___
308
309
 
310
+ ### UNIFIEDTAGS
311
+
312
+ • **UNIFIEDTAGS**: = "UnifiedTags"
313
+
314
+ ___
315
+
309
316
  ### WORKFLOW
310
317
 
311
318
  • **WORKFLOW**: = "Workflows"
@@ -0,0 +1,81 @@
1
+ **[@adobe/exc-app](../README.md)**
2
+
3
+ > [Globals](../README.md) / [cache](../modules/cache.md) / CacheApi
4
+
5
+ # Interface: CacheApi
6
+
7
+ APIs for managing a client side persisted cache.
8
+
9
+ ## Hierarchy
10
+
11
+ * **CacheApi**
12
+
13
+ ## Index
14
+
15
+ ### Methods
16
+
17
+ * [delete](cache.cacheapi.md#delete)
18
+ * [get](cache.cacheapi.md#get)
19
+ * [set](cache.cacheapi.md#set)
20
+
21
+ ## Methods
22
+
23
+ ### delete
24
+
25
+ ▸ **delete**(`params`: [CacheParameters](cache.cacheparameters.md)): Promise<void\>
26
+
27
+ Deletes a value from the cache (If available).
28
+
29
+ #### Parameters:
30
+
31
+ Name | Type | Description |
32
+ ------ | ------ | ------ |
33
+ `params` | [CacheParameters](cache.cacheparameters.md) | Parameters used to identify the cached item to delete. |
34
+
35
+ **Returns:** Promise<void\>
36
+
37
+ ___
38
+
39
+ ### get
40
+
41
+ ▸ **get**<T\>(`params`: [CacheParameters](cache.cacheparameters.md)): Promise<[CacheEntry](../modules/cache.md#cacheentry)<T\> \| undefined\>
42
+
43
+ Gets a value from the cache if one is available.
44
+
45
+ #### Type parameters:
46
+
47
+ Name |
48
+ ------ |
49
+ `T` |
50
+
51
+ #### Parameters:
52
+
53
+ Name | Type | Description |
54
+ ------ | ------ | ------ |
55
+ `params` | [CacheParameters](cache.cacheparameters.md) | Parameters used to identify the cached item to retrieve. |
56
+
57
+ **Returns:** Promise<[CacheEntry](../modules/cache.md#cacheentry)<T\> \| undefined\>
58
+
59
+ A promise that resolves to the specified value, or undefined if none exist.
60
+
61
+ ___
62
+
63
+ ### set
64
+
65
+ ▸ **set**<T\>(`params`: [CacheSetParameters](cache.cachesetparameters.md)<T\>): Promise<void\>
66
+
67
+ Stores a value in the cache.
68
+
69
+ #### Type parameters:
70
+
71
+ Name |
72
+ ------ |
73
+ `T` |
74
+
75
+ #### Parameters:
76
+
77
+ Name | Type | Description |
78
+ ------ | ------ | ------ |
79
+ `params` | [CacheSetParameters](cache.cachesetparameters.md)<T\> | Parameters used to identify the cached item to store and control its TTL. |
80
+
81
+ **Returns:** Promise<void\>
@@ -0,0 +1,36 @@
1
+ **[@adobe/exc-app](../README.md)**
2
+
3
+ > [Globals](../README.md) / [cache](../modules/cache.md) / CacheParameters
4
+
5
+ # Interface: CacheParameters
6
+
7
+ Input parameters for the Cache get and delete APIs.
8
+
9
+ ## Hierarchy
10
+
11
+ * **CacheParameters**
12
+
13
+ ↳ [CacheSetParameters](cache.cachesetparameters.md)
14
+
15
+ ## Index
16
+
17
+ ### Properties
18
+
19
+ * [key](cache.cacheparameters.md#key)
20
+ * [scope](cache.cacheparameters.md#scope)
21
+
22
+ ## Properties
23
+
24
+ ### key
25
+
26
+ • **key**: string
27
+
28
+ Cache key.
29
+
30
+ ___
31
+
32
+ ### scope
33
+
34
+ • `Optional` **scope**: CacheScope
35
+
36
+ Cache scope (Optional - Defaults to user).
@@ -0,0 +1,65 @@
1
+ **[@adobe/exc-app](../README.md)**
2
+
3
+ > [Globals](../README.md) / [cache](../modules/cache.md) / CacheSetParameters
4
+
5
+ # Interface: CacheSetParameters<T\>
6
+
7
+ Input parameters for the Cache set API.
8
+
9
+ ## Type parameters
10
+
11
+ Name |
12
+ ------ |
13
+ `T` |
14
+
15
+ ## Hierarchy
16
+
17
+ * [CacheParameters](cache.cacheparameters.md)
18
+
19
+ ↳ **CacheSetParameters**
20
+
21
+ ## Index
22
+
23
+ ### Properties
24
+
25
+ * [expiry](cache.cachesetparameters.md#expiry)
26
+ * [key](cache.cachesetparameters.md#key)
27
+ * [scope](cache.cachesetparameters.md#scope)
28
+ * [value](cache.cachesetparameters.md#value)
29
+
30
+ ## Properties
31
+
32
+ ### expiry
33
+
34
+ • `Optional` **expiry**: [CacheExpiry](../modules/cache.md#cacheexpiry)
35
+
36
+ Cache expiry. Can be one of the set values defined by CacheTTL, or a numeric cache ttl (in seconds).
37
+ Optional - Defaults to one week.
38
+
39
+ ___
40
+
41
+ ### key
42
+
43
+ • **key**: string
44
+
45
+ *Inherited from [CacheParameters](cache.cacheparameters.md).[key](cache.cacheparameters.md#key)*
46
+
47
+ Cache key.
48
+
49
+ ___
50
+
51
+ ### scope
52
+
53
+ • `Optional` **scope**: CacheScope
54
+
55
+ *Inherited from [CacheParameters](cache.cacheparameters.md).[scope](cache.cacheparameters.md#scope)*
56
+
57
+ Cache scope (Optional - Defaults to user).
58
+
59
+ ___
60
+
61
+ ### value
62
+
63
+ • **value**: T
64
+
65
+ Data to cache. Data must be serializable (JSON).
@@ -15,6 +15,7 @@
15
15
  * [cacheOptions](network.apolloclientoptions.md#cacheoptions)
16
16
  * [connectToDevTools](network.apolloclientoptions.md#connecttodevtools)
17
17
  * [inputApolloLink](network.apolloclientoptions.md#inputapollolink)
18
+ * [xql](network.apolloclientoptions.md#xql)
18
19
 
19
20
  ## Properties
20
21
 
@@ -33,3 +34,9 @@ ___
33
34
  ### inputApolloLink
34
35
 
35
36
  • `Optional` **inputApolloLink**: ApolloLink
37
+
38
+ ___
39
+
40
+ ### xql
41
+
42
+ • `Optional` **xql**: undefined \| false \| true
@@ -13,6 +13,7 @@
13
13
  ### Properties
14
14
 
15
15
  * [appApi](root.modules.md#appapi)
16
+ * [cache](root.modules.md#cache)
16
17
  * [capabilityApi](root.modules.md#capabilityapi)
17
18
  * [default](root.modules.md#default)
18
19
  * [helpCenter](root.modules.md#helpcenter)
@@ -42,6 +43,12 @@
42
43
 
43
44
  ___
44
45
 
46
+ ### cache
47
+
48
+ • `Readonly` **cache**: () => [CacheApi](cache.cacheapi.md)
49
+
50
+ ___
51
+
45
52
  ### capabilityApi
46
53
 
47
54
  • `Readonly` **capabilityApi**: () => [CapabilityApi](capabilityapi.capabilityapi-1.md)
@@ -19,6 +19,7 @@ External Runtime Configuration Interface
19
19
  * [appContainer](root.runtimeconfiguration.md#appcontainer)
20
20
  * [appId](root.runtimeconfiguration.md#appid)
21
21
  * [baseFrameUrl](root.runtimeconfiguration.md#baseframeurl)
22
+ * [basePath](root.runtimeconfiguration.md#basepath)
22
23
  * [baseUrl](root.runtimeconfiguration.md#baseurl)
23
24
  * [changedProperties](root.runtimeconfiguration.md#changedproperties)
24
25
  * [discovery](root.runtimeconfiguration.md#discovery)
@@ -100,6 +101,14 @@ Solution iframe src url
100
101
 
101
102
  ___
102
103
 
104
+ ### basePath
105
+
106
+ • **basePath**: string
107
+
108
+ Base path of the baseUrl property, without tenant or URL context.
109
+
110
+ ___
111
+
103
112
  ### baseUrl
104
113
 
105
114
  • **baseUrl**: string
@@ -0,0 +1,85 @@
1
+ **[@adobe/exc-app](../README.md)**
2
+
3
+ > [Globals](../README.md) / cache
4
+
5
+ # Module: cache
6
+
7
+ APIs for managing a client side persisted cache.
8
+ Unified Shell will store the data against its own domain, which allows data caching
9
+ even when the actual app runs on a domain which is 3rd party to Unified Shell's.
10
+
11
+ For example, the API will work in Chrome incognito when Unified Shell runs on an adobe.com domain
12
+ and the embedded applications run on the adobe.net domain.
13
+
14
+ These APIs utilizes the [Browser Cache API](https://developer.mozilla.org/en-US/docs/Web/API/Cache) under the hood and are all run asynchronously.
15
+
16
+ If migrating from Local Storage to Cache API, make sure all the app logic is async first.
17
+
18
+ NOTE: This API should not be used to cache any PII data to comply with Adobe privacy policies.
19
+
20
+ To consume this API, add the following import to your code.
21
+
22
+ ```typescript
23
+ import cache from '@adobe/exc-app/cache';
24
+ ```
25
+
26
+ The default export is an object of type [CacheAPI](../interfaces/_cache_.cacheapi.md)
27
+
28
+ API reference: [scroll down](#index)
29
+
30
+ ### Sample code
31
+
32
+ ```typescript
33
+ import cache, {CacheTTL, CacheScope} from '@adobe/exc-app/cache';
34
+
35
+ // By default, cached data is tied to the user and cached for a week.
36
+ await cache.set<MyType>({key: 'some-cache-key', value: myTypeInstance});
37
+
38
+ // Both scope and expiry can be adjusted.
39
+ await cache.set<MyType>({key: 'some-cache-key', value: myTypeInstance, expiry: CacheTTL.DAY, scope: CacheScope.ORG});
40
+
41
+ // It is also possible to bind cache data to the current IMS session, it will expire when the user logs out.
42
+ await cache.set<MyType>({key: 'some-cache-key', value: myTypeInstance, expiry: CacheTTL.IMS_SESSION});
43
+
44
+ // Cache get
45
+ const myData: MyType = await cache.get<MyType>({key: 'some-cache-key'});
46
+
47
+ // Get scope must be identical to the scope used for set - Always use the same scope for both.
48
+ const myData2: MyType = await cache.get<MyType>({key: 'some-cache-key', scope: CacheScope.ORG});
49
+
50
+ // Cache delete.
51
+ await cache.delete({key: 'some-cache-key'});
52
+ ```
53
+
54
+ ## Index
55
+
56
+ ### Interfaces
57
+
58
+ * [CacheApi](../interfaces/cache.cacheapi.md)
59
+ * [CacheParameters](../interfaces/cache.cacheparameters.md)
60
+ * [CacheSetParameters](../interfaces/cache.cachesetparameters.md)
61
+
62
+ ### Type aliases
63
+
64
+ * [CacheEntry](cache.md#cacheentry)
65
+ * [CacheExpiry](cache.md#cacheexpiry)
66
+
67
+ ## Type aliases
68
+
69
+ ### CacheEntry
70
+
71
+ Ƭ **CacheEntry**<T\>: { createdAt: number ; key: string ; value: T } & { expiresAt: number } \| { expireBySession: true }
72
+
73
+ Cache entry (Returned by the get API).
74
+
75
+ #### Type parameters:
76
+
77
+ Name |
78
+ ------ |
79
+ `T` |
80
+
81
+ ___
82
+
83
+ ### CacheExpiry
84
+
85
+ Ƭ **CacheExpiry**: CacheTTL \| number
package/network.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"network.js","sourceRoot":"","sources":["network.ts"],"names":[],"mappings":";AAAA;;;;;;;;;4EAS4E;;;AA+C5E,yCAAqC;AAGrC;;GAEG;AACU,QAAA,6BAA6B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAuKlE,IAAY,OAaX;AAbD,WAAY,OAAO;IACjB;;OAEG;IACH,+DAAiB,CAAA;IACjB;;OAEG;IACH,2CAAO,CAAA;IACP;;OAEG;IACH,yEAAsB,CAAA;AACxB,CAAC,EAbW,OAAO,GAAP,eAAO,KAAP,eAAO,QAalB;AAqFD;;GAEG;AACH,IAAY,UAqCX;AArCD,WAAY,UAAU;IACpB;;;OAGG;IACH,2BAAW,CAAA;IACX;;;;OAIG;IACH,2BAAW,CAAA;IACX;;;;;OAKG;IACH,yBAAS,CAAA;IACT;;;;;;OAMG;IACH,iCAAiB,CAAA;IACjB;;;;;;;;OAQG;IACH,2CAA2B,CAAA;AAC7B,CAAC,EArCW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAqCrB;AA+GD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,KAAK,CAAC,KAAkB,EAAE,IAAgB;IACxD,OAAO,gBAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAFD,sBAEC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,SAAgB,KAAK,CAAC,KAAmB;IACvC,OAAO,gBAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAFD,sBAEC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,eAAe,CAC7B,OAA6B;IAK7B,OAAO,gBAAO,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACrD,CAAC;AAPD,0CAOC"}
1
+ {"version":3,"file":"network.js","sourceRoot":"","sources":["network.ts"],"names":[],"mappings":";AAAA;;;;;;;;;4EAS4E;;;AA+C5E,yCAAqC;AAGrC;;GAEG;AACU,QAAA,6BAA6B,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAuKlE,IAAY,OAaX;AAbD,WAAY,OAAO;IACjB;;OAEG;IACH,+DAAiB,CAAA;IACjB;;OAEG;IACH,2CAAO,CAAA;IACP;;OAEG;IACH,yEAAsB,CAAA;AACxB,CAAC,EAbW,OAAO,GAAP,eAAO,KAAP,eAAO,QAalB;AAqFD;;GAEG;AACH,IAAY,UAqCX;AArCD,WAAY,UAAU;IACpB;;;OAGG;IACH,2BAAa,CAAA;IACb;;;;OAIG;IACH,2BAAa,CAAA;IACb;;;;;OAKG;IACH,yBAAW,CAAA;IACX;;;;;;OAMG;IACH,iCAAmB,CAAA;IACnB;;;;;;;;OAQG;IACH,2CAA6B,CAAA;AAC/B,CAAC,EArCW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAqCrB;AA+GD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAgB,KAAK,CAAC,KAAkB,EAAE,IAAgB;IACxD,OAAO,gBAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAFD,sBAEC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,SAAgB,KAAK,CAAC,KAAmB;IACvC,OAAO,gBAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAFD,sBAEC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAgB,eAAe,CAC7B,OAA6B;IAK7B,OAAO,gBAAO,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACrD,CAAC;AAPD,0CAOC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adobe/exc-app",
3
- "version": "1.0.3-beta",
3
+ "version": "1.0.4",
4
4
  "main": "index.js",
5
5
  "source": "index.ts",
6
6
  "scripts": {
package/shell.d.ts CHANGED
@@ -66,11 +66,13 @@
66
66
  */
67
67
  import EventEmitter from './src/EventEmitter';
68
68
  export interface ShellInfo {
69
+ cdn: string;
69
70
  environment: string;
70
71
  imsEnvironment: string;
71
72
  shellInfo: Record<string, any>;
72
73
  }
73
74
  interface ShellInfoEvent {
75
+ 'change:cdn': string;
74
76
  'change:environment': string;
75
77
  'change:imsEnvironment': string;
76
78
  'change:shellInfo': Record<string, any>;
package/shell.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["shell.ts"],"names":[],"mappings":";AAAA;;;;;;;;;4EAS4E;;AA4D5E,yCAAqC;AAsBrC,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAClB,OAAO,gBAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IACD,GAAG,EAAE,MAAM,CAAC,EAAE;QACZ,OAAO,gBAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACrB,OAAO,gBAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACpB,OAAO,gBAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;CACU,CAAC;AAEd,kBAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"shell.js","sourceRoot":"","sources":["shell.ts"],"names":[],"mappings":";AAAA;;;;;;;;;4EAS4E;;AA4D5E,yCAAqC;AAwBrC,MAAM,KAAK,GAAG;IACZ,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QAClB,OAAO,gBAAO,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IACD,GAAG,EAAE,MAAM,CAAC,EAAE;QACZ,OAAO,gBAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACrB,OAAO,gBAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IACD,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QACpB,OAAO,gBAAO,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;CACU,CAAC;AAEd,kBAAe,KAAK,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ /*************************************************************************
16
+ * Copyright 2022 Adobe
17
+ * All Rights Reserved.
18
+ *
19
+ * NOTICE: Adobe permits you to use, modify, and distribute this file in
20
+ * accordance with the terms of the Adobe license agreement accompanying
21
+ * it. If you have received this file from a source other than Adobe,
22
+ * then your use, modification, or distribution of it requires the prior
23
+ * written permission of Adobe.
24
+ **************************************************************************/
25
+ const network_1 = require("../network");
26
+ const Global_1 = __importDefault(require("../src/Global"));
27
+ describe('network.ts', () => {
28
+ const fetchMock = jest.fn();
29
+ const queryMock = jest.fn();
30
+ const getApolloClientMock = jest.fn();
31
+ const networkMock = {
32
+ fetch: fetchMock,
33
+ getApolloClient: getApolloClientMock,
34
+ query: queryMock
35
+ };
36
+ beforeAll(() => {
37
+ Global_1.default['exc-module-runtime'] = {
38
+ network: networkMock
39
+ };
40
+ });
41
+ afterEach(() => jest.clearAllMocks());
42
+ test('fetch', () => __awaiter(void 0, void 0, void 0, function* () {
43
+ const res = { status: 'ok' };
44
+ fetchMock.mockResolvedValue(res);
45
+ const result = yield network_1.fetch('url', { auth: 'Header' });
46
+ expect(result).toEqual(res);
47
+ expect(fetchMock).toHaveBeenCalledTimes(1);
48
+ expect(fetchMock).toHaveBeenCalledWith('url', { auth: 'Header' });
49
+ }));
50
+ test('query', () => __awaiter(void 0, void 0, void 0, function* () {
51
+ const res = { status: 'ok' };
52
+ queryMock.mockResolvedValue(res);
53
+ const result = yield network_1.query({ data: { query: 'query' } });
54
+ expect(result).toEqual(res);
55
+ expect(queryMock).toHaveBeenCalledTimes(1);
56
+ expect(queryMock).toHaveBeenCalledWith({ data: { query: 'query' } });
57
+ }));
58
+ test('getApolloClient', () => __awaiter(void 0, void 0, void 0, function* () {
59
+ const res = { status: 'ok' };
60
+ getApolloClientMock.mockResolvedValue(res);
61
+ const result = yield network_1.getApolloClient({ xql: true });
62
+ expect(result).toEqual(res);
63
+ expect(getApolloClientMock).toHaveBeenCalledTimes(1);
64
+ expect(getApolloClientMock).toHaveBeenCalledWith({ xql: true });
65
+ }));
66
+ });
67
+ //# sourceMappingURL=network.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.test.js","sourceRoot":"","sources":["network.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA;;;;;;;;;4EAS4E;AAC5E,wCAAqE;AACrE,2DAA8C;AAE9C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC5B,MAAM,mBAAmB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAEtC,MAAM,WAAW,GAAG;QAClB,KAAK,EAAE,SAAS;QAChB,eAAe,EAAE,mBAAmB;QACpC,KAAK,EAAE,SAAS;KACH,CAAC;IAEhB,SAAS,CAAC,GAAG,EAAE;QACZ,gBAAM,CAAC,oBAAoB,CAAa,GAAG;YAC1C,OAAO,EAAE,WAAW;SACV,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IAEtC,IAAI,CAAC,OAAO,EAAE,GAAS,EAAE;QACvB,MAAM,GAAG,GAAG,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC;QAC3B,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,eAAK,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,KAAK,EAAE,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC;IAClE,CAAC,CAAA,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,GAAS,EAAE;QACvB,MAAM,GAAG,GAAG,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC;QAC3B,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,eAAK,CAAC,EAAC,IAAI,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC,EAAC,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,EAAC,IAAI,EAAE,EAAC,KAAK,EAAE,OAAO,EAAC,EAAC,CAAC,CAAC;IACnE,CAAC,CAAA,CAAC,CAAC;IAEH,IAAI,CAAC,iBAAiB,EAAE,GAAS,EAAE;QACjC,MAAM,GAAG,GAAG,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC;QAC3B,mBAAmB,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,yBAAe,CAAC,EAAC,GAAG,EAAE,IAAI,EAAC,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,mBAAmB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,EAAC,GAAG,EAAE,IAAI,EAAC,CAAC,CAAC;IAChE,CAAC,CAAA,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/version.d.ts CHANGED
@@ -8,5 +8,5 @@
8
8
  * then your use, modification, or distribution of it requires the prior
9
9
  * written permission of Adobe.
10
10
  **************************************************************************/
11
- declare const EXC_APP_VERSION = "1.0.3-beta";
11
+ declare const EXC_APP_VERSION = "1.0.4";
12
12
  export default EXC_APP_VERSION;
package/version.js CHANGED
@@ -10,6 +10,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  * then your use, modification, or distribution of it requires the prior
11
11
  * written permission of Adobe.
12
12
  **************************************************************************/
13
- const EXC_APP_VERSION = '1.0.3-beta';
13
+ const EXC_APP_VERSION = '1.0.4';
14
14
  exports.default = EXC_APP_VERSION;
15
15
  //# sourceMappingURL=version.js.map
package/version.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["version.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;4EAS4E;AAC5E,MAAM,eAAe,GAAG,YAAY,CAAC;AAErC,kBAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["version.ts"],"names":[],"mappings":";;AAAA;;;;;;;;;4EAS4E;AAC5E,MAAM,eAAe,GAAG,OAAO,CAAC;AAEhC,kBAAe,eAAe,CAAC"}
@@ -1,79 +0,0 @@
1
- /* eslint-disable */
2
- var jumpToCode = (function init() {
3
- // Classes of code we would like to highlight in the file view
4
- var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no'];
5
-
6
- // Elements to highlight in the file listing view
7
- var fileListingElements = ['td.pct.low'];
8
-
9
- // We don't want to select elements that are direct descendants of another match
10
- var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `
11
-
12
- // Selecter that finds elements on the page to which we can jump
13
- var selector =
14
- fileListingElements.join(', ') +
15
- ', ' +
16
- notSelector +
17
- missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`
18
-
19
- // The NodeList of matching elements
20
- var missingCoverageElements = document.querySelectorAll(selector);
21
-
22
- var currentIndex;
23
-
24
- function toggleClass(index) {
25
- missingCoverageElements
26
- .item(currentIndex)
27
- .classList.remove('highlighted');
28
- missingCoverageElements.item(index).classList.add('highlighted');
29
- }
30
-
31
- function makeCurrent(index) {
32
- toggleClass(index);
33
- currentIndex = index;
34
- missingCoverageElements.item(index).scrollIntoView({
35
- behavior: 'smooth',
36
- block: 'center',
37
- inline: 'center'
38
- });
39
- }
40
-
41
- function goToPrevious() {
42
- var nextIndex = 0;
43
- if (typeof currentIndex !== 'number' || currentIndex === 0) {
44
- nextIndex = missingCoverageElements.length - 1;
45
- } else if (missingCoverageElements.length > 1) {
46
- nextIndex = currentIndex - 1;
47
- }
48
-
49
- makeCurrent(nextIndex);
50
- }
51
-
52
- function goToNext() {
53
- var nextIndex = 0;
54
-
55
- if (
56
- typeof currentIndex === 'number' &&
57
- currentIndex < missingCoverageElements.length - 1
58
- ) {
59
- nextIndex = currentIndex + 1;
60
- }
61
-
62
- makeCurrent(nextIndex);
63
- }
64
-
65
- return function jump(event) {
66
- switch (event.which) {
67
- case 78: // n
68
- case 74: // j
69
- goToNext();
70
- break;
71
- case 66: // b
72
- case 75: // k
73
- case 80: // p
74
- goToPrevious();
75
- break;
76
- }
77
- };
78
- })();
79
- window.addEventListener('keydown', jumpToCode);
@@ -1,2 +0,0 @@
1
- /* eslint-disable */
2
- window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V<U;++V){var ae=Z[V];if(ae.ignoreCase){ac=true}else{if(/[a-z]/i.test(ae.source.replace(/\\u[0-9a-f]{4}|\\x[0-9a-f]{2}|\\[^ux]/gi,""))){S=true;ac=false;break}}}var Y={b:8,t:9,n:10,v:11,f:12,r:13};function ab(ah){var ag=ah.charCodeAt(0);if(ag!==92){return ag}var af=ah.charAt(1);ag=Y[af];if(ag){return ag}else{if("0"<=af&&af<="7"){return parseInt(ah.substring(1),8)}else{if(af==="u"||af==="x"){return parseInt(ah.substring(2),16)}else{return ah.charCodeAt(1)}}}}function T(af){if(af<32){return(af<16?"\\x0":"\\x")+af.toString(16)}var ag=String.fromCharCode(af);if(ag==="\\"||ag==="-"||ag==="["||ag==="]"){ag="\\"+ag}return ag}function X(am){var aq=am.substring(1,am.length-1).match(new RegExp("\\\\u[0-9A-Fa-f]{4}|\\\\x[0-9A-Fa-f]{2}|\\\\[0-3][0-7]{0,2}|\\\\[0-7]{1,2}|\\\\[\\s\\S]|-|[^-\\\\]","g"));var ak=[];var af=[];var ao=aq[0]==="^";for(var ar=ao?1:0,aj=aq.length;ar<aj;++ar){var ah=aq[ar];if(/\\[bdsw]/i.test(ah)){ak.push(ah)}else{var ag=ab(ah);var al;if(ar+2<aj&&"-"===aq[ar+1]){al=ab(aq[ar+2]);ar+=2}else{al=ag}af.push([ag,al]);if(!(al<65||ag>122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;ar<af.length;++ar){var at=af[ar];if(at[0]<=ap[1]+1){ap[1]=Math.max(ap[1],at[1])}else{ai.push(ap=at)}}var an=["["];if(ao){an.push("^")}an.push.apply(an,ak);for(var ar=0;ar<ai.length;++ar){var at=ai[ar];an.push(T(at[0]));if(at[1]>at[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak<ah;++ak){var ag=aj[ak];if(ag==="("){++am}else{if("\\"===ag.charAt(0)){var af=+ag.substring(1);if(af&&af<=am){an[af]=-1}}}}for(var ak=1;ak<an.length;++ak){if(-1===an[ak]){an[ak]=++ad}}for(var ak=0,am=0;ak<ah;++ak){var ag=aj[ak];if(ag==="("){++am;if(an[am]===undefined){aj[ak]="(?:"}}else{if("\\"===ag.charAt(0)){var af=+ag.substring(1);if(af&&af<=am){aj[ak]="\\"+an[am]}}}}for(var ak=0,am=0;ak<ah;++ak){if("^"===aj[ak]&&"^"!==aj[ak+1]){aj[ak]=""}}if(al.ignoreCase&&S){for(var ak=0;ak<ah;++ak){var ag=aj[ak];var ai=ag.charAt(0);if(ag.length>=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V<U;++V){var ae=Z[V];if(ae.global||ae.multiline){throw new Error(""+ae)}aa.push("(?:"+W(ae)+")")}return new RegExp(aa.join("|"),ac?"gi":"g")}function a(V){var U=/(?:^|\s)nocode(?:\s|$)/;var X=[];var T=0;var Z=[];var W=0;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=document.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Y=S&&"pre"===S.substring(0,3);function aa(ab){switch(ab.nodeType){case 1:if(U.test(ab.className)){return}for(var ae=ab.firstChild;ae;ae=ae.nextSibling){aa(ae)}var ad=ab.nodeName;if("BR"===ad||"LI"===ad){X[W]="\n";Z[W<<1]=T++;Z[(W++<<1)|1]=ab}break;case 3:case 4:var ac=ab.nodeValue;if(ac.length){if(!Y){ac=ac.replace(/[ \t\r\n]+/g," ")}else{ac=ac.replace(/\r\n?/g,"\n")}X[W]=ac;Z[W<<1]=T;T+=ac.length;Z[(W++<<1)|1]=ab}break}}aa(V);return{sourceCode:X.join("").replace(/\n$/,""),spans:Z}}function B(S,U,W,T){if(!U){return}var V={sourceCode:U,basePos:S};W(V);T.push.apply(T,V.decorations)}var v=/\S/;function o(S){var V=undefined;for(var U=S.firstChild;U;U=U.nextSibling){var T=U.nodeType;V=(T===1)?(V?S:U):(T===3)?(v.test(U.nodeValue)?S:V):V}return V===S?undefined:V}function g(U,T){var S={};var V;(function(){var ad=U.concat(T);var ah=[];var ag={};for(var ab=0,Z=ad.length;ab<Z;++ab){var Y=ad[ab];var ac=Y[3];if(ac){for(var ae=ac.length;--ae>=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae<aq;++ae){var ag=an[ae];var ap=aj[ag];var ai=void 0;var am;if(typeof ap==="string"){am=false}else{var aa=S[ag.charAt(0)];if(aa){ai=ag.match(aa[1]);ap=aa[0]}else{for(var ao=0;ao<X;++ao){aa=T[ao];ai=ag.match(aa[1]);if(ai){ap=aa[0];break}}if(!ai){ap=F}}am=ap.length>=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y<W.length;++Y){ae(W[Y])}if(ag===(ag|0)){W[0].setAttribute("value",ag)}var aa=ac.createElement("OL");aa.className="linenums";var X=Math.max(0,((ag-1))|0)||0;for(var Y=0,T=W.length;Y<T;++Y){af=W[Y];af.className="L"+((Y+X)%10);if(!af.firstChild){af.appendChild(ac.createTextNode("\xA0"))}aa.appendChild(af)}V.appendChild(aa)}function D(ac){var aj=/\bMSIE\b/.test(navigator.userAgent);var am=/\n/g;var al=ac.sourceCode;var an=al.length;var V=0;var aa=ac.spans;var T=aa.length;var ah=0;var X=ac.decorations;var Y=X.length;var Z=0;X[Y]=an;var ar,aq;for(aq=ar=0;aq<Y;){if(X[aq]!==X[aq+2]){X[ar++]=X[aq++];X[ar++]=X[aq++]}else{aq+=2}}Y=ar;for(aq=ar=0;aq<Y;){var at=X[aq];var ab=X[aq+1];var W=aq+2;while(W+2<=Y&&X[W+1]===ab){W+=2}X[ar++]=at;X[ar++]=ab;aq=W}Y=X.length=ar;var ae=null;while(ah<T){var af=aa[ah];var S=aa[ah+2]||an;var ag=X[Z];var ap=X[Z+2]||an;var W=Math.min(S,ap);var ak=aa[ah+1];var U;if(ak.nodeType!==1&&(U=al.substring(V,W))){if(aj){U=U.replace(am,"\r")}ak.nodeValue=U;var ai=ak.ownerDocument;var ao=ai.createElement("SPAN");ao.className=X[Z+1];var ad=ak.parentNode;ad.replaceChild(ao,ak);ao.appendChild(ak);if(V<S){aa[ah+1]=ak=ai.createTextNode(al.substring(W,S));ad.insertBefore(ak,ao.nextSibling)}}V=W;if(V>=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*</.test(S)?"default-markup":"default-code"}return t[T]}c(K,["default-code"]);c(g([],[[F,/^[^<?]+/],[E,/^<!\w[^>]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa<ac.length;++aa){for(var Z=0,V=ac[aa].length;Z<V;++Z){T.push(ac[aa][Z])}}ac=null;var W=Date;if(!W.now){W={now:function(){return +(new Date)}}}var X=0;var S;var ab=/\blang(?:uage)?-([\w.]+)(?!\S)/;var ae=/\bprettyprint\b/;function U(){var ag=(window.PR_SHOULD_USE_CONTINUATION?W.now()+250:Infinity);for(;X<T.length&&W.now()<ag;X++){var aj=T[X];var ai=aj.className;if(ai.indexOf("prettyprint")>=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X<T.length){setTimeout(U,250)}else{if(ad){ad()}}}U()}window.prettyPrintOne=y;window.prettyPrint=b;window.PR={createSimpleLexer:g,registerLangHandler:c,sourceDecorator:i,PR_ATTRIB_NAME:P,PR_ATTRIB_VALUE:n,PR_COMMENT:j,PR_DECLARATION:E,PR_KEYWORD:z,PR_LITERAL:G,PR_NOCODE:N,PR_PLAIN:F,PR_PUNCTUATION:L,PR_SOURCE:J,PR_STRING:C,PR_TAG:m,PR_TYPE:O}})();PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_DECLARATION,/^<!\w[^>]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^<xmp\b[^>]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^<script\b[^>]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^<style\b[^>]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:<!--|-->)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]);
@@ -1,170 +0,0 @@
1
- /* eslint-disable */
2
- var addSorting = (function() {
3
- 'use strict';
4
- var cols,
5
- currentSort = {
6
- index: 0,
7
- desc: false
8
- };
9
-
10
- // returns the summary table element
11
- function getTable() {
12
- return document.querySelector('.coverage-summary');
13
- }
14
- // returns the thead element of the summary table
15
- function getTableHeader() {
16
- return getTable().querySelector('thead tr');
17
- }
18
- // returns the tbody element of the summary table
19
- function getTableBody() {
20
- return getTable().querySelector('tbody');
21
- }
22
- // returns the th element for nth column
23
- function getNthColumn(n) {
24
- return getTableHeader().querySelectorAll('th')[n];
25
- }
26
-
27
- // loads all columns
28
- function loadColumns() {
29
- var colNodes = getTableHeader().querySelectorAll('th'),
30
- colNode,
31
- cols = [],
32
- col,
33
- i;
34
-
35
- for (i = 0; i < colNodes.length; i += 1) {
36
- colNode = colNodes[i];
37
- col = {
38
- key: colNode.getAttribute('data-col'),
39
- sortable: !colNode.getAttribute('data-nosort'),
40
- type: colNode.getAttribute('data-type') || 'string'
41
- };
42
- cols.push(col);
43
- if (col.sortable) {
44
- col.defaultDescSort = col.type === 'number';
45
- colNode.innerHTML =
46
- colNode.innerHTML + '<span class="sorter"></span>';
47
- }
48
- }
49
- return cols;
50
- }
51
- // attaches a data attribute to every tr element with an object
52
- // of data values keyed by column name
53
- function loadRowData(tableRow) {
54
- var tableCols = tableRow.querySelectorAll('td'),
55
- colNode,
56
- col,
57
- data = {},
58
- i,
59
- val;
60
- for (i = 0; i < tableCols.length; i += 1) {
61
- colNode = tableCols[i];
62
- col = cols[i];
63
- val = colNode.getAttribute('data-value');
64
- if (col.type === 'number') {
65
- val = Number(val);
66
- }
67
- data[col.key] = val;
68
- }
69
- return data;
70
- }
71
- // loads all row data
72
- function loadData() {
73
- var rows = getTableBody().querySelectorAll('tr'),
74
- i;
75
-
76
- for (i = 0; i < rows.length; i += 1) {
77
- rows[i].data = loadRowData(rows[i]);
78
- }
79
- }
80
- // sorts the table using the data for the ith column
81
- function sortByIndex(index, desc) {
82
- var key = cols[index].key,
83
- sorter = function(a, b) {
84
- a = a.data[key];
85
- b = b.data[key];
86
- return a < b ? -1 : a > b ? 1 : 0;
87
- },
88
- finalSorter = sorter,
89
- tableBody = document.querySelector('.coverage-summary tbody'),
90
- rowNodes = tableBody.querySelectorAll('tr'),
91
- rows = [],
92
- i;
93
-
94
- if (desc) {
95
- finalSorter = function(a, b) {
96
- return -1 * sorter(a, b);
97
- };
98
- }
99
-
100
- for (i = 0; i < rowNodes.length; i += 1) {
101
- rows.push(rowNodes[i]);
102
- tableBody.removeChild(rowNodes[i]);
103
- }
104
-
105
- rows.sort(finalSorter);
106
-
107
- for (i = 0; i < rows.length; i += 1) {
108
- tableBody.appendChild(rows[i]);
109
- }
110
- }
111
- // removes sort indicators for current column being sorted
112
- function removeSortIndicators() {
113
- var col = getNthColumn(currentSort.index),
114
- cls = col.className;
115
-
116
- cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, '');
117
- col.className = cls;
118
- }
119
- // adds sort indicators for current column being sorted
120
- function addSortIndicators() {
121
- getNthColumn(currentSort.index).className += currentSort.desc
122
- ? ' sorted-desc'
123
- : ' sorted';
124
- }
125
- // adds event listeners for all sorter widgets
126
- function enableUI() {
127
- var i,
128
- el,
129
- ithSorter = function ithSorter(i) {
130
- var col = cols[i];
131
-
132
- return function() {
133
- var desc = col.defaultDescSort;
134
-
135
- if (currentSort.index === i) {
136
- desc = !currentSort.desc;
137
- }
138
- sortByIndex(i, desc);
139
- removeSortIndicators();
140
- currentSort.index = i;
141
- currentSort.desc = desc;
142
- addSortIndicators();
143
- };
144
- };
145
- for (i = 0; i < cols.length; i += 1) {
146
- if (cols[i].sortable) {
147
- // add the click event handler on the th so users
148
- // dont have to click on those tiny arrows
149
- el = getNthColumn(i).querySelector('.sorter').parentElement;
150
- if (el.addEventListener) {
151
- el.addEventListener('click', ithSorter(i));
152
- } else {
153
- el.attachEvent('onclick', ithSorter(i));
154
- }
155
- }
156
- }
157
- }
158
- // adds sorting functionality to the UI
159
- return function() {
160
- if (!getTable()) {
161
- return;
162
- }
163
- cols = loadColumns();
164
- loadData();
165
- addSortIndicators();
166
- enableUI();
167
- };
168
- })();
169
-
170
- window.addEventListener('load', addSorting);