interpal-js
v0.1.2
Published
A powerful Node.js client library for InterPal with TypeScript support, bot framework, and WebSocket real-time events
Maintainers
Readme
��#� �i�n�t�e�r�p�a�l�-�j�s�
�
�
�
�[�!�[�n�p�m� �v�e�r�s�i�o�n�]�(�h�t�t�p�s�:�/�/�i�m�g�.�s�h�i�e�l�d�s�.�i�o�/�n�p�m�/�v�/�i�n�t�e�r�p�a�l�-�j�s�.�s�v�g�)�]�(�h�t�t�p�s�:�/�/�w�w�w�.�n�p�m�j�s�.�c�o�m�/�p�a�c�k�a�g�e�/�i�n�t�e�r�p�a�l�-�j�s�)�
�
�[�!�[�L�i�c�e�n�s�e�:� �M�I�T�]�(�h�t�t�p�s�:�/�/�i�m�g�.�s�h�i�e�l�d�s�.�i�o�/�b�a�d�g�e�/�L�i�c�e�n�s�e�-�M�I�T�-�y�e�l�l�o�w�.�s�v�g�)�]�(�h�t�t�p�s�:�/�/�o�p�e�n�s�o�u�r�c�e�.�o�r�g�/�l�i�c�e�n�s�e�s�/�M�I�T�)�
�
�
�
�A� �p�o�w�e�r�f�u�l� �N�o�d�e�.�j�s� �c�l�i�e�n�t� �l�i�b�r�a�r�y� �f�o�r� �I�n�t�e�r�P�a�l� �w�i�t�h� �T�y�p�e�S�c�r�i�p�t� �s�u�p�p�o�r�t�,� �f�e�a�t�u�r�i�n�g� �b�o�t�h� �s�y�n�c�h�r�o�n�o�u�s� �a�n�d� �a�s�y�n�c�h�r�o�n�o�u�s� �A�P�I�s�,� �W�e�b�S�o�c�k�e�t� �s�u�p�p�o�r�t�,� �a�n�d� �a�u�t�o�m�a�t�i�c� �e�r�r�o�r� �h�a�n�d�l�i�n�g�.�
�
�
�
�#�#� �F�e�a�t�u�r�e�s�
�
�
�
�(' ���M�o�d�e�r�n� �A�P�I� �D�e�s�i�g�n���
�
�-� �<د� �M�a�n�a�g�e�r�-�b�a�s�e�d� �a�r�c�h�i�t�e�c�t�u�r�e� �(�U�s�e�r�s�,� �M�e�s�s�a�g�e�s�,� �T�h�r�e�a�d�s�,� �N�o�t�i�f�i�c�a�t�i�o�n�s�)�
�
�-� �=�� �A�u�t�o�m�a�t�i�c� �r�e�c�o�n�n�e�c�t�i�o�n� �w�i�t�h� �e�x�p�o�n�e�n�t�i�a�l� �b�a�c�k�o�f�f�
�
�-� �=���� �B�u�i�l�t�-�i�n� �e�r�r�o�r� �h�a�n�d�l�i�n�g�
�
�-� �=��� �F�u�l�l� �T�y�p�e�S�c�r�i�p�t� �s�u�p�p�o�r�t�
�
�-� �<ب� �E�v�e�n�t�-�d�r�i�v�e�n� �a�r�c�h�i�t�e�c�t�u�r�e�
�
�
�
�=� ���B�o�t� �F�r�a�m�e�w�o�r�k���
�
�-� �=ج� �C�o�m�m�a�n�d� �s�y�s�t�e�m� �w�i�t�h� �p�r�e�f�i�x� �s�u�p�p�o�r�t�
�
�-� �<ح� �E�v�e�n�t� �d�e�c�o�r�a�t�o�r�s�
�
�-� �=�� �W�e�b�S�o�c�k�e�t� �r�e�a�l�-�t�i�m�e� �e�v�e�n�t�s�
�
�-� �>��� �I�n�t�e�n�t�-�b�a�s�e�d� �e�v�e�n�t� �f�i�l�t�e�r�i�n�g�
�
�
�
�=�'� ���D�e�v�e�l�o�p�e�r� �E�x�p�e�r�i�e�n�c�e���
�
�-� �=��� �C�o�m�p�r�e�h�e�n�s�i�v�e� �t�y�p�e� �d�e�f�i�n�i�t�i�o�n�s�
�
�-� �<ؓ� �E�a�s�y�-�t�o�-�u�s�e� �A�P�I�
�
�-� �=��� �E�x�t�e�n�s�i�v�e� �d�o�c�u�m�e�n�t�a�t�i�o�n�
�
�-� �=�
� �S�e�s�s�i�o�n� �p�e�r�s�i�s�t�e�n�c�e�
�
�
�
�#�#� �I�n�s�t�a�l�l�a�t�i�o�n�
�
�
�
����b�a�s�h�
�
�n�p�m� �i�n�s�t�a�l�l� �i�n�t�e�r�p�a�l�-�j�s�
�
����
�
�
�
�#�#� �Q�u�i�c�k� �S�t�a�r�t�
�
�
�
�#�#�#� �B�a�s�i�c� �B�o�t�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�i�m�p�o�r�t� �{� �B�o�t�,� �I�n�t�e�n�t�s� �}� �f�r�o�m� �'�i�n�t�e�r�p�a�l�-�j�s�'�;�
�
�
�
�c�o�n�s�t� �b�o�t� �=� �n�e�w� �B�o�t�(�{�
�
� � �u�s�e�r�n�a�m�e�:� �'�y�o�u�r�_�u�s�e�r�n�a�m�e�'�,�
�
� � �p�a�s�s�w�o�r�d�:� �'�y�o�u�r�_�p�a�s�s�w�o�r�d�'�,�
�
� � �c�o�m�m�a�n�d�P�r�e�f�i�x�:� �'�!�'�,�
�
� � �i�n�t�e�n�t�s�:� �[�I�n�t�e�n�t�s�.�F�L�A�G�S�.�M�E�S�S�A�G�E�S�,� �I�n�t�e�n�t�s�.�F�L�A�G�S�.�T�Y�P�I�N�G�]�,�
�
�}�)�;�
�
�
�
�/�/� �H�a�n�d�l�e� �r�e�a�d�y� �e�v�e�n�t�
�
�b�o�t�.�e�v�e�n�t�(�'�o�n�_�r�e�a�d�y�'�)�(�a�s�y�n�c� �(�)� �=�>� �{�
�
� � �c�o�n�s�o�l�e�.�l�o�g�(�'�B�o�t� �i�s� �r�e�a�d�y�!�'�)�;�
�
�}�)�;�
�
�
�
�/�/� �H�a�n�d�l�e� �m�e�s�s�a�g�e�s�
�
�b�o�t�.�e�v�e�n�t�(�'�o�n�_�m�e�s�s�a�g�e�'�)�(�a�s�y�n�c� �(�e�v�e�n�t�)� �=�>� �{�
�
� � �c�o�n�s�o�l�e�.�l�o�g�(��M�e�s�s�a�g�e� �f�r�o�m� �$�{�e�v�e�n�t�.�s�e�n�d�e�r�?�.�n�a�m�e�}�:� �$�{�e�v�e�n�t�.�c�o�n�t�e�n�t�}��)�;�
�
� � �
�
� � �/�/� �R�e�p�l�y� �t�o� �m�e�s�s�a�g�e�
�
� � �a�w�a�i�t� �b�o�t�.�m�e�s�s�a�g�e�s�.�s�e�n�d�(�e�v�e�n�t�.�t�h�r�e�a�d�_�i�d�,� �'�H�e�l�l�o�!�'�)�;�
�
�}�)�;�
�
�
�
�/�/� �D�e�f�i�n�e� �c�o�m�m�a�n�d�s�
�
�b�o�t�.�c�o�m�m�a�n�d�(�'�h�e�l�l�o�'�,� �a�s�y�n�c� �(�c�t�x�)� �=�>� �{�
�
� � �a�w�a�i�t� �c�t�x�.�s�e�n�d�(��H�e�l�l�o� �$�{�c�t�x�.�s�e�n�d�e�r�?�.�n�a�m�e�}�!��)�;�
�
�}�)�;�
�
�
�
�/�/� �S�t�a�r�t� �t�h�e� �b�o�t�
�
�b�o�t�.�r�u�n�(�)�;�
�
����
�
�
�
�#�#�#� �U�s�i�n�g� �t�h�e� �C�l�i�e�n�t� �D�i�r�e�c�t�l�y�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�i�m�p�o�r�t� �{� �I�n�t�e�r�p�a�l�C�l�i�e�n�t� �}� �f�r�o�m� �'�i�n�t�e�r�p�a�l�-�j�s�'�;�
�
�
�
�c�o�n�s�t� �c�l�i�e�n�t� �=� �n�e�w� �I�n�t�e�r�p�a�l�C�l�i�e�n�t�(�{�
�
� � �u�s�e�r�n�a�m�e�:� �'�y�o�u�r�_�u�s�e�r�n�a�m�e�'�,�
�
� � �p�a�s�s�w�o�r�d�:� �'�y�o�u�r�_�p�a�s�s�w�o�r�d�'�,�
�
� � �a�u�t�o�L�o�g�i�n�:� �t�r�u�e�,�
�
�}�)�;�
�
�
�
�a�w�a�i�t� �c�l�i�e�n�t�.�i�n�i�t�i�a�l�i�z�e�(�)�;�
�
�
�
�/�/� �F�e�t�c�h� �u�s�e�r� �p�r�o�f�i�l�e�
�
�c�o�n�s�t� �u�s�e�r� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�u�s�e�r�s�.�f�e�t�c�h�(�'�u�s�e�r�_�i�d�'�)�;�
�
�c�o�n�s�o�l�e�.�l�o�g�(�u�s�e�r�.�n�a�m�e�,� �u�s�e�r�.�a�g�e�,� �u�s�e�r�.�c�o�u�n�t�r�y�)�;�
�
�
�
�/�/� �S�e�n�d� �m�e�s�s�a�g�e�
�
�c�o�n�s�t� �t�h�r�e�a�d� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�t�h�r�e�a�d�s�.�f�e�t�c�h�U�s�e�r�T�h�r�e�a�d�(�'�u�s�e�r�_�i�d�'�)�;�
�
�a�w�a�i�t� �c�l�i�e�n�t�.�m�e�s�s�a�g�e�s�.�s�e�n�d�(�t�h�r�e�a�d�.�i�d�,� �'�H�e�l�l�o�!�'�)�;�
�
�
�
�/�/� �C�o�n�n�e�c�t� �t�o� �W�e�b�S�o�c�k�e�t� �f�o�r� �r�e�a�l�-�t�i�m�e� �e�v�e�n�t�s�
�
�a�w�a�i�t� �c�l�i�e�n�t�.�c�o�n�n�e�c�t�(�)�;�
�
�
�
�c�l�i�e�n�t�.�o�n�(�'�m�e�s�s�a�g�e�'�,� �(�e�v�e�n�t�)� �=�>� �{�
�
� � �c�o�n�s�o�l�e�.�l�o�g�(�'�N�e�w� �m�e�s�s�a�g�e�:�'�,� �e�v�e�n�t�.�c�o�n�t�e�n�t�)�;�
�
�}�)�;�
�
����
�
�
�
�#�#� �A�P�I� �D�o�c�u�m�e�n�t�a�t�i�o�n�
�
�
�
�#�#�#� �B�o�t� �C�l�a�s�s�
�
�
�
�T�h�e� ��B�o�t�� �c�l�a�s�s� �e�x�t�e�n�d�s� ��A�s�y�n�c�I�n�t�e�r�p�a�l�C�l�i�e�n�t�� �w�i�t�h� �c�o�m�m�a�n�d� �h�a�n�d�l�i�n�g� �a�n�d� �e�v�e�n�t� �d�e�c�o�r�a�t�o�r�s�.�
�
�
�
�#�#�#�#� �C�o�n�s�t�r�u�c�t�o�r� �O�p�t�i�o�n�s�
�
�
�
����t�y�p�e�s�c�r�i�p�t�
�
�{�
�
� � �u�s�e�r�n�a�m�e�:� �s�t�r�i�n�g�;�
�
� � �p�a�s�s�w�o�r�d�:� �s�t�r�i�n�g�;�
�
� � �c�o�m�m�a�n�d�P�r�e�f�i�x�?�:� �s�t�r�i�n�g� �|� �s�t�r�i�n�g�[�]�;� � �/�/� �D�e�f�a�u�l�t�:� �'�!�'�
�
� � �i�n�t�e�n�t�s�?�:� �I�n�t�e�n�t�R�e�s�o�l�v�a�b�l�e�;� � � � � � � � � �/�/� �E�v�e�n�t� �f�i�l�t�e�r�i�n�g�
�
� � �p�e�r�s�i�s�t�S�e�s�s�i�o�n�?�:� �b�o�o�l�e�a�n�;� � � � � � � � � � � � �/�/� �S�a�v�e� �s�e�s�s�i�o�n� �t�o� �d�i�s�k�
�
� � �s�e�s�s�i�o�n�F�i�l�e�?�:� �s�t�r�i�n�g�;� � � � � � � � � � � � � � � � �/�/� �C�u�s�t�o�m� �s�e�s�s�i�o�n� �f�i�l�e� �p�a�t�h�
�
� � �m�a�x�M�e�s�s�a�g�e�s�?�:� �n�u�m�b�e�r�;� � � � � � � � � � � � � � � � �/�/� �M�e�s�s�a�g�e� �c�a�c�h�e� �s�i�z�e�
�
� � �c�a�c�h�e�U�s�e�r�s�?�:� �b�o�o�l�e�a�n�;� � � � � � � � � � � � � � � � �/�/� �E�n�a�b�l�e� �u�s�e�r� �c�a�c�h�i�n�g�
�
� � �c�a�c�h�e�T�h�r�e�a�d�s�?�:� �b�o�o�l�e�a�n�;� � � � � � � � � � � � � � �/�/� �E�n�a�b�l�e� �t�h�r�e�a�d� �c�a�c�h�i�n�g�
�
�}�
�
����
�
�
�
�#�#�#�#� �E�v�e�n�t�s�
�
�
�
�U�s�e� �t�h�e� ��e�v�e�n�t�(�)�� �d�e�c�o�r�a�t�o�r� �t�o� �r�e�g�i�s�t�e�r� �e�v�e�n�t� �h�a�n�d�l�e�r�s�:�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�b�o�t�.�e�v�e�n�t�(�'�o�n�_�r�e�a�d�y�'�)�(�a�s�y�n�c� �(�)� �=�>� �{� �/�*� �.�.�.� �*�/� �}�)�;�
�
�b�o�t�.�e�v�e�n�t�(�'�o�n�_�m�e�s�s�a�g�e�'�)�(�a�s�y�n�c� �(�e�v�e�n�t�)� �=�>� �{� �/�*� �.�.�.� �*�/� �}�)�;�
�
�b�o�t�.�e�v�e�n�t�(�'�o�n�_�t�y�p�i�n�g�'�)�(�a�s�y�n�c� �(�e�v�e�n�t�)� �=�>� �{� �/�*� �.�.�.� �*�/� �}�)�;�
�
�b�o�t�.�e�v�e�n�t�(�'�o�n�_�n�o�t�i�f�i�c�a�t�i�o�n�'�)�(�a�s�y�n�c� �(�e�v�e�n�t�)� �=�>� �{� �/�*� �.�.�.� �*�/� �}�)�;�
�
�b�o�t�.�e�v�e�n�t�(�'�o�n�_�d�i�s�c�o�n�n�e�c�t�'�)�(�a�s�y�n�c� �(�d�a�t�a�)� �=�>� �{� �/�*� �.�.�.� �*�/� �}�)�;�
�
����
�
�
�
�#�#�#�#� �C�o�m�m�a�n�d�s�
�
�
�
�R�e�g�i�s�t�e�r� �c�o�m�m�a�n�d�s� �w�i�t�h� �t�h�e� ��c�o�m�m�a�n�d�(�)�� �m�e�t�h�o�d�:�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�b�o�t�.�c�o�m�m�a�n�d�(�'�p�i�n�g�'�,� �a�s�y�n�c� �(�c�t�x�)� �=�>� �{�
�
� � �a�w�a�i�t� �c�t�x�.�s�e�n�d�(�'�P�o�n�g�!�'�)�;�
�
�}�)�;�
�
�
�
�b�o�t�.�c�o�m�m�a�n�d�(�'�u�s�e�r�i�n�f�o�'�,� �a�s�y�n�c� �(�c�t�x�)� �=�>� �{�
�
� � �c�o�n�s�t� �n�a�m�e� �=� �c�t�x�.�s�e�n�d�e�r�?�.�n�a�m�e�;�
�
� � �c�o�n�s�t� �a�g�e� �=� �c�t�x�.�s�e�n�d�e�r�?�.�a�g�e�;�
�
� � �a�w�a�i�t� �c�t�x�.�s�e�n�d�(��U�s�e�r�:� �$�{�n�a�m�e�}�,� �A�g�e�:� �$�{�a�g�e�}��)�;�
�
�}�)�;�
�
����
�
�
�
�#�#�#� �M�a�n�a�g�e�r�s�
�
�
�
�#�#�#�#� �U�s�e�r�M�a�n�a�g�e�r�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�/�/� �F�e�t�c�h� �u�s�e�r� �p�r�o�f�i�l�e�
�
�c�o�n�s�t� �u�s�e�r� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�u�s�e�r�s�.�f�e�t�c�h�(�'�u�s�e�r�_�i�d�'�)�;�
�
�
�
�/�/� �F�e�t�c�h� �m�u�l�t�i�p�l�e� �u�s�e�r�s�
�
�c�o�n�s�t� �u�s�e�r�s� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�u�s�e�r�s�.�f�e�t�c�h�M�a�n�y�(�[�'�i�d�1�'�,� �'�i�d�2�'�]�)�;�
�
�
�
�/�/� �G�e�t� �c�a�c�h�e�d� �u�s�e�r�
�
�c�o�n�s�t� �c�a�c�h�e�d�U�s�e�r� �=� �c�l�i�e�n�t�.�u�s�e�r�s�.�c�a�c�h�e�.�g�e�t�(�'�u�s�e�r�_�i�d�'�)�;�
�
����
�
�
�
�#�#�#�#� �M�e�s�s�a�g�e�M�a�n�a�g�e�r�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�/�/� �S�e�n�d� �t�e�x�t� �m�e�s�s�a�g�e�
�
�a�w�a�i�t� �c�l�i�e�n�t�.�m�e�s�s�a�g�e�s�.�s�e�n�d�(�'�t�h�r�e�a�d�_�i�d�'�,� �'�H�e�l�l�o�!�'�)�;�
�
�
�
�/�/� �S�e�n�d� �G�I�F�
�
�a�w�a�i�t� �c�l�i�e�n�t�.�m�e�s�s�a�g�e�s�.�s�e�n�d�G�i�f�(�'�t�h�r�e�a�d�_�i�d�'�,� �'�g�i�f�_�u�r�l�'�)�;�
�
�
�
�/�/� �M�a�r�k� �a�s� �r�e�a�d�
�
�a�w�a�i�t� �c�l�i�e�n�t�.�m�e�s�s�a�g�e�s�.�m�a�r�k�A�s�R�e�a�d�(�'�t�h�r�e�a�d�_�i�d�'�,� �'�m�e�s�s�a�g�e�_�i�d�'�)�;�
�
�
�
�/�/� �D�e�l�e�t�e� �m�e�s�s�a�g�e�
�
�a�w�a�i�t� �c�l�i�e�n�t�.�m�e�s�s�a�g�e�s�.�d�e�l�e�t�e�(�'�t�h�r�e�a�d�_�i�d�'�,� �'�m�e�s�s�a�g�e�_�i�d�'�)�;�
�
����
�
�
�
�#�#�#�#� �T�h�r�e�a�d�M�a�n�a�g�e�r�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�/�/� �G�e�t� �u�s�e�r� �t�h�r�e�a�d�
�
�c�o�n�s�t� �t�h�r�e�a�d� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�t�h�r�e�a�d�s�.�f�e�t�c�h�U�s�e�r�T�h�r�e�a�d�(�'�u�s�e�r�_�i�d�'�)�;�
�
�
�
�/�/� �F�e�t�c�h� �t�h�r�e�a�d� �b�y� �I�D�
�
�c�o�n�s�t� �t�h�r�e�a�d� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�t�h�r�e�a�d�s�.�f�e�t�c�h�(�'�t�h�r�e�a�d�_�i�d�'�)�;�
�
�
�
�/�/� �L�i�s�t� �a�l�l� �t�h�r�e�a�d�s�
�
�c�o�n�s�t� �t�h�r�e�a�d�s� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�t�h�r�e�a�d�s�.�f�e�t�c�h�A�l�l�(�)�;�
�
����
�
�
�
�#�#�#�#� �N�o�t�i�f�i�c�a�t�i�o�n�M�a�n�a�g�e�r�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�/�/� �F�e�t�c�h� �n�o�t�i�f�i�c�a�t�i�o�n�s�
�
�c�o�n�s�t� �n�o�t�i�f�i�c�a�t�i�o�n�s� �=� �a�w�a�i�t� �c�l�i�e�n�t�.�n�o�t�i�f�i�c�a�t�i�o�n�s�.�f�e�t�c�h�(�)�;�
�
�
�
�/�/� �M�a�r�k� �a�s� �r�e�a�d�
�
�a�w�a�i�t� �c�l�i�e�n�t�.�n�o�t�i�f�i�c�a�t�i�o�n�s�.�m�a�r�k�A�s�R�e�a�d�(�'�n�o�t�i�f�i�c�a�t�i�o�n�_�i�d�'�)�;�
�
�
�
�/�/� �M�a�r�k� �a�l�l� �a�s� �r�e�a�d�
�
�a�w�a�i�t� �c�l�i�e�n�t�.�n�o�t�i�f�i�c�a�t�i�o�n�s�.�m�a�r�k�A�l�l�A�s�R�e�a�d�(�)�;�
�
����
�
�
�
�#�#�#� �I�n�t�e�n�t�s�
�
�
�
�C�o�n�t�r�o�l� �w�h�i�c�h� �e�v�e�n�t�s� �y�o�u�r� �b�o�t� �r�e�c�e�i�v�e�s�:�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�i�m�p�o�r�t� �{� �I�n�t�e�n�t�s� �}� �f�r�o�m� �'�i�n�t�e�r�p�a�l�-�j�s�'�;�
�
�
�
�c�o�n�s�t� �b�o�t� �=� �n�e�w� �B�o�t�(�{�
�
� � �i�n�t�e�n�t�s�:� �[�
�
� � � � �I�n�t�e�n�t�s�.�F�L�A�G�S�.�M�E�S�S�A�G�E�S�,� � � � � � � �/�/� �M�e�s�s�a�g�e� �e�v�e�n�t�s�
�
� � � � �I�n�t�e�n�t�s�.�F�L�A�G�S�.�T�Y�P�I�N�G�,� � � � � � � � � �/�/� �T�y�p�i�n�g� �e�v�e�n�t�s�
�
� � � � �I�n�t�e�n�t�s�.�F�L�A�G�S�.�N�O�T�I�F�I�C�A�T�I�O�N�S�,� � �/�/� �N�o�t�i�f�i�c�a�t�i�o�n� �e�v�e�n�t�s�
�
� � �]�,�
�
�}�)�;�
�
�
�
�/�/� �O�r� �u�s�e� �c�o�m�b�i�n�e�d� �i�n�t�e�n�t�s�
�
�c�o�n�s�t� �b�o�t� �=� �n�e�w� �B�o�t�(�{�
�
� � �i�n�t�e�n�t�s�:� �I�n�t�e�n�t�s�.�D�E�F�A�U�L�T�,� � �/�/� �A�l�l� �c�o�m�m�o�n� �e�v�e�n�t�s�
�
�}�)�;�
�
����
�
�
�
�#�#� �E�r�r�o�r� �H�a�n�d�l�i�n�g�
�
�
�
�T�h�e� �l�i�b�r�a�r�y� �i�n�c�l�u�d�e�s� �a�u�t�o�m�a�t�i�c� �e�r�r�o�r� �h�a�n�d�l�i�n�g� �a�n�d� �r�e�c�o�n�n�e�c�t�i�o�n�:�
�
�
�
�-� ���A�u�t�o�m�a�t�i�c� �R�e�c�o�n�n�e�c�t�i�o�n���:� �U�p� �t�o� �1�0� �a�t�t�e�m�p�t�s� �w�i�t�h� �e�x�p�o�n�e�n�t�i�a�l� �b�a�c�k�o�f�f�
�
�-� ���D�e�f�a�u�l�t� �E�r�r�o�r� �H�a�n�d�l�e�r���:� �P�r�e�v�e�n�t�s� �c�r�a�s�h�e�s� �f�r�o�m� �u�n�h�a�n�d�l�e�d� �e�r�r�o�r�s�
�
�-� ���C�u�s�t�o�m� �H�a�n�d�l�e�r�s���:� �O�p�t�i�o�n�a�l� �c�u�s�t�o�m� �e�r�r�o�r� �h�a�n�d�l�i�n�g�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�/�/� �O�p�t�i�o�n�a�l�:� �A�d�d� �c�u�s�t�o�m� �e�r�r�o�r� �h�a�n�d�l�e�r�
�
�b�o�t�.�o�n�(�'�e�r�r�o�r�'�,� �(�e�r�r�o�r�)� �=�>� �{�
�
� � �c�o�n�s�o�l�e�.�l�o�g�(�'�C�u�s�t�o�m� �e�r�r�o�r� �h�a�n�d�l�i�n�g�:�'�,� �e�r�r�o�r�.�m�e�s�s�a�g�e�)�;�
�
�}�)�;�
�
�
�
�/�/� �O�p�t�i�o�n�a�l�:� �M�o�n�i�t�o�r� �r�e�c�o�n�n�e�c�t�i�o�n� �a�t�t�e�m�p�t�s�
�
�b�o�t�.�o�n�(�'�r�e�c�o�n�n�e�c�t�i�n�g�'�,� �(�i�n�f�o�)� �=�>� �{�
�
� � �c�o�n�s�o�l�e�.�l�o�g�(��R�e�c�o�n�n�e�c�t�i�n�g�:� �a�t�t�e�m�p�t� �$�{�i�n�f�o�.�a�t�t�e�m�p�t�}�/�$�{�i�n�f�o�.�m�a�x�A�t�t�e�m�p�t�s�}��)�;�
�
�}�)�;�
�
����
�
�
�
�S�e�e� �[�E�R�R�O�R�_�H�A�N�D�L�I�N�G�.�m�d�]�(�E�R�R�O�R�_�H�A�N�D�L�I�N�G�.�m�d�)� �f�o�r� �d�e�t�a�i�l�e�d� �i�n�f�o�r�m�a�t�i�o�n�.�
�
�
�
�#�#� �S�e�s�s�i�o�n� �P�e�r�s�i�s�t�e�n�c�e�
�
�
�
�S�a�v�e� �a�n�d� �r�e�u�s�e� �s�e�s�s�i�o�n�s� �t�o� �a�v�o�i�d� �r�e�p�e�a�t�e�d� �l�o�g�i�n�s�:�
�
�
�
����j�a�v�a�s�c�r�i�p�t�
�
�c�o�n�s�t� �b�o�t� �=� �n�e�w� �B�o�t�(�{�
�
� � �u�s�e�r�n�a�m�e�:� �'�y�o�u�r�_�u�s�e�r�n�a�m�e�'�,�
�
� � �p�a�s�s�w�o�r�d�:� �'�y�o�u�r�_�p�a�s�s�w�o�r�d�'�,�
�
� � �p�e�r�s�i�s�t�S�e�s�s�i�o�n�:� �t�r�u�e�,� � � � � � � � � � � � � � �/�/� �E�n�a�b�l�e� �s�e�s�s�i�o�n� �p�e�r�s�i�s�t�e�n�c�e�
�
� � �s�e�s�s�i�o�n�F�i�l�e�:� �'�.�/�m�y�-�s�e�s�s�i�o�n�.�j�s�o�n�'�,� � �/�/� �O�p�t�i�o�n�a�l�:� �c�u�s�t�o�m� �f�i�l�e� �p�a�t�h�
�
� � �s�e�s�s�i�o�n�E�x�p�i�r�a�t�i�o�n�H�o�u�r�s�:� �7�2�0�,� � � � � � � �/�/� �O�p�t�i�o�n�a�l�:� �3�0� �d�a�y�s� �(�d�e�f�a�u�l�t�)�
�
�}�)�;�
�
����
�
�
�
�#�#� �M�i�g�r�a�t�i�o�n� �f�r�o�m� �V�1�
�
�
�
�I�f� �y�o�u�'�r�e� �u�p�g�r�a�d�i�n�g� �f�r�o�m� �a�n� �o�l�d�e�r� �v�e�r�s�i�o�n�,� �s�e�e� �[�M�I�G�R�A�T�I�O�N�_�V�2�.�m�d�]�(�M�I�G�R�A�T�I�O�N�_�V�2�.�m�d�)� �f�o�r� �m�i�g�r�a�t�i�o�n� �g�u�i�d�e�.�
�
�
�
�#�#� �E�x�a�m�p�l�e�s�
�
�
�
�C�h�e�c�k� �t�h�e� �[�e�x�a�m�p�l�e�s�]�(�e�x�a�m�p�l�e�s�/�)� �d�i�r�e�c�t�o�r�y� �f�o�r� �m�o�r�e� �e�x�a�m�p�l�e�s�:�
�
�
�
�-� �[�B�a�s�i�c� �B�o�t�]�(�e�x�a�m�p�l�e�s�/�v�2�-�b�a�s�i�c�-�b�o�t�.�j�s�)�
�
�-� �S�e�e� �[�V�2�_�F�E�A�T�U�R�E�S�.�m�d�]�(�V�2�_�F�E�A�T�U�R�E�S�.�m�d�)� �f�o�r� �f�e�a�t�u�r�e� �o�v�e�r�v�i�e�w�
�
�
�
�#�#� �A�P�I� �R�e�f�e�r�e�n�c�e�
�
�
�
�F�o�r� �d�e�t�a�i�l�e�d� �A�P�I� �d�o�c�u�m�e�n�t�a�t�i�o�n�,� �s�e�e�:�
�
�-� �[�V�2�_�Q�U�I�C�K�_�R�E�F�E�R�E�N�C�E�.�m�d�]�(�V�2�_�Q�U�I�C�K�_�R�E�F�E�R�E�N�C�E�.�m�d�)� �-� �Q�u�i�c�k� �r�e�f�e�r�e�n�c�e� �g�u�i�d�e�
�
�-� �[�V�2�_�F�E�A�T�U�R�E�S�.�m�d�]�(�V�2�_�F�E�A�T�U�R�E�S�.�m�d�)� �-� �F�e�a�t�u�r�e� �d�o�c�u�m�e�n�t�a�t�i�o�n�
�
�-� �[�V�2�_�I�M�P�L�E�M�E�N�T�A�T�I�O�N�_�S�U�M�M�A�R�Y�.�m�d�]�(�V�2�_�I�M�P�L�E�M�E�N�T�A�T�I�O�N�_�S�U�M�M�A�R�Y�.�m�d�)� �-� �I�m�p�l�e�m�e�n�t�a�t�i�o�n� �d�e�t�a�i�l�s�
�
�
�
�#�#� �R�e�q�u�i�r�e�m�e�n�t�s�
�
�
�
�-� �N�o�d�e�.�j�s� �>�=� �1�8�.�1�8�.�0�
�
�-� �T�y�p�e�S�c�r�i�p�t� �>�=� �5�.�0� �(�f�o�r� �T�y�p�e�S�c�r�i�p�t� �u�s�e�r�s�)�
�
�
�
�#�#� �C�o�n�t�r�i�b�u�t�i�n�g�
�
�
�
�C�o�n�t�r�i�b�u�t�i�o�n�s� �a�r�e� �w�e�l�c�o�m�e�!� �P�l�e�a�s�e� �f�e�e�l� �f�r�e�e� �t�o� �s�u�b�m�i�t� �a� �P�u�l�l� �R�e�q�u�e�s�t�.�
�
�
�
�#�#� �L�i�c�e�n�s�e�
�
�
�
�M�I�T� �L�i�c�e�n�s�e� �-� �s�e�e� �[�L�I�C�E�N�S�E�]�(�L�I�C�E�N�S�E�)� �f�i�l�e� �f�o�r� �d�e�t�a�i�l�s�.�
�
�
�
�#�#� �S�u�p�p�o�r�t�
�
�
�
�F�o�r� �i�s�s�u�e�s� �a�n�d� �q�u�e�s�t�i�o�n�s�:�
�
�-� �[�G�i�t�H�u�b� �I�s�s�u�e�s�]�(�h�t�t�p�s�:�/�/�g�i�t�h�u�b�.�c�o�m�/�y�o�u�r�u�s�e�r�n�a�m�e�/�i�n�t�e�r�p�a�l�-�j�s�/�i�s�s�u�e�s�)�
�
�-� �J�o�i�n� �o�u�r� �c�o�m�m�u�n�i�t�y� �d�i�s�c�u�s�s�i�o�n�s�
�
�
�
�#�#� �C�h�a�n�g�e�l�o�g�
�
�
�
�#�#�#� �0�.�1�.�0�
�
�
�
�-� �I�n�i�t�i�a�l� �r�e�l�e�a�s�e�
�
�-� �M�a�n�a�g�e�r�-�b�a�s�e�d� �A�P�I�
�
�-� �B�o�t� �f�r�a�m�e�w�o�r�k� �w�i�t�h� �c�o�m�m�a�n�d�s�
�
�-� �W�e�b�S�o�c�k�e�t� �s�u�p�p�o�r�t� �w�i�t�h� �i�n�t�e�n�t�s�
�
�-� �A�u�t�o�m�a�t�i�c� �e�r�r�o�r� �h�a�n�d�l�i�n�g� �a�n�d� �r�e�c�o�n�n�e�c�t�i�o�n�
�
�-� �T�y�p�e�S�c�r�i�p�t� �s�u�p�p�o�r�t�
�
�-� �S�e�s�s�i�o�n� �p�e�r�s�i�s�t�e�n�c�e�
�
�
�
�-�-�-�
�
�
�
�M�a�d�e� �w�i�t�h� �d'� �f�o�r� �t�h�e� �I�n�t�e�r�P�a�l� �c�o�m�m�u�n�i�t�y�
