auth0-deploy-cli 7.14.1 → 7.14.2

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 (151) hide show
  1. package/.circleci/config.yml +40 -11
  2. package/.eslintignore +1 -0
  3. package/.nyc_output/1b0a2de3-0dae-4f80-9af7-f45cabfd5e99.json +1 -0
  4. package/.nyc_output/50c50e87-6b9d-4f9f-b6bb-a462368ff653.json +1 -0
  5. package/.nyc_output/cd0c5bb1-9480-4de3-b099-e95349d10f89.json +1 -0
  6. package/.nyc_output/processinfo/1b0a2de3-0dae-4f80-9af7-f45cabfd5e99.json +1 -0
  7. package/.nyc_output/processinfo/50c50e87-6b9d-4f9f-b6bb-a462368ff653.json +1 -0
  8. package/.nyc_output/processinfo/cd0c5bb1-9480-4de3-b099-e95349d10f89.json +1 -0
  9. package/.nyc_output/processinfo/index.json +1 -0
  10. package/.prettierignore +2 -1
  11. package/CHANGELOG.md +11 -1
  12. package/README.md +1 -0
  13. package/coverage/lcov-report/base.css +224 -0
  14. package/coverage/lcov-report/block-navigation.js +87 -0
  15. package/coverage/lcov-report/favicon.png +0 -0
  16. package/coverage/lcov-report/index.html +251 -0
  17. package/coverage/lcov-report/prettify.css +1 -0
  18. package/coverage/lcov-report/prettify.js +2 -0
  19. package/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  20. package/coverage/lcov-report/sorter.js +196 -0
  21. package/coverage/lcov-report/src/args.ts.html +505 -0
  22. package/coverage/lcov-report/src/commands/export.ts.html +274 -0
  23. package/coverage/lcov-report/src/commands/import.ts.html +250 -0
  24. package/coverage/lcov-report/src/commands/index.html +131 -0
  25. package/coverage/lcov-report/src/configFactory.ts.html +175 -0
  26. package/coverage/lcov-report/src/context/defaults.ts.html +196 -0
  27. package/coverage/lcov-report/src/context/directory/handlers/actions.ts.html +355 -0
  28. package/coverage/lcov-report/src/context/directory/handlers/attackProtection.ts.html +307 -0
  29. package/coverage/lcov-report/src/context/directory/handlers/branding.ts.html +448 -0
  30. package/coverage/lcov-report/src/context/directory/handlers/clientGrants.ts.html +262 -0
  31. package/coverage/lcov-report/src/context/directory/handlers/clients.ts.html +319 -0
  32. package/coverage/lcov-report/src/context/directory/handlers/connections.ts.html +370 -0
  33. package/coverage/lcov-report/src/context/directory/handlers/customDomains.ts.html +223 -0
  34. package/coverage/lcov-report/src/context/directory/handlers/databases.ts.html +544 -0
  35. package/coverage/lcov-report/src/context/directory/handlers/emailProvider.ts.html +241 -0
  36. package/coverage/lcov-report/src/context/directory/handlers/emailTemplates.ts.html +316 -0
  37. package/coverage/lcov-report/src/context/directory/handlers/guardianFactorProviders.ts.html +256 -0
  38. package/coverage/lcov-report/src/context/directory/handlers/guardianFactorTemplates.ts.html +247 -0
  39. package/coverage/lcov-report/src/context/directory/handlers/guardianFactors.ts.html +247 -0
  40. package/coverage/lcov-report/src/context/directory/handlers/guardianPhoneFactorMessageTypes.ts.html +214 -0
  41. package/coverage/lcov-report/src/context/directory/handlers/guardianPhoneFactorSelectedProvider.ts.html +226 -0
  42. package/coverage/lcov-report/src/context/directory/handlers/guardianPolicies.ts.html +214 -0
  43. package/coverage/lcov-report/src/context/directory/handlers/hooks.ts.html +274 -0
  44. package/coverage/lcov-report/src/context/directory/handlers/index.html +551 -0
  45. package/coverage/lcov-report/src/context/directory/handlers/index.ts.html +304 -0
  46. package/coverage/lcov-report/src/context/directory/handlers/logStreams.ts.html +220 -0
  47. package/coverage/lcov-report/src/context/directory/handlers/migrations.ts.html +196 -0
  48. package/coverage/lcov-report/src/context/directory/handlers/organizations.ts.html +289 -0
  49. package/coverage/lcov-report/src/context/directory/handlers/pages.ts.html +334 -0
  50. package/coverage/lcov-report/src/context/directory/handlers/prompts.ts.html +313 -0
  51. package/coverage/lcov-report/src/context/directory/handlers/resourceServers.ts.html +229 -0
  52. package/coverage/lcov-report/src/context/directory/handlers/roles.ts.html +253 -0
  53. package/coverage/lcov-report/src/context/directory/handlers/rules.ts.html +262 -0
  54. package/coverage/lcov-report/src/context/directory/handlers/rulesConfigs.ts.html +193 -0
  55. package/coverage/lcov-report/src/context/directory/handlers/tenant.ts.html +289 -0
  56. package/coverage/lcov-report/src/context/directory/handlers/themes.ts.html +232 -0
  57. package/coverage/lcov-report/src/context/directory/handlers/triggers.ts.html +214 -0
  58. package/coverage/lcov-report/src/context/directory/index.html +116 -0
  59. package/coverage/lcov-report/src/context/directory/index.ts.html +400 -0
  60. package/coverage/lcov-report/src/context/index.html +131 -0
  61. package/coverage/lcov-report/src/context/index.ts.html +475 -0
  62. package/coverage/lcov-report/src/context/yaml/handlers/actions.ts.html +349 -0
  63. package/coverage/lcov-report/src/context/yaml/handlers/attackProtection.ts.html +193 -0
  64. package/coverage/lcov-report/src/context/yaml/handlers/branding.ts.html +391 -0
  65. package/coverage/lcov-report/src/context/yaml/handlers/clientGrants.ts.html +199 -0
  66. package/coverage/lcov-report/src/context/yaml/handlers/clients.ts.html +301 -0
  67. package/coverage/lcov-report/src/context/yaml/handlers/connections.ts.html +394 -0
  68. package/coverage/lcov-report/src/context/yaml/handlers/customDomains.ts.html +151 -0
  69. package/coverage/lcov-report/src/context/yaml/handlers/databases.ts.html +346 -0
  70. package/coverage/lcov-report/src/context/yaml/handlers/emailProvider.ts.html +208 -0
  71. package/coverage/lcov-report/src/context/yaml/handlers/emailTemplates.ts.html +241 -0
  72. package/coverage/lcov-report/src/context/yaml/handlers/guardianFactorProviders.ts.html +151 -0
  73. package/coverage/lcov-report/src/context/yaml/handlers/guardianFactorTemplates.ts.html +151 -0
  74. package/coverage/lcov-report/src/context/yaml/handlers/guardianFactors.ts.html +151 -0
  75. package/coverage/lcov-report/src/context/yaml/handlers/guardianPhoneFactorMessageTypes.ts.html +151 -0
  76. package/coverage/lcov-report/src/context/yaml/handlers/guardianPhoneFactorSelectedProvider.ts.html +169 -0
  77. package/coverage/lcov-report/src/context/yaml/handlers/guardianPolicies.ts.html +151 -0
  78. package/coverage/lcov-report/src/context/yaml/handlers/hooks.ts.html +280 -0
  79. package/coverage/lcov-report/src/context/yaml/handlers/index.html +551 -0
  80. package/coverage/lcov-report/src/context/yaml/handlers/index.ts.html +298 -0
  81. package/coverage/lcov-report/src/context/yaml/handlers/logStreams.ts.html +151 -0
  82. package/coverage/lcov-report/src/context/yaml/handlers/migrations.ts.html +145 -0
  83. package/coverage/lcov-report/src/context/yaml/handlers/organizations.ts.html +235 -0
  84. package/coverage/lcov-report/src/context/yaml/handlers/pages.ts.html +268 -0
  85. package/coverage/lcov-report/src/context/yaml/handlers/prompts.ts.html +154 -0
  86. package/coverage/lcov-report/src/context/yaml/handlers/resourceServers.ts.html +154 -0
  87. package/coverage/lcov-report/src/context/yaml/handlers/roles.ts.html +199 -0
  88. package/coverage/lcov-report/src/context/yaml/handlers/rules.ts.html +253 -0
  89. package/coverage/lcov-report/src/context/yaml/handlers/rulesConfigs.ts.html +181 -0
  90. package/coverage/lcov-report/src/context/yaml/handlers/tenant.ts.html +235 -0
  91. package/coverage/lcov-report/src/context/yaml/handlers/themes.ts.html +154 -0
  92. package/coverage/lcov-report/src/context/yaml/handlers/triggers.ts.html +172 -0
  93. package/coverage/lcov-report/src/context/yaml/index.html +116 -0
  94. package/coverage/lcov-report/src/context/yaml/index.ts.html +568 -0
  95. package/coverage/lcov-report/src/index.html +221 -0
  96. package/coverage/lcov-report/src/index.ts.html +361 -0
  97. package/coverage/lcov-report/src/logger.ts.html +133 -0
  98. package/coverage/lcov-report/src/readonly.ts.html +346 -0
  99. package/coverage/lcov-report/src/sessionDurationsToMinutes.ts.html +154 -0
  100. package/coverage/lcov-report/src/tools/auth0/client.ts.html +604 -0
  101. package/coverage/lcov-report/src/tools/auth0/handlers/actions.ts.html +793 -0
  102. package/coverage/lcov-report/src/tools/auth0/handlers/attackProtection.ts.html +367 -0
  103. package/coverage/lcov-report/src/tools/auth0/handlers/branding.ts.html +427 -0
  104. package/coverage/lcov-report/src/tools/auth0/handlers/clientGrants.ts.html +418 -0
  105. package/coverage/lcov-report/src/tools/auth0/handlers/clients.ts.html +340 -0
  106. package/coverage/lcov-report/src/tools/auth0/handlers/connections.ts.html +598 -0
  107. package/coverage/lcov-report/src/tools/auth0/handlers/customDomains.ts.html +379 -0
  108. package/coverage/lcov-report/src/tools/auth0/handlers/databases.ts.html +436 -0
  109. package/coverage/lcov-report/src/tools/auth0/handlers/default.ts.html +1027 -0
  110. package/coverage/lcov-report/src/tools/auth0/handlers/emailProvider.ts.html +274 -0
  111. package/coverage/lcov-report/src/tools/auth0/handlers/emailTemplates.ts.html +337 -0
  112. package/coverage/lcov-report/src/tools/auth0/handlers/guardianFactorProviders.ts.html +301 -0
  113. package/coverage/lcov-report/src/tools/auth0/handlers/guardianFactorTemplates.ts.html +265 -0
  114. package/coverage/lcov-report/src/tools/auth0/handlers/guardianFactors.ts.html +241 -0
  115. package/coverage/lcov-report/src/tools/auth0/handlers/guardianPhoneFactorMessageTypes.ts.html +337 -0
  116. package/coverage/lcov-report/src/tools/auth0/handlers/guardianPhoneFactorSelectedProvider.ts.html +331 -0
  117. package/coverage/lcov-report/src/tools/auth0/handlers/guardianPolicies.ts.html +256 -0
  118. package/coverage/lcov-report/src/tools/auth0/handlers/hooks.ts.html +829 -0
  119. package/coverage/lcov-report/src/tools/auth0/handlers/index.html +566 -0
  120. package/coverage/lcov-report/src/tools/auth0/handlers/index.ts.html +295 -0
  121. package/coverage/lcov-report/src/tools/auth0/handlers/logStreams.ts.html +346 -0
  122. package/coverage/lcov-report/src/tools/auth0/handlers/migrations.ts.html +319 -0
  123. package/coverage/lcov-report/src/tools/auth0/handlers/organizations.ts.html +949 -0
  124. package/coverage/lcov-report/src/tools/auth0/handlers/pages.ts.html +517 -0
  125. package/coverage/lcov-report/src/tools/auth0/handlers/prompts.ts.html +913 -0
  126. package/coverage/lcov-report/src/tools/auth0/handlers/resourceServers.ts.html +412 -0
  127. package/coverage/lcov-report/src/tools/auth0/handlers/roles.ts.html +751 -0
  128. package/coverage/lcov-report/src/tools/auth0/handlers/rules.ts.html +727 -0
  129. package/coverage/lcov-report/src/tools/auth0/handlers/rulesConfigs.ts.html +256 -0
  130. package/coverage/lcov-report/src/tools/auth0/handlers/tenant.ts.html +466 -0
  131. package/coverage/lcov-report/src/tools/auth0/handlers/themes.ts.html +1882 -0
  132. package/coverage/lcov-report/src/tools/auth0/handlers/triggers.ts.html +430 -0
  133. package/coverage/lcov-report/src/tools/auth0/index.html +146 -0
  134. package/coverage/lcov-report/src/tools/auth0/index.ts.html +355 -0
  135. package/coverage/lcov-report/src/tools/auth0/schema.ts.html +184 -0
  136. package/coverage/lcov-report/src/tools/calculateChanges.ts.html +688 -0
  137. package/coverage/lcov-report/src/tools/constants.ts.html +610 -0
  138. package/coverage/lcov-report/src/tools/deploy.ts.html +181 -0
  139. package/coverage/lcov-report/src/tools/index.html +191 -0
  140. package/coverage/lcov-report/src/tools/index.ts.html +127 -0
  141. package/coverage/lcov-report/src/tools/utils.ts.html +796 -0
  142. package/coverage/lcov-report/src/tools/validationError.ts.html +127 -0
  143. package/coverage/lcov-report/src/types.ts.html +1093 -0
  144. package/coverage/lcov-report/src/utils.ts.html +679 -0
  145. package/coverage/lcov.info +7168 -0
  146. package/examples/yaml/config.json.example +1 -1
  147. package/lib/context/directory/handlers/connections.js +3 -2
  148. package/lib/context/yaml/handlers/connections.js +5 -2
  149. package/lib/tools/auth0/handlers/themes.js +11 -3
  150. package/lib/types.d.ts +2 -2
  151. package/package.json +11 -5
