@areumtecnologia/unitychat 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +407 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3d.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3e.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3f.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3g.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3h.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3i.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3j.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3k.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3l.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3m.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3n.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3o.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3p.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3q.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3r.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3s.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3t.json +1 -0
- package/data/sessions/session1/app-state-sync-key-AAAAAN3u.json +1 -0
- package/data/sessions/session1/app-state-sync-version-regular_low.json +1 -0
- package/data/sessions/session1/creds.json +1 -0
- package/data/sessions/session1/device-list-559181648646.json +1 -0
- package/data/sessions/session1/lid-mapping-275801408819393_reverse.json +1 -0
- package/data/sessions/session1/lid-mapping-559181648646.json +1 -0
- package/data/sessions/session1/pre-key-1.json +1 -0
- package/data/sessions/session1/pre-key-10.json +1 -0
- package/data/sessions/session1/pre-key-100.json +1 -0
- package/data/sessions/session1/pre-key-101.json +1 -0
- package/data/sessions/session1/pre-key-102.json +1 -0
- package/data/sessions/session1/pre-key-103.json +1 -0
- package/data/sessions/session1/pre-key-104.json +1 -0
- package/data/sessions/session1/pre-key-105.json +1 -0
- package/data/sessions/session1/pre-key-106.json +1 -0
- package/data/sessions/session1/pre-key-107.json +1 -0
- package/data/sessions/session1/pre-key-108.json +1 -0
- package/data/sessions/session1/pre-key-109.json +1 -0
- package/data/sessions/session1/pre-key-11.json +1 -0
- package/data/sessions/session1/pre-key-110.json +1 -0
- package/data/sessions/session1/pre-key-111.json +1 -0
- package/data/sessions/session1/pre-key-112.json +1 -0
- package/data/sessions/session1/pre-key-113.json +1 -0
- package/data/sessions/session1/pre-key-114.json +1 -0
- package/data/sessions/session1/pre-key-115.json +1 -0
- package/data/sessions/session1/pre-key-116.json +1 -0
- package/data/sessions/session1/pre-key-117.json +1 -0
- package/data/sessions/session1/pre-key-118.json +1 -0
- package/data/sessions/session1/pre-key-119.json +1 -0
- package/data/sessions/session1/pre-key-12.json +1 -0
- package/data/sessions/session1/pre-key-120.json +1 -0
- package/data/sessions/session1/pre-key-121.json +1 -0
- package/data/sessions/session1/pre-key-122.json +1 -0
- package/data/sessions/session1/pre-key-123.json +1 -0
- package/data/sessions/session1/pre-key-124.json +1 -0
- package/data/sessions/session1/pre-key-125.json +1 -0
- package/data/sessions/session1/pre-key-126.json +1 -0
- package/data/sessions/session1/pre-key-127.json +1 -0
- package/data/sessions/session1/pre-key-128.json +1 -0
- package/data/sessions/session1/pre-key-129.json +1 -0
- package/data/sessions/session1/pre-key-13.json +1 -0
- package/data/sessions/session1/pre-key-130.json +1 -0
- package/data/sessions/session1/pre-key-131.json +1 -0
- package/data/sessions/session1/pre-key-132.json +1 -0
- package/data/sessions/session1/pre-key-133.json +1 -0
- package/data/sessions/session1/pre-key-134.json +1 -0
- package/data/sessions/session1/pre-key-135.json +1 -0
- package/data/sessions/session1/pre-key-136.json +1 -0
- package/data/sessions/session1/pre-key-137.json +1 -0
- package/data/sessions/session1/pre-key-138.json +1 -0
- package/data/sessions/session1/pre-key-139.json +1 -0
- package/data/sessions/session1/pre-key-14.json +1 -0
- package/data/sessions/session1/pre-key-140.json +1 -0
- package/data/sessions/session1/pre-key-141.json +1 -0
- package/data/sessions/session1/pre-key-142.json +1 -0
- package/data/sessions/session1/pre-key-143.json +1 -0
- package/data/sessions/session1/pre-key-144.json +1 -0
- package/data/sessions/session1/pre-key-145.json +1 -0
- package/data/sessions/session1/pre-key-146.json +1 -0
- package/data/sessions/session1/pre-key-147.json +1 -0
- package/data/sessions/session1/pre-key-148.json +1 -0
- package/data/sessions/session1/pre-key-149.json +1 -0
- package/data/sessions/session1/pre-key-15.json +1 -0
- package/data/sessions/session1/pre-key-150.json +1 -0
- package/data/sessions/session1/pre-key-151.json +1 -0
- package/data/sessions/session1/pre-key-152.json +1 -0
- package/data/sessions/session1/pre-key-153.json +1 -0
- package/data/sessions/session1/pre-key-154.json +1 -0
- package/data/sessions/session1/pre-key-155.json +1 -0
- package/data/sessions/session1/pre-key-156.json +1 -0
- package/data/sessions/session1/pre-key-157.json +1 -0
- package/data/sessions/session1/pre-key-158.json +1 -0
- package/data/sessions/session1/pre-key-159.json +1 -0
- package/data/sessions/session1/pre-key-16.json +1 -0
- package/data/sessions/session1/pre-key-160.json +1 -0
- package/data/sessions/session1/pre-key-161.json +1 -0
- package/data/sessions/session1/pre-key-162.json +1 -0
- package/data/sessions/session1/pre-key-163.json +1 -0
- package/data/sessions/session1/pre-key-164.json +1 -0
- package/data/sessions/session1/pre-key-165.json +1 -0
- package/data/sessions/session1/pre-key-166.json +1 -0
- package/data/sessions/session1/pre-key-167.json +1 -0
- package/data/sessions/session1/pre-key-168.json +1 -0
- package/data/sessions/session1/pre-key-169.json +1 -0
- package/data/sessions/session1/pre-key-17.json +1 -0
- package/data/sessions/session1/pre-key-170.json +1 -0
- package/data/sessions/session1/pre-key-171.json +1 -0
- package/data/sessions/session1/pre-key-172.json +1 -0
- package/data/sessions/session1/pre-key-173.json +1 -0
- package/data/sessions/session1/pre-key-174.json +1 -0
- package/data/sessions/session1/pre-key-175.json +1 -0
- package/data/sessions/session1/pre-key-176.json +1 -0
- package/data/sessions/session1/pre-key-177.json +1 -0
- package/data/sessions/session1/pre-key-178.json +1 -0
- package/data/sessions/session1/pre-key-179.json +1 -0
- package/data/sessions/session1/pre-key-18.json +1 -0
- package/data/sessions/session1/pre-key-180.json +1 -0
- package/data/sessions/session1/pre-key-181.json +1 -0
- package/data/sessions/session1/pre-key-182.json +1 -0
- package/data/sessions/session1/pre-key-183.json +1 -0
- package/data/sessions/session1/pre-key-184.json +1 -0
- package/data/sessions/session1/pre-key-185.json +1 -0
- package/data/sessions/session1/pre-key-186.json +1 -0
- package/data/sessions/session1/pre-key-187.json +1 -0
- package/data/sessions/session1/pre-key-188.json +1 -0
- package/data/sessions/session1/pre-key-189.json +1 -0
- package/data/sessions/session1/pre-key-19.json +1 -0
- package/data/sessions/session1/pre-key-190.json +1 -0
- package/data/sessions/session1/pre-key-191.json +1 -0
- package/data/sessions/session1/pre-key-192.json +1 -0
- package/data/sessions/session1/pre-key-193.json +1 -0
- package/data/sessions/session1/pre-key-194.json +1 -0
- package/data/sessions/session1/pre-key-195.json +1 -0
- package/data/sessions/session1/pre-key-196.json +1 -0
- package/data/sessions/session1/pre-key-197.json +1 -0
- package/data/sessions/session1/pre-key-198.json +1 -0
- package/data/sessions/session1/pre-key-199.json +1 -0
- package/data/sessions/session1/pre-key-2.json +1 -0
- package/data/sessions/session1/pre-key-20.json +1 -0
- package/data/sessions/session1/pre-key-200.json +1 -0
- package/data/sessions/session1/pre-key-201.json +1 -0
- package/data/sessions/session1/pre-key-202.json +1 -0
- package/data/sessions/session1/pre-key-203.json +1 -0
- package/data/sessions/session1/pre-key-204.json +1 -0
- package/data/sessions/session1/pre-key-205.json +1 -0
- package/data/sessions/session1/pre-key-206.json +1 -0
- package/data/sessions/session1/pre-key-207.json +1 -0
- package/data/sessions/session1/pre-key-208.json +1 -0
- package/data/sessions/session1/pre-key-209.json +1 -0
- package/data/sessions/session1/pre-key-21.json +1 -0
- package/data/sessions/session1/pre-key-210.json +1 -0
- package/data/sessions/session1/pre-key-211.json +1 -0
- package/data/sessions/session1/pre-key-212.json +1 -0
- package/data/sessions/session1/pre-key-213.json +1 -0
- package/data/sessions/session1/pre-key-214.json +1 -0
- package/data/sessions/session1/pre-key-215.json +1 -0
- package/data/sessions/session1/pre-key-216.json +1 -0
- package/data/sessions/session1/pre-key-217.json +1 -0
- package/data/sessions/session1/pre-key-218.json +1 -0
- package/data/sessions/session1/pre-key-219.json +1 -0
- package/data/sessions/session1/pre-key-22.json +1 -0
- package/data/sessions/session1/pre-key-220.json +1 -0
- package/data/sessions/session1/pre-key-221.json +1 -0
- package/data/sessions/session1/pre-key-222.json +1 -0
- package/data/sessions/session1/pre-key-223.json +1 -0
- package/data/sessions/session1/pre-key-224.json +1 -0
- package/data/sessions/session1/pre-key-225.json +1 -0
- package/data/sessions/session1/pre-key-226.json +1 -0
- package/data/sessions/session1/pre-key-227.json +1 -0
- package/data/sessions/session1/pre-key-228.json +1 -0
- package/data/sessions/session1/pre-key-229.json +1 -0
- package/data/sessions/session1/pre-key-23.json +1 -0
- package/data/sessions/session1/pre-key-230.json +1 -0
- package/data/sessions/session1/pre-key-231.json +1 -0
- package/data/sessions/session1/pre-key-232.json +1 -0
- package/data/sessions/session1/pre-key-233.json +1 -0
- package/data/sessions/session1/pre-key-234.json +1 -0
- package/data/sessions/session1/pre-key-235.json +1 -0
- package/data/sessions/session1/pre-key-236.json +1 -0
- package/data/sessions/session1/pre-key-237.json +1 -0
- package/data/sessions/session1/pre-key-238.json +1 -0
- package/data/sessions/session1/pre-key-239.json +1 -0
- package/data/sessions/session1/pre-key-24.json +1 -0
- package/data/sessions/session1/pre-key-240.json +1 -0
- package/data/sessions/session1/pre-key-241.json +1 -0
- package/data/sessions/session1/pre-key-242.json +1 -0
- package/data/sessions/session1/pre-key-243.json +1 -0
- package/data/sessions/session1/pre-key-244.json +1 -0
- package/data/sessions/session1/pre-key-245.json +1 -0
- package/data/sessions/session1/pre-key-246.json +1 -0
- package/data/sessions/session1/pre-key-247.json +1 -0
- package/data/sessions/session1/pre-key-248.json +1 -0
- package/data/sessions/session1/pre-key-249.json +1 -0
- package/data/sessions/session1/pre-key-25.json +1 -0
- package/data/sessions/session1/pre-key-250.json +1 -0
- package/data/sessions/session1/pre-key-251.json +1 -0
- package/data/sessions/session1/pre-key-252.json +1 -0
- package/data/sessions/session1/pre-key-253.json +1 -0
- package/data/sessions/session1/pre-key-254.json +1 -0
- package/data/sessions/session1/pre-key-255.json +1 -0
- package/data/sessions/session1/pre-key-256.json +1 -0
- package/data/sessions/session1/pre-key-257.json +1 -0
- package/data/sessions/session1/pre-key-258.json +1 -0
- package/data/sessions/session1/pre-key-259.json +1 -0
- package/data/sessions/session1/pre-key-26.json +1 -0
- package/data/sessions/session1/pre-key-260.json +1 -0
- package/data/sessions/session1/pre-key-261.json +1 -0
- package/data/sessions/session1/pre-key-262.json +1 -0
- package/data/sessions/session1/pre-key-263.json +1 -0
- package/data/sessions/session1/pre-key-264.json +1 -0
- package/data/sessions/session1/pre-key-265.json +1 -0
- package/data/sessions/session1/pre-key-266.json +1 -0
- package/data/sessions/session1/pre-key-267.json +1 -0
- package/data/sessions/session1/pre-key-268.json +1 -0
- package/data/sessions/session1/pre-key-269.json +1 -0
- package/data/sessions/session1/pre-key-27.json +1 -0
- package/data/sessions/session1/pre-key-270.json +1 -0
- package/data/sessions/session1/pre-key-271.json +1 -0
- package/data/sessions/session1/pre-key-272.json +1 -0
- package/data/sessions/session1/pre-key-273.json +1 -0
- package/data/sessions/session1/pre-key-274.json +1 -0
- package/data/sessions/session1/pre-key-275.json +1 -0
- package/data/sessions/session1/pre-key-276.json +1 -0
- package/data/sessions/session1/pre-key-277.json +1 -0
- package/data/sessions/session1/pre-key-278.json +1 -0
- package/data/sessions/session1/pre-key-279.json +1 -0
- package/data/sessions/session1/pre-key-28.json +1 -0
- package/data/sessions/session1/pre-key-280.json +1 -0
- package/data/sessions/session1/pre-key-281.json +1 -0
- package/data/sessions/session1/pre-key-282.json +1 -0
- package/data/sessions/session1/pre-key-283.json +1 -0
- package/data/sessions/session1/pre-key-284.json +1 -0
- package/data/sessions/session1/pre-key-285.json +1 -0
- package/data/sessions/session1/pre-key-286.json +1 -0
- package/data/sessions/session1/pre-key-287.json +1 -0
- package/data/sessions/session1/pre-key-288.json +1 -0
- package/data/sessions/session1/pre-key-289.json +1 -0
- package/data/sessions/session1/pre-key-29.json +1 -0
- package/data/sessions/session1/pre-key-290.json +1 -0
- package/data/sessions/session1/pre-key-291.json +1 -0
- package/data/sessions/session1/pre-key-292.json +1 -0
- package/data/sessions/session1/pre-key-293.json +1 -0
- package/data/sessions/session1/pre-key-294.json +1 -0
- package/data/sessions/session1/pre-key-295.json +1 -0
- package/data/sessions/session1/pre-key-296.json +1 -0
- package/data/sessions/session1/pre-key-297.json +1 -0
- package/data/sessions/session1/pre-key-298.json +1 -0
- package/data/sessions/session1/pre-key-299.json +1 -0
- package/data/sessions/session1/pre-key-3.json +1 -0
- package/data/sessions/session1/pre-key-30.json +1 -0
- package/data/sessions/session1/pre-key-300.json +1 -0
- package/data/sessions/session1/pre-key-301.json +1 -0
- package/data/sessions/session1/pre-key-302.json +1 -0
- package/data/sessions/session1/pre-key-303.json +1 -0
- package/data/sessions/session1/pre-key-304.json +1 -0
- package/data/sessions/session1/pre-key-305.json +1 -0
- package/data/sessions/session1/pre-key-306.json +1 -0
- package/data/sessions/session1/pre-key-307.json +1 -0
- package/data/sessions/session1/pre-key-308.json +1 -0
- package/data/sessions/session1/pre-key-309.json +1 -0
- package/data/sessions/session1/pre-key-31.json +1 -0
- package/data/sessions/session1/pre-key-310.json +1 -0
- package/data/sessions/session1/pre-key-311.json +1 -0
- package/data/sessions/session1/pre-key-312.json +1 -0
- package/data/sessions/session1/pre-key-313.json +1 -0
- package/data/sessions/session1/pre-key-314.json +1 -0
- package/data/sessions/session1/pre-key-315.json +1 -0
- package/data/sessions/session1/pre-key-316.json +1 -0
- package/data/sessions/session1/pre-key-317.json +1 -0
- package/data/sessions/session1/pre-key-318.json +1 -0
- package/data/sessions/session1/pre-key-319.json +1 -0
- package/data/sessions/session1/pre-key-32.json +1 -0
- package/data/sessions/session1/pre-key-320.json +1 -0
- package/data/sessions/session1/pre-key-321.json +1 -0
- package/data/sessions/session1/pre-key-322.json +1 -0
- package/data/sessions/session1/pre-key-323.json +1 -0
- package/data/sessions/session1/pre-key-324.json +1 -0
- package/data/sessions/session1/pre-key-325.json +1 -0
- package/data/sessions/session1/pre-key-326.json +1 -0
- package/data/sessions/session1/pre-key-327.json +1 -0
- package/data/sessions/session1/pre-key-328.json +1 -0
- package/data/sessions/session1/pre-key-329.json +1 -0
- package/data/sessions/session1/pre-key-33.json +1 -0
- package/data/sessions/session1/pre-key-330.json +1 -0
- package/data/sessions/session1/pre-key-331.json +1 -0
- package/data/sessions/session1/pre-key-332.json +1 -0
- package/data/sessions/session1/pre-key-333.json +1 -0
- package/data/sessions/session1/pre-key-334.json +1 -0
- package/data/sessions/session1/pre-key-335.json +1 -0
- package/data/sessions/session1/pre-key-336.json +1 -0
- package/data/sessions/session1/pre-key-337.json +1 -0
- package/data/sessions/session1/pre-key-338.json +1 -0
- package/data/sessions/session1/pre-key-339.json +1 -0
- package/data/sessions/session1/pre-key-34.json +1 -0
- package/data/sessions/session1/pre-key-340.json +1 -0
- package/data/sessions/session1/pre-key-341.json +1 -0
- package/data/sessions/session1/pre-key-342.json +1 -0
- package/data/sessions/session1/pre-key-343.json +1 -0
- package/data/sessions/session1/pre-key-344.json +1 -0
- package/data/sessions/session1/pre-key-345.json +1 -0
- package/data/sessions/session1/pre-key-346.json +1 -0
- package/data/sessions/session1/pre-key-347.json +1 -0
- package/data/sessions/session1/pre-key-348.json +1 -0
- package/data/sessions/session1/pre-key-349.json +1 -0
- package/data/sessions/session1/pre-key-35.json +1 -0
- package/data/sessions/session1/pre-key-350.json +1 -0
- package/data/sessions/session1/pre-key-351.json +1 -0
- package/data/sessions/session1/pre-key-352.json +1 -0
- package/data/sessions/session1/pre-key-353.json +1 -0
- package/data/sessions/session1/pre-key-354.json +1 -0
- package/data/sessions/session1/pre-key-355.json +1 -0
- package/data/sessions/session1/pre-key-356.json +1 -0
- package/data/sessions/session1/pre-key-357.json +1 -0
- package/data/sessions/session1/pre-key-358.json +1 -0
- package/data/sessions/session1/pre-key-359.json +1 -0
- package/data/sessions/session1/pre-key-36.json +1 -0
- package/data/sessions/session1/pre-key-360.json +1 -0
- package/data/sessions/session1/pre-key-361.json +1 -0
- package/data/sessions/session1/pre-key-362.json +1 -0
- package/data/sessions/session1/pre-key-363.json +1 -0
- package/data/sessions/session1/pre-key-364.json +1 -0
- package/data/sessions/session1/pre-key-365.json +1 -0
- package/data/sessions/session1/pre-key-366.json +1 -0
- package/data/sessions/session1/pre-key-367.json +1 -0
- package/data/sessions/session1/pre-key-368.json +1 -0
- package/data/sessions/session1/pre-key-369.json +1 -0
- package/data/sessions/session1/pre-key-37.json +1 -0
- package/data/sessions/session1/pre-key-370.json +1 -0
- package/data/sessions/session1/pre-key-371.json +1 -0
- package/data/sessions/session1/pre-key-372.json +1 -0
- package/data/sessions/session1/pre-key-373.json +1 -0
- package/data/sessions/session1/pre-key-374.json +1 -0
- package/data/sessions/session1/pre-key-375.json +1 -0
- package/data/sessions/session1/pre-key-376.json +1 -0
- package/data/sessions/session1/pre-key-377.json +1 -0
- package/data/sessions/session1/pre-key-378.json +1 -0
- package/data/sessions/session1/pre-key-379.json +1 -0
- package/data/sessions/session1/pre-key-38.json +1 -0
- package/data/sessions/session1/pre-key-380.json +1 -0
- package/data/sessions/session1/pre-key-381.json +1 -0
- package/data/sessions/session1/pre-key-382.json +1 -0
- package/data/sessions/session1/pre-key-383.json +1 -0
- package/data/sessions/session1/pre-key-384.json +1 -0
- package/data/sessions/session1/pre-key-385.json +1 -0
- package/data/sessions/session1/pre-key-386.json +1 -0
- package/data/sessions/session1/pre-key-387.json +1 -0
- package/data/sessions/session1/pre-key-388.json +1 -0
- package/data/sessions/session1/pre-key-389.json +1 -0
- package/data/sessions/session1/pre-key-39.json +1 -0
- package/data/sessions/session1/pre-key-390.json +1 -0
- package/data/sessions/session1/pre-key-391.json +1 -0
- package/data/sessions/session1/pre-key-392.json +1 -0
- package/data/sessions/session1/pre-key-393.json +1 -0
- package/data/sessions/session1/pre-key-394.json +1 -0
- package/data/sessions/session1/pre-key-395.json +1 -0
- package/data/sessions/session1/pre-key-396.json +1 -0
- package/data/sessions/session1/pre-key-397.json +1 -0
- package/data/sessions/session1/pre-key-398.json +1 -0
- package/data/sessions/session1/pre-key-399.json +1 -0
- package/data/sessions/session1/pre-key-4.json +1 -0
- package/data/sessions/session1/pre-key-40.json +1 -0
- package/data/sessions/session1/pre-key-400.json +1 -0
- package/data/sessions/session1/pre-key-401.json +1 -0
- package/data/sessions/session1/pre-key-402.json +1 -0
- package/data/sessions/session1/pre-key-403.json +1 -0
- package/data/sessions/session1/pre-key-404.json +1 -0
- package/data/sessions/session1/pre-key-405.json +1 -0
- package/data/sessions/session1/pre-key-406.json +1 -0
- package/data/sessions/session1/pre-key-407.json +1 -0
- package/data/sessions/session1/pre-key-408.json +1 -0
- package/data/sessions/session1/pre-key-409.json +1 -0
- package/data/sessions/session1/pre-key-41.json +1 -0
- package/data/sessions/session1/pre-key-410.json +1 -0
- package/data/sessions/session1/pre-key-411.json +1 -0
- package/data/sessions/session1/pre-key-412.json +1 -0
- package/data/sessions/session1/pre-key-413.json +1 -0
- package/data/sessions/session1/pre-key-414.json +1 -0
- package/data/sessions/session1/pre-key-415.json +1 -0
- package/data/sessions/session1/pre-key-416.json +1 -0
- package/data/sessions/session1/pre-key-417.json +1 -0
- package/data/sessions/session1/pre-key-418.json +1 -0
- package/data/sessions/session1/pre-key-419.json +1 -0
- package/data/sessions/session1/pre-key-42.json +1 -0
- package/data/sessions/session1/pre-key-420.json +1 -0
- package/data/sessions/session1/pre-key-421.json +1 -0
- package/data/sessions/session1/pre-key-422.json +1 -0
- package/data/sessions/session1/pre-key-423.json +1 -0
- package/data/sessions/session1/pre-key-424.json +1 -0
- package/data/sessions/session1/pre-key-425.json +1 -0
- package/data/sessions/session1/pre-key-426.json +1 -0
- package/data/sessions/session1/pre-key-427.json +1 -0
- package/data/sessions/session1/pre-key-428.json +1 -0
- package/data/sessions/session1/pre-key-429.json +1 -0
- package/data/sessions/session1/pre-key-43.json +1 -0
- package/data/sessions/session1/pre-key-430.json +1 -0
- package/data/sessions/session1/pre-key-431.json +1 -0
- package/data/sessions/session1/pre-key-432.json +1 -0
- package/data/sessions/session1/pre-key-433.json +1 -0
- package/data/sessions/session1/pre-key-434.json +1 -0
- package/data/sessions/session1/pre-key-435.json +1 -0
- package/data/sessions/session1/pre-key-436.json +1 -0
- package/data/sessions/session1/pre-key-437.json +1 -0
- package/data/sessions/session1/pre-key-438.json +1 -0
- package/data/sessions/session1/pre-key-439.json +1 -0
- package/data/sessions/session1/pre-key-44.json +1 -0
- package/data/sessions/session1/pre-key-440.json +1 -0
- package/data/sessions/session1/pre-key-441.json +1 -0
- package/data/sessions/session1/pre-key-442.json +1 -0
- package/data/sessions/session1/pre-key-443.json +1 -0
- package/data/sessions/session1/pre-key-444.json +1 -0
- package/data/sessions/session1/pre-key-445.json +1 -0
- package/data/sessions/session1/pre-key-446.json +1 -0
- package/data/sessions/session1/pre-key-447.json +1 -0
- package/data/sessions/session1/pre-key-448.json +1 -0
- package/data/sessions/session1/pre-key-449.json +1 -0
- package/data/sessions/session1/pre-key-45.json +1 -0
- package/data/sessions/session1/pre-key-450.json +1 -0
- package/data/sessions/session1/pre-key-451.json +1 -0
- package/data/sessions/session1/pre-key-452.json +1 -0
- package/data/sessions/session1/pre-key-453.json +1 -0
- package/data/sessions/session1/pre-key-454.json +1 -0
- package/data/sessions/session1/pre-key-455.json +1 -0
- package/data/sessions/session1/pre-key-456.json +1 -0
- package/data/sessions/session1/pre-key-457.json +1 -0
- package/data/sessions/session1/pre-key-458.json +1 -0
- package/data/sessions/session1/pre-key-459.json +1 -0
- package/data/sessions/session1/pre-key-46.json +1 -0
- package/data/sessions/session1/pre-key-460.json +1 -0
- package/data/sessions/session1/pre-key-461.json +1 -0
- package/data/sessions/session1/pre-key-462.json +1 -0
- package/data/sessions/session1/pre-key-463.json +1 -0
- package/data/sessions/session1/pre-key-464.json +1 -0
- package/data/sessions/session1/pre-key-465.json +1 -0
- package/data/sessions/session1/pre-key-466.json +1 -0
- package/data/sessions/session1/pre-key-467.json +1 -0
- package/data/sessions/session1/pre-key-468.json +1 -0
- package/data/sessions/session1/pre-key-469.json +1 -0
- package/data/sessions/session1/pre-key-47.json +1 -0
- package/data/sessions/session1/pre-key-470.json +1 -0
- package/data/sessions/session1/pre-key-471.json +1 -0
- package/data/sessions/session1/pre-key-472.json +1 -0
- package/data/sessions/session1/pre-key-473.json +1 -0
- package/data/sessions/session1/pre-key-474.json +1 -0
- package/data/sessions/session1/pre-key-475.json +1 -0
- package/data/sessions/session1/pre-key-476.json +1 -0
- package/data/sessions/session1/pre-key-477.json +1 -0
- package/data/sessions/session1/pre-key-478.json +1 -0
- package/data/sessions/session1/pre-key-479.json +1 -0
- package/data/sessions/session1/pre-key-48.json +1 -0
- package/data/sessions/session1/pre-key-480.json +1 -0
- package/data/sessions/session1/pre-key-481.json +1 -0
- package/data/sessions/session1/pre-key-482.json +1 -0
- package/data/sessions/session1/pre-key-483.json +1 -0
- package/data/sessions/session1/pre-key-484.json +1 -0
- package/data/sessions/session1/pre-key-485.json +1 -0
- package/data/sessions/session1/pre-key-486.json +1 -0
- package/data/sessions/session1/pre-key-487.json +1 -0
- package/data/sessions/session1/pre-key-488.json +1 -0
- package/data/sessions/session1/pre-key-489.json +1 -0
- package/data/sessions/session1/pre-key-49.json +1 -0
- package/data/sessions/session1/pre-key-490.json +1 -0
- package/data/sessions/session1/pre-key-491.json +1 -0
- package/data/sessions/session1/pre-key-492.json +1 -0
- package/data/sessions/session1/pre-key-493.json +1 -0
- package/data/sessions/session1/pre-key-494.json +1 -0
- package/data/sessions/session1/pre-key-495.json +1 -0
- package/data/sessions/session1/pre-key-496.json +1 -0
- package/data/sessions/session1/pre-key-497.json +1 -0
- package/data/sessions/session1/pre-key-498.json +1 -0
- package/data/sessions/session1/pre-key-499.json +1 -0
- package/data/sessions/session1/pre-key-5.json +1 -0
- package/data/sessions/session1/pre-key-50.json +1 -0
- package/data/sessions/session1/pre-key-500.json +1 -0
- package/data/sessions/session1/pre-key-501.json +1 -0
- package/data/sessions/session1/pre-key-502.json +1 -0
- package/data/sessions/session1/pre-key-503.json +1 -0
- package/data/sessions/session1/pre-key-504.json +1 -0
- package/data/sessions/session1/pre-key-505.json +1 -0
- package/data/sessions/session1/pre-key-506.json +1 -0
- package/data/sessions/session1/pre-key-507.json +1 -0
- package/data/sessions/session1/pre-key-508.json +1 -0
- package/data/sessions/session1/pre-key-509.json +1 -0
- package/data/sessions/session1/pre-key-51.json +1 -0
- package/data/sessions/session1/pre-key-510.json +1 -0
- package/data/sessions/session1/pre-key-511.json +1 -0
- package/data/sessions/session1/pre-key-512.json +1 -0
- package/data/sessions/session1/pre-key-513.json +1 -0
- package/data/sessions/session1/pre-key-514.json +1 -0
- package/data/sessions/session1/pre-key-515.json +1 -0
- package/data/sessions/session1/pre-key-516.json +1 -0
- package/data/sessions/session1/pre-key-517.json +1 -0
- package/data/sessions/session1/pre-key-518.json +1 -0
- package/data/sessions/session1/pre-key-519.json +1 -0
- package/data/sessions/session1/pre-key-52.json +1 -0
- package/data/sessions/session1/pre-key-520.json +1 -0
- package/data/sessions/session1/pre-key-521.json +1 -0
- package/data/sessions/session1/pre-key-522.json +1 -0
- package/data/sessions/session1/pre-key-523.json +1 -0
- package/data/sessions/session1/pre-key-524.json +1 -0
- package/data/sessions/session1/pre-key-525.json +1 -0
- package/data/sessions/session1/pre-key-526.json +1 -0
- package/data/sessions/session1/pre-key-527.json +1 -0
- package/data/sessions/session1/pre-key-528.json +1 -0
- package/data/sessions/session1/pre-key-529.json +1 -0
- package/data/sessions/session1/pre-key-53.json +1 -0
- package/data/sessions/session1/pre-key-530.json +1 -0
- package/data/sessions/session1/pre-key-531.json +1 -0
- package/data/sessions/session1/pre-key-532.json +1 -0
- package/data/sessions/session1/pre-key-533.json +1 -0
- package/data/sessions/session1/pre-key-534.json +1 -0
- package/data/sessions/session1/pre-key-535.json +1 -0
- package/data/sessions/session1/pre-key-536.json +1 -0
- package/data/sessions/session1/pre-key-537.json +1 -0
- package/data/sessions/session1/pre-key-538.json +1 -0
- package/data/sessions/session1/pre-key-539.json +1 -0
- package/data/sessions/session1/pre-key-54.json +1 -0
- package/data/sessions/session1/pre-key-540.json +1 -0
- package/data/sessions/session1/pre-key-541.json +1 -0
- package/data/sessions/session1/pre-key-542.json +1 -0
- package/data/sessions/session1/pre-key-543.json +1 -0
- package/data/sessions/session1/pre-key-544.json +1 -0
- package/data/sessions/session1/pre-key-545.json +1 -0
- package/data/sessions/session1/pre-key-546.json +1 -0
- package/data/sessions/session1/pre-key-547.json +1 -0
- package/data/sessions/session1/pre-key-548.json +1 -0
- package/data/sessions/session1/pre-key-549.json +1 -0
- package/data/sessions/session1/pre-key-55.json +1 -0
- package/data/sessions/session1/pre-key-550.json +1 -0
- package/data/sessions/session1/pre-key-551.json +1 -0
- package/data/sessions/session1/pre-key-552.json +1 -0
- package/data/sessions/session1/pre-key-553.json +1 -0
- package/data/sessions/session1/pre-key-554.json +1 -0
- package/data/sessions/session1/pre-key-555.json +1 -0
- package/data/sessions/session1/pre-key-556.json +1 -0
- package/data/sessions/session1/pre-key-557.json +1 -0
- package/data/sessions/session1/pre-key-558.json +1 -0
- package/data/sessions/session1/pre-key-559.json +1 -0
- package/data/sessions/session1/pre-key-56.json +1 -0
- package/data/sessions/session1/pre-key-560.json +1 -0
- package/data/sessions/session1/pre-key-561.json +1 -0
- package/data/sessions/session1/pre-key-562.json +1 -0
- package/data/sessions/session1/pre-key-563.json +1 -0
- package/data/sessions/session1/pre-key-564.json +1 -0
- package/data/sessions/session1/pre-key-565.json +1 -0
- package/data/sessions/session1/pre-key-566.json +1 -0
- package/data/sessions/session1/pre-key-567.json +1 -0
- package/data/sessions/session1/pre-key-568.json +1 -0
- package/data/sessions/session1/pre-key-569.json +1 -0
- package/data/sessions/session1/pre-key-57.json +1 -0
- package/data/sessions/session1/pre-key-570.json +1 -0
- package/data/sessions/session1/pre-key-571.json +1 -0
- package/data/sessions/session1/pre-key-572.json +1 -0
- package/data/sessions/session1/pre-key-573.json +1 -0
- package/data/sessions/session1/pre-key-574.json +1 -0
- package/data/sessions/session1/pre-key-575.json +1 -0
- package/data/sessions/session1/pre-key-576.json +1 -0
- package/data/sessions/session1/pre-key-577.json +1 -0
- package/data/sessions/session1/pre-key-578.json +1 -0
- package/data/sessions/session1/pre-key-579.json +1 -0
- package/data/sessions/session1/pre-key-58.json +1 -0
- package/data/sessions/session1/pre-key-580.json +1 -0
- package/data/sessions/session1/pre-key-581.json +1 -0
- package/data/sessions/session1/pre-key-582.json +1 -0
- package/data/sessions/session1/pre-key-583.json +1 -0
- package/data/sessions/session1/pre-key-584.json +1 -0
- package/data/sessions/session1/pre-key-585.json +1 -0
- package/data/sessions/session1/pre-key-586.json +1 -0
- package/data/sessions/session1/pre-key-587.json +1 -0
- package/data/sessions/session1/pre-key-588.json +1 -0
- package/data/sessions/session1/pre-key-589.json +1 -0
- package/data/sessions/session1/pre-key-59.json +1 -0
- package/data/sessions/session1/pre-key-590.json +1 -0
- package/data/sessions/session1/pre-key-591.json +1 -0
- package/data/sessions/session1/pre-key-592.json +1 -0
- package/data/sessions/session1/pre-key-593.json +1 -0
- package/data/sessions/session1/pre-key-594.json +1 -0
- package/data/sessions/session1/pre-key-595.json +1 -0
- package/data/sessions/session1/pre-key-596.json +1 -0
- package/data/sessions/session1/pre-key-597.json +1 -0
- package/data/sessions/session1/pre-key-598.json +1 -0
- package/data/sessions/session1/pre-key-599.json +1 -0
- package/data/sessions/session1/pre-key-6.json +1 -0
- package/data/sessions/session1/pre-key-60.json +1 -0
- package/data/sessions/session1/pre-key-600.json +1 -0
- package/data/sessions/session1/pre-key-601.json +1 -0
- package/data/sessions/session1/pre-key-602.json +1 -0
- package/data/sessions/session1/pre-key-603.json +1 -0
- package/data/sessions/session1/pre-key-604.json +1 -0
- package/data/sessions/session1/pre-key-605.json +1 -0
- package/data/sessions/session1/pre-key-606.json +1 -0
- package/data/sessions/session1/pre-key-607.json +1 -0
- package/data/sessions/session1/pre-key-608.json +1 -0
- package/data/sessions/session1/pre-key-609.json +1 -0
- package/data/sessions/session1/pre-key-61.json +1 -0
- package/data/sessions/session1/pre-key-610.json +1 -0
- package/data/sessions/session1/pre-key-611.json +1 -0
- package/data/sessions/session1/pre-key-612.json +1 -0
- package/data/sessions/session1/pre-key-613.json +1 -0
- package/data/sessions/session1/pre-key-614.json +1 -0
- package/data/sessions/session1/pre-key-615.json +1 -0
- package/data/sessions/session1/pre-key-616.json +1 -0
- package/data/sessions/session1/pre-key-617.json +1 -0
- package/data/sessions/session1/pre-key-618.json +1 -0
- package/data/sessions/session1/pre-key-619.json +1 -0
- package/data/sessions/session1/pre-key-62.json +1 -0
- package/data/sessions/session1/pre-key-620.json +1 -0
- package/data/sessions/session1/pre-key-621.json +1 -0
- package/data/sessions/session1/pre-key-622.json +1 -0
- package/data/sessions/session1/pre-key-623.json +1 -0
- package/data/sessions/session1/pre-key-624.json +1 -0
- package/data/sessions/session1/pre-key-625.json +1 -0
- package/data/sessions/session1/pre-key-626.json +1 -0
- package/data/sessions/session1/pre-key-627.json +1 -0
- package/data/sessions/session1/pre-key-628.json +1 -0
- package/data/sessions/session1/pre-key-629.json +1 -0
- package/data/sessions/session1/pre-key-63.json +1 -0
- package/data/sessions/session1/pre-key-630.json +1 -0
- package/data/sessions/session1/pre-key-631.json +1 -0
- package/data/sessions/session1/pre-key-632.json +1 -0
- package/data/sessions/session1/pre-key-633.json +1 -0
- package/data/sessions/session1/pre-key-634.json +1 -0
- package/data/sessions/session1/pre-key-635.json +1 -0
- package/data/sessions/session1/pre-key-636.json +1 -0
- package/data/sessions/session1/pre-key-637.json +1 -0
- package/data/sessions/session1/pre-key-638.json +1 -0
- package/data/sessions/session1/pre-key-639.json +1 -0
- package/data/sessions/session1/pre-key-64.json +1 -0
- package/data/sessions/session1/pre-key-640.json +1 -0
- package/data/sessions/session1/pre-key-641.json +1 -0
- package/data/sessions/session1/pre-key-642.json +1 -0
- package/data/sessions/session1/pre-key-643.json +1 -0
- package/data/sessions/session1/pre-key-644.json +1 -0
- package/data/sessions/session1/pre-key-645.json +1 -0
- package/data/sessions/session1/pre-key-646.json +1 -0
- package/data/sessions/session1/pre-key-647.json +1 -0
- package/data/sessions/session1/pre-key-648.json +1 -0
- package/data/sessions/session1/pre-key-649.json +1 -0
- package/data/sessions/session1/pre-key-65.json +1 -0
- package/data/sessions/session1/pre-key-650.json +1 -0
- package/data/sessions/session1/pre-key-651.json +1 -0
- package/data/sessions/session1/pre-key-652.json +1 -0
- package/data/sessions/session1/pre-key-653.json +1 -0
- package/data/sessions/session1/pre-key-654.json +1 -0
- package/data/sessions/session1/pre-key-655.json +1 -0
- package/data/sessions/session1/pre-key-656.json +1 -0
- package/data/sessions/session1/pre-key-657.json +1 -0
- package/data/sessions/session1/pre-key-658.json +1 -0
- package/data/sessions/session1/pre-key-659.json +1 -0
- package/data/sessions/session1/pre-key-66.json +1 -0
- package/data/sessions/session1/pre-key-660.json +1 -0
- package/data/sessions/session1/pre-key-661.json +1 -0
- package/data/sessions/session1/pre-key-662.json +1 -0
- package/data/sessions/session1/pre-key-663.json +1 -0
- package/data/sessions/session1/pre-key-664.json +1 -0
- package/data/sessions/session1/pre-key-665.json +1 -0
- package/data/sessions/session1/pre-key-666.json +1 -0
- package/data/sessions/session1/pre-key-667.json +1 -0
- package/data/sessions/session1/pre-key-668.json +1 -0
- package/data/sessions/session1/pre-key-669.json +1 -0
- package/data/sessions/session1/pre-key-67.json +1 -0
- package/data/sessions/session1/pre-key-670.json +1 -0
- package/data/sessions/session1/pre-key-671.json +1 -0
- package/data/sessions/session1/pre-key-672.json +1 -0
- package/data/sessions/session1/pre-key-673.json +1 -0
- package/data/sessions/session1/pre-key-674.json +1 -0
- package/data/sessions/session1/pre-key-675.json +1 -0
- package/data/sessions/session1/pre-key-676.json +1 -0
- package/data/sessions/session1/pre-key-677.json +1 -0
- package/data/sessions/session1/pre-key-678.json +1 -0
- package/data/sessions/session1/pre-key-679.json +1 -0
- package/data/sessions/session1/pre-key-68.json +1 -0
- package/data/sessions/session1/pre-key-680.json +1 -0
- package/data/sessions/session1/pre-key-681.json +1 -0
- package/data/sessions/session1/pre-key-682.json +1 -0
- package/data/sessions/session1/pre-key-683.json +1 -0
- package/data/sessions/session1/pre-key-684.json +1 -0
- package/data/sessions/session1/pre-key-685.json +1 -0
- package/data/sessions/session1/pre-key-686.json +1 -0
- package/data/sessions/session1/pre-key-687.json +1 -0
- package/data/sessions/session1/pre-key-688.json +1 -0
- package/data/sessions/session1/pre-key-689.json +1 -0
- package/data/sessions/session1/pre-key-69.json +1 -0
- package/data/sessions/session1/pre-key-690.json +1 -0
- package/data/sessions/session1/pre-key-691.json +1 -0
- package/data/sessions/session1/pre-key-692.json +1 -0
- package/data/sessions/session1/pre-key-693.json +1 -0
- package/data/sessions/session1/pre-key-694.json +1 -0
- package/data/sessions/session1/pre-key-695.json +1 -0
- package/data/sessions/session1/pre-key-696.json +1 -0
- package/data/sessions/session1/pre-key-697.json +1 -0
- package/data/sessions/session1/pre-key-698.json +1 -0
- package/data/sessions/session1/pre-key-699.json +1 -0
- package/data/sessions/session1/pre-key-7.json +1 -0
- package/data/sessions/session1/pre-key-70.json +1 -0
- package/data/sessions/session1/pre-key-700.json +1 -0
- package/data/sessions/session1/pre-key-701.json +1 -0
- package/data/sessions/session1/pre-key-702.json +1 -0
- package/data/sessions/session1/pre-key-703.json +1 -0
- package/data/sessions/session1/pre-key-704.json +1 -0
- package/data/sessions/session1/pre-key-705.json +1 -0
- package/data/sessions/session1/pre-key-706.json +1 -0
- package/data/sessions/session1/pre-key-707.json +1 -0
- package/data/sessions/session1/pre-key-708.json +1 -0
- package/data/sessions/session1/pre-key-709.json +1 -0
- package/data/sessions/session1/pre-key-71.json +1 -0
- package/data/sessions/session1/pre-key-710.json +1 -0
- package/data/sessions/session1/pre-key-711.json +1 -0
- package/data/sessions/session1/pre-key-712.json +1 -0
- package/data/sessions/session1/pre-key-713.json +1 -0
- package/data/sessions/session1/pre-key-714.json +1 -0
- package/data/sessions/session1/pre-key-715.json +1 -0
- package/data/sessions/session1/pre-key-716.json +1 -0
- package/data/sessions/session1/pre-key-717.json +1 -0
- package/data/sessions/session1/pre-key-718.json +1 -0
- package/data/sessions/session1/pre-key-719.json +1 -0
- package/data/sessions/session1/pre-key-72.json +1 -0
- package/data/sessions/session1/pre-key-720.json +1 -0
- package/data/sessions/session1/pre-key-721.json +1 -0
- package/data/sessions/session1/pre-key-722.json +1 -0
- package/data/sessions/session1/pre-key-723.json +1 -0
- package/data/sessions/session1/pre-key-724.json +1 -0
- package/data/sessions/session1/pre-key-725.json +1 -0
- package/data/sessions/session1/pre-key-726.json +1 -0
- package/data/sessions/session1/pre-key-727.json +1 -0
- package/data/sessions/session1/pre-key-728.json +1 -0
- package/data/sessions/session1/pre-key-729.json +1 -0
- package/data/sessions/session1/pre-key-73.json +1 -0
- package/data/sessions/session1/pre-key-730.json +1 -0
- package/data/sessions/session1/pre-key-731.json +1 -0
- package/data/sessions/session1/pre-key-732.json +1 -0
- package/data/sessions/session1/pre-key-733.json +1 -0
- package/data/sessions/session1/pre-key-734.json +1 -0
- package/data/sessions/session1/pre-key-735.json +1 -0
- package/data/sessions/session1/pre-key-736.json +1 -0
- package/data/sessions/session1/pre-key-737.json +1 -0
- package/data/sessions/session1/pre-key-738.json +1 -0
- package/data/sessions/session1/pre-key-739.json +1 -0
- package/data/sessions/session1/pre-key-74.json +1 -0
- package/data/sessions/session1/pre-key-740.json +1 -0
- package/data/sessions/session1/pre-key-741.json +1 -0
- package/data/sessions/session1/pre-key-742.json +1 -0
- package/data/sessions/session1/pre-key-743.json +1 -0
- package/data/sessions/session1/pre-key-744.json +1 -0
- package/data/sessions/session1/pre-key-745.json +1 -0
- package/data/sessions/session1/pre-key-746.json +1 -0
- package/data/sessions/session1/pre-key-747.json +1 -0
- package/data/sessions/session1/pre-key-748.json +1 -0
- package/data/sessions/session1/pre-key-749.json +1 -0
- package/data/sessions/session1/pre-key-75.json +1 -0
- package/data/sessions/session1/pre-key-750.json +1 -0
- package/data/sessions/session1/pre-key-751.json +1 -0
- package/data/sessions/session1/pre-key-752.json +1 -0
- package/data/sessions/session1/pre-key-753.json +1 -0
- package/data/sessions/session1/pre-key-754.json +1 -0
- package/data/sessions/session1/pre-key-755.json +1 -0
- package/data/sessions/session1/pre-key-756.json +1 -0
- package/data/sessions/session1/pre-key-757.json +1 -0
- package/data/sessions/session1/pre-key-758.json +1 -0
- package/data/sessions/session1/pre-key-759.json +1 -0
- package/data/sessions/session1/pre-key-76.json +1 -0
- package/data/sessions/session1/pre-key-760.json +1 -0
- package/data/sessions/session1/pre-key-761.json +1 -0
- package/data/sessions/session1/pre-key-762.json +1 -0
- package/data/sessions/session1/pre-key-763.json +1 -0
- package/data/sessions/session1/pre-key-764.json +1 -0
- package/data/sessions/session1/pre-key-765.json +1 -0
- package/data/sessions/session1/pre-key-766.json +1 -0
- package/data/sessions/session1/pre-key-767.json +1 -0
- package/data/sessions/session1/pre-key-768.json +1 -0
- package/data/sessions/session1/pre-key-769.json +1 -0
- package/data/sessions/session1/pre-key-77.json +1 -0
- package/data/sessions/session1/pre-key-770.json +1 -0
- package/data/sessions/session1/pre-key-771.json +1 -0
- package/data/sessions/session1/pre-key-772.json +1 -0
- package/data/sessions/session1/pre-key-773.json +1 -0
- package/data/sessions/session1/pre-key-774.json +1 -0
- package/data/sessions/session1/pre-key-775.json +1 -0
- package/data/sessions/session1/pre-key-776.json +1 -0
- package/data/sessions/session1/pre-key-777.json +1 -0
- package/data/sessions/session1/pre-key-778.json +1 -0
- package/data/sessions/session1/pre-key-779.json +1 -0
- package/data/sessions/session1/pre-key-78.json +1 -0
- package/data/sessions/session1/pre-key-780.json +1 -0
- package/data/sessions/session1/pre-key-781.json +1 -0
- package/data/sessions/session1/pre-key-782.json +1 -0
- package/data/sessions/session1/pre-key-783.json +1 -0
- package/data/sessions/session1/pre-key-784.json +1 -0
- package/data/sessions/session1/pre-key-785.json +1 -0
- package/data/sessions/session1/pre-key-786.json +1 -0
- package/data/sessions/session1/pre-key-787.json +1 -0
- package/data/sessions/session1/pre-key-788.json +1 -0
- package/data/sessions/session1/pre-key-789.json +1 -0
- package/data/sessions/session1/pre-key-79.json +1 -0
- package/data/sessions/session1/pre-key-790.json +1 -0
- package/data/sessions/session1/pre-key-791.json +1 -0
- package/data/sessions/session1/pre-key-792.json +1 -0
- package/data/sessions/session1/pre-key-793.json +1 -0
- package/data/sessions/session1/pre-key-794.json +1 -0
- package/data/sessions/session1/pre-key-795.json +1 -0
- package/data/sessions/session1/pre-key-796.json +1 -0
- package/data/sessions/session1/pre-key-797.json +1 -0
- package/data/sessions/session1/pre-key-798.json +1 -0
- package/data/sessions/session1/pre-key-799.json +1 -0
- package/data/sessions/session1/pre-key-8.json +1 -0
- package/data/sessions/session1/pre-key-80.json +1 -0
- package/data/sessions/session1/pre-key-800.json +1 -0
- package/data/sessions/session1/pre-key-801.json +1 -0
- package/data/sessions/session1/pre-key-802.json +1 -0
- package/data/sessions/session1/pre-key-803.json +1 -0
- package/data/sessions/session1/pre-key-804.json +1 -0
- package/data/sessions/session1/pre-key-805.json +1 -0
- package/data/sessions/session1/pre-key-806.json +1 -0
- package/data/sessions/session1/pre-key-807.json +1 -0
- package/data/sessions/session1/pre-key-808.json +1 -0
- package/data/sessions/session1/pre-key-809.json +1 -0
- package/data/sessions/session1/pre-key-81.json +1 -0
- package/data/sessions/session1/pre-key-810.json +1 -0
- package/data/sessions/session1/pre-key-811.json +1 -0
- package/data/sessions/session1/pre-key-812.json +1 -0
- package/data/sessions/session1/pre-key-82.json +1 -0
- package/data/sessions/session1/pre-key-83.json +1 -0
- package/data/sessions/session1/pre-key-84.json +1 -0
- package/data/sessions/session1/pre-key-85.json +1 -0
- package/data/sessions/session1/pre-key-86.json +1 -0
- package/data/sessions/session1/pre-key-87.json +1 -0
- package/data/sessions/session1/pre-key-88.json +1 -0
- package/data/sessions/session1/pre-key-89.json +1 -0
- package/data/sessions/session1/pre-key-9.json +1 -0
- package/data/sessions/session1/pre-key-90.json +1 -0
- package/data/sessions/session1/pre-key-91.json +1 -0
- package/data/sessions/session1/pre-key-92.json +1 -0
- package/data/sessions/session1/pre-key-93.json +1 -0
- package/data/sessions/session1/pre-key-94.json +1 -0
- package/data/sessions/session1/pre-key-95.json +1 -0
- package/data/sessions/session1/pre-key-96.json +1 -0
- package/data/sessions/session1/pre-key-97.json +1 -0
- package/data/sessions/session1/pre-key-98.json +1 -0
- package/data/sessions/session1/pre-key-99.json +1 -0
- package/data/sessions/session1/session-275801408819393_1.0.json +1 -0
- package/handlers/baileys.js +25 -0
- package/handlers/calls.js +58 -0
- package/handlers/contacts.js +142 -0
- package/handlers/groups.js +195 -0
- package/handlers/messages.js +345 -0
- package/handlers/newsletters.js +184 -0
- package/handlers/presence-status.js +9 -0
- package/handlers/stories.js +37 -0
- package/handlers/users.js +119 -0
- package/index.js +649 -0
- package/package.json +19 -0
- package/types/buttons.js +72 -0
- package/types/interactive-messages.js +318 -0
- package/utils/generic-utils.js +23 -0
- package/utils/index.js +4 -0
- package/utils/message-normalizer.js +427 -0
- package/utils/message-store-db-handler.js +46 -0
- package/utils/message-store.js +73 -0
package/index.js
ADDED
|
@@ -0,0 +1,649 @@
|
|
|
1
|
+
// Biblioteca chamada @areumtecnologia/unitychat
|
|
2
|
+
|
|
3
|
+
const {
|
|
4
|
+
Browsers,
|
|
5
|
+
makeWASocket,
|
|
6
|
+
decryptPollVote,
|
|
7
|
+
DisconnectReason,
|
|
8
|
+
jidNormalizedUser,
|
|
9
|
+
downloadContentFromMessage,
|
|
10
|
+
getContentType,
|
|
11
|
+
useMultiFileAuthState,
|
|
12
|
+
fetchLatestBaileysVersion,
|
|
13
|
+
getOldestMessageInChat,
|
|
14
|
+
fetchMessageHistory
|
|
15
|
+
} = require('./handlers/baileys');
|
|
16
|
+
const { Boom } = require('@hapi/boom');
|
|
17
|
+
const EventEmitter = require('events');
|
|
18
|
+
const fs = require('fs/promises');
|
|
19
|
+
const { constants } = require('fs');
|
|
20
|
+
const path = require('path');
|
|
21
|
+
const pino = require('pino');
|
|
22
|
+
const QRCode = require('qrcode');
|
|
23
|
+
const qrcodeTerminal = require('qrcode-terminal');
|
|
24
|
+
// Importa os handlers de responsabilidades específicas
|
|
25
|
+
const MessageHandler = require('./handlers/messages');
|
|
26
|
+
const GroupHandler = require('./handlers/groups');
|
|
27
|
+
const CallHandler = require('./handlers/calls');
|
|
28
|
+
const NewsletterHandler = require('./handlers/newsletters');
|
|
29
|
+
const { UserHandler, PresenceStatus } = require('./handlers/users');
|
|
30
|
+
const ContactHandler = require('./handlers/contacts');
|
|
31
|
+
const StoriesHandler = require('./handlers/stories');
|
|
32
|
+
|
|
33
|
+
const { MessageNormalizer, MessageStore } = require('./utils');
|
|
34
|
+
const { InteractiveMessage, CallButton, CopyCodeButton, ListButton, ListRow, ListSection, QuickReplyButton, UrlButton, LocationButton } = require('./types/interactive-messages');
|
|
35
|
+
const NodeCache = require("node-cache");
|
|
36
|
+
const groupCache = new NodeCache({ stdTTL: 5 * 60, useClones: false });
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Representa um wrapper de alto nível para a biblioteca Baileys, simplificando a criação e o gerenciamento de um cliente de WhatsApp.
|
|
40
|
+
* A classe abstrai a complexidade do ciclo de vida da conexão e emite eventos semânticos para todas as interações importantes.
|
|
41
|
+
*
|
|
42
|
+
* @extends {EventEmitter}
|
|
43
|
+
*
|
|
44
|
+
* @fires UnityChat#status
|
|
45
|
+
* @fires UnityChat#error
|
|
46
|
+
* @fires UnityChat#message_received
|
|
47
|
+
* @fires UnityChat#message_sent
|
|
48
|
+
* @fires UnityChat#message_update
|
|
49
|
+
* @fires UnityChat#message_delete
|
|
50
|
+
* @fires UnityChat#message_reaction
|
|
51
|
+
* @fires UnityChat#incoming_call
|
|
52
|
+
* @fires UnityChat#GROUPS_UPDATE
|
|
53
|
+
* @fires UnityChat#group_participants_update
|
|
54
|
+
* @fires UnityChat#presence_update
|
|
55
|
+
* @fires UnityChat#chat_update
|
|
56
|
+
* @fires UnityChat#chat_delete
|
|
57
|
+
* @fires UnityChat#contact_update
|
|
58
|
+
* @fires UnityChat#blocklist_update
|
|
59
|
+
*/
|
|
60
|
+
class UnityChat extends EventEmitter {
|
|
61
|
+
/**
|
|
62
|
+
* Cria uma instância do Cliente.
|
|
63
|
+
* @param {object} [options={}] - Opções de configuração para o cliente.
|
|
64
|
+
* @param {string} [options.sessionName='session'] - O nome da sessão a ser usada, que nomeia a pasta de autenticação.
|
|
65
|
+
*/
|
|
66
|
+
constructor(options = {}) {
|
|
67
|
+
super();
|
|
68
|
+
this.sock = null;
|
|
69
|
+
this.dataPath = options.dataPath || "data/sessions";
|
|
70
|
+
this.sessionName = options.sessionName;
|
|
71
|
+
this.sessionPath = [this.dataPath, this.sessionName].join('/');
|
|
72
|
+
this.store = options.store ? options.store : new MessageStore(this.sessionPath);
|
|
73
|
+
this.isOnline = false;
|
|
74
|
+
this.connected = false;
|
|
75
|
+
this.manualDisconnect = false;
|
|
76
|
+
this.receivedPendingNotifications = false;
|
|
77
|
+
this.loggerLevel = options.loggerLevel || "error";
|
|
78
|
+
this.logger = pino({ level: this.loggerLevel });
|
|
79
|
+
this.restartOnClose = options.restartOnClose || false;
|
|
80
|
+
this.status = Events.DISCONNECTED;
|
|
81
|
+
this.markOnlineOnConnect = options.markOnlineOnConnect || false;
|
|
82
|
+
this.environment = options.environment || ['Mac OS', 'Chrome', '144.0.7559.110'];
|
|
83
|
+
this.printQRInTerminal = options.printQRInTerminal || false;
|
|
84
|
+
this.qrCode = null;
|
|
85
|
+
this.waVersion = options.waVersion || [2, 3000, 1038819500];
|
|
86
|
+
// =================================================================================================
|
|
87
|
+
// INTEGRAÇÃO DOS HANDLERS
|
|
88
|
+
// =================================================================================================
|
|
89
|
+
// Instancia os handlers, passando a si mesma (this) como referência.
|
|
90
|
+
// Isso permite que os handlers acessem o 'sock' e outros métodos do cliente.
|
|
91
|
+
this.groups = new GroupHandler(this);
|
|
92
|
+
this.users = new UserHandler(this);
|
|
93
|
+
this.calls = new CallHandler(this);
|
|
94
|
+
this.newsletters = new NewsletterHandler(this);
|
|
95
|
+
this.contacts = new ContactHandler(this);
|
|
96
|
+
this.messages = new MessageHandler(this);
|
|
97
|
+
this.stories = new StoriesHandler(this);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Inicia o cliente, configura a autenticação e estabelece a conexão com o WhatsApp.
|
|
102
|
+
* Gerencia todo o ciclo de vida da conexão, incluindo reconexão automática e solicitação de novo QR code.
|
|
103
|
+
* @returns {Promise<void>}
|
|
104
|
+
*/
|
|
105
|
+
async connect() {
|
|
106
|
+
this.status = Events.INIT;
|
|
107
|
+
const { state, saveCreds } = await useMultiFileAuthState(this.sessionPath);
|
|
108
|
+
const { version } = await fetchLatestBaileysVersion();
|
|
109
|
+
this.waVersion = this.waVersion || version
|
|
110
|
+
this.sock = makeWASocket({
|
|
111
|
+
auth: state,
|
|
112
|
+
version: this.waVersion,
|
|
113
|
+
browser: this.environment,
|
|
114
|
+
syncFullHistory: false,
|
|
115
|
+
logger: this.logger,
|
|
116
|
+
markOnlineOnConnect: this.markOnlineOnConnect || false,
|
|
117
|
+
keepAliveIntervalMs: 20000,
|
|
118
|
+
connectTimeoutMs: 30000,
|
|
119
|
+
defaultQueryTimeoutMs: 30000,
|
|
120
|
+
cachedGroupMetadata: async (jid) => groupCache.get(jid),
|
|
121
|
+
getMessage: async (key) => {
|
|
122
|
+
const chatId = key.remoteJid;
|
|
123
|
+
const msg = this.store?.getMessage(chatId, key.id);
|
|
124
|
+
// precisa retornar o raw.message
|
|
125
|
+
return msg ? msg.raw?.message : undefined;
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
// =================================================================================================
|
|
130
|
+
// EVENTO CENTRALIZADO DE CICLO DE VIDA
|
|
131
|
+
// =================================================================================================
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Disparado quando as credenciais são atualizadas.
|
|
135
|
+
* O handler `saveCreds` da Baileys cuida de persistir essas credenciais.
|
|
136
|
+
*/
|
|
137
|
+
this.sock.ev.on('creds.update', saveCreds);
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Gerencia TODAS as atualizações do estado da conexão, emitindo um evento 'status' padronizado.
|
|
141
|
+
*/
|
|
142
|
+
this.sock.ev.on('connection.update', async (update) => {
|
|
143
|
+
|
|
144
|
+
const { connection, isOnline, receivedPendingNotifications, lastDisconnect, qr, isNewLogin } = update;
|
|
145
|
+
|
|
146
|
+
if (receivedPendingNotifications)
|
|
147
|
+
this.receivedPendingNotifications = true;
|
|
148
|
+
|
|
149
|
+
if (isOnline)
|
|
150
|
+
this.isOnline = true;
|
|
151
|
+
|
|
152
|
+
if (qr) {
|
|
153
|
+
this.qrCode = qr;
|
|
154
|
+
const base64 = await QRCode.toDataURL(qr);
|
|
155
|
+
this.qrCodeAttempts = (this.qrCodeAttempts || 0) + 1;
|
|
156
|
+
this.qrCode = { base64, qr, attempts: this.qrCodeAttempts };
|
|
157
|
+
this.status = Events.PAIRING_CODE;
|
|
158
|
+
this.emit(Events.PAIRING_CODE, this.qrCode);
|
|
159
|
+
this.emit(Events.STATUS_CHANGE, this.status);
|
|
160
|
+
this.printQRInTerminal ? qrcodeTerminal.generate(qr, { small: true }) : null;
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
// intercepta a configuração de pairing e reinicio de conexao apos login bem sucedido...
|
|
165
|
+
if (isNewLogin && qr == undefined) {
|
|
166
|
+
this.qrCode = null;
|
|
167
|
+
this.status = Events.PAIRING_SUCCESS;
|
|
168
|
+
this.emit(Events.PAIRING_SUCCESS, update);
|
|
169
|
+
this.emit(Events.STATUS_CHANGE, this.status);
|
|
170
|
+
return;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Dentro de 'connection.update'
|
|
174
|
+
switch (connection) {
|
|
175
|
+
case 'connecting':
|
|
176
|
+
this.status = Events.CONNECTING;
|
|
177
|
+
this.emit(Events.CONNECTING, update);
|
|
178
|
+
this.emit(Events.STATUS_CHANGE, this.status);
|
|
179
|
+
break;
|
|
180
|
+
|
|
181
|
+
case 'open':
|
|
182
|
+
this.connected = true;
|
|
183
|
+
this.status = Events.CONNECTED;
|
|
184
|
+
this.manualDisconnect = false;
|
|
185
|
+
this.qrCode = null;
|
|
186
|
+
this.user = await this.itsMe();
|
|
187
|
+
this.emit(Events.CONNECTED, this.user);
|
|
188
|
+
this.emit(Events.STATUS_CHANGE, this.status);
|
|
189
|
+
this.presenceSetInterval = setInterval(() => {
|
|
190
|
+
if (this.sock?.sendPresenceUpdate) {
|
|
191
|
+
this.sock.sendPresenceUpdate('available').catch(() => { });
|
|
192
|
+
}
|
|
193
|
+
}, 30_000);
|
|
194
|
+
break;
|
|
195
|
+
|
|
196
|
+
case 'close': {
|
|
197
|
+
// limpar presença
|
|
198
|
+
if (this.presenceSetInterval) {
|
|
199
|
+
clearInterval(this.presenceSetInterval);
|
|
200
|
+
this.presenceSetInterval = null;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
this.connected = false;
|
|
204
|
+
this.qrCode = null;
|
|
205
|
+
|
|
206
|
+
const boomError = new Boom(lastDisconnect?.error);
|
|
207
|
+
const statusCode = boomError?.output?.statusCode;
|
|
208
|
+
const reasonType =
|
|
209
|
+
boomError?.data?.content?.[0]?.attrs?.type ||
|
|
210
|
+
boomError?.data?.attrs?.type ||
|
|
211
|
+
'unknown';
|
|
212
|
+
|
|
213
|
+
let statusType;
|
|
214
|
+
let shouldReconnect = false;
|
|
215
|
+
|
|
216
|
+
switch (statusCode) {
|
|
217
|
+
|
|
218
|
+
/** 🔄 WhatsApp pediu restart explícito (515)*/
|
|
219
|
+
case DisconnectReason.restartRequired:
|
|
220
|
+
return this.connect();
|
|
221
|
+
|
|
222
|
+
/** 🔐 Sessão inválida / corrompida */
|
|
223
|
+
case DisconnectReason.badSession:
|
|
224
|
+
statusType = DisconnectReasons.BAD_SESSION;
|
|
225
|
+
shouldReconnect = false;
|
|
226
|
+
try {
|
|
227
|
+
await fs.rm(this.sessionPath, { recursive: true, force: true });
|
|
228
|
+
} catch { }
|
|
229
|
+
break;
|
|
230
|
+
|
|
231
|
+
/** 🚪 Logout explícito (401)*/
|
|
232
|
+
case DisconnectReason.loggedOut:
|
|
233
|
+
statusType = DisconnectReasons.LOGGED_OUT;
|
|
234
|
+
shouldReconnect = false;
|
|
235
|
+
try {
|
|
236
|
+
await fs.rm(this.sessionPath, { recursive: true, force: true });
|
|
237
|
+
} catch { }
|
|
238
|
+
break;
|
|
239
|
+
|
|
240
|
+
/** 🔁 Outra instância assumiu a sessão */
|
|
241
|
+
case DisconnectReason.connectionReplaced:
|
|
242
|
+
statusType = DisconnectReasons.CONNECTION_REPLACED;
|
|
243
|
+
shouldReconnect = false;
|
|
244
|
+
break;
|
|
245
|
+
|
|
246
|
+
|
|
247
|
+
/** 🧩 Incompatibilidade Multi-Device (418)*/
|
|
248
|
+
case DisconnectReason.multideviceMismatch:
|
|
249
|
+
statusType = DisconnectReasons.MULTIDEVICE_MISMATCH;
|
|
250
|
+
shouldReconnect = false;
|
|
251
|
+
break;
|
|
252
|
+
|
|
253
|
+
case 405:
|
|
254
|
+
statusType = DisconnectReasons.UNAUTHORIZED;
|
|
255
|
+
shouldReconnect = false;
|
|
256
|
+
try {
|
|
257
|
+
await fs.rm(this.sessionPath, { recursive: true, force: true });
|
|
258
|
+
} catch (error) {
|
|
259
|
+
this.logger.error(`Erro ao remover sessão: ${error}`);
|
|
260
|
+
}
|
|
261
|
+
break;
|
|
262
|
+
|
|
263
|
+
/** ⏱ Timeout (408) - Exemplo: Leitura de QrCode expirada*/
|
|
264
|
+
case DisconnectReason.timedOut:
|
|
265
|
+
statusType = DisconnectReasons.TIMEOUT;
|
|
266
|
+
shouldReconnect = this.status === Events.PAIRING_CODE ? false : true;
|
|
267
|
+
break;
|
|
268
|
+
|
|
269
|
+
/** 🔌 Conexão perdida (401) */
|
|
270
|
+
case DisconnectReason.connectionLost:
|
|
271
|
+
case DisconnectReason.connectionClosed:
|
|
272
|
+
statusType = DisconnectReasons.CONNECTION_LOST;
|
|
273
|
+
shouldReconnect = true;
|
|
274
|
+
break;
|
|
275
|
+
|
|
276
|
+
/** 🌐 Serviço indisponível (503) */
|
|
277
|
+
case DisconnectReason.unavailableService:
|
|
278
|
+
statusType = DisconnectReasons.SERVICE_UNAVAILABLE;
|
|
279
|
+
shouldReconnect = true;
|
|
280
|
+
break;
|
|
281
|
+
|
|
282
|
+
/** ❓ Qualquer outro caso */
|
|
283
|
+
default:
|
|
284
|
+
statusType = DisconnectReasons.UNKNOWN;
|
|
285
|
+
shouldReconnect = this.restartOnClose;
|
|
286
|
+
break;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
const disconnectReason = {
|
|
290
|
+
statusCode,
|
|
291
|
+
statusType,
|
|
292
|
+
reason: reasonType,
|
|
293
|
+
details: lastDisconnect?.error,
|
|
294
|
+
};
|
|
295
|
+
|
|
296
|
+
this.status = Events.DISCONNECTED;
|
|
297
|
+
this.emit(Events.DISCONNECTED, disconnectReason);
|
|
298
|
+
this.emit(Events.STATUS_CHANGE, this.status, disconnectReason);
|
|
299
|
+
|
|
300
|
+
if (shouldReconnect && this.restartOnClose && !this.manualDisconnect) {
|
|
301
|
+
try {
|
|
302
|
+
await this.connect();
|
|
303
|
+
} catch (err) {
|
|
304
|
+
this.emit(Events.ERROR, err);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
break;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
});
|
|
314
|
+
|
|
315
|
+
// =================================================================================================
|
|
316
|
+
// OUTROS EVENTOS DE INTERAÇÃO
|
|
317
|
+
// =================================================================================================
|
|
318
|
+
|
|
319
|
+
this.sock.ev.on('call', ([call]) => {
|
|
320
|
+
this.emit(Events.CALL, this.calls.normalizeCall(call));
|
|
321
|
+
});
|
|
322
|
+
this.sock.ev.on('groups.upsert', async (groups) => {
|
|
323
|
+
this.emit(Events.GROUPS_UPSERT, groups);
|
|
324
|
+
groups.forEach((group) => {
|
|
325
|
+
this.groups.store.set(group.id, group);
|
|
326
|
+
});
|
|
327
|
+
});
|
|
328
|
+
|
|
329
|
+
this.sock.ev.on('groups.update', async (grupos) => {
|
|
330
|
+
if (!this.user?.groups) return;
|
|
331
|
+
const gp = [];
|
|
332
|
+
for (const g of grupos) {
|
|
333
|
+
let contact = await this.contacts.get(g.id);
|
|
334
|
+
contact = await this.contacts.normalize({ key: { remoteJid: g.id, fromMe: false } });
|
|
335
|
+
if (contact && contact.id && contact.name && contact.id !== this.user?.id) {
|
|
336
|
+
this.contacts.set(contact.id, contact);
|
|
337
|
+
}
|
|
338
|
+
this.groups.store.set(g.id, contact.metadata);
|
|
339
|
+
groupCache.set(g.id, contact.metadata);
|
|
340
|
+
gp.push(contact.metadata);
|
|
341
|
+
}
|
|
342
|
+
this.emit(Events.GROUPS_UPDATE, gp);
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
this.sock.ev.on('group-participants.update', async (event) => {
|
|
346
|
+
this.emit(Events.GROUP_PARTICIPANTS_UPDATE, event);
|
|
347
|
+
let contact = await this.contacts.get(event.id);
|
|
348
|
+
if (!contact) {
|
|
349
|
+
contact = await this.contacts.normalize({ key: { remoteJid: event.id, fromMe: false } });
|
|
350
|
+
if (contact && contact.id && contact.name && contact.id !== this.user?.id) {
|
|
351
|
+
this.contacts.set(contact.id, contact);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
this.groups.store.set(event.id, contact.metadata);
|
|
355
|
+
});
|
|
356
|
+
|
|
357
|
+
this.sock.ev.on('presence.update', (event) => this.emit(Events.PRESENCE_UPDATE, event));
|
|
358
|
+
this.sock.ev.on('contacts.upsert', (contacts) => this.emit(Events.CONTACTS_UPSERT, contacts));
|
|
359
|
+
this.sock.ev.on('contacts.update', async (event) => {
|
|
360
|
+
const cxs = [];
|
|
361
|
+
// event é um array de objetos {id, imgUrl, name, etc}.
|
|
362
|
+
// Filtrar apenas os objetos que tiverem propriedades contendo valores igual a 'changed'
|
|
363
|
+
const cs = event.filter(c => Object.values(c).some(v => v === 'changed'));
|
|
364
|
+
for (const c of cs) {
|
|
365
|
+
let jid = null; // jid sempre precisa ser pn 123456789@s.whatsapp.net e c.id pode ser 123456789@lid ou 123456789@s.whatsapp.net
|
|
366
|
+
if (c.id.endsWith('@lid')) {
|
|
367
|
+
jid = await this.users.getPnForLid(c.id);
|
|
368
|
+
} else {
|
|
369
|
+
jid = c.id;
|
|
370
|
+
}
|
|
371
|
+
// Verifica se o contato existe no cache
|
|
372
|
+
let contact = jid ? await this.contacts.get(jid) : null;
|
|
373
|
+
// Se não existir, normaliza o contato com base no jid
|
|
374
|
+
if (!contact) {
|
|
375
|
+
contact = await this.contacts.normalize({ key: { remoteJid: jid } });
|
|
376
|
+
}
|
|
377
|
+
// Adiciona contato valido no cache e no array
|
|
378
|
+
if (contact && contact.id && contact.name && contact.id !== this.user?.id) {
|
|
379
|
+
cxs.push(contact);
|
|
380
|
+
this.contacts.set(contact.id, contact);
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
// So emite o evento se houver contatos atualizados
|
|
384
|
+
if (cxs.length > 0) {
|
|
385
|
+
this.emit(Events.CONTACTS_UPDATE, cxs);
|
|
386
|
+
}
|
|
387
|
+
});
|
|
388
|
+
this.sock.ev.on('blocklist.update', (event) => this.emit(Events.BLOCKLIST_UPDATE, event));
|
|
389
|
+
this.sock.ev.on('chats.update', (event) => this.emit(Events.CHAT_UPDATE, event));
|
|
390
|
+
this.sock.ev.on('chats.delete', (event) => this.emit(Events.CHAT_DELETE, event));
|
|
391
|
+
|
|
392
|
+
this.sock.ev.on('messaging-history.set', async ({ chats, contacts, messages, isLatest, syncType }) => {
|
|
393
|
+
this.logger.info({ chats: chats.length, contacts: contacts.length, syncType }, 'Sincronização de histórico recebida');
|
|
394
|
+
try {
|
|
395
|
+
// Normaliza os contatos
|
|
396
|
+
for (const contact of contacts) {
|
|
397
|
+
const chatId = contact.id;
|
|
398
|
+
const c = await this.contacts.normalize({ key: { remoteJid: chatId } });
|
|
399
|
+
if (c && c.id && c.name && c.id !== this.user?.id) {
|
|
400
|
+
this.contacts.set(c.id, c);
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
// Normaliza os chats
|
|
404
|
+
for (const chat of chats) {
|
|
405
|
+
const chatId = chat.id;
|
|
406
|
+
const c = await this.contacts.normalize({ key: { remoteJid: chatId } });
|
|
407
|
+
if (c && c.id && c.name && c.id !== this.user?.id) {
|
|
408
|
+
this.contacts.set(c.id, c);
|
|
409
|
+
}
|
|
410
|
+
const chatMessages = messages.filter(m => m.key.remoteJid === chatId);
|
|
411
|
+
for (const msg of chatMessages) {
|
|
412
|
+
const nmsg = await MessageNormalizer.normalize(c, msg, this);
|
|
413
|
+
if (nmsg && this.store) {
|
|
414
|
+
if (this.store.saveMessage) {
|
|
415
|
+
await this.store.saveMessage(chatId, nmsg);
|
|
416
|
+
} else if (this.store.setMessage) {
|
|
417
|
+
await this.store.setMessage(chatId, nmsg);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
this.emit(Events.MESSAGES_HISTORY_SYNC_DONE, { chats, contacts, messages, isLatest, syncType });
|
|
423
|
+
|
|
424
|
+
} catch (error) {
|
|
425
|
+
this.emit(Events.ERROR, error);
|
|
426
|
+
}
|
|
427
|
+
});
|
|
428
|
+
this.sock.ev.on('messages.update', (event) => this.emit(Events.MESSAGE_UPDATE, event));
|
|
429
|
+
this.sock.ev.on('messages.delete', (event) => this.emit(Events.MESSAGE_DELETE, event));
|
|
430
|
+
this.sock.ev.on('messages.reaction', (event) => this.emit(Events.MESSAGE_REACTION, event));
|
|
431
|
+
this.sock.ev.on('messages.upsert', async (event) => {
|
|
432
|
+
try {
|
|
433
|
+
const { messages, type } = event;
|
|
434
|
+
const msg = messages[0];
|
|
435
|
+
|
|
436
|
+
if (!msg.message || msg.message.protocolMessage) {
|
|
437
|
+
this.emit(Events.NOTIFICATION, msg);
|
|
438
|
+
} else {
|
|
439
|
+
let contact = await this.contacts.get(msg.key.remoteJid);
|
|
440
|
+
if (!contact) {
|
|
441
|
+
contact = await this.contacts.normalize(msg); // msg ja contem tudo que precisa
|
|
442
|
+
}
|
|
443
|
+
if (msg.broadcast || msg.key.remoteJid == 'status@broadcast') {
|
|
444
|
+
this.emit(Events.BROADCAST_MESSAGE, msg);
|
|
445
|
+
} else {
|
|
446
|
+
const nmsg = await MessageNormalizer.normalize(contact, msg, this);
|
|
447
|
+
if (nmsg && this.store) {
|
|
448
|
+
if (this.store.saveMessage) {
|
|
449
|
+
await this.store.saveMessage(nmsg.chatId, nmsg);
|
|
450
|
+
} else if (this.store.setMessage) {
|
|
451
|
+
await this.store.setMessage(nmsg.chatId, nmsg);
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
// Mensagens de conversacao
|
|
455
|
+
switch (type) {
|
|
456
|
+
case 'append':
|
|
457
|
+
this.emit(Events.MESSAGE_SENT, nmsg);
|
|
458
|
+
break;
|
|
459
|
+
|
|
460
|
+
case 'notify':
|
|
461
|
+
if (msg.key.fromMe) {
|
|
462
|
+
this.emit(Events.MESSAGE_SENT, nmsg);
|
|
463
|
+
} else {
|
|
464
|
+
// So adiciona contato no cache se for recebido
|
|
465
|
+
if (contact && contact.id && contact.name && contact.id !== this.user?.id) {
|
|
466
|
+
this.contacts.set(contact.id, contact);
|
|
467
|
+
}
|
|
468
|
+
this.emit(Events.MESSAGE_RECEIVED, nmsg);
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
break;
|
|
472
|
+
default:
|
|
473
|
+
this.emit(Events.NOTIFICATION, nmsg);
|
|
474
|
+
break;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
} catch (error) {
|
|
480
|
+
this.emit(Events.ERROR, { error, event });
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
});
|
|
484
|
+
}
|
|
485
|
+
|
|
486
|
+
/**
|
|
487
|
+
* @returns {Promise<object>} - Um objeto contendo as informações do contato.
|
|
488
|
+
*/
|
|
489
|
+
async itsMe() {
|
|
490
|
+
if (!this.sock.user) return null;
|
|
491
|
+
const wid = this.sock.user.id.replace(/:.*?@/, "@");
|
|
492
|
+
const me = await this.contacts.normalize({ key: { remoteJid: wid, fromMe: true } });
|
|
493
|
+
me.environment = this.environment;
|
|
494
|
+
me.groups = await this.groups.getAllGroups();
|
|
495
|
+
me.newsletters = await this.newsletters.getAllNewsletters();
|
|
496
|
+
return me;
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
/**
|
|
500
|
+
* Desconecta o cliente do WhatsApp de forma manual, sem apagar a sessão.
|
|
501
|
+
* @returns {Promise<void>}
|
|
502
|
+
*/
|
|
503
|
+
disconnect() {
|
|
504
|
+
try {
|
|
505
|
+
this.manualDisconnect = true;
|
|
506
|
+
return this.sock?.end();
|
|
507
|
+
} catch (error) {
|
|
508
|
+
this.emit(Events.ERROR, error);
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
/** Logout e remoção de dados de sessão */
|
|
513
|
+
async logout() {
|
|
514
|
+
try {
|
|
515
|
+
if (this.sock.logout) {
|
|
516
|
+
await this.sock.logout();
|
|
517
|
+
}
|
|
518
|
+
// Aqui você pode adicionar a limpeza local da sessão
|
|
519
|
+
} catch (err) {
|
|
520
|
+
this.emit(Events.ERROR, err);
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
/**
|
|
525
|
+
* Valida a conexão antes de executar uma ação.
|
|
526
|
+
* @private
|
|
527
|
+
* @throws {Error} Se o cliente não estiver conectado.
|
|
528
|
+
*/
|
|
529
|
+
_validateConnection() {
|
|
530
|
+
if (!this.sock || this.status !== Events.CONNECTED) {
|
|
531
|
+
throw new Error('Cliente não está conectado.', { cause: this.status });
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
// Metodos usados pelos handlers
|
|
536
|
+
async decryptPollVote(vote, voteParams) {
|
|
537
|
+
return await decryptPollVote(vote, voteParams);
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
// Metodos usados pelos handlers
|
|
541
|
+
jidNormalizedUser(id) {
|
|
542
|
+
return jidNormalizedUser(id);
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
// Metodos usados pelos handlers
|
|
546
|
+
async downloadContentFromMessage(content, type) {
|
|
547
|
+
return await downloadContentFromMessage(content, type);
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
// Metodos usados pelos handlers
|
|
551
|
+
getContentType(message) {
|
|
552
|
+
return getContentType(message);
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
// Metodo para enviar notificacao "digitando"
|
|
556
|
+
composing(jid, ts) {
|
|
557
|
+
return this.sock.sendPresenceUpdate('composing', jid);
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
async getMessages(jid, limit = 50) {
|
|
561
|
+
const msg = await getOldestMessageInChat(jid)
|
|
562
|
+
return await fetchMessageHistory(
|
|
563
|
+
limit, //quantity (max: 50 per query)
|
|
564
|
+
msg.key,
|
|
565
|
+
msg.messageTimestamp
|
|
566
|
+
)
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
/**
|
|
572
|
+
* Enumeração estática dos eventos emitidos pelo UnityChat.
|
|
573
|
+
*/
|
|
574
|
+
class Events {
|
|
575
|
+
static INIT = 'init';
|
|
576
|
+
static CONNECTING = 'connecting';
|
|
577
|
+
static STATUS_CHANGE = 'status_change';
|
|
578
|
+
static ERROR = 'error';
|
|
579
|
+
static MESSAGE_RECEIVED = 'message_received';
|
|
580
|
+
static MESSAGE_SENT = 'message_sent';
|
|
581
|
+
static MESSAGE_UPDATE = 'message_update';
|
|
582
|
+
static MESSAGE_DELETE = 'message_delete';
|
|
583
|
+
static MESSAGE_REACTION = 'message_reaction';
|
|
584
|
+
static CALL = 'call';
|
|
585
|
+
static GROUPS_UPDATE = 'GROUPS_UPDATE';
|
|
586
|
+
static GROUP_PARTICIPANTS_UPDATE = 'group_participants_update';
|
|
587
|
+
static GROUPS_UPSERT = 'GROUPS_UPSERT';
|
|
588
|
+
static PRESENCE_UPDATE = 'presence_update';
|
|
589
|
+
static CHAT_UPDATE = 'chat_update';
|
|
590
|
+
static CHAT_DELETE = 'chat_delete';
|
|
591
|
+
static CONTACTS_UPSERT = 'contacts_upsert';
|
|
592
|
+
static CONTACTS_UPDATE = 'contacts_update';
|
|
593
|
+
static BLOCKLIST_UPDATE = 'blocklist_update';
|
|
594
|
+
static PAIRING_CODE = 'pairing_code';
|
|
595
|
+
static PAIRING_SUCCESS = 'pairing_success';
|
|
596
|
+
static DISCONNECTED = 'disconnected';
|
|
597
|
+
static CONNECTED = 'connected';
|
|
598
|
+
static MESSAGES_HISTORY_SYNC_DONE = 'messages_history_sync_done';
|
|
599
|
+
static BROADCAST_MESSAGE = 'broadcast_message';
|
|
600
|
+
static NOTIFICATION = 'notification';
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
class SessionStatus {
|
|
604
|
+
static CONNECTING = 'connecting';
|
|
605
|
+
static PAIRING_CODE = 'pairing_code';
|
|
606
|
+
static PAIRING_SUCCESS = 'pairing_success';
|
|
607
|
+
static PAIRING_FAILED = 'pairing_failed';
|
|
608
|
+
static LOGGED_OUT = 'logged_out';
|
|
609
|
+
static CONNECTED = 'connected';
|
|
610
|
+
static DISCONNECTED = 'disconnected';
|
|
611
|
+
|
|
612
|
+
}
|
|
613
|
+
|
|
614
|
+
/**
|
|
615
|
+
* Enumeração estática dos motivos de desconexão.
|
|
616
|
+
*/
|
|
617
|
+
class DisconnectReasons {
|
|
618
|
+
static MANUAL_DISCONNECT = 'manual_disconnect';
|
|
619
|
+
static LOGGED_OUT = 'logged_out';
|
|
620
|
+
static PAIRING_FAILED = 'pairing_failed';
|
|
621
|
+
static CONNECTION_ERROR = 'connection_error';
|
|
622
|
+
static RESTART_REQUIRED = 'restart_required';
|
|
623
|
+
static UNAVAILABLE_SERVICE = 'unavailable_service';
|
|
624
|
+
static UNKNOWN = 'unknown';
|
|
625
|
+
static QR_READ_ATTEMPTS_ENDED = 'qr_read_attempts_ended';
|
|
626
|
+
static BAD_SESSION = 'bad_session';
|
|
627
|
+
static CONNECTION_LOST = 'connection_lost';
|
|
628
|
+
static CONNECTION_CLOSED = 'connection_closed';
|
|
629
|
+
static CONNECTION_REPLACED = 'connection_replaced';
|
|
630
|
+
static MULTIDEVICE_MISMATCH = 'multidevice_mismatch';
|
|
631
|
+
static TIMED_OUT = 'timed_out';
|
|
632
|
+
static UNAUTHORIZED = 'unauthorized';
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
module.exports = {
|
|
636
|
+
UnityChat,
|
|
637
|
+
PresenceStatus,
|
|
638
|
+
Events,
|
|
639
|
+
DisconnectReasons,
|
|
640
|
+
InteractiveMessage,
|
|
641
|
+
QuickReplyButton,
|
|
642
|
+
UrlButton,
|
|
643
|
+
CopyCodeButton,
|
|
644
|
+
CallButton,
|
|
645
|
+
ListButton,
|
|
646
|
+
ListSection,
|
|
647
|
+
ListRow,
|
|
648
|
+
LocationButton
|
|
649
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@areumtecnologia/unitychat",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "just another Baileys wrapper",
|
|
5
|
+
"license": "ISC",
|
|
6
|
+
"author": "Áreum Tecnologia",
|
|
7
|
+
"type": "commonjs",
|
|
8
|
+
"main": "index.js",
|
|
9
|
+
"scripts": {
|
|
10
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@areumtecnologia/wasockets": "^1.1.3",
|
|
14
|
+
"crypto-digest-sync": "^1.0.0",
|
|
15
|
+
"node-cache": "^5.1.2",
|
|
16
|
+
"qrcode": "^1.5.4",
|
|
17
|
+
"qrcode-terminal": "^0.12.0"
|
|
18
|
+
}
|
|
19
|
+
}
|