@chilkat/react-native 11.6.1 → 11.7.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/chilkat-checksums.json +4 -4
- package/cpp/HybridAi.cpp +12 -12
- package/cpp/HybridAi.hpp +6 -6
- package/cpp/HybridDns.cpp +7 -7
- package/cpp/HybridDns.hpp +3 -3
- package/cpp/HybridFormats.cpp +100 -0
- package/cpp/HybridFormats.hpp +39 -0
- package/cpp/HybridHashtable.cpp +4 -4
- package/cpp/HybridHashtable.hpp +2 -2
- package/cpp/HybridHttp.cpp +9 -0
- package/cpp/HybridHttp.hpp +2 -0
- package/cpp/HybridHttpCurl.cpp +17 -0
- package/cpp/HybridHttpCurl.hpp +3 -0
- package/cpp/HybridPdf.cpp +152 -0
- package/cpp/HybridPdf.hpp +36 -0
- package/cpp/HybridSocket.cpp +56 -0
- package/cpp/HybridSocket.hpp +13 -0
- package/cpp/HybridSpider.cpp +14 -14
- package/cpp/HybridSpider.hpp +6 -6
- package/cpp/HybridStringBuilder.cpp +8 -0
- package/cpp/HybridStringBuilder.hpp +2 -0
- package/cpp/HybridZipEntry.cpp +8 -8
- package/cpp/HybridZipEntry.hpp +4 -4
- package/cpp/runtime/ProgLang.hpp +1 -1
- package/nitro.json +1 -0
- package/nitrogen/generated/android/ChilkatRN+autolinking.cmake +1 -0
- package/nitrogen/generated/android/ChilkatRNOnLoad.cpp +10 -0
- package/nitrogen/generated/ios/ChilkatRNAutolinking.mm +10 -0
- package/nitrogen/generated/shared/c++/HybridAiSpec.hpp +3 -3
- package/nitrogen/generated/shared/c++/HybridDnsSpec.hpp +2 -2
- package/nitrogen/generated/shared/c++/HybridFormatsSpec.cpp +32 -0
- package/nitrogen/generated/shared/c++/HybridFormatsSpec.hpp +75 -0
- package/nitrogen/generated/shared/c++/HybridHashtableSpec.hpp +1 -1
- package/nitrogen/generated/shared/c++/HybridHttpCurlSpec.cpp +2 -0
- package/nitrogen/generated/shared/c++/HybridHttpCurlSpec.hpp +2 -0
- package/nitrogen/generated/shared/c++/HybridHttpSpec.cpp +1 -0
- package/nitrogen/generated/shared/c++/HybridHttpSpec.hpp +1 -0
- package/nitrogen/generated/shared/c++/HybridPdfSpec.cpp +19 -0
- package/nitrogen/generated/shared/c++/HybridPdfSpec.hpp +19 -0
- package/nitrogen/generated/shared/c++/HybridSocketSpec.cpp +10 -0
- package/nitrogen/generated/shared/c++/HybridSocketSpec.hpp +10 -0
- package/nitrogen/generated/shared/c++/HybridSpiderSpec.hpp +4 -4
- package/nitrogen/generated/shared/c++/HybridStringBuilderSpec.cpp +1 -0
- package/nitrogen/generated/shared/c++/HybridStringBuilderSpec.hpp +1 -0
- package/nitrogen/generated/shared/c++/HybridZipEntrySpec.hpp +2 -2
- package/package.json +1 -1
- package/src/index.ts +3 -0
- package/src/specs/Ai.nitro.ts +3 -12
- package/src/specs/Cert.nitro.ts +24 -6
- package/src/specs/CodeSign.nitro.ts +88 -20
- package/src/specs/Compression.nitro.ts +9 -1
- package/src/specs/Dns.nitro.ts +2 -8
- package/src/specs/FileAccess.nitro.ts +12 -2
- package/src/specs/Formats.nitro.ts +170 -0
- package/src/specs/Hashtable.nitro.ts +1 -4
- package/src/specs/Http.nitro.ts +39 -3
- package/src/specs/HttpCurl.nitro.ts +119 -3
- package/src/specs/Jwe.nitro.ts +12 -5
- package/src/specs/MailMan.nitro.ts +7 -0
- package/src/specs/Pdf.nitro.ts +1482 -11
- package/src/specs/Socket.nitro.ts +181 -2
- package/src/specs/Spider.nitro.ts +4 -16
- package/src/specs/Ssh.nitro.ts +31 -13
- package/src/specs/StringBuilder.nitro.ts +55 -0
- package/src/specs/ZipEntry.nitro.ts +2 -8
|
@@ -216,6 +216,15 @@ export interface Socket extends HybridObject<{ ios: 'c++', android: 'c++' }> {
|
|
|
216
216
|
*
|
|
217
217
|
* | 125 | | An SSL 2.0 connection attempt was received and rejected. |
|
|
218
218
|
*
|
|
219
|
+
* | 129 | | The client and server share no ALPN protocol. (Added in 11.7.0. See `AlpnProtocols`.)
|
|
220
|
+
* |
|
|
221
|
+
*
|
|
222
|
+
* | 130 | | The client's SNI hostname matched no server certificate and `RequireSniMatch` is set.
|
|
223
|
+
* (Added in 11.7.0.) |
|
|
224
|
+
*
|
|
225
|
+
* | 131 | | The client offered a session ticket for a session that used the extended master
|
|
226
|
+
* secret, but its ClientHello did not offer that extension. (Added in 11.7.0.) |
|
|
227
|
+
*
|
|
219
228
|
* This property is read-only.
|
|
220
229
|
*/
|
|
221
230
|
readonly acceptFailReason: number
|
|
@@ -1252,8 +1261,23 @@ export interface Socket extends HybridObject<{ ios: 'c++', android: 'c++' }> {
|
|
|
1252
1261
|
uncommonOptions: string
|
|
1253
1262
|
|
|
1254
1263
|
/**
|
|
1255
|
-
*
|
|
1256
|
-
*
|
|
1264
|
+
* A single application-layer protocol name for the TLS ALPN extension, such as `h2` or
|
|
1265
|
+
* `http/1.1`. Leave it empty when ALPN is not required.
|
|
1266
|
+
*
|
|
1267
|
+
* Setting this property sets the ALPN list to this one protocol, replacing anything previously
|
|
1268
|
+
* set by it or by `AlpnProtocols`. Setting an empty string clears the list. To offer or support
|
|
1269
|
+
* more than one protocol, use `AlpnProtocols` instead.
|
|
1270
|
+
*
|
|
1271
|
+
* Getting this property returns the protocol that was negotiated for the connection. Before a
|
|
1272
|
+
* handshake has completed, and on a connection where ALPN was not negotiated, it returns the
|
|
1273
|
+
* first protocol in the ALPN list, which for an application that set a single protocol is the
|
|
1274
|
+
* protocol it set.
|
|
1275
|
+
*
|
|
1276
|
+
* **Changed in 11.7.0:** After a handshake this property returns the negotiated protocol rather
|
|
1277
|
+
* than the configured one. For a connection that negotiated the protocol that was set – which is
|
|
1278
|
+
* every case prior to 11.7.0, because only one protocol could be offered – the value is
|
|
1279
|
+
* unchanged. Prior to 11.7.0 a TLS server ignored ALPN entirely, and a TLS client could offer
|
|
1280
|
+
* only one protocol.
|
|
1257
1281
|
*
|
|
1258
1282
|
* **Note:** ALPN negotiation does not implement the selected application protocol. The
|
|
1259
1283
|
* application must still speak that protocol over the established TLS connection.
|
|
@@ -1268,6 +1292,10 @@ export interface Socket extends HybridObject<{ ios: 'c++', android: 'c++' }> {
|
|
|
1268
1292
|
*
|
|
1269
1293
|
* **Scope:** This property changes only the SNI name in the TLS handshake. It does not change the
|
|
1270
1294
|
* DNS lookup, TCP destination, or any hostname carried by the application protocol.
|
|
1295
|
+
*
|
|
1296
|
+
* **Added in 11.7.0 – server side:** On the socket returned by `AcceptNext`, this property is the
|
|
1297
|
+
* hostname the client asked for, or empty if the client sent no SNI. Use `AddSslServerCert` to
|
|
1298
|
+
* present a different certificate per hostname.
|
|
1271
1299
|
*/
|
|
1272
1300
|
sniHostname: string
|
|
1273
1301
|
|
|
@@ -1284,6 +1312,77 @@ export interface Socket extends HybridObject<{ ios: 'c++', android: 'c++' }> {
|
|
|
1284
1312
|
*/
|
|
1285
1313
|
readonly numBytesAvailable: number
|
|
1286
1314
|
|
|
1315
|
+
/**
|
|
1316
|
+
* The list of ALPN (Application-Layer Protocol Negotiation) protocols, in preference order, as
|
|
1317
|
+
* JSON. On a TLS client this is the set of protocols offered. On a TLS listener it is the set of
|
|
1318
|
+
* protocols the server supports.
|
|
1319
|
+
*
|
|
1320
|
+
* Setting this property accepts either a JSON array, such as `["h2","http/1.1"]`, or a JSON
|
|
1321
|
+
* object with a `protocols` member, such as `{"protocols":["h2","http/1.1"]}`. Setting an empty
|
|
1322
|
+
* string clears the list. Getting this property returns the object form, so a value read from it
|
|
1323
|
+
* can be passed back to it unchanged.
|
|
1324
|
+
*
|
|
1325
|
+
* This property and `AlpnProtocol` address the same underlying list. Setting `AlpnProtocol`
|
|
1326
|
+
* replaces the list with that single protocol id, and setting this property replaces the whole
|
|
1327
|
+
* list. An application normally uses one or the other.
|
|
1328
|
+
*
|
|
1329
|
+
* An object that leaves the list empty does not use ALPN at all.
|
|
1330
|
+
*
|
|
1331
|
+
* **Server behavior when nothing matches:** A TLS server that sets this list and shares no
|
|
1332
|
+
* protocol with the client refuses the connection with the `no_application_protocol` alert, as
|
|
1333
|
+
* RFC 7301 requires, and `AcceptFailReason` is set to 129. A server that leaves the list empty
|
|
1334
|
+
* ignores ALPN and accepts the connection.
|
|
1335
|
+
*
|
|
1336
|
+
* **Note:** ALPN negotiation does not implement the selected application protocol. The
|
|
1337
|
+
* application must still speak that protocol over the established TLS connection.
|
|
1338
|
+
*/
|
|
1339
|
+
alpnProtocols: string
|
|
1340
|
+
|
|
1341
|
+
/**
|
|
1342
|
+
* Controls what a TLS server does when the client's SNI (Server Name Indication) hostname matches
|
|
1343
|
+
* no certificate added by `AddSslServerCert`. The default is `false`.
|
|
1344
|
+
*
|
|
1345
|
+
* When `false`, the connection is served the default certificate, which is the one passed to
|
|
1346
|
+
* `InitSslServer`. When `true`, the handshake is refused with the `unrecognized_name` alert and
|
|
1347
|
+
* `AcceptFailReason` is set to 130.
|
|
1348
|
+
*
|
|
1349
|
+
* **Applies to the listener:** Set this property on the listening socket before `AcceptNext`. It
|
|
1350
|
+
* has no effect on a client-side connection.
|
|
1351
|
+
*/
|
|
1352
|
+
requireSniMatch: boolean
|
|
1353
|
+
|
|
1354
|
+
/**
|
|
1355
|
+
* The number of seconds a session ticket issued by this TLS server remains valid. The default is
|
|
1356
|
+
* `7200` (2 hours). The maximum is `604800` (7 days, the limit set by RFC 8446); a larger value
|
|
1357
|
+
* is reduced to that maximum. Set it to `0` to issue no tickets, which disables session
|
|
1358
|
+
* resumption for this server.
|
|
1359
|
+
*
|
|
1360
|
+
* Applies to both TLS 1.2 session tickets (RFC 5077) and TLS 1.3 session tickets (RFC 8446). A
|
|
1361
|
+
* resuming client skips the certificate exchange and the server's signature, so a resumed
|
|
1362
|
+
* handshake is both smaller and faster than a full one.
|
|
1363
|
+
*
|
|
1364
|
+
* **No configuration required:** A random ticket key is generated automatically, so resumption
|
|
1365
|
+
* works for the life of a listener without calling `SetTlsTicketKey`. That method is only needed
|
|
1366
|
+
* when tickets must stay valid across processes or restarts.
|
|
1367
|
+
*/
|
|
1368
|
+
tlsTicketLifetimeSeconds: number
|
|
1369
|
+
|
|
1370
|
+
/**
|
|
1371
|
+
* Returns `true` when this connection was resumed from a session ticket instead of being fully
|
|
1372
|
+
* handshaked; otherwise returns `false`.
|
|
1373
|
+
*
|
|
1374
|
+
* Read it on the socket returned by `AcceptNext` for a server-side connection, or after `Connect`
|
|
1375
|
+
* for a client-side connection. It applies to both TLS 1.2 and TLS 1.3 resumption.
|
|
1376
|
+
*
|
|
1377
|
+
* **A resumed connection exchanges no certificates:** Neither side sends a Certificate message
|
|
1378
|
+
* when the session is resumed. On the server, the client certificate from the original handshake
|
|
1379
|
+
* is restored, so `GetRcvdClientCert` and `NumReceivedClientCerts` still work, but only the
|
|
1380
|
+
* client's own certificate is restored and not the rest of its chain.
|
|
1381
|
+
*
|
|
1382
|
+
* This property is read-only.
|
|
1383
|
+
*/
|
|
1384
|
+
readonly tlsSessionResumed: boolean
|
|
1385
|
+
|
|
1287
1386
|
// ---- Methods ----
|
|
1288
1387
|
|
|
1289
1388
|
/**
|
|
@@ -3308,6 +3407,86 @@ export interface Socket extends HybridObject<{ ios: 'c++', android: 'c++' }> {
|
|
|
3308
3407
|
*/
|
|
3309
3408
|
sshNewChannelAsync(hostname: string, port: number, ssl: boolean, maxWaitMs: number, channel: Socket): Promise<void>
|
|
3310
3409
|
|
|
3410
|
+
/**
|
|
3411
|
+
* Adds a server certificate to be presented when a TLS client's SNI (Server Name Indication)
|
|
3412
|
+
* hostname matches `hostname`. This allows one listening socket to serve more than one hostname,
|
|
3413
|
+
* each with its own certificate. The certificate must have access to its corresponding private
|
|
3414
|
+
* key.
|
|
3415
|
+
*
|
|
3416
|
+
* `hostname` may be an exact name such as `www.example.com`, a leading wildcard such as
|
|
3417
|
+
* `*.example.com`, or an empty string to add a default certificate. Call this method once for
|
|
3418
|
+
* each certificate.
|
|
3419
|
+
*
|
|
3420
|
+
* The certificate for a connection is chosen after the client's ClientHello has been read, in
|
|
3421
|
+
* this order, with the first match winning:
|
|
3422
|
+
*
|
|
3423
|
+
* - an exact, case-insensitive match on the hostname;
|
|
3424
|
+
*
|
|
3425
|
+
* - a leading-wildcard match, where `*.example.com` matches `a.example.com` but neither
|
|
3426
|
+
* `example.com` nor `a.b.example.com`;
|
|
3427
|
+
*
|
|
3428
|
+
* - a default certificate added by this method with an empty hostname;
|
|
3429
|
+
*
|
|
3430
|
+
* - the certificate passed to `InitSslServer`.
|
|
3431
|
+
*
|
|
3432
|
+
* A client that sends no SNI hostname goes directly to step 3. Two certificates may be added for
|
|
3433
|
+
* the same hostname, in which case the first one added is used.
|
|
3434
|
+
*
|
|
3435
|
+
* **Call order does not matter:** Unlike `AddSslAcceptableClientCaDn`, this method may be called
|
|
3436
|
+
* before or after `InitSslServer`, and also while the socket is already listening.
|
|
3437
|
+
* `InitSslServer` is still required: it installs the default certificate and configures the
|
|
3438
|
+
* socket for server-side TLS.
|
|
3439
|
+
*
|
|
3440
|
+
* **The certificate object may be released:** This method keeps its own reference to the
|
|
3441
|
+
* certificate, so the application may discard `cert` as soon as the call returns.
|
|
3442
|
+
*
|
|
3443
|
+
* The hostname the client asked for can be read from the `SniHostname` property of the socket
|
|
3444
|
+
* returned by `AcceptNext`. To refuse a connection whose requested hostname matches nothing, set
|
|
3445
|
+
* `RequireSniMatch`.
|
|
3446
|
+
*
|
|
3447
|
+
* Returns `true` for success, `false` for failure. Failure includes a certificate with no
|
|
3448
|
+
* accessible private key, which is reported here rather than during a later handshake.
|
|
3449
|
+
*
|
|
3450
|
+
* @throws Error if the call fails (the message names the reason); the full log is in
|
|
3451
|
+
* {@link Socket.lastErrorText}.
|
|
3452
|
+
*/
|
|
3453
|
+
addSslServerCert(cert: Cert, hostname: string): void
|
|
3454
|
+
|
|
3455
|
+
/**
|
|
3456
|
+
* Removes every certificate added by `AddSslServerCert`.
|
|
3457
|
+
*
|
|
3458
|
+
* The certificate installed by `InitSslServer` is not affected and remains the default for
|
|
3459
|
+
* connections whose SNI hostname matches nothing.
|
|
3460
|
+
*/
|
|
3461
|
+
clearSslServerCerts(): void
|
|
3462
|
+
|
|
3463
|
+
/**
|
|
3464
|
+
* Sets the key this TLS server uses to encrypt and decrypt session tickets. `binKey` must contain
|
|
3465
|
+
* exactly 32 bytes.
|
|
3466
|
+
*
|
|
3467
|
+
* This is only needed so that tickets issued by one server process remain valid in another
|
|
3468
|
+
* process, or after a restart. A random key is generated automatically otherwise, which makes
|
|
3469
|
+
* session resumption work for the life of one listener with no configuration at all. Every server
|
|
3470
|
+
* instance that should accept one another's tickets must be given the same key.
|
|
3471
|
+
*
|
|
3472
|
+
* Calling this method a second time with a different key rotates the key: new tickets are issued
|
|
3473
|
+
* under the new key, and tickets issued under the key it replaces are still accepted until they
|
|
3474
|
+
* expire. Calling it with the key already in use does nothing, so re-reading an unchanged
|
|
3475
|
+
* configuration is harmless.
|
|
3476
|
+
*
|
|
3477
|
+
* **Protect this key:** It encrypts the resumption secret of every session whose ticket it
|
|
3478
|
+
* issued. Anyone holding it can decrypt those tickets. Store it as securely as a private key, and
|
|
3479
|
+
* rotate it periodically.
|
|
3480
|
+
*
|
|
3481
|
+
* Set `TlsTicketLifetimeSeconds` to `0` to issue no tickets at all.
|
|
3482
|
+
*
|
|
3483
|
+
* Returns `true` for success, `false` for failure.
|
|
3484
|
+
*
|
|
3485
|
+
* @throws Error if the call fails (the message names the reason); the full log is in
|
|
3486
|
+
* {@link Socket.lastErrorText}.
|
|
3487
|
+
*/
|
|
3488
|
+
setTlsTicketKey(binKey: BinData): void
|
|
3489
|
+
|
|
3311
3490
|
// ---- Events (ReactNativeGen_DESIGN.md §6) ----
|
|
3312
3491
|
|
|
3313
3492
|
/**
|
|
@@ -438,22 +438,16 @@ export interface Spider extends HybridObject<{ ios: 'c++', android: 'c++' }> {
|
|
|
438
438
|
*
|
|
439
439
|
* This call blocks the JavaScript thread until Chilkat returns; from UI code prefer
|
|
440
440
|
* {@link Spider.crawlNextAsync}.
|
|
441
|
-
*
|
|
442
|
-
* @throws Error if the call fails (the message names the reason); the full log is in
|
|
443
|
-
* {@link Spider.lastErrorText}.
|
|
444
441
|
*/
|
|
445
|
-
crawlNext():
|
|
442
|
+
crawlNext(): boolean
|
|
446
443
|
|
|
447
444
|
/**
|
|
448
445
|
* Asynchronous form of {@link Spider.crawlNext}: the same call on a native worker thread,
|
|
449
446
|
* settling on the JavaScript thread. While it is pending, other calls on this object throw,
|
|
450
447
|
* except {@link Spider.abort} (which cancels it) and the {@link Spider.onPercentDone} /
|
|
451
448
|
* {@link Spider.onProgressInfo} callbacks, which report progress while it runs.
|
|
452
|
-
*
|
|
453
|
-
* The promise rejects with an Error if the call fails; the full log is in
|
|
454
|
-
* {@link Spider.lastErrorText}.
|
|
455
449
|
*/
|
|
456
|
-
crawlNextAsync(): Promise<
|
|
450
|
+
crawlNextAsync(): Promise<boolean>
|
|
457
451
|
|
|
458
452
|
/**
|
|
459
453
|
* Returns the contents of the robots.txt file from the domain being crawled. This spider object
|
|
@@ -554,22 +548,16 @@ export interface Spider extends HybridObject<{ ios: 'c++', android: 'c++' }> {
|
|
|
554
548
|
*
|
|
555
549
|
* This call blocks the JavaScript thread until Chilkat returns; from UI code prefer
|
|
556
550
|
* {@link Spider.recrawlLastAsync}.
|
|
557
|
-
*
|
|
558
|
-
* @throws Error if the call fails (the message names the reason); the full log is in
|
|
559
|
-
* {@link Spider.lastErrorText}.
|
|
560
551
|
*/
|
|
561
|
-
recrawlLast():
|
|
552
|
+
recrawlLast(): boolean
|
|
562
553
|
|
|
563
554
|
/**
|
|
564
555
|
* Asynchronous form of {@link Spider.recrawlLast}: the same call on a native worker thread,
|
|
565
556
|
* settling on the JavaScript thread. While it is pending, other calls on this object throw,
|
|
566
557
|
* except {@link Spider.abort} (which cancels it) and the {@link Spider.onPercentDone} /
|
|
567
558
|
* {@link Spider.onProgressInfo} callbacks, which report progress while it runs.
|
|
568
|
-
*
|
|
569
|
-
* The promise rejects with an Error if the call fails; the full log is in
|
|
570
|
-
* {@link Spider.lastErrorText}.
|
|
571
559
|
*/
|
|
572
|
-
recrawlLastAsync(): Promise<
|
|
560
|
+
recrawlLastAsync(): Promise<boolean>
|
|
573
561
|
|
|
574
562
|
/**
|
|
575
563
|
* Moves a URL from the unspidered list to the spidered list. This allows an application to skip a
|
package/src/specs/Ssh.nitro.ts
CHANGED
|
@@ -851,26 +851,44 @@ export interface Ssh extends HybridObject<{ ios: 'c++', android: 'c++' }> {
|
|
|
851
851
|
abortCurrent: boolean
|
|
852
852
|
|
|
853
853
|
/**
|
|
854
|
-
* Controls whether
|
|
855
|
-
* returned
|
|
856
|
-
* `true`.
|
|
854
|
+
* Controls whether terminal control sequences are removed from received text, so that the text
|
|
855
|
+
* returned is plain text. It applies to {@link Ssh.getReceivedText}, {@link Ssh.getReceivedSb}
|
|
856
|
+
* and {@link Ssh.getReceivedTextS}. The default is `true`.
|
|
857
857
|
*
|
|
858
|
-
*
|
|
859
|
-
* colon-separated parameter forms such as `ESC[m`, `ESC[1;31m`, `ESC[38;5;196m`, and
|
|
860
|
-
* `ESC[38:5:196m`.
|
|
858
|
+
* These are removed:
|
|
861
859
|
*
|
|
862
|
-
*
|
|
863
|
-
*
|
|
860
|
+
* - CSI sequences: `ESC[`, then optional parameter and intermediate bytes, then a final byte.
|
|
861
|
+
* These include colors and text styles (`ESC[1;31m`, `ESC[38:5:196m`), cursor movement and
|
|
862
|
+
* erasing (`ESC[H`, `ESC[K`, `ESC[2J`), mode changes such as bracketed paste (`ESC[?2004h`),
|
|
863
|
+
* and terminal queries (`ESC[6n`).
|
|
864
|
+
*
|
|
865
|
+
* - OSC, DCS, SOS, PM and APC strings, ended by `ESC\` or BEL. For example, window titles
|
|
866
|
+
* (`ESC]0;title`), and the OSC 3008 context sequences that newer versions of systemd send
|
|
867
|
+
* around shell prompts.
|
|
868
|
+
*
|
|
869
|
+
* - Other escape sequences, such as `ESC 7`, `ESC 8`, `ESC =`, `ESC >` and `ESC ( B`.
|
|
870
|
+
*
|
|
871
|
+
* - The BEL, SO and SI control characters.
|
|
872
|
+
*
|
|
873
|
+
* Line breaks (CR and LF), tabs and all other text are kept. 8-bit C1 control bytes such as
|
|
874
|
+
* `0x9B` are not removed, because those byte values also occur within UTF-8 characters. A
|
|
875
|
+
* malformed sequence loses only its ESC.
|
|
876
|
+
*
|
|
877
|
+
* A sequence split across SSH packets is still removed: if the received text ends with an
|
|
878
|
+
* unfinished sequence, those bytes are held back and returned with the text received next. They
|
|
879
|
+
* are returned as received if the channel has received EOF or CLOSE, or the connection was lost.
|
|
880
|
+
* An unusually long sequence (over 256 bytes for CSI, or over 16384 bytes for a control string)
|
|
881
|
+
* is not held back; only its ESC is removed.
|
|
864
882
|
*
|
|
865
883
|
* For `GetReceivedTextS`, stripping applies to both the literal substring search and the returned
|
|
866
884
|
* value; the corresponding original raw escape-sequence bytes are consumed.
|
|
867
885
|
*
|
|
868
|
-
* It does not affect raw-byte getters, {@link Ssh.peekReceivedText}, {@link
|
|
869
|
-
* Ssh.
|
|
870
|
-
* string returned by {@link Ssh.quickCommand}.
|
|
886
|
+
* It does not affect raw-byte getters, {@link Ssh.peekReceivedText}, pattern matching in {@link
|
|
887
|
+
* Ssh.channelReceiveUntilMatch}, or the string returned by {@link Ssh.quickCommand}.
|
|
871
888
|
*
|
|
872
|
-
*
|
|
873
|
-
*
|
|
889
|
+
* Only escape sequences and the control characters listed above are removed. Text that the server
|
|
890
|
+
* sends as plain characters stays: for example, the `%` and spaces that zsh writes before a
|
|
891
|
+
* prompt (its `PROMPT_SP` option).
|
|
874
892
|
*/
|
|
875
893
|
stripColorCodes: boolean
|
|
876
894
|
|
|
@@ -917,4 +917,59 @@ export interface StringBuilder extends HybridObject<{ ios: 'c++', android: 'c++'
|
|
|
917
917
|
* {@link StringBuilder.lastErrorText}.
|
|
918
918
|
*/
|
|
919
919
|
appendLn(str: string): void
|
|
920
|
+
|
|
921
|
+
/**
|
|
922
|
+
* Converts the HTML contained in this object to Markdown, replacing the contents with the
|
|
923
|
+
* Markdown. Returns `true` on success. If the conversion fails, the contents are left unchanged
|
|
924
|
+
* and the reason is in the LastErrorText.
|
|
925
|
+
*
|
|
926
|
+
* This is the reverse of {@link StringBuilder.markdownToHtml}. The HTML is parsed with the same
|
|
927
|
+
* parser used by `Html.ToXml` and `Html.ToText`, and the resulting document tree produces
|
|
928
|
+
* CommonMark / GitHub-flavored Markdown:
|
|
929
|
+
*
|
|
930
|
+
* - `h1` through `h6` become `#` .. `######` headings.
|
|
931
|
+
*
|
|
932
|
+
* - `p`, `div`, `section` and other block-level elements become paragraphs separated by a blank
|
|
933
|
+
* line. `br` becomes a hard line break and `hr` becomes `---`.
|
|
934
|
+
*
|
|
935
|
+
* - `b`/`strong` become `**bold**`, `i`/`em`/`cite` become `*italic*`, `del`/`s`/`strike` become
|
|
936
|
+
* `~~struck~~`, and `code`/`kbd`/`samp` become a backtick code span.
|
|
937
|
+
*
|
|
938
|
+
* - `pre` becomes a fenced code block. The language is taken from a `language-xxx` or `lang-xxx`
|
|
939
|
+
* class on the `pre` or its `code` child.
|
|
940
|
+
*
|
|
941
|
+
* - `a href` becomes `[text](url "title")`, and `img` becomes ``.
|
|
942
|
+
*
|
|
943
|
+
* - `ul`/`ol`/`li` become `-` and `1.` lists, with nested lists indented. A checkbox `input`
|
|
944
|
+
* inside a list item becomes `[ ]` or `[x]`.
|
|
945
|
+
*
|
|
946
|
+
* - `blockquote` becomes lines prefixed with `>`.
|
|
947
|
+
*
|
|
948
|
+
* - `table` becomes a GitHub pipe table. The first row is the header when it contains `th` cells
|
|
949
|
+
* or is inside a `thead`; `colspan` is honored, and `align` or `text-align` sets the column
|
|
950
|
+
* alignment. A single-column table becomes plain paragraphs, because such tables are usually
|
|
951
|
+
* for layout.
|
|
952
|
+
*
|
|
953
|
+
* - `dl`/`dt`/`dd` become a term line followed by `: definition` lines.
|
|
954
|
+
*
|
|
955
|
+
* `head`, `script`, `style`, `title`, `meta`, `link`, `noscript`, `iframe`, `object`, `embed`,
|
|
956
|
+
* `svg`, `canvas`, form controls and comments produce no output. Any other tag is transparent:
|
|
957
|
+
* only its content is emitted.
|
|
958
|
+
*
|
|
959
|
+
* Markdown-significant punctuation in ordinary text is backslash-escaped so that the text renders
|
|
960
|
+
* literally. Text inside `code` and `pre` is never escaped. HTML entities are decoded.
|
|
961
|
+
*
|
|
962
|
+
* The Markdown uses LF line endings, always ends with a single line ending, and never contains
|
|
963
|
+
* more than one consecutive blank line outside of a code block. Call {@link StringBuilder.toCRLF}
|
|
964
|
+
* afterwards for CRLF line endings.
|
|
965
|
+
*
|
|
966
|
+
* **Note:** The conversion is in-place. The HTML is not available after a successful call, so
|
|
967
|
+
* load it into a separate `StringBuilder` first if it is still needed.
|
|
968
|
+
*
|
|
969
|
+
* Empty contents, or HTML with no visible content, produce empty contents and `true` is returned.
|
|
970
|
+
*
|
|
971
|
+
* @throws Error if the call fails (the message names the reason); the full log is in
|
|
972
|
+
* {@link StringBuilder.lastErrorText}.
|
|
973
|
+
*/
|
|
974
|
+
htmlToMarkdown(): void
|
|
920
975
|
}
|
|
@@ -735,11 +735,8 @@ export interface ZipEntry extends HybridObject<{ ios: 'c++', android: 'c++' }> {
|
|
|
735
735
|
*
|
|
736
736
|
* Returns `_TRUE_` if a matching entry is found. Returns
|
|
737
737
|
* `_FALSE_` if no further matching entry exists.
|
|
738
|
-
*
|
|
739
|
-
* @throws Error if the call fails (the message names the reason); the full log is in
|
|
740
|
-
* {@link ZipEntry.lastErrorText}.
|
|
741
738
|
*/
|
|
742
|
-
getNextMatch(pattern: string):
|
|
739
|
+
getNextMatch(pattern: string): boolean
|
|
743
740
|
|
|
744
741
|
/**
|
|
745
742
|
* Updates this `ZipEntry` object so that it represents the
|
|
@@ -749,11 +746,8 @@ export interface ZipEntry extends HybridObject<{ ios: 'c++', android: 'c++' }> {
|
|
|
749
746
|
*
|
|
750
747
|
* Returns `_TRUE_` if the object was advanced to the next
|
|
751
748
|
* entry. Returns `_FALSE_` if there are no more entries.
|
|
752
|
-
*
|
|
753
|
-
* @throws Error if the call fails (the message names the reason); the full log is in
|
|
754
|
-
* {@link ZipEntry.lastErrorText}.
|
|
755
749
|
*/
|
|
756
|
-
getNext():
|
|
750
|
+
getNext(): boolean
|
|
757
751
|
|
|
758
752
|
// ---- Events (ReactNativeGen_DESIGN.md §6) ----
|
|
759
753
|
|