terrier-engine 4.67.10 → 4.67.13

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 (2640) hide show
  1. package/package.json +1 -1
  2. package/terrier/glyps.ts +22 -0
  3. package/.DS_Store +0 -0
  4. package/.editorconfig +0 -727
  5. package/.env +0 -1
  6. package/.github/workflows/typecheck.yml +0 -20
  7. package/.gitignore +0 -18
  8. package/.idea/codeStyles/codeStyleConfig.xml +0 -5
  9. package/.idea/git_toolbox_blame.xml +0 -6
  10. package/.idea/git_toolbox_prj.xml +0 -15
  11. package/.idea/inspectionProfiles/Project_Default.xml +0 -6
  12. package/.idea/misc.xml +0 -4
  13. package/.idea/modules.xml +0 -8
  14. package/.idea/terrier-engine.iml +0 -824
  15. package/.idea/vcs.xml +0 -6
  16. package/.ruby-version +0 -2
  17. package/Gemfile +0 -20
  18. package/Gemfile.lock +0 -429
  19. package/MIT-LICENSE +0 -20
  20. package/README.md +0 -242
  21. package/Rakefile +0 -38
  22. package/after_pull +0 -1
  23. package/app/assets/config/terrier_engine_manifest.js +0 -0
  24. package/app/assets/fonts/glyps.ttf +0 -0
  25. package/app/assets/fonts/glyps.woff +0 -0
  26. package/app/assets/glyps/.fontcustom-manifest.json +0 -306
  27. package/app/assets/glyps/abacus.svg +0 -7
  28. package/app/assets/glyps/account.svg +0 -9
  29. package/app/assets/glyps/accounts_payable.svg +0 -8
  30. package/app/assets/glyps/accounts_receivable.svg +0 -8
  31. package/app/assets/glyps/action_log.svg +0 -12
  32. package/app/assets/glyps/activate.svg +0 -8
  33. package/app/assets/glyps/activate_user.svg +0 -6
  34. package/app/assets/glyps/active.svg +0 -8
  35. package/app/assets/glyps/activity_high.svg +0 -7
  36. package/app/assets/glyps/activity_low.svg +0 -7
  37. package/app/assets/glyps/activity_medium.svg +0 -7
  38. package/app/assets/glyps/activity_none.svg +0 -7
  39. package/app/assets/glyps/address1.svg +0 -10
  40. package/app/assets/glyps/adjustment.svg +0 -7
  41. package/app/assets/glyps/admin.svg +0 -8
  42. package/app/assets/glyps/administration.svg +0 -7
  43. package/app/assets/glyps/affinity.svg +0 -8
  44. package/app/assets/glyps/agency.svg +0 -3
  45. package/app/assets/glyps/air_freshener.svg +0 -7
  46. package/app/assets/glyps/alert.svg +0 -9
  47. package/app/assets/glyps/align_horizontal.svg +0 -10
  48. package/app/assets/glyps/align_vertical.svg +0 -10
  49. package/app/assets/glyps/anchor.svg +0 -7
  50. package/app/assets/glyps/android_phone.svg +0 -8
  51. package/app/assets/glyps/android_tablet.svg +0 -8
  52. package/app/assets/glyps/annotation.svg +0 -3
  53. package/app/assets/glyps/announcement.svg +0 -12
  54. package/app/assets/glyps/anthropic.svg +0 -8
  55. package/app/assets/glyps/app_update.svg +0 -11
  56. package/app/assets/glyps/append_selection.svg +0 -21
  57. package/app/assets/glyps/appointment.svg +0 -8
  58. package/app/assets/glyps/appointment_setup.svg +0 -9
  59. package/app/assets/glyps/archive.svg +0 -8
  60. package/app/assets/glyps/arrow_down.svg +0 -7
  61. package/app/assets/glyps/arrow_left.svg +0 -7
  62. package/app/assets/glyps/arrow_right.svg +0 -7
  63. package/app/assets/glyps/arrow_transfer.svg +0 -10
  64. package/app/assets/glyps/arrow_up.svg +0 -7
  65. package/app/assets/glyps/ascending.svg +0 -10
  66. package/app/assets/glyps/assign.svg +0 -8
  67. package/app/assets/glyps/assign_all.svg +0 -8
  68. package/app/assets/glyps/attachment.svg +0 -7
  69. package/app/assets/glyps/audit.svg +0 -9
  70. package/app/assets/glyps/audit_analyzer.svg +0 -8
  71. package/app/assets/glyps/audits.svg +0 -10
  72. package/app/assets/glyps/autopay.svg +0 -9
  73. package/app/assets/glyps/autopay_bank_account.svg +0 -9
  74. package/app/assets/glyps/autopay_card.svg +0 -9
  75. package/app/assets/glyps/autopay_day.svg +0 -9
  76. package/app/assets/glyps/availability.svg +0 -13
  77. package/app/assets/glyps/avoca.svg +0 -10
  78. package/app/assets/glyps/azuga.svg +0 -8
  79. package/app/assets/glyps/background_batch.svg +0 -8
  80. package/app/assets/glyps/background_job.svg +0 -8
  81. package/app/assets/glyps/background_style.svg +0 -8
  82. package/app/assets/glyps/bait_for_demolition.svg +0 -15
  83. package/app/assets/glyps/bar_chart.svg +0 -11
  84. package/app/assets/glyps/barcode.svg +0 -15
  85. package/app/assets/glyps/bat_exclusion.svg +0 -9
  86. package/app/assets/glyps/bed_bug_fumigation.svg +0 -8
  87. package/app/assets/glyps/begin_service.svg +0 -8
  88. package/app/assets/glyps/bell_labs.svg +0 -7
  89. package/app/assets/glyps/belongs_to.svg +0 -7
  90. package/app/assets/glyps/billing.svg +0 -11
  91. package/app/assets/glyps/billing_office.svg +0 -11
  92. package/app/assets/glyps/billing_terms.svg +0 -12
  93. package/app/assets/glyps/billto.svg +0 -13
  94. package/app/assets/glyps/bioremediation.svg +0 -15
  95. package/app/assets/glyps/bird_exclusion.svg +0 -9
  96. package/app/assets/glyps/black_light.svg +0 -15
  97. package/app/assets/glyps/bookmark.svg +0 -7
  98. package/app/assets/glyps/branch.svg +0 -7
  99. package/app/assets/glyps/branch_bats.svg +0 -7
  100. package/app/assets/glyps/branch_birds.svg +0 -7
  101. package/app/assets/glyps/branch_general.svg +0 -7
  102. package/app/assets/glyps/branch_irrigation.svg +0 -15
  103. package/app/assets/glyps/branch_landscape.svg +0 -7
  104. package/app/assets/glyps/branch_multi_housing.svg +0 -7
  105. package/app/assets/glyps/branch_office.svg +0 -7
  106. package/app/assets/glyps/branch_orders.svg +0 -8
  107. package/app/assets/glyps/branch_residential.svg +0 -7
  108. package/app/assets/glyps/branch_sales.svg +0 -10
  109. package/app/assets/glyps/branch_snow.svg +0 -7
  110. package/app/assets/glyps/branch_termites.svg +0 -7
  111. package/app/assets/glyps/branch_weeds.svg +0 -7
  112. package/app/assets/glyps/branch_wildlife.svg +0 -13
  113. package/app/assets/glyps/build.svg +0 -8
  114. package/app/assets/glyps/business.svg +0 -21
  115. package/app/assets/glyps/business_cert.svg +0 -23
  116. package/app/assets/glyps/business_cert_type.svg +0 -23
  117. package/app/assets/glyps/calculate.svg +0 -16
  118. package/app/assets/glyps/calendar.svg +0 -7
  119. package/app/assets/glyps/calendar_branch.svg +0 -8
  120. package/app/assets/glyps/calendar_collapse.svg +0 -12
  121. package/app/assets/glyps/calendar_expand.svg +0 -11
  122. package/app/assets/glyps/calendar_map.svg +0 -8
  123. package/app/assets/glyps/calendar_rolling.svg +0 -8
  124. package/app/assets/glyps/calendar_share.svg +0 -13
  125. package/app/assets/glyps/calendar_snap.svg +0 -11
  126. package/app/assets/glyps/calendar_style.svg +0 -12
  127. package/app/assets/glyps/california.svg +0 -7
  128. package/app/assets/glyps/call.svg +0 -7
  129. package/app/assets/glyps/callback.svg +0 -7
  130. package/app/assets/glyps/camera.svg +0 -12
  131. package/app/assets/glyps/canada.svg +0 -7
  132. package/app/assets/glyps/cancellation.svg +0 -11
  133. package/app/assets/glyps/cancelled.svg +0 -8
  134. package/app/assets/glyps/card_american_express.svg +0 -7
  135. package/app/assets/glyps/card_discover.svg +0 -14
  136. package/app/assets/glyps/card_mastercard.svg +0 -21
  137. package/app/assets/glyps/card_visa.svg +0 -12
  138. package/app/assets/glyps/catalog.svg +0 -12
  139. package/app/assets/glyps/category.svg +0 -12
  140. package/app/assets/glyps/caught.svg +0 -8
  141. package/app/assets/glyps/cellulose_debris.svg +0 -9
  142. package/app/assets/glyps/cert.svg +0 -10
  143. package/app/assets/glyps/cert_timeline.svg +0 -7
  144. package/app/assets/glyps/cert_type.svg +0 -7
  145. package/app/assets/glyps/certificate.svg +0 -9
  146. package/app/assets/glyps/certified_summary.svg +0 -9
  147. package/app/assets/glyps/certs.svg +0 -9
  148. package/app/assets/glyps/ceu.svg +0 -10
  149. package/app/assets/glyps/check_all.svg +0 -8
  150. package/app/assets/glyps/check_in.svg +0 -9
  151. package/app/assets/glyps/check_in_service.svg +0 -9
  152. package/app/assets/glyps/checked.svg +0 -8
  153. package/app/assets/glyps/checked_check_all.svg +0 -9
  154. package/app/assets/glyps/checked_empty.svg +0 -7
  155. package/app/assets/glyps/checkmark.svg +0 -7
  156. package/app/assets/glyps/checkmark_filled.svg +0 -7
  157. package/app/assets/glyps/checkout.svg +0 -8
  158. package/app/assets/glyps/chemical.svg +0 -15
  159. package/app/assets/glyps/chemical_authorization.svg +0 -9
  160. package/app/assets/glyps/chemical_backpack_sprayer.svg +0 -7
  161. package/app/assets/glyps/chemical_biological_controls.svg +0 -15
  162. package/app/assets/glyps/chemical_disinfectant.svg +0 -10
  163. package/app/assets/glyps/chemical_fertilizer.svg +0 -9
  164. package/app/assets/glyps/chemical_flying_insect_bait.svg +0 -12
  165. package/app/assets/glyps/chemical_fumigants.svg +0 -9
  166. package/app/assets/glyps/chemical_insect_aerosol.svg +0 -10
  167. package/app/assets/glyps/chemical_insect_bait.svg +0 -28
  168. package/app/assets/glyps/chemical_insect_dust.svg +0 -9
  169. package/app/assets/glyps/chemical_insect_granules.svg +0 -23
  170. package/app/assets/glyps/chemical_insect_spray.svg +0 -9
  171. package/app/assets/glyps/chemical_label.svg +0 -11
  172. package/app/assets/glyps/chemical_mole_bait.svg +0 -14
  173. package/app/assets/glyps/chemical_pest_bird_control.svg +0 -14
  174. package/app/assets/glyps/chemical_pheromone_products.svg +0 -9
  175. package/app/assets/glyps/chemical_power_sprayer.svg +0 -7
  176. package/app/assets/glyps/chemical_rodent_attractant.svg +0 -11
  177. package/app/assets/glyps/chemical_rodenticide_block.svg +0 -13
  178. package/app/assets/glyps/chemical_rodenticide_non_block.svg +0 -23
  179. package/app/assets/glyps/chemical_sds.svg +0 -7
  180. package/app/assets/glyps/chemical_tree_products.svg +0 -7
  181. package/app/assets/glyps/chemical_weed_control.svg +0 -8
  182. package/app/assets/glyps/chemical_wildlife_repellents.svg +0 -21
  183. package/app/assets/glyps/chemical_wildlife_toxicants.svg +0 -14
  184. package/app/assets/glyps/chevron_down.svg +0 -7
  185. package/app/assets/glyps/chevron_left.svg +0 -7
  186. package/app/assets/glyps/chevron_right.svg +0 -7
  187. package/app/assets/glyps/chevron_up.svg +0 -7
  188. package/app/assets/glyps/chiirp.svg +0 -7
  189. package/app/assets/glyps/circle.svg +0 -7
  190. package/app/assets/glyps/city.svg +0 -26
  191. package/app/assets/glyps/click.svg +0 -8
  192. package/app/assets/glyps/client_actions.svg +0 -8
  193. package/app/assets/glyps/client_pest_sightings.svg +0 -11
  194. package/app/assets/glyps/client_required.svg +0 -8
  195. package/app/assets/glyps/clipboard.svg +0 -12
  196. package/app/assets/glyps/close.svg +0 -6
  197. package/app/assets/glyps/close_empty.svg +0 -7
  198. package/app/assets/glyps/cloud.svg +0 -7
  199. package/app/assets/glyps/cloudflare_turnstile.svg +0 -8
  200. package/app/assets/glyps/clyp_environment.svg +0 -8
  201. package/app/assets/glyps/clyp_settings.svg +0 -8
  202. package/app/assets/glyps/clypboard.svg +0 -7
  203. package/app/assets/glyps/clypedia.svg +0 -6
  204. package/app/assets/glyps/clypmart.svg +0 -7
  205. package/app/assets/glyps/code.svg +0 -9
  206. package/app/assets/glyps/code_details.svg +0 -11
  207. package/app/assets/glyps/collapse.svg +0 -10
  208. package/app/assets/glyps/collections.svg +0 -13
  209. package/app/assets/glyps/color.svg +0 -7
  210. package/app/assets/glyps/columns.svg +0 -10
  211. package/app/assets/glyps/comment.svg +0 -11
  212. package/app/assets/glyps/comment_filled.svg +0 -7
  213. package/app/assets/glyps/comments.svg +0 -6
  214. package/app/assets/glyps/commission_origin.svg +0 -8
  215. package/app/assets/glyps/commissions.svg +0 -11
  216. package/app/assets/glyps/compact.svg +0 -10
  217. package/app/assets/glyps/company.svg +0 -9
  218. package/app/assets/glyps/company_setup.svg +0 -8
  219. package/app/assets/glyps/compass.svg +0 -8
  220. package/app/assets/glyps/complete.svg +0 -8
  221. package/app/assets/glyps/complete_certificate.svg +0 -12
  222. package/app/assets/glyps/complete_enrollment.svg +0 -16
  223. package/app/assets/glyps/compressed.svg +0 -7
  224. package/app/assets/glyps/condition_appliance_machinery.svg +0 -17
  225. package/app/assets/glyps/condition_customer.svg +0 -8
  226. package/app/assets/glyps/condition_device.svg +0 -7
  227. package/app/assets/glyps/condition_door_window.svg +0 -11
  228. package/app/assets/glyps/condition_dumpster.svg +0 -16
  229. package/app/assets/glyps/condition_entry_point.svg +0 -8
  230. package/app/assets/glyps/condition_evidence.svg +0 -10
  231. package/app/assets/glyps/condition_exclusion.svg +0 -8
  232. package/app/assets/glyps/condition_exterior.svg +0 -22
  233. package/app/assets/glyps/condition_interior.svg +0 -11
  234. package/app/assets/glyps/condition_plumbing.svg +0 -10
  235. package/app/assets/glyps/condition_prep_storage.svg +0 -14
  236. package/app/assets/glyps/condition_rodent_evidence.svg +0 -8
  237. package/app/assets/glyps/condition_rodent_exclusion.svg +0 -20
  238. package/app/assets/glyps/condition_roof_ceiling.svg +0 -8
  239. package/app/assets/glyps/condition_structure.svg +0 -12
  240. package/app/assets/glyps/condition_supplies.svg +0 -10
  241. package/app/assets/glyps/condition_termites.svg +0 -7
  242. package/app/assets/glyps/condition_ventilation.svg +0 -9
  243. package/app/assets/glyps/condition_wall_floor.svg +0 -17
  244. package/app/assets/glyps/condition_wildlife.svg +0 -9
  245. package/app/assets/glyps/conditions.svg +0 -11
  246. package/app/assets/glyps/consolidate.svg +0 -7
  247. package/app/assets/glyps/construction.svg +0 -11
  248. package/app/assets/glyps/continuing_ed.svg +0 -8
  249. package/app/assets/glyps/contract.svg +0 -8
  250. package/app/assets/glyps/contract_cancellation.svg +0 -9
  251. package/app/assets/glyps/contract_overview.svg +0 -8
  252. package/app/assets/glyps/contractor.svg +0 -7
  253. package/app/assets/glyps/conversation.svg +0 -18
  254. package/app/assets/glyps/copesan.svg +0 -10
  255. package/app/assets/glyps/copy.svg +0 -6
  256. package/app/assets/glyps/county.svg +0 -10
  257. package/app/assets/glyps/credit_memo.svg +0 -8
  258. package/app/assets/glyps/credit_non_revenue.svg +0 -8
  259. package/app/assets/glyps/credit_production.svg +0 -13
  260. package/app/assets/glyps/credit_prospect.svg +0 -11
  261. package/app/assets/glyps/credit_sales_bonus.svg +0 -7
  262. package/app/assets/glyps/crew.svg +0 -8
  263. package/app/assets/glyps/cumulative.svg +0 -7
  264. package/app/assets/glyps/curriculum.svg +0 -12
  265. package/app/assets/glyps/cursor.svg +0 -7
  266. package/app/assets/glyps/custom_form.svg +0 -14
  267. package/app/assets/glyps/customer.svg +0 -8
  268. package/app/assets/glyps/customer_service.svg +0 -8
  269. package/app/assets/glyps/damage.svg +0 -10
  270. package/app/assets/glyps/dashboard.svg +0 -10
  271. package/app/assets/glyps/data_dive.svg +0 -7
  272. package/app/assets/glyps/data_dive_query.svg +0 -8
  273. package/app/assets/glyps/data_dives.svg +0 -9
  274. package/app/assets/glyps/database.svg +0 -7
  275. package/app/assets/glyps/deactivate_user.svg +0 -3
  276. package/app/assets/glyps/dead_animal_removal.svg +0 -10
  277. package/app/assets/glyps/default.svg +0 -10
  278. package/app/assets/glyps/delete.svg +0 -12
  279. package/app/assets/glyps/demo_mode.svg +0 -8
  280. package/app/assets/glyps/descending.svg +0 -12
  281. package/app/assets/glyps/design.svg +0 -13
  282. package/app/assets/glyps/desktop.svg +0 -7
  283. package/app/assets/glyps/detail_report.svg +0 -8
  284. package/app/assets/glyps/developer.svg +0 -9
  285. package/app/assets/glyps/device.svg +0 -7
  286. package/app/assets/glyps/device_sync.svg +0 -8
  287. package/app/assets/glyps/dialpad.svg +0 -7
  288. package/app/assets/glyps/differential.svg +0 -7
  289. package/app/assets/glyps/disable.svg +0 -7
  290. package/app/assets/glyps/disabled_filled.svg +0 -7
  291. package/app/assets/glyps/distribute_horizontal.svg +0 -14
  292. package/app/assets/glyps/distribute_vertical.svg +0 -12
  293. package/app/assets/glyps/division.svg +0 -10
  294. package/app/assets/glyps/document.svg +0 -9
  295. package/app/assets/glyps/documentation.svg +0 -7
  296. package/app/assets/glyps/documents.svg +0 -10
  297. package/app/assets/glyps/download.svg +0 -6
  298. package/app/assets/glyps/driving.svg +0 -11
  299. package/app/assets/glyps/duplicate.svg +0 -10
  300. package/app/assets/glyps/duplicate_location.svg +0 -8
  301. package/app/assets/glyps/duration.svg +0 -7
  302. package/app/assets/glyps/earth_to_wood.svg +0 -10
  303. package/app/assets/glyps/edit.svg +0 -8
  304. package/app/assets/glyps/email.svg +0 -7
  305. package/app/assets/glyps/employment.svg +0 -7
  306. package/app/assets/glyps/entertainment_public_venues.svg +0 -10
  307. package/app/assets/glyps/equipment_bear_trap.svg +0 -11
  308. package/app/assets/glyps/equipment_bird_deterrent.svg +0 -8
  309. package/app/assets/glyps/equipment_flying_insect_bait_station.svg +0 -7
  310. package/app/assets/glyps/equipment_flying_insect_light_trap.svg +0 -8
  311. package/app/assets/glyps/equipment_insect_monitor.svg +0 -7
  312. package/app/assets/glyps/equipment_lethal_animal_trap.svg +0 -9
  313. package/app/assets/glyps/equipment_live_animal_trap.svg +0 -8
  314. package/app/assets/glyps/equipment_live_rodent_trap.svg +0 -7
  315. package/app/assets/glyps/equipment_maintenance.svg +0 -7
  316. package/app/assets/glyps/equipment_map_viewer.svg +0 -8
  317. package/app/assets/glyps/equipment_maps.svg +0 -7
  318. package/app/assets/glyps/equipment_mosquito_trap.svg +0 -7
  319. package/app/assets/glyps/equipment_other.svg +0 -9
  320. package/app/assets/glyps/equipment_pheromone_trap.svg +0 -8
  321. package/app/assets/glyps/equipment_pick_up.svg +0 -14
  322. package/app/assets/glyps/equipment_rodent_bait.svg +0 -7
  323. package/app/assets/glyps/equipment_rodent_trap.svg +0 -10
  324. package/app/assets/glyps/equipment_stinging_insect_trap.svg +0 -7
  325. package/app/assets/glyps/equipment_termite_bait_station.svg +0 -13
  326. package/app/assets/glyps/equipment_termite_monitor.svg +0 -7
  327. package/app/assets/glyps/escape.svg +0 -10
  328. package/app/assets/glyps/ews.svg +0 -13
  329. package/app/assets/glyps/exam.svg +0 -14
  330. package/app/assets/glyps/exams.svg +0 -14
  331. package/app/assets/glyps/exclusion.svg +0 -8
  332. package/app/assets/glyps/existing_location.svg +0 -9
  333. package/app/assets/glyps/expand.svg +0 -7
  334. package/app/assets/glyps/expired.svg +0 -11
  335. package/app/assets/glyps/expiring.svg +0 -8
  336. package/app/assets/glyps/exterior.svg +0 -22
  337. package/app/assets/glyps/extras.svg +0 -11
  338. package/app/assets/glyps/facebook.svg +0 -7
  339. package/app/assets/glyps/family.svg +0 -10
  340. package/app/assets/glyps/farm.svg +0 -13
  341. package/app/assets/glyps/farm_grain_seed.svg +0 -13
  342. package/app/assets/glyps/fast_and_frequent.svg +0 -10
  343. package/app/assets/glyps/favorite.svg +0 -7
  344. package/app/assets/glyps/features.svg +0 -9
  345. package/app/assets/glyps/feedback.svg +0 -9
  346. package/app/assets/glyps/field_guide.svg +0 -13
  347. package/app/assets/glyps/field_training.svg +0 -8
  348. package/app/assets/glyps/file_blank.svg +0 -11
  349. package/app/assets/glyps/file_html.svg +0 -10
  350. package/app/assets/glyps/file_image.svg +0 -10
  351. package/app/assets/glyps/file_pdf.svg +0 -8
  352. package/app/assets/glyps/file_printable.svg +0 -15
  353. package/app/assets/glyps/file_spreadsheet.svg +0 -7
  354. package/app/assets/glyps/file_text.svg +0 -16
  355. package/app/assets/glyps/filter.svg +0 -7
  356. package/app/assets/glyps/finance.svg +0 -11
  357. package/app/assets/glyps/finding.svg +0 -7
  358. package/app/assets/glyps/fogging.svg +0 -10
  359. package/app/assets/glyps/folder.svg +0 -8
  360. package/app/assets/glyps/followup.svg +0 -7
  361. package/app/assets/glyps/food_bev_pharma.svg +0 -12
  362. package/app/assets/glyps/formula.svg +0 -12
  363. package/app/assets/glyps/fuel.svg +0 -7
  364. package/app/assets/glyps/fumigation.svg +0 -9
  365. package/app/assets/glyps/function.svg +0 -7
  366. package/app/assets/glyps/function_aggregate.svg +0 -8
  367. package/app/assets/glyps/function_time.svg +0 -8
  368. package/app/assets/glyps/gain_loss.svg +0 -15
  369. package/app/assets/glyps/generate_invoices.svg +0 -8
  370. package/app/assets/glyps/generate_orders.svg +0 -8
  371. package/app/assets/glyps/geo.svg +0 -7
  372. package/app/assets/glyps/geo_heat_map.svg +0 -7
  373. package/app/assets/glyps/geoboard.svg +0 -11
  374. package/app/assets/glyps/glyp-preview.html +0 -3143
  375. package/app/assets/glyps/glyp-svgo-config.cjs +0 -12
  376. package/app/assets/glyps/glyp_static_whitelist.txt +0 -5
  377. package/app/assets/glyps/google.svg +0 -7
  378. package/app/assets/glyps/google_calendar.svg +0 -11
  379. package/app/assets/glyps/government.svg +0 -12
  380. package/app/assets/glyps/grain_seed.svg +0 -20
  381. package/app/assets/glyps/grid.svg +0 -7
  382. package/app/assets/glyps/grouped.svg +0 -16
  383. package/app/assets/glyps/grouping_combine.svg +0 -7
  384. package/app/assets/glyps/grouping_separate.svg +0 -8
  385. package/app/assets/glyps/guide.svg +0 -13
  386. package/app/assets/glyps/has_many.svg +0 -7
  387. package/app/assets/glyps/health_care.svg +0 -26
  388. package/app/assets/glyps/heat_map.svg +0 -11
  389. package/app/assets/glyps/heat_treatment.svg +0 -9
  390. package/app/assets/glyps/help.svg +0 -9
  391. package/app/assets/glyps/hidden.svg +0 -8
  392. package/app/assets/glyps/hint.svg +0 -17
  393. package/app/assets/glyps/home.svg +0 -7
  394. package/app/assets/glyps/honeybee_removal.svg +0 -10
  395. package/app/assets/glyps/housing.svg +0 -13
  396. package/app/assets/glyps/icon.svg +0 -9
  397. package/app/assets/glyps/identifier.svg +0 -11
  398. package/app/assets/glyps/image.svg +0 -8
  399. package/app/assets/glyps/images.svg +0 -6
  400. package/app/assets/glyps/import.svg +0 -6
  401. package/app/assets/glyps/import_certs.svg +0 -8
  402. package/app/assets/glyps/import_data.svg +0 -8
  403. package/app/assets/glyps/import_users.svg +0 -8
  404. package/app/assets/glyps/in_progress.svg +0 -11
  405. package/app/assets/glyps/inbox.svg +0 -8
  406. package/app/assets/glyps/incomplete_certificate.svg +0 -9
  407. package/app/assets/glyps/industrial.svg +0 -8
  408. package/app/assets/glyps/info.svg +0 -7
  409. package/app/assets/glyps/information_technology.svg +0 -8
  410. package/app/assets/glyps/inspect_map.svg +0 -7
  411. package/app/assets/glyps/inspections.svg +0 -8
  412. package/app/assets/glyps/insulation.svg +0 -7
  413. package/app/assets/glyps/integrations.svg +0 -10
  414. package/app/assets/glyps/interior.svg +0 -11
  415. package/app/assets/glyps/invoice.svg +0 -8
  416. package/app/assets/glyps/invoice_charge.svg +0 -9
  417. package/app/assets/glyps/invoice_credit.svg +0 -9
  418. package/app/assets/glyps/invoice_paid.svg +0 -9
  419. package/app/assets/glyps/invoice_review.svg +0 -8
  420. package/app/assets/glyps/ipad.svg +0 -8
  421. package/app/assets/glyps/iphone.svg +0 -8
  422. package/app/assets/glyps/irrigation_install.svg +0 -14
  423. package/app/assets/glyps/irrigation_maintenance.svg +0 -14
  424. package/app/assets/glyps/items.svg +0 -12
  425. package/app/assets/glyps/job.svg +0 -7
  426. package/app/assets/glyps/job_plan.svg +0 -14
  427. package/app/assets/glyps/job_plan_history.svg +0 -9
  428. package/app/assets/glyps/job_plan_run.svg +0 -9
  429. package/app/assets/glyps/job_plan_scheduled.svg +0 -12
  430. package/app/assets/glyps/job_plan_single_click.svg +0 -9
  431. package/app/assets/glyps/job_plan_step_by_step.svg +0 -11
  432. package/app/assets/glyps/join.svg +0 -7
  433. package/app/assets/glyps/join_inner.svg +0 -7
  434. package/app/assets/glyps/join_left.svg +0 -7
  435. package/app/assets/glyps/jump.svg +0 -3
  436. package/app/assets/glyps/justice.svg +0 -7
  437. package/app/assets/glyps/k9_inspection.svg +0 -7
  438. package/app/assets/glyps/key.svg +0 -7
  439. package/app/assets/glyps/label_bottom.svg +0 -8
  440. package/app/assets/glyps/label_left.svg +0 -8
  441. package/app/assets/glyps/label_right.svg +0 -8
  442. package/app/assets/glyps/label_top.svg +0 -8
  443. package/app/assets/glyps/labor.svg +0 -7
  444. package/app/assets/glyps/landscape.svg +0 -14
  445. package/app/assets/glyps/landscape_maintenance.svg +0 -13
  446. package/app/assets/glyps/laptop.svg +0 -8
  447. package/app/assets/glyps/lead.svg +0 -8
  448. package/app/assets/glyps/lead_listing.svg +0 -9
  449. package/app/assets/glyps/lead_source.svg +0 -13
  450. package/app/assets/glyps/leads_report.svg +0 -8
  451. package/app/assets/glyps/learning_hub.svg +0 -13
  452. package/app/assets/glyps/ledger.svg +0 -12
  453. package/app/assets/glyps/legal.svg +0 -8
  454. package/app/assets/glyps/license.svg +0 -11
  455. package/app/assets/glyps/lifetime.svg +0 -9
  456. package/app/assets/glyps/limit.svg +0 -8
  457. package/app/assets/glyps/line_cap_arrow.svg +0 -7
  458. package/app/assets/glyps/line_cap_bar.svg +0 -7
  459. package/app/assets/glyps/line_cap_circle.svg +0 -7
  460. package/app/assets/glyps/line_cap_none.svg +0 -7
  461. package/app/assets/glyps/line_caps.svg +0 -7
  462. package/app/assets/glyps/line_style.svg +0 -19
  463. package/app/assets/glyps/link.svg +0 -10
  464. package/app/assets/glyps/list.svg +0 -22
  465. package/app/assets/glyps/location.svg +0 -8
  466. package/app/assets/glyps/location_charge.svg +0 -8
  467. package/app/assets/glyps/location_credit.svg +0 -8
  468. package/app/assets/glyps/location_document.svg +0 -8
  469. package/app/assets/glyps/location_documents.svg +0 -9
  470. package/app/assets/glyps/location_import.svg +0 -8
  471. package/app/assets/glyps/location_integration.svg +0 -9
  472. package/app/assets/glyps/location_kind.svg +0 -7
  473. package/app/assets/glyps/location_message.svg +0 -11
  474. package/app/assets/glyps/location_origin.svg +0 -8
  475. package/app/assets/glyps/location_seed.svg +0 -8
  476. package/app/assets/glyps/location_sentiment.svg +0 -14
  477. package/app/assets/glyps/location_tags.svg +0 -11
  478. package/app/assets/glyps/locations.svg +0 -13
  479. package/app/assets/glyps/locked.svg +0 -8
  480. package/app/assets/glyps/lodging.svg +0 -30
  481. package/app/assets/glyps/log_in.svg +0 -8
  482. package/app/assets/glyps/log_out.svg +0 -8
  483. package/app/assets/glyps/log_report.svg +0 -17
  484. package/app/assets/glyps/logbook.svg +0 -9
  485. package/app/assets/glyps/logbook_documents.svg +0 -14
  486. package/app/assets/glyps/lot_number.svg +0 -10
  487. package/app/assets/glyps/lycensed_simulator.svg +0 -10
  488. package/app/assets/glyps/manager.svg +0 -7
  489. package/app/assets/glyps/manual.svg +0 -3
  490. package/app/assets/glyps/map.svg +0 -7
  491. package/app/assets/glyps/markdown.svg +0 -9
  492. package/app/assets/glyps/market.svg +0 -7
  493. package/app/assets/glyps/materials.svg +0 -7
  494. package/app/assets/glyps/mattress_encasement.svg +0 -7
  495. package/app/assets/glyps/merge.svg +0 -7
  496. package/app/assets/glyps/message_billing.svg +0 -13
  497. package/app/assets/glyps/message_collections.svg +0 -13
  498. package/app/assets/glyps/message_complaint.svg +0 -7
  499. package/app/assets/glyps/message_misc.svg +0 -10
  500. package/app/assets/glyps/message_technician.svg +0 -7
  501. package/app/assets/glyps/messages.svg +0 -8
  502. package/app/assets/glyps/minus_outline.svg +0 -8
  503. package/app/assets/glyps/misc.svg +0 -14
  504. package/app/assets/glyps/miscellaneous.svg +0 -14
  505. package/app/assets/glyps/missing.svg +0 -9
  506. package/app/assets/glyps/moisture.svg +0 -7
  507. package/app/assets/glyps/moodle.svg +0 -11
  508. package/app/assets/glyps/move_order.svg +0 -8
  509. package/app/assets/glyps/mowing.svg +0 -13
  510. package/app/assets/glyps/multi_housing.svg +0 -20
  511. package/app/assets/glyps/multi_tech_order.svg +0 -9
  512. package/app/assets/glyps/mute.svg +0 -8
  513. package/app/assets/glyps/navicon.svg +0 -9
  514. package/app/assets/glyps/neighborhood.svg +0 -14
  515. package/app/assets/glyps/new_location.svg +0 -12
  516. package/app/assets/glyps/new_ticket.svg +0 -8
  517. package/app/assets/glyps/no_charge.svg +0 -8
  518. package/app/assets/glyps/no_service.svg +0 -10
  519. package/app/assets/glyps/note.svg +0 -8
  520. package/app/assets/glyps/note_access.svg +0 -23
  521. package/app/assets/glyps/note_billing.svg +0 -13
  522. package/app/assets/glyps/note_collection.svg +0 -13
  523. package/app/assets/glyps/note_complaint.svg +0 -7
  524. package/app/assets/glyps/note_directions.svg +0 -8
  525. package/app/assets/glyps/note_focused.svg +0 -8
  526. package/app/assets/glyps/note_office.svg +0 -7
  527. package/app/assets/glyps/note_preservice.svg +0 -7
  528. package/app/assets/glyps/note_sales.svg +0 -12
  529. package/app/assets/glyps/note_service.svg +0 -14
  530. package/app/assets/glyps/notification.svg +0 -7
  531. package/app/assets/glyps/nuke.svg +0 -7
  532. package/app/assets/glyps/number.svg +0 -7
  533. package/app/assets/glyps/occupant.svg +0 -6
  534. package/app/assets/glyps/office.svg +0 -19
  535. package/app/assets/glyps/office_government.svg +0 -8
  536. package/app/assets/glyps/office_training.svg +0 -8
  537. package/app/assets/glyps/offline_mode.svg +0 -8
  538. package/app/assets/glyps/on_demand.svg +0 -8
  539. package/app/assets/glyps/on_demand_order.svg +0 -8
  540. package/app/assets/glyps/online_mode.svg +0 -8
  541. package/app/assets/glyps/open.svg +0 -10
  542. package/app/assets/glyps/open_invoice.svg +0 -8
  543. package/app/assets/glyps/openai.svg +0 -9
  544. package/app/assets/glyps/operations.svg +0 -8
  545. package/app/assets/glyps/options.svg +0 -9
  546. package/app/assets/glyps/order_actions.svg +0 -8
  547. package/app/assets/glyps/order_approved.svg +0 -9
  548. package/app/assets/glyps/order_batch.svg +0 -9
  549. package/app/assets/glyps/order_editor.svg +0 -12
  550. package/app/assets/glyps/order_pending.svg +0 -11
  551. package/app/assets/glyps/order_series.svg +0 -11
  552. package/app/assets/glyps/order_unapproved.svg +0 -9
  553. package/app/assets/glyps/org.svg +0 -7
  554. package/app/assets/glyps/org_feature.svg +0 -8
  555. package/app/assets/glyps/org_settings.svg +0 -9
  556. package/app/assets/glyps/org_structure.svg +0 -7
  557. package/app/assets/glyps/org_unit.svg +0 -7
  558. package/app/assets/glyps/org_unit_settings.svg +0 -8
  559. package/app/assets/glyps/orgs.svg +0 -8
  560. package/app/assets/glyps/origin.svg +0 -7
  561. package/app/assets/glyps/origin_client.svg +0 -7
  562. package/app/assets/glyps/origin_tech.svg +0 -7
  563. package/app/assets/glyps/outbox.svg +0 -8
  564. package/app/assets/glyps/outlier.svg +0 -3
  565. package/app/assets/glyps/outlook.svg +0 -9
  566. package/app/assets/glyps/overlap.svg +0 -8
  567. package/app/assets/glyps/password.svg +0 -10
  568. package/app/assets/glyps/past_due.svg +0 -9
  569. package/app/assets/glyps/pause.svg +0 -9
  570. package/app/assets/glyps/paused.svg +0 -9
  571. package/app/assets/glyps/pay_brackets.svg +0 -9
  572. package/app/assets/glyps/payment.svg +0 -11
  573. package/app/assets/glyps/payment_ach.svg +0 -7
  574. package/app/assets/glyps/payment_application_apply.svg +0 -10
  575. package/app/assets/glyps/payment_application_correction.svg +0 -8
  576. package/app/assets/glyps/payment_application_initial.svg +0 -7
  577. package/app/assets/glyps/payment_application_refund.svg +0 -7
  578. package/app/assets/glyps/payment_application_transfer.svg +0 -7
  579. package/app/assets/glyps/payment_application_unapply.svg +0 -10
  580. package/app/assets/glyps/payment_application_unapply_all.svg +0 -13
  581. package/app/assets/glyps/payment_applications.svg +0 -7
  582. package/app/assets/glyps/payment_batch.svg +0 -9
  583. package/app/assets/glyps/payment_cash.svg +0 -12
  584. package/app/assets/glyps/payment_check.svg +0 -13
  585. package/app/assets/glyps/payment_coupon.svg +0 -25
  586. package/app/assets/glyps/payment_credit.svg +0 -9
  587. package/app/assets/glyps/payment_declined.svg +0 -9
  588. package/app/assets/glyps/payment_discount.svg +0 -25
  589. package/app/assets/glyps/payment_eft.svg +0 -12
  590. package/app/assets/glyps/payment_finance_charge.svg +0 -8
  591. package/app/assets/glyps/payment_method.svg +0 -8
  592. package/app/assets/glyps/payments.svg +0 -11
  593. package/app/assets/glyps/payroll.svg +0 -9
  594. package/app/assets/glyps/pdf.svg +0 -8
  595. package/app/assets/glyps/pending.svg +0 -12
  596. package/app/assets/glyps/periodic.svg +0 -10
  597. package/app/assets/glyps/periodic_assessment.svg +0 -15
  598. package/app/assets/glyps/permission.svg +0 -9
  599. package/app/assets/glyps/pest.svg +0 -7
  600. package/app/assets/glyps/pest_ants.svg +0 -7
  601. package/app/assets/glyps/pest_bats.svg +0 -7
  602. package/app/assets/glyps/pest_bed_bugs.svg +0 -7
  603. package/app/assets/glyps/pest_birds.svg +0 -7
  604. package/app/assets/glyps/pest_crawling_insects.svg +0 -7
  605. package/app/assets/glyps/pest_dermestids.svg +0 -7
  606. package/app/assets/glyps/pest_fall_invaders.svg +0 -7
  607. package/app/assets/glyps/pest_flying_insects.svg +0 -7
  608. package/app/assets/glyps/pest_moles.svg +0 -9
  609. package/app/assets/glyps/pest_mosquitoes.svg +0 -7
  610. package/app/assets/glyps/pest_nuisance_animals.svg +0 -9
  611. package/app/assets/glyps/pest_occasional_invaders.svg +0 -7
  612. package/app/assets/glyps/pest_ornamental.svg +0 -7
  613. package/app/assets/glyps/pest_ornamental_diseases.svg +0 -7
  614. package/app/assets/glyps/pest_roaches.svg +0 -7
  615. package/app/assets/glyps/pest_rodents.svg +0 -16
  616. package/app/assets/glyps/pest_scorpions.svg +0 -8
  617. package/app/assets/glyps/pest_snakes.svg +0 -7
  618. package/app/assets/glyps/pest_spiders.svg +0 -7
  619. package/app/assets/glyps/pest_stinging_insects.svg +0 -7
  620. package/app/assets/glyps/pest_stored_product_pests.svg +0 -7
  621. package/app/assets/glyps/pest_ticks_and_fleas.svg +0 -11
  622. package/app/assets/glyps/pest_viruses_and_bacteria.svg +0 -7
  623. package/app/assets/glyps/pest_weeds.svg +0 -7
  624. package/app/assets/glyps/pest_wood_destroyers.svg +0 -7
  625. package/app/assets/glyps/phone.svg +0 -7
  626. package/app/assets/glyps/pick_date.svg +0 -8
  627. package/app/assets/glyps/pick_list.svg +0 -8
  628. package/app/assets/glyps/platform_android.svg +0 -12
  629. package/app/assets/glyps/platform_ios.svg +0 -8
  630. package/app/assets/glyps/platform_macos.svg +0 -7
  631. package/app/assets/glyps/platform_windows.svg +0 -10
  632. package/app/assets/glyps/play.svg +0 -10
  633. package/app/assets/glyps/plus.svg +0 -8
  634. package/app/assets/glyps/plus_filled.svg +0 -7
  635. package/app/assets/glyps/plus_outline.svg +0 -8
  636. package/app/assets/glyps/portal.svg +0 -8
  637. package/app/assets/glyps/price_increase.svg +0 -9
  638. package/app/assets/glyps/price_increase_alt.svg +0 -9
  639. package/app/assets/glyps/pricing.svg +0 -9
  640. package/app/assets/glyps/pricing_table.svg +0 -8
  641. package/app/assets/glyps/print.svg +0 -11
  642. package/app/assets/glyps/privacy.svg +0 -7
  643. package/app/assets/glyps/processor_forward.svg +0 -10
  644. package/app/assets/glyps/processor_heartland.svg +0 -19
  645. package/app/assets/glyps/processor_plaid.svg +0 -7
  646. package/app/assets/glyps/processor_square.svg +0 -10
  647. package/app/assets/glyps/processor_stripe.svg +0 -17
  648. package/app/assets/glyps/processor_worldpay.svg +0 -11
  649. package/app/assets/glyps/product_sale.svg +0 -10
  650. package/app/assets/glyps/production.svg +0 -8
  651. package/app/assets/glyps/professional_consultation.svg +0 -7
  652. package/app/assets/glyps/profile.svg +0 -3
  653. package/app/assets/glyps/program.svg +0 -7
  654. package/app/assets/glyps/program_bundle.svg +0 -9
  655. package/app/assets/glyps/program_elements.svg +0 -8
  656. package/app/assets/glyps/program_initiation.svg +0 -8
  657. package/app/assets/glyps/program_order.svg +0 -8
  658. package/app/assets/glyps/program_review.svg +0 -8
  659. package/app/assets/glyps/promo.svg +0 -11
  660. package/app/assets/glyps/proposal.svg +0 -11
  661. package/app/assets/glyps/proposal_bundle.svg +0 -8
  662. package/app/assets/glyps/proposal_options.svg +0 -8
  663. package/app/assets/glyps/proposal_overview.svg +0 -8
  664. package/app/assets/glyps/proposal_start.svg +0 -11
  665. package/app/assets/glyps/protection.svg +0 -8
  666. package/app/assets/glyps/purchase_order.svg +0 -8
  667. package/app/assets/glyps/quality.svg +0 -8
  668. package/app/assets/glyps/query.svg +0 -8
  669. package/app/assets/glyps/radio_checked.svg +0 -8
  670. package/app/assets/glyps/radio_empty.svg +0 -7
  671. package/app/assets/glyps/reassign.svg +0 -8
  672. package/app/assets/glyps/receipt.svg +0 -10
  673. package/app/assets/glyps/recent.svg +0 -10
  674. package/app/assets/glyps/reciprocity.svg +0 -8
  675. package/app/assets/glyps/recommendation.svg +0 -9
  676. package/app/assets/glyps/record_details.svg +0 -8
  677. package/app/assets/glyps/recurring_revenue.svg +0 -13
  678. package/app/assets/glyps/redo.svg +0 -3
  679. package/app/assets/glyps/refresh.svg +0 -9
  680. package/app/assets/glyps/refund.svg +0 -10
  681. package/app/assets/glyps/region.svg +0 -11
  682. package/app/assets/glyps/released.svg +0 -8
  683. package/app/assets/glyps/remote_camera.svg +0 -8
  684. package/app/assets/glyps/remote_photo.svg +0 -9
  685. package/app/assets/glyps/remove.svg +0 -8
  686. package/app/assets/glyps/renew.svg +0 -7
  687. package/app/assets/glyps/renewal.svg +0 -8
  688. package/app/assets/glyps/report.svg +0 -8
  689. package/app/assets/glyps/required_input.svg +0 -7
  690. package/app/assets/glyps/reschedule.svg +0 -8
  691. package/app/assets/glyps/restaurant_bar.svg +0 -18
  692. package/app/assets/glyps/revenue.svg +0 -14
  693. package/app/assets/glyps/review.svg +0 -10
  694. package/app/assets/glyps/rfid.svg +0 -8
  695. package/app/assets/glyps/ride_along.svg +0 -9
  696. package/app/assets/glyps/ring_central.svg +0 -8
  697. package/app/assets/glyps/rodent_exclusion.svg +0 -20
  698. package/app/assets/glyps/role_admin.svg +0 -8
  699. package/app/assets/glyps/role_customer.svg +0 -8
  700. package/app/assets/glyps/role_super.svg +0 -7
  701. package/app/assets/glyps/role_tech.svg +0 -8
  702. package/app/assets/glyps/roster.svg +0 -13
  703. package/app/assets/glyps/route_change.svg +0 -11
  704. package/app/assets/glyps/route_optimization.svg +0 -7
  705. package/app/assets/glyps/routific.svg +0 -7
  706. package/app/assets/glyps/rows.svg +0 -12
  707. package/app/assets/glyps/ruby.svg +0 -7
  708. package/app/assets/glyps/ruler.svg +0 -7
  709. package/app/assets/glyps/sales.svg +0 -16
  710. package/app/assets/glyps/sales_contest.svg +0 -8
  711. package/app/assets/glyps/sales_pipeline.svg +0 -8
  712. package/app/assets/glyps/sales_tax.svg +0 -10
  713. package/app/assets/glyps/sales_tax_exemption.svg +0 -11
  714. package/app/assets/glyps/schedule_lock.svg +0 -11
  715. package/app/assets/glyps/schedule_lock_afternoon.svg +0 -7
  716. package/app/assets/glyps/schedule_lock_day.svg +0 -10
  717. package/app/assets/glyps/schedule_lock_exact.svg +0 -8
  718. package/app/assets/glyps/schedule_lock_four_hour.svg +0 -7
  719. package/app/assets/glyps/schedule_lock_morning.svg +0 -7
  720. package/app/assets/glyps/schedule_lock_none.svg +0 -7
  721. package/app/assets/glyps/schedule_lock_two_day.svg +0 -11
  722. package/app/assets/glyps/schedule_lock_two_hour.svg +0 -8
  723. package/app/assets/glyps/schedule_lock_week.svg +0 -8
  724. package/app/assets/glyps/schedule_tyoe_every.svg +0 -8
  725. package/app/assets/glyps/schedule_type_every.svg +0 -8
  726. package/app/assets/glyps/schedule_type_none.svg +0 -11
  727. package/app/assets/glyps/schedule_type_on_demand.svg +0 -8
  728. package/app/assets/glyps/schedule_type_schedule.svg +0 -8
  729. package/app/assets/glyps/scheduled.svg +0 -8
  730. package/app/assets/glyps/scheduling.svg +0 -9
  731. package/app/assets/glyps/scheduling_comment.svg +0 -8
  732. package/app/assets/glyps/school_church.svg +0 -21
  733. package/app/assets/glyps/scope.svg +0 -8
  734. package/app/assets/glyps/scoreboard.svg +0 -12
  735. package/app/assets/glyps/scrape.svg +0 -8
  736. package/app/assets/glyps/script.svg +0 -7
  737. package/app/assets/glyps/search.svg +0 -7
  738. package/app/assets/glyps/seeding.svg +0 -10
  739. package/app/assets/glyps/segment.svg +0 -8
  740. package/app/assets/glyps/sellify.svg +0 -7
  741. package/app/assets/glyps/send.svg +0 -7
  742. package/app/assets/glyps/sent.svg +0 -7
  743. package/app/assets/glyps/sentiment.svg +0 -10
  744. package/app/assets/glyps/sentricon.svg +0 -9
  745. package/app/assets/glyps/service_agreement.svg +0 -10
  746. package/app/assets/glyps/service_digest.svg +0 -8
  747. package/app/assets/glyps/service_form.svg +0 -26
  748. package/app/assets/glyps/service_form_new.svg +0 -12
  749. package/app/assets/glyps/service_form_settings.svg +0 -12
  750. package/app/assets/glyps/service_form_template.svg +0 -8
  751. package/app/assets/glyps/service_miscellaneous.svg +0 -7
  752. package/app/assets/glyps/service_reminder.svg +0 -11
  753. package/app/assets/glyps/service_report.svg +0 -13
  754. package/app/assets/glyps/service_request.svg +0 -6
  755. package/app/assets/glyps/services.svg +0 -8
  756. package/app/assets/glyps/settings.svg +0 -10
  757. package/app/assets/glyps/setup.svg +0 -8
  758. package/app/assets/glyps/signature.svg +0 -7
  759. package/app/assets/glyps/simulator.svg +0 -8
  760. package/app/assets/glyps/site_map.svg +0 -10
  761. package/app/assets/glyps/site_map_annotation.svg +0 -8
  762. package/app/assets/glyps/site_map_chemical.svg +0 -8
  763. package/app/assets/glyps/site_map_edit_details.svg +0 -11
  764. package/app/assets/glyps/site_map_edit_geo.svg +0 -10
  765. package/app/assets/glyps/site_map_equipment.svg +0 -8
  766. package/app/assets/glyps/site_map_exterior.svg +0 -7
  767. package/app/assets/glyps/site_map_foundation.svg +0 -8
  768. package/app/assets/glyps/site_map_icon.svg +0 -8
  769. package/app/assets/glyps/site_map_interior.svg +0 -7
  770. package/app/assets/glyps/site_map_label.svg +0 -7
  771. package/app/assets/glyps/site_map_perimeter.svg +0 -7
  772. package/app/assets/glyps/site_map_settings_left.svg +0 -8
  773. package/app/assets/glyps/site_map_settings_right.svg +0 -8
  774. package/app/assets/glyps/site_map_template.svg +0 -8
  775. package/app/assets/glyps/skill.svg +0 -8
  776. package/app/assets/glyps/skip.svg +0 -9
  777. package/app/assets/glyps/slope.svg +0 -7
  778. package/app/assets/glyps/smart_feature.svg +0 -9
  779. package/app/assets/glyps/smart_note.svg +0 -9
  780. package/app/assets/glyps/smart_traps.svg +0 -11
  781. package/app/assets/glyps/sms.svg +0 -8
  782. package/app/assets/glyps/snow_removal.svg +0 -8
  783. package/app/assets/glyps/sort.svg +0 -7
  784. package/app/assets/glyps/special.svg +0 -8
  785. package/app/assets/glyps/split.svg +0 -7
  786. package/app/assets/glyps/spp_scorecard.svg +0 -22
  787. package/app/assets/glyps/square_edge.svg +0 -8
  788. package/app/assets/glyps/start_sheet.svg +0 -8
  789. package/app/assets/glyps/start_time.svg +0 -7
  790. package/app/assets/glyps/state_ak.svg +0 -7
  791. package/app/assets/glyps/state_al.svg +0 -7
  792. package/app/assets/glyps/state_ar.svg +0 -7
  793. package/app/assets/glyps/state_az.svg +0 -7
  794. package/app/assets/glyps/state_ca.svg +0 -7
  795. package/app/assets/glyps/state_co.svg +0 -7
  796. package/app/assets/glyps/state_ct.svg +0 -7
  797. package/app/assets/glyps/state_dc.svg +0 -7
  798. package/app/assets/glyps/state_de.svg +0 -7
  799. package/app/assets/glyps/state_fl.svg +0 -7
  800. package/app/assets/glyps/state_ga.svg +0 -7
  801. package/app/assets/glyps/state_hi.svg +0 -7
  802. package/app/assets/glyps/state_ia.svg +0 -7
  803. package/app/assets/glyps/state_id.svg +0 -7
  804. package/app/assets/glyps/state_il.svg +0 -7
  805. package/app/assets/glyps/state_in.svg +0 -7
  806. package/app/assets/glyps/state_ks.svg +0 -7
  807. package/app/assets/glyps/state_ky.svg +0 -7
  808. package/app/assets/glyps/state_la.svg +0 -7
  809. package/app/assets/glyps/state_ma.svg +0 -7
  810. package/app/assets/glyps/state_mb.svg +0 -7
  811. package/app/assets/glyps/state_md.svg +0 -7
  812. package/app/assets/glyps/state_me.svg +0 -7
  813. package/app/assets/glyps/state_mi.svg +0 -7
  814. package/app/assets/glyps/state_mn.svg +0 -7
  815. package/app/assets/glyps/state_mo.svg +0 -7
  816. package/app/assets/glyps/state_ms.svg +0 -7
  817. package/app/assets/glyps/state_mt.svg +0 -7
  818. package/app/assets/glyps/state_nc.svg +0 -7
  819. package/app/assets/glyps/state_nd.svg +0 -7
  820. package/app/assets/glyps/state_ne.svg +0 -7
  821. package/app/assets/glyps/state_nh.svg +0 -7
  822. package/app/assets/glyps/state_nj.svg +0 -7
  823. package/app/assets/glyps/state_nm.svg +0 -7
  824. package/app/assets/glyps/state_nv.svg +0 -7
  825. package/app/assets/glyps/state_ny.svg +0 -7
  826. package/app/assets/glyps/state_oh.svg +0 -7
  827. package/app/assets/glyps/state_ok.svg +0 -7
  828. package/app/assets/glyps/state_or.svg +0 -7
  829. package/app/assets/glyps/state_pa.svg +0 -7
  830. package/app/assets/glyps/state_ri.svg +0 -7
  831. package/app/assets/glyps/state_sc.svg +0 -7
  832. package/app/assets/glyps/state_sd.svg +0 -7
  833. package/app/assets/glyps/state_tn.svg +0 -7
  834. package/app/assets/glyps/state_tx.svg +0 -7
  835. package/app/assets/glyps/state_ut.svg +0 -7
  836. package/app/assets/glyps/state_va.svg +0 -7
  837. package/app/assets/glyps/state_vt.svg +0 -7
  838. package/app/assets/glyps/state_wa.svg +0 -7
  839. package/app/assets/glyps/state_wi.svg +0 -7
  840. package/app/assets/glyps/state_wv.svg +0 -7
  841. package/app/assets/glyps/state_wy.svg +0 -7
  842. package/app/assets/glyps/statement.svg +0 -9
  843. package/app/assets/glyps/states.svg +0 -7
  844. package/app/assets/glyps/steps.svg +0 -13
  845. package/app/assets/glyps/sticky.svg +0 -7
  846. package/app/assets/glyps/stop_time.svg +0 -7
  847. package/app/assets/glyps/store_material.svg +0 -22
  848. package/app/assets/glyps/store_order.svg +0 -10
  849. package/app/assets/glyps/store_order_back_order.svg +0 -17
  850. package/app/assets/glyps/store_order_cancelled.svg +0 -14
  851. package/app/assets/glyps/store_order_complete.svg +0 -14
  852. package/app/assets/glyps/store_order_pending.svg +0 -16
  853. package/app/assets/glyps/store_order_pending_return.svg +0 -19
  854. package/app/assets/glyps/store_order_pre_order.svg +0 -15
  855. package/app/assets/glyps/store_order_returned.svg +0 -17
  856. package/app/assets/glyps/stores.svg +0 -19
  857. package/app/assets/glyps/styling.svg +0 -11
  858. package/app/assets/glyps/subscribe.svg +0 -10
  859. package/app/assets/glyps/subscription.svg +0 -11
  860. package/app/assets/glyps/supplemental.svg +0 -7
  861. package/app/assets/glyps/support.svg +0 -7
  862. package/app/assets/glyps/sync.svg +0 -9
  863. package/app/assets/glyps/sync_down.svg +0 -8
  864. package/app/assets/glyps/sync_up.svg +0 -8
  865. package/app/assets/glyps/table.svg +0 -7
  866. package/app/assets/glyps/tablet.svg +0 -7
  867. package/app/assets/glyps/tablets.svg +0 -8
  868. package/app/assets/glyps/tactacam.svg +0 -8
  869. package/app/assets/glyps/tag.svg +0 -6
  870. package/app/assets/glyps/tag_manager.svg +0 -11
  871. package/app/assets/glyps/tags.svg +0 -6
  872. package/app/assets/glyps/task_runs.svg +0 -11
  873. package/app/assets/glyps/tasklet.svg +0 -10
  874. package/app/assets/glyps/taxability.svg +0 -8
  875. package/app/assets/glyps/tech_cert.svg +0 -12
  876. package/app/assets/glyps/tech_cert_type.svg +0 -12
  877. package/app/assets/glyps/tech_pest_sightings.svg +0 -11
  878. package/app/assets/glyps/technician.svg +0 -7
  879. package/app/assets/glyps/technician_approach.svg +0 -9
  880. package/app/assets/glyps/template.svg +0 -10
  881. package/app/assets/glyps/termite_fumigation.svg +0 -8
  882. package/app/assets/glyps/terrier.svg +0 -7
  883. package/app/assets/glyps/terrier_hub.svg +0 -7
  884. package/app/assets/glyps/terrier_sync.svg +0 -8
  885. package/app/assets/glyps/territory.svg +0 -11
  886. package/app/assets/glyps/text.svg +0 -10
  887. package/app/assets/glyps/thermometer.svg +0 -12
  888. package/app/assets/glyps/third_party.svg +0 -10
  889. package/app/assets/glyps/third_party_billing.svg +0 -10
  890. package/app/assets/glyps/threshold.svg +0 -8
  891. package/app/assets/glyps/ticket.svg +0 -10
  892. package/app/assets/glyps/ticket_type.svg +0 -9
  893. package/app/assets/glyps/tickets.svg +0 -9
  894. package/app/assets/glyps/tidy.svg +0 -9
  895. package/app/assets/glyps/time.svg +0 -8
  896. package/app/assets/glyps/time_entry.svg +0 -9
  897. package/app/assets/glyps/timeline.svg +0 -7
  898. package/app/assets/glyps/timer.svg +0 -6
  899. package/app/assets/glyps/toolbox.svg +0 -9
  900. package/app/assets/glyps/tqi.svg +0 -8
  901. package/app/assets/glyps/tracker.svg +0 -7
  902. package/app/assets/glyps/tracking.svg +0 -9
  903. package/app/assets/glyps/training_course.svg +0 -28
  904. package/app/assets/glyps/treatment_split.svg +0 -11
  905. package/app/assets/glyps/trends.svg +0 -7
  906. package/app/assets/glyps/trial.svg +0 -8
  907. package/app/assets/glyps/trip_charge.svg +0 -9
  908. package/app/assets/glyps/ui_type.svg +0 -8
  909. package/app/assets/glyps/unarchive.svg +0 -8
  910. package/app/assets/glyps/unassign.svg +0 -8
  911. package/app/assets/glyps/unassign_all.svg +0 -8
  912. package/app/assets/glyps/unchecked.svg +0 -7
  913. package/app/assets/glyps/undo.svg +0 -3
  914. package/app/assets/glyps/unfavorite.svg +0 -8
  915. package/app/assets/glyps/unit_sweep.svg +0 -17
  916. package/app/assets/glyps/unit_tag.svg +0 -11
  917. package/app/assets/glyps/university.svg +0 -14
  918. package/app/assets/glyps/unlocked.svg +0 -8
  919. package/app/assets/glyps/unmute.svg +0 -7
  920. package/app/assets/glyps/unscheduled.svg +0 -8
  921. package/app/assets/glyps/update_check_positions.svg +0 -10
  922. package/app/assets/glyps/upload.svg +0 -8
  923. package/app/assets/glyps/user.svg +0 -7
  924. package/app/assets/glyps/user_credit.svg +0 -8
  925. package/app/assets/glyps/user_document.svg +0 -8
  926. package/app/assets/glyps/user_documents.svg +0 -9
  927. package/app/assets/glyps/user_geo.svg +0 -8
  928. package/app/assets/glyps/user_tags.svg +0 -11
  929. package/app/assets/glyps/user_task.svg +0 -9
  930. package/app/assets/glyps/user_task_setup.svg +0 -9
  931. package/app/assets/glyps/users.svg +0 -8
  932. package/app/assets/glyps/utility.svg +0 -8
  933. package/app/assets/glyps/vacation.svg +0 -9
  934. package/app/assets/glyps/vacuum.svg +0 -9
  935. package/app/assets/glyps/variant.svg +0 -11
  936. package/app/assets/glyps/vendor.svg +0 -8
  937. package/app/assets/glyps/versions.svg +0 -9
  938. package/app/assets/glyps/video.svg +0 -8
  939. package/app/assets/glyps/visible.svg +0 -8
  940. package/app/assets/glyps/warehouse.svg +0 -15
  941. package/app/assets/glyps/wdi.svg +0 -9
  942. package/app/assets/glyps/wdi_az.svg +0 -12
  943. package/app/assets/glyps/wdi_ca.svg +0 -12
  944. package/app/assets/glyps/wdi_npma.svg +0 -12
  945. package/app/assets/glyps/wdi_nv.svg +0 -12
  946. package/app/assets/glyps/wdo.svg +0 -22
  947. package/app/assets/glyps/web_dusting.svg +0 -7
  948. package/app/assets/glyps/website.svg +0 -11
  949. package/app/assets/glyps/wildlife.svg +0 -9
  950. package/app/assets/glyps/wildlife_exclusion.svg +0 -13
  951. package/app/assets/glyps/winter_check.svg +0 -7
  952. package/app/assets/glyps/wizard.svg +0 -10
  953. package/app/assets/glyps/work.svg +0 -7
  954. package/app/assets/glyps/work_class.svg +0 -8
  955. package/app/assets/glyps/work_code.svg +0 -9
  956. package/app/assets/glyps/work_order.svg +0 -12
  957. package/app/assets/glyps/work_production.svg +0 -8
  958. package/app/assets/glyps/work_progress.svg +0 -12
  959. package/app/assets/glyps/work_yield.svg +0 -11
  960. package/app/assets/glyps/year.svg +0 -7
  961. package/app/assets/glyps/yield.svg +0 -8
  962. package/app/assets/glyps/zillow.svg +0 -8
  963. package/app/assets/glyps/zip_code.svg +0 -12
  964. package/app/assets/glyps/zone_adjacent.svg +0 -7
  965. package/app/assets/glyps/zone_check.svg +0 -8
  966. package/app/assets/glyps/zone_production.svg +0 -7
  967. package/app/assets/glyps/zone_remote.svg +0 -7
  968. package/app/assets/glyps/zoom.svg +0 -8
  969. package/app/assets/glyps/zoom_fit.svg +0 -7
  970. package/app/assets/hub_icons/read_mail.svg +0 -1
  971. package/app/assets/images/terrier/engine/.keep +0 -0
  972. package/app/assets/javascripts/terrier/.keep +0 -0
  973. package/app/assets/javascripts/terrier/_glyps.coffee +0 -5
  974. package/app/assets/javascripts/terrier/forms.coffee +0 -91
  975. package/app/assets/javascripts/terrier/glyp-svg.js +0 -112
  976. package/app/assets/javascripts/terrier/polyfills.coffee +0 -60
  977. package/app/assets/javascripts/terrier/scripts.coffee +0 -1636
  978. package/app/assets/javascripts/terrier/strings.coffee +0 -381
  979. package/app/assets/javascripts/terrier/tables.coffee +0 -116
  980. package/app/assets/javascripts/terrier/tiny-logger.coffee +0 -37
  981. package/app/assets/javascripts/terrier/tiny-modal.coffee +0 -608
  982. package/app/assets/javascripts/terrier/tiny-render.coffee +0 -39
  983. package/app/assets/javascripts/terrier/tiny-sql.coffee +0 -91
  984. package/app/assets/javascripts/terrier/tiny-template.coffee +0 -120
  985. package/app/assets/javascripts/terrier/urls.coffee +0 -51
  986. package/app/assets/javascripts/terrier/versions.coffee +0 -43
  987. package/app/assets/stylesheets/data-dive/dd-app.scss +0 -14
  988. package/app/assets/stylesheets/data-dive/dd-hints.scss +0 -91
  989. package/app/assets/stylesheets/data-dive/dd-table.scss +0 -35
  990. package/app/assets/stylesheets/data-dive/dive-editor.scss +0 -126
  991. package/app/assets/stylesheets/data-dive/dive-list.scss +0 -9
  992. package/app/assets/stylesheets/data-dive/dive-plots.scss +0 -124
  993. package/app/assets/stylesheets/data-dive/dive-runs.scss +0 -81
  994. package/app/assets/stylesheets/data-dive/query-editor.scss +0 -536
  995. package/app/assets/stylesheets/data-dive.css +0 -3
  996. package/app/assets/stylesheets/terrier/glyp-picker.scss +0 -28
  997. package/app/assets/stylesheets/terrier/glyps-meta.scss +0 -956
  998. package/app/assets/stylesheets/terrier/glyps.scss +0 -2855
  999. package/app/assets/stylesheets/terrier/grid.scss +0 -99
  1000. package/app/assets/stylesheets/terrier/logging.scss +0 -39
  1001. package/app/assets/stylesheets/terrier/scripts.scss +0 -778
  1002. package/app/assets/stylesheets/terrier/tiny-modal.scss +0 -227
  1003. package/app/assets/stylesheets/terrier/tt-card.scss +0 -9
  1004. package/app/assets/stylesheets/terrier/tt-collapsible.scss +0 -21
  1005. package/app/assets/stylesheets/terrier/tt-dropdowns.scss +0 -127
  1006. package/app/assets/stylesheets/terrier/tt-dropzone.scss +0 -17
  1007. package/app/assets/stylesheets/terrier/tt-flex.scss +0 -93
  1008. package/app/assets/stylesheets/terrier/tt-forms.scss +0 -202
  1009. package/app/assets/stylesheets/terrier/tt-general.scss +0 -8
  1010. package/app/assets/stylesheets/terrier/tt-grid.scss +0 -57
  1011. package/app/assets/stylesheets/terrier/tt-hints.scss +0 -142
  1012. package/app/assets/stylesheets/terrier/tt-lightbox.scss +0 -33
  1013. package/app/assets/stylesheets/terrier/tt-list-viewer.scss +0 -129
  1014. package/app/assets/stylesheets/terrier/tt-list.scss +0 -34
  1015. package/app/assets/stylesheets/terrier/tt-mixins.scss +0 -556
  1016. package/app/assets/stylesheets/terrier/tt-modal.scss +0 -173
  1017. package/app/assets/stylesheets/terrier/tt-overlays.scss +0 -39
  1018. package/app/assets/stylesheets/terrier/tt-page.scss +0 -91
  1019. package/app/assets/stylesheets/terrier/tt-panel.scss +0 -138
  1020. package/app/assets/stylesheets/terrier/tt-pickers.scss +0 -28
  1021. package/app/assets/stylesheets/terrier/tt-progress.scss +0 -75
  1022. package/app/assets/stylesheets/terrier/tt-root.scss +0 -68
  1023. package/app/assets/stylesheets/terrier/tt-select-field.scss +0 -72
  1024. package/app/assets/stylesheets/terrier/tt-sheets.scss +0 -30
  1025. package/app/assets/stylesheets/terrier/tt-tabs.scss +0 -117
  1026. package/app/assets/stylesheets/terrier/tt-toasts.scss +0 -40
  1027. package/app/assets/stylesheets/terrier/tt-toolstrip.scss +0 -19
  1028. package/app/assets/stylesheets/terrier/tt-tooltips.scss +0 -34
  1029. package/app/assets/stylesheets/terrier/tt-typography.scss +0 -103
  1030. package/app/assets/stylesheets/terrier.css +0 -3
  1031. package/app/controllers/.keep +0 -0
  1032. package/app/controllers/concerns/data_dive/endpoints.rb +0 -84
  1033. package/app/controllers/concerns/terrier/rendering_base.rb +0 -184
  1034. package/app/controllers/concerns/terrier/script_crud.rb +0 -228
  1035. package/app/controllers/concerns/terrier/scripts_streaming.rb +0 -106
  1036. package/app/controllers/concerns/terrier/sql_base.rb +0 -20
  1037. package/app/controllers/concerns/terrier/ssh_auth.rb +0 -30
  1038. package/app/controllers/concerns/terrier/system_actions.rb +0 -23
  1039. package/app/controllers/concerns/terrier/terrier_auth.rb +0 -36
  1040. package/app/controllers/data_dive_controller.rb +0 -10
  1041. package/app/controllers/db_controller.rb +0 -149
  1042. package/app/controllers/system_controller.rb +0 -5
  1043. package/app/controllers/top_controller.rb +0 -14
  1044. package/app/frontend/terrier/glyps.ts +0 -22
  1045. package/app/frontend/terrier/images/icons/active.svg +0 -1
  1046. package/app/frontend/terrier/images/icons/admin.svg +0 -1
  1047. package/app/frontend/terrier/images/icons/archive.svg +0 -1
  1048. package/app/frontend/terrier/images/icons/arrow_down.svg +0 -1
  1049. package/app/frontend/terrier/images/icons/arrow_left.svg +0 -1
  1050. package/app/frontend/terrier/images/icons/arrow_right.svg +0 -1
  1051. package/app/frontend/terrier/images/icons/arrow_up.svg +0 -1
  1052. package/app/frontend/terrier/images/icons/assign.svg +0 -1
  1053. package/app/frontend/terrier/images/icons/attachment.svg +0 -1
  1054. package/app/frontend/terrier/images/icons/back.svg +0 -1
  1055. package/app/frontend/terrier/images/icons/badge.svg +0 -1
  1056. package/app/frontend/terrier/images/icons/board.svg +0 -1
  1057. package/app/frontend/terrier/images/icons/bookmark.svg +0 -1
  1058. package/app/frontend/terrier/images/icons/bookmark_add.svg +0 -1
  1059. package/app/frontend/terrier/images/icons/bookmark_remove.svg +0 -1
  1060. package/app/frontend/terrier/images/icons/bookmarked.svg +0 -1
  1061. package/app/frontend/terrier/images/icons/bookmarks.svg +0 -1
  1062. package/app/frontend/terrier/images/icons/branch.svg +0 -1
  1063. package/app/frontend/terrier/images/icons/bug.svg +0 -1
  1064. package/app/frontend/terrier/images/icons/calculator.svg +0 -1
  1065. package/app/frontend/terrier/images/icons/checkmark.svg +0 -1
  1066. package/app/frontend/terrier/images/icons/close.svg +0 -1
  1067. package/app/frontend/terrier/images/icons/clypboard.svg +0 -1
  1068. package/app/frontend/terrier/images/icons/comment.svg +0 -1
  1069. package/app/frontend/terrier/images/icons/complete.svg +0 -1
  1070. package/app/frontend/terrier/images/icons/dashboard.svg +0 -1
  1071. package/app/frontend/terrier/images/icons/data_pull.svg +0 -1
  1072. package/app/frontend/terrier/images/icons/data_update.svg +0 -1
  1073. package/app/frontend/terrier/images/icons/database.svg +0 -1
  1074. package/app/frontend/terrier/images/icons/day.svg +0 -1
  1075. package/app/frontend/terrier/images/icons/delete.svg +0 -1
  1076. package/app/frontend/terrier/images/icons/documentation.svg +0 -1
  1077. package/app/frontend/terrier/images/icons/edit.svg +0 -1
  1078. package/app/frontend/terrier/images/icons/existing_child.svg +0 -1
  1079. package/app/frontend/terrier/images/icons/existing_parent.svg +0 -1
  1080. package/app/frontend/terrier/images/icons/feature.svg +0 -1
  1081. package/app/frontend/terrier/images/icons/flex.svg +0 -1
  1082. package/app/frontend/terrier/images/icons/forward.svg +0 -1
  1083. package/app/frontend/terrier/images/icons/github.svg +0 -1
  1084. package/app/frontend/terrier/images/icons/history.svg +0 -1
  1085. package/app/frontend/terrier/images/icons/home.svg +0 -1
  1086. package/app/frontend/terrier/images/icons/hundred.svg +0 -1
  1087. package/app/frontend/terrier/images/icons/image.svg +0 -1
  1088. package/app/frontend/terrier/images/icons/inbox.svg +0 -1
  1089. package/app/frontend/terrier/images/icons/info.svg +0 -1
  1090. package/app/frontend/terrier/images/icons/internal.svg +0 -1
  1091. package/app/frontend/terrier/images/icons/issue.svg +0 -1
  1092. package/app/frontend/terrier/images/icons/lane.svg +0 -1
  1093. package/app/frontend/terrier/images/icons/lane_asap.svg +0 -1
  1094. package/app/frontend/terrier/images/icons/lane_days.svg +0 -1
  1095. package/app/frontend/terrier/images/icons/lane_hours.svg +0 -1
  1096. package/app/frontend/terrier/images/icons/lane_weeks.svg +0 -1
  1097. package/app/frontend/terrier/images/icons/lanes_board.svg +0 -1
  1098. package/app/frontend/terrier/images/icons/level_complete.svg +0 -1
  1099. package/app/frontend/terrier/images/icons/level_highway.svg +0 -1
  1100. package/app/frontend/terrier/images/icons/level_on_ramp.svg +0 -1
  1101. package/app/frontend/terrier/images/icons/level_parking.svg +0 -1
  1102. package/app/frontend/terrier/images/icons/link.svg +0 -1
  1103. package/app/frontend/terrier/images/icons/list_view.svg +0 -1
  1104. package/app/frontend/terrier/images/icons/lol.svg +0 -1
  1105. package/app/frontend/terrier/images/icons/metrics.svg +0 -1
  1106. package/app/frontend/terrier/images/icons/minus.svg +0 -1
  1107. package/app/frontend/terrier/images/icons/new_child.svg +0 -1
  1108. package/app/frontend/terrier/images/icons/new_parent.svg +0 -1
  1109. package/app/frontend/terrier/images/icons/night.svg +0 -1
  1110. package/app/frontend/terrier/images/icons/origin.svg +0 -1
  1111. package/app/frontend/terrier/images/icons/pending.svg +0 -1
  1112. package/app/frontend/terrier/images/icons/plot.svg +0 -1
  1113. package/app/frontend/terrier/images/icons/plus.svg +0 -1
  1114. package/app/frontend/terrier/images/icons/post.svg +0 -1
  1115. package/app/frontend/terrier/images/icons/posts.svg +0 -1
  1116. package/app/frontend/terrier/images/icons/pr_closed.svg +0 -1
  1117. package/app/frontend/terrier/images/icons/pr_merged.svg +0 -1
  1118. package/app/frontend/terrier/images/icons/pr_open.svg +0 -1
  1119. package/app/frontend/terrier/images/icons/prioritized.svg +0 -1
  1120. package/app/frontend/terrier/images/icons/private.svg +0 -1
  1121. package/app/frontend/terrier/images/icons/project.svg +0 -1
  1122. package/app/frontend/terrier/images/icons/public.svg +0 -1
  1123. package/app/frontend/terrier/images/icons/question.svg +0 -1
  1124. package/app/frontend/terrier/images/icons/reaction.svg +0 -1
  1125. package/app/frontend/terrier/images/icons/recent.svg +0 -1
  1126. package/app/frontend/terrier/images/icons/refresh.svg +0 -1
  1127. package/app/frontend/terrier/images/icons/related_posts.svg +0 -1
  1128. package/app/frontend/terrier/images/icons/releases.svg +0 -1
  1129. package/app/frontend/terrier/images/icons/request.svg +0 -1
  1130. package/app/frontend/terrier/images/icons/settings.svg +0 -1
  1131. package/app/frontend/terrier/images/icons/split_view.svg +0 -1
  1132. package/app/frontend/terrier/images/icons/status.svg +0 -1
  1133. package/app/frontend/terrier/images/icons/step_demo.svg +0 -1
  1134. package/app/frontend/terrier/images/icons/step_deploy.svg +0 -1
  1135. package/app/frontend/terrier/images/icons/step_develop.svg +0 -1
  1136. package/app/frontend/terrier/images/icons/step_investigate.svg +0 -1
  1137. package/app/frontend/terrier/images/icons/step_none.svg +0 -1
  1138. package/app/frontend/terrier/images/icons/step_required.svg +0 -1
  1139. package/app/frontend/terrier/images/icons/step_review.svg +0 -1
  1140. package/app/frontend/terrier/images/icons/step_test.svg +0 -1
  1141. package/app/frontend/terrier/images/icons/steps.svg +0 -1
  1142. package/app/frontend/terrier/images/icons/steps_board.svg +0 -1
  1143. package/app/frontend/terrier/images/icons/subscribe.svg +0 -1
  1144. package/app/frontend/terrier/images/icons/support.svg +0 -1
  1145. package/app/frontend/terrier/images/icons/team.svg +0 -1
  1146. package/app/frontend/terrier/images/icons/terrier.svg +0 -1
  1147. package/app/frontend/terrier/images/icons/thumbs_up.svg +0 -1
  1148. package/app/frontend/terrier/images/icons/type.svg +0 -1
  1149. package/app/frontend/terrier/images/icons/unprioritized.svg +0 -1
  1150. package/app/frontend/terrier/images/icons/upload.svg +0 -1
  1151. package/app/frontend/terrier/images/icons/upvote.svg +0 -1
  1152. package/app/frontend/terrier/images/icons/user.svg +0 -1
  1153. package/app/frontend/terrier/images/icons/users.svg +0 -1
  1154. package/app/frontend/terrier/images/icons/website.svg +0 -1
  1155. package/app/frontend/terrier/images/icons/week.svg +0 -1
  1156. package/app/frontend/terrier/images/optimized/terrier-hub-logo-dark.svg +0 -1
  1157. package/app/frontend/terrier/images/optimized/terrier-hub-logo-light.svg +0 -1
  1158. package/app/frontend/terrier/images/raw/terrier-hub-favicon-alert.png +0 -0
  1159. package/app/frontend/terrier/images/raw/terrier-hub-favicon-dark.png +0 -0
  1160. package/app/frontend/terrier/images/raw/terrier-hub-favicon.png +0 -0
  1161. package/app/helpers/.keep +0 -0
  1162. package/app/helpers/db_stats.rb +0 -177
  1163. package/app/helpers/spreadsheet_uploader.rb +0 -8
  1164. package/app/mailers/.keep +0 -0
  1165. package/app/models/.keep +0 -0
  1166. package/app/models/concerns/terrier/embedded.rb +0 -257
  1167. package/app/models/concerns/terrier/embedder.rb +0 -114
  1168. package/app/models/concerns/terrier/event_trackable.rb +0 -44
  1169. package/app/models/concerns/terrier/full_text_search.rb +0 -30
  1170. package/app/models/concerns/terrier/model.rb +0 -548
  1171. package/app/models/concerns/terrier/schedulable.rb +0 -112
  1172. package/app/models/concerns/terrier/script_base.rb +0 -102
  1173. package/app/models/concerns/terrier/script_run_base.rb +0 -25
  1174. package/app/models/dd_dive.rb +0 -80
  1175. package/app/models/dd_dive_distribution.rb +0 -38
  1176. package/app/models/dd_dive_group.rb +0 -38
  1177. package/app/models/dd_dive_plot.rb +0 -40
  1178. package/app/models/dd_dive_run.rb +0 -57
  1179. package/app/models/schedule_rule.rb +0 -169
  1180. package/app/validators/email_list_validator.rb +0 -18
  1181. package/app/views/.keep +0 -0
  1182. package/app/views/data_dive/entrypoint.html.slim +0 -1
  1183. package/bin/bundle +0 -109
  1184. package/bin/rails +0 -14
  1185. package/config/initializers/badges.rb +0 -33
  1186. package/config/initializers/hub_icons.rb +0 -28
  1187. package/config/initializers/inflections.rb +0 -5
  1188. package/config/initializers/shrine.rb +0 -16
  1189. package/config/routes.rb +0 -37
  1190. package/config/rubocop.yml +0 -41
  1191. package/db/migrate/20230619124820_data_dives.rb +0 -35
  1192. package/db/migrate/20240515125522_dive_schedules.rb +0 -13
  1193. package/db/migrate/20240717132834_dive_plots.rb +0 -12
  1194. package/db/migrate/20250418131835_dd_dive_distributions.rb +0 -14
  1195. package/glyps.yaml +0 -2835
  1196. package/lib/sketch-glyps/README.md +0 -41
  1197. package/lib/sketch-glyps/assets/icon.png +0 -0
  1198. package/lib/sketch-glyps/package-lock.json +0 -12153
  1199. package/lib/sketch-glyps/package.json +0 -31
  1200. package/lib/sketch-glyps/sketch-glyps.sketchplugin/Contents/Resources/icon.png +0 -0
  1201. package/lib/sketch-glyps/sketch-glyps.sketchplugin/Contents/Sketch/__arrange.js +0 -257
  1202. package/lib/sketch-glyps/sketch-glyps.sketchplugin/Contents/Sketch/__arrange.js.map +0 -1
  1203. package/lib/sketch-glyps/sketch-glyps.sketchplugin/Contents/Sketch/__import.js +0 -1793
  1204. package/lib/sketch-glyps/sketch-glyps.sketchplugin/Contents/Sketch/__import.js.map +0 -1
  1205. package/lib/sketch-glyps/sketch-glyps.sketchplugin/Contents/Sketch/manifest.json +0 -31
  1206. package/lib/sketch-glyps/src/arrange.js +0 -61
  1207. package/lib/sketch-glyps/src/import.js +0 -99
  1208. package/lib/sketch-glyps/src/manifest.json +0 -23
  1209. package/lib/tasks/glyps.rake +0 -158
  1210. package/lib/tasks/npm.rake +0 -42
  1211. package/lib/tasks/terrier/data_dive.rake +0 -29
  1212. package/lib/tasks/terrier/db.rake +0 -100
  1213. package/lib/tasks/terrier/db_stats.rake +0 -15
  1214. package/lib/tasks/terrier/engine_tasks.rake +0 -4
  1215. package/lib/tasks/terrier/frontend.rake +0 -60
  1216. package/lib/tasks/terrier/scripts.rake +0 -45
  1217. package/lib/tasks/terrier/ssh.rake +0 -10
  1218. package/lib/templates/_glyps.coffee.erb +0 -5
  1219. package/lib/templates/badges.rb.erb +0 -33
  1220. package/lib/templates/badges.ts.erb +0 -52
  1221. package/lib/templates/glyps-meta.scss.erb +0 -19
  1222. package/lib/templates/glyps.rb.erb +0 -11
  1223. package/lib/templates/glyps.ts.erb +0 -22
  1224. package/lib/templates/hub-icons.ts.erb +0 -53
  1225. package/lib/templates/hub_icons.rb.erb +0 -30
  1226. package/lib/terrier/api/clypboard_connect_api.rb +0 -81
  1227. package/lib/terrier/api/extern_api_base.rb +0 -69
  1228. package/lib/terrier/api/response_streamer.rb +0 -108
  1229. package/lib/terrier/data_dive/dive_engine.rb +0 -159
  1230. package/lib/terrier/data_dive/query_engine.rb +0 -547
  1231. package/lib/terrier/data_dive.rb +0 -7
  1232. package/lib/terrier/engine.rb +0 -32
  1233. package/lib/terrier/frontend/badge_generator.rb +0 -151
  1234. package/lib/terrier/frontend/base_generator.rb +0 -132
  1235. package/lib/terrier/frontend/model_generator.rb +0 -403
  1236. package/lib/terrier/frontend/models.ts.erb +0 -82
  1237. package/lib/terrier/icons/glyps.rb +0 -948
  1238. package/lib/terrier/icons/hub_icon_generator.rb +0 -63
  1239. package/lib/terrier/icons/svgo-config.cjs +0 -12
  1240. package/lib/terrier/io/public_temp_file.rb +0 -38
  1241. package/lib/terrier/io/tabular_io.rb +0 -690
  1242. package/lib/terrier/logging/loggable.rb +0 -61
  1243. package/lib/terrier/logging/multi_logger.rb +0 -183
  1244. package/lib/terrier/logging/progress_logger.rb +0 -34
  1245. package/lib/terrier/migrations.rb +0 -83
  1246. package/lib/terrier/puma/config.rb +0 -102
  1247. package/lib/terrier/puma.rb +0 -12
  1248. package/lib/terrier/scripts/script_config.rb +0 -30
  1249. package/lib/terrier/scripts/script_executor.rb +0 -263
  1250. package/lib/terrier/scripts/script_field.rb +0 -68
  1251. package/lib/terrier/scripts/script_searcher.rb +0 -23
  1252. package/lib/terrier/strings.rb +0 -289
  1253. package/lib/terrier/system/ssh_key_manager.rb +0 -74
  1254. package/lib/terrier/system/top.rb +0 -79
  1255. package/lib/terrier/time/date_period.rb +0 -187
  1256. package/lib/terrier/time/regular_schedule.rb +0 -94
  1257. package/lib/terrier/time/time_overrides.rb +0 -29
  1258. package/lib/terrier/version.rb +0 -5
  1259. package/restart_tail +0 -1
  1260. package/terrier-engine.gemspec +0 -59
  1261. package/test/data/test_dive.rb +0 -316
  1262. package/test/dummy/.powenv +0 -2
  1263. package/test/dummy/.powrc +0 -4
  1264. package/test/dummy/.ruby-version +0 -1
  1265. package/test/dummy/Procfile.dev +0 -3
  1266. package/test/dummy/README.md +0 -7
  1267. package/test/dummy/Rakefile +0 -6
  1268. package/test/dummy/app/assets/config/manifest.js +0 -3
  1269. package/test/dummy/app/assets/images/.keep +0 -0
  1270. package/test/dummy/app/assets/javascripts/Sortable.js +0 -1249
  1271. package/test/dummy/app/assets/javascripts/application.coffee +0 -42
  1272. package/test/dummy/app/assets/javascripts/cable.js +0 -13
  1273. package/test/dummy/app/assets/javascripts/channels/.keep +0 -0
  1274. package/test/dummy/app/assets/javascripts/goldenlayout.js +0 -5234
  1275. package/test/dummy/app/assets/javascripts/logging-test.coffee +0 -20
  1276. package/test/dummy/app/assets/javascripts/modals.coffee +0 -329
  1277. package/test/dummy/app/assets/javascripts/oboe-browser.js +0 -2711
  1278. package/test/dummy/app/assets/javascripts/sql.coffee +0 -136
  1279. package/test/dummy/app/assets/javascripts/tinytemplate-demo.coffee +0 -31
  1280. package/test/dummy/app/assets/stylesheets/application.scss +0 -310
  1281. package/test/dummy/app/assets/stylesheets/goldenlayout-base.css +0 -1
  1282. package/test/dummy/app/assets/stylesheets/hljs.css +0 -98
  1283. package/test/dummy/app/assets/stylesheets/icons.scss +0 -33
  1284. package/test/dummy/app/assets/stylesheets/modals.scss +0 -65
  1285. package/test/dummy/app/assets/stylesheets/tables.scss +0 -43
  1286. package/test/dummy/app/assets/stylesheets/tt-demo.scss +0 -45
  1287. package/test/dummy/app/channels/application_cable/channel.rb +0 -4
  1288. package/test/dummy/app/channels/application_cable/connection.rb +0 -4
  1289. package/test/dummy/app/controllers/application_controller.rb +0 -43
  1290. package/test/dummy/app/controllers/client_side_controller.rb +0 -45
  1291. package/test/dummy/app/controllers/concerns/.keep +0 -0
  1292. package/test/dummy/app/controllers/errors_controller.rb +0 -90
  1293. package/test/dummy/app/controllers/frontend_controller.rb +0 -69
  1294. package/test/dummy/app/controllers/icons_controller.rb +0 -16
  1295. package/test/dummy/app/controllers/rendering_controller.rb +0 -12
  1296. package/test/dummy/app/controllers/scripts_controller.rb +0 -38
  1297. package/test/dummy/app/controllers/scripts_streaming_controller.rb +0 -21
  1298. package/test/dummy/app/controllers/sql_controller.rb +0 -9
  1299. package/test/dummy/app/controllers/tinytemplate_controller.rb +0 -7
  1300. package/test/dummy/app/frontend/demo/db.ts +0 -9
  1301. package/test/dummy/app/frontend/demo/demo-app.ts +0 -58
  1302. package/test/dummy/app/frontend/demo/demo-parts.ts +0 -582
  1303. package/test/dummy/app/frontend/demo/list-viewer-demo-page.ts +0 -141
  1304. package/test/dummy/app/frontend/demo/platform-demo-page.ts +0 -60
  1305. package/test/dummy/app/frontend/entrypoints/application.js +0 -28
  1306. package/test/dummy/app/frontend/entrypoints/data-dive.ts +0 -14
  1307. package/test/dummy/app/frontend/entrypoints/list-viewer-demo.ts +0 -4
  1308. package/test/dummy/app/frontend/entrypoints/platform-demo.ts +0 -4
  1309. package/test/dummy/app/frontend/gen/models.ts +0 -732
  1310. package/test/dummy/app/helpers/application_helper.rb +0 -10
  1311. package/test/dummy/app/helpers/dummy_service.rb +0 -15
  1312. package/test/dummy/app/jobs/application_job.rb +0 -2
  1313. package/test/dummy/app/mailers/application_mailer.rb +0 -4
  1314. package/test/dummy/app/models/application_record.rb +0 -31
  1315. package/test/dummy/app/models/concerns/.keep +0 -0
  1316. package/test/dummy/app/models/contact.rb +0 -28
  1317. package/test/dummy/app/models/contract.rb +0 -23
  1318. package/test/dummy/app/models/invoice.rb +0 -63
  1319. package/test/dummy/app/models/location.rb +0 -61
  1320. package/test/dummy/app/models/location_sale.rb +0 -25
  1321. package/test/dummy/app/models/location_tag.rb +0 -25
  1322. package/test/dummy/app/models/location_tag_location.rb +0 -26
  1323. package/test/dummy/app/models/program.rb +0 -19
  1324. package/test/dummy/app/models/script.rb +0 -49
  1325. package/test/dummy/app/models/script_run.rb +0 -58
  1326. package/test/dummy/app/models/smart/smart_feature.rb +0 -27
  1327. package/test/dummy/app/models/target.rb +0 -30
  1328. package/test/dummy/app/models/user.rb +0 -101
  1329. package/test/dummy/app/models/work_order.rb +0 -64
  1330. package/test/dummy/app/views/application/error.html.slim +0 -3
  1331. package/test/dummy/app/views/application/home.html.slim +0 -15
  1332. package/test/dummy/app/views/client_side/index.html.slim +0 -6
  1333. package/test/dummy/app/views/client_side/logging.html.slim +0 -5
  1334. package/test/dummy/app/views/client_side/modals.html.slim +0 -19
  1335. package/test/dummy/app/views/client_side/slow_page.html.slim +0 -1
  1336. package/test/dummy/app/views/client_side/tables.html.slim +0 -28
  1337. package/test/dummy/app/views/client_side/tt_styles.html.slim +0 -140
  1338. package/test/dummy/app/views/client_side/urls.html.slim +0 -14
  1339. package/test/dummy/app/views/client_side/versions.html.slim +0 -39
  1340. package/test/dummy/app/views/errors/_backtrace.html.slim +0 -4
  1341. package/test/dummy/app/views/errors/_details.html.slim +0 -6
  1342. package/test/dummy/app/views/errors/file_not_found.html.slim +0 -11
  1343. package/test/dummy/app/views/errors/internal_server_error.html.slim +0 -17
  1344. package/test/dummy/app/views/frontend/list_viewer_demo.html.slim +0 -1
  1345. package/test/dummy/app/views/frontend/platform_demo.html.slim +0 -1
  1346. package/test/dummy/app/views/icons/badges.html.slim +0 -5
  1347. package/test/dummy/app/views/icons/glyps.html +0 -2822
  1348. package/test/dummy/app/views/icons/hub.html.slim +0 -5
  1349. package/test/dummy/app/views/layouts/application.html.slim +0 -26
  1350. package/test/dummy/app/views/layouts/mailer.html.erb +0 -13
  1351. package/test/dummy/app/views/layouts/mailer.text.erb +0 -1
  1352. package/test/dummy/app/views/layouts/modal.html.slim +0 -7
  1353. package/test/dummy/app/views/scripts/index.html.slim +0 -18
  1354. package/test/dummy/app/views/scripts/reports.html.slim +0 -87
  1355. package/test/dummy/app/views/sql/index.html.slim +0 -1
  1356. package/test/dummy/app/views/tinytemplate/index.html.slim +0 -4
  1357. package/test/dummy/bin/bundle +0 -3
  1358. package/test/dummy/bin/rails +0 -4
  1359. package/test/dummy/bin/rake +0 -4
  1360. package/test/dummy/bin/setup +0 -36
  1361. package/test/dummy/bin/update +0 -31
  1362. package/test/dummy/bin/vite +0 -7
  1363. package/test/dummy/bin/yarn +0 -11
  1364. package/test/dummy/config/application.rb +0 -31
  1365. package/test/dummy/config/boot.rb +0 -5
  1366. package/test/dummy/config/cable.yml +0 -10
  1367. package/test/dummy/config/database.yml +0 -86
  1368. package/test/dummy/config/environment.rb +0 -5
  1369. package/test/dummy/config/environments/development.rb +0 -65
  1370. package/test/dummy/config/environments/production.rb +0 -91
  1371. package/test/dummy/config/environments/test.rb +0 -46
  1372. package/test/dummy/config/initializers/application_controller_renderer.rb +0 -8
  1373. package/test/dummy/config/initializers/assets.rb +0 -14
  1374. package/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  1375. package/test/dummy/config/initializers/content_security_policy.rb +0 -34
  1376. package/test/dummy/config/initializers/cookies_serializer.rb +0 -5
  1377. package/test/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  1378. package/test/dummy/config/initializers/inflections.rb +0 -16
  1379. package/test/dummy/config/initializers/mime_types.rb +0 -5
  1380. package/test/dummy/config/initializers/terrier.rb +0 -13
  1381. package/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  1382. package/test/dummy/config/locales/en.yml +0 -33
  1383. package/test/dummy/config/puma.rb +0 -3
  1384. package/test/dummy/config/routes.rb +0 -38
  1385. package/test/dummy/config/spring.rb +0 -6
  1386. package/test/dummy/config/storage.yml +0 -34
  1387. package/test/dummy/config/vite.json +0 -20
  1388. package/test/dummy/config.ru +0 -5
  1389. package/test/dummy/db/migrate/20181225172428_scripts.rb +0 -63
  1390. package/test/dummy/db/migrate/20210428171102_add_org_id_to_scripts.rb +0 -7
  1391. package/test/dummy/db/migrate/20230413185004_add_script_state_to_script_runs.rb +0 -5
  1392. package/test/dummy/db/migrate/20230429154726_work_orders.rb +0 -43
  1393. package/test/dummy/db/migrate/20250411141635_add_user_pets.rb +0 -5
  1394. package/test/dummy/db/migrate/20250902143532_location_tags.rb +0 -12
  1395. package/test/dummy/db/migrate/20250904141910_contracts_and_programs.rb +0 -14
  1396. package/test/dummy/db/migrate/20251007174502_smart_features.rb +0 -12
  1397. package/test/dummy/db/schema.rb +0 -503
  1398. package/test/dummy/db/seeds.rb +0 -208
  1399. package/test/dummy/dummy_development +0 -0
  1400. package/test/dummy/lib/assets/.keep +0 -0
  1401. package/test/dummy/lib/tasks/logging.rake +0 -20
  1402. package/test/dummy/lib/tasks/tabular.rake +0 -82
  1403. package/test/dummy/log/.keep +0 -0
  1404. package/test/dummy/log/development.log +0 -934
  1405. package/test/dummy/package-lock.json +0 -1438
  1406. package/test/dummy/package.json +0 -15
  1407. package/test/dummy/public/404.html +0 -67
  1408. package/test/dummy/public/422.html +0 -67
  1409. package/test/dummy/public/500.html +0 -66
  1410. package/test/dummy/public/apple-touch-icon-precomposed.png +0 -0
  1411. package/test/dummy/public/apple-touch-icon.png +0 -0
  1412. package/test/dummy/public/favicon.ico +0 -0
  1413. package/test/dummy/public/terrier-engine.png +0 -0
  1414. package/test/dummy/restart_tail +0 -1
  1415. package/test/dummy/test/input/blank_rows_csv.csv +0 -2
  1416. package/test/dummy/test/input/blank_rows_xls.xls +0 -0
  1417. package/test/dummy/test/input/blank_rows_xlsx.xlsx +0 -0
  1418. package/test/dummy/test/input/correct_csv.csv +0 -3
  1419. package/test/dummy/test/input/correct_xls.xls +0 -0
  1420. package/test/dummy/test/input/correct_xlsx.xlsx +0 -0
  1421. package/test/dummy/test/input/duplicatecolumnerror.csv +0 -7
  1422. package/test/dummy/test/input/duplicatecolumnerror.xls +0 -0
  1423. package/test/dummy/test/input/duplicatecolumnerror.xlsx +0 -0
  1424. package/test/dummy/test/input/empty_csv.csv +0 -1
  1425. package/test/dummy/test/input/empty_xls.xls +0 -0
  1426. package/test/dummy/test/input/empty_xlsx.xlsx +0 -0
  1427. package/test/dummy/test/input/incorrect_format_csv_as_xls.xls +0 -3
  1428. package/test/dummy/test/input/incorrect_format_csv_as_xlsx.xlsx +0 -3
  1429. package/test/dummy/test/input/incorrect_format_xls_as_csv.csv +0 -0
  1430. package/test/dummy/test/input/incorrect_format_xls_as_xlsx.xlsx +0 -0
  1431. package/test/dummy/test/input/incorrect_format_xlsx_as_csv.csv +0 -0
  1432. package/test/dummy/test/input/incorrect_format_xlsx_as_xls.xls +0 -0
  1433. package/test/dummy/test/input/missing_header_csv.csv +0 -2
  1434. package/test/dummy/test/input/missing_header_xls.xls +0 -0
  1435. package/test/dummy/test/input/missing_header_xlsx.xlsx +0 -0
  1436. package/test/dummy/test/input/missing_row_csv.csv +0 -4
  1437. package/test/dummy/test/input/missing_row_xls.xls +0 -0
  1438. package/test/dummy/test/input/missing_row_xlsx.xlsx +0 -0
  1439. package/test/dummy/test/input/test.xlsx +0 -0
  1440. package/test/dummy/tmp/local_secret.txt +0 -1
  1441. package/test/dummy/tsconfig.json +0 -31
  1442. package/test/dummy/vite.config.ts +0 -25
  1443. package/test/fixtures/users.yml +0 -21
  1444. package/test/integration/clypboard_connect_test.rb +0 -14
  1445. package/test/integration/db_controller_test.rb +0 -60
  1446. package/test/integration/navigation_test.rb +0 -7
  1447. package/test/models/concerns/event_trackable_test.rb +0 -177
  1448. package/test/terrier/engine_test.rb +0 -7
  1449. package/test/test_helper.rb +0 -19
  1450. package/test/unit/date_period_test.rb +0 -111
  1451. package/test/unit/input/test.xlsx +0 -0
  1452. package/test/unit/loggable_test.rb +0 -51
  1453. package/test/unit/query_engine_test.rb +0 -138
  1454. package/test/unit/query_result_test.rb +0 -37
  1455. package/test/unit/regular_schedule_test.rb +0 -166
  1456. package/test/unit/schedule_rule_test.rb +0 -31
  1457. package/test/unit/string_test.rb +0 -29
  1458. package/test/unit/tabular_test.rb +0 -180
  1459. package/tmp/dist/data-dive/dd-app.ts +0 -56
  1460. package/tmp/dist/data-dive/dd-db.ts +0 -12
  1461. package/tmp/dist/data-dive/dd-routes.ts +0 -10
  1462. package/tmp/dist/data-dive/dd-session.ts +0 -97
  1463. package/tmp/dist/data-dive/dd-user.ts +0 -12
  1464. package/tmp/dist/data-dive/dives/dive-delivery.ts +0 -316
  1465. package/tmp/dist/data-dive/dives/dive-editor.ts +0 -440
  1466. package/tmp/dist/data-dive/dives/dive-list.ts +0 -254
  1467. package/tmp/dist/data-dive/dives/dive-page.ts +0 -18
  1468. package/tmp/dist/data-dive/dives/dive-runs.ts +0 -355
  1469. package/tmp/dist/data-dive/dives/dive-settings.ts +0 -271
  1470. package/tmp/dist/data-dive/dives/dives.ts +0 -81
  1471. package/tmp/dist/data-dive/dives/group-editor.ts +0 -144
  1472. package/tmp/dist/data-dive/gen/models.ts +0 -311
  1473. package/tmp/dist/data-dive/plots/dive-plot-axes.ts +0 -131
  1474. package/tmp/dist/data-dive/plots/dive-plot-editor.ts +0 -226
  1475. package/tmp/dist/data-dive/plots/dive-plot-layouts.ts +0 -49
  1476. package/tmp/dist/data-dive/plots/dive-plot-list.ts +0 -122
  1477. package/tmp/dist/data-dive/plots/dive-plot-render-part.ts +0 -90
  1478. package/tmp/dist/data-dive/plots/dive-plot-styles.ts +0 -194
  1479. package/tmp/dist/data-dive/plots/dive-plot-traces.ts +0 -258
  1480. package/tmp/dist/data-dive/plots/dive-plots.ts +0 -29
  1481. package/tmp/dist/data-dive/queries/column-order-modal.ts +0 -61
  1482. package/tmp/dist/data-dive/queries/columns.ts +0 -602
  1483. package/tmp/dist/data-dive/queries/dates.ts +0 -313
  1484. package/tmp/dist/data-dive/queries/filters.ts +0 -940
  1485. package/tmp/dist/data-dive/queries/queries.ts +0 -347
  1486. package/tmp/dist/data-dive/queries/query-editor.ts +0 -347
  1487. package/tmp/dist/data-dive/queries/query-form.ts +0 -51
  1488. package/tmp/dist/data-dive/queries/row-order-modal.ts +0 -157
  1489. package/tmp/dist/data-dive/queries/tables.ts +0 -508
  1490. package/tmp/dist/data-dive/queries/test/dates.test.ts +0 -178
  1491. package/tmp/dist/data-dive/queries/validation.ts +0 -104
  1492. package/tmp/dist/package.json +0 -38
  1493. package/tmp/dist/terrier/README.md +0 -3
  1494. package/tmp/dist/terrier/api-subscriber.ts +0 -439
  1495. package/tmp/dist/terrier/api.ts +0 -278
  1496. package/tmp/dist/terrier/app.ts +0 -150
  1497. package/tmp/dist/terrier/attachments.ts +0 -55
  1498. package/tmp/dist/terrier/db-client.ts +0 -410
  1499. package/tmp/dist/terrier/definitions/tiny-modal.d.ts +0 -67
  1500. package/tmp/dist/terrier/dropdowns.ts +0 -127
  1501. package/tmp/dist/terrier/emails.ts +0 -129
  1502. package/tmp/dist/terrier/format.ts +0 -31
  1503. package/tmp/dist/terrier/forms.ts +0 -310
  1504. package/tmp/dist/terrier/fragments.ts +0 -424
  1505. package/tmp/dist/terrier/gen/badges.ts +0 -736
  1506. package/tmp/dist/terrier/gen/hub-icons.ts +0 -929
  1507. package/tmp/dist/terrier/glyps.ts +0 -22
  1508. package/tmp/dist/terrier/hints.ts +0 -184
  1509. package/tmp/dist/terrier/ids.ts +0 -24
  1510. package/tmp/dist/terrier/images/badges/badge-accounts_payable-handling.svg +0 -48
  1511. package/tmp/dist/terrier/images/badges/badge-accounts_receivable-handling.svg +0 -50
  1512. package/tmp/dist/terrier/images/badges/badge-applicator_license-admin.svg +0 -54
  1513. package/tmp/dist/terrier/images/badges/badge-autopay-admin.svg +0 -46
  1514. package/tmp/dist/terrier/images/badges/badge-autopay-handling.svg +0 -46
  1515. package/tmp/dist/terrier/images/badges/badge-bats-admin.svg +0 -47
  1516. package/tmp/dist/terrier/images/badges/badge-bats-management.svg +0 -45
  1517. package/tmp/dist/terrier/images/badges/badge-bats-ops.svg +0 -47
  1518. package/tmp/dist/terrier/images/badges/badge-bats-sales.svg +0 -47
  1519. package/tmp/dist/terrier/images/badges/badge-clypboard_hardware-admin.svg +0 -70
  1520. package/tmp/dist/terrier/images/badges/badge-clypboard_project-admin.svg +0 -51
  1521. package/tmp/dist/terrier/images/badges/badge-clypmart-admin.svg +0 -58
  1522. package/tmp/dist/terrier/images/badges/badge-commercial-admin.svg +0 -56
  1523. package/tmp/dist/terrier/images/badges/badge-commercial-management.svg +0 -54
  1524. package/tmp/dist/terrier/images/badges/badge-commercial-ops.svg +0 -56
  1525. package/tmp/dist/terrier/images/badges/badge-commercial-sales.svg +0 -56
  1526. package/tmp/dist/terrier/images/badges/badge-compliance-admin.svg +0 -51
  1527. package/tmp/dist/terrier/images/badges/badge-contracts-admin.svg +0 -54
  1528. package/tmp/dist/terrier/images/badges/badge-contracts-reporting.svg +0 -52
  1529. package/tmp/dist/terrier/images/badges/badge-copesan-admin.svg +0 -45
  1530. package/tmp/dist/terrier/images/badges/badge-credit_card-admin.svg +0 -55
  1531. package/tmp/dist/terrier/images/badges/badge-customer_call-handling.svg +0 -49
  1532. package/tmp/dist/terrier/images/badges/badge-customer_text-handling.svg +0 -59
  1533. package/tmp/dist/terrier/images/badges/badge-employee_data-admin.svg +0 -49
  1534. package/tmp/dist/terrier/images/badges/badge-employee_data-handling.svg +0 -49
  1535. package/tmp/dist/terrier/images/badges/badge-employee_data-reporting.svg +0 -47
  1536. package/tmp/dist/terrier/images/badges/badge-finance-admin.svg +0 -49
  1537. package/tmp/dist/terrier/images/badges/badge-finance-reporting.svg +0 -47
  1538. package/tmp/dist/terrier/images/badges/badge-fleet-admin.svg +0 -58
  1539. package/tmp/dist/terrier/images/badges/badge-fumigation-admin.svg +0 -56
  1540. package/tmp/dist/terrier/images/badges/badge-fumigation-management.svg +0 -54
  1541. package/tmp/dist/terrier/images/badges/badge-fumigation-ops.svg +0 -56
  1542. package/tmp/dist/terrier/images/badges/badge-information_technology-admin.svg +0 -51
  1543. package/tmp/dist/terrier/images/badges/badge-information_technology-management.svg +0 -49
  1544. package/tmp/dist/terrier/images/badges/badge-irrigation-admin.svg +0 -51
  1545. package/tmp/dist/terrier/images/badges/badge-irrigation-management.svg +0 -49
  1546. package/tmp/dist/terrier/images/badges/badge-irrigation-ops.svg +0 -51
  1547. package/tmp/dist/terrier/images/badges/badge-irrigation-sales.svg +0 -51
  1548. package/tmp/dist/terrier/images/badges/badge-landscape-admin.svg +0 -50
  1549. package/tmp/dist/terrier/images/badges/badge-landscape-management.svg +0 -48
  1550. package/tmp/dist/terrier/images/badges/badge-landscape-ops.svg +0 -50
  1551. package/tmp/dist/terrier/images/badges/badge-landscape-sales.svg +0 -50
  1552. package/tmp/dist/terrier/images/badges/badge-marketing-admin.svg +0 -59
  1553. package/tmp/dist/terrier/images/badges/badge-mergers_and_acquisitions-admin.svg +0 -47
  1554. package/tmp/dist/terrier/images/badges/badge-mergers_and_acquisitions-reporting.svg +0 -45
  1555. package/tmp/dist/terrier/images/badges/badge-multi_housing-admin.svg +0 -61
  1556. package/tmp/dist/terrier/images/badges/badge-multi_housing-management.svg +0 -59
  1557. package/tmp/dist/terrier/images/badges/badge-multi_housing-ops.svg +0 -61
  1558. package/tmp/dist/terrier/images/badges/badge-multi_housing-sales.svg +0 -61
  1559. package/tmp/dist/terrier/images/badges/badge-payroll-admin.svg +0 -48
  1560. package/tmp/dist/terrier/images/badges/badge-payroll-reporting.svg +0 -46
  1561. package/tmp/dist/terrier/images/badges/badge-pest-admin.svg +0 -48
  1562. package/tmp/dist/terrier/images/badges/badge-pest-management.svg +0 -46
  1563. package/tmp/dist/terrier/images/badges/badge-pest-ops.svg +0 -48
  1564. package/tmp/dist/terrier/images/badges/badge-pest-sales.svg +0 -48
  1565. package/tmp/dist/terrier/images/badges/badge-pro-admin.svg +0 -60
  1566. package/tmp/dist/terrier/images/badges/badge-pro-management.svg +0 -58
  1567. package/tmp/dist/terrier/images/badges/badge-pro-ops.svg +0 -60
  1568. package/tmp/dist/terrier/images/badges/badge-pro-sales.svg +0 -60
  1569. package/tmp/dist/terrier/images/badges/badge-program-admin.svg +0 -45
  1570. package/tmp/dist/terrier/images/badges/badge-proposals-handling.svg +0 -51
  1571. package/tmp/dist/terrier/images/badges/badge-residential-admin.svg +0 -53
  1572. package/tmp/dist/terrier/images/badges/badge-residential-management.svg +0 -51
  1573. package/tmp/dist/terrier/images/badges/badge-residential-ops.svg +0 -53
  1574. package/tmp/dist/terrier/images/badges/badge-residential-sales.svg +0 -53
  1575. package/tmp/dist/terrier/images/badges/badge-sales-management.svg +0 -46
  1576. package/tmp/dist/terrier/images/badges/badge-sales-reporting.svg +0 -46
  1577. package/tmp/dist/terrier/images/badges/badge-scripts-admin.svg +0 -50
  1578. package/tmp/dist/terrier/images/badges/badge-scripts-reporting.svg +0 -48
  1579. package/tmp/dist/terrier/images/badges/badge-termite-admin.svg +0 -48
  1580. package/tmp/dist/terrier/images/badges/badge-termite-management.svg +0 -46
  1581. package/tmp/dist/terrier/images/badges/badge-termite-ops.svg +0 -48
  1582. package/tmp/dist/terrier/images/badges/badge-termite-sales.svg +0 -48
  1583. package/tmp/dist/terrier/images/badges/badge-wildlife-admin.svg +0 -45
  1584. package/tmp/dist/terrier/images/badges/badge-wildlife-management.svg +0 -43
  1585. package/tmp/dist/terrier/images/badges/badge-wildlife-ops.svg +0 -45
  1586. package/tmp/dist/terrier/images/badges/badge-wildlife-sales.svg +0 -45
  1587. package/tmp/dist/terrier/images/icons/active.svg +0 -1
  1588. package/tmp/dist/terrier/images/icons/admin.svg +0 -1
  1589. package/tmp/dist/terrier/images/icons/archive.svg +0 -1
  1590. package/tmp/dist/terrier/images/icons/arrow_down.svg +0 -1
  1591. package/tmp/dist/terrier/images/icons/arrow_left.svg +0 -1
  1592. package/tmp/dist/terrier/images/icons/arrow_right.svg +0 -1
  1593. package/tmp/dist/terrier/images/icons/arrow_up.svg +0 -1
  1594. package/tmp/dist/terrier/images/icons/assign.svg +0 -1
  1595. package/tmp/dist/terrier/images/icons/attachment.svg +0 -1
  1596. package/tmp/dist/terrier/images/icons/back.svg +0 -1
  1597. package/tmp/dist/terrier/images/icons/badge.svg +0 -1
  1598. package/tmp/dist/terrier/images/icons/board.svg +0 -1
  1599. package/tmp/dist/terrier/images/icons/bookmark.svg +0 -1
  1600. package/tmp/dist/terrier/images/icons/bookmark_add.svg +0 -1
  1601. package/tmp/dist/terrier/images/icons/bookmark_remove.svg +0 -1
  1602. package/tmp/dist/terrier/images/icons/bookmarked.svg +0 -1
  1603. package/tmp/dist/terrier/images/icons/bookmarks.svg +0 -1
  1604. package/tmp/dist/terrier/images/icons/branch.svg +0 -1
  1605. package/tmp/dist/terrier/images/icons/bug.svg +0 -1
  1606. package/tmp/dist/terrier/images/icons/calculator.svg +0 -1
  1607. package/tmp/dist/terrier/images/icons/checkmark.svg +0 -1
  1608. package/tmp/dist/terrier/images/icons/close.svg +0 -1
  1609. package/tmp/dist/terrier/images/icons/clypboard.svg +0 -1
  1610. package/tmp/dist/terrier/images/icons/comment.svg +0 -1
  1611. package/tmp/dist/terrier/images/icons/complete.svg +0 -1
  1612. package/tmp/dist/terrier/images/icons/dashboard.svg +0 -1
  1613. package/tmp/dist/terrier/images/icons/data_pull.svg +0 -1
  1614. package/tmp/dist/terrier/images/icons/data_update.svg +0 -1
  1615. package/tmp/dist/terrier/images/icons/database.svg +0 -1
  1616. package/tmp/dist/terrier/images/icons/day.svg +0 -1
  1617. package/tmp/dist/terrier/images/icons/delete.svg +0 -1
  1618. package/tmp/dist/terrier/images/icons/documentation.svg +0 -1
  1619. package/tmp/dist/terrier/images/icons/edit.svg +0 -1
  1620. package/tmp/dist/terrier/images/icons/existing_child.svg +0 -1
  1621. package/tmp/dist/terrier/images/icons/existing_parent.svg +0 -1
  1622. package/tmp/dist/terrier/images/icons/feature.svg +0 -1
  1623. package/tmp/dist/terrier/images/icons/flex.svg +0 -1
  1624. package/tmp/dist/terrier/images/icons/forward.svg +0 -1
  1625. package/tmp/dist/terrier/images/icons/github.svg +0 -1
  1626. package/tmp/dist/terrier/images/icons/history.svg +0 -1
  1627. package/tmp/dist/terrier/images/icons/home.svg +0 -1
  1628. package/tmp/dist/terrier/images/icons/hundred.svg +0 -1
  1629. package/tmp/dist/terrier/images/icons/image.svg +0 -1
  1630. package/tmp/dist/terrier/images/icons/inbox.svg +0 -1
  1631. package/tmp/dist/terrier/images/icons/info.svg +0 -1
  1632. package/tmp/dist/terrier/images/icons/internal.svg +0 -1
  1633. package/tmp/dist/terrier/images/icons/issue.svg +0 -1
  1634. package/tmp/dist/terrier/images/icons/lane.svg +0 -1
  1635. package/tmp/dist/terrier/images/icons/lane_asap.svg +0 -1
  1636. package/tmp/dist/terrier/images/icons/lane_days.svg +0 -1
  1637. package/tmp/dist/terrier/images/icons/lane_hours.svg +0 -1
  1638. package/tmp/dist/terrier/images/icons/lane_weeks.svg +0 -1
  1639. package/tmp/dist/terrier/images/icons/lanes_board.svg +0 -1
  1640. package/tmp/dist/terrier/images/icons/level_complete.svg +0 -1
  1641. package/tmp/dist/terrier/images/icons/level_highway.svg +0 -1
  1642. package/tmp/dist/terrier/images/icons/level_on_ramp.svg +0 -1
  1643. package/tmp/dist/terrier/images/icons/level_parking.svg +0 -1
  1644. package/tmp/dist/terrier/images/icons/link.svg +0 -1
  1645. package/tmp/dist/terrier/images/icons/list_view.svg +0 -1
  1646. package/tmp/dist/terrier/images/icons/lol.svg +0 -1
  1647. package/tmp/dist/terrier/images/icons/metrics.svg +0 -1
  1648. package/tmp/dist/terrier/images/icons/minus.svg +0 -1
  1649. package/tmp/dist/terrier/images/icons/new_child.svg +0 -1
  1650. package/tmp/dist/terrier/images/icons/new_parent.svg +0 -1
  1651. package/tmp/dist/terrier/images/icons/night.svg +0 -1
  1652. package/tmp/dist/terrier/images/icons/origin.svg +0 -1
  1653. package/tmp/dist/terrier/images/icons/pending.svg +0 -1
  1654. package/tmp/dist/terrier/images/icons/plot.svg +0 -1
  1655. package/tmp/dist/terrier/images/icons/plus.svg +0 -1
  1656. package/tmp/dist/terrier/images/icons/post.svg +0 -1
  1657. package/tmp/dist/terrier/images/icons/posts.svg +0 -1
  1658. package/tmp/dist/terrier/images/icons/pr_closed.svg +0 -1
  1659. package/tmp/dist/terrier/images/icons/pr_merged.svg +0 -1
  1660. package/tmp/dist/terrier/images/icons/pr_open.svg +0 -1
  1661. package/tmp/dist/terrier/images/icons/prioritized.svg +0 -1
  1662. package/tmp/dist/terrier/images/icons/private.svg +0 -1
  1663. package/tmp/dist/terrier/images/icons/project.svg +0 -1
  1664. package/tmp/dist/terrier/images/icons/public.svg +0 -1
  1665. package/tmp/dist/terrier/images/icons/question.svg +0 -1
  1666. package/tmp/dist/terrier/images/icons/reaction.svg +0 -1
  1667. package/tmp/dist/terrier/images/icons/recent.svg +0 -1
  1668. package/tmp/dist/terrier/images/icons/refresh.svg +0 -1
  1669. package/tmp/dist/terrier/images/icons/related_posts.svg +0 -1
  1670. package/tmp/dist/terrier/images/icons/releases.svg +0 -1
  1671. package/tmp/dist/terrier/images/icons/request.svg +0 -1
  1672. package/tmp/dist/terrier/images/icons/settings.svg +0 -1
  1673. package/tmp/dist/terrier/images/icons/split_view.svg +0 -1
  1674. package/tmp/dist/terrier/images/icons/status.svg +0 -1
  1675. package/tmp/dist/terrier/images/icons/step_demo.svg +0 -1
  1676. package/tmp/dist/terrier/images/icons/step_deploy.svg +0 -1
  1677. package/tmp/dist/terrier/images/icons/step_develop.svg +0 -1
  1678. package/tmp/dist/terrier/images/icons/step_investigate.svg +0 -1
  1679. package/tmp/dist/terrier/images/icons/step_none.svg +0 -1
  1680. package/tmp/dist/terrier/images/icons/step_required.svg +0 -1
  1681. package/tmp/dist/terrier/images/icons/step_review.svg +0 -1
  1682. package/tmp/dist/terrier/images/icons/step_test.svg +0 -1
  1683. package/tmp/dist/terrier/images/icons/steps.svg +0 -1
  1684. package/tmp/dist/terrier/images/icons/steps_board.svg +0 -1
  1685. package/tmp/dist/terrier/images/icons/subscribe.svg +0 -1
  1686. package/tmp/dist/terrier/images/icons/support.svg +0 -1
  1687. package/tmp/dist/terrier/images/icons/team.svg +0 -1
  1688. package/tmp/dist/terrier/images/icons/terrier.svg +0 -1
  1689. package/tmp/dist/terrier/images/icons/thumbs_up.svg +0 -1
  1690. package/tmp/dist/terrier/images/icons/type.svg +0 -1
  1691. package/tmp/dist/terrier/images/icons/unprioritized.svg +0 -1
  1692. package/tmp/dist/terrier/images/icons/upload.svg +0 -1
  1693. package/tmp/dist/terrier/images/icons/upvote.svg +0 -1
  1694. package/tmp/dist/terrier/images/icons/user.svg +0 -1
  1695. package/tmp/dist/terrier/images/icons/users.svg +0 -1
  1696. package/tmp/dist/terrier/images/icons/website.svg +0 -1
  1697. package/tmp/dist/terrier/images/icons/week.svg +0 -1
  1698. package/tmp/dist/terrier/images/optimized/badge-accounts_payable.svg +0 -1
  1699. package/tmp/dist/terrier/images/optimized/badge-accounts_receivable.svg +0 -1
  1700. package/tmp/dist/terrier/images/optimized/badge-applicator_license.svg +0 -1
  1701. package/tmp/dist/terrier/images/optimized/badge-autopay.svg +0 -1
  1702. package/tmp/dist/terrier/images/optimized/badge-bats.svg +0 -1
  1703. package/tmp/dist/terrier/images/optimized/badge-clypboard_hardware.svg +0 -1
  1704. package/tmp/dist/terrier/images/optimized/badge-clypboard_project.svg +0 -1
  1705. package/tmp/dist/terrier/images/optimized/badge-clypmart.svg +0 -1
  1706. package/tmp/dist/terrier/images/optimized/badge-commercial.svg +0 -1
  1707. package/tmp/dist/terrier/images/optimized/badge-compliance.svg +0 -1
  1708. package/tmp/dist/terrier/images/optimized/badge-contracts.svg +0 -1
  1709. package/tmp/dist/terrier/images/optimized/badge-copesan.svg +0 -1
  1710. package/tmp/dist/terrier/images/optimized/badge-credit_card.svg +0 -1
  1711. package/tmp/dist/terrier/images/optimized/badge-customer_call.svg +0 -1
  1712. package/tmp/dist/terrier/images/optimized/badge-customer_text.svg +0 -1
  1713. package/tmp/dist/terrier/images/optimized/badge-employee_data.svg +0 -1
  1714. package/tmp/dist/terrier/images/optimized/badge-finance.svg +0 -1
  1715. package/tmp/dist/terrier/images/optimized/badge-fleet.svg +0 -1
  1716. package/tmp/dist/terrier/images/optimized/badge-fumigation.svg +0 -1
  1717. package/tmp/dist/terrier/images/optimized/badge-information_technology.svg +0 -1
  1718. package/tmp/dist/terrier/images/optimized/badge-irrigation.svg +0 -1
  1719. package/tmp/dist/terrier/images/optimized/badge-landscape.svg +0 -1
  1720. package/tmp/dist/terrier/images/optimized/badge-marketing.svg +0 -1
  1721. package/tmp/dist/terrier/images/optimized/badge-mergers_and_acquisitions.svg +0 -1
  1722. package/tmp/dist/terrier/images/optimized/badge-multi_housing.svg +0 -1
  1723. package/tmp/dist/terrier/images/optimized/badge-payroll.svg +0 -1
  1724. package/tmp/dist/terrier/images/optimized/badge-pest.svg +0 -1
  1725. package/tmp/dist/terrier/images/optimized/badge-pro.svg +0 -1
  1726. package/tmp/dist/terrier/images/optimized/badge-program.svg +0 -1
  1727. package/tmp/dist/terrier/images/optimized/badge-proposals.svg +0 -1
  1728. package/tmp/dist/terrier/images/optimized/badge-residential.svg +0 -1
  1729. package/tmp/dist/terrier/images/optimized/badge-sales.svg +0 -1
  1730. package/tmp/dist/terrier/images/optimized/badge-scripts.svg +0 -1
  1731. package/tmp/dist/terrier/images/optimized/badge-termite.svg +0 -1
  1732. package/tmp/dist/terrier/images/optimized/badge-wildlife.svg +0 -1
  1733. package/tmp/dist/terrier/images/optimized/badge_role-admin.svg +0 -1
  1734. package/tmp/dist/terrier/images/optimized/badge_role-handling.svg +0 -1
  1735. package/tmp/dist/terrier/images/optimized/badge_role-management.svg +0 -1
  1736. package/tmp/dist/terrier/images/optimized/badge_role-ops.svg +0 -1
  1737. package/tmp/dist/terrier/images/optimized/badge_role-reporting.svg +0 -1
  1738. package/tmp/dist/terrier/images/optimized/badge_role-sales.svg +0 -1
  1739. package/tmp/dist/terrier/images/optimized/icon-active.svg +0 -1
  1740. package/tmp/dist/terrier/images/optimized/icon-admin.svg +0 -1
  1741. package/tmp/dist/terrier/images/optimized/icon-archive.svg +0 -1
  1742. package/tmp/dist/terrier/images/optimized/icon-arrow_down.svg +0 -1
  1743. package/tmp/dist/terrier/images/optimized/icon-arrow_left.svg +0 -1
  1744. package/tmp/dist/terrier/images/optimized/icon-arrow_right.svg +0 -1
  1745. package/tmp/dist/terrier/images/optimized/icon-arrow_up.svg +0 -1
  1746. package/tmp/dist/terrier/images/optimized/icon-assign.svg +0 -1
  1747. package/tmp/dist/terrier/images/optimized/icon-attachment.svg +0 -1
  1748. package/tmp/dist/terrier/images/optimized/icon-back.svg +0 -1
  1749. package/tmp/dist/terrier/images/optimized/icon-badge.svg +0 -1
  1750. package/tmp/dist/terrier/images/optimized/icon-board.svg +0 -1
  1751. package/tmp/dist/terrier/images/optimized/icon-bookmark.svg +0 -1
  1752. package/tmp/dist/terrier/images/optimized/icon-bookmark_add.svg +0 -1
  1753. package/tmp/dist/terrier/images/optimized/icon-bookmark_remove.svg +0 -1
  1754. package/tmp/dist/terrier/images/optimized/icon-bookmarked.svg +0 -1
  1755. package/tmp/dist/terrier/images/optimized/icon-bookmarks.svg +0 -1
  1756. package/tmp/dist/terrier/images/optimized/icon-branch.svg +0 -1
  1757. package/tmp/dist/terrier/images/optimized/icon-bug.svg +0 -1
  1758. package/tmp/dist/terrier/images/optimized/icon-calculator.svg +0 -1
  1759. package/tmp/dist/terrier/images/optimized/icon-checkmark.svg +0 -1
  1760. package/tmp/dist/terrier/images/optimized/icon-close.svg +0 -1
  1761. package/tmp/dist/terrier/images/optimized/icon-clypboard.svg +0 -1
  1762. package/tmp/dist/terrier/images/optimized/icon-comment.svg +0 -1
  1763. package/tmp/dist/terrier/images/optimized/icon-complete.svg +0 -1
  1764. package/tmp/dist/terrier/images/optimized/icon-dashboard.svg +0 -1
  1765. package/tmp/dist/terrier/images/optimized/icon-data_pull.svg +0 -1
  1766. package/tmp/dist/terrier/images/optimized/icon-data_update.svg +0 -1
  1767. package/tmp/dist/terrier/images/optimized/icon-database.svg +0 -1
  1768. package/tmp/dist/terrier/images/optimized/icon-day.svg +0 -1
  1769. package/tmp/dist/terrier/images/optimized/icon-delete.svg +0 -1
  1770. package/tmp/dist/terrier/images/optimized/icon-documentation.svg +0 -1
  1771. package/tmp/dist/terrier/images/optimized/icon-edit.svg +0 -1
  1772. package/tmp/dist/terrier/images/optimized/icon-existing_child.svg +0 -1
  1773. package/tmp/dist/terrier/images/optimized/icon-existing_parent.svg +0 -1
  1774. package/tmp/dist/terrier/images/optimized/icon-feature.svg +0 -1
  1775. package/tmp/dist/terrier/images/optimized/icon-flex.svg +0 -1
  1776. package/tmp/dist/terrier/images/optimized/icon-forward.svg +0 -1
  1777. package/tmp/dist/terrier/images/optimized/icon-github.svg +0 -1
  1778. package/tmp/dist/terrier/images/optimized/icon-history.svg +0 -1
  1779. package/tmp/dist/terrier/images/optimized/icon-home.svg +0 -1
  1780. package/tmp/dist/terrier/images/optimized/icon-hundred.svg +0 -1
  1781. package/tmp/dist/terrier/images/optimized/icon-image.svg +0 -1
  1782. package/tmp/dist/terrier/images/optimized/icon-inbox.svg +0 -1
  1783. package/tmp/dist/terrier/images/optimized/icon-info.svg +0 -1
  1784. package/tmp/dist/terrier/images/optimized/icon-internal.svg +0 -1
  1785. package/tmp/dist/terrier/images/optimized/icon-issue.svg +0 -1
  1786. package/tmp/dist/terrier/images/optimized/icon-lane.svg +0 -1
  1787. package/tmp/dist/terrier/images/optimized/icon-lane_asap.svg +0 -1
  1788. package/tmp/dist/terrier/images/optimized/icon-lane_days.svg +0 -1
  1789. package/tmp/dist/terrier/images/optimized/icon-lane_hours.svg +0 -1
  1790. package/tmp/dist/terrier/images/optimized/icon-lane_weeks.svg +0 -1
  1791. package/tmp/dist/terrier/images/optimized/icon-lanes_board.svg +0 -1
  1792. package/tmp/dist/terrier/images/optimized/icon-level_complete.svg +0 -1
  1793. package/tmp/dist/terrier/images/optimized/icon-level_highway.svg +0 -1
  1794. package/tmp/dist/terrier/images/optimized/icon-level_on_ramp.svg +0 -1
  1795. package/tmp/dist/terrier/images/optimized/icon-level_parking.svg +0 -1
  1796. package/tmp/dist/terrier/images/optimized/icon-link.svg +0 -1
  1797. package/tmp/dist/terrier/images/optimized/icon-list_view.svg +0 -1
  1798. package/tmp/dist/terrier/images/optimized/icon-lol.svg +0 -1
  1799. package/tmp/dist/terrier/images/optimized/icon-metrics.svg +0 -1
  1800. package/tmp/dist/terrier/images/optimized/icon-minus.svg +0 -1
  1801. package/tmp/dist/terrier/images/optimized/icon-new_child.svg +0 -1
  1802. package/tmp/dist/terrier/images/optimized/icon-new_parent.svg +0 -1
  1803. package/tmp/dist/terrier/images/optimized/icon-night.svg +0 -1
  1804. package/tmp/dist/terrier/images/optimized/icon-origin.svg +0 -1
  1805. package/tmp/dist/terrier/images/optimized/icon-pending.svg +0 -1
  1806. package/tmp/dist/terrier/images/optimized/icon-plot.svg +0 -1
  1807. package/tmp/dist/terrier/images/optimized/icon-plus.svg +0 -1
  1808. package/tmp/dist/terrier/images/optimized/icon-post.svg +0 -1
  1809. package/tmp/dist/terrier/images/optimized/icon-posts.svg +0 -1
  1810. package/tmp/dist/terrier/images/optimized/icon-pr_closed.svg +0 -1
  1811. package/tmp/dist/terrier/images/optimized/icon-pr_merged.svg +0 -1
  1812. package/tmp/dist/terrier/images/optimized/icon-pr_open.svg +0 -1
  1813. package/tmp/dist/terrier/images/optimized/icon-prioritized.svg +0 -1
  1814. package/tmp/dist/terrier/images/optimized/icon-private.svg +0 -1
  1815. package/tmp/dist/terrier/images/optimized/icon-project.svg +0 -1
  1816. package/tmp/dist/terrier/images/optimized/icon-public.svg +0 -1
  1817. package/tmp/dist/terrier/images/optimized/icon-question.svg +0 -1
  1818. package/tmp/dist/terrier/images/optimized/icon-reaction.svg +0 -1
  1819. package/tmp/dist/terrier/images/optimized/icon-recent.svg +0 -1
  1820. package/tmp/dist/terrier/images/optimized/icon-refresh.svg +0 -1
  1821. package/tmp/dist/terrier/images/optimized/icon-related_posts.svg +0 -1
  1822. package/tmp/dist/terrier/images/optimized/icon-releases.svg +0 -1
  1823. package/tmp/dist/terrier/images/optimized/icon-request.svg +0 -1
  1824. package/tmp/dist/terrier/images/optimized/icon-settings.svg +0 -1
  1825. package/tmp/dist/terrier/images/optimized/icon-split_view.svg +0 -1
  1826. package/tmp/dist/terrier/images/optimized/icon-status.svg +0 -1
  1827. package/tmp/dist/terrier/images/optimized/icon-step_demo.svg +0 -1
  1828. package/tmp/dist/terrier/images/optimized/icon-step_deploy.svg +0 -1
  1829. package/tmp/dist/terrier/images/optimized/icon-step_develop.svg +0 -1
  1830. package/tmp/dist/terrier/images/optimized/icon-step_investigate.svg +0 -1
  1831. package/tmp/dist/terrier/images/optimized/icon-step_none.svg +0 -1
  1832. package/tmp/dist/terrier/images/optimized/icon-step_required.svg +0 -1
  1833. package/tmp/dist/terrier/images/optimized/icon-step_review.svg +0 -1
  1834. package/tmp/dist/terrier/images/optimized/icon-step_test.svg +0 -1
  1835. package/tmp/dist/terrier/images/optimized/icon-steps.svg +0 -1
  1836. package/tmp/dist/terrier/images/optimized/icon-steps_board.svg +0 -1
  1837. package/tmp/dist/terrier/images/optimized/icon-subscribe.svg +0 -1
  1838. package/tmp/dist/terrier/images/optimized/icon-support.svg +0 -1
  1839. package/tmp/dist/terrier/images/optimized/icon-team.svg +0 -1
  1840. package/tmp/dist/terrier/images/optimized/icon-terrier.svg +0 -1
  1841. package/tmp/dist/terrier/images/optimized/icon-thumbs_up.svg +0 -1
  1842. package/tmp/dist/terrier/images/optimized/icon-type.svg +0 -1
  1843. package/tmp/dist/terrier/images/optimized/icon-unprioritized.svg +0 -1
  1844. package/tmp/dist/terrier/images/optimized/icon-upload.svg +0 -1
  1845. package/tmp/dist/terrier/images/optimized/icon-upvote.svg +0 -1
  1846. package/tmp/dist/terrier/images/optimized/icon-user.svg +0 -1
  1847. package/tmp/dist/terrier/images/optimized/icon-users.svg +0 -1
  1848. package/tmp/dist/terrier/images/optimized/icon-website.svg +0 -1
  1849. package/tmp/dist/terrier/images/optimized/icon-week.svg +0 -1
  1850. package/tmp/dist/terrier/images/optimized/terrier-hub-favicon.svg +0 -1
  1851. package/tmp/dist/terrier/images/optimized/terrier-hub-icon-dark.svg +0 -1
  1852. package/tmp/dist/terrier/images/optimized/terrier-hub-icon-light.svg +0 -1
  1853. package/tmp/dist/terrier/images/optimized/terrier-hub-loader.svg +0 -1
  1854. package/tmp/dist/terrier/images/optimized/terrier-hub-logo-dark.svg +0 -1
  1855. package/tmp/dist/terrier/images/optimized/terrier-hub-logo-light.svg +0 -1
  1856. package/tmp/dist/terrier/images/raw/badge-accounts_payable.svg +0 -22
  1857. package/tmp/dist/terrier/images/raw/badge-accounts_receivable.svg +0 -24
  1858. package/tmp/dist/terrier/images/raw/badge-applicator_license.svg +0 -28
  1859. package/tmp/dist/terrier/images/raw/badge-autopay.svg +0 -20
  1860. package/tmp/dist/terrier/images/raw/badge-bats.svg +0 -19
  1861. package/tmp/dist/terrier/images/raw/badge-clypboard_hardware.svg +0 -44
  1862. package/tmp/dist/terrier/images/raw/badge-clypboard_project.svg +0 -25
  1863. package/tmp/dist/terrier/images/raw/badge-clypmart.svg +0 -37
  1864. package/tmp/dist/terrier/images/raw/badge-commercial.svg +0 -43
  1865. package/tmp/dist/terrier/images/raw/badge-compliance.svg +0 -26
  1866. package/tmp/dist/terrier/images/raw/badge-contracts.svg +0 -28
  1867. package/tmp/dist/terrier/images/raw/badge-copesan.svg +0 -19
  1868. package/tmp/dist/terrier/images/raw/badge-credit_card.svg +0 -29
  1869. package/tmp/dist/terrier/images/raw/badge-customer_call.svg +0 -26
  1870. package/tmp/dist/terrier/images/raw/badge-customer_text.svg +0 -33
  1871. package/tmp/dist/terrier/images/raw/badge-employee_data.svg +0 -23
  1872. package/tmp/dist/terrier/images/raw/badge-finance.svg +0 -23
  1873. package/tmp/dist/terrier/images/raw/badge-fleet.svg +0 -32
  1874. package/tmp/dist/terrier/images/raw/badge-fumigation.svg +0 -30
  1875. package/tmp/dist/terrier/images/raw/badge-information_technology.svg +0 -25
  1876. package/tmp/dist/terrier/images/raw/badge-irrigation.svg +0 -28
  1877. package/tmp/dist/terrier/images/raw/badge-landscape.svg +0 -24
  1878. package/tmp/dist/terrier/images/raw/badge-marketing.svg +0 -34
  1879. package/tmp/dist/terrier/images/raw/badge-mergers_and_acquisitions.svg +0 -22
  1880. package/tmp/dist/terrier/images/raw/badge-multi_housing.svg +0 -72
  1881. package/tmp/dist/terrier/images/raw/badge-payroll.svg +0 -22
  1882. package/tmp/dist/terrier/images/raw/badge-pest.svg +0 -22
  1883. package/tmp/dist/terrier/images/raw/badge-pro.svg +0 -34
  1884. package/tmp/dist/terrier/images/raw/badge-program.svg +0 -19
  1885. package/tmp/dist/terrier/images/raw/badge-proposals.svg +0 -25
  1886. package/tmp/dist/terrier/images/raw/badge-residential.svg +0 -29
  1887. package/tmp/dist/terrier/images/raw/badge-sales.svg +0 -22
  1888. package/tmp/dist/terrier/images/raw/badge-scripts.svg +0 -24
  1889. package/tmp/dist/terrier/images/raw/badge-termite.svg +0 -22
  1890. package/tmp/dist/terrier/images/raw/badge-wildlife.svg +0 -19
  1891. package/tmp/dist/terrier/images/raw/badge_role-admin.svg +0 -35
  1892. package/tmp/dist/terrier/images/raw/badge_role-handling.svg +0 -35
  1893. package/tmp/dist/terrier/images/raw/badge_role-management.svg +0 -35
  1894. package/tmp/dist/terrier/images/raw/badge_role-ops.svg +0 -35
  1895. package/tmp/dist/terrier/images/raw/badge_role-reporting.svg +0 -35
  1896. package/tmp/dist/terrier/images/raw/badge_role-sales.svg +0 -35
  1897. package/tmp/dist/terrier/images/raw/icon-active.svg +0 -8
  1898. package/tmp/dist/terrier/images/raw/icon-admin.svg +0 -9
  1899. package/tmp/dist/terrier/images/raw/icon-archive.svg +0 -9
  1900. package/tmp/dist/terrier/images/raw/icon-arrow_down.svg +0 -7
  1901. package/tmp/dist/terrier/images/raw/icon-arrow_left.svg +0 -7
  1902. package/tmp/dist/terrier/images/raw/icon-arrow_right.svg +0 -7
  1903. package/tmp/dist/terrier/images/raw/icon-arrow_up.svg +0 -7
  1904. package/tmp/dist/terrier/images/raw/icon-assign.svg +0 -8
  1905. package/tmp/dist/terrier/images/raw/icon-attachment.svg +0 -7
  1906. package/tmp/dist/terrier/images/raw/icon-back.svg +0 -7
  1907. package/tmp/dist/terrier/images/raw/icon-badge.svg +0 -10
  1908. package/tmp/dist/terrier/images/raw/icon-board.svg +0 -20
  1909. package/tmp/dist/terrier/images/raw/icon-bookmark.svg +0 -7
  1910. package/tmp/dist/terrier/images/raw/icon-bookmark_add.svg +0 -9
  1911. package/tmp/dist/terrier/images/raw/icon-bookmark_remove.svg +0 -8
  1912. package/tmp/dist/terrier/images/raw/icon-bookmarked.svg +0 -8
  1913. package/tmp/dist/terrier/images/raw/icon-bookmarks.svg +0 -8
  1914. package/tmp/dist/terrier/images/raw/icon-branch.svg +0 -11
  1915. package/tmp/dist/terrier/images/raw/icon-bug.svg +0 -8
  1916. package/tmp/dist/terrier/images/raw/icon-calculator.svg +0 -31
  1917. package/tmp/dist/terrier/images/raw/icon-checkmark.svg +0 -8
  1918. package/tmp/dist/terrier/images/raw/icon-close.svg +0 -8
  1919. package/tmp/dist/terrier/images/raw/icon-clypboard.svg +0 -9
  1920. package/tmp/dist/terrier/images/raw/icon-comment.svg +0 -12
  1921. package/tmp/dist/terrier/images/raw/icon-complete.svg +0 -8
  1922. package/tmp/dist/terrier/images/raw/icon-dashboard.svg +0 -18
  1923. package/tmp/dist/terrier/images/raw/icon-data_pull.svg +0 -9
  1924. package/tmp/dist/terrier/images/raw/icon-data_update.svg +0 -9
  1925. package/tmp/dist/terrier/images/raw/icon-database.svg +0 -10
  1926. package/tmp/dist/terrier/images/raw/icon-day.svg +0 -9
  1927. package/tmp/dist/terrier/images/raw/icon-delete.svg +0 -11
  1928. package/tmp/dist/terrier/images/raw/icon-documentation.svg +0 -21
  1929. package/tmp/dist/terrier/images/raw/icon-edit.svg +0 -11
  1930. package/tmp/dist/terrier/images/raw/icon-existing_child.svg +0 -11
  1931. package/tmp/dist/terrier/images/raw/icon-existing_parent.svg +0 -11
  1932. package/tmp/dist/terrier/images/raw/icon-feature.svg +0 -7
  1933. package/tmp/dist/terrier/images/raw/icon-flex.svg +0 -6
  1934. package/tmp/dist/terrier/images/raw/icon-forward.svg +0 -7
  1935. package/tmp/dist/terrier/images/raw/icon-github.svg +0 -8
  1936. package/tmp/dist/terrier/images/raw/icon-history.svg +0 -12
  1937. package/tmp/dist/terrier/images/raw/icon-home.svg +0 -8
  1938. package/tmp/dist/terrier/images/raw/icon-hundred.svg +0 -13
  1939. package/tmp/dist/terrier/images/raw/icon-image.svg +0 -9
  1940. package/tmp/dist/terrier/images/raw/icon-inbox.svg +0 -9
  1941. package/tmp/dist/terrier/images/raw/icon-info.svg +0 -11
  1942. package/tmp/dist/terrier/images/raw/icon-internal.svg +0 -9
  1943. package/tmp/dist/terrier/images/raw/icon-issue.svg +0 -10
  1944. package/tmp/dist/terrier/images/raw/icon-lane.svg +0 -9
  1945. package/tmp/dist/terrier/images/raw/icon-lane_asap.svg +0 -9
  1946. package/tmp/dist/terrier/images/raw/icon-lane_days.svg +0 -11
  1947. package/tmp/dist/terrier/images/raw/icon-lane_hours.svg +0 -8
  1948. package/tmp/dist/terrier/images/raw/icon-lane_weeks.svg +0 -10
  1949. package/tmp/dist/terrier/images/raw/icon-lanes_board.svg +0 -10
  1950. package/tmp/dist/terrier/images/raw/icon-level_complete.svg +0 -8
  1951. package/tmp/dist/terrier/images/raw/icon-level_highway.svg +0 -11
  1952. package/tmp/dist/terrier/images/raw/icon-level_on_ramp.svg +0 -8
  1953. package/tmp/dist/terrier/images/raw/icon-level_parking.svg +0 -10
  1954. package/tmp/dist/terrier/images/raw/icon-link.svg +0 -10
  1955. package/tmp/dist/terrier/images/raw/icon-list_view.svg +0 -11
  1956. package/tmp/dist/terrier/images/raw/icon-lol.svg +0 -11
  1957. package/tmp/dist/terrier/images/raw/icon-metrics.svg +0 -11
  1958. package/tmp/dist/terrier/images/raw/icon-minus.svg +0 -8
  1959. package/tmp/dist/terrier/images/raw/icon-new_child.svg +0 -12
  1960. package/tmp/dist/terrier/images/raw/icon-new_parent.svg +0 -12
  1961. package/tmp/dist/terrier/images/raw/icon-night.svg +0 -9
  1962. package/tmp/dist/terrier/images/raw/icon-origin.svg +0 -11
  1963. package/tmp/dist/terrier/images/raw/icon-pending.svg +0 -10
  1964. package/tmp/dist/terrier/images/raw/icon-plot.svg +0 -9
  1965. package/tmp/dist/terrier/images/raw/icon-plus.svg +0 -8
  1966. package/tmp/dist/terrier/images/raw/icon-post.svg +0 -12
  1967. package/tmp/dist/terrier/images/raw/icon-posts.svg +0 -22
  1968. package/tmp/dist/terrier/images/raw/icon-pr_closed.svg +0 -15
  1969. package/tmp/dist/terrier/images/raw/icon-pr_merged.svg +0 -11
  1970. package/tmp/dist/terrier/images/raw/icon-pr_open.svg +0 -12
  1971. package/tmp/dist/terrier/images/raw/icon-prioritized.svg +0 -11
  1972. package/tmp/dist/terrier/images/raw/icon-private.svg +0 -11
  1973. package/tmp/dist/terrier/images/raw/icon-project.svg +0 -24
  1974. package/tmp/dist/terrier/images/raw/icon-public.svg +0 -9
  1975. package/tmp/dist/terrier/images/raw/icon-question.svg +0 -9
  1976. package/tmp/dist/terrier/images/raw/icon-reaction.svg +0 -6
  1977. package/tmp/dist/terrier/images/raw/icon-recent.svg +0 -12
  1978. package/tmp/dist/terrier/images/raw/icon-refresh.svg +0 -11
  1979. package/tmp/dist/terrier/images/raw/icon-related_posts.svg +0 -30
  1980. package/tmp/dist/terrier/images/raw/icon-releases.svg +0 -15
  1981. package/tmp/dist/terrier/images/raw/icon-request.svg +0 -10
  1982. package/tmp/dist/terrier/images/raw/icon-settings.svg +0 -11
  1983. package/tmp/dist/terrier/images/raw/icon-split_view.svg +0 -12
  1984. package/tmp/dist/terrier/images/raw/icon-status.svg +0 -8
  1985. package/tmp/dist/terrier/images/raw/icon-step_demo.svg +0 -10
  1986. package/tmp/dist/terrier/images/raw/icon-step_deploy.svg +0 -15
  1987. package/tmp/dist/terrier/images/raw/icon-step_develop.svg +0 -12
  1988. package/tmp/dist/terrier/images/raw/icon-step_investigate.svg +0 -14
  1989. package/tmp/dist/terrier/images/raw/icon-step_none.svg +0 -15
  1990. package/tmp/dist/terrier/images/raw/icon-step_required.svg +0 -15
  1991. package/tmp/dist/terrier/images/raw/icon-step_review.svg +0 -11
  1992. package/tmp/dist/terrier/images/raw/icon-step_test.svg +0 -14
  1993. package/tmp/dist/terrier/images/raw/icon-steps.svg +0 -18
  1994. package/tmp/dist/terrier/images/raw/icon-steps_board.svg +0 -19
  1995. package/tmp/dist/terrier/images/raw/icon-subscribe.svg +0 -10
  1996. package/tmp/dist/terrier/images/raw/icon-support.svg +0 -14
  1997. package/tmp/dist/terrier/images/raw/icon-team.svg +0 -20
  1998. package/tmp/dist/terrier/images/raw/icon-terrier.svg +0 -7
  1999. package/tmp/dist/terrier/images/raw/icon-thumbs_up.svg +0 -1
  2000. package/tmp/dist/terrier/images/raw/icon-type.svg +0 -15
  2001. package/tmp/dist/terrier/images/raw/icon-unprioritized.svg +0 -10
  2002. package/tmp/dist/terrier/images/raw/icon-upload.svg +0 -8
  2003. package/tmp/dist/terrier/images/raw/icon-upvote.svg +0 -7
  2004. package/tmp/dist/terrier/images/raw/icon-user.svg +0 -9
  2005. package/tmp/dist/terrier/images/raw/icon-users.svg +0 -14
  2006. package/tmp/dist/terrier/images/raw/icon-website.svg +0 -13
  2007. package/tmp/dist/terrier/images/raw/icon-week.svg +0 -9
  2008. package/tmp/dist/terrier/images/raw/terrier-hub-favicon-alert.png +0 -0
  2009. package/tmp/dist/terrier/images/raw/terrier-hub-favicon-dark.png +0 -0
  2010. package/tmp/dist/terrier/images/raw/terrier-hub-favicon.png +0 -0
  2011. package/tmp/dist/terrier/images/raw/terrier-hub-favicon.svg +0 -29
  2012. package/tmp/dist/terrier/images/raw/terrier-hub-icon-dark.svg +0 -23
  2013. package/tmp/dist/terrier/images/raw/terrier-hub-icon-light.png +0 -0
  2014. package/tmp/dist/terrier/images/raw/terrier-hub-icon-light.svg +0 -23
  2015. package/tmp/dist/terrier/images/raw/terrier-hub-loader.svg +0 -54
  2016. package/tmp/dist/terrier/images/raw/terrier-hub-logo-dark.svg +0 -27
  2017. package/tmp/dist/terrier/images/raw/terrier-hub-logo-light.png +0 -0
  2018. package/tmp/dist/terrier/images/raw/terrier-hub-logo-light.svg +0 -28
  2019. package/tmp/dist/terrier/lightbox.ts +0 -96
  2020. package/tmp/dist/terrier/list-viewer.ts +0 -350
  2021. package/tmp/dist/terrier/loading.ts +0 -69
  2022. package/tmp/dist/terrier/logging.ts +0 -83
  2023. package/tmp/dist/terrier/modals.ts +0 -204
  2024. package/tmp/dist/terrier/multi-circular-progress.ts +0 -87
  2025. package/tmp/dist/terrier/overlays.ts +0 -353
  2026. package/tmp/dist/terrier/parts/confirm-button-part.ts +0 -58
  2027. package/tmp/dist/terrier/parts/content-part.ts +0 -148
  2028. package/tmp/dist/terrier/parts/dropzone-part.ts +0 -91
  2029. package/tmp/dist/terrier/parts/glyp-picker.ts +0 -99
  2030. package/tmp/dist/terrier/parts/not-found-page.ts +0 -20
  2031. package/tmp/dist/terrier/parts/page-part.ts +0 -237
  2032. package/tmp/dist/terrier/parts/panel-part.ts +0 -109
  2033. package/tmp/dist/terrier/parts/select-field-part.ts +0 -213
  2034. package/tmp/dist/terrier/parts/terrier-form-part.ts +0 -23
  2035. package/tmp/dist/terrier/parts/terrier-part.ts +0 -206
  2036. package/tmp/dist/terrier/plugins/collapsible-plugin.ts +0 -118
  2037. package/tmp/dist/terrier/plugins/load-on-scroll-plugin.ts +0 -101
  2038. package/tmp/dist/terrier/progress.ts +0 -71
  2039. package/tmp/dist/terrier/schedules.ts +0 -278
  2040. package/tmp/dist/terrier/schema.ts +0 -135
  2041. package/tmp/dist/terrier/sheets.ts +0 -144
  2042. package/tmp/dist/terrier/tabs.ts +0 -225
  2043. package/tmp/dist/terrier/theme.ts +0 -150
  2044. package/tmp/dist/terrier/toasts.ts +0 -87
  2045. package/tmp/dist/terrier/tooltips.ts +0 -72
  2046. package/tmp/dist/terrier/util-types.ts +0 -4
  2047. package/tmp/dist/terrier/utils.ts +0 -38
  2048. package/tmp/dist/tsconfig.json +0 -21
  2049. package/tmp/restart.txt +0 -0
  2050. package/vendor/assets/javascripts/difflib-browser.js +0 -5
  2051. package/vendor/assets/javascripts/highlight.pack.js +0 -740
  2052. package/vendor/assets/javascripts/morphdom.js +0 -759
  2053. /package/{app/frontend/data-dive → data-dive}/dd-app.ts +0 -0
  2054. /package/{app/frontend/data-dive → data-dive}/dd-db.ts +0 -0
  2055. /package/{app/frontend/data-dive → data-dive}/dd-routes.ts +0 -0
  2056. /package/{app/frontend/data-dive → data-dive}/dd-session.ts +0 -0
  2057. /package/{app/frontend/data-dive → data-dive}/dd-user.ts +0 -0
  2058. /package/{app/frontend/data-dive → data-dive}/dives/dive-delivery.ts +0 -0
  2059. /package/{app/frontend/data-dive → data-dive}/dives/dive-editor.ts +0 -0
  2060. /package/{app/frontend/data-dive → data-dive}/dives/dive-list.ts +0 -0
  2061. /package/{app/frontend/data-dive → data-dive}/dives/dive-page.ts +0 -0
  2062. /package/{app/frontend/data-dive → data-dive}/dives/dive-runs.ts +0 -0
  2063. /package/{app/frontend/data-dive → data-dive}/dives/dive-settings.ts +0 -0
  2064. /package/{app/frontend/data-dive → data-dive}/dives/dives.ts +0 -0
  2065. /package/{app/frontend/data-dive → data-dive}/dives/group-editor.ts +0 -0
  2066. /package/{app/frontend/data-dive → data-dive}/gen/models.ts +0 -0
  2067. /package/{app/frontend/data-dive → data-dive}/plots/dive-plot-axes.ts +0 -0
  2068. /package/{app/frontend/data-dive → data-dive}/plots/dive-plot-editor.ts +0 -0
  2069. /package/{app/frontend/data-dive → data-dive}/plots/dive-plot-layouts.ts +0 -0
  2070. /package/{app/frontend/data-dive → data-dive}/plots/dive-plot-list.ts +0 -0
  2071. /package/{app/frontend/data-dive → data-dive}/plots/dive-plot-render-part.ts +0 -0
  2072. /package/{app/frontend/data-dive → data-dive}/plots/dive-plot-styles.ts +0 -0
  2073. /package/{app/frontend/data-dive → data-dive}/plots/dive-plot-traces.ts +0 -0
  2074. /package/{app/frontend/data-dive → data-dive}/plots/dive-plots.ts +0 -0
  2075. /package/{app/frontend/data-dive → data-dive}/queries/column-order-modal.ts +0 -0
  2076. /package/{app/frontend/data-dive → data-dive}/queries/columns.ts +0 -0
  2077. /package/{app/frontend/data-dive → data-dive}/queries/dates.ts +0 -0
  2078. /package/{app/frontend/data-dive → data-dive}/queries/filters.ts +0 -0
  2079. /package/{app/frontend/data-dive → data-dive}/queries/queries.ts +0 -0
  2080. /package/{app/frontend/data-dive → data-dive}/queries/query-editor.ts +0 -0
  2081. /package/{app/frontend/data-dive → data-dive}/queries/query-form.ts +0 -0
  2082. /package/{app/frontend/data-dive → data-dive}/queries/row-order-modal.ts +0 -0
  2083. /package/{app/frontend/data-dive → data-dive}/queries/tables.ts +0 -0
  2084. /package/{app/frontend/data-dive → data-dive}/queries/test/dates.test.ts +0 -0
  2085. /package/{app/frontend/data-dive → data-dive}/queries/validation.ts +0 -0
  2086. /package/{app/frontend/terrier → terrier}/README.md +0 -0
  2087. /package/{app/frontend/terrier → terrier}/api-subscriber.ts +0 -0
  2088. /package/{app/frontend/terrier → terrier}/api.ts +0 -0
  2089. /package/{app/frontend/terrier → terrier}/app.ts +0 -0
  2090. /package/{app/frontend/terrier → terrier}/attachments.ts +0 -0
  2091. /package/{app/frontend/terrier → terrier}/db-client.ts +0 -0
  2092. /package/{app/frontend/terrier → terrier}/definitions/tiny-modal.d.ts +0 -0
  2093. /package/{app/frontend/terrier → terrier}/dropdowns.ts +0 -0
  2094. /package/{app/frontend/terrier → terrier}/emails.ts +0 -0
  2095. /package/{app/frontend/terrier → terrier}/format.ts +0 -0
  2096. /package/{app/frontend/terrier → terrier}/forms.ts +0 -0
  2097. /package/{app/frontend/terrier → terrier}/fragments.ts +0 -0
  2098. /package/{app/frontend/terrier → terrier}/gen/badges.ts +0 -0
  2099. /package/{app/frontend/terrier → terrier}/gen/hub-icons.ts +0 -0
  2100. /package/{app/frontend/terrier → terrier}/hints.ts +0 -0
  2101. /package/{app/frontend/terrier → terrier}/ids.ts +0 -0
  2102. /package/{app/frontend/terrier → terrier}/images/badges/badge-accounts_payable-handling.svg +0 -0
  2103. /package/{app/frontend/terrier → terrier}/images/badges/badge-accounts_receivable-handling.svg +0 -0
  2104. /package/{app/frontend/terrier → terrier}/images/badges/badge-applicator_license-admin.svg +0 -0
  2105. /package/{app/frontend/terrier → terrier}/images/badges/badge-autopay-admin.svg +0 -0
  2106. /package/{app/frontend/terrier → terrier}/images/badges/badge-autopay-handling.svg +0 -0
  2107. /package/{app/frontend/terrier → terrier}/images/badges/badge-bats-admin.svg +0 -0
  2108. /package/{app/frontend/terrier → terrier}/images/badges/badge-bats-management.svg +0 -0
  2109. /package/{app/frontend/terrier → terrier}/images/badges/badge-bats-ops.svg +0 -0
  2110. /package/{app/frontend/terrier → terrier}/images/badges/badge-bats-sales.svg +0 -0
  2111. /package/{app/frontend/terrier → terrier}/images/badges/badge-clypboard_hardware-admin.svg +0 -0
  2112. /package/{app/frontend/terrier → terrier}/images/badges/badge-clypboard_project-admin.svg +0 -0
  2113. /package/{app/frontend/terrier → terrier}/images/badges/badge-clypmart-admin.svg +0 -0
  2114. /package/{app/frontend/terrier → terrier}/images/badges/badge-commercial-admin.svg +0 -0
  2115. /package/{app/frontend/terrier → terrier}/images/badges/badge-commercial-management.svg +0 -0
  2116. /package/{app/frontend/terrier → terrier}/images/badges/badge-commercial-ops.svg +0 -0
  2117. /package/{app/frontend/terrier → terrier}/images/badges/badge-commercial-sales.svg +0 -0
  2118. /package/{app/frontend/terrier → terrier}/images/badges/badge-compliance-admin.svg +0 -0
  2119. /package/{app/frontend/terrier → terrier}/images/badges/badge-contracts-admin.svg +0 -0
  2120. /package/{app/frontend/terrier → terrier}/images/badges/badge-contracts-reporting.svg +0 -0
  2121. /package/{app/frontend/terrier → terrier}/images/badges/badge-copesan-admin.svg +0 -0
  2122. /package/{app/frontend/terrier → terrier}/images/badges/badge-credit_card-admin.svg +0 -0
  2123. /package/{app/frontend/terrier → terrier}/images/badges/badge-customer_call-handling.svg +0 -0
  2124. /package/{app/frontend/terrier → terrier}/images/badges/badge-customer_text-handling.svg +0 -0
  2125. /package/{app/frontend/terrier → terrier}/images/badges/badge-employee_data-admin.svg +0 -0
  2126. /package/{app/frontend/terrier → terrier}/images/badges/badge-employee_data-handling.svg +0 -0
  2127. /package/{app/frontend/terrier → terrier}/images/badges/badge-employee_data-reporting.svg +0 -0
  2128. /package/{app/frontend/terrier → terrier}/images/badges/badge-finance-admin.svg +0 -0
  2129. /package/{app/frontend/terrier → terrier}/images/badges/badge-finance-reporting.svg +0 -0
  2130. /package/{app/frontend/terrier → terrier}/images/badges/badge-fleet-admin.svg +0 -0
  2131. /package/{app/frontend/terrier → terrier}/images/badges/badge-fumigation-admin.svg +0 -0
  2132. /package/{app/frontend/terrier → terrier}/images/badges/badge-fumigation-management.svg +0 -0
  2133. /package/{app/frontend/terrier → terrier}/images/badges/badge-fumigation-ops.svg +0 -0
  2134. /package/{app/frontend/terrier → terrier}/images/badges/badge-information_technology-admin.svg +0 -0
  2135. /package/{app/frontend/terrier → terrier}/images/badges/badge-information_technology-management.svg +0 -0
  2136. /package/{app/frontend/terrier → terrier}/images/badges/badge-irrigation-admin.svg +0 -0
  2137. /package/{app/frontend/terrier → terrier}/images/badges/badge-irrigation-management.svg +0 -0
  2138. /package/{app/frontend/terrier → terrier}/images/badges/badge-irrigation-ops.svg +0 -0
  2139. /package/{app/frontend/terrier → terrier}/images/badges/badge-irrigation-sales.svg +0 -0
  2140. /package/{app/frontend/terrier → terrier}/images/badges/badge-landscape-admin.svg +0 -0
  2141. /package/{app/frontend/terrier → terrier}/images/badges/badge-landscape-management.svg +0 -0
  2142. /package/{app/frontend/terrier → terrier}/images/badges/badge-landscape-ops.svg +0 -0
  2143. /package/{app/frontend/terrier → terrier}/images/badges/badge-landscape-sales.svg +0 -0
  2144. /package/{app/frontend/terrier → terrier}/images/badges/badge-marketing-admin.svg +0 -0
  2145. /package/{app/frontend/terrier → terrier}/images/badges/badge-mergers_and_acquisitions-admin.svg +0 -0
  2146. /package/{app/frontend/terrier → terrier}/images/badges/badge-mergers_and_acquisitions-reporting.svg +0 -0
  2147. /package/{app/frontend/terrier → terrier}/images/badges/badge-multi_housing-admin.svg +0 -0
  2148. /package/{app/frontend/terrier → terrier}/images/badges/badge-multi_housing-management.svg +0 -0
  2149. /package/{app/frontend/terrier → terrier}/images/badges/badge-multi_housing-ops.svg +0 -0
  2150. /package/{app/frontend/terrier → terrier}/images/badges/badge-multi_housing-sales.svg +0 -0
  2151. /package/{app/frontend/terrier → terrier}/images/badges/badge-payroll-admin.svg +0 -0
  2152. /package/{app/frontend/terrier → terrier}/images/badges/badge-payroll-reporting.svg +0 -0
  2153. /package/{app/frontend/terrier → terrier}/images/badges/badge-pest-admin.svg +0 -0
  2154. /package/{app/frontend/terrier → terrier}/images/badges/badge-pest-management.svg +0 -0
  2155. /package/{app/frontend/terrier → terrier}/images/badges/badge-pest-ops.svg +0 -0
  2156. /package/{app/frontend/terrier → terrier}/images/badges/badge-pest-sales.svg +0 -0
  2157. /package/{app/frontend/terrier → terrier}/images/badges/badge-pro-admin.svg +0 -0
  2158. /package/{app/frontend/terrier → terrier}/images/badges/badge-pro-management.svg +0 -0
  2159. /package/{app/frontend/terrier → terrier}/images/badges/badge-pro-ops.svg +0 -0
  2160. /package/{app/frontend/terrier → terrier}/images/badges/badge-pro-sales.svg +0 -0
  2161. /package/{app/frontend/terrier → terrier}/images/badges/badge-program-admin.svg +0 -0
  2162. /package/{app/frontend/terrier → terrier}/images/badges/badge-proposals-handling.svg +0 -0
  2163. /package/{app/frontend/terrier → terrier}/images/badges/badge-residential-admin.svg +0 -0
  2164. /package/{app/frontend/terrier → terrier}/images/badges/badge-residential-management.svg +0 -0
  2165. /package/{app/frontend/terrier → terrier}/images/badges/badge-residential-ops.svg +0 -0
  2166. /package/{app/frontend/terrier → terrier}/images/badges/badge-residential-sales.svg +0 -0
  2167. /package/{app/frontend/terrier → terrier}/images/badges/badge-sales-management.svg +0 -0
  2168. /package/{app/frontend/terrier → terrier}/images/badges/badge-sales-reporting.svg +0 -0
  2169. /package/{app/frontend/terrier → terrier}/images/badges/badge-scripts-admin.svg +0 -0
  2170. /package/{app/frontend/terrier → terrier}/images/badges/badge-scripts-reporting.svg +0 -0
  2171. /package/{app/frontend/terrier → terrier}/images/badges/badge-termite-admin.svg +0 -0
  2172. /package/{app/frontend/terrier → terrier}/images/badges/badge-termite-management.svg +0 -0
  2173. /package/{app/frontend/terrier → terrier}/images/badges/badge-termite-ops.svg +0 -0
  2174. /package/{app/frontend/terrier → terrier}/images/badges/badge-termite-sales.svg +0 -0
  2175. /package/{app/frontend/terrier → terrier}/images/badges/badge-wildlife-admin.svg +0 -0
  2176. /package/{app/frontend/terrier → terrier}/images/badges/badge-wildlife-management.svg +0 -0
  2177. /package/{app/frontend/terrier → terrier}/images/badges/badge-wildlife-ops.svg +0 -0
  2178. /package/{app/frontend/terrier → terrier}/images/badges/badge-wildlife-sales.svg +0 -0
  2179. /package/{app/assets/hub_icons → terrier/images/icons}/active.svg +0 -0
  2180. /package/{app/assets/hub_icons → terrier/images/icons}/admin.svg +0 -0
  2181. /package/{app/assets/hub_icons → terrier/images/icons}/archive.svg +0 -0
  2182. /package/{app/assets/hub_icons → terrier/images/icons}/arrow_down.svg +0 -0
  2183. /package/{app/assets/hub_icons → terrier/images/icons}/arrow_left.svg +0 -0
  2184. /package/{app/assets/hub_icons → terrier/images/icons}/arrow_right.svg +0 -0
  2185. /package/{app/assets/hub_icons → terrier/images/icons}/arrow_up.svg +0 -0
  2186. /package/{app/assets/hub_icons → terrier/images/icons}/assign.svg +0 -0
  2187. /package/{app/assets/hub_icons → terrier/images/icons}/attachment.svg +0 -0
  2188. /package/{app/assets/hub_icons → terrier/images/icons}/back.svg +0 -0
  2189. /package/{app/assets/hub_icons → terrier/images/icons}/badge.svg +0 -0
  2190. /package/{app/assets/hub_icons → terrier/images/icons}/board.svg +0 -0
  2191. /package/{app/assets/hub_icons → terrier/images/icons}/bookmark.svg +0 -0
  2192. /package/{app/assets/hub_icons → terrier/images/icons}/bookmark_add.svg +0 -0
  2193. /package/{app/assets/hub_icons → terrier/images/icons}/bookmark_remove.svg +0 -0
  2194. /package/{app/assets/hub_icons → terrier/images/icons}/bookmarked.svg +0 -0
  2195. /package/{app/assets/hub_icons → terrier/images/icons}/bookmarks.svg +0 -0
  2196. /package/{app/assets/hub_icons → terrier/images/icons}/branch.svg +0 -0
  2197. /package/{app/assets/hub_icons → terrier/images/icons}/bug.svg +0 -0
  2198. /package/{app/assets/hub_icons → terrier/images/icons}/calculator.svg +0 -0
  2199. /package/{app/assets/hub_icons → terrier/images/icons}/checkmark.svg +0 -0
  2200. /package/{app/assets/hub_icons → terrier/images/icons}/close.svg +0 -0
  2201. /package/{app/assets/hub_icons → terrier/images/icons}/clypboard.svg +0 -0
  2202. /package/{app/assets/hub_icons → terrier/images/icons}/comment.svg +0 -0
  2203. /package/{app/assets/hub_icons → terrier/images/icons}/complete.svg +0 -0
  2204. /package/{app/assets/hub_icons → terrier/images/icons}/dashboard.svg +0 -0
  2205. /package/{app/assets/hub_icons → terrier/images/icons}/data_pull.svg +0 -0
  2206. /package/{app/assets/hub_icons → terrier/images/icons}/data_update.svg +0 -0
  2207. /package/{app/assets/hub_icons → terrier/images/icons}/database.svg +0 -0
  2208. /package/{app/assets/hub_icons → terrier/images/icons}/day.svg +0 -0
  2209. /package/{app/assets/hub_icons → terrier/images/icons}/delete.svg +0 -0
  2210. /package/{app/assets/hub_icons → terrier/images/icons}/documentation.svg +0 -0
  2211. /package/{app/assets/hub_icons → terrier/images/icons}/edit.svg +0 -0
  2212. /package/{app/assets/hub_icons → terrier/images/icons}/existing_child.svg +0 -0
  2213. /package/{app/assets/hub_icons → terrier/images/icons}/existing_parent.svg +0 -0
  2214. /package/{app/assets/hub_icons → terrier/images/icons}/feature.svg +0 -0
  2215. /package/{app/assets/hub_icons → terrier/images/icons}/flex.svg +0 -0
  2216. /package/{app/assets/hub_icons → terrier/images/icons}/forward.svg +0 -0
  2217. /package/{app/assets/hub_icons → terrier/images/icons}/github.svg +0 -0
  2218. /package/{app/assets/hub_icons → terrier/images/icons}/history.svg +0 -0
  2219. /package/{app/assets/hub_icons → terrier/images/icons}/home.svg +0 -0
  2220. /package/{app/assets/hub_icons → terrier/images/icons}/hundred.svg +0 -0
  2221. /package/{app/assets/hub_icons → terrier/images/icons}/image.svg +0 -0
  2222. /package/{app/assets/hub_icons → terrier/images/icons}/inbox.svg +0 -0
  2223. /package/{app/assets/hub_icons → terrier/images/icons}/info.svg +0 -0
  2224. /package/{app/assets/hub_icons → terrier/images/icons}/internal.svg +0 -0
  2225. /package/{app/assets/hub_icons → terrier/images/icons}/issue.svg +0 -0
  2226. /package/{app/assets/hub_icons → terrier/images/icons}/lane.svg +0 -0
  2227. /package/{app/assets/hub_icons → terrier/images/icons}/lane_asap.svg +0 -0
  2228. /package/{app/assets/hub_icons → terrier/images/icons}/lane_days.svg +0 -0
  2229. /package/{app/assets/hub_icons → terrier/images/icons}/lane_hours.svg +0 -0
  2230. /package/{app/assets/hub_icons → terrier/images/icons}/lane_weeks.svg +0 -0
  2231. /package/{app/assets/hub_icons → terrier/images/icons}/lanes_board.svg +0 -0
  2232. /package/{app/assets/hub_icons → terrier/images/icons}/level_complete.svg +0 -0
  2233. /package/{app/assets/hub_icons → terrier/images/icons}/level_highway.svg +0 -0
  2234. /package/{app/assets/hub_icons → terrier/images/icons}/level_on_ramp.svg +0 -0
  2235. /package/{app/assets/hub_icons → terrier/images/icons}/level_parking.svg +0 -0
  2236. /package/{app/assets/hub_icons → terrier/images/icons}/link.svg +0 -0
  2237. /package/{app/assets/hub_icons → terrier/images/icons}/list_view.svg +0 -0
  2238. /package/{app/assets/hub_icons → terrier/images/icons}/lol.svg +0 -0
  2239. /package/{app/assets/hub_icons → terrier/images/icons}/metrics.svg +0 -0
  2240. /package/{app/assets/hub_icons → terrier/images/icons}/minus.svg +0 -0
  2241. /package/{app/assets/hub_icons → terrier/images/icons}/new_child.svg +0 -0
  2242. /package/{app/assets/hub_icons → terrier/images/icons}/new_parent.svg +0 -0
  2243. /package/{app/assets/hub_icons → terrier/images/icons}/night.svg +0 -0
  2244. /package/{app/assets/hub_icons → terrier/images/icons}/origin.svg +0 -0
  2245. /package/{app/assets/hub_icons → terrier/images/icons}/pending.svg +0 -0
  2246. /package/{app/assets/hub_icons → terrier/images/icons}/plot.svg +0 -0
  2247. /package/{app/assets/hub_icons → terrier/images/icons}/plus.svg +0 -0
  2248. /package/{app/assets/hub_icons → terrier/images/icons}/post.svg +0 -0
  2249. /package/{app/assets/hub_icons → terrier/images/icons}/posts.svg +0 -0
  2250. /package/{app/assets/hub_icons → terrier/images/icons}/pr_closed.svg +0 -0
  2251. /package/{app/assets/hub_icons → terrier/images/icons}/pr_merged.svg +0 -0
  2252. /package/{app/assets/hub_icons → terrier/images/icons}/pr_open.svg +0 -0
  2253. /package/{app/assets/hub_icons → terrier/images/icons}/prioritized.svg +0 -0
  2254. /package/{app/assets/hub_icons → terrier/images/icons}/private.svg +0 -0
  2255. /package/{app/assets/hub_icons → terrier/images/icons}/project.svg +0 -0
  2256. /package/{app/assets/hub_icons → terrier/images/icons}/public.svg +0 -0
  2257. /package/{app/assets/hub_icons → terrier/images/icons}/question.svg +0 -0
  2258. /package/{app/assets/hub_icons → terrier/images/icons}/reaction.svg +0 -0
  2259. /package/{app/assets/hub_icons → terrier/images/icons}/recent.svg +0 -0
  2260. /package/{app/assets/hub_icons → terrier/images/icons}/refresh.svg +0 -0
  2261. /package/{app/assets/hub_icons → terrier/images/icons}/related_posts.svg +0 -0
  2262. /package/{app/assets/hub_icons → terrier/images/icons}/releases.svg +0 -0
  2263. /package/{app/assets/hub_icons → terrier/images/icons}/request.svg +0 -0
  2264. /package/{app/assets/hub_icons → terrier/images/icons}/settings.svg +0 -0
  2265. /package/{app/assets/hub_icons → terrier/images/icons}/split_view.svg +0 -0
  2266. /package/{app/assets/hub_icons → terrier/images/icons}/status.svg +0 -0
  2267. /package/{app/assets/hub_icons → terrier/images/icons}/step_demo.svg +0 -0
  2268. /package/{app/assets/hub_icons → terrier/images/icons}/step_deploy.svg +0 -0
  2269. /package/{app/assets/hub_icons → terrier/images/icons}/step_develop.svg +0 -0
  2270. /package/{app/assets/hub_icons → terrier/images/icons}/step_investigate.svg +0 -0
  2271. /package/{app/assets/hub_icons → terrier/images/icons}/step_none.svg +0 -0
  2272. /package/{app/assets/hub_icons → terrier/images/icons}/step_required.svg +0 -0
  2273. /package/{app/assets/hub_icons → terrier/images/icons}/step_review.svg +0 -0
  2274. /package/{app/assets/hub_icons → terrier/images/icons}/step_test.svg +0 -0
  2275. /package/{app/assets/hub_icons → terrier/images/icons}/steps.svg +0 -0
  2276. /package/{app/assets/hub_icons → terrier/images/icons}/steps_board.svg +0 -0
  2277. /package/{app/assets/hub_icons → terrier/images/icons}/subscribe.svg +0 -0
  2278. /package/{app/assets/hub_icons → terrier/images/icons}/support.svg +0 -0
  2279. /package/{app/assets/hub_icons → terrier/images/icons}/team.svg +0 -0
  2280. /package/{app/assets/hub_icons → terrier/images/icons}/terrier.svg +0 -0
  2281. /package/{app/assets/hub_icons → terrier/images/icons}/thumbs_up.svg +0 -0
  2282. /package/{app/assets/hub_icons → terrier/images/icons}/type.svg +0 -0
  2283. /package/{app/assets/hub_icons → terrier/images/icons}/unprioritized.svg +0 -0
  2284. /package/{app/assets/hub_icons → terrier/images/icons}/upload.svg +0 -0
  2285. /package/{app/assets/hub_icons → terrier/images/icons}/upvote.svg +0 -0
  2286. /package/{app/assets/hub_icons → terrier/images/icons}/user.svg +0 -0
  2287. /package/{app/assets/hub_icons → terrier/images/icons}/users.svg +0 -0
  2288. /package/{app/assets/hub_icons → terrier/images/icons}/website.svg +0 -0
  2289. /package/{app/assets/hub_icons → terrier/images/icons}/week.svg +0 -0
  2290. /package/{app/frontend/terrier → terrier}/images/optimized/badge-accounts_payable.svg +0 -0
  2291. /package/{app/frontend/terrier → terrier}/images/optimized/badge-accounts_receivable.svg +0 -0
  2292. /package/{app/frontend/terrier → terrier}/images/optimized/badge-applicator_license.svg +0 -0
  2293. /package/{app/frontend/terrier → terrier}/images/optimized/badge-autopay.svg +0 -0
  2294. /package/{app/frontend/terrier → terrier}/images/optimized/badge-bats.svg +0 -0
  2295. /package/{app/frontend/terrier → terrier}/images/optimized/badge-clypboard_hardware.svg +0 -0
  2296. /package/{app/frontend/terrier → terrier}/images/optimized/badge-clypboard_project.svg +0 -0
  2297. /package/{app/frontend/terrier → terrier}/images/optimized/badge-clypmart.svg +0 -0
  2298. /package/{app/frontend/terrier → terrier}/images/optimized/badge-commercial.svg +0 -0
  2299. /package/{app/frontend/terrier → terrier}/images/optimized/badge-compliance.svg +0 -0
  2300. /package/{app/frontend/terrier → terrier}/images/optimized/badge-contracts.svg +0 -0
  2301. /package/{app/frontend/terrier → terrier}/images/optimized/badge-copesan.svg +0 -0
  2302. /package/{app/frontend/terrier → terrier}/images/optimized/badge-credit_card.svg +0 -0
  2303. /package/{app/frontend/terrier → terrier}/images/optimized/badge-customer_call.svg +0 -0
  2304. /package/{app/frontend/terrier → terrier}/images/optimized/badge-customer_text.svg +0 -0
  2305. /package/{app/frontend/terrier → terrier}/images/optimized/badge-employee_data.svg +0 -0
  2306. /package/{app/frontend/terrier → terrier}/images/optimized/badge-finance.svg +0 -0
  2307. /package/{app/frontend/terrier → terrier}/images/optimized/badge-fleet.svg +0 -0
  2308. /package/{app/frontend/terrier → terrier}/images/optimized/badge-fumigation.svg +0 -0
  2309. /package/{app/frontend/terrier → terrier}/images/optimized/badge-information_technology.svg +0 -0
  2310. /package/{app/frontend/terrier → terrier}/images/optimized/badge-irrigation.svg +0 -0
  2311. /package/{app/frontend/terrier → terrier}/images/optimized/badge-landscape.svg +0 -0
  2312. /package/{app/frontend/terrier → terrier}/images/optimized/badge-marketing.svg +0 -0
  2313. /package/{app/frontend/terrier → terrier}/images/optimized/badge-mergers_and_acquisitions.svg +0 -0
  2314. /package/{app/frontend/terrier → terrier}/images/optimized/badge-multi_housing.svg +0 -0
  2315. /package/{app/frontend/terrier → terrier}/images/optimized/badge-payroll.svg +0 -0
  2316. /package/{app/frontend/terrier → terrier}/images/optimized/badge-pest.svg +0 -0
  2317. /package/{app/frontend/terrier → terrier}/images/optimized/badge-pro.svg +0 -0
  2318. /package/{app/frontend/terrier → terrier}/images/optimized/badge-program.svg +0 -0
  2319. /package/{app/frontend/terrier → terrier}/images/optimized/badge-proposals.svg +0 -0
  2320. /package/{app/frontend/terrier → terrier}/images/optimized/badge-residential.svg +0 -0
  2321. /package/{app/frontend/terrier → terrier}/images/optimized/badge-sales.svg +0 -0
  2322. /package/{app/frontend/terrier → terrier}/images/optimized/badge-scripts.svg +0 -0
  2323. /package/{app/frontend/terrier → terrier}/images/optimized/badge-termite.svg +0 -0
  2324. /package/{app/frontend/terrier → terrier}/images/optimized/badge-wildlife.svg +0 -0
  2325. /package/{app/frontend/terrier → terrier}/images/optimized/badge_role-admin.svg +0 -0
  2326. /package/{app/frontend/terrier → terrier}/images/optimized/badge_role-handling.svg +0 -0
  2327. /package/{app/frontend/terrier → terrier}/images/optimized/badge_role-management.svg +0 -0
  2328. /package/{app/frontend/terrier → terrier}/images/optimized/badge_role-ops.svg +0 -0
  2329. /package/{app/frontend/terrier → terrier}/images/optimized/badge_role-reporting.svg +0 -0
  2330. /package/{app/frontend/terrier → terrier}/images/optimized/badge_role-sales.svg +0 -0
  2331. /package/{app/frontend/terrier → terrier}/images/optimized/icon-active.svg +0 -0
  2332. /package/{app/frontend/terrier → terrier}/images/optimized/icon-admin.svg +0 -0
  2333. /package/{app/frontend/terrier → terrier}/images/optimized/icon-archive.svg +0 -0
  2334. /package/{app/frontend/terrier → terrier}/images/optimized/icon-arrow_down.svg +0 -0
  2335. /package/{app/frontend/terrier → terrier}/images/optimized/icon-arrow_left.svg +0 -0
  2336. /package/{app/frontend/terrier → terrier}/images/optimized/icon-arrow_right.svg +0 -0
  2337. /package/{app/frontend/terrier → terrier}/images/optimized/icon-arrow_up.svg +0 -0
  2338. /package/{app/frontend/terrier → terrier}/images/optimized/icon-assign.svg +0 -0
  2339. /package/{app/frontend/terrier → terrier}/images/optimized/icon-attachment.svg +0 -0
  2340. /package/{app/frontend/terrier → terrier}/images/optimized/icon-back.svg +0 -0
  2341. /package/{app/frontend/terrier → terrier}/images/optimized/icon-badge.svg +0 -0
  2342. /package/{app/frontend/terrier → terrier}/images/optimized/icon-board.svg +0 -0
  2343. /package/{app/frontend/terrier → terrier}/images/optimized/icon-bookmark.svg +0 -0
  2344. /package/{app/frontend/terrier → terrier}/images/optimized/icon-bookmark_add.svg +0 -0
  2345. /package/{app/frontend/terrier → terrier}/images/optimized/icon-bookmark_remove.svg +0 -0
  2346. /package/{app/frontend/terrier → terrier}/images/optimized/icon-bookmarked.svg +0 -0
  2347. /package/{app/frontend/terrier → terrier}/images/optimized/icon-bookmarks.svg +0 -0
  2348. /package/{app/frontend/terrier → terrier}/images/optimized/icon-branch.svg +0 -0
  2349. /package/{app/frontend/terrier → terrier}/images/optimized/icon-bug.svg +0 -0
  2350. /package/{app/frontend/terrier → terrier}/images/optimized/icon-calculator.svg +0 -0
  2351. /package/{app/frontend/terrier → terrier}/images/optimized/icon-checkmark.svg +0 -0
  2352. /package/{app/frontend/terrier → terrier}/images/optimized/icon-close.svg +0 -0
  2353. /package/{app/frontend/terrier → terrier}/images/optimized/icon-clypboard.svg +0 -0
  2354. /package/{app/frontend/terrier → terrier}/images/optimized/icon-comment.svg +0 -0
  2355. /package/{app/frontend/terrier → terrier}/images/optimized/icon-complete.svg +0 -0
  2356. /package/{app/frontend/terrier → terrier}/images/optimized/icon-dashboard.svg +0 -0
  2357. /package/{app/frontend/terrier → terrier}/images/optimized/icon-data_pull.svg +0 -0
  2358. /package/{app/frontend/terrier → terrier}/images/optimized/icon-data_update.svg +0 -0
  2359. /package/{app/frontend/terrier → terrier}/images/optimized/icon-database.svg +0 -0
  2360. /package/{app/frontend/terrier → terrier}/images/optimized/icon-day.svg +0 -0
  2361. /package/{app/frontend/terrier → terrier}/images/optimized/icon-delete.svg +0 -0
  2362. /package/{app/frontend/terrier → terrier}/images/optimized/icon-documentation.svg +0 -0
  2363. /package/{app/frontend/terrier → terrier}/images/optimized/icon-edit.svg +0 -0
  2364. /package/{app/frontend/terrier → terrier}/images/optimized/icon-existing_child.svg +0 -0
  2365. /package/{app/frontend/terrier → terrier}/images/optimized/icon-existing_parent.svg +0 -0
  2366. /package/{app/frontend/terrier → terrier}/images/optimized/icon-feature.svg +0 -0
  2367. /package/{app/frontend/terrier → terrier}/images/optimized/icon-flex.svg +0 -0
  2368. /package/{app/frontend/terrier → terrier}/images/optimized/icon-forward.svg +0 -0
  2369. /package/{app/frontend/terrier → terrier}/images/optimized/icon-github.svg +0 -0
  2370. /package/{app/frontend/terrier → terrier}/images/optimized/icon-history.svg +0 -0
  2371. /package/{app/frontend/terrier → terrier}/images/optimized/icon-home.svg +0 -0
  2372. /package/{app/frontend/terrier → terrier}/images/optimized/icon-hundred.svg +0 -0
  2373. /package/{app/frontend/terrier → terrier}/images/optimized/icon-image.svg +0 -0
  2374. /package/{app/frontend/terrier → terrier}/images/optimized/icon-inbox.svg +0 -0
  2375. /package/{app/frontend/terrier → terrier}/images/optimized/icon-info.svg +0 -0
  2376. /package/{app/frontend/terrier → terrier}/images/optimized/icon-internal.svg +0 -0
  2377. /package/{app/frontend/terrier → terrier}/images/optimized/icon-issue.svg +0 -0
  2378. /package/{app/frontend/terrier → terrier}/images/optimized/icon-lane.svg +0 -0
  2379. /package/{app/frontend/terrier → terrier}/images/optimized/icon-lane_asap.svg +0 -0
  2380. /package/{app/frontend/terrier → terrier}/images/optimized/icon-lane_days.svg +0 -0
  2381. /package/{app/frontend/terrier → terrier}/images/optimized/icon-lane_hours.svg +0 -0
  2382. /package/{app/frontend/terrier → terrier}/images/optimized/icon-lane_weeks.svg +0 -0
  2383. /package/{app/frontend/terrier → terrier}/images/optimized/icon-lanes_board.svg +0 -0
  2384. /package/{app/frontend/terrier → terrier}/images/optimized/icon-level_complete.svg +0 -0
  2385. /package/{app/frontend/terrier → terrier}/images/optimized/icon-level_highway.svg +0 -0
  2386. /package/{app/frontend/terrier → terrier}/images/optimized/icon-level_on_ramp.svg +0 -0
  2387. /package/{app/frontend/terrier → terrier}/images/optimized/icon-level_parking.svg +0 -0
  2388. /package/{app/frontend/terrier → terrier}/images/optimized/icon-link.svg +0 -0
  2389. /package/{app/frontend/terrier → terrier}/images/optimized/icon-list_view.svg +0 -0
  2390. /package/{app/frontend/terrier → terrier}/images/optimized/icon-lol.svg +0 -0
  2391. /package/{app/frontend/terrier → terrier}/images/optimized/icon-metrics.svg +0 -0
  2392. /package/{app/frontend/terrier → terrier}/images/optimized/icon-minus.svg +0 -0
  2393. /package/{app/frontend/terrier → terrier}/images/optimized/icon-new_child.svg +0 -0
  2394. /package/{app/frontend/terrier → terrier}/images/optimized/icon-new_parent.svg +0 -0
  2395. /package/{app/frontend/terrier → terrier}/images/optimized/icon-night.svg +0 -0
  2396. /package/{app/frontend/terrier → terrier}/images/optimized/icon-origin.svg +0 -0
  2397. /package/{app/frontend/terrier → terrier}/images/optimized/icon-pending.svg +0 -0
  2398. /package/{app/frontend/terrier → terrier}/images/optimized/icon-plot.svg +0 -0
  2399. /package/{app/frontend/terrier → terrier}/images/optimized/icon-plus.svg +0 -0
  2400. /package/{app/frontend/terrier → terrier}/images/optimized/icon-post.svg +0 -0
  2401. /package/{app/frontend/terrier → terrier}/images/optimized/icon-posts.svg +0 -0
  2402. /package/{app/frontend/terrier → terrier}/images/optimized/icon-pr_closed.svg +0 -0
  2403. /package/{app/frontend/terrier → terrier}/images/optimized/icon-pr_merged.svg +0 -0
  2404. /package/{app/frontend/terrier → terrier}/images/optimized/icon-pr_open.svg +0 -0
  2405. /package/{app/frontend/terrier → terrier}/images/optimized/icon-prioritized.svg +0 -0
  2406. /package/{app/frontend/terrier → terrier}/images/optimized/icon-private.svg +0 -0
  2407. /package/{app/frontend/terrier → terrier}/images/optimized/icon-project.svg +0 -0
  2408. /package/{app/frontend/terrier → terrier}/images/optimized/icon-public.svg +0 -0
  2409. /package/{app/frontend/terrier → terrier}/images/optimized/icon-question.svg +0 -0
  2410. /package/{app/frontend/terrier → terrier}/images/optimized/icon-reaction.svg +0 -0
  2411. /package/{app/frontend/terrier → terrier}/images/optimized/icon-recent.svg +0 -0
  2412. /package/{app/frontend/terrier → terrier}/images/optimized/icon-refresh.svg +0 -0
  2413. /package/{app/frontend/terrier → terrier}/images/optimized/icon-related_posts.svg +0 -0
  2414. /package/{app/frontend/terrier → terrier}/images/optimized/icon-releases.svg +0 -0
  2415. /package/{app/frontend/terrier → terrier}/images/optimized/icon-request.svg +0 -0
  2416. /package/{app/frontend/terrier → terrier}/images/optimized/icon-settings.svg +0 -0
  2417. /package/{app/frontend/terrier → terrier}/images/optimized/icon-split_view.svg +0 -0
  2418. /package/{app/frontend/terrier → terrier}/images/optimized/icon-status.svg +0 -0
  2419. /package/{app/frontend/terrier → terrier}/images/optimized/icon-step_demo.svg +0 -0
  2420. /package/{app/frontend/terrier → terrier}/images/optimized/icon-step_deploy.svg +0 -0
  2421. /package/{app/frontend/terrier → terrier}/images/optimized/icon-step_develop.svg +0 -0
  2422. /package/{app/frontend/terrier → terrier}/images/optimized/icon-step_investigate.svg +0 -0
  2423. /package/{app/frontend/terrier → terrier}/images/optimized/icon-step_none.svg +0 -0
  2424. /package/{app/frontend/terrier → terrier}/images/optimized/icon-step_required.svg +0 -0
  2425. /package/{app/frontend/terrier → terrier}/images/optimized/icon-step_review.svg +0 -0
  2426. /package/{app/frontend/terrier → terrier}/images/optimized/icon-step_test.svg +0 -0
  2427. /package/{app/frontend/terrier → terrier}/images/optimized/icon-steps.svg +0 -0
  2428. /package/{app/frontend/terrier → terrier}/images/optimized/icon-steps_board.svg +0 -0
  2429. /package/{app/frontend/terrier → terrier}/images/optimized/icon-subscribe.svg +0 -0
  2430. /package/{app/frontend/terrier → terrier}/images/optimized/icon-support.svg +0 -0
  2431. /package/{app/frontend/terrier → terrier}/images/optimized/icon-team.svg +0 -0
  2432. /package/{app/frontend/terrier → terrier}/images/optimized/icon-terrier.svg +0 -0
  2433. /package/{app/frontend/terrier → terrier}/images/optimized/icon-thumbs_up.svg +0 -0
  2434. /package/{app/frontend/terrier → terrier}/images/optimized/icon-type.svg +0 -0
  2435. /package/{app/frontend/terrier → terrier}/images/optimized/icon-unprioritized.svg +0 -0
  2436. /package/{app/frontend/terrier → terrier}/images/optimized/icon-upload.svg +0 -0
  2437. /package/{app/frontend/terrier → terrier}/images/optimized/icon-upvote.svg +0 -0
  2438. /package/{app/frontend/terrier → terrier}/images/optimized/icon-user.svg +0 -0
  2439. /package/{app/frontend/terrier → terrier}/images/optimized/icon-users.svg +0 -0
  2440. /package/{app/frontend/terrier → terrier}/images/optimized/icon-website.svg +0 -0
  2441. /package/{app/frontend/terrier → terrier}/images/optimized/icon-week.svg +0 -0
  2442. /package/{app/frontend/terrier → terrier}/images/optimized/terrier-hub-favicon.svg +0 -0
  2443. /package/{app/frontend/terrier → terrier}/images/optimized/terrier-hub-icon-dark.svg +0 -0
  2444. /package/{app/frontend/terrier → terrier}/images/optimized/terrier-hub-icon-light.svg +0 -0
  2445. /package/{app/frontend/terrier → terrier}/images/optimized/terrier-hub-loader.svg +0 -0
  2446. /package/{app/assets/images/terrier/engine → terrier/images/optimized}/terrier-hub-logo-dark.svg +0 -0
  2447. /package/{app/assets/images/terrier/engine → terrier/images/optimized}/terrier-hub-logo-light.svg +0 -0
  2448. /package/{app/frontend/terrier → terrier}/images/raw/badge-accounts_payable.svg +0 -0
  2449. /package/{app/frontend/terrier → terrier}/images/raw/badge-accounts_receivable.svg +0 -0
  2450. /package/{app/frontend/terrier → terrier}/images/raw/badge-applicator_license.svg +0 -0
  2451. /package/{app/frontend/terrier → terrier}/images/raw/badge-autopay.svg +0 -0
  2452. /package/{app/frontend/terrier → terrier}/images/raw/badge-bats.svg +0 -0
  2453. /package/{app/frontend/terrier → terrier}/images/raw/badge-clypboard_hardware.svg +0 -0
  2454. /package/{app/frontend/terrier → terrier}/images/raw/badge-clypboard_project.svg +0 -0
  2455. /package/{app/frontend/terrier → terrier}/images/raw/badge-clypmart.svg +0 -0
  2456. /package/{app/frontend/terrier → terrier}/images/raw/badge-commercial.svg +0 -0
  2457. /package/{app/frontend/terrier → terrier}/images/raw/badge-compliance.svg +0 -0
  2458. /package/{app/frontend/terrier → terrier}/images/raw/badge-contracts.svg +0 -0
  2459. /package/{app/frontend/terrier → terrier}/images/raw/badge-copesan.svg +0 -0
  2460. /package/{app/frontend/terrier → terrier}/images/raw/badge-credit_card.svg +0 -0
  2461. /package/{app/frontend/terrier → terrier}/images/raw/badge-customer_call.svg +0 -0
  2462. /package/{app/frontend/terrier → terrier}/images/raw/badge-customer_text.svg +0 -0
  2463. /package/{app/frontend/terrier → terrier}/images/raw/badge-employee_data.svg +0 -0
  2464. /package/{app/frontend/terrier → terrier}/images/raw/badge-finance.svg +0 -0
  2465. /package/{app/frontend/terrier → terrier}/images/raw/badge-fleet.svg +0 -0
  2466. /package/{app/frontend/terrier → terrier}/images/raw/badge-fumigation.svg +0 -0
  2467. /package/{app/frontend/terrier → terrier}/images/raw/badge-information_technology.svg +0 -0
  2468. /package/{app/frontend/terrier → terrier}/images/raw/badge-irrigation.svg +0 -0
  2469. /package/{app/frontend/terrier → terrier}/images/raw/badge-landscape.svg +0 -0
  2470. /package/{app/frontend/terrier → terrier}/images/raw/badge-marketing.svg +0 -0
  2471. /package/{app/frontend/terrier → terrier}/images/raw/badge-mergers_and_acquisitions.svg +0 -0
  2472. /package/{app/frontend/terrier → terrier}/images/raw/badge-multi_housing.svg +0 -0
  2473. /package/{app/frontend/terrier → terrier}/images/raw/badge-payroll.svg +0 -0
  2474. /package/{app/frontend/terrier → terrier}/images/raw/badge-pest.svg +0 -0
  2475. /package/{app/frontend/terrier → terrier}/images/raw/badge-pro.svg +0 -0
  2476. /package/{app/frontend/terrier → terrier}/images/raw/badge-program.svg +0 -0
  2477. /package/{app/frontend/terrier → terrier}/images/raw/badge-proposals.svg +0 -0
  2478. /package/{app/frontend/terrier → terrier}/images/raw/badge-residential.svg +0 -0
  2479. /package/{app/frontend/terrier → terrier}/images/raw/badge-sales.svg +0 -0
  2480. /package/{app/frontend/terrier → terrier}/images/raw/badge-scripts.svg +0 -0
  2481. /package/{app/frontend/terrier → terrier}/images/raw/badge-termite.svg +0 -0
  2482. /package/{app/frontend/terrier → terrier}/images/raw/badge-wildlife.svg +0 -0
  2483. /package/{app/frontend/terrier → terrier}/images/raw/badge_role-admin.svg +0 -0
  2484. /package/{app/frontend/terrier → terrier}/images/raw/badge_role-handling.svg +0 -0
  2485. /package/{app/frontend/terrier → terrier}/images/raw/badge_role-management.svg +0 -0
  2486. /package/{app/frontend/terrier → terrier}/images/raw/badge_role-ops.svg +0 -0
  2487. /package/{app/frontend/terrier → terrier}/images/raw/badge_role-reporting.svg +0 -0
  2488. /package/{app/frontend/terrier → terrier}/images/raw/badge_role-sales.svg +0 -0
  2489. /package/{app/frontend/terrier → terrier}/images/raw/icon-active.svg +0 -0
  2490. /package/{app/frontend/terrier → terrier}/images/raw/icon-admin.svg +0 -0
  2491. /package/{app/frontend/terrier → terrier}/images/raw/icon-archive.svg +0 -0
  2492. /package/{app/frontend/terrier → terrier}/images/raw/icon-arrow_down.svg +0 -0
  2493. /package/{app/frontend/terrier → terrier}/images/raw/icon-arrow_left.svg +0 -0
  2494. /package/{app/frontend/terrier → terrier}/images/raw/icon-arrow_right.svg +0 -0
  2495. /package/{app/frontend/terrier → terrier}/images/raw/icon-arrow_up.svg +0 -0
  2496. /package/{app/frontend/terrier → terrier}/images/raw/icon-assign.svg +0 -0
  2497. /package/{app/frontend/terrier → terrier}/images/raw/icon-attachment.svg +0 -0
  2498. /package/{app/frontend/terrier → terrier}/images/raw/icon-back.svg +0 -0
  2499. /package/{app/frontend/terrier → terrier}/images/raw/icon-badge.svg +0 -0
  2500. /package/{app/frontend/terrier → terrier}/images/raw/icon-board.svg +0 -0
  2501. /package/{app/frontend/terrier → terrier}/images/raw/icon-bookmark.svg +0 -0
  2502. /package/{app/frontend/terrier → terrier}/images/raw/icon-bookmark_add.svg +0 -0
  2503. /package/{app/frontend/terrier → terrier}/images/raw/icon-bookmark_remove.svg +0 -0
  2504. /package/{app/frontend/terrier → terrier}/images/raw/icon-bookmarked.svg +0 -0
  2505. /package/{app/frontend/terrier → terrier}/images/raw/icon-bookmarks.svg +0 -0
  2506. /package/{app/frontend/terrier → terrier}/images/raw/icon-branch.svg +0 -0
  2507. /package/{app/frontend/terrier → terrier}/images/raw/icon-bug.svg +0 -0
  2508. /package/{app/frontend/terrier → terrier}/images/raw/icon-calculator.svg +0 -0
  2509. /package/{app/frontend/terrier → terrier}/images/raw/icon-checkmark.svg +0 -0
  2510. /package/{app/frontend/terrier → terrier}/images/raw/icon-close.svg +0 -0
  2511. /package/{app/frontend/terrier → terrier}/images/raw/icon-clypboard.svg +0 -0
  2512. /package/{app/frontend/terrier → terrier}/images/raw/icon-comment.svg +0 -0
  2513. /package/{app/frontend/terrier → terrier}/images/raw/icon-complete.svg +0 -0
  2514. /package/{app/frontend/terrier → terrier}/images/raw/icon-dashboard.svg +0 -0
  2515. /package/{app/frontend/terrier → terrier}/images/raw/icon-data_pull.svg +0 -0
  2516. /package/{app/frontend/terrier → terrier}/images/raw/icon-data_update.svg +0 -0
  2517. /package/{app/frontend/terrier → terrier}/images/raw/icon-database.svg +0 -0
  2518. /package/{app/frontend/terrier → terrier}/images/raw/icon-day.svg +0 -0
  2519. /package/{app/frontend/terrier → terrier}/images/raw/icon-delete.svg +0 -0
  2520. /package/{app/frontend/terrier → terrier}/images/raw/icon-documentation.svg +0 -0
  2521. /package/{app/frontend/terrier → terrier}/images/raw/icon-edit.svg +0 -0
  2522. /package/{app/frontend/terrier → terrier}/images/raw/icon-existing_child.svg +0 -0
  2523. /package/{app/frontend/terrier → terrier}/images/raw/icon-existing_parent.svg +0 -0
  2524. /package/{app/frontend/terrier → terrier}/images/raw/icon-feature.svg +0 -0
  2525. /package/{app/frontend/terrier → terrier}/images/raw/icon-flex.svg +0 -0
  2526. /package/{app/frontend/terrier → terrier}/images/raw/icon-forward.svg +0 -0
  2527. /package/{app/frontend/terrier → terrier}/images/raw/icon-github.svg +0 -0
  2528. /package/{app/frontend/terrier → terrier}/images/raw/icon-history.svg +0 -0
  2529. /package/{app/frontend/terrier → terrier}/images/raw/icon-home.svg +0 -0
  2530. /package/{app/frontend/terrier → terrier}/images/raw/icon-hundred.svg +0 -0
  2531. /package/{app/frontend/terrier → terrier}/images/raw/icon-image.svg +0 -0
  2532. /package/{app/frontend/terrier → terrier}/images/raw/icon-inbox.svg +0 -0
  2533. /package/{app/frontend/terrier → terrier}/images/raw/icon-info.svg +0 -0
  2534. /package/{app/frontend/terrier → terrier}/images/raw/icon-internal.svg +0 -0
  2535. /package/{app/frontend/terrier → terrier}/images/raw/icon-issue.svg +0 -0
  2536. /package/{app/frontend/terrier → terrier}/images/raw/icon-lane.svg +0 -0
  2537. /package/{app/frontend/terrier → terrier}/images/raw/icon-lane_asap.svg +0 -0
  2538. /package/{app/frontend/terrier → terrier}/images/raw/icon-lane_days.svg +0 -0
  2539. /package/{app/frontend/terrier → terrier}/images/raw/icon-lane_hours.svg +0 -0
  2540. /package/{app/frontend/terrier → terrier}/images/raw/icon-lane_weeks.svg +0 -0
  2541. /package/{app/frontend/terrier → terrier}/images/raw/icon-lanes_board.svg +0 -0
  2542. /package/{app/frontend/terrier → terrier}/images/raw/icon-level_complete.svg +0 -0
  2543. /package/{app/frontend/terrier → terrier}/images/raw/icon-level_highway.svg +0 -0
  2544. /package/{app/frontend/terrier → terrier}/images/raw/icon-level_on_ramp.svg +0 -0
  2545. /package/{app/frontend/terrier → terrier}/images/raw/icon-level_parking.svg +0 -0
  2546. /package/{app/frontend/terrier → terrier}/images/raw/icon-link.svg +0 -0
  2547. /package/{app/frontend/terrier → terrier}/images/raw/icon-list_view.svg +0 -0
  2548. /package/{app/frontend/terrier → terrier}/images/raw/icon-lol.svg +0 -0
  2549. /package/{app/frontend/terrier → terrier}/images/raw/icon-metrics.svg +0 -0
  2550. /package/{app/frontend/terrier → terrier}/images/raw/icon-minus.svg +0 -0
  2551. /package/{app/frontend/terrier → terrier}/images/raw/icon-new_child.svg +0 -0
  2552. /package/{app/frontend/terrier → terrier}/images/raw/icon-new_parent.svg +0 -0
  2553. /package/{app/frontend/terrier → terrier}/images/raw/icon-night.svg +0 -0
  2554. /package/{app/frontend/terrier → terrier}/images/raw/icon-origin.svg +0 -0
  2555. /package/{app/frontend/terrier → terrier}/images/raw/icon-pending.svg +0 -0
  2556. /package/{app/frontend/terrier → terrier}/images/raw/icon-plot.svg +0 -0
  2557. /package/{app/frontend/terrier → terrier}/images/raw/icon-plus.svg +0 -0
  2558. /package/{app/frontend/terrier → terrier}/images/raw/icon-post.svg +0 -0
  2559. /package/{app/frontend/terrier → terrier}/images/raw/icon-posts.svg +0 -0
  2560. /package/{app/frontend/terrier → terrier}/images/raw/icon-pr_closed.svg +0 -0
  2561. /package/{app/frontend/terrier → terrier}/images/raw/icon-pr_merged.svg +0 -0
  2562. /package/{app/frontend/terrier → terrier}/images/raw/icon-pr_open.svg +0 -0
  2563. /package/{app/frontend/terrier → terrier}/images/raw/icon-prioritized.svg +0 -0
  2564. /package/{app/frontend/terrier → terrier}/images/raw/icon-private.svg +0 -0
  2565. /package/{app/frontend/terrier → terrier}/images/raw/icon-project.svg +0 -0
  2566. /package/{app/frontend/terrier → terrier}/images/raw/icon-public.svg +0 -0
  2567. /package/{app/frontend/terrier → terrier}/images/raw/icon-question.svg +0 -0
  2568. /package/{app/frontend/terrier → terrier}/images/raw/icon-reaction.svg +0 -0
  2569. /package/{app/frontend/terrier → terrier}/images/raw/icon-recent.svg +0 -0
  2570. /package/{app/frontend/terrier → terrier}/images/raw/icon-refresh.svg +0 -0
  2571. /package/{app/frontend/terrier → terrier}/images/raw/icon-related_posts.svg +0 -0
  2572. /package/{app/frontend/terrier → terrier}/images/raw/icon-releases.svg +0 -0
  2573. /package/{app/frontend/terrier → terrier}/images/raw/icon-request.svg +0 -0
  2574. /package/{app/frontend/terrier → terrier}/images/raw/icon-settings.svg +0 -0
  2575. /package/{app/frontend/terrier → terrier}/images/raw/icon-split_view.svg +0 -0
  2576. /package/{app/frontend/terrier → terrier}/images/raw/icon-status.svg +0 -0
  2577. /package/{app/frontend/terrier → terrier}/images/raw/icon-step_demo.svg +0 -0
  2578. /package/{app/frontend/terrier → terrier}/images/raw/icon-step_deploy.svg +0 -0
  2579. /package/{app/frontend/terrier → terrier}/images/raw/icon-step_develop.svg +0 -0
  2580. /package/{app/frontend/terrier → terrier}/images/raw/icon-step_investigate.svg +0 -0
  2581. /package/{app/frontend/terrier → terrier}/images/raw/icon-step_none.svg +0 -0
  2582. /package/{app/frontend/terrier → terrier}/images/raw/icon-step_required.svg +0 -0
  2583. /package/{app/frontend/terrier → terrier}/images/raw/icon-step_review.svg +0 -0
  2584. /package/{app/frontend/terrier → terrier}/images/raw/icon-step_test.svg +0 -0
  2585. /package/{app/frontend/terrier → terrier}/images/raw/icon-steps.svg +0 -0
  2586. /package/{app/frontend/terrier → terrier}/images/raw/icon-steps_board.svg +0 -0
  2587. /package/{app/frontend/terrier → terrier}/images/raw/icon-subscribe.svg +0 -0
  2588. /package/{app/frontend/terrier → terrier}/images/raw/icon-support.svg +0 -0
  2589. /package/{app/frontend/terrier → terrier}/images/raw/icon-team.svg +0 -0
  2590. /package/{app/frontend/terrier → terrier}/images/raw/icon-terrier.svg +0 -0
  2591. /package/{app/frontend/terrier → terrier}/images/raw/icon-thumbs_up.svg +0 -0
  2592. /package/{app/frontend/terrier → terrier}/images/raw/icon-type.svg +0 -0
  2593. /package/{app/frontend/terrier → terrier}/images/raw/icon-unprioritized.svg +0 -0
  2594. /package/{app/frontend/terrier → terrier}/images/raw/icon-upload.svg +0 -0
  2595. /package/{app/frontend/terrier → terrier}/images/raw/icon-upvote.svg +0 -0
  2596. /package/{app/frontend/terrier → terrier}/images/raw/icon-user.svg +0 -0
  2597. /package/{app/frontend/terrier → terrier}/images/raw/icon-users.svg +0 -0
  2598. /package/{app/frontend/terrier → terrier}/images/raw/icon-website.svg +0 -0
  2599. /package/{app/frontend/terrier → terrier}/images/raw/icon-week.svg +0 -0
  2600. /package/{app/assets/images/terrier/engine → terrier/images/raw}/terrier-hub-favicon-alert.png +0 -0
  2601. /package/{app/assets/images/terrier/engine → terrier/images/raw}/terrier-hub-favicon-dark.png +0 -0
  2602. /package/{app/assets/images/terrier/engine → terrier/images/raw}/terrier-hub-favicon.png +0 -0
  2603. /package/{app/frontend/terrier → terrier}/images/raw/terrier-hub-favicon.svg +0 -0
  2604. /package/{app/frontend/terrier → terrier}/images/raw/terrier-hub-icon-dark.svg +0 -0
  2605. /package/{app/frontend/terrier → terrier}/images/raw/terrier-hub-icon-light.png +0 -0
  2606. /package/{app/frontend/terrier → terrier}/images/raw/terrier-hub-icon-light.svg +0 -0
  2607. /package/{app/frontend/terrier → terrier}/images/raw/terrier-hub-loader.svg +0 -0
  2608. /package/{app/frontend/terrier → terrier}/images/raw/terrier-hub-logo-dark.svg +0 -0
  2609. /package/{app/frontend/terrier → terrier}/images/raw/terrier-hub-logo-light.png +0 -0
  2610. /package/{app/frontend/terrier → terrier}/images/raw/terrier-hub-logo-light.svg +0 -0
  2611. /package/{app/frontend/terrier → terrier}/lightbox.ts +0 -0
  2612. /package/{app/frontend/terrier → terrier}/list-viewer.ts +0 -0
  2613. /package/{app/frontend/terrier → terrier}/loading.ts +0 -0
  2614. /package/{app/frontend/terrier → terrier}/logging.ts +0 -0
  2615. /package/{app/frontend/terrier → terrier}/modals.ts +0 -0
  2616. /package/{app/frontend/terrier → terrier}/multi-circular-progress.ts +0 -0
  2617. /package/{app/frontend/terrier → terrier}/overlays.ts +0 -0
  2618. /package/{app/frontend/terrier → terrier}/parts/confirm-button-part.ts +0 -0
  2619. /package/{app/frontend/terrier → terrier}/parts/content-part.ts +0 -0
  2620. /package/{app/frontend/terrier → terrier}/parts/dropzone-part.ts +0 -0
  2621. /package/{app/frontend/terrier → terrier}/parts/glyp-picker.ts +0 -0
  2622. /package/{app/frontend/terrier → terrier}/parts/not-found-page.ts +0 -0
  2623. /package/{app/frontend/terrier → terrier}/parts/page-part.ts +0 -0
  2624. /package/{app/frontend/terrier → terrier}/parts/panel-part.ts +0 -0
  2625. /package/{app/frontend/terrier → terrier}/parts/select-field-part.ts +0 -0
  2626. /package/{app/frontend/terrier → terrier}/parts/terrier-form-part.ts +0 -0
  2627. /package/{app/frontend/terrier → terrier}/parts/terrier-part.ts +0 -0
  2628. /package/{app/frontend/terrier → terrier}/plugins/collapsible-plugin.ts +0 -0
  2629. /package/{app/frontend/terrier → terrier}/plugins/load-on-scroll-plugin.ts +0 -0
  2630. /package/{app/frontend/terrier → terrier}/progress.ts +0 -0
  2631. /package/{app/frontend/terrier → terrier}/schedules.ts +0 -0
  2632. /package/{app/frontend/terrier → terrier}/schema.ts +0 -0
  2633. /package/{app/frontend/terrier → terrier}/sheets.ts +0 -0
  2634. /package/{app/frontend/terrier → terrier}/tabs.ts +0 -0
  2635. /package/{app/frontend/terrier → terrier}/theme.ts +0 -0
  2636. /package/{app/frontend/terrier → terrier}/toasts.ts +0 -0
  2637. /package/{app/frontend/terrier → terrier}/tooltips.ts +0 -0
  2638. /package/{app/frontend/terrier → terrier}/util-types.ts +0 -0
  2639. /package/{app/frontend/terrier → terrier}/utils.ts +0 -0
  2640. /package/{app/frontend/tsconfig.json → tsconfig.json} +0 -0
