o
    ҷh1                     @  s$  d dl mZ ddlmZmZ d dlmZ d dlZd dlZddl	m
Z
 eG dd dZeG d	d
 d
ZeG dd dZeG dd dZeG dd dZeG dd dZeG dd dZd7ddZd8ddZd9d d!Zd:d"d#Zd:d$d%Z	d;d<d,d-Zd=d/d0Zd>d2d3Zd?d5d6ZdS )@    )annotations   )event_classT_JSON_DICT)	dataclassN)runtimec                   @  s>   e Zd ZU dZded< ded< ded< dd	 Zed
d ZdS )DatabaseWithObjectStoresz2
    Database with an array of object stores.
    strnamefloatversionztyping.List[ObjectStore]object_storesc                 C  s2   t  }| j|d< | j|d< dd | jD |d< |S )Nr
   r   c                 S     g | ]}|  qS  to_json.0ir   r   d/var/www/html/venv/lib/python3.10/site-packages/selenium/webdriver/common/devtools/v85/indexed_db.py
<listcomp>"       z4DatabaseWithObjectStores.to_json.<locals>.<listcomp>objectStores)dictr
   r   r   selfjsonr   r   r   r      s
   

z DatabaseWithObjectStores.to_jsonc                 C  s,   | t |d t|d dd |d D dS )Nr
   r   c                 S     g | ]}t |qS r   )ObjectStore	from_jsonr   r   r   r   r   *       z6DatabaseWithObjectStores.from_json.<locals>.<listcomp>r   )r
   r   r   r	   r   clsr   r   r   r   r   %   s
   

z"DatabaseWithObjectStores.from_jsonN__name__
__module____qualname____doc____annotations__r   classmethodr   r   r   r   r   r      s   
 r   c                   @  sF   e Zd ZU dZded< ded< ded< ded	< d
d Zedd ZdS )r   z
    Object store.
    r	   r
   KeyPathkey_pathboolauto_incrementztyping.List[ObjectStoreIndex]indexesc                 C  s@   t  }| j|d< | j |d< | j|d< dd | jD |d< |S )Nr
   keyPathautoIncrementc                 S  r   r   r   r   r   r   r   r   D   r   z'ObjectStore.to_json.<locals>.<listcomp>r/   )r   r
   r,   r   r.   r/   r   r   r   r   r   ?   s   

zObjectStore.to_jsonc                 C  s8   | t |d t|d t|d dd |d D dS )Nr
   r0   r1   c                 S  r   r   )ObjectStoreIndexr   r   r   r   r   r   M   r    z)ObjectStore.from_json.<locals>.<listcomp>r/   )r
   r,   r.   r/   r	   r+   r   r-   r"   r   r   r   r   G   s   

zObjectStore.from_jsonNr$   r   r   r   r   r   .      
 r   c                   @  sF   e Zd ZU dZded< ded< ded< ded< d	d
 Zedd ZdS )r2   z
    Object store index.
    r	   r
   r+   r,   r-   uniquemulti_entryc                 C  s6   t  }| j|d< | j |d< | j|d< | j|d< |S )Nr
   r0   r5   
multiEntry)r   r
   r,   r   r5   r6   r   r   r   r   r   b   s   


zObjectStoreIndex.to_jsonc                 C  s2   | t |d t|d t|d t|d dS )Nr
   r0   r5   r7   )r
   r,   r5   r6   r3   r"   r   r   r   r   j   s   


zObjectStoreIndex.from_jsonNr$   r   r   r   r   r2   Q   r4   r2   c                   @  s^   e Zd ZU dZded< dZded< dZded< dZded	< dZd
ed< dd Z	e
dd ZdS )Keyz
    Key.
    r	   type_Nztyping.Optional[float]numbertyping.Optional[str]stringdatez!typing.Optional[typing.List[Key]]arrayc                 C  sn   t  }| j|d< | jd ur| j|d< | jd ur| j|d< | jd ur&| j|d< | jd ur5dd | jD |d< |S )Ntyper:   r<   r=   c                 S  r   r   r   r   r   r   r   r      r   zKey.to_json.<locals>.<listcomp>r>   )r   r9   r:   r<   r=   r>   r   r   r   r   r      s   







