@rockcarver/frodo-cli 0.23.1-7 → 0.24.1-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/CHANGELOG.md +75 -1
  2. package/esm/app.js.map +1 -1
  3. package/esm/cli/FrodoCommand.js.map +1 -1
  4. package/esm/cli/_template/something-delete.js.map +1 -1
  5. package/esm/cli/_template/something-describe.js.map +1 -1
  6. package/esm/cli/_template/something-else-delete.js.map +1 -1
  7. package/esm/cli/_template/something-else-describe.js.map +1 -1
  8. package/esm/cli/_template/something-else-export.js.map +1 -1
  9. package/esm/cli/_template/something-else-import.js.map +1 -1
  10. package/esm/cli/_template/something-else-list.js.map +1 -1
  11. package/esm/cli/_template/something-else.js.map +1 -1
  12. package/esm/cli/_template/something-export.js.map +1 -1
  13. package/esm/cli/_template/something-import.js.map +1 -1
  14. package/esm/cli/_template/something-list.js.map +1 -1
  15. package/esm/cli/_template/something-other-delete.js.map +1 -1
  16. package/esm/cli/_template/something-other-describe.js.map +1 -1
  17. package/esm/cli/_template/something-other-export.js.map +1 -1
  18. package/esm/cli/_template/something-other-import.js.map +1 -1
  19. package/esm/cli/_template/something-other-list.js.map +1 -1
  20. package/esm/cli/_template/something-other.js.map +1 -1
  21. package/esm/cli/_template/something.js.map +1 -1
  22. package/esm/cli/admin/admin-add-autoid-static-user-mapping.js.map +1 -1
  23. package/esm/cli/admin/admin-create-oauth2-client-with-admin-privileges.js.map +1 -1
  24. package/esm/cli/admin/admin-get-access-token.js.map +1 -1
  25. package/esm/cli/admin/admin-grant-oauth2-client-admin-privileges.js.map +1 -1
  26. package/esm/cli/admin/admin-hide-generic-extension-attributes.js.map +1 -1
  27. package/esm/cli/admin/admin-list-oauth2-clients-with-admin-privileges.js.map +1 -1
  28. package/esm/cli/admin/admin-list-oauth2-clients-with-custom-privileges.js.map +1 -1
  29. package/esm/cli/admin/admin-list-static-user-mappings.js.map +1 -1
  30. package/esm/cli/admin/admin-remove-static-user-mapping.js.map +1 -1
  31. package/esm/cli/admin/admin-repair-org-model.js.map +1 -1
  32. package/esm/cli/admin/admin-revoke-oauth2-client-admin-privileges.js.map +1 -1
  33. package/esm/cli/admin/admin-show-generic-extension-attributes.js.map +1 -1
  34. package/esm/cli/admin/admin.js.map +1 -1
  35. package/esm/cli/agent/agent-delete.js.map +1 -1
  36. package/esm/cli/agent/agent-describe.js.map +1 -1
  37. package/esm/cli/agent/agent-export.js.map +1 -1
  38. package/esm/cli/agent/agent-gateway-delete.js.map +1 -1
  39. package/esm/cli/agent/agent-gateway-describe.js.map +1 -1
  40. package/esm/cli/agent/agent-gateway-export.js.map +1 -1
  41. package/esm/cli/agent/agent-gateway-import.js.map +1 -1
  42. package/esm/cli/agent/agent-gateway-list.js.map +1 -1
  43. package/esm/cli/agent/agent-gateway.js.map +1 -1
  44. package/esm/cli/agent/agent-import.js.map +1 -1
  45. package/esm/cli/agent/agent-java-delete.js.map +1 -1
  46. package/esm/cli/agent/agent-java-describe.js.map +1 -1
  47. package/esm/cli/agent/agent-java-export.js.map +1 -1
  48. package/esm/cli/agent/agent-java-import.js.map +1 -1
  49. package/esm/cli/agent/agent-java-list.js.map +1 -1
  50. package/esm/cli/agent/agent-java.js.map +1 -1
  51. package/esm/cli/agent/agent-list.js.map +1 -1
  52. package/esm/cli/agent/agent-web-delete.js.map +1 -1
  53. package/esm/cli/agent/agent-web-describe.js.map +1 -1
  54. package/esm/cli/agent/agent-web-export.js.map +1 -1
  55. package/esm/cli/agent/agent-web-import.js.map +1 -1
  56. package/esm/cli/agent/agent-web-list.js.map +1 -1
  57. package/esm/cli/agent/agent-web.js.map +1 -1
  58. package/esm/cli/agent/agent.js.map +1 -1
  59. package/esm/cli/app/app-delete.js.map +1 -1
  60. package/esm/cli/app/app-describe.js.map +1 -1
  61. package/esm/cli/app/app-export.js.map +1 -1
  62. package/esm/cli/app/app-import.js.map +1 -1
  63. package/esm/cli/app/app-list.js.map +1 -1
  64. package/esm/cli/app/app.js.map +1 -1
  65. package/esm/cli/authz/authz-policy-delete.js.map +1 -1
  66. package/esm/cli/authz/authz-policy-describe.js.map +1 -1
  67. package/esm/cli/authz/authz-policy-export.js +16 -11
  68. package/esm/cli/authz/authz-policy-export.js.map +1 -1
  69. package/esm/cli/authz/authz-policy-import.js +44 -5
  70. package/esm/cli/authz/authz-policy-import.js.map +1 -1
  71. package/esm/cli/authz/authz-policy-list.js.map +1 -1
  72. package/esm/cli/authz/authz-policy.js.map +1 -1
  73. package/esm/cli/authz/authz-set-delete.js.map +1 -1
  74. package/esm/cli/authz/authz-set-describe.js.map +1 -1
  75. package/esm/cli/authz/authz-set-export.js +7 -4
  76. package/esm/cli/authz/authz-set-export.js.map +1 -1
  77. package/esm/cli/authz/authz-set-import.js +10 -6
  78. package/esm/cli/authz/authz-set-import.js.map +1 -1
  79. package/esm/cli/authz/authz-set-list.js.map +1 -1
  80. package/esm/cli/authz/authz-set.js.map +1 -1
  81. package/esm/cli/authz/authz-type-delete.js +18 -13
  82. package/esm/cli/authz/authz-type-delete.js.map +1 -1
  83. package/esm/cli/authz/authz-type-describe.js +7 -3
  84. package/esm/cli/authz/authz-type-describe.js.map +1 -1
  85. package/esm/cli/authz/authz-type-export.js +32 -5
  86. package/esm/cli/authz/authz-type-export.js.map +1 -1
  87. package/esm/cli/authz/authz-type-import.js +38 -5
  88. package/esm/cli/authz/authz-type-import.js.map +1 -1
  89. package/esm/cli/authz/authz-type-list.js +4 -10
  90. package/esm/cli/authz/authz-type-list.js.map +1 -1
  91. package/esm/cli/authz/authz-type.js.map +1 -1
  92. package/esm/cli/authz/authz.js.map +1 -1
  93. package/esm/cli/conn/conn-delete.js.map +1 -1
  94. package/esm/cli/conn/conn-describe.js.map +1 -1
  95. package/esm/cli/conn/conn-list.js.map +1 -1
  96. package/esm/cli/conn/conn-save.js.map +1 -1
  97. package/esm/cli/conn/conn.js.map +1 -1
  98. package/esm/cli/email/email-template-export.js.map +1 -1
  99. package/esm/cli/email/email-template-import.js.map +1 -1
  100. package/esm/cli/email/email-template-list.js.map +1 -1
  101. package/esm/cli/email/email-template.js.map +1 -1
  102. package/esm/cli/email/email.js.map +1 -1
  103. package/esm/cli/esv/esv-apply.js.map +1 -1
  104. package/esm/cli/esv/esv-secret-create.js.map +1 -1
  105. package/esm/cli/esv/esv-secret-delete.js.map +1 -1
  106. package/esm/cli/esv/esv-secret-describe.js.map +1 -1
  107. package/esm/cli/esv/esv-secret-export.js.map +1 -1
  108. package/esm/cli/esv/esv-secret-import.js.map +1 -1
  109. package/esm/cli/esv/esv-secret-list.js.map +1 -1
  110. package/esm/cli/esv/esv-secret-set.js.map +1 -1
  111. package/esm/cli/esv/esv-secret-version-activate.js.map +1 -1
  112. package/esm/cli/esv/esv-secret-version-create.js.map +1 -1
  113. package/esm/cli/esv/esv-secret-version-deactivate.js.map +1 -1
  114. package/esm/cli/esv/esv-secret-version-delete.js.map +1 -1
  115. package/esm/cli/esv/esv-secret-version-list.js.map +1 -1
  116. package/esm/cli/esv/esv-secret-version.js.map +1 -1
  117. package/esm/cli/esv/esv-secret.js.map +1 -1
  118. package/esm/cli/esv/esv-variable-create.js.map +1 -1
  119. package/esm/cli/esv/esv-variable-delete.js.map +1 -1
  120. package/esm/cli/esv/esv-variable-describe.js.map +1 -1
  121. package/esm/cli/esv/esv-variable-export.js.map +1 -1
  122. package/esm/cli/esv/esv-variable-import.js.map +1 -1
  123. package/esm/cli/esv/esv-variable-list.js.map +1 -1
  124. package/esm/cli/esv/esv-variable-set.js.map +1 -1
  125. package/esm/cli/esv/esv-variable.js.map +1 -1
  126. package/esm/cli/esv/esv.js.map +1 -1
  127. package/esm/cli/idm/idm-count.js.map +1 -1
  128. package/esm/cli/idm/idm-export.js.map +1 -1
  129. package/esm/cli/idm/idm-import.js.map +1 -1
  130. package/esm/cli/idm/idm-list.js.map +1 -1
  131. package/esm/cli/idm/idm.js.map +1 -1
  132. package/esm/cli/idp/idp-export.js.map +1 -1
  133. package/esm/cli/idp/idp-import.js.map +1 -1
  134. package/esm/cli/idp/idp-list.js.map +1 -1
  135. package/esm/cli/idp/idp.js.map +1 -1
  136. package/esm/cli/info/info.js.map +1 -1
  137. package/esm/cli/journey/journey-delete.js.map +1 -1
  138. package/esm/cli/journey/journey-describe.js.map +1 -1
  139. package/esm/cli/journey/journey-disable.js.map +1 -1
  140. package/esm/cli/journey/journey-enable.js.map +1 -1
  141. package/esm/cli/journey/journey-export.js.map +1 -1
  142. package/esm/cli/journey/journey-import.js.map +1 -1
  143. package/esm/cli/journey/journey-list.js.map +1 -1
  144. package/esm/cli/journey/journey-prune.js.map +1 -1
  145. package/esm/cli/journey/journey.js.map +1 -1
  146. package/esm/cli/logging/logs-fetch.js.map +1 -1
  147. package/esm/cli/logging/logs-list.js.map +1 -1
  148. package/esm/cli/logging/logs-tail.js.map +1 -1
  149. package/esm/cli/logging/logs.js.map +1 -1
  150. package/esm/cli/realm/realm-add-custom-domain.js.map +1 -1
  151. package/esm/cli/realm/realm-describe.js.map +1 -1
  152. package/esm/cli/realm/realm-list.js.map +1 -1
  153. package/esm/cli/realm/realm-remove-custom-domain.js.map +1 -1
  154. package/esm/cli/realm/realm.js.map +1 -1
  155. package/esm/cli/saml/saml-cot-export.js.map +1 -1
  156. package/esm/cli/saml/saml-cot-import.js.map +1 -1
  157. package/esm/cli/saml/saml-cot-list.js.map +1 -1
  158. package/esm/cli/saml/saml-cot.js.map +1 -1
  159. package/esm/cli/saml/saml-delete.js.map +1 -1
  160. package/esm/cli/saml/saml-describe.js.map +1 -1
  161. package/esm/cli/saml/saml-export.js.map +1 -1
  162. package/esm/cli/saml/saml-import.js.map +1 -1
  163. package/esm/cli/saml/saml-list.js.map +1 -1
  164. package/esm/cli/saml/saml-metadata-export.js.map +1 -1
  165. package/esm/cli/saml/saml-metadata.js.map +1 -1
  166. package/esm/cli/saml/saml.js.map +1 -1
  167. package/esm/cli/script/script-delete.js.map +1 -1
  168. package/esm/cli/script/script-describe.js.map +1 -1
  169. package/esm/cli/script/script-export.js.map +1 -1
  170. package/esm/cli/script/script-import.js.map +1 -1
  171. package/esm/cli/script/script-list.js.map +1 -1
  172. package/esm/cli/script/script.js.map +1 -1
  173. package/esm/cli/service/service-delete.js.map +1 -1
  174. package/esm/cli/service/service-export.js.map +1 -1
  175. package/esm/cli/service/service-import.js.map +1 -1
  176. package/esm/cli/service/service-list.js.map +1 -1
  177. package/esm/cli/service/service.js.map +1 -1
  178. package/esm/cli/theme/theme-delete.e2e.test_.js.map +1 -1
  179. package/esm/cli/theme/theme-delete.js.map +1 -1
  180. package/esm/cli/theme/theme-export.js.map +1 -1
  181. package/esm/cli/theme/theme-import.js.map +1 -1
  182. package/esm/cli/theme/theme-list.e2e.test_.js.map +1 -1
  183. package/esm/cli/theme/theme-list.js.map +1 -1
  184. package/esm/cli/theme/theme.js.map +1 -1
  185. package/esm/loader.js.map +1 -1
  186. package/esm/ops/AgentOps.js.map +1 -1
  187. package/esm/ops/CirclesOfTrustOps.js.map +1 -1
  188. package/esm/ops/ConnectionProfileOps.js.map +1 -1
  189. package/esm/ops/EmailTemplateOps.js.map +1 -1
  190. package/esm/ops/IdmOps.js.map +1 -1
  191. package/esm/ops/IdpOps.js.map +1 -1
  192. package/esm/ops/JourneyOps.js.map +1 -1
  193. package/esm/ops/NodeOps.js.map +1 -1
  194. package/esm/ops/OAuth2ClientOps.js.map +1 -1
  195. package/esm/ops/PolicyOps.js +117 -15
  196. package/esm/ops/PolicyOps.js.map +1 -1
  197. package/esm/ops/PolicySetOps.js +17 -10
  198. package/esm/ops/PolicySetOps.js.map +1 -1
  199. package/esm/ops/ResourceTypeOps.js +156 -25
  200. package/esm/ops/ResourceTypeOps.js.map +1 -1
  201. package/esm/ops/Saml2Ops.js.map +1 -1
  202. package/esm/ops/Saml2Ops.test_.js.map +1 -1
  203. package/esm/ops/ScriptOps.js.map +1 -1
  204. package/esm/ops/ServiceOps.js.map +1 -1
  205. package/esm/ops/ThemeOps.js.map +1 -1
  206. package/esm/ops/utils/OpsUtils.js.map +1 -1
  207. package/esm/ops/utils/Wordwrap.js.map +1 -1
  208. package/esm/utils/Config.js.map +1 -1
  209. package/esm/utils/Console.js.map +1 -1
  210. package/esm/utils/ExportImportUtils.js.map +1 -1
  211. package/esm/utils/Version.js.map +1 -1
  212. package/package.json +2 -2