@@ -1,2711 +0,0 @@
1
- // This file is the concatenation of many js files.
2
- // See http://github.com/jimhigson/oboe.js for the raw source
3
-
4
- // having a local undefined, window, Object etc allows slightly better minification:
5
- (function (window, Object, Array, Error, JSON, undefined ) {
6
-
7
- // v2.1.3
8
-
9
- /*
10
-
11
- Copyright (c) 2013, Jim Higson
12
-
13
- All rights reserved.
14
-
15
- Redistribution and use in source and binary forms, with or without
16
- modification, are permitted provided that the following conditions are
17
- met:
18
-
19
- 1. Redistributions of source code must retain the above copyright
20
- notice, this list of conditions and the following disclaimer.
21
-
22
- 2. Redistributions in binary form must reproduce the above copyright
23
- notice, this list of conditions and the following disclaimer in the
24
- documentation and/or other materials provided with the distribution.
25
-
26
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
27
- IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
28
- TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
29
- PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30
- HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31
- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
32
- TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33
- PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34
- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
-
38
- */
39
-
40
- /**
41
- * Partially complete a function.
42
- *
43
- * var add3 = partialComplete( function add(a,b){return a+b}, 3 );
44
- *
45
- * add3(4) // gives 7
46
- *
47
- * function wrap(left, right, cen){return left + " " + cen + " " + right;}
48
- *
49
- * var pirateGreeting = partialComplete( wrap , "I'm", ", a mighty pirate!" );
50
- *
51
- * pirateGreeting("Guybrush Threepwood");
52
- * // gives "I'm Guybrush Threepwood, a mighty pirate!"
53
- */
54
- var partialComplete = varArgs(function( fn, args ) {
55
-
56
- // this isn't the shortest way to write this but it does
57
- // avoid creating a new array each time to pass to fn.apply,
58
- // otherwise could just call boundArgs.concat(callArgs)
59
-
60
- var numBoundArgs = args.length;
61
-
62
- return varArgs(function( callArgs ) {
63
-
64
- for (var i = 0; i < callArgs.length; i++) {
65
- args[numBoundArgs + i] = callArgs[i];
66
- }
67
-
68
- args.length = numBoundArgs + callArgs.length;
69
-
70
- return fn.apply(this, args);
71
- });
72
- }),
73
-
74
- /**
75
- * Compose zero or more functions:
76
- *
77
- * compose(f1, f2, f3)(x) = f1(f2(f3(x))))
78
- *
79
- * The last (inner-most) function may take more than one parameter:
80
- *
81
- * compose(f1, f2, f3)(x,y) = f1(f2(f3(x,y))))
82
- */
83
- compose = varArgs(function(fns) {
84
-
85
- var fnsList = arrayAsList(fns);
86
-
87
- function next(params, curFn) {
88
- return [apply(params, curFn)];
89
- }
90
-
91
- return varArgs(function(startParams){
92
-
93
- return foldR(next, startParams, fnsList)[0];
94
- });
95
- });
96
-
97
- /**
98
- * A more optimised version of compose that takes exactly two functions
99
- * @param f1
100
- * @param f2
101
- */
102
- function compose2(f1, f2){
103
- return function(){
104
- return f1.call(this,f2.apply(this,arguments));
105
- }
106
- }
107
-
108
- /**
109
- * Generic form for a function to get a property from an object
110
- *
111
- * var o = {
112
- * foo:'bar'
113
- * }
114
- *
115
- * var getFoo = attr('foo')
116
- *
117
- * fetFoo(o) // returns 'bar'
118
- *
119
- * @param {String} key the property name
120
- */
121
- function attr(key) {
122
- return function(o) { return o[key]; };
123
- }
124
-
125
- /**
126
- * Call a list of functions with the same args until one returns a
127
- * truthy result. Similar to the || operator.
128
- *
129
- * So:
130
- * lazyUnion([f1,f2,f3 ... fn])( p1, p2 ... pn )
131
- *
132
- * Is equivalent to:
133
- * apply([p1, p2 ... pn], f1) ||
134
- * apply([p1, p2 ... pn], f2) ||
135
- * apply([p1, p2 ... pn], f3) ... apply(fn, [p1, p2 ... pn])
136
- *
137
- * @returns the first return value that is given that is truthy.
138
- */
139
- var lazyUnion = varArgs(function(fns) {
140
-
141
- return varArgs(function(params){
142
-
143
- var maybeValue;
144
-
145
- for (var i = 0; i < len(fns); i++) {
146
-
147
- maybeValue = apply(params, fns[i]);
148
-
149
- if( maybeValue ) {
150
- return maybeValue;
151
- }
152
- }
153
- });
154
- });
155
-
156
- /**
157
- * This file declares various pieces of functional programming.
158
- *
159
- * This isn't a general purpose functional library, to keep things small it
160
- * has just the parts useful for Oboe.js.
161
- */
162
-
163
-
164
- /**
165
- * Call a single function with the given arguments array.
166
- * Basically, a functional-style version of the OO-style Function#apply for
167
- * when we don't care about the context ('this') of the call.
168
- *
169
- * The order of arguments allows partial completion of the arguments array
170
- */
171
- function apply(args, fn) {
172
- return fn.apply(undefined, args);
173
- }
174
-
175
- /**
176
- * Define variable argument functions but cut out all that tedious messing about
177
- * with the arguments object. Delivers the variable-length part of the arguments
178
- * list as an array.
179
- *
180
- * Eg:
181
- *
182
- * var myFunction = varArgs(
183
- * function( fixedArgument, otherFixedArgument, variableNumberOfArguments ){
184
- * console.log( variableNumberOfArguments );
185
- * }
186
- * )
187
- *
188
- * myFunction('a', 'b', 1, 2, 3); // logs [1,2,3]
189
- *
190
- * var myOtherFunction = varArgs(function( variableNumberOfArguments ){
191
- * console.log( variableNumberOfArguments );
192
- * })
193
- *
194
- * myFunction(1, 2, 3); // logs [1,2,3]
195
- *
196
- */
197
- function varArgs(fn){
198
-
199
- var numberOfFixedArguments = fn.length -1,
200
- slice = Array.prototype.slice;
201
-
202
-
203
- if( numberOfFixedArguments == 0 ) {
204
- // an optimised case for when there are no fixed args:
205
-
206
- return function(){
207
- return fn.call(this, slice.call(arguments));
208
- }
209
-
210
- } else if( numberOfFixedArguments == 1 ) {
211
- // an optimised case for when there are is one fixed args:
212
-
213
- return function(){
214
- return fn.call(this, arguments[0], slice.call(arguments, 1));
215
- }
216
- }
217
-
218
- // general case
219
-
220
- // we know how many arguments fn will always take. Create a
221
- // fixed-size array to hold that many, to be re-used on
222
- // every call to the returned function
223
- var argsHolder = Array(fn.length);
224
-
225
- return function(){
226
-
227
- for (var i = 0; i < numberOfFixedArguments; i++) {
228
- argsHolder[i] = arguments[i];
229
- }
230
-
231
- argsHolder[numberOfFixedArguments] =
232
- slice.call(arguments, numberOfFixedArguments);
233
-
234
- return fn.apply( this, argsHolder);
235
- }
236
- }
237
-
238
-
239
- /**
240
- * Swap the order of parameters to a binary function
241
- *
242
- * A bit like this flip: http://zvon.org/other/haskell/Outputprelude/flip_f.html
243
- */
244
- function flip(fn){
245
- return function(a, b){
246
- return fn(b,a);
247
- }
248
- }
249
-
250
-
251
- /**
252
- * Create a function which is the intersection of two other functions.
253
- *
254
- * Like the && operator, if the first is truthy, the second is never called,
255
- * otherwise the return value from the second is returned.
256
- */
257
- function lazyIntersection(fn1, fn2) {
258
-
259
- return function (param) {
260
-
261
- return fn1(param) && fn2(param);
262
- };
263
- }
264
-
265
- /**
266
- * A function which does nothing
267
- */
268
- function noop(){}
269
-
270
- /**
271
- * A function which is always happy
272
- */
273
- function always(){return true}
274
-
275
- /**
276
- * Create a function which always returns the same
277
- * value
278
- *
279
- * var return3 = functor(3);
280
- *
281
- * return3() // gives 3
282
- * return3() // still gives 3
283
- * return3() // will always give 3
284
- */
285
- function functor(val){
286
- return function(){
287
- return val;
288
- }
289
- }
290
-
291
- /**
292
- * This file defines some loosely associated syntactic sugar for
293
- * Javascript programming
294
- */
295
-
296
-
297
- /**
298
- * Returns true if the given candidate is of type T
299
- */
300
- function isOfType(T, maybeSomething){
301
- return maybeSomething && maybeSomething.constructor === T;
302
- }
303
-
304
- var len = attr('length'),
305
- isString = partialComplete(isOfType, String);
306
-
307
- /**
308
- * I don't like saying this:
309
- *
310
- * foo !=== undefined
311
- *
312
- * because of the double-negative. I find this:
313
- *
314
- * defined(foo)
315
- *
316
- * easier to read.
317
- */
318
- function defined( value ) {
319
- return value !== undefined;
320
- }
321
-
322
- /**
323
- * Returns true if object o has a key named like every property in
324
- * the properties array. Will give false if any are missing, or if o
325
- * is not an object.
326
- */
327
- function hasAllProperties(fieldList, o) {
328
-
329
- return (o instanceof Object)
330
- &&
331
- all(function (field) {
332
- return (field in o);
333
- }, fieldList);
334
- }
335
- /**
336
- * Like cons in Lisp
337
- */
338
- function cons(x, xs) {
339
-
340
- /* Internally lists are linked 2-element Javascript arrays.
341
-
342
- Ideally the return here would be Object.freeze([x,xs])
343
- so that bugs related to mutation are found fast.
344
- However, cons is right on the critical path for
345
- performance and this slows oboe-mark down by
346
- ~25%. Under theoretical future JS engines that freeze more
347
- efficiently (possibly even use immutability to
348
- run faster) this should be considered for
349
- restoration.
350
- */
351
-
352
- return [x,xs];
353
- }
354
-
355
- /**
356
- * The empty list
357
- */
358
- var emptyList = null,
359
-
360
- /**
361
- * Get the head of a list.
362
- *
363
- * Ie, head(cons(a,b)) = a
364
- */
365
- head = attr(0),
366
-
367
- /**
368
- * Get the tail of a list.
369
- *
370
- * Ie, tail(cons(a,b)) = b
371
- */
372
- tail = attr(1);
373
-
374
-
375
- /**
376
- * Converts an array to a list
377
- *
378
- * asList([a,b,c])
379
- *
380
- * is equivalent to:
381
- *
382
- * cons(a, cons(b, cons(c, emptyList)))
383
- **/
384
- function arrayAsList(inputArray){
385
-
386
- return reverseList(
387
- inputArray.reduce(
388
- flip(cons),
389
- emptyList
390
- )
391
- );
392
- }
393
-
394
- /**
395
- * A varargs version of arrayAsList. Works a bit like list
396
- * in LISP.
397
- *
398
- * list(a,b,c)
399
- *
400
- * is equivalent to:
401
- *
402
- * cons(a, cons(b, cons(c, emptyList)))
403
- */
404
- var list = varArgs(arrayAsList);
405
-
406
- /**
407
- * Convert a list back to a js native array
408
- */
409
- function listAsArray(list){
410
-
411
- return foldR( function(arraySoFar, listItem){
412
-
413
- arraySoFar.unshift(listItem);
414
- return arraySoFar;
415
-
416
- }, [], list );
417
-
418
- }
419
-
420
- /**
421
- * Map a function over a list
422
- */
423
- function map(fn, list) {
424
-
425
- return list
426
- ? cons(fn(head(list)), map(fn,tail(list)))
427
- : emptyList
428
- ;
429
- }
430
-
431
- /**
432
- * foldR implementation. Reduce a list down to a single value.
433
- *
434
- * @pram {Function} fn (rightEval, curVal) -> result
435
- */
436
- function foldR(fn, startValue, list) {
437
-
438
- return list
439
- ? fn(foldR(fn, startValue, tail(list)), head(list))
440
- : startValue
441
- ;
442
- }
443
-
444
- /**
445
- * foldR implementation. Reduce a list down to a single value.
446
- *
447
- * @pram {Function} fn (rightEval, curVal) -> result
448
- */
449
- function foldR1(fn, list) {
450
-
451
- return tail(list)
452
- ? fn(foldR1(fn, tail(list)), head(list))
453
- : head(list)
454
- ;
455
- }
456
-
457
-
458
- /**
459
- * Return a list like the one given but with the first instance equal
460
- * to item removed
461
- */
462
- function without(list, test, removedFn) {
463
-
464
- return withoutInner(list, removedFn || noop);
465
-
466
- function withoutInner(subList, removedFn) {
467
- return subList
468
- ? ( test(head(subList))
469
- ? (removedFn(head(subList)), tail(subList))
470
- : cons(head(subList), withoutInner(tail(subList), removedFn))
471
- )
472
- : emptyList
473
- ;
474
- }
475
- }
476
-
477
- /**
478
- * Returns true if the given function holds for every item in
479
- * the list, false otherwise
480
- */
481
- function all(fn, list) {
482
-
483
- return !list ||
484
- ( fn(head(list)) && all(fn, tail(list)) );
485
- }
486
-
487
- /**
488
- * Call every function in a list of functions with the same arguments
489
- *
490
- * This doesn't make any sense if we're doing pure functional because
491
- * it doesn't return anything. Hence, this is only really useful if the
492
- * functions being called have side-effects.
493
- */
494
- function applyEach(fnList, args) {
495
-
496
- if( fnList ) {
497
- head(fnList).apply(null, args);
498
-
499
- applyEach(tail(fnList), args);
500
- }
501
- }
502
-
503
- /**
504
- * Reverse the order of a list
505
- */
506
- function reverseList(list){
507
-
508
- // js re-implementation of 3rd solution from:
509
- // http://www.haskell.org/haskellwiki/99_questions/Solutions/5
510
- function reverseInner( list, reversedAlready ) {
511
- if( !list ) {
512
- return reversedAlready;
513
- }
514
-
515
- return reverseInner(tail(list), cons(head(list), reversedAlready))
516
- }
517
-
518
- return reverseInner(list, emptyList);
519
- }
520
-
521
- function first(test, list) {
522
- return list &&
523
- (test(head(list))
524
- ? head(list)
525
- : first(test,tail(list)));
526
- }
527
-
528
- /*
529
- This is a slightly hacked-up browser only version of clarinet
530
-
531
- * some features removed to help keep browser Oboe under
532
- the 5k micro-library limit
533
- * plug directly into event bus
534
-
535
- For the original go here:
536
- https://github.com/dscape/clarinet
537
-
538
- We receive the events:
539
- STREAM_DATA
540
- STREAM_END
541
-
542
- We emit the events:
543
- SAX_KEY
544
- SAX_VALUE_OPEN
545
- SAX_VALUE_CLOSE
546
- FAIL_EVENT
547
- */
548
-
549
- function clarinet(eventBus) {
550
- "use strict";
551
-
552
- var
553
- // shortcut some events on the bus
554
- emitSaxKey = eventBus(SAX_KEY).emit,
555
- emitValueOpen = eventBus(SAX_VALUE_OPEN).emit,
556
- emitValueClose = eventBus(SAX_VALUE_CLOSE).emit,
557
- emitFail = eventBus(FAIL_EVENT).emit,
558
-
559
- MAX_BUFFER_LENGTH = 64 * 1024
560
- , stringTokenPattern = /[\\"\n]/g
561
- , _n = 0
562
-
563
- // states
564
- , BEGIN = _n++
565
- , VALUE = _n++ // general stuff
566
- , OPEN_OBJECT = _n++ // {
567
- , CLOSE_OBJECT = _n++ // }
568
- , OPEN_ARRAY = _n++ // [
569
- , CLOSE_ARRAY = _n++ // ]
570
- , STRING = _n++ // ""
571
- , OPEN_KEY = _n++ // , "a"
572
- , CLOSE_KEY = _n++ // :
573
- , TRUE = _n++ // r
574
- , TRUE2 = _n++ // u
575
- , TRUE3 = _n++ // e
576
- , FALSE = _n++ // a
577
- , FALSE2 = _n++ // l
578
- , FALSE3 = _n++ // s
579
- , FALSE4 = _n++ // e
580
- , NULL = _n++ // u
581
- , NULL2 = _n++ // l
582
- , NULL3 = _n++ // l
583
- , NUMBER_DECIMAL_POINT = _n++ // .
584
- , NUMBER_DIGIT = _n // [0-9]
585
-
586
- // setup initial parser values
587
- , bufferCheckPosition = MAX_BUFFER_LENGTH
588
- , latestError
589
- , c
590
- , p
591
- , textNode = undefined
592
- , numberNode = ""
593
- , slashed = false
594
- , closed = false
595
- , state = BEGIN
596
- , stack = []
597
- , unicodeS = null
598
- , unicodeI = 0
599
- , depth = 0
600
- , position = 0
601
- , column = 0 //mostly for error reporting
602
- , line = 1
603
- ;
604
-
605
- function checkBufferLength () {
606
-
607
- var maxActual = 0;
608
-
609
- if (textNode !== undefined && textNode.length > MAX_BUFFER_LENGTH) {
610
- emitError("Max buffer length exceeded: textNode");
611
- maxActual = Math.max(maxActual, textNode.length);
612
- }
613
- if (numberNode.length > MAX_BUFFER_LENGTH) {
614
- emitError("Max buffer length exceeded: numberNode");
615
- maxActual = Math.max(maxActual, numberNode.length);
616
- }
617
-
618
- bufferCheckPosition = (MAX_BUFFER_LENGTH - maxActual)
619
- + position;
620
- }
621
-
622
- eventBus(STREAM_DATA).on(handleData);
623
-
624
- /* At the end of the http content close the clarinet
625
- This will provide an error if the total content provided was not
626
- valid json, ie if not all arrays, objects and Strings closed properly */
627
- eventBus(STREAM_END).on(handleStreamEnd);
628
-
629
- function emitError (errorString) {
630
- if (textNode !== undefined) {
631
- emitValueOpen(textNode);
632
- emitValueClose();
633
- textNode = undefined;
634
- }
635
-
636
- latestError = Error(errorString + "\nLn: "+line+
637
- "\nCol: "+column+
638
- "\nChr: "+c);
639
-
640
- emitFail(errorReport(undefined, undefined, latestError));
641
- }
642
-
643
- function handleStreamEnd() {
644
- if( state == BEGIN ) {
645
- // Handle the case where the stream closes without ever receiving
646
- // any input. This isn't an error - response bodies can be blank,
647
- // particularly for 204 http responses
648
-
649
- // Because of how Oboe is currently implemented, we parse a
650
- // completely empty stream as containing an empty object.
651
- // This is because Oboe's done event is only fired when the
652
- // root object of the JSON stream closes.
653
-
654
- // This should be decoupled and attached instead to the input stream
655
- // from the http (or whatever) resource ending.
656
- // If this decoupling could happen the SAX parser could simply emit
657
- // zero events on a completely empty input.
658
- emitValueOpen({});
659
- emitValueClose();
660
-
661
- closed = true;
662
- return;
663
- }
664
-
665
- if (state !== VALUE || depth !== 0)
666
- emitError("Unexpected end");
667
-
668
- if (textNode !== undefined) {
669
- emitValueOpen(textNode);
670
- emitValueClose();
671
- textNode = undefined;
672
- }
673
-
674
- closed = true;
675
- }
676
-
677
- function whitespace(c){
678
- return c == '\r' || c == '\n' || c == ' ' || c == '\t';
679
- }
680
-
681
- function handleData (chunk) {
682
-
683
- // this used to throw the error but inside Oboe we will have already
684
- // gotten the error when it was emitted. The important thing is to
685
- // not continue with the parse.
686
- if (latestError)
687
- return;
688
-
689
- if (closed) {
690
- return emitError("Cannot write after close");
691
- }
692
-
693
- var i = 0;
694
- c = chunk[0];
695
-
696
- while (c) {
697
- p = c;
698
- c = chunk[i++];
699
- if(!c) break;
700
-
701
- position ++;
702
- if (c == "\n") {
703
- line ++;
704
- column = 0;
705
- } else column ++;
706
- switch (state) {
707
-
708
- case BEGIN:
709
- if (c === "{") state = OPEN_OBJECT;
710
- else if (c === "[") state = OPEN_ARRAY;
711
- else if (!whitespace(c))
712
- return emitError("Non-whitespace before {[.");
713
- continue;
714
-
715
- case OPEN_KEY:
716
- case OPEN_OBJECT:
717
- if (whitespace(c)) continue;
718
- if(state === OPEN_KEY) stack.push(CLOSE_KEY);
719
- else {
720
- if(c === '}') {
721
- emitValueOpen({});
722
- emitValueClose();
723
- state = stack.pop() || VALUE;
724
- continue;
725
- } else stack.push(CLOSE_OBJECT);
726
- }
727
- if(c === '"')
728
- state = STRING;
729
- else
730
- return emitError("Malformed object key should start with \" ");
731
- continue;
732
-
733
- case CLOSE_KEY:
734
- case CLOSE_OBJECT:
735
- if (whitespace(c)) continue;
736
-
737
- if(c===':') {
738
- if(state === CLOSE_OBJECT) {
739
- stack.push(CLOSE_OBJECT);
740
-
741
- if (textNode !== undefined) {
742
- // was previously (in upstream Clarinet) one event
743
- // - object open came with the text of the first
744
- emitValueOpen({});
745
- emitSaxKey(textNode);
746
- textNode = undefined;
747
- }
748
- depth++;
749
- } else {
750
- if (textNode !== undefined) {
751
- emitSaxKey(textNode);
752
- textNode = undefined;
753
- }
754
- }
755
- state = VALUE;
756
- } else if (c==='}') {
757
- if (textNode !== undefined) {
758
- emitValueOpen(textNode);
759
- emitValueClose();
760
- textNode = undefined;
761
- }
762
- emitValueClose();
763
- depth--;
764
- state = stack.pop() || VALUE;
765
- } else if(c===',') {
766
- if(state === CLOSE_OBJECT)
767
- stack.push(CLOSE_OBJECT);
768
- if (textNode !== undefined) {
769
- emitValueOpen(textNode);
770
- emitValueClose();
771
- textNode = undefined;
772
- }
773
- state = OPEN_KEY;
774
- } else
775
- return emitError('Bad object');
776
- continue;
777
-
778
- case OPEN_ARRAY: // after an array there always a value
779
- case VALUE:
780
- if (whitespace(c)) continue;
781
- if(state===OPEN_ARRAY) {
782
- emitValueOpen([]);
783
- depth++;
784
- state = VALUE;
785
- if(c === ']') {
786
- emitValueClose();
787
- depth--;
788
- state = stack.pop() || VALUE;
789
- continue;
790
- } else {
791
- stack.push(CLOSE_ARRAY);
792
- }
793
- }
794
- if(c === '"') state = STRING;
795
- else if(c === '{') state = OPEN_OBJECT;
796
- else if(c === '[') state = OPEN_ARRAY;
797
- else if(c === 't') state = TRUE;
798
- else if(c === 'f') state = FALSE;
799
- else if(c === 'n') state = NULL;
800
- else if(c === '-') { // keep and continue
801
- numberNode += c;
802
- } else if(c==='0') {
803
- numberNode += c;
804
- state = NUMBER_DIGIT;
805
- } else if('123456789'.indexOf(c) !== -1) {
806
- numberNode += c;
807
- state = NUMBER_DIGIT;
808
- } else
809
- return emitError("Bad value");
810
- continue;
811
-
812
- case CLOSE_ARRAY:
813
- if(c===',') {
814
- stack.push(CLOSE_ARRAY);
815
- if (textNode !== undefined) {
816
- emitValueOpen(textNode);
817
- emitValueClose();
818
- textNode = undefined;
819
- }
820
- state = VALUE;
821
- } else if (c===']') {
822
- if (textNode !== undefined) {
823
- emitValueOpen(textNode);
824
- emitValueClose();
825
- textNode = undefined;
826
- }
827
- emitValueClose();
828
- depth--;
829
- state = stack.pop() || VALUE;
830
- } else if (whitespace(c))
831
- continue;
832
- else
833
- return emitError('Bad array');
834
- continue;
835
-
836
- case STRING:
837
- if (textNode === undefined) {
838
- textNode = "";
839
- }
840
-
841
- // thanks thejh, this is an about 50% performance improvement.
842
- var starti = i-1;
843
-
844
- STRING_BIGLOOP: while (true) {
845
-
846
- // zero means "no unicode active". 1-4 mean "parse some more". end after 4.
847
- while (unicodeI > 0) {
848
- unicodeS += c;
849
- c = chunk.charAt(i++);
850
- if (unicodeI === 4) {
851
- // TODO this might be slow? well, probably not used too often anyway
852
- textNode += String.fromCharCode(parseInt(unicodeS, 16));
853
- unicodeI = 0;
854
- starti = i-1;
855
- } else {
856
- unicodeI++;
857
- }
858
- // we can just break here: no stuff we skipped that still has to be sliced out or so
859
- if (!c) break STRING_BIGLOOP;
860
- }
861
- if (c === '"' && !slashed) {
862
- state = stack.pop() || VALUE;
863
- textNode += chunk.substring(starti, i-1);
864
- break;
865
- }
866
- if (c === '\\' && !slashed) {
867
- slashed = true;
868
- textNode += chunk.substring(starti, i-1);
869
- c = chunk.charAt(i++);
870
- if (!c) break;
871
- }
872
- if (slashed) {
873
- slashed = false;
874
- if (c === 'n') { textNode += '\n'; }
875
- else if (c === 'r') { textNode += '\r'; }
876
- else if (c === 't') { textNode += '\t'; }
877
- else if (c === 'f') { textNode += '\f'; }
878
- else if (c === 'b') { textNode += '\b'; }
879
- else if (c === 'u') {
880
- // \uxxxx. meh!
881
- unicodeI = 1;
882
- unicodeS = '';
883
- } else {
884
- textNode += c;
885
- }
886
- c = chunk.charAt(i++);
887
- starti = i-1;
888
- if (!c) break;
889
- else continue;
890
- }
891
-
892
- stringTokenPattern.lastIndex = i;
893
- var reResult = stringTokenPattern.exec(chunk);
894
- if (!reResult) {
895
- i = chunk.length+1;
896
- textNode += chunk.substring(starti, i-1);
897
- break;
898
- }
899
- i = reResult.index+1;
900
- c = chunk.charAt(reResult.index);
901
- if (!c) {
902
- textNode += chunk.substring(starti, i-1);
903
- break;
904
- }
905
- }
906
- continue;
907
-
908
- case TRUE:
909
- if (!c) continue; // strange buffers
910
- if (c==='r') state = TRUE2;
911
- else
912
- return emitError( 'Invalid true started with t'+ c);
913
- continue;
914
-
915
- case TRUE2:
916
- if (!c) continue;
917
- if (c==='u') state = TRUE3;
918
- else
919
- return emitError('Invalid true started with tr'+ c);
920
- continue;
921
-
922
- case TRUE3:
923
- if (!c) continue;
924
- if(c==='e') {
925
- emitValueOpen(true);
926
- emitValueClose();
927
- state = stack.pop() || VALUE;
928
- } else
929
- return emitError('Invalid true started with tru'+ c);
930
- continue;
931
-
932
- case FALSE:
933
- if (!c) continue;
934
- if (c==='a') state = FALSE2;
935
- else
936
- return emitError('Invalid false started with f'+ c);
937
- continue;
938
-
939
- case FALSE2:
940
- if (!c) continue;
941
- if (c==='l') state = FALSE3;
942
- else
943
- return emitError('Invalid false started with fa'+ c);
944
- continue;
945
-
946
- case FALSE3:
947
- if (!c) continue;
948
- if (c==='s') state = FALSE4;
949
- else
950
- return emitError('Invalid false started with fal'+ c);
951
- continue;
952
-
953
- case FALSE4:
954
- if (!c) continue;
955
- if (c==='e') {
956
- emitValueOpen(false);
957
- emitValueClose();
958
- state = stack.pop() || VALUE;
959
- } else
960
- return emitError('Invalid false started with fals'+ c);
961
- continue;
962
-
963
- case NULL:
964
- if (!c) continue;
965
- if (c==='u') state = NULL2;
966
- else
967
- return emitError('Invalid null started with n'+ c);
968
- continue;
969
-
970
- case NULL2:
971
- if (!c) continue;
972
- if (c==='l') state = NULL3;
973
- else
974
- return emitError('Invalid null started with nu'+ c);
975
- continue;
976
-
977
- case NULL3:
978
- if (!c) continue;
979
- if(c==='l') {
980
- emitValueOpen(null);
981
- emitValueClose();
982
- state = stack.pop() || VALUE;
983
- } else
984
- return emitError('Invalid null started with nul'+ c);
985
- continue;
986
-
987
- case NUMBER_DECIMAL_POINT:
988
- if(c==='.') {
989
- numberNode += c;
990
- state = NUMBER_DIGIT;
991
- } else
992
- return emitError('Leading zero not followed by .');
993
- continue;
994
-
995
- case NUMBER_DIGIT:
996
- if('0123456789'.indexOf(c) !== -1) numberNode += c;
997
- else if (c==='.') {
998
- if(numberNode.indexOf('.')!==-1)
999
- return emitError('Invalid number has two dots');
1000
- numberNode += c;
1001
- } else if (c==='e' || c==='E') {
1002
- if(numberNode.indexOf('e')!==-1 ||
1003
- numberNode.indexOf('E')!==-1 )
1004
- return emitError('Invalid number has two exponential');
1005
- numberNode += c;
1006
- } else if (c==="+" || c==="-") {
1007
- if(!(p==='e' || p==='E'))
1008
- return emitError('Invalid symbol in number');
1009
- numberNode += c;
1010
- } else {
1011
- if (numberNode) {
1012
- emitValueOpen(parseFloat(numberNode));
1013
- emitValueClose();
1014
- numberNode = "";
1015
- }
1016
- i--; // go back one
1017
- state = stack.pop() || VALUE;
1018
- }
1019
- continue;
1020
-
1021
- default:
1022
- return emitError("Unknown state: " + state);
1023
- }
1024
- }
1025
- if (position >= bufferCheckPosition)
1026
- checkBufferLength();
1027
- }
1028
- }
1029
-
1030
-
1031
- /**
1032
- * A bridge used to assign stateless functions to listen to clarinet.
1033
- *
1034
- * As well as the parameter from clarinet, each callback will also be passed
1035
- * the result of the last callback.
1036
- *
1037
- * This may also be used to clear all listeners by assigning zero handlers:
1038
- *
1039
- * ascentManager( clarinet, {} )
1040
- */
1041
- function ascentManager(oboeBus, handlers){
1042
- "use strict";
1043
-
1044
- var listenerId = {},
1045
- ascent;
1046
-
1047
- function stateAfter(handler) {
1048
- return function(param){
1049
- ascent = handler( ascent, param);
1050
- }
1051
- }
1052
-
1053
- for( var eventName in handlers ) {
1054
-
1055
- oboeBus(eventName).on(stateAfter(handlers[eventName]), listenerId);
1056
- }
1057
-
1058
- oboeBus(NODE_SWAP).on(function(newNode) {
1059
-
1060
- var oldHead = head(ascent),
1061
- key = keyOf(oldHead),
1062
- ancestors = tail(ascent),
1063
- parentNode;
1064
-
1065
- if( ancestors ) {
1066
- parentNode = nodeOf(head(ancestors));
1067
- parentNode[key] = newNode;
1068
- }
1069
- });
1070
-
1071
- oboeBus(NODE_DROP).on(function() {
1072
-
1073
- var oldHead = head(ascent),
1074
- key = keyOf(oldHead),
1075
- ancestors = tail(ascent),
1076
- parentNode;
1077
-
1078
- if( ancestors ) {
1079
- parentNode = nodeOf(head(ancestors));
1080
-
1081
- delete parentNode[key];
1082
- }
1083
- });
1084
-
1085
- oboeBus(ABORTING).on(function(){
1086
-
1087
- for( var eventName in handlers ) {
1088
- oboeBus(eventName).un(listenerId);
1089
- }
1090
- });
1091
- }
1092
-
1093
- // based on gist https://gist.github.com/monsur/706839
1094
-
1095
- /**
1096
- * XmlHttpRequest's getAllResponseHeaders() method returns a string of response
1097
- * headers according to the format described here:
1098
- * http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders-method
1099
- * This method parses that string into a user-friendly key/value pair object.
1100
- */
1101
- function parseResponseHeaders(headerStr) {
1102
- var headers = {};
1103
-
1104
- headerStr && headerStr.split('\u000d\u000a')
1105
- .forEach(function(headerPair){
1106
-
1107
- // Can't use split() here because it does the wrong thing
1108
- // if the header value has the string ": " in it.
1109
- var index = headerPair.indexOf('\u003a\u0020');
1110
-
1111
- headers[headerPair.substring(0, index)]
1112
- = headerPair.substring(index + 2);
1113
- });
1114
-
1115
- return headers;
1116
- }
1117
-
1118
- /**
1119
- * Detect if a given URL is cross-origin in the scope of the
1120
- * current page.
1121
- *
1122
- * Browser only (since cross-origin has no meaning in Node.js)
1123
- *
1124
- * @param {Object} pageLocation - as in window.location
1125
- * @param {Object} ajaxHost - an object like window.location describing the
1126
- * origin of the url that we want to ajax in
1127
- */
1128
- function isCrossOrigin(pageLocation, ajaxHost) {
1129
-
1130
- /*
1131
- * NB: defaultPort only knows http and https.
1132
- * Returns undefined otherwise.
1133
- */
1134
- function defaultPort(protocol) {
1135
- return {'http:':80, 'https:':443}[protocol];
1136
- }
1137
-
1138
- function portOf(location) {
1139
- // pageLocation should always have a protocol. ajaxHost if no port or
1140
- // protocol is specified, should use the port of the containing page
1141
-
1142
- return location.port || defaultPort(location.protocol||pageLocation.protocol);
1143
- }
1144
-
1145
- // if ajaxHost doesn't give a domain, port is the same as pageLocation
1146
- // it can't give a protocol but not a domain
1147
- // it can't give a port but not a domain
1148
-
1149
- return !!( (ajaxHost.protocol && (ajaxHost.protocol != pageLocation.protocol)) ||
1150
- (ajaxHost.host && (ajaxHost.host != pageLocation.host)) ||
1151
- (ajaxHost.host && (portOf(ajaxHost) != portOf(pageLocation)))
1152
- );
1153
- }
1154
-
1155
- /* turn any url into an object like window.location */
1156
- function parseUrlOrigin(url) {
1157
- // url could be domain-relative
1158
- // url could give a domain
1159
-
1160
- // cross origin means:
1161
- // same domain
1162
- // same port
1163
- // some protocol
1164
- // so, same everything up to the first (single) slash
1165
- // if such is given
1166
- //
1167
- // can ignore everything after that
1168
-
1169
- var URL_HOST_PATTERN = /(\w+:)?(?:\/\/)([\w.-]+)?(?::(\d+))?\/?/,
1170
-
1171
- // if no match, use an empty array so that
1172
- // subexpressions 1,2,3 are all undefined
1173
- // and will ultimately return all empty
1174
- // strings as the parse result:
1175
- urlHostMatch = URL_HOST_PATTERN.exec(url) || [];
1176
-
1177
- return {
1178
- protocol: urlHostMatch[1] || '',
1179
- host: urlHostMatch[2] || '',
1180
- port: urlHostMatch[3] || ''
1181
- };
1182
- }
1183
-
1184
- function httpTransport(){
1185
- return new XMLHttpRequest();
1186
- }
1187
-
1188
- /**
1189
- * A wrapper around the browser XmlHttpRequest object that raises an
1190
- * event whenever a new part of the response is available.
1191
- *
1192
- * In older browsers progressive reading is impossible so all the
1193
- * content is given in a single call. For newer ones several events
1194
- * should be raised, allowing progressive interpretation of the response.
1195
- *
1196
- * @param {Function} oboeBus an event bus local to this Oboe instance
1197
- * @param {XMLHttpRequest} xhr the xhr to use as the transport. Under normal
1198
- * operation, will have been created using httpTransport() above
1199
- * but for tests a stub can be provided instead.
1200
- * @param {String} method one of 'GET' 'POST' 'PUT' 'PATCH' 'DELETE'
1201
- * @param {String} url the url to make a request to
1202
- * @param {String|Null} data some content to be sent with the request.
1203
- * Only valid if method is POST or PUT.
1204
- * @param {Object} [headers] the http request headers to send
1205
- * @param {boolean} withCredentials the XHR withCredentials property will be
1206
- * set to this value
1207
- */
1208
- function streamingHttp(oboeBus, xhr, method, url, data, headers, withCredentials) {
1209
-
1210
- "use strict";
1211
-
1212
- var emitStreamData = oboeBus(STREAM_DATA).emit,
1213
- emitFail = oboeBus(FAIL_EVENT).emit,
1214
- numberOfCharsAlreadyGivenToCallback = 0,
1215
- stillToSendStartEvent = true;
1216
-
1217
- // When an ABORTING message is put on the event bus abort
1218
- // the ajax request
1219
- oboeBus( ABORTING ).on( function(){
1220
-
1221
- // if we keep the onreadystatechange while aborting the XHR gives
1222
- // a callback like a successful call so first remove this listener
1223
- // by assigning null:
1224
- xhr.onreadystatechange = null;
1225
-
1226
- xhr.abort();
1227
- });
1228
-
1229
- /**
1230
- * Handle input from the underlying xhr: either a state change,
1231
- * the progress event or the request being complete.
1232
- */
1233
- function handleProgress() {
1234
-
1235
- var textSoFar = xhr.responseText,
1236
- newText = textSoFar.substr(numberOfCharsAlreadyGivenToCallback);
1237
-
1238
-
1239
- /* Raise the event for new text.
1240
-
1241
- On older browsers, the new text is the whole response.
1242
- On newer/better ones, the fragment part that we got since
1243
- last progress. */
1244
-
1245
- if( newText ) {
1246
- emitStreamData( newText );
1247
- }
1248
-
1249
- numberOfCharsAlreadyGivenToCallback = len(textSoFar);
1250
- }
1251
-
1252
-
1253
- if('onprogress' in xhr){ // detect browser support for progressive delivery
1254
- xhr.onprogress = handleProgress;
1255
- }
1256
-
1257
- xhr.onreadystatechange = function() {
1258
-
1259
- function sendStartIfNotAlready() {
1260
- // Internet Explorer is very unreliable as to when xhr.status etc can
1261
- // be read so has to be protected with try/catch and tried again on
1262
- // the next readyState if it fails
1263
- try{
1264
- stillToSendStartEvent && oboeBus( HTTP_START ).emit(
1265
- xhr.status,
1266
- parseResponseHeaders(xhr.getAllResponseHeaders()) );
1267
- stillToSendStartEvent = false;
1268
- } catch(e){/* do nothing, will try again on next readyState*/}
1269
- }
1270
-
1271
- switch( xhr.readyState ) {
1272
-
1273
- case 2: // HEADERS_RECEIVED
1274
- case 3: // LOADING
1275
- return sendStartIfNotAlready();
1276
-
1277
- case 4: // DONE
1278
- sendStartIfNotAlready(); // if xhr.status hasn't been available yet, it must be NOW, huh IE?
1279
-
1280
- // is this a 2xx http code?
1281
- var successful = String(xhr.status)[0] == 2;
1282
-
1283
- if( successful ) {
1284
- // In Chrome 29 (not 28) no onprogress is emitted when a response
1285
- // is complete before the onload. We need to always do handleInput
1286
- // in case we get the load but have not had a final progress event.
1287
- // This looks like a bug and may change in future but let's take
1288
- // the safest approach and assume we might not have received a
1289
- // progress event for each part of the response
1290
- handleProgress();
1291
-
1292
- oboeBus(STREAM_END).emit();
1293
- } else {
1294
-
1295
- emitFail( errorReport(
1296
- xhr.status,
1297
- xhr.responseText
1298
- ));
1299
- }
1300
- }
1301
- };
1302
-
1303
- try{
1304
-
1305
- xhr.open(method, url, true);
1306
-
1307
- for( var headerName in headers ){
1308
- xhr.setRequestHeader(headerName, headers[headerName]);
1309
- }
1310
-
1311
- if( !isCrossOrigin(window.location, parseUrlOrigin(url)) ) {
1312
- xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
1313
- }
1314
-
1315
- xhr.withCredentials = withCredentials;
1316
-
1317
- xhr.send(data);
1318
-
1319
- } catch( e ) {
1320
-
1321
- // To keep a consistent interface with Node, we can't emit an event here.
1322
- // Node's streaming http adaptor receives the error as an asynchronous
1323
- // event rather than as an exception. If we emitted now, the Oboe user
1324
- // has had no chance to add a .fail listener so there is no way
1325
- // the event could be useful. For both these reasons defer the
1326
- // firing to the next JS frame.
1327
- window.setTimeout(
1328
- partialComplete(emitFail, errorReport(undefined, undefined, e))
1329
- , 0
1330
- );
1331
- }
1332
- }
1333
-
1334
- var jsonPathSyntax = (function() {
1335
-
1336
- var
1337
-
1338
- /**
1339
- * Export a regular expression as a simple function by exposing just
1340
- * the Regex#exec. This allows regex tests to be used under the same
1341
- * interface as differently implemented tests, or for a user of the
1342
- * tests to not concern themselves with their implementation as regular
1343
- * expressions.
1344
- *
1345
- * This could also be expressed point-free as:
1346
- * Function.prototype.bind.bind(RegExp.prototype.exec),
1347
- *
1348
- * But that's far too confusing! (and not even smaller once minified
1349
- * and gzipped)
1350
- */
1351
- regexDescriptor = function regexDescriptor(regex) {
1352
- return regex.exec.bind(regex);
1353
- }
1354
-
1355
- /**
1356
- * Join several regular expressions and express as a function.
1357
- * This allows the token patterns to reuse component regular expressions
1358
- * instead of being expressed in full using huge and confusing regular
1359
- * expressions.
1360
- */
1361
- , jsonPathClause = varArgs(function( componentRegexes ) {
1362
-
1363
- // The regular expressions all start with ^ because we
1364
- // only want to find matches at the start of the
1365
- // JSONPath fragment we are inspecting
1366
- componentRegexes.unshift(/^/);
1367
-
1368
- return regexDescriptor(
1369
- RegExp(
1370
- componentRegexes.map(attr('source')).join('')
1371
- )
1372
- );
1373
- })
1374
-
1375
- , possiblyCapturing = /(\$?)/
1376
- , namedNode = /([\w-_]+|\*)/
1377
- , namePlaceholder = /()/
1378
- , nodeInArrayNotation = /\["([^"]+)"\]/
1379
- , numberedNodeInArrayNotation = /\[(\d+|\*)\]/
1380
- , fieldList = /{([\w ]*?)}/
1381
- , optionalFieldList = /(?:{([\w ]*?)})?/
1382
-
1383
-
1384
- // foo or *
1385
- , jsonPathNamedNodeInObjectNotation = jsonPathClause(
1386
- possiblyCapturing,
1387
- namedNode,
1388
- optionalFieldList
1389
- )
1390
-
1391
- // ["foo"]
1392
- , jsonPathNamedNodeInArrayNotation = jsonPathClause(
1393
- possiblyCapturing,
1394
- nodeInArrayNotation,
1395
- optionalFieldList
1396
- )
1397
-
1398
- // [2] or [*]
1399
- , jsonPathNumberedNodeInArrayNotation = jsonPathClause(
1400
- possiblyCapturing,
1401
- numberedNodeInArrayNotation,
1402
- optionalFieldList
1403
- )
1404
-
1405
- // {a b c}
1406
- , jsonPathPureDuckTyping = jsonPathClause(
1407
- possiblyCapturing,
1408
- namePlaceholder,
1409
- fieldList
1410
- )
1411
-
1412
- // ..
1413
- , jsonPathDoubleDot = jsonPathClause(/\.\./)
1414
-
1415
- // .
1416
- , jsonPathDot = jsonPathClause(/\./)
1417
-
1418
- // !
1419
- , jsonPathBang = jsonPathClause(
1420
- possiblyCapturing,
1421
- /!/
1422
- )
1423
-
1424
- // nada!
1425
- , emptyString = jsonPathClause(/$/)
1426
-
1427
- ;
1428
-
1429
-
1430
- /* We export only a single function. When called, this function injects
1431
- into another function the descriptors from above.
1432
- */
1433
- return function (fn){
1434
- return fn(
1435
- lazyUnion(
1436
- jsonPathNamedNodeInObjectNotation
1437
- , jsonPathNamedNodeInArrayNotation
1438
- , jsonPathNumberedNodeInArrayNotation
1439
- , jsonPathPureDuckTyping
1440
- )
1441
- , jsonPathDoubleDot
1442
- , jsonPathDot
1443
- , jsonPathBang
1444
- , emptyString
1445
- );
1446
- };
1447
-
1448
- }());
1449
- /**
1450
- * Get a new key->node mapping
1451
- *
1452
- * @param {String|Number} key
1453
- * @param {Object|Array|String|Number|null} node a value found in the json
1454
- */
1455
- function namedNode(key, node) {
1456
- return {key:key, node:node};
1457
- }
1458
-
1459
- /** get the key of a namedNode */
1460
- var keyOf = attr('key');
1461
-
1462
- /** get the node from a namedNode */
1463
- var nodeOf = attr('node');
1464
- /**
1465
- * This file provides various listeners which can be used to build up
1466
- * a changing ascent based on the callbacks provided by Clarinet. It listens
1467
- * to the low-level events from Clarinet and emits higher-level ones.
1468
- *
1469
- * The building up is stateless so to track a JSON file
1470
- * ascentManager.js is required to store the ascent state
1471
- * between calls.
1472
- */
1473
-
1474
-
1475
-
1476
- /**
1477
- * A special value to use in the path list to represent the path 'to' a root
1478
- * object (which doesn't really have any path). This prevents the need for
1479
- * special-casing detection of the root object and allows it to be treated
1480
- * like any other object. We might think of this as being similar to the
1481
- * 'unnamed root' domain ".", eg if I go to
1482
- * http://en.wikipedia.org./wiki/En/Main_page the dot after 'org' deliminates
1483
- * the unnamed root of the DNS.
1484
- *
1485
- * This is kept as an object to take advantage that in Javascript's OO objects
1486
- * are guaranteed to be distinct, therefore no other object can possibly clash
1487
- * with this one. Strings, numbers etc provide no such guarantee.
1488
- **/
1489
- var ROOT_PATH = {};
1490
-
1491
-
1492
- /**
1493
- * Create a new set of handlers for clarinet's events, bound to the emit
1494
- * function given.
1495
- */
1496
- function incrementalContentBuilder( oboeBus ) {
1497
-
1498
- var emitNodeOpened = oboeBus(NODE_OPENED).emit,
1499
- emitNodeClosed = oboeBus(NODE_CLOSED).emit,
1500
- emitRootOpened = oboeBus(ROOT_PATH_FOUND).emit,
1501
- emitRootClosed = oboeBus(ROOT_NODE_FOUND).emit;
1502
-
1503
- function arrayIndicesAreKeys( possiblyInconsistentAscent, newDeepestNode) {
1504
-
1505
- /* for values in arrays we aren't pre-warned of the coming paths
1506
- (Clarinet gives no call to onkey like it does for values in objects)
1507
- so if we are in an array we need to create this path ourselves. The
1508
- key will be len(parentNode) because array keys are always sequential
1509
- numbers. */
1510
-
1511
- var parentNode = nodeOf( head( possiblyInconsistentAscent));
1512
-
1513
- return isOfType( Array, parentNode)
1514
- ?
1515
- keyFound( possiblyInconsistentAscent,
1516
- len(parentNode),
1517
- newDeepestNode
1518
- )
1519
- :
1520
- // nothing needed, return unchanged
1521
- possiblyInconsistentAscent
1522
- ;
1523
- }
1524
-
1525
- function nodeOpened( ascent, newDeepestNode ) {
1526
-
1527
- if( !ascent ) {
1528
- // we discovered the root node,
1529
- emitRootOpened( newDeepestNode);
1530
-
1531
- return keyFound( ascent, ROOT_PATH, newDeepestNode);
1532
- }
1533
-
1534
- // we discovered a non-root node
1535
-
1536
- var arrayConsistentAscent = arrayIndicesAreKeys( ascent, newDeepestNode),
1537
- ancestorBranches = tail( arrayConsistentAscent),
1538
- previouslyUnmappedName = keyOf( head( arrayConsistentAscent));
1539
-
1540
- appendBuiltContent(
1541
- ancestorBranches,
1542
- previouslyUnmappedName,
1543
- newDeepestNode
1544
- );
1545
-
1546
- return cons(
1547
- namedNode( previouslyUnmappedName, newDeepestNode ),
1548
- ancestorBranches
1549
- );
1550
- }
1551
-
1552
-
1553
- /**
1554
- * Add a new value to the object we are building up to represent the
1555
- * parsed JSON
1556
- */
1557
- function appendBuiltContent( ancestorBranches, key, node ){
1558
-
1559
- nodeOf( head( ancestorBranches))[key] = node;
1560
- }
1561
-
1562
-
1563
- /**
1564
- * For when we find a new key in the json.
1565
- *
1566
- * @param {String|Number|Object} newDeepestName the key. If we are in an
1567
- * array will be a number, otherwise a string. May take the special
1568
- * value ROOT_PATH if the root node has just been found
1569
- *
1570
- * @param {String|Number|Object|Array|Null|undefined} [maybeNewDeepestNode]
1571
- * usually this won't be known so can be undefined. Can't use null
1572
- * to represent unknown because null is a valid value in JSON
1573
- **/
1574
- function keyFound(ascent, newDeepestName, maybeNewDeepestNode) {
1575
-
1576
- if( ascent ) { // if not root
1577
-
1578
- // If we have the key but (unless adding to an array) no known value
1579
- // yet. Put that key in the output but against no defined value:
1580
- appendBuiltContent( ascent, newDeepestName, maybeNewDeepestNode );
1581
- }
1582
-
1583
- var ascentWithNewPath = cons(
1584
- namedNode( newDeepestName,
1585
- maybeNewDeepestNode),
1586
- ascent
1587
- );
1588
-
1589
- emitNodeOpened( ascentWithNewPath);
1590
-
1591
- return ascentWithNewPath;
1592
- }
1593
-
1594
-
1595
- /**
1596
- * For when the current node ends.
1597
- */
1598
- function nodeClosed( ascent ) {
1599
-
1600
- emitNodeClosed( ascent);
1601
-
1602
- return tail( ascent) ||
1603
- // If there are no nodes left in the ascent the root node
1604
- // just closed. Emit a special event for this:
1605
- emitRootClosed(nodeOf(head(ascent)));
1606
- }
1607
-
1608
- var contentBuilderHandlers = {};
1609
- contentBuilderHandlers[SAX_VALUE_OPEN] = nodeOpened;
1610
- contentBuilderHandlers[SAX_VALUE_CLOSE] = nodeClosed;
1611
- contentBuilderHandlers[SAX_KEY] = keyFound;
1612
- return contentBuilderHandlers;
1613
- }
1614
-
1615
- /**
1616
- * The jsonPath evaluator compiler used for Oboe.js.
1617
- *
1618
- * One function is exposed. This function takes a String JSONPath spec and
1619
- * returns a function to test candidate ascents for matches.
1620
- *
1621
- * String jsonPath -> (List ascent) -> Boolean|Object
1622
- *
1623
- * This file is coded in a pure functional style. That is, no function has
1624
- * side effects, every function evaluates to the same value for the same
1625
- * arguments and no variables are reassigned.
1626
- */
1627
- // the call to jsonPathSyntax injects the token syntaxes that are needed
1628
- // inside the compiler
1629
- var jsonPathCompiler = jsonPathSyntax(function (pathNodeSyntax,
1630
- doubleDotSyntax,
1631
- dotSyntax,
1632
- bangSyntax,
1633
- emptySyntax ) {
1634
-
1635
- var CAPTURING_INDEX = 1;
1636
- var NAME_INDEX = 2;
1637
- var FIELD_LIST_INDEX = 3;
1638
-
1639
- var headKey = compose2(keyOf, head),
1640
- headNode = compose2(nodeOf, head);
1641
-
1642
- /**
1643
- * Create an evaluator function for a named path node, expressed in the
1644
- * JSONPath like:
1645
- * foo
1646
- * ["bar"]
1647
- * [2]
1648
- */
1649
- function nameClause(previousExpr, detection ) {
1650
-
1651
- var name = detection[NAME_INDEX],
1652
-
1653
- matchesName = ( !name || name == '*' )
1654
- ? always
1655
- : function(ascent){return headKey(ascent) == name};
1656
-
1657
-
1658
- return lazyIntersection(matchesName, previousExpr);
1659
- }
1660
-
1661
- /**
1662
- * Create an evaluator function for a a duck-typed node, expressed like:
1663
- *
1664
- * {spin, taste, colour}
1665
- * .particle{spin, taste, colour}
1666
- * *{spin, taste, colour}
1667
- */
1668
- function duckTypeClause(previousExpr, detection) {
1669
-
1670
- var fieldListStr = detection[FIELD_LIST_INDEX];
1671
-
1672
- if (!fieldListStr)
1673
- return previousExpr; // don't wrap at all, return given expr as-is
1674
-
1675
- var hasAllrequiredFields = partialComplete(
1676
- hasAllProperties,
1677
- arrayAsList(fieldListStr.split(/\W+/))
1678
- ),
1679
-
1680
- isMatch = compose2(
1681
- hasAllrequiredFields,
1682
- headNode
1683
- );
1684
-
1685
- return lazyIntersection(isMatch, previousExpr);
1686
- }
1687
-
1688
- /**
1689
- * Expression for $, returns the evaluator function
1690
- */
1691
- function capture( previousExpr, detection ) {
1692
-
1693
- // extract meaning from the detection
1694
- var capturing = !!detection[CAPTURING_INDEX];
1695
-
1696
- if (!capturing)
1697
- return previousExpr; // don't wrap at all, return given expr as-is
1698
-
1699
- return lazyIntersection(previousExpr, head);
1700
-
1701
- }
1702
-
1703
- /**
1704
- * Create an evaluator function that moves onto the next item on the
1705
- * lists. This function is the place where the logic to move up a
1706
- * level in the ascent exists.
1707
- *
1708
- * Eg, for JSONPath ".foo" we need skip1(nameClause(always, [,'foo']))
1709
- */
1710
- function skip1(previousExpr) {
1711
-
1712
-
1713
- if( previousExpr == always ) {
1714
- /* If there is no previous expression this consume command
1715
- is at the start of the jsonPath.
1716
- Since JSONPath specifies what we'd like to find but not
1717
- necessarily everything leading down to it, when running
1718
- out of JSONPath to check against we default to true */
1719
- return always;
1720
- }
1721
-
1722
- /** return true if the ascent we have contains only the JSON root,
1723
- * false otherwise
1724
- */
1725
- function notAtRoot(ascent){
1726
- return headKey(ascent) != ROOT_PATH;
1727
- }
1728
-
1729
- return lazyIntersection(
1730
- /* If we're already at the root but there are more
1731
- expressions to satisfy, can't consume any more. No match.
1732
-
1733
- This check is why none of the other exprs have to be able
1734
- to handle empty lists; skip1 is the only evaluator that
1735
- moves onto the next token and it refuses to do so once it
1736
- reaches the last item in the list. */
1737
- notAtRoot,
1738
-
1739
- /* We are not at the root of the ascent yet.
1740
- Move to the next level of the ascent by handing only
1741
- the tail to the previous expression */
1742
- compose2(previousExpr, tail)
1743
- );
1744
-
1745
- }
1746
-
1747
- /**
1748
- * Create an evaluator function for the .. (double dot) token. Consumes
1749
- * zero or more levels of the ascent, the fewest that are required to find
1750
- * a match when given to previousExpr.
1751
- */
1752
- function skipMany(previousExpr) {
1753
-
1754
- if( previousExpr == always ) {
1755
- /* If there is no previous expression this consume command
1756
- is at the start of the jsonPath.
1757
- Since JSONPath specifies what we'd like to find but not
1758
- necessarily everything leading down to it, when running
1759
- out of JSONPath to check against we default to true */
1760
- return always;
1761
- }
1762
-
1763
- var
1764
- // In JSONPath .. is equivalent to !.. so if .. reaches the root
1765
- // the match has succeeded. Ie, we might write ..foo or !..foo
1766
- // and both should match identically.
1767
- terminalCaseWhenArrivingAtRoot = rootExpr(),
1768
- terminalCaseWhenPreviousExpressionIsSatisfied = previousExpr,
1769
- recursiveCase = skip1(function(ascent) {
1770
- return cases(ascent);
1771
- }),
1772
-
1773
- cases = lazyUnion(
1774
- terminalCaseWhenArrivingAtRoot
1775
- , terminalCaseWhenPreviousExpressionIsSatisfied
1776
- , recursiveCase
1777
- );
1778
-
1779
- return cases;
1780
- }
1781
-
1782
- /**
1783
- * Generate an evaluator for ! - matches only the root element of the json
1784
- * and ignores any previous expressions since nothing may precede !.
1785
- */
1786
- function rootExpr() {
1787
-
1788
- return function(ascent){
1789
- return headKey(ascent) == ROOT_PATH;
1790
- };
1791
- }
1792
-
1793
- /**
1794
- * Generate a statement wrapper to sit around the outermost
1795
- * clause evaluator.
1796
- *
1797
- * Handles the case where the capturing is implicit because the JSONPath
1798
- * did not contain a '$' by returning the last node.
1799
- */
1800
- function statementExpr(lastClause) {
1801
-
1802
- return function(ascent) {
1803
-
1804
- // kick off the evaluation by passing through to the last clause
1805
- var exprMatch = lastClause(ascent);
1806
-
1807
- return exprMatch === true ? head(ascent) : exprMatch;
1808
- };
1809
- }
1810
-
1811
- /**
1812
- * For when a token has been found in the JSONPath input.
1813
- * Compiles the parser for that token and returns in combination with the
1814
- * parser already generated.
1815
- *
1816
- * @param {Function} exprs a list of the clause evaluator generators for
1817
- * the token that was found
1818
- * @param {Function} parserGeneratedSoFar the parser already found
1819
- * @param {Array} detection the match given by the regex engine when
1820
- * the feature was found
1821
- */
1822
- function expressionsReader( exprs, parserGeneratedSoFar, detection ) {
1823
-
1824
- // if exprs is zero-length foldR will pass back the
1825
- // parserGeneratedSoFar as-is so we don't need to treat
1826
- // this as a special case
1827
-
1828
- return foldR(
1829
- function( parserGeneratedSoFar, expr ){
1830
-
1831
- return expr(parserGeneratedSoFar, detection);
1832
- },
1833
- parserGeneratedSoFar,
1834
- exprs
1835
- );
1836
-
1837
- }
1838
-
1839
- /**
1840
- * If jsonPath matches the given detector function, creates a function which
1841
- * evaluates against every clause in the clauseEvaluatorGenerators. The
1842
- * created function is propagated to the onSuccess function, along with
1843
- * the remaining unparsed JSONPath substring.
1844
- *
1845
- * The intended use is to create a clauseMatcher by filling in
1846
- * the first two arguments, thus providing a function that knows
1847
- * some syntax to match and what kind of generator to create if it
1848
- * finds it. The parameter list once completed is:
1849
- *
1850
- * (jsonPath, parserGeneratedSoFar, onSuccess)
1851
- *
1852
- * onSuccess may be compileJsonPathToFunction, to recursively continue
1853
- * parsing after finding a match or returnFoundParser to stop here.
1854
- */
1855
- function generateClauseReaderIfTokenFound (
1856
-
1857
- tokenDetector, clauseEvaluatorGenerators,
1858
-
1859
- jsonPath, parserGeneratedSoFar, onSuccess) {
1860
-
1861
- var detected = tokenDetector(jsonPath);
1862
-
1863
- if(detected) {
1864
- var compiledParser = expressionsReader(
1865
- clauseEvaluatorGenerators,
1866
- parserGeneratedSoFar,
1867
- detected
1868
- ),
1869
-
1870
- remainingUnparsedJsonPath = jsonPath.substr(len(detected[0]));
1871
-
1872
- return onSuccess(remainingUnparsedJsonPath, compiledParser);
1873
- }
1874
- }
1875
-
1876
- /**
1877
- * Partially completes generateClauseReaderIfTokenFound above.
1878
- */
1879
- function clauseMatcher(tokenDetector, exprs) {
1880
-
1881
- return partialComplete(
1882
- generateClauseReaderIfTokenFound,
1883
- tokenDetector,
1884
- exprs
1885
- );
1886
- }
1887
-
1888
- /**
1889
- * clauseForJsonPath is a function which attempts to match against
1890
- * several clause matchers in order until one matches. If non match the
1891
- * jsonPath expression is invalid and an error is thrown.
1892
- *
1893
- * The parameter list is the same as a single clauseMatcher:
1894
- *
1895
- * (jsonPath, parserGeneratedSoFar, onSuccess)
1896
- */
1897
- var clauseForJsonPath = lazyUnion(
1898
-
1899
- clauseMatcher(pathNodeSyntax , list( capture,
1900
- duckTypeClause,
1901
- nameClause,
1902
- skip1 ))
1903
-
1904
- , clauseMatcher(doubleDotSyntax , list( skipMany))
1905
-
1906
- // dot is a separator only (like whitespace in other languages) but
1907
- // rather than make it a special case, use an empty list of
1908
- // expressions when this token is found
1909
- , clauseMatcher(dotSyntax , list() )
1910
-
1911
- , clauseMatcher(bangSyntax , list( capture,
1912
- rootExpr))
1913
-
1914
- , clauseMatcher(emptySyntax , list( statementExpr))
1915
-
1916
- , function (jsonPath) {
1917
- throw Error('"' + jsonPath + '" could not be tokenised')
1918
- }
1919
- );
1920
-
1921
-
1922
- /**
1923
- * One of two possible values for the onSuccess argument of
1924
- * generateClauseReaderIfTokenFound.
1925
- *
1926
- * When this function is used, generateClauseReaderIfTokenFound simply
1927
- * returns the compiledParser that it made, regardless of if there is
1928
- * any remaining jsonPath to be compiled.
1929
- */
1930
- function returnFoundParser(_remainingJsonPath, compiledParser){
1931
- return compiledParser
1932
- }
1933
-
1934
- /**
1935
- * Recursively compile a JSONPath expression.
1936
- *
1937
- * This function serves as one of two possible values for the onSuccess
1938
- * argument of generateClauseReaderIfTokenFound, meaning continue to
1939
- * recursively compile. Otherwise, returnFoundParser is given and
1940
- * compilation terminates.
1941
- */
1942
- function compileJsonPathToFunction( uncompiledJsonPath,
1943
- parserGeneratedSoFar ) {
1944
-
1945
- /**
1946
- * On finding a match, if there is remaining text to be compiled
1947
- * we want to either continue parsing using a recursive call to
1948
- * compileJsonPathToFunction. Otherwise, we want to stop and return
1949
- * the parser that we have found so far.
1950
- */
1951
- var onFind = uncompiledJsonPath
1952
- ? compileJsonPathToFunction
1953
- : returnFoundParser;
1954
-
1955
- return clauseForJsonPath(
1956
- uncompiledJsonPath,
1957
- parserGeneratedSoFar,
1958
- onFind
1959
- );
1960
- }
1961
-
1962
- /**
1963
- * This is the function that we expose to the rest of the library.
1964
- */
1965
- return function(jsonPath){
1966
-
1967
- try {
1968
- // Kick off the recursive parsing of the jsonPath
1969
- return compileJsonPathToFunction(jsonPath, always);
1970
-
1971
- } catch( e ) {
1972
- throw Error( 'Could not compile "' + jsonPath +
1973
- '" because ' + e.message
1974
- );
1975
- }
1976
- }
1977
-
1978
- });
1979
-
1980
- /**
1981
- * A pub/sub which is responsible for a single event type. A
1982
- * multi-event type event bus is created by pubSub by collecting
1983
- * several of these.
1984
- *
1985
- * @param {String} eventType
1986
- * the name of the events managed by this singleEventPubSub
1987
- * @param {singleEventPubSub} [newListener]
1988
- * place to notify of new listeners
1989
- * @param {singleEventPubSub} [removeListener]
1990
- * place to notify of when listeners are removed
1991
- */
1992
- function singleEventPubSub(eventType, newListener, removeListener){
1993
-
1994
- /** we are optimised for emitting events over firing them.
1995
- * As well as the tuple list which stores event ids and
1996
- * listeners there is a list with just the listeners which
1997
- * can be iterated more quickly when we are emitting
1998
- */
1999
- var listenerTupleList,
2000
- listenerList;
2001
-
2002
- function hasId(id){
2003
- return function(tuple) {
2004
- return tuple.id == id;
2005
- };
2006
- }
2007
-
2008
- return {
2009
-
2010
- /**
2011
- * @param {Function} listener
2012
- * @param {*} listenerId
2013
- * an id that this listener can later by removed by.
2014
- * Can be of any type, to be compared to other ids using ==
2015
- */
2016
- on:function( listener, listenerId ) {
2017
-
2018
- var tuple = {
2019
- listener: listener
2020
- , id: listenerId || listener // when no id is given use the
2021
- // listener function as the id
2022
- };
2023
-
2024
- if( newListener ) {
2025
- newListener.emit(eventType, listener, tuple.id);
2026
- }
2027
-
2028
- listenerTupleList = cons( tuple, listenerTupleList );
2029
- listenerList = cons( listener, listenerList );
2030
-
2031
- return this; // chaining
2032
- },
2033
-
2034
- emit:function () {
2035
- applyEach( listenerList, arguments );
2036
- },
2037
-
2038
- un: function( listenerId ) {
2039
-
2040
- var removed;
2041
-
2042
- listenerTupleList = without(
2043
- listenerTupleList,
2044
- hasId(listenerId),
2045
- function(tuple){
2046
- removed = tuple;
2047
- }
2048
- );
2049
-
2050
- if( removed ) {
2051
- listenerList = without( listenerList, function(listener){
2052
- return listener == removed.listener;
2053
- });
2054
-
2055
- if( removeListener ) {
2056
- removeListener.emit(eventType, removed.listener, removed.id);
2057
- }
2058
- }
2059
- },
2060
-
2061
- listeners: function(){
2062
- // differs from Node EventEmitter: returns list, not array
2063
- return listenerList;
2064
- },
2065
-
2066
- hasListener: function(listenerId){
2067
- var test = listenerId? hasId(listenerId) : always;
2068
-
2069
- return defined(first( test, listenerTupleList));
2070
- }
2071
- };
2072
- }
2073
- /**
2074
- * pubSub is a curried interface for listening to and emitting
2075
- * events.
2076
- *
2077
- * If we get a bus:
2078
- *
2079
- * var bus = pubSub();
2080
- *
2081
- * We can listen to event 'foo' like:
2082
- *
2083
- * bus('foo').on(myCallback)
2084
- *
2085
- * And emit event foo like:
2086
- *
2087
- * bus('foo').emit()
2088
- *
2089
- * or, with a parameter:
2090
- *
2091
- * bus('foo').emit('bar')
2092
- *
2093
- * All functions can be cached and don't need to be
2094
- * bound. Ie:
2095
- *
2096
- * var fooEmitter = bus('foo').emit
2097
- * fooEmitter('bar'); // emit an event
2098
- * fooEmitter('baz'); // emit another
2099
- *
2100
- * There's also an uncurried[1] shortcut for .emit and .on:
2101
- *
2102
- * bus.on('foo', callback)
2103
- * bus.emit('foo', 'bar')
2104
- *
2105
- * [1]: http://zvon.org/other/haskell/Outputprelude/uncurry_f.html
2106
- */
2107
- function pubSub(){
2108
-
2109
- var singles = {},
2110
- newListener = newSingle('newListener'),
2111
- removeListener = newSingle('removeListener');
2112
-
2113
- function newSingle(eventName) {
2114
- return singles[eventName] = singleEventPubSub(
2115
- eventName,
2116
- newListener,
2117
- removeListener
2118
- );
2119
- }
2120
-
2121
- /** pubSub instances are functions */
2122
- function pubSubInstance( eventName ){
2123
-
2124
- return singles[eventName] || newSingle( eventName );
2125
- }
2126
-
2127
- // add convenience EventEmitter-style uncurried form of 'emit' and 'on'
2128
- ['emit', 'on', 'un'].forEach(function(methodName){
2129
-
2130
- pubSubInstance[methodName] = varArgs(function(eventName, parameters){
2131
- apply( parameters, pubSubInstance( eventName )[methodName]);
2132
- });
2133
- });
2134
-
2135
- return pubSubInstance;
2136
- }
2137
-
2138
- /**
2139
- * This file declares some constants to use as names for event types.
2140
- */
2141
-
2142
- var // the events which are never exported are kept as
2143
- // the smallest possible representation, in numbers:
2144
- _S = 1,
2145
-
2146
- // fired whenever a new node starts in the JSON stream:
2147
- NODE_OPENED = _S++,
2148
-
2149
- // fired whenever a node closes in the JSON stream:
2150
- NODE_CLOSED = _S++,
2151
-
2152
- // called if a .node callback returns a value -
2153
- NODE_SWAP = _S++,
2154
- NODE_DROP = _S++,
2155
-
2156
- FAIL_EVENT = 'fail',
2157
-
2158
- ROOT_NODE_FOUND = _S++,
2159
- ROOT_PATH_FOUND = _S++,
2160
-
2161
- HTTP_START = 'start',
2162
- STREAM_DATA = 'data',
2163
- STREAM_END = 'end',
2164
- ABORTING = _S++,
2165
-
2166
- // SAX events butchered from Clarinet
2167
- SAX_KEY = _S++,
2168
- SAX_VALUE_OPEN = _S++,
2169
- SAX_VALUE_CLOSE = _S++;
2170
-
2171
- function errorReport(statusCode, body, error) {
2172
- try{
2173
- var jsonBody = JSON.parse(body);
2174
- }catch(e){}
2175
-
2176
- return {
2177
- statusCode:statusCode,
2178
- body:body,
2179
- jsonBody:jsonBody,
2180
- thrown:error
2181
- };
2182
- }
2183
-
2184
- /**
2185
- * The pattern adaptor listens for newListener and removeListener
2186
- * events. When patterns are added or removed it compiles the JSONPath
2187
- * and wires them up.
2188
- *
2189
- * When nodes and paths are found it emits the fully-qualified match
2190
- * events with parameters ready to ship to the outside world
2191
- */
2192
-
2193
- function patternAdapter(oboeBus, jsonPathCompiler) {
2194
-
2195
- var predicateEventMap = {
2196
- node:oboeBus(NODE_CLOSED)
2197
- , path:oboeBus(NODE_OPENED)
2198
- };
2199
-
2200
- function emitMatchingNode(emitMatch, node, ascent) {
2201
-
2202
- /*
2203
- We're now calling to the outside world where Lisp-style
2204
- lists will not be familiar. Convert to standard arrays.
2205
-
2206
- Also, reverse the order because it is more common to
2207
- list paths "root to leaf" than "leaf to root" */
2208
- var descent = reverseList(ascent);
2209
-
2210
- emitMatch(
2211
- node,
2212
-
2213
- // To make a path, strip off the last item which is the special
2214
- // ROOT_PATH token for the 'path' to the root node
2215
- listAsArray(tail(map(keyOf,descent))), // path
2216
- listAsArray(map(nodeOf, descent)) // ancestors
2217
- );
2218
- }
2219
-
2220
- /*
2221
- * Set up the catching of events such as NODE_CLOSED and NODE_OPENED and, if
2222
- * matching the specified pattern, propagate to pattern-match events such as
2223
- * oboeBus('node:!')
2224
- *
2225
- *
2226
- *
2227
- * @param {Function} predicateEvent
2228
- * either oboeBus(NODE_CLOSED) or oboeBus(NODE_OPENED).
2229
- * @param {Function} compiledJsonPath
2230
- */
2231
- function addUnderlyingListener( fullEventName, predicateEvent, compiledJsonPath ){
2232
-
2233
- var emitMatch = oboeBus(fullEventName).emit;
2234
-
2235
- predicateEvent.on( function (ascent) {
2236
-
2237
- var maybeMatchingMapping = compiledJsonPath(ascent);
2238
-
2239
- /* Possible values for maybeMatchingMapping are now:
2240
-
2241
- false:
2242
- we did not match
2243
-
2244
- an object/array/string/number/null:
2245
- we matched and have the node that matched.
2246
- Because nulls are valid json values this can be null.
2247
-
2248
- undefined:
2249
- we matched but don't have the matching node yet.
2250
- ie, we know there is an upcoming node that matches but we
2251
- can't say anything else about it.
2252
- */
2253
- if (maybeMatchingMapping !== false) {
2254
-
2255
- emitMatchingNode(
2256
- emitMatch,
2257
- nodeOf(maybeMatchingMapping),
2258
- ascent
2259
- );
2260
- }
2261
- }, fullEventName);
2262
-
2263
- oboeBus('removeListener').on( function(removedEventName){
2264
-
2265
- // if the fully qualified match event listener is later removed, clean up
2266
- // by removing the underlying listener if it was the last using that pattern:
2267
-
2268
- if( removedEventName == fullEventName ) {
2269
-
2270
- if( !oboeBus(removedEventName).listeners( )) {
2271
- predicateEvent.un( fullEventName );
2272
- }
2273
- }
2274
- });
2275
- }
2276
-
2277
- oboeBus('newListener').on( function(fullEventName){
2278
-
2279
- var match = /(node|path):(.*)/.exec(fullEventName);
2280
-
2281
- if( match ) {
2282
- var predicateEvent = predicateEventMap[match[1]];
2283
-
2284
- if( !predicateEvent.hasListener( fullEventName) ) {
2285
-
2286
- addUnderlyingListener(
2287
- fullEventName,
2288
- predicateEvent,
2289
- jsonPathCompiler( match[2] )
2290
- );
2291
- }
2292
- }
2293
- })
2294
-
2295
- }
2296
-
2297
- /**
2298
- * The instance API is the thing that is returned when oboe() is called.
2299
- * it allows:
2300
- *
2301
- * - listeners for various events to be added and removed
2302
- * - the http response header/headers to be read
2303
- */
2304
- function instanceApi(oboeBus, contentSource){
2305
-
2306
- var oboeApi,
2307
- fullyQualifiedNamePattern = /^(node|path):./,
2308
- rootNodeFinishedEvent = oboeBus(ROOT_NODE_FOUND),
2309
- emitNodeDrop = oboeBus(NODE_DROP).emit,
2310
- emitNodeSwap = oboeBus(NODE_SWAP).emit,
2311
-
2312
- /**
2313
- * Add any kind of listener that the instance api exposes
2314
- */
2315
- addListener = varArgs(function( eventId, parameters ){
2316
-
2317
- if( oboeApi[eventId] ) {
2318
-
2319
- // for events added as .on(event, callback), if there is a
2320
- // .event() equivalent with special behaviour , pass through
2321
- // to that:
2322
- apply(parameters, oboeApi[eventId]);
2323
- } else {
2324
-
2325
- // we have a standard Node.js EventEmitter 2-argument call.
2326
- // The first parameter is the listener.
2327
- var event = oboeBus(eventId),
2328
- listener = parameters[0];
2329
-
2330
- if( fullyQualifiedNamePattern.test(eventId) ) {
2331
-
2332
- // allow fully-qualified node/path listeners
2333
- // to be added
2334
- addForgettableCallback(event, listener);
2335
- } else {
2336
-
2337
- // the event has no special handling, pass through
2338
- // directly onto the event bus:
2339
- event.on( listener);
2340
- }
2341
- }
2342
-
2343
- return oboeApi; // chaining
2344
- }),
2345
-
2346
- /**
2347
- * Remove any kind of listener that the instance api exposes
2348
- */
2349
- removeListener = function( eventId, p2, p3 ){
2350
-
2351
- if( eventId == 'done' ) {
2352
-
2353
- rootNodeFinishedEvent.un(p2);
2354
-
2355
- } else if( eventId == 'node' || eventId == 'path' ) {
2356
-
2357
- // allow removal of node and path
2358
- oboeBus.un(eventId + ':' + p2, p3);
2359
- } else {
2360
-
2361
- // we have a standard Node.js EventEmitter 2-argument call.
2362
- // The second parameter is the listener. This may be a call
2363
- // to remove a fully-qualified node/path listener but requires
2364
- // no special handling
2365
- var listener = p2;
2366
-
2367
- oboeBus(eventId).un(listener);
2368
- }
2369
-
2370
- return oboeApi; // chaining
2371
- };
2372
-
2373
- /**
2374
- * Add a callback, wrapped in a try/catch so as to not break the
2375
- * execution of Oboe if an exception is thrown (fail events are
2376
- * fired instead)
2377
- *
2378
- * The callback is used as the listener id so that it can later be
2379
- * removed using .un(callback)
2380
- */
2381
- function addProtectedCallback(eventName, callback) {
2382
- oboeBus(eventName).on(protectedCallback(callback), callback);
2383
- return oboeApi; // chaining
2384
- }
2385
-
2386
- /**
2387
- * Add a callback where, if .forget() is called during the callback's
2388
- * execution, the callback will be de-registered
2389
- */
2390
- function addForgettableCallback(event, callback, listenerId) {
2391
-
2392
- // listenerId is optional and if not given, the original
2393
- // callback will be used
2394
- listenerId = listenerId || callback;
2395
-
2396
- var safeCallback = protectedCallback(callback);
2397
-
2398
- event.on( function() {
2399
-
2400
- var discard = false;
2401
-
2402
- oboeApi.forget = function(){
2403
- discard = true;
2404
- };
2405
-
2406
- apply( arguments, safeCallback );
2407
-
2408
- delete oboeApi.forget;
2409
-
2410
- if( discard ) {
2411
- event.un(listenerId);
2412
- }
2413
- }, listenerId);
2414
-
2415
- return oboeApi; // chaining
2416
- }
2417
-
2418
- /**
2419
- * wrap a callback so that if it throws, Oboe.js doesn't crash but instead
2420
- * throw the error in another event loop
2421
- */
2422
- function protectedCallback( callback ) {
2423
- return function() {
2424
- try{
2425
- return callback.apply(oboeApi, arguments);
2426
- }catch(e) {
2427
- setTimeout(function() {
2428
- throw e;
2429
- });
2430
- }
2431
- }
2432
- }
2433
-
2434
- /**
2435
- * Return the fully qualified event for when a pattern matches
2436
- * either a node or a path
2437
- *
2438
- * @param type {String} either 'node' or 'path'
2439
- */
2440
- function fullyQualifiedPatternMatchEvent(type, pattern) {
2441
- return oboeBus(type + ':' + pattern);
2442
- }
2443
-
2444
- function wrapCallbackToSwapNodeIfSomethingReturned( callback ) {
2445
- return function() {
2446
- var returnValueFromCallback = callback.apply(this, arguments);
2447
-
2448
- if( defined(returnValueFromCallback) ) {
2449
-
2450
- if( returnValueFromCallback == oboe.drop ) {
2451
- emitNodeDrop();
2452
- } else {
2453
- emitNodeSwap(returnValueFromCallback);
2454
- }
2455
- }
2456
- }
2457
- }
2458
-
2459
- function addSingleNodeOrPathListener(eventId, pattern, callback) {
2460
-
2461
- var effectiveCallback;
2462
-
2463
- if( eventId == 'node' ) {
2464
- effectiveCallback = wrapCallbackToSwapNodeIfSomethingReturned(callback);
2465
- } else {
2466
- effectiveCallback = callback;
2467
- }
2468
-
2469
- addForgettableCallback(
2470
- fullyQualifiedPatternMatchEvent(eventId, pattern),
2471
- effectiveCallback,
2472
- callback
2473
- );
2474
- }
2475
-
2476
- /**
2477
- * Add several listeners at a time, from a map
2478
- */
2479
- function addMultipleNodeOrPathListeners(eventId, listenerMap) {
2480
-
2481
- for( var pattern in listenerMap ) {
2482
- addSingleNodeOrPathListener(eventId, pattern, listenerMap[pattern]);
2483
- }
2484
- }
2485
-
2486
- /**
2487
- * implementation behind .onPath() and .onNode()
2488
- */
2489
- function addNodeOrPathListenerApi( eventId, jsonPathOrListenerMap, callback ){
2490
-
2491
- if( isString(jsonPathOrListenerMap) ) {
2492
- addSingleNodeOrPathListener(eventId, jsonPathOrListenerMap, callback);
2493
-
2494
- } else {
2495
- addMultipleNodeOrPathListeners(eventId, jsonPathOrListenerMap);
2496
- }
2497
-
2498
- return oboeApi; // chaining
2499
- }
2500
-
2501
-
2502
- // some interface methods are only filled in after we receive
2503
- // values and are noops before that:
2504
- oboeBus(ROOT_PATH_FOUND).on( function(rootNode) {
2505
- oboeApi.root = functor(rootNode);
2506
- });
2507
-
2508
- /**
2509
- * When content starts make the headers readable through the
2510
- * instance API
2511
- */
2512
- oboeBus(HTTP_START).on( function(_statusCode, headers) {
2513
-
2514
- oboeApi.header = function(name) {
2515
- return name ? headers[name]
2516
- : headers
2517
- ;
2518
- }
2519
- });
2520
-
2521
- /**
2522
- * Construct and return the public API of the Oboe instance to be
2523
- * returned to the calling application
2524
- */
2525
- return oboeApi = {
2526
- on : addListener,
2527
- addListener : addListener,
2528
- removeListener : removeListener,
2529
- emit : oboeBus.emit,
2530
-
2531
- node : partialComplete(addNodeOrPathListenerApi, 'node'),
2532
- path : partialComplete(addNodeOrPathListenerApi, 'path'),
2533
-
2534
- done : partialComplete(addForgettableCallback, rootNodeFinishedEvent),
2535
- start : partialComplete(addProtectedCallback, HTTP_START ),
2536
-
2537
- // fail doesn't use protectedCallback because
2538
- // could lead to non-terminating loops
2539
- fail : oboeBus(FAIL_EVENT).on,
2540
-
2541
- // public api calling abort fires the ABORTING event
2542
- abort : oboeBus(ABORTING).emit,
2543
-
2544
- // initially return nothing for header and root
2545
- header : noop,
2546
- root : noop,
2547
-
2548
- source : contentSource
2549
- };
2550
- }
2551
-
2552
- /**
2553
- * This file sits just behind the API which is used to attain a new
2554
- * Oboe instance. It creates the new components that are required
2555
- * and introduces them to each other.
2556
- */
2557
-
2558
- function wire (httpMethodName, contentSource, body, headers, withCredentials){
2559
-
2560
- var oboeBus = pubSub();
2561
-
2562
- // Wire the input stream in if we are given a content source.
2563
- // This will usually be the case. If not, the instance created
2564
- // will have to be passed content from an external source.
2565
-
2566
- if( contentSource ) {
2567
-
2568
- streamingHttp( oboeBus,
2569
- httpTransport(),
2570
- httpMethodName,
2571
- contentSource,
2572
- body,
2573
- headers,
2574
- withCredentials
2575
- );
2576
- }
2577
-
2578
- clarinet(oboeBus);
2579
-
2580
- ascentManager(oboeBus, incrementalContentBuilder(oboeBus));
2581
-
2582
- patternAdapter(oboeBus, jsonPathCompiler);
2583
-
2584
- return instanceApi(oboeBus, contentSource);
2585
- }
2586
-
2587
- function applyDefaults( passthrough, url, httpMethodName, body, headers, withCredentials, cached ){
2588
-
2589
- headers = headers ?
2590
- // Shallow-clone the headers array. This allows it to be
2591
- // modified without side effects to the caller. We don't
2592
- // want to change objects that the user passes in.
2593
- JSON.parse(JSON.stringify(headers))
2594
- : {};
2595
-
2596
- if( body ) {
2597
- if( !isString(body) ) {
2598
-
2599
- // If the body is not a string, stringify it. This allows objects to
2600
- // be given which will be sent as JSON.
2601
- body = JSON.stringify(body);
2602
-
2603
- // Default Content-Type to JSON unless given otherwise.
2604
- headers['Content-Type'] = headers['Content-Type'] || 'application/json';
2605
- // if (!(typeof (FormData) !== 'undefined' && body instanceof FormData)) {
2606
- // if (!isString(body)) {
2607
- // // If the body is not a string, stringify it. This allows objects to
2608
- // // be given which will be sent as JSON.
2609
- // body = JSON.stringify(body)
2610
- // // Default Content-Type to JSON unless given otherwise.
2611
- // headers['Content-Type'] = headers['Content-Type'] || 'application/json'
2612
- // }
2613
- // headers['Content-Length'] = headers['Content-Length'] || body.length
2614
- }
2615
- } else {
2616
- body = null;
2617
- }
2618
-
2619
- // support cache busting like jQuery.ajax({cache:false})
2620
- function modifiedUrl(baseUrl, cached) {
2621
-
2622
- if( cached === false ) {
2623
-
2624
- if( baseUrl.indexOf('?') == -1 ) {
2625
- baseUrl += '?';
2626
- } else {
2627
- baseUrl += '&';
2628
- }
2629
-
2630
- baseUrl += '_=' + new Date().getTime();
2631
- }
2632
- return baseUrl;
2633
- }
2634
-
2635
- return passthrough( httpMethodName || 'GET', modifiedUrl(url, cached), body, headers, withCredentials || false );
2636
- }
2637
-
2638
- // export public API
2639
- function oboe(arg1) {
2640
-
2641
- // We use duck-typing to detect if the parameter given is a stream, with the
2642
- // below list of parameters.
2643
- // Unpipe and unshift would normally be present on a stream but this breaks
2644
- // compatibility with Request streams.
2645
- // See https://github.com/jimhigson/oboe.js/issues/65
2646
-
2647
- var nodeStreamMethodNames = list('resume', 'pause', 'pipe'),
2648
- isStream = partialComplete(
2649
- hasAllProperties
2650
- , nodeStreamMethodNames
2651
- );
2652
-
2653
- if( arg1 ) {
2654
- if (isStream(arg1) || isString(arg1)) {
2655
-
2656
- // simple version for GETs. Signature is:
2657
- // oboe( url )
2658
- // or, under node:
2659
- // oboe( readableStream )
2660
- return applyDefaults(
2661
- wire,
2662
- arg1 // url
2663
- );
2664
-
2665
- } else {
2666
-
2667
- // method signature is:
2668
- // oboe({method:m, url:u, body:b, headers:{...}})
2669
-
2670
- return applyDefaults(
2671
- wire,
2672
- arg1.url,
2673
- arg1.method,
2674
- arg1.body,
2675
- arg1.headers,
2676
- arg1.withCredentials,
2677
- arg1.cached
2678
- );
2679
-
2680
- }
2681
- } else {
2682
- // wire up a no-AJAX, no-stream Oboe. Will have to have content
2683
- // fed in externally and using .emit.
2684
- return wire();
2685
- }
2686
- }
2687
-
2688
- /* oboe.drop is a special value. If a node callback returns this value the
2689
- parsed node is deleted from the JSON
2690
- */
2691
- oboe.drop = function() {
2692
- return oboe.drop;
2693
- };
2694
-
2695
-
2696
- if ( typeof define === "function" && define.amd ) {
2697
- define( "oboe", [], function () { return oboe; } );
2698
- } else if (typeof exports === 'object') {
2699
- module.exports = oboe;
2700
- } else {
2701
- window.oboe = oboe;
2702
- }
2703
- })((function(){
2704
- // Access to the window object throws an exception in HTML5 web workers so
2705
- // point it to "self" if it runs in a web worker
2706
- try {
2707
- return window;
2708
- } catch (e) {
2709
- return self;
2710
- }
2711
- }()), Object, Array, Error, JSON);