@powersync/service-jpgwire 0.17.10

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/ca/azure.pem ADDED
@@ -0,0 +1,128 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJ
3
+ RTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYD
4
+ VQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoX
5
+ DTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMCSUUxEjAQBgNVBAoTCUJhbHRpbW9y
6
+ ZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFsdGltb3JlIEN5YmVy
7
+ VHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKMEuyKr
8
+ mD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjr
9
+ IZ3AQSsBUnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeK
10
+ mpYcqWe4PwzV9/lSEy/CG9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSu
11
+ XmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9XbIGevOF6uvUA65ehD5f/xXtabz5OTZy
12
+ dc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjprl3RjM71oGDHweI12v/ye
13
+ jl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoIVDaGezq1
14
+ BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3
15
+ DQEBBQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT92
16
+ 9hkTI7gQCvlYpNRhcL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3Wgx
17
+ jkzSswF07r51XgdIGn9w/xZchMB5hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0
18
+ Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsaY71k5h+3zvDyny67G7fyUIhz
19
+ ksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9HRCwBXbsdtTLS
20
+ R9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp
21
+ -----END CERTIFICATE-----
22
+ -----BEGIN CERTIFICATE-----
23
+ MIIDjjCCAnagAwIBAgIQAzrx5qcRqaC7KGSxHQn65TANBgkqhkiG9w0BAQsFADBh
24
+ MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
25
+ d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBH
26
+ MjAeFw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVT
27
+ MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
28
+ b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEcyMIIBIjANBgkqhkiG
29
+ 9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuzfNNNx7a8myaJCtSnX/RrohCgiN9RlUyfuI
30
+ 2/Ou8jqJkTx65qsGGmvPrC3oXgkkRLpimn7Wo6h+4FR1IAWsULecYxpsMNzaHxmx
31
+ 1x7e/dfgy5SDN67sH0NO3Xss0r0upS/kqbitOtSZpLYl6ZtrAGCSYP9PIUkY92eQ
32
+ q2EGnI/yuum06ZIya7XzV+hdG82MHauVBJVJ8zUtluNJbd134/tJS7SsVQepj5Wz
33
+ tCO7TG1F8PapspUwtP1MVYwnSlcUfIKdzXOS0xZKBgyMUNGPHgm+F6HmIcr9g+UQ
34
+ vIOlCsRnKPZzFBQ9RnbDhxSJITRNrw9FDKZJobq7nMWxM4MphQIDAQABo0IwQDAP
35
+ BgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUTiJUIBiV
36
+ 5uNu5g/6+rkS7QYXjzkwDQYJKoZIhvcNAQELBQADggEBAGBnKJRvDkhj6zHd6mcY
37
+ 1Yl9PMWLSn/pvtsrF9+wX3N3KjITOYFnQoQj8kVnNeyIv/iPsGEMNKSuIEyExtv4
38
+ NeF22d+mQrvHRAiGfzZ0JFrabA0UWTW98kndth/Jsw1HKj2ZL7tcu7XUIOGZX1NG
39
+ Fdtom/DzMNU+MeKNhJ7jitralj41E6Vf8PlwUHBHQRFXGU7Aj64GxJUTFy8bJZ91
40
+ 8rGOmaFvE7FBcf6IKshPECBV1/MUReXgRPTqh5Uykw7+U0b6LJ3/iyK5S9kJRaTe
41
+ pLiaWN0bfVKfjllDiIGknibVb63dDcY3fe0Dkhvld1927jyNxF1WW6LZZm6zNTfl
42
+ MrY=
43
+ -----END CERTIFICATE-----
44
+ -----BEGIN CERTIFICATE-----
45
+ MIIFqDCCA5CgAwIBAgIQHtOXCV/YtLNHcB6qvn9FszANBgkqhkiG9w0BAQwFADBl
46
+ MQswCQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYw
47
+ NAYDVQQDEy1NaWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5
48
+ IDIwMTcwHhcNMTkxMjE4MjI1MTIyWhcNNDIwNzE4MjMwMDIzWjBlMQswCQYDVQQG
49
+ EwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1N
50
+ aWNyb3NvZnQgUlNBIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwggIi
51
+ MA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKW76UM4wplZEWCpW9R2LBifOZ
52
+ Nt9GkMml7Xhqb0eRaPgnZ1AzHaGm++DlQ6OEAlcBXZxIQIJTELy/xztokLaCLeX0
53
+ ZdDMbRnMlfl7rEqUrQ7eS0MdhweSE5CAg2Q1OQT85elss7YfUJQ4ZVBcF0a5toW1
54
+ HLUX6NZFndiyJrDKxHBKrmCk3bPZ7Pw71VdyvD/IybLeS2v4I2wDwAW9lcfNcztm
55
+ gGTjGqwu+UcF8ga2m3P1eDNbx6H7JyqhtJqRjJHTOoI+dkC0zVJhUXAoP8XFWvLJ
56
+ jEm7FFtNyP9nTUwSlq31/niol4fX/V4ggNyhSyL71Imtus5Hl0dVe49FyGcohJUc
57
+ aDDv70ngNXtk55iwlNpNhTs+VcQor1fznhPbRiefHqJeRIOkpcrVE7NLP8TjwuaG
58
+ YaRSMLl6IE9vDzhTyzMMEyuP1pq9KsgtsRx9S1HKR9FIJ3Jdh+vVReZIZZ2vUpC6
59
+ W6IYZVcSn2i51BVrlMRpIpj0M+Dt+VGOQVDJNE92kKz8OMHY4Xu54+OU4UZpyw4K
60
+ UGsTuqwPN1q3ErWQgR5WrlcihtnJ0tHXUeOrO8ZV/R4O03QK0dqq6mm4lyiPSMQH
61
+ +FJDOvTKVTUssKZqwJz58oHhEmrARdlns87/I6KJClTUFLkqqNfs+avNJVgyeY+Q
62
+ W5g5xAgGwax/Dj0ApQIDAQABo1QwUjAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/
63
+ BAUwAwEB/zAdBgNVHQ4EFgQUCctZf4aycI8awznjwNnpv7tNsiMwEAYJKwYBBAGC
64
+ NxUBBAMCAQAwDQYJKoZIhvcNAQEMBQADggIBAKyvPl3CEZaJjqPnktaXFbgToqZC
65
+ LgLNFgVZJ8og6Lq46BrsTaiXVq5lQ7GPAJtSzVXNUzltYkyLDVt8LkS/gxCP81OC
66
+ gMNPOsduET/m4xaRhPtthH80dK2Jp86519efhGSSvpWhrQlTM93uCupKUY5vVau6
67
+ tZRGrox/2KJQJWVggEbbMwSubLWYdFQl3JPk+ONVFT24bcMKpBLBaYVu32TxU5nh
68
+ SnUgnZUP5NbcA/FZGOhHibJXWpS2qdgXKxdJ5XbLwVaZOjex/2kskZGT4d9Mozd2
69
+ TaGf+G0eHdP67Pv0RR0Tbc/3WeUiJ3IrhvNXuzDtJE3cfVa7o7P4NHmJweDyAmH3
70
+ pvwPuxwXC65B2Xy9J6P9LjrRk5Sxcx0ki69bIImtt2dmefU6xqaWM/5TkshGsRGR
71
+ xpl/j8nWZjEgQRCHLQzWwa80mMpkg/sTV9HB8Dx6jKXB/ZUhoHHBk2dxEuqPiApp
72
+ GWSZI1b7rCoucL5mxAyE7+WL85MB+GqQk2dLsmijtWKP6T+MejteD+eMuMZ87zf9
73
+ dOLITzNy4ZQ5bb0Sr74MTnB8G2+NszKTc0QWbej09+CVgI+WXTik9KveCjCHk9hN
74
+ AHFiRSdLOkKEW39lt2c0Ui2cFmuqqNh7o0JMcccMyj6D5KbvtwEwXlGjefVwaaZB
75
+ RA+GsCyRxj3qrg+E
76
+ -----END CERTIFICATE-----
77
+ -----BEGIN CERTIFICATE-----
78
+ MIICWTCCAd+gAwIBAgIQZvI9r4fei7FK6gxXMQHC7DAKBggqhkjOPQQDAzBlMQsw
79
+ CQYDVQQGEwJVUzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYD
80
+ VQQDEy1NaWNyb3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIw
81
+ MTcwHhcNMTkxMjE4MjMwNjQ1WhcNNDIwNzE4MjMxNjA0WjBlMQswCQYDVQQGEwJV
82
+ UzEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMTYwNAYDVQQDEy1NaWNy
83
+ b3NvZnQgRUNDIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5IDIwMTcwdjAQBgcq
84
+ hkjOPQIBBgUrgQQAIgNiAATUvD0CQnVBEyPNgASGAlEvaqiBYgtlzPbKnR5vSmZR
85
+ ogPZnZH6thaxjG7efM3beaYvzrvOcS/lpaso7GMEZpn4+vKTEAXhgShC48Zo9OYb
86
+ hGBKia/teQ87zvH2RPUBeMCjVDBSMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8E
87
+ BTADAQH/MB0GA1UdDgQWBBTIy5lycFIM+Oa+sgRXKSrPQhDtNTAQBgkrBgEEAYI3
88
+ FQEEAwIBADAKBggqhkjOPQQDAwNoADBlAjBY8k3qDPlfXu5gKcs68tvWMoQZP3zV
89
+ L8KxzJOuULsJMsbG7X7JNpQS5GiFBqIb0C8CMQCZ6Ra0DvpWSNSkMBaReNtUjGUB
90
+ iudQZsIxtzm6uBoiB078a1QWIP8rtedMDE2mT3M=
91
+ -----END CERTIFICATE-----
92
+ -----BEGIN CERTIFICATE-----
93
+ MIICPzCCAcWgAwIBAgIQBVVWvPJepDU1w6QP1atFcjAKBggqhkjOPQQDAzBhMQsw
94
+ CQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cu
95
+ ZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBHMzAe
96
+ Fw0xMzA4MDExMjAwMDBaFw0zODAxMTUxMjAwMDBaMGExCzAJBgNVBAYTAlVTMRUw
97
+ EwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5jb20x
98
+ IDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IEczMHYwEAYHKoZIzj0CAQYF
99
+ K4EEACIDYgAE3afZu4q4C/sLfyHS8L6+c/MzXRq8NOrexpu80JX28MzQC7phW1FG
100
+ fp4tn+6OYwwX7Adw9c+ELkCDnOg/QW07rdOkFFk2eJ0DQ+4QE2xy3q6Ip6FrtUPO
101
+ Z9wj/wMco+I+o0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjAd
102
+ BgNVHQ4EFgQUs9tIpPmhxdiuNkHMEWNpYim8S8YwCgYIKoZIzj0EAwMDaAAwZQIx
103
+ AK288mw/EkrRLTnDCgmXc/SINoyIJ7vmiI1Qhadj+Z4y3maTD/HMsQmP3Wyr+mt/
104
+ oAIwOWZbwmSNuJ5Q3KjVSaLtx9zRSX8XAbjIho9OjIgrqJqpisXRAL34VOKa5Vt8
105
+ sycX
106
+ -----END CERTIFICATE-----
107
+ -----BEGIN CERTIFICATE-----
108
+ MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBh
109
+ MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
110
+ d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
111
+ QTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAwMDAwMDBaMGExCzAJBgNVBAYTAlVT
112
+ MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3dy5kaWdpY2VydC5j
113
+ b20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkqhkiG
114
+ 9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsB
115
+ CSDMAZOnTjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97
116
+ nh6Vfe63SKMI2tavegw5BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt
117
+ 43C/dxC//AH2hdmoRBBYMql1GNXRor5H4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7P
118
+ T19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y7vrTC0LUq7dBMtoM1O/4
119
+ gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQABo2MwYTAO
120
+ BgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbR
121
+ TLtm8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUw
122
+ DQYJKoZIhvcNAQEFBQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/Esr
123
+ hMAtudXH/vTBH1jLuG2cenTnmCmrEbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg
124
+ 06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIttep3Sp+dWOIrWcBAI+0tKIJF
125
+ PnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886UAb3LujEV0ls
126
+ YSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk
127
+ CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4=
128
+ -----END CERTIFICATE-----
@@ -0,0 +1,31 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ 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
31
+ -----END CERTIFICATE-----
@@ -0,0 +1,23 @@
1
+ -----BEGIN CERTIFICATE-----
2
+ MIIDxDCCAqygAwIBAgIUbLxMod62P2ktCiAkxnKJwtE9VPYwDQYJKoZIhvcNAQEL
3
+ BQAwazELMAkGA1UEBhMCVVMxEDAOBgNVBAgMB0RlbHdhcmUxEzARBgNVBAcMCk5l
4
+ dyBDYXN0bGUxFTATBgNVBAoMDFN1cGFiYXNlIEluYzEeMBwGA1UEAwwVU3VwYWJh
5
+ c2UgUm9vdCAyMDIxIENBMB4XDTIxMDQyODEwNTY1M1oXDTMxMDQyNjEwNTY1M1ow
6
+ azELMAkGA1UEBhMCVVMxEDAOBgNVBAgMB0RlbHdhcmUxEzARBgNVBAcMCk5ldyBD
7
+ YXN0bGUxFTATBgNVBAoMDFN1cGFiYXNlIEluYzEeMBwGA1UEAwwVU3VwYWJhc2Ug
8
+ Um9vdCAyMDIxIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqQXW
9
+ QyHOB+qR2GJobCq/CBmQ40G0oDmCC3mzVnn8sv4XNeWtE5XcEL0uVih7Jo4Dkx1Q
10
+ DmGHBH1zDfgs2qXiLb6xpw/CKQPypZW1JssOTMIfQppNQ87K75Ya0p25Y3ePS2t2
11
+ GtvHxNjUV6kjOZjEn2yWEcBdpOVCUYBVFBNMB4YBHkNRDa/+S4uywAoaTWnCJLUi
12
+ cvTlHmMw6xSQQn1UfRQHk50DMCEJ7Cy1RxrZJrkXXRP3LqQL2ijJ6F4yMfh+Gyb4
13
+ O4XajoVj/+R4GwywKYrrS8PrSNtwxr5StlQO8zIQUSMiq26wM8mgELFlS/32Uclt
14
+ NaQ1xBRizkzpZct9DwIDAQABo2AwXjALBgNVHQ8EBAMCAQYwHQYDVR0OBBYEFKjX
15
+ uXY32CztkhImng4yJNUtaUYsMB8GA1UdIwQYMBaAFKjXuXY32CztkhImng4yJNUt
16
+ aUYsMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAB8spzNn+4VU
17
+ tVxbdMaX+39Z50sc7uATmus16jmmHjhIHz+l/9GlJ5KqAMOx26mPZgfzG7oneL2b
18
+ VW+WgYUkTT3XEPFWnTp2RJwQao8/tYPXWEJDc0WVQHrpmnWOFKU/d3MqBgBm5y+6
19
+ jB81TU/RG2rVerPDWP+1MMcNNy0491CTL5XQZ7JfDJJ9CCmXSdtTl4uUQnSuv/Qx
20
+ Cea13BX2ZgJc7Au30vihLhub52De4P/4gonKsNHYdbWjg7OWKwNv/zitGDVDB9Y2
21
+ CMTyZKG3XEu5Ghl1LEnI3QmEKsqaCLv12BnVjbkSeZsMnevJPs1Ye6TjjJwdik5P
22
+ o/bKiIz+Fq8=
23
+ -----END CERTIFICATE-----
@@ -0,0 +1 @@
1
+ export declare const DEFAULT_CERTS: string;
package/dist/certs.js ADDED
@@ -0,0 +1,15 @@
1
+ import * as fs from 'fs/promises';
2
+ import { resolve } from 'path';
3
+ export const DEFAULT_CERTS = await loadDefaultCertificates();
4
+ async function loadDefaultCertificates() {
5
+ const dir = new URL('../ca', import.meta.url).pathname;
6
+ const files = await fs.readdir(dir);
7
+ let sum = '';
8
+ for (let file of files) {
9
+ if (file.endsWith('.pem')) {
10
+ sum += (await fs.readFile(resolve(dir, file), 'utf-8')) + '\n';
11
+ }
12
+ }
13
+ return sum;
14
+ }
15
+ //# sourceMappingURL=certs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"certs.js","sourceRoot":"","sources":["../src/certs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAE/B,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,uBAAuB,EAAE,CAAC;AAE7D,KAAK,UAAU,uBAAuB;IACpC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;IACvD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,IAAI,IAAI,IAAI,KAAK,EAAE;QACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;YACzB,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;SAChE;KACF;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './pgwire.js';
2
+ export * from './certs.js';
3
+ export * from './util.js';
4
+ export * from './metrics.js';
5
+ export * from './pgwire_types.js';
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export * from './pgwire.js';
2
+ export * from './certs.js';
3
+ export * from './util.js';
4
+ export * from './metrics.js';
5
+ export * from './pgwire_types.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface MetricsRecorder {
2
+ addBytesRead(bytes: number): void;
3
+ }
4
+ /**
5
+ * Configure a metrics recorder to capture global metrics.
6
+ */
7
+ export declare function setMetricsRecorder(recorder: MetricsRecorder): void;
8
+ export declare function recordBytesRead(bytes: number): void;
@@ -0,0 +1,11 @@
1
+ let metricsRecorder;
2
+ /**
3
+ * Configure a metrics recorder to capture global metrics.
4
+ */
5
+ export function setMetricsRecorder(recorder) {
6
+ metricsRecorder = recorder;
7
+ }
8
+ export function recordBytesRead(bytes) {
9
+ metricsRecorder?.addBytesRead(bytes);
10
+ }
11
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAIA,IAAI,eAA4C,CAAC;AAEjD;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAyB;IAC1D,eAAe,GAAG,QAAQ,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAa;IAC3C,eAAe,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from 'pgwire/mod.js';
2
+ import type * as pgwire from 'pgwire/mod.js';
3
+ import './pgwire_node.js';
4
+ export declare function pgconnect(...options: pgwire.PgConnectOptions[]): Promise<pgwire.PgConnection>;
package/dist/pgwire.js ADDED
@@ -0,0 +1,10 @@
1
+ // The pgwire module system doesn't play nice with node.
2
+ // This works around it, and provides a proper export.
3
+ // mod.js (mod.d.ts) contains the types, but the implementation is for Deno.
4
+ export * from 'pgwire/mod.js';
5
+ import './pgwire_node.js';
6
+ export async function pgconnect(...options) {
7
+ const pgwireImport = await import('pgwire/mod.js');
8
+ return await pgwireImport.pgconnect(...options);
9
+ }
10
+ //# sourceMappingURL=pgwire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pgwire.js","sourceRoot":"","sources":["../src/pgwire.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,sDAAsD;AAEtD,4EAA4E;AAC5E,cAAc,eAAe,CAAC;AAE9B,OAAO,kBAAkB,CAAC;AAE1B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAG,OAAkC;IACnE,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACnD,OAAO,MAAM,YAAY,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,CAAC;AAClD,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,164 @@
1
+ // Fork of pgwire/index.js, customized to handle additional TLS options
2
+ // Based on the version in commit 9532a395d6fa03a59c2231f0ec690806c90bd338
3
+ // Modifications marked with `START POWERSYNC ...`
4
+ import net from 'net';
5
+ import tls from 'tls';
6
+ import { createHash, pbkdf2 as _pbkdf2, randomFillSync } from 'crypto';
7
+ import { once } from 'events';
8
+ import { promisify } from 'util';
9
+ import { _net, SaslScramSha256 } from 'pgwire/mod.js';
10
+ import { recordBytesRead } from './metrics.js';
11
+ // START POWERSYNC
12
+ // pgwire doesn't natively support configuring timeouts, but we just hardcode a default.
13
+ // Timeout idle connections after 6 minutes (we ping at least every 5 minutes).
14
+ const POWERSYNC_SOCKET_DEFAULT_TIMEOUT = 360000;
15
+ // Timeout for the initial connection (pre-TLS)
16
+ // Must be less than the timeout for a HTTP request
17
+ const POWERSYNC_SOCKET_CONNECT_TIMEOUT = 20000;
18
+ // END POWERSYNC
19
+ const pbkdf2 = promisify(_pbkdf2);
20
+ Object.assign(SaslScramSha256.prototype, {
21
+ _b64encode(bytes) {
22
+ return Buffer.from(bytes).toString('base64');
23
+ },
24
+ _b64decode(b64) {
25
+ return Uint8Array.from(Buffer.from(b64, 'base64'));
26
+ },
27
+ _randomBytes(n) {
28
+ return randomFillSync(new Uint8Array(n));
29
+ },
30
+ async _hash(val) {
31
+ return Uint8Array.from(createHash('sha256').update(val).digest());
32
+ },
33
+ async _hi(pwd, salt, iterations) {
34
+ const buf = await pbkdf2(pwd, salt, iterations, 32, 'sha256');
35
+ return Uint8Array.from(buf);
36
+ }
37
+ });
38
+ Object.assign(_net, {
39
+ connect({ hostname, port }) {
40
+ return SocketAdapter.connect(hostname, port);
41
+ },
42
+ reconnectable(err) {
43
+ return ['ENOTFOUND', 'ECONNREFUSED', 'ECONNRESET'].includes(err?.code);
44
+ },
45
+ startTls(sockadapt, { hostname, caCerts }) {
46
+ return sockadapt.startTls(hostname, caCerts);
47
+ },
48
+ read(sockadapt, out) {
49
+ return sockadapt.read(out);
50
+ },
51
+ write(sockadapt, data) {
52
+ return sockadapt.write(data);
53
+ },
54
+ closeNullable(sockadapt) {
55
+ if (!sockadapt)
56
+ return;
57
+ return sockadapt.close();
58
+ }
59
+ });
60
+ class SocketAdapter {
61
+ static async connect(host, port) {
62
+ // START POWERSYNC
63
+ // Custom timeout handling
64
+ const socket = net.connect({ host, port, timeout: POWERSYNC_SOCKET_DEFAULT_TIMEOUT });
65
+ try {
66
+ const timeout = setTimeout(() => {
67
+ socket.destroy(new Error(`Timeout while connecting to ${host}:${port}`));
68
+ }, POWERSYNC_SOCKET_CONNECT_TIMEOUT);
69
+ await once(socket, 'connect');
70
+ clearTimeout(timeout);
71
+ return new this(socket);
72
+ }
73
+ catch (e) {
74
+ socket.destroy();
75
+ throw e;
76
+ }
77
+ // END POWERSYNC
78
+ }
79
+ constructor(socket) {
80
+ this._readResume = Boolean; // noop
81
+ this._writeResume = Boolean; // noop
82
+ this._readPauseAsync = (resolve) => (this._readResume = resolve);
83
+ this._writePauseAsync = (resolve) => (this._writeResume = resolve);
84
+ this._error = null;
85
+ this._socket = socket;
86
+ this._socket.on('readable', (_) => this._readResume());
87
+ this._socket.on('end', (_) => this._readResume());
88
+ // START POWERSYNC
89
+ // Custom timeout handling
90
+ this._socket.on('timeout', (_) => {
91
+ this._socket.destroy(new Error('Socket idle timeout'));
92
+ });
93
+ // END POWERSYNC
94
+ this._socket.on('error', (error) => {
95
+ this._error = error;
96
+ this._readResume();
97
+ this._writeResume();
98
+ });
99
+ }
100
+ async startTls(host, ca) {
101
+ // START POWERSYNC CUSTOM OPTIONS HANDLING
102
+ if (!Array.isArray(ca) && typeof ca[0] == 'object') {
103
+ throw new Error('Invalid PowerSync TLS options');
104
+ }
105
+ const tlsOptions = ca[0];
106
+ // https://nodejs.org/docs/latest-v14.x/api/tls.html#tls_tls_connect_options_callback
107
+ const socket = this._socket;
108
+ const tlsSocket = tls.connect({ socket, host, ...tlsOptions });
109
+ // END POWERSYNC CUSTOM OPTIONS HANDLING
110
+ await once(tlsSocket, 'secureConnect');
111
+ // TODO check tlsSocket.authorized
112
+ // if secure connection succeeded then we take underlying socket ownership,
113
+ // otherwise underlying socket should be closed outside.
114
+ tlsSocket.on('close', (_) => socket.destroy());
115
+ return new this.constructor(tlsSocket);
116
+ }
117
+ /** @param {Uint8Array} out */
118
+ async read(out) {
119
+ let buf;
120
+ for (;;) {
121
+ if (this._error)
122
+ throw this._error; // TODO callstack
123
+ if (this._socket.readableEnded)
124
+ return null;
125
+ buf = this._socket.read();
126
+ if (buf?.length)
127
+ break;
128
+ if (!buf)
129
+ await new Promise(this._readPauseAsync);
130
+ }
131
+ if (buf.length > out.length) {
132
+ out.set(buf.subarray(0, out.length));
133
+ this._socket.unshift(buf.subarray(out.length));
134
+ // POWERSYNC: Add metrics
135
+ recordBytesRead(out.length);
136
+ return out.length;
137
+ }
138
+ out.set(buf);
139
+ // POWERSYNC: Add metrics
140
+ recordBytesRead(buf.length);
141
+ return buf.length;
142
+ }
143
+ async write(data) {
144
+ // TODO assert Uint8Array
145
+ // TODO need to copy data?
146
+ if (this._error)
147
+ throw this._error; // TODO callstack
148
+ const p = new Promise(this._writePauseAsync);
149
+ this._socket.write(data, this._writeResume);
150
+ await p;
151
+ if (this._error)
152
+ throw this._error; // TODO callstack
153
+ return data.length;
154
+ }
155
+ // async closeWrite() {
156
+ // if (this._error) throw this._error; // TODO callstack
157
+ // const socket_end = promisify(cb => this._socket.end(cb));
158
+ // await socket_end();
159
+ // }
160
+ close() {
161
+ this._socket.destroy(Error('socket destroyed'));
162
+ }
163
+ }
164
+ //# sourceMappingURL=pgwire_node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pgwire_node.js","sourceRoot":"","sources":["../src/pgwire_node.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { PgoutputRelation } from 'pgwire/mod.js';
2
+ import { JsonContainer } from '@powersync/service-jsonbig';
3
+ export declare class PgType {
4
+ static decode(text: string, typeOid: number): any;
5
+ static _elemTypeOid(arrayTypeOid: number): 25 | 2950 | 1043 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 26 | 27 | 28 | 29 | 30 | 71 | 75 | 81 | 83 | 114 | 142 | 5069 | 600 | 601 | 602 | 603 | 604 | 628 | 700 | 701 | 705 | 718 | 790 | 829 | 869 | 650 | 774 | 1033 | 1042 | 1082 | 1083 | 1114 | 1184 | 1186 | 1266 | 1560 | 1562 | 1700 | 1790 | 2202 | 2203 | 2204 | 2205 | 4191 | 2206 | 4096 | 4089 | 3220 | 3614 | 3642 | 3615 | 3734 | 3769 | 3802 | 4072 | undefined;
6
+ static _decodeArray(text: string, elemTypeOid: number): any;
7
+ static _decodeBytea(text: string): Uint8Array;
8
+ static _encodeBytea(bytes: Uint8Array): string;
9
+ }
10
+ /**
11
+ * We need a high level of control over how values are decoded, to make sure there is no loss
12
+ * of precision in the process.
13
+ */
14
+ export declare function decodeTuple(relation: PgoutputRelation, tupleRaw: Record<string, any>): DatabaseInputRow;
15
+ /**
16
+ * A value as received from the database.
17
+ */
18
+ export type DatabaseInputValue = SqliteValue | boolean | DatabaseInputValue[] | JsonContainer | {
19
+ [key: string]: DatabaseInputValue;
20
+ };
21
+ /**
22
+ * A value supported by the SQLite type system.
23
+ */
24
+ export type SqliteValue = number | string | null | bigint | Uint8Array;
25
+ /**
26
+ * Database input row. Can contain nested arrays and objects.
27
+ */
28
+ export type DatabaseInputRow = {
29
+ [column: string]: DatabaseInputValue;
30
+ };