@@ -10,7 +10,9 @@ const {
10
10
  exportPolicy,
11
11
  exportPolicies,
12
12
  exportPoliciesByPolicySet,
13
- importPolicy
13
+ importPolicy,
14
+ importFirstPolicy,
15
+ importPolicies
14
16
  } = Policy;
15
17
  const {
16
18
  getRealmName
@@ -214,8 +216,9 @@ export async function deletePoliciesByPolicySet(policySetId) {
214
216
  * @returns {Promise<boolean>} true if successful, false otherwise
215
217
  */
216
218
  export async function exportPolicyToFile(policyId, file, options = {
217
- useStringArrays: true,
218
- deps: true
219
+ deps: true,
220
+ prereqs: false,
221
+ useStringArrays: true
219
222
  }) {
220
223
  let outcome = false;
221
224
  debugMessage(`cli.PolicyOps.exportPolicyToFile: begin`);
@@ -243,8 +246,9 @@ export async function exportPolicyToFile(policyId, file, options = {
243
246
  * @returns {Promise<boolean>} true if successful, false otherwise
244
247
  */
245
248
  export async function exportPoliciesToFile(file, options = {
246
- useStringArrays: true,
247
- deps: true
249
+ deps: true,
250
+ prereqs: false,
251
+ useStringArrays: true
248
252
  }) {
249
253
  let outcome = false;
250
254
  debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);
@@ -273,14 +277,15 @@ export async function exportPoliciesToFile(file, options = {
273
277
  * @returns {Promise<boolean>} true if successful, false otherwise
274
278
  */
275
279
  export async function exportPoliciesByPolicySetToFile(policySetId, file, options = {
276
- useStringArrays: true,
277
- deps: true
280
+ deps: true,
281
+ prereqs: false,
282
+ useStringArrays: true
278
283
  }) {
279
284
  let outcome = false;
280
285
  debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);
281
286
  showSpinner(`Exporting all policy sets...`);
282
287
  try {
283
- let fileName = getTypedFilename(`all${titleCase(getRealmName(state.getRealm()))}Policies`, 'policy.authz');
288
+ let fileName = getTypedFilename(`all${titleCase(getRealmName(state.getRealm())) + titleCase(policySetId)}Policies`, 'policy.authz');
284
289
  if (file) {
285
290
  fileName = file;
286
291
  }
@@ -301,8 +306,9 @@ export async function exportPoliciesByPolicySetToFile(policySetId, file, options
301
306
  * @returns {Promise<boolean>} true if successful, false otherwise
302
307
  */
303
308
  export async function exportPoliciesToFiles(options = {
304
- useStringArrays: true,
305
- deps: true
309
+ deps: true,
310
+ prereqs: false,
311
+ useStringArrays: true
306
312
  }) {
307
313
  debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);
308
314
  const errors = [];
@@ -335,8 +341,9 @@ export async function exportPoliciesToFiles(options = {
335
341
  * @returns {Promise<boolean>} true if successful, false otherwise
336
342
  */
337
343
  export async function exportPoliciesByPolicySetToFiles(policySetId, options = {
338
- useStringArrays: true,
339
- deps: true
344
+ deps: true,
345
+ prereqs: false,
346
+ useStringArrays: true
340
347
  }) {
341
348
  debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);
342
349
  const errors = [];
@@ -364,14 +371,15 @@ export async function exportPoliciesByPolicySetToFiles(policySetId, options = {
364
371
  }
365
372
 
366
373
  /**
367
- * Import policy set from file
368
- * @param {string} policyId policy set name
374
+ * Import policy from file
375
+ * @param {string} policyId policy id/name
369
376
  * @param {string} file file name
370
377
  * @param {PolicyImportOptions} options import options
371
378
  * @returns {Promise<boolean>} true if successful, false otherwise
372
379
  */
373
380
  export async function importPolicyFromFile(policyId, file, options = {
374
- deps: true
381
+ deps: true,
382
+ prereqs: false
375
383
  }) {
376
384
  let outcome = false;
377
385
  debugMessage(`cli.PolicyOps.importPolicyFromFile: begin`);
@@ -389,4 +397,98 @@ export async function importPolicyFromFile(policyId, file, options = {
389
397
  debugMessage(`cli.PolicyOps.importPolicyFromFile: end`);
390
398
  return outcome;
391
399
  }
400
+
401
+ /**
402
+ * Import first policy from file
403
+ * @param {string} file file name
404
+ * @param {PolicyImportOptions} options import options
405
+ * @returns {Promise<boolean>} true if successful, false otherwise
406
+ */
407
+ export async function importFirstPolicyFromFile(file, options = {
408
+ deps: true,
409
+ prereqs: false
410
+ }) {
411
+ let outcome = false;
412
+ debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: begin`);
413
+ showSpinner(`Importing ${file}...`);
414
+ try {
415
+ const data = fs.readFileSync(file, 'utf8');
416
+ const fileData = JSON.parse(data);
417
+ await importFirstPolicy(fileData, options);
418
+ outcome = true;
419
+ succeedSpinner(`Imported ${file}.`);
420
+ } catch (error) {
421
+ failSpinner(`Error importing ${file}.`);
422
+ printMessage(error, 'error');
423
+ }
424
+ debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: end`);
425
+ return outcome;
426
+ }
427
+
428
+ /**
429
+ * Import policies from file
430
+ * @param {string} file file name
431
+ * @param {PolicyImportOptions} options import options
432
+ * @returns {Promise<boolean>} true if successful, false otherwise
433
+ */
434
+ export async function importPoliciesFromFile(file, options = {
435
+ deps: true,
436
+ prereqs: false
437
+ }) {
438
+ let outcome = false;
439
+ debugMessage(`cli.PolicyOps.importPoliciesFromFile: begin`);
440
+ showSpinner(`Importing ${file}...`);
441
+ try {
442
+ const data = fs.readFileSync(file, 'utf8');
443
+ const fileData = JSON.parse(data);
444
+ await importPolicies(fileData, options);
445
+ outcome = true;
446
+ succeedSpinner(`Imported ${file}${options.policySetName ? ' into policy set ' + options.policySetName : '.'}`);
447
+ } catch (error) {
448
+ failSpinner(`Error importing ${file}${options.policySetName ? ' into policy set ' + options.policySetName : '.'}`);
449
+ printMessage(error, 'error');
450
+ }
451
+ debugMessage(`cli.PolicyOps.importPoliciesFromFile: end`);
452
+ return outcome;
453
+ }
454
+
455
+ /**
456
+ * Import policies from files
457
+ * @param {PolicyImportOptions} options import options
458
+ * @returns {Promise<boolean>} true if successful, false otherwise
459
+ */
460
+ export async function importPoliciesFromFiles(options = {
461
+ deps: true,
462
+ prereqs: false
463
+ }) {
464
+ const errors = [];
465
+ try {
466
+ debugMessage(`cli.PolicyOps.importPoliciesFromFiles: begin`);
467
+ const names = fs.readdirSync('.');
468
+ const files = names.filter(name => name.toLowerCase().endsWith('.policy.authz.json'));
469
+ createProgressBar(files.length, 'Importing policies...');
470
+ let total = 0;
471
+ for (const file of files) {
472
+ try {
473
+ const data = fs.readFileSync(file, 'utf8');
474
+ const fileData = JSON.parse(data);
475
+ const count = Object.keys(fileData.policyset).length;
476
+ total += count;
477
+ await importPolicies(fileData, options);
478
+ updateProgressBar(`Imported ${count} policies from ${file}`);
479
+ } catch (error) {
480
+ errors.push(error);
481
+ updateProgressBar(`Error importing policies from ${file}`);
482
+ printMessage(error, 'error');
483
+ }
484
+ }
485
+ stopProgressBar(`Finished importing ${total} policies from ${files.length} files.`);
486
+ } catch (error) {
487
+ errors.push(error);
488
+ stopProgressBar(`Error importing policies from files.`);
489
+ printMessage(error, 'error');
490
+ }
491
+ debugMessage(`cli.PolicyOps.importPoliciesFromFiles: end`);
492
+ return 0 === errors.length;
493
+ }
392
494
  //# sourceMappingURL=PolicyOps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PolicyOps.js","names":["fs","Policy","Utils","state","createObjectTable","createProgressBar","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","deletePolicy","_deletePolicy","getPolicy","getPolicies","getPoliciesByPolicySet","exportPolicy","exportPolicies","exportPoliciesByPolicySet","importPolicy","getRealmName","listPolicies","long","outcome","policies","sort","a","b","_id","localeCompare","policy","err","message","listPoliciesByPolicySet","policySetId","describePolicy","policyId","json","policySet","table","toString","errors","error","length","errorMessages","map","join","deletePolicies","push","deletePoliciesByPolicySet","exportPolicyToFile","file","options","useStringArrays","deps","fileName","exportData","exportPoliciesToFile","getRealm","exportPoliciesByPolicySetToFile","exportPoliciesToFiles","exportPoliciesByPolicySetToFiles","importPolicyFromFile","data","readFileSync","fileData","JSON","parse"],"sources":["ops/PolicyOps.ts"],"sourcesContent":["import fs from 'fs';\nimport { PolicySkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport { Policy, Utils, state } from '@rockcarver/frodo-lib';\nimport {\n createObjectTable,\n createProgressBar,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport {\n PolicyExportOptions,\n PolicyImportOptions,\n PolicyExportInterface,\n} from '@rockcarver/frodo-lib/types/ops/PolicyOps';\n\nconst {\n deletePolicy: _deletePolicy,\n getPolicy,\n getPolicies,\n getPoliciesByPolicySet,\n exportPolicy,\n exportPolicies,\n exportPoliciesByPolicySet,\n importPolicy,\n} = Policy;\nconst { getRealmName } = Utils;\n\n/**\n * List policies\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicies(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await getPolicies();\n policies.sort((a, b) => a._id.localeCompare(b._id));\n for (const policy of policies) {\n if (!long) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * List policies by policy set\n * @param {string} policySetId policy set id/name\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPoliciesByPolicySet(\n policySetId: string,\n long = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await getPoliciesByPolicySet(policySetId);\n policies.sort((a, b) => a._id.localeCompare(b._id));\n for (const policy of policies) {\n if (!long) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy\n * @param {string} policyId policy id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicy(\n policyId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await getPolicy(policyId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy\n * @param {string} policyId policy id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicy(policyId: string): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicy: begin`);\n showSpinner(`Deleting ${policyId}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await _deletePolicy(policyId);\n } catch (error) {\n printMessage(`Error deleting policy ${policyId}: ${error}`, 'error');\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n failSpinner(`Error deleting ${policyId}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${policyId}.`);\n outcome = true;\n }\n debugMessage(`cli.PolicyOps.deletePolicy: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicies(): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicies: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n try {\n showSpinner(`Retrieving all policies...`);\n try {\n policies = await getPolicies();\n succeedSpinner(`Found ${policies.length} policies.`);\n } catch (error) {\n error.message = `Error retrieving all policies: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n createProgressBar(\n policies.length,\n `Deleting ${policies.length} policies...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await _deletePolicy(policyId);\n updateProgressBar(`Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressBar(`Error deleting all policies: ${errorMessages}`);\n } else {\n if (policies.length)\n stopProgressBar(`Deleted ${policies.length} policies.`);\n outcome = true;\n }\n }\n debugMessage(`cli.PolicyOps.deletePolicies: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies in policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePoliciesByPolicySet(\n policySetId: string\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePoliciesByPolicySet: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n try {\n showSpinner(`Retrieving all policies from policy set ${policySetId}...`);\n try {\n policies = await getPoliciesByPolicySet(policySetId);\n succeedSpinner(\n `Found ${policies.length} policies in policy set ${policySetId}.`\n );\n } catch (error) {\n error.message = `Error retrieving all policies from policy set ${policySetId}: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n createProgressBar(\n policies.length,\n `Deleting ${policies.length} policies from policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await _deletePolicy(policyId);\n updateProgressBar(`Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId} from policy set ${policySetId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies from policy set ${policySetId}: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressBar(\n `Error deleting all policies from policy set ${policySetId}: ${errorMessages}`\n );\n } else {\n if (policies.length)\n stopProgressBar(`Deleted ${policies.length} policies.`);\n outcome = true;\n }\n }\n debugMessage(\n `cli.PolicyOps.deletePoliciesByPolicySet: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export policy to file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicyToFile(\n policyId: string,\n file: string,\n options: PolicyExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPolicyToFile: begin`);\n showSpinner(`Exporting ${policyId}...`);\n try {\n let fileName = getTypedFilename(policyId, 'policy.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicy(policyId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${policyId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policyId}: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPolicyToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFile(\n file: string,\n options: PolicyExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicies(options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicyExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportPoliciesByPolicySet(policySetId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFiles(\n options: PolicyExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n try {\n const policies: PolicySkeleton[] = await getPolicies();\n createProgressBar(policies.length, 'Exporting policy sets...');\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policy._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFiles(\n policySetId: string,\n options: PolicyExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n try {\n const policies: PolicySkeleton[] = await getPoliciesByPolicySet(\n policySetId\n );\n createProgressBar(\n policies.length,\n `Exporting policies in policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policy._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy set from file\n * @param {string} policyId policy set name\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicyFromFile(\n policyId: string,\n file: string,\n options: PolicyImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPolicyFromFile: begin`);\n showSpinner(`Importing ${policyId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicy(policyId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policyId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policyId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPolicyFromFile: end`);\n return outcome;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"PolicyOps.js","names":["fs","Policy","Utils","state","createObjectTable","createProgressBar","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","deletePolicy","_deletePolicy","getPolicy","getPolicies","getPoliciesByPolicySet","exportPolicy","exportPolicies","exportPoliciesByPolicySet","importPolicy","importFirstPolicy","importPolicies","getRealmName","listPolicies","long","outcome","policies","sort","a","b","_id","localeCompare","policy","err","message","listPoliciesByPolicySet","policySetId","describePolicy","policyId","json","policySet","table","toString","errors","error","length","errorMessages","map","join","deletePolicies","push","deletePoliciesByPolicySet","exportPolicyToFile","file","options","deps","prereqs","useStringArrays","fileName","exportData","exportPoliciesToFile","getRealm","exportPoliciesByPolicySetToFile","exportPoliciesToFiles","exportPoliciesByPolicySetToFiles","importPolicyFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicyFromFile","importPoliciesFromFile","policySetName","importPoliciesFromFiles","names","readdirSync","files","filter","name","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["ops/PolicyOps.ts"],"sourcesContent":["import fs from 'fs';\nimport { PolicySkeleton } from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport { Policy, Utils, state } from '@rockcarver/frodo-lib';\nimport {\n createObjectTable,\n createProgressBar,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport {\n PolicyExportOptions,\n PolicyImportOptions,\n PolicyExportInterface,\n} from '@rockcarver/frodo-lib/types/ops/PolicyOps';\n\nconst {\n deletePolicy: _deletePolicy,\n getPolicy,\n getPolicies,\n getPoliciesByPolicySet,\n exportPolicy,\n exportPolicies,\n exportPoliciesByPolicySet,\n importPolicy,\n importFirstPolicy,\n importPolicies,\n} = Policy;\nconst { getRealmName } = Utils;\n\n/**\n * List policies\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicies(long = false): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await getPolicies();\n policies.sort((a, b) => a._id.localeCompare(b._id));\n for (const policy of policies) {\n if (!long) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * List policies by policy set\n * @param {string} policySetId policy set id/name\n * @param {boolean} long list with details\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPoliciesByPolicySet(\n policySetId: string,\n long = false\n): Promise<boolean> {\n let outcome = false;\n try {\n const policies = await getPoliciesByPolicySet(policySetId);\n policies.sort((a, b) => a._id.localeCompare(b._id));\n for (const policy of policies) {\n if (!long) {\n printMessage(`${policy._id}`, 'data');\n }\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicies ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy\n * @param {string} policyId policy id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicy(\n policyId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await getPolicy(policyId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy\n * @param {string} policyId policy id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicy(policyId: string): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicy: begin`);\n showSpinner(`Deleting ${policyId}...`);\n let outcome = false;\n const errors = [];\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await _deletePolicy(policyId);\n } catch (error) {\n printMessage(`Error deleting policy ${policyId}: ${error}`, 'error');\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n failSpinner(`Error deleting ${policyId}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${policyId}.`);\n outcome = true;\n }\n debugMessage(`cli.PolicyOps.deletePolicy: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicies(): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePolicies: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n try {\n showSpinner(`Retrieving all policies...`);\n try {\n policies = await getPolicies();\n succeedSpinner(`Found ${policies.length} policies.`);\n } catch (error) {\n error.message = `Error retrieving all policies: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n createProgressBar(\n policies.length,\n `Deleting ${policies.length} policies...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await _deletePolicy(policyId);\n updateProgressBar(`Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressBar(`Error deleting all policies: ${errorMessages}`);\n } else {\n if (policies.length)\n stopProgressBar(`Deleted ${policies.length} policies.`);\n outcome = true;\n }\n }\n debugMessage(`cli.PolicyOps.deletePolicies: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policies in policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePoliciesByPolicySet(\n policySetId: string\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.deletePoliciesByPolicySet: begin`);\n let outcome = false;\n const errors = [];\n let policies: PolicySkeleton[] = [];\n try {\n showSpinner(`Retrieving all policies from policy set ${policySetId}...`);\n try {\n policies = await getPoliciesByPolicySet(policySetId);\n succeedSpinner(\n `Found ${policies.length} policies in policy set ${policySetId}.`\n );\n } catch (error) {\n error.message = `Error retrieving all policies from policy set ${policySetId}: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policies.length)\n createProgressBar(\n policies.length,\n `Deleting ${policies.length} policies from policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const policyId = policy._id;\n try {\n debugMessage(`Deleting policy ${policyId}`);\n await _deletePolicy(policyId);\n updateProgressBar(`Deleted ${policyId}`);\n } catch (error) {\n error.message = `Error deleting policy ${policyId} from policy set ${policySetId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policies from policy set ${policySetId}: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policies.length)\n stopProgressBar(\n `Error deleting all policies from policy set ${policySetId}: ${errorMessages}`\n );\n } else {\n if (policies.length)\n stopProgressBar(`Deleted ${policies.length} policies.`);\n outcome = true;\n }\n }\n debugMessage(\n `cli.PolicyOps.deletePoliciesByPolicySet: end [outcome=${outcome}]`\n );\n return outcome;\n}\n\n/**\n * Export policy to file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {ApplicationExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicyToFile(\n policyId: string,\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPolicyToFile: begin`);\n showSpinner(`Exporting ${policyId}...`);\n try {\n let fileName = getTypedFilename(policyId, 'policy.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicy(policyId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${policyId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policyId}: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPolicyToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFile(\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicies(options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export policies to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${\n titleCase(getRealmName(state.getRealm())) + titleCase(policySetId)\n }Policies`,\n 'policy.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportPoliciesByPolicySet(policySetId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesToFiles(\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n try {\n const policies: PolicySkeleton[] = await getPolicies();\n createProgressBar(policies.length, 'Exporting policy sets...');\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policy._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Export all policies to separate files\n * @param {PolicyExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPoliciesByPolicySetToFiles(\n policySetId: string,\n options: PolicyExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: begin`);\n const errors = [];\n try {\n const policies: PolicySkeleton[] = await getPoliciesByPolicySet(\n policySetId\n );\n createProgressBar(\n policies.length,\n `Exporting policies in policy set ${policySetId}...`\n );\n for (const policy of policies) {\n const file = getTypedFilename(policy._id, 'policy.authz');\n try {\n const exportData: PolicyExportInterface = await exportPolicy(\n policy._id,\n options\n );\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policy._id}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policy._id}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicyOps.exportPoliciesToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy from file\n * @param {string} policyId policy id/name\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicyFromFile(\n policyId: string,\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPolicyFromFile: begin`);\n showSpinner(`Importing ${policyId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicy(policyId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policyId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policyId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicyFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstPolicy(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicyFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from file\n * @param {string} file file name\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFile(\n file: string,\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicies(fileData, options);\n outcome = true;\n succeedSpinner(\n `Imported ${file}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n } catch (error) {\n failSpinner(\n `Error importing ${file}${\n options.policySetName\n ? ' into policy set ' + options.policySetName\n : '.'\n }`\n );\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policies from files\n * @param {PolicyImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPoliciesFromFiles(\n options: PolicyImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.policy.authz.json')\n );\n createProgressBar(files.length, 'Importing policies...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicyExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicies(fileData, options);\n updateProgressBar(`Imported ${count} policies from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing policies from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} policies from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing policies from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicyOps.importPoliciesFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
@@ -168,8 +168,9 @@ export async function deletePolicySets() {
168
168
  * @returns {Promise<boolean>} true if successful, false otherwise
169
169
  */
170
170
  export async function exportPolicySetToFile(policySetId, file, options = {
171
- useStringArrays: true,
172
- deps: true
171
+ deps: true,
172
+ prereqs: false,
173
+ useStringArrays: true
173
174
  }) {
174
175
  let outcome = false;
175
176
  debugMessage(`cli.PolicySetOps.exportPolicySetToFile: begin`);
@@ -197,8 +198,9 @@ export async function exportPolicySetToFile(policySetId, file, options = {
197
198
  * @returns {Promise<boolean>} true if successful, false otherwise
198
199
  */
199
200
  export async function exportPolicySetsToFile(file, options = {
200
- useStringArrays: true,
201
- deps: true
201
+ deps: true,
202
+ prereqs: false,
203
+ useStringArrays: true
202
204
  }) {
203
205
  let outcome = false;
204
206
  debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: begin`);
@@ -225,8 +227,9 @@ export async function exportPolicySetsToFile(file, options = {
225
227
  * @returns {Promise<boolean>} true if successful, false otherwise
226
228
  */
227
229
  export async function exportPolicySetsToFiles(options = {
228
- useStringArrays: true,
229
- deps: true
230
+ deps: true,
231
+ prereqs: false,
232
+ useStringArrays: true
230
233
  }) {
231
234
  debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: begin`);
232
235
  const errors = [];
@@ -261,7 +264,8 @@ export async function exportPolicySetsToFiles(options = {
261
264
  * @returns {Promise<boolean>} true if successful, false otherwise
262
265
  */
263
266
  export async function importPolicySetFromFile(policySetId, file, options = {
264
- deps: true
267
+ deps: true,
268
+ prereqs: false
265
269
  }) {
266
270
  let outcome = false;
267
271
  debugMessage(`cli.PolicySetOps.importPolicySetFromFile: begin`);
@@ -287,7 +291,8 @@ export async function importPolicySetFromFile(policySetId, file, options = {
287
291
  * @returns {Promise<boolean>} true if successful, false otherwise
288
292
  */
289
293
  export async function importFirstPolicySetFromFile(file, options = {
290
- deps: true
294
+ deps: true,
295
+ prereqs: false
291
296
  }) {
292
297
  let outcome = false;
293
298
  debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: begin`);
@@ -313,7 +318,8 @@ export async function importFirstPolicySetFromFile(file, options = {
313
318
  * @returns {Promise<boolean>} true if successful, false otherwise
314
319
  */
315
320
  export async function importPolicySetsFromFile(file, options = {
316
- deps: true
321
+ deps: true,
322
+ prereqs: false
317
323
  }) {
318
324
  let outcome = false;
319
325
  debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: begin`);
@@ -338,7 +344,8 @@ export async function importPolicySetsFromFile(file, options = {
338
344
  * @returns {Promise<boolean>} true if successful, false otherwise
339
345
  */
340
346
  export async function importPolicySetsFromFiles(options = {
341
- deps: true
347
+ deps: true,
348
+ prereqs: false
342
349
  }) {
343
350
  const errors = [];
344
351
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"PolicySetOps.js","names":["fs","Policy","PolicySet","Utils","state","createObjectTable","createProgressBar","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","deletePolicySet","_deletePolicySet","getPolicySets","getPolicySet","exportPolicySet","exportPolicySets","importPolicySet","importFirstPolicySet","importPolicySets","getPoliciesByPolicySet","deletePolicy","getRealmName","listPolicySets","outcome","policySets","sort","a","b","name","localeCompare","policySet","err","message","describePolicySet","policySetId","json","table","toString","errors","policies","policy","_id","error","push","length","errorMessages","map","join","deletePolicySets","exportPolicySetToFile","file","options","useStringArrays","deps","fileName","exportData","exportPolicySetsToFile","getRealm","exportPolicySetsToFiles","importPolicySetFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicySetFromFile","importPolicySetsFromFile","importPolicySetsFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["ops/PolicySetOps.ts"],"sourcesContent":["import fs from 'fs';\nimport {\n PolicySetSkeleton,\n PolicySkeleton,\n} from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport { Policy, PolicySet, Utils, state } from '@rockcarver/frodo-lib';\nimport {\n createObjectTable,\n createProgressBar,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport {\n PolicySetExportInterface,\n PolicySetExportOptions,\n PolicySetImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/PolicySetOps';\n\nconst {\n deletePolicySet: _deletePolicySet,\n getPolicySets,\n getPolicySet,\n exportPolicySet,\n exportPolicySets,\n importPolicySet,\n importFirstPolicySet,\n importPolicySets,\n} = PolicySet;\nconst { getPoliciesByPolicySet, deletePolicy } = Policy;\nconst { getRealmName } = Utils;\n\n/**\n * List policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicySets(): Promise<boolean> {\n let outcome = false;\n try {\n const policySets = await getPolicySets();\n policySets.sort((a, b) => a.name.localeCompare(b.name));\n for (const policySet of policySets) {\n printMessage(`${policySet.name}`, 'data');\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicySets ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy set\n * @param {string} policySetId policy set id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicySet(\n policySetId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await getPolicySet(policySetId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySet(policySetId: string): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySet: begin`);\n showSpinner(`Deleting ${policySetId}...`);\n let outcome = false;\n const errors = [];\n const policies: PolicySkeleton[] = await getPoliciesByPolicySet(policySetId);\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n printMessage(error.message, 'error');\n errors.push(error);\n }\n }\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await _deletePolicySet(policySetId);\n } catch (error) {\n printMessage(`Error deleting policy set ${policySetId}: ${error}`, 'error');\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n failSpinner(`Error deleting ${policySetId}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${policySetId}.`);\n outcome = true;\n }\n debugMessage(`cli.PolicySetOps.deletePolicySet: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySets(): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySets: begin`);\n let outcome = false;\n const errors = [];\n let policySets: PolicySetSkeleton[] = [];\n try {\n showSpinner(`Retrieving all policy sets...`);\n try {\n policySets = await getPolicySets();\n succeedSpinner(`Found ${policySets.length} policy sets.`);\n } catch (error) {\n error.message = `Error retrieving all policy sets: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policySets.length)\n createProgressBar(\n policySets.length,\n `Deleting ${policySets.length} policy sets...`\n );\n for (const policySet of policySets) {\n const policySetId = policySet.name;\n try {\n const policies: PolicySkeleton[] = await getPoliciesByPolicySet(\n policySetId\n );\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n printMessage(error.message, 'error');\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await _deletePolicySet(policySetId);\n updateProgressBar(`Deleted ${policySetId}`);\n } catch (error) {\n error.message = `Error deleting policy set ${policySetId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policy sets: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policySets.length)\n stopProgressBar(`Error deleting all policy sets: ${errorMessages}`);\n } else {\n if (policySets.length)\n stopProgressBar(`Deleted ${policySets.length} policy sets.`);\n outcome = true;\n }\n }\n debugMessage(`cli.PolicySetOps.deletePolicySets: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Export policy set to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicySetExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: begin`);\n showSpinner(`Exporting ${policySetId}...`);\n try {\n let fileName = getTypedFilename(policySetId, 'policyset.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicySet(policySetId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${policySetId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policySetId}: ${error.message}`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: end`);\n return outcome;\n}\n\n/**\n * Export policy sets to file\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFile(\n file: string,\n options: PolicySetExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}PolicySets`,\n 'policyset.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicySets(options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policy sets to separate files\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFiles(\n options: PolicySetExportOptions = { useStringArrays: true, deps: true }\n): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: begin`);\n const errors = [];\n try {\n const policySets: PolicySetSkeleton[] = await getPolicySets();\n createProgressBar(policySets.length, 'Exporting policy sets...');\n for (const policySet of policySets) {\n const file = getTypedFilename(policySet.name, 'policyset.authz');\n try {\n const exportData: PolicySetExportInterface = await exportPolicySet(\n policySet.name,\n options\n );\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policySet.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policySet.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy set from file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetFromFile(\n policySetId: string,\n file: string,\n options: PolicySetImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: begin`);\n showSpinner(`Importing ${policySetId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySet(policySetId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policySetId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policySetId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy set from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicySetFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstPolicySet(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySets(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFiles(\n options: PolicySetImportOptions = { deps: true }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.policyset.authz.json')\n );\n createProgressBar(files.length, 'Importing policy sets...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicySetExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicySets(fileData, options);\n updateProgressBar(`Imported ${count} policy sets from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing policy sets from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} policy sets from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing policy sets from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"PolicySetOps.js","names":["fs","Policy","PolicySet","Utils","state","createObjectTable","createProgressBar","debugMessage","failSpinner","printMessage","showSpinner","stopProgressBar","succeedSpinner","updateProgressBar","getTypedFilename","saveJsonToFile","titleCase","deletePolicySet","_deletePolicySet","getPolicySets","getPolicySet","exportPolicySet","exportPolicySets","importPolicySet","importFirstPolicySet","importPolicySets","getPoliciesByPolicySet","deletePolicy","getRealmName","listPolicySets","outcome","policySets","sort","a","b","name","localeCompare","policySet","err","message","describePolicySet","policySetId","json","table","toString","errors","policies","policy","_id","error","push","length","errorMessages","map","join","deletePolicySets","exportPolicySetToFile","file","options","deps","prereqs","useStringArrays","fileName","exportData","exportPolicySetsToFile","getRealm","exportPolicySetsToFiles","importPolicySetFromFile","data","readFileSync","fileData","JSON","parse","importFirstPolicySetFromFile","importPolicySetsFromFile","importPolicySetsFromFiles","names","readdirSync","files","filter","toLowerCase","endsWith","total","count","Object","keys","policyset"],"sources":["ops/PolicySetOps.ts"],"sourcesContent":["import fs from 'fs';\nimport {\n PolicySetSkeleton,\n PolicySkeleton,\n} from '@rockcarver/frodo-lib/types/api/ApiTypes';\nimport { Policy, PolicySet, Utils, state } from '@rockcarver/frodo-lib';\nimport {\n createObjectTable,\n createProgressBar,\n debugMessage,\n failSpinner,\n printMessage,\n showSpinner,\n stopProgressBar,\n succeedSpinner,\n updateProgressBar,\n} from '../utils/Console';\nimport {\n getTypedFilename,\n saveJsonToFile,\n titleCase,\n} from '../utils/ExportImportUtils';\nimport {\n PolicySetExportInterface,\n PolicySetExportOptions,\n PolicySetImportOptions,\n} from '@rockcarver/frodo-lib/types/ops/PolicySetOps';\n\nconst {\n deletePolicySet: _deletePolicySet,\n getPolicySets,\n getPolicySet,\n exportPolicySet,\n exportPolicySets,\n importPolicySet,\n importFirstPolicySet,\n importPolicySets,\n} = PolicySet;\nconst { getPoliciesByPolicySet, deletePolicy } = Policy;\nconst { getRealmName } = Utils;\n\n/**\n * List policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function listPolicySets(): Promise<boolean> {\n let outcome = false;\n try {\n const policySets = await getPolicySets();\n policySets.sort((a, b) => a.name.localeCompare(b.name));\n for (const policySet of policySets) {\n printMessage(`${policySet.name}`, 'data');\n }\n outcome = true;\n } catch (err) {\n printMessage(`listPolicySets ERROR: ${err.message}`, 'error');\n printMessage(err, 'error');\n }\n return outcome;\n}\n\n/**\n * Describe policy set\n * @param {string} policySetId policy set id/name\n * @param {Object} json JSON output\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function describePolicySet(\n policySetId: string,\n json = false\n): Promise<boolean> {\n let outcome = false;\n const policySet = await getPolicySet(policySetId);\n outcome = true;\n if (json) {\n printMessage(policySet, 'data');\n } else {\n const table = createObjectTable(policySet);\n printMessage(table.toString(), 'data');\n }\n return outcome;\n}\n\n/**\n * Delete policy set\n * @param {string} policySetId policy set id/name\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySet(policySetId: string): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySet: begin`);\n showSpinner(`Deleting ${policySetId}...`);\n let outcome = false;\n const errors = [];\n const policies: PolicySkeleton[] = await getPoliciesByPolicySet(policySetId);\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n printMessage(error.message, 'error');\n errors.push(error);\n }\n }\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await _deletePolicySet(policySetId);\n } catch (error) {\n printMessage(`Error deleting policy set ${policySetId}: ${error}`, 'error');\n }\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n failSpinner(`Error deleting ${policySetId}: ${errorMessages}`);\n } else {\n succeedSpinner(`Deleted ${policySetId}.`);\n outcome = true;\n }\n debugMessage(`cli.PolicySetOps.deletePolicySet: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Delete all policy sets\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function deletePolicySets(): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.deletePolicySets: begin`);\n let outcome = false;\n const errors = [];\n let policySets: PolicySetSkeleton[] = [];\n try {\n showSpinner(`Retrieving all policy sets...`);\n try {\n policySets = await getPolicySets();\n succeedSpinner(`Found ${policySets.length} policy sets.`);\n } catch (error) {\n error.message = `Error retrieving all policy sets: ${error.message}`;\n failSpinner(error.message);\n throw error;\n }\n if (policySets.length)\n createProgressBar(\n policySets.length,\n `Deleting ${policySets.length} policy sets...`\n );\n for (const policySet of policySets) {\n const policySetId = policySet.name;\n try {\n const policies: PolicySkeleton[] = await getPoliciesByPolicySet(\n policySetId\n );\n for (const policy of policies) {\n try {\n debugMessage(`Deleting policy ${policy._id}`);\n await deletePolicy(policy._id);\n } catch (error) {\n error.message = `Error deleting policy ${policy._id} in policy set ${policySetId}: ${error}`;\n printMessage(error.message, 'error');\n errors.push(error);\n }\n }\n } catch (error) {\n errors.push(error);\n }\n try {\n debugMessage(`Deleting policy set ${policySetId}`);\n await _deletePolicySet(policySetId);\n updateProgressBar(`Deleted ${policySetId}`);\n } catch (error) {\n error.message = `Error deleting policy set ${policySetId}: ${error}`;\n updateProgressBar(error.message);\n errors.push(error);\n }\n }\n } catch (error) {\n error.message = `Error deleting policy sets: ${error}`;\n errors.push(error);\n } finally {\n if (errors.length) {\n const errorMessages = errors.map((error) => error.message).join('\\n');\n if (policySets.length)\n stopProgressBar(`Error deleting all policy sets: ${errorMessages}`);\n } else {\n if (policySets.length)\n stopProgressBar(`Deleted ${policySets.length} policy sets.`);\n outcome = true;\n }\n }\n debugMessage(`cli.PolicySetOps.deletePolicySets: end [outcome=${outcome}]`);\n return outcome;\n}\n\n/**\n * Export policy set to file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetToFile(\n policySetId: string,\n file: string,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: begin`);\n showSpinner(`Exporting ${policySetId}...`);\n try {\n let fileName = getTypedFilename(policySetId, 'policyset.authz');\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicySet(policySetId, options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported ${policySetId} to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting ${policySetId}: ${error.message}`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetToFile: end`);\n return outcome;\n}\n\n/**\n * Export policy sets to file\n * @param {string} file file name\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFile(\n file: string,\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: begin`);\n showSpinner(`Exporting all policy sets...`);\n try {\n let fileName = getTypedFilename(\n `all${titleCase(getRealmName(state.getRealm()))}PolicySets`,\n 'policyset.authz'\n );\n if (file) {\n fileName = file;\n }\n const exportData = await exportPolicySets(options);\n saveJsonToFile(exportData, fileName);\n succeedSpinner(`Exported all policy sets to ${fileName}.`);\n outcome = true;\n } catch (error) {\n failSpinner(`Error exporting policy sets: ${error.message}`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFile: end`);\n return outcome;\n}\n\n/**\n * Export all policy sets to separate files\n * @param {PolicySetExportOptions} options export options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function exportPolicySetsToFiles(\n options: PolicySetExportOptions = {\n deps: true,\n prereqs: false,\n useStringArrays: true,\n }\n): Promise<boolean> {\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: begin`);\n const errors = [];\n try {\n const policySets: PolicySetSkeleton[] = await getPolicySets();\n createProgressBar(policySets.length, 'Exporting policy sets...');\n for (const policySet of policySets) {\n const file = getTypedFilename(policySet.name, 'policyset.authz');\n try {\n const exportData: PolicySetExportInterface = await exportPolicySet(\n policySet.name,\n options\n );\n saveJsonToFile(exportData, file);\n updateProgressBar(`Exported ${policySet.name}.`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error exporting ${policySet.name}.`);\n }\n }\n stopProgressBar(`Export complete.`);\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error exporting policy sets to files`);\n }\n debugMessage(`cli.PolicySetOps.exportPolicySetsToFiles: end`);\n return 0 === errors.length;\n}\n\n/**\n * Import policy set from file\n * @param {string} policySetId policy set id/name\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetFromFile(\n policySetId: string,\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: begin`);\n showSpinner(`Importing ${policySetId}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySet(policySetId, fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${policySetId}.`);\n } catch (error) {\n failSpinner(`Error importing ${policySetId}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import first policy set from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importFirstPolicySetFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importFirstPolicySet(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importFirstPolicySetFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from file\n * @param {string} file file name\n * @param {PolicySetImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFile(\n file: string,\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n let outcome = false;\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: begin`);\n showSpinner(`Importing ${file}...`);\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData = JSON.parse(data);\n await importPolicySets(fileData, options);\n outcome = true;\n succeedSpinner(`Imported ${file}.`);\n } catch (error) {\n failSpinner(`Error importing ${file}.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFile: end`);\n return outcome;\n}\n\n/**\n * Import policy sets from files\n * @param {OAuth2ClientImportOptions} options import options\n * @returns {Promise<boolean>} true if successful, false otherwise\n */\nexport async function importPolicySetsFromFiles(\n options: PolicySetImportOptions = { deps: true, prereqs: false }\n): Promise<boolean> {\n const errors = [];\n try {\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: begin`);\n const names = fs.readdirSync('.');\n const files = names.filter((name) =>\n name.toLowerCase().endsWith('.policyset.authz.json')\n );\n createProgressBar(files.length, 'Importing policy sets...');\n let total = 0;\n for (const file of files) {\n try {\n const data = fs.readFileSync(file, 'utf8');\n const fileData: PolicySetExportInterface = JSON.parse(data);\n const count = Object.keys(fileData.policyset).length;\n total += count;\n await importPolicySets(fileData, options);\n updateProgressBar(`Imported ${count} policy sets from ${file}`);\n } catch (error) {\n errors.push(error);\n updateProgressBar(`Error importing policy sets from ${file}`);\n printMessage(error, 'error');\n }\n }\n stopProgressBar(\n `Finished importing ${total} policy sets from ${files.length} files.`\n );\n } catch (error) {\n errors.push(error);\n stopProgressBar(`Error importing policy sets from files.`);\n printMessage(error, 'error');\n }\n debugMessage(`cli.PolicySetOps.importPolicySetsFromFiles: end`);\n return 0 === errors.length;\n}\n"],"mappings":"AAAA,OAAOA,EAAE,MAAM,IAAI;AAKnB,SAASC,MAAM,EAAEC,SAAS,EAAEC,KAAK,EAAEC,KAAK,QAAQ,uBAAuB;AACvE,SACEC,iBAAiB,EACjBC,iBAAiB,EACjBC,YAAY,EACZC,WAAW,EACXC,YAAY,EACZC,WAAW,EACXC,eAAe,EACfC,cAAc,EACdC,iBAAiB,QACZ,kBAAkB;AACzB,SACEC,gBAAgB,EAChBC,cAAc,EACdC,SAAS,QACJ,4BAA4B;AAOnC,MAAM;EACJC,eAAe,EAAEC,gBAAgB;EACjCC,aAAa;EACbC,YAAY;EACZC,eAAe;EACfC,gBAAgB;EAChBC,eAAe;EACfC,oBAAoB;EACpBC;AACF,CAAC,GAAGvB,SAAS;AACb,MAAM;EAAEwB,sBAAsB;EAAEC;AAAa,CAAC,GAAG1B,MAAM;AACvD,MAAM;EAAE2B;AAAa,CAAC,GAAGzB,KAAK;;AAE9B;AACA;AACA;AACA;AACA,OAAO,eAAe0B,cAAcA,CAAA,EAAqB;EACvD,IAAIC,OAAO,GAAG,KAAK;EACnB,IAAI;IACF,MAAMC,UAAU,GAAG,MAAMZ,aAAa,CAAC,CAAC;IACxCY,UAAU,CAACC,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACE,IAAI,CAACC,aAAa,CAACF,CAAC,CAACC,IAAI,CAAC,CAAC;IACvD,KAAK,MAAME,SAAS,IAAIN,UAAU,EAAE;MAClCtB,YAAY,CAAE,GAAE4B,SAAS,CAACF,IAAK,EAAC,EAAE,MAAM,CAAC;IAC3C;IACAL,OAAO,GAAG,IAAI;EAChB,CAAC,CAAC,OAAOQ,GAAG,EAAE;IACZ7B,YAAY,CAAE,yBAAwB6B,GAAG,CAACC,OAAQ,EAAC,EAAE,OAAO,CAAC;IAC7D9B,YAAY,CAAC6B,GAAG,EAAE,OAAO,CAAC;EAC5B;EACA,OAAOR,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeU,iBAAiBA,CACrCC,WAAmB,EACnBC,IAAI,GAAG,KAAK,EACM;EAClB,IAAIZ,OAAO,GAAG,KAAK;EACnB,MAAMO,SAAS,GAAG,MAAMjB,YAAY,CAACqB,WAAW,CAAC;EACjDX,OAAO,GAAG,IAAI;EACd,IAAIY,IAAI,EAAE;IACRjC,YAAY,CAAC4B,SAAS,EAAE,MAAM,CAAC;EACjC,CAAC,MAAM;IACL,MAAMM,KAAK,GAAGtC,iBAAiB,CAACgC,SAAS,CAAC;IAC1C5B,YAAY,CAACkC,KAAK,CAACC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;EACxC;EACA,OAAOd,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeb,eAAeA,CAACwB,WAAmB,EAAoB;EAC3ElC,YAAY,CAAE,yCAAwC,CAAC;EACvDG,WAAW,CAAE,YAAW+B,WAAY,KAAI,CAAC;EACzC,IAAIX,OAAO,GAAG,KAAK;EACnB,MAAMe,MAAM,GAAG,EAAE;EACjB,MAAMC,QAA0B,GAAG,MAAMpB,sBAAsB,CAACe,WAAW,CAAC;EAC5E,KAAK,MAAMM,MAAM,IAAID,QAAQ,EAAE;IAC7B,IAAI;MACFvC,YAAY,CAAE,mBAAkBwC,MAAM,CAACC,GAAI,EAAC,CAAC;MAC7C,MAAMrB,YAAY,CAACoB,MAAM,CAACC,GAAG,CAAC;IAChC,CAAC,CAAC,OAAOC,KAAK,EAAE;MACdA,KAAK,CAACV,OAAO,GAAI,yBAAwBQ,MAAM,CAACC,GAAI,kBAAiBP,WAAY,KAAIQ,KAAM,EAAC;MAC5FxC,YAAY,CAACwC,KAAK,CAACV,OAAO,EAAE,OAAO,CAAC;MACpCM,MAAM,CAACK,IAAI,CAACD,KAAK,CAAC;IACpB;EACF;EACA,IAAI;IACF1C,YAAY,CAAE,uBAAsBkC,WAAY,EAAC,CAAC;IAClD,MAAMvB,gBAAgB,CAACuB,WAAW,CAAC;EACrC,CAAC,CAAC,OAAOQ,KAAK,EAAE;IACdxC,YAAY,CAAE,6BAA4BgC,WAAY,KAAIQ,KAAM,EAAC,EAAE,OAAO,CAAC;EAC7E;EACA,IAAIJ,MAAM,CAACM,MAAM,EAAE;IACjB,MAAMC,aAAa,GAAGP,MAAM,CAACQ,GAAG,CAAEJ,KAAK,IAAKA,KAAK,CAACV,OAAO,CAAC,CAACe,IAAI,CAAC,IAAI,CAAC;IACrE9C,WAAW,CAAE,kBAAiBiC,WAAY,KAAIW,aAAc,EAAC,CAAC;EAChE,CAAC,MAAM;IACLxC,cAAc,CAAE,WAAU6B,WAAY,GAAE,CAAC;IACzCX,OAAO,GAAG,IAAI;EAChB;EACAvB,YAAY,CAAE,kDAAiDuB,OAAQ,GAAE,CAAC;EAC1E,OAAOA,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA,OAAO,eAAeyB,gBAAgBA,CAAA,EAAqB;EACzDhD,YAAY,CAAE,0CAAyC,CAAC;EACxD,IAAIuB,OAAO,GAAG,KAAK;EACnB,MAAMe,MAAM,GAAG,EAAE;EACjB,IAAId,UAA+B,GAAG,EAAE;EACxC,IAAI;IACFrB,WAAW,CAAE,+BAA8B,CAAC;IAC5C,IAAI;MACFqB,UAAU,GAAG,MAAMZ,aAAa,CAAC,CAAC;MAClCP,cAAc,CAAE,SAAQmB,UAAU,CAACoB,MAAO,eAAc,CAAC;IAC3D,CAAC,CAAC,OAAOF,KAAK,EAAE;MACdA,KAAK,CAACV,OAAO,GAAI,qCAAoCU,KAAK,CAACV,OAAQ,EAAC;MACpE/B,WAAW,CAACyC,KAAK,CAACV,OAAO,CAAC;MAC1B,MAAMU,KAAK;IACb;IACA,IAAIlB,UAAU,CAACoB,MAAM,EACnB7C,iBAAiB,CACfyB,UAAU,CAACoB,MAAM,EAChB,YAAWpB,UAAU,CAACoB,MAAO,iBAChC,CAAC;IACH,KAAK,MAAMd,SAAS,IAAIN,UAAU,EAAE;MAClC,MAAMU,WAAW,GAAGJ,SAAS,CAACF,IAAI;MAClC,IAAI;QACF,MAAMW,QAA0B,GAAG,MAAMpB,sBAAsB,CAC7De,WACF,CAAC;QACD,KAAK,MAAMM,MAAM,IAAID,QAAQ,EAAE;UAC7B,IAAI;YACFvC,YAAY,CAAE,mBAAkBwC,MAAM,CAACC,GAAI,EAAC,CAAC;YAC7C,MAAMrB,YAAY,CAACoB,MAAM,CAACC,GAAG,CAAC;UAChC,CAAC,CAAC,OAAOC,KAAK,EAAE;YACdA,KAAK,CAACV,OAAO,GAAI,yBAAwBQ,MAAM,CAACC,GAAI,kBAAiBP,WAAY,KAAIQ,KAAM,EAAC;YAC5FxC,YAAY,CAACwC,KAAK,CAACV,OAAO,EAAE,OAAO,CAAC;YACpCM,MAAM,CAACK,IAAI,CAACD,KAAK,CAAC;UACpB;QACF;MACF,CAAC,CAAC,OAAOA,KAAK,EAAE;QACdJ,MAAM,CAACK,IAAI,CAACD,KAAK,CAAC;MACpB;MACA,IAAI;QACF1C,YAAY,CAAE,uBAAsBkC,WAAY,EAAC,CAAC;QAClD,MAAMvB,gBAAgB,CAACuB,WAAW,CAAC;QACnC5B,iBAAiB,CAAE,WAAU4B,WAAY,EAAC,CAAC;MAC7C,CAAC,CAAC,OAAOQ,KAAK,EAAE;QACdA,KAAK,CAACV,OAAO,GAAI,6BAA4BE,WAAY,KAAIQ,KAAM,EAAC;QACpEpC,iBAAiB,CAACoC,KAAK,CAACV,OAAO,CAAC;QAChCM,MAAM,CAACK,IAAI,CAACD,KAAK,CAAC;MACpB;IACF;EACF,CAAC,CAAC,OAAOA,KAAK,EAAE;IACdA,KAAK,CAACV,OAAO,GAAI,+BAA8BU,KAAM,EAAC;IACtDJ,MAAM,CAACK,IAAI,CAACD,KAAK,CAAC;EACpB,CAAC,SAAS;IACR,IAAIJ,MAAM,CAACM,MAAM,EAAE;MACjB,MAAMC,aAAa,GAAGP,MAAM,CAACQ,GAAG,CAAEJ,KAAK,IAAKA,KAAK,CAACV,OAAO,CAAC,CAACe,IAAI,CAAC,IAAI,CAAC;MACrE,IAAIvB,UAAU,CAACoB,MAAM,EACnBxC,eAAe,CAAE,mCAAkCyC,aAAc,EAAC,CAAC;IACvE,CAAC,MAAM;MACL,IAAIrB,UAAU,CAACoB,MAAM,EACnBxC,eAAe,CAAE,WAAUoB,UAAU,CAACoB,MAAO,eAAc,CAAC;MAC9DrB,OAAO,GAAG,IAAI;IAChB;EACF;EACAvB,YAAY,CAAE,mDAAkDuB,OAAQ,GAAE,CAAC;EAC3E,OAAOA,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe0B,qBAAqBA,CACzCf,WAAmB,EACnBgB,IAAY,EACZC,OAA+B,GAAG;EAChCC,IAAI,EAAE,IAAI;EACVC,OAAO,EAAE,KAAK;EACdC,eAAe,EAAE;AACnB,CAAC,EACiB;EAClB,IAAI/B,OAAO,GAAG,KAAK;EACnBvB,YAAY,CAAE,+CAA8C,CAAC;EAC7DG,WAAW,CAAE,aAAY+B,WAAY,KAAI,CAAC;EAC1C,IAAI;IACF,IAAIqB,QAAQ,GAAGhD,gBAAgB,CAAC2B,WAAW,EAAE,iBAAiB,CAAC;IAC/D,IAAIgB,IAAI,EAAE;MACRK,QAAQ,GAAGL,IAAI;IACjB;IACA,MAAMM,UAAU,GAAG,MAAM1C,eAAe,CAACoB,WAAW,EAAEiB,OAAO,CAAC;IAC9D3C,cAAc,CAACgD,UAAU,EAAED,QAAQ,CAAC;IACpClD,cAAc,CAAE,YAAW6B,WAAY,OAAMqB,QAAS,GAAE,CAAC;IACzDhC,OAAO,GAAG,IAAI;EAChB,CAAC,CAAC,OAAOmB,KAAK,EAAE;IACdzC,WAAW,CAAE,mBAAkBiC,WAAY,KAAIQ,KAAK,CAACV,OAAQ,EAAC,CAAC;EACjE;EACAhC,YAAY,CAAE,6CAA4C,CAAC;EAC3D,OAAOuB,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAekC,sBAAsBA,CAC1CP,IAAY,EACZC,OAA+B,GAAG;EAChCC,IAAI,EAAE,IAAI;EACVC,OAAO,EAAE,KAAK;EACdC,eAAe,EAAE;AACnB,CAAC,EACiB;EAClB,IAAI/B,OAAO,GAAG,KAAK;EACnBvB,YAAY,CAAE,gDAA+C,CAAC;EAC9DG,WAAW,CAAE,8BAA6B,CAAC;EAC3C,IAAI;IACF,IAAIoD,QAAQ,GAAGhD,gBAAgB,CAC5B,MAAKE,SAAS,CAACY,YAAY,CAACxB,KAAK,CAAC6D,QAAQ,CAAC,CAAC,CAAC,CAAE,YAAW,EAC3D,iBACF,CAAC;IACD,IAAIR,IAAI,EAAE;MACRK,QAAQ,GAAGL,IAAI;IACjB;IACA,MAAMM,UAAU,GAAG,MAAMzC,gBAAgB,CAACoC,OAAO,CAAC;IAClD3C,cAAc,CAACgD,UAAU,EAAED,QAAQ,CAAC;IACpClD,cAAc,CAAE,+BAA8BkD,QAAS,GAAE,CAAC;IAC1DhC,OAAO,GAAG,IAAI;EAChB,CAAC,CAAC,OAAOmB,KAAK,EAAE;IACdzC,WAAW,CAAE,gCAA+ByC,KAAK,CAACV,OAAQ,EAAC,CAAC;EAC9D;EACAhC,YAAY,CAAE,8CAA6C,CAAC;EAC5D,OAAOuB,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAeoC,uBAAuBA,CAC3CR,OAA+B,GAAG;EAChCC,IAAI,EAAE,IAAI;EACVC,OAAO,EAAE,KAAK;EACdC,eAAe,EAAE;AACnB,CAAC,EACiB;EAClBtD,YAAY,CAAE,iDAAgD,CAAC;EAC/D,MAAMsC,MAAM,GAAG,EAAE;EACjB,IAAI;IACF,MAAMd,UAA+B,GAAG,MAAMZ,aAAa,CAAC,CAAC;IAC7Db,iBAAiB,CAACyB,UAAU,CAACoB,MAAM,EAAE,0BAA0B,CAAC;IAChE,KAAK,MAAMd,SAAS,IAAIN,UAAU,EAAE;MAClC,MAAM0B,IAAI,GAAG3C,gBAAgB,CAACuB,SAAS,CAACF,IAAI,EAAE,iBAAiB,CAAC;MAChE,IAAI;QACF,MAAM4B,UAAoC,GAAG,MAAM1C,eAAe,CAChEgB,SAAS,CAACF,IAAI,EACduB,OACF,CAAC;QACD3C,cAAc,CAACgD,UAAU,EAAEN,IAAI,CAAC;QAChC5C,iBAAiB,CAAE,YAAWwB,SAAS,CAACF,IAAK,GAAE,CAAC;MAClD,CAAC,CAAC,OAAOc,KAAK,EAAE;QACdJ,MAAM,CAACK,IAAI,CAACD,KAAK,CAAC;QAClBpC,iBAAiB,CAAE,mBAAkBwB,SAAS,CAACF,IAAK,GAAE,CAAC;MACzD;IACF;IACAxB,eAAe,CAAE,kBAAiB,CAAC;EACrC,CAAC,CAAC,OAAOsC,KAAK,EAAE;IACdJ,MAAM,CAACK,IAAI,CAACD,KAAK,CAAC;IAClBtC,eAAe,CAAE,sCAAqC,CAAC;EACzD;EACAJ,YAAY,CAAE,+CAA8C,CAAC;EAC7D,OAAO,CAAC,KAAKsC,MAAM,CAACM,MAAM;AAC5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAegB,uBAAuBA,CAC3C1B,WAAmB,EACnBgB,IAAY,EACZC,OAA+B,GAAG;EAAEC,IAAI,EAAE,IAAI;EAAEC,OAAO,EAAE;AAAM,CAAC,EAC9C;EAClB,IAAI9B,OAAO,GAAG,KAAK;EACnBvB,YAAY,CAAE,iDAAgD,CAAC;EAC/DG,WAAW,CAAE,aAAY+B,WAAY,KAAI,CAAC;EAC1C,IAAI;IACF,MAAM2B,IAAI,GAAGpE,EAAE,CAACqE,YAAY,CAACZ,IAAI,EAAE,MAAM,CAAC;IAC1C,MAAMa,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACJ,IAAI,CAAC;IACjC,MAAM7C,eAAe,CAACkB,WAAW,EAAE6B,QAAQ,EAAEZ,OAAO,CAAC;IACrD5B,OAAO,GAAG,IAAI;IACdlB,cAAc,CAAE,YAAW6B,WAAY,GAAE,CAAC;EAC5C,CAAC,CAAC,OAAOQ,KAAK,EAAE;IACdzC,WAAW,CAAE,mBAAkBiC,WAAY,GAAE,CAAC;IAC9ChC,YAAY,CAACwC,KAAK,EAAE,OAAO,CAAC;EAC9B;EACA1C,YAAY,CAAE,+CAA8C,CAAC;EAC7D,OAAOuB,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe2C,4BAA4BA,CAChDhB,IAAY,EACZC,OAA+B,GAAG;EAAEC,IAAI,EAAE,IAAI;EAAEC,OAAO,EAAE;AAAM,CAAC,EAC9C;EAClB,IAAI9B,OAAO,GAAG,KAAK;EACnBvB,YAAY,CAAE,sDAAqD,CAAC;EACpEG,WAAW,CAAE,aAAY+C,IAAK,KAAI,CAAC;EACnC,IAAI;IACF,MAAMW,IAAI,GAAGpE,EAAE,CAACqE,YAAY,CAACZ,IAAI,EAAE,MAAM,CAAC;IAC1C,MAAMa,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACJ,IAAI,CAAC;IACjC,MAAM5C,oBAAoB,CAAC8C,QAAQ,EAAEZ,OAAO,CAAC;IAC7C5B,OAAO,GAAG,IAAI;IACdlB,cAAc,CAAE,YAAW6C,IAAK,GAAE,CAAC;EACrC,CAAC,CAAC,OAAOR,KAAK,EAAE;IACdzC,WAAW,CAAE,mBAAkBiD,IAAK,GAAE,CAAC;IACvChD,YAAY,CAACwC,KAAK,EAAE,OAAO,CAAC;EAC9B;EACA1C,YAAY,CAAE,oDAAmD,CAAC;EAClE,OAAOuB,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe4C,wBAAwBA,CAC5CjB,IAAY,EACZC,OAA+B,GAAG;EAAEC,IAAI,EAAE,IAAI;EAAEC,OAAO,EAAE;AAAM,CAAC,EAC9C;EAClB,IAAI9B,OAAO,GAAG,KAAK;EACnBvB,YAAY,CAAE,kDAAiD,CAAC;EAChEG,WAAW,CAAE,aAAY+C,IAAK,KAAI,CAAC;EACnC,IAAI;IACF,MAAMW,IAAI,GAAGpE,EAAE,CAACqE,YAAY,CAACZ,IAAI,EAAE,MAAM,CAAC;IAC1C,MAAMa,QAAQ,GAAGC,IAAI,CAACC,KAAK,CAACJ,IAAI,CAAC;IACjC,MAAM3C,gBAAgB,CAAC6C,QAAQ,EAAEZ,OAAO,CAAC;IACzC5B,OAAO,GAAG,IAAI;IACdlB,cAAc,CAAE,YAAW6C,IAAK,GAAE,CAAC;EACrC,CAAC,CAAC,OAAOR,KAAK,EAAE;IACdzC,WAAW,CAAE,mBAAkBiD,IAAK,GAAE,CAAC;IACvChD,YAAY,CAACwC,KAAK,EAAE,OAAO,CAAC;EAC9B;EACA1C,YAAY,CAAE,gDAA+C,CAAC;EAC9D,OAAOuB,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO,eAAe6C,yBAAyBA,CAC7CjB,OAA+B,GAAG;EAAEC,IAAI,EAAE,IAAI;EAAEC,OAAO,EAAE;AAAM,CAAC,EAC9C;EAClB,MAAMf,MAAM,GAAG,EAAE;EACjB,IAAI;IACFtC,YAAY,CAAE,mDAAkD,CAAC;IACjE,MAAMqE,KAAK,GAAG5E,EAAE,CAAC6E,WAAW,CAAC,GAAG,CAAC;IACjC,MAAMC,KAAK,GAAGF,KAAK,CAACG,MAAM,CAAE5C,IAAI,IAC9BA,IAAI,CAAC6C,WAAW,CAAC,CAAC,CAACC,QAAQ,CAAC,uBAAuB,CACrD,CAAC;IACD3E,iBAAiB,CAACwE,KAAK,CAAC3B,MAAM,EAAE,0BAA0B,CAAC;IAC3D,IAAI+B,KAAK,GAAG,CAAC;IACb,KAAK,MAAMzB,IAAI,IAAIqB,KAAK,EAAE;MACxB,IAAI;QACF,MAAMV,IAAI,GAAGpE,EAAE,CAACqE,YAAY,CAACZ,IAAI,EAAE,MAAM,CAAC;QAC1C,MAAMa,QAAkC,GAAGC,IAAI,CAACC,KAAK,CAACJ,IAAI,CAAC;QAC3D,MAAMe,KAAK,GAAGC,MAAM,CAACC,IAAI,CAACf,QAAQ,CAACgB,SAAS,CAAC,CAACnC,MAAM;QACpD+B,KAAK,IAAIC,KAAK;QACd,MAAM1D,gBAAgB,CAAC6C,QAAQ,EAAEZ,OAAO,CAAC;QACzC7C,iBAAiB,CAAE,YAAWsE,KAAM,qBAAoB1B,IAAK,EAAC,CAAC;MACjE,CAAC,CAAC,OAAOR,KAAK,EAAE;QACdJ,MAAM,CAACK,IAAI,CAACD,KAAK,CAAC;QAClBpC,iBAAiB,CAAE,oCAAmC4C,IAAK,EAAC,CAAC;QAC7DhD,YAAY,CAACwC,KAAK,EAAE,OAAO,CAAC;MAC9B;IACF;IACAtC,eAAe,CACZ,sBAAqBuE,KAAM,qBAAoBJ,KAAK,CAAC3B,MAAO,SAC/D,CAAC;EACH,CAAC,CAAC,OAAOF,KAAK,EAAE;IACdJ,MAAM,CAACK,IAAI,CAACD,KAAK,CAAC;IAClBtC,eAAe,CAAE,yCAAwC,CAAC;IAC1DF,YAAY,CAACwC,KAAK,EAAE,OAAO,CAAC;EAC9B;EACA1C,YAAY,CAAE,iDAAgD,CAAC;EAC/D,OAAO,CAAC,KAAKsC,MAAM,CAACM,MAAM;AAC5B"}