@saltcorn/server 1.1.2-beta.9 → 1.1.3-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (418) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/auth/admin.js +8 -1
  3. package/auth/routes.js +45 -4
  4. package/docs/.nojekyll +1 -0
  5. package/docs/assets/custom.css +6 -0
  6. package/docs/assets/highlight.css +85 -0
  7. package/docs/assets/main.js +58 -0
  8. package/docs/assets/search.js +1 -0
  9. package/docs/assets/style.css +1367 -0
  10. package/docs/classes/_saltcorn_common_code.Relation.html +162 -0
  11. package/docs/classes/_saltcorn_common_code.RelationsFinder.html +182 -0
  12. package/docs/classes/_saltcorn_data.models.Crash-1.html +316 -0
  13. package/docs/classes/_saltcorn_data.models.EventLog-1.html +350 -0
  14. package/docs/classes/_saltcorn_data.models.Field.html +949 -0
  15. package/docs/classes/_saltcorn_data.models.FieldRepeat-1.html +293 -0
  16. package/docs/classes/_saltcorn_data.models.File-1.html +881 -0
  17. package/docs/classes/_saltcorn_data.models.Form-1.html +494 -0
  18. package/docs/classes/_saltcorn_data.models.Library.html +295 -0
  19. package/docs/classes/_saltcorn_data.models.Page.html +417 -0
  20. package/docs/classes/_saltcorn_data.models.PageGroup-1.html +500 -0
  21. package/docs/classes/_saltcorn_data.models.Plugin.html +414 -0
  22. package/docs/classes/_saltcorn_data.models.Role.html +254 -0
  23. package/docs/classes/_saltcorn_data.models.Table-1.html +1830 -0
  24. package/docs/classes/_saltcorn_data.models.TableConstraint-1.html +296 -0
  25. package/docs/classes/_saltcorn_data.models.Trigger.html +672 -0
  26. package/docs/classes/_saltcorn_data.models.User-1.html +813 -0
  27. package/docs/classes/_saltcorn_data.models.View-1.html +878 -0
  28. package/docs/classes/_saltcorn_data.models.Workflow-1.html +374 -0
  29. package/docs/classes/_saltcorn_data.models.WorkflowRun.html +529 -0
  30. package/docs/classes/_saltcorn_data.models.WorkflowStep.html +421 -0
  31. package/docs/classes/_saltcorn_data.models.WorkflowTrace.html +318 -0
  32. package/docs/classes/_saltcorn_mobile_builder.MobileBuilder.html +356 -0
  33. package/docs/enums/_saltcorn_common_code.RelationType.html +115 -0
  34. package/docs/enums/_saltcorn_common_code.ViewDisplayType.html +94 -0
  35. package/docs/functions/_saltcorn_admin_models.backup.create_backup.html +76 -0
  36. package/docs/functions/_saltcorn_admin_models.backup.create_csv_from_rows.html +77 -0
  37. package/docs/functions/_saltcorn_admin_models.backup.restore.html +93 -0
  38. package/docs/functions/_saltcorn_admin_models.pack.add_to_menu.html +100 -0
  39. package/docs/functions/_saltcorn_admin_models.pack.can_install_pack.html +89 -0
  40. package/docs/functions/_saltcorn_admin_models.pack.fetch_available_packs.html +83 -0
  41. package/docs/functions/_saltcorn_admin_models.pack.fetch_pack_by_name.html +90 -0
  42. package/docs/functions/_saltcorn_admin_models.pack.install_pack.html +107 -0
  43. package/docs/functions/_saltcorn_admin_models.pack.library_pack.html +90 -0
  44. package/docs/functions/_saltcorn_admin_models.pack.model_instance_pack.html +95 -0
  45. package/docs/functions/_saltcorn_admin_models.pack.model_pack.html +96 -0
  46. package/docs/functions/_saltcorn_admin_models.pack.page_group_pack.html +91 -0
  47. package/docs/functions/_saltcorn_admin_models.pack.page_pack.html +91 -0
  48. package/docs/functions/_saltcorn_admin_models.pack.plugin_pack.html +89 -0
  49. package/docs/functions/_saltcorn_admin_models.pack.role_pack.html +90 -0
  50. package/docs/functions/_saltcorn_admin_models.pack.table_pack.html +90 -0
  51. package/docs/functions/_saltcorn_admin_models.pack.trigger_pack.html +89 -0
  52. package/docs/functions/_saltcorn_admin_models.pack.uninstall_pack.html +92 -0
  53. package/docs/functions/_saltcorn_admin_models.pack.view_pack.html +89 -0
  54. package/docs/functions/_saltcorn_admin_models.tenant.copy_tenant_template.html +105 -0
  55. package/docs/functions/_saltcorn_admin_models.tenant.create_tenant.html +107 -0
  56. package/docs/functions/_saltcorn_admin_models.tenant.deleteTenant.html +88 -0
  57. package/docs/functions/_saltcorn_admin_models.tenant.domain_sanitize.html +87 -0
  58. package/docs/functions/_saltcorn_admin_models.tenant.eachTenant.html +91 -0
  59. package/docs/functions/_saltcorn_admin_models.tenant.getAllTenantRows.html +77 -0
  60. package/docs/functions/_saltcorn_admin_models.tenant.getAllTenants.html +77 -0
  61. package/docs/functions/_saltcorn_admin_models.tenant.insertTenant.html +103 -0
  62. package/docs/functions/_saltcorn_admin_models.tenant.switchToTenant.html +92 -0
  63. package/docs/functions/_saltcorn_common_code.buildTableCaches.html +81 -0
  64. package/docs/functions/_saltcorn_common_code.parseLegacyRelation.html +77 -0
  65. package/docs/functions/_saltcorn_common_code.parseRelationPath.html +76 -0
  66. package/docs/functions/_saltcorn_data.models.config.check_email_mask.html +131 -0
  67. package/docs/functions/_saltcorn_data.models.config.deleteConfig.html +131 -0
  68. package/docs/functions/_saltcorn_data.models.config.getAllConfig.html +125 -0
  69. package/docs/functions/_saltcorn_data.models.config.getConfig.html +134 -0
  70. package/docs/functions/_saltcorn_data.models.config.get_base_url.html +130 -0
  71. package/docs/functions/_saltcorn_data.models.config.get_latest_npm_version.html +132 -0
  72. package/docs/functions/_saltcorn_data.models.config.remove_from_menu.html +131 -0
  73. package/docs/functions/_saltcorn_data.models.config.save_menu_items.html +126 -0
  74. package/docs/functions/_saltcorn_data.models.config.setConfig.html +134 -0
  75. package/docs/functions/_saltcorn_data.models.discovery.discover_tables.html +131 -0
  76. package/docs/functions/_saltcorn_data.models.discovery.discoverable_tables.html +129 -0
  77. package/docs/functions/_saltcorn_data.models.discovery.findType.html +127 -0
  78. package/docs/functions/_saltcorn_data.models.discovery.get_existing_views.html +127 -0
  79. package/docs/functions/_saltcorn_data.models.discovery.implement_discovery.html +129 -0
  80. package/docs/functions/_saltcorn_data.models.email.getMailTransport.html +114 -0
  81. package/docs/functions/_saltcorn_data.models.email.send_verification_email.html +130 -0
  82. package/docs/functions/_saltcorn_data.models.email.viewToEmailHtml.html +130 -0
  83. package/docs/functions/_saltcorn_data.models.expression.apply_calculated_fields.html +131 -0
  84. package/docs/functions/_saltcorn_data.models.expression.apply_calculated_fields_stored.html +131 -0
  85. package/docs/functions/_saltcorn_data.models.expression.eval_expression.html +132 -0
  86. package/docs/functions/_saltcorn_data.models.expression.expressionValidator.html +126 -0
  87. package/docs/functions/_saltcorn_data.models.expression.get_async_expression_function.html +132 -0
  88. package/docs/functions/_saltcorn_data.models.expression.get_expression_function.html +129 -0
  89. package/docs/functions/_saltcorn_data.models.expression.jsexprToWhere.html +131 -0
  90. package/docs/functions/_saltcorn_data.models.expression.recalculate_for_stored.html +132 -0
  91. package/docs/functions/_saltcorn_data.models.expression.transform_for_async.html +134 -0
  92. package/docs/functions/_saltcorn_data.models.layout.eachView.html +128 -0
  93. package/docs/functions/_saltcorn_data.models.layout.getStringsForI18n.html +123 -0
  94. package/docs/functions/_saltcorn_data.models.layout.getViews.html +123 -0
  95. package/docs/functions/_saltcorn_data.models.layout.translateLayout.html +126 -0
  96. package/docs/functions/_saltcorn_data.models.layout.traverse.html +126 -0
  97. package/docs/functions/_saltcorn_data.models.layout.traverseSync.html +126 -0
  98. package/docs/functions/_saltcorn_data.models.random.all_views.html +123 -0
  99. package/docs/functions/_saltcorn_data.models.random.fill_table_row.html +123 -0
  100. package/docs/functions/_saltcorn_data.models.random.initial_view.html +126 -0
  101. package/docs/functions/_saltcorn_data.models.random.random_table.html +120 -0
  102. package/docs/functions/_saltcorn_db_common.buildInsertBulkSql.html +127 -0
  103. package/docs/functions/_saltcorn_db_common.buildInsertSql.html +128 -0
  104. package/docs/functions/_saltcorn_db_common.doCount.html +110 -0
  105. package/docs/functions/_saltcorn_db_common.doDeleteWhere.html +110 -0
  106. package/docs/functions/_saltcorn_db_common.doListScTables.html +104 -0
  107. package/docs/functions/_saltcorn_db_common.doListTables.html +104 -0
  108. package/docs/functions/_saltcorn_db_common.doListUserDefinedTables.html +104 -0
  109. package/docs/functions/_saltcorn_db_common.do_add_index.html +120 -0
  110. package/docs/functions/_saltcorn_db_common.do_drop_index.html +120 -0
  111. package/docs/functions/_saltcorn_db_common.ftsFieldsSqlExpr.html +106 -0
  112. package/docs/functions/_saltcorn_db_common.mkSelectOptions.html +108 -0
  113. package/docs/functions/_saltcorn_db_common.mkVal.html +105 -0
  114. package/docs/functions/_saltcorn_db_common.mkWhere.html +110 -0
  115. package/docs/functions/_saltcorn_db_common.multi_tenant.enable_multi_tenant.html +108 -0
  116. package/docs/functions/_saltcorn_db_common.multi_tenant.getTenantSchema.html +110 -0
  117. package/docs/functions/_saltcorn_db_common.multi_tenant.init.html +116 -0
  118. package/docs/functions/_saltcorn_db_common.multi_tenant.is_it_multi_tenant.html +110 -0
  119. package/docs/functions/_saltcorn_db_common.multi_tenant.runWithTenant.html +130 -0
  120. package/docs/functions/_saltcorn_db_common.orderByIsObject.html +102 -0
  121. package/docs/functions/_saltcorn_db_common.orderByIsOperator.html +102 -0
  122. package/docs/functions/_saltcorn_db_common.prefixFieldsInWhere.html +104 -0
  123. package/docs/functions/_saltcorn_db_common.reprAsJson.html +107 -0
  124. package/docs/functions/_saltcorn_db_common.single_tenant.enable_multi_tenant.html +107 -0
  125. package/docs/functions/_saltcorn_db_common.single_tenant.getTenantSchema.html +109 -0
  126. package/docs/functions/_saltcorn_db_common.single_tenant.init.html +115 -0
  127. package/docs/functions/_saltcorn_db_common.single_tenant.is_it_multi_tenant.html +109 -0
  128. package/docs/functions/_saltcorn_db_common.single_tenant.runWithTenant.html +129 -0
  129. package/docs/functions/_saltcorn_db_common.sqlBinOp.html +111 -0
  130. package/docs/functions/_saltcorn_db_common.sqlFun.html +111 -0
  131. package/docs/functions/_saltcorn_db_common.sqlsanitize.html +108 -0
  132. package/docs/functions/_saltcorn_db_common.sqlsanitizeAllowDots.html +110 -0
  133. package/docs/functions/_saltcorn_db_common.subSelectWhere.html +133 -0
  134. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.buildTablesFile.html +110 -0
  135. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyPrepopulatedDb.html +100 -0
  136. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyServerFiles.html +104 -0
  137. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyShareExtFiles.html +98 -0
  138. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copySiteLogo.html +102 -0
  139. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.copyTranslationFiles.html +104 -0
  140. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.createSqliteDb.html +105 -0
  141. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.decodeProvisioningProfile.html +100 -0
  142. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.extractDomain.html +98 -0
  143. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.generateAndroidVersionCode.html +98 -0
  144. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyAndroidManifest.html +102 -0
  145. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyConfigXml.html +100 -0
  146. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyGradleConfig.html +100 -0
  147. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyInfoPlist.html +100 -0
  148. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.modifyXcodeProjectFile.html +107 -0
  149. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepAppIcon.html +100 -0
  150. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareAppIcon.html +109 -0
  151. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareBuildDir.html +110 -0
  152. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareExportOptionsPlist.html +98 -0
  153. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareSplashIcon.html +110 -0
  154. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.prepareSplashPage.html +119 -0
  155. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeCapacitorConfig.html +100 -0
  156. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeCfgFile.html +102 -0
  157. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeDataExtractionRules.html +98 -0
  158. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writeNetworkSecurityConfig.html +100 -0
  159. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writePodfile.html +98 -0
  160. package/docs/functions/_saltcorn_mobile_builder.common_build_utils.writePrivacyInfo.html +98 -0
  161. package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.bundleMobileAppCode.html +73 -0
  162. package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.bundlePackagesAndPlugins.html +82 -0
  163. package/docs/functions/_saltcorn_mobile_builder.package_bundle_utils.copyPublicDirs.html +80 -0
  164. package/docs/functions/_saltcorn_sqlite.add_index.html +105 -0
  165. package/docs/functions/_saltcorn_sqlite.add_unique_constraint.html +105 -0
  166. package/docs/functions/_saltcorn_sqlite.begin.html +92 -0
  167. package/docs/functions/_saltcorn_sqlite.changeConnection.html +100 -0
  168. package/docs/functions/_saltcorn_sqlite.close.html +92 -0
  169. package/docs/functions/_saltcorn_sqlite.commit.html +92 -0
  170. package/docs/functions/_saltcorn_sqlite.count.html +106 -0
  171. package/docs/functions/_saltcorn_sqlite.deleteWhere.html +106 -0
  172. package/docs/functions/_saltcorn_sqlite.dropTable.html +95 -0
  173. package/docs/functions/_saltcorn_sqlite.dropTables.html +95 -0
  174. package/docs/functions/_saltcorn_sqlite.drop_index.html +105 -0
  175. package/docs/functions/_saltcorn_sqlite.drop_reset_schema.html +94 -0
  176. package/docs/functions/_saltcorn_sqlite.drop_unique_constraint.html +105 -0
  177. package/docs/functions/_saltcorn_sqlite.getVersion.html +93 -0
  178. package/docs/functions/_saltcorn_sqlite.get_db_filepath.html +92 -0
  179. package/docs/functions/_saltcorn_sqlite.get_sql_logging.html +92 -0
  180. package/docs/functions/_saltcorn_sqlite.init.html +105 -0
  181. package/docs/functions/_saltcorn_sqlite.insert.html +113 -0
  182. package/docs/functions/_saltcorn_sqlite.listScTables.html +89 -0
  183. package/docs/functions/_saltcorn_sqlite.listTables.html +89 -0
  184. package/docs/functions/_saltcorn_sqlite.listUserDefinedTables.html +89 -0
  185. package/docs/functions/_saltcorn_sqlite.query.html +98 -0
  186. package/docs/functions/_saltcorn_sqlite.rollback.html +92 -0
  187. package/docs/functions/_saltcorn_sqlite.select.html +108 -0
  188. package/docs/functions/_saltcorn_sqlite.selectMaybeOne.html +110 -0
  189. package/docs/functions/_saltcorn_sqlite.selectOne.html +109 -0
  190. package/docs/functions/_saltcorn_sqlite.set_sql_logging.html +96 -0
  191. package/docs/functions/_saltcorn_sqlite.slugify.html +93 -0
  192. package/docs/functions/_saltcorn_sqlite.sql_log.html +104 -0
  193. package/docs/functions/_saltcorn_sqlite.update.html +111 -0
  194. package/docs/functions/_saltcorn_sqlite.updateWhere.html +97 -0
  195. package/docs/functions/_saltcorn_sqlite_mobile.add_index.html +95 -0
  196. package/docs/functions/_saltcorn_sqlite_mobile.add_unique_constraint.html +95 -0
  197. package/docs/functions/_saltcorn_sqlite_mobile.count.html +88 -0
  198. package/docs/functions/_saltcorn_sqlite_mobile.deleteWhere.html +85 -0
  199. package/docs/functions/_saltcorn_sqlite_mobile.drop_index.html +95 -0
  200. package/docs/functions/_saltcorn_sqlite_mobile.drop_reset_schema.html +78 -0
  201. package/docs/functions/_saltcorn_sqlite_mobile.drop_unique_constraint.html +95 -0
  202. package/docs/functions/_saltcorn_sqlite_mobile.init.html +78 -0
  203. package/docs/functions/_saltcorn_sqlite_mobile.insert.html +96 -0
  204. package/docs/functions/_saltcorn_sqlite_mobile.insertRows.html +94 -0
  205. package/docs/functions/_saltcorn_sqlite_mobile.listScTables.html +79 -0
  206. package/docs/functions/_saltcorn_sqlite_mobile.listTables.html +79 -0
  207. package/docs/functions/_saltcorn_sqlite_mobile.listUserDefinedTables.html +79 -0
  208. package/docs/functions/_saltcorn_sqlite_mobile.query.html +85 -0
  209. package/docs/functions/_saltcorn_sqlite_mobile.select.html +87 -0
  210. package/docs/functions/_saltcorn_sqlite_mobile.selectMaybeOne.html +88 -0
  211. package/docs/functions/_saltcorn_sqlite_mobile.selectOne.html +88 -0
  212. package/docs/functions/_saltcorn_sqlite_mobile.setConnectionObject.html +85 -0
  213. package/docs/functions/_saltcorn_sqlite_mobile.tableExists.html +87 -0
  214. package/docs/functions/_saltcorn_sqlite_mobile.time.html +78 -0
  215. package/docs/functions/_saltcorn_sqlite_mobile.update.html +97 -0
  216. package/docs/functions/_saltcorn_types.ModelAbstracts.abstract_field.instanceOfField.html +88 -0
  217. package/docs/functions/_saltcorn_types.ModelAbstracts.abstract_page.instanceOfPage.html +87 -0
  218. package/docs/functions/_saltcorn_types.ModelAbstracts.abstract_view.instanceOfView.html +87 -0
  219. package/docs/functions/_saltcorn_types.Types.base_types.instanceOWithHtmlFile.html +107 -0
  220. package/docs/functions/_saltcorn_types.Types.common_types.instanceOfErrorMsg.html +84 -0
  221. package/docs/functions/_saltcorn_types.Types.common_types.instanceOfSuccessMsg.html +84 -0
  222. package/docs/functions/_saltcorn_types.Types.common_types.instanceOfType.html +84 -0
  223. package/docs/functions/_saltcorn_types.generators.generateBool.html +68 -0
  224. package/docs/functions/_saltcorn_types.generators.generateString.html +75 -0
  225. package/docs/functions/_saltcorn_types.generators.num_between.html +75 -0
  226. package/docs/functions/_saltcorn_types.generators.oneOf.html +73 -0
  227. package/docs/index.html +56 -0
  228. package/docs/interfaces/_saltcorn_mobile_builder.common_build_utils.ScCapacitorConfig.html +169 -0
  229. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_field.AbstractField.html +187 -0
  230. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_field.AbstractFieldRepeat.html +110 -0
  231. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_form.AbstractForm.html +268 -0
  232. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_page.AbstractPage.html +153 -0
  233. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_role.AbstractRole.html +108 -0
  234. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_table.AbstractTable.html +147 -0
  235. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_trigger.AbstractTrigger.html +224 -0
  236. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_view.AbstractView.html +174 -0
  237. package/docs/interfaces/_saltcorn_types.ModelAbstracts.abstract_workflow.AbstractWorkflow.html +264 -0
  238. package/docs/modules/_saltcorn_admin_models.backup.html +74 -0
  239. package/docs/modules/_saltcorn_admin_models.html +68 -0
  240. package/docs/modules/_saltcorn_admin_models.pack.html +100 -0
  241. package/docs/modules/_saltcorn_admin_models.tenant.html +86 -0
  242. package/docs/modules/_saltcorn_common_code.html +77 -0
  243. package/docs/modules/_saltcorn_data.html +476 -0
  244. package/docs/modules/_saltcorn_data.models.Crash.html +113 -0
  245. package/docs/modules/_saltcorn_data.models.EventLog.html +113 -0
  246. package/docs/modules/_saltcorn_data.models.FieldRepeat.html +113 -0
  247. package/docs/modules/_saltcorn_data.models.File.html +113 -0
  248. package/docs/modules/_saltcorn_data.models.Form.html +115 -0
  249. package/docs/modules/_saltcorn_data.models.PageGroup.html +113 -0
  250. package/docs/modules/_saltcorn_data.models.Table.html +117 -0
  251. package/docs/modules/_saltcorn_data.models.TableConstraint.html +113 -0
  252. package/docs/modules/_saltcorn_data.models.User.html +113 -0
  253. package/docs/modules/_saltcorn_data.models.View.html +113 -0
  254. package/docs/modules/_saltcorn_data.models.Workflow.html +113 -0
  255. package/docs/modules/_saltcorn_data.models.config.html +135 -0
  256. package/docs/modules/_saltcorn_data.models.discovery.html +120 -0
  257. package/docs/modules/_saltcorn_data.models.email.html +116 -0
  258. package/docs/modules/_saltcorn_data.models.expression.html +128 -0
  259. package/docs/modules/_saltcorn_data.models.html +150 -0
  260. package/docs/modules/_saltcorn_data.models.layout.html +122 -0
  261. package/docs/modules/_saltcorn_data.models.random.html +118 -0
  262. package/docs/modules/_saltcorn_data.models.scheduler.html +112 -0
  263. package/docs/modules/_saltcorn_data.plugin_helper.html +70 -0
  264. package/docs/modules/_saltcorn_data.utils.html +72 -0
  265. package/docs/modules/_saltcorn_db_common.html +181 -0
  266. package/docs/modules/_saltcorn_db_common.multi_tenant.html +120 -0
  267. package/docs/modules/_saltcorn_db_common.single_tenant.html +115 -0
  268. package/docs/modules/_saltcorn_markup.html +399 -0
  269. package/docs/modules/_saltcorn_mobile_builder.common_build_utils.html +124 -0
  270. package/docs/modules/_saltcorn_mobile_builder.html +75 -0
  271. package/docs/modules/_saltcorn_mobile_builder.package_bundle_utils.html +71 -0
  272. package/docs/modules/_saltcorn_sqlite.html +123 -0
  273. package/docs/modules/_saltcorn_sqlite_mobile.html +103 -0
  274. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_field.html +94 -0
  275. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_form.html +85 -0
  276. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_library.html +82 -0
  277. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_page.html +92 -0
  278. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_plugin.html +82 -0
  279. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_role.html +87 -0
  280. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_table.html +87 -0
  281. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_trigger.html +87 -0
  282. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_view.html +92 -0
  283. package/docs/modules/_saltcorn_types.ModelAbstracts.abstract_workflow.html +87 -0
  284. package/docs/modules/_saltcorn_types.ModelAbstracts.html +88 -0
  285. package/docs/modules/_saltcorn_types.Types.base_types.html +141 -0
  286. package/docs/modules/_saltcorn_types.Types.common_types.html +91 -0
  287. package/docs/modules/_saltcorn_types.Types.html +68 -0
  288. package/docs/modules/_saltcorn_types.generators.html +76 -0
  289. package/docs/modules/_saltcorn_types.html +67 -0
  290. package/docs/types/_saltcorn_data.models.Crash.CrashCfg.html +128 -0
  291. package/docs/types/_saltcorn_data.models.EventLog.EventLogCfg.html +122 -0
  292. package/docs/types/_saltcorn_data.models.FieldRepeat.FieldRepeatCfg.html +126 -0
  293. package/docs/types/_saltcorn_data.models.File.FileCfg.html +132 -0
  294. package/docs/types/_saltcorn_data.models.Form.AdditionalButton.html +108 -0
  295. package/docs/types/_saltcorn_data.models.Form.FormCfg.html +180 -0
  296. package/docs/types/_saltcorn_data.models.PageGroup.ScreenInfoParams.html +118 -0
  297. package/docs/types/_saltcorn_data.models.Table.ChildRelations.html +116 -0
  298. package/docs/types/_saltcorn_data.models.Table.ParentRelations.html +116 -0
  299. package/docs/types/_saltcorn_data.models.Table.RelationData.html +116 -0
  300. package/docs/types/_saltcorn_data.models.TableConstraint.TableConstraintCfg.html +120 -0
  301. package/docs/types/_saltcorn_data.models.User.UserCfg.html +138 -0
  302. package/docs/types/_saltcorn_data.models.View.FindViewsPred.html +127 -0
  303. package/docs/types/_saltcorn_data.models.Workflow.WorkflowCfg.html +161 -0
  304. package/docs/types/_saltcorn_db_common.AggregationOptions.html +114 -0
  305. package/docs/types/_saltcorn_db_common.CoordOpts.html +104 -0
  306. package/docs/types/_saltcorn_db_common.JoinField.html +106 -0
  307. package/docs/types/_saltcorn_db_common.JoinFields.html +98 -0
  308. package/docs/types/_saltcorn_db_common.JoinOptions.html +107 -0
  309. package/docs/types/_saltcorn_db_common.JsonPath.html +93 -0
  310. package/docs/types/_saltcorn_db_common.JsonPathElem.html +93 -0
  311. package/docs/types/_saltcorn_db_common.Operator.html +102 -0
  312. package/docs/types/_saltcorn_db_common.PrimaryKeyValue.html +93 -0
  313. package/docs/types/_saltcorn_db_common.Row.html +98 -0
  314. package/docs/types/_saltcorn_db_common.SelectOptions.html +132 -0
  315. package/docs/types/_saltcorn_db_common.SqlAndValues.html +104 -0
  316. package/docs/types/_saltcorn_db_common.SubselectOptions.html +104 -0
  317. package/docs/types/_saltcorn_db_common.Value.html +93 -0
  318. package/docs/types/_saltcorn_db_common.Where.html +115 -0
  319. package/docs/types/_saltcorn_mobile_builder.IosCfg.html +76 -0
  320. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_field.FieldCfg.html +168 -0
  321. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_field.InputType.html +79 -0
  322. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_form.AdditionalButton.html +87 -0
  323. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_library.LibraryCfg.html +87 -0
  324. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_library.LibraryPack.html +79 -0
  325. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_page.PageCfg.html +97 -0
  326. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_page.PagePack.html +85 -0
  327. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_plugin.PluginCfg.html +103 -0
  328. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_plugin.PluginPack.html +79 -0
  329. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_role.RoleCfg.html +84 -0
  330. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_role.RolePack.html +80 -0
  331. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_table.TableCfg.html +111 -0
  332. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_table.TablePack.html +86 -0
  333. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_trigger.TriggerCfg.html +104 -0
  334. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_trigger.TriggerPack.html +80 -0
  335. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_view.ViewCfg.html +109 -0
  336. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_view.ViewPack.html +89 -0
  337. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_workflow.ConfigWorkflowStep.html +97 -0
  338. package/docs/types/_saltcorn_types.ModelAbstracts.abstract_workflow.RunResult.html +100 -0
  339. package/docs/types/_saltcorn_types.Types.base_types.Action.html +189 -0
  340. package/docs/types/_saltcorn_types.Types.base_types.AuthenticationMethod.html +109 -0
  341. package/docs/types/_saltcorn_types.Types.base_types.CodePagePack.html +107 -0
  342. package/docs/types/_saltcorn_types.Types.base_types.Column.html +103 -0
  343. package/docs/types/_saltcorn_types.Types.base_types.ConnectedObjects.html +109 -0
  344. package/docs/types/_saltcorn_types.Types.base_types.CopilotSkill.html +149 -0
  345. package/docs/types/_saltcorn_types.Types.base_types.FieldLike.html +98 -0
  346. package/docs/types/_saltcorn_types.Types.base_types.FieldView.html +166 -0
  347. package/docs/types/_saltcorn_types.Types.base_types.Header.html +107 -0
  348. package/docs/types/_saltcorn_types.Types.base_types.JoinFieldOption.html +109 -0
  349. package/docs/types/_saltcorn_types.Types.base_types.Layout.html +98 -0
  350. package/docs/types/_saltcorn_types.Types.base_types.MobileConfig.html +133 -0
  351. package/docs/types/_saltcorn_types.Types.base_types.ModelPattern.html +261 -0
  352. package/docs/types/_saltcorn_types.Types.base_types.Pack.html +129 -0
  353. package/docs/types/_saltcorn_types.Types.base_types.Plugin.html +122 -0
  354. package/docs/types/_saltcorn_types.Types.base_types.PluginFunction.html +120 -0
  355. package/docs/types/_saltcorn_types.Types.base_types.PluginLayout.html +116 -0
  356. package/docs/types/_saltcorn_types.Types.base_types.PluginRoute.html +125 -0
  357. package/docs/types/_saltcorn_types.Types.base_types.PluginSourceType.html +98 -0
  358. package/docs/types/_saltcorn_types.Types.base_types.PluginType.html +183 -0
  359. package/docs/types/_saltcorn_types.Types.base_types.PluginWrap.html +111 -0
  360. package/docs/types/_saltcorn_types.Types.base_types.PluginWrapArg.html +122 -0
  361. package/docs/types/_saltcorn_types.Types.base_types.RelationOption.html +105 -0
  362. package/docs/types/_saltcorn_types.Types.base_types.Req.html +178 -0
  363. package/docs/types/_saltcorn_types.Types.base_types.Res.html +168 -0
  364. package/docs/types/_saltcorn_types.Types.base_types.RouteAction.html +121 -0
  365. package/docs/types/_saltcorn_types.Types.base_types.RunExtra.html +103 -0
  366. package/docs/types/_saltcorn_types.Types.base_types.TableProvider.html +140 -0
  367. package/docs/types/_saltcorn_types.Types.base_types.TableQuery.html +129 -0
  368. package/docs/types/_saltcorn_types.Types.base_types.Tablely.html +103 -0
  369. package/docs/types/_saltcorn_types.Types.base_types.ViewTemplate.html +471 -0
  370. package/docs/types/_saltcorn_types.Types.common_types.ErrorMessage.html +84 -0
  371. package/docs/types/_saltcorn_types.Types.common_types.GenObj.html +80 -0
  372. package/docs/types/_saltcorn_types.Types.common_types.ReqRes.html +82 -0
  373. package/docs/types/_saltcorn_types.Types.common_types.ResultMessage.html +75 -0
  374. package/docs/types/_saltcorn_types.Types.common_types.SuccessMessage.html +86 -0
  375. package/docs/types/_saltcorn_types.Types.common_types.Type.html +144 -0
  376. package/docs/variables/_saltcorn_data.db.html +60 -0
  377. package/docs/variables/_saltcorn_data.migrations.html +60 -0
  378. package/docs/variables/_saltcorn_data.models.config.available_languages.html +154 -0
  379. package/docs/variables/_saltcorn_data.models.config.configTypes.html +117 -0
  380. package/docs/variables/_saltcorn_data.models.scheduler.runScheduler.html +152 -0
  381. package/docs/variables/_saltcorn_data.plugin_helper.run_action_column.html +65 -0
  382. package/docs/variables/_saltcorn_data.utils.NotAuthorized.html +66 -0
  383. package/docs/variables/_saltcorn_data.utils.sleep.html +66 -0
  384. package/docs/variables/_saltcorn_db_common.multi_tenant.tenantNamespace.html +103 -0
  385. package/help/Extra state formula.tmd +1 -1
  386. package/help/JavaScript action code.tmd +1 -1
  387. package/locales/ar.json +1289 -4
  388. package/locales/da.json +355 -203
  389. package/locales/de.json +665 -149
  390. package/locales/en.json +16 -1
  391. package/locales/es.json +1567 -1271
  392. package/locales/fr.json +1562 -294
  393. package/locales/hi.json +1563 -0
  394. package/locales/pt.json +1300 -11
  395. package/locales/ru.json +1577 -1222
  396. package/locales/si.json +402 -4
  397. package/locales/uk.json +399 -3
  398. package/locales/zh.json +689 -7
  399. package/markup/admin.js +32 -14
  400. package/package.json +9 -9
  401. package/public/gridedit.js +4 -2
  402. package/public/saltcorn-common.js +45 -13
  403. package/public/saltcorn.js +17 -28
  404. package/routes/actions.js +4 -42
  405. package/routes/admin.js +78 -43
  406. package/routes/api.js +9 -9
  407. package/routes/delete.js +4 -2
  408. package/routes/eventlog.js +64 -27
  409. package/routes/fields.js +25 -14
  410. package/routes/files.js +9 -9
  411. package/routes/infoarch.js +57 -2
  412. package/routes/list.js +6 -4
  413. package/routes/pageedit.js +1 -1
  414. package/routes/plugins.js +36 -1
  415. package/routes/search.js +7 -3
  416. package/routes/tables.js +207 -28
  417. package/tests/admin.test.js +15 -0
  418. package/wrapper.js +14 -4
