@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.
Files changed (65) hide show
  1. package/chilkat-checksums.json +4 -4
  2. package/cpp/HybridAi.cpp +12 -12
  3. package/cpp/HybridAi.hpp +6 -6
  4. package/cpp/HybridDns.cpp +7 -7
  5. package/cpp/HybridDns.hpp +3 -3
  6. package/cpp/HybridFormats.cpp +100 -0
  7. package/cpp/HybridFormats.hpp +39 -0
  8. package/cpp/HybridHashtable.cpp +4 -4
  9. package/cpp/HybridHashtable.hpp +2 -2
  10. package/cpp/HybridHttp.cpp +9 -0
  11. package/cpp/HybridHttp.hpp +2 -0
  12. package/cpp/HybridHttpCurl.cpp +17 -0
  13. package/cpp/HybridHttpCurl.hpp +3 -0
  14. package/cpp/HybridPdf.cpp +152 -0
  15. package/cpp/HybridPdf.hpp +36 -0
  16. package/cpp/HybridSocket.cpp +56 -0
  17. package/cpp/HybridSocket.hpp +13 -0
  18. package/cpp/HybridSpider.cpp +14 -14
  19. package/cpp/HybridSpider.hpp +6 -6
  20. package/cpp/HybridStringBuilder.cpp +8 -0
  21. package/cpp/HybridStringBuilder.hpp +2 -0
  22. package/cpp/HybridZipEntry.cpp +8 -8
  23. package/cpp/HybridZipEntry.hpp +4 -4
  24. package/cpp/runtime/ProgLang.hpp +1 -1
  25. package/nitro.json +1 -0
  26. package/nitrogen/generated/android/ChilkatRN+autolinking.cmake +1 -0
  27. package/nitrogen/generated/android/ChilkatRNOnLoad.cpp +10 -0
  28. package/nitrogen/generated/ios/ChilkatRNAutolinking.mm +10 -0
  29. package/nitrogen/generated/shared/c++/HybridAiSpec.hpp +3 -3
  30. package/nitrogen/generated/shared/c++/HybridDnsSpec.hpp +2 -2
  31. package/nitrogen/generated/shared/c++/HybridFormatsSpec.cpp +32 -0
  32. package/nitrogen/generated/shared/c++/HybridFormatsSpec.hpp +75 -0
  33. package/nitrogen/generated/shared/c++/HybridHashtableSpec.hpp +1 -1
  34. package/nitrogen/generated/shared/c++/HybridHttpCurlSpec.cpp +2 -0
  35. package/nitrogen/generated/shared/c++/HybridHttpCurlSpec.hpp +2 -0
  36. package/nitrogen/generated/shared/c++/HybridHttpSpec.cpp +1 -0
  37. package/nitrogen/generated/shared/c++/HybridHttpSpec.hpp +1 -0
  38. package/nitrogen/generated/shared/c++/HybridPdfSpec.cpp +19 -0
  39. package/nitrogen/generated/shared/c++/HybridPdfSpec.hpp +19 -0
  40. package/nitrogen/generated/shared/c++/HybridSocketSpec.cpp +10 -0
  41. package/nitrogen/generated/shared/c++/HybridSocketSpec.hpp +10 -0
  42. package/nitrogen/generated/shared/c++/HybridSpiderSpec.hpp +4 -4
  43. package/nitrogen/generated/shared/c++/HybridStringBuilderSpec.cpp +1 -0
  44. package/nitrogen/generated/shared/c++/HybridStringBuilderSpec.hpp +1 -0
  45. package/nitrogen/generated/shared/c++/HybridZipEntrySpec.hpp +2 -2
  46. package/package.json +1 -1
  47. package/src/index.ts +3 -0
  48. package/src/specs/Ai.nitro.ts +3 -12
  49. package/src/specs/Cert.nitro.ts +24 -6
  50. package/src/specs/CodeSign.nitro.ts +88 -20
  51. package/src/specs/Compression.nitro.ts +9 -1
  52. package/src/specs/Dns.nitro.ts +2 -8
  53. package/src/specs/FileAccess.nitro.ts +12 -2
  54. package/src/specs/Formats.nitro.ts +170 -0
  55. package/src/specs/Hashtable.nitro.ts +1 -4
  56. package/src/specs/Http.nitro.ts +39 -3
  57. package/src/specs/HttpCurl.nitro.ts +119 -3
  58. package/src/specs/Jwe.nitro.ts +12 -5
  59. package/src/specs/MailMan.nitro.ts +7 -0
  60. package/src/specs/Pdf.nitro.ts +1482 -11
  61. package/src/specs/Socket.nitro.ts +181 -2
  62. package/src/specs/Spider.nitro.ts +4 -16
  63. package/src/specs/Ssh.nitro.ts +31 -13
  64. package/src/specs/StringBuilder.nitro.ts +55 -0
  65. 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
- * Specifies the application-layer protocol name offered in the TLS ALPN extension, such as `h2`
1256
- * or `http/1.1`. Leave it empty when ALPN is not required.
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(): void
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<void>
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(): void
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<void>
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
@@ -851,26 +851,44 @@ export interface Ssh extends HybridObject<{ ios: 'c++', android: 'c++' }> {
851
851
  abortCurrent: boolean
852
852
 
853
853
  /**
854
- * Controls whether ANSI SGR color and text-style sequences are removed from normal received text
855
- * returned by {@link Ssh.getReceivedText} and {@link Ssh.getReceivedTextS}. The default is
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
- * It removes ESC-prefixed CSI sequences ending in `m`, including empty, semicolon-separated, and
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
- * It does not remove non-SGR CSI sequences such as `ESC[2J`, OSC sequences, 8-bit C1 CSI
863
- * sequences beginning with byte `0x9B`, or an incomplete trailing SGR sequence.
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.getReceivedStderrText}, pattern matching in {@link Ssh.channelReceiveUntilMatch}, or the
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
- * An SGR sequence split across SSH packets can still be removed if all of its bytes remain
873
- * buffered until the text is retrieved.
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 `![alt](src "title")`.
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): void
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(): void
750
+ getNext(): boolean
757
751
 
758
752
  // ---- Events (ReactNativeGen_DESIGN.md §6) ----
759
753