1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//! String types for oxc.
//!
//! This crate provides [`Str`], [`Ident`], and [`CompactStr`] for UTF-8 strings, and
//! [`JSStr`], [`JSChar`], and [`JSStrBuilder`] for JavaScript strings, including lone surrogates.
//!
//! # Naming
//!
//! Types are named for what a value means in JavaScript, as with [`JSStr`]
//! and [`JSChar`]. Storage, encoding, and ownership stay out of public names:
//! WTF-8 is an implementation detail, and whether a name borrows or owns its
//! text is the type's concern rather than the caller's.
//!
//! # Consuming `JSStr`
//!
//! A consumer that needs `str` decides what a lone surrogate means for its
//! check, and two policies cover the cases in practice. Checks over names,
//! paths, and specifiers decline when [`JSStr::as_str`] returns `None`: a
//! fixed name set or a well-known path never contains a lone surrogate, so
//! declining changes nothing. Comparisons with fixed names use `JSStr`'s
//! `PartialEq<&str>` directly and need no conversion. A value with a lone
//! surrogate is not matched against user-configured patterns; rules skip
//! that value. A value shown to a person uses the `Debug` form, which
//! escapes the surrogate instead of replacing it.
//!
//! Declining is only safe where skipping the work is conservative, as for an
//! optional optimization or a lookup that cannot match. Code that decides
//! whether a program is valid, whether a rewrite is safe, or what code to emit
//! must handle the value instead of skipping it.
pub use ;
pub use ;
pub use ;
pub use JSChar;
pub use JSStr;
pub use JSStrBuilder;
pub use str::;