@nhtio/lucid-resourceful-vue-components 1.20260107.0 → 1.20260108.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 (137) hide show
  1. package/{VChip-DWwcL8cL.mjs → VChip-DakTCdq2.mjs} +2 -2
  2. package/{VChip-DWwcL8cL.mjs.map → VChip-DakTCdq2.mjs.map} +1 -1
  3. package/{VDatePicker-C7_ULYfO.mjs → VDatePicker-DlZlcF2O.mjs} +4 -4
  4. package/{VDatePicker-C7_ULYfO.mjs.map → VDatePicker-DlZlcF2O.mjs.map} +1 -1
  5. package/{VDialog-BVRDhoD7.mjs → VDialog-BljV_Pfu.mjs} +3 -3
  6. package/{VDialog-BVRDhoD7.mjs.map → VDialog-BljV_Pfu.mjs.map} +1 -1
  7. package/{VEmptyState-C2B0Znk9.mjs → VEmptyState-BubXzExt.mjs} +2 -2
  8. package/{VEmptyState-C2B0Znk9.mjs.map → VEmptyState-BubXzExt.mjs.map} +1 -1
  9. package/{VHover-DnB1GlWG.mjs → VHover-DYt7f7-R.mjs} +3 -3
  10. package/{VHover-DnB1GlWG.mjs.map → VHover-DYt7f7-R.mjs.map} +1 -1
  11. package/{VListItem-DojRgtpe.mjs → VListItem-CHkJtaF9.mjs} +4 -4
  12. package/{VListItem-DojRgtpe.mjs.map → VListItem-CHkJtaF9.mjs.map} +1 -1
  13. package/{VMenu-D2biKkpd.mjs → VMenu-Xveh72QZ.mjs} +3 -3
  14. package/{VMenu-D2biKkpd.mjs.map → VMenu-Xveh72QZ.mjs.map} +1 -1
  15. package/{VPicker-dxKS1KK4.mjs → VPicker-D9TBI61U.mjs} +4 -4
  16. package/{VPicker-dxKS1KK4.mjs.map → VPicker-D9TBI61U.mjs.map} +1 -1
  17. package/{VRadioGroup-lC_c6Ath.mjs → VRadioGroup-CFazRh5q.mjs} +4 -4
  18. package/{VRadioGroup-lC_c6Ath.mjs.map → VRadioGroup-CFazRh5q.mjs.map} +1 -1
  19. package/{VRow-BBY2gEjT.mjs → VRow-Db84ydOG.mjs} +2 -2
  20. package/{VRow-BBY2gEjT.mjs.map → VRow-Db84ydOG.mjs.map} +1 -1
  21. package/{VSheet-B4SA9_dv.mjs → VSheet-CX-0tYk0.mjs} +2 -2
  22. package/{VSheet-B4SA9_dv.mjs.map → VSheet-CX-0tYk0.mjs.map} +1 -1
  23. package/{actions-CXhEUJp6.mjs → actions-CAGyXfrI.mjs} +12 -12
  24. package/{actions-CXhEUJp6.mjs.map → actions-CAGyXfrI.mjs.map} +1 -1
  25. package/{alert-B0j6GH3V.mjs → alert-D4Zq_X5a.mjs} +11 -11
  26. package/{alert-B0j6GH3V.mjs.map → alert-D4Zq_X5a.mjs.map} +1 -1
  27. package/{bigint-DXS_rVbG.mjs → bigint-MqcXh7nS.mjs} +7 -7
  28. package/{bigint-DXS_rVbG.mjs.map → bigint-MqcXh7nS.mjs.map} +1 -1
  29. package/{boolean-BTu-4Ihs.mjs → boolean-h31TIpoH.mjs} +10 -10
  30. package/{boolean-BTu-4Ihs.mjs.map → boolean-h31TIpoH.mjs.map} +1 -1
  31. package/{clipboard-C6YTX8YB.mjs → clipboard-jPiC4eq0.mjs} +7 -7
  32. package/{clipboard-C6YTX8YB.mjs.map → clipboard-jPiC4eq0.mjs.map} +1 -1
  33. package/{common-a_cd4SQg.mjs → common-CRFL2oQX.mjs} +1362 -1362
  34. package/common-CRFL2oQX.mjs.map +1 -0
  35. package/components/autorefresh_controller.mjs +1 -1
  36. package/components/control_button.mjs +1 -1
  37. package/components/control_button_bar.mjs +2 -2
  38. package/components/control_menu.mjs +1 -1
  39. package/components/custom_field.mjs +1 -1
  40. package/components/exporter.mjs +1 -1
  41. package/components/fields/bigint.mjs +1 -1
  42. package/components/fields/boolean.mjs +1 -1
  43. package/components/fields/date.mjs +1 -1
  44. package/components/fields/date_time.mjs +1 -1
  45. package/components/fields/enum.mjs +1 -1
  46. package/components/fields/integer.mjs +1 -1
  47. package/components/fields/number.mjs +1 -1
  48. package/components/fields/string.mjs +1 -1
  49. package/components/fields/unsigned_integer.mjs +1 -1
  50. package/components/fields.mjs +9 -9
  51. package/components/form_with_validation.mjs +1 -1
  52. package/components/resourceful_alerter.mjs +1 -1
  53. package/components/resourceful_index.mjs +1 -1
  54. package/components/resourceful_record.mjs +2 -2
  55. package/components/resourceful_record_default_form.mjs +1 -1
  56. package/components/resourceful_record_form.mjs +1 -1
  57. package/components/sortable.mjs +1 -1
  58. package/components/svg_icon.mjs +1 -1
  59. package/components/timezone_picker.mjs +1 -1
  60. package/components.mjs +23 -23
  61. package/composables.mjs +11 -11
  62. package/{custom-CgyU3A_B.mjs → custom-Dj2ib6qT.mjs} +7 -7
  63. package/{custom-CgyU3A_B.mjs.map → custom-Dj2ib6qT.mjs.map} +1 -1
  64. package/{date-B8edF8kU.mjs → date-fxb-e0m9.mjs} +10 -10
  65. package/{date-B8edF8kU.mjs.map → date-fxb-e0m9.mjs.map} +1 -1
  66. package/{date_time-BNsYnH-e.mjs → date_time-n4zJtaSr.mjs} +18 -18
  67. package/{date_time-BNsYnH-e.mjs.map → date_time-n4zJtaSr.mjs.map} +1 -1
  68. package/{display-CHspVOz6.mjs → display-DNgEbAdH.mjs} +38 -38
  69. package/{display-CHspVOz6.mjs.map → display-DNgEbAdH.mjs.map} +1 -1
  70. package/{display-pfXaBUr6.mjs → display-DxJktZAm.mjs} +4 -4
  71. package/{display-pfXaBUr6.mjs.map → display-DxJktZAm.mjs.map} +1 -1
  72. package/{enum-DoxJn16e.mjs → enum-CjkTx4L6.mjs} +9 -9
  73. package/{enum-DoxJn16e.mjs.map → enum-CjkTx4L6.mjs.map} +1 -1
  74. package/{exceptions-BeFuVcrH.mjs → exceptions-lwCt3BKI.mjs} +2 -2
  75. package/{exceptions-BeFuVcrH.mjs.map → exceptions-lwCt3BKI.mjs.map} +1 -1
  76. package/exceptions.mjs +2 -2
  77. package/factories.mjs +2 -2
  78. package/{field_composer-CPqM1aSV.mjs → field_composer-B_4w9YL9.mjs} +3 -3
  79. package/{field_composer-CPqM1aSV.mjs.map → field_composer-B_4w9YL9.mjs.map} +1 -1
  80. package/{form-BkQlevYR.mjs → form-B7uOzLn2.mjs} +15 -15
  81. package/{form-BkQlevYR.mjs.map → form-B7uOzLn2.mjs.map} +1 -1
  82. package/{guards-D0G8CU2m.mjs → guards-BI3Zu4tN.mjs} +2 -2
  83. package/{guards-D0G8CU2m.mjs.map → guards-BI3Zu4tN.mjs.map} +1 -1
  84. package/guards.mjs +4 -4
  85. package/helpers.mjs +12 -12
  86. package/{http-ChBUYgv8.mjs → http-B7MNWS03.mjs} +2 -2
  87. package/{http-ChBUYgv8.mjs.map → http-B7MNWS03.mjs.map} +1 -1
  88. package/{http-C15bx-Gn.mjs → http-C2_4xIMQ.mjs} +9 -6
  89. package/{http-C15bx-Gn.mjs.map → http-C2_4xIMQ.mjs.map} +1 -1
  90. package/http.mjs +1 -1
  91. package/{index-DHoLuRuJ.mjs → index-3roRSYqk.mjs} +6 -6
  92. package/{index-DHoLuRuJ.mjs.map → index-3roRSYqk.mjs.map} +1 -1
  93. package/{index-CvhhGjZn.mjs → index-B-PEjqXn.mjs} +3 -3
  94. package/{index-CvhhGjZn.mjs.map → index-B-PEjqXn.mjs.map} +1 -1
  95. package/{index-CdaTAyzs.mjs → index-BC-vhUQX.mjs} +15 -15
  96. package/{index-CdaTAyzs.mjs.map → index-BC-vhUQX.mjs.map} +1 -1
  97. package/{index-CduefDwU.mjs → index-BJmmZly3.mjs} +3 -3
  98. package/{index-CduefDwU.mjs.map → index-BJmmZly3.mjs.map} +1 -1
  99. package/{index-DLzoBhUb.mjs → index-BawSct2l.mjs} +4 -4
  100. package/{index-DLzoBhUb.mjs.map → index-BawSct2l.mjs.map} +1 -1
  101. package/{index-Cb3Fmo7E.mjs → index-DDsxXe9z.mjs} +43 -43
  102. package/{index-Cb3Fmo7E.mjs.map → index-DDsxXe9z.mjs.map} +1 -1
  103. package/{index-BcDX9w4T.mjs → index-DLXKobUt.mjs} +8 -8
  104. package/{index-BcDX9w4T.mjs.map → index-DLXKobUt.mjs.map} +1 -1
  105. package/{index-CHELe70a.mjs → index-DWI2DYc2.mjs} +8 -8
  106. package/{index-CHELe70a.mjs.map → index-DWI2DYc2.mjs.map} +1 -1
  107. package/{index-De0W4KPF.mjs → index-Dh9Wblnw.mjs} +8 -8
  108. package/{index-De0W4KPF.mjs.map → index-Dh9Wblnw.mjs.map} +1 -1
  109. package/index.mjs +37 -37
  110. package/{integer-BWdmDp7S.mjs → integer-BYichJsH.mjs} +3 -3
  111. package/{integer-BWdmDp7S.mjs.map → integer-BYichJsH.mjs.map} +1 -1
  112. package/{ioc-Q-KAX6x1.mjs → ioc-DOAKMPdw.mjs} +2 -2
  113. package/{ioc-Q-KAX6x1.mjs.map → ioc-DOAKMPdw.mjs.map} +1 -1
  114. package/ioc.mjs +1 -1
  115. package/lucid-resourceful-vue-components.css +828 -828
  116. package/{mdi-jw9Ee7p6.mjs → mdi-VGx06N8O.mjs} +9 -9
  117. package/{mdi-jw9Ee7p6.mjs.map → mdi-VGx06N8O.mjs.map} +1 -1
  118. package/{number-Chf-qQs7.mjs → number-B5AryNzI.mjs} +8 -8
  119. package/{number-Chf-qQs7.mjs.map → number-B5AryNzI.mjs.map} +1 -1
  120. package/package.json +5 -5
  121. package/{props-eYGYq1uo.mjs → props-BZryUy0q.mjs} +4 -4
  122. package/{props-eYGYq1uo.mjs.map → props-BZryUy0q.mjs.map} +1 -1
  123. package/{props-fFnbtBgH.mjs → props-Dcuv5Iv7.mjs} +4 -4
  124. package/{props-fFnbtBgH.mjs.map → props-Dcuv5Iv7.mjs.map} +1 -1
  125. package/{renderers-DLsO8zG-.mjs → renderers-C7XOwFHb.mjs} +14 -14
  126. package/{renderers-DLsO8zG-.mjs.map → renderers-C7XOwFHb.mjs.map} +1 -1
  127. package/{string-D-UsgMTx.mjs → string-CJvxnWzd.mjs} +13 -13
  128. package/{string-D-UsgMTx.mjs.map → string-CJvxnWzd.mjs.map} +1 -1
  129. package/{unsigned_integer-7R2vw_Qn.mjs → unsigned_integer-CRQsMWxW.mjs} +4 -4
  130. package/{unsigned_integer-7R2vw_Qn.mjs.map → unsigned_integer-CRQsMWxW.mjs.map} +1 -1
  131. package/{utils-DehfJ8pT.mjs → utils-BBXjywEs.mjs} +2 -2
  132. package/{utils-DehfJ8pT.mjs.map → utils-BBXjywEs.mjs.map} +1 -1
  133. package/{validation-41gHTtyY.mjs → validation-NVIikb_s.mjs} +5 -5
  134. package/{validation-41gHTtyY.mjs.map → validation-NVIikb_s.mjs.map} +1 -1
  135. package/{vendor-nhtio-vuetifiable-CS-KbH1h.mjs → vendor-nhtio-vuetifiable-CTlDfYMJ.mjs} +7 -7
  136. package/{vendor-nhtio-vuetifiable-CS-KbH1h.mjs.map → vendor-nhtio-vuetifiable-CTlDfYMJ.mjs.map} +1 -1
  137. package/common-a_cd4SQg.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ioc-Q-KAX6x1.mjs","sources":["../src/private/services/cache.ts","../src/private/locales/en.ts","../node_modules/.pnpm/dot-object@2.1.5/node_modules/dot-object/index.js","../src/private/services/i18n.ts","../src/private/services/timezones.ts","../src/private/ioc.ts"],"sourcesContent":["import { DateTime } from 'luxon'\nimport { MilliCron } from '@nhtio/millicron'\n\nexport interface CacheService {\n get<T = any>(key: string): T | undefined\n set<T = any>(key: string, value: T, ttl: number | null): void\n has(key: string): boolean\n pull<T = any>(key: string): T | undefined\n delete(key: string): void\n}\n\nexport class ResourcefulMemoryCache implements CacheService {\n readonly #state: Map<string, any>\n readonly #expirations: Map<string, DateTime>\n readonly #cron: MilliCron\n\n constructor() {\n this.#state = new Map()\n this.#expirations = new Map()\n this.#cron = new MilliCron()\n this.#cron.$on('* * * * * * *', this.#clearExpired.bind(this))\n }\n\n #clearExpired(): void {\n const now = DateTime.now()\n for (const [key, expiration] of this.#expirations.entries()) {\n if (expiration <= now) {\n this.#state.delete(key)\n this.#expirations.delete(key)\n }\n }\n this.#stopIfEmpty()\n }\n\n #stopIfEmpty(): void {\n if (this.#expirations.size === 0) {\n this.#cron.stop()\n }\n }\n\n get<T = any>(key: string): T | undefined {\n return this.#state.get(key)\n }\n\n set<T = any>(key: string, value: T, ttl: number | null): void {\n this.#state.set(key, value)\n if (ttl !== null) {\n const expiration = DateTime.now().plus({ milliseconds: ttl })\n this.#expirations.set(key, expiration)\n } else {\n this.#expirations.delete(key)\n }\n if (!this.#cron.running) {\n this.#cron.start()\n }\n }\n\n has(key: string): boolean {\n return (\n this.#state.has(key) &&\n (!this.#expirations.has(key) || this.#expirations.get(key)! > DateTime.now())\n )\n }\n\n pull<T = any>(key: string): T | undefined {\n const value = this.get<T>(key)\n if (value !== undefined) {\n this.delete(key)\n }\n this.#stopIfEmpty()\n return value\n }\n\n delete(key: string): void {\n this.#state.delete(key)\n this.#expirations.delete(key)\n this.#stopIfEmpty()\n }\n\n clear(): void {\n this.#state.clear()\n this.#expirations.clear()\n this.#cron.stop()\n }\n}\n\nexport const defaultCacheService = new ResourcefulMemoryCache()\n","export default {\n 'alternatives.all': '{{#label}} does not match all of the required types',\n 'alternatives.any': '{{#label}} does not match any of the allowed types',\n 'alternatives.match': '{{#label}} does not match any of the allowed types',\n 'alternatives.one': '{{#label}} matches more than one allowed type',\n 'alternatives.types': '{{#label}} must be one of {{#types}}',\n 'any.custom': '{{#label}} failed custom validation because {{#error.message}}',\n 'any.default': '{{#label}} threw an error when running default method',\n 'any.failover': '{{#label}} threw an error when running failover method',\n 'any.invalid': '{{#label}} contains an invalid value',\n 'any.only': '{{#label}} must be {if(#valids.length == 1, \"\", \"one of \")}{{#valids}}',\n 'any.ref': '{{#label}} {{#arg}} references {{:#ref}} which {{#reason}}',\n 'any.required': '{{#label}} is required',\n 'any.unknown': '{{#label}} is not allowed',\n 'array.base': '{{#label}} must be an array',\n 'array.excludes': '{{#label}} contains an excluded value',\n 'array.hasKnown':\n '{{#label}} does not contain at least one required match for type {:#patternLabel}',\n 'array.hasUnknown': '{{#label}} does not contain at least one required match',\n 'array.includes': '{{#label}} does not match any of the allowed types',\n 'array.includesRequiredBoth':\n '{{#label}} does not contain {{#knownMisses}} and {{#unknownMisses}} other required value(s)',\n 'array.includesRequiredKnowns': '{{#label}} does not contain {{#knownMisses}}',\n 'array.includesRequiredUnknowns':\n '{{#label}} does not contain {{#unknownMisses}} required value(s)',\n 'array.length': '{{#label}} must contain {{#limit}} items',\n 'array.max': '{{#label}} must contain less than or equal to {{#limit}} items',\n 'array.min': '{{#label}} must contain at least {{#limit}} items',\n 'array.orderedLength': '{{#label}} must contain at most {{#limit}} items',\n 'array.sort': '{{#label}} must be sorted in {#order} order by {{#by}}',\n 'array.sort.mismatching': '{{#label}} cannot be sorted due to mismatching types',\n 'array.sort.unsupported': '{{#label}} cannot be sorted due to unsupported type {#type}',\n 'array.sparse': '{{#label}} must not be a sparse array item',\n 'array.unique': '{{#label}} contains a duplicate value',\n 'boolean.base': '{{#label}} must be a boolean',\n 'date.base': '{{#label}} must be a valid date',\n 'date.format': '{{#label}} must be in {msg(\"date.format.\" + #format) || #format} format',\n 'date.greater': '{{#label}} must be greater than {{:#limit}}',\n 'date.less': '{{#label}} must be less than {{:#limit}}',\n 'date.max': '{{#label}} must be less than or equal to {{:#limit}}',\n 'date.min': '{{#label}} must be greater than or equal to {{:#limit}}',\n 'date.format.iso': 'ISO 8601 date',\n 'date.format.javascript': 'timestamp or number of milliseconds',\n 'date.format.unix': 'timestamp or number of seconds',\n 'function.arity': '{{#label}} must have an arity of {{#n}}',\n 'function.class': '{{#label}} must be a class',\n 'function.maxArity': '{{#label}} must have an arity lesser or equal to {{#n}}',\n 'function.minArity': '{{#label}} must have an arity greater or equal to {{#n}}',\n 'number.base': '{{#label}} must be a number',\n 'number.greater': '{{#label}} must be greater than {{#limit}}',\n 'number.infinity': '{{#label}} cannot be infinity',\n 'number.integer': '{{#label}} must be an integer',\n 'number.less': '{{#label}} must be less than {{#limit}}',\n 'number.max': '{{#label}} must be less than or equal to {{#limit}}',\n 'number.min': '{{#label}} must be greater than or equal to {{#limit}}',\n 'number.multiple': '{{#label}} must be a multiple of {{#multiple}}',\n 'number.negative': '{{#label}} must be a negative number',\n 'number.port': '{{#label}} must be a valid port',\n 'number.positive': '{{#label}} must be a positive number',\n 'number.precision': '{{#label}} must have no more than {{#limit}} decimal places',\n 'number.unsafe': '{{#label}} must be a safe number',\n 'object.and':\n '{{#label}} contains {{#presentWithLabels}} without its required peers {{#missingWithLabels}}',\n 'object.assert':\n '{{#label}} is invalid because {if(#subject.key, `\"` + #subject.key + `\" failed to ` + (#message || \"pass the assertion test\"), #message || \"the assertion failed\")}',\n 'object.base': '{{#label}} must be of type {{#type}}',\n 'object.instance': '{{#label}} must be an instance of {{:#type}}',\n 'object.length': '{{#label}} must have {{#limit}} key{if(#limit == 1, \"\", \"s\")}',\n 'object.max':\n '{{#label}} must have less than or equal to {{#limit}} key{if(#limit == 1, \"\", \"s\")}',\n 'object.min': '{{#label}} must have at least {{#limit}} key{if(#limit == 1, \"\", \"s\")}',\n 'object.missing': '{{#label}} must contain at least one of {{#peersWithLabels}}',\n 'object.nand': '{{:#mainWithLabel}} must not exist simultaneously with {{#peersWithLabels}}',\n 'object.oxor':\n '{{#label}} contains a conflict between optional exclusive peers {{#peersWithLabels}}',\n 'object.pattern.match': '{{#label}} keys failed to match pattern requirements',\n 'object.refType': '{{#label}} must be a Joi reference',\n 'object.regex': '{{#label}} must be a RegExp object',\n 'object.rename.multiple':\n '{{#label}} cannot rename {{:#from}} because multiple renames are disabled and another key was already renamed to {{:#to}}',\n 'object.rename.override':\n '{{#label}} cannot rename {{:#from}} because override is disabled and target {{:#to}} exists',\n 'object.schema': '{{#label}} must be a Joi schema of {{#type}} type',\n 'object.unknown': '{{#label}} is not allowed',\n 'object.with': '{{:#mainWithLabel}} missing required peer {{:#peerWithLabel}}',\n 'object.without': '{{:#mainWithLabel}} conflict with forbidden peer {{:#peerWithLabel}}',\n 'object.xor': '{{#label}} contains a conflict between exclusive peers {{#peersWithLabels}}',\n 'string.alphanum': '{{#label}} must only contain alpha-numeric characters',\n 'string.base': '{{#label}} must be a string',\n 'string.base64': '{{#label}} must be a valid base64 string',\n 'string.creditCard': '{{#label}} must be a credit card',\n 'string.dataUri': '{{#label}} must be a valid dataUri string',\n 'string.domain': '{{#label}} must contain a valid domain name',\n 'string.email': '{{#label}} must be a valid email',\n 'string.empty': '{{#label}} is not allowed to be empty',\n 'string.guid': '{{#label}} must be a valid GUID',\n 'string.hex': '{{#label}} must only contain hexadecimal characters',\n 'string.hexAlign': '{{#label}} hex decoded representation must be byte aligned',\n 'string.hostname': '{{#label}} must be a valid hostname',\n 'string.ip': '{{#label}} must be a valid ip address with a {{#cidr}} CIDR',\n 'string.ipVersion':\n '{{#label}} must be a valid ip address of one of the following versions {{#version}} with a {{#cidr}} CIDR',\n 'string.isoDate': '{{#label}} must be in iso format',\n 'string.isoDuration': '{{#label}} must be a valid ISO 8601 duration',\n 'string.length': '{{#label}} length must be {{#limit}} characters long',\n 'string.lowercase': '{{#label}} must only contain lowercase characters',\n 'string.max': '{{#label}} length must be less than or equal to {{#limit}} characters long',\n 'string.min': '{{#label}} length must be at least {{#limit}} characters long',\n 'string.normalize': '{{#label}} must be unicode normalized in the {{#form}} form',\n 'string.token': '{{#label}} must only contain alpha-numeric and underscore characters',\n 'string.pattern.base':\n '{{#label}} with value {:[.]} fails to match the required pattern: {{#regex}}',\n 'string.pattern.name': '{{#label}} with value {:[.]} fails to match the {{#name}} pattern',\n 'string.pattern.invert.base':\n '{{#label}} with value {:[.]} matches the inverted pattern: {{#regex}}',\n 'string.pattern.invert.name':\n '{{#label}} with value {:[.]} matches the inverted {{#name}} pattern',\n 'string.trim': '{{#label}} must not have leading or trailing whitespace',\n 'string.uri': '{{#label}} must be a valid uri',\n 'string.uriCustomScheme':\n '{{#label}} must be a valid uri with a scheme matching the {{#scheme}} pattern',\n 'string.uriRelativeOnly': '{{#label}} must be a valid relative uri',\n 'string.uppercase': '{{#label}} must only contain uppercase characters',\n 'symbol.base': '{{#label}} must be a symbol',\n 'symbol.map': '{{#label}} must be one of {{#map}}',\n 'binary.base': '{{#label}} must be a buffer or a string',\n 'binary.length': '{{#label}} must be {{#limit}} bytes',\n 'binary.max': '{{#label}} must be less than or equal to {{#limit}} bytes',\n 'binary.min': '{{#label}} must be at least {{#limit}} bytes',\n 'bigint.base': '\"{{#label}}\" must be a valid bigint',\n 'bigint.greater': '\"{{#label}}\" must be greater than {{#limit}}',\n 'bigint.less': '\"{{#label}}\" must be less than {{#limit}}',\n 'bigint.max': '\"{{#label}}\" must be less than or equal to {{#limit}}',\n 'bigint.min': '\"{{#label}}\" must be greater than or equal to {{#limit}}',\n 'bigint.multiple': '\"{{#label}}\" must be a multiple of {{#limit}}',\n 'bigint.negative': '\"{{#label}}\" must be a negative bigint',\n 'bigint.positive': '\"{{#label}}\" must be a positive bigint',\n 'datetime.base': '{{#label}} must be a datetime value',\n 'datetime.exactly': '{{#label}} must be a datetime exactly equal to {{#limit}}',\n 'datetime.equals': '{{#label}} must be a datetime equal to {{#limit}}',\n 'datetime.after': '{{#label}} must be a datetime after {{#limit}}',\n 'datetime.greater': '{{#label}} must be a datetime after {{#limit}}',\n 'datetime.before': '{{#label}} must be a datetime before {{#limit}}',\n 'datetime.less': '{{#label}} must be a datetime before {{#limit}}',\n 'datetime.afterOrEqual': '{{#label}} must be a datetime after or equal to {{#limit}}',\n 'datetime.min': '{{#label}} must be a datetime after or equal to {{#limit}}',\n 'datetime.beforeOrEqual': '{{#label}} must be a datetime before or equal to {{#limit}}',\n 'datetime.max': '{{#label}} must be a datetime before or equal to {{#limit}}',\n 'datetime.weekend': '{{#label}} is not a weekend',\n 'datetime.weekday': '{{#label}} is not a weekday',\n 'phone.base': '{{#label}} must be a phone number',\n 'phone.invalid': '{{#label}} must be a valid phone number for {{#country}}',\n 'phone.fixedLine': '{{#label}} must be a fixed line number for {{#country}}',\n 'phone.mobile': '{{#label}} must be a mobile number for {{#country}}',\n 'phone.strictFixedLine': '{{#label}} is not a fixed line number for {{#country}}',\n 'phone.strictMobile': '{{#label}} is not a mobile number for {{#country}}',\n 'phone.fixedLineOrMobile': '{{#label}} must be a fixed line or mobile number for {{#country}}',\n 'phone.tollFree': '{{#label}} must be a toll-free number for {{#country}}',\n 'phone.premiumRate': '{{#label}} must be a premium rate number for {{#country}}',\n 'phone.sharedCost': '{{#label}} must be a shared cost number for {{#country}}',\n 'phone.voip': '{{#label}} must be a VoIP number for {{#country}}',\n 'phone.personalNumber': '{{#label}} must be a personal number for {{#country}}',\n 'phone.pager': '{{#label}} must be a pager number for {{#country}}',\n 'phone.uan': '{{#label}} must be a UAN number for {{#country}}',\n 'phone.voicemail': '{{#label}} must be a voicemail number for {{#country}}',\n 'phone.unknown': '{{#label}} must be an unknown type number for {{#country}}',\n 'phone.types': '{{#label}} must be one of the specified phone types for {{#country}}',\n 'country.AD': 'Andorra',\n 'country.AE': 'United Arab Emirates',\n 'country.AF': 'Afghanistan',\n 'country.AG': 'Antigua and Barbuda',\n 'country.AI': 'Anguilla',\n 'country.AL': 'Albania',\n 'country.AM': 'Armenia',\n 'country.AO': 'Angola',\n 'country.AQ': 'Antarctica',\n 'country.AR': 'Argentina',\n 'country.AS': 'American Samoa',\n 'country.AT': 'Austria',\n 'country.AU': 'Australia',\n 'country.AW': 'Aruba',\n 'country.AX': 'Aland Islands',\n 'country.AZ': 'Azerbaijan',\n 'country.BA': 'Bosnia and Herzegovina',\n 'country.BB': 'Barbados',\n 'country.BD': 'Bangladesh',\n 'country.BE': 'Belgium',\n 'country.BF': 'Burkina Faso',\n 'country.BG': 'Bulgaria',\n 'country.BH': 'Bahrain',\n 'country.BI': 'Burundi',\n 'country.BJ': 'Benin',\n 'country.BL': 'Saint Barthelemy',\n 'country.BM': 'Bermuda',\n 'country.BN': 'Brunei',\n 'country.BO': 'Bolivia',\n 'country.BQ': 'Bonaire, Saint Eustatius and Saba',\n 'country.BR': 'Brazil',\n 'country.BS': 'Bahamas',\n 'country.BT': 'Bhutan',\n 'country.BV': 'Bouvet Island',\n 'country.BW': 'Botswana',\n 'country.BY': 'Belarus',\n 'country.BZ': 'Belize',\n 'country.CA': 'Canada',\n 'country.CC': 'Cocos Islands',\n 'country.CD': 'Democratic Republic of the Congo',\n 'country.CF': 'Central African Republic',\n 'country.CG': 'Republic of the Congo',\n 'country.CH': 'Switzerland',\n 'country.CI': 'Ivory Coast',\n 'country.CK': 'Cook Islands',\n 'country.CL': 'Chile',\n 'country.CM': 'Cameroon',\n 'country.CN': 'China',\n 'country.CO': 'Colombia',\n 'country.CR': 'Costa Rica',\n 'country.CU': 'Cuba',\n 'country.CV': 'Cape Verde',\n 'country.CW': 'Curacao',\n 'country.CX': 'Christmas Island',\n 'country.CY': 'Cyprus',\n 'country.CZ': 'Czech Republic',\n 'country.DE': 'Germany',\n 'country.DJ': 'Djibouti',\n 'country.DK': 'Denmark',\n 'country.DM': 'Dominica',\n 'country.DO': 'Dominican Republic',\n 'country.DZ': 'Algeria',\n 'country.EC': 'Ecuador',\n 'country.EE': 'Estonia',\n 'country.EG': 'Egypt',\n 'country.EH': 'Western Sahara',\n 'country.ER': 'Eritrea',\n 'country.ES': 'Spain',\n 'country.ET': 'Ethiopia',\n 'country.FI': 'Finland',\n 'country.FJ': 'Fiji',\n 'country.FK': 'Falkland Islands',\n 'country.FM': 'Micronesia',\n 'country.FO': 'Faroe Islands',\n 'country.FR': 'France',\n 'country.GA': 'Gabon',\n 'country.GB': 'United Kingdom',\n 'country.GD': 'Grenada',\n 'country.GE': 'Georgia',\n 'country.GF': 'French Guiana',\n 'country.GG': 'Guernsey',\n 'country.GH': 'Ghana',\n 'country.GI': 'Gibraltar',\n 'country.GL': 'Greenland',\n 'country.GM': 'Gambia',\n 'country.GN': 'Guinea',\n 'country.GP': 'Guadeloupe',\n 'country.GQ': 'Equatorial Guinea',\n 'country.GR': 'Greece',\n 'country.GS': 'South Georgia and the South Sandwich Islands',\n 'country.GT': 'Guatemala',\n 'country.GU': 'Guam',\n 'country.GW': 'Guinea-Bissau',\n 'country.GY': 'Guyana',\n 'country.HK': 'Hong Kong',\n 'country.HM': 'Heard Island and McDonald Islands',\n 'country.HN': 'Honduras',\n 'country.HR': 'Croatia',\n 'country.HT': 'Haiti',\n 'country.HU': 'Hungary',\n 'country.ID': 'Indonesia',\n 'country.IE': 'Ireland',\n 'country.IL': 'Israel',\n 'country.IM': 'Isle of Man',\n 'country.IN': 'India',\n 'country.IO': 'British Indian Ocean Territory',\n 'country.IQ': 'Iraq',\n 'country.IR': 'Iran',\n 'country.IS': 'Iceland',\n 'country.IT': 'Italy',\n 'country.JE': 'Jersey',\n 'country.JM': 'Jamaica',\n 'country.JO': 'Jordan',\n 'country.JP': 'Japan',\n 'country.KE': 'Kenya',\n 'country.KG': 'Kyrgyzstan',\n 'country.KH': 'Cambodia',\n 'country.KI': 'Kiribati',\n 'country.KM': 'Comoros',\n 'country.KN': 'Saint Kitts and Nevis',\n 'country.KP': 'North Korea',\n 'country.KR': 'South Korea',\n 'country.KW': 'Kuwait',\n 'country.KY': 'Cayman Islands',\n 'country.KZ': 'Kazakhstan',\n 'country.LA': 'Laos',\n 'country.LB': 'Lebanon',\n 'country.LC': 'Saint Lucia',\n 'country.LI': 'Liechtenstein',\n 'country.LK': 'Sri Lanka',\n 'country.LR': 'Liberia',\n 'country.LS': 'Lesotho',\n 'country.LT': 'Lithuania',\n 'country.LU': 'Luxembourg',\n 'country.LV': 'Latvia',\n 'country.LY': 'Libya',\n 'country.MA': 'Morocco',\n 'country.MC': 'Monaco',\n 'country.MD': 'Moldova',\n 'country.ME': 'Montenegro',\n 'country.MF': 'Saint Martin',\n 'country.MG': 'Madagascar',\n 'country.MH': 'Marshall Islands',\n 'country.MK': 'Macedonia',\n 'country.ML': 'Mali',\n 'country.MM': 'Myanmar',\n 'country.MN': 'Mongolia',\n 'country.MO': 'Macao',\n 'country.MP': 'Northern Mariana Islands',\n 'country.MQ': 'Martinique',\n 'country.MR': 'Mauritania',\n 'country.MS': 'Montserrat',\n 'country.MT': 'Malta',\n 'country.MU': 'Mauritius',\n 'country.MV': 'Maldives',\n 'country.MW': 'Malawi',\n 'country.MX': 'Mexico',\n 'country.MY': 'Malaysia',\n 'country.MZ': 'Mozambique',\n 'country.NA': 'Namibia',\n 'country.NC': 'New Caledonia',\n 'country.NE': 'Niger',\n 'country.NF': 'Norfolk Island',\n 'country.NG': 'Nigeria',\n 'country.NI': 'Nicaragua',\n 'country.NL': 'Netherlands',\n 'country.NO': 'Norway',\n 'country.NP': 'Nepal',\n 'country.NR': 'Nauru',\n 'country.NU': 'Niue',\n 'country.NZ': 'New Zealand',\n 'country.OM': 'Oman',\n 'country.PA': 'Panama',\n 'country.PE': 'Peru',\n 'country.PF': 'French Polynesia',\n 'country.PG': 'Papua New Guinea',\n 'country.PH': 'Philippines',\n 'country.PK': 'Pakistan',\n 'country.PL': 'Poland',\n 'country.PM': 'Saint Pierre and Miquelon',\n 'country.PN': 'Pitcairn',\n 'country.PR': 'Puerto Rico',\n 'country.PS': 'Palestinian Territory',\n 'country.PT': 'Portugal',\n 'country.PW': 'Palau',\n 'country.PY': 'Paraguay',\n 'country.QA': 'Qatar',\n 'country.RE': 'Reunion',\n 'country.RO': 'Romania',\n 'country.RS': 'Serbia',\n 'country.RU': 'Russia',\n 'country.RW': 'Rwanda',\n 'country.SA': 'Saudi Arabia',\n 'country.SB': 'Solomon Islands',\n 'country.SC': 'Seychelles',\n 'country.SD': 'Sudan',\n 'country.SE': 'Sweden',\n 'country.SG': 'Singapore',\n 'country.SH': 'Saint Helena',\n 'country.SI': 'Slovenia',\n 'country.SJ': 'Svalbard and Jan Mayen',\n 'country.SK': 'Slovakia',\n 'country.SL': 'Sierra Leone',\n 'country.SM': 'San Marino',\n 'country.SN': 'Senegal',\n 'country.SO': 'Somalia',\n 'country.SR': 'Suriname',\n 'country.SS': 'South Sudan',\n 'country.ST': 'Sao Tome and Principe',\n 'country.SV': 'El Salvador',\n 'country.SX': 'Sint Maarten',\n 'country.SY': 'Syria',\n 'country.SZ': 'Swaziland',\n 'country.TC': 'Turks and Caicos Islands',\n 'country.TD': 'Chad',\n 'country.TF': 'French Southern Territories',\n 'country.TG': 'Togo',\n 'country.TH': 'Thailand',\n 'country.TJ': 'Tajikistan',\n 'country.TK': 'Tokelau',\n 'country.TL': 'East Timor',\n 'country.TM': 'Turkmenistan',\n 'country.TN': 'Tunisia',\n 'country.TO': 'Tonga',\n 'country.TR': 'Turkey',\n 'country.TT': 'Trinidad and Tobago',\n 'country.TV': 'Tuvalu',\n 'country.TW': 'Taiwan',\n 'country.TZ': 'Tanzania',\n 'country.UA': 'Ukraine',\n 'country.UG': 'Uganda',\n 'country.UM': 'United States Minor Outlying Islands',\n 'country.US': 'United States',\n 'country.UY': 'Uruguay',\n 'country.UZ': 'Uzbekistan',\n 'country.VA': 'Vatican',\n 'country.VC': 'Saint Vincent and the Grenadines',\n 'country.VE': 'Venezuela',\n 'country.VG': 'British Virgin Islands',\n 'country.VI': 'U.S. Virgin Islands',\n 'country.VN': 'Vietnam',\n 'country.VU': 'Vanuatu',\n 'country.WF': 'Wallis and Futuna',\n 'country.WS': 'Samoa',\n 'country.XK': 'Kosovo',\n 'country.YE': 'Yemen',\n 'country.YT': 'Mayotte',\n 'country.ZA': 'South Africa',\n 'country.ZM': 'Zambia',\n 'country.ZW': 'Zimbabwe',\n 'resourcefulIndex.searchField.placeholder': 'Search...',\n 'resourcefulIndex.searchField.tooltip.title': 'Search Field Cheat Sheet',\n 'resourcefulIndex.searchField.tooltip.searchForTermInsensitive':\n 'Search for a term (case insensitive)',\n 'resourcefulIndex.searchField.tooltip.searchForTermSensitive':\n 'Search for a term (case sensitive)',\n 'resourcefulIndex.searchField.tooltip.searchForTerminField':\n 'Search for a term in a specific field',\n 'resourcefulIndex.searchField.tooltip.searchForTermWithWildcards':\n 'Search for a term with wildcards',\n 'resourcefulIndex.searchField.tooltip.searchForWithBoolean': 'Search by boolean value',\n 'resourcefulIndex.searchField.tooltip.searchForWithNull': 'Search by null value',\n 'resourcefulIndex.searchField.tooltip.searchForNumericComparisons': 'Search by comparison',\n 'resourcefulIndex.searchField.tooltip.searchForNumericRanges': 'Search by range',\n 'resourcefulIndex.searchField.tooltip.searchForNumericRanges.inclusive': 'Inclusive',\n 'resourcefulIndex.searchField.tooltip.searchForNumericRanges.exclusive': 'Exclusive',\n 'resourcefulIndex.searchField.tooltip.searchWithBooleanOperators': 'Multiple Conditions',\n 'resourcefulIndex.searchField.tooltip.searchWithUnaryOperators': 'Negation',\n 'resourcefulIndex.searchField.tooltip.searchWithImplicitAnd': 'Implicit AND',\n 'resourcefulIndex.searchField.tooltip.searchWithGrouping': 'Grouping',\n 'resourcefulIndex.recordsTotal': '%d - %d of %d',\n 'general.refresh': 'Refresh',\n 'general.reset': 'Reset',\n 'general.ok': 'OK',\n 'general.off': 'Off',\n 'general.save': 'Save',\n 'general.discard': 'Discard',\n 'general.add': 'Add',\n 'general.start': 'Start',\n 'general.end': 'End',\n 'general.date': 'Date',\n 'general.time': 'Time',\n 'general.timezone': 'Timezone',\n 'general.more': 'More',\n 'grammar.and': '%s and %s',\n 'grammar.is': 'is',\n 'grammar.are': 'are',\n 'abbreviations.seconds': 's',\n 'abbreviations.minutes': 'm',\n 'abbreviations.hours': 'h',\n 'fields.id': 'ID',\n 'resourcefulIndex.table.noResults.title': 'No Results Found',\n 'resourcefulIndex.table.noResults.text': 'No records match your search criteria.',\n 'resourcefulIndex.table.noData.title': 'No Records',\n 'resourcefulIndex.table.noData.text': 'There are no records to display.',\n 'resourcefulIndex.table.loading.text': 'Your results will appear here shortly.',\n 'resourcefulIndex.table.badRequest.title': 'Bad Request',\n 'resourcefulIndex.table.badRequest.text': 'Your request failed with error code \"%s\"',\n 'resourcefulIndex.columnControlButton.cta': 'Columns',\n 'resourcefulIndex.filterControlButton.cta': 'Filters',\n 'resourcefulIndex.sortingControlButton.cta': 'Sorting',\n 'resourcefulIndex.bulkActionsControlButton.cta': 'Bulk Actions',\n 'resourcefulIndex.bulkUpdateControlButton.cta': 'Bulk Edit',\n 'resourcefulIndex.downloadControlButton.cta': 'Download',\n 'resourcefulIndex.perPage': 'Per Page',\n 'resourcefulIndex.pageOf': '%d of %d',\n 'resourcefulIndex.jumpToPage': 'Jump to page %d',\n 'lucid.resourceful.index.columnsControls.filter.label': 'Filter Columns',\n 'lucid.resourceful.index.sortsControls.filter.label': 'Filter Sortable Columns',\n 'lucid.resourceful.index.columnsControls.dispositionDialog.headline': 'You have unsaved changes',\n 'lucid.resourceful.index.columnsControls.dispositionDialog.title':\n 'Would you like to save your changes?',\n 'lucid.resourceful.index.sortsControls.dispositionDialog.headline': 'You have unsaved changes',\n 'lucid.resourceful.index.sortsControls.dispositionDialog.title':\n 'Would you like to save your changes?',\n 'lucid.resourceful.index.filtersControls.dispositionDialog.headline': 'You have unsaved changes',\n 'lucid.resourceful.index.filtersControls.dispositionDialog.title':\n 'Would you like to save your changes?',\n 'filters.groups.operators.AND': 'Match All',\n 'filters.groups.operators.OR': 'Match Any',\n 'lucid.resourceful.index.filtersControls.addGroup': 'Add Group',\n 'lucid.resourceful.index.filtersControls.addCondition': 'Add Rule',\n 'lucid.resourceful.index.filtersControls.groupEmpty.headline': 'Empty Group',\n 'lucid.resourceful.index.filtersControls.groupEmpty.title': 'This group has no conditions',\n 'lucid.resourceful.index.filtersControls.invalidDialog.headline': 'Validation Errors Found',\n 'lucid.resourceful.index.filtersControls.invalidDialog.title':\n 'Unable to save filters because one or more rules contain errors',\n 'filterGroupConditionElement.unknownValidationError':\n 'An unknown validation error has occured. Please check the console for more information.',\n 'filterGroupConditionElement.notValid':\n 'The filter condition is neither a valid group nor a valid rule.',\n 'filterGroupElement.notValid': 'The group is not configured correctly',\n 'filterGroupElement.model.condition.singular': 'condition',\n 'filterGroupElement.model.condition.plural': 'conditions',\n 'filterGroupElement.conditions.invalid': 'The %s %s %s invalid',\n 'filterConditionElement.field.field': 'Property',\n 'filterConditionElement.field.operator': 'Comparison',\n 'filterConditionElement.field.arguments': 'Criteria',\n 'filterConditionArgumentCell.badIndex': 'One of the \"criteria\"',\n 'filterConditionArgumentCell.nthArgument': 'The %s \"criteria\"',\n 'filterConditionElement.field.field.hint': 'The property to filter on',\n 'filterConditionElement.field.operator.hint': 'The comparison operator to use',\n 'filterConditionElement.field.arguments.hint': 'The criteria for the filter',\n 'filterConditionElement.validation.field.string.empty': '{{#label}} is required',\n 'filterConditionElement.validation.operator.string.empty': 'Select a valid {{#label}}',\n 'filterConditionElement.validation.operator.any.only': 'Select a valid {{#label}}',\n 'filterConditionElement.validation.arguments.array.sparse':\n '{{#label}} is missing required information',\n 'filterConditionElement.validation.arguments.array.length': '{{#label}} is required',\n 'filterConditionElement.operator.string.=': 'is exactly',\n 'filterConditionElement.operator.string.!=': 'is not exactly',\n 'filterConditionElement.operator.string.~': 'contains',\n 'filterConditionElement.operator.string.!~': 'does not contain',\n 'filterConditionElement.operator.string.^': 'starts with',\n 'filterConditionElement.operator.string.$': 'ends with',\n 'filterConditionElement.operator.string.*~': 'contains',\n 'filterConditionElement.operator.string.!': 'is not',\n 'filterConditionElement.operator.string.in': 'is one of',\n 'filterConditionElement.operator.string.!in': 'is not one of',\n 'filterConditionElement.operator.string.*': 'is set',\n 'filterConditionElement.operator.string.!*': 'is not set',\n 'filterConditionElement.operator.string.null': 'is null',\n 'filterConditionElement.operator.string.!null': 'is not null',\n 'filterConditionElement.operator.number.=': 'is equal to',\n 'filterConditionElement.operator.number.!=': 'is not equal to',\n 'filterConditionElement.operator.number.>': 'is greater than',\n 'filterConditionElement.operator.number.<': 'is less than',\n 'filterConditionElement.operator.number.>=': 'is greater than or equal to',\n 'filterConditionElement.operator.number.<=': 'is less than or equal to',\n 'filterConditionElement.operator.number.><': 'is between',\n 'filterConditionElement.operator.number.!><': 'is not between',\n 'filterConditionElement.operator.number.in': 'is in list',\n 'filterConditionElement.operator.number.!in': 'is not in list',\n 'filterConditionElement.operator.number.*': 'is set',\n 'filterConditionElement.operator.number.!*': 'is not set',\n 'filterConditionElement.operator.number.null': 'is null',\n 'filterConditionElement.operator.number.!null': 'is not null',\n 'filterConditionElement.operator.integer.=': 'is equal to',\n 'filterConditionElement.operator.integer.!=': 'is not equal to',\n 'filterConditionElement.operator.integer.>': 'is greater than',\n 'filterConditionElement.operator.integer.<': 'is less than',\n 'filterConditionElement.operator.integer.>=': 'is greater than or equal to',\n 'filterConditionElement.operator.integer.<=': 'is less than or equal to',\n 'filterConditionElement.operator.integer.><': 'is between',\n 'filterConditionElement.operator.integer.!><': 'is not between',\n 'filterConditionElement.operator.integer.in': 'is in list',\n 'filterConditionElement.operator.integer.!in': 'is not in list',\n 'filterConditionElement.operator.integer.*': 'is set',\n 'filterConditionElement.operator.integer.!*': 'is not set',\n 'filterConditionElement.operator.integer.null': 'is null',\n 'filterConditionElement.operator.integer.!null': 'is not null',\n 'filterConditionElement.operator.bigint.=': 'is equal to',\n 'filterConditionElement.operator.bigint.!=': 'is not equal to',\n 'filterConditionElement.operator.bigint.>': 'is greater than',\n 'filterConditionElement.operator.bigint.<': 'is less than',\n 'filterConditionElement.operator.bigint.>=': 'is greater than or equal to',\n 'filterConditionElement.operator.bigint.<=': 'is less than or equal to',\n 'filterConditionElement.operator.bigint.><': 'is between',\n 'filterConditionElement.operator.bigint.!><': 'is not between',\n 'filterConditionElement.operator.bigint.in': 'is in list',\n 'filterConditionElement.operator.bigint.!in': 'is not in list',\n 'filterConditionElement.operator.bigint.*': 'is set',\n 'filterConditionElement.operator.bigint.!*': 'is not set',\n 'filterConditionElement.operator.bigint.null': 'is null',\n 'filterConditionElement.operator.bigint.!null': 'is not null',\n 'filterConditionElement.operator.unsignedInteger.=': 'is equal to',\n 'filterConditionElement.operator.unsignedInteger.!=': 'is not equal to',\n 'filterConditionElement.operator.unsignedInteger.>': 'is greater than',\n 'filterConditionElement.operator.unsignedInteger.<': 'is less than',\n 'filterConditionElement.operator.unsignedInteger.>=': 'is greater than or equal to',\n 'filterConditionElement.operator.unsignedInteger.<=': 'is less than or equal to',\n 'filterConditionElement.operator.unsignedInteger.><': 'is between',\n 'filterConditionElement.operator.unsignedInteger.!><': 'is not between',\n 'filterConditionElement.operator.unsignedInteger.in': 'is in list',\n 'filterConditionElement.operator.unsignedInteger.!in': 'is not in list',\n 'filterConditionElement.operator.unsignedInteger.*': 'is set',\n 'filterConditionElement.operator.unsignedInteger.!*': 'is not set',\n 'filterConditionElement.operator.unsignedInteger.null': 'is null',\n 'filterConditionElement.operator.unsignedInteger.!null': 'is not null',\n 'filterConditionElement.operator.date.=': 'is equal to',\n 'filterConditionElement.operator.date.!=': 'is not equal to',\n 'filterConditionElement.operator.date.>': 'is after',\n 'filterConditionElement.operator.date.<': 'is before',\n 'filterConditionElement.operator.date.>=': 'is on or after',\n 'filterConditionElement.operator.date.<=': 'is on or before',\n 'filterConditionElement.operator.date.><': 'is between',\n 'filterConditionElement.operator.date.!><': 'is not between',\n 'filterConditionElement.operator.date.*': 'is set',\n 'filterConditionElement.operator.date.!*': 'is not set',\n 'filterConditionElement.operator.date.null': 'is null',\n 'filterConditionElement.operator.date.!null': 'is not null',\n 'filterConditionElement.operator.date.t': 'is today',\n 'filterConditionElement.operator.date.yd': 'was yesterday',\n 'filterConditionElement.operator.date.tm': 'is tomorrow',\n 'filterConditionElement.operator.date.w': 'is this week',\n 'filterConditionElement.operator.date.lw': 'was last week',\n 'filterConditionElement.operator.date.l2w': 'was within the last 2 weeks',\n 'filterConditionElement.operator.date.nw': 'is next week',\n 'filterConditionElement.operator.date.m': 'is this month',\n 'filterConditionElement.operator.date.lm': 'was last month',\n 'filterConditionElement.operator.date.nm': 'is next month',\n 'filterConditionElement.operator.date.q': 'is this quarter',\n 'filterConditionElement.operator.date.lq': 'was last quarter',\n 'filterConditionElement.operator.date.nq': 'is next quarter',\n 'filterConditionElement.operator.date.y': 'is this year',\n 'filterConditionElement.operator.date.ly': 'was last year',\n 'filterConditionElement.operator.date.ny': 'is next year',\n 'filterConditionElement.operator.date.><t+': 'is within the last N days',\n 'filterConditionElement.operator.date.><t-': 'is within the next N days',\n 'filterConditionElement.operator.date.>t+': 'is more than N days ago',\n 'filterConditionElement.operator.date.<t+': 'is less than N days ago',\n 'filterConditionElement.operator.date.>t-': 'is more than N days from now',\n 'filterConditionElement.operator.date.<t-': 'is less than N days from now',\n 'filterConditionElement.operator.date.t+': 'was exactly N days ago',\n 'filterConditionElement.operator.date.t-': 'is exactly N days from now',\n 'filterConditionElement.operator.date.wtd': 'is since the beginning of this week',\n 'filterConditionElement.operator.date.mtd': 'is since the beginning of this month',\n 'filterConditionElement.operator.date.qtd': 'is since the beginning of this quarter',\n 'filterConditionElement.operator.date.ytd': 'is since the beginning of this year',\n 'filterConditionElement.operator.date.w+': 'was within the last N weeks',\n 'filterConditionElement.operator.date.w-': 'is within the next N weeks',\n 'filterConditionElement.operator.date.m+': 'was within the last N months',\n 'filterConditionElement.operator.date.m-': 'is within the next N months',\n 'filterConditionElement.operator.date.q+': 'was within the last N quarters',\n 'filterConditionElement.operator.date.q-': 'is within the next N quarters',\n 'filterConditionElement.operator.date.y+': 'was within the last N years',\n 'filterConditionElement.operator.date.y-': 'is within the next N years',\n 'filterConditionElement.operator.dateTime.=': 'is equal to',\n 'filterConditionElement.operator.dateTime.!=': 'is not equal to',\n 'filterConditionElement.operator.dateTime.>': 'is after',\n 'filterConditionElement.operator.dateTime.<': 'is before',\n 'filterConditionElement.operator.dateTime.>=': 'is on or after',\n 'filterConditionElement.operator.dateTime.<=': 'is on or before',\n 'filterConditionElement.operator.dateTime.><': 'is between',\n 'filterConditionElement.operator.dateTime.!><': 'is not between',\n 'filterConditionElement.operator.dateTime.*': 'is set',\n 'filterConditionElement.operator.dateTime.!*': 'is not set',\n 'filterConditionElement.operator.dateTime.null': 'is null',\n 'filterConditionElement.operator.dateTime.!null': 'is not null',\n 'filterConditionElement.operator.dateTime.t': 'is today',\n 'filterConditionElement.operator.dateTime.yd': 'was yesterday',\n 'filterConditionElement.operator.dateTime.tm': 'is tomorrow',\n 'filterConditionElement.operator.dateTime.w': 'is this week',\n 'filterConditionElement.operator.dateTime.lw': 'was last week',\n 'filterConditionElement.operator.dateTime.l2w': 'was within the last 2 weeks',\n 'filterConditionElement.operator.dateTime.nw': 'is next week',\n 'filterConditionElement.operator.dateTime.m': 'is this month',\n 'filterConditionElement.operator.dateTime.lm': 'was last month',\n 'filterConditionElement.operator.dateTime.nm': 'is next month',\n 'filterConditionElement.operator.dateTime.q': 'is this quarter',\n 'filterConditionElement.operator.dateTime.lq': 'was last quarter',\n 'filterConditionElement.operator.dateTime.nq': 'is next quarter',\n 'filterConditionElement.operator.dateTime.y': 'is this year',\n 'filterConditionElement.operator.dateTime.ly': 'was last year',\n 'filterConditionElement.operator.dateTime.ny': 'is next year',\n 'filterConditionElement.operator.dateTime.><t+': 'is within the last N days',\n 'filterConditionElement.operator.dateTime.><t-': 'is within the next N days',\n 'filterConditionElement.operator.dateTime.>t+': 'is more than N days ago',\n 'filterConditionElement.operator.dateTime.<t+': 'is less than N days ago',\n 'filterConditionElement.operator.dateTime.>t-': 'is more than N days from now',\n 'filterConditionElement.operator.dateTime.<t-': 'is less than N days from now',\n 'filterConditionElement.operator.dateTime.t+': 'was exactly N days ago',\n 'filterConditionElement.operator.dateTime.t-': 'is exactly N days from now',\n 'filterConditionElement.operator.dateTime.wtd': 'is since the beginning of this week',\n 'filterConditionElement.operator.dateTime.mtd': 'is since the beginning of this month',\n 'filterConditionElement.operator.dateTime.qtd': 'is since the beginning of this quarter',\n 'filterConditionElement.operator.dateTime.ytd': 'is since the beginning of this year',\n 'filterConditionElement.operator.dateTime.h+': 'was within the last N hours',\n 'filterConditionElement.operator.dateTime.h-': 'is within the next N hours',\n 'filterConditionElement.operator.dateTime.w+': 'was within the last N weeks',\n 'filterConditionElement.operator.dateTime.w-': 'is within the next N weeks',\n 'filterConditionElement.operator.dateTime.m+': 'was within the last N months',\n 'filterConditionElement.operator.dateTime.m-': 'is within the next N months',\n 'filterConditionElement.operator.dateTime.q+': 'was within the last N quarters',\n 'filterConditionElement.operator.dateTime.q-': 'is within the next N quarters',\n 'filterConditionElement.operator.dateTime.y+': 'was within the last N years',\n 'filterConditionElement.operator.dateTime.y-': 'is within the next N years',\n 'filterConditionElement.operator.dateTime.hr': 'is this hour',\n 'filterConditionElement.operator.dateTime.lhr': 'was the previous hour',\n 'filterConditionElement.operator.dateTime.nhr': 'is the next hour',\n 'filterConditionElement.operator.dateTime.fy': 'is this fiscal year',\n 'filterConditionElement.operator.dateTime.lfy': 'was last fiscal year',\n 'filterConditionElement.operator.dateTime.fq': 'is this fiscal quarter',\n 'filterConditionElement.operator.dateTime.lfq': 'was last fiscal quarter',\n 'filterConditionElement.operator.boolean.=': 'is',\n 'filterConditionElement.operator.boolean.!=': 'is not',\n 'filterConditionElement.operator.boolean.*': 'is set',\n 'filterConditionElement.operator.boolean.!*': 'is not set',\n 'filterConditionElement.operator.boolean.null': 'is null',\n 'filterConditionElement.operator.boolean.!null': 'is not null',\n 'filterConditionElement.operator.binary.=': 'is equal to',\n 'filterConditionElement.operator.binary.!=': 'is not equal to',\n 'filterConditionElement.operator.binary.*': 'is set',\n 'filterConditionElement.operator.binary.!*': 'is not set',\n 'filterConditionElement.operator.binary.null': 'is null',\n 'filterConditionElement.operator.binary.!null': 'is not null',\n 'filterConditionElement.operator.binary.empty': 'is empty',\n 'filterConditionElement.operator.binary.!empty': 'is not empty',\n 'resourceful.fields.multiple.noValues': 'No values defined',\n 'boolean.true': 'Yes',\n 'boolean.false': 'No',\n 'boolean.undetermined': 'Undetermined',\n 'resourceful.action.openInApp': 'Open in Current Tab',\n 'resourceful.action.openInNew': 'Open in New Tab',\n 'resourceful.action.copyLink': 'Copy Link',\n 'resourceful.clipboard.copiedToClipboard': 'Copied to clipboard',\n 'resourceful.clipboard.copyFailed': 'Failed to copy to clipboard',\n 'resourceful.alert.disposition.ok': 'OK',\n 'resourceful.alert.disposition.confirm': 'Yes',\n 'resourceful.alert.disposition.deny': 'No',\n 'resourceful.alert.disposition.cancel': 'Cancel',\n 'resourcefulIndex.bulkActionProcessing.preparing.title': 'Preparing bulk action',\n 'resourcefulIndex.bulkActionProcessing.preparing.text':\n 'Please wait while we prepare your bulk action.',\n 'resourcefulIndex.bulkActionProcessing.selection.title': 'Apply to page or all results?',\n 'resourcefulIndex.bulkActionProcessing.selection.text':\n 'Do you want to apply this action to only the %s selected items, or to all %s matching records?',\n 'resourcefulIndex.bulkActionProcessing.selection.confirmButtonText': 'Apply to Page',\n 'resourcefulIndex.bulkActionProcessing.selection.denyButtonText': 'Apply to All',\n 'resourcefulIndex.bulkActionProcessing.selection.cancelButtonText': 'Cancel',\n 'resourcefulIndex.bulkActionProcessing.tooManyRecords.title': 'Too many records selected',\n 'resourcefulIndex.bulkActionProcessing.tooManyRecords.text':\n 'You have selected %s records but you can only apply this action to a maximum of %s records at a time. Please refine your selection and try again.',\n 'resourcefulIndex.bulkActionProcessing.largeRecords.title': 'Large Selection',\n 'resourcefulIndex.bulkActionProcessing.largeRecords.text':\n 'You are about to apply this action to %s records. Are you sure you want to continue?',\n 'resourcefulIndex.bulkActionProcessing.recordCountConfirmation.title': 'Confirmation',\n 'resourcefulIndex.bulkActionProcessing.recordCountConfirmation.text':\n 'You are about to apply this action to %s records. Are you sure you want to continue?',\n 'resourcefulIndex.bulkActionProcessing.fetchingRecords.title': 'Fetching records',\n 'resourcefulIndex.bulkActionProcessing.fetchingRecords.text':\n 'Please wait while we fetch the records to be processed.',\n 'resourcefulIndex.bulkActionProcessing.unrecoverableError.title': 'Unrecoverable Error',\n 'resourcefulIndex.bulkActionProcessing.unrecoverableError.text':\n 'An unrecoverable error occurred while processing your request.',\n 'resourcefulIndex.bulkActionProcessing.unprocessableRecords.title': 'Unprocessable Records',\n 'resourcefulIndex.bulkActionProcessing.unprocessableRecords.text':\n 'Operation aborted because one or more records did not meet constraints.',\n 'resourcefulIndex.bulkActionProcessing.title': 'Bulk %s Operation Progress',\n 'resourcefulIndex.bulkActionProcessing.successes': 'Successful',\n 'resourcefulIndex.bulkActionProcessing.errors': 'Failed',\n 'resourcefulIndex.bulkActionProcessing.undetermined': 'Undetermined',\n 'resourcefulIndex.bulkActionProcessing.processed': 'Processed',\n 'resourcefulIndex.bulkActionProcessing.completeButton': 'Close',\n 'resourcefulIndex.bulkUpdate.title': 'Bulk Edit',\n 'resourcefulIndex.bulkUpdate.selectFieldsLabel': 'Select fields to edit',\n 'resourcefulIndex.bulkUpdate.successTitle': 'Bulk Edit Successful',\n 'resourcefulIndex.bulkUpdate.successText': 'The selected records have been updated successfully.',\n 'resourcefulIndex.bulkUpdate.validationErrorTitle': 'Validation Error',\n 'resourcefulIndex.bulkUpdate.validationErrorText':\n 'Please correct the errors in the form before saving.',\n 'resourcefulIndex.bulkUpdate.failureTitle': 'Bulk Edit Failed',\n 'resourcefulIndex.bulkUpdate.failureText': 'Failed to update the selected records.',\n 'resourcefulIndex.download.title': 'Download Records',\n 'exporter.form.fields.format.label': 'File Type',\n 'exporter.form.fields.filename.label': 'File Name',\n 'exporter.form.fields.scope.options.all': 'All results matching filters',\n 'exporter.form.fields.scope.options.page': \"This page's results\",\n 'exporter.form.fields.scope.options.selected': 'Selected records',\n 'exporter.form.fields.scope.label': 'Records to download',\n 'exporter.form.fields.includeAllColumns.label': 'Include Hidden Columns',\n 'exporter.form.fields.humanizeNames.label': 'Use Human-Friendly Column Names',\n 'exporter.form.fields.humanizeData.label': 'Use Human-Friendly Data',\n 'exporter.form.actions.download': 'Download',\n 'resourcefulIndex.download.defaultFilename': 'downloaded_records',\n 'exporter.alerts.largeExport.title': 'This may take a while',\n 'exporter.alerts.largeExport.text':\n 'You are about to download %s records. This may take a while. Are you sure you want to continue?',\n 'exporter.alerts.largeExport.confirmButtonText': 'Continue Download',\n 'exporter.alerts.largeExport.cancelButtonText': 'Cancel',\n 'exporter.status.fetching': 'Fetching %s of %s records',\n 'exporter.status.generating': 'Finalizing file',\n 'exporter.status.completed': 'Your download is ready',\n 'exporter.status.pending': 'Preparing your download',\n 'exporter.form.actions.cancel': 'Cancel Download',\n 'exporter.form.actions.close': 'Close',\n 'exporter.alerts.cancelExport.title': 'Confirm Cancellation',\n 'exporter.alerts.cancelExport.text': 'Are you sure you want to cancel?',\n 'exporter.alerts.cancelExport.confirmButtonText': 'Cancel Download',\n 'exporter.alerts.cancelExport.denyButtonText': 'Nevermind',\n 'exporter.alerts.cancelExport.cancelled.title': 'Download Cancelled',\n 'exporter.alerts.cancelExport.cancelled.text': 'Your download was cancelled per your request.',\n 'resourcefulRecord.alerts.prevented.title': 'Submission Prevented',\n 'resourcefulRecord.alerts.prevented.text': 'The form submission was prevented.',\n 'resourcefulRecord.alerts.success.title': 'Success',\n 'resourcefulRecord.alerts.success.text': 'The operation completed successfully.',\n 'resourcefulRecord.alerts.failure.title': 'Operation Failed',\n 'resourcefulRecord.alerts.failure.text': 'The operation failed to complete.',\n 'resourcefulRecord.alerts.exception.title': 'Unexpected Error',\n 'resourcefulRecord.alerts.exception.text': 'An unexpected error occurred.',\n 'resourcefulRecord.meta.badRequest.title': 'Unable to Load Metadata',\n 'resourcefulRecord.meta.badRequest.text': 'Failed to load record metadata (Error: %s)',\n 'resourcefulRecord.record.badRequest.title': 'Unable to Load Record',\n 'resourcefulRecord.record.badRequest.text': 'Failed to load the record (Error: %s)',\n 'resourcefulRecord.form.badRequest.title': 'Unable to Load Form',\n 'resourcefulRecord.form.badRequest.text': 'Failed to load the form.',\n 'resourcefulRecord.buttons.index.cta': 'Back to List',\n 'resourcefulRecord.buttons.create.cta': 'Create New',\n 'resourcefulRecord.buttons.read.cta': 'View',\n 'resourcefulRecord.buttons.update.cta': 'Edit',\n 'resourcefulRecord.buttons.delete.cta': 'Delete',\n}\n","'use strict'\n\nfunction _process (v, mod) {\n var i\n var r\n\n if (typeof mod === 'function') {\n r = mod(v)\n if (r !== undefined) {\n v = r\n }\n } else if (Array.isArray(mod)) {\n for (i = 0; i < mod.length; i++) {\n r = mod[i](v)\n if (r !== undefined) {\n v = r\n }\n }\n }\n\n return v\n}\n\nfunction parseKey (key, val) {\n // detect negative index notation\n if (key[0] === '-' && Array.isArray(val) && /^-\\d+$/.test(key)) {\n return val.length + parseInt(key, 10)\n }\n return key\n}\n\nfunction isIndex (k) {\n return /^\\d+$/.test(k)\n}\n\nfunction isObject (val) {\n return Object.prototype.toString.call(val) === '[object Object]'\n}\n\nfunction isArrayOrObject (val) {\n return Object(val) === val\n}\n\nfunction isEmptyObject (val) {\n return Object.keys(val).length === 0\n}\n\nvar blacklist = ['__proto__', 'prototype', 'constructor']\nvar blacklistFilter = function (part) { return blacklist.indexOf(part) === -1 }\n\nfunction parsePath (path, sep) {\n if (path.indexOf('[') >= 0) {\n path = path.replace(/\\[/g, sep).replace(/]/g, '')\n }\n\n var parts = path.split(sep)\n\n var check = parts.filter(blacklistFilter)\n\n if (check.length !== parts.length) {\n throw Error('Refusing to update blacklisted property ' + path)\n }\n\n return parts\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction DotObject (separator, override, useArray, useBrackets) {\n if (!(this instanceof DotObject)) {\n return new DotObject(separator, override, useArray, useBrackets)\n }\n\n if (typeof override === 'undefined') override = false\n if (typeof useArray === 'undefined') useArray = true\n if (typeof useBrackets === 'undefined') useBrackets = true\n this.separator = separator || '.'\n this.override = override\n this.useArray = useArray\n this.useBrackets = useBrackets\n this.keepArray = false\n\n // contains touched arrays\n this.cleanup = []\n}\n\nvar dotDefault = new DotObject('.', false, true, true)\nfunction wrap (method) {\n return function () {\n return dotDefault[method].apply(dotDefault, arguments)\n }\n}\n\nDotObject.prototype._fill = function (a, obj, v, mod) {\n var k = a.shift()\n\n if (a.length > 0) {\n obj[k] = obj[k] || (this.useArray && isIndex(a[0]) ? [] : {})\n\n if (!isArrayOrObject(obj[k])) {\n if (this.override) {\n obj[k] = {}\n } else {\n if (!(isArrayOrObject(v) && isEmptyObject(v))) {\n throw new Error(\n 'Trying to redefine `' + k + '` which is a ' + typeof obj[k]\n )\n }\n\n return\n }\n }\n\n this._fill(a, obj[k], v, mod)\n } else {\n if (!this.override && isArrayOrObject(obj[k]) && !isEmptyObject(obj[k])) {\n if (!(isArrayOrObject(v) && isEmptyObject(v))) {\n throw new Error(\"Trying to redefine non-empty obj['\" + k + \"']\")\n }\n\n return\n }\n\n obj[k] = _process(v, mod)\n }\n}\n\n/**\n *\n * Converts an object with dotted-key/value pairs to it's expanded version\n *\n * Optionally transformed by a set of modifiers.\n *\n * Usage:\n *\n * var row = {\n * 'nr': 200,\n * 'doc.name': ' My Document '\n * }\n *\n * var mods = {\n * 'doc.name': [_s.trim, _s.underscored]\n * }\n *\n * dot.object(row, mods)\n *\n * @param {Object} obj\n * @param {Object} mods\n */\nDotObject.prototype.object = function (obj, mods) {\n var self = this\n\n Object.keys(obj).forEach(function (k) {\n var mod = mods === undefined ? null : mods[k]\n // normalize array notation.\n var ok = parsePath(k, self.separator).join(self.separator)\n\n if (ok.indexOf(self.separator) !== -1) {\n self._fill(ok.split(self.separator), obj, obj[k], mod)\n delete obj[k]\n } else {\n obj[k] = _process(obj[k], mod)\n }\n })\n\n return obj\n}\n\n/**\n * @param {String} path dotted path\n * @param {String} v value to be set\n * @param {Object} obj object to be modified\n * @param {Function|Array} mod optional modifier\n */\nDotObject.prototype.str = function (path, v, obj, mod) {\n var ok = parsePath(path, this.separator).join(this.separator)\n\n if (path.indexOf(this.separator) !== -1) {\n this._fill(ok.split(this.separator), obj, v, mod)\n } else {\n obj[path] = _process(v, mod)\n }\n\n return obj\n}\n\n/**\n *\n * Pick a value from an object using dot notation.\n *\n * Optionally remove the value\n *\n * @param {String} path\n * @param {Object} obj\n * @param {Boolean} remove\n */\nDotObject.prototype.pick = function (path, obj, remove, reindexArray) {\n var i\n var keys\n var val\n var key\n var cp\n\n keys = parsePath(path, this.separator)\n for (i = 0; i < keys.length; i++) {\n key = parseKey(keys[i], obj)\n if (obj && typeof obj === 'object' && key in obj) {\n if (i === keys.length - 1) {\n if (remove) {\n val = obj[key]\n if (reindexArray && Array.isArray(obj)) {\n obj.splice(key, 1)\n } else {\n delete obj[key]\n }\n if (Array.isArray(obj)) {\n cp = keys.slice(0, -1).join('.')\n if (this.cleanup.indexOf(cp) === -1) {\n this.cleanup.push(cp)\n }\n }\n return val\n } else {\n return obj[key]\n }\n } else {\n obj = obj[key]\n }\n } else {\n return undefined\n }\n }\n if (remove && Array.isArray(obj)) {\n obj = obj.filter(function (n) {\n return n !== undefined\n })\n }\n return obj\n}\n/**\n *\n * Delete value from an object using dot notation.\n *\n * @param {String} path\n * @param {Object} obj\n * @return {any} The removed value\n */\nDotObject.prototype.delete = function (path, obj) {\n return this.remove(path, obj, true)\n}\n\n/**\n *\n * Remove value from an object using dot notation.\n *\n * Will remove multiple items if path is an array.\n * In this case array indexes will be retained until all\n * removals have been processed.\n *\n * Use dot.delete() to automatically re-index arrays.\n *\n * @param {String|Array<String>} path\n * @param {Object} obj\n * @param {Boolean} reindexArray\n * @return {any} The removed value\n */\nDotObject.prototype.remove = function (path, obj, reindexArray) {\n var i\n\n this.cleanup = []\n if (Array.isArray(path)) {\n for (i = 0; i < path.length; i++) {\n this.pick(path[i], obj, true, reindexArray)\n }\n if (!reindexArray) {\n this._cleanup(obj)\n }\n return obj\n } else {\n return this.pick(path, obj, true, reindexArray)\n }\n}\n\nDotObject.prototype._cleanup = function (obj) {\n var ret\n var i\n var keys\n var root\n if (this.cleanup.length) {\n for (i = 0; i < this.cleanup.length; i++) {\n keys = this.cleanup[i].split('.')\n root = keys.splice(0, -1).join('.')\n ret = root ? this.pick(root, obj) : obj\n ret = ret[keys[0]].filter(function (v) {\n return v !== undefined\n })\n this.set(this.cleanup[i], ret, obj)\n }\n this.cleanup = []\n }\n}\n\n/**\n * Alias method for `dot.remove`\n *\n * Note: this is not an alias for dot.delete()\n *\n * @param {String|Array<String>} path\n * @param {Object} obj\n * @param {Boolean} reindexArray\n * @return {any} The removed value\n */\nDotObject.prototype.del = DotObject.prototype.remove\n\n/**\n *\n * Move a property from one place to the other.\n *\n * If the source path does not exist (undefined)\n * the target property will not be set.\n *\n * @param {String} source\n * @param {String} target\n * @param {Object} obj\n * @param {Function|Array} mods\n * @param {Boolean} merge\n */\nDotObject.prototype.move = function (source, target, obj, mods, merge) {\n if (typeof mods === 'function' || Array.isArray(mods)) {\n this.set(target, _process(this.pick(source, obj, true), mods), obj, merge)\n } else {\n merge = mods\n this.set(target, this.pick(source, obj, true), obj, merge)\n }\n\n return obj\n}\n\n/**\n *\n * Transfer a property from one object to another object.\n *\n * If the source path does not exist (undefined)\n * the property on the other object will not be set.\n *\n * @param {String} source\n * @param {String} target\n * @param {Object} obj1\n * @param {Object} obj2\n * @param {Function|Array} mods\n * @param {Boolean} merge\n */\nDotObject.prototype.transfer = function (\n source,\n target,\n obj1,\n obj2,\n mods,\n merge\n) {\n if (typeof mods === 'function' || Array.isArray(mods)) {\n this.set(\n target,\n _process(this.pick(source, obj1, true), mods),\n obj2,\n merge\n )\n } else {\n merge = mods\n this.set(target, this.pick(source, obj1, true), obj2, merge)\n }\n\n return obj2\n}\n\n/**\n *\n * Copy a property from one object to another object.\n *\n * If the source path does not exist (undefined)\n * the property on the other object will not be set.\n *\n * @param {String} source\n * @param {String} target\n * @param {Object} obj1\n * @param {Object} obj2\n * @param {Function|Array} mods\n * @param {Boolean} merge\n */\nDotObject.prototype.copy = function (source, target, obj1, obj2, mods, merge) {\n if (typeof mods === 'function' || Array.isArray(mods)) {\n this.set(\n target,\n _process(\n // clone what is picked\n JSON.parse(JSON.stringify(this.pick(source, obj1, false))),\n mods\n ),\n obj2,\n merge\n )\n } else {\n merge = mods\n this.set(target, this.pick(source, obj1, false), obj2, merge)\n }\n\n return obj2\n}\n\n/**\n *\n * Set a property on an object using dot notation.\n *\n * @param {String} path\n * @param {any} val\n * @param {Object} obj\n * @param {Boolean} merge\n */\nDotObject.prototype.set = function (path, val, obj, merge) {\n var i\n var k\n var keys\n var key\n\n // Do not operate if the value is undefined.\n if (typeof val === 'undefined') {\n return obj\n }\n keys = parsePath(path, this.separator)\n\n for (i = 0; i < keys.length; i++) {\n key = keys[i]\n if (i === keys.length - 1) {\n if (merge && isObject(val) && isObject(obj[key])) {\n for (k in val) {\n if (hasOwnProperty.call(val, k)) {\n obj[key][k] = val[k]\n }\n }\n } else if (merge && Array.isArray(obj[key]) && Array.isArray(val)) {\n for (var j = 0; j < val.length; j++) {\n obj[keys[i]].push(val[j])\n }\n } else {\n obj[key] = val\n }\n } else if (\n // force the value to be an object\n !hasOwnProperty.call(obj, key) ||\n (!isObject(obj[key]) && !Array.isArray(obj[key]))\n ) {\n // initialize as array if next key is numeric\n if (/^\\d+$/.test(keys[i + 1])) {\n obj[key] = []\n } else {\n obj[key] = {}\n }\n }\n obj = obj[key]\n }\n return obj\n}\n\n/**\n *\n * Transform an object\n *\n * Usage:\n *\n * var obj = {\n * \"id\": 1,\n * \"some\": {\n * \"thing\": \"else\"\n * }\n * }\n *\n * var transform = {\n * \"id\": \"nr\",\n * \"some.thing\": \"name\"\n * }\n *\n * var tgt = dot.transform(transform, obj)\n *\n * @param {Object} recipe Transform recipe\n * @param {Object} obj Object to be transformed\n * @param {Array} mods modifiers for the target\n */\nDotObject.prototype.transform = function (recipe, obj, tgt) {\n obj = obj || {}\n tgt = tgt || {}\n Object.keys(recipe).forEach(\n function (key) {\n this.set(recipe[key], this.pick(key, obj), tgt)\n }.bind(this)\n )\n return tgt\n}\n\n/**\n *\n * Convert object to dotted-key/value pair\n *\n * Usage:\n *\n * var tgt = dot.dot(obj)\n *\n * or\n *\n * var tgt = {}\n * dot.dot(obj, tgt)\n *\n * @param {Object} obj source object\n * @param {Object} tgt target object\n * @param {Array} path path array (internal)\n */\nDotObject.prototype.dot = function (obj, tgt, path) {\n tgt = tgt || {}\n path = path || []\n var isArray = Array.isArray(obj)\n\n Object.keys(obj).forEach(\n function (key) {\n var index = isArray && this.useBrackets ? '[' + key + ']' : key\n if (\n isArrayOrObject(obj[key]) &&\n ((isObject(obj[key]) && !isEmptyObject(obj[key])) ||\n (Array.isArray(obj[key]) && !this.keepArray && obj[key].length !== 0))\n ) {\n if (isArray && this.useBrackets) {\n var previousKey = path[path.length - 1] || ''\n return this.dot(\n obj[key],\n tgt,\n path.slice(0, -1).concat(previousKey + index)\n )\n } else {\n return this.dot(obj[key], tgt, path.concat(index))\n }\n } else {\n if (isArray && this.useBrackets) {\n tgt[path.join(this.separator).concat('[' + key + ']')] = obj[key]\n } else {\n tgt[path.concat(index).join(this.separator)] = obj[key]\n }\n }\n }.bind(this)\n )\n return tgt\n}\n\nDotObject.pick = wrap('pick')\nDotObject.move = wrap('move')\nDotObject.transfer = wrap('transfer')\nDotObject.transform = wrap('transform')\nDotObject.copy = wrap('copy')\nDotObject.object = wrap('object')\nDotObject.str = wrap('str')\nDotObject.set = wrap('set')\nDotObject.delete = wrap('delete')\nDotObject.del = DotObject.remove = wrap('remove')\nDotObject.dot = wrap('dot');\n['override', 'overwrite'].forEach(function (prop) {\n Object.defineProperty(DotObject, prop, {\n get: function () {\n return dotDefault.override\n },\n set: function (val) {\n dotDefault.override = !!val\n }\n })\n});\n['useArray', 'keepArray', 'useBrackets'].forEach(function (prop) {\n Object.defineProperty(DotObject, prop, {\n get: function () {\n return dotDefault[prop]\n },\n set: function (val) {\n dotDefault[prop] = val\n }\n })\n})\n\nDotObject._process = _process\n\nmodule.exports = DotObject\n","import { en } from '../locales'\nimport { default as dot } from 'dot-object'\n\nexport interface I18nTranslator {\n (key: string): string\n}\n\nexport const defaultI18nTranslator: I18nTranslator = (key: string): string => {\n return dot.pick(key, en) || en[key as keyof typeof en] || key\n}\n","import { IANAZone, SystemZone, FixedOffsetZone } from 'luxon'\n\nexport interface ResourcefulTimezone {\n iana: IANAZone | FixedOffsetZone\n name: string\n normalizedName: string\n region: string\n unRegionalizedName: string\n isCurrent: boolean\n}\n\nexport interface ResourcefulTimezoneOption {\n value: string\n label: string\n searchable: string[]\n isCurrent: boolean\n}\n\nexport class ResourcefulTimezoneInformation {\n readonly #ianaZones: Set<ResourcefulTimezone>\n readonly #current: string\n\n constructor() {\n this.#current = this.#detectCurrentTimezone()\n this.#ianaZones = this.#constructIanaZones()\n }\n\n #constructIanaZones(): Set<ResourcefulTimezone> {\n if (typeof Intl === 'undefined' || typeof Intl.supportedValuesOf !== 'function') {\n return new Set()\n }\n const raw = Intl.supportedValuesOf('timeZone')\n const mapped = raw\n .map((tz) => new IANAZone(tz))\n .filter((zone) => zone.isValid)\n .map((iana) => {\n const normalizedName = iana.name.replace(/_/g, ' ')\n const [region, ...rest] = normalizedName.split('/')\n const ret: ResourcefulTimezone = {\n iana,\n name: iana.name,\n normalizedName,\n region,\n unRegionalizedName: rest.join('/'),\n isCurrent: iana.name === this.#current,\n }\n return ret\n })\n const fixedOffsetMapped = [\n 'UTC',\n 'UCT',\n ...Array.from({ length: 12 }, (_, i) => `UTC+${i + 1}`),\n ...Array.from({ length: 14 }, (_, i) => `UTC-${i + 1}`),\n ]\n .map((tz) => FixedOffsetZone.parseSpecifier(tz))\n .filter((zone) => zone !== null)\n .map((zone) => {\n const name = ['Etc', zone!.name].join('/')\n const normalizedName = name.replace(/_/g, ' ')\n const [region, ...rest] = normalizedName.split('/')\n const ret: ResourcefulTimezone = {\n iana: zone!,\n name: name,\n normalizedName,\n region,\n unRegionalizedName: rest.join('/'),\n isCurrent: name === this.#current,\n }\n return ret\n })\n return new Set([...mapped, ...fixedOffsetMapped])\n }\n\n #detectCurrentTimezone(): string {\n let ret: string | undefined = SystemZone.instance.name\n if (!ret && (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined')) {\n ret = SystemZone.instance.name\n } else if (!ret) {\n ret = Intl.DateTimeFormat().resolvedOptions().timeZone\n }\n return ret\n }\n\n get zones(): Array<ResourcefulTimezone> {\n return Array.from(this.#ianaZones)\n }\n\n get options(): Array<ResourcefulTimezoneOption> {\n return Array.from(this.#ianaZones).map((zone) => ({\n value: zone.name,\n label: zone.normalizedName,\n searchable: [zone.name, zone.normalizedName, zone.region, zone.unRegionalizedName],\n isCurrent: zone.isCurrent,\n }))\n }\n\n get current(): ResourcefulTimezone | undefined {\n return Array.from(this.#ianaZones).find((zone) => zone.isCurrent)\n }\n}\n","import { IoCSymbol } from './symbols'\nimport { getCurrentInstance } from 'vue'\nimport { MilliCron } from '@nhtio/millicron'\nimport { browserService } from './services/browser'\nimport { defaultCacheService } from './services/cache'\nimport { defaultI18nTranslator } from './services/i18n'\nimport { inject, onMounted, onBeforeUnmount } from 'vue'\nimport { TypedEventEmitter } from '@nhtio/tiny-typed-emitter'\nimport { defaultResourcefulHttpService } from './services/http'\nimport { defaultValidationService } from './services/validation'\nimport { ResourcefulTimezoneInformation } from './services/timezones'\nimport type { App } from 'vue'\nimport type { I18nTranslator } from './services/i18n'\nimport type { BrowserService } from './services/browser'\nimport type { ValidationRoot } from './services/validation'\nimport type { ResourcefulHttpService } from './services/http'\nimport type { ResourcefulMemoryCache } from './services/cache'\nimport type { EventMap, Key, Args, Listener } from '@nhtio/tiny-typed-emitter'\nimport type { ResourcefulTimezone, ResourcefulTimezoneOption } from './services/timezones'\n\nexport interface Resolver<T> {\n (): T\n}\n\nexport interface IoCServices {\n i18n: I18nTranslator\n validation: ValidationRoot\n http: ResourcefulHttpService\n cache: ResourcefulMemoryCache\n}\n\nexport type IocService<T> = T extends keyof IoCServices ? IoCServices[T] : never\nexport type IocServiceResolver<T> = T extends keyof IoCServices ? Resolver<IocService<T>> : never\n\nexport type IocEventMap = EventMap<{\n 'i18n:updated': []\n 'i18n:locale:updated': []\n 'validation:updated': []\n 'http:updated': []\n 'cache:updated': []\n}>\n\nlet globalInstance: IoC | undefined\n\nexport class IoC {\n readonly #emitter: TypedEventEmitter<IocEventMap>\n readonly #state: Map<string, Resolver<any>>\n readonly #cron: MilliCron\n readonly #timezones: ResourcefulTimezoneInformation\n readonly #browser: BrowserService\n\n constructor() {\n this.#emitter = new TypedEventEmitter<IocEventMap>()\n this.#state = new Map()\n this.#state.set('i18n', () => defaultI18nTranslator)\n this.#state.set('validation', () => defaultValidationService)\n this.#state.set('http', () => defaultResourcefulHttpService)\n this.#state.set('cache', () => defaultCacheService)\n this.#updateValidationI18n()\n this.#cron = new MilliCron()\n this.#cron.start()\n this.#timezones = new ResourcefulTimezoneInformation()\n this.#browser = browserService\n }\n\n #updateValidationI18n(): void {\n const i18n = this.get('i18n')\n const validation = this.get('validation')\n validation.$setI18n(i18n)\n }\n\n public set<K extends keyof IoCServices>(key: K, value: IocServiceResolver<K>): void {\n if (!this.#state.has(key)) {\n throw new Error(`Invalid IoC Service: ${key}`)\n }\n this.#state.set(key, value)\n if (['i18n', 'validation'].includes(key)) {\n this.#updateValidationI18n()\n }\n this.#emitter.emit(`${key}:updated` as any) // Emit when service changes\n }\n\n public get<K extends keyof IoCServices>(key: K): IocService<K> {\n const value = this.#state.get(key) as IocServiceResolver<K>\n if (typeof value === 'undefined') {\n throw new Error(`IoC Service not found: ${key}`)\n }\n return value() as IocService<K>\n }\n\n public mutate<K extends keyof IoCServices>(\n key: K,\n mutator: (service: IocService<K>) => IocServiceResolver<K>,\n bubble: boolean = true\n ): void {\n const service = this.get(key)\n this.#state.set(key, mutator(service))\n if (['i18n', 'validation'].includes(key)) {\n this.#updateValidationI18n()\n }\n if (bubble) {\n this.#emitter.emit(`${key}:updated` as any) // Emit when service changes\n }\n }\n\n emit<K>(event: Key<K, IocEventMap>, ...args: Args<K, IocEventMap>): this {\n this.#emitter.emit(event, ...args)\n return this\n }\n\n off<K>(event: Key<K, IocEventMap>, listener?: Listener<K, IocEventMap>): this {\n this.#emitter.off(event, listener)\n return this\n }\n\n on<K>(event: Key<K, IocEventMap>, listener: Listener<K, IocEventMap>, ctx?: any): this {\n this.#emitter.on(event, listener, ctx)\n return this\n }\n\n once<K>(event: Key<K, IocEventMap>, listener: Listener<K, IocEventMap>, ctx?: any): this {\n this.#emitter.once(event, listener, ctx)\n return this\n }\n\n get cron(): MilliCron {\n return this.#cron\n }\n\n get timezones(): ResourcefulTimezoneInformation {\n return this.#timezones\n }\n\n get browser(): BrowserService {\n return this.#browser\n }\n\n public static install(\n app: App,\n options: Partial<Record<keyof IoCServices, IocServiceResolver<keyof IoCServices>>> = {}\n ) {\n const instance = new IoC()\n Object.entries(options).forEach(([key, resolver]) => {\n instance.set(key as keyof IoCServices, resolver)\n })\n globalInstance = instance\n app.provide(IoCSymbol, instance)\n }\n}\n\nexport const useIoC = (): IoC => {\n const currentInstance = getCurrentInstance()\n const ioc = currentInstance ? inject(IoCSymbol) : globalInstance\n if (!ioc) {\n throw new Error('IoC not installed. Please call IoC.install in your app setup.')\n }\n return ioc\n}\n\nexport const setIocService = <K extends keyof IoCServices>(\n key: K,\n value: IocServiceResolver<K>\n): void => {\n const ioc = useIoC()\n ioc.set(key, value)\n}\n\nexport const useI18n = (): I18nTranslator => {\n const ioc = useIoC()\n return ioc.get('i18n')\n}\n\nexport const useValidation = (): ValidationRoot => {\n const ioc = useIoC()\n return ioc.get('validation')\n}\n\nexport const useHttp = (): ResourcefulHttpService => {\n const ioc = useIoC()\n return ioc.get('http')\n}\n\nexport const useCache = (): ResourcefulMemoryCache => {\n const ioc = useIoC()\n return ioc.get('cache')\n}\n\nexport const useCron = (): MilliCron => {\n const ioc = useIoC()\n return ioc.cron\n}\n\nexport const useCronTab = (crontab: string, callback: (...args: any[]) => void) => {\n const daemon = useCron()\n const abortController = new AbortController()\n const doOff = () => {\n daemon.$off(crontab, callback)\n }\n const doOn = () => {\n daemon.$on(crontab, callback)\n }\n onMounted(() => {\n if (!abortController.signal.aborted) {\n doOn()\n }\n })\n onBeforeUnmount(() => {\n doOff()\n })\n const cancel = () => {\n abortController.abort()\n doOff()\n }\n return cancel\n}\n\nexport const useTimezones = (): ResourcefulTimezoneInformation => {\n const ioc = useIoC()\n return ioc.timezones\n}\n\nexport const useTimezoneZones = (): Array<ResourcefulTimezone> => {\n const ioc = useIoC()\n return ioc.timezones.zones\n}\n\nexport const useCurrentTimezone = (): ResourcefulTimezone | undefined => {\n const ioc = useIoC()\n return ioc.timezones.current\n}\n\nexport const useTimezoneOptions = (): Array<ResourcefulTimezoneOption> => {\n const ioc = useIoC()\n return ioc.timezones.options\n}\n\nexport const useBrowser = (): BrowserService => {\n try {\n const ioc = useIoC()\n return ioc.browser\n } catch (error) {\n return browserService\n }\n}\n\nexport type { I18nTranslator } from './services/i18n'\nexport type { ValidationRoot } from './services/validation'\nexport type {\n ResourcefulHttpService,\n ResourcefulHttpResponse,\n ResourcefulHttpMethod,\n ResourcefulHttpHeaders,\n ResourcefulHttpProgress,\n ResourcefulHttpRequestOptions,\n MaybePromised,\n} from './services/http'\nexport type { ResourcefulMemoryCache } from './services/cache'\nexport type {\n ResourcefulTimezoneInformation,\n ResourcefulTimezone,\n ResourcefulTimezoneOption,\n} from './services/timezones'\nexport type { BrowserService } from './services/browser'\nexport type { CacheService } from './services/cache'\n"],"names":["MilliCron","dot","TypedEventEmitter","defaultValidationService"],"mappings":"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AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;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","x_google_ignoreList":[2]}
1
+ {"version":3,"file":"ioc-DOAKMPdw.mjs","sources":["../src/private/services/cache.ts","../src/private/locales/en.ts","../node_modules/.pnpm/dot-object@2.1.5/node_modules/dot-object/index.js","../src/private/services/i18n.ts","../src/private/services/timezones.ts","../src/private/ioc.ts"],"sourcesContent":["import { DateTime } from 'luxon'\nimport { MilliCron } from '@nhtio/millicron'\n\nexport interface CacheService {\n get<T = any>(key: string): T | undefined\n set<T = any>(key: string, value: T, ttl: number | null): void\n has(key: string): boolean\n pull<T = any>(key: string): T | undefined\n delete(key: string): void\n}\n\nexport class ResourcefulMemoryCache implements CacheService {\n readonly #state: Map<string, any>\n readonly #expirations: Map<string, DateTime>\n readonly #cron: MilliCron\n\n constructor() {\n this.#state = new Map()\n this.#expirations = new Map()\n this.#cron = new MilliCron()\n this.#cron.$on('* * * * * * *', this.#clearExpired.bind(this))\n }\n\n #clearExpired(): void {\n const now = DateTime.now()\n for (const [key, expiration] of this.#expirations.entries()) {\n if (expiration <= now) {\n this.#state.delete(key)\n this.#expirations.delete(key)\n }\n }\n this.#stopIfEmpty()\n }\n\n #stopIfEmpty(): void {\n if (this.#expirations.size === 0) {\n this.#cron.stop()\n }\n }\n\n get<T = any>(key: string): T | undefined {\n return this.#state.get(key)\n }\n\n set<T = any>(key: string, value: T, ttl: number | null): void {\n this.#state.set(key, value)\n if (ttl !== null) {\n const expiration = DateTime.now().plus({ milliseconds: ttl })\n this.#expirations.set(key, expiration)\n } else {\n this.#expirations.delete(key)\n }\n if (!this.#cron.running) {\n this.#cron.start()\n }\n }\n\n has(key: string): boolean {\n return (\n this.#state.has(key) &&\n (!this.#expirations.has(key) || this.#expirations.get(key)! > DateTime.now())\n )\n }\n\n pull<T = any>(key: string): T | undefined {\n const value = this.get<T>(key)\n if (value !== undefined) {\n this.delete(key)\n }\n this.#stopIfEmpty()\n return value\n }\n\n delete(key: string): void {\n this.#state.delete(key)\n this.#expirations.delete(key)\n this.#stopIfEmpty()\n }\n\n clear(): void {\n this.#state.clear()\n this.#expirations.clear()\n this.#cron.stop()\n }\n}\n\nexport const defaultCacheService = new ResourcefulMemoryCache()\n","export default {\n 'alternatives.all': '{{#label}} does not match all of the required types',\n 'alternatives.any': '{{#label}} does not match any of the allowed types',\n 'alternatives.match': '{{#label}} does not match any of the allowed types',\n 'alternatives.one': '{{#label}} matches more than one allowed type',\n 'alternatives.types': '{{#label}} must be one of {{#types}}',\n 'any.custom': '{{#label}} failed custom validation because {{#error.message}}',\n 'any.default': '{{#label}} threw an error when running default method',\n 'any.failover': '{{#label}} threw an error when running failover method',\n 'any.invalid': '{{#label}} contains an invalid value',\n 'any.only': '{{#label}} must be {if(#valids.length == 1, \"\", \"one of \")}{{#valids}}',\n 'any.ref': '{{#label}} {{#arg}} references {{:#ref}} which {{#reason}}',\n 'any.required': '{{#label}} is required',\n 'any.unknown': '{{#label}} is not allowed',\n 'array.base': '{{#label}} must be an array',\n 'array.excludes': '{{#label}} contains an excluded value',\n 'array.hasKnown':\n '{{#label}} does not contain at least one required match for type {:#patternLabel}',\n 'array.hasUnknown': '{{#label}} does not contain at least one required match',\n 'array.includes': '{{#label}} does not match any of the allowed types',\n 'array.includesRequiredBoth':\n '{{#label}} does not contain {{#knownMisses}} and {{#unknownMisses}} other required value(s)',\n 'array.includesRequiredKnowns': '{{#label}} does not contain {{#knownMisses}}',\n 'array.includesRequiredUnknowns':\n '{{#label}} does not contain {{#unknownMisses}} required value(s)',\n 'array.length': '{{#label}} must contain {{#limit}} items',\n 'array.max': '{{#label}} must contain less than or equal to {{#limit}} items',\n 'array.min': '{{#label}} must contain at least {{#limit}} items',\n 'array.orderedLength': '{{#label}} must contain at most {{#limit}} items',\n 'array.sort': '{{#label}} must be sorted in {#order} order by {{#by}}',\n 'array.sort.mismatching': '{{#label}} cannot be sorted due to mismatching types',\n 'array.sort.unsupported': '{{#label}} cannot be sorted due to unsupported type {#type}',\n 'array.sparse': '{{#label}} must not be a sparse array item',\n 'array.unique': '{{#label}} contains a duplicate value',\n 'boolean.base': '{{#label}} must be a boolean',\n 'date.base': '{{#label}} must be a valid date',\n 'date.format': '{{#label}} must be in {msg(\"date.format.\" + #format) || #format} format',\n 'date.greater': '{{#label}} must be greater than {{:#limit}}',\n 'date.less': '{{#label}} must be less than {{:#limit}}',\n 'date.max': '{{#label}} must be less than or equal to {{:#limit}}',\n 'date.min': '{{#label}} must be greater than or equal to {{:#limit}}',\n 'date.format.iso': 'ISO 8601 date',\n 'date.format.javascript': 'timestamp or number of milliseconds',\n 'date.format.unix': 'timestamp or number of seconds',\n 'function.arity': '{{#label}} must have an arity of {{#n}}',\n 'function.class': '{{#label}} must be a class',\n 'function.maxArity': '{{#label}} must have an arity lesser or equal to {{#n}}',\n 'function.minArity': '{{#label}} must have an arity greater or equal to {{#n}}',\n 'number.base': '{{#label}} must be a number',\n 'number.greater': '{{#label}} must be greater than {{#limit}}',\n 'number.infinity': '{{#label}} cannot be infinity',\n 'number.integer': '{{#label}} must be an integer',\n 'number.less': '{{#label}} must be less than {{#limit}}',\n 'number.max': '{{#label}} must be less than or equal to {{#limit}}',\n 'number.min': '{{#label}} must be greater than or equal to {{#limit}}',\n 'number.multiple': '{{#label}} must be a multiple of {{#multiple}}',\n 'number.negative': '{{#label}} must be a negative number',\n 'number.port': '{{#label}} must be a valid port',\n 'number.positive': '{{#label}} must be a positive number',\n 'number.precision': '{{#label}} must have no more than {{#limit}} decimal places',\n 'number.unsafe': '{{#label}} must be a safe number',\n 'object.and':\n '{{#label}} contains {{#presentWithLabels}} without its required peers {{#missingWithLabels}}',\n 'object.assert':\n '{{#label}} is invalid because {if(#subject.key, `\"` + #subject.key + `\" failed to ` + (#message || \"pass the assertion test\"), #message || \"the assertion failed\")}',\n 'object.base': '{{#label}} must be of type {{#type}}',\n 'object.instance': '{{#label}} must be an instance of {{:#type}}',\n 'object.length': '{{#label}} must have {{#limit}} key{if(#limit == 1, \"\", \"s\")}',\n 'object.max':\n '{{#label}} must have less than or equal to {{#limit}} key{if(#limit == 1, \"\", \"s\")}',\n 'object.min': '{{#label}} must have at least {{#limit}} key{if(#limit == 1, \"\", \"s\")}',\n 'object.missing': '{{#label}} must contain at least one of {{#peersWithLabels}}',\n 'object.nand': '{{:#mainWithLabel}} must not exist simultaneously with {{#peersWithLabels}}',\n 'object.oxor':\n '{{#label}} contains a conflict between optional exclusive peers {{#peersWithLabels}}',\n 'object.pattern.match': '{{#label}} keys failed to match pattern requirements',\n 'object.refType': '{{#label}} must be a Joi reference',\n 'object.regex': '{{#label}} must be a RegExp object',\n 'object.rename.multiple':\n '{{#label}} cannot rename {{:#from}} because multiple renames are disabled and another key was already renamed to {{:#to}}',\n 'object.rename.override':\n '{{#label}} cannot rename {{:#from}} because override is disabled and target {{:#to}} exists',\n 'object.schema': '{{#label}} must be a Joi schema of {{#type}} type',\n 'object.unknown': '{{#label}} is not allowed',\n 'object.with': '{{:#mainWithLabel}} missing required peer {{:#peerWithLabel}}',\n 'object.without': '{{:#mainWithLabel}} conflict with forbidden peer {{:#peerWithLabel}}',\n 'object.xor': '{{#label}} contains a conflict between exclusive peers {{#peersWithLabels}}',\n 'string.alphanum': '{{#label}} must only contain alpha-numeric characters',\n 'string.base': '{{#label}} must be a string',\n 'string.base64': '{{#label}} must be a valid base64 string',\n 'string.creditCard': '{{#label}} must be a credit card',\n 'string.dataUri': '{{#label}} must be a valid dataUri string',\n 'string.domain': '{{#label}} must contain a valid domain name',\n 'string.email': '{{#label}} must be a valid email',\n 'string.empty': '{{#label}} is not allowed to be empty',\n 'string.guid': '{{#label}} must be a valid GUID',\n 'string.hex': '{{#label}} must only contain hexadecimal characters',\n 'string.hexAlign': '{{#label}} hex decoded representation must be byte aligned',\n 'string.hostname': '{{#label}} must be a valid hostname',\n 'string.ip': '{{#label}} must be a valid ip address with a {{#cidr}} CIDR',\n 'string.ipVersion':\n '{{#label}} must be a valid ip address of one of the following versions {{#version}} with a {{#cidr}} CIDR',\n 'string.isoDate': '{{#label}} must be in iso format',\n 'string.isoDuration': '{{#label}} must be a valid ISO 8601 duration',\n 'string.length': '{{#label}} length must be {{#limit}} characters long',\n 'string.lowercase': '{{#label}} must only contain lowercase characters',\n 'string.max': '{{#label}} length must be less than or equal to {{#limit}} characters long',\n 'string.min': '{{#label}} length must be at least {{#limit}} characters long',\n 'string.normalize': '{{#label}} must be unicode normalized in the {{#form}} form',\n 'string.token': '{{#label}} must only contain alpha-numeric and underscore characters',\n 'string.pattern.base':\n '{{#label}} with value {:[.]} fails to match the required pattern: {{#regex}}',\n 'string.pattern.name': '{{#label}} with value {:[.]} fails to match the {{#name}} pattern',\n 'string.pattern.invert.base':\n '{{#label}} with value {:[.]} matches the inverted pattern: {{#regex}}',\n 'string.pattern.invert.name':\n '{{#label}} with value {:[.]} matches the inverted {{#name}} pattern',\n 'string.trim': '{{#label}} must not have leading or trailing whitespace',\n 'string.uri': '{{#label}} must be a valid uri',\n 'string.uriCustomScheme':\n '{{#label}} must be a valid uri with a scheme matching the {{#scheme}} pattern',\n 'string.uriRelativeOnly': '{{#label}} must be a valid relative uri',\n 'string.uppercase': '{{#label}} must only contain uppercase characters',\n 'symbol.base': '{{#label}} must be a symbol',\n 'symbol.map': '{{#label}} must be one of {{#map}}',\n 'binary.base': '{{#label}} must be a buffer or a string',\n 'binary.length': '{{#label}} must be {{#limit}} bytes',\n 'binary.max': '{{#label}} must be less than or equal to {{#limit}} bytes',\n 'binary.min': '{{#label}} must be at least {{#limit}} bytes',\n 'bigint.base': '\"{{#label}}\" must be a valid bigint',\n 'bigint.greater': '\"{{#label}}\" must be greater than {{#limit}}',\n 'bigint.less': '\"{{#label}}\" must be less than {{#limit}}',\n 'bigint.max': '\"{{#label}}\" must be less than or equal to {{#limit}}',\n 'bigint.min': '\"{{#label}}\" must be greater than or equal to {{#limit}}',\n 'bigint.multiple': '\"{{#label}}\" must be a multiple of {{#limit}}',\n 'bigint.negative': '\"{{#label}}\" must be a negative bigint',\n 'bigint.positive': '\"{{#label}}\" must be a positive bigint',\n 'datetime.base': '{{#label}} must be a datetime value',\n 'datetime.exactly': '{{#label}} must be a datetime exactly equal to {{#limit}}',\n 'datetime.equals': '{{#label}} must be a datetime equal to {{#limit}}',\n 'datetime.after': '{{#label}} must be a datetime after {{#limit}}',\n 'datetime.greater': '{{#label}} must be a datetime after {{#limit}}',\n 'datetime.before': '{{#label}} must be a datetime before {{#limit}}',\n 'datetime.less': '{{#label}} must be a datetime before {{#limit}}',\n 'datetime.afterOrEqual': '{{#label}} must be a datetime after or equal to {{#limit}}',\n 'datetime.min': '{{#label}} must be a datetime after or equal to {{#limit}}',\n 'datetime.beforeOrEqual': '{{#label}} must be a datetime before or equal to {{#limit}}',\n 'datetime.max': '{{#label}} must be a datetime before or equal to {{#limit}}',\n 'datetime.weekend': '{{#label}} is not a weekend',\n 'datetime.weekday': '{{#label}} is not a weekday',\n 'phone.base': '{{#label}} must be a phone number',\n 'phone.invalid': '{{#label}} must be a valid phone number for {{#country}}',\n 'phone.fixedLine': '{{#label}} must be a fixed line number for {{#country}}',\n 'phone.mobile': '{{#label}} must be a mobile number for {{#country}}',\n 'phone.strictFixedLine': '{{#label}} is not a fixed line number for {{#country}}',\n 'phone.strictMobile': '{{#label}} is not a mobile number for {{#country}}',\n 'phone.fixedLineOrMobile': '{{#label}} must be a fixed line or mobile number for {{#country}}',\n 'phone.tollFree': '{{#label}} must be a toll-free number for {{#country}}',\n 'phone.premiumRate': '{{#label}} must be a premium rate number for {{#country}}',\n 'phone.sharedCost': '{{#label}} must be a shared cost number for {{#country}}',\n 'phone.voip': '{{#label}} must be a VoIP number for {{#country}}',\n 'phone.personalNumber': '{{#label}} must be a personal number for {{#country}}',\n 'phone.pager': '{{#label}} must be a pager number for {{#country}}',\n 'phone.uan': '{{#label}} must be a UAN number for {{#country}}',\n 'phone.voicemail': '{{#label}} must be a voicemail number for {{#country}}',\n 'phone.unknown': '{{#label}} must be an unknown type number for {{#country}}',\n 'phone.types': '{{#label}} must be one of the specified phone types for {{#country}}',\n 'country.AD': 'Andorra',\n 'country.AE': 'United Arab Emirates',\n 'country.AF': 'Afghanistan',\n 'country.AG': 'Antigua and Barbuda',\n 'country.AI': 'Anguilla',\n 'country.AL': 'Albania',\n 'country.AM': 'Armenia',\n 'country.AO': 'Angola',\n 'country.AQ': 'Antarctica',\n 'country.AR': 'Argentina',\n 'country.AS': 'American Samoa',\n 'country.AT': 'Austria',\n 'country.AU': 'Australia',\n 'country.AW': 'Aruba',\n 'country.AX': 'Aland Islands',\n 'country.AZ': 'Azerbaijan',\n 'country.BA': 'Bosnia and Herzegovina',\n 'country.BB': 'Barbados',\n 'country.BD': 'Bangladesh',\n 'country.BE': 'Belgium',\n 'country.BF': 'Burkina Faso',\n 'country.BG': 'Bulgaria',\n 'country.BH': 'Bahrain',\n 'country.BI': 'Burundi',\n 'country.BJ': 'Benin',\n 'country.BL': 'Saint Barthelemy',\n 'country.BM': 'Bermuda',\n 'country.BN': 'Brunei',\n 'country.BO': 'Bolivia',\n 'country.BQ': 'Bonaire, Saint Eustatius and Saba',\n 'country.BR': 'Brazil',\n 'country.BS': 'Bahamas',\n 'country.BT': 'Bhutan',\n 'country.BV': 'Bouvet Island',\n 'country.BW': 'Botswana',\n 'country.BY': 'Belarus',\n 'country.BZ': 'Belize',\n 'country.CA': 'Canada',\n 'country.CC': 'Cocos Islands',\n 'country.CD': 'Democratic Republic of the Congo',\n 'country.CF': 'Central African Republic',\n 'country.CG': 'Republic of the Congo',\n 'country.CH': 'Switzerland',\n 'country.CI': 'Ivory Coast',\n 'country.CK': 'Cook Islands',\n 'country.CL': 'Chile',\n 'country.CM': 'Cameroon',\n 'country.CN': 'China',\n 'country.CO': 'Colombia',\n 'country.CR': 'Costa Rica',\n 'country.CU': 'Cuba',\n 'country.CV': 'Cape Verde',\n 'country.CW': 'Curacao',\n 'country.CX': 'Christmas Island',\n 'country.CY': 'Cyprus',\n 'country.CZ': 'Czech Republic',\n 'country.DE': 'Germany',\n 'country.DJ': 'Djibouti',\n 'country.DK': 'Denmark',\n 'country.DM': 'Dominica',\n 'country.DO': 'Dominican Republic',\n 'country.DZ': 'Algeria',\n 'country.EC': 'Ecuador',\n 'country.EE': 'Estonia',\n 'country.EG': 'Egypt',\n 'country.EH': 'Western Sahara',\n 'country.ER': 'Eritrea',\n 'country.ES': 'Spain',\n 'country.ET': 'Ethiopia',\n 'country.FI': 'Finland',\n 'country.FJ': 'Fiji',\n 'country.FK': 'Falkland Islands',\n 'country.FM': 'Micronesia',\n 'country.FO': 'Faroe Islands',\n 'country.FR': 'France',\n 'country.GA': 'Gabon',\n 'country.GB': 'United Kingdom',\n 'country.GD': 'Grenada',\n 'country.GE': 'Georgia',\n 'country.GF': 'French Guiana',\n 'country.GG': 'Guernsey',\n 'country.GH': 'Ghana',\n 'country.GI': 'Gibraltar',\n 'country.GL': 'Greenland',\n 'country.GM': 'Gambia',\n 'country.GN': 'Guinea',\n 'country.GP': 'Guadeloupe',\n 'country.GQ': 'Equatorial Guinea',\n 'country.GR': 'Greece',\n 'country.GS': 'South Georgia and the South Sandwich Islands',\n 'country.GT': 'Guatemala',\n 'country.GU': 'Guam',\n 'country.GW': 'Guinea-Bissau',\n 'country.GY': 'Guyana',\n 'country.HK': 'Hong Kong',\n 'country.HM': 'Heard Island and McDonald Islands',\n 'country.HN': 'Honduras',\n 'country.HR': 'Croatia',\n 'country.HT': 'Haiti',\n 'country.HU': 'Hungary',\n 'country.ID': 'Indonesia',\n 'country.IE': 'Ireland',\n 'country.IL': 'Israel',\n 'country.IM': 'Isle of Man',\n 'country.IN': 'India',\n 'country.IO': 'British Indian Ocean Territory',\n 'country.IQ': 'Iraq',\n 'country.IR': 'Iran',\n 'country.IS': 'Iceland',\n 'country.IT': 'Italy',\n 'country.JE': 'Jersey',\n 'country.JM': 'Jamaica',\n 'country.JO': 'Jordan',\n 'country.JP': 'Japan',\n 'country.KE': 'Kenya',\n 'country.KG': 'Kyrgyzstan',\n 'country.KH': 'Cambodia',\n 'country.KI': 'Kiribati',\n 'country.KM': 'Comoros',\n 'country.KN': 'Saint Kitts and Nevis',\n 'country.KP': 'North Korea',\n 'country.KR': 'South Korea',\n 'country.KW': 'Kuwait',\n 'country.KY': 'Cayman Islands',\n 'country.KZ': 'Kazakhstan',\n 'country.LA': 'Laos',\n 'country.LB': 'Lebanon',\n 'country.LC': 'Saint Lucia',\n 'country.LI': 'Liechtenstein',\n 'country.LK': 'Sri Lanka',\n 'country.LR': 'Liberia',\n 'country.LS': 'Lesotho',\n 'country.LT': 'Lithuania',\n 'country.LU': 'Luxembourg',\n 'country.LV': 'Latvia',\n 'country.LY': 'Libya',\n 'country.MA': 'Morocco',\n 'country.MC': 'Monaco',\n 'country.MD': 'Moldova',\n 'country.ME': 'Montenegro',\n 'country.MF': 'Saint Martin',\n 'country.MG': 'Madagascar',\n 'country.MH': 'Marshall Islands',\n 'country.MK': 'Macedonia',\n 'country.ML': 'Mali',\n 'country.MM': 'Myanmar',\n 'country.MN': 'Mongolia',\n 'country.MO': 'Macao',\n 'country.MP': 'Northern Mariana Islands',\n 'country.MQ': 'Martinique',\n 'country.MR': 'Mauritania',\n 'country.MS': 'Montserrat',\n 'country.MT': 'Malta',\n 'country.MU': 'Mauritius',\n 'country.MV': 'Maldives',\n 'country.MW': 'Malawi',\n 'country.MX': 'Mexico',\n 'country.MY': 'Malaysia',\n 'country.MZ': 'Mozambique',\n 'country.NA': 'Namibia',\n 'country.NC': 'New Caledonia',\n 'country.NE': 'Niger',\n 'country.NF': 'Norfolk Island',\n 'country.NG': 'Nigeria',\n 'country.NI': 'Nicaragua',\n 'country.NL': 'Netherlands',\n 'country.NO': 'Norway',\n 'country.NP': 'Nepal',\n 'country.NR': 'Nauru',\n 'country.NU': 'Niue',\n 'country.NZ': 'New Zealand',\n 'country.OM': 'Oman',\n 'country.PA': 'Panama',\n 'country.PE': 'Peru',\n 'country.PF': 'French Polynesia',\n 'country.PG': 'Papua New Guinea',\n 'country.PH': 'Philippines',\n 'country.PK': 'Pakistan',\n 'country.PL': 'Poland',\n 'country.PM': 'Saint Pierre and Miquelon',\n 'country.PN': 'Pitcairn',\n 'country.PR': 'Puerto Rico',\n 'country.PS': 'Palestinian Territory',\n 'country.PT': 'Portugal',\n 'country.PW': 'Palau',\n 'country.PY': 'Paraguay',\n 'country.QA': 'Qatar',\n 'country.RE': 'Reunion',\n 'country.RO': 'Romania',\n 'country.RS': 'Serbia',\n 'country.RU': 'Russia',\n 'country.RW': 'Rwanda',\n 'country.SA': 'Saudi Arabia',\n 'country.SB': 'Solomon Islands',\n 'country.SC': 'Seychelles',\n 'country.SD': 'Sudan',\n 'country.SE': 'Sweden',\n 'country.SG': 'Singapore',\n 'country.SH': 'Saint Helena',\n 'country.SI': 'Slovenia',\n 'country.SJ': 'Svalbard and Jan Mayen',\n 'country.SK': 'Slovakia',\n 'country.SL': 'Sierra Leone',\n 'country.SM': 'San Marino',\n 'country.SN': 'Senegal',\n 'country.SO': 'Somalia',\n 'country.SR': 'Suriname',\n 'country.SS': 'South Sudan',\n 'country.ST': 'Sao Tome and Principe',\n 'country.SV': 'El Salvador',\n 'country.SX': 'Sint Maarten',\n 'country.SY': 'Syria',\n 'country.SZ': 'Swaziland',\n 'country.TC': 'Turks and Caicos Islands',\n 'country.TD': 'Chad',\n 'country.TF': 'French Southern Territories',\n 'country.TG': 'Togo',\n 'country.TH': 'Thailand',\n 'country.TJ': 'Tajikistan',\n 'country.TK': 'Tokelau',\n 'country.TL': 'East Timor',\n 'country.TM': 'Turkmenistan',\n 'country.TN': 'Tunisia',\n 'country.TO': 'Tonga',\n 'country.TR': 'Turkey',\n 'country.TT': 'Trinidad and Tobago',\n 'country.TV': 'Tuvalu',\n 'country.TW': 'Taiwan',\n 'country.TZ': 'Tanzania',\n 'country.UA': 'Ukraine',\n 'country.UG': 'Uganda',\n 'country.UM': 'United States Minor Outlying Islands',\n 'country.US': 'United States',\n 'country.UY': 'Uruguay',\n 'country.UZ': 'Uzbekistan',\n 'country.VA': 'Vatican',\n 'country.VC': 'Saint Vincent and the Grenadines',\n 'country.VE': 'Venezuela',\n 'country.VG': 'British Virgin Islands',\n 'country.VI': 'U.S. Virgin Islands',\n 'country.VN': 'Vietnam',\n 'country.VU': 'Vanuatu',\n 'country.WF': 'Wallis and Futuna',\n 'country.WS': 'Samoa',\n 'country.XK': 'Kosovo',\n 'country.YE': 'Yemen',\n 'country.YT': 'Mayotte',\n 'country.ZA': 'South Africa',\n 'country.ZM': 'Zambia',\n 'country.ZW': 'Zimbabwe',\n 'resourcefulIndex.searchField.placeholder': 'Search...',\n 'resourcefulIndex.searchField.tooltip.title': 'Search Field Cheat Sheet',\n 'resourcefulIndex.searchField.tooltip.searchForTermInsensitive':\n 'Search for a term (case insensitive)',\n 'resourcefulIndex.searchField.tooltip.searchForTermSensitive':\n 'Search for a term (case sensitive)',\n 'resourcefulIndex.searchField.tooltip.searchForTerminField':\n 'Search for a term in a specific field',\n 'resourcefulIndex.searchField.tooltip.searchForTermWithWildcards':\n 'Search for a term with wildcards',\n 'resourcefulIndex.searchField.tooltip.searchForWithBoolean': 'Search by boolean value',\n 'resourcefulIndex.searchField.tooltip.searchForWithNull': 'Search by null value',\n 'resourcefulIndex.searchField.tooltip.searchForNumericComparisons': 'Search by comparison',\n 'resourcefulIndex.searchField.tooltip.searchForNumericRanges': 'Search by range',\n 'resourcefulIndex.searchField.tooltip.searchForNumericRanges.inclusive': 'Inclusive',\n 'resourcefulIndex.searchField.tooltip.searchForNumericRanges.exclusive': 'Exclusive',\n 'resourcefulIndex.searchField.tooltip.searchWithBooleanOperators': 'Multiple Conditions',\n 'resourcefulIndex.searchField.tooltip.searchWithUnaryOperators': 'Negation',\n 'resourcefulIndex.searchField.tooltip.searchWithImplicitAnd': 'Implicit AND',\n 'resourcefulIndex.searchField.tooltip.searchWithGrouping': 'Grouping',\n 'resourcefulIndex.recordsTotal': '%d - %d of %d',\n 'general.refresh': 'Refresh',\n 'general.reset': 'Reset',\n 'general.ok': 'OK',\n 'general.off': 'Off',\n 'general.save': 'Save',\n 'general.discard': 'Discard',\n 'general.add': 'Add',\n 'general.start': 'Start',\n 'general.end': 'End',\n 'general.date': 'Date',\n 'general.time': 'Time',\n 'general.timezone': 'Timezone',\n 'general.more': 'More',\n 'grammar.and': '%s and %s',\n 'grammar.is': 'is',\n 'grammar.are': 'are',\n 'abbreviations.seconds': 's',\n 'abbreviations.minutes': 'm',\n 'abbreviations.hours': 'h',\n 'fields.id': 'ID',\n 'resourcefulIndex.table.noResults.title': 'No Results Found',\n 'resourcefulIndex.table.noResults.text': 'No records match your search criteria.',\n 'resourcefulIndex.table.noData.title': 'No Records',\n 'resourcefulIndex.table.noData.text': 'There are no records to display.',\n 'resourcefulIndex.table.loading.text': 'Your results will appear here shortly.',\n 'resourcefulIndex.table.badRequest.title': 'Bad Request',\n 'resourcefulIndex.table.badRequest.text': 'Your request failed with error code \"%s\"',\n 'resourcefulIndex.columnControlButton.cta': 'Columns',\n 'resourcefulIndex.filterControlButton.cta': 'Filters',\n 'resourcefulIndex.sortingControlButton.cta': 'Sorting',\n 'resourcefulIndex.bulkActionsControlButton.cta': 'Bulk Actions',\n 'resourcefulIndex.bulkUpdateControlButton.cta': 'Bulk Edit',\n 'resourcefulIndex.downloadControlButton.cta': 'Download',\n 'resourcefulIndex.perPage': 'Per Page',\n 'resourcefulIndex.pageOf': '%d of %d',\n 'resourcefulIndex.jumpToPage': 'Jump to page %d',\n 'lucid.resourceful.index.columnsControls.filter.label': 'Filter Columns',\n 'lucid.resourceful.index.sortsControls.filter.label': 'Filter Sortable Columns',\n 'lucid.resourceful.index.columnsControls.dispositionDialog.headline': 'You have unsaved changes',\n 'lucid.resourceful.index.columnsControls.dispositionDialog.title':\n 'Would you like to save your changes?',\n 'lucid.resourceful.index.sortsControls.dispositionDialog.headline': 'You have unsaved changes',\n 'lucid.resourceful.index.sortsControls.dispositionDialog.title':\n 'Would you like to save your changes?',\n 'lucid.resourceful.index.filtersControls.dispositionDialog.headline': 'You have unsaved changes',\n 'lucid.resourceful.index.filtersControls.dispositionDialog.title':\n 'Would you like to save your changes?',\n 'filters.groups.operators.AND': 'Match All',\n 'filters.groups.operators.OR': 'Match Any',\n 'lucid.resourceful.index.filtersControls.addGroup': 'Add Group',\n 'lucid.resourceful.index.filtersControls.addCondition': 'Add Rule',\n 'lucid.resourceful.index.filtersControls.groupEmpty.headline': 'Empty Group',\n 'lucid.resourceful.index.filtersControls.groupEmpty.title': 'This group has no conditions',\n 'lucid.resourceful.index.filtersControls.invalidDialog.headline': 'Validation Errors Found',\n 'lucid.resourceful.index.filtersControls.invalidDialog.title':\n 'Unable to save filters because one or more rules contain errors',\n 'filterGroupConditionElement.unknownValidationError':\n 'An unknown validation error has occured. Please check the console for more information.',\n 'filterGroupConditionElement.notValid':\n 'The filter condition is neither a valid group nor a valid rule.',\n 'filterGroupElement.notValid': 'The group is not configured correctly',\n 'filterGroupElement.model.condition.singular': 'condition',\n 'filterGroupElement.model.condition.plural': 'conditions',\n 'filterGroupElement.conditions.invalid': 'The %s %s %s invalid',\n 'filterConditionElement.field.field': 'Property',\n 'filterConditionElement.field.operator': 'Comparison',\n 'filterConditionElement.field.arguments': 'Criteria',\n 'filterConditionArgumentCell.badIndex': 'One of the \"criteria\"',\n 'filterConditionArgumentCell.nthArgument': 'The %s \"criteria\"',\n 'filterConditionElement.field.field.hint': 'The property to filter on',\n 'filterConditionElement.field.operator.hint': 'The comparison operator to use',\n 'filterConditionElement.field.arguments.hint': 'The criteria for the filter',\n 'filterConditionElement.validation.field.string.empty': '{{#label}} is required',\n 'filterConditionElement.validation.operator.string.empty': 'Select a valid {{#label}}',\n 'filterConditionElement.validation.operator.any.only': 'Select a valid {{#label}}',\n 'filterConditionElement.validation.arguments.array.sparse':\n '{{#label}} is missing required information',\n 'filterConditionElement.validation.arguments.array.length': '{{#label}} is required',\n 'filterConditionElement.operator.string.=': 'is exactly',\n 'filterConditionElement.operator.string.!=': 'is not exactly',\n 'filterConditionElement.operator.string.~': 'contains',\n 'filterConditionElement.operator.string.!~': 'does not contain',\n 'filterConditionElement.operator.string.^': 'starts with',\n 'filterConditionElement.operator.string.$': 'ends with',\n 'filterConditionElement.operator.string.*~': 'contains',\n 'filterConditionElement.operator.string.!': 'is not',\n 'filterConditionElement.operator.string.in': 'is one of',\n 'filterConditionElement.operator.string.!in': 'is not one of',\n 'filterConditionElement.operator.string.*': 'is set',\n 'filterConditionElement.operator.string.!*': 'is not set',\n 'filterConditionElement.operator.string.null': 'is null',\n 'filterConditionElement.operator.string.!null': 'is not null',\n 'filterConditionElement.operator.number.=': 'is equal to',\n 'filterConditionElement.operator.number.!=': 'is not equal to',\n 'filterConditionElement.operator.number.>': 'is greater than',\n 'filterConditionElement.operator.number.<': 'is less than',\n 'filterConditionElement.operator.number.>=': 'is greater than or equal to',\n 'filterConditionElement.operator.number.<=': 'is less than or equal to',\n 'filterConditionElement.operator.number.><': 'is between',\n 'filterConditionElement.operator.number.!><': 'is not between',\n 'filterConditionElement.operator.number.in': 'is in list',\n 'filterConditionElement.operator.number.!in': 'is not in list',\n 'filterConditionElement.operator.number.*': 'is set',\n 'filterConditionElement.operator.number.!*': 'is not set',\n 'filterConditionElement.operator.number.null': 'is null',\n 'filterConditionElement.operator.number.!null': 'is not null',\n 'filterConditionElement.operator.integer.=': 'is equal to',\n 'filterConditionElement.operator.integer.!=': 'is not equal to',\n 'filterConditionElement.operator.integer.>': 'is greater than',\n 'filterConditionElement.operator.integer.<': 'is less than',\n 'filterConditionElement.operator.integer.>=': 'is greater than or equal to',\n 'filterConditionElement.operator.integer.<=': 'is less than or equal to',\n 'filterConditionElement.operator.integer.><': 'is between',\n 'filterConditionElement.operator.integer.!><': 'is not between',\n 'filterConditionElement.operator.integer.in': 'is in list',\n 'filterConditionElement.operator.integer.!in': 'is not in list',\n 'filterConditionElement.operator.integer.*': 'is set',\n 'filterConditionElement.operator.integer.!*': 'is not set',\n 'filterConditionElement.operator.integer.null': 'is null',\n 'filterConditionElement.operator.integer.!null': 'is not null',\n 'filterConditionElement.operator.bigint.=': 'is equal to',\n 'filterConditionElement.operator.bigint.!=': 'is not equal to',\n 'filterConditionElement.operator.bigint.>': 'is greater than',\n 'filterConditionElement.operator.bigint.<': 'is less than',\n 'filterConditionElement.operator.bigint.>=': 'is greater than or equal to',\n 'filterConditionElement.operator.bigint.<=': 'is less than or equal to',\n 'filterConditionElement.operator.bigint.><': 'is between',\n 'filterConditionElement.operator.bigint.!><': 'is not between',\n 'filterConditionElement.operator.bigint.in': 'is in list',\n 'filterConditionElement.operator.bigint.!in': 'is not in list',\n 'filterConditionElement.operator.bigint.*': 'is set',\n 'filterConditionElement.operator.bigint.!*': 'is not set',\n 'filterConditionElement.operator.bigint.null': 'is null',\n 'filterConditionElement.operator.bigint.!null': 'is not null',\n 'filterConditionElement.operator.unsignedInteger.=': 'is equal to',\n 'filterConditionElement.operator.unsignedInteger.!=': 'is not equal to',\n 'filterConditionElement.operator.unsignedInteger.>': 'is greater than',\n 'filterConditionElement.operator.unsignedInteger.<': 'is less than',\n 'filterConditionElement.operator.unsignedInteger.>=': 'is greater than or equal to',\n 'filterConditionElement.operator.unsignedInteger.<=': 'is less than or equal to',\n 'filterConditionElement.operator.unsignedInteger.><': 'is between',\n 'filterConditionElement.operator.unsignedInteger.!><': 'is not between',\n 'filterConditionElement.operator.unsignedInteger.in': 'is in list',\n 'filterConditionElement.operator.unsignedInteger.!in': 'is not in list',\n 'filterConditionElement.operator.unsignedInteger.*': 'is set',\n 'filterConditionElement.operator.unsignedInteger.!*': 'is not set',\n 'filterConditionElement.operator.unsignedInteger.null': 'is null',\n 'filterConditionElement.operator.unsignedInteger.!null': 'is not null',\n 'filterConditionElement.operator.date.=': 'is equal to',\n 'filterConditionElement.operator.date.!=': 'is not equal to',\n 'filterConditionElement.operator.date.>': 'is after',\n 'filterConditionElement.operator.date.<': 'is before',\n 'filterConditionElement.operator.date.>=': 'is on or after',\n 'filterConditionElement.operator.date.<=': 'is on or before',\n 'filterConditionElement.operator.date.><': 'is between',\n 'filterConditionElement.operator.date.!><': 'is not between',\n 'filterConditionElement.operator.date.*': 'is set',\n 'filterConditionElement.operator.date.!*': 'is not set',\n 'filterConditionElement.operator.date.null': 'is null',\n 'filterConditionElement.operator.date.!null': 'is not null',\n 'filterConditionElement.operator.date.t': 'is today',\n 'filterConditionElement.operator.date.yd': 'was yesterday',\n 'filterConditionElement.operator.date.tm': 'is tomorrow',\n 'filterConditionElement.operator.date.w': 'is this week',\n 'filterConditionElement.operator.date.lw': 'was last week',\n 'filterConditionElement.operator.date.l2w': 'was within the last 2 weeks',\n 'filterConditionElement.operator.date.nw': 'is next week',\n 'filterConditionElement.operator.date.m': 'is this month',\n 'filterConditionElement.operator.date.lm': 'was last month',\n 'filterConditionElement.operator.date.nm': 'is next month',\n 'filterConditionElement.operator.date.q': 'is this quarter',\n 'filterConditionElement.operator.date.lq': 'was last quarter',\n 'filterConditionElement.operator.date.nq': 'is next quarter',\n 'filterConditionElement.operator.date.y': 'is this year',\n 'filterConditionElement.operator.date.ly': 'was last year',\n 'filterConditionElement.operator.date.ny': 'is next year',\n 'filterConditionElement.operator.date.><t+': 'is within the last N days',\n 'filterConditionElement.operator.date.><t-': 'is within the next N days',\n 'filterConditionElement.operator.date.>t+': 'is more than N days ago',\n 'filterConditionElement.operator.date.<t+': 'is less than N days ago',\n 'filterConditionElement.operator.date.>t-': 'is more than N days from now',\n 'filterConditionElement.operator.date.<t-': 'is less than N days from now',\n 'filterConditionElement.operator.date.t+': 'was exactly N days ago',\n 'filterConditionElement.operator.date.t-': 'is exactly N days from now',\n 'filterConditionElement.operator.date.wtd': 'is since the beginning of this week',\n 'filterConditionElement.operator.date.mtd': 'is since the beginning of this month',\n 'filterConditionElement.operator.date.qtd': 'is since the beginning of this quarter',\n 'filterConditionElement.operator.date.ytd': 'is since the beginning of this year',\n 'filterConditionElement.operator.date.w+': 'was within the last N weeks',\n 'filterConditionElement.operator.date.w-': 'is within the next N weeks',\n 'filterConditionElement.operator.date.m+': 'was within the last N months',\n 'filterConditionElement.operator.date.m-': 'is within the next N months',\n 'filterConditionElement.operator.date.q+': 'was within the last N quarters',\n 'filterConditionElement.operator.date.q-': 'is within the next N quarters',\n 'filterConditionElement.operator.date.y+': 'was within the last N years',\n 'filterConditionElement.operator.date.y-': 'is within the next N years',\n 'filterConditionElement.operator.dateTime.=': 'is equal to',\n 'filterConditionElement.operator.dateTime.!=': 'is not equal to',\n 'filterConditionElement.operator.dateTime.>': 'is after',\n 'filterConditionElement.operator.dateTime.<': 'is before',\n 'filterConditionElement.operator.dateTime.>=': 'is on or after',\n 'filterConditionElement.operator.dateTime.<=': 'is on or before',\n 'filterConditionElement.operator.dateTime.><': 'is between',\n 'filterConditionElement.operator.dateTime.!><': 'is not between',\n 'filterConditionElement.operator.dateTime.*': 'is set',\n 'filterConditionElement.operator.dateTime.!*': 'is not set',\n 'filterConditionElement.operator.dateTime.null': 'is null',\n 'filterConditionElement.operator.dateTime.!null': 'is not null',\n 'filterConditionElement.operator.dateTime.t': 'is today',\n 'filterConditionElement.operator.dateTime.yd': 'was yesterday',\n 'filterConditionElement.operator.dateTime.tm': 'is tomorrow',\n 'filterConditionElement.operator.dateTime.w': 'is this week',\n 'filterConditionElement.operator.dateTime.lw': 'was last week',\n 'filterConditionElement.operator.dateTime.l2w': 'was within the last 2 weeks',\n 'filterConditionElement.operator.dateTime.nw': 'is next week',\n 'filterConditionElement.operator.dateTime.m': 'is this month',\n 'filterConditionElement.operator.dateTime.lm': 'was last month',\n 'filterConditionElement.operator.dateTime.nm': 'is next month',\n 'filterConditionElement.operator.dateTime.q': 'is this quarter',\n 'filterConditionElement.operator.dateTime.lq': 'was last quarter',\n 'filterConditionElement.operator.dateTime.nq': 'is next quarter',\n 'filterConditionElement.operator.dateTime.y': 'is this year',\n 'filterConditionElement.operator.dateTime.ly': 'was last year',\n 'filterConditionElement.operator.dateTime.ny': 'is next year',\n 'filterConditionElement.operator.dateTime.><t+': 'is within the last N days',\n 'filterConditionElement.operator.dateTime.><t-': 'is within the next N days',\n 'filterConditionElement.operator.dateTime.>t+': 'is more than N days ago',\n 'filterConditionElement.operator.dateTime.<t+': 'is less than N days ago',\n 'filterConditionElement.operator.dateTime.>t-': 'is more than N days from now',\n 'filterConditionElement.operator.dateTime.<t-': 'is less than N days from now',\n 'filterConditionElement.operator.dateTime.t+': 'was exactly N days ago',\n 'filterConditionElement.operator.dateTime.t-': 'is exactly N days from now',\n 'filterConditionElement.operator.dateTime.wtd': 'is since the beginning of this week',\n 'filterConditionElement.operator.dateTime.mtd': 'is since the beginning of this month',\n 'filterConditionElement.operator.dateTime.qtd': 'is since the beginning of this quarter',\n 'filterConditionElement.operator.dateTime.ytd': 'is since the beginning of this year',\n 'filterConditionElement.operator.dateTime.h+': 'was within the last N hours',\n 'filterConditionElement.operator.dateTime.h-': 'is within the next N hours',\n 'filterConditionElement.operator.dateTime.w+': 'was within the last N weeks',\n 'filterConditionElement.operator.dateTime.w-': 'is within the next N weeks',\n 'filterConditionElement.operator.dateTime.m+': 'was within the last N months',\n 'filterConditionElement.operator.dateTime.m-': 'is within the next N months',\n 'filterConditionElement.operator.dateTime.q+': 'was within the last N quarters',\n 'filterConditionElement.operator.dateTime.q-': 'is within the next N quarters',\n 'filterConditionElement.operator.dateTime.y+': 'was within the last N years',\n 'filterConditionElement.operator.dateTime.y-': 'is within the next N years',\n 'filterConditionElement.operator.dateTime.hr': 'is this hour',\n 'filterConditionElement.operator.dateTime.lhr': 'was the previous hour',\n 'filterConditionElement.operator.dateTime.nhr': 'is the next hour',\n 'filterConditionElement.operator.dateTime.fy': 'is this fiscal year',\n 'filterConditionElement.operator.dateTime.lfy': 'was last fiscal year',\n 'filterConditionElement.operator.dateTime.fq': 'is this fiscal quarter',\n 'filterConditionElement.operator.dateTime.lfq': 'was last fiscal quarter',\n 'filterConditionElement.operator.boolean.=': 'is',\n 'filterConditionElement.operator.boolean.!=': 'is not',\n 'filterConditionElement.operator.boolean.*': 'is set',\n 'filterConditionElement.operator.boolean.!*': 'is not set',\n 'filterConditionElement.operator.boolean.null': 'is null',\n 'filterConditionElement.operator.boolean.!null': 'is not null',\n 'filterConditionElement.operator.binary.=': 'is equal to',\n 'filterConditionElement.operator.binary.!=': 'is not equal to',\n 'filterConditionElement.operator.binary.*': 'is set',\n 'filterConditionElement.operator.binary.!*': 'is not set',\n 'filterConditionElement.operator.binary.null': 'is null',\n 'filterConditionElement.operator.binary.!null': 'is not null',\n 'filterConditionElement.operator.binary.empty': 'is empty',\n 'filterConditionElement.operator.binary.!empty': 'is not empty',\n 'resourceful.fields.multiple.noValues': 'No values defined',\n 'boolean.true': 'Yes',\n 'boolean.false': 'No',\n 'boolean.undetermined': 'Undetermined',\n 'resourceful.action.openInApp': 'Open in Current Tab',\n 'resourceful.action.openInNew': 'Open in New Tab',\n 'resourceful.action.copyLink': 'Copy Link',\n 'resourceful.clipboard.copiedToClipboard': 'Copied to clipboard',\n 'resourceful.clipboard.copyFailed': 'Failed to copy to clipboard',\n 'resourceful.alert.disposition.ok': 'OK',\n 'resourceful.alert.disposition.confirm': 'Yes',\n 'resourceful.alert.disposition.deny': 'No',\n 'resourceful.alert.disposition.cancel': 'Cancel',\n 'resourcefulIndex.bulkActionProcessing.preparing.title': 'Preparing bulk action',\n 'resourcefulIndex.bulkActionProcessing.preparing.text':\n 'Please wait while we prepare your bulk action.',\n 'resourcefulIndex.bulkActionProcessing.selection.title': 'Apply to page or all results?',\n 'resourcefulIndex.bulkActionProcessing.selection.text':\n 'Do you want to apply this action to only the %s selected items, or to all %s matching records?',\n 'resourcefulIndex.bulkActionProcessing.selection.confirmButtonText': 'Apply to Page',\n 'resourcefulIndex.bulkActionProcessing.selection.denyButtonText': 'Apply to All',\n 'resourcefulIndex.bulkActionProcessing.selection.cancelButtonText': 'Cancel',\n 'resourcefulIndex.bulkActionProcessing.tooManyRecords.title': 'Too many records selected',\n 'resourcefulIndex.bulkActionProcessing.tooManyRecords.text':\n 'You have selected %s records but you can only apply this action to a maximum of %s records at a time. Please refine your selection and try again.',\n 'resourcefulIndex.bulkActionProcessing.largeRecords.title': 'Large Selection',\n 'resourcefulIndex.bulkActionProcessing.largeRecords.text':\n 'You are about to apply this action to %s records. Are you sure you want to continue?',\n 'resourcefulIndex.bulkActionProcessing.recordCountConfirmation.title': 'Confirmation',\n 'resourcefulIndex.bulkActionProcessing.recordCountConfirmation.text':\n 'You are about to apply this action to %s records. Are you sure you want to continue?',\n 'resourcefulIndex.bulkActionProcessing.fetchingRecords.title': 'Fetching records',\n 'resourcefulIndex.bulkActionProcessing.fetchingRecords.text':\n 'Please wait while we fetch the records to be processed.',\n 'resourcefulIndex.bulkActionProcessing.unrecoverableError.title': 'Unrecoverable Error',\n 'resourcefulIndex.bulkActionProcessing.unrecoverableError.text':\n 'An unrecoverable error occurred while processing your request.',\n 'resourcefulIndex.bulkActionProcessing.unprocessableRecords.title': 'Unprocessable Records',\n 'resourcefulIndex.bulkActionProcessing.unprocessableRecords.text':\n 'Operation aborted because one or more records did not meet constraints.',\n 'resourcefulIndex.bulkActionProcessing.title': 'Bulk %s Operation Progress',\n 'resourcefulIndex.bulkActionProcessing.successes': 'Successful',\n 'resourcefulIndex.bulkActionProcessing.errors': 'Failed',\n 'resourcefulIndex.bulkActionProcessing.undetermined': 'Undetermined',\n 'resourcefulIndex.bulkActionProcessing.processed': 'Processed',\n 'resourcefulIndex.bulkActionProcessing.completeButton': 'Close',\n 'resourcefulIndex.bulkUpdate.title': 'Bulk Edit',\n 'resourcefulIndex.bulkUpdate.selectFieldsLabel': 'Select fields to edit',\n 'resourcefulIndex.bulkUpdate.successTitle': 'Bulk Edit Successful',\n 'resourcefulIndex.bulkUpdate.successText': 'The selected records have been updated successfully.',\n 'resourcefulIndex.bulkUpdate.validationErrorTitle': 'Validation Error',\n 'resourcefulIndex.bulkUpdate.validationErrorText':\n 'Please correct the errors in the form before saving.',\n 'resourcefulIndex.bulkUpdate.failureTitle': 'Bulk Edit Failed',\n 'resourcefulIndex.bulkUpdate.failureText': 'Failed to update the selected records.',\n 'resourcefulIndex.download.title': 'Download Records',\n 'exporter.form.fields.format.label': 'File Type',\n 'exporter.form.fields.filename.label': 'File Name',\n 'exporter.form.fields.scope.options.all': 'All results matching filters',\n 'exporter.form.fields.scope.options.page': \"This page's results\",\n 'exporter.form.fields.scope.options.selected': 'Selected records',\n 'exporter.form.fields.scope.label': 'Records to download',\n 'exporter.form.fields.includeAllColumns.label': 'Include Hidden Columns',\n 'exporter.form.fields.humanizeNames.label': 'Use Human-Friendly Column Names',\n 'exporter.form.fields.humanizeData.label': 'Use Human-Friendly Data',\n 'exporter.form.actions.download': 'Download',\n 'resourcefulIndex.download.defaultFilename': 'downloaded_records',\n 'exporter.alerts.largeExport.title': 'This may take a while',\n 'exporter.alerts.largeExport.text':\n 'You are about to download %s records. This may take a while. Are you sure you want to continue?',\n 'exporter.alerts.largeExport.confirmButtonText': 'Continue Download',\n 'exporter.alerts.largeExport.cancelButtonText': 'Cancel',\n 'exporter.status.fetching': 'Fetching %s of %s records',\n 'exporter.status.generating': 'Finalizing file',\n 'exporter.status.completed': 'Your download is ready',\n 'exporter.status.pending': 'Preparing your download',\n 'exporter.form.actions.cancel': 'Cancel Download',\n 'exporter.form.actions.close': 'Close',\n 'exporter.alerts.cancelExport.title': 'Confirm Cancellation',\n 'exporter.alerts.cancelExport.text': 'Are you sure you want to cancel?',\n 'exporter.alerts.cancelExport.confirmButtonText': 'Cancel Download',\n 'exporter.alerts.cancelExport.denyButtonText': 'Nevermind',\n 'exporter.alerts.cancelExport.cancelled.title': 'Download Cancelled',\n 'exporter.alerts.cancelExport.cancelled.text': 'Your download was cancelled per your request.',\n 'resourcefulRecord.alerts.prevented.title': 'Submission Prevented',\n 'resourcefulRecord.alerts.prevented.text': 'The form submission was prevented.',\n 'resourcefulRecord.alerts.success.title': 'Success',\n 'resourcefulRecord.alerts.success.text': 'The operation completed successfully.',\n 'resourcefulRecord.alerts.failure.title': 'Operation Failed',\n 'resourcefulRecord.alerts.failure.text': 'The operation failed to complete.',\n 'resourcefulRecord.alerts.exception.title': 'Unexpected Error',\n 'resourcefulRecord.alerts.exception.text': 'An unexpected error occurred.',\n 'resourcefulRecord.meta.badRequest.title': 'Unable to Load Metadata',\n 'resourcefulRecord.meta.badRequest.text': 'Failed to load record metadata (Error: %s)',\n 'resourcefulRecord.record.badRequest.title': 'Unable to Load Record',\n 'resourcefulRecord.record.badRequest.text': 'Failed to load the record (Error: %s)',\n 'resourcefulRecord.form.badRequest.title': 'Unable to Load Form',\n 'resourcefulRecord.form.badRequest.text': 'Failed to load the form.',\n 'resourcefulRecord.buttons.index.cta': 'Back to List',\n 'resourcefulRecord.buttons.create.cta': 'Create New',\n 'resourcefulRecord.buttons.read.cta': 'View',\n 'resourcefulRecord.buttons.update.cta': 'Edit',\n 'resourcefulRecord.buttons.delete.cta': 'Delete',\n}\n","'use strict'\n\nfunction _process (v, mod) {\n var i\n var r\n\n if (typeof mod === 'function') {\n r = mod(v)\n if (r !== undefined) {\n v = r\n }\n } else if (Array.isArray(mod)) {\n for (i = 0; i < mod.length; i++) {\n r = mod[i](v)\n if (r !== undefined) {\n v = r\n }\n }\n }\n\n return v\n}\n\nfunction parseKey (key, val) {\n // detect negative index notation\n if (key[0] === '-' && Array.isArray(val) && /^-\\d+$/.test(key)) {\n return val.length + parseInt(key, 10)\n }\n return key\n}\n\nfunction isIndex (k) {\n return /^\\d+$/.test(k)\n}\n\nfunction isObject (val) {\n return Object.prototype.toString.call(val) === '[object Object]'\n}\n\nfunction isArrayOrObject (val) {\n return Object(val) === val\n}\n\nfunction isEmptyObject (val) {\n return Object.keys(val).length === 0\n}\n\nvar blacklist = ['__proto__', 'prototype', 'constructor']\nvar blacklistFilter = function (part) { return blacklist.indexOf(part) === -1 }\n\nfunction parsePath (path, sep) {\n if (path.indexOf('[') >= 0) {\n path = path.replace(/\\[/g, sep).replace(/]/g, '')\n }\n\n var parts = path.split(sep)\n\n var check = parts.filter(blacklistFilter)\n\n if (check.length !== parts.length) {\n throw Error('Refusing to update blacklisted property ' + path)\n }\n\n return parts\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty\n\nfunction DotObject (separator, override, useArray, useBrackets) {\n if (!(this instanceof DotObject)) {\n return new DotObject(separator, override, useArray, useBrackets)\n }\n\n if (typeof override === 'undefined') override = false\n if (typeof useArray === 'undefined') useArray = true\n if (typeof useBrackets === 'undefined') useBrackets = true\n this.separator = separator || '.'\n this.override = override\n this.useArray = useArray\n this.useBrackets = useBrackets\n this.keepArray = false\n\n // contains touched arrays\n this.cleanup = []\n}\n\nvar dotDefault = new DotObject('.', false, true, true)\nfunction wrap (method) {\n return function () {\n return dotDefault[method].apply(dotDefault, arguments)\n }\n}\n\nDotObject.prototype._fill = function (a, obj, v, mod) {\n var k = a.shift()\n\n if (a.length > 0) {\n obj[k] = obj[k] || (this.useArray && isIndex(a[0]) ? [] : {})\n\n if (!isArrayOrObject(obj[k])) {\n if (this.override) {\n obj[k] = {}\n } else {\n if (!(isArrayOrObject(v) && isEmptyObject(v))) {\n throw new Error(\n 'Trying to redefine `' + k + '` which is a ' + typeof obj[k]\n )\n }\n\n return\n }\n }\n\n this._fill(a, obj[k], v, mod)\n } else {\n if (!this.override && isArrayOrObject(obj[k]) && !isEmptyObject(obj[k])) {\n if (!(isArrayOrObject(v) && isEmptyObject(v))) {\n throw new Error(\"Trying to redefine non-empty obj['\" + k + \"']\")\n }\n\n return\n }\n\n obj[k] = _process(v, mod)\n }\n}\n\n/**\n *\n * Converts an object with dotted-key/value pairs to it's expanded version\n *\n * Optionally transformed by a set of modifiers.\n *\n * Usage:\n *\n * var row = {\n * 'nr': 200,\n * 'doc.name': ' My Document '\n * }\n *\n * var mods = {\n * 'doc.name': [_s.trim, _s.underscored]\n * }\n *\n * dot.object(row, mods)\n *\n * @param {Object} obj\n * @param {Object} mods\n */\nDotObject.prototype.object = function (obj, mods) {\n var self = this\n\n Object.keys(obj).forEach(function (k) {\n var mod = mods === undefined ? null : mods[k]\n // normalize array notation.\n var ok = parsePath(k, self.separator).join(self.separator)\n\n if (ok.indexOf(self.separator) !== -1) {\n self._fill(ok.split(self.separator), obj, obj[k], mod)\n delete obj[k]\n } else {\n obj[k] = _process(obj[k], mod)\n }\n })\n\n return obj\n}\n\n/**\n * @param {String} path dotted path\n * @param {String} v value to be set\n * @param {Object} obj object to be modified\n * @param {Function|Array} mod optional modifier\n */\nDotObject.prototype.str = function (path, v, obj, mod) {\n var ok = parsePath(path, this.separator).join(this.separator)\n\n if (path.indexOf(this.separator) !== -1) {\n this._fill(ok.split(this.separator), obj, v, mod)\n } else {\n obj[path] = _process(v, mod)\n }\n\n return obj\n}\n\n/**\n *\n * Pick a value from an object using dot notation.\n *\n * Optionally remove the value\n *\n * @param {String} path\n * @param {Object} obj\n * @param {Boolean} remove\n */\nDotObject.prototype.pick = function (path, obj, remove, reindexArray) {\n var i\n var keys\n var val\n var key\n var cp\n\n keys = parsePath(path, this.separator)\n for (i = 0; i < keys.length; i++) {\n key = parseKey(keys[i], obj)\n if (obj && typeof obj === 'object' && key in obj) {\n if (i === keys.length - 1) {\n if (remove) {\n val = obj[key]\n if (reindexArray && Array.isArray(obj)) {\n obj.splice(key, 1)\n } else {\n delete obj[key]\n }\n if (Array.isArray(obj)) {\n cp = keys.slice(0, -1).join('.')\n if (this.cleanup.indexOf(cp) === -1) {\n this.cleanup.push(cp)\n }\n }\n return val\n } else {\n return obj[key]\n }\n } else {\n obj = obj[key]\n }\n } else {\n return undefined\n }\n }\n if (remove && Array.isArray(obj)) {\n obj = obj.filter(function (n) {\n return n !== undefined\n })\n }\n return obj\n}\n/**\n *\n * Delete value from an object using dot notation.\n *\n * @param {String} path\n * @param {Object} obj\n * @return {any} The removed value\n */\nDotObject.prototype.delete = function (path, obj) {\n return this.remove(path, obj, true)\n}\n\n/**\n *\n * Remove value from an object using dot notation.\n *\n * Will remove multiple items if path is an array.\n * In this case array indexes will be retained until all\n * removals have been processed.\n *\n * Use dot.delete() to automatically re-index arrays.\n *\n * @param {String|Array<String>} path\n * @param {Object} obj\n * @param {Boolean} reindexArray\n * @return {any} The removed value\n */\nDotObject.prototype.remove = function (path, obj, reindexArray) {\n var i\n\n this.cleanup = []\n if (Array.isArray(path)) {\n for (i = 0; i < path.length; i++) {\n this.pick(path[i], obj, true, reindexArray)\n }\n if (!reindexArray) {\n this._cleanup(obj)\n }\n return obj\n } else {\n return this.pick(path, obj, true, reindexArray)\n }\n}\n\nDotObject.prototype._cleanup = function (obj) {\n var ret\n var i\n var keys\n var root\n if (this.cleanup.length) {\n for (i = 0; i < this.cleanup.length; i++) {\n keys = this.cleanup[i].split('.')\n root = keys.splice(0, -1).join('.')\n ret = root ? this.pick(root, obj) : obj\n ret = ret[keys[0]].filter(function (v) {\n return v !== undefined\n })\n this.set(this.cleanup[i], ret, obj)\n }\n this.cleanup = []\n }\n}\n\n/**\n * Alias method for `dot.remove`\n *\n * Note: this is not an alias for dot.delete()\n *\n * @param {String|Array<String>} path\n * @param {Object} obj\n * @param {Boolean} reindexArray\n * @return {any} The removed value\n */\nDotObject.prototype.del = DotObject.prototype.remove\n\n/**\n *\n * Move a property from one place to the other.\n *\n * If the source path does not exist (undefined)\n * the target property will not be set.\n *\n * @param {String} source\n * @param {String} target\n * @param {Object} obj\n * @param {Function|Array} mods\n * @param {Boolean} merge\n */\nDotObject.prototype.move = function (source, target, obj, mods, merge) {\n if (typeof mods === 'function' || Array.isArray(mods)) {\n this.set(target, _process(this.pick(source, obj, true), mods), obj, merge)\n } else {\n merge = mods\n this.set(target, this.pick(source, obj, true), obj, merge)\n }\n\n return obj\n}\n\n/**\n *\n * Transfer a property from one object to another object.\n *\n * If the source path does not exist (undefined)\n * the property on the other object will not be set.\n *\n * @param {String} source\n * @param {String} target\n * @param {Object} obj1\n * @param {Object} obj2\n * @param {Function|Array} mods\n * @param {Boolean} merge\n */\nDotObject.prototype.transfer = function (\n source,\n target,\n obj1,\n obj2,\n mods,\n merge\n) {\n if (typeof mods === 'function' || Array.isArray(mods)) {\n this.set(\n target,\n _process(this.pick(source, obj1, true), mods),\n obj2,\n merge\n )\n } else {\n merge = mods\n this.set(target, this.pick(source, obj1, true), obj2, merge)\n }\n\n return obj2\n}\n\n/**\n *\n * Copy a property from one object to another object.\n *\n * If the source path does not exist (undefined)\n * the property on the other object will not be set.\n *\n * @param {String} source\n * @param {String} target\n * @param {Object} obj1\n * @param {Object} obj2\n * @param {Function|Array} mods\n * @param {Boolean} merge\n */\nDotObject.prototype.copy = function (source, target, obj1, obj2, mods, merge) {\n if (typeof mods === 'function' || Array.isArray(mods)) {\n this.set(\n target,\n _process(\n // clone what is picked\n JSON.parse(JSON.stringify(this.pick(source, obj1, false))),\n mods\n ),\n obj2,\n merge\n )\n } else {\n merge = mods\n this.set(target, this.pick(source, obj1, false), obj2, merge)\n }\n\n return obj2\n}\n\n/**\n *\n * Set a property on an object using dot notation.\n *\n * @param {String} path\n * @param {any} val\n * @param {Object} obj\n * @param {Boolean} merge\n */\nDotObject.prototype.set = function (path, val, obj, merge) {\n var i\n var k\n var keys\n var key\n\n // Do not operate if the value is undefined.\n if (typeof val === 'undefined') {\n return obj\n }\n keys = parsePath(path, this.separator)\n\n for (i = 0; i < keys.length; i++) {\n key = keys[i]\n if (i === keys.length - 1) {\n if (merge && isObject(val) && isObject(obj[key])) {\n for (k in val) {\n if (hasOwnProperty.call(val, k)) {\n obj[key][k] = val[k]\n }\n }\n } else if (merge && Array.isArray(obj[key]) && Array.isArray(val)) {\n for (var j = 0; j < val.length; j++) {\n obj[keys[i]].push(val[j])\n }\n } else {\n obj[key] = val\n }\n } else if (\n // force the value to be an object\n !hasOwnProperty.call(obj, key) ||\n (!isObject(obj[key]) && !Array.isArray(obj[key]))\n ) {\n // initialize as array if next key is numeric\n if (/^\\d+$/.test(keys[i + 1])) {\n obj[key] = []\n } else {\n obj[key] = {}\n }\n }\n obj = obj[key]\n }\n return obj\n}\n\n/**\n *\n * Transform an object\n *\n * Usage:\n *\n * var obj = {\n * \"id\": 1,\n * \"some\": {\n * \"thing\": \"else\"\n * }\n * }\n *\n * var transform = {\n * \"id\": \"nr\",\n * \"some.thing\": \"name\"\n * }\n *\n * var tgt = dot.transform(transform, obj)\n *\n * @param {Object} recipe Transform recipe\n * @param {Object} obj Object to be transformed\n * @param {Array} mods modifiers for the target\n */\nDotObject.prototype.transform = function (recipe, obj, tgt) {\n obj = obj || {}\n tgt = tgt || {}\n Object.keys(recipe).forEach(\n function (key) {\n this.set(recipe[key], this.pick(key, obj), tgt)\n }.bind(this)\n )\n return tgt\n}\n\n/**\n *\n * Convert object to dotted-key/value pair\n *\n * Usage:\n *\n * var tgt = dot.dot(obj)\n *\n * or\n *\n * var tgt = {}\n * dot.dot(obj, tgt)\n *\n * @param {Object} obj source object\n * @param {Object} tgt target object\n * @param {Array} path path array (internal)\n */\nDotObject.prototype.dot = function (obj, tgt, path) {\n tgt = tgt || {}\n path = path || []\n var isArray = Array.isArray(obj)\n\n Object.keys(obj).forEach(\n function (key) {\n var index = isArray && this.useBrackets ? '[' + key + ']' : key\n if (\n isArrayOrObject(obj[key]) &&\n ((isObject(obj[key]) && !isEmptyObject(obj[key])) ||\n (Array.isArray(obj[key]) && !this.keepArray && obj[key].length !== 0))\n ) {\n if (isArray && this.useBrackets) {\n var previousKey = path[path.length - 1] || ''\n return this.dot(\n obj[key],\n tgt,\n path.slice(0, -1).concat(previousKey + index)\n )\n } else {\n return this.dot(obj[key], tgt, path.concat(index))\n }\n } else {\n if (isArray && this.useBrackets) {\n tgt[path.join(this.separator).concat('[' + key + ']')] = obj[key]\n } else {\n tgt[path.concat(index).join(this.separator)] = obj[key]\n }\n }\n }.bind(this)\n )\n return tgt\n}\n\nDotObject.pick = wrap('pick')\nDotObject.move = wrap('move')\nDotObject.transfer = wrap('transfer')\nDotObject.transform = wrap('transform')\nDotObject.copy = wrap('copy')\nDotObject.object = wrap('object')\nDotObject.str = wrap('str')\nDotObject.set = wrap('set')\nDotObject.delete = wrap('delete')\nDotObject.del = DotObject.remove = wrap('remove')\nDotObject.dot = wrap('dot');\n['override', 'overwrite'].forEach(function (prop) {\n Object.defineProperty(DotObject, prop, {\n get: function () {\n return dotDefault.override\n },\n set: function (val) {\n dotDefault.override = !!val\n }\n })\n});\n['useArray', 'keepArray', 'useBrackets'].forEach(function (prop) {\n Object.defineProperty(DotObject, prop, {\n get: function () {\n return dotDefault[prop]\n },\n set: function (val) {\n dotDefault[prop] = val\n }\n })\n})\n\nDotObject._process = _process\n\nmodule.exports = DotObject\n","import { en } from '../locales'\nimport { default as dot } from 'dot-object'\n\nexport interface I18nTranslator {\n (key: string): string\n}\n\nexport const defaultI18nTranslator: I18nTranslator = (key: string): string => {\n return dot.pick(key, en) || en[key as keyof typeof en] || key\n}\n","import { IANAZone, SystemZone, FixedOffsetZone } from 'luxon'\n\nexport interface ResourcefulTimezone {\n iana: IANAZone | FixedOffsetZone\n name: string\n normalizedName: string\n region: string\n unRegionalizedName: string\n isCurrent: boolean\n}\n\nexport interface ResourcefulTimezoneOption {\n value: string\n label: string\n searchable: string[]\n isCurrent: boolean\n}\n\nexport class ResourcefulTimezoneInformation {\n readonly #ianaZones: Set<ResourcefulTimezone>\n readonly #current: string\n\n constructor() {\n this.#current = this.#detectCurrentTimezone()\n this.#ianaZones = this.#constructIanaZones()\n }\n\n #constructIanaZones(): Set<ResourcefulTimezone> {\n if (typeof Intl === 'undefined' || typeof Intl.supportedValuesOf !== 'function') {\n return new Set()\n }\n const raw = Intl.supportedValuesOf('timeZone')\n const mapped = raw\n .map((tz) => new IANAZone(tz))\n .filter((zone) => zone.isValid)\n .map((iana) => {\n const normalizedName = iana.name.replace(/_/g, ' ')\n const [region, ...rest] = normalizedName.split('/')\n const ret: ResourcefulTimezone = {\n iana,\n name: iana.name,\n normalizedName,\n region,\n unRegionalizedName: rest.join('/'),\n isCurrent: iana.name === this.#current,\n }\n return ret\n })\n const fixedOffsetMapped = [\n 'UTC',\n 'UCT',\n ...Array.from({ length: 12 }, (_, i) => `UTC+${i + 1}`),\n ...Array.from({ length: 14 }, (_, i) => `UTC-${i + 1}`),\n ]\n .map((tz) => FixedOffsetZone.parseSpecifier(tz))\n .filter((zone) => zone !== null)\n .map((zone) => {\n const name = ['Etc', zone!.name].join('/')\n const normalizedName = name.replace(/_/g, ' ')\n const [region, ...rest] = normalizedName.split('/')\n const ret: ResourcefulTimezone = {\n iana: zone!,\n name: name,\n normalizedName,\n region,\n unRegionalizedName: rest.join('/'),\n isCurrent: name === this.#current,\n }\n return ret\n })\n return new Set([...mapped, ...fixedOffsetMapped])\n }\n\n #detectCurrentTimezone(): string {\n let ret: string | undefined = SystemZone.instance.name\n if (!ret && (typeof Intl === 'undefined' || typeof Intl.DateTimeFormat === 'undefined')) {\n ret = SystemZone.instance.name\n } else if (!ret) {\n ret = Intl.DateTimeFormat().resolvedOptions().timeZone\n }\n return ret\n }\n\n get zones(): Array<ResourcefulTimezone> {\n return Array.from(this.#ianaZones)\n }\n\n get options(): Array<ResourcefulTimezoneOption> {\n return Array.from(this.#ianaZones).map((zone) => ({\n value: zone.name,\n label: zone.normalizedName,\n searchable: [zone.name, zone.normalizedName, zone.region, zone.unRegionalizedName],\n isCurrent: zone.isCurrent,\n }))\n }\n\n get current(): ResourcefulTimezone | undefined {\n return Array.from(this.#ianaZones).find((zone) => zone.isCurrent)\n }\n}\n","import { IoCSymbol } from './symbols'\nimport { getCurrentInstance } from 'vue'\nimport { MilliCron } from '@nhtio/millicron'\nimport { browserService } from './services/browser'\nimport { defaultCacheService } from './services/cache'\nimport { defaultI18nTranslator } from './services/i18n'\nimport { inject, onMounted, onBeforeUnmount } from 'vue'\nimport { TypedEventEmitter } from '@nhtio/tiny-typed-emitter'\nimport { defaultResourcefulHttpService } from './services/http'\nimport { defaultValidationService } from './services/validation'\nimport { ResourcefulTimezoneInformation } from './services/timezones'\nimport type { App } from 'vue'\nimport type { I18nTranslator } from './services/i18n'\nimport type { BrowserService } from './services/browser'\nimport type { ValidationRoot } from './services/validation'\nimport type { ResourcefulHttpService } from './services/http'\nimport type { ResourcefulMemoryCache } from './services/cache'\nimport type { EventMap, Key, Args, Listener } from '@nhtio/tiny-typed-emitter'\nimport type { ResourcefulTimezone, ResourcefulTimezoneOption } from './services/timezones'\n\nexport interface Resolver<T> {\n (): T\n}\n\nexport interface IoCServices {\n i18n: I18nTranslator\n validation: ValidationRoot\n http: ResourcefulHttpService\n cache: ResourcefulMemoryCache\n}\n\nexport type IocService<T> = T extends keyof IoCServices ? IoCServices[T] : never\nexport type IocServiceResolver<T> = T extends keyof IoCServices ? Resolver<IocService<T>> : never\n\nexport type IocEventMap = EventMap<{\n 'i18n:updated': []\n 'i18n:locale:updated': []\n 'validation:updated': []\n 'http:updated': []\n 'cache:updated': []\n}>\n\nlet globalInstance: IoC | undefined\n\nexport class IoC {\n readonly #emitter: TypedEventEmitter<IocEventMap>\n readonly #state: Map<string, Resolver<any>>\n readonly #cron: MilliCron\n readonly #timezones: ResourcefulTimezoneInformation\n readonly #browser: BrowserService\n\n constructor() {\n this.#emitter = new TypedEventEmitter<IocEventMap>()\n this.#state = new Map()\n this.#state.set('i18n', () => defaultI18nTranslator)\n this.#state.set('validation', () => defaultValidationService)\n this.#state.set('http', () => defaultResourcefulHttpService)\n this.#state.set('cache', () => defaultCacheService)\n this.#updateValidationI18n()\n this.#cron = new MilliCron()\n this.#cron.start()\n this.#timezones = new ResourcefulTimezoneInformation()\n this.#browser = browserService\n }\n\n #updateValidationI18n(): void {\n const i18n = this.get('i18n')\n const validation = this.get('validation')\n validation.$setI18n(i18n)\n }\n\n public set<K extends keyof IoCServices>(key: K, value: IocServiceResolver<K>): void {\n if (!this.#state.has(key)) {\n throw new Error(`Invalid IoC Service: ${key}`)\n }\n this.#state.set(key, value)\n if (['i18n', 'validation'].includes(key)) {\n this.#updateValidationI18n()\n }\n this.#emitter.emit(`${key}:updated` as any) // Emit when service changes\n }\n\n public get<K extends keyof IoCServices>(key: K): IocService<K> {\n const value = this.#state.get(key) as IocServiceResolver<K>\n if (typeof value === 'undefined') {\n throw new Error(`IoC Service not found: ${key}`)\n }\n return value() as IocService<K>\n }\n\n public mutate<K extends keyof IoCServices>(\n key: K,\n mutator: (service: IocService<K>) => IocServiceResolver<K>,\n bubble: boolean = true\n ): void {\n const service = this.get(key)\n this.#state.set(key, mutator(service))\n if (['i18n', 'validation'].includes(key)) {\n this.#updateValidationI18n()\n }\n if (bubble) {\n this.#emitter.emit(`${key}:updated` as any) // Emit when service changes\n }\n }\n\n emit<K>(event: Key<K, IocEventMap>, ...args: Args<K, IocEventMap>): this {\n this.#emitter.emit(event, ...args)\n return this\n }\n\n off<K>(event: Key<K, IocEventMap>, listener?: Listener<K, IocEventMap>): this {\n this.#emitter.off(event, listener)\n return this\n }\n\n on<K>(event: Key<K, IocEventMap>, listener: Listener<K, IocEventMap>, ctx?: any): this {\n this.#emitter.on(event, listener, ctx)\n return this\n }\n\n once<K>(event: Key<K, IocEventMap>, listener: Listener<K, IocEventMap>, ctx?: any): this {\n this.#emitter.once(event, listener, ctx)\n return this\n }\n\n get cron(): MilliCron {\n return this.#cron\n }\n\n get timezones(): ResourcefulTimezoneInformation {\n return this.#timezones\n }\n\n get browser(): BrowserService {\n return this.#browser\n }\n\n public static install(\n app: App,\n options: Partial<Record<keyof IoCServices, IocServiceResolver<keyof IoCServices>>> = {}\n ) {\n const instance = new IoC()\n Object.entries(options).forEach(([key, resolver]) => {\n instance.set(key as keyof IoCServices, resolver)\n })\n globalInstance = instance\n app.provide(IoCSymbol, instance)\n }\n}\n\nexport const useIoC = (): IoC => {\n const currentInstance = getCurrentInstance()\n const ioc = currentInstance ? inject(IoCSymbol) : globalInstance\n if (!ioc) {\n throw new Error('IoC not installed. Please call IoC.install in your app setup.')\n }\n return ioc\n}\n\nexport const setIocService = <K extends keyof IoCServices>(\n key: K,\n value: IocServiceResolver<K>\n): void => {\n const ioc = useIoC()\n ioc.set(key, value)\n}\n\nexport const useI18n = (): I18nTranslator => {\n const ioc = useIoC()\n return ioc.get('i18n')\n}\n\nexport const useValidation = (): ValidationRoot => {\n const ioc = useIoC()\n return ioc.get('validation')\n}\n\nexport const useHttp = (): ResourcefulHttpService => {\n const ioc = useIoC()\n return ioc.get('http')\n}\n\nexport const useCache = (): ResourcefulMemoryCache => {\n const ioc = useIoC()\n return ioc.get('cache')\n}\n\nexport const useCron = (): MilliCron => {\n const ioc = useIoC()\n return ioc.cron\n}\n\nexport const useCronTab = (crontab: string, callback: (...args: any[]) => void) => {\n const daemon = useCron()\n const abortController = new AbortController()\n const doOff = () => {\n daemon.$off(crontab, callback)\n }\n const doOn = () => {\n daemon.$on(crontab, callback)\n }\n onMounted(() => {\n if (!abortController.signal.aborted) {\n doOn()\n }\n })\n onBeforeUnmount(() => {\n doOff()\n })\n const cancel = () => {\n abortController.abort()\n doOff()\n }\n return cancel\n}\n\nexport const useTimezones = (): ResourcefulTimezoneInformation => {\n const ioc = useIoC()\n return ioc.timezones\n}\n\nexport const useTimezoneZones = (): Array<ResourcefulTimezone> => {\n const ioc = useIoC()\n return ioc.timezones.zones\n}\n\nexport const useCurrentTimezone = (): ResourcefulTimezone | undefined => {\n const ioc = useIoC()\n return ioc.timezones.current\n}\n\nexport const useTimezoneOptions = (): Array<ResourcefulTimezoneOption> => {\n const ioc = useIoC()\n return ioc.timezones.options\n}\n\nexport const useBrowser = (): BrowserService => {\n try {\n const ioc = useIoC()\n return ioc.browser\n } catch (error) {\n return browserService\n }\n}\n\nexport type { I18nTranslator } from './services/i18n'\nexport type { ValidationRoot } from './services/validation'\nexport type {\n ResourcefulHttpService,\n ResourcefulHttpResponse,\n ResourcefulHttpMethod,\n ResourcefulHttpHeaders,\n ResourcefulHttpProgress,\n ResourcefulHttpRequestOptions,\n MaybePromised,\n} from './services/http'\nexport type { ResourcefulMemoryCache } from './services/cache'\nexport type {\n ResourcefulTimezoneInformation,\n ResourcefulTimezone,\n ResourcefulTimezoneOption,\n} from './services/timezones'\nexport type { BrowserService } from './services/browser'\nexport type { CacheService } from './services/cache'\n"],"names":["MilliCron","dot","TypedEventEmitter","defaultValidationService"],"mappings":"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AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;AAAA,EACd,cAAc;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","x_google_ignoreList":[2]}
package/ioc.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { I, s } from "./ioc-Q-KAX6x1.mjs";
1
+ import { I, s } from "./ioc-DOAKMPdw.mjs";
2
2
  export {
3
3
  I as IoC,
4
4
  s as setIocService