package/CHANGELOG.md CHANGED
@@ -1,6 +1,26 @@
1
1
  # Notable changes
2
2
 
3
- ## 1.1.2 - In beta
3
+ ## 1.1.3 - In beta
4
+
5
+ * Workflows:
6
+ - UserForm new question type: Multiple checks
7
+ - Options for Multiple checks and Multiple choice can use interpolations (`{{ }}`)
8
+ so options can be dynamically generated from the context
9
+
10
+ ### Fixes
11
+
12
+ * Fix serving JSDoc (Table, File, User links in run_js_code)
13
+
14
+ ## 1.1.2 - Released 4 March 2025
15
+
16
+ * Actions:
17
+ - New action: download_file_to_browser
18
+ - Workflows on mobile apps
19
+
20
+ * Email:
21
+ - Improve button appearance
22
+ - All links are absolute
23
+ - Option to use unauthenticated SMTP
4
24
 
5
25
  * Builder:
6
26
  - Container background image by file field in Show views
@@ -15,6 +35,14 @@
15
35
 
16
36
  * Upgrade a large number of dependencies (express, typescript, oclif, pg, webpack, typescript, axios, mjml, svelte). Node.js 18+ is require for this release.
17
37
 
38
+ ### Security
39
+
40
+ * View roles are now strictly enforced, including when views are embedded.
41
+
42
+ ### Fixes
43
+
44
+ * Much work on primary keys not called "id"
45
+
18
46
  ## 1.1.1 - Released 2 February 2025
