muhammara 2.0.0 → 2.3.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/CHANGELOG.md +28 -1
- package/README.md +2 -2
- package/node_modules/@mapbox/node-pre-gyp/CHANGELOG.md +10 -0
- package/node_modules/@mapbox/node-pre-gyp/lib/util/abi_crosswalk.json +16 -0
- package/node_modules/@mapbox/node-pre-gyp/lib/util/versioning.js +1 -1
- package/node_modules/@mapbox/node-pre-gyp/package.json +10 -11
- package/node_modules/ansi-regex/index.d.ts +37 -0
- package/node_modules/ansi-regex/index.js +4 -4
- package/node_modules/ansi-regex/package.json +17 -15
- package/node_modules/ansi-regex/readme.md +35 -3
- package/node_modules/brace-expansion/package.json +2 -1
- package/node_modules/debug/LICENSE +10 -9
- package/node_modules/debug/README.md +27 -1
- package/node_modules/debug/package.json +15 -15
- package/node_modules/debug/src/common.js +2 -2
- package/node_modules/detect-libc/README.md +124 -42
- package/node_modules/detect-libc/index.d.ts +11 -0
- package/node_modules/detect-libc/lib/detect-libc.js +166 -80
- package/node_modules/detect-libc/lib/process.js +16 -0
- package/node_modules/detect-libc/package.json +20 -19
- package/node_modules/emoji-regex/LICENSE-MIT.txt +20 -0
- package/node_modules/emoji-regex/README.md +73 -0
- package/node_modules/emoji-regex/es2015/index.js +6 -0
- package/node_modules/emoji-regex/es2015/text.js +6 -0
- package/node_modules/emoji-regex/index.d.ts +23 -0
- package/node_modules/emoji-regex/index.js +6 -0
- package/node_modules/emoji-regex/package.json +77 -0
- package/node_modules/emoji-regex/text.js +6 -0
- package/node_modules/gauge/package.json +7 -7
- package/node_modules/https-proxy-agent/dist/agent.js +2 -5
- package/node_modules/https-proxy-agent/dist/agent.js.map +1 -1
- package/node_modules/https-proxy-agent/package.json +5 -5
- package/node_modules/is-fullwidth-code-point/index.d.ts +17 -0
- package/node_modules/is-fullwidth-code-point/index.js +25 -21
- package/node_modules/is-fullwidth-code-point/license +4 -16
- package/node_modules/is-fullwidth-code-point/package.json +18 -24
- package/node_modules/is-fullwidth-code-point/readme.md +6 -6
- package/node_modules/minimatch/README.md +22 -1
- package/node_modules/minimatch/minimatch.js +93 -69
- package/node_modules/minimatch/package.json +11 -10
- package/node_modules/minipass/index.js +6 -1
- package/node_modules/minipass/package.json +5 -5
- package/node_modules/node-fetch/lib/index.es.js +29 -3
- package/node_modules/node-fetch/lib/index.js +29 -3
- package/node_modules/node-fetch/lib/index.mjs +29 -3
- package/node_modules/node-fetch/package.json +18 -10
- package/node_modules/semver/README.md +3 -1
- package/node_modules/semver/bin/semver.js +19 -9
- package/node_modules/semver/classes/comparator.js +3 -2
- package/node_modules/semver/classes/index.js +1 -1
- package/node_modules/semver/classes/range.js +31 -22
- package/node_modules/semver/classes/semver.js +1 -1
- package/node_modules/semver/functions/cmp.js +8 -4
- package/node_modules/semver/functions/coerce.js +3 -2
- package/node_modules/semver/functions/inc.js +4 -1
- package/node_modules/semver/functions/parse.js +1 -1
- package/node_modules/semver/internal/constants.js +2 -2
- package/node_modules/semver/internal/identifiers.js +1 -1
- package/node_modules/semver/internal/parse-options.js +3 -3
- package/node_modules/semver/internal/re.js +3 -3
- package/node_modules/semver/package.json +46 -13
- package/node_modules/semver/ranges/min-version.js +2 -1
- package/node_modules/semver/ranges/outside.js +1 -1
- package/node_modules/semver/ranges/simplify.js +15 -12
- package/node_modules/semver/ranges/subset.js +53 -31
- package/node_modules/signal-exit/index.js +34 -10
- package/node_modules/signal-exit/package.json +11 -9
- package/node_modules/string-width/index.d.ts +29 -0
- package/node_modules/string-width/index.js +16 -5
- package/node_modules/string-width/package.json +20 -20
- package/node_modules/string-width/readme.md +15 -7
- package/node_modules/strip-ansi/index.d.ts +17 -0
- package/node_modules/strip-ansi/index.js +1 -1
- package/node_modules/strip-ansi/package.json +19 -17
- package/node_modules/strip-ansi/readme.md +12 -5
- package/package.json +1 -1
- package/src/DocumentCopyingContextDriver.cpp +6 -6
- package/src/deps/PDFWriter/CMakeLists.txt +8 -0
- package/src/deps/PDFWriter/DecryptionHelper.cpp +10 -8
- package/src/deps/PDFWriter/Deletable.h +46 -0
- package/src/deps/PDFWriter/DocumentContext.h +3 -3
- package/src/deps/PDFWriter/IDeletable.h +6 -0
- package/src/deps/PDFWriter/InputLZWDecodeStream.cpp +208 -0
- package/src/deps/PDFWriter/InputLZWDecodeStream.h +77 -0
- package/src/deps/PDFWriter/InputStreamSkipperStream.cpp +1 -1
- package/src/deps/PDFWriter/JPEGImageHandler.h +2 -2
- package/src/deps/PDFWriter/ObjectsContext.cpp +5 -0
- package/src/deps/PDFWriter/ObjectsContext.h +1 -0
- package/src/deps/PDFWriter/PDFDocumentHandler.cpp +19 -3
- package/src/deps/PDFWriter/PDFObject.cpp +13 -11
- package/src/deps/PDFWriter/PDFObject.h +7 -5
- package/src/deps/PDFWriter/PDFObjectParser.cpp +8 -0
- package/src/deps/PDFWriter/PDFObjectParser.h +6 -0
- package/src/deps/PDFWriter/PDFParser.cpp +25 -13
- package/src/deps/PDFWriter/PDFParserTokenizer.cpp +25 -24
- package/src/deps/PDFWriter/PDFParserTokenizer.h +1 -0
- package/src/deps/PDFWriter/PDFWriter.h +2 -2
- package/src/deps/PDFWriter/binding.gyp +2 -0
- package/node_modules/detect-libc/.npmignore +0 -7
- package/node_modules/detect-libc/bin/detect-libc.js +0 -18
- package/node_modules/semver/CHANGELOG.md +0 -111
- package/src/deps/PDFWriter/InputPredictorPNGAverageStream.cpp +0 -120
- package/src/deps/PDFWriter/InputPredictorPNGAverageStream.h +0 -49
- package/src/deps/PDFWriter/InputPredictorPNGNoneStream.cpp +0 -109
- package/src/deps/PDFWriter/InputPredictorPNGNoneStream.h +0 -47
- package/src/deps/PDFWriter/InputPredictorPNGPaethStream.cpp +0 -136
- package/src/deps/PDFWriter/InputPredictorPNGPaethStream.h +0 -51
- package/src/deps/PDFWriter/InputPredictorPNGSubStream.cpp +0 -113
- package/src/deps/PDFWriter/InputPredictorPNGSubStream.h +0 -47
- package/src/deps/PDFWriter/InputPredictorPNGUpStream.cpp +0 -120
- package/src/deps/PDFWriter/InputPredictorPNGUpStream.h +0 -49
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
# detect-libc
|
|
2
2
|
|
|
3
|
-
Node.js module to detect the C standard library (libc)
|
|
4
|
-
|
|
3
|
+
Node.js module to detect details of the C standard library (libc)
|
|
4
|
+
implementation provided by a given Linux system.
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
[prebuild](https://www.npmjs.com/package/prebuild),
|
|
8
|
-
[prebuild-ci](https://www.npmjs.com/package/prebuild-ci) and
|
|
9
|
-
[prebuild-install](https://www.npmjs.com/package/prebuild-install),
|
|
10
|
-
therefore allowing build and provision of pre-compiled binaries
|
|
11
|
-
for musl-based Linux e.g. Alpine as well as glibc-based.
|
|
6
|
+
Currently supports detection of GNU glibc and MUSL libc.
|
|
12
7
|
|
|
13
|
-
|
|
8
|
+
Provides asychronous and synchronous functions for the
|
|
9
|
+
family (e.g. `glibc`, `musl`) and version (e.g. `1.23`, `1.2.3`).
|
|
10
|
+
|
|
11
|
+
For previous v1.x releases, please see the
|
|
12
|
+
[v1](https://github.com/lovell/detect-libc/tree/v1) branch.
|
|
14
13
|
|
|
15
14
|
## Install
|
|
16
15
|
|
|
@@ -18,54 +17,137 @@ Currently supports libc detection of `glibc` and `musl`.
|
|
|
18
17
|
npm install detect-libc
|
|
19
18
|
```
|
|
20
19
|
|
|
21
|
-
##
|
|
20
|
+
## API
|
|
21
|
+
|
|
22
|
+
### GLIBC
|
|
23
|
+
|
|
24
|
+
```ts
|
|
25
|
+
const GLIBC: string = 'glibc';
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
A String constant containing the value `glibc`.
|
|
29
|
+
|
|
30
|
+
### MUSL
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
const MUSL: string = 'musl';
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
A String constant containing the value `musl`.
|
|
37
|
+
|
|
38
|
+
### family
|
|
39
|
+
|
|
40
|
+
```ts
|
|
41
|
+
function family(): Promise<string | null>;
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Resolves asychronously with:
|
|
22
45
|
|
|
23
|
-
|
|
46
|
+
* `glibc` or `musl` when the libc family can be determined
|
|
47
|
+
* `null` when the libc family cannot be determined
|
|
48
|
+
* `null` when run on a non-Linux platform
|
|
24
49
|
|
|
25
50
|
```js
|
|
26
|
-
const {
|
|
51
|
+
const { family, GLIBC, MUSL } = require('detect-libc');
|
|
52
|
+
|
|
53
|
+
switch (await family()) {
|
|
54
|
+
case GLIBC: ...
|
|
55
|
+
case MUSL: ...
|
|
56
|
+
case null: ...
|
|
57
|
+
}
|
|
27
58
|
```
|
|
28
59
|
|
|
29
|
-
|
|
30
|
-
* `MUSL` is a String containing the value "musl" for comparison with `family`.
|
|
31
|
-
* `family` is a String representing the system libc family.
|
|
32
|
-
* `version` is a String representing the system libc version number.
|
|
33
|
-
* `isNonGlibcLinux` is a Boolean representing whether the system is a non-glibc Linux, e.g. Alpine.
|
|
60
|
+
### familySync
|
|
34
61
|
|
|
35
|
-
|
|
62
|
+
```ts
|
|
63
|
+
function familySync(): string | null;
|
|
64
|
+
```
|
|
36
65
|
|
|
37
|
-
|
|
38
|
-
the child command will be run with the `LIBC` environment variable
|
|
39
|
-
set to the relevant value.
|
|
66
|
+
Synchronous version of `family()`.
|
|
40
67
|
|
|
41
|
-
|
|
68
|
+
```js
|
|
69
|
+
const { familySync, GLIBC, MUSL } = require('detect-libc');
|
|
42
70
|
|
|
43
|
-
|
|
71
|
+
switch (familySync()) {
|
|
72
|
+
case GLIBC: ...
|
|
73
|
+
case MUSL: ...
|
|
74
|
+
case null: ...
|
|
75
|
+
}
|
|
76
|
+
```
|
|
44
77
|
|
|
45
|
-
|
|
46
|
-
|
|
78
|
+
### version
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
function version(): Promise<string | null>;
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Resolves asychronously with:
|
|
85
|
+
|
|
86
|
+
* The version when it can be determined
|
|
87
|
+
* `null` when the libc family cannot be determined
|
|
88
|
+
* `null` when run on a non-Linux platform
|
|
89
|
+
|
|
90
|
+
```js
|
|
91
|
+
const { version } = require('detect-libc');
|
|
92
|
+
|
|
93
|
+
const v = await version();
|
|
94
|
+
if (v) {
|
|
95
|
+
const [major, minor, patch] = v.split('.');
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### versionSync
|
|
100
|
+
|
|
101
|
+
```ts
|
|
102
|
+
function versionSync(): string | null;
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Synchronous version of `version()`.
|
|
106
|
+
|
|
107
|
+
```js
|
|
108
|
+
const { versionSync } = require('detect-libc');
|
|
109
|
+
|
|
110
|
+
const v = versionSync();
|
|
111
|
+
if (v) {
|
|
112
|
+
const [major, minor, patch] = v.split('.');
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### isNonGlibcLinux
|
|
117
|
+
|
|
118
|
+
```ts
|
|
119
|
+
function isNonGlibcLinux(): Promise<boolean>;
|
|
47
120
|
```
|
|
48
121
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
122
|
+
Resolves asychronously with:
|
|
123
|
+
|
|
124
|
+
* `false` when the libc family is `glibc`
|
|
125
|
+
* `true` when the libc family is not `glibc`
|
|
126
|
+
* `false` when run on a non-Linux platform
|
|
127
|
+
|
|
128
|
+
```js
|
|
129
|
+
const { isNonGlibcLinux } = require('detect-libc');
|
|
130
|
+
|
|
131
|
+
if (await isNonGlibcLinux()) { ... }
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### isNonGlibcLinuxSync
|
|
135
|
+
|
|
136
|
+
```ts
|
|
137
|
+
function isNonGlibcLinuxSync(): boolean;
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Synchronous version of `isNonGlibcLinux()`.
|
|
141
|
+
|
|
142
|
+
```js
|
|
143
|
+
const { isNonGlibcLinuxSync } = require('detect-libc');
|
|
144
|
+
|
|
145
|
+
if (isNonGlibcLinuxSync()) { ... }
|
|
64
146
|
```
|
|
65
147
|
|
|
66
|
-
##
|
|
148
|
+
## Licensing
|
|
67
149
|
|
|
68
|
-
Copyright 2017 Lovell Fuller
|
|
150
|
+
Copyright 2017, 2022 Lovell Fuller
|
|
69
151
|
|
|
70
152
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
71
153
|
you may not use this file except in compliance with the License.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const GLIBC: 'glibc';
|
|
2
|
+
export const MUSL: 'musl';
|
|
3
|
+
|
|
4
|
+
export function family(): Promise<string | null>;
|
|
5
|
+
export function familySync(): string | null;
|
|
6
|
+
|
|
7
|
+
export function isNonGlibcLinux(): Promise<boolean>;
|
|
8
|
+
export function isNonGlibcLinuxSync(): boolean;
|
|
9
|
+
|
|
10
|
+
export function version(): Promise<string | null>;
|
|
11
|
+
export function versionSync(): string | null;
|
|
@@ -1,92 +1,178 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var readdirSync = require('fs').readdirSync;
|
|
3
|
+
const childProcess = require('child_process');
|
|
4
|
+
const { isLinux, getReport } = require('./process');
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
const command = 'getconf GNU_LIBC_VERSION 2>&1 || true; ldd --version 2>&1 || true';
|
|
7
|
+
let commandOut = '';
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
const safeCommand = () => {
|
|
10
|
+
if (!commandOut) {
|
|
11
|
+
return new Promise((resolve) => {
|
|
12
|
+
childProcess.exec(command, (err, out) => {
|
|
13
|
+
commandOut = err ? ' ' : out;
|
|
14
|
+
resolve(commandOut);
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
return commandOut;
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
const safeCommandSync = () => {
|
|
22
|
+
if (!commandOut) {
|
|
23
|
+
try {
|
|
24
|
+
commandOut = childProcess.execSync(command, { encoding: 'utf8' });
|
|
25
|
+
} catch (_err) {
|
|
26
|
+
commandOut = ' ';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return commandOut;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* A String constant containing the value `glibc`.
|
|
34
|
+
* @type {string}
|
|
35
|
+
* @public
|
|
36
|
+
*/
|
|
37
|
+
const GLIBC = 'glibc';
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* A String constant containing the value `musl`.
|
|
41
|
+
* @type {string}
|
|
42
|
+
* @public
|
|
43
|
+
*/
|
|
44
|
+
const MUSL = 'musl';
|
|
45
|
+
|
|
46
|
+
const isFileMusl = (f) => f.includes('libc.musl-') || f.includes('ld-musl-');
|
|
47
|
+
|
|
48
|
+
const familyFromReport = () => {
|
|
49
|
+
const report = getReport();
|
|
50
|
+
if (report.header && report.header.glibcVersionRuntime) {
|
|
51
|
+
return GLIBC;
|
|
52
|
+
}
|
|
53
|
+
if (Array.isArray(report.sharedObjects)) {
|
|
54
|
+
if (report.sharedObjects.some(isFileMusl)) {
|
|
55
|
+
return MUSL;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const familyFromCommand = (out) => {
|
|
62
|
+
const [getconf, ldd1] = out.split(/[\r\n]+/);
|
|
63
|
+
if (getconf && getconf.includes(GLIBC)) {
|
|
64
|
+
return GLIBC;
|
|
65
|
+
}
|
|
66
|
+
if (ldd1 && ldd1.includes(MUSL)) {
|
|
67
|
+
return MUSL;
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
13
70
|
};
|
|
14
71
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
function versionFromMuslLdd (out) {
|
|
28
|
-
return out.split(/[\r\n]+/)[1].trim().split(/\s/)[1];
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function safeReaddirSync (path) {
|
|
32
|
-
try {
|
|
33
|
-
return readdirSync(path);
|
|
34
|
-
} catch (e) {}
|
|
35
|
-
return [];
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
var family = '';
|
|
39
|
-
var version = '';
|
|
40
|
-
var method = '';
|
|
41
|
-
|
|
42
|
-
if (platform === 'linux') {
|
|
43
|
-
// Try getconf
|
|
44
|
-
var glibc = spawnSync('getconf', ['GNU_LIBC_VERSION'], spawnOptions);
|
|
45
|
-
if (glibc.status === 0) {
|
|
46
|
-
family = GLIBC;
|
|
47
|
-
version = glibc.stdout.trim().split(' ')[1];
|
|
48
|
-
method = 'getconf';
|
|
49
|
-
} else {
|
|
50
|
-
// Try ldd
|
|
51
|
-
var ldd = spawnSync('ldd', ['--version'], spawnOptions);
|
|
52
|
-
if (ldd.status === 0 && ldd.stdout.indexOf(MUSL) !== -1) {
|
|
53
|
-
family = MUSL;
|
|
54
|
-
version = versionFromMuslLdd(ldd.stdout);
|
|
55
|
-
method = 'ldd';
|
|
56
|
-
} else if (ldd.status === 1 && ldd.stderr.indexOf(MUSL) !== -1) {
|
|
57
|
-
family = MUSL;
|
|
58
|
-
version = versionFromMuslLdd(ldd.stderr);
|
|
59
|
-
method = 'ldd';
|
|
60
|
-
} else {
|
|
61
|
-
// Try filesystem (family only)
|
|
62
|
-
var lib = safeReaddirSync('/lib');
|
|
63
|
-
if (lib.some(contains('-linux-gnu'))) {
|
|
64
|
-
family = GLIBC;
|
|
65
|
-
method = 'filesystem';
|
|
66
|
-
} else if (lib.some(contains('libc.musl-'))) {
|
|
67
|
-
family = MUSL;
|
|
68
|
-
method = 'filesystem';
|
|
69
|
-
} else if (lib.some(contains('ld-musl-'))) {
|
|
70
|
-
family = MUSL;
|
|
71
|
-
method = 'filesystem';
|
|
72
|
-
} else {
|
|
73
|
-
var usrSbin = safeReaddirSync('/usr/sbin');
|
|
74
|
-
if (usrSbin.some(contains('glibc'))) {
|
|
75
|
-
family = GLIBC;
|
|
76
|
-
method = 'filesystem';
|
|
77
|
-
}
|
|
78
|
-
}
|
|
72
|
+
/**
|
|
73
|
+
* Resolves with the libc family when it can be determined, `null` otherwise.
|
|
74
|
+
* @returns {Promise<?string>}
|
|
75
|
+
*/
|
|
76
|
+
const family = async () => {
|
|
77
|
+
let family = null;
|
|
78
|
+
if (isLinux()) {
|
|
79
|
+
family = familyFromReport();
|
|
80
|
+
if (!family) {
|
|
81
|
+
const out = await safeCommand();
|
|
82
|
+
family = familyFromCommand(out);
|
|
79
83
|
}
|
|
80
84
|
}
|
|
81
|
-
|
|
85
|
+
return family;
|
|
86
|
+
};
|
|
82
87
|
|
|
83
|
-
|
|
88
|
+
/**
|
|
89
|
+
* Returns the libc family when it can be determined, `null` otherwise.
|
|
90
|
+
* @returns {?string}
|
|
91
|
+
*/
|
|
92
|
+
const familySync = () => {
|
|
93
|
+
let family = null;
|
|
94
|
+
if (isLinux()) {
|
|
95
|
+
family = familyFromReport();
|
|
96
|
+
if (!family) {
|
|
97
|
+
const out = safeCommandSync();
|
|
98
|
+
family = familyFromCommand(out);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return family;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Resolves `true` only when the platform is Linux and the libc family is not `glibc`.
|
|
106
|
+
* @returns {Promise<boolean>}
|
|
107
|
+
*/
|
|
108
|
+
const isNonGlibcLinux = async () => isLinux() && await family() !== GLIBC;
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Returns `true` only when the platform is Linux and the libc family is not `glibc`.
|
|
112
|
+
* @returns {boolean}
|
|
113
|
+
*/
|
|
114
|
+
const isNonGlibcLinuxSync = () => isLinux() && familySync() !== GLIBC;
|
|
115
|
+
|
|
116
|
+
const versionFromReport = () => {
|
|
117
|
+
const report = getReport();
|
|
118
|
+
if (report.header && report.header.glibcVersionRuntime) {
|
|
119
|
+
return report.header.glibcVersionRuntime;
|
|
120
|
+
}
|
|
121
|
+
return null;
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
const versionSuffix = (s) => s.trim().split(/\s+/)[1];
|
|
125
|
+
|
|
126
|
+
const versionFromCommand = (out) => {
|
|
127
|
+
const [getconf, ldd1, ldd2] = out.split(/[\r\n]+/);
|
|
128
|
+
if (getconf && getconf.includes(GLIBC)) {
|
|
129
|
+
return versionSuffix(getconf);
|
|
130
|
+
}
|
|
131
|
+
if (ldd1 && ldd2 && ldd1.includes(MUSL)) {
|
|
132
|
+
return versionSuffix(ldd2);
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Resolves with the libc version when it can be determined, `null` otherwise.
|
|
139
|
+
* @returns {Promise<?string>}
|
|
140
|
+
*/
|
|
141
|
+
const version = async () => {
|
|
142
|
+
let version = null;
|
|
143
|
+
if (isLinux()) {
|
|
144
|
+
version = versionFromReport();
|
|
145
|
+
if (!version) {
|
|
146
|
+
const out = await safeCommand();
|
|
147
|
+
version = versionFromCommand(out);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return version;
|
|
151
|
+
};
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Returns the libc version when it can be determined, `null` otherwise.
|
|
155
|
+
* @returns {?string}
|
|
156
|
+
*/
|
|
157
|
+
const versionSync = () => {
|
|
158
|
+
let version = null;
|
|
159
|
+
if (isLinux()) {
|
|
160
|
+
version = versionFromReport();
|
|
161
|
+
if (!version) {
|
|
162
|
+
const out = safeCommandSync();
|
|
163
|
+
version = versionFromCommand(out);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return version;
|
|
167
|
+
};
|
|
84
168
|
|
|
85
169
|
module.exports = {
|
|
86
|
-
GLIBC
|
|
87
|
-
MUSL
|
|
88
|
-
family
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
170
|
+
GLIBC,
|
|
171
|
+
MUSL,
|
|
172
|
+
family,
|
|
173
|
+
familySync,
|
|
174
|
+
isNonGlibcLinux,
|
|
175
|
+
isNonGlibcLinuxSync,
|
|
176
|
+
version,
|
|
177
|
+
versionSync
|
|
92
178
|
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const isLinux = () => process.platform === 'linux';
|
|
4
|
+
|
|
5
|
+
let report = null;
|
|
6
|
+
const getReport = () => {
|
|
7
|
+
if (!report) {
|
|
8
|
+
/* istanbul ignore next */
|
|
9
|
+
report = isLinux() && process.report
|
|
10
|
+
? process.report.getReport()
|
|
11
|
+
: {};
|
|
12
|
+
}
|
|
13
|
+
return report;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
module.exports = { isLinux, getReport };
|
|
@@ -1,34 +1,31 @@
|
|
|
1
1
|
{
|
|
2
|
-
"_from": "detect-libc@^
|
|
3
|
-
"_id": "detect-libc@
|
|
2
|
+
"_from": "detect-libc@^2.0.0",
|
|
3
|
+
"_id": "detect-libc@2.0.1",
|
|
4
4
|
"_inBundle": false,
|
|
5
|
-
"_integrity": "
|
|
5
|
+
"_integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
|
|
6
6
|
"_location": "/detect-libc",
|
|
7
7
|
"_phantomChildren": {},
|
|
8
8
|
"_requested": {
|
|
9
9
|
"type": "range",
|
|
10
10
|
"registry": true,
|
|
11
|
-
"raw": "detect-libc@^
|
|
11
|
+
"raw": "detect-libc@^2.0.0",
|
|
12
12
|
"name": "detect-libc",
|
|
13
13
|
"escapedName": "detect-libc",
|
|
14
|
-
"rawSpec": "^
|
|
14
|
+
"rawSpec": "^2.0.0",
|
|
15
15
|
"saveSpec": null,
|
|
16
|
-
"fetchSpec": "^
|
|
16
|
+
"fetchSpec": "^2.0.0"
|
|
17
17
|
},
|
|
18
18
|
"_requiredBy": [
|
|
19
19
|
"/@mapbox/node-pre-gyp"
|
|
20
20
|
],
|
|
21
|
-
"_resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-
|
|
22
|
-
"_shasum": "
|
|
23
|
-
"_spec": "detect-libc@^
|
|
21
|
+
"_resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
|
|
22
|
+
"_shasum": "e1897aa88fa6ad197862937fbc0441ef352ee0cd",
|
|
23
|
+
"_spec": "detect-libc@^2.0.0",
|
|
24
24
|
"_where": "/home/runner/work/MuhammaraJS/MuhammaraJS/node_modules/@mapbox/node-pre-gyp",
|
|
25
25
|
"author": {
|
|
26
26
|
"name": "Lovell Fuller",
|
|
27
27
|
"email": "npm@lovell.info"
|
|
28
28
|
},
|
|
29
|
-
"bin": {
|
|
30
|
-
"detect-libc": "bin/detect-libc.js"
|
|
31
|
-
},
|
|
32
29
|
"bugs": {
|
|
33
30
|
"url": "https://github.com/lovell/detect-libc/issues"
|
|
34
31
|
},
|
|
@@ -42,14 +39,18 @@
|
|
|
42
39
|
"deprecated": false,
|
|
43
40
|
"description": "Node.js module to detect the C standard library (libc) implementation family and version",
|
|
44
41
|
"devDependencies": {
|
|
45
|
-
"ava": "^
|
|
46
|
-
"nyc": "^
|
|
47
|
-
"proxyquire": "^1.
|
|
48
|
-
"semistandard": "^
|
|
42
|
+
"ava": "^2.4.0",
|
|
43
|
+
"nyc": "^15.1.0",
|
|
44
|
+
"proxyquire": "^2.1.3",
|
|
45
|
+
"semistandard": "^14.2.3"
|
|
49
46
|
},
|
|
50
47
|
"engines": {
|
|
51
|
-
"node": ">=
|
|
48
|
+
"node": ">=8"
|
|
52
49
|
},
|
|
50
|
+
"files": [
|
|
51
|
+
"lib/",
|
|
52
|
+
"index.d.ts"
|
|
53
|
+
],
|
|
53
54
|
"homepage": "https://github.com/lovell/detect-libc#readme",
|
|
54
55
|
"keywords": [
|
|
55
56
|
"libc",
|
|
@@ -64,7 +65,7 @@
|
|
|
64
65
|
"url": "git://github.com/lovell/detect-libc.git"
|
|
65
66
|
},
|
|
66
67
|
"scripts": {
|
|
67
|
-
"test": "semistandard && nyc --reporter=lcov ava"
|
|
68
|
+
"test": "semistandard && nyc --reporter=lcov --check-coverage --branches=100 ava test/unit.js"
|
|
68
69
|
},
|
|
69
|
-
"version": "
|
|
70
|
+
"version": "2.0.1"
|
|
70
71
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright Mathias Bynens <https://mathiasbynens.be/>
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# emoji-regex [](https://travis-ci.org/mathiasbynens/emoji-regex)
|
|
2
|
+
|
|
3
|
+
_emoji-regex_ offers a regular expression to match all emoji symbols (including textual representations of emoji) as per the Unicode Standard.
|
|
4
|
+
|
|
5
|
+
This repository contains a script that generates this regular expression based on [the data from Unicode v12](https://github.com/mathiasbynens/unicode-12.0.0). Because of this, the regular expression can easily be updated whenever new emoji are added to the Unicode standard.
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
Via [npm](https://www.npmjs.com/):
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install emoji-regex
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
In [Node.js](https://nodejs.org/):
|
|
16
|
+
|
|
17
|
+
```js
|
|
18
|
+
const emojiRegex = require('emoji-regex');
|
|
19
|
+
// Note: because the regular expression has the global flag set, this module
|
|
20
|
+
// exports a function that returns the regex rather than exporting the regular
|
|
21
|
+
// expression itself, to make it impossible to (accidentally) mutate the
|
|
22
|
+
// original regular expression.
|
|
23
|
+
|
|
24
|
+
const text = `
|
|
25
|
+
\u{231A}: ⌚ default emoji presentation character (Emoji_Presentation)
|
|
26
|
+
\u{2194}\u{FE0F}: ↔️ default text presentation character rendered as emoji
|
|
27
|
+
\u{1F469}: 👩 emoji modifier base (Emoji_Modifier_Base)
|
|
28
|
+
\u{1F469}\u{1F3FF}: 👩🏿 emoji modifier base followed by a modifier
|
|
29
|
+
`;
|
|
30
|
+
|
|
31
|
+
const regex = emojiRegex();
|
|
32
|
+
let match;
|
|
33
|
+
while (match = regex.exec(text)) {
|
|
34
|
+
const emoji = match[0];
|
|
35
|
+
console.log(`Matched sequence ${ emoji } — code points: ${ [...emoji].length }`);
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Console output:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
Matched sequence ⌚ — code points: 1
|
|
43
|
+
Matched sequence ⌚ — code points: 1
|
|
44
|
+
Matched sequence ↔️ — code points: 2
|
|
45
|
+
Matched sequence ↔️ — code points: 2
|
|
46
|
+
Matched sequence 👩 — code points: 1
|
|
47
|
+
Matched sequence 👩 — code points: 1
|
|
48
|
+
Matched sequence 👩🏿 — code points: 2
|
|
49
|
+
Matched sequence 👩🏿 — code points: 2
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
To match emoji in their textual representation as well (i.e. emoji that are not `Emoji_Presentation` symbols and that aren’t forced to render as emoji by a variation selector), `require` the other regex:
|
|
53
|
+
|
|
54
|
+
```js
|
|
55
|
+
const emojiRegex = require('emoji-regex/text.js');
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Additionally, in environments which support ES2015 Unicode escapes, you may `require` ES2015-style versions of the regexes:
|
|
59
|
+
|
|
60
|
+
```js
|
|
61
|
+
const emojiRegex = require('emoji-regex/es2015/index.js');
|
|
62
|
+
const emojiRegexText = require('emoji-regex/es2015/text.js');
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Author
|
|
66
|
+
|
|
67
|
+
| [](https://twitter.com/mathias "Follow @mathias on Twitter") |
|
|
68
|
+
|---|
|
|
69
|
+
| [Mathias Bynens](https://mathiasbynens.be/) |
|
|
70
|
+
|
|
71
|
+
## License
|
|
72
|
+
|
|
73
|
+
_emoji-regex_ is available under the [MIT](https://mths.be/mit) license.
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
module.exports = () => {
|
|
4
|
+
// https://mths.be/emoji
|
|
5
|
+
return /\u{1F3F4}\u{E0067}\u{E0062}(?:\u{E0065}\u{E006E}\u{E0067}|\u{E0073}\u{E0063}\u{E0074}|\u{E0077}\u{E006C}\u{E0073})\u{E007F}|\u{1F468}(?:\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}\u{1F3FB}|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FE}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D)?\u{1F468}|[\u{1F468}\u{1F469}]\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}]|[\u{1F468}\u{1F469}]\u200D[\u{1F466}\u{1F467}]|[\u2695\u2696\u2708]\uFE0F|[\u{1F466}\u{1F467}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|(?:\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708])\uFE0F|\u{1F3FB}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}]|[\u{1F3FB}-\u{1F3FF}])|(?:\u{1F9D1}\u{1F3FB}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F469})\u{1F3FB}|\u{1F9D1}(?:\u{1F3FF}\u200D\u{1F91D}\u200D\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u200D\u{1F91D}\u200D\u{1F9D1})|(?:\u{1F9D1}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FF}\u200D\u{1F91D}\u200D[\u{1F468}\u{1F469}])[\u{1F3FB}-\u{1F3FE}]|(?:\u{1F9D1}\u{1F3FC}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}\u{1F3FC}]|\u{1F469}(?:\u{1F3FE}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}-\u{1F3FD}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FC}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FD}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FB}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FC}-\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FD}\u200D(?:\u{1F91D}\u200D\u{1F468}[\u{1F3FB}\u{1F3FC}\u{1F3FE}\u{1F3FF}]|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u200D(?:\u2764\uFE0F\u200D(?:\u{1F48B}\u200D[\u{1F468}\u{1F469}]|[\u{1F468}\u{1F469}])|[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F3FF}\u200D[\u{1F33E}\u{1F373}\u{1F393}\u{1F3A4}\u{1F3A8}\u{1F3EB}\u{1F3ED}\u{1F4BB}\u{1F4BC}\u{1F527}\u{1F52C}\u{1F680}\u{1F692}\u{1F9AF}-\u{1F9B3}\u{1F9BC}\u{1F9BD}])|\u{1F469}\u200D\u{1F469}\u200D(?:\u{1F466}\u200D\u{1F466}|\u{1F467}\u200D[\u{1F466}\u{1F467}])|(?:\u{1F9D1}\u{1F3FD}\u200D\u{1F91D}\u200D\u{1F9D1}|\u{1F469}\u{1F3FE}\u200D\u{1F91D}\u200D\u{1F469})[\u{1F3FB}-\u{1F3FD}]|\u{1F469}\u200D\u{1F466}\u200D\u{1F466}|\u{1F469}\u200D\u{1F469}\u200D[\u{1F466}\u{1F467}]|(?:\u{1F441}\uFE0F\u200D\u{1F5E8}|\u{1F469}(?:\u{1F3FF}\u200D[\u2695\u2696\u2708]|\u{1F3FE}\u200D[\u2695\u2696\u2708]|\u{1F3FC}\u200D[\u2695\u2696\u2708]|\u{1F3FB}\u200D[\u2695\u2696\u2708]|\u{1F3FD}\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|(?:[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}]\uFE0F|[\u{1F46F}\u{1F93C}\u{1F9DE}\u{1F9DF}])\u200D[\u2640\u2642]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}](?:[\u{1F3FB}-\u{1F3FF}]\u200D[\u2640\u2642]|\u200D[\u2640\u2642])|\u{1F3F4}\u200D\u2620)\uFE0F|\u{1F469}\u200D\u{1F467}\u200D[\u{1F466}\u{1F467}]|\u{1F3F3}\uFE0F\u200D\u{1F308}|\u{1F415}\u200D\u{1F9BA}|\u{1F469}\u200D\u{1F466}|\u{1F469}\u200D\u{1F467}|\u{1F1FD}\u{1F1F0}|\u{1F1F4}\u{1F1F2}|\u{1F1F6}\u{1F1E6}|[#\*0-9]\uFE0F\u20E3|\u{1F1E7}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EF}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1F9}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1ED}\u{1F1EF}-\u{1F1F4}\u{1F1F7}\u{1F1F9}\u{1F1FB}\u{1F1FC}\u{1F1FF}]|\u{1F1EA}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1ED}\u{1F1F7}-\u{1F1FA}]|\u{1F9D1}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F7}[\u{1F1EA}\u{1F1F4}\u{1F1F8}\u{1F1FA}\u{1F1FC}]|\u{1F469}[\u{1F3FB}-\u{1F3FF}]|\u{1F1F2}[\u{1F1E6}\u{1F1E8}-\u{1F1ED}\u{1F1F0}-\u{1F1FF}]|\u{1F1E6}[\u{1F1E8}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F2}\u{1F1F4}\u{1F1F6}-\u{1F1FA}\u{1F1FC}\u{1F1FD}\u{1F1FF}]|\u{1F1F0}[\u{1F1EA}\u{1F1EC}-\u{1F1EE}\u{1F1F2}\u{1F1F3}\u{1F1F5}\u{1F1F7}\u{1F1FC}\u{1F1FE}\u{1F1FF}]|\u{1F1ED}[\u{1F1F0}\u{1F1F2}\u{1F1F3}\u{1F1F7}\u{1F1F9}\u{1F1FA}]|\u{1F1E9}[\u{1F1EA}\u{1F1EC}\u{1F1EF}\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1FF}]|\u{1F1FE}[\u{1F1EA}\u{1F1F9}]|\u{1F1EC}[\u{1F1E6}\u{1F1E7}\u{1F1E9}-\u{1F1EE}\u{1F1F1}-\u{1F1F3}\u{1F1F5}-\u{1F1FA}\u{1F1FC}\u{1F1FE}]|\u{1F1F8}[\u{1F1E6}-\u{1F1EA}\u{1F1EC}-\u{1F1F4}\u{1F1F7}-\u{1F1F9}\u{1F1FB}\u{1F1FD}-\u{1F1FF}]|\u{1F1EB}[\u{1F1EE}-\u{1F1F0}\u{1F1F2}\u{1F1F4}\u{1F1F7}]|\u{1F1F5}[\u{1F1E6}\u{1F1EA}-\u{1F1ED}\u{1F1F0}-\u{1F1F3}\u{1F1F7}-\u{1F1F9}\u{1F1FC}\u{1F1FE}]|\u{1F1FB}[\u{1F1E6}\u{1F1E8}\u{1F1EA}\u{1F1EC}\u{1F1EE}\u{1F1F3}\u{1F1FA}]|\u{1F1F3}[\u{1F1E6}\u{1F1E8}\u{1F1EA}-\u{1F1EC}\u{1F1EE}\u{1F1F1}\u{1F1F4}\u{1F1F5}\u{1F1F7}\u{1F1FA}\u{1F1FF}]|\u{1F1E8}[\u{1F1E6}\u{1F1E8}\u{1F1E9}\u{1F1EB}-\u{1F1EE}\u{1F1F0}-\u{1F1F5}\u{1F1F7}\u{1F1FA}-\u{1F1FF}]|\u{1F1F1}[\u{1F1E6}-\u{1F1E8}\u{1F1EE}\u{1F1F0}\u{1F1F7}-\u{1F1FB}\u{1F1FE}]|\u{1F1FF}[\u{1F1E6}\u{1F1F2}\u{1F1FC}]|\u{1F1FC}[\u{1F1EB}\u{1F1F8}]|\u{1F1FA}[\u{1F1E6}\u{1F1EC}\u{1F1F2}\u{1F1F3}\u{1F1F8}\u{1F1FE}\u{1F1FF}]|\u{1F1EE}[\u{1F1E8}-\u{1F1EA}\u{1F1F1}-\u{1F1F4}\u{1F1F6}-\u{1F1F9}]|\u{1F1EF}[\u{1F1EA}\u{1F1F2}\u{1F1F4}\u{1F1F5}]|[\u{1F3C3}\u{1F3C4}\u{1F3CA}\u{1F46E}\u{1F471}\u{1F473}\u{1F477}\u{1F481}\u{1F482}\u{1F486}\u{1F487}\u{1F645}-\u{1F647}\u{1F64B}\u{1F64D}\u{1F64E}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F926}\u{1F937}-\u{1F939}\u{1F93D}\u{1F93E}\u{1F9B8}\u{1F9B9}\u{1F9CD}-\u{1F9CF}\u{1F9D6}-\u{1F9DD}][\u{1F3FB}-\u{1F3FF}]|[\u26F9\u{1F3CB}\u{1F3CC}\u{1F575}][\u{1F3FB}-\u{1F3FF}]|[\u261D\u270A-\u270D\u{1F385}\u{1F3C2}\u{1F3C7}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}\u{1F467}\u{1F46B}-\u{1F46D}\u{1F470}\u{1F472}\u{1F474}-\u{1F476}\u{1F478}\u{1F47C}\u{1F483}\u{1F485}\u{1F4AA}\u{1F574}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F64C}\u{1F64F}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91C}\u{1F91E}\u{1F91F}\u{1F930}-\u{1F936}\u{1F9B5}\u{1F9B6}\u{1F9BB}\u{1F9D2}-\u{1F9D5}][\u{1F3FB}-\u{1F3FF}]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55\u{1F004}\u{1F0CF}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F236}\u{1F238}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F320}\u{1F32D}-\u{1F335}\u{1F337}-\u{1F37C}\u{1F37E}-\u{1F393}\u{1F3A0}-\u{1F3CA}\u{1F3CF}-\u{1F3D3}\u{1F3E0}-\u{1F3F0}\u{1F3F4}\u{1F3F8}-\u{1F43E}\u{1F440}\u{1F442}-\u{1F4FC}\u{1F4FF}-\u{1F53D}\u{1F54B}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F57A}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5FB}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CC}\u{1F6D0}-\u{1F6D2}\u{1F6D5}\u{1F6EB}\u{1F6EC}\u{1F6F4}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]|[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299\u{1F004}\u{1F0CF}\u{1F170}\u{1F171}\u{1F17E}\u{1F17F}\u{1F18E}\u{1F191}-\u{1F19A}\u{1F1E6}-\u{1F1FF}\u{1F201}\u{1F202}\u{1F21A}\u{1F22F}\u{1F232}-\u{1F23A}\u{1F250}\u{1F251}\u{1F300}-\u{1F321}\u{1F324}-\u{1F393}\u{1F396}\u{1F397}\u{1F399}-\u{1F39B}\u{1F39E}-\u{1F3F0}\u{1F3F3}-\u{1F3F5}\u{1F3F7}-\u{1F4FD}\u{1F4FF}-\u{1F53D}\u{1F549}-\u{1F54E}\u{1F550}-\u{1F567}\u{1F56F}\u{1F570}\u{1F573}-\u{1F57A}\u{1F587}\u{1F58A}-\u{1F58D}\u{1F590}\u{1F595}\u{1F596}\u{1F5A4}\u{1F5A5}\u{1F5A8}\u{1F5B1}\u{1F5B2}\u{1F5BC}\u{1F5C2}-\u{1F5C4}\u{1F5D1}-\u{1F5D3}\u{1F5DC}-\u{1F5DE}\u{1F5E1}\u{1F5E3}\u{1F5E8}\u{1F5EF}\u{1F5F3}\u{1F5FA}-\u{1F64F}\u{1F680}-\u{1F6C5}\u{1F6CB}-\u{1F6D2}\u{1F6D5}\u{1F6E0}-\u{1F6E5}\u{1F6E9}\u{1F6EB}\u{1F6EC}\u{1F6F0}\u{1F6F3}-\u{1F6FA}\u{1F7E0}-\u{1F7EB}\u{1F90D}-\u{1F93A}\u{1F93C}-\u{1F945}\u{1F947}-\u{1F971}\u{1F973}-\u{1F976}\u{1F97A}-\u{1F9A2}\u{1F9A5}-\u{1F9AA}\u{1F9AE}-\u{1F9CA}\u{1F9CD}-\u{1F9FF}\u{1FA70}-\u{1FA73}\u{1FA78}-\u{1FA7A}\u{1FA80}-\u{1FA82}\u{1FA90}-\u{1FA95}]\uFE0F|[\u261D\u26F9\u270A-\u270D\u{1F385}\u{1F3C2}-\u{1F3C4}\u{1F3C7}\u{1F3CA}-\u{1F3CC}\u{1F442}\u{1F443}\u{1F446}-\u{1F450}\u{1F466}-\u{1F478}\u{1F47C}\u{1F481}-\u{1F483}\u{1F485}-\u{1F487}\u{1F48F}\u{1F491}\u{1F4AA}\u{1F574}\u{1F575}\u{1F57A}\u{1F590}\u{1F595}\u{1F596}\u{1F645}-\u{1F647}\u{1F64B}-\u{1F64F}\u{1F6A3}\u{1F6B4}-\u{1F6B6}\u{1F6C0}\u{1F6CC}\u{1F90F}\u{1F918}-\u{1F91F}\u{1F926}\u{1F930}-\u{1F939}\u{1F93C}-\u{1F93E}\u{1F9B5}\u{1F9B6}\u{1F9B8}\u{1F9B9}\u{1F9BB}\u{1F9CD}-\u{1F9CF}\u{1F9D1}-\u{1F9DD}]/gu;
|
|
6
|
+
};
|