SYMBOL INDEX (3597 symbols across 128 files) FILE: datasette/actor_auth_cookie.py function actor_from_request (line 8) | def actor_from_request(datasette, request): FILE: datasette/app.py class _DatasetteClientContext (line 141) | class _DatasetteClientContext: method __enter__ (line 144) | def __enter__(self): method __exit__ (line 148) | def __exit__(self, exc_type, exc_val, exc_tb): class PermissionCheck (line 154) | class PermissionCheck: function favicon (line 277) | async def favicon(request, send): function _to_string (line 292) | def _to_string(value): class Datasette (line 299) | class Datasette: method __init__ (line 305) | def __init__( method apply_metadata_json (line 540) | async def apply_metadata_json(self): method get_jinja_environment (line 574) | def get_jinja_environment(self, request: Request = None) -> Environment: method get_action (line 583) | def get_action(self, name_or_abbr: str): method refresh_schemas (line 595) | async def refresh_schemas(self): method _refresh_schemas (line 605) | async def _refresh_schemas(self): method urls (line 646) | def urls(self): method pm (line 650) | def pm(self): method invoke_startup (line 660) | async def invoke_startup(self): method sign (line 719) | def sign(self, value, namespace="default"): method unsign (line 722) | def unsign(self, signed, namespace="default"): method in_client (line 725) | def in_client(self) -> bool: method _token_handlers (line 733) | def _token_handlers(self): method create_token (line 745) | async def create_token( method verify_token (line 785) | async def verify_token(self, token: str) -> dict | None: method get_database (line 798) | def get_database(self, name=None, route=None): method add_database (line 808) | def add_database(self, db, name=None, route=None): method add_memory_database (line 827) | def add_memory_database(self, memory_name, name=None, route=None): method remove_database (line 832) | def remove_database(self, name): method setting (line 838) | def setting(self, key): method settings_dict (line 841) | def settings_dict(self): method _metadata_recursive_update (line 845) | def _metadata_recursive_update(self, orig, updated): method get_instance_metadata (line 856) | async def get_instance_metadata(self): method get_database_metadata (line 865) | async def get_database_metadata(self, database_name: str): method get_resource_metadata (line 878) | async def get_resource_metadata(self, database_name: str, resource_nam... method get_column_metadata (line 892) | async def get_column_metadata( method set_instance_metadata (line 909) | async def set_instance_metadata(self, key: str, value: str): method set_database_metadata (line 920) | async def set_database_metadata(self, database_name: str, key: str, va... method set_resource_metadata (line 931) | async def set_resource_metadata( method set_column_metadata (line 944) | async def set_column_metadata( method _get_resource_column_details (line 964) | async def _get_resource_column_details(self, database: str, resource: ... method _column_type_is_applicable (line 977) | def _column_type_is_applicable(ct_cls, column_detail) -> bool: method _validate_column_type_assignment (line 986) | async def _validate_column_type_assignment( method _apply_column_types_config (line 1021) | async def _apply_column_types_config(self): method get_column_type (line 1049) | async def get_column_type(self, database: str, resource: str, column: ... method get_column_types (line 1073) | async def get_column_types(self, database: str, resource: str) -> dict: method set_column_type (line 1094) | async def set_column_type( method remove_column_type (line 1121) | async def remove_column_type( method get_internal_database (line 1131) | def get_internal_database(self): method plugin_config (line 1134) | def plugin_config(self, plugin_name, database=None, table=None, fallba... method _plugin_config_top (line 1143) | def _plugin_config_top(self, plugin_name): method _plugin_config_nested (line 1147) | def _plugin_config_nested(self, plugin_name, database, table=None, fal... method app_css_hash (line 1174) | def app_css_hash(self): method get_canned_queries (line 1182) | async def get_canned_queries(self, database_name, actor): method get_canned_query (line 1199) | async def get_canned_query(self, database_name, query_name, actor): method _prepare_connection (line 1205) | def _prepare_connection(self, conn, database): method add_message (line 1237) | def add_message(self, request, message, type=INFO): method _write_messages_to_response (line 1243) | def _write_messages_to_response(self, request, response): method _show_messages (line 1250) | def _show_messages(self, request): method _crumb_items (line 1259) | async def _crumb_items(self, request, table=None, database=None): method actors_from_ids (line 1296) | async def actors_from_ids( method track_event (line 1306) | async def track_event(self, event: Event): method resource_for_action (line 1313) | def resource_for_action(self, action: str, parent: str | None, child: ... method check_visibility (line 1342) | async def check_visibility( method allowed_resources_sql (line 1373) | async def allowed_resources_sql( method allowed_resources (line 1413) | async def allowed_resources( method allowed (line 1562) | async def allowed( method ensure_permission (line 1629) | async def ensure_permission( method execute (line 1662) | async def execute( method expand_foreign_keys (line 1681) | async def expand_foreign_keys(self, actor, database, table, column, va... method absolute_url (line 1730) | def absolute_url(self, request, path): method _connected_databases (line 1736) | def _connected_databases(self): method _versions (line 1750) | def _versions(self): method _plugins (line 1825) | def _plugins(self, request=None, all=False): method _threads (line 1846) | def _threads(self): method _actor (line 1865) | def _actor(self, request): method _actions (line 1868) | def _actions(self): method table_config (line 1884) | async def table_config(self, database: str, table: str) -> dict: method _register_renderers (line 1894) | def _register_renderers(self): method render_template (line 1915) | async def render_template( method set_actor_cookie (line 2018) | def set_actor_cookie( method delete_actor_cookie (line 2027) | def delete_actor_cookie(self, response: Response): method _asset_urls (line 2030) | async def _asset_urls(self, key, template, context, request, view_name): method _config (line 2070) | def _config(self): method _routes (line 2075) | def _routes(self): method resolve_database (line 2270) | async def resolve_database(self, request): method resolve_table (line 2277) | async def resolve_table(self, request): method resolve_row (line 2289) | async def resolve_row(self, request): method app (line 2299) | def app(self): class DatasetteRouter (line 2338) | class DatasetteRouter: method __init__ (line 2339) | def __init__(self, datasette, routes): method __call__ (line 2343) | async def __call__(self, scope, receive, send): method route_path (line 2352) | async def route_path(self, scope, receive, send, path): method handle_404 (line 2416) | async def handle_404(self, request, send, exception=None): method handle_exception (line 2521) | async def handle_exception(self, request, send, exception): function _cleaner_task_str (line 2541) | def _cleaner_task_str(task): function wrap_view (line 2549) | def wrap_view(view_fn_or_class, datasette): function wrap_view_class (line 2559) | def wrap_view_class(view_class, datasette): function wrap_view_function (line 2585) | def wrap_view_function(view_fn, datasette): function permanent_redirect (line 2612) | def permanent_redirect(path, forward_query_string=False, forward_rest=Fa... function route_pattern_from_filepath (line 2631) | def route_pattern_from_filepath(filepath): class NotFoundExplicit (line 2644) | class NotFoundExplicit(NotFound): class DatasetteClient (line 2648) | class DatasetteClient: method __init__ (line 2655) | def __init__(self, ds): method app (line 2659) | def app(self): method actor_cookie (line 2662) | def actor_cookie(self, actor): method _fix (line 2666) | def _fix(self, path, avoid_path_rewrites=False): method _request (line 2673) | async def _request(self, method, path, skip_permission_checks=False, *... method get (line 2691) | async def get(self, path, skip_permission_checks=False, **kwargs): method options (line 2696) | async def options(self, path, skip_permission_checks=False, **kwargs): method head (line 2701) | async def head(self, path, skip_permission_checks=False, **kwargs): method post (line 2706) | async def post(self, path, skip_permission_checks=False, **kwargs): method put (line 2711) | async def put(self, path, skip_permission_checks=False, **kwargs): method patch (line 2716) | async def patch(self, path, skip_permission_checks=False, **kwargs): method delete (line 2721) | async def delete(self, path, skip_permission_checks=False, **kwargs): method request (line 2726) | async def request(self, method, path, skip_permission_checks=False, **... FILE: datasette/blob_renderer.py function render_blob (line 10) | async def render_blob(datasette, database, rows, columns, request, table... function register_output_renderer (line 56) | def register_output_renderer(): FILE: datasette/cli.py function run_sync (line 46) | def run_sync(coro_func): class Setting (line 66) | class Setting(CompositeParamType): method convert (line 70) | def convert(self, config, param, ctx): function sqlite_extensions (line 95) | def sqlite_extensions(fn): function cli (line 124) | def cli(): function inspect (line 138) | def inspect(files, inspect_file, sqlite_extensions): function inspect_ (line 153) | async def inspect_(files, sqlite_extensions): function publish (line 171) | def publish(): function plugins (line 190) | def plugins(all, requirements, plugins_dir): function package (line 257) | def package( function install (line 323) | def install(packages, upgrade, requirement, editable): function uninstall (line 342) | def uninstall(packages, yes): function serve (line 499) | def serve( function create_token (line 782) | def create_token( function check_databases (line 864) | async def check_databases(ds): FILE: datasette/column_types.py class SQLiteType (line 4) | class SQLiteType(Enum): method from_declared_type (line 12) | def from_declared_type(cls, declared_type: str | None) -> "SQLiteType ... class ColumnType (line 37) | class ColumnType: method __init__ (line 61) | def __init__(self, config=None): method render_cell (line 64) | async def render_cell(self, value, column, table, database, datasette,... method validate (line 71) | async def validate(self, value, datasette): method transform_value (line 78) | async def transform_value(self, value, datasette): FILE: datasette/database.py class Database (line 32) | class Database: method __init__ (line 37) | def __init__( method cached_table_counts (line 70) | def cached_table_counts(self): method color (line 82) | def color(self): method suggest_name (line 87) | def suggest_name(self): method connect (line 95) | def connect(self, write=False): method close (line 128) | def close(self): method execute_write (line 133) | async def execute_write(self, sql, params=None, block=True, request=No... method execute_write_script (line 141) | async def execute_write_script(self, sql, block=True, request=None): method execute_write_many (line 151) | async def execute_write_many(self, sql, params_seq, block=True, reques... method execute_isolated_fn (line 172) | async def execute_isolated_fn(self, fn): method execute_write_fn (line 192) | async def execute_write_fn(self, fn, block=True, transaction=True, req... method _wrap_fn_with_hooks (line 209) | def _wrap_fn_with_hooks(self, fn, request, transaction): method _send_to_write_thread (line 228) | async def _send_to_write_thread( method _execute_writes (line 255) | def _execute_writes(self): method execute_fn (line 298) | async def execute_fn(self, fn): method execute (line 319) | async def execute( method hash (line 373) | def hash(self): method size (line 387) | def size(self): method table_counts (line 401) | async def table_counts(self, limit=10): method mtime_ns (line 424) | def mtime_ns(self): method attached_databases (line 429) | async def attached_databases(self): method table_exists (line 442) | async def table_exists(self, table): method view_exists (line 448) | async def view_exists(self, table): method table_names (line 454) | async def table_names(self): method table_columns (line 460) | async def table_columns(self, table): method table_column_details (line 463) | async def table_column_details(self, table): method primary_keys (line 466) | async def primary_keys(self, table): method fts_table (line 469) | async def fts_table(self, table): method label_column_for_table (line 472) | async def label_column_for_table(self, table): method foreign_keys_for_table (line 520) | async def foreign_keys_for_table(self, table): method hidden_table_names (line 525) | async def hidden_table_names(self): method view_names (line 638) | async def view_names(self): method get_all_foreign_keys (line 642) | async def get_all_foreign_keys(self): method get_table_definition (line 645) | async def get_table_definition(self, table, type_="table"): method get_view_definition (line 666) | async def get_view_definition(self, view): method __repr__ (line 669) | def __repr__(self): function _apply_write_wrapper (line 685) | def _apply_write_wrapper(fn, wrapper_factory): class WriteTask (line 726) | class WriteTask: method __init__ (line 729) | def __init__(self, fn, task_id, reply_queue, isolated_connection, tran... class QueryInterrupted (line 737) | class QueryInterrupted(Exception): method __init__ (line 738) | def __init__(self, e, sql, params): method __str__ (line 743) | def __str__(self): class MultipleValues (line 747) | class MultipleValues(Exception): class Results (line 751) | class Results: method __init__ (line 752) | def __init__(self, rows, truncated, description): method columns (line 758) | def columns(self): method first (line 761) | def first(self): method single_value (line 767) | def single_value(self): method dicts (line 773) | def dicts(self): method __iter__ (line 776) | def __iter__(self): method __len__ (line 779) | def __len__(self): FILE: datasette/default_actions.py function register_actions (line 11) | def register_actions(): FILE: datasette/default_column_types.py class UrlColumnType (line 10) | class UrlColumnType(ColumnType): method render_cell (line 15) | async def render_cell(self, value, column, table, database, datasette,... method validate (line 21) | async def validate(self, value, datasette): class EmailColumnType (line 31) | class EmailColumnType(ColumnType): method render_cell (line 36) | async def render_cell(self, value, column, table, database, datasette,... method validate (line 42) | async def validate(self, value, datasette): class JsonColumnType (line 52) | class JsonColumnType(ColumnType): method render_cell (line 57) | async def render_cell(self, value, column, table, database, datasette,... method validate (line 68) | async def validate(self, value, datasette): function register_column_types (line 80) | def register_column_types(datasette): FILE: datasette/default_magic_parameters.py function header (line 7) | def header(key, request): function actor (line 13) | def actor(key, request): function cookie (line 19) | def cookie(key, request): function now (line 23) | def now(key, request): function random (line 37) | def random(key, request): function register_magic_parameters (line 50) | def register_magic_parameters(): FILE: datasette/default_menu_links.py function menu_links (line 5) | def menu_links(datasette, actor): FILE: datasette/default_permissions/__init__.py function skip_csrf (line 43) | def skip_csrf(scope) -> Optional[bool]: function canned_queries (line 53) | def canned_queries(datasette: "Datasette", database: str, actor) -> dict: FILE: datasette/default_permissions/config.py class ConfigPermissionProcessor (line 21) | class ConfigPermissionProcessor: method __init__ (line 56) | def __init__( method evaluate_allow_block (line 95) | def evaluate_allow_block(self, allow_block: Any) -> Optional[bool]: method is_in_restriction_allowlist (line 101) | def is_in_restriction_allowlist( method add_permissions_rule (line 144) | def add_permissions_rule( method add_allow_block_rule (line 166) | def add_allow_block_rule( method _add_restriction_gate_denies (line 199) | def _add_restriction_gate_denies( method process (line 234) | def process(self) -> Optional[PermissionSQL]: method _process_root_permissions (line 242) | def _process_root_permissions(self) -> None: method _process_databases (line 252) | def _process_databases(self) -> None: method _process_database (line 259) | def _process_database(self, db_name: str, db_config: dict) -> None: method _process_table (line 281) | def _process_table( method _process_query (line 306) | def _process_query( method _process_database_allow_blocks (line 335) | def _process_database_allow_blocks( method _process_root_allow_blocks (line 377) | def _process_root_allow_blocks(self) -> None: function config_permissions_sql (line 423) | async def config_permissions_sql( FILE: datasette/default_permissions/defaults.py function default_allow_sql_check (line 31) | async def default_allow_sql_check( function default_action_permissions_sql (line 50) | async def default_action_permissions_sql( FILE: datasette/default_permissions/helpers.py function get_action_name_variants (line 16) | def get_action_name_variants(datasette: "Datasette", action: str) -> Set... function action_in_list (line 30) | def action_in_list(datasette: "Datasette", action: str, action_list: lis... class PermissionRow (line 36) | class PermissionRow: class PermissionRowCollector (line 45) | class PermissionRowCollector: method __init__ (line 48) | def __init__(self, prefix: str = "row"): method add (line 52) | def add( method to_permission_sql (line 65) | def to_permission_sql(self) -> Optional[PermissionSQL]: FILE: datasette/default_permissions/restrictions.py class ActorRestrictions (line 23) | class ActorRestrictions: method from_actor (line 31) | def from_actor(cls, actor: Optional[dict]) -> Optional["ActorRestricti... method is_action_globally_allowed (line 47) | def is_action_globally_allowed(self, datasette: "Datasette", action: s... method get_allowed_databases (line 51) | def get_allowed_databases(self, datasette: "Datasette", action: str) -... method get_allowed_tables (line 59) | def get_allowed_tables( function actor_restrictions_sql (line 72) | async def actor_restrictions_sql( function restrictions_allow_action (line 142) | def restrictions_allow_action( FILE: datasette/default_permissions/root.py function root_user_permissions_sql (line 19) | async def root_user_permissions_sql( FILE: datasette/default_permissions/tokens.py function register_token_handler (line 20) | def register_token_handler(datasette: "Datasette"): function actor_from_signed_api_token (line 26) | async def actor_from_signed_api_token( FILE: datasette/events.py class Event (line 8) | class Event(ABC): method name (line 10) | def name(self): method properties (line 18) | def properties(self): class LoginEvent (line 26) | class LoginEvent(Event): class LogoutEvent (line 37) | class LogoutEvent(Event): class CreateTokenEvent (line 48) | class CreateTokenEvent(Event): class CreateTableEvent (line 72) | class CreateTableEvent(Event): class DropTableEvent (line 93) | class DropTableEvent(Event): class AlterTableEvent (line 111) | class AlterTableEvent(Event): class InsertRowsEvent (line 135) | class InsertRowsEvent(Event): class UpsertRowsEvent (line 162) | class UpsertRowsEvent(Event): class UpdateRowEvent (line 183) | class UpdateRowEvent(Event): class DeleteRowEvent (line 203) | class DeleteRowEvent(Event): function register_events (line 223) | def register_events(): FILE: datasette/facets.py function load_facet_configs (line 14) | def load_facet_configs(request, table_config): function register_facet_classes (line 59) | def register_facet_classes(): class Facet (line 66) | class Facet: method __init__ (line 71) | def __init__( method get_configs (line 94) | def get_configs(self): method get_querystring_pairs (line 98) | def get_querystring_pairs(self): method get_facet_size (line 103) | def get_facet_size(self): method suggest (line 133) | async def suggest(self): method facet_results (line 136) | async def facet_results(self): method get_columns (line 142) | async def get_columns(self, sql, params=None): class ColumnFacet (line 151) | class ColumnFacet(Facet): method suggest (line 154) | async def suggest(self): method get_row_count (line 208) | async def get_row_count(self): method facet_results (line 219) | async def facet_results(self): class ArrayFacet (line 297) | class ArrayFacet(Facet): method _is_json_array_of_strings (line 300) | def _is_json_array_of_strings(self, json_string): method suggest (line 310) | async def suggest(self): method facet_results (line 380) | async def facet_results(self): class DateFacet (line 468) | class DateFacet(Facet): method suggest (line 471) | async def suggest(self): method facet_results (line 513) | async def facet_results(self): FILE: datasette/filters.py function where_filters (line 10) | def where_filters(request, database, datasette): function search_filters (line 43) | def search_filters(request, database, table, datasette): function through_filters (line 120) | def through_filters(request, database, table, datasette): class FilterArguments (line 163) | class FilterArguments: method __init__ (line 164) | def __init__( class Filter (line 173) | class Filter: method where_clause (line 178) | def where_clause(self, table, column, value, param_counter): method human_clause (line 181) | def human_clause(self, column, value): class TemplatedFilter (line 185) | class TemplatedFilter(Filter): method __init__ (line 186) | def __init__( method where_clause (line 204) | def where_clause(self, table, column, value, param_counter): method human_clause (line 215) | def human_clause(self, column, value): class InFilter (line 226) | class InFilter(Filter): method split_value (line 230) | def split_value(self, value): method where_clause (line 236) | def where_clause(self, table, column, value, param_counter): method human_clause (line 242) | def human_clause(self, column, value): class NotInFilter (line 246) | class NotInFilter(InFilter): method where_clause (line 250) | def where_clause(self, table, column, value, param_counter): method human_clause (line 256) | def human_clause(self, column, value): class Filters (line 260) | class Filters: method __init__ (line 370) | def __init__(self, pairs): method lookups (line 373) | def lookups(self): method human_description_en (line 378) | def human_description_en(self, extra=None): method selections (line 398) | def selections(self): method has_selections (line 408) | def has_selections(self): method build_where_clauses (line 411) | def build_where_clauses(self, table): FILE: datasette/forbidden.py function forbidden (line 5) | def forbidden(datasette, request, message): FILE: datasette/handle_exception.py function handle_exception (line 22) | def handle_exception(datasette, request, exception): FILE: datasette/hookspecs.py function startup (line 9) | def startup(datasette): function asgi_wrapper (line 14) | def asgi_wrapper(datasette): function prepare_connection (line 19) | def prepare_connection(conn, database, datasette): function prepare_jinja2_environment (line 24) | def prepare_jinja2_environment(env, datasette): function extra_css_urls (line 29) | def extra_css_urls(template, database, table, columns, view_name, reques... function extra_js_urls (line 34) | def extra_js_urls(template, database, table, columns, view_name, request... function extra_body_script (line 39) | def extra_body_script( function extra_template_vars (line 46) | def extra_template_vars( function publish_subcommand (line 53) | def publish_subcommand(publish): function render_cell (line 58) | def render_cell( function register_output_renderer (line 73) | def register_output_renderer(datasette): function register_facet_classes (line 78) | def register_facet_classes(): function register_actions (line 83) | def register_actions(datasette): function register_column_types (line 88) | def register_column_types(datasette): function register_routes (line 93) | def register_routes(datasette): function register_commands (line 98) | def register_commands(cli): function actor_from_request (line 103) | def actor_from_request(datasette, request): function actors_from_ids (line 108) | def actors_from_ids(datasette, actor_ids): function jinja2_environment_from_request (line 113) | def jinja2_environment_from_request(datasette, request, env): function filters_from_request (line 118) | def filters_from_request(request, database, table, datasette): function permission_resources_sql (line 129) | def permission_resources_sql(datasette, actor, action): function canned_queries (line 141) | def canned_queries(datasette, database, actor): function register_magic_parameters (line 146) | def register_magic_parameters(datasette): function forbidden (line 151) | def forbidden(datasette, request, message): function menu_links (line 156) | def menu_links(datasette, actor, request): function row_actions (line 161) | def row_actions(datasette, actor, request, database, table, row): function table_actions (line 166) | def table_actions(datasette, actor, database, table, request): function view_actions (line 171) | def view_actions(datasette, actor, database, view, request): function query_actions (line 176) | def query_actions(datasette, actor, database, query_name, request, sql, ... function database_actions (line 181) | def database_actions(datasette, actor, database, request): function homepage_actions (line 186) | def homepage_actions(datasette, actor, request): function skip_csrf (line 191) | def skip_csrf(datasette, scope): function handle_exception (line 196) | def handle_exception(datasette, request, exception): function track_event (line 201) | def track_event(datasette, event): function register_events (line 206) | def register_events(datasette): function top_homepage (line 211) | def top_homepage(datasette, request): function top_database (line 216) | def top_database(datasette, request, database): function top_table (line 221) | def top_table(datasette, request, database, table): function top_row (line 226) | def top_row(datasette, request, database, table, row): function top_query (line 231) | def top_query(datasette, request, database, sql): function top_canned_query (line 236) | def top_canned_query(datasette, request, database, query_name): function register_token_handler (line 241) | def register_token_handler(datasette): function write_wrapper (line 246) | def write_wrapper(datasette, database, request, transaction): FILE: datasette/inspect.py function inspect_hash (line 16) | def inspect_hash(path): function inspect_views (line 29) | def inspect_views(conn): function inspect_tables (line 36) | def inspect_tables(conn, database_metadata): FILE: datasette/permissions.py class SkipPermissions (line 12) | class SkipPermissions: method __enter__ (line 23) | def __enter__(self): method __exit__ (line 27) | def __exit__(self, exc_type, exc_val, exc_tb): class Resource (line 32) | class Resource(ABC): method __init__ (line 49) | def __init__(self, parent: str | None = None, child: str | None = None): method private (line 62) | def private(self) -> bool: method private (line 80) | def private(self, value: bool): method __init_subclass__ (line 84) | def __init_subclass__(cls): method resources_sql (line 108) | async def resources_sql(cls, datasette, actor=None) -> str: class AllowedResource (line 117) | class AllowedResource(NamedTuple): class Action (line 125) | class Action: method takes_parent (line 133) | def takes_parent(self) -> bool: method takes_child (line 143) | def takes_child(self) -> bool: class PermissionSQL (line 160) | class PermissionSQL: method allow (line 183) | def allow(cls, reason: str, _allow: bool = True) -> "PermissionSQL": method deny (line 193) | def deny(cls, reason: str) -> "PermissionSQL": class Permission (line 199) | class Permission: FILE: datasette/plugins.py function before (line 43) | def before(hook_name, hook_impls, kwargs): function after (line 51) | def after(outcome, hook_name, hook_impls, kwargs): function get_plugins (line 93) | def get_plugins(): FILE: datasette/publish/cloudrun.py function publish_subcommand (line 16) | def publish_subcommand(publish): function _ensure_artifact_registry (line 245) | def _ensure_artifact_registry(artifact_project, artifact_region, artifac... function get_existing_services (line 291) | def get_existing_services(): function _validate_memory (line 310) | def _validate_memory(ctx, param, value): FILE: datasette/publish/common.py function add_common_publish_arguments_and_options (line 8) | def add_common_publish_arguments_and_options(subcommand): function fail_if_publish_binary_not_installed (line 75) | def fail_if_publish_binary_not_installed(binary, publish_target, install... function validate_plugin_secret (line 94) | def validate_plugin_secret(ctx, param, value): FILE: datasette/publish/heroku.py function publish_subcommand (line 20) | def publish_subcommand(publish): function temporary_heroku_directory (line 160) | def temporary_heroku_directory( FILE: datasette/renderer.py function convert_specific_columns_to_json (line 12) | def convert_specific_columns_to_json(rows, columns, json_cols): function json_renderer (line 30) | def json_renderer(request, args, data, error, truncated=None): FILE: datasette/resources.py class DatabaseResource (line 6) | class DatabaseResource(Resource): method __init__ (line 12) | def __init__(self, database: str): method resources_sql (line 16) | async def resources_sql(cls, datasette, actor=None) -> str: class TableResource (line 23) | class TableResource(Resource): method __init__ (line 29) | def __init__(self, database: str, table: str): method resources_sql (line 33) | async def resources_sql(cls, datasette, actor=None) -> str: class QueryResource (line 43) | class QueryResource(Resource): method __init__ (line 49) | def __init__(self, database: str, query: str): method resources_sql (line 53) | async def resources_sql(cls, datasette, actor=None) -> str: FILE: datasette/sql_functions.py function prepare_connection (line 6) | def prepare_connection(conn): FILE: datasette/static/cm-editor-6.0.1.bundle.js class e (line 1) | class e{constructor(){}lineAt(t){if(t<0||t>this.length)throw new RangeEr... method constructor (line 1) | constructor(){} method lineAt (line 1) | lineAt(t){if(t<0||t>this.length)throw new RangeError(`Invalid position... method line (line 1) | line(t){if(t<1||t>this.lines)throw new RangeError(`Invalid line number... method replace (line 1) | replace(t,e,i){let s=[];return this.decompose(0,t,s,2),i.length&&i.dec... method append (line 1) | append(t){return this.replace(this.length,this.length,t)} method slice (line 1) | slice(t,e=this.length){let i=[];return this.decompose(t,e,i,0),n.from(... method eq (line 1) | eq(t){if(t==this)return!0;if(t.length!=this.length||t.lines!=this.line... method iter (line 1) | iter(t=1){return new o(this,t)} method iterRange (line 1) | iterRange(t,e=this.length){return new l(this,t,e)} method iterLines (line 1) | iterLines(t,e){let i;if(null==t)i=this.iter();else{null==e&&(e=this.li... method toString (line 1) | toString(){return this.sliceString(0)} method toJSON (line 1) | toJSON(){let t=[];return this.flatten(t),t} method of (line 1) | static of(t){if(0==t.length)throw new RangeError("A document must have... class i (line 1) | class i extends e{constructor(t,e=function(t){let e=-1;for(let i of t)e+... method constructor (line 1) | constructor(t,e=function(t){let e=-1;for(let i of t)e+=i.length+1;retu... method lines (line 1) | get lines(){return this.text.length} method children (line 1) | get children(){return null} method lineInner (line 1) | lineInner(t,e,i,n){for(let s=0;;s++){let r=this.text[s],o=n+r.length;i... method decompose (line 1) | decompose(t,e,n,o){let l=t<=0&&e>=this.length?this:new i(r(this.text,t... method replace (line 1) | replace(t,e,o){if(!(o instanceof i))return super.replace(t,e,o);let l=... method sliceString (line 1) | sliceString(t,e=this.length,i="\n"){let n="";for(let s=0,r=0;s<=e&&r0... method from (line 1) | static from(t,e=t.reduce(((t,e)=>t+e.length+1),-1)){let s=0;for(let e ... function s (line 1) | function s(t,e,i=0,n=1e9){for(let s=0,r=0,o=!0;ri?... method nextInner (line 1) | nextInner(t,e){if(e<0?this.pos<=this.from:this.pos>=this.to)return thi... method next (line 1) | next(t=0){return t<0?t=Math.max(t,this.from-this.pos):t>0&&(t=Math.min... method lineBreak (line 1) | get lineBreak(){return this.cursor.lineBreak&&""!=this.value} class a (line 1) | class a{constructor(t){this.inner=t,this.afterBreak=!0,this.value="",thi... method constructor (line 1) | constructor(t){this.inner=t,this.afterBreak=!0,this.value="",this.done... method next (line 1) | next(t=0){let{done:e,lineBreak:i,value:n}=this.inner.next(t);return e?... method lineBreak (line 1) | get lineBreak(){return!1} class h (line 1) | class h{constructor(t,e,i,n){this.from=t,this.to=e,this.number=i,this.te... method constructor (line 1) | constructor(t,e,i,n){this.from=t,this.to=e,this.number=i,this.text=n} method length (line 1) | get length(){return this.to-this.from} function u (line 1) | function u(t){for(let e=1;et)return c[e-1]<=t;ret... function f (line 1) | function f(t){return t>=127462&&t<=127487} function d (line 1) | function d(t,e,i=!0,n=!0){return(i?p:m)(t,e,n)} function p (line 1) | function p(t,e,i){if(e==t.length)return e;e&&g(t.charCodeAt(e))&&v(t.cha... function m (line 1) | function m(t,e,i){for(;e>0;){let n=p(t,e-2,i);if(n=56320&&t<57344} function v (line 1) | function v(t){return t>=55296&&t<56320} function w (line 1) | function w(t,e){let i=t.charCodeAt(e);if(!v(i)||e+1==t.length)return i;l... function y (line 1) | function y(t){return t<=65535?String.fromCharCode(t):(t-=65536,String.fr... function b (line 1) | function b(t){return t<65536?1:2} class S (line 1) | class S{constructor(t){this.sections=t}get length(){let t=0;for(let e=0;... method constructor (line 1) | constructor(t){this.sections=t} method length (line 1) | get length(){let t=0;for(let e=0;e"numbe... method create (line 1) | static create(t){return new S(t)} class C (line 1) | class C extends S{constructor(t,e){super(t),this.inserted=e}apply(t){if(... method constructor (line 1) | constructor(t,e){super(t),this.inserted=e} method apply (line 1) | apply(t){if(this.length!=t.length)throw new RangeError("Applying chang... method mapDesc (line 1) | mapDesc(t,e=!1){return D(this,t,e,!0)} method invert (line 1) | invert(t){let i=this.sections.slice(),n=[];for(let s=0,r=0;s=0&&i<=0&... function O (line 1) | function O(t,i,n){if(0==n.length)return;let s=i.length-2>>1;if(s>1;return i>=t.length?e... method textBit (line 1) | textBit(t){let{inserted:i}=this.set,n=this.i-2>>1;return n>=i.length&&... method forward (line 1) | forward(t){t==this.len?this.next():(this.len-=t,this.off+=t)} method forward2 (line 1) | forward2(t){-1==this.ins?this.forward(t):t==this.ins?this.next():(this... class R (line 1) | class R{constructor(t,e,i){this.from=t,this.to=e,this.flags=i}get anchor... method constructor (line 1) | constructor(t,e,i){this.from=t,this.to=e,this.flags=i} method anchor (line 1) | get anchor(){return 16&this.flags?this.to:this.from} method head (line 1) | get head(){return 16&this.flags?this.from:this.to} method empty (line 1) | get empty(){return this.from==this.to} method assoc (line 1) | get assoc(){return 4&this.flags?-1:8&this.flags?1:0} method bidiLevel (line 1) | get bidiLevel(){let t=3&this.flags;return 3==t?null:t} method goalColumn (line 1) | get goalColumn(){let t=this.flags>>5;return 33554431==t?void 0:t} method map (line 1) | map(t,e=-1){let i,n;return this.empty?i=n=t.mapPos(this.from,e):(i=t.m... method extend (line 1) | extend(t,e=t){if(t<=this.anchor&&e>=this.anchor)return E.range(t,e);le... method eq (line 1) | eq(t){return this.anchor==t.anchor&&this.head==t.head} method toJSON (line 1) | toJSON(){return{anchor:this.anchor,head:this.head}} method fromJSON (line 1) | static fromJSON(t){if(!t||"number"!=typeof t.anchor||"number"!=typeof ... method create (line 1) | static create(t,e,i){return new R(t,e,i)} class E (line 1) | class E{constructor(t,e){this.ranges=t,this.mainIndex=e}map(t,e=-1){retu... method constructor (line 1) | constructor(t,e){this.ranges=t,this.mainIndex=e} method map (line 1) | map(t,e=-1){return t.empty?this:E.create(this.ranges.map((i=>i.map(t,e... method eq (line 1) | eq(t){if(this.ranges.length!=t.ranges.length||this.mainIndex!=t.mainIn... method main (line 1) | get main(){return this.ranges[this.mainIndex]} method asSingle (line 1) | asSingle(){return 1==this.ranges.length?this:new E([this.main],0)} method addRange (line 1) | addRange(t,e=!0){return E.create([t].concat(this.ranges),e?0:this.main... method replaceRange (line 1) | replaceRange(t,e=this.mainIndex){let i=this.ranges.slice();return i[e]... method toJSON (line 1) | toJSON(){return{ranges:this.ranges.map((t=>t.toJSON())),main:this.main... method fromJSON (line 1) | static fromJSON(t){if(!t||!Array.isArray(t.ranges)||"number"!=typeof t... method single (line 1) | static single(t,e=t){return new E([E.range(t,e)],0)} method create (line 1) | static create(t,e=0){if(0==t.length)throw new RangeError("A selection ... method cursor (line 1) | static cursor(t,e=0,i,n){return R.create(t,t,(0==e?0:e<0?4:8)|(null==i... method range (line 1) | static range(t,e,i){let n=(null!=i?i:33554431)<<5;return et.from-e.from)),e=t... function B (line 1) | function B(t,e){for(let i of t.ranges)if(i.to>e)throw new RangeError("Se... class N (line 1) | class N{constructor(t,e,i,n,s){this.combine=t,this.compareInput=e,this.c... method constructor (line 1) | constructor(t,e,i,n,s){this.combine=t,this.compareInput=e,this.compare... method define (line 1) | static define(t={}){return new N(t.combine||(t=>t),t.compareInput||((t... method of (line 1) | of(t){return new V([],this,0,t)} method compute (line 1) | compute(t,e){if(this.isStatic)throw new Error("Can't compute a static ... method computeN (line 1) | computeN(t,e){if(this.isStatic)throw new Error("Can't compute a static... method from (line 1) | from(t,e){return e||(e=t=>t),this.compute([t],(i=>e(i.field(t))))} function I (line 1) | function I(t,e){return t==e||t.length==e.length&&t.every(((t,i)=>t===e[i... class V (line 1) | class V{constructor(t,e,i,n){this.dependencies=t,this.facet=e,this.type=... method constructor (line 1) | constructor(t,e,i,n){this.dependencies=t,this.facet=e,this.type=i,this... method dynamicSlot (line 1) | dynamicSlot(t){var e;let i=this.value,n=this.facet.compareInput,s=this... function W (line 1) | function W(t,e,i){if(t.length!=e.length)return!1;for(let n=0;nt[e.id])),s=i.map((t=>t.type)),r=n.fil... class q (line 1) | class q{constructor(t,e,i,n,s){this.id=t,this.createF=e,this.updateF=i,t... method constructor (line 1) | constructor(t,e,i,n,s){this.id=t,this.createF=e,this.updateF=i,this.co... method define (line 1) | static define(t){let e=new q(L++,t.create,t.update,t.compare||((t,e)=>... method create (line 1) | create(t){let e=t.facet(F).find((t=>t.field==this));return((null==e?vo... method slot (line 1) | slot(t){let e=t[this.id]>>1;return{create:t=>(t.values[e]=this.create(... method init (line 1) | init(t){return[this,F.of({field:this,create:t})]} method extension (line 1) | get extension(){return this} function Q (line 1) | function Q(t){return e=>new G(e,t)} class G (line 1) | class G{constructor(t,e){this.inner=t,this.prec=e}} method constructor (line 1) | constructor(t,e){this.inner=t,this.prec=e} class J (line 1) | class J{of(t){return new X(this,t)}reconfigure(t){return J.reconfigure.o... method of (line 1) | of(t){return new X(this,t)} method reconfigure (line 1) | reconfigure(t){return J.reconfigure.of({compartment:this,extension:t})} method get (line 1) | get(t){return t.config.compartments.get(this)} class X (line 1) | class X{constructor(t,e){this.compartment=t,this.inner=e}} method constructor (line 1) | constructor(t,e){this.compartment=t,this.inner=e} class Z (line 1) | class Z{constructor(t,e,i,n,s,r){for(this.base=t,this.compartments=e,thi... method constructor (line 1) | constructor(t,e,i,n,s,r){for(this.base=t,this.compartments=e,this.dyna... method staticFacet (line 1) | staticFacet(t){let e=this.address[t.id];return null==e?t.default:this.... method resolve (line 1) | static resolve(t,e,i){let n=[],s=Object.create(null),r=new Map;for(let... function Y (line 1) | function Y(t,e){if(1&e)return 2;let i=e>>1,n=t.status[i];if(4==n)throw n... function tt (line 1) | function tt(t,e){return 1&e?t.config.staticValues[e>>1]:t.values[e>>1]} class at (line 1) | class at{constructor(t,e){this.type=t,this.value=e}static define(){retur... method constructor (line 1) | constructor(t,e){this.type=t,this.value=e} method define (line 1) | static define(){return new ht} class ht (line 1) | class ht{of(t){return new at(this,t)}} method of (line 1) | of(t){return new at(this,t)} class ct (line 1) | class ct{constructor(t){this.map=t}of(t){return new ut(this,t)}} method constructor (line 1) | constructor(t){this.map=t} method of (line 1) | of(t){return new ut(this,t)} class ut (line 1) | class ut{constructor(t,e){this.type=t,this.value=e}map(t){let e=this.typ... method constructor (line 1) | constructor(t,e){this.type=t,this.value=e} method map (line 1) | map(t){let e=this.type.map(this.value,t);return void 0===e?void 0:e==t... method is (line 1) | is(t){return this.type==t} method define (line 1) | static define(t={}){return new ct(t.map||(t=>t))} method mapEffects (line 1) | static mapEffects(t,e){if(!t.length)return t;let i=[];for(let n of t){... class ft (line 1) | class ft{constructor(t,e,i,n,s,r){this.startState=t,this.changes=e,this.... method constructor (line 1) | constructor(t,e,i,n,s,r){this.startState=t,this.changes=e,this.selecti... method create (line 1) | static create(t,e,i,n,s,r){return new ft(t,e,i,n,s,r)} method newDoc (line 1) | get newDoc(){return this._doc||(this._doc=this.changes.apply(this.star... method newSelection (line 1) | get newSelection(){return this.selection||this.startState.selection.ma... method state (line 1) | get state(){return this._state||this.startState.applyTransaction(this)... method annotation (line 1) | annotation(t){for(let e of this.annotations)if(e.type==t)return e.value} method docChanged (line 1) | get docChanged(){return!this.changes.empty} method reconfigured (line 1) | get reconfigured(){return this.startState.config!=this.state.config} method isUserEvent (line 1) | isUserEvent(t){let e=this.annotation(ft.userEvent);return!(!e||!(e==t|... function dt (line 1) | function dt(t,e){let i=[];for(let n=0,s=0;;){let r,o;if(n{if(!/\S/.test(e))return yt.Space;if(function(t... class St (line 1) | class St{constructor(t,e,i,n,s,r){this.config=t,this.doc=e,this.selectio... method constructor (line 1) | constructor(t,e,i,n,s,r){this.config=t,this.doc=e,this.selection=i,thi... method field (line 1) | field(t,e=!0){let i=this.config.address[t.id];if(null!=i)return Y(this... method update (line 1) | update(...t){return gt(this,t,!0)} method applyTransaction (line 1) | applyTransaction(t){let e,i=this.config,{base:n,compartments:s}=i;for(... method replaceSelection (line 1) | replaceSelection(t){return"string"==typeof t&&(t=this.toText(t)),this.... method changeByRange (line 1) | changeByRange(t){let e=this.selection,i=t(e.ranges[0]),n=this.changes(... method changes (line 1) | changes(t=[]){return t instanceof C?t:C.of(t,this.doc.length,this.face... method toText (line 1) | toText(t){return e.of(t.split(this.facet(St.lineSeparator)||x))} method sliceDoc (line 1) | sliceDoc(t=0,e=this.doc.length){return this.doc.sliceString(t,e,this.l... method facet (line 1) | facet(t){let e=this.config.address[t.id];return null==e?t.default:(Y(t... method toJSON (line 1) | toJSON(t){let e={doc:this.sliceDoc(),selection:this.selection.toJSON()... method fromJSON (line 1) | static fromJSON(t,e={},i){if(!t||"string"!=typeof t.doc)throw new Rang... method create (line 1) | static create(t={}){let i=Z.resolve(t.extensions||[],new Map),n=t.doc ... method tabSize (line 1) | get tabSize(){return this.facet(St.tabSize)} method lineBreak (line 1) | get lineBreak(){return this.facet(St.lineSeparator)||"\n"} method readOnly (line 1) | get readOnly(){return this.facet(lt)} method phrase (line 1) | phrase(t,...e){for(let e of this.facet(St.phrases))if(Object.prototype... method languageDataAt (line 1) | languageDataAt(t,e,i=-1){let n=[];for(let s of this.facet(et))for(let ... method charCategorizer (line 1) | charCategorizer(t){return kt(this.languageDataAt("wordChars",t).join("... method wordAt (line 1) | wordAt(t){let{text:e,from:i,length:n}=this.doc.lineAt(t),s=this.charCa... function Ct (line 1) | function Ct(t,e,i={}){let n={};for(let e of t)for(let t of Object.keys(e... method compare (line 1) | compare(t,e){let i=Object.keys(t),n=Object.keys(e);return i.length==n.le... class At (line 1) | class At{eq(t){return this==t}range(t,e=t){return Ot.create(t,e,this)}} method eq (line 1) | eq(t){return this==t} method range (line 1) | range(t,e=t){return Ot.create(t,e,this)} method constructor (line 1) | constructor(t,e,i){this.from=t,this.to=e,this.value=i} method create (line 1) | static create(t,e,i){return new Ot(t,e,i)} function Mt (line 1) | function Mt(t,e){return t.from-e.from||t.value.startSide-e.value.startSide} class Dt (line 1) | class Dt{constructor(t,e,i,n){this.from=t,this.to=e,this.value=i,this.ma... method constructor (line 1) | constructor(t,e,i,n){this.from=t,this.to=e,this.value=i,this.maxPoint=n} method length (line 1) | get length(){return this.to[this.to.length-1]} method findIndex (line 1) | findIndex(t,e,i,n=0){let s=i?this.to:this.from;for(let r=n,o=s.length;... method between (line 1) | between(t,e,i,n){for(let s=this.findIndex(e,-1e9,!0),r=this.findIndex(... method map (line 1) | map(t,e){let i=[],n=[],s=[],r=-1,o=-1;for(let l=0;lt.maxPoint>0||!t.isEmp... method eq (line 1) | static eq(t,e,i=0,n){null==n&&(n=999999999);let s=t.filter((t=>!t.isEm... method spans (line 1) | static spans(t,e,i,n,s=-1){let r=new Nt(t,null,s).goto(e),o=e,l=r.open... method of (line 1) | static of(t,e=!1){let i=new Pt;for(let n of t instanceof Ot?[t]:e?func... class Pt (line 1) | class Pt{constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-... method constructor (line 1) | constructor(){this.chunks=[],this.chunkPos=[],this.chunkStart=-1,this.... method finishChunk (line 1) | finishChunk(t){this.chunks.push(new Dt(this.from,this.to,this.value,th... method add (line 1) | add(t,e,i){this.addInner(t,e,i)||(this.nextLayer||(this.nextLayer=new ... method addInner (line 1) | addInner(t,e,i){let n=t-this.lastTo||i.startSide-this.last.endSide;if(... method addChunk (line 1) | addChunk(t,e){if((t-this.lastTo||e.value[0].startSide-this.last.endSid... method finish (line 1) | finish(){return this.finishInner(Tt.empty)} method finishInner (line 1) | finishInner(t){if(this.from.length&&this.finishChunk(!1),0==this.chunk... function Rt (line 1) | function Rt(t,e,i){let n=new Map;for(let e of t)for(let t=0;t=t.length)break;l... class Nt (line 1) | class Nt{constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo... method constructor (line 1) | constructor(t,e,i){this.minPoint=i,this.active=[],this.activeTo=[],thi... method goto (line 1) | goto(t,e=-1e9){return this.cursor.goto(t,e),this.active.length=this.ac... method forward (line 1) | forward(t,e){for(;this.minActive>-1&&(this.activeTo[this.minActive]-t|... method removeActive (line 1) | removeActive(t){Wt(this.active,t),Wt(this.activeTo,t),Wt(this.activeRa... method addActive (line 1) | addActive(t){let e=0,{value:i,to:n,rank:s}=this.cursor;for(;e=0&&this.activeT... function It (line 1) | function It(t,e,i,n,s,r){t.goto(e),i.goto(n);let o=n+s,l=n,a=n-e;for(;;)... function Vt (line 1) | function Vt(t,e){if(t.length!=e.length)return!1;for(let i=0;i=e;i--)t[i+1]=t[i];t[e]=i} function Ht (line 1) | function Ht(t,e){let i=-1,n=1e9;for(let s=0;s=e)return n;if(n==t.length)... class $t (line 1) | class $t{constructor(t,e){this.rules=[];let{finish:i}=e||{};function n(t... method constructor (line 1) | constructor(t,e){this.rules=[];let{finish:i}=e||{};function n(t){retur... method getRules (line 1) | getRules(){return this.rules.join("\n")} method newName (line 1) | static newName(){let t=Ut[_t]||1;return Ut[_t]=t+1,"ΝΌ"+t.toString(36)} method mount (line 1) | static mount(t,e){(t[jt]||new Kt(t)).mount(Array.isArray(e)?e:[e])} class Kt (line 1) | class Kt{constructor(t){if(!t.head&&t.adoptedStyleSheets&&"undefined"!=t... method constructor (line 1) | constructor(t){if(!t.head&&t.adoptedStyleSheets&&"undefined"!=typeof C... method mount (line 1) | mount(t){let e=this.sheet,i=0,n=0;for(let s=0;sthis.pos||t==this.pos&&(e>0||0==this.i||th... function Oe (line 1) | function Oe(t,e,i,n,s,r,o,l,a){let{children:h}=t,c=h.length?h[e]:null,u=... function Me (line 1) | function Me(t,e,i,n,s,r){let o=t.childCursor(),{i:l,off:a}=o.findPos(i,1... class He (line 1) | class He extends Se{constructor(t){super(),this.text=t}get length(){retu... method constructor (line 1) | constructor(t){super(),this.text=t} method length (line 1) | get length(){return this.text.length} method createDOM (line 1) | createDOM(t){this.setDOM(t||document.createTextNode(this.text))} method sync (line 1) | sync(t){this.dom||this.createDOM(),this.dom.nodeValue!=this.text&&(t&&... method reuseDOM (line 1) | reuseDOM(t){3==t.nodeType&&this.createDOM(t)} method merge (line 1) | merge(t,e,i){return(!i||i instanceof He&&!(this.length-(e-t)+i.length>... method split (line 1) | split(t){let e=new He(this.text.slice(t));return this.text=this.text.s... method localPosFromDOM (line 1) | localPosFromDOM(t,e){return t==this.dom?e:e?this.text.length:0} method domAtPos (line 1) | domAtPos(t){return new xe(this.dom,t)} method domBoundsAround (line 1) | domBoundsAround(t,e,i){return{from:i,to:i+this.length,startDOM:this.do... method coordsAt (line 1) | coordsAt(t,e){return qe(this.dom,t,e)} class Fe (line 1) | class Fe extends Se{constructor(t,e=[],i=0){super(),this.mark=t,this.chi... method constructor (line 1) | constructor(t,e=[],i=0){super(),this.mark=t,this.children=e,this.lengt... method setAttrs (line 1) | setAttrs(t){if(be(t),this.mark.class&&(t.className=this.mark.class),th... method reuseDOM (line 1) | reuseDOM(t){t.nodeName==this.mark.tagName.toUpperCase()&&(this.setDOM(... method sync (line 1) | sync(t){this.dom?4&this.dirty&&this.setAttrs(this.dom):this.setDOM(thi... method merge (line 1) | merge(t,e,i,n,s,r){return(!i||!(!(i instanceof Fe&&i.mark.eq(this.mark... method split (line 1) | split(t){let e=[],i=0,n=-1,s=0;for(let r of this.children){let o=i+r.l... method domAtPos (line 1) | domAtPos(t){return Ke(this,t)} method coordsAt (line 1) | coordsAt(t,e){return Je(this,t,e)} function qe (line 1) | function qe(t,e,i){let n=t.nodeValue.length;e>n&&(e=n);let s=e,r=e,o=0;0... class _e (line 1) | class _e extends Se{constructor(t,e,i){super(),this.widget=t,this.length... method constructor (line 1) | constructor(t,e,i){super(),this.widget=t,this.length=e,this.side=i,thi... method create (line 1) | static create(t,e,i){return new(t.customView||_e)(t,e,i)} method split (line 1) | split(t){let e=_e.create(this.widget,this.length-t,this.side);return t... method sync (line 1) | sync(){this.dom&&this.widget.updateDOM(this.dom)||(this.dom&&this.prev... method getSide (line 1) | getSide(){return this.side} method merge (line 1) | merge(t,e,i,n,s,r){return!(i&&(!(i instanceof _e&&this.widget.compare(... method become (line 1) | become(t){return t.length==this.length&&t instanceof _e&&t.side==this.... method ignoreMutation (line 1) | ignoreMutation(){return!0} method ignoreEvent (line 1) | ignoreEvent(t){return this.widget.ignoreEvent(t)} method overrideDOMText (line 1) | get overrideDOMText(){if(0==this.length)return e.empty;let t=this;for(... method domAtPos (line 1) | domAtPos(t){return 0==t?xe.before(this.dom):xe.after(this.dom,t==this.... method domBoundsAround (line 1) | domBoundsAround(){return null} method coordsAt (line 1) | coordsAt(t,e){let i=this.dom.getClientRects(),n=null;if(!i.length)retu... method isEditable (line 1) | get isEditable(){return!1} method destroy (line 1) | destroy(){super.destroy(),this.dom&&this.widget.destroy(this.dom)} class je (line 1) | class je extends _e{domAtPos(t){let{topView:e,text:i}=this.widget;return... method domAtPos (line 1) | domAtPos(t){let{topView:e,text:i}=this.widget;return e?Ue(t,0,e,i,((t,... method sync (line 1) | sync(){this.setDOM(this.widget.toDOM())} method localPosFromDOM (line 1) | localPosFromDOM(t,e){let{topView:i,text:n}=this.widget;return i?$e(t,e... method ignoreMutation (line 1) | ignoreMutation(){return!1} method overrideDOMText (line 1) | get overrideDOMText(){return null} method coordsAt (line 1) | coordsAt(t,e){let{topView:i,text:n}=this.widget;return i?Ue(t,e,i,n,((... method destroy (line 1) | destroy(){var t;super.destroy(),null===(t=this.widget.topView)||void 0... method isEditable (line 1) | get isEditable(){return!0} method canReuseDOM (line 1) | canReuseDOM(){return!0} function Ue (line 1) | function Ue(t,e,i,n,s,r){if(i instanceof Fe){for(let o=i.dom.firstChild;... function $e (line 1) | function $e(t,e,i,n){if(i instanceof Fe)for(let s of i.children){let i=0... class Qe (line 1) | class Qe extends Se{constructor(t){super(),this.side=t}get length(){retu... method constructor (line 1) | constructor(t){super(),this.side=t} method length (line 1) | get length(){return 0} method merge (line 1) | merge(){return!1} method become (line 1) | become(t){return t instanceof Qe&&t.side==this.side} method split (line 1) | split(){return new Qe(this.side)} method sync (line 1) | sync(){if(!this.dom){let t=document.createElement("img");t.className="... method getSide (line 1) | getSide(){return this.side} method domAtPos (line 1) | domAtPos(t){return xe.before(this.dom)} method localPosFromDOM (line 1) | localPosFromDOM(){return 0} method domBoundsAround (line 1) | domBoundsAround(){return null} method coordsAt (line 1) | coordsAt(t){let e=this.dom.getBoundingClientRect(),i=function(t,e){let... method overrideDOMText (line 1) | get overrideDOMText(){return e.empty} function Ke (line 1) | function Ke(t,e){let i=t.dom,{children:n}=t,s=0;for(let t=0;s0&&e instanceof Fe&&s.length&&... function Je (line 1) | function Je(t,e,i){let n=null,s=-1,r=null,o=-1;!function t(e,i){for(let ... function Xe (line 1) | function Xe(t,e){for(let i in t)"class"==i&&e.class?e.class+=" "+t.class... function Ze (line 1) | function Ze(t,e){if(t==e)return!0;if(!t||!e)return!1;let i=Object.keys(t... function Ye (line 1) | function Ye(t,e,i){let n=null;if(e)for(let s in e)i&&s in i||t.removeAtt... class ti (line 1) | class ti{eq(t){return!1}updateDOM(t){return!1}compare(t){return this==t|... method eq (line 1) | eq(t){return!1} method updateDOM (line 1) | updateDOM(t){return!1} method compare (line 1) | compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)} method estimatedHeight (line 1) | get estimatedHeight(){return-1} method ignoreEvent (line 1) | ignoreEvent(t){return!0} method customView (line 1) | get customView(){return null} method destroy (line 1) | destroy(t){} class ii (line 1) | class ii extends At{constructor(t,e,i,n){super(),this.startSide=t,this.e... method constructor (line 1) | constructor(t,e,i,n){super(),this.startSide=t,this.endSide=e,this.widg... method heightRelevant (line 1) | get heightRelevant(){return!1} method mark (line 1) | static mark(t){return new ni(t)} method widget (line 1) | static widget(t){let e=t.side||0,i=!!t.block;return e+=i?e>0?3e8:-4e8:... method replace (line 1) | static replace(t){let e,i,n=!!t.block;if(t.isBlockGap)e=-5e8,i=4e8;els... method line (line 1) | static line(t){return new si(t)} method set (line 1) | static set(t,e=!1){return Tt.of(t,e)} method hasHeight (line 1) | hasHeight(){return!!this.widget&&this.widget.estimatedHeight>-1} class ni (line 1) | class ni extends ii{constructor(t){let{start:e,end:i}=oi(t);super(e?-1:5... method constructor (line 1) | constructor(t){let{start:e,end:i}=oi(t);super(e?-1:5e8,i?1:-6e8,null,t... method eq (line 1) | eq(t){return this==t||t instanceof ni&&this.tagName==t.tagName&&this.c... method range (line 1) | range(t,e=t){if(t>=e)throw new RangeError("Mark decorations may not be... class si (line 1) | class si extends ii{constructor(t){super(-2e8,-2e8,null,t)}eq(t){return ... method constructor (line 1) | constructor(t){super(-2e8,-2e8,null,t)} method eq (line 1) | eq(t){return t instanceof si&&Ze(this.spec.attributes,t.spec.attributes)} method range (line 1) | range(t,e=t){if(e!=t)throw new RangeError("Line decoration ranges must... class ri (line 1) | class ri extends ii{constructor(t,e,i,n,s,r){super(e,i,s,t),this.block=n... method constructor (line 1) | constructor(t,e,i,n,s,r){super(e,i,s,t),this.block=n,this.isReplace=r,... method type (line 1) | get type(){return this.startSidee||t==e&&this.startSide>0&&this.end... function oi (line 1) | function oi(t,e=!1){let{inclusiveStart:i,inclusiveEnd:n}=t;return null==... function li (line 1) | function li(t,e,i,n=0){let s=i.length-1;s>=0&&i[s]+n>=t?i[s]=Math.max(i[... class ai (line 1) | class ai extends Se{constructor(){super(...arguments),this.children=[],t... method constructor (line 1) | constructor(){super(...arguments),this.children=[],this.length=0,this.... method merge (line 1) | merge(t,e,i,n,s,r){if(i){if(!(i instanceof ai))return!1;this.dom||i.tr... method split (line 1) | split(t){let e=new ai;if(e.breakAfter=this.breakAfter,0==this.length)r... method transferDOM (line 1) | transferDOM(t){this.dom&&(this.markDirty(),t.setDOM(this.dom),t.prevAt... method setDeco (line 1) | setDeco(t){Ze(this.attrs,t)||(this.dom&&(this.prevAttrs=this.attrs,thi... method append (line 1) | append(t,e){Ge(this,t,e)} method addLineDeco (line 1) | addLineDeco(t){let e=t.spec.attributes,i=t.spec.class;e&&(this.attrs=X... method domAtPos (line 1) | domAtPos(t){return Ke(this,t)} method reuseDOM (line 1) | reuseDOM(t){"DIV"==t.nodeName&&(this.setDOM(t),this.dirty|=6)} method sync (line 1) | sync(t){var e;this.dom?4&this.dirty&&(be(this.dom),this.dom.className=... method measureTextSize (line 1) | measureTextSize(){if(0==this.children.length||this.length>20)return nu... method coordsAt (line 1) | coordsAt(t,e){return Je(this,t,e)} method become (line 1) | become(t){return!1} method type (line 1) | get type(){return ei.Text} method find (line 1) | static find(t,e){for(let i=0,n=0;i0;){if(this.textOff==this.text.length){let{val... method span (line 1) | span(t,e,i,n){this.buildText(e-t,i,n),this.pos=e,this.openStart<0&&(th... method point (line 1) | point(t,e,i,n,s,r){if(this.disallowBlockEffectsFor[r]&&i instanceof ri... method build (line 1) | static build(t,e,i,n,s){let r=new ci(t,e,i,s);return r.openEnd=Tt.span... function ui (line 1) | function ui(t,e){for(let i of e)t=new Fe(i,[t],t.length);return t} class fi (line 1) | class fi extends ti{constructor(t){super(),this.tag=t}eq(t){return t.tag... method constructor (line 1) | constructor(t){super(),this.tag=t} method eq (line 1) | eq(t){return t.tag==this.tag} method toDOM (line 1) | toDOM(){return document.createElement(this.tag)} method updateDOM (line 1) | updateDOM(t){return t.nodeName.toLowerCase()==this.tag} class xi (line 1) | class xi{constructor(t,e="nearest",i="nearest",n=5,s=5){this.range=t,thi... method constructor (line 1) | constructor(t,e="nearest",i="nearest",n=5,s=5){this.range=t,this.y=e,t... method map (line 1) | map(t){return t.empty?this:new xi(this.range.map(t),this.y,this.x,this... function Si (line 1) | function Si(t,e,i){let n=t.facet(gi);n.length?n[0](e):window.onerror?win... class Mi (line 1) | class Mi{constructor(t,e,i,n){this.id=t,this.create=e,this.domEventHandl... method constructor (line 1) | constructor(t,e,i,n){this.id=t,this.create=e,this.domEventHandlers=i,t... method define (line 1) | static define(t,e){const{eventHandlers:i,provide:n,decorations:s}=e||{... method fromClass (line 1) | static fromClass(t,e){return Mi.define((e=>new t(e)),e)} class Di (line 1) | class Di{constructor(t){this.spec=t,this.mustUpdate=null,this.value=null... method constructor (line 1) | constructor(t){this.spec=t,this.mustUpdate=null,this.value=null} method update (line 1) | update(t){if(this.value){if(this.mustUpdate){let t=this.mustUpdate;if(... method destroy (line 1) | destroy(t){var e;if(null===(e=this.value)||void 0===e?void 0:e.destroy... method deactivate (line 1) | deactivate(){this.spec=this.value=null} class Ni (line 1) | class Ni{constructor(t,e,i,n){this.fromA=t,this.toA=e,this.fromB=i,this.... method constructor (line 1) | constructor(t,e,i,n){this.fromA=t,this.toA=e,this.fromB=i,this.toB=n} method join (line 1) | join(t){return new Ni(Math.min(this.fromA,t.fromA),Math.max(this.toA,t... method addToSet (line 1) | addToSet(t){let e=t.length,i=this;for(;e>0;e--){let n=t[e-1];if(!(n.fr... method extendWithRanges (line 1) | static extendWithRanges(t,e){if(0==e.length)return t;let i=[];for(let ... class Ii (line 1) | class Ii{constructor(t,e,i){this.view=t,this.state=e,this.transactions=i... method constructor (line 1) | constructor(t,e,i){this.view=t,this.state=e,this.transactions=i,this.f... method create (line 1) | static create(t,e,i){return new Ii(t,e,i)} method viewportChanged (line 1) | get viewportChanged(){return(4&this.flags)>0} method heightChanged (line 1) | get heightChanged(){return(2&this.flags)>0} method geometryChanged (line 1) | get geometryChanged(){return this.docChanged||(10&this.flags)>0} method focusChanged (line 1) | get focusChanged(){return(1&this.flags)>0} method docChanged (line 1) | get docChanged(){return!this.changes.empty} method selectionSet (line 1) | get selectionSet(){return this.transactions.some((t=>t.selection))} method empty (line 1) | get empty(){return 0==this.flags&&0==this.transactions.length} function Hi (line 1) | function Hi(t){let e=[];for(let i=0;i0&&e.length&&(e.every(((... method updateInner (line 1) | updateInner(t,e){this.view.viewState.mustMeasureContent=!0,this.update... method updateChildren (line 1) | updateChildren(t,e){let i=this.childCursor(e);for(let e=t.length-1;;e-... method updateSelection (line 1) | updateSelection(t=!1,e=!1){if(!t&&this.view.observer.selectionRange.fo... method enforceCursorAssoc (line 1) | enforceCursorAssoc(){if(this.compositionDeco.size)return;let{view:t}=t... method mayControlSelection (line 1) | mayControlSelection(){let t=this.view.root.activeElement;return t==thi... method nearest (line 1) | nearest(t){for(let e=t;e;){let t=Se.get(e);if(t&&t.rootView==this)retu... method posFromDOM (line 1) | posFromDOM(t,e){let i=this.nearest(t);if(!i)throw new RangeError("Tryi... method domAtPos (line 1) | domAtPos(t){let{i:e,off:i}=this.childCursor().findPos(t,-1);for(;e(this.dynamic... method scrollIntoView (line 1) | scrollIntoView(t){let e,{range:i}=t,n=this.coordsAt(i.head,i.empty?i.a... class nn (line 1) | class nn extends ti{constructor(t){super(),this.height=t}toDOM(){let t=d... method constructor (line 1) | constructor(t){super(),this.height=t} method toDOM (line 1) | toDOM(){let t=document.createElement("div");return this.updateDOM(t),t} method eq (line 1) | eq(t){return t.height==this.height} method updateDOM (line 1) | updateDOM(t){return t.style.height=this.height+"px",!0} method estimatedHeight (line 1) | get estimatedHeight(){return this.height} function sn (line 1) | function sn(t){let e=t.observer.selectionRange,i=e.focusNode&&on(e.focus... class rn (line 1) | class rn extends ti{constructor(t,e,i){super(),this.top=t,this.text=e,th... method constructor (line 1) | constructor(t,e,i){super(),this.top=t,this.text=e,this.topView=i} method eq (line 1) | eq(t){return this.top==t.top&&this.text==t.text} method toDOM (line 1) | toDOM(){return this.top} method ignoreEvent (line 1) | ignoreEvent(){return!1} method customView (line 1) | get customView(){return je} function on (line 1) | function on(t,e,i){for(;;){if(3==t.nodeType)return t;if(1==t.nodeType&&e... class ln (line 1) | class ln{constructor(){this.changes=[]}compareRange(t,e){li(t,e,this.cha... method constructor (line 1) | constructor(){this.changes=[]} method compareRange (line 1) | compareRange(t,e){li(t,e,this.changes)} method comparePoint (line 1) | comparePoint(t,e){li(t,e,this.changes)} function an (line 1) | function an(t,e){return e.left>t?e.left-t:Math.max(0,t-e.right)} function hn (line 1) | function hn(t,e){return e.top>t?e.top-t:Math.max(0,t-e.bottom)} function cn (line 1) | function cn(t,e){return t.tope.top+1} function un (line 1) | function un(t,e){return et.bottom?{top:t.top,left:t.left,right:t.right,... function dn (line 1) | function dn(t,e,i){let n,s,r,o,l,a,h,c,u=!1;for(let f=t.firstChild;f;f=f... function pn (line 1) | function pn(t,e,i){let n=t.nodeValue.length,s=-1,r=1e9,o=0;for(let l=0;l... function mn (line 1) | function mn(t,{x:e,y:i},n,s=-1){var r;let o,l=t.contentDOM.getBoundingCl... function gn (line 1) | function gn(t,e,i,n,s){let r=Math.round((n-e.left)*t.defaultCharacterWid... function vn (line 1) | function vn(t,e,i,n){let s=t.state.doc.lineAt(e.head),r=t.bidiSpans(s),o... function wn (line 1) | function wn(t,e,i){let n=t.state.facet(Ei).map((e=>e(t)));for(;;){let t=... class yn (line 1) | class yn{constructor(t){this.lastKeyCode=0,this.lastKeyTime=0,this.lastT... method constructor (line 1) | constructor(t){this.lastKeyCode=0,this.lastKeyTime=0,this.lastTouchTim... method setSelectionOrigin (line 1) | setSelectionOrigin(t){this.lastSelectionOrigin=t,this.lastSelectionTim... method ensureHandlers (line 1) | ensureHandlers(t,e){var i;let n;this.customHandlers=[];for(let s of e)... method runCustomHandlers (line 1) | runCustomHandlers(t,e,i){for(let n of this.customHandlers){let s=n.han... method runScrollHandlers (line 1) | runScrollHandlers(t,e){this.lastScrollTop=t.scrollDOM.scrollTop,this.l... method keydown (line 1) | keydown(t,e){if(this.lastKeyCode=e.keyCode,this.lastKeyTime=Date.now()... method flushIOSKey (line 1) | flushIOSKey(t){let e=this.pendingIOSKey;return!!e&&(this.pendingIOSKey... method ignoreDuringComposition (line 1) | ignoreDuringComposition(t){return!!/^key/.test(t.type)&&(this.composin... method mustFlushObserver (line 1) | mustFlushObserver(t){return"keydown"==t.type&&229!=t.keyCode} method startMouseSelection (line 1) | startMouseSelection(t){this.mouseSelection&&this.mouseSelection.destro... method update (line 1) | update(t){this.mouseSelection&&this.mouseSelection.update(t),t.transac... method destroy (line 1) | destroy(){this.mouseSelection&&this.mouseSelection.destroy()} class Sn (line 1) | class Sn{constructor(t,e,i,n){this.view=t,this.style=i,this.mustSelect=n... method constructor (line 1) | constructor(t,e,i,n){this.view=t,this.style=i,this.mustSelect=n,this.l... method move (line 1) | move(t){if(0==t.buttons)return this.destroy();!1===this.dragging&&this... method up (line 1) | up(t){null==this.dragging&&this.select(this.lastEvent),this.dragging||... method destroy (line 1) | destroy(){let t=this.view.contentDOM.ownerDocument;t.removeEventListen... method select (line 1) | select(t){let e=this.style.get(t,this.extend,this.multiple);!this.must... method update (line 1) | update(t){t.docChanged&&this.dragging&&(this.dragging=this.dragging.ma... function Cn (line 1) | function Cn(t,e){if(!e.bubbles)return!0;if(e.defaultPrevented)return!1;f... function Dn (line 1) | function Dn(t,e){let i,{state:n}=t,s=1,r=n.toText(e),o=r.lines==n.select... function Tn (line 1) | function Tn(t,e,i,n){if(1==n)return E.cursor(e,i);if(2==n)return functio... method update (line 1) | update(t){t.docChanged&&(i.pos=t.changes.mapPos(i.pos),s=s.map(t.changes... method get (line 1) | get(e,l,a){let h;o&&e.clientX==o.clientX&&e.clientY==o.clientY?h=r:(h=r=... function En (line 1) | function En(t,e,i,n){let s=ai.find(t.docView,e);if(!s)return 1;let r=e-s... function Bn (line 1) | function Bn(t,e){let i=t.posAtCoords({x:e.clientX,y:e.clientY},!1);retur... function Wn (line 1) | function Wn(t){if(!Ln)return t.detail;let e=Nn,i=Vn;return Nn=t,Vn=Date.... function zn (line 1) | function zn(t,e,i,n){if(!i)return;let s=t.posAtCoords({x:e.clientX,y:e.c... function Fn (line 1) | function Fn(t){setTimeout((()=>{t.hasFocus!=t.inputState.notifiedFocused... class _n (line 1) | class _n{constructor(t){this.lineWrapping=t,this.doc=e.empty,this.height... method constructor (line 1) | constructor(t){this.lineWrapping=t,this.doc=e.empty,this.heightSamples... method heightForGap (line 1) | heightForGap(t,e){let i=this.doc.lineAt(e).number-this.doc.lineAt(t).n... method heightForLine (line 1) | heightForLine(t){if(!this.lineWrapping)return this.lineHeight;return(1... method setDoc (line 1) | setDoc(t){return this.doc=t,this} method mustRefreshForWrapping (line 1) | mustRefreshForWrapping(t){return qn.indexOf(t)>-1!=this.lineWrapping} method mustRefreshForHeights (line 1) | mustRefreshForHeights(t){let e=!1;for(let i=0;i-1,o=Math.round(e)!=Math.round(... class jn (line 1) | class jn{constructor(t,e){this.from=t,this.heights=e,this.index=0}get mo... method constructor (line 1) | constructor(t,e){this.from=t,this.heights=e,this.index=0} method more (line 1) | get more(){return this.index0} method outdated (line 1) | set outdated(t){this.flags=(t?2:0)|-3&this.flags} method setHeight (line 1) | setHeight(t,e){this.height!=e&&(Math.abs(this.height-e)>Qn&&(t.heightC... method replace (line 1) | replace(t,e,i){return Kn.of(i)} method decomposeLeft (line 1) | decomposeLeft(t,e){e.push(this)} method decomposeRight (line 1) | decomposeRight(t,e){e.push(this)} method applyChanges (line 1) | applyChanges(t,e,i,n){let s=this;for(let r=n.length-1;r>=0;r--){let{fr... method empty (line 1) | static empty(){return new Jn(0,0)} method of (line 1) | static of(t){if(1==t.length)return t[0];let e=0,i=t.length,n=0,s=0;for... class Gn (line 1) | class Gn extends Kn{constructor(t,e,i){super(t,e),this.type=i}blockAt(t,... method constructor (line 1) | constructor(t,e,i){super(t,e),this.type=i} method blockAt (line 1) | blockAt(t,e,i,n){return new Un(n,this.length,i,this.height,this.type)} method lineAt (line 1) | lineAt(t,e,i,n,s){return this.blockAt(0,i,n,s)} method forEachLine (line 1) | forEachLine(t,e,i,n,s,r){t<=s+this.length&&e>=s&&r(this.blockAt(0,i,n,... method updateHeight (line 1) | updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more&&this.setHeight... method toString (line 1) | toString(){return`block(${this.length})`} class Jn (line 1) | class Jn extends Gn{constructor(t,e){super(t,e,ei.Text),this.collapsed=0... method constructor (line 1) | constructor(t,e){super(t,e,ei.Text),this.collapsed=0,this.widgetHeight=0} method replace (line 1) | replace(t,e,i){let n=i[0];return 1==i.length&&(n instanceof Jn||n inst... method updateHeight (line 1) | updateHeight(t,e=0,i=!1,n){return n&&n.from<=e&&n.more?this.setHeight(... method toString (line 1) | toString(){return`line(${this.length}${this.collapsed?-this.collapsed:... class Xn (line 1) | class Xn extends Kn{constructor(t){super(t,0)}lines(t,e){let i=t.lineAt(... method constructor (line 1) | constructor(t){super(t,0)} method lines (line 1) | lines(t,e){let i=t.lineAt(e).number,n=t.lineAt(e+this.length).number;r... method blockAt (line 1) | blockAt(t,e,i,n){let{firstLine:s,lastLine:r,lineHeight:o}=this.lines(e... method lineAt (line 1) | lineAt(t,e,i,n,s){if(e==$n.ByHeight)return this.blockAt(t,i,n,s);if(e=... method forEachLine (line 1) | forEachLine(t,e,i,n,s,r){let{firstLine:o,lineHeight:l}=this.lines(i,s)... method replace (line 1) | replace(t,e,i){let n=this.length-e;if(n>0){let t=i[i.length-1];t insta... method decomposeLeft (line 1) | decomposeLeft(t,e){e.push(new Xn(t-1),null)} method decomposeRight (line 1) | decomposeRight(t,e){e.push(null,new Xn(this.length-t-1))} method updateHeight (line 1) | updateHeight(t,e=0,i=!1,n){let s=e+this.length;if(n&&n.from<=e+this.le... method toString (line 1) | toString(){return`gap(${this.length})`} class Zn (line 1) | class Zn extends Kn{constructor(t,e,i){super(t.length+e+i.length,t.heigh... method constructor (line 1) | constructor(t,e,i){super(t.length+e+i.length,t.height+i.height,e|(t.ou... method break (line 1) | get break(){return 1&this.flags} method blockAt (line 1) | blockAt(t,e,i,n){let s=i+this.left.height;return t=n)retu... method balanced (line 1) | balanced(t,e){return t.size>2*e.size||e.size>2*t.size?Kn.of(this.break... method updateHeight (line 1) | updateHeight(t,e=0,i=!1,n){let{left:s,right:r}=this,o=e+s.length+this.... method toString (line 1) | toString(){return this.left+(this.break?" ":"-")+this.right} function Yn (line 1) | function Yn(t,e){let i,n;null==t[e]&&(i=t[e-1])instanceof Xn&&(n=t[e+1])... class ts (line 1) | class ts{constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.li... method constructor (line 1) | constructor(t,e){this.pos=t,this.oracle=e,this.nodes=[],this.lineStart... method isCovered (line 1) | get isCovered(){return this.covering&&this.nodes[this.nodes.length-1]=... method span (line 1) | span(t,e){if(this.lineStart>-1){let t=Math.min(e,this.lineEnd),i=this.... method point (line 1) | point(t,e,i){if(t-1)return;let{from:t,to:e}=this.oracle.d... method blankContent (line 1) | blankContent(t,e){let i=new Xn(e-t);return this.oracle.doc.lineAt(t).t... method ensureLine (line 1) | ensureLine(){this.enterLine();let t=this.nodes.length?this.nodes[this.... method addBlock (line 1) | addBlock(t){this.enterLine(),t.type!=ei.WidgetAfter||this.isCovered||t... method addLineDeco (line 1) | addLineDeco(t,e){let i=this.ensureLine();i.length+=e,i.collapsed+=e,i.... method finish (line 1) | finish(t){let e=0==this.nodes.length?null:this.nodes[this.nodes.length... method build (line 1) | static build(t,e,i,n){let s=new ts(i,t);return Tt.spans(e,i,n,s,0),s.f... class es (line 1) | class es{constructor(){this.changes=[]}compareRange(){}comparePoint(t,e,... method constructor (line 1) | constructor(){this.changes=[]} method compareRange (line 1) | compareRange(){} method comparePoint (line 1) | comparePoint(t,e,i,n){(t=this.viewport.from&&t<=this.viewport.to&&this... method lineBlockAtHeight (line 1) | lineBlockAtHeight(t){return ds(this.heightMap.lineAt(this.scaler.fromD... method elementAtHeight (line 1) | elementAtHeight(t){return ds(this.heightMap.blockAt(this.scaler.fromDO... method docHeight (line 1) | get docHeight(){return this.scaler.toDOM(this.heightMap.height)} method contentHeight (line 1) | get contentHeight(){return this.docHeight+this.paddingTop+this.padding... class ls (line 1) | class ls{constructor(t,e){this.from=t,this.to=e}} method constructor (line 1) | constructor(t,e){this.from=t,this.to=e} function as (line 1) | function as(t,e,i){let n=[],s=t,r=0;return Tt.spans(i,t,e,{span(){},poin... function hs (line 1) | function hs({total:t,ranges:e},i){if(i<=0)return e[0].from;if(i>=1)retur... function cs (line 1) | function cs(t,e){let i=0;for(let{from:n,to:s}of t.ranges){if(e<=s){i+=e-... class fs (line 1) | class fs{constructor(t,e,i){let n=0,s=0,r=0;this.viewports=i.map((({from... method constructor (line 1) | constructor(t,e,i){let n=0,s=0,r=0;this.viewports=i.map((({from:i,to:s... method toDOM (line 1) | toDOM(t){for(let e=0,i=0,n=0;;e++){let s=e/&/.test(e)?e.replace(/&\w... class ks (line 1) | class ks{constructor(t,e,i,n){this.typeOver=n,this.bounds=null,this.text... method constructor (line 1) | constructor(t,e,i,n){this.typeOver=n,this.bounds=null,this.text="";let... function Ss (line 1) | function Ss(t,i){let n,{newSel:s}=i,r=t.state.selection.main;if(i.bounds... class Os (line 1) | class Os{constructor(t){this.view=t,this.active=!1,this.selectionRange=n... method constructor (line 1) | constructor(t){this.view=t,this.active=!1,this.selectionRange=new pe,t... method onScrollChanged (line 1) | onScrollChanged(t){this.view.inputState.runScrollHandlers(this.view,t)... method onScroll (line 1) | onScroll(t){this.intersecting&&this.flush(!1),this.onScrollChanged(t)} method onResize (line 1) | onResize(){this.resizeTimeout<0&&(this.resizeTimeout=setTimeout((()=>{... method onPrint (line 1) | onPrint(){this.view.viewState.printing=!0,this.view.measure(),setTimeo... method updateGaps (line 1) | updateGaps(t){if(this.gapIntersection&&(t.length!=this.gaps.length||th... method onSelectionChange (line 1) | onSelectionChange(t){let e=this.selectionChanged;if(!this.readSelectio... method readSelectionRange (line 1) | readSelectionRange(){let{view:t}=this,e=ze.safari&&11==t.root.nodeType... method setSelectionRange (line 1) | setSelectionRange(t,e){this.selectionRange.set(t.node,t.offset,e.node,... method clearSelectionRange (line 1) | clearSelectionRange(){this.selectionRange.set(null,0,null,0)} method listenForScroll (line 1) | listenForScroll(){this.parentCheck=-1;let t=0,e=null;for(let i=this.do... method ignore (line 1) | ignore(t){if(!this.active)return t();try{return this.stop(),t()}finall... method start (line 1) | start(){this.active||(this.observer.observe(this.dom,Cs),As&&this.dom.... method stop (line 1) | stop(){this.active&&(this.active=!1,this.observer.disconnect(),As&&thi... method clear (line 1) | clear(){this.processRecords(),this.queue.length=0,this.selectionChange... method delayAndroidKey (line 1) | delayAndroidKey(t,e){var i;if(!this.delayedAndroidKey){let t=()=>{let ... method clearDelayedAndroidKey (line 1) | clearDelayedAndroidKey(){this.win.cancelAnimationFrame(this.flushingAn... method flushSoon (line 1) | flushSoon(){this.delayedFlush<0&&(this.delayedFlush=this.view.win.requ... method forceFlush (line 1) | forceFlush(){this.delayedFlush>=0&&(this.view.win.cancelAnimationFrame... method processRecords (line 1) | processRecords(){let t=this.queue;for(let e of this.observer.takeRecor... method readChange (line 1) | readChange(){let{from:t,to:e,typeOver:i}=this.processRecords(),n=this.... method flush (line 1) | flush(t=!0){if(this.delayedFlush>=0||this.delayedAndroidKey)return!1;t... method readMutation (line 1) | readMutation(t){let e=this.view.docView.nearest(t.target);if(!e||e.ign... method setWindow (line 1) | setWindow(t){t!=this.win&&(this.removeWindowListeners(this.win),this.w... method addWindowListeners (line 1) | addWindowListeners(t){t.addEventListener("resize",this.onResize),t.add... method removeWindowListeners (line 1) | removeWindowListeners(t){t.removeEventListener("scroll",this.onScroll)... method destroy (line 1) | destroy(){var t,e,i;this.stop(),null===(t=this.intersection)||void 0==... function Ms (line 1) | function Ms(t,e,i){for(;e;){let n=Se.get(e);if(n&&n.parent==t)return n;l... class Ds (line 1) | class Ds{constructor(t={}){this.plugins=[],this.pluginMap=new Map,this.e... method constructor (line 1) | constructor(t={}){this.plugins=[],this.pluginMap=new Map,this.editorAt... method state (line 1) | get state(){return this.viewState.state} method viewport (line 1) | get viewport(){return this.viewState.viewport} method visibleRanges (line 1) | get visibleRanges(){return this.viewState.visibleRanges} method inView (line 1) | get inView(){return this.viewState.inView} method composing (line 1) | get composing(){return this.inputState.composing>0} method compositionStarted (line 1) | get compositionStarted(){return this.inputState.composing>=0} method root (line 1) | get root(){return this._root} method win (line 1) | get win(){return this.dom.ownerDocument.defaultView||window} method dispatch (line 1) | dispatch(...t){this._dispatch(1==t.length&&t[0]instanceof ft?t[0]:this... method update (line 1) | update(t){if(0!=this.updateState)throw new Error("Calls to EditorView.... method setState (line 1) | setState(t){if(0!=this.updateState)throw new Error("Calls to EditorVie... method updatePlugins (line 1) | updatePlugins(t){let e=t.startState.facet(Oi),i=t.state.facet(Oi);if(e... method measure (line 1) | measure(t=!0){if(this.destroyed)return;this.measureScheduled>-1&&cance... method themeClasses (line 1) | get themeClasses(){return gs+" "+(this.state.facet(ms)?ws:vs)+" "+this... method updateAttrs (line 1) | updateAttrs(){let t=Es(this,Ti,{class:"cm-editor"+(this.hasFocus?" cm-... method showAnnouncements (line 1) | showAnnouncements(t){let e=!0;for(let i of t)for(let t of i.effects)if... method mountStyles (line 1) | mountStyles(){this.styleModules=this.state.facet(Li),$t.mount(this.roo... method readMeasured (line 1) | readMeasured(){if(2==this.updateState)throw new Error("Reading the edi... method requestMeasure (line 1) | requestMeasure(t){if(this.measureScheduled<0&&(this.measureScheduled=t... method plugin (line 1) | plugin(t){let e=this.pluginMap.get(t);return(void 0===e||e&&e.spec!=t)... method documentTop (line 1) | get documentTop(){return this.contentDOM.getBoundingClientRect().top+t... method documentPadding (line 1) | get documentPadding(){return{top:this.viewState.paddingTop,bottom:this... method elementAtHeight (line 1) | elementAtHeight(t){return this.readMeasured(),this.viewState.elementAt... method lineBlockAtHeight (line 1) | lineBlockAtHeight(t){return this.readMeasured(),this.viewState.lineBlo... method viewportLineBlocks (line 1) | get viewportLineBlocks(){return this.viewState.viewportLines} method lineBlockAt (line 1) | lineBlockAt(t){return this.viewState.lineBlockAt(t)} method contentHeight (line 1) | get contentHeight(){return this.viewState.contentHeight} method moveByChar (line 1) | moveByChar(t,e,i){return wn(this,t,vn(this,t,e,i))} method moveByGroup (line 1) | moveByGroup(t,e){return wn(this,t,vn(this,t,e,(e=>function(t,e,i){let ... method moveToLineBoundary (line 1) | moveToLineBoundary(t,e,i=!0){return function(t,e,i,n){let s=t.state.do... method moveVertically (line 1) | moveVertically(t,e,i){return wn(this,t,function(t,e,i,n){let s=e.head,... method domAtPos (line 1) | domAtPos(t){return this.docView.domAtPos(t)} method posAtDOM (line 1) | posAtDOM(t,e=0){return this.docView.posFromDOM(t,e)} method posAtCoords (line 1) | posAtCoords(t,e=!0){return this.readMeasured(),mn(this,t,e)} method coordsAtPos (line 1) | coordsAtPos(t,e=1){this.readMeasured();let i=this.docView.coordsAt(t,e... method defaultCharacterWidth (line 1) | get defaultCharacterWidth(){return this.viewState.heightOracle.charWidth} method defaultLineHeight (line 1) | get defaultLineHeight(){return this.viewState.heightOracle.lineHeight} method textDirection (line 1) | get textDirection(){return this.viewState.defaultTextDirection} method textDirectionAt (line 1) | textDirectionAt(t){return!this.state.facet(yi)||tTs)return Ki(t.length);let e=this.textDirecti... method hasFocus (line 1) | get hasFocus(){var t;return(this.dom.ownerDocument.hasFocus()||ze.safa... method focus (line 1) | focus(){this.observer.ignore((()=>{ve(this.contentDOM),this.docView.up... method setRoot (line 1) | setRoot(t){this._root!=t&&(this._root=t,this.observer.setWindow((9==t.... method destroy (line 1) | destroy(){for(let t of this.plugins)t.destroy(this);this.plugins=[],th... method scrollIntoView (line 1) | static scrollIntoView(t,e={}){return ki.of(new xi("number"==typeof t?E... method domEventHandlers (line 1) | static domEventHandlers(t){return Mi.define((()=>({})),{eventHandlers:... method theme (line 1) | static theme(t,e){let i=$t.newName(),n=[ps.of(i),Li.of(bs(`.${i}`,t))]... method baseTheme (line 1) | static baseTheme(t){return K.lowest(Li.of(bs("."+gs,t,ys)))} method findFromDOM (line 1) | static findFromDOM(t){var e;let i=t.querySelector(".cm-content"),n=i&&... class Rs (line 1) | class Rs{constructor(t,e,i,n){this.from=t,this.to=e,this.dir=i,this.orde... method constructor (line 1) | constructor(t,e,i,n){this.from=t,this.to=e,this.dir=i,this.order=n} method update (line 1) | static update(t,e){if(e.empty)return t;let i=[],n=t.length?t[t.length-... function Es (line 1) | function Es(t,e,i){for(let n=t.state.facet(e),s=n.length-1;s>=0;s--){let... function Ls (line 1) | function Ls(t,e,i){return e.altKey&&(t="Alt-"+t),e.ctrlKey&&(t="Ctrl-"+t... function Ws (line 1) | function Ws(t){let e=t.facet(Is),i=Vs.get(e);return i||Vs.set(e,i=functi... function Hs (line 1) | function Hs(t,e,i,n){let s=function(t){var e=!(te&&(t.ctrlKey||t.altKey|... function _s (line 1) | function _s(t={}){return[qs.of(t),Us,Qs,bi.of(!0)]} class js (line 1) | class js{constructor(t,e,i,n,s){this.left=t,this.top=e,this.width=i,this... method constructor (line 1) | constructor(t,e,i,n,s){this.left=t,this.top=e,this.width=i,this.height... method draw (line 1) | draw(){let t=document.createElement("div");return t.className=this.cla... method adjust (line 1) | adjust(t){t.style.left=this.left+"px",t.style.top=this.top+"px",this.w... method eq (line 1) | eq(t){return this.left==t.left&&this.top==t.top&&this.width==t.width&&... method constructor (line 1) | constructor(t){this.view=t,this.rangePieces=[],this.cursors=[],this.meas... method setBlinkRate (line 1) | setBlinkRate(){this.cursorLayer.style.animationDuration=this.view.state.... method update (line 1) | update(t){let e=t.startState.facet(qs)!=t.state.facet(qs);(e||t.selectio... method readPos (line 1) | readPos(){let{state:t}=this.view,e=t.facet(qs),i=t.selection.ranges.map(... method drawSel (line 1) | drawSel({rangePieces:t,cursors:e}){if(t.length!=this.rangePieces.length|... method destroy (line 1) | destroy(){this.selectionLayer.remove(),this.cursorLayer.remove()} function Ks (line 1) | function Ks(t){let e=t.scrollDOM.getBoundingClientRect();return{left:(t.... function Gs (line 1) | function Gs(t,e,i){let n=E.cursor(e);return{from:Math.max(i.from,t.moveT... function Js (line 1) | function Js(t,e){let i=t.lineBlockAt(e);if(Array.isArray(i.type))for(let... function Xs (line 1) | function Xs(t,e,i){let n=t.coordsAtPos(e.head,e.assoc||1);if(!n)return n... method constructor (line 1) | constructor(t){this.view=t,this.cursor=null,this.measureReq={read:this.r... method update (line 1) | update(t){var e;let i=t.state.field(Ys);null==i?null!=this.cursor&&(null... method readPos (line 1) | readPos(){let t=this.view.state.field(Ys),e=null!=t&&this.view.coordsAtP... method drawCursor (line 1) | drawCursor(t){this.cursor&&(t?(this.cursor.style.left=t.left+"px",this.c... method destroy (line 1) | destroy(){this.cursor&&this.cursor.remove()} method setDropPos (line 1) | setDropPos(t){this.view.state.field(Ys)!=t&&this.view.dispatch({effects:... method dragover (line 1) | dragover(t){this.setDropPos(this.view.posAtCoords({x:t.clientX,y:t.clien... method dragleave (line 1) | dragleave(t){t.target!=this.view.contentDOM&&this.view.contentDOM.contai... method dragend (line 1) | dragend(){this.setDropPos(null)} method drop (line 1) | drop(){this.setDropPos(null)} function er (line 1) | function er(t,e,i,n,s){e.lastIndex=0;for(let r,o=t.iterRange(i,n),l=i;!o... class ir (line 1) | class ir{constructor(t){const{regexp:e,decoration:i,decorate:n,boundary:... method constructor (line 1) | constructor(t){const{regexp:e,decoration:i,decorate:n,boundary:s,maxLe... method createDeco (line 1) | createDeco(t){let e=new Pt,i=e.add.bind(e);for(let{from:e,to:n}of func... method updateDeco (line 1) | updateDeco(t,e){let i=1e9,n=-1;return t.docChanged&&t.changes.iterChan... method updateRange (line 1) | updateRange(t,e,i,n){for(let s of t.visibleRanges){let r=Math.max(s.fr... method combine (line 1) | combine(t){let e=Ct(t,{render:null,specialChars:sr,addSpecialChars:null}... function ar (line 1) | function ar(t={}){return[lr.of(t),hr||(hr=Mi.fromClass(class{constructor... class cr (line 1) | class cr extends ti{constructor(t,e){super(),this.options=t,this.code=e}... method constructor (line 1) | constructor(t,e){super(),this.options=t,this.code=e} method eq (line 1) | eq(t){return t.code==this.code} method toDOM (line 1) | toDOM(t){let e=function(t){return t>=32?"β€’":10==t?"␀":String.fromCharC... method ignoreEvent (line 1) | ignoreEvent(){return!1} class ur (line 1) | class ur extends ti{constructor(t){super(),this.width=t}eq(t){return t.w... method constructor (line 1) | constructor(t){super(),this.width=t} method eq (line 1) | eq(t){return t.width==this.width} method toDOM (line 1) | toDOM(){let t=document.createElement("span");return t.textContent="\t"... method ignoreEvent (line 1) | ignoreEvent(){return!1} method constructor (line 1) | constructor(t){this.decorations=this.getDeco(t)} method update (line 1) | update(t){(t.docChanged||t.selectionSet)&&(this.decorations=this.getDeco... method getDeco (line 1) | getDeco(t){let e=-1,i=[];for(let n of t.state.selection.ranges){let s=t.... function mr (line 1) | function mr(t,e){let i=t.posAtCoords({x:e.clientX,y:e.clientY},!1),n=t.s... function gr (line 1) | function gr(t,e){let i=mr(t,e),n=t.state.selection;return i?{update(t){i... function vr (line 1) | function vr(t){let e=(null==t?void 0:t.eventFilter)||(t=>t.altKey&&0==t.... function br (line 1) | function br(t={}){let[e,i]=wr[t.key||"Alt"],n=Mi.fromClass(class{constru... class kr (line 1) | class kr{constructor(t,e,i){this.facet=e,this.createTooltipView=i,this.i... method constructor (line 1) | constructor(t,e,i){this.facet=e,this.createTooltipView=i,this.input=t.... method update (line 1) | update(t){var e;let i=t.state.facet(this.facet),n=i.filter((t=>t));if(... function Sr (line 1) | function Sr(t){let{win:e}=t;return{top:0,left:0,bottom:e.innerHeight,rig... method constructor (line 1) | constructor(t){this.view=t,this.inView=!0,this.lastTransaction=0,this.me... method createContainer (line 1) | createContainer(){this.parent?(this.container=document.createElement("di... method observeIntersection (line 1) | observeIntersection(){if(this.intersectionObserver){this.intersectionObs... method measureSoon (line 1) | measureSoon(){this.measureTimeout<0&&(this.measureTimeout=setTimeout((()... method update (line 1) | update(t){t.transactions.length&&(this.lastTransaction=Date.now());let e... method createTooltip (line 1) | createTooltip(t){let e=t.create(this.view);if(e.dom.classList.add("cm-to... method destroy (line 1) | destroy(){var t,e;this.view.win.removeEventListener("resize",this.measur... method readMeasure (line 1) | readMeasure(){let t=this.view.dom.getBoundingClientRect();return{editor:... method writeMeasure (line 1) | writeMeasure(t){let{editor:e,space:i}=t,n=[];for(let s=0;snull,update... method combine (line 1) | combine(t){let e,i;for(let n of t)e=e||n.topContainer,i=i||n.bottomConta... function Vr (line 1) | function Vr(t,e){let i=t.plugin(Wr),n=i?i.specs.indexOf(e):-1;return n>-... method constructor (line 1) | constructor(t){this.input=t.state.facet(Fr),this.specs=this.input.filter... method update (line 1) | update(t){let e=t.state.facet(Ir);this.top.container!=e.topContainer&&(t... method destroy (line 1) | destroy(){this.top.sync([]),this.bottom.sync([])} class zr (line 1) | class zr{constructor(t,e,i){this.view=t,this.top=e,this.container=i,this... method constructor (line 1) | constructor(t,e,i){this.view=t,this.top=e,this.container=i,this.dom=vo... method sync (line 1) | sync(t){for(let e of this.panels)e.destroy&&t.indexOf(e)<0&&e.destroy(... method syncDOM (line 1) | syncDOM(){if(0==this.panels.length)return void(this.dom&&(this.dom.rem... method scrollMargin (line 1) | scrollMargin(){return!this.dom||this.container?0:Math.max(0,this.top?t... method syncClasses (line 1) | syncClasses(){if(this.container&&this.classes!=this.view.themeClasses)... function Hr (line 1) | function Hr(t){let e=t.nextSibling;return t.remove(),e} class qr (line 1) | class qr extends At{compare(t){return this==t||this.constructor==t.const... method compare (line 1) | compare(t){return this==t||this.constructor==t.constructor&&this.eq(t)} method eq (line 1) | eq(t){return!1} method destroy (line 1) | destroy(t){} function $r (line 1) | function $r(t){return[Kr(),Ur.of(Object.assign(Object.assign({},jr),t))]} function Kr (line 1) | function Kr(t){let e=[Gr];return t&&!1===t.fixed&&e.push(Qr.of(!0)),e} method constructor (line 1) | constructor(t){this.view=t,this.prevViewport=t.viewport,this.dom=documen... method update (line 1) | update(t){if(this.updateGutters(t)){let e=this.prevViewport,i=t.view.vie... method syncGutters (line 1) | syncGutters(t){let e=this.dom.nextSibling;t&&this.dom.remove();let i=Tt.... method updateGutters (line 1) | updateGutters(t){let e=t.startState.facet(Ur),i=t.state.facet(Ur),n=t.do... method destroy (line 1) | destroy(){for(let t of this.gutters)t.destroy();this.dom.remove()} function Jr (line 1) | function Jr(t){return Array.isArray(t)?t:[t]} function Xr (line 1) | function Xr(t,e,i){for(;t.value&&t.from<=i;)t.from==i&&e.push(t.value),t... class Zr (line 1) | class Zr{constructor(t,e,i){this.gutter=t,this.height=i,this.localMarker... method constructor (line 1) | constructor(t,e,i){this.gutter=t,this.height=i,this.localMarkers=[],th... method line (line 1) | line(t,e,i){this.localMarkers.length&&(this.localMarkers=[]),Xr(this.c... method finish (line 1) | finish(){let t=this.gutter;for(;t.elements.length>this.i;){let e=t.ele... class Yr (line 1) | class Yr{constructor(t,e){this.view=t,this.config=e,this.elements=[],thi... method constructor (line 1) | constructor(t,e){this.view=t,this.config=e,this.elements=[],this.space... method update (line 1) | update(t){let e=this.markers;if(this.markers=Jr(this.config.markers(t.... method destroy (line 1) | destroy(){for(let t of this.elements)t.destroy()} class to (line 1) | class to{constructor(t,e,i,n){this.height=-1,this.above=0,this.markers=[... method constructor (line 1) | constructor(t,e,i,n){this.height=-1,this.above=0,this.markers=[],this.... method update (line 1) | update(t,e,i,n){this.height!=e&&(this.dom.style.height=(this.height=e)... method setMarkers (line 1) | setMarkers(t,e){let i="cm-gutterElement",n=this.dom.firstChild;for(let... method destroy (line 1) | destroy(){this.setMarkers(null,[])} method domEventHandlers (line 1) | domEventHandlers(t,e){let i=Object.assign({},t);for(let t in e){let n=i[... class no (line 1) | class no extends qr{constructor(t){super(),this.number=t}eq(t){return th... method constructor (line 1) | constructor(t){super(),this.number=t} method eq (line 1) | eq(t){return this.number==t.number} method toDOM (line 1) | toDOM(){return document.createTextNode(this.number)} function so (line 1) | function so(t,e){return t.state.facet(io).formatNumber(e,t.state)} method updateSpacer (line 1) | updateSpacer(t,e){let i=so(e.view,lo(e.view.state.doc.lines));return i==... function oo (line 1) | function oo(t={}){return[io.of(t),Kr(),ro]} function lo (line 1) | function lo(t){let e=9;for(;e0} method isSkipped (line 1) | get isSkipped(){return(2&this.flags)>0} method isError (line 1) | get isError(){return(4&this.flags)>0} method isAnonymous (line 1) | get isAnonymous(){return(8&this.flags)>0} method is (line 1) | is(t){if("string"==typeof t){if(this.name==t)return!0;let e=this.prop(... method match (line 1) | static match(t){let e=Object.create(null);for(let i in t)for(let n of ... class vo (line 1) | class vo{constructor(t){this.types=t;for(let e=0;e=e&&i=e:t.from>e)||(... class Mo (line 1) | class Mo{constructor(t,e,i,n){this._tree=t,this.from=e,this.index=i,this... method constructor (line 1) | constructor(t,e,i,n){this._tree=t,this.from=e,this.index=i,this._paren... method type (line 1) | get type(){return this._tree.type} method name (line 1) | get name(){return this._tree.type.name} method to (line 1) | get to(){return this.from+this._tree.length} method nextChild (line 1) | nextChild(t,e,i,n,s=0){for(let r=this;;){for(let{children:o,positions:... method firstChild (line 1) | get firstChild(){return this.nextChild(0,1,0,4)} method lastChild (line 1) | get lastChild(){return this.nextChild(this._tree.children.length-1,-1,... method childAfter (line 1) | childAfter(t){return this.nextChild(0,1,t,2)} method childBefore (line 1) | childBefore(t){return this.nextChild(this._tree.children.length-1,-1,t... method enter (line 1) | enter(t,e,i=0){let n;if(!(i&bo.IgnoreOverlays)&&(n=this._tree.prop(po.... method nextSignificantParent (line 1) | nextSignificantParent(){let t=this;for(;t.type.isAnonymous&&t._parent;... method parent (line 1) | get parent(){return this._parent?this._parent.nextSignificantParent():... method nextSibling (line 1) | get nextSibling(){return this._parent&&this.index>=0?this._parent.next... method prevSibling (line 1) | get prevSibling(){return this._parent&&this.index>=0?this._parent.next... method cursor (line 1) | cursor(t=0){return new Eo(this,t)} method tree (line 1) | get tree(){return this._tree} method toTree (line 1) | toTree(){return this._tree} method resolve (line 1) | resolve(t,e=0){return Oo(this,t,e,!1)} method resolveInner (line 1) | resolveInner(t,e=0){return Oo(this,t,e,!0)} method enterUnfinishedNodesBefore (line 1) | enterUnfinishedNodesBefore(t){return Ao(this,t)} method getChild (line 1) | getChild(t,e=null,i=null){let n=Do(this,t,e,i);return n.length?n[0]:null} method getChildren (line 1) | getChildren(t,e=null,i=null){return Do(this,t,e,i)} method toString (line 1) | toString(){return this._tree.toString()} method node (line 1) | get node(){return this} method matchContext (line 1) | matchContext(t){return To(this,t)} function Do (line 1) | function Do(t,e,i,n){let s=t.cursor(),r=[];if(!s.firstChild())return r;i... function To (line 1) | function To(t,e,i=e.length-1){for(let n=t.parent;i>=0;n=n.parent){if(!n)... class Po (line 1) | class Po{constructor(t,e,i,n){this.parent=t,this.buffer=e,this.index=i,t... method constructor (line 1) | constructor(t,e,i,n){this.parent=t,this.buffer=e,this.index=i,this.sta... class Ro (line 1) | class Ro{constructor(t,e,i){this.context=t,this._parent=e,this.index=i,t... method constructor (line 1) | constructor(t,e,i){this.context=t,this._parent=e,this.index=i,this.typ... method name (line 1) | get name(){return this.type.name} method from (line 1) | get from(){return this.context.start+this.context.buffer.buffer[this.i... method to (line 1) | get to(){return this.context.start+this.context.buffer.buffer[this.ind... method child (line 1) | child(t,e,i){let{buffer:n}=this.context,s=n.findChild(this.index+4,n.b... method firstChild (line 1) | get firstChild(){return this.child(1,0,4)} method lastChild (line 1) | get lastChild(){return this.child(-1,0,4)} method childAfter (line 1) | childAfter(t){return this.child(1,t,2)} method childBefore (line 1) | childBefore(t){return this.child(-1,t,-2)} method enter (line 1) | enter(t,e,i=0){if(i&bo.ExcludeBuffers)return null;let{buffer:n}=this.c... method parent (line 1) | get parent(){return this._parent||this.context.parent.nextSignificantP... method externalSibling (line 1) | externalSibling(t){return this._parent?null:this.context.parent.nextCh... method nextSibling (line 1) | get nextSibling(){let{buffer:t}=this.context,e=t.buffer[this.index+3];... method prevSibling (line 1) | get prevSibling(){let{buffer:t}=this.context,e=this._parent?this._pare... method cursor (line 1) | cursor(t=0){return new Eo(this,t)} method tree (line 1) | get tree(){return null} method toTree (line 1) | toTree(){let t=[],e=[],{buffer:i}=this.context,n=this.index+4,s=i.buff... method resolve (line 1) | resolve(t,e=0){return Oo(this,t,e,!1)} method resolveInner (line 1) | resolveInner(t,e=0){return Oo(this,t,e,!0)} method enterUnfinishedNodesBefore (line 1) | enterUnfinishedNodesBefore(t){return Ao(this,t)} method toString (line 1) | toString(){return this.context.buffer.childString(this.index)} method getChild (line 1) | getChild(t,e=null,i=null){let n=Do(this,t,e,i);return n.length?n[0]:null} method getChildren (line 1) | getChildren(t,e=null,i=null){return Do(this,t,e,i)} method node (line 1) | get node(){return this} method matchContext (line 1) | matchContext(t){return To(this,t)} class Eo (line 1) | class Eo{constructor(t,e=0){if(this.mode=e,this.buffer=null,this.stack=[... method constructor (line 1) | constructor(t,e=0){if(this.mode=e,this.buffer=null,this.stack=[],this.... method name (line 1) | get name(){return this.type.name} method yieldNode (line 1) | yieldNode(t){return!!t&&(this._tree=t,this.type=t.type,this.from=t.fro... method yieldBuf (line 1) | yieldBuf(t,e){this.index=t;let{start:i,buffer:n}=this.buffer;return th... method yield (line 1) | yield(t){return!!t&&(t instanceof Mo?(this.buffer=null,this.yieldNode(... method toString (line 1) | toString(){return this.buffer?this.buffer.buffer.childString(this.inde... method enterChild (line 1) | enterChild(t,e,i){if(!this.buffer)return this.yield(this._tree.nextChi... method firstChild (line 1) | firstChild(){return this.enterChild(1,0,4)} method lastChild (line 1) | lastChild(){return this.enterChild(-1,0,4)} method childAfter (line 1) | childAfter(t){return this.enterChild(1,t,2)} method childBefore (line 1) | childBefore(t){return this.enterChild(-1,t,-2)} method enter (line 1) | enter(t,e,i=this.mode){return this.buffer?!(i&bo.ExcludeBuffers)&&this... method parent (line 1) | parent(){if(!this.buffer)return this.yieldNode(this.mode&bo.IncludeAno... method sibling (line 1) | sibling(t){if(!this.buffer)return!!this._tree._parent&&this.yield(this... method nextSibling (line 1) | nextSibling(){return this.sibling(1)} method prevSibling (line 1) | prevSibling(){return this.sibling(-1)} method atLastNode (line 1) | atLastNode(t){let e,i,{buffer:n}=this;if(n){if(t>0){if(this.index=t:this.from>t)... method node (line 1) | get node(){if(!this.buffer)return this._tree;let t=this.bufferNode,e=n... method tree (line 1) | get tree(){return this.buffer?null:this._tree._tree} method iterate (line 1) | iterate(t,e){for(let i=0;;){let n=!1;if(this.type.isAnonymous||!1!==t(... method matchContext (line 1) | matchContext(t){if(!this.buffer)return To(this.node,t);let{buffer:e}=t... function Bo (line 1) | function Bo(t){return t.children.some((t=>t instanceof So||!t.type.isAno... function No (line 1) | function No(t,e){if(!t.isAnonymous||e instanceof So||e.type!=t)return 1;... function Io (line 1) | function Io(t,e,i,n,s,r,o,l,a){let h=0;for(let i=n;i0} method openEnd (line 1) | get openEnd(){return(2&this.open)>0} method addTree (line 1) | static addTree(t,e=[],i=!1){let n=[new Vo(0,t.length,t,0,!1,i)];for(le... method applyChanges (line 1) | static applyChanges(t,e,i=128){if(!e.length)return t;let n=[],s=1,r=t.... class Wo (line 1) | class Wo{startParse(t,e,i){return"string"==typeof t&&(t=new zo(t)),i=i?i... method startParse (line 1) | startParse(t,e,i){return"string"==typeof t&&(t=new zo(t)),i=i?i.length... method parse (line 1) | parse(t,e,i){let n=this.startParse(t,e,i);for(;;){let t=n.advance();if... class zo (line 1) | class zo{constructor(t){this.string=t}get length(){return this.string.le... method constructor (line 1) | constructor(t){this.string=t} method length (line 1) | get length(){return this.string.length} method chunk (line 1) | chunk(t){return this.string.slice(t)} method lineChunks (line 1) | get lineChunks(){return!1} method read (line 1) | read(t,e){return this.string.slice(t,e)} class Fo (line 1) | class Fo{constructor(t,e,i){this.set=t,this.base=e,this.modified=i,this.... method constructor (line 1) | constructor(t,e,i){this.set=t,this.base=e,this.modified=i,this.id=Ho++} method define (line 1) | static define(t){if(null==t?void 0:t.base)throw new Error("Can not der... method defineModifier (line 1) | static defineModifier(){let t=new _o;return e=>e.modified.indexOf(t)>-... class _o (line 1) | class _o{constructor(){this.instances=[],this.id=qo++}static get(t,e){if... method constructor (line 1) | constructor(){this.instances=[],this.id=qo++} method get (line 1) | static get(t,e){if(!e.length)return t;let i=e[0].instances.find((i=>{r... function jo (line 1) | function jo(t){let e=Object.create(null);for(let i in t){let n=t[i];Arra... class $o (line 1) | class $o{constructor(t,e,i,n){this.tags=t,this.mode=e,this.context=i,thi... method constructor (line 1) | constructor(t,e,i,n){this.tags=t,this.mode=e,this.context=i,this.next=n} method opaque (line 1) | get opaque(){return 0==this.mode} method inherit (line 1) | get inherit(){return 1==this.mode} method sort (line 1) | sort(t){return!t||t.depththis.at&&(this.at=t),th... method flush (line 1) | flush(t){t>this.at&&this.class&&this.span(this.at,t,this.class)} method highlightRange (line 1) | highlightRange(t,e,i,n,s){let{type:r,from:o,to:l}=t;if(o>=i||l<=e)retu... class pl (line 1) | class pl{constructor(t,e,i=[],n=""){this.data=t,this.name=n,St.prototype... method constructor (line 1) | constructor(t,e,i=[],n=""){this.data=t,this.name=n,St.prototype.hasOwn... method isActiveAt (line 1) | isActiveAt(t,e,i=-1){return ml(t,e,i)==this.data} method findRegions (line 1) | findRegions(t){let e=t.facet(Ol);if((null==e?void 0:e.data)==this.data... method allowsNesting (line 1) | get allowsNesting(){return!0} function ml (line 1) | function ml(t,e,i){let n=t.facet(Ol);if(!n)return null;let s=n.data;if(n... class gl (line 1) | class gl extends pl{constructor(t,e,i){super(t,e,[],i),this.parser=e}sta... method constructor (line 1) | constructor(t,e,i){super(t,e,[],i),this.parser=e} method define (line 1) | static define(t){let e=(i=t.languageData,N.define({combine:i?t=>t.conc... method configure (line 1) | configure(t,e){return new gl(this.data,this.parser.configure(t),e||thi... method allowsNesting (line 1) | get allowsNesting(){return this.parser.hasWrappers()} function vl (line 1) | function vl(t){let e=t.field(pl.state,!1);return e?e.tree:xo.empty} class wl (line 1) | class wl{constructor(t,e=t.length){this.doc=t,this.length=e,this.cursorP... method constructor (line 1) | constructor(t,e=t.length){this.doc=t,this.length=e,this.cursorPos=0,th... method syncTo (line 1) | syncTo(t){return this.string=this.cursor.next(t-this.cursorPos).value,... method chunk (line 1) | chunk(t){return this.syncTo(t),this.string} method lineChunks (line 1) | get lineChunks(){return!0} method read (line 1) | read(t,e){let i=this.cursorPos-this.string.length;return t=this.... class bl (line 1) | class bl{constructor(t,e,i=[],n,s,r,o,l){this.parser=t,this.state=e,this... method constructor (line 1) | constructor(t,e,i=[],n,s,r,o,l){this.parser=t,this.state=e,this.fragme... method create (line 1) | static create(t,e,i){return new bl(t,e,[],xo.empty,0,i,[],null)} method startParse (line 1) | startParse(){return this.parser.startParse(new wl(this.state.doc),this... method work (line 1) | work(t,e){return null!=e&&e>=this.state.doc.length&&(e=void 0),this.tr... method takeTree (line 1) | takeTree(){let t,e;this.parse&&(t=this.parse.parsedPos)>=this.treeLen&... method withContext (line 1) | withContext(t){let e=yl;yl=this;try{return t()}finally{yl=e}} method withoutTempSkipped (line 1) | withoutTempSkipped(t){for(let e;e=this.tempSkipped.pop();)t=xl(t,e.fro... method changes (line 1) | changes(t,e){let{fragments:i,tree:n,treeLen:s,viewport:r,skipped:o}=th... method updateViewport (line 1) | updateViewport(t){if(this.viewport.from==t.from&&this.viewport.to==t.t... method reset (line 1) | reset(){this.parse&&(this.takeTree(),this.parse=null)} method skipUntilInView (line 1) | skipUntilInView(t,e){this.skipped.push({from:t,to:e})} method getSkippingParser (line 1) | static getSkippingParser(t){return new class extends Wo{createParse(e,... method isDone (line 1) | isDone(t){t=Math.min(t,this.state.doc.length);let e=this.fragments;ret... method get (line 1) | static get(){return yl} function xl (line 1) | function xl(t,e,i){return Vo.applyChanges(t,[{fromA:e,toA:i,fromB:e,toB:... class kl (line 1) | class kl{constructor(t){this.context=t,this.tree=t.tree}apply(t){if(!t.d... method constructor (line 1) | constructor(t){this.context=t,this.tree=t.tree} method apply (line 1) | apply(t){if(!t.docChanged&&this.tree==this.context.tree)return this;le... method init (line 1) | static init(t){let e=Math.min(3e3,t.doc.length),i=bl.create(t.facet(Ol... method update (line 1) | update(t,e){for(let t of e.effects)if(t.is(pl.setState))return t.value;r... method constructor (line 1) | constructor(t){this.view=t,this.working=null,this.workScheduled=0,this.c... method update (line 1) | update(t){let e=this.view.state.field(pl.state).context;(e.updateViewpor... method scheduleWork (line 1) | scheduleWork(){if(this.working)return;let{state:t}=this.view,e=t.field(p... method work (line 1) | work(t){this.working=null;let e=Date.now();if(this.chunkEnd0)} method focus (line 1) | focus(){this.scheduleWork()} class Ml (line 1) | class Ml{constructor(t,e=[]){this.language=t,this.support=e,this.extensi... method constructor (line 1) | constructor(t,e=[]){this.language=t,this.support=e,this.extension=[t,e]} function Pl (line 1) | function Pl(t){let e=t.facet(Tl);return 9==e.charCodeAt(0)?t.tabSize*e.l... function Rl (line 1) | function Rl(t,e){let i="",n=t.tabSize;if(9==t.facet(Tl).charCodeAt(0))fo... function El (line 1) | function El(t,e){t instanceof St&&(t=new Bl(t));for(let i of t.state.fac... class Bl (line 1) | class Bl{constructor(t,e={}){this.state=t,this.options=e,this.unit=Pl(t)... method constructor (line 1) | constructor(t,e={}){this.state=t,this.options=e,this.unit=Pl(t)} method lineAt (line 1) | lineAt(t,e=1){let i=this.state.doc.lineAt(t),{simulateBreak:n,simulate... method textAfterPos (line 1) | textAfterPos(t,e=1){if(this.options.simulateDoubleBreak&&t==this.optio... method column (line 1) | column(t,e=1){let{text:i,from:n}=this.lineAt(t,e),s=this.countColumn(i... method countColumn (line 1) | countColumn(t,e=t.length){return Ft(t,this.state.tabSize,e)} method lineIndent (line 1) | lineIndent(t,e=1){let{text:i,from:n}=this.lineAt(t,e),s=this.options.o... method simulatedBreak (line 1) | get simulatedBreak(){return this.options.simulateBreak||null} function Nl (line 1) | function Nl(t){let e=t.type.prop(Ll);if(e)return e;let i,n=t.firstChild;... function Il (line 1) | function Il(t,e,i){for(;t;t=t.parent){let n=Nl(t);if(n)return n(Wl.creat... function Vl (line 1) | function Vl(){return 0} class Wl (line 1) | class Wl extends Bl{constructor(t,e,i){super(t.state,t.options),this.bas... method constructor (line 1) | constructor(t,e,i){super(t.state,t.options),this.base=t,this.pos=e,thi... method create (line 1) | static create(t,e,i){return new Wl(t,e,i)} method textAfter (line 1) | get textAfter(){return this.textAfterPos(this.pos)} method baseIndent (line 1) | get baseIndent(){let t=this.state.doc.lineAt(this.node.from);for(;;){l... method continue (line 1) | continue(){let t=this.node.parent;return t?Il(t,this.pos,this.base):0} function zl (line 1) | function zl(t,e){for(let i=e;i;i=i.parent)if(t==i)return!0;return!1} function Hl (line 1) | function Hl({except:t,units:e=1}={}){return i=>{let n=t&&t.test(i.textAf... function _l (line 1) | function _l(t){let e=t.lastChild;return e&&e.to==t.to&&e.type.isError} function jl (line 1) | function jl(t,e,i){for(let n of t.facet(Fl)){let s=n(t,e,i);if(s)return ... function Ul (line 1) | function Ul(t,e){let i=e.mapPos(t.from,1),n=e.mapPos(t.to,-1);return i>=... function Kl (line 1) | function Kl(t){let e=[];for(let{head:i}of t.state.selection.ranges)e.som... method update (line 1) | update(t,e){t=t.map(e.changes);for(let i of e.effects)i.is($l)&&!Xl(t,i.... method toJSON (line 1) | toJSON(t,e){let i=[];return t.between(0,e.doc.length,((t,e)=>{i.push(t,e... method fromJSON (line 1) | fromJSON(t){if(!Array.isArray(t)||t.length%2)throw new RangeError("Inval... function Jl (line 1) | function Jl(t,e,i){var n;let s=null;return null===(n=t.field(Gl,!1))||vo... function Xl (line 1) | function Xl(t,e,i){let n=!1;return t.between(e,e,((t,s)=>{t==e&&s==i&&(n... function Zl (line 1) | function Zl(t,e){return t.field(Gl,!1)?e:e.concat(ut.appendConfig.of(na(... function Yl (line 1) | function Yl(t,e,i=!0){let n=t.state.doc.lineAt(e.from).number,s=t.state.... function na (line 1) | function na(t){let e=[Gl,aa];return t&&e.push(ia.of(t)),e} method toDOM (line 1) | toDOM(t){let{state:e}=t,i=e.facet(ia),n=e=>{let i=t.lineBlockAt(t.posAtD... class oa (line 1) | class oa extends qr{constructor(t,e){super(),this.config=t,this.open=e}e... method constructor (line 1) | constructor(t,e){super(),this.config=t,this.open=e} method eq (line 1) | eq(t){return this.config==t.config&&this.open==t.open} method toDOM (line 1) | toDOM(t){if(this.config.markerDOM)return this.config.markerDOM(this.op... function la (line 1) | function la(t={}){let e=Object.assign(Object.assign({},ra),t),i=new oa(e... class ha (line 1) | class ha{constructor(t,e){let i;function n(t){let e=$t.newName();return(... method constructor (line 1) | constructor(t,e){let i;function n(t){let e=$t.newName();return(i||(i=O... method define (line 1) | static define(t,e){return new ha(t,e||{})} function fa (line 1) | function fa(t){let e=t.facet(ca);return e.length?e:t.facet(ua)} function da (line 1) | function da(t,e){let i,n=[ma];return t instanceof ha&&(t.module&&n.push(... class pa (line 1) | class pa{constructor(t){this.markCache=Object.create(null),this.tree=vl(... method constructor (line 1) | constructor(t){this.markCache=Object.create(null),this.tree=vl(t.state... method update (line 1) | update(t){let e=vl(t.state),i=fa(t.state),n=i!=fa(t.startState);e.leng... method buildDeco (line 1) | buildDeco(t,e){if(!e||!this.tree.length)return ii.none;let i=new Pt;fo... function ka (line 1) | function ka(t){let e=[],i=t.matched?ba:xa;return e.push(i.range(t.start.... method update (line 1) | update(t,e){if(!e.docChanged&&!e.selection)return t;let i=[],n=e.state.f... function Aa (line 1) | function Aa(t={}){return[ya.of(t),Ca]} function Oa (line 1) | function Oa(t,e,i){let n=t.prop(e<0?po.openedBy:po.closedBy);if(n)return... function Ma (line 1) | function Ma(t,e,i,n={}){let s=n.maxScanDistance||1e4,r=n.brackets||wa,o=... function Da (line 1) | function Da(t,e,i,n,s,r){let o=n.parent,l={from:n.from,to:n.to},a=0,h=nu... function Ba (line 1) | function Ba(t,e){Ra.indexOf(t)>-1||(Ra.push(t),console.warn(e))} function La (line 1) | function La(t,e){let i=null;for(let n of e.split(".")){let e=t[n]||ul[n]... function Na (line 1) | function Na(t,e){return({state:i,dispatch:n})=>{if(i.readOnly)return!1;l... function za (line 1) | function za(t,e=t.selection.main.head){let i=t.languageDataAt("commentTo... function Ha (line 1) | function Ha(t,e,i=e.selection.ranges){let n=i.map((t=>za(e,t.from).block... function Fa (line 1) | function Fa(t,e,i=e.selection.ranges){let n=[],s=-1;for(let{from:t,to:r}... method update (line 1) | update(t,e){let i=e.state.facet(Ua),n=e.annotation(qa);if(n){let s=e.doc... function Qa (line 1) | function Qa(t={}){return[$a,Ua.of(t),Ds.domEventHandlers({beforeinput(t,... function Ka (line 1) | function Ka(t,e){return function({state:i,dispatch:n}){if(!e&&i.readOnly... class Ya (line 1) | class Ya{constructor(t,e,i,n,s){this.changes=t,this.effects=e,this.mappe... method constructor (line 1) | constructor(t,e,i,n,s){this.changes=t,this.effects=e,this.mapped=i,thi... method setSelAfter (line 1) | setSelAfter(t){return new Ya(this.changes,this.effects,this.mapped,thi... method toJSON (line 1) | toJSON(){var t,e,i;return{changes:null===(t=this.changes)||void 0===t?... method fromJSON (line 1) | static fromJSON(t){return new Ya(t.changes&&C.fromJSON(t.changes),[],t... method fromTransaction (line 1) | static fromTransaction(t,e){let i=ih;for(let e of t.startState.facet(j... method selection (line 1) | static selection(t){return new Ya(void 0,ih,void 0,void 0,t)} function th (line 1) | function th(t,e,i,n){let s=e+1>i+20?e-i-1:0,r=t.slice(s,e);return r.push... function eh (line 1) | function eh(t,e){return t.length?e.length?t.concat(e):t:e} function nh (line 1) | function nh(t,e){if(t.length){let i=t[t.length-1],n=i.selectionsAfter.sl... function sh (line 1) | function sh(t){let e=t[t.length-1],i=t.slice();return i[t.length-1]=e.se... function rh (line 1) | function rh(t,e){if(!t.length)return t;let i=t.length,n=ih;for(;i;){let ... function oh (line 1) | function oh(t,e,i){let n=eh(t.selectionsAfter.length?t.selectionsAfter.m... class ah (line 1) | class ah{constructor(t,e,i=0,n){this.done=t,this.undone=e,this.prevTime=... method constructor (line 1) | constructor(t,e,i=0,n){this.done=t,this.undone=e,this.prevTime=i,this.... method isolate (line 1) | isolate(){return this.prevTime?new ah(this.done,this.undone):this} method addChanges (line 1) | addChanges(t,e,i,n,s){let r=this.done,o=r[r.length-1];return r=o&&o.ch... method addSelection (line 1) | addSelection(t,e,i,n){let s=this.done.length?this.done[this.done.lengt... method addMapping (line 1) | addMapping(t){return new ah(rh(this.done,t),rh(this.undone,t),this.pre... method pop (line 1) | pop(t,e,i){let n=0==t?this.done:this.undone;if(0==n.length)return null... function ch (line 1) | function ch(t,e){return E.create(t.ranges.map(e),t.mainIndex)} function uh (line 1) | function uh(t,e){return t.update({selection:e,scrollIntoView:!0,userEven... function fh (line 1) | function fh({state:t,dispatch:e},i){let n=ch(t.selection,i);return!n.eq(... function dh (line 1) | function dh(t,e){return E.cursor(e?t.to:t.from)} function ph (line 1) | function ph(t,e){return fh(t,(i=>i.empty?t.moveByChar(i,e):dh(i,e)))} function mh (line 1) | function mh(t){return t.textDirectionAt(t.state.selection.main.head)==Vi... function wh (line 1) | function wh(t,e){return fh(t,(i=>i.empty?t.moveByGroup(i,e):dh(i,e)))} function yh (line 1) | function yh(t,e,i){if(e.type.prop(i))return!0;let n=e.to-e.from;return n... function bh (line 1) | function bh(t,e,i){let n,s,r=vl(t).resolveInner(e.head),o=i?po.closedBy:... function xh (line 1) | function xh(t,e){return fh(t,(i=>{if(!i.empty)return dh(i,e);let n=t.mov... function Ch (line 1) | function Ch(t){return Math.max(t.defaultLineHeight,Math.min(t.dom.client... function Ah (line 1) | function Ah(t,e){let{state:i}=t,n=ch(i.selection,(i=>i.empty?t.moveVerti... function Dh (line 1) | function Dh(t,e,i){let n=t.lineBlockAt(e.head),s=t.moveToLineBoundary(e,... function Th (line 1) | function Th(t,e){let i=ch(t.state.selection,(t=>{let i=e(t);return E.ran... function Ph (line 1) | function Ph(t,e){return Th(t,(i=>t.moveByChar(i,e)))} function Bh (line 1) | function Bh(t,e){return Th(t,(i=>t.moveByGroup(i,e)))} function Lh (line 1) | function Lh(t,e){return Th(t,(i=>t.moveVertically(i,e)))} function Vh (line 1) | function Vh(t,e){return Th(t,(i=>t.moveVertically(i,e,Ch(t))))} function jh (line 1) | function jh(t,e){if(t.state.readOnly)return!1;let i="delete.selection",{... function Uh (line 1) | function Uh(t,e,i){if(t instanceof Ds)for(let n of t.state.facet(Ds.atom... function Zh (line 1) | function Zh(t){let e=[],i=-1;for(let n of t.selection.ranges){let s=t.do... function Yh (line 1) | function Yh(t,e,i){if(t.readOnly)return!1;let n=[],s=[];for(let e of Zh(... function tc (line 1) | function tc(t,e,i){if(t.readOnly)return!1;let n=[];for(let e of Zh(t))i?... function ic (line 1) | function ic(t){return({state:i,dispatch:n})=>{if(i.readOnly)return!1;let... function nc (line 1) | function nc(t,e){let i=-1;return t.changeByRange((n=>{let s=[];for(let r... function rc (line 1) | function rc(){var t=arguments[0];"string"==typeof t&&(t=document.createE... function oc (line 1) | function oc(t,e){if("string"==typeof e)t.appendChild(document.createText... class ac (line 1) | class ac{constructor(t,e,i=0,n=t.length,s,r){this.test=r,this.value={fro... method constructor (line 1) | constructor(t,e,i=0,n=t.length,s,r){this.test=r,this.value={from:0,to:... method peek (line 1) | peek(){if(this.bufferPos==this.buffer.length){if(this.bufferStart+=thi... method next (line 1) | next(){for(;this.matches.length;)this.matches.pop();return this.nextOv... method nextOverlapping (line 1) | nextOverlapping(){for(;;){let t=this.peek();if(t<0)return this.done=!0... method match (line 1) | match(t,e){let i=null;for(let n=0;n=i||n.to<=e){let n=new... class pc (line 1) | class pc{constructor(t,e,i,n,s){this.text=t,this.to=s,this.done=!1,this.... method constructor (line 1) | constructor(t,e,i,n,s){this.text=t,this.to=s,this.done=!1,this.value=h... method chunkEnd (line 1) | chunkEnd(t){return t>=this.to?this.to:this.text.lineAt(t).to} method next (line 1) | next(){for(;;){let t=this.re.lastIndex=this.matchPos-this.flat.from,e=... function mc (line 1) | function mc(t,e){if(e>=t.length)return e;let i,n=t.lineAt(e);for(;e"n"=... method eq (line 1) | eq(t){return this.search==t.search&&this.replace==t.replace&&this.case... method create (line 1) | create(){return this.regexp?new Ic(this):new Ec(this)} method getCursor (line 1) | getCursor(t,e=0,i){let n=t.doc?t:St.create({doc:t});return null==i&&(i... class Pc (line 1) | class Pc{constructor(t){this.spec=t}} method constructor (line 1) | constructor(t){this.spec=t} function Rc (line 1) | function Rc(t,e,i,n){return new ac(e.doc,t.unquoted,i,n,t.caseSensitive?... class Ec (line 1) | class Ec extends Pc{constructor(t){super(t)}nextMatch(t,e,i){let n=Rc(th... method constructor (line 1) | constructor(t){super(t)} method nextMatch (line 1) | nextMatch(t,e,i){let n=Rc(this.spec,t,i,t.doc.length).nextOverlapping(... method prevMatchInRange (line 1) | prevMatchInRange(t,e,i){for(let n=i;;){let i=Math.max(e,n-1e4-this.spe... method prevMatch (line 1) | prevMatch(t,e,i){return this.prevMatchInRange(t,0,e)||this.prevMatchIn... method getReplacement (line 1) | getReplacement(t){return this.spec.unquote(this.spec.replace)} method matchAll (line 1) | matchAll(t,e){let i=Rc(this.spec,t,0,t.doc.length),n=[];for(;!i.next()... method highlight (line 1) | highlight(t,e,i,n){let s=Rc(this.spec,t,Math.max(0,e-this.spec.unquote... function Bc (line 1) | function Bc(t,e,i,n){return new uc(e.doc,t.search,{ignoreCase:!t.caseSen... function Lc (line 1) | function Lc(t,e){return t.slice(d(t,e,!1),e)} function Nc (line 1) | function Nc(t,e){return t.slice(e,d(t,e))} class Ic (line 1) | class Ic extends Pc{nextMatch(t,e,i){let n=Bc(this.spec,t,i,t.doc.length... method nextMatch (line 1) | nextMatch(t,e,i){let n=Bc(this.spec,t,i,t.doc.length).next();return n.... method prevMatchInRange (line 1) | prevMatchInRange(t,e,i){for(let n=1;;n++){let s=Math.max(e,i-1e4*n),r=... method prevMatch (line 1) | prevMatch(t,e,i){return this.prevMatchInRange(t,0,e)||this.prevMatchIn... method getReplacement (line 1) | getReplacement(t){return this.spec.unquote(this.spec.replace.replace(/... method matchAll (line 1) | matchAll(t,e){let i=Bc(this.spec,t,0,t.doc.length),n=[];for(;!i.next()... method highlight (line 1) | highlight(t,e,i,n){let s=Bc(this.spec,t,Math.max(0,e-250),Math.min(i+2... method update (line 1) | update(t,e){for(let i of e.effects)i.is(Vc)?t=new Hc(i.value.create(),t.... class Hc (line 1) | class Hc{constructor(t,e){this.query=t,this.panel=e}} method constructor (line 1) | constructor(t,e){this.query=t,this.panel=e} method constructor (line 1) | constructor(t){this.view=t,this.decorations=this.highlight(t.state.field... method update (line 1) | update(t){let e=t.state.field(zc);(e!=t.startState.field(zc)||t.docChang... method highlight (line 1) | highlight({query:t,panel:e}){if(!e||!t.spec.valid)return ii.none;let{vie... function jc (line 1) | function jc(t){return e=>{let i=e.state.field(zc,!1);return i&&i.query.s... function Jc (line 1) | function Jc(t){return t.state.facet(Dc).createPanel(t)} function Xc (line 1) | function Xc(t,e){var i,n,s,r;let o=t.selection.main,l=o.empty||o.to>o.fr... class eu (line 1) | class eu{constructor(t){this.view=t;let e=this.query=t.state.field(zc).q... method constructor (line 1) | constructor(t){this.view=t;let e=this.query=t.state.field(zc).query.sp... method commit (line 1) | commit(){let t=new Tc({search:this.searchField.value,caseSensitive:thi... method keydown (line 1) | keydown(t){var e,i,n;e=this.view,i=t,n="search-panel",Hs(Ws(e.state),i... method update (line 1) | update(t){for(let e of t.transactions)for(let t of e.effects)t.is(Vc)&... method setQuery (line 1) | setQuery(t){this.query=t,this.searchField.value=t.search,this.replaceF... method mount (line 1) | mount(){this.searchField.select()} method pos (line 1) | get pos(){return 80} method top (line 1) | get top(){return this.view.state.facet(Dc).top} function iu (line 1) | function iu(t,e){return t.state.phrase(e)} function su (line 1) | function su(t,{from:e,to:i}){let n=t.state.doc.lineAt(e),s=t.state.doc.l... class lu (line 1) | class lu{constructor(t,e,i){this.state=t,this.pos=e,this.explicit=i,this... method constructor (line 1) | constructor(t,e,i){this.state=t,this.pos=e,this.explicit=i,this.abortL... method tokenBefore (line 1) | tokenBefore(t){let e=vl(this.state).resolveInner(this.pos,-1);for(;e&&... method matchBefore (line 1) | matchBefore(t){let e=this.state.doc.lineAt(this.pos),i=Math.max(e.from... method aborted (line 1) | get aborted(){return null==this.abortListeners} method addEventListener (line 1) | addEventListener(t,e){"abort"==t&&this.abortListeners&&this.abortListe... function au (line 1) | function au(t){let e=Object.keys(t).join(""),i=/\w/.test(e);return i&&(e... function hu (line 1) | function hu(t){let e=t.map((t=>"string"==typeof t?{label:t}:t)),[i,n]=e.... class cu (line 1) | class cu{constructor(t,e,i){this.completion=t,this.source=e,this.match=i}} method constructor (line 1) | constructor(t,e,i){this.completion=t,this.source=e,this.match=i} function uu (line 1) | function uu(t){return t.selection.main.head} function fu (line 1) | function fu(t,e){var i;let{source:n}=t,s=e&&"^"!=n[0],r="$"!=n[n.length-... function pu (line 1) | function pu(t,e){const i=e.completion.apply||e.completion.label;let n=e.... function gu (line 1) | function gu(t){if(!Array.isArray(t))return t;let e=mu.get(t);return e||m... class vu (line 1) | class vu{constructor(t){this.pattern=t,this.chars=[],this.folded=[],this... method constructor (line 1) | constructor(t){this.pattern=t,this.chars=[],this.folded=[],this.any=[]... method match (line 1) | match(t){if(0==this.pattern.length)return[0];if(t.length>1){le... class bu (line 1) | class bu{constructor(t,e){this.view=t,this.stateField=e,this.info=null,t... method constructor (line 1) | constructor(t,e){this.view=t,this.stateField=e,this.info=null,this.pla... method mount (line 1) | mount(){this.updateSel()} method update (line 1) | update(t){var e,i,n;let s=t.state.field(this.stateField),r=t.startStat... method positioned (line 1) | positioned(t){this.space=t,this.info&&this.view.requestMeasure(this.pl... method updateSel (line 1) | updateSel(){let t=this.view.state.field(this.stateField),e=t.open;if((... method addInfoPane (line 1) | addInfoPane(t){let e=this.info=document.createElement("div");e.classNa... method updateSelectedOption (line 1) | updateSelectedOption(t){let e=null;for(let i=this.list.firstChild,n=th... method measureInfo (line 1) | measureInfo(){let t=this.dom.querySelector("[aria-selected]");if(!t||!... method positionInfo (line 1) | positionInfo(t){this.info&&(t?(this.info.style.top=t.top,this.info.sty... method createListBox (line 1) | createListBox(t,e,i){const n=document.createElement("ul");n.id=e,n.set... function xu (line 1) | function xu(t){return 100*(t.boost||0)+(t.apply?10:0)+(t.info?5:0)+(t.ty... class ku (line 1) | class ku{constructor(t,e,i,n,s,r){this.options=t,this.attrs=e,this.toolt... method constructor (line 1) | constructor(t,e,i,n,s,r){this.options=t,this.attrs=e,this.tooltip=i,th... method setSelected (line 1) | setSelected(t,e){return t==this.selected||t>=this.options.length?this:... method build (line 1) | static build(t,e,i,n,s){let r=function(t,e){let i=[],n=0;for(let s of ... method map (line 1) | map(t){return new ku(this.options,this.attrs,Object.assign(Object.assi... class Su (line 1) | class Su{constructor(t,e,i){this.active=t,this.id=e,this.open=i}static s... method constructor (line 1) | constructor(t,e,i){this.active=t,this.id=e,this.open=i} method start (line 1) | static start(){return new Su(Ou,"cm-ac-"+Math.floor(2e6*Math.random())... method update (line 1) | update(t){let{state:e}=t,i=e.facet(wu),n=(i.override||e.languageDataAt... method tooltip (line 1) | get tooltip(){return this.open?this.open.tooltip:null} method attrs (line 1) | get attrs(){return this.open?this.open.attrs:Cu} function Au (line 1) | function Au(t,e){let i={"aria-autocomplete":"list","aria-haspopup":"list... function Mu (line 1) | function Mu(t){return t.isUserEvent("input.type")?"input":t.isUserEvent(... class Du (line 1) | class Du{constructor(t,e,i=-1){this.source=t,this.state=e,this.explicitP... method constructor (line 1) | constructor(t,e,i=-1){this.source=t,this.state=e,this.explicitPos=i} method hasResult (line 1) | hasResult(){return!1} method update (line 1) | update(t,e){let i=Mu(t),n=this;i?n=n.handleUserEvent(t,i,e):t.docChang... method handleUserEvent (line 1) | handleUserEvent(t,e,i){return"delete"!=e&&i.activateOnTyping?new Du(th... method handleChange (line 1) | handleChange(t){return t.changes.touchesRange(uu(t.startState))?new Du... method map (line 1) | map(t){return t.empty||this.explicitPos<0?this:new Du(this.source,this... class Tu (line 1) | class Tu extends Du{constructor(t,e,i,n,s){super(t,2,e),this.result=i,th... method constructor (line 1) | constructor(t,e,i,n,s){super(t,2,e),this.result=i,this.from=n,this.to=s} method hasResult (line 1) | hasResult(){return!0} method handleUserEvent (line 1) | handleUserEvent(t,e,i){var n;let s=t.changes.mapPos(this.from),r=t.cha... method handleChange (line 1) | handleChange(t){return t.changes.touchesRange(this.from,this.to)?new D... method map (line 1) | map(t){return t.empty?this:new Tu(this.source,this.explicitPos<0?-1:t.... function Nu (line 1) | function Nu(t,e="option"){return i=>{let n=i.state.field(Lu,!1);if(!n||!... class Iu (line 1) | class Iu{constructor(t,e){this.active=t,this.context=e,this.time=Date.no... method constructor (line 1) | constructor(t,e){this.active=t,this.context=e,this.time=Date.now(),thi... method constructor (line 1) | constructor(t){this.view=t,this.debounceUpdate=-1,this.running=[],this.d... method update (line 1) | update(t){let e=t.state.field(Lu);if(!t.selectionSet&&!t.docChanged&&t.s... method startUpdate (line 1) | startUpdate(){this.debounceUpdate=-1;let{state:t}=this.view,e=t.field(Lu... method startQuery (line 1) | startQuery(t){let{state:e}=this.view,i=uu(e),n=new lu(e,i,t.explicitPos=... method scheduleAccept (line 1) | scheduleAccept(){this.running.every((t=>void 0!==t.done))?this.accept():... method accept (line 1) | accept(){var t;this.debounceAccept>-1&&clearTimeout(this.debounceAccept)... method blur (line 1) | blur(){let t=this.view.state.field(Lu,!1);t&&t.tooltip&&this.view.state.... method compositionstart (line 1) | compositionstart(){this.composing=1} method compositionend (line 1) | compositionend(){3==this.composing&&setTimeout((()=>this.view.dispatch({... method map (line 1) | map(t,e){let i=e.mapPos(t,-1,k.TrackAfter);return null==i?void 0:i} method update (line 1) | update(t,e){if(e.selection){let i=e.state.doc.lineAt(e.selection.main.he... function Uu (line 1) | function Uu(t){for(let e=0;e... function Xu (line 1) | function Xu(t,e){let i=t.sliceString(e,e+2);return i.slice(0,b(w(i,0)))} function Zu (line 1) | function Zu(t,e,i,n){let s=null,r=t.changeByRange((r=>{if(!r.empty)retur... function Yu (line 1) | function Yu(t,e,i){let n=null,s=t.selection.ranges.map((e=>e.empty&&Xu(t... function tf (line 1) | function tf(t,e,i,n){let s=n.stringPrefixes||zu.stringPrefixes,r=null,o=... function ef (line 1) | function ef(t,e){let i=vl(t).resolveInner(e+1);return i.parent&&i.from==e} function nf (line 1) | function nf(t,e,i){let n=t.charCategorizer(e);if(n(t.sliceDoc(e-1,e))!=y... function sf (line 1) | function sf(t={}){return[Lu,wu.of(t),Vu,of,Wu]} class lf (line 1) | class lf{constructor(t,e,i){this.from=t,this.to=e,this.diagnostic=i}} method constructor (line 1) | constructor(t,e,i){this.from=t,this.to=e,this.diagnostic=i} class af (line 1) | class af{constructor(t,e,i){this.diagnostics=t,this.panel=e,this.selecte... method constructor (line 1) | constructor(t,e,i){this.diagnostics=t,this.panel=e,this.selected=i} method init (line 1) | static init(t,e,i){let n=t,s=i.facet(kf).markerFilter;s&&(n=s(n));let ... function hf (line 1) | function hf(t,e=null,i=0){let n=null;return t.between(i,1e9,((t,i,{spec:... function cf (line 1) | function cf(t,e){return!(!t.effects.some((t=>t.is(ff)))&&!t.changes.touc... function uf (line 1) | function uf(t,e){return t.field(mf,!1)?e:e.concat(ut.appendConfig.of([mf... method update (line 1) | update(t,e){if(e.docChanged){let i=t.diagnostics.map(e.changes),n=null;i... function vf (line 1) | function vf(t,e,i){let{diagnostics:n}=t.state.field(mf),s=[],r=2e8,o=0;n... function wf (line 1) | function wf(t,e){return rc("ul",{class:"cm-tooltip-lint"},e.map((e=>Cf(t... method constructor (line 1) | constructor(t){this.view=t,this.timeout=-1,this.set=!0;let{delay:e}=t.st... method run (line 1) | run(){let t=Date.now();if(te%3==0)).concat(this.st... method start (line 1) | static start(t,e,i=0){let n=t.parser.context;return new Rf(t,[],e,i,i,... method context (line 1) | get context(){return this.curContext?this.curContext.context:null} method pushState (line 1) | pushState(t,e){this.stack.push(this.state,e,this.bufferBase+this.buffe... method reduce (line 1) | reduce(t){let e=t>>19,i=65535&t,{parser:n}=this.p,s=n.dynamicPrecedenc... method storeNode (line 1) | storeNode(t,e,i,n=4,s=!1){if(0==t&&(!this.stack.length||this.stack[thi... method shift (line 1) | shift(t,e,i){let n=this.pos;if(131072&t)this.pushState(65535&t,this.po... method apply (line 1) | apply(t,e,i){65536&t?this.reduce(t):this.shift(t,e,i)} method useNode (line 1) | useNode(t,e){let i=this.p.reused.length-1;(i<0||this.p.reused[i]!=t)&&... method split (line 1) | split(){let t=this,e=t.buffer.length;for(;e>0&&t.buffer[e-2]>t.reduceP... method recoverByDelete (line 1) | recoverByDelete(t,e){let i=t<=this.p.parser.maxNode;i&&this.storeNode(... method canShift (line 1) | canShift(t){for(let e=new Lf(this);;){let i=this.p.parser.stateSlot(e.... method recoverByInsert (line 1) | recoverByInsert(t){if(this.stack.length>=300)return[];let e=this.p.par... method forceReduce (line 1) | forceReduce(){let t=this.p.parser.stateSlot(this.state,5);if(0==(65536... method forceAll (line 1) | forceAll(){for(;!this.p.parser.stateFlag(this.state,2);)if(!this.force... method deadEnd (line 1) | get deadEnd(){if(3!=this.stack.length)return!1;let{parser:t}=this.p;re... method restart (line 1) | restart(){this.state=this.stack[0],this.stack.length=0} method sameState (line 1) | sameState(t){if(this.state!=t.state||this.stack.length!=t.stack.length... method parser (line 1) | get parser(){return this.p.parser} method dialectEnabled (line 1) | dialectEnabled(t){return this.p.parser.dialect.flags[t]} method shiftContext (line 1) | shiftContext(t,e){this.curContext&&this.updateContext(this.curContext.... method reduceContext (line 1) | reduceContext(t,e){this.curContext&&this.updateContext(this.curContext... method emitContext (line 1) | emitContext(){let t=this.buffer.length-1;(t<0||-3!=this.buffer[t])&&th... method emitLookAhead (line 1) | emitLookAhead(){let t=this.buffer.length-1;(t<0||-4!=this.buffer[t])&&... method updateContext (line 1) | updateContext(t){if(t!=this.curContext.context){let e=new Ef(this.curC... method setLookAhead (line 1) | setLookAhead(t){t>this.lookAhead&&(this.emitLookAhead(),this.lookAhead... method close (line 1) | close(){this.curContext&&this.curContext.tracker.strict&&this.emitCont... class Ef (line 1) | class Ef{constructor(t,e){this.tracker=t,this.context=e,this.hash=t.stri... method constructor (line 1) | constructor(t,e){this.tracker=t,this.context=e,this.hash=t.strict?t.ha... class Lf (line 1) | class Lf{constructor(t){this.start=t,this.state=t.state,this.stack=t.sta... method constructor (line 1) | constructor(t){this.start=t,this.state=t.state,this.stack=t.stack,this... method reduce (line 1) | reduce(t){let e=65535&t,i=t>>19;0==i?(this.stack==this.start.stack&&(t... class Nf (line 1) | class Nf{constructor(t,e,i){this.stack=t,this.pos=e,this.index=i,this.bu... method constructor (line 1) | constructor(t,e,i){this.stack=t,this.pos=e,this.index=i,this.buffer=t.... method create (line 1) | static create(t,e=t.bufferBase+t.buffer.length){return new Nf(t,e,e-t.... method maybeNext (line 1) | maybeNext(){let t=this.stack.parent;null!=t&&(this.index=this.stack.bu... method id (line 1) | get id(){return this.buffer[this.index-4]} method start (line 1) | get start(){return this.buffer[this.index-3]} method end (line 1) | get end(){return this.buffer[this.index-2]} method size (line 1) | get size(){return this.buffer[this.index-1]} method next (line 1) | next(){this.index-=4,this.pos-=4,0==this.index&&this.maybeNext()} method fork (line 1) | fork(){return new Nf(this.stack,this.pos,this.index)} class If (line 1) | class If{constructor(){this.start=-1,this.value=-1,this.end=-1,this.exte... method constructor (line 1) | constructor(){this.start=-1,this.value=-1,this.end=-1,this.extended=-1... class Wf (line 1) | class Wf{constructor(t,e){this.input=t,this.ranges=e,this.chunk="",this.... method constructor (line 1) | constructor(t,e){this.input=t,this.ranges=e,this.chunk="",this.chunkOf... method resolveOffset (line 1) | resolveOffset(t,e){let i=this.range,n=this.rangeIndex,s=this.pos+t;for... method clipPos (line 1) | clipPos(t){if(t>=this.range.from&&t=0&&n=this.chunk2Pos&&this.pos=this.chunk.length&&(this.getChunk(),t... method advance (line 1) | advance(t=1){for(this.chunkOff+=t;this.pos+t>=this.range.to;){if(this.... method setDone (line 1) | setDone(){return this.pos=this.chunkPos=this.end,this.range=this.range... method reset (line 1) | reset(t,e){if(e?(this.token=e,e.start=t,e.lookAhead=t+1,e.value=e.exte... method read (line 1) | read(t,e){if(t>=this.chunkPos&&e<=this.chunkPos+this.chunk.length)retu... class zf (line 1) | class zf{constructor(t,e){this.data=t,this.id=e}token(t,e){!function(t,e... method constructor (line 1) | constructor(t,e){this.data=t,this.id=e} method token (line 1) | token(t,e){!function(t,e,i,n){let s=0,r=1<=n[0])return-1;for(let s=n[e+1]... method hasAction (line 1) | hasAction(t,e){let i=this.data;for(let n=0;n<2;n++)for(let s,r=this.st... method stateSlot (line 1) | stateSlot(t,e){return this.states[6*t+e]} method stateFlag (line 1) | stateFlag(t,e){return(this.stateSlot(t,0)&e)>0} method validAction (line 1) | validAction(t,e){if(e==this.stateSlot(t,4))return!0;for(let i=this.sta... method nextStates (line 1) | nextStates(t){let e=[];for(let i=this.stateSlot(t,1);;i+=3){if(65535==... method overrides (line 1) | overrides(t,e){let i=td(this.data,this.tokenPrecTable,e);return i<0||t... method configure (line 1) | configure(t){let e=Object.assign(Object.create(Zf.prototype),this);if(... method hasWrappers (line 1) | hasWrappers(){return this.wrappers.length>0} method getName (line 1) | getName(t){return this.termNames?this.termNames[t]:String(t<=this.maxN... method eofTerm (line 1) | get eofTerm(){return this.maxNode+1} method topNode (line 1) | get topNode(){return this.nodeSet.types[this.top[1]]} method dynamicPrecedence (line 1) | dynamicPrecedence(t){let e=this.dynamicPrecedences;return null==e?0:e[... method parseDialect (line 1) | parseDialect(t){let e=Object.keys(this.dialects),i=e.map((()=>!1));if(... method deserialize (line 1) | static deserialize(t){return new Zf(t)} function Yf (line 1) | function Yf(t,e){return t[e]|t[e+1]<<16} function td (line 1) | function td(t,e,i){for(let n,s=e;65535!=(n=t[s]);s++)if(n==i)return s-e;... function ed (line 1) | function ed(t){if(t.external){let e=t.extend?1:0;return(i,n)=>t.external... function id (line 1) | function id(t){return t>=65&&t<=90||t>=97&&t<=122||t>=48&&t<=57} function nd (line 1) | function nd(t,e,i){for(let n=!1;;){if(t.next<0)return;if(t.next==e&&!n)r... function sd (line 1) | function sd(t,e){for(;95==t.next||id(t.next);)null!=e&&(e+=String.fromCh... function rd (line 1) | function rd(t,e){for(;48==t.next||49==t.next;)t.advance();e&&t.next==e&&... function od (line 1) | function od(t,e){for(;;){if(46==t.next){if(e)break;e=!0}else if(t.next<4... function ld (line 1) | function ld(t){for(;!(t.next<0||10==t.next);)t.advance()} function ad (line 1) | function ad(t,e){for(let i=0;i{var i;let{next:n}=e;if(e.advance(),ad(... function md (line 1) | function md(t){let e=t.cursor().moveTo(t.from,-1);for(;/Comment/.test(e.... function gd (line 1) | function gd(t,e){let i=t.sliceString(e.from,e.to),n=/^([`'"])(.*)\1$/.ex... function vd (line 1) | function vd(t){return t&&("Identifier"==t.name||"QuotedIdentifier"==t.na... function wd (line 1) | function wd(t,e){if("CompositeIdentifier"==e.name){let i=[];for(let n=e.... function yd (line 1) | function yd(t,e){for(let i=[];;){if(!e||"."!=e.name)return i;let n=md(e)... function bd (line 1) | function bd(t,e){let i=vl(t).resolveInner(e,-1),n=function(t,e){let i;fo... class Cd (line 1) | class Cd{constructor(){this.list=[],this.children=void 0}child(t){let e=... method constructor (line 1) | constructor(){this.list=[],this.children=void 0} method child (line 1) | child(t){let e=this.children||(this.children=Object.create(null));retu... method childCompletions (line 1) | childCompletions(t){return this.children?Object.keys(this.children).fi... function Ad (line 1) | function Ad(t,e){let i=Object.keys(t).map((i=>({label:e?i.toUpperCase():... class Md (line 1) | class Md{constructor(t,e){this.dialect=t,this.language=e}get extension()... method constructor (line 1) | constructor(t,e){this.dialect=t,this.language=e} method extension (line 1) | get extension(){return this.language.extension} method define (line 1) | static define(t){let e=function(t,e,i,n){let s={};for(let e in ud)s[e]... function Dd (line 1) | function Dd(t,e=!1){return Ad(t.dialect.words,e)} function Td (line 1) | function Td(t,e=!1){return t.language.data.of({autocomplete:Dd(t,e)})} function Pd (line 1) | function Pd(t){return t.schema?function(t,e,i,n){let s=new Cd,r=s.child(... function Rd (line 1) | function Rd(t){return t.schema?(t.dialect||Bd).language.data.of({autocom... function Ed (line 1) | function Ed(t={}){let e=t.dialect||Bd;return new Ml(e.language,[Rd(t),Td... FILE: datasette/static/cm-editor-6.0.1.js function editorFromTextArea (line 20) | function editorFromTextArea(textarea, conf = {}) { FILE: datasette/static/column-chooser.js class ColumnChooser (line 1) | class ColumnChooser extends HTMLElement { method constructor (line 2) | constructor() { method open (line 407) | open({ columns, selected = [], onApply }) { method _close (line 422) | _close() { method _selectAll (line 430) | _selectAll() { method _deselectAll (line 438) | _deselectAll() { method _apply (line 446) | _apply() { method _render (line 454) | _render() { method _updateCounts (line 494) | _updateCounts() { method _startDrag (line 502) | _startDrag(e, idx) { method _positionGhost (line 531) | _positionGhost(cx, cy) { method _onMove (line 536) | _onMove(e) { method _onUp (line 544) | _onUp() { method _updateDropTarget (line 603) | _updateDropTarget(clientY) { method _clearDropIndicators (line 636) | _clearDropIndicators() { method _updateAutoScroll (line 642) | _updateAutoScroll(clientY) { method _stopAutoScroll (line 689) | _stopAutoScroll() { FILE: datasette/static/datasette-manager.js constant DATASETTE_EVENTS (line 2) | const DATASETTE_EVENTS = { constant DOM_SELECTORS (line 9) | const DOM_SELECTORS = { FILE: datasette/static/json-format-highlight-1.0.1.js function index (line 24) | function index(json, colorOptions) { FILE: datasette/static/mobile-column-actions.js function mobileColumnHeaders (line 5) | function mobileColumnHeaders(manager) { function mobileColumnMetaText (line 11) | function mobileColumnMetaText(th) { function createMobileColumnActionNode (line 25) | function createMobileColumnActionNode(itemConfig, closeDialog) { function initMobileColumnActions (line 49) | function initMobileColumnActions(manager) { FILE: datasette/static/navigation-search.js class NavigationSearch (line 1) | class NavigationSearch extends HTMLElement { method constructor (line 2) | constructor() { method render (line 13) | render() { method setupEventListeners (line 189) | setupEventListeners() { method isInputFocused (line 244) | isInputFocused() { method loadInitialData (line 254) | loadInitialData() { method handleSearch (line 268) | handleSearch(query) { method fetchResults (line 284) | async fetchResults(url, query) { method filterLocalItems (line 299) | filterLocalItems(query) { method renderResults (line 314) | renderResults() { method moveSelection (line 357) | moveSelection(direction) { method selectCurrentItem (line 365) | selectCurrentItem() { method selectItem (line 371) | selectItem(index) { method openMenu (line 390) | openMenu() { method closeMenu (line 404) | closeMenu() { method escapeHtml (line 409) | escapeHtml(text) { FILE: datasette/static/table.js function getParams (line 16) | function getParams() { function paramsToUrl (line 20) | function paramsToUrl(params) { function sortDescUrl (line 25) | function sortDescUrl(column) { function sortAscUrl (line 33) | function sortAscUrl(column) { function facetUrl (line 41) | function facetUrl(column) { function hideColumnUrl (line 47) | function hideColumnUrl(column) { function showAllColumnsUrl (line 53) | function showAllColumnsUrl() { function notBlankUrl (line 60) | function notBlankUrl(column) { function getDisplayedFacets (line 66) | function getDisplayedFacets() { function getColumnClassName (line 72) | function getColumnClassName(th) { function getColumnCells (line 78) | function getColumnCells(th) { function getColumnMeta (line 87) | function getColumnMeta(th) { function getColumnTypeText (line 96) | function getColumnTypeText(th) { function getSetColumnTypeData (line 105) | function getSetColumnTypeData() { function getSetColumnTypeConfig (line 109) | function getSetColumnTypeConfig(column) { function canSetColumnType (line 117) | function canSetColumnType() { function setColumnTypeActionLabel (line 121) | function setColumnTypeActionLabel(column) { function createSetColumnTypeOption (line 131) | function createSetColumnTypeOption(value, name, description, checked) { function setSetColumnTypeDialogBusy (line 159) | function setSetColumnTypeDialogBusy(state, isBusy) { function clearSetColumnTypeDialogError (line 171) | function clearSetColumnTypeDialogError(state) { function showSetColumnTypeDialogError (line 176) | function showSetColumnTypeDialogError(state, message) { function ensureSetColumnTypeDialog (line 181) | function ensureSetColumnTypeDialog() { function openSetColumnTypeDialog (line 293) | function openSetColumnTypeDialog(th) { function canChooseColumns (line 358) | function canChooseColumns() { function shouldShowShowAllColumns (line 364) | function shouldShowShowAllColumns() { function hasMultipleVisibleColumns (line 369) | function hasMultipleVisibleColumns(manager) { function buildColumnActionItems (line 377) | function buildColumnActionItems(manager, th, options) { function buildColumnActionState (line 469) | function buildColumnActionState(manager, th, options) { function initializeColumnActions (line 479) | function initializeColumnActions(manager) { function renderActionLink (line 500) | function renderActionLink(itemConfig) { function closeMenu (line 516) | function closeMenu() { function onTableHeaderClick (line 536) | function onTableHeaderClick(ev) { function addButtonsToFilterRows (line 638) | function addButtonsToFilterRows(manager) { function initAutocompleteForFilterValues (line 666) | function initAutocompleteForFilterValues(manager) { function openColumnChooser (line 703) | function openColumnChooser() { FILE: datasette/tokens.py class TokenRestrictions (line 22) | class TokenRestrictions: method allow_all (line 38) | def allow_all(self, action: str) -> "TokenRestrictions": method allow_database (line 43) | def allow_database(self, database: str, action: str) -> "TokenRestrict... method allow_resource (line 48) | def allow_resource( class TokenHandler (line 56) | class TokenHandler: method create_token (line 66) | async def create_token( method verify_token (line 77) | async def verify_token(self, datasette: "Datasette", token: str) -> Op... class SignedTokenHandler (line 85) | class SignedTokenHandler(TokenHandler): method create_token (line 92) | async def create_token( method verify_token (line 134) | async def verify_token(self, datasette: "Datasette", token: str) -> Op... FILE: datasette/tracer.py function get_task_id (line 16) | def get_task_id(): function trace_child_tasks (line 28) | def trace_child_tasks(): function trace (line 35) | def trace(trace_type, **kwargs): function capture_traces (line 69) | def capture_traces(tracer): class AsgiTracer (line 80) | class AsgiTracer: method __init__ (line 84) | def __init__(self, app): method __call__ (line 87) | async def __call__(self, scope, receive, send): FILE: datasette/url_builder.py class Urls (line 5) | class Urls: method __init__ (line 6) | def __init__(self, ds): method path (line 9) | def path(self, path, format=None): method instance (line 18) | def instance(self, format=None): method static (line 21) | def static(self, path): method static_plugins (line 24) | def static_plugins(self, plugin, path): method logout (line 27) | def logout(self): method database (line 30) | def database(self, database, format=None): method database_query (line 34) | def database_query(self, database, sql, format=None): method table (line 40) | def table(self, database, table, format=None): method query (line 46) | def query(self, database, query, format=None): method row (line 52) | def row(self, database, table, row_path, format=None): method row_blob (line 58) | def row_blob(self, database, table, row_path, column): FILE: datasette/utils/__init__.py class PaginatedResources (line 35) | class PaginatedResources: method all (line 48) | async def all(self): function documented (line 158) | def documented(fn): function await_me_maybe (line 164) | async def await_me_maybe(value: typing.Any) -> typing.Any: function urlsafe_components (line 173) | def urlsafe_components(token): function path_from_row_pks (line 178) | def path_from_row_pks(row, pks, use_rowid, quote=True): function compound_keys_after_sql (line 195) | def compound_keys_after_sql(pks, start_index=0): class CustomJSONEncoder (line 221) | class CustomJSONEncoder(json.JSONEncoder): method default (line 222) | def default(self, obj): function sqlite_timelimit (line 240) | def sqlite_timelimit(conn, ms): class InvalidSql (line 262) | class InvalidSql(Exception): function validate_sql_select (line 315) | def validate_sql_select(sql): function append_querystring (line 327) | def append_querystring(url, querystring): function path_with_added_args (line 332) | def path_with_added_args(request, args, path=None): function path_with_removed_args (line 348) | def path_with_removed_args(request, args, path=None): function path_with_replaced_args (line 377) | def path_with_replaced_args(request, args, path=None): function escape_css_string (line 397) | def escape_css_string(s): function escape_sqlite (line 404) | def escape_sqlite(s): function make_dockerfile (line 411) | def make_dockerfile( function temporary_docker_directory (line 497) | def temporary_docker_directory( function detect_primary_keys (line 577) | def detect_primary_keys(conn, table): function get_outbound_foreign_keys (line 585) | def get_outbound_foreign_keys(conn, table): function get_all_foreign_keys (line 613) | def get_all_foreign_keys(conn): function detect_spatialite (line 652) | def detect_spatialite(conn): function detect_fts (line 659) | def detect_fts(conn, table): function detect_fts_sql (line 668) | def detect_fts_sql(table): function detect_json1 (line 683) | def detect_json1(conn=None): function table_columns (line 693) | def table_columns(conn, table): function table_column_details (line 697) | def table_column_details(conn, table): function filters_should_redirect (line 722) | def filters_should_redirect(special_args): function is_url (line 759) | def is_url(value): function to_css_class (line 775) | def to_css_class(s): function link_or_copy (line 798) | def link_or_copy(src, dst): function link_or_copy_directory (line 808) | def link_or_copy_directory(src, dst): function module_from_path (line 815) | def module_from_path(path, name): function path_with_format (line 825) | def path_with_format( class CustomRow (line 847) | class CustomRow(OrderedDict): method __init__ (line 850) | def __init__(self, columns, values=None): method __getitem__ (line 855) | def __getitem__(self, key): method __iter__ (line 861) | def __iter__(self): function value_as_boolean (line 866) | def value_as_boolean(value): class ValueAsBooleanError (line 872) | class ValueAsBooleanError(ValueError): class WriteLimitExceeded (line 876) | class WriteLimitExceeded(Exception): class LimitedWriter (line 880) | class LimitedWriter: method __init__ (line 881) | def __init__(self, writer, limit_mb): method write (line 886) | async def write(self, bytes): class EscapeHtmlWriter (line 893) | class EscapeHtmlWriter: method __init__ (line 894) | def __init__(self, writer): method write (line 897) | async def write(self, content): function remove_infinites (line 904) | def remove_infinites(row): class StaticMount (line 927) | class StaticMount(click.ParamType): method convert (line 930) | def convert(self, value, param, ctx): class LoadExtension (line 946) | class LoadExtension(click.ParamType): method convert (line 949) | def convert(self, value, param, ctx): function format_bytes (line 956) | def format_bytes(bytes): function escape_fts (line 971) | def escape_fts(query): class MultiParams (line 982) | class MultiParams: method __init__ (line 983) | def __init__(self, data): method __repr__ (line 1001) | def __repr__(self): method __contains__ (line 1004) | def __contains__(self, key): method __getitem__ (line 1007) | def __getitem__(self, key): method keys (line 1010) | def keys(self): method __iter__ (line 1013) | def __iter__(self): method __len__ (line 1016) | def __len__(self): method get (line 1019) | def get(self, name, default=None): method getlist (line 1026) | def getlist(self, name): class ConnectionProblem (line 1031) | class ConnectionProblem(Exception): class SpatialiteConnectionProblem (line 1035) | class SpatialiteConnectionProblem(ConnectionProblem): function check_connection (line 1039) | def check_connection(conn): class BadMetadataError (line 1058) | class BadMetadataError(Exception): function parse_metadata (line 1063) | def parse_metadata(content: str) -> dict: function _gather_arguments (line 1075) | def _gather_arguments(fn, kwargs): function call_with_supported_arguments (line 1089) | def call_with_supported_arguments(fn, **kwargs): function async_call_with_supported_arguments (line 1094) | async def async_call_with_supported_arguments(fn, **kwargs): function actor_matches_allow (line 1099) | def actor_matches_allow(actor, allow): function resolve_env_secrets (line 1125) | def resolve_env_secrets(config, environ): function display_actor (line 1144) | def display_actor(actor): class SpatialiteNotFound (line 1151) | class SpatialiteNotFound(Exception): function find_spatialite (line 1156) | def find_spatialite(): function initial_path_for_datasette (line 1163) | async def initial_path_for_datasette(datasette): class PrefixedUrlString (line 1179) | class PrefixedUrlString(str): method __add__ (line 1180) | def __add__(self, other): method __str__ (line 1183) | def __str__(self): method __getattribute__ (line 1186) | def __getattribute__(self, name): class StartupError (line 1205) | class StartupError(Exception): function named_parameters (line 1217) | def named_parameters(sql: str) -> List[str]: function derive_named_parameters (line 1231) | async def derive_named_parameters(db: "Database", sql: str) -> List[str]: function add_cors_headers (line 1239) | def add_cors_headers(headers): class TildeEncoder (line 1258) | class TildeEncoder(dict): method __missing__ (line 1260) | def __missing__(self, b): function tilde_encode (line 1276) | def tilde_encode(s: str) -> str: function tilde_decode (line 1282) | def tilde_decode(s: str) -> str: function resolve_routes (line 1291) | def resolve_routes(routes, path): function truncate_url (line 1299) | def truncate_url(url, length): function row_sql_params_pks (line 1309) | async def row_sql_params_pks(db, table, pk_values): function _handle_pair (line 1324) | def _handle_pair(key: str, value: str) -> dict: function _combine (line 1350) | def _combine(base: dict, update: dict) -> dict: function pairs_to_nested_config (line 1362) | def pairs_to_nested_config(pairs: typing.List[typing.Tuple[str, typing.A... function make_slot_function (line 1373) | def make_slot_function(name, datasette, request, **kwargs): function prune_empty_dicts (line 1390) | def prune_empty_dicts(d: dict): function move_plugins_and_allow (line 1401) | def move_plugins_and_allow(source: dict, destination: dict) -> Tuple[dic... function move_table_config (line 1449) | def move_table_config(metadata: dict, config: dict): function redact_keys (line 1474) | def redact_keys(original: dict, key_patterns: Iterable) -> dict: function md5_not_usedforsecurity (line 1501) | def md5_not_usedforsecurity(s): function calculate_etag (line 1512) | async def calculate_etag(filepath, chunk_size=4096): function deep_dict_update (line 1530) | def deep_dict_update(dict1, dict2): FILE: datasette/utils/actions_sql.py function build_allowed_resources_sql (line 32) | async def build_allowed_resources_sql( function _build_single_action_sql (line 130) | async def _build_single_action_sql( function build_permission_rules_sql (line 426) | async def build_permission_rules_sql( function check_permission_for_resource (line 490) | async def check_permission_for_resource( FILE: datasette/utils/asgi.py class Base400 (line 33) | class Base400(Exception): class NotFound (line 37) | class NotFound(Base400): class DatabaseNotFound (line 41) | class DatabaseNotFound(NotFound): method __init__ (line 42) | def __init__(self, database_name): class TableNotFound (line 47) | class TableNotFound(NotFound): method __init__ (line 48) | def __init__(self, database_name, table): class RowNotFound (line 54) | class RowNotFound(NotFound): method __init__ (line 55) | def __init__(self, database_name, table, pk_values): class Forbidden (line 62) | class Forbidden(Base400): class BadRequest (line 66) | class BadRequest(Base400): class Request (line 73) | class Request: method __init__ (line 74) | def __init__(self, scope, receive): method __repr__ (line 78) | def __repr__(self): method method (line 82) | def method(self): method url (line 86) | def url(self): method url_vars (line 92) | def url_vars(self): method scheme (line 96) | def scheme(self): method headers (line 100) | def headers(self): method host (line 107) | def host(self): method cookies (line 111) | def cookies(self): method path (line 117) | def path(self): method query_string (line 128) | def query_string(self): method full_path (line 132) | def full_path(self): method args (line 137) | def args(self): method actor (line 141) | def actor(self): method post_body (line 144) | async def post_body(self): method post_vars (line 154) | async def post_vars(self): method form (line 158) | async def form( method fake (line 224) | def fake(cls, path_with_query_string, method="GET", scheme="http", url... class AsgiLifespan (line 241) | class AsgiLifespan: method __init__ (line 242) | def __init__(self, app, on_startup=None, on_shutdown=None): method __call__ (line 253) | async def __call__(self, scope, receive, send): class AsgiStream (line 270) | class AsgiStream: method __init__ (line 271) | def __init__(self, stream_fn, status=200, headers=None, content_type="... method asgi_send (line 277) | async def asgi_send(self, send): class AsgiWriter (line 296) | class AsgiWriter: method __init__ (line 297) | def __init__(self, send): method write (line 300) | async def write(self, chunk): function asgi_send_json (line 310) | async def asgi_send_json(send, info, status=200, headers=None): function asgi_send_html (line 321) | async def asgi_send_html(send, html, status=200, headers=None): function asgi_send_redirect (line 332) | async def asgi_send_redirect(send, location, status=302): function asgi_send (line 345) | async def asgi_send(send, content, status, headers=None, content_type="t... function asgi_start (line 350) | async def asgi_start(send, status, headers=None, content_type="text/plai... function asgi_send_file (line 367) | async def asgi_send_file( function asgi_static (line 394) | def asgi_static(root_path, chunk_size=4096, headers=None, content_type=N... class Response (line 435) | class Response: method __init__ (line 436) | def __init__(self, body=None, status=200, headers=None, content_type="... method asgi_send (line 443) | async def asgi_send(self, send): method set_cookie (line 465) | def set_cookie( method html (line 497) | def html(cls, body, status=200, headers=None): method text (line 506) | def text(cls, body, status=200, headers=None): method json (line 515) | def json(cls, body, status=200, headers=None, default=None): method redirect (line 524) | def redirect(cls, path, status=302, headers=None): class AsgiFileDownload (line 530) | class AsgiFileDownload: method __init__ (line 531) | def __init__( method asgi_send (line 543) | async def asgi_send(self, send): class AsgiRunOnFirstRequest (line 553) | class AsgiRunOnFirstRequest: method __init__ (line 554) | def __init__(self, asgi, on_startup): method __call__ (line 560) | async def __call__(self, scope, receive, send): FILE: datasette/utils/baseconv.py class BaseConverter (line 16) | class BaseConverter(object): method __init__ (line 19) | def __init__(self, digits): method encode (line 22) | def encode(self, i): method decode (line 25) | def decode(self, s): method convert (line 28) | def convert(number, fromdigits, todigits): FILE: datasette/utils/check_callable.py class CallableStatus (line 6) | class CallableStatus(NamedTuple): function check_callable (line 11) | def check_callable(obj: Any) -> CallableStatus: FILE: datasette/utils/internal_db.py function init_internal_db (line 5) | async def init_internal_db(db): function initialize_metadata_tables (line 75) | async def initialize_metadata_tables(db): function populate_schema_tables (line 118) | async def populate_schema_tables(internal_db, db): FILE: datasette/utils/multipart.py class MultipartParseError (line 40) | class MultipartParseError(Exception): class UploadedFile (line 47) | class UploadedFile: method read (line 64) | async def read(self, size: int = -1) -> bytes: method seek (line 68) | async def seek(self, offset: int, whence: int = 0) -> int: method close (line 72) | async def close(self) -> None: method close_sync (line 76) | def close_sync(self) -> None: method __aenter__ (line 80) | async def __aenter__(self): method __aexit__ (line 83) | async def __aexit__(self, exc_type, exc, tb): method __del__ (line 86) | def __del__(self): class FormData (line 93) | class FormData: method __init__ (line 100) | def __init__(self): method append (line 103) | def append(self, key: str, value: Union[str, UploadedFile]) -> None: method __getitem__ (line 107) | def __getitem__(self, key: str) -> Union[str, UploadedFile]: method get (line 114) | def get(self, key: str, default: Any = None) -> Optional[Union[str, Up... method getlist (line 121) | def getlist(self, key: str) -> List[Union[str, UploadedFile]]: method __contains__ (line 125) | def __contains__(self, key: str) -> bool: method __len__ (line 129) | def __len__(self) -> int: method __iter__ (line 133) | def __iter__(self): method keys (line 141) | def keys(self): method items (line 145) | def items(self) -> List[Tuple[str, Union[str, UploadedFile]]]: method values (line 149) | def values(self) -> List[Union[str, UploadedFile]]: method _uploaded_files (line 153) | def _uploaded_files(self) -> List[UploadedFile]: method close (line 157) | def close(self) -> None: method aclose (line 170) | async def aclose(self) -> None: method __enter__ (line 179) | def __enter__(self): method __exit__ (line 182) | def __exit__(self, exc_type, exc, tb): method __aenter__ (line 185) | async def __aenter__(self): method __aexit__ (line 188) | async def __aexit__(self, exc_type, exc, tb): function parse_content_disposition (line 192) | def parse_content_disposition(header: str) -> Dict[str, Optional[str]]: function parse_content_type (line 266) | def parse_content_type(header: str) -> Tuple[str, Dict[str, str]]: class MultipartParser (line 290) | class MultipartParser: method __init__ (line 303) | def __init__( method feed (line 358) | def feed(self, chunk: bytes) -> None: method _process (line 367) | def _process(self) -> None: method _process_preamble (line 382) | def _process_preamble(self) -> bool: method _process_header (line 416) | def _process_header(self) -> bool: method _start_body (line 464) | def _start_body(self) -> None: method _process_body (line 502) | def _process_body(self) -> bool: method _write_body_data (line 557) | def _write_body_data(self, data: bytes) -> None: method _finish_part (line 581) | def _finish_part(self) -> None: method finalize (line 614) | def finalize(self) -> FormData: method _ensure_disk_space (line 624) | def _ensure_disk_space(self) -> None: function parse_form_data (line 639) | async def parse_form_data( FILE: datasette/utils/permissions.py function gather_permission_sql_from_hooks (line 16) | async def gather_permission_sql_from_hooks( function _plugin_name_from_hookimpl (line 57) | def _plugin_name_from_hookimpl(hookimpl) -> str: function _iter_permission_sql_from_result (line 66) | def _iter_permission_sql_from_result( function build_rules_union (line 91) | def build_rules_union( function resolve_permissions_from_catalog (line 138) | async def resolve_permissions_from_catalog( function resolve_permissions_with_candidates (line 397) | async def resolve_permissions_with_candidates( FILE: datasette/utils/shutil_backport.py function _copytree (line 12) | def _copytree( function copytree (line 83) | def copytree( FILE: datasette/utils/sqlite.py function sqlite_version (line 15) | def sqlite_version(): function _sqlite_version (line 22) | def _sqlite_version(): function supports_table_xinfo (line 34) | def supports_table_xinfo(): function supports_generated_columns (line 38) | def supports_generated_columns(): FILE: datasette/utils/testing.py class TestResponse (line 11) | class TestResponse: method __init__ (line 12) | def __init__(self, httpx_response): method status (line 16) | def status(self): method status_code (line 21) | def status_code(self): method headers (line 25) | def headers(self): method body (line 29) | def body(self): method content (line 33) | def content(self): method cookies (line 37) | def cookies(self): method json (line 41) | def json(self): method text (line 45) | def text(self): class TestClient (line 49) | class TestClient: method __init__ (line 52) | def __init__(self, ds): method actor_cookie (line 55) | def actor_cookie(self, actor): method get (line 59) | async def get( method post (line 83) | async def post( method request (line 121) | async def request( method _request (line 145) | async def _request( FILE: datasette/views/__init__.py class Context (line 1) | class Context: FILE: datasette/views/base.py class DatasetteError (line 34) | class DatasetteError(Exception): method __init__ (line 35) | def __init__( class View (line 51) | class View: method head (line 52) | async def head(self, request, datasette): method method_not_allowed (line 59) | async def method_not_allowed(self, request): method options (line 71) | async def options(self, request, datasette): method __call__ (line 80) | async def __call__(self, request, datasette): class BaseView (line 88) | class BaseView: method __init__ (line 92) | def __init__(self, datasette): method head (line 95) | async def head(self, *args, **kwargs): method method_not_allowed (line 100) | async def method_not_allowed(self, request): method options (line 112) | async def options(self, request, *args, **kwargs): method get (line 115) | async def get(self, request, *args, **kwargs): method post (line 118) | async def post(self, request, *args, **kwargs): method put (line 121) | async def put(self, request, *args, **kwargs): method patch (line 124) | async def patch(self, request, *args, **kwargs): method delete (line 127) | async def delete(self, request, *args, **kwargs): method dispatch_request (line 130) | async def dispatch_request(self, request): method render (line 139) | async def render(self, templates, request, context=None): method as_view (line 177) | def as_view(cls, *class_args, **class_kwargs): class DataView (line 189) | class DataView(BaseView): method redirect (line 192) | def redirect(self, request, path, forward_querystring=True, remove_arg... method data (line 203) | async def data(self, request): method as_csv (line 206) | async def as_csv(self, request, database): method get (line 209) | async def get(self, request): method set_response_headers (line 387) | def set_response_headers(self, response, ttl): function _error (line 402) | def _error(messages, status=400): function stream_csv (line 406) | async def stream_csv(datasette, fetch_data, request, database): FILE: datasette/views/database.py class DatabaseView (line 41) | class DatabaseView(View): method get (line 42) | async def get(self, request, datasette): class DatabaseContext (line 211) | class DatabaseContext(Context): class QueryContext (line 260) | class QueryContext(Context): function get_tables (line 341) | async def get_tables(datasette, request, db, allowed_dict): function database_download (line 377) | async def database_download(request, datasette): class QueryView (line 417) | class QueryView(View): method post (line 418) | async def post(self, request, datasette): method get (line 512) | async def get(self, request, datasette): class MagicParameters (line 876) | class MagicParameters(dict): method __init__ (line 877) | def __init__(self, sql, data, request, datasette): method execute_params (line 888) | async def execute_params(self): method __len__ (line 898) | def __len__(self): method __getitem__ (line 903) | def __getitem__(self, key): class TableCreateView (line 918) | class TableCreateView(BaseView): method __init__ (line 941) | def __init__(self, datasette): method post (line 944) | async def post(self, request): function _table_columns (line 1173) | async def _table_columns(datasette, database_name): function display_rows (line 1189) | async def display_rows(datasette, database, request, rows, columns): FILE: datasette/views/index.py class IndexView (line 22) | class IndexView(BaseView): method get (line 25) | async def get(self, request): FILE: datasette/views/row.py class RowView (line 20) | class RowView(DataView): method data (line 23) | async def data(self, request, default_labels=False): method foreign_key_tables (line 231) | async def foreign_key_tables(self, database, table, pk_values): class RowError (line 278) | class RowError(Exception): method __init__ (line 279) | def __init__(self, error): function _resolve_row_and_check_permission (line 283) | async def _resolve_row_and_check_permission(datasette, request, permissi... class RowDeleteView (line 306) | class RowDeleteView(BaseView): method __init__ (line 309) | def __init__(self, datasette): method post (line 312) | async def post(self, request): class RowUpdateView (line 340) | class RowUpdateView(BaseView): method __init__ (line 343) | def __init__(self, datasette): method post (line 346) | async def post(self, request): FILE: datasette/views/special.py function _resource_path (line 19) | def _resource_path(parent, child): class JsonDataView (line 27) | class JsonDataView(BaseView): method __init__ (line 31) | def __init__( method get (line 48) | async def get(self, request): class PatternPortfolioView (line 79) | class PatternPortfolioView(View): method get (line 80) | async def get(self, request, datasette): class AuthTokenView (line 91) | class AuthTokenView(BaseView): method get (line 95) | async def get(self, request): class LogoutView (line 113) | class LogoutView(BaseView): method get (line 117) | async def get(self, request): method post (line 126) | async def post(self, request): class PermissionsDebugView (line 134) | class PermissionsDebugView(BaseView): method get (line 138) | async def get(self, request): method post (line 176) | async def post(self, request): class AllowedResourcesView (line 191) | class AllowedResourcesView(BaseView): method get (line 195) | async def get(self, request): method _allowed_payload (line 241) | async def _allowed_payload(self, request, has_debug_permission): class PermissionRulesView (line 356) | class PermissionRulesView(BaseView): method get (line 360) | async def get(self, request): function _check_permission_for_actor (line 480) | async def _check_permission_for_actor(ds, action, parent, child, actor): class PermissionCheckView (line 524) | class PermissionCheckView(BaseView): method get (line 528) | async def get(self, request): class AllowDebugView (line 556) | class AllowDebugView(BaseView): method get (line 560) | async def get(self, request): class MessagesDebugView (line 594) | class MessagesDebugView(BaseView): method get (line 598) | async def get(self, request): method post (line 602) | async def post(self, request): class CreateTokenView (line 618) | class CreateTokenView(BaseView): method check_permission (line 622) | def check_permission(self, request): method shared (line 636) | async def shared(self, request): method get (line 682) | async def get(self, request): method post (line 688) | async def post(self, request): class ApiExplorerView (line 750) | class ApiExplorerView(BaseView): method example_links (line 754) | async def example_links(self, request): method get (line 874) | async def get(self, request): class TablesView (line 904) | class TablesView(BaseView): method get (line 916) | async def get(self, request): class SchemaBaseView (line 977) | class SchemaBaseView(BaseView): method get_database_schema (line 982) | async def get_database_schema(self, database_name): method format_json_response (line 991) | def format_json_response(self, data): method format_error_response (line 998) | def format_error_response(self, error_message, format_, status=404): method format_markdown_response (line 1010) | def format_markdown_response(self, heading, schema): method format_html_response (line 1017) | async def format_html_response( class InstanceSchemaView (line 1030) | class InstanceSchemaView(SchemaBaseView): method get (line 1038) | async def get(self, request): class DatabaseSchemaView (line 1069) | class DatabaseSchemaView(SchemaBaseView): method get (line 1077) | async def get(self, request): class TableSchemaView (line 1105) | class TableSchemaView(SchemaBaseView): method get (line 1113) | async def get(self, request): FILE: datasette/views/table.py class Row (line 56) | class Row: method __init__ (line 57) | def __init__(self, cells): method __iter__ (line 60) | def __iter__(self): method __getitem__ (line 63) | def __getitem__(self, key): method display (line 69) | def display(self, key): method __str__ (line 75) | def __str__(self): function run_sequential (line 85) | async def run_sequential(*args): function _redirect (line 95) | def _redirect(datasette, request, path, forward_querystring=True, remove... function _redirect_if_needed (line 107) | async def _redirect_if_needed(datasette, request, resolved): function _validate_column_types (line 137) | async def _validate_column_types(datasette, database_name, table_name, r... function display_columns_and_rows (line 153) | async def display_columns_and_rows( class TableInsertView (line 378) | class TableInsertView(BaseView): method __init__ (line 381) | def __init__(self, datasette): method _validate_data (line 384) | async def _validate_data(self, request, db, table_name, pks, upsert): method post (line 475) | async def post(self, request, upsert=False): class TableUpsertView (line 662) | class TableUpsertView(TableInsertView): method post (line 665) | async def post(self, request): class TableSetColumnTypeView (line 669) | class TableSetColumnTypeView(BaseView): method __init__ (line 672) | def __init__(self, datasette): method post (line 675) | async def post(self, request): class TableDropView (line 785) | class TableDropView(BaseView): method __init__ (line 788) | def __init__(self, datasette): method post (line 791) | async def post(self, request): function _get_extras (line 845) | def _get_extras(request): function _columns_to_select (line 853) | async def _columns_to_select(table_columns, pks, request): function _sortable_columns_for_table (line 885) | async def _sortable_columns_for_table(datasette, database_name, table_na... function _sort_order (line 897) | async def _sort_order(table_metadata, sortable_columns, request, order_by): function table_view (line 925) | async def table_view(datasette, request): function table_view_traced (line 953) | async def table_view_traced(datasette, request): function table_view_data (line 1123) | async def table_view_data( function _next_value_and_url (line 2066) | async def _next_value_and_url( FILE: demos/plugins/example_js_manager_plugins.py function extra_js_urls (line 14) | def extra_js_urls(view_name): FILE: demos/plugins/static/table-example-plugins.js function copyToClipboard (line 93) | async function copyToClipboard(str) { FILE: docs/metadata_doc.py function metadata_example (line 7) | def metadata_example(cog, data=None, yaml=None): function config_example (line 27) | def config_example( function internal_schema (line 45) | def internal_schema(cog): FILE: tests/build_small_spatialite_db.py function generate_it (line 6) | def generate_it(filename): FILE: tests/conftest.py function wait_until_responds (line 34) | def wait_until_responds(url, timeout=5.0, client=httpx, **kwargs): function ds_client (line 46) | async def ds_client(): function pytest_report_header (line 91) | def pytest_report_header(config): function pytest_configure (line 97) | def pytest_configure(config): function pytest_unconfigure (line 103) | def pytest_unconfigure(config): function pytest_collection_modifyitems (line 109) | def pytest_collection_modifyitems(items): function move_to_front (line 122) | def move_to_front(items, test_name): function restore_working_directory (line 129) | def restore_working_directory(tmpdir, request): function check_actions_are_documented (line 145) | def check_actions_are_documented(): class TrackEventPlugin (line 175) | class TrackEventPlugin: class OneEvent (line 179) | class OneEvent(Event): method register_events (line 185) | def register_events(self, datasette): method track_event (line 192) | def track_event(self, datasette, event): function install_event_tracking_plugin (line 198) | def install_event_tracking_plugin(): function ds_localhost_http_server (line 205) | def ds_localhost_http_server(): function ds_unix_domain_socket_server (line 222) | def ds_unix_domain_socket_server(tmp_path_factory): FILE: tests/ext.c function SQLITE_EXTENSION_INIT1 (line 15) | SQLITE_EXTENSION_INIT1 function sqlite3_ext_init (line 25) | __declspec(dllexport) function sqlite3_ext_b_init (line 34) | __declspec(dllexport) function sqlite3_ext_c_init (line 43) | __declspec(dllexport) FILE: tests/fixtures.py function make_app_client (line 108) | def make_app_client( function app_client (line 182) | def app_client(): function app_client_no_files (line 188) | def app_client_no_files(): function app_client_base_url_prefix (line 194) | def app_client_base_url_prefix(): function app_client_two_attached_databases (line 200) | def app_client_two_attached_databases(): function app_client_two_attached_databases_crossdb_enabled (line 208) | def app_client_two_attached_databases_crossdb_enabled(): function app_client_conflicting_database_names (line 217) | def app_client_conflicting_database_names(): function app_client_two_attached_databases_one_immutable (line 225) | def app_client_two_attached_databases_one_immutable(): function app_client_with_trace (line 233) | def app_client_with_trace(): function app_client_shorter_time_limit (line 239) | def app_client_shorter_time_limit(): function app_client_returned_rows_matches_page_size (line 245) | def app_client_returned_rows_matches_page_size(): function app_client_larger_cache_size (line 251) | def app_client_larger_cache_size(): function app_client_csv_max_mb_one (line 257) | def app_client_csv_max_mb_one(): function app_client_with_dot (line 263) | def app_client_with_dot(): function app_client_with_cors (line 269) | def app_client_with_cors(): function app_client_immutable_and_inspect_file (line 275) | def app_client_immutable_and_inspect_file(): function generate_compound_rows (line 281) | def generate_compound_rows(num): function generate_sortable_rows (line 288) | def generate_sortable_rows(num): function assert_permissions_checked (line 741) | def assert_permissions_checked(datasette, actions): function cli (line 808) | def cli(db_filename, config, metadata, plugins_path, recreate, extra_db_... FILE: tests/plugins/messages_output_renderer.py function render_message_debug (line 4) | def render_message_debug(datasette, request): function register_output_renderer (line 14) | def register_output_renderer(datasette): FILE: tests/plugins/my_plugin.py function prepare_connection (line 16) | def prepare_connection(conn, database, datasette): function extra_css_urls (line 38) | def extra_css_urls(template, database, table, view_name, columns, reques... function extra_js_urls (line 66) | def extra_js_urls(): function extra_body_script (line 78) | def extra_body_script( function render_cell (line 108) | def render_cell(row, value, column, table, pks, database, datasette, req... function extra_template_vars (line 138) | def extra_template_vars( function prepare_jinja2_environment (line 154) | def prepare_jinja2_environment(env, datasette): function register_facet_classes (line 166) | def register_facet_classes(): class DummyFacet (line 170) | class DummyFacet(Facet): method suggest (line 173) | async def suggest(self): method facet_results (line 191) | async def facet_results(self): function actor_from_request (line 198) | def actor_from_request(datasette, request): function asgi_wrapper (line 206) | def asgi_wrapper(): function register_routes (line 220) | def register_routes(): function startup (line 304) | def startup(datasette): function canned_queries (line 318) | def canned_queries(datasette, database, actor): function register_magic_parameters (line 323) | def register_magic_parameters(): function forbidden (line 349) | def forbidden(datasette, request, message): function menu_links (line 356) | def menu_links(datasette, actor, request): function table_actions (line 365) | def table_actions(datasette, database, table, actor): function view_actions (line 377) | def view_actions(datasette, database, view, actor): function query_actions (line 389) | def query_actions(datasette, database, query_name, sql): function row_actions (line 410) | def row_actions(datasette, database, table, actor, row): function database_actions (line 422) | def database_actions(datasette, database, actor, request): function homepage_actions (line 436) | def homepage_actions(datasette, actor, request): function skip_csrf (line 448) | def skip_csrf(scope): function register_actions (line 453) | def register_actions(datasette): function permission_resources_sql (line 551) | def permission_resources_sql(datasette, actor, action): class HardcodedTokenHandler (line 592) | class HardcodedTokenHandler(TokenHandler): method create_token (line 596) | async def create_token( method verify_token (line 607) | async def verify_token(self, datasette, token): function register_token_handler (line 614) | def register_token_handler(datasette): FILE: tests/plugins/my_plugin_2.py function extra_js_urls (line 9) | def extra_js_urls(): function render_cell (line 20) | def render_cell(value, database): function extra_template_vars (line 52) | def extra_template_vars(template, database, table, view_name, request, d... function asgi_wrapper (line 77) | def asgi_wrapper(datasette): function actor_from_request (line 105) | def actor_from_request(datasette, request): function prepare_jinja2_environment (line 117) | def prepare_jinja2_environment(env, datasette): function startup (line 123) | def startup(datasette): function canned_queries (line 147) | def canned_queries(datasette, database): function menu_links (line 161) | def menu_links(datasette, actor): function table_actions (line 170) | def table_actions(datasette, database, table, actor, request): function register_routes (line 182) | def register_routes(datasette): function handle_exception (line 199) | def handle_exception(datasette, request, exception): function register_triger_error (line 212) | def register_triger_error(): FILE: tests/plugins/register_output_renderer.py function can_render (line 6) | async def can_render( function render_test_all_parameters (line 26) | async def render_test_all_parameters( function render_test_no_parameters (line 56) | def render_test_no_parameters(): function render_response (line 60) | async def render_response(request): function register_output_renderer (line 67) | def register_output_renderer(datasette): FILE: tests/plugins/sleep_sql_function.py function prepare_connection (line 6) | def prepare_connection(conn): FILE: tests/plugins/view_name.py function extra_template_vars (line 5) | def extra_template_vars(view_name, request): FILE: tests/test_actions_sql.py class PermissionRulesPlugin (line 20) | class PermissionRulesPlugin: method __init__ (line 21) | def __init__(self, rules_callback): method permission_resources_sql (line 25) | def permission_resources_sql(self, datasette, actor, action): function test_ds (line 31) | async def test_ds(): function test_allowed_resources_global_allow (line 59) | async def test_allowed_resources_global_allow(test_ds): function test_allowed_specific_resource (line 93) | async def test_allowed_specific_resource(test_ds): function test_allowed_resources_include_reasons (line 136) | async def test_allowed_resources_include_reasons(test_ds): function test_child_deny_overrides_parent_allow (line 176) | async def test_child_deny_overrides_parent_allow(test_ds): function test_child_allow_overrides_parent_deny (line 225) | async def test_child_allow_overrides_parent_deny(test_ds): function test_sql_does_filtering_not_python (line 270) | async def test_sql_does_filtering_not_python(test_ds): FILE: tests/test_actor_restriction_bug.py function test_table_restrictions_not_bypassed_by_database_level_config (line 14) | async def test_table_restrictions_not_bypassed_by_database_level_config(): function test_database_restrictions_with_database_level_config (line 97) | async def test_database_restrictions_with_database_level_config(): FILE: tests/test_allowed_resources.py class PermissionRulesPlugin (line 16) | class PermissionRulesPlugin: method __init__ (line 17) | def __init__(self, rules_callback): method permission_resources_sql (line 21) | def permission_resources_sql(self, datasette, actor, action): function test_ds (line 26) | async def test_ds(): function test_tables_endpoint_global_access (line 54) | async def test_tables_endpoint_global_access(test_ds): function test_tables_endpoint_database_restriction (line 93) | async def test_tables_endpoint_database_restriction(test_ds): function test_tables_endpoint_table_exception (line 135) | async def test_tables_endpoint_table_exception(test_ds): function test_tables_endpoint_deny_overrides_allow (line 177) | async def test_tables_endpoint_deny_overrides_allow(test_ds): function test_tables_endpoint_no_permissions (line 219) | async def test_tables_endpoint_no_permissions(): function test_tables_endpoint_specific_table_only (line 243) | async def test_tables_endpoint_specific_table_only(test_ds): function test_tables_endpoint_empty_result (line 285) | async def test_tables_endpoint_empty_result(test_ds): function test_tables_endpoint_no_query_returns_all (line 316) | async def test_tables_endpoint_no_query_returns_all(): function test_tables_endpoint_truncation (line 340) | async def test_tables_endpoint_truncation(): function test_tables_endpoint_search_single_term (line 361) | async def test_tables_endpoint_search_single_term(): function test_tables_endpoint_search_multiple_terms (line 398) | async def test_tables_endpoint_search_multiple_terms(): function test_tables_endpoint_search_ordering (line 435) | async def test_tables_endpoint_search_ordering(): function test_tables_endpoint_search_case_insensitive (line 478) | async def test_tables_endpoint_search_case_insensitive(): function test_tables_endpoint_search_no_matches (line 514) | async def test_tables_endpoint_search_no_matches(): function test_tables_endpoint_config_database_allow (line 545) | async def test_tables_endpoint_config_database_allow(): FILE: tests/test_api.py function test_homepage (line 13) | async def test_homepage(ds_client): function test_homepage_sort_by_relationships (line 41) | async def test_homepage_sort_by_relationships(ds_client): function test_database_page (line 58) | async def test_database_page(ds_client): function test_no_files_uses_memory_database (line 248) | def test_no_files_uses_memory_database(app_client_no_files): function test_old_memory_urls_redirect (line 289) | def test_old_memory_urls_redirect(app_client_no_files, path, expected_re... function test_database_page_for_database_with_dot_in_name (line 295) | def test_database_page_for_database_with_dot_in_name(app_client_with_dot): function test_custom_sql (line 301) | async def test_custom_sql(ds_client): function test_sql_time_limit (line 320) | def test_sql_time_limit(app_client_shorter_time_limit): function test_custom_sql_time_limit (line 343) | async def test_custom_sql_time_limit(ds_client): function test_invalid_custom_sql (line 356) | async def test_invalid_custom_sql(ds_client): function test_row (line 366) | async def test_row(ds_client): function test_row_strange_table_name (line 374) | async def test_row_strange_table_name(ds_client): function test_row_foreign_key_tables (line 383) | async def test_row_foreign_key_tables(ds_client): function test_row_extra_render_cell (line 429) | async def test_row_extra_render_cell(): function test_databases_json (line 485) | def test_databases_json(app_client_two_attached_databases_one_immutable): function test_threads_json (line 502) | async def test_threads_json(ds_client): function test_plugins_json (line 515) | async def test_plugins_json(ds_client): function test_versions_json (line 531) | async def test_versions_json(ds_client): function test_actions_json (line 552) | async def test_actions_json(ds_client): function test_settings_json (line 587) | async def test_settings_json(ds_client): function test_json_columns (line 635) | async def test_json_columns(ds_client, extra_args, expected): function test_config_cache_size (line 650) | def test_config_cache_size(app_client_larger_cache_size): function test_config_force_https_urls (line 655) | def test_config_force_https_urls(): function test_cors (line 685) | def test_cors( function test_database_with_space_in_name (line 731) | def test_database_with_space_in_name(app_client_two_attached_databases, ... function test_common_prefix_database_names (line 738) | def test_common_prefix_database_names(app_client_conflicting_database_na... function test_inspect_file_used_for_count (line 749) | def test_inspect_file_used_for_count(app_client_immutable_and_inspect_fi... function test_http_options_request (line 757) | async def test_http_options_request(ds_client): function test_db_path (line 764) | async def test_db_path(app_client): function test_hidden_sqlite_stat1_table (line 778) | async def test_hidden_sqlite_stat1_table(): function test_hide_tables_starting_with_underscore (line 793) | async def test_hide_tables_starting_with_underscore(): function test_tilde_encoded_database_names (line 809) | async def test_tilde_encoded_database_names(db_name): function test_config_json (line 849) | async def test_config_json(config, expected): function test_upgrade_metadata (line 946) | async def test_upgrade_metadata(metadata, expected_config, expected_meta... class Either (line 954) | class Either: method __init__ (line 955) | def __init__(self, a, b): method __eq__ (line 959) | def __eq__(self, other): FILE: tests/test_api_write.py function ds_write (line 9) | def ds_write(tmp_path_factory): function write_token (line 31) | def write_token(ds, actor_id="root", permissions=None): function _headers (line 38) | def _headers(token): function test_insert_row (line 53) | async def test_insert_row(ds_write, content_type): function test_insert_row_alter (line 80) | async def test_insert_row_alter(ds_write): function test_insert_rows (line 102) | async def test_insert_rows(ds_write, return_rows): function test_insert_or_upsert_row_errors (line 333) | async def test_insert_or_upsert_row_errors( function test_upsert_permissions_per_table (line 391) | async def test_upsert_permissions_per_table(ds_write, allowed): function test_insert_ignore_replace (line 445) | async def test_insert_ignore_replace( function test_upsert (line 534) | async def test_upsert(ds_write, initial, input, expected_rows, should_re... function _insert_row (line 578) | async def _insert_row(ds): function test_delete_row_errors (line 590) | async def test_delete_row_errors(ds_write, scenario): function test_delete_row (line 631) | async def test_delete_row(ds_write, table, row_for_create, pks, delete_p... function test_update_row_check_permission (line 692) | async def test_update_row_check_permission(ds_write, scenario): function test_update_row_invalid_key (line 728) | async def test_update_row_invalid_key(ds_write): function test_update_row_alter (line 744) | async def test_update_row_alter(ds_write): function test_update_row (line 770) | async def test_update_row(ds_write, input, expected_errors, use_return): function test_drop_table (line 822) | async def test_drop_table(ds_write, scenario): function test_create_table (line 1312) | async def test_create_table( function test_create_table_permissions (line 1362) | async def test_create_table_permissions( function test_create_table_ignore_replace (line 1424) | async def test_create_table_ignore_replace(ds_write, input, expected_row... function test_create_table_error_if_pk_changed (line 1457) | async def test_create_table_error_if_pk_changed(ds_write): function test_create_table_error_rows_twice_with_duplicates (line 1488) | async def test_create_table_error_rows_twice_with_duplicates(ds_write): function test_method_not_allowed (line 1523) | async def test_method_not_allowed(ds_write, path): function test_create_uses_alter_by_default_for_new_table (line 1538) | async def test_create_uses_alter_by_default_for_new_table(ds_write): function test_create_using_alter_against_existing_table (line 1565) | async def test_create_using_alter_against_existing_table( FILE: tests/test_auth.py function test_auth_token (line 15) | async def test_auth_token(ds_client): function test_actor_cookie (line 41) | async def test_actor_cookie(ds_client): function test_actor_cookie_invalid (line 49) | async def test_actor_cookie_invalid(ds_client): function test_actor_cookie_that_expires (line 68) | async def test_actor_cookie_that_expires(ds_client, offset, expected): function test_logout (line 77) | def test_logout(app_client): function test_logout_button_in_navigation (line 115) | async def test_logout_button_in_navigation(ds_client, path): function test_no_logout_button_in_navigation_if_no_ds_actor_cookie (line 130) | async def test_no_logout_button_in_navigation_if_no_ds_actor_cookie(ds_c... function test_auth_create_token (line 177) | def test_auth_create_token( function test_auth_create_token_not_allowed_for_tokens (line 238) | async def test_auth_create_token_not_allowed_for_tokens(ds_client): function test_auth_create_token_not_allowed_if_allow_signed_tokens_off (line 248) | async def test_auth_create_token_not_allowed_if_allow_signed_tokens_off(... function test_auth_with_dstok_token (line 273) | async def test_auth_with_dstok_token(ds_client, scenario, should_work): function test_cli_create_token (line 314) | def test_cli_create_token(app_client, expires): function test_root_with_root_enabled_gets_all_permissions (line 347) | async def test_root_with_root_enabled_gets_all_permissions(ds_client): function test_root_without_root_enabled_no_special_permissions (line 451) | async def test_root_without_root_enabled_no_special_permissions(ds_client): FILE: tests/test_base_view.py class GetView (line 8) | class GetView(View): method get (line 9) | async def get(self, request, datasette): class GetAndPostView (line 18) | class GetAndPostView(GetView): method post (line 19) | async def post(self, request, datasette): function test_get_view (line 30) | async def test_get_view(): function test_post_view (line 61) | async def test_post_view(): FILE: tests/test_canned_queries.py function canned_write_client (line 9) | def canned_write_client(tmpdir): function canned_write_immutable_client (line 63) | def canned_write_immutable_client(): function test_canned_query_with_named_parameter (line 83) | async def test_canned_query_with_named_parameter(ds_client): function test_insert (line 97) | def test_insert(canned_write_client): function test_canned_query_form_csrf_hidden_field (line 120) | def test_canned_query_form_csrf_hidden_field( function test_insert_with_cookies_requires_csrf (line 132) | def test_insert_with_cookies_requires_csrf(canned_write_client): function test_insert_no_cookies_no_csrf (line 141) | def test_insert_no_cookies_no_csrf(canned_write_client): function test_custom_success_message (line 147) | def test_custom_success_message(canned_write_client): function test_insert_error (line 161) | def test_insert_error(canned_write_client): function test_on_success_message_sql (line 188) | def test_on_success_message_sql(canned_write_client): function test_error_in_on_success_message_sql (line 202) | def test_error_in_on_success_message_sql(canned_write_client): function test_custom_params (line 216) | def test_custom_params(canned_write_client): function test_vary_header (line 221) | def test_vary_header(canned_write_client): function test_json_post_body (line 227) | def test_json_post_body(canned_write_client): function test_json_response (line 247) | def test_json_response(canned_write_client, headers, body, querystring): function test_canned_query_permissions_on_database_page (line 264) | def test_canned_query_permissions_on_database_page(canned_write_client): function test_canned_query_permissions (line 307) | def test_canned_query_permissions(canned_write_client): function magic_parameters_client (line 316) | def magic_parameters_client(): function test_magic_parameters (line 347) | def test_magic_parameters(magic_parameters_client, magic_parameter, expe... function test_magic_parameters_csrf_json (line 386) | def test_magic_parameters_csrf_json(magic_parameters_client, use_csrf, r... function test_magic_parameters_cannot_be_used_in_arbitrary_queries (line 413) | def test_magic_parameters_cannot_be_used_in_arbitrary_queries(magic_para... function test_canned_write_custom_template (line 421) | def test_canned_write_custom_template(canned_write_client): function test_canned_write_query_disabled_for_immutable_database (line 440) | def test_canned_write_query_disabled_for_immutable_database( FILE: tests/test_cli.py function test_inspect_cli (line 22) | def test_inspect_cli(app_client): function test_inspect_cli_writes_to_file (line 38) | def test_inspect_cli_writes_to_file(app_client): function test_serve_with_inspect_file_prepopulates_table_counts_cache (line 49) | def test_serve_with_inspect_file_prepopulates_table_counts_cache(): function test_spatialite_error_if_attempt_to_open_spatialite (line 64) | def test_spatialite_error_if_attempt_to_open_spatialite( function test_spatialite_error_if_cannot_find_load_extension_spatialite (line 82) | def test_spatialite_error_if_cannot_find_load_extension_spatialite(): function test_plugins_cli (line 97) | def test_plugins_cli(app_client): function test_metadata_yaml (line 117) | def test_metadata_yaml(): function test_install (line 164) | def test_install(run_module): function test_install_upgrade (line 178) | def test_install_upgrade(run_module, flag): function test_install_requirements (line 186) | def test_install_requirements(run_module, tmpdir): function test_install_error_if_no_packages (line 195) | def test_install_error_if_no_packages(): function test_uninstall (line 203) | def test_uninstall(run_module): function test_version (line 210) | def test_version(): function test_serve_invalid_ports (line 217) | def test_serve_invalid_ports(invalid_port): function test_setting (line 232) | def test_setting(args): function test_setting_compatible_with_config (line 240) | def test_setting_compatible_with_config(tmp_path): function test_plugin_s_overwrite (line 265) | def test_plugin_s_overwrite(): function test_startup_error_from_plugin_is_click_exception (line 303) | def test_startup_error_from_plugin_is_click_exception(tmp_path): function test_setting_type_validation (line 337) | def test_setting_type_validation(): function test_setting_boolean_validation_invalid (line 344) | def test_setting_boolean_validation_invalid(): function test_setting_boolean_validation_false_values (line 357) | def test_setting_boolean_validation_false_values(value): function test_setting_boolean_validation_true_values (line 376) | def test_setting_boolean_validation_true_values(value): function test_setting_default_allow_sql (line 395) | def test_setting_default_allow_sql(default_allow_sql): function test_sql_errors_logged_to_stderr (line 416) | def test_sql_errors_logged_to_stderr(): function test_serve_create (line 423) | def test_serve_create(tmpdir): function test_serve_config (line 443) | def test_serve_config(tmpdir, argument, format_): function test_serve_duplicate_database_names (line 467) | def test_serve_duplicate_database_names(tmpdir): function test_weird_database_names (line 485) | def test_weird_database_names(tmpdir, filename): function test_help_settings (line 504) | def test_help_settings(): function test_internal_db (line 511) | def test_internal_db(tmpdir): function test_duplicate_database_files_error (line 522) | def test_duplicate_database_files_error(tmpdir): FILE: tests/test_cli_serve_get.py function test_serve_with_get (line 8) | def test_serve_with_get(tmp_path_factory): function test_serve_with_get_headers (line 53) | def test_serve_with_get_headers(): function test_serve_with_get_and_token (line 73) | def test_serve_with_get_and_token(): function test_serve_with_get_exit_code_for_error (line 101) | def test_serve_with_get_exit_code_for_error(): function test_serve_get_actor (line 117) | def test_serve_get_actor(): FILE: tests/test_cli_serve_server.py function test_serve_localhost_http (line 7) | def test_serve_localhost_http(ds_localhost_http_server): function test_serve_unix_domain_socket (line 20) | def test_serve_unix_domain_socket(ds_unix_domain_socket_server): FILE: tests/test_column_types.py function ds_ct (line 20) | def ds_ct(tmp_path_factory): function ds_ct_editor_permission (line 62) | def ds_ct_editor_permission(tmp_path_factory): function write_token (line 104) | def write_token(ds, actor_id="root", permissions=None): function _headers (line 111) | def _headers(token): function _window_data_from_html (line 118) | def _window_data_from_html(html, variable_name): function test_column_types_table_created (line 135) | async def test_column_types_table_created(ds_ct): function test_config_loaded_into_internal_db (line 145) | async def test_config_loaded_into_internal_db(ds_ct): function test_config_with_type_and_config (line 157) | async def test_config_with_type_and_config(tmp_path_factory): function test_get_column_type (line 210) | async def test_get_column_type(ds_ct): function test_get_column_type_missing (line 219) | async def test_get_column_type_missing(ds_ct): function test_set_and_remove_column_type (line 226) | async def test_set_and_remove_column_type(ds_ct): function test_set_column_type_with_config (line 239) | async def test_set_column_type_with_config(ds_ct): function test_set_column_type_api (line 248) | async def test_set_column_type_api(ds_ct): function test_set_column_type_api_with_config (line 270) | async def test_set_column_type_api_with_config(ds_ct): function test_clear_column_type_api (line 292) | async def test_clear_column_type_api(ds_ct): function test_set_column_type_api_errors (line 411) | async def test_set_column_type_api_errors( function test_set_column_type_api_works_for_immutable_database (line 439) | async def test_set_column_type_api_works_for_immutable_database(tmp_path... function test_set_column_type_rejects_incompatible_sqlite_type (line 468) | async def test_set_column_type_rejects_incompatible_sqlite_type(ds_ct): function test_set_column_type_allows_varchar_for_text_only_type (line 475) | async def test_set_column_type_allows_varchar_for_text_only_type(tmp_pat... function test_builtin_column_types_registered (line 497) | async def test_builtin_column_types_registered(ds_ct): function test_column_type_class_attributes (line 507) | async def test_column_type_class_attributes(ds_ct): function test_sqlite_type_from_declared_type (line 521) | def test_sqlite_type_from_declared_type(): function test_column_types_extra (line 535) | async def test_column_types_extra(ds_ct): function test_display_columns_include_column_type (line 551) | async def test_display_columns_include_column_type(ds_ct): function test_url_render_cell (line 567) | async def test_url_render_cell(ds_ct): function test_email_render_cell (line 578) | async def test_email_render_cell(ds_ct): function test_json_render_cell (line 589) | async def test_json_render_cell(ds_ct): function test_email_validation_on_insert (line 602) | async def test_email_validation_on_insert(ds_ct): function test_email_validation_passes_valid (line 615) | async def test_email_validation_passes_valid(ds_ct): function test_url_validation_on_insert (line 627) | async def test_url_validation_on_insert(ds_ct): function test_json_validation_on_insert (line 640) | async def test_json_validation_on_insert(ds_ct): function test_validation_on_update (line 653) | async def test_validation_on_update(ds_ct): function test_validation_allows_null (line 666) | async def test_validation_allows_null(ds_ct): function test_validation_allows_empty_string (line 678) | async def test_validation_allows_empty_string(ds_ct): function test_column_type_base_defaults (line 693) | async def test_column_type_base_defaults(): function test_render_cell_extra_with_column_types (line 709) | async def test_render_cell_extra_with_column_types(ds_ct): function test_duplicate_column_type_name_raises_error (line 723) | async def test_duplicate_column_type_name_raises_error(): function test_row_endpoint_render_cell_with_column_types (line 750) | async def test_row_endpoint_render_cell_with_column_types(ds_ct): function test_transform_value_in_json_output (line 764) | async def test_transform_value_in_json_output(tmp_path_factory): function test_column_type_render_cell_has_priority_over_plugins (line 816) | async def test_column_type_render_cell_has_priority_over_plugins(tmp_pat... function test_row_detail_page_html_rendering (line 895) | async def test_row_detail_page_html_rendering(ds_ct): function test_html_table_page_rendering (line 911) | async def test_html_table_page_rendering(ds_ct): function test_set_column_type_ui_data_hidden_without_permission (line 922) | async def test_set_column_type_ui_data_hidden_without_permission(ds_ct): function test_set_column_type_ui_data_includes_applicable_types (line 930) | async def test_set_column_type_ui_data_includes_applicable_types( function test_validation_on_upsert (line 969) | async def test_validation_on_upsert(ds_ct): function test_validation_on_upsert_passes_valid (line 984) | async def test_validation_on_upsert_passes_valid(ds_ct): function test_unknown_type_warning_logged (line 1001) | async def test_unknown_type_warning_logged(tmp_path_factory, caplog): function test_incompatible_sqlite_type_warning_logged (line 1027) | async def test_incompatible_sqlite_type_warning_logged(tmp_path_factory,... function test_config_overwrites_on_restart (line 1054) | async def test_config_overwrites_on_restart(tmp_path_factory): function test_no_column_types_in_config (line 1092) | async def test_no_column_types_in_config(tmp_path_factory): FILE: tests/test_config_dir.py function config_dir (line 31) | def config_dir(tmp_path_factory): function test_invalid_settings (line 81) | def test_invalid_settings(config_dir): function config_dir_client (line 95) | def config_dir_client(config_dir): function test_settings (line 100) | def test_settings(config_dir_client): function test_plugins (line 106) | def test_plugins(config_dir_client): function test_templates_and_plugin (line 114) | def test_templates_and_plugin(config_dir_client): function test_static (line 120) | def test_static(config_dir_client): function test_static_directory_browsing_not_allowed (line 127) | def test_static_directory_browsing_not_allowed(config_dir_client): function test_databases (line 133) | def test_databases(config_dir_client): function test_store_config_dir (line 144) | def test_store_config_dir(config_dir_client): FILE: tests/test_config_permission_rules.py function setup_datasette (line 8) | async def setup_datasette(config=None, databases=None): function test_root_permissions_allow (line 18) | async def test_root_permissions_allow(): function test_database_permission (line 35) | async def test_database_permission(): function test_table_permission (line 60) | async def test_table_permission(): function test_view_table_allow_block (line 83) | async def test_view_table_allow_block(): function test_view_table_allow_false_blocks (line 107) | async def test_view_table_allow_false_blocks(): function test_allow_sql_blocks (line 119) | async def test_allow_sql_blocks(): function test_view_instance_allow_block (line 158) | async def test_view_instance_allow_block(): FILE: tests/test_crossdb.py function test_crossdb_join (line 7) | def test_crossdb_join(app_client_two_attached_databases_crossdb_enabled): function test_crossdb_warning_if_too_many_databases (line 39) | def test_crossdb_warning_if_too_many_databases(tmp_path_factory): function test_crossdb_attached_database_list_display (line 65) | def test_crossdb_attached_database_list_display( FILE: tests/test_csv.py function test_table_csv (line 46) | async def test_table_csv(ds_client): function test_table_csv_cors_headers (line 54) | def test_table_csv_cors_headers(app_client_with_cors): function test_table_csv_no_header (line 61) | async def test_table_csv_no_header(ds_client): function test_table_csv_with_labels (line 70) | async def test_table_csv_with_labels(ds_client): function test_table_csv_with_nullable_labels (line 78) | async def test_table_csv_with_nullable_labels(ds_client): function test_table_csv_with_invalid_labels (line 86) | async def test_table_csv_with_invalid_labels(): function test_table_csv_blob_columns (line 130) | async def test_table_csv_blob_columns(ds_client): function test_custom_sql_csv_blob_columns (line 143) | async def test_custom_sql_csv_blob_columns(ds_client): function test_custom_sql_csv (line 158) | async def test_custom_sql_csv(ds_client): function test_table_csv_download (line 168) | async def test_table_csv_download(ds_client): function test_csv_with_non_ascii_characters (line 179) | async def test_csv_with_non_ascii_characters(ds_client): function test_max_csv_mb (line 189) | def test_max_csv_mb(app_client_csv_max_mb_one): function test_table_csv_stream (line 217) | async def test_table_csv_stream(ds_client): function test_csv_trace (line 230) | def test_csv_trace(app_client_with_trace): function test_table_csv_stream_does_not_calculate_facets (line 241) | def test_table_csv_stream_does_not_calculate_facets(app_client_with_trace): function test_table_csv_stream_does_not_calculate_counts (line 247) | def test_table_csv_stream_does_not_calculate_counts(app_client_with_trace): FILE: tests/test_custom_pages.py function custom_pages_client (line 9) | def custom_pages_client(): function custom_pages_client_with_base_url (line 15) | def custom_pages_client_with_base_url(): function test_custom_pages_view_name (line 22) | def test_custom_pages_view_name(custom_pages_client): function test_request_is_available (line 28) | def test_request_is_available(custom_pages_client): function test_custom_pages_with_base_url (line 34) | def test_custom_pages_with_base_url(custom_pages_client_with_base_url): function test_custom_pages_nested (line 40) | def test_custom_pages_nested(custom_pages_client): function test_custom_status (line 48) | def test_custom_status(custom_pages_client): function test_custom_headers (line 54) | def test_custom_headers(custom_pages_client): function test_custom_content_type (line 62) | def test_custom_content_type(custom_pages_client): function test_redirect (line 69) | def test_redirect(custom_pages_client): function test_redirect2 (line 75) | def test_redirect2(custom_pages_client): function test_custom_route_pattern (line 89) | def test_custom_route_pattern(custom_pages_client, path, expected): function test_custom_route_pattern_404 (line 95) | def test_custom_route_pattern_404(custom_pages_client): function test_custom_route_pattern_with_slash_slash_302 (line 102) | def test_custom_route_pattern_with_slash_slash_302(custom_pages_client): FILE: tests/test_default_deny.py function test_default_deny_denies_default_permissions (line 7) | async def test_default_deny_denies_default_permissions(): function test_default_deny_with_root_user (line 49) | async def test_default_deny_with_root_user(): function test_default_deny_with_config_allow (line 84) | async def test_default_deny_with_config_allow(): function test_default_deny_basic_permissions (line 100) | async def test_default_deny_basic_permissions(): FILE: tests/test_docs.py function get_headings (line 16) | def get_headings(content, underline="-"): function get_labels (line 21) | def get_labels(filename): function settings_headings (line 27) | def settings_headings(): function test_settings_are_documented (line 31) | def test_settings_are_documented(settings_headings, subtests): function plugin_hooks_content (line 38) | def plugin_hooks_content(): function test_plugin_hooks_are_documented (line 42) | def test_plugin_hooks_are_documented(plugin_hooks_content, subtests): function documented_views (line 60) | def documented_views(): function test_view_classes_are_documented (line 72) | def test_view_classes_are_documented(documented_views, subtests): function documented_table_filters (line 80) | def documented_table_filters(): function test_table_filters_are_documented (line 91) | def test_table_filters_are_documented(documented_table_filters, subtests): function documented_fns (line 98) | def documented_fns(): function test_functions_marked_with_documented_are_documented (line 108) | def test_functions_marked_with_documented_are_documented(documented_fns,... function test_rst_heading_underlines_match_title_length (line 114) | def test_rst_heading_underlines_match_title_length(): function test_homepage (line 178) | async def test_homepage(): function test_actor_is_null (line 188) | async def test_actor_is_null(): function test_signed_cookie_actor (line 197) | async def test_signed_cookie_actor(): FILE: tests/test_docs_plugins.py function datasette_with_plugin (line 10) | async def datasette_with_plugin(): function test_error (line 31) | async def test_error(datasette_with_plugin): FILE: tests/test_facets.py function test_column_facet_suggest (line 12) | async def test_column_facet_suggest(ds_client): function test_column_facet_suggest_skip_if_already_selected (line 40) | async def test_column_facet_suggest_skip_if_already_selected(ds_client): function test_column_facet_suggest_skip_if_enabled_by_metadata (line 78) | async def test_column_facet_suggest_skip_if_enabled_by_metadata(ds_client): function test_column_facet_results (line 100) | async def test_column_facet_results(ds_client): function test_column_facet_results_column_starts_with_underscore (line 152) | async def test_column_facet_results_column_starts_with_underscore(ds_cli... function test_column_facet_from_metadata_cannot_be_hidden (line 274) | async def test_column_facet_from_metadata_cannot_be_hidden(ds_client): function test_array_facet_suggest (line 328) | async def test_array_facet_suggest(ds_client): function test_array_facet_suggest_not_if_all_empty_arrays (line 348) | async def test_array_facet_suggest_not_if_all_empty_arrays(ds_client): function test_array_facet_results (line 362) | async def test_array_facet_results(ds_client): function test_array_facet_handle_duplicate_tags (line 408) | async def test_array_facet_handle_duplicate_tags(): function test_date_facet_results (line 462) | async def test_date_facet_results(ds_client): function test_json_array_with_blanks_and_nulls (line 514) | async def test_json_array_with_blanks_and_nulls(): function test_facet_size (line 532) | async def test_facet_size(): function test_other_types_of_facet_in_metadata (line 611) | def test_other_types_of_facet_in_metadata(): function test_metadata_facet_ordering (line 640) | def test_metadata_facet_ordering(): function test_conflicting_facet_names_json (line 671) | async def test_conflicting_facet_names_json(ds_client): function test_facet_against_in_memory_database (line 685) | async def test_facet_against_in_memory_database(): function test_facet_only_considers_first_x_rows (line 704) | async def test_facet_only_considers_first_x_rows(): FILE: tests/test_filters.py function test_build_where (line 78) | def test_build_where(args, expected_where, expected_params): function test_through_filters_from_request (line 86) | async def test_through_filters_from_request(ds_client): function test_where_filters_from_request (line 107) | async def test_where_filters_from_request(ds_client): function test_search_filters_from_request (line 124) | async def test_search_filters_from_request(ds_client): FILE: tests/test_html.py function test_homepage (line 14) | def test_homepage(app_client_two_attached_databases): function test_homepage_alternative_location (line 50) | async def test_homepage_alternative_location(path, tmp_path_factory): function test_homepage_alternative_redirect (line 64) | async def test_homepage_alternative_redirect(ds_client): function test_http_head (line 70) | async def test_http_head(ds_client): function test_homepage_options (line 76) | async def test_homepage_options(ds_client): function test_favicon (line 83) | async def test_favicon(ds_client): function test_static (line 92) | async def test_static(ds_client): function test_static_mounts (line 104) | def test_static_mounts(): function test_memory_database_page (line 116) | def test_memory_database_page(): function test_not_allowed_methods (line 122) | def test_not_allowed_methods(): function test_database_page (line 130) | async def test_database_page(ds_client): function test_invalid_custom_sql (line 176) | async def test_invalid_custom_sql(ds_client): function test_disallowed_custom_sql_pragma (line 183) | async def test_disallowed_custom_sql_pragma(ds_client): function test_sql_time_limit (line 198) | def test_sql_time_limit(app_client_shorter_time_limit): function test_row_page_does_not_truncate (line 213) | def test_row_page_does_not_truncate(): function test_query_page_truncates (line 225) | def test_query_page_truncates(): function test_css_classes_on_body (line 269) | async def test_css_classes_on_body(ds_client, path, expected_classes): function test_templates_considered (line 299) | async def test_templates_considered(ds_client, path, expected_considered): function test_row_json_export_link (line 309) | async def test_row_json_export_link(ds_client): function test_query_json_csv_export_links (line 316) | async def test_query_json_csv_export_links(ds_client): function test_query_parameter_form_fields (line 327) | async def test_query_parameter_form_fields(ds_client): function test_row_html_simple_primary_key (line 343) | async def test_row_html_simple_primary_key(ds_client): function test_row_html_no_primary_key (line 357) | async def test_row_html_no_primary_key(ds_client): function test_row_links_from_other_tables (line 394) | async def test_row_links_from_other_tables( function test_row_foreign_key_links (line 410) | async def test_row_foreign_key_links(ds_client): function test_row_html_compound_primary_key (line 455) | async def test_row_html_compound_primary_key(ds_client, path, expected): function test_index_metadata (line 468) | async def test_index_metadata(ds_client): function test_database_metadata (line 481) | async def test_database_metadata(ds_client): function test_database_metadata_with_custom_sql (line 496) | async def test_database_metadata_with_custom_sql(ds_client): function test_database_download_for_immutable (line 510) | def test_database_download_for_immutable(): function test_database_download_disallowed_for_mutable (line 541) | def test_database_download_disallowed_for_mutable(app_client): function test_database_download_disallowed_for_memory (line 549) | def test_database_download_disallowed_for_memory(): function test_allow_download_off (line 558) | def test_allow_download_off(): function test_allow_sql_off (line 570) | def test_allow_sql_off(): function test_404 (line 582) | async def test_404(ds_client, path): function test_404_trailing_slash_redirect (line 596) | async def test_404_trailing_slash_redirect(ds_client, path, expected_red... function test_404_content_type (line 603) | async def test_404_content_type(ds_client): function test_canned_query_default_title (line 610) | async def test_canned_query_default_title(ds_client): function test_canned_query_with_custom_metadata (line 618) | async def test_canned_query_with_custom_metadata(ds_client): function test_urlify_custom_queries (line 636) | async def test_urlify_custom_queries(ds_client): function test_show_hide_sql_query (line 651) | async def test_show_hide_sql_query(ds_client): function test_canned_query_with_hide_has_no_hidden_sql (line 677) | async def test_canned_query_with_hide_has_no_hidden_sql(ds_client): function test_canned_query_show_hide_metadata_option (line 697) | def test_canned_query_show_hide_metadata_option( function test_binary_data_display_in_query (line 738) | async def test_binary_data_display_in_query(ds_client): function test_blob_download (line 767) | async def test_blob_download(ds_client, path, expected_filename): function test_blob_download_invalid_messages (line 791) | async def test_blob_download_invalid_messages(ds_client, path, expected_... function test_zero_results (line 805) | async def test_zero_results(ds_client, path): function test_query_error (line 813) | async def test_query_error(ds_client): function test_config_template_debug_on (line 822) | def test_config_template_debug_on(): function test_config_template_debug_off (line 830) | async def test_config_template_debug_off(ds_client): function test_debug_context_includes_extra_template_vars (line 836) | def test_debug_context_includes_extra_template_vars(): function test_base_url_config (line 858) | def test_base_url_config(app_client_base_url_prefix, path, use_prefix): function test_base_url_affects_filter_redirects (line 922) | def test_base_url_affects_filter_redirects(app_client_base_url_prefix): function test_base_url_affects_metadata_extra_css_urls (line 932) | def test_base_url_affects_metadata_extra_css_urls(app_client_base_url_pr... function test_edit_sql_link_on_canned_queries (line 958) | async def test_edit_sql_link_on_canned_queries(ds_client, path, expected): function test_edit_sql_link_not_shown_if_user_lacks_permission (line 977) | def test_edit_sql_link_not_shown_if_user_lacks_permission(has_permission): function test_navigation_menu_links (line 1000) | async def test_navigation_menu_links( function test_trace_correctly_escaped (line 1034) | async def test_trace_correctly_escaped(ds_client): function test_alternate_url_json (line 1079) | async def test_alternate_url_json(ds_client, path, expected): function test_no_alternate_url_json (line 1099) | async def test_no_alternate_url_json(ds_client, path): function test_redirect_percent_encoding_to_tilde_encoding (line 1123) | async def test_redirect_percent_encoding_to_tilde_encoding(ds_client, pa... function test_breadcrumbs_respect_permissions (line 1160) | async def test_breadcrumbs_respect_permissions(ds_client, path, config, ... function test_database_color (line 1177) | async def test_database_color(ds_client): function test_custom_csrf_error (line 1199) | async def test_custom_csrf_error(ds_client): function test_actions_page (line 1213) | async def test_actions_page(ds_client): function test_actions_page_does_not_display_none_string (line 1229) | async def test_actions_page_does_not_display_none_string(ds_client): function test_permission_debug_tabs_with_query_string (line 1244) | async def test_permission_debug_tabs_with_query_string(ds_client): FILE: tests/test_internal_db.py function ensure_internal (line 6) | async def ensure_internal(ds_client): function test_internal_databases (line 12) | async def test_internal_databases(ds_client): function test_internal_tables (line 20) | async def test_internal_tables(ds_client): function test_internal_views (line 29) | async def test_internal_views(ds_client): function test_internal_indexes (line 38) | async def test_internal_indexes(ds_client): function test_internal_foreign_keys (line 55) | async def test_internal_foreign_keys(ds_client): function test_internal_foreign_key_references (line 75) | async def test_internal_foreign_key_references(ds_client): function test_stale_catalog_entry_database_fix (line 97) | async def test_stale_catalog_entry_database_fix(tmp_path): FILE: tests/test_internals_database.py function db (line 15) | def db(app_client): function test_execute (line 20) | async def test_execute(db): function test_results_first (line 27) | async def test_results_first(db): function test_results_bool (line 36) | async def test_results_bool(db, expected): function test_results_dicts (line 43) | async def test_results_dicts(db): function test_results_single_value (line 62) | async def test_results_single_value(db, query, expected): function test_execute_fn (line 72) | async def test_execute_fn(db): function test_execute_fn_transaction_false (line 80) | async def test_execute_fn_transaction_false(): function test_table_exists (line 114) | async def test_table_exists(db, tables, exists): function test_view_exists (line 128) | async def test_view_exists(db, view, expected): function test_table_columns (line 167) | async def test_table_columns(db, table, expected): function test_table_column_details (line 350) | async def test_table_column_details(db, table, expected): function test_get_all_foreign_keys (line 364) | async def test_get_all_foreign_keys(db): function test_table_names (line 419) | async def test_table_names(db): function test_view_names (line 456) | async def test_view_names(db): function test_execute_write_block_true (line 467) | async def test_execute_write_block_true(db): function test_execute_write_block_false (line 476) | async def test_execute_write_block_false(db): function test_execute_write_script (line 487) | async def test_execute_write_script(db): function test_execute_write_many (line 496) | async def test_execute_write_many(db): function test_execute_write_has_correctly_prepared_connection (line 506) | async def test_execute_write_has_correctly_prepared_connection(db): function test_execute_write_fn_block_false (line 512) | async def test_execute_write_fn_block_false(db): function test_execute_write_fn_block_true (line 523) | async def test_execute_write_fn_block_true(db): function test_execute_write_fn_exception (line 534) | async def test_execute_write_fn_exception(db): function test_execute_write_fn_connection_exception (line 544) | async def test_execute_write_fn_connection_exception(tmpdir, app_client): function table_exists (line 559) | def table_exists(conn, name): function table_exists_checker (line 575) | def table_exists_checker(name): function test_execute_isolated (line 584) | async def test_execute_isolated(db, disable_threads): function test_mtime_ns (line 624) | async def test_mtime_ns(db): function test_mtime_ns_is_none_for_memory (line 628) | def test_mtime_ns_is_none_for_memory(app_client): function test_is_mutable (line 634) | def test_is_mutable(app_client): function test_attached_databases (line 641) | async def test_attached_databases(app_client_two_attached_databases_cros... function test_database_memory_name (line 650) | async def test_database_memory_name(app_client): function test_in_memory_databases_forbid_writes (line 668) | async def test_in_memory_databases_forbid_writes(app_client): function pragma_table_list_supported (line 679) | def pragma_table_list_supported(): function test_hidden_tables (line 687) | async def test_hidden_tables(app_client): function test_replace_database (line 746) | async def test_replace_database(tmpdir): FILE: tests/test_internals_datasette.py function datasette (line 14) | def datasette(ds_client): function test_get_database (line 18) | def test_get_database(datasette): function test_get_database_no_argument (line 25) | def test_get_database_no_argument(datasette): function test_sign_unsign (line 33) | def test_sign_unsign(datasette, value, namespace): function test_datasette_setting (line 50) | def test_datasette_setting(datasette, setting, expected): function test_datasette_constructor (line 55) | async def test_datasette_constructor(): function test_num_sql_threads_zero (line 72) | async def test_num_sql_threads_zero(): function test_datasette_check_visibility (line 120) | async def test_datasette_check_visibility( function test_datasette_render_template_no_request (line 133) | async def test_datasette_render_template_no_request(): function test_datasette_render_template_with_dataclass (line 142) | async def test_datasette_render_template_with_dataclass(): function test_datasette_error_if_string_not_list (line 157) | def test_datasette_error_if_string_not_list(tmpdir): function test_get_action (line 165) | async def test_get_action(ds_client): function test_apply_metadata_json (line 185) | async def test_apply_metadata_json(): function test_allowed_resources_sql (line 208) | async def test_allowed_resources_sql(datasette): FILE: tests/test_internals_datasette_client.py function datasette (line 8) | async def datasette(ds_client): function datasette_with_permissions (line 14) | async def datasette_with_permissions(): function test_client_methods (line 42) | async def test_client_methods(datasette, method, path, expected_status): function test_client_post (line 54) | async def test_client_post(datasette, prefix): function test_client_path (line 76) | async def test_client_path(datasette, prefix, expected_path): function test_skip_permission_checks_allows_forbidden_access (line 89) | async def test_skip_permission_checks_allows_forbidden_access( function test_skip_permission_checks_on_table (line 107) | async def test_skip_permission_checks_on_table(datasette_with_permissions): function test_skip_permission_checks_all_methods (line 128) | async def test_skip_permission_checks_all_methods(datasette_with_permiss... function test_skip_permission_checks_request_method (line 141) | async def test_skip_permission_checks_request_method(datasette_with_perm... function test_skip_permission_checks_isolated_to_request (line 157) | async def test_skip_permission_checks_isolated_to_request(datasette_with... function test_skip_permission_checks_with_admin_actor (line 175) | async def test_skip_permission_checks_with_admin_actor(datasette_with_pe... function test_skip_permission_checks_shows_denied_tables (line 197) | async def test_skip_permission_checks_shows_denied_tables(): function test_in_client_returns_false_outside_request (line 233) | async def test_in_client_returns_false_outside_request(datasette): function test_in_client_returns_true_inside_request (line 239) | async def test_in_client_returns_true_inside_request(): function test_in_client_with_skip_permission_checks (line 277) | async def test_in_client_with_skip_permission_checks(): FILE: tests/test_internals_request.py function test_request_post_vars (line 7) | async def test_request_post_vars(): function test_request_post_body (line 31) | async def test_request_post_body(): function test_request_args (line 58) | def test_request_args(): function test_request_fake_url_vars (line 78) | def test_request_fake_url_vars(): function test_request_repr (line 85) | def test_request_repr(): function test_request_url_vars (line 93) | def test_request_url_vars(): function test_request_properties (line 114) | def test_request_properties(path, query_string, expected_full_path): function test_request_blank_values (line 133) | def test_request_blank_values(): function test_json_in_query_string_name (line 138) | def test_json_in_query_string_name(): FILE: tests/test_internals_response.py function test_response_html (line 5) | def test_response_html(): function test_response_text (line 12) | def test_response_text(): function test_response_json (line 19) | def test_response_json(): function test_response_redirect (line 26) | def test_response_redirect(): function test_response_set_cookie (line 33) | async def test_response_set_cookie(): FILE: tests/test_internals_urls.py function ds (line 7) | def ds(): function test_path (line 21) | def test_path(ds, base_url, path, expected): function test_path_applied_twice_does_not_double_prefix (line 28) | def test_path_applied_twice_does_not_double_prefix(ds): function test_instance (line 43) | def test_instance(ds, base_url, expected): function test_static (line 57) | def test_static(ds, base_url, file, expected): function test_static_plugins (line 81) | def test_static_plugins(ds, base_url, plugin, file, expected): function test_logout (line 95) | def test_logout(ds, base_url, expected): function test_database (line 110) | def test_database(ds, base_url, format, expected): function test_table_and_query (line 126) | def test_table_and_query(ds, base_url, name, format, expected): function test_row (line 144) | def test_row(ds, base_url, format, expected): FILE: tests/test_label_column_for_table.py function test_label_column_for_table (line 84) | async def test_label_column_for_table( FILE: tests/test_load_extensions.py function has_compiled_ext (line 13) | def has_compiled_ext(): function test_load_extension_default_entrypoint (line 23) | async def test_load_extension_default_entrypoint(): function test_load_extension_multiple_entrypoints (line 43) | async def test_load_extension_multiple_entrypoints(): FILE: tests/test_messages.py function test_add_message_sets_cookie (line 14) | async def test_add_message_sets_cookie(ds_client, qs, expected): function test_messages_are_displayed_and_cleared (line 22) | async def test_messages_are_displayed_and_cleared(ds_client): FILE: tests/test_multipart.py function make_receive (line 17) | def make_receive(body: bytes): function make_chunked_receive (line 31) | def make_chunked_receive(body: bytes, chunk_size: int = 64): function make_receive_with_noise (line 45) | def make_receive_with_noise(body: bytes): function make_disconnect_receive (line 68) | def make_disconnect_receive(body: bytes, chunk_size: int = 64): class TestFormUrlEncoded (line 91) | class TestFormUrlEncoded: method test_basic_form_fields (line 95) | async def test_basic_form_fields(self): method test_form_with_multiple_values (line 113) | async def test_form_with_multiple_values(self): method test_empty_form (line 131) | async def test_empty_form(self): method test_form_with_special_characters (line 148) | async def test_form_with_special_characters(self): class TestMultipartBasic (line 166) | class TestMultipartBasic: method test_single_text_field (line 170) | async def test_single_text_field(self): method test_multiple_text_fields (line 194) | async def test_multiple_text_fields(self): method test_file_discarded_when_files_false (line 223) | async def test_file_discarded_when_files_false(self): method test_chunked_body_parsing (line 260) | async def test_chunked_body_parsing(self): class TestMultipartWithFiles (line 285) | class TestMultipartWithFiles: method test_single_file_upload (line 289) | async def test_single_file_upload(self): method test_mixed_fields_and_files (line 318) | async def test_mixed_fields_and_files(self): method test_multiple_files_same_name (line 357) | async def test_multiple_files_same_name(self): method test_large_file_spills_to_disk (line 390) | async def test_large_file_spills_to_disk(self): method test_uploaded_file_seek_and_read (line 420) | async def test_uploaded_file_seek_and_read(self): class TestMultipartCleanup (line 455) | class TestMultipartCleanup: method test_formdata_close_closes_uploaded_files (line 459) | async def test_formdata_close_closes_uploaded_files(self): method test_formdata_async_context_manager_closes_files (line 486) | async def test_formdata_async_context_manager_closes_files(self): class TestMultipartEdgeCases (line 514) | class TestMultipartEdgeCases: method test_empty_file_upload (line 518) | async def test_empty_file_upload(self): method test_filename_with_path (line 546) | async def test_filename_with_path(self): method test_missing_content_type_header (line 573) | async def test_missing_content_type_header(self): method test_invalid_content_type (line 587) | async def test_invalid_content_type(self): method test_missing_boundary (line 603) | async def test_missing_boundary(self): class TestSecurityLimits (line 619) | class TestSecurityLimits: method test_max_fields_limit (line 623) | async def test_max_fields_limit(self): method test_max_file_size_limit (line 651) | async def test_max_file_size_limit(self): method test_max_request_size_limit (line 675) | async def test_max_request_size_limit(self): class TestMultipartStrictnessAndLimits (line 699) | class TestMultipartStrictnessAndLimits: method test_multipart_truncated_body_is_error (line 703) | async def test_multipart_truncated_body_is_error(self): method test_disconnect_mid_body_is_error (line 726) | async def test_disconnect_mid_body_is_error(self): method test_unknown_asgi_message_type_is_ignored (line 749) | async def test_unknown_asgi_message_type_is_ignored(self): method test_max_files_enforced_even_when_files_false (line 772) | async def test_max_files_enforced_even_when_files_false(self): method test_max_parts_limit (line 801) | async def test_max_parts_limit(self): method test_max_file_size_enforced_even_when_files_false (line 828) | async def test_max_file_size_enforced_even_when_files_false(self): method test_part_header_limits (line 852) | async def test_part_header_limits(self): method test_insufficient_disk_space_rejects_upload (line 876) | async def test_insufficient_disk_space_rejects_upload(self, monkeypatch): method test_low_disk_space_does_not_block_field_only_forms (line 906) | async def test_low_disk_space_does_not_block_field_only_forms(self, mo... method test_headers_without_newline_hit_header_byte_limit (line 935) | async def test_headers_without_newline_hit_header_byte_limit(self): class TestFormDataLenSemantics (line 957) | class TestFormDataLenSemantics: method test_len_counts_items (line 961) | async def test_len_counts_items(self): function load_conformance_test_cases (line 997) | def load_conformance_test_cases(): function test_conformance (line 1057) | async def test_conformance(test_spec, headers, body): FILE: tests/test_package.py class CaptureDockerfile (line 9) | class CaptureDockerfile: method __call__ (line 10) | def __call__(self, _): function test_package (line 31) | def test_package(mock_call, mock_which, tmp_path_factory): function test_package_with_port (line 47) | def test_package_with_port(mock_call, mock_which, tmp_path_factory): FILE: tests/test_permission_endpoints.py function ds_with_permissions (line 13) | async def ds_with_permissions(): function test_allowed_json_basic (line 80) | async def test_allowed_json_basic( function test_allowed_json_response_structure (line 90) | async def test_allowed_json_response_structure(ds_with_permissions): function test_allowed_json_with_actor (line 116) | async def test_allowed_json_with_actor(ds_with_permissions): function test_allowed_json_pagination (line 130) | async def test_allowed_json_pagination(): function test_allowed_json_total_count (line 173) | async def test_allowed_json_total_count(tmp_path_factory): function test_rules_json_basic (line 249) | async def test_rules_json_basic( function test_rules_json_response_structure (line 263) | async def test_rules_json_response_structure(ds_with_permissions): function test_rules_json_includes_all_rules (line 292) | async def test_rules_json_includes_all_rules(ds_with_permissions): function test_rules_json_pagination (line 312) | async def test_rules_json_pagination(): function test_rules_json_with_actor (line 341) | async def test_rules_json_with_actor(ds_with_permissions): function test_root_user_respects_settings_deny (line 354) | async def test_root_user_respects_settings_deny(): function test_root_user_respects_settings_deny_tables (line 391) | async def test_root_user_respects_settings_deny_tables(): function test_execute_sql_requires_view_database (line 434) | async def test_execute_sql_requires_view_database(): FILE: tests/test_permissions.py function padlock_client (line 19) | def padlock_client(): function perms_ds (line 33) | async def perms_ds(): function test_view_padlock (line 72) | def test_view_padlock(allow, expected_anon, expected_auth, path, padlock... function test_view_database (line 100) | def test_view_database(allow, expected_anon, expected_auth, use_metadata): function test_database_list_respects_view_database (line 128) | def test_database_list_respects_view_database(): function test_database_list_respects_view_table (line 144) | def test_database_list_respects_view_table(): function test_view_table (line 185) | def test_view_table(allow, expected_anon, expected_auth, use_metadata): function test_table_list_respects_view_table (line 211) | def test_table_list_respects_view_table(): function test_view_query (line 247) | def test_view_query(allow, expected_anon, expected_auth): function test_execute_sql (line 275) | def test_execute_sql(config): function test_query_list_respects_view_query (line 309) | def test_query_list_respects_view_query(): function test_permissions_checked (line 372) | def test_permissions_checked(app_client, path, permissions): function test_permissions_debug (line 382) | async def test_permissions_debug(ds_client, filter_): function test_allow_debug (line 469) | async def test_allow_debug(ds_client, actor, allow, expected_fragment): function test_allow_unauthenticated (line 484) | def test_allow_unauthenticated(allow, expected): function view_instance_client (line 490) | def view_instance_client(): function test_view_instance (line 511) | def test_view_instance(path, view_instance_client): function cascade_app_client (line 518) | def cascade_app_client(): function test_permissions_cascade (line 560) | def test_permissions_cascade(cascade_app_client, path, permissions, expe... function test_padlocks_on_database_page (line 597) | def test_padlocks_on_database_page(cascade_app_client): function test_actor_restricted_permissions (line 708) | async def test_actor_restricted_permissions( function test_permissions_in_config (line 934) | async def test_permissions_in_config( function test_allowed_resources_view_query_includes_actor_specific_canned_queries (line 963) | async def test_allowed_resources_view_query_includes_actor_specific_cann... function test_actor_endpoint_allows_any_token (line 1025) | async def test_actor_endpoint_allows_any_token(): function test_cli_create_token (line 1102) | def test_cli_create_token(options, expected): function test_api_explorer_visibility (line 1173) | async def test_api_explorer_visibility( function test_view_table_token_cannot_gain_access_without_base_permission (line 1198) | async def test_view_table_token_cannot_gain_access_without_base_permissi... function test_actor_restrictions (line 1329) | async def test_actor_restrictions( function test_restrictions_allow_action (line 1420) | async def test_restrictions_allow_action(restrictions, action, resource,... function test_actor_restrictions_filters_allowed_resources (line 1428) | async def test_actor_restrictions_filters_allowed_resources(perms_ds): function test_actor_restrictions_do_not_expand_allowed_resources (line 1446) | async def test_actor_restrictions_do_not_expand_allowed_resources(perms_... function test_actor_restrictions_database_level (line 1475) | async def test_actor_restrictions_database_level(perms_ds): function test_actor_restrictions_global_level (line 1490) | async def test_actor_restrictions_global_level(perms_ds): function test_restrictions_gate_before_config (line 1505) | async def test_restrictions_gate_before_config(perms_ds): function test_actor_restrictions_json_endpoints_show_filtered_listings (line 1531) | async def test_actor_restrictions_json_endpoints_show_filtered_listings(... function test_actor_restrictions_view_instance_only (line 1551) | async def test_actor_restrictions_view_instance_only(perms_ds): function test_actor_restrictions_empty_allowlist (line 1569) | async def test_actor_restrictions_empty_allowlist(perms_ds): function test_actor_restrictions_cannot_be_overridden_by_config (line 1586) | async def test_actor_restrictions_cannot_be_overridden_by_config(): function test_actor_restrictions_with_database_level_config (line 1629) | async def test_actor_restrictions_with_database_level_config(perms_ds): function test_actor_restrictions_parent_deny_blocks_config_child_allow (line 1674) | async def test_actor_restrictions_parent_deny_blocks_config_child_allow(... function test_permission_check_view_requires_debug_permission (line 1720) | async def test_permission_check_view_requires_debug_permission(): function test_root_allow_block_with_table_restricted_actor (line 1750) | async def test_root_allow_block_with_table_restricted_actor(): FILE: tests/test_plugins.py function test_plugin_hooks_have_tests (line 36) | def test_plugin_hooks_have_tests(plugin_hook): function test_hook_plugins_dir_plugin_prepare_connection (line 47) | async def test_hook_plugins_dir_plugin_prepare_connection(ds_client): function test_hook_plugin_prepare_connection_arguments (line 55) | async def test_hook_plugin_prepare_connection_arguments(ds_client): function test_hook_extra_css_urls (line 119) | async def test_hook_extra_css_urls(ds_client, path, expected_decoded_obj... function test_hook_extra_js_urls (line 135) | async def test_hook_extra_js_urls(ds_client): function test_plugins_with_duplicate_js_urls (line 154) | async def test_plugins_with_duplicate_js_urls(ds_client): function test_hook_render_cell_link_from_json (line 181) | async def test_hook_render_cell_link_from_json(ds_client): function test_hook_render_cell_demo (line 196) | async def test_hook_render_cell_demo(ds_client): function test_hook_render_cell_pks_single_pk (line 214) | async def test_hook_render_cell_pks_single_pk(ds_client): function test_hook_render_cell_pks_compound_pk (line 224) | async def test_hook_render_cell_pks_compound_pk(ds_client): function test_hook_render_cell_pks_rowid_table (line 234) | async def test_hook_render_cell_pks_rowid_table(ds_client): function test_hook_render_cell_pks_custom_sql (line 244) | async def test_hook_render_cell_pks_custom_sql(ds_client): function test_hook_render_cell_async (line 264) | async def test_hook_render_cell_async(ds_client, path): function test_plugin_config (line 270) | async def test_plugin_config(ds_client): function test_plugin_config_env (line 288) | async def test_plugin_config_env(ds_client, monkeypatch): function test_plugin_config_env_from_config (line 294) | async def test_plugin_config_env_from_config(monkeypatch): function test_plugin_config_env_from_list (line 303) | async def test_plugin_config_env_from_list(ds_client): function test_plugin_config_file (line 312) | async def test_plugin_config_file(ds_client): function test_hook_extra_body_script (line 371) | def test_hook_extra_body_script(app_client, path, expected_extra_body_sc... function test_hook_asgi_wrapper (line 383) | async def test_hook_asgi_wrapper(ds_client): function test_hook_extra_template_vars (line 388) | def test_hook_extra_template_vars(restore_working_directory): function test_plugins_async_template_function (line 414) | def test_plugins_async_template_function(restore_working_directory): function test_default_plugins_have_no_templates_path_or_static_path (line 431) | def test_default_plugins_have_no_templates_path_or_static_path(): function view_names_client (line 442) | def view_names_client(tmp_path_factory): function test_view_names (line 485) | def test_view_names(view_names_client, path, view_name): function test_hook_register_output_renderer_no_parameters (line 492) | async def test_hook_register_output_renderer_no_parameters(ds_client): function test_hook_register_output_renderer_all_parameters (line 499) | async def test_hook_register_output_renderer_all_parameters(ds_client): function test_hook_register_output_renderer_custom_status_code (line 548) | async def test_hook_register_output_renderer_custom_status_code(ds_client): function test_hook_register_output_renderer_custom_content_type (line 556) | async def test_hook_register_output_renderer_custom_content_type(ds_clie... function test_hook_register_output_renderer_custom_headers (line 564) | async def test_hook_register_output_renderer_custom_headers(ds_client): function test_hook_register_output_renderer_returning_response (line 573) | async def test_hook_register_output_renderer_returning_response(ds_client): function test_hook_register_output_renderer_returning_broken_value (line 580) | async def test_hook_register_output_renderer_returning_broken_value(ds_c... function test_hook_register_output_renderer_can_render (line 587) | async def test_hook_register_output_renderer_can_render(ds_client): function test_hook_prepare_jinja2_environment (line 624) | async def test_hook_prepare_jinja2_environment(ds_client): function test_hook_publish_subcommand (line 636) | def test_hook_publish_subcommand(): function test_hook_register_facet_classes (line 646) | async def test_hook_register_facet_classes(ds_client): function test_hook_actor_from_request (line 687) | async def test_hook_actor_from_request(ds_client): function test_hook_actor_from_request_async (line 697) | async def test_hook_actor_from_request_async(ds_client): function test_existing_scope_actor_respected (line 707) | async def test_existing_scope_actor_respected(ds_client): function test_hook_custom_allowed (line 722) | async def test_hook_custom_allowed(action, expected): function test_hook_permission_resources_sql (line 731) | async def test_hook_permission_resources_sql(): function test_actor_json (line 754) | async def test_actor_json(ds_client): function test_hook_register_routes (line 770) | async def test_hook_register_routes(ds_client, path, body): function test_hook_register_routes_with_datasette (line 777) | def test_hook_register_routes_with_datasette(configured_path): function test_hook_register_routes_override (line 795) | def test_hook_register_routes_override(): function test_hook_register_routes_post (line 814) | def test_hook_register_routes_post(app_client): function test_hook_register_routes_csrftoken (line 821) | def test_hook_register_routes_csrftoken(restore_working_directory, tmpdi... function test_hook_register_routes_asgi (line 833) | async def test_hook_register_routes_asgi(ds_client): function test_hook_register_routes_add_message (line 840) | async def test_hook_register_routes_add_message(ds_client): function test_hook_register_routes_render_message (line 848) | def test_hook_register_routes_render_message(restore_working_directory, ... function test_hook_startup (line 859) | async def test_hook_startup(ds_client): function test_hook_startup_metadata_available (line 866) | async def test_hook_startup_metadata_available(ds_client): function test_hook_startup_catalog_populated (line 872) | async def test_hook_startup_catalog_populated(ds_client): function test_hook_canned_queries (line 878) | async def test_hook_canned_queries(ds_client): function test_hook_canned_queries_non_async (line 894) | async def test_hook_canned_queries_non_async(ds_client): function test_hook_canned_queries_async (line 900) | async def test_hook_canned_queries_async(ds_client): function test_hook_canned_queries_actor (line 906) | async def test_hook_canned_queries_actor(ds_client): function test_hook_register_magic_parameters (line 912) | def test_hook_register_magic_parameters(restore_working_directory): function test_hook_forbidden (line 949) | def test_hook_forbidden(restore_working_directory): function test_hook_handle_exception (line 969) | async def test_hook_handle_exception(ds_client): function test_hook_handle_exception_custom_response (line 979) | async def test_hook_handle_exception_custom_response(ds_client, param): function test_hook_menu_links (line 985) | async def test_hook_menu_links(ds_client): function test_hook_table_actions (line 1003) | async def test_hook_table_actions(ds_client): function test_hook_view_actions (line 1018) | async def test_hook_view_actions(ds_client): function get_actions_links (line 1034) | def get_actions_links(html): function test_hook_query_actions (line 1064) | async def test_hook_query_actions(ds_client, path, expected_url): function test_hook_row_actions (line 1081) | async def test_hook_row_actions(ds_client): function test_hook_database_actions (line 1099) | async def test_hook_database_actions(ds_client): function test_hook_homepage_actions (line 1110) | async def test_hook_homepage_actions(ds_client): function test_hook_skip_csrf (line 1128) | def test_hook_skip_csrf(app_client): function _extract_commands (line 1153) | def _extract_commands(output): function test_hook_register_commands (line 1158) | def test_hook_register_commands(): function test_hook_filters_from_request (line 1209) | async def test_hook_filters_from_request(ds_client): function test_hook_register_actions (line 1228) | async def test_hook_register_actions(extra_metadata): function test_hook_register_actions_no_duplicates (line 1269) | async def test_hook_register_actions_no_duplicates(duplicate): function test_hook_register_actions_allows_identical_duplicates (line 1304) | async def test_hook_register_actions_allows_identical_duplicates(): function test_hook_actors_from_ids (line 1332) | async def test_hook_actors_from_ids(): function test_plugin_is_installed (line 1394) | async def test_plugin_is_installed(): function test_hook_jinja2_environment_from_request (line 1416) | async def test_hook_jinja2_environment_from_request(tmpdir): class SlotPlugin (line 1453) | class SlotPlugin: method top_homepage (line 1457) | def top_homepage(self, request): method top_database (line 1461) | def top_database(self, request, database): method top_table (line 1468) | def top_table(self, request, database, table): method top_row (line 1472) | def top_row(self, request, database, table, row): method top_query (line 1478) | def top_query(self, request, database, sql): method top_canned_query (line 1482) | def top_canned_query(self, request, database, query_name): function test_hook_top_homepage (line 1487) | async def test_hook_top_homepage(): function test_hook_top_database (line 1499) | async def test_hook_top_database(): function test_hook_top_table (line 1511) | async def test_hook_top_table(ds_client): function test_hook_top_row (line 1522) | async def test_hook_top_row(ds_client): function test_hook_top_query (line 1533) | async def test_hook_top_query(ds_client): function test_hook_top_canned_query (line 1544) | async def test_hook_top_canned_query(ds_client): function test_hook_track_event (line 1555) | async def test_hook_track_event(): function test_hook_register_events (line 1575) | async def test_hook_register_events(): function test_hook_register_token_handler (line 1582) | async def test_hook_register_token_handler(ds_client): function test_hook_write_wrapper (line 1614) | async def test_hook_write_wrapper(): function test_hook_register_actions_view_collection (line 1644) | async def test_hook_register_actions_view_collection(): function test_hook_register_actions_with_custom_resources (line 1655) | async def test_hook_register_actions_with_custom_resources(): function test_metadata_plugin_config_treated_as_config (line 1943) | def test_metadata_plugin_config_treated_as_config( function test_hook_register_column_types (line 1954) | async def test_hook_register_column_types(): FILE: tests/test_publish_cloudrun.py function test_publish_cloudrun_requires_gcloud (line 12) | def test_publish_cloudrun_requires_gcloud(mock_which, tmp_path_factory): function test_publish_cloudrun_invalid_database (line 24) | def test_publish_cloudrun_invalid_database(mock_which): function test_publish_cloudrun_prompts_for_service (line 37) | def test_publish_cloudrun_prompts_for_service( function test_publish_cloudrun (line 86) | def test_publish_cloudrun(mock_call, mock_output, mock_which, tmp_path_f... function test_publish_cloudrun_memory_cpu (line 156) | def test_publish_cloudrun_memory_cpu( function test_publish_cloudrun_plugin_secrets (line 223) | def test_publish_cloudrun_plugin_secrets( function test_publish_cloudrun_apt_get_install (line 300) | def test_publish_cloudrun_apt_get_install( function test_publish_cloudrun_extra_options (line 367) | def test_publish_cloudrun_extra_options( FILE: tests/test_publish_heroku.py function test_publish_heroku_requires_heroku (line 11) | def test_publish_heroku_requires_heroku(mock_which, tmp_path_factory): function test_publish_heroku_installs_plugin (line 26) | def test_publish_heroku_installs_plugin( function test_publish_heroku_invalid_database (line 46) | def test_publish_heroku_invalid_database(mock_which): function test_publish_heroku (line 58) | def test_publish_heroku(mock_call, mock_check_output, mock_which, tmp_pa... function test_publish_heroku_plugin_secrets (line 92) | def test_publish_heroku_plugin_secrets( function test_publish_heroku_generate_dir (line 138) | def test_publish_heroku_generate_dir( FILE: tests/test_restriction_sql.py function test_multiple_restriction_sources_intersect (line 8) | async def test_multiple_restriction_sources_intersect(): function test_restriction_sql_with_overlapping_databases_and_tables (line 62) | async def test_restriction_sql_with_overlapping_databases_and_tables(): function test_restriction_sql_empty_allowlist_query (line 106) | async def test_restriction_sql_empty_allowlist_query(): function test_restriction_sql_with_pagination (line 130) | async def test_restriction_sql_with_pagination(): function test_also_requires_with_restrictions (line 177) | async def test_also_requires_with_restrictions(): function test_restriction_abbreviations_and_full_names (line 221) | async def test_restriction_abbreviations_and_full_names(): function test_permission_resources_sql_multiple_restriction_sources_intersect (line 260) | async def test_permission_resources_sql_multiple_restriction_sources_int... FILE: tests/test_routes.py function routes (line 8) | def routes(): function test_routes (line 48) | def test_routes(routes, path, expected_name, expected_matches): function ds_with_route (line 60) | async def ds_with_route(): function test_db_with_route_databases (line 74) | async def test_db_with_route_databases(ds_with_route): function test_db_with_route_that_does_not_match_name (line 101) | async def test_db_with_route_that_does_not_match_name( FILE: tests/test_schema_endpoints.py function schema_ds (line 7) | async def schema_ds(): function test_database_schema_formats (line 50) | async def test_database_schema_formats(schema_ds, format_ext, expected_i... function test_instance_schema_formats (line 79) | async def test_instance_schema_formats(schema_ds, format_ext, expected_i... function test_table_schema_formats (line 115) | async def test_table_schema_formats(schema_ds, format_ext, expected_in_c... function test_schema_permission_enforcement (line 145) | async def test_schema_permission_enforcement(schema_ds, url): function test_instance_schema_respects_database_permissions (line 160) | async def test_instance_schema_respects_database_permissions(schema_ds): function test_database_schema_with_multiple_tables (line 185) | async def test_database_schema_with_multiple_tables(schema_ds): function test_empty_database_schema (line 199) | async def test_empty_database_schema(schema_ds): function test_database_not_exists (line 209) | async def test_database_not_exists(schema_ds): function test_table_not_exists (line 230) | async def test_table_not_exists(schema_ds): FILE: tests/test_search_tables.py function ds_with_tables (line 11) | async def ds_with_tables(): function test_tables_basic_search (line 64) | async def test_tables_basic_search(ds_with_tables): function test_tables_search_with_auth (line 84) | async def test_tables_search_with_auth(ds_with_tables): function test_tables_search_partial_match (line 102) | async def test_tables_search_partial_match(ds_with_tables): function test_tables_search_respects_database_permissions (line 117) | async def test_tables_search_respects_database_permissions(ds_with_tables): function test_tables_search_respects_table_permissions (line 133) | async def test_tables_search_respects_table_permissions(ds_with_tables): function test_tables_search_response_structure (line 149) | async def test_tables_search_response_structure(ds_with_tables): FILE: tests/test_spatialite.py function has_spatialite (line 7) | def has_spatialite(): function test_spatialite_version_info (line 18) | async def test_spatialite_version_info(): FILE: tests/test_table_api.py function test_table_json (line 10) | async def test_table_json(ds_client): function test_table_not_exists_json (line 29) | async def test_table_not_exists_json(ds_client): function test_table_shape_arrays (line 39) | async def test_table_shape_arrays(ds_client): function test_table_shape_arrayfirst (line 51) | async def test_table_shape_arrayfirst(ds_client): function test_table_shape_objects (line 71) | async def test_table_shape_objects(ds_client): function test_table_shape_array (line 83) | async def test_table_shape_array(ds_client): function test_table_shape_array_nl (line 95) | async def test_table_shape_array_nl(ds_client): function test_table_shape_invalid (line 111) | async def test_table_shape_invalid(ds_client): function test_table_shape_object (line 122) | async def test_table_shape_object(ds_client): function test_table_shape_object_compound_primary_key (line 134) | async def test_table_shape_object_compound_primary_key(ds_client): function test_table_with_slashes_in_name (line 144) | async def test_table_with_slashes_in_name(ds_client): function test_table_with_reserved_word_name (line 154) | async def test_table_with_reserved_word_name(ds_client): function test_paginate_tables_and_views (line 189) | async def test_paginate_tables_and_views( function test_validate_page_size (line 222) | async def test_validate_page_size(ds_client, path, expected_error): function test_page_size_zero (line 229) | async def test_page_size_zero(ds_client): function test_paginate_compound_keys (line 242) | async def test_paginate_compound_keys(ds_client): function test_paginate_compound_keys_with_extra_filters (line 263) | async def test_paginate_compound_keys_with_extra_filters(ds_client): function test_sortable (line 317) | async def test_sortable(ds_client, query_string, sort_key, human_descrip... function test_sortable_and_filtered (line 337) | async def test_sortable_and_filtered(ds_client): function test_sortable_argument_errors (line 356) | async def test_sortable_argument_errors(ds_client): function test_sortable_columns_metadata (line 370) | async def test_sortable_columns_metadata(ds_client): function test_searchable (line 430) | async def test_searchable(ds_client, path, expected_rows): function test_searchmode (line 467) | def test_searchmode(table_metadata, querystring, expected_rows): function test_searchable_views (line 497) | async def test_searchable_views(ds_client, path, expected_rows): function test_searchable_invalid_column (line 503) | async def test_searchable_invalid_column(ds_client): function test_table_filter_queries (line 545) | async def test_table_filter_queries(ds_client, path, expected_rows): function test_table_filter_queries_multiple_of_same_type (line 551) | async def test_table_filter_queries_multiple_of_same_type(ds_client): function test_table_filter_json_arraycontains (line 564) | async def test_table_filter_json_arraycontains(ds_client): function test_table_filter_json_arraynotcontains (line 600) | async def test_table_filter_json_arraynotcontains(ds_client): function test_table_filter_extra_where (line 622) | async def test_table_filter_extra_where(ds_client): function test_table_filter_extra_where_invalid (line 644) | async def test_table_filter_extra_where_invalid(ds_client): function test_table_filter_extra_where_disabled_if_no_sql_allowed (line 652) | def test_table_filter_extra_where_disabled_if_no_sql_allowed(): function test_table_through (line 662) | async def test_table_through(ds_client): function test_max_returned_rows (line 695) | async def test_max_returned_rows(ds_client): function test_view (line 705) | async def test_view(ds_client): function test_page_size_matching_max_returned_rows (line 718) | def test_page_size_matching_max_returned_rows( function test_facets (line 898) | async def test_facets(ds_client, path, expected_facet_results): function test_facets_array (line 912) | async def test_facets_array(ds_client): function test_suggested_facets (line 941) | async def test_suggested_facets(ds_client): function test_allow_facet_off (line 981) | def test_allow_facet_off(): function test_suggest_facets_off (line 994) | def test_suggest_facets_off(): function test_nofacet (line 1007) | async def test_nofacet(ds_client, nofacet): function test_nosuggest (line 1022) | async def test_nosuggest(ds_client, nosuggest): function test_nocount (line 1038) | async def test_nocount(ds_client, nocount, expected_count): function test_nocount_nofacet_if_shape_is_object (line 1046) | def test_nocount_nofacet_if_shape_is_object(app_client_with_trace): function test_expand_labels (line 1054) | async def test_expand_labels(ds_client): function test_expand_label (line 1090) | async def test_expand_label(ds_client): function test_ttl_parameter (line 1117) | async def test_ttl_parameter(ds_client, path, expected_cache_control): function test_infinity_returned_as_null (line 1123) | async def test_infinity_returned_as_null(ds_client): function test_infinity_returned_as_invalid_json_if_requested (line 1133) | async def test_infinity_returned_as_invalid_json_if_requested(ds_client): function test_custom_query_with_unicode_characters (line 1145) | async def test_custom_query_with_unicode_characters(ds_client): function test_null_and_compound_foreign_keys_are_not_expanded (line 1154) | async def test_null_and_compound_foreign_keys_are_not_expanded(ds_client): function test_binary_data_in_json (line 1202) | async def test_binary_data_in_json(ds_client, path, expected_json, expec... function test_paginate_using_link_header (line 1223) | async def test_paginate_using_link_header(ds_client, qs): function test_generated_columns_are_visible_in_datasette (line 1245) | def test_generated_columns_are_visible_in_datasette(): function test_col_nocol (line 1321) | async def test_col_nocol(ds_client, path, expected_columns): function test_col_nocol_errors (line 1338) | async def test_col_nocol_errors(ds_client, path, expected_error): function test_table_extras (line 1370) | async def test_table_extras(ds_client, extra, expected_json): function test_extra_render_cell (line 1379) | async def test_extra_render_cell(): FILE: tests/test_table_html.py function test_table_definition_sql (line 38) | async def test_table_definition_sql(path, expected_definition_sql, ds_cl... function test_table_cell_truncation (line 44) | def test_table_cell_truncation(): function test_add_filter_redirects (line 84) | async def test_add_filter_redirects(ds_client): function test_existing_filter_redirects (line 118) | async def test_existing_filter_redirects(ds_client): function test_reflected_hidden_form_fields (line 173) | async def test_reflected_hidden_form_fields(ds_client, qs, expected_hidd... function test_empty_search_parameter_gets_removed (line 185) | async def test_empty_search_parameter_gets_removed(ds_client): function test_searchable_view_persists_fts_table (line 205) | async def test_searchable_view_persists_fts_table(ds_client): function test_sort_by_desc_redirects (line 218) | async def test_sort_by_desc_redirects(ds_client): function test_sort_links (line 231) | async def test_sort_links(ds_client): function test_facet_display (line 336) | async def test_facet_display(ds_client): function test_facets_persist_through_filter_form (line 418) | async def test_facets_persist_through_filter_form(ds_client): function test_next_does_not_persist_in_hidden_field (line 433) | async def test_next_does_not_persist_in_hidden_field(ds_client): function test_table_html_simple_primary_key (line 444) | async def test_table_html_simple_primary_key(ds_client): function test_table_csv_json_export_interface (line 473) | async def test_table_csv_json_export_interface(ds_client): function test_csv_json_export_links_include_labels_if_foreign_keys (line 514) | async def test_csv_json_export_links_include_labels_if_foreign_keys(ds_c... function test_table_not_exists (line 535) | async def test_table_not_exists(ds_client): function test_table_html_no_primary_key (line 540) | async def test_table_html_no_primary_key(ds_client): function test_rowid_sortable_no_primary_key (line 567) | async def test_rowid_sortable_no_primary_key(ds_client): function test_table_html_compound_primary_key (line 577) | async def test_table_html_compound_primary_key(ds_client): function test_table_html_foreign_key_links (line 614) | async def test_table_html_foreign_key_links(ds_client): function test_table_html_foreign_key_facets (line 640) | async def test_table_html_foreign_key_facets(ds_client): function test_table_html_disable_foreign_key_links_with_labels (line 652) | async def test_table_html_disable_foreign_key_links_with_labels(ds_client): function test_table_html_foreign_key_custom_label_column (line 672) | async def test_table_html_foreign_key_custom_label_column(ds_client): function test_table_html_filter_form_column_options (line 699) | async def test_table_html_filter_form_column_options( function test_table_html_filter_form_still_shows_nocol_columns (line 713) | async def test_table_html_filter_form_still_shows_nocol_columns(ds_client): function test_column_chooser_present (line 735) | async def test_column_chooser_present(ds_client): function test_mobile_column_actions_present (line 755) | async def test_mobile_column_actions_present(ds_client): function test_column_chooser_data_reflects_col_filtering (line 770) | async def test_column_chooser_data_reflects_col_filtering(ds_client): function test_column_chooser_shown_for_views (line 801) | async def test_column_chooser_shown_for_views(ds_client): function test_compound_primary_key_with_foreign_key_references (line 813) | async def test_compound_primary_key_with_foreign_key_references(ds_client): function test_view_html (line 836) | async def test_view_html(ds_client): function test_table_metadata (line 867) | async def test_table_metadata(ds_client): function test_advanced_export_box (line 887) | async def test_advanced_export_box(ds_client, path, has_object, has_stre... function test_extra_where_clauses (line 906) | async def test_extra_where_clauses(ds_client): function test_other_hidden_form_fields (line 941) | async def test_other_hidden_form_fields(ds_client, path, expected_hidden): function test_search_and_sort_fields_not_duplicated (line 959) | async def test_search_and_sort_fields_not_duplicated(ds_client, path, ex... function test_binary_data_display_in_table (line 969) | async def test_binary_data_display_in_table(ds_client): function test_custom_table_include (line 995) | def test_custom_table_include(): function test_sort_errors (line 1021) | async def test_sort_errors(ds_client, json, params, error): function test_metadata_sort (line 1040) | async def test_metadata_sort(ds_client): function test_metadata_sort_desc (line 1076) | async def test_metadata_sort_desc(ds_client): function test_facet_more_links (line 1141) | def test_facet_more_links( function test_unavailable_table_does_not_break_sort_relationships (line 1165) | def test_unavailable_table_does_not_break_sort_relationships(): function test_column_metadata (line 1179) | async def test_column_metadata(ds_client): function test_facet_total (line 1197) | def test_facet_total(): function test_sort_rowid_with_next (line 1213) | async def test_sort_rowid_with_next(ds_client): function assert_querystring_equal (line 1219) | def assert_querystring_equal(expected, actual): function test_table_page_title (line 1237) | async def test_table_page_title(ds_client, path, expected): function test_table_post_method_not_allowed (line 1244) | async def test_table_post_method_not_allowed(ds_client): function test_allow_facet_off (line 1251) | def test_allow_facet_off(allow_facet): function test_format_of_binary_links (line 1273) | async def test_format_of_binary_links(size, title, length_bytes): function test_foreign_key_labels_obey_permissions (line 1333) | async def test_foreign_key_labels_obey_permissions(config): function test_foreign_keys_special_character_in_database_name (line 1378) | def test_foreign_keys_special_character_in_database_name(app_client_with... FILE: tests/test_token_handler.py function datasette (line 13) | def datasette(): function test_default_signed_handler_registered (line 18) | async def test_default_signed_handler_registered(datasette): function test_create_token_default (line 27) | async def test_create_token_default(datasette): function test_create_token_with_restrictions (line 34) | async def test_create_token_with_restrictions(datasette): function test_verify_token_default (line 52) | async def test_verify_token_default(datasette): function test_verify_token_unknown_returns_none (line 62) | async def test_verify_token_unknown_returns_none(datasette): function test_verify_token_bad_signature_returns_none (line 69) | async def test_verify_token_bad_signature_returns_none(datasette): function test_create_token_with_named_handler (line 76) | async def test_create_token_with_named_handler(datasette): function test_create_token_unknown_handler_raises (line 83) | async def test_create_token_unknown_handler_raises(datasette): function test_custom_token_handler (line 90) | async def test_custom_token_handler(datasette): function test_verify_token_tries_all_handlers (line 137) | async def test_verify_token_tries_all_handlers(datasette): function test_token_handler_via_http (line 200) | async def test_token_handler_via_http(datasette): function test_custom_handler_via_http (line 214) | async def test_custom_handler_via_http(datasette): function test_token_handler_base_class_raises (line 252) | async def test_token_handler_base_class_raises(): function test_restrictions_round_trip (line 263) | async def test_restrictions_round_trip(datasette): function test_expires_after_round_trip (line 283) | async def test_expires_after_round_trip(datasette): function test_signed_tokens_disabled (line 295) | async def test_signed_tokens_disabled(): FILE: tests/test_tracer.py function test_trace (line 6) | def test_trace(trace_debug): function test_trace_silently_fails_for_large_page (line 42) | def test_trace_silently_fails_for_large_page(): function test_trace_query_errors (line 59) | def test_trace_query_errors(): function test_trace_parallel_queries (line 73) | def test_trace_parallel_queries(): FILE: tests/test_utils.py function test_urlsafe_components (line 27) | def test_urlsafe_components(path, expected): function test_path_with_added_args (line 56) | def test_path_with_added_args(path, added_args, expected): function test_path_with_removed_args (line 70) | def test_path_with_removed_args(path, args, expected): function test_path_with_replaced_args (line 87) | def test_path_with_replaced_args(path, args, expected): function test_path_from_row_pks (line 112) | def test_path_from_row_pks(row, pks, expected_path): function test_custom_json_encoder (line 132) | def test_custom_json_encoder(obj, expected): function test_validate_sql_select_bad (line 149) | def test_validate_sql_select_bad(bad_sql): function test_validate_sql_select_good (line 181) | def test_validate_sql_select_good(good_sql): function test_detect_fts (line 186) | def test_detect_fts(open_quote, close_quote): function test_detect_fts_different_table_names (line 214) | def test_detect_fts_different_table_names(table): function test_is_url (line 236) | def test_is_url(url, expected): function test_to_css_class (line 252) | def test_to_css_class(s, expected): function test_temporary_docker_directory_uses_hard_link (line 256) | def test_temporary_docker_directory_uses_hard_link(): function test_temporary_docker_directory_uses_copy_if_hard_link_fails (line 284) | def test_temporary_docker_directory_uses_copy_if_hard_link_fails(mock_li... function test_temporary_docker_directory_quotes_args (line 313) | def test_temporary_docker_directory_quotes_args(): function test_compound_keys_after_sql (line 340) | def test_compound_keys_after_sql(): function test_table_columns (line 356) | def test_table_columns(): function test_path_with_format (line 380) | def test_path_with_format(path, format, extra_qs, expected): function test_format_bytes (line 397) | def test_format_bytes(bytes, expected): function test_escape_fts (line 415) | def test_escape_fts(query, expected): function test_escape_css_string (line 427) | def test_escape_css_string(input, expected): function test_check_connection_spatialite_raises (line 431) | def test_check_connection_spatialite_raises(): function test_check_connection_passes (line 438) | def test_check_connection_passes(): function test_call_with_supported_arguments (line 443) | def test_call_with_supported_arguments(): function test_multi_params (line 466) | def test_multi_params(data, should_raise): function test_actor_matches_allow (line 518) | def test_actor_matches_allow(actor, allow, expected): function test_resolve_env_secrets (line 532) | def test_resolve_env_secrets(config, expected): function test_display_actor (line 551) | def test_display_actor(actor, expected): function test_initial_path_for_datasette (line 564) | async def test_initial_path_for_datasette(tmp_path_factory, dbs, expecte... function test_parse_metadata (line 586) | def test_parse_metadata(content, expected): function test_named_parameters (line 606) | async def test_named_parameters(sql, expected, use_async_version): function test_tilde_encoding (line 628) | def test_tilde_encoding(original, expected): function test_truncate_url (line 650) | def test_truncate_url(url, length, expected): function test_pairs_to_nested_config (line 700) | def test_pairs_to_nested_config(pairs, expected): function test_calculate_etag (line 706) | async def test_calculate_etag(tmp_path): function test_deep_dict_update (line 742) | def test_deep_dict_update(dict1, dict2, expected): FILE: tests/test_utils_check_callable.py class AsyncClass (line 5) | class AsyncClass: method __call__ (line 6) | async def __call__(self): class NotAsyncClass (line 10) | class NotAsyncClass: method __call__ (line 11) | def __call__(self): class ClassNoCall (line 15) | class ClassNoCall: function async_func (line 19) | async def async_func(): function non_async_func (line 23) | def non_async_func(): function test_check_callable (line 43) | def test_check_callable(obj, expected_is_callable, expected_is_async_cal... FILE: tests/test_utils_permissions.py function db (line 9) | def db(): function plugin_allow_all_for_user (line 24) | def plugin_allow_all_for_user(user: str) -> Callable[[str], PermissionSQL]: function plugin_deny_specific_table (line 38) | def plugin_deny_specific_table( function plugin_org_policy_deny_parent (line 59) | def plugin_org_policy_deny_parent(parent: str) -> Callable[[str], Permis... function plugin_allow_parent_for_user (line 75) | def plugin_allow_parent_for_user( function plugin_child_allow_for_user (line 95) | def plugin_child_allow_for_user( function plugin_root_deny_for_all (line 116) | def plugin_root_deny_for_all() -> Callable[[str], PermissionSQL]: function plugin_conflicting_same_child_rules (line 128) | def plugin_conflicting_same_child_rules( function plugin_allow_all_for_action (line 164) | def plugin_allow_all_for_action( function seed_catalog (line 217) | async def seed_catalog(db, per_parent: int = 10) -> None: function res_allowed (line 244) | def res_allowed(rows, parent=None): function res_denied (line 252) | def res_denied(rows, parent=None): function test_alice_global_allow_with_specific_denies_catalog (line 262) | async def test_alice_global_allow_with_specific_denies_catalog(db): function test_carol_parent_allow_but_child_conflict_deny_wins_catalog (line 289) | async def test_carol_parent_allow_but_child_conflict_deny_wins_catalog(db): function test_specificity_child_allow_overrides_parent_deny_catalog (line 313) | async def test_specificity_child_allow_overrides_parent_deny_catalog(db): function test_root_deny_all_but_parent_allow_rescues_specific_parent_catalog (line 340) | async def test_root_deny_all_but_parent_allow_rescues_specific_parent_ca... function test_parent_scoped_candidates (line 359) | async def test_parent_scoped_candidates(db): function test_implicit_deny_behavior (line 379) | async def test_implicit_deny_behavior(db): function test_candidate_filters_via_params (line 407) | async def test_candidate_filters_via_params(db): function test_action_specific_rules (line 465) | async def test_action_specific_rules(db): function test_actor_actor_id_action_parameters_available (line 494) | async def test_actor_actor_id_action_parameters_available(db): function test_multiple_plugins_with_own_parameters (line 536) | async def test_multiple_plugins_with_own_parameters(db): FILE: tests/test_write_wrapper.py function datasette (line 14) | def datasette(tmp_path): function test_write_wrapper_before_and_after (line 26) | async def test_write_wrapper_before_and_after(datasette, use_execute_wri... function test_write_wrapper_receives_result_via_yield (line 62) | async def test_write_wrapper_receives_result_via_yield(datasette): function test_write_wrapper_exception_thrown_into_generator (line 94) | async def test_write_wrapper_exception_thrown_into_generator(datasette): function test_write_wrapper_conn_is_usable (line 126) | async def test_write_wrapper_conn_is_usable(datasette): function test_write_wrapper_multiple_plugins_nest (line 159) | async def test_write_wrapper_multiple_plugins_nest(datasette): function test_write_wrapper_return_none_skips (line 215) | async def test_write_wrapper_return_none_skips(datasette): function test_write_wrapper_hook_parameters (line 251) | async def test_write_wrapper_hook_parameters( function test_write_wrapper_via_api (line 291) | async def test_write_wrapper_via_api(tmp_path): function test_write_wrapper_change_group_pattern (line 344) | async def test_write_wrapper_change_group_pattern(datasette): function test_write_wrapper_set_authorizer (line 416) | async def test_write_wrapper_set_authorizer(datasette, actor, table, sho... FILE: tests/utils.py function last_event (line 4) | def last_event(datasette): function assert_footer_links (line 9) | def assert_footer_links(soup): function inner_html (line 28) | def inner_html(soup): function has_load_extension (line 35) | def has_load_extension(): function cookie_was_deleted (line 40) | def cookie_was_deleted(response, cookie):