@@ -0,0 +1,688 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for src/tools/calculateChanges.ts</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../prettify.css" />
9
+ <link rel="stylesheet" href="../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../index.html">All files</a> / <a href="index.html">src/tools</a> calculateChanges.ts</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">100% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>69/69</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">86.79% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>46/53</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>17/17</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">100% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>61/61</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input oninput="onInput()" type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line high'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a>
191
+ <a name='L126'></a><a href='#L126'>126</a>
192
+ <a name='L127'></a><a href='#L127'>127</a>
193
+ <a name='L128'></a><a href='#L128'>128</a>
194
+ <a name='L129'></a><a href='#L129'>129</a>
195
+ <a name='L130'></a><a href='#L130'>130</a>
196
+ <a name='L131'></a><a href='#L131'>131</a>
197
+ <a name='L132'></a><a href='#L132'>132</a>
198
+ <a name='L133'></a><a href='#L133'>133</a>
199
+ <a name='L134'></a><a href='#L134'>134</a>
200
+ <a name='L135'></a><a href='#L135'>135</a>
201
+ <a name='L136'></a><a href='#L136'>136</a>
202
+ <a name='L137'></a><a href='#L137'>137</a>
203
+ <a name='L138'></a><a href='#L138'>138</a>
204
+ <a name='L139'></a><a href='#L139'>139</a>
205
+ <a name='L140'></a><a href='#L140'>140</a>
206
+ <a name='L141'></a><a href='#L141'>141</a>
207
+ <a name='L142'></a><a href='#L142'>142</a>
208
+ <a name='L143'></a><a href='#L143'>143</a>
209
+ <a name='L144'></a><a href='#L144'>144</a>
210
+ <a name='L145'></a><a href='#L145'>145</a>
211
+ <a name='L146'></a><a href='#L146'>146</a>
212
+ <a name='L147'></a><a href='#L147'>147</a>
213
+ <a name='L148'></a><a href='#L148'>148</a>
214
+ <a name='L149'></a><a href='#L149'>149</a>
215
+ <a name='L150'></a><a href='#L150'>150</a>
216
+ <a name='L151'></a><a href='#L151'>151</a>
217
+ <a name='L152'></a><a href='#L152'>152</a>
218
+ <a name='L153'></a><a href='#L153'>153</a>
219
+ <a name='L154'></a><a href='#L154'>154</a>
220
+ <a name='L155'></a><a href='#L155'>155</a>
221
+ <a name='L156'></a><a href='#L156'>156</a>
222
+ <a name='L157'></a><a href='#L157'>157</a>
223
+ <a name='L158'></a><a href='#L158'>158</a>
224
+ <a name='L159'></a><a href='#L159'>159</a>
225
+ <a name='L160'></a><a href='#L160'>160</a>
226
+ <a name='L161'></a><a href='#L161'>161</a>
227
+ <a name='L162'></a><a href='#L162'>162</a>
228
+ <a name='L163'></a><a href='#L163'>163</a>
229
+ <a name='L164'></a><a href='#L164'>164</a>
230
+ <a name='L165'></a><a href='#L165'>165</a>
231
+ <a name='L166'></a><a href='#L166'>166</a>
232
+ <a name='L167'></a><a href='#L167'>167</a>
233
+ <a name='L168'></a><a href='#L168'>168</a>
234
+ <a name='L169'></a><a href='#L169'>169</a>
235
+ <a name='L170'></a><a href='#L170'>170</a>
236
+ <a name='L171'></a><a href='#L171'>171</a>
237
+ <a name='L172'></a><a href='#L172'>172</a>
238
+ <a name='L173'></a><a href='#L173'>173</a>
239
+ <a name='L174'></a><a href='#L174'>174</a>
240
+ <a name='L175'></a><a href='#L175'>175</a>
241
+ <a name='L176'></a><a href='#L176'>176</a>
242
+ <a name='L177'></a><a href='#L177'>177</a>
243
+ <a name='L178'></a><a href='#L178'>178</a>
244
+ <a name='L179'></a><a href='#L179'>179</a>
245
+ <a name='L180'></a><a href='#L180'>180</a>
246
+ <a name='L181'></a><a href='#L181'>181</a>
247
+ <a name='L182'></a><a href='#L182'>182</a>
248
+ <a name='L183'></a><a href='#L183'>183</a>
249
+ <a name='L184'></a><a href='#L184'>184</a>
250
+ <a name='L185'></a><a href='#L185'>185</a>
251
+ <a name='L186'></a><a href='#L186'>186</a>
252
+ <a name='L187'></a><a href='#L187'>187</a>
253
+ <a name='L188'></a><a href='#L188'>188</a>
254
+ <a name='L189'></a><a href='#L189'>189</a>
255
+ <a name='L190'></a><a href='#L190'>190</a>
256
+ <a name='L191'></a><a href='#L191'>191</a>
257
+ <a name='L192'></a><a href='#L192'>192</a>
258
+ <a name='L193'></a><a href='#L193'>193</a>
259
+ <a name='L194'></a><a href='#L194'>194</a>
260
+ <a name='L195'></a><a href='#L195'>195</a>
261
+ <a name='L196'></a><a href='#L196'>196</a>
262
+ <a name='L197'></a><a href='#L197'>197</a>
263
+ <a name='L198'></a><a href='#L198'>198</a>
264
+ <a name='L199'></a><a href='#L199'>199</a>
265
+ <a name='L200'></a><a href='#L200'>200</a>
266
+ <a name='L201'></a><a href='#L201'>201</a>
267
+ <a name='L202'></a><a href='#L202'>202</a></td><td class="line-coverage quiet"><span class="cline-any cline-yes">1x</span>
268
+ <span class="cline-any cline-neutral">&nbsp;</span>
269
+ <span class="cline-any cline-neutral">&nbsp;</span>
270
+ <span class="cline-any cline-neutral">&nbsp;</span>
271
+ <span class="cline-any cline-neutral">&nbsp;</span>
272
+ <span class="cline-any cline-neutral">&nbsp;</span>
273
+ <span class="cline-any cline-neutral">&nbsp;</span>
274
+ <span class="cline-any cline-neutral">&nbsp;</span>
275
+ <span class="cline-any cline-neutral">&nbsp;</span>
276
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-neutral">&nbsp;</span>
280
+ <span class="cline-any cline-yes">1x</span>
281
+ <span class="cline-any cline-neutral">&nbsp;</span>
282
+ <span class="cline-any cline-neutral">&nbsp;</span>
283
+ <span class="cline-any cline-neutral">&nbsp;</span>
284
+ <span class="cline-any cline-neutral">&nbsp;</span>
285
+ <span class="cline-any cline-neutral">&nbsp;</span>
286
+ <span class="cline-any cline-neutral">&nbsp;</span>
287
+ <span class="cline-any cline-neutral">&nbsp;</span>
288
+ <span class="cline-any cline-neutral">&nbsp;</span>
289
+ <span class="cline-any cline-neutral">&nbsp;</span>
290
+ <span class="cline-any cline-neutral">&nbsp;</span>
291
+ <span class="cline-any cline-yes">14x</span>
292
+ <span class="cline-any cline-neutral">&nbsp;</span>
293
+ <span class="cline-any cline-neutral">&nbsp;</span>
294
+ <span class="cline-any cline-yes">14x</span>
295
+ <span class="cline-any cline-neutral">&nbsp;</span>
296
+ <span class="cline-any cline-yes">14x</span>
297
+ <span class="cline-any cline-neutral">&nbsp;</span>
298
+ <span class="cline-any cline-yes">14x</span>
299
+ <span class="cline-any cline-neutral">&nbsp;</span>
300
+ <span class="cline-any cline-neutral">&nbsp;</span>
301
+ <span class="cline-any cline-yes">4x</span>
302
+ <span class="cline-any cline-neutral">&nbsp;</span>
303
+ <span class="cline-any cline-neutral">&nbsp;</span>
304
+ <span class="cline-any cline-neutral">&nbsp;</span>
305
+ <span class="cline-any cline-neutral">&nbsp;</span>
306
+ <span class="cline-any cline-yes">10x</span>
307
+ <span class="cline-any cline-neutral">&nbsp;</span>
308
+ <span class="cline-any cline-neutral">&nbsp;</span>
309
+ <span class="cline-any cline-neutral">&nbsp;</span>
310
+ <span class="cline-any cline-neutral">&nbsp;</span>
311
+ <span class="cline-any cline-yes">4x</span>
312
+ <span class="cline-any cline-neutral">&nbsp;</span>
313
+ <span class="cline-any cline-yes">4x</span>
314
+ <span class="cline-any cline-neutral">&nbsp;</span>
315
+ <span class="cline-any cline-yes">7x</span>
316
+ <span class="cline-any cline-neutral">&nbsp;</span>
317
+ <span class="cline-any cline-yes">2x</span>
318
+ <span class="cline-any cline-yes">1x</span>
319
+ <span class="cline-any cline-neutral">&nbsp;</span>
320
+ <span class="cline-any cline-neutral">&nbsp;</span>
321
+ <span class="cline-any cline-yes">1x</span>
322
+ <span class="cline-any cline-neutral">&nbsp;</span>
323
+ <span class="cline-any cline-neutral">&nbsp;</span>
324
+ <span class="cline-any cline-neutral">&nbsp;</span>
325
+ <span class="cline-any cline-neutral">&nbsp;</span>
326
+ <span class="cline-any cline-neutral">&nbsp;</span>
327
+ <span class="cline-any cline-neutral">&nbsp;</span>
328
+ <span class="cline-any cline-neutral">&nbsp;</span>
329
+ <span class="cline-any cline-neutral">&nbsp;</span>
330
+ <span class="cline-any cline-neutral">&nbsp;</span>
331
+ <span class="cline-any cline-neutral">&nbsp;</span>
332
+ <span class="cline-any cline-yes">6x</span>
333
+ <span class="cline-any cline-neutral">&nbsp;</span>
334
+ <span class="cline-any cline-neutral">&nbsp;</span>
335
+ <span class="cline-any cline-neutral">&nbsp;</span>
336
+ <span class="cline-any cline-neutral">&nbsp;</span>
337
+ <span class="cline-any cline-yes">3x</span>
338
+ <span class="cline-any cline-neutral">&nbsp;</span>
339
+ <span class="cline-any cline-yes">3x</span>
340
+ <span class="cline-any cline-yes">3x</span>
341
+ <span class="cline-any cline-neutral">&nbsp;</span>
342
+ <span class="cline-any cline-neutral">&nbsp;</span>
343
+ <span class="cline-any cline-neutral">&nbsp;</span>
344
+ <span class="cline-any cline-neutral">&nbsp;</span>
345
+ <span class="cline-any cline-neutral">&nbsp;</span>
346
+ <span class="cline-any cline-neutral">&nbsp;</span>
347
+ <span class="cline-any cline-neutral">&nbsp;</span>
348
+ <span class="cline-any cline-neutral">&nbsp;</span>
349
+ <span class="cline-any cline-neutral">&nbsp;</span>
350
+ <span class="cline-any cline-yes">14x</span>
351
+ <span class="cline-any cline-neutral">&nbsp;</span>
352
+ <span class="cline-any cline-neutral">&nbsp;</span>
353
+ <span class="cline-any cline-yes">1x</span>
354
+ <span class="cline-any cline-neutral">&nbsp;</span>
355
+ <span class="cline-any cline-neutral">&nbsp;</span>
356
+ <span class="cline-any cline-neutral">&nbsp;</span>
357
+ <span class="cline-any cline-neutral">&nbsp;</span>
358
+ <span class="cline-any cline-neutral">&nbsp;</span>
359
+ <span class="cline-any cline-neutral">&nbsp;</span>
360
+ <span class="cline-any cline-neutral">&nbsp;</span>
361
+ <span class="cline-any cline-neutral">&nbsp;</span>
362
+ <span class="cline-any cline-neutral">&nbsp;</span>
363
+ <span class="cline-any cline-neutral">&nbsp;</span>
364
+ <span class="cline-any cline-neutral">&nbsp;</span>
365
+ <span class="cline-any cline-neutral">&nbsp;</span>
366
+ <span class="cline-any cline-neutral">&nbsp;</span>
367
+ <span class="cline-any cline-yes">88x</span>
368
+ <span class="cline-any cline-yes">88x</span>
369
+ <span class="cline-any cline-yes">88x</span>
370
+ <span class="cline-any cline-yes">88x</span>
371
+ <span class="cline-any cline-neutral">&nbsp;</span>
372
+ <span class="cline-any cline-yes">88x</span>
373
+ <span class="cline-any cline-yes">87x</span>
374
+ <span class="cline-any cline-yes">94x</span>
375
+ <span class="cline-any cline-yes">62x</span>
376
+ <span class="cline-any cline-yes">62x</span>
377
+ <span class="cline-any cline-yes">31x</span>
378
+ <span class="cline-any cline-neutral">&nbsp;</span>
379
+ <span class="cline-any cline-neutral">&nbsp;</span>
380
+ <span class="cline-any cline-yes">63x</span>
381
+ <span class="cline-any cline-neutral">&nbsp;</span>
382
+ <span class="cline-any cline-neutral">&nbsp;</span>
383
+ <span class="cline-any cline-yes">88x</span>
384
+ <span class="cline-any cline-yes">168x</span>
385
+ <span class="cline-any cline-yes">158x</span>
386
+ <span class="cline-any cline-yes">158x</span>
387
+ <span class="cline-any cline-yes">28x</span>
388
+ <span class="cline-any cline-yes">27x</span>
389
+ <span class="cline-any cline-yes">12x</span>
390
+ <span class="cline-any cline-neutral">&nbsp;</span>
391
+ <span class="cline-any cline-neutral">&nbsp;</span>
392
+ <span class="cline-any cline-neutral">&nbsp;</span>
393
+ <span class="cline-any cline-yes">146x</span>
394
+ <span class="cline-any cline-neutral">&nbsp;</span>
395
+ <span class="cline-any cline-neutral">&nbsp;</span>
396
+ <span class="cline-any cline-yes">158x</span>
397
+ <span class="cline-any cline-yes">87x</span>
398
+ <span class="cline-any cline-yes">87x</span>
399
+ <span class="cline-any cline-neutral">&nbsp;</span>
400
+ <span class="cline-any cline-yes">41x</span>
401
+ <span class="cline-any cline-neutral">&nbsp;</span>
402
+ <span class="cline-any cline-neutral">&nbsp;</span>
403
+ <span class="cline-any cline-yes">44x</span>
404
+ <span class="cline-any cline-neutral">&nbsp;</span>
405
+ <span class="cline-any cline-neutral">&nbsp;</span>
406
+ <span class="cline-any cline-yes">34x</span>
407
+ <span class="cline-any cline-neutral">&nbsp;</span>
408
+ <span class="cline-any cline-yes">62x</span>
409
+ <span class="cline-any cline-yes">62x</span>
410
+ <span class="cline-any cline-neutral">&nbsp;</span>
411
+ <span class="cline-any cline-neutral">&nbsp;</span>
412
+ <span class="cline-any cline-neutral">&nbsp;</span>
413
+ <span class="cline-any cline-neutral">&nbsp;</span>
414
+ <span class="cline-any cline-neutral">&nbsp;</span>
415
+ <span class="cline-any cline-neutral">&nbsp;</span>
416
+ <span class="cline-any cline-neutral">&nbsp;</span>
417
+ <span class="cline-any cline-neutral">&nbsp;</span>
418
+ <span class="cline-any cline-neutral">&nbsp;</span>
419
+ <span class="cline-any cline-neutral">&nbsp;</span>
420
+ <span class="cline-any cline-neutral">&nbsp;</span>
421
+ <span class="cline-any cline-neutral">&nbsp;</span>
422
+ <span class="cline-any cline-neutral">&nbsp;</span>
423
+ <span class="cline-any cline-neutral">&nbsp;</span>
424
+ <span class="cline-any cline-neutral">&nbsp;</span>
425
+ <span class="cline-any cline-neutral">&nbsp;</span>
426
+ <span class="cline-any cline-neutral">&nbsp;</span>
427
+ <span class="cline-any cline-neutral">&nbsp;</span>
428
+ <span class="cline-any cline-neutral">&nbsp;</span>
429
+ <span class="cline-any cline-neutral">&nbsp;</span>
430
+ <span class="cline-any cline-neutral">&nbsp;</span>
431
+ <span class="cline-any cline-neutral">&nbsp;</span>
432
+ <span class="cline-any cline-yes">88x</span>
433
+ <span class="cline-any cline-neutral">&nbsp;</span>
434
+ <span class="cline-any cline-yes">168x</span>
435
+ <span class="cline-any cline-neutral">&nbsp;</span>
436
+ <span class="cline-any cline-neutral">&nbsp;</span>
437
+ <span class="cline-any cline-neutral">&nbsp;</span>
438
+ <span class="cline-any cline-neutral">&nbsp;</span>
439
+ <span class="cline-any cline-neutral">&nbsp;</span>
440
+ <span class="cline-any cline-yes">88x</span>
441
+ <span class="cline-any cline-yes">62x</span>
442
+ <span class="cline-any cline-yes">62x</span>
443
+ <span class="cline-any cline-yes">62x</span>
444
+ <span class="cline-any cline-neutral">&nbsp;</span>
445
+ <span class="cline-any cline-yes">61x</span>
446
+ <span class="cline-any cline-yes">61x</span>
447
+ <span class="cline-any cline-yes">61x</span>
448
+ <span class="cline-any cline-yes">59x</span>
449
+ <span class="cline-any cline-neutral">&nbsp;</span>
450
+ <span class="cline-any cline-yes">61x</span>
451
+ <span class="cline-any cline-yes">3x</span>
452
+ <span class="cline-any cline-yes">3x</span>
453
+ <span class="cline-any cline-neutral">&nbsp;</span>
454
+ <span class="cline-any cline-neutral">&nbsp;</span>
455
+ <span class="cline-any cline-neutral">&nbsp;</span>
456
+ <span class="cline-any cline-neutral">&nbsp;</span>
457
+ <span class="cline-any cline-neutral">&nbsp;</span>
458
+ <span class="cline-any cline-neutral">&nbsp;</span>
459
+ <span class="cline-any cline-neutral">&nbsp;</span>
460
+ <span class="cline-any cline-neutral">&nbsp;</span>
461
+ <span class="cline-any cline-yes">88x</span>
462
+ <span class="cline-any cline-neutral">&nbsp;</span>
463
+ <span class="cline-any cline-neutral">&nbsp;</span>
464
+ <span class="cline-any cline-neutral">&nbsp;</span>
465
+ <span class="cline-any cline-neutral">&nbsp;</span>
466
+ <span class="cline-any cline-neutral">&nbsp;</span>
467
+ <span class="cline-any cline-neutral">&nbsp;</span>
468
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">import log from '../logger';
469
+ import APIHandler from '../tools/auth0/handlers/default';
470
+ import { Asset, CalculatedChanges } from '../types';
471
+ &nbsp;
472
+ /**
473
+ * @template T
474
+ * @param {typeof import('./auth0/handlers/default').default} handler
475
+ * @param {T} desiredAssetState
476
+ * @param {T} currentAssetState
477
+ * @param {string[]} [objectFields=[]]
478
+ * @param {boolean} [allowDelete]
479
+ * @returns T
480
+ */
481
+ export function processChangedObjectFields({
482
+ handler,
483
+ desiredAssetState,
484
+ currentAssetState,
485
+ allowDelete,
486
+ }: {
487
+ handler: APIHandler;
488
+ desiredAssetState: Asset;
489
+ currentAssetState: Asset;
490
+ allowDelete: boolean;
491
+ }) {
492
+ const desiredAssetStateWithChanges = { ...desiredAssetState };
493
+ &nbsp;
494
+ // eslint-disable-next-line no-restricted-syntax
495
+ for (const fieldName of handler.objectFields) {
496
+ const areDesiredStateAndCurrentStateEmpty =
497
+ Object.keys(desiredAssetState[fieldName] || {}).length === 0 &amp;&amp;
498
+ Object.keys(currentAssetState[fieldName] || {}).length === 0;
499
+ if (areDesiredStateAndCurrentStateEmpty) {
500
+ // If both the desired state and current state for a given object is empty, it is a no-op and can skip
501
+ // eslint-disable-next-line no-continue
502
+ continue;
503
+ }
504
+ &nbsp;
505
+ // A desired state that omits the objectField OR that has it as an empty object should
506
+ // signal that all fields should be removed (subject to ALLOW_DELETE).
507
+ if (desiredAssetState[fieldName] &amp;&amp; Object.keys(desiredAssetState[fieldName]).length) {
508
+ // Both the current and desired state have the object field. Here's where we need to map
509
+ // to the APIv2 protocol of setting `null` values for deleted fields.
510
+ // For new and modified properties of the object field, we can just pass them through to
511
+ // APIv2.
512
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (currentAssetState[fieldName]) {
513
+ // eslint-disable-next-line no-restricted-syntax
514
+ for (const currentObjectFieldPropertyName of Object.keys(currentAssetState[fieldName])) {
515
+ // Loop through each object property that exists currently
516
+ if (desiredAssetState[fieldName][currentObjectFieldPropertyName] === undefined) {
517
+ // If the object has a property that exists now but doesn't exist in the proposed state
518
+ if (allowDelete) {
519
+ desiredAssetStateWithChanges[fieldName][currentObjectFieldPropertyName] = null;
520
+ } else {
521
+ // If deletes aren't allowed, do outright delete the property within the object
522
+ log.warn(
523
+ `Detected that the ${fieldName} of the following ${
524
+ handler.name || handler.id || <span class="branch-2 cbranch-no" title="branch not covered" >''</span>
525
+ } should be deleted. Doing so may be destructive.\nYou can enable deletes by setting 'AUTH0_ALLOW_DELETE' to true in the config\n${handler.objString(
526
+ currentAssetState
527
+ )}`
528
+ );
529
+ }
530
+ }
531
+ }
532
+ }
533
+ } else if (allowDelete) {
534
+ // If the desired state does not have the object field and the current state does, we
535
+ // should mark *all* properties for deletion by specifying an empty object.
536
+ //
537
+ // See: https://auth0.com/docs/users/metadata/manage-metadata-api#delete-user-metadata
538
+ desiredAssetStateWithChanges[fieldName] = {};
539
+ } else {
540
+ delete desiredAssetStateWithChanges[fieldName];
541
+ log.warn(
542
+ `Detected that the ${fieldName} of the following ${
543
+ handler.name || handler.id || <span class="branch-2 cbranch-no" title="branch not covered" >''</span>
544
+ } should be emptied. Doing so may be destructive.\nYou can enable deletes by setting 'AUTH0_ALLOW_DELETE' to true in the config\n${handler.objString(
545
+ currentAssetState
546
+ )}`
547
+ );
548
+ }
549
+ }
550
+ &nbsp;
551
+ return desiredAssetStateWithChanges;
552
+ }
553
+ &nbsp;
554
+ export function calculateChanges({
555
+ handler,
556
+ assets,
557
+ existing,
558
+ identifiers = <span class="branch-0 cbranch-no" title="branch not covered" >['id', 'name'],</span>
559
+ allowDelete,
560
+ }: {
561
+ handler: APIHandler;
562
+ assets: Asset[];
563
+ existing: Asset[];
564
+ identifiers: string[];
565
+ allowDelete: boolean;
566
+ }): CalculatedChanges {
567
+ // Calculate the changes required between two sets of assets.
568
+ const update: Asset[] = [];
569
+ let del: Asset[] = [...existing];
570
+ let create: Asset[] = [...assets];
571
+ const conflicts: Asset[] = [];
572
+ &nbsp;
573
+ const findByKeyValue = (key: string, value: string, arr: Asset[]): Asset | undefined =&gt;
574
+ arr.find((e) =&gt; {
575
+ if (Array.isArray(key)) {
576
+ const values = key.map((k) =&gt; e[k]);
577
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (values.every((v) =&gt; v)) {
578
+ return value === values.join('-');
579
+ }
580
+ }
581
+ return e[key] === value;
582
+ });
583
+ &nbsp;
584
+ const processAssets = (id: string, arr: Asset[]) =&gt; {
585
+ arr.forEach((asset) =&gt; {
586
+ const assetIdValue: string | undefined = (() =&gt; {
587
+ if (Array.isArray(id)) {
588
+ const values = id.map((i) =&gt; asset[i]);
589
+ if (values.every((v) =&gt; v)) {
590
+ return values.join('-');
591
+ }
592
+ }
593
+ &nbsp;
594
+ return asset[id] as string;
595
+ })();
596
+ &nbsp;
597
+ if (assetIdValue !== undefined) {
598
+ const found = findByKeyValue(id, assetIdValue, del);
599
+ if (found !== undefined) {
600
+ // Delete from existing
601
+ del = del.filter((e) =&gt; e !== found);
602
+ &nbsp;
603
+ // Delete from create as it's an update
604
+ create = create.filter((e) =&gt; e !== asset);
605
+ &nbsp;
606
+ // Append identifiers to asset
607
+ update.push({
608
+ ...identifiers.reduce((obj, i) =&gt; {
609
+ if (found[i]) obj[i] = found[i];
610
+ return obj;
611
+ }, {}),
612
+ // If we have any object fields, we need to make sure that they get
613
+ // special treatment. When different metadata objects are passed to APIv2
614
+ // properties must explicitly be marked for deletion by indicating a `null`
615
+ // value.
616
+ ...(handler.objectFields.length
617
+ ? processChangedObjectFields({
618
+ handler,
619
+ desiredAssetState: asset,
620
+ currentAssetState: found,
621
+ allowDelete,
622
+ })
623
+ : asset),
624
+ });
625
+ }
626
+ }
627
+ });
628
+ };
629
+ &nbsp;
630
+ // Loop through identifiers (in order) to try match assets to existing
631
+ // If existing then update if not create
632
+ // The remainder will be deleted
633
+ for (const id of identifiers) {
634
+ // eslint-disable-line
635
+ processAssets(id, [...create]);
636
+ }
637
+ &nbsp;
638
+ // Check if there are assets with names that will conflict with existing names during the update process
639
+ // This will rename those assets to a temp random name first
640
+ // This assumes the first identifiers is the unique identifier
641
+ if (identifiers.includes('name')) {
642
+ const uniqueID = identifiers[0];
643
+ const futureAssets: Asset[] = [...create, ...update];
644
+ futureAssets.forEach((a) =&gt; {
645
+ // If the conflicting item is going to be deleted then skip
646
+ const inDeleted = del.filter((e) =&gt; e.name === a.name &amp;&amp; <span class="branch-1 cbranch-no" title="branch not covered" >e[uniqueID] !== a[uniqueID])</span>[0];
647
+ <span class="missing-if-branch" title="else path not taken" >E</span>if (!inDeleted) {
648
+ const conflict = existing.filter(
649
+ (e) =&gt; e.name === a.name &amp;&amp; e[uniqueID] !== a[uniqueID]
650
+ )[0];
651
+ if (conflict) {
652
+ const temp = Math.random().toString(36).substr(2, 5);
653
+ conflicts.push({
654
+ ...conflict,
655
+ name: `${conflict.name}-${temp}`,
656
+ });
657
+ }
658
+ }
659
+ });
660
+ }
661
+ &nbsp;
662
+ return {
663
+ del,
664
+ update,
665
+ conflicts,
666
+ create,
667
+ };
668
+ }
669
+ &nbsp;</pre></td></tr></table></pre>
670
+
671
+ <div class='push'></div><!-- for sticky footer -->
672
+ </div><!-- /wrapper -->
673
+ <div class='footer quiet pad2 space-top1 center small'>
674
+ Code coverage generated by
675
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
676
+ at Mon Aug 01 2022 17:29:40 GMT+0000 (Coordinated Universal Time)
677
+ </div>
678
+ <script src="../../prettify.js"></script>
679
+ <script>
680
+ window.onload = function () {
681
+ prettyPrint();
682
+ };
683
+ </script>
684
+ <script src="../../sorter.js"></script>
685
+ <script src="../../block-navigation.js"></script>
686
+ </body>
687
+ </html>
688
+