zKey.to_jsonc                 C  st   | t |d d|v rt|d nd d|v rt |d nd d|v r&t|d nd d|v r6dd |d D dS d dS )	Nr?   r:   r<   r=   r>   c                 S  r   r   )r8   r   r   r   r   r   r      r    z!Key.from_json.<locals>.<listcomp>)r9   r:   r<   r=   r>   r!   r"   r   r   r   r      s   
zKey.from_json)r%   r&   r'   r(   r)   r:   r<   r=   r>   r   r*   r   r   r   r   r   r8   t   s   
 r8   c                   @  sN   e Zd ZU dZded< ded< dZded< dZded< d	d
 Zedd Z	dS )KeyRangez
    Key range.
    r-   
lower_open
upper_openNztyping.Optional[Key]lowerupperc                 C  sN   t  }| j|d< | j|d< | jd ur| j |d< | jd ur%| j |d< |S )N	lowerOpen	upperOpenrC   rD   )r   rA   rB   rC   r   rD   r   r   r   r   r      s   



zKeyRange.to_jsonc                 C  sP   | t |d t |d d|v rt|d nd d|v r$t|d dS d dS )NrE   rF   rC   rD   )rA   rB   rC   rD   )r-   r8   r   r"   r   r   r   r      s   

zKeyRange.from_json)
r%   r&   r'   r(   r)   rC   rD   r   r*   r   r   r   r   r   r@      s   
 
r@   c                   @  s>   e Zd ZU dZded< ded< ded< dd Zedd	 Zd
S )	DataEntryz
    Data entry.
    zruntime.RemoteObjectkeyprimary_keyvaluec                 C  s4   t  }| j |d< | j |d< | j |d< |S )NrH   
primaryKeyrJ   )r   rH   r   rI   rJ   r   r   r   r   r      s
   zDataEntry.to_jsonc                 C  s2   | t j|d t j|d t j|d dS )NrH   rK   rJ   )rH   rI   rJ   )r   RemoteObjectr   r"   r   r   r   r      s
   zDataEntry.from_jsonNr$   r   r   r   r   rG      s   
 rG   c                   @  sF   e Zd ZU dZded< dZded< dZded< d	d
 Zedd Z	dS )r+   z
    Key path.
    r	   r9   Nr;   r<   z!typing.Optional[typing.List[str]]r>   c                 C  sF   t  }| j|d< | jd ur| j|d< | jd ur!dd | jD |d< |S )Nr?   r<   c                 S  s   g | ]}|qS r   r   r   r   r   r   r      s    z#KeyPath.to_json.<locals>.<listcomp>r>   )r   r9   r<   r>   r   r   r   r   r      s   



zKeyPath.to_jsonc                 C  sH   | t |d d|v rt |d nd d|v r dd |d D dS d dS )Nr?   r<   r>   c                 S     g | ]}t |qS r   r	   r   r   r   r   r      r   z%KeyPath.from_json.<locals>.<listcomp>)r9   r<   r>   rN   r"   r   r   r   r      s   
zKeyPath.from_json)
r%   r&   r'   r(   r)   r<   r>   r   r*   r   r   r   r   r   r+      s   
 	r+   security_originr	   database_nameobject_store_namereturn0typing.Generator[T_JSON_DICT, T_JSON_DICT, None]c                 c  s4    t  }| |d< ||d< ||d< d|d}|V }dS )z
    Clears all entries from an object store.

    :param security_origin: Security origin.
    :param database_name: Database name.
    :param object_store_name: Object store name.
    securityOrigindatabaseNameobjectStoreNamezIndexedDB.clearObjectStoremethodparamsNr   rO   rP   rQ   rY   cmd_dictr   r   r   r   clear_object_store  s   
r]   c                 c  s,    t  }| |d< ||d< d|d}|V }dS )zt
    Deletes a database.

    :param security_origin: Security origin.
    :param database_name: Database name.
    rT   rU   zIndexedDB.deleteDatabaserW   NrZ   rO   rP   rY   r\   r   r   r   r   delete_database  s   