19
47
 
20
48
  * Full-text search improvements:
package/auth/admin.js CHANGED
@@ -423,6 +423,9 @@ const permissions_settings_form = async (req) =>
423
423
  "min_role_edit_pages",
424
424
  "min_role_edit_triggers",
425
425
  "min_role_edit_menu",
426
+ "min_role_edit_files",
427
+ "min_role_edit_search",
428
+ "min_role_create_snapshots",
426
429
  //hidden "exttables_min_role_read",
427
430
  ],
428
431
  action: "/useradmin/permissions",
@@ -677,7 +680,11 @@ router.get(
677
680
  p(
678
681
  req.__(
679
682
  `Saltcorn can automatically obtain an SSL certificate from <a href="https://letsencrypt.org/">Let's Encrypt</a> for single domains`
680
- )
683
+ ) +
684
+ ". " +
685
+ req.__(
686
+ `To obtain a certificate, the administrator's email address will be shared with Let's Encrypt.`
687
+ )
681
688
  ),
682
689
  h5(
683
690
  req.__("Currently: "),
package/auth/routes.js CHANGED
@@ -534,6 +534,17 @@ router.get(
534
534
  })
535
535
  );
536
536
 
537
+ const default_language_field = new Field({
538
+ label: "Language",
539
+ name: "default_language",
540
+ input_type: "select",
541
+ attributes: { onChange: "cfu_translate(this)" },
542
+ options: Object.entries(available_languages).map(([locale, language]) => ({
543
+ value: locale,
544
+ label: language,
545
+ })),
546
+ });
547
+
537
548
  /**
538
549
  * @name get/create_first_user
539
550
  * @function
@@ -545,6 +556,7 @@ router.get(
545
556
  const hasUsers = await User.nonEmpty();
546
557
  if (!hasUsers) {
547
558
  const form = loginForm(req, true);
559
+ form.fields.unshift(default_language_field);
548
560
  form.action = "/auth/create_first_user";
549
561
  form.submitLabel = req.__("Create user");
550
562
  form.class = "create-first-user";
@@ -553,9 +565,30 @@ router.get(
553
565
  );
554
566
  const restore = restore_backup(
555
567
  req.csrfToken(),
556
- [i({ class: "fas fa-upload me-2 mt-2" }), req.__("Restore a backup")],
568
+ [
569
+ i({ class: "fas fa-upload me-2 mt-2" }),
570
+ span(req.__("Restore a backup")),
571
+ ],
557
572
  `/auth/create_from_restore`
558
573
  );
574
+ const translations = {};
575
+ Object.keys(available_languages).map((locale) => {
576
+ translations[locale] = {
577
+ submitLabel: req.__({ phrase: "Create user", locale }),
578
+ header: req.__({ phrase: "Create first user", locale }),
579
+ blurb: req.__({
580
+ phrase:
581
+ "Please create your first user account, which will have administrative privileges. You can add other users and give them administrative privileges later.",
582
+ locale,
583
+ }),
584
+ restore: req.__({ phrase: "Restore a backup", locale }),
585
+ language: req.__({ phrase: "Language", locale }),
586
+ email: req.__({ phrase: "E-mail", locale }),
587
+ password: req.__({ phrase: "Password", locale }),
588
+
589
+ };
590
+ });
591
+
559
592
  res.sendAuthWrap(
560
593
  req.__(`Create first user`),
561
594
  form,
@@ -565,7 +598,8 @@ router.get(
565
598
  domReady(
566
599
  `$('form.create-first-user button[type=submit]').click(function(){press_store_button(this)})`
567
600
  )
568
- )
601
+ ) +
602
+ script(`window.cfu_translations = ${JSON.stringify(translations)}`)
569
603
  );
570
604
  } else {
571
605
  req.flash("danger", req.__("Users already present"));
@@ -614,6 +648,7 @@ router.post(
614
648
  const hasUsers = await User.nonEmpty();
615
649
  if (!hasUsers) {
616
650
  const form = loginForm(req, true);
651
+ form.fields.unshift(default_language_field);
617
652
  form.validate(req.body || {});
618
653
 
619
654
  if (form.hasErrors) {
@@ -624,8 +659,14 @@ router.post(
624
659
  );
625
660
  res.sendAuthWrap(req.__(`Create first user`), form, {});
626
661
  } else {
627
- const { email, password } = form.values;
628
- const u = await User.create({ email, password, role_id: 1 });
662
+ const { email, password, default_language } = form.values;
663
+ const u = await User.create({
664
+ email,
665
+ password,
666
+ role_id: 1,
667
+ language: default_language,
668
+ });
669
+ await getState().setConfig("default_locale", default_language);
629
670
  req.login(u.session_object, function (err) {
630
671
  if (!err) {
631
672
  Trigger.emitEvent("Login", null, u);
package/docs/.nojekyll ADDED
@@ -0,0 +1 @@
1
+ TypeDoc added this file to prevent GitHub Pages from using Jekyll. You can turn off this behavior by setting the `githubPages` option to false.
@@ -0,0 +1,6 @@
1
+ section.tsd-hierarchy {
2
+ display: none;
3
+ }
4
+ section.tsd-hierarchy + section {
5
+ display: none;
6
+ }
@@ -0,0 +1,85 @@
1
+ :root {
2
+ --light-hl-0: #001080;
3
+ --dark-hl-0: #9CDCFE;
4
+ --light-hl-1: #000000;
5
+ --dark-hl-1: #D4D4D4;
6
+ --light-hl-2: #795E26;
7
+ --dark-hl-2: #DCDCAA;
8
+ --light-hl-3: #A31515;
9
+ --dark-hl-3: #CE9178;
10
+ --light-hl-4: #008000;
11
+ --dark-hl-4: #6A9955;
12
+ --light-hl-5: #098658;
13
+ --dark-hl-5: #B5CEA8;
14
+ --light-hl-6: #0000FF;
15
+ --dark-hl-6: #569CD6;
16
+ --light-hl-7: #0070C1;
17
+ --dark-hl-7: #4FC1FF;
18
+ --light-hl-8: #AF00DB;
19
+ --dark-hl-8: #C586C0;
20
+ --light-code-background: #FFFFFF;
21
+ --dark-code-background: #1E1E1E;
22
+ }
23
+
24
+ @media (prefers-color-scheme: light) { :root {
25
+ --hl-0: var(--light-hl-0);
26
+ --hl-1: var(--light-hl-1);
27
+ --hl-2: var(--light-hl-2);
28
+ --hl-3: var(--light-hl-3);
29
+ --hl-4: var(--light-hl-4);
30
+ --hl-5: var(--light-hl-5);
31
+ --hl-6: var(--light-hl-6);
32
+ --hl-7: var(--light-hl-7);
33
+ --hl-8: var(--light-hl-8);
34
+ --code-background: var(--light-code-background);
35
+ } }
36
+
37
+ @media (prefers-color-scheme: dark) { :root {
38
+ --hl-0: var(--dark-hl-0);
39
+ --hl-1: var(--dark-hl-1);
40
+ --hl-2: var(--dark-hl-2);
41
+ --hl-3: var(--dark-hl-3);
42
+ --hl-4: var(--dark-hl-4);
43
+ --hl-5: var(--dark-hl-5);
44
+ --hl-6: var(--dark-hl-6);
45
+ --hl-7: var(--dark-hl-7);
46
+ --hl-8: var(--dark-hl-8);
47
+ --code-background: var(--dark-code-background);
48
+ } }
49
+
50
+ :root[data-theme='light'] {
51
+ --hl-0: var(--light-hl-0);
52
+ --hl-1: var(--light-hl-1);
53
+ --hl-2: var(--light-hl-2);
54
+ --hl-3: var(--light-hl-3);
55
+ --hl-4: var(--light-hl-4);
56
+ --hl-5: var(--light-hl-5);
57
+ --hl-6: var(--light-hl-6);
58
+ --hl-7: var(--light-hl-7);
59
+ --hl-8: var(--light-hl-8);
60
+ --code-background: var(--light-code-background);
61
+ }
62
+
63
+ :root[data-theme='dark'] {
64
+ --hl-0: var(--dark-hl-0);
65
+ --hl-1: var(--dark-hl-1);
66
+ --hl-2: var(--dark-hl-2);
67
+ --hl-3: var(--dark-hl-3);
68
+ --hl-4: var(--dark-hl-4);
69
+ --hl-5: var(--dark-hl-5);
70
+ --hl-6: var(--dark-hl-6);
71
+ --hl-7: var(--dark-hl-7);
72
+ --hl-8: var(--dark-hl-8);
73
+ --code-background: var(--dark-code-background);
74
+ }
75
+
76
+ .hl-0 { color: var(--hl-0); }
77
+ .hl-1 { color: var(--hl-1); }
78
+ .hl-2 { color: var(--hl-2); }
79
+ .hl-3 { color: var(--hl-3); }
80
+ .hl-4 { color: var(--hl-4); }
81
+ .hl-5 { color: var(--hl-5); }
82
+ .hl-6 { color: var(--hl-6); }
83
+ .hl-7 { color: var(--hl-7); }
84
+ .hl-8 { color: var(--hl-8); }
85
+ pre, code { background: var(--code-background); }
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ "use strict";(()=>{var Se=Object.create;var re=Object.defineProperty;var we=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var ke=Object.getPrototypeOf,Qe=Object.prototype.hasOwnProperty;var Pe=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Ie=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Te(e))!Qe.call(t,i)&&i!==r&&re(t,i,{get:()=>e[i],enumerable:!(n=we(e,i))||n.enumerable});return t};var Ce=(t,e,r)=>(r=t!=null?Se(ke(t)):{},Ie(e||!t||!t.__esModule?re(r,"default",{value:t,enumerable:!0}):r,t));var ae=Pe((se,oe)=>{(function(){var t=function(e){var r=new t.Builder;return r.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),r.searchPipeline.add(t.stemmer),e.call(r,r),r.build()};t.version="2.3.9";t.utils={},t.utils.warn=function(e){return function(r){e.console&&console.warn&&console.warn(r)}}(this),t.utils.asString=function(e){return e==null?"":e.toString()},t.utils.clone=function(e){if(e==null)return e;for(var r=Object.create(null),n=Object.keys(e),i=0;i<n.length;i++){var s=n[i],o=e[s];if(Array.isArray(o)){r[s]=o.slice();continue}if(typeof o=="string"||typeof o=="number"||typeof o=="boolean"){r[s]=o;continue}throw new TypeError("clone is not deep and does not support nested objects")}return r},t.FieldRef=function(e,r,n){this.docRef=e,this.fieldName=r,this._stringValue=n},t.FieldRef.joiner="/",t.FieldRef.fromString=function(e){var r=e.indexOf(t.FieldRef.joiner);if(r===-1)throw"malformed field ref string";var n=e.slice(0,r),i=e.slice(r+1);return new t.FieldRef(i,n,e)},t.FieldRef.prototype.toString=function(){return this._stringValue==null&&(this._stringValue=this.fieldName+t.FieldRef.joiner+this.docRef),this._stringValue};t.Set=function(e){if(this.elements=Object.create(null),e){this.length=e.length;for(var r=0;r<this.length;r++)this.elements[e[r]]=!0}else this.length=0},t.Set.complete={intersect:function(e){return e},union:function(){return this},contains:function(){return!0}},t.Set.empty={intersect:function(){return this},union:function(e){return e},contains:function(){return!1}},t.Set.prototype.contains=function(e){return!!this.elements[e]},t.Set.prototype.intersect=function(e){var r,n,i,s=[];if(e===t.Set.complete)return this;if(e===t.Set.empty)return e;this.length<e.length?(r=this,n=e):(r=e,n=this),i=Object.keys(r.elements);for(var o=0;o<i.length;o++){var a=i[o];a in n.elements&&s.push(a)}return new t.Set(s)},t.Set.prototype.union=function(e){return e===t.Set.complete?t.Set.complete:e===t.Set.empty?this:new t.Set(Object.keys(this.elements).concat(Object.keys(e.elements)))},t.idf=function(e,r){var n=0;for(var i in e)i!="_index"&&(n+=Object.keys(e[i]).length);var s=(r-n+.5)/(n+.5);return Math.log(1+Math.abs(s))},t.Token=function(e,r){this.str=e||"",this.metadata=r||{}},t.Token.prototype.toString=function(){return this.str},t.Token.prototype.update=function(e){return this.str=e(this.str,this.metadata),this},t.Token.prototype.clone=function(e){return e=e||function(r){return r},new t.Token(e(this.str,this.metadata),this.metadata)};t.tokenizer=function(e,r){if(e==null||e==null)return[];if(Array.isArray(e))return e.map(function(m){return new t.Token(t.utils.asString(m).toLowerCase(),t.utils.clone(r))});for(var n=e.toString().toLowerCase(),i=n.length,s=[],o=0,a=0;o<=i;o++){var l=n.charAt(o),u=o-a;if(l.match(t.tokenizer.separator)||o==i){if(u>0){var d=t.utils.clone(r)||{};d.position=[a,u],d.index=s.length,s.push(new t.Token(n.slice(a,o),d))}a=o+1}}return s},t.tokenizer.separator=/[\s\-]+/;t.Pipeline=function(){this._stack=[]},t.Pipeline.registeredFunctions=Object.create(null),t.Pipeline.registerFunction=function(e,r){r in this.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+r),e.label=r,t.Pipeline.registeredFunctions[e.label]=e},t.Pipeline.warnIfFunctionNotRegistered=function(e){var r=e.label&&e.label in this.registeredFunctions;r||t.utils.warn(`Function is not registered with pipeline. This may cause problems when serialising the index.
3
+ `,e)},t.Pipeline.load=function(e){var r=new t.Pipeline;return e.forEach(function(n){var i=t.Pipeline.registeredFunctions[n];if(i)r.add(i);else throw new Error("Cannot load unregistered function: "+n)}),r},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(r){t.Pipeline.warnIfFunctionNotRegistered(r),this._stack.push(r)},this)},t.Pipeline.prototype.after=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");n=n+1,this._stack.splice(n,0,r)},t.Pipeline.prototype.before=function(e,r){t.Pipeline.warnIfFunctionNotRegistered(r);var n=this._stack.indexOf(e);if(n==-1)throw new Error("Cannot find existingFn");this._stack.splice(n,0,r)},t.Pipeline.prototype.remove=function(e){var r=this._stack.indexOf(e);r!=-1&&this._stack.splice(r,1)},t.Pipeline.prototype.run=function(e){for(var r=this._stack.length,n=0;n<r;n++){for(var i=this._stack[n],s=[],o=0;o<e.length;o++){var a=i(e[o],o,e);if(!(a==null||a===""))if(Array.isArray(a))for(var l=0;l<a.length;l++)s.push(a[l]);else s.push(a)}e=s}return e},t.Pipeline.prototype.runString=function(e,r){var n=new t.Token(e,r);return this.run([n]).map(function(i){return i.toString()})},t.Pipeline.prototype.reset=function(){this._stack=[]},t.Pipeline.prototype.toJSON=function(){return this._stack.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})};t.Vector=function(e){this._magnitude=0,this.elements=e||[]},t.Vector.prototype.positionForIndex=function(e){if(this.elements.length==0)return 0;for(var r=0,n=this.elements.length/2,i=n-r,s=Math.floor(i/2),o=this.elements[s*2];i>1&&(o<e&&(r=s),o>e&&(n=s),o!=e);)i=n-r,s=r+Math.floor(i/2),o=this.elements[s*2];if(o==e||o>e)return s*2;if(o<e)return(s+1)*2},t.Vector.prototype.insert=function(e,r){this.upsert(e,r,function(){throw"duplicate index"})},t.Vector.prototype.upsert=function(e,r,n){this._magnitude=0;var i=this.positionForIndex(e);this.elements[i]==e?this.elements[i+1]=n(this.elements[i+1],r):this.elements.splice(i,0,e,r)},t.Vector.prototype.magnitude=function(){if(this._magnitude)return this._magnitude;for(var e=0,r=this.elements.length,n=1;n<r;n+=2){var i=this.elements[n];e+=i*i}return this._magnitude=Math.sqrt(e)},t.Vector.prototype.dot=function(e){for(var r=0,n=this.elements,i=e.elements,s=n.length,o=i.length,a=0,l=0,u=0,d=0;u<s&&d<o;)a=n[u],l=i[d],a<l?u+=2:a>l?d+=2:a==l&&(r+=n[u+1]*i[d+1],u+=2,d+=2);return r},t.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},t.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),r=1,n=0;r<this.elements.length;r+=2,n++)e[n]=this.elements[r];return e},t.Vector.prototype.toJSON=function(){return this.elements};t.stemmer=function(){var e={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},r={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},n="[^aeiou]",i="[aeiouy]",s=n+"[^aeiouy]*",o=i+"[aeiou]*",a="^("+s+")?"+o+s,l="^("+s+")?"+o+s+"("+o+")?$",u="^("+s+")?"+o+s+o+s,d="^("+s+")?"+i,m=new RegExp(a),y=new RegExp(u),b=new RegExp(l),g=new RegExp(d),E=/^(.+?)(ss|i)es$/,f=/^(.+?)([^s])s$/,p=/^(.+?)eed$/,w=/^(.+?)(ed|ing)$/,S=/.$/,k=/(at|bl|iz)$/,_=new RegExp("([^aeiouylsz])\\1$"),B=new RegExp("^"+s+i+"[^aeiouwxy]$"),A=/^(.+?[^aeiou])y$/,j=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/,q=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/,V=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/,$=/^(.+?)(s|t)(ion)$/,I=/^(.+?)e$/,z=/ll$/,W=new RegExp("^"+s+i+"[^aeiouwxy]$"),H=function(c){var v,C,T,h,x,O,F;if(c.length<3)return c;if(T=c.substr(0,1),T=="y"&&(c=T.toUpperCase()+c.substr(1)),h=E,x=f,h.test(c)?c=c.replace(h,"$1$2"):x.test(c)&&(c=c.replace(x,"$1$2")),h=p,x=w,h.test(c)){var L=h.exec(c);h=m,h.test(L[1])&&(h=S,c=c.replace(h,""))}else if(x.test(c)){var L=x.exec(c);v=L[1],x=g,x.test(v)&&(c=v,x=k,O=_,F=B,x.test(c)?c=c+"e":O.test(c)?(h=S,c=c.replace(h,"")):F.test(c)&&(c=c+"e"))}if(h=A,h.test(c)){var L=h.exec(c);v=L[1],c=v+"i"}if(h=j,h.test(c)){var L=h.exec(c);v=L[1],C=L[2],h=m,h.test(v)&&(c=v+e[C])}if(h=q,h.test(c)){var L=h.exec(c);v=L[1],C=L[2],h=m,h.test(v)&&(c=v+r[C])}if(h=V,x=$,h.test(c)){var L=h.exec(c);v=L[1],h=y,h.test(v)&&(c=v)}else if(x.test(c)){var L=x.exec(c);v=L[1]+L[2],x=y,x.test(v)&&(c=v)}if(h=I,h.test(c)){var L=h.exec(c);v=L[1],h=y,x=b,O=W,(h.test(v)||x.test(v)&&!O.test(v))&&(c=v)}return h=z,x=y,h.test(c)&&x.test(c)&&(h=S,c=c.replace(h,"")),T=="y"&&(c=T.toLowerCase()+c.substr(1)),c};return function(R){return R.update(H)}}(),t.Pipeline.registerFunction(t.stemmer,"stemmer");t.generateStopWordFilter=function(e){var r=e.reduce(function(n,i){return n[i]=i,n},{});return function(n){if(n&&r[n.toString()]!==n.toString())return n}},t.stopWordFilter=t.generateStopWordFilter(["a","able","about","across","after","all","almost","also","am","among","an","and","any","are","as","at","be","because","been","but","by","can","cannot","could","dear","did","do","does","either","else","ever","every","for","from","get","got","had","has","have","he","her","hers","him","his","how","however","i","if","in","into","is","it","its","just","least","let","like","likely","may","me","might","most","must","my","neither","no","nor","not","of","off","often","on","only","or","other","our","own","rather","said","say","says","she","should","since","so","some","than","that","the","their","them","then","there","these","they","this","tis","to","too","twas","us","wants","was","we","were","what","when","where","which","while","who","whom","why","will","with","would","yet","you","your"]),t.Pipeline.registerFunction(t.stopWordFilter,"stopWordFilter");t.trimmer=function(e){return e.update(function(r){return r.replace(/^\W+/,"").replace(/\W+$/,"")})},t.Pipeline.registerFunction(t.trimmer,"trimmer");t.TokenSet=function(){this.final=!1,this.edges={},this.id=t.TokenSet._nextId,t.TokenSet._nextId+=1},t.TokenSet._nextId=1,t.TokenSet.fromArray=function(e){for(var r=new t.TokenSet.Builder,n=0,i=e.length;n<i;n++)r.insert(e[n]);return r.finish(),r.root},t.TokenSet.fromClause=function(e){return"editDistance"in e?t.TokenSet.fromFuzzyString(e.term,e.editDistance):t.TokenSet.fromString(e.term)},t.TokenSet.fromFuzzyString=function(e,r){for(var n=new t.TokenSet,i=[{node:n,editsRemaining:r,str:e}];i.length;){var s=i.pop();if(s.str.length>0){var o=s.str.charAt(0),a;o in s.node.edges?a=s.node.edges[o]:(a=new t.TokenSet,s.node.edges[o]=a),s.str.length==1&&(a.final=!0),i.push({node:a,editsRemaining:s.editsRemaining,str:s.str.slice(1)})}if(s.editsRemaining!=0){if("*"in s.node.edges)var l=s.node.edges["*"];else{var l=new t.TokenSet;s.node.edges["*"]=l}if(s.str.length==0&&(l.final=!0),i.push({node:l,editsRemaining:s.editsRemaining-1,str:s.str}),s.str.length>1&&i.push({node:s.node,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)}),s.str.length==1&&(s.node.final=!0),s.str.length>=1){if("*"in s.node.edges)var u=s.node.edges["*"];else{var u=new t.TokenSet;s.node.edges["*"]=u}s.str.length==1&&(u.final=!0),i.push({node:u,editsRemaining:s.editsRemaining-1,str:s.str.slice(1)})}if(s.str.length>1){var d=s.str.charAt(0),m=s.str.charAt(1),y;m in s.node.edges?y=s.node.edges[m]:(y=new t.TokenSet,s.node.edges[m]=y),s.str.length==1&&(y.final=!0),i.push({node:y,editsRemaining:s.editsRemaining-1,str:d+s.str.slice(2)})}}}return n},t.TokenSet.fromString=function(e){for(var r=new t.TokenSet,n=r,i=0,s=e.length;i<s;i++){var o=e[i],a=i==s-1;if(o=="*")r.edges[o]=r,r.final=a;else{var l=new t.TokenSet;l.final=a,r.edges[o]=l,r=l}}return n},t.TokenSet.prototype.toArray=function(){for(var e=[],r=[{prefix:"",node:this}];r.length;){var n=r.pop(),i=Object.keys(n.node.edges),s=i.length;n.node.final&&(n.prefix.charAt(0),e.push(n.prefix));for(var o=0;o<s;o++){var a=i[o];r.push({prefix:n.prefix.concat(a),node:n.node.edges[a]})}}return e},t.TokenSet.prototype.toString=function(){if(this._str)return this._str;for(var e=this.final?"1":"0",r=Object.keys(this.edges).sort(),n=r.length,i=0;i<n;i++){var s=r[i],o=this.edges[s];e=e+s+o.id}return e},t.TokenSet.prototype.intersect=function(e){for(var r=new t.TokenSet,n=void 0,i=[{qNode:e,output:r,node:this}];i.length;){n=i.pop();for(var s=Object.keys(n.qNode.edges),o=s.length,a=Object.keys(n.node.edges),l=a.length,u=0;u<o;u++)for(var d=s[u],m=0;m<l;m++){var y=a[m];if(y==d||d=="*"){var b=n.node.edges[y],g=n.qNode.edges[d],E=b.final&&g.final,f=void 0;y in n.output.edges?(f=n.output.edges[y],f.final=f.final||E):(f=new t.TokenSet,f.final=E,n.output.edges[y]=f),i.push({qNode:g,output:f,node:b})}}}return r},t.TokenSet.Builder=function(){this.previousWord="",this.root=new t.TokenSet,this.uncheckedNodes=[],this.minimizedNodes={}},t.TokenSet.Builder.prototype.insert=function(e){var r,n=0;if(e<this.previousWord)throw new Error("Out of order word insertion");for(var i=0;i<e.length&&i<this.previousWord.length&&e[i]==this.previousWord[i];i++)n++;this.minimize(n),this.uncheckedNodes.length==0?r=this.root:r=this.uncheckedNodes[this.uncheckedNodes.length-1].child;for(var i=n;i<e.length;i++){var s=new t.TokenSet,o=e[i];r.edges[o]=s,this.uncheckedNodes.push({parent:r,char:o,child:s}),r=s}r.final=!0,this.previousWord=e},t.TokenSet.Builder.prototype.finish=function(){this.minimize(0)},t.TokenSet.Builder.prototype.minimize=function(e){for(var r=this.uncheckedNodes.length-1;r>=e;r--){var n=this.uncheckedNodes[r],i=n.child.toString();i in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[i]:(n.child._str=i,this.minimizedNodes[i]=n.child),this.uncheckedNodes.pop()}};t.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},t.Index.prototype.search=function(e){return this.query(function(r){var n=new t.QueryParser(e,r);n.parse()})},t.Index.prototype.query=function(e){for(var r=new t.Query(this.fields),n=Object.create(null),i=Object.create(null),s=Object.create(null),o=Object.create(null),a=Object.create(null),l=0;l<this.fields.length;l++)i[this.fields[l]]=new t.Vector;e.call(r,r);for(var l=0;l<r.clauses.length;l++){var u=r.clauses[l],d=null,m=t.Set.empty;u.usePipeline?d=this.pipeline.runString(u.term,{fields:u.fields}):d=[u.term];for(var y=0;y<d.length;y++){var b=d[y];u.term=b;var g=t.TokenSet.fromClause(u),E=this.tokenSet.intersect(g).toArray();if(E.length===0&&u.presence===t.Query.presence.REQUIRED){for(var f=0;f<u.fields.length;f++){var p=u.fields[f];o[p]=t.Set.empty}break}for(var w=0;w<E.length;w++)for(var S=E[w],k=this.invertedIndex[S],_=k._index,f=0;f<u.fields.length;f++){var p=u.fields[f],B=k[p],A=Object.keys(B),j=S+"/"+p,q=new t.Set(A);if(u.presence==t.Query.presence.REQUIRED&&(m=m.union(q),o[p]===void 0&&(o[p]=t.Set.complete)),u.presence==t.Query.presence.PROHIBITED){a[p]===void 0&&(a[p]=t.Set.empty),a[p]=a[p].union(q);continue}if(i[p].upsert(_,u.boost,function(Ee,be){return Ee+be}),!s[j]){for(var V=0;V<A.length;V++){var $=A[V],I=new t.FieldRef($,p),z=B[$],W;(W=n[I])===void 0?n[I]=new t.MatchData(S,p,z):W.add(S,p,z)}s[j]=!0}}}if(u.presence===t.Query.presence.REQUIRED)for(var f=0;f<u.fields.length;f++){var p=u.fields[f];o[p]=o[p].intersect(m)}}for(var H=t.Set.complete,R=t.Set.empty,l=0;l<this.fields.length;l++){var p=this.fields[l];o[p]&&(H=H.intersect(o[p])),a[p]&&(R=R.union(a[p]))}var c=Object.keys(n),v=[],C=Object.create(null);if(r.isNegated()){c=Object.keys(this.fieldVectors);for(var l=0;l<c.length;l++){var I=c[l],T=t.FieldRef.fromString(I);n[I]=new t.MatchData}}for(var l=0;l<c.length;l++){var T=t.FieldRef.fromString(c[l]),h=T.docRef;if(H.contains(h)&&!R.contains(h)){var x=this.fieldVectors[T],O=i[T.fieldName].similarity(x),F;if((F=C[h])!==void 0)F.score+=O,F.matchData.combine(n[T]);else{var L={ref:h,score:O,matchData:n[T]};C[h]=L,v.push(L)}}}return v.sort(function(xe,Le){return Le.score-xe.score})},t.Index.prototype.toJSON=function(){var e=Object.keys(this.invertedIndex).sort().map(function(n){return[n,this.invertedIndex[n]]},this),r=Object.keys(this.fieldVectors).map(function(n){return[n,this.fieldVectors[n].toJSON()]},this);return{version:t.version,fields:this.fields,fieldVectors:r,invertedIndex:e,pipeline:this.pipeline.toJSON()}},t.Index.load=function(e){var r={},n={},i=e.fieldVectors,s=Object.create(null),o=e.invertedIndex,a=new t.TokenSet.Builder,l=t.Pipeline.load(e.pipeline);e.version!=t.version&&t.utils.warn("Version mismatch when loading serialised index. Current version of lunr '"+t.version+"' does not match serialized index '"+e.version+"'");for(var u=0;u<i.length;u++){var d=i[u],m=d[0],y=d[1];n[m]=new t.Vector(y)}for(var u=0;u<o.length;u++){var d=o[u],b=d[0],g=d[1];a.insert(b),s[b]=g}return a.finish(),r.fields=e.fields,r.fieldVectors=n,r.invertedIndex=s,r.tokenSet=a.root,r.pipeline=l,new t.Index(r)};t.Builder=function(){this._ref="id",this._fields=Object.create(null),this._documents=Object.create(null),this.invertedIndex=Object.create(null),this.fieldTermFrequencies={},this.fieldLengths={},this.tokenizer=t.tokenizer,this.pipeline=new t.Pipeline,this.searchPipeline=new t.Pipeline,this.documentCount=0,this._b=.75,this._k1=1.2,this.termIndex=0,this.metadataWhitelist=[]},t.Builder.prototype.ref=function(e){this._ref=e},t.Builder.prototype.field=function(e,r){if(/\//.test(e))throw new RangeError("Field '"+e+"' contains illegal character '/'");this._fields[e]=r||{}},t.Builder.prototype.b=function(e){e<0?this._b=0:e>1?this._b=1:this._b=e},t.Builder.prototype.k1=function(e){this._k1=e},t.Builder.prototype.add=function(e,r){var n=e[this._ref],i=Object.keys(this._fields);this._documents[n]=r||{},this.documentCount+=1;for(var s=0;s<i.length;s++){var o=i[s],a=this._fields[o].extractor,l=a?a(e):e[o],u=this.tokenizer(l,{fields:[o]}),d=this.pipeline.run(u),m=new t.FieldRef(n,o),y=Object.create(null);this.fieldTermFrequencies[m]=y,this.fieldLengths[m]=0,this.fieldLengths[m]+=d.length;for(var b=0;b<d.length;b++){var g=d[b];if(y[g]==null&&(y[g]=0),y[g]+=1,this.invertedIndex[g]==null){var E=Object.create(null);E._index=this.termIndex,this.termIndex+=1;for(var f=0;f<i.length;f++)E[i[f]]=Object.create(null);this.invertedIndex[g]=E}this.invertedIndex[g][o][n]==null&&(this.invertedIndex[g][o][n]=Object.create(null));for(var p=0;p<this.metadataWhitelist.length;p++){var w=this.metadataWhitelist[p],S=g.metadata[w];this.invertedIndex[g][o][n][w]==null&&(this.invertedIndex[g][o][n][w]=[]),this.invertedIndex[g][o][n][w].push(S)}}}},t.Builder.prototype.calculateAverageFieldLengths=function(){for(var e=Object.keys(this.fieldLengths),r=e.length,n={},i={},s=0;s<r;s++){var o=t.FieldRef.fromString(e[s]),a=o.fieldName;i[a]||(i[a]=0),i[a]+=1,n[a]||(n[a]=0),n[a]+=this.fieldLengths[o]}for(var l=Object.keys(this._fields),s=0;s<l.length;s++){var u=l[s];n[u]=n[u]/i[u]}this.averageFieldLength=n},t.Builder.prototype.createFieldVectors=function(){for(var e={},r=Object.keys(this.fieldTermFrequencies),n=r.length,i=Object.create(null),s=0;s<n;s++){for(var o=t.FieldRef.fromString(r[s]),a=o.fieldName,l=this.fieldLengths[o],u=new t.Vector,d=this.fieldTermFrequencies[o],m=Object.keys(d),y=m.length,b=this._fields[a].boost||1,g=this._documents[o.docRef].boost||1,E=0;E<y;E++){var f=m[E],p=d[f],w=this.invertedIndex[f]._index,S,k,_;i[f]===void 0?(S=t.idf(this.invertedIndex[f],this.documentCount),i[f]=S):S=i[f],k=S*((this._k1+1)*p)/(this._k1*(1-this._b+this._b*(l/this.averageFieldLength[a]))+p),k*=b,k*=g,_=Math.round(k*1e3)/1e3,u.insert(w,_)}e[o]=u}this.fieldVectors=e},t.Builder.prototype.createTokenSet=function(){this.tokenSet=t.TokenSet.fromArray(Object.keys(this.invertedIndex).sort())},t.Builder.prototype.build=function(){return this.calculateAverageFieldLengths(),this.createFieldVectors(),this.createTokenSet(),new t.Index({invertedIndex:this.invertedIndex,fieldVectors:this.fieldVectors,tokenSet:this.tokenSet,fields:Object.keys(this._fields),pipeline:this.searchPipeline})},t.Builder.prototype.use=function(e){var r=Array.prototype.slice.call(arguments,1);r.unshift(this),e.apply(this,r)},t.MatchData=function(e,r,n){for(var i=Object.create(null),s=Object.keys(n||{}),o=0;o<s.length;o++){var a=s[o];i[a]=n[a].slice()}this.metadata=Object.create(null),e!==void 0&&(this.metadata[e]=Object.create(null),this.metadata[e][r]=i)},t.MatchData.prototype.combine=function(e){for(var r=Object.keys(e.metadata),n=0;n<r.length;n++){var i=r[n],s=Object.keys(e.metadata[i]);this.metadata[i]==null&&(this.metadata[i]=Object.create(null));for(var o=0;o<s.length;o++){var a=s[o],l=Object.keys(e.metadata[i][a]);this.metadata[i][a]==null&&(this.metadata[i][a]=Object.create(null));for(var u=0;u<l.length;u++){var d=l[u];this.metadata[i][a][d]==null?this.metadata[i][a][d]=e.metadata[i][a][d]:this.metadata[i][a][d]=this.metadata[i][a][d].concat(e.metadata[i][a][d])}}}},t.MatchData.prototype.add=function(e,r,n){if(!(e in this.metadata)){this.metadata[e]=Object.create(null),this.metadata[e][r]=n;return}if(!(r in this.metadata[e])){this.metadata[e][r]=n;return}for(var i=Object.keys(n),s=0;s<i.length;s++){var o=i[s];o in this.metadata[e][r]?this.metadata[e][r][o]=this.metadata[e][r][o].concat(n[o]):this.metadata[e][r][o]=n[o]}},t.Query=function(e){this.clauses=[],this.allFields=e},t.Query.wildcard=new String("*"),t.Query.wildcard.NONE=0,t.Query.wildcard.LEADING=1,t.Query.wildcard.TRAILING=2,t.Query.presence={OPTIONAL:1,REQUIRED:2,PROHIBITED:3},t.Query.prototype.clause=function(e){return"fields"in e||(e.fields=this.allFields),"boost"in e||(e.boost=1),"usePipeline"in e||(e.usePipeline=!0),"wildcard"in e||(e.wildcard=t.Query.wildcard.NONE),e.wildcard&t.Query.wildcard.LEADING&&e.term.charAt(0)!=t.Query.wildcard&&(e.term="*"+e.term),e.wildcard&t.Query.wildcard.TRAILING&&e.term.slice(-1)!=t.Query.wildcard&&(e.term=""+e.term+"*"),"presence"in e||(e.presence=t.Query.presence.OPTIONAL),this.clauses.push(e),this},t.Query.prototype.isNegated=function(){for(var e=0;e<this.clauses.length;e++)if(this.clauses[e].presence!=t.Query.presence.PROHIBITED)return!1;return!0},t.Query.prototype.term=function(e,r){if(Array.isArray(e))return e.forEach(function(i){this.term(i,t.utils.clone(r))},this),this;var n=r||{};return n.term=e.toString(),this.clause(n),this},t.QueryParseError=function(e,r,n){this.name="QueryParseError",this.message=e,this.start=r,this.end=n},t.QueryParseError.prototype=new Error,t.QueryLexer=function(e){this.lexemes=[],this.str=e,this.length=e.length,this.pos=0,this.start=0,this.escapeCharPositions=[]},t.QueryLexer.prototype.run=function(){for(var e=t.QueryLexer.lexText;e;)e=e(this)},t.QueryLexer.prototype.sliceString=function(){for(var e=[],r=this.start,n=this.pos,i=0;i<this.escapeCharPositions.length;i++)n=this.escapeCharPositions[i],e.push(this.str.slice(r,n)),r=n+1;return e.push(this.str.slice(r,this.pos)),this.escapeCharPositions.length=0,e.join("")},t.QueryLexer.prototype.emit=function(e){this.lexemes.push({type:e,str:this.sliceString(),start:this.start,end:this.pos}),this.start=this.pos},t.QueryLexer.prototype.escapeCharacter=function(){this.escapeCharPositions.push(this.pos-1),this.pos+=1},t.QueryLexer.prototype.next=function(){if(this.pos>=this.length)return t.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},t.QueryLexer.prototype.width=function(){return this.pos-this.start},t.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},t.QueryLexer.prototype.backup=function(){this.pos-=1},t.QueryLexer.prototype.acceptDigitRun=function(){var e,r;do e=this.next(),r=e.charCodeAt(0);while(r>47&&r<58);e!=t.QueryLexer.EOS&&this.backup()},t.QueryLexer.prototype.more=function(){return this.pos<this.length},t.QueryLexer.EOS="EOS",t.QueryLexer.FIELD="FIELD",t.QueryLexer.TERM="TERM",t.QueryLexer.EDIT_DISTANCE="EDIT_DISTANCE",t.QueryLexer.BOOST="BOOST",t.QueryLexer.PRESENCE="PRESENCE",t.QueryLexer.lexField=function(e){return e.backup(),e.emit(t.QueryLexer.FIELD),e.ignore(),t.QueryLexer.lexText},t.QueryLexer.lexTerm=function(e){if(e.width()>1&&(e.backup(),e.emit(t.QueryLexer.TERM)),e.ignore(),e.more())return t.QueryLexer.lexText},t.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.EDIT_DISTANCE),t.QueryLexer.lexText},t.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(t.QueryLexer.BOOST),t.QueryLexer.lexText},t.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(t.QueryLexer.TERM)},t.QueryLexer.termSeparator=t.tokenizer.separator,t.QueryLexer.lexText=function(e){for(;;){var r=e.next();if(r==t.QueryLexer.EOS)return t.QueryLexer.lexEOS;if(r.charCodeAt(0)==92){e.escapeCharacter();continue}if(r==":")return t.QueryLexer.lexField;if(r=="~")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexEditDistance;if(r=="^")return e.backup(),e.width()>0&&e.emit(t.QueryLexer.TERM),t.QueryLexer.lexBoost;if(r=="+"&&e.width()===1||r=="-"&&e.width()===1)return e.emit(t.QueryLexer.PRESENCE),t.QueryLexer.lexText;if(r.match(t.QueryLexer.termSeparator))return t.QueryLexer.lexTerm}},t.QueryParser=function(e,r){this.lexer=new t.QueryLexer(e),this.query=r,this.currentClause={},this.lexemeIdx=0},t.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=t.QueryParser.parseClause;e;)e=e(this);return this.query},t.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},t.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},t.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},t.QueryParser.parseClause=function(e){var r=e.peekLexeme();if(r!=null)switch(r.type){case t.QueryLexer.PRESENCE:return t.QueryParser.parsePresence;case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(n+=" with value '"+r.str+"'"),new t.QueryParseError(n,r.start,r.end)}},t.QueryParser.parsePresence=function(e){var r=e.consumeLexeme();if(r!=null){switch(r.str){case"-":e.currentClause.presence=t.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=t.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+r.str+"'";throw new t.QueryParseError(n,r.start,r.end)}var i=e.peekLexeme();if(i==null){var n="expecting term or field, found nothing";throw new t.QueryParseError(n,r.start,r.end)}switch(i.type){case t.QueryLexer.FIELD:return t.QueryParser.parseField;case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var n="expecting term or field, found '"+i.type+"'";throw new t.QueryParseError(n,i.start,i.end)}}},t.QueryParser.parseField=function(e){var r=e.consumeLexeme();if(r!=null){if(e.query.allFields.indexOf(r.str)==-1){var n=e.query.allFields.map(function(o){return"'"+o+"'"}).join(", "),i="unrecognised field '"+r.str+"', possible fields: "+n;throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.fields=[r.str];var s=e.peekLexeme();if(s==null){var i="expecting term, found nothing";throw new t.QueryParseError(i,r.start,r.end)}switch(s.type){case t.QueryLexer.TERM:return t.QueryParser.parseTerm;default:var i="expecting term, found '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseTerm=function(e){var r=e.consumeLexeme();if(r!=null){e.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(n==null){e.nextClause();return}switch(n.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+n.type+"'";throw new t.QueryParseError(i,n.start,n.end)}}},t.QueryParser.parseEditDistance=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="edit distance must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.editDistance=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},t.QueryParser.parseBoost=function(e){var r=e.consumeLexeme();if(r!=null){var n=parseInt(r.str,10);if(isNaN(n)){var i="boost must be numeric";throw new t.QueryParseError(i,r.start,r.end)}e.currentClause.boost=n;var s=e.peekLexeme();if(s==null){e.nextClause();return}switch(s.type){case t.QueryLexer.TERM:return e.nextClause(),t.QueryParser.parseTerm;case t.QueryLexer.FIELD:return e.nextClause(),t.QueryParser.parseField;case t.QueryLexer.EDIT_DISTANCE:return t.QueryParser.parseEditDistance;case t.QueryLexer.BOOST:return t.QueryParser.parseBoost;case t.QueryLexer.PRESENCE:return e.nextClause(),t.QueryParser.parsePresence;default:var i="Unexpected lexeme type '"+s.type+"'";throw new t.QueryParseError(i,s.start,s.end)}}},function(e,r){typeof define=="function"&&define.amd?define(r):typeof se=="object"?oe.exports=r():e.lunr=r()}(this,function(){return t})})()});var ne=[];function G(t,e){ne.push({selector:e,constructor:t})}var U=class{constructor(){this.alwaysVisibleMember=null;this.createComponents(document.body),this.ensureActivePageVisible(),this.ensureFocusedElementVisible(),this.listenForCodeCopies(),window.addEventListener("hashchange",()=>this.ensureFocusedElementVisible())}createComponents(e){ne.forEach(r=>{e.querySelectorAll(r.selector).forEach(n=>{n.dataset.hasInstance||(new r.constructor({el:n,app:this}),n.dataset.hasInstance=String(!0))})})}filterChanged(){this.ensureFocusedElementVisible()}ensureActivePageVisible(){let e=document.querySelector(".tsd-navigation .current"),r=e?.parentElement;for(;r&&!r.classList.contains(".tsd-navigation");)r instanceof HTMLDetailsElement&&(r.open=!0),r=r.parentElement;if(e){let n=e.getBoundingClientRect().top-document.documentElement.clientHeight/4;document.querySelector(".site-menu").scrollTop=n}}ensureFocusedElementVisible(){if(this.alwaysVisibleMember&&(this.alwaysVisibleMember.classList.remove("always-visible"),this.alwaysVisibleMember.firstElementChild.remove(),this.alwaysVisibleMember=null),!location.hash)return;let e=document.getElementById(location.hash.substring(1));if(!e)return;let r=e.parentElement;for(;r&&r.tagName!=="SECTION";)r=r.parentElement;if(r&&r.offsetParent==null){this.alwaysVisibleMember=r,r.classList.add("always-visible");let n=document.createElement("p");n.classList.add("warning"),n.textContent="This member is normally hidden due to your filter settings.",r.prepend(n)}}listenForCodeCopies(){document.querySelectorAll("pre > button").forEach(e=>{let r;e.addEventListener("click",()=>{e.previousElementSibling instanceof HTMLElement&&navigator.clipboard.writeText(e.previousElementSibling.innerText.trim()),e.textContent="Copied!",e.classList.add("visible"),clearTimeout(r),r=setTimeout(()=>{e.classList.remove("visible"),r=setTimeout(()=>{e.textContent="Copy"},100)},1e3)})})}};var ie=(t,e=100)=>{let r;return()=>{clearTimeout(r),r=setTimeout(()=>t(),e)}};var ce=Ce(ae());function de(){let t=document.getElementById("tsd-search");if(!t)return;let e=document.getElementById("tsd-search-script");t.classList.add("loading"),e&&(e.addEventListener("error",()=>{t.classList.remove("loading"),t.classList.add("failure")}),e.addEventListener("load",()=>{t.classList.remove("loading"),t.classList.add("ready")}),window.searchData&&t.classList.remove("loading"));let r=document.querySelector("#tsd-search input"),n=document.querySelector("#tsd-search .results");if(!r||!n)throw new Error("The input field or the result list wrapper was not found");let i=!1;n.addEventListener("mousedown",()=>i=!0),n.addEventListener("mouseup",()=>{i=!1,t.classList.remove("has-focus")}),r.addEventListener("focus",()=>t.classList.add("has-focus")),r.addEventListener("blur",()=>{i||(i=!1,t.classList.remove("has-focus"))});let s={base:t.dataset.base+"/"};Oe(t,n,r,s)}function Oe(t,e,r,n){r.addEventListener("input",ie(()=>{Re(t,e,r,n)},200));let i=!1;r.addEventListener("keydown",s=>{i=!0,s.key=="Enter"?Fe(e,r):s.key=="Escape"?r.blur():s.key=="ArrowUp"?ue(e,-1):s.key==="ArrowDown"?ue(e,1):i=!1}),r.addEventListener("keypress",s=>{i&&s.preventDefault()}),document.body.addEventListener("keydown",s=>{s.altKey||s.ctrlKey||s.metaKey||!r.matches(":focus")&&s.key==="/"&&(r.focus(),s.preventDefault())})}function _e(t,e){t.index||window.searchData&&(e.classList.remove("loading"),e.classList.add("ready"),t.data=window.searchData,t.index=ce.Index.load(window.searchData.index))}function Re(t,e,r,n){if(_e(n,t),!n.index||!n.data)return;e.textContent="";let i=r.value.trim(),s=i?n.index.search(`*${i}*`):[];for(let o=0;o<s.length;o++){let a=s[o],l=n.data.rows[Number(a.ref)],u=1;l.name.toLowerCase().startsWith(i.toLowerCase())&&(u*=1+1/(1+Math.abs(l.name.length-i.length))),a.score*=u}s.sort((o,a)=>a.score-o.score);for(let o=0,a=Math.min(10,s.length);o<a;o++){let l=n.data.rows[Number(s[o].ref)],u=le(l.name,i);globalThis.DEBUG_SEARCH_WEIGHTS&&(u+=` (score: ${s[o].score.toFixed(2)})`),l.parent&&(u=`<span class="parent">${le(l.parent,i)}.</span>${u}`);let d=document.createElement("li");d.classList.value=l.classes??"";let m=document.createElement("a");m.href=n.base+l.url,m.innerHTML=u,d.append(m),e.appendChild(d)}}function ue(t,e){let r=t.querySelector(".current");if(!r)r=t.querySelector(e==1?"li:first-child":"li:last-child"),r&&r.classList.add("current");else{let n=r;if(e===1)do n=n.nextElementSibling??void 0;while(n instanceof HTMLElement&&n.offsetParent==null);else do n=n.previousElementSibling??void 0;while(n instanceof HTMLElement&&n.offsetParent==null);n&&(r.classList.remove("current"),n.classList.add("current"))}}function Fe(t,e){let r=t.querySelector(".current");if(r||(r=t.querySelector("li:first-child")),r){let n=r.querySelector("a");n&&(window.location.href=n.href),e.blur()}}function le(t,e){if(e==="")return t;let r=t.toLocaleLowerCase(),n=e.toLocaleLowerCase(),i=[],s=0,o=r.indexOf(n);for(;o!=-1;)i.push(K(t.substring(s,o)),`<b>${K(t.substring(o,o+n.length))}</b>`),s=o+n.length,o=r.indexOf(n,s);return i.push(K(t.substring(s))),i.join("")}var Me={"&":"&amp;","<":"&lt;",">":"&gt;","'":"&#039;",'"':"&quot;"};function K(t){return t.replace(/[&<>"'"]/g,e=>Me[e])}var P=class{constructor(e){this.el=e.el,this.app=e.app}};var M="mousedown",fe="mousemove",N="mouseup",J={x:0,y:0},he=!1,ee=!1,De=!1,D=!1,pe=/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);document.documentElement.classList.add(pe?"is-mobile":"not-mobile");pe&&"ontouchstart"in document.documentElement&&(De=!0,M="touchstart",fe="touchmove",N="touchend");document.addEventListener(M,t=>{ee=!0,D=!1;let e=M=="touchstart"?t.targetTouches[0]:t;J.y=e.pageY||0,J.x=e.pageX||0});document.addEventListener(fe,t=>{if(ee&&!D){let e=M=="touchstart"?t.targetTouches[0]:t,r=J.x-(e.pageX||0),n=J.y-(e.pageY||0);D=Math.sqrt(r*r+n*n)>10}});document.addEventListener(N,()=>{ee=!1});document.addEventListener("click",t=>{he&&(t.preventDefault(),t.stopImmediatePropagation(),he=!1)});var X=class extends P{constructor(r){super(r);this.className=this.el.dataset.toggle||"",this.el.addEventListener(N,n=>this.onPointerUp(n)),this.el.addEventListener("click",n=>n.preventDefault()),document.addEventListener(M,n=>this.onDocumentPointerDown(n)),document.addEventListener(N,n=>this.onDocumentPointerUp(n))}setActive(r){if(this.active==r)return;this.active=r,document.documentElement.classList.toggle("has-"+this.className,r),this.el.classList.toggle("active",r);let n=(this.active?"to-has-":"from-has-")+this.className;document.documentElement.classList.add(n),setTimeout(()=>document.documentElement.classList.remove(n),500)}onPointerUp(r){D||(this.setActive(!0),r.preventDefault())}onDocumentPointerDown(r){if(this.active){if(r.target.closest(".col-sidebar, .tsd-filter-group"))return;this.setActive(!1)}}onDocumentPointerUp(r){if(!D&&this.active&&r.target.closest(".col-sidebar")){let n=r.target.closest("a");if(n){let i=window.location.href;i.indexOf("#")!=-1&&(i=i.substring(0,i.indexOf("#"))),n.href.substring(0,i.length)==i&&setTimeout(()=>this.setActive(!1),250)}}}};var te;try{te=localStorage}catch{te={getItem(){return null},setItem(){}}}var Q=te;var me=document.head.appendChild(document.createElement("style"));me.dataset.for="filters";var Y=class extends P{constructor(r){super(r);this.key=`filter-${this.el.name}`,this.value=this.el.checked,this.el.addEventListener("change",()=>{this.setLocalStorage(this.el.checked)}),this.setLocalStorage(this.fromLocalStorage()),me.innerHTML+=`html:not(.${this.key}) .tsd-is-${this.el.name} { display: none; }
4
+ `}fromLocalStorage(){let r=Q.getItem(this.key);return r?r==="true":this.el.checked}setLocalStorage(r){Q.setItem(this.key,r.toString()),this.value=r,this.handleValueChange()}handleValueChange(){this.el.checked=this.value,document.documentElement.classList.toggle(this.key,this.value),this.app.filterChanged(),document.querySelectorAll(".tsd-index-section").forEach(r=>{r.style.display="block";let n=Array.from(r.querySelectorAll(".tsd-index-link")).every(i=>i.offsetParent==null);r.style.display=n?"none":"block"})}};var Z=class extends P{constructor(r){super(r);this.summary=this.el.querySelector(".tsd-accordion-summary"),this.icon=this.summary.querySelector("svg"),this.key=`tsd-accordion-${this.summary.dataset.key??this.summary.textContent.trim().replace(/\s+/g,"-").toLowerCase()}`;let n=Q.getItem(this.key);this.el.open=n?n==="true":this.el.open,this.el.addEventListener("toggle",()=>this.update()),this.update()}update(){this.icon.style.transform=`rotate(${this.el.open?0:-90}deg)`,Q.setItem(this.key,this.el.open.toString())}};function ve(t){let e=Q.getItem("tsd-theme")||"os";t.value=e,ye(e),t.addEventListener("change",()=>{Q.setItem("tsd-theme",t.value),ye(t.value)})}function ye(t){document.documentElement.dataset.theme=t}de();G(X,"a[data-toggle]");G(Z,".tsd-index-accordion");G(Y,".tsd-filter-item input[type=checkbox]");var ge=document.getElementById("tsd-theme");ge&&ve(ge);var Ae=new U;Object.defineProperty(window,"app",{value:Ae});document.querySelectorAll("summary a").forEach(t=>{t.addEventListener("click",()=>{location.assign(t.href)})});})();
5
+ /*! Bundled license information:
6
+
7
+ lunr/lunr.js:
8
+ (**
9
+ * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9
10
+ * Copyright (C) 2020 Oliver Nightingale
11
+ * @license MIT
12
+ *)
13
+ (*!
14
+ * lunr.utils
15
+ * Copyright (C) 2020 Oliver Nightingale
16
+ *)
17
+ (*!
18
+ * lunr.Set
19
+ * Copyright (C) 2020 Oliver Nightingale
20
+ *)
21
+ (*!
22
+ * lunr.tokenizer
23
+ * Copyright (C) 2020 Oliver Nightingale
24
+ *)
25
+ (*!
26
+ * lunr.Pipeline
27
+ * Copyright (C) 2020 Oliver Nightingale
28
+ *)
29
+ (*!
30
+ * lunr.Vector
31
+ * Copyright (C) 2020 Oliver Nightingale
32
+ *)
33
+ (*!
34
+ * lunr.stemmer
35
+ * Copyright (C) 2020 Oliver Nightingale
36
+ * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
37
+ *)
38
+ (*!
39
+ * lunr.stopWordFilter
40
+ * Copyright (C) 2020 Oliver Nightingale
41
+ *)
42
+ (*!
43
+ * lunr.trimmer
44
+ * Copyright (C) 2020 Oliver Nightingale
45
+ *)
46
+ (*!
47
+ * lunr.TokenSet
48
+ * Copyright (C) 2020 Oliver Nightingale
49
+ *)
50
+ (*!
51
+ * lunr.Index
52
+ * Copyright (C) 2020 Oliver Nightingale
53
+ *)
54
+ (*!
55
+ * lunr.Builder
56
+ * Copyright (C) 2020 Oliver Nightingale
57
+ *)
58
+ */