r_   	key_rangec                 c  s@    t  }| |d< ||d< ||d< | |d< d|d}|V }dS )z
    Delete a range of entries from an object store

    :param security_origin:
    :param database_name:
    :param object_store_name:
    :param key_range: Range of entry keys to delete
    rT   rU   rV   keyRangez"IndexedDB.deleteObjectStoreEntriesrW   N)r   r   )rO   rP   rQ   r`   rY   r\   r   r   r   r   delete_object_store_entries.  s   
rb   c                  c      ddi} | V }dS )z'
    Disables events from backend.
    rX   zIndexedDB.disableNr   r\   r   r   r   r   disableH     
re   c                  c  rc   )z&
    Enables events from backend.
    rX   zIndexedDB.enableNr   rd   r   r   r   enableR  rf   rg   
index_name
skip_countint	page_sizetyping.Optional[KeyRange]Vtyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[typing.List[DataEntry], bool]]c           
      c  sz    t  }| |d< ||d< ||d< ||d< ||d< ||d< |dur&| |d< d	|d
}|V }	dd |	d D t|	d fS )ap  
    Requests data from object store or index.

    :param security_origin: Security origin.
    :param database_name: Database name.
    :param object_store_name: Object store name.
    :param index_name: Index name, empty string for object store data requests.
    :param skip_count: Number of records to skip.
    :param page_size: Number of records to fetch.
    :param key_range: *(Optional)* Key range.
    :returns: A tuple with the following items:

        0. **objectStoreDataEntries** - Array of object store data entries.
        1. **hasMore** - If true, there are more entries to fetch in the given range.
    rT   rU   rV   	indexName	skipCountpageSizeNra   zIndexedDB.requestDatarW   c                 S  r   r   )rG   r   r   r   r   r   r     r    z request_data.<locals>.<listcomp>objectStoreDataEntrieshasMore)r   r   r-   )
rO   rP   rQ   rh   ri   rk   r`   rY   r\   r   r   r   r   request_data\  s"   
rs   Ftyping.Generator[T_JSON_DICT, T_JSON_DICT, typing.Tuple[float, float]]c                 c  sH    t  }| |d< ||d< ||d< d|d}|V }t|d t|d fS )a  
    Gets metadata of an object store

    :param security_origin: Security origin.
    :param database_name: Database name.
    :param object_store_name: Object store name.
    :returns: A tuple with the following items:

        0. **entriesCount** - the entries count
        1. **keyGeneratorValue** - the current value of key generator, to become the next inserted key into the object store. Valid if objectStore.autoIncrement is true.
    rT   rU   rV   zIndexedDB.getMetadatarW   entriesCountkeyGeneratorValue)r   r   r[   r   r   r   get_metadata  s   

rw   Dtyping.Generator[T_JSON_DICT, T_JSON_DICT, DatabaseWithObjectStores]c                 c  s6    t  }| |d< ||d< d|d}|V }t|d S )z
    Requests database with given name in given frame.

    :param security_origin: Security origin.
    :param database_name: Database name.
    :returns: Database with an array of object stores.
    rT   rU   zIndexedDB.requestDatabaserW   databaseWithObjectStores)r   r   r   r^   r   r   r   request_database  s   rz   <typing.Generator[T_JSON_DICT, T_JSON_DICT, typing.List[str]]c                 c  s2    t  }| |d< d|d}|V }dd |d D S )z
    Requests database names for given security origin.

    :param security_origin: Security origin.
    :returns: Database names for origin.
    rT   zIndexedDB.requestDatabaseNamesrW   c                 S  rM   r   rN   r   r   r   r   r     r   z*request_database_names.<locals>.<listcomp>databaseNamesrZ   )rO   rY   r\   r   r   r   r   request_database_names  s   	r}   )rO   r	   rP   r	   rQ   r	   rR   rS   )rO   r	   rP   r	   rR   rS   )
rO   r	   rP   r	   rQ   r	   r`   r@   rR   rS   )rR   rS   )N)rO   r	   rP   r	   rQ   r	   rh   r	   ri   rj   rk   rj   r`   rl   rR   rm   )rO   r	   rP   r	   rQ   r	   rR   rt   )rO   r	   rP   r	   rR   rx   )rO   r	   rR   r{   )
__future__r   utilr   r   dataclassesr   enumtyping r   r   r   r2   r8   r@   rG   r+   r]   r_   rb   re   rg   rs   rw   rz   r}   r   r   r   r   <module>   s<   ""+$






,
