@involvex/emoji-cli 2.2.4 → 2.2.6

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.
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env node
2
1
  "use strict";
3
2
  var __create = Object.create;
4
3
  var __defProp = Object.defineProperty;
@@ -28,12 +27,21 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
28
27
  ));
29
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
30
29
 
31
- // bin/emoji-cli.ts
32
- var emoji_cli_exports = {};
33
- __export(emoji_cli_exports, {
34
- default: () => run
30
+ // src/index.ts
31
+ var src_exports = {};
32
+ __export(src_exports, {
33
+ emojify: () => emojify,
34
+ find: () => find,
35
+ get: () => get,
36
+ has: () => has,
37
+ random: () => random,
38
+ replace: () => replace,
39
+ search: () => search,
40
+ strip: () => strip,
41
+ unemojify: () => unemojify,
42
+ which: () => which
35
43
  });
36
- module.exports = __toCommonJS(emoji_cli_exports);
44
+ module.exports = __toCommonJS(src_exports);
37
45
 
38
46
  // src/emojify.ts
39
47
  var import_is2 = __toESM(require("@sindresorhus/is"), 1);
@@ -82,9 +90,9 @@ var findByName = (name) => {
82
90
  // src/emojify.ts
83
91
  var emojify = (input, { fallback, format = (name) => name } = {}) => {
84
92
  const fallbackFunction = fallback === void 0 ? fallback : asFunction(fallback);
85
- import_is2.default.assert.string(input);
86
- import_is2.default.assert.any([import_is2.default.default.undefined, import_is2.default.default.function_], fallbackFunction);
87
- import_is2.default.assert.function_(format);
93
+ import_is2.default.string(input);
94
+ import_is2.default.any([import_is2.default.undefined, import_is2.default.function_], fallbackFunction);
95
+ import_is2.default.function_(format);
88
96
  return input.replace(/:[\w\-+]+:/g, (part) => {
89
97
  const found = findByName(part);
90
98
  if (found) {
@@ -133,21 +141,44 @@ var random = () => {
133
141
 
134
142
  // src/replace.ts
135
143
  var import_is6 = require("@sindresorhus/is");
144
+ var replace = (input, replacement, { preserveSpaces = false } = {}) => {
145
+ const replace2 = asFunction(replacement);
146
+ import_is6.assert.string(input);
147
+ import_is6.assert.function_(replace2);
148
+ import_is6.assert.boolean(preserveSpaces);
149
+ const characters = input.match(charRegexMatcher);
150
+ if (characters === null) {
151
+ return input;
152
+ }
153
+ return characters.map((character, index) => {
154
+ const found = findByCode(character);
155
+ if (!found) {
156
+ return character;
157
+ }
158
+ if (!preserveSpaces && characters[index + 1] === " ") {
159
+ characters[index + 1] = "";
160
+ }
161
+ return replace2(found, index, input);
162
+ }).join("");
163
+ };
136
164
 
137
165
  // src/search.ts
138
166
  var import_is7 = __toESM(require("@sindresorhus/is"), 1);
139
167
  var search = (keyword) => {
140
- import_is7.assert.any([import_is7.default.default.string, import_is7.default.default.regExp], keyword);
141
- if (import_is7.default.default.string(keyword)) {
168
+ import_is7.assert.any([import_is7.default.string, import_is7.default.regExp], keyword);
169
+ if (import_is7.default.string(keyword)) {
142
170
  keyword = normalizeName(keyword);
143
171
  }
144
- if (import_is7.default.default.regExp(keyword)) {
145
- const normalizedPattern = normalizeName(keyword.source);
172
+ if (import_is7.default.regExp(keyword)) {
173
+ const normalizedPattern = normalizeName(keyword.toString());
146
174
  keyword = new RegExp(normalizedPattern);
147
175
  }
148
176
  return emojiData.filter(([name]) => name.match(keyword)).map(([name, emoji]) => ({ emoji, name }));
149
177
  };
150
178
 
179
+ // src/strip.ts
180
+ var strip = (input, { preserveSpaces } = {}) => replace(input, "", { preserveSpaces });
181
+
151
182
  // src/unemojify.ts
152
183
  var import_is9 = require("@sindresorhus/is");
153
184
 
@@ -173,76 +204,17 @@ var unemojify = (input) => {
173
204
  }
174
205
  return characters.map((character) => which(character, { markdown: true }) ?? character).join("");
175
206
  };
176
-
177
- // bin/emoji-cli.ts
178
- function run() {
179
- console.log("Emoji cli");
180
- const args = process.argv.slice(2);
181
- const command = args[0];
182
- if (!command || command === "--help" || command === "-h") {
183
- showhelp();
184
- return;
185
- }
186
- switch (command) {
187
- case "--help":
188
- case "-h":
189
- showhelp();
190
- break;
191
- case "--search":
192
- runsearch(args[1]);
193
- break;
194
- case "--emojify":
195
- runemojify(args[1]);
196
- break;
197
- case "--unemojify":
198
- rununemojify(args[1]);
199
- break;
200
- case "--get":
201
- runget(args[1]);
202
- break;
203
- case "--has":
204
- runhas(args[1]);
205
- break;
206
- case "--find":
207
- case "-f":
208
- runfind(args[1]);
209
- break;
210
- case "--random":
211
- case "--rnd":
212
- case "-r":
213
- runrandom();
214
- break;
215
- default:
216
- showhelp();
217
- break;
218
- }
219
- function showhelp() {
220
- console.log("Help:");
221
- console.log("Commands: --search --emojify --unemojify --get --has --random --find");
222
- }
223
- }
224
- function runsearch(args) {
225
- console.log("searching for: ", args);
226
- search(args);
227
- console.log(search(args));
228
- }
229
- function runemojify(args) {
230
- console.log(emojify(args));
231
- }
232
- function rununemojify(args) {
233
- console.log(unemojify(args));
234
- }
235
- function runget(args) {
236
- console.log(get(args));
237
- }
238
- function runhas(args) {
239
- console.log(has(args));
240
- }
241
- function runfind(args) {
242
- console.log(find(args));
243
- }
244
- function runrandom() {
245
- console.log(random());
246
- }
247
- run();
248
- //# sourceMappingURL=emoji-cli.cjs.map
207
+ // Annotate the CommonJS export names for ESM import in node:
208
+ 0 && (module.exports = {
209
+ emojify,
210
+ find,
211
+ get,
212
+ has,
213
+ random,
214
+ replace,
215
+ search,
216
+ strip,
217
+ unemojify,
218
+ which
219
+ });
220
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/index.ts","../../src/emojify.ts","../../src/findByName.ts","../../src/data.ts","../../src/utils.ts","../../src/findByCode.ts","../../src/find.ts","../../src/get.ts","../../src/has.ts","../../src/random.ts","../../src/replace.ts","../../src/search.ts","../../src/strip.ts","../../src/unemojify.ts","../../src/which.ts"],"sourcesContent":["export * from './emojify.js'\nexport * from './find.js'\nexport * from './get.js'\nexport * from './has.js'\nexport * from './random.js'\nexport * from './replace.js'\nexport * from './search.js'\nexport * from './strip.js'\nexport * from './unemojify.js'\nexport * from './which.js'\n","import is from '@sindresorhus/is'\n\nimport { findByName } from './findByName.js'\nimport { asFunction, normalizeName } from './utils.js'\n\nexport type EmojifyFormat = (\n name: string,\n part?: string,\n input?: string,\n) => string\n\nexport interface EmojifyOptions {\n /**\n * The string to fallback to if an emoji was not found.\n */\n fallback?: ((part: string) => string) | string\n\n /**\n * Adds a middleware layer to modify each matched emoji after parsing.\n */\n format?: EmojifyFormat\n}\n\n/**\n * Parse all markdown-encoded emojis in a string.\n */\nexport const emojify = (\n input: string,\n { fallback, format = name => name }: EmojifyOptions = {},\n) => {\n const fallbackFunction =\n fallback === undefined ? fallback : asFunction(fallback)\n\n is.string(input)\n is.any([is.undefined, is.function_], fallbackFunction)\n is.function_(format)\n\n return input.replace(/:[\\w\\-+]+:/g, part => {\n const found = findByName(part)\n if (found) {\n return format(found.emoji, part, input)\n }\n\n if (fallbackFunction) {\n return format(fallbackFunction(normalizeName(part)))\n }\n\n return format(part)\n })\n}\n","import { assert } from '@sindresorhus/is'\n\nimport { emojiCodesByName } from './data.js'\nimport { normalizeName } from './utils.js'\n\nexport const findByName = (name: string) => {\n assert.string(name)\n\n const nameNormalized = normalizeName(name)\n const emoji = emojiCodesByName.get(nameNormalized)\n\n return emoji ? { emoji, key: nameNormalized } : undefined\n}\n","import emojilib from 'emojilib'\n\nimport { normalizeCode } from './utils.js'\n\nexport interface Emoji {\n emoji: string\n key: string\n}\n\nexport const emojiData = Object.entries(emojilib.lib).map(\n ([name, { char: emoji }]) => [name, emoji] as const,\n)\n\nexport const emojiCodesByName = new Map(emojiData)\n\nexport const emojiNamesByCode = new Map(\n emojiData.map(([name, emoji]) => [normalizeCode(emoji), name]),\n)\n","import charRegex from 'char-regex'\n\nexport const charRegexMatcher = charRegex()\n\nexport function asFunction<T extends PropertyKey, Args extends unknown[]>(\n input: ((...args: Args) => T) | T,\n): (...args: Args) => T {\n return typeof input === 'function' ? input : () => input\n}\n\n/**\n * Non spacing mark contained by some emoticons (65039 - '️' - 0xFE0F).\n *\n * It's the 'Variant Form', which provides more information so that emoticons\n * can be rendered as more colorful graphics. FE0E is a unicode text version\n * whereas FE0F should be rendered as a graphical version.\n * The code gracefully degrades.\n */\nconst NON_SPACING_MARK = String.fromCharCode(65039)\n\nconst nonSpacingRegex = new RegExp(NON_SPACING_MARK, 'g')\n\n/**\n * Removes the non-spacing-mark from the emoji code.\n *\n * Never send a stripped version to clients, as it kills graphical emoticons.\n */\nexport function normalizeCode(code: string) {\n return code.replace(nonSpacingRegex, '')\n}\n\nexport function normalizeName(name: string) {\n return /:.+:/.test(name) ? name.slice(1, -1) : name\n}\n\nexport function randomItem<T>(array: T[]) {\n return array[Math.floor(Math.random() * array.length)]\n}\n","import { assert } from '@sindresorhus/is'\n\nimport { emojiNamesByCode } from './data.js'\nimport { normalizeCode } from './utils.js'\n\nexport const findByCode = (code: string) => {\n assert.string(code)\n\n const emojiNormalized = normalizeCode(code)\n const key = emojiNamesByCode.get(emojiNormalized)\n\n return key ? { emoji: emojiNormalized, key } : undefined\n}\n","import { findByCode } from './findByCode.js'\nimport { findByName } from './findByName.js'\n\n/**\n * Get the name and character of an emoji.\n */\nexport const find = (codeOrName: string) => {\n return findByCode(codeOrName) ?? findByName(codeOrName)\n}\n","import { assert } from '@sindresorhus/is'\n\nimport { emojiCodesByName } from './data.js'\nimport { normalizeName } from './utils.js'\n\n/**\n * Get an emoji from an emoji name.\n */\nexport const get = (codeOrName: string) => {\n assert.string(codeOrName)\n\n return emojiCodesByName.get(normalizeName(codeOrName))\n}\n","import { assert } from '@sindresorhus/is'\n\nimport { emojiCodesByName, emojiNamesByCode } from './data.js'\nimport { normalizeCode, normalizeName } from './utils.js'\n\n/**\n * Check if this library supports a specific emoji.\n */\nexport const has = (codeOrName: string) => {\n assert.string(codeOrName)\n\n return (\n emojiCodesByName.has(normalizeName(codeOrName)) ||\n emojiNamesByCode.has(normalizeCode(codeOrName))\n )\n}\n","import { emojiData } from './data.js'\nimport { randomItem } from './utils.js'\n\n/**\n * Get a random emoji.\n */\nexport const random = () => {\n const [name, emoji] = randomItem(emojiData)\n return { emoji, name }\n}\n","import { assert } from '@sindresorhus/is'\n\nimport { Emoji } from './data.js'\nimport { findByCode } from './findByCode.js'\nimport { asFunction, charRegexMatcher } from './utils.js'\n\nexport type ReplaceReplacement = (\n emoji: Emoji,\n index: number,\n string: string,\n) => string\n\n/**\n * Replace the emojis in a string.\n */\nexport const replace = (\n input: string,\n replacement: ReplaceReplacement | string,\n { preserveSpaces = false } = {},\n) => {\n const replace = asFunction(replacement)\n\n assert.string(input)\n assert.function_(replace)\n assert.boolean(preserveSpaces)\n\n const characters = input.match(charRegexMatcher)\n if (characters === null) {\n return input\n }\n\n return characters\n .map((character, index) => {\n const found = findByCode(character)\n if (!found) {\n return character\n }\n\n if (!preserveSpaces && characters[index + 1] === ' ') {\n characters[index + 1] = ''\n }\n\n return replace(found, index, input)\n })\n .join('')\n}\n","import is, { assert } from '@sindresorhus/is'\n\nimport { emojiData } from './data.js'\nimport { normalizeName } from './utils.js'\n\n/**\n * Search for emojis containing the provided name or pattern in their name.\n */\nexport const search = (keyword: RegExp | string) => {\n assert.any([is.string, is.regExp], keyword)\n\n if (is.string(keyword)) {\n keyword = normalizeName(keyword)\n }\n\n if (is.regExp(keyword)) {\n const normalizedPattern = normalizeName(keyword.toString())\n keyword = new RegExp(normalizedPattern)\n }\n\n return emojiData\n .filter(([name]) => name.match(keyword))\n .map(([name, emoji]) => ({ emoji, name }))\n}\n","import { replace } from './replace.js'\n\nexport interface StripOptions {\n /**\n * Whether to keep the extra space after a stripped emoji.\n */\n preserveSpaces?: boolean\n}\n\n/**\n * Remove all the emojis from a string.\n */\nexport const strip = (input: string, { preserveSpaces }: StripOptions = {}) =>\n replace(input, '', { preserveSpaces })\n","import { assert } from '@sindresorhus/is'\n\nimport { charRegexMatcher } from './utils.js'\nimport { which } from './which.js'\n\n/**\n * Convert all emojis in a string to their markdown-encoded counterparts.\n */\nexport const unemojify = (input: string) => {\n assert.string(input)\n\n const characters = input.match(charRegexMatcher)\n if (characters === null) {\n return input\n }\n\n return characters\n .map(character => which(character, { markdown: true }) ?? character)\n .join('')\n}\n","import { assert } from '@sindresorhus/is'\nimport skinTone from 'skin-tone'\n\nimport { findByCode } from './findByCode.js'\n\nexport interface WhichOptions {\n markdown?: boolean\n}\n\n/**\n * Get an emoji name from an emoji.\n */\nexport const which = (\n emoji: string,\n { markdown = false }: WhichOptions = {},\n) => {\n assert.string(emoji)\n assert.boolean(markdown)\n\n const result = findByCode(skinTone(emoji, 'none'))\n if (result === undefined) {\n return undefined\n }\n\n return markdown ? `:${result.key}:` : result.key\n}\n"],"mappings":"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","names":["import_is","charRegex","emojilib","is","import_is","import_is","import_is","import_is","replace","import_is","is","import_is","import_is","skinTone"]}
@@ -0,0 +1,88 @@
1
+ type EmojifyFormat = (name: string, part?: string, input?: string) => string;
2
+ interface EmojifyOptions {
3
+ /**
4
+ * The string to fallback to if an emoji was not found.
5
+ */
6
+ fallback?: ((part: string) => string) | string;
7
+ /**
8
+ * Adds a middleware layer to modify each matched emoji after parsing.
9
+ */
10
+ format?: EmojifyFormat;
11
+ }
12
+ /**
13
+ * Parse all markdown-encoded emojis in a string.
14
+ */
15
+ declare const emojify: (input: string, { fallback, format }?: EmojifyOptions) => string;
16
+
17
+ /**
18
+ * Get the name and character of an emoji.
19
+ */
20
+ declare const find: (codeOrName: string) => {
21
+ emoji: string;
22
+ key: string;
23
+ } | undefined;
24
+
25
+ /**
26
+ * Get an emoji from an emoji name.
27
+ */
28
+ declare const get: (codeOrName: string) => string | undefined;
29
+
30
+ /**
31
+ * Check if this library supports a specific emoji.
32
+ */
33
+ declare const has: (codeOrName: string) => boolean;
34
+
35
+ /**
36
+ * Get a random emoji.
37
+ */
38
+ declare const random: () => {
39
+ emoji: string;
40
+ name: string;
41
+ };
42
+
43
+ interface Emoji {
44
+ emoji: string;
45
+ key: string;
46
+ }
47
+
48
+ type ReplaceReplacement = (emoji: Emoji, index: number, string: string) => string;
49
+ /**
50
+ * Replace the emojis in a string.
51
+ */
52
+ declare const replace: (input: string, replacement: ReplaceReplacement | string, { preserveSpaces }?: {
53
+ preserveSpaces?: boolean | undefined;
54
+ }) => string;
55
+
56
+ /**
57
+ * Search for emojis containing the provided name or pattern in their name.
58
+ */
59
+ declare const search: (keyword: RegExp | string) => {
60
+ emoji: string;
61
+ name: string;
62
+ }[];
63
+
64
+ interface StripOptions {
65
+ /**
66
+ * Whether to keep the extra space after a stripped emoji.
67
+ */
68
+ preserveSpaces?: boolean;
69
+ }
70
+ /**
71
+ * Remove all the emojis from a string.
72
+ */
73
+ declare const strip: (input: string, { preserveSpaces }?: StripOptions) => string;
74
+
75
+ /**
76
+ * Convert all emojis in a string to their markdown-encoded counterparts.
77
+ */
78
+ declare const unemojify: (input: string) => string;
79
+
80
+ interface WhichOptions {
81
+ markdown?: boolean;
82
+ }
83
+ /**
84
+ * Get an emoji name from an emoji.
85
+ */
86
+ declare const which: (emoji: string, { markdown }?: WhichOptions) => string | undefined;
87
+
88
+ export { type EmojifyFormat, type EmojifyOptions, type ReplaceReplacement, type StripOptions, type WhichOptions, emojify, find, get, has, random, replace, search, strip, unemojify, which };
@@ -0,0 +1,88 @@
1
+ type EmojifyFormat = (name: string, part?: string, input?: string) => string;
2
+ interface EmojifyOptions {
3
+ /**
4
+ * The string to fallback to if an emoji was not found.
5
+ */
6
+ fallback?: ((part: string) => string) | string;
7
+ /**
8
+ * Adds a middleware layer to modify each matched emoji after parsing.
9
+ */
10
+ format?: EmojifyFormat;
11
+ }
12
+ /**
13
+ * Parse all markdown-encoded emojis in a string.
14
+ */
15
+ declare const emojify: (input: string, { fallback, format }?: EmojifyOptions) => string;
16
+
17
+ /**
18
+ * Get the name and character of an emoji.
19
+ */
20
+ declare const find: (codeOrName: string) => {
21
+ emoji: string;
22
+ key: string;
23
+ } | undefined;
24
+
25
+ /**
26
+ * Get an emoji from an emoji name.
27
+ */
28
+ declare const get: (codeOrName: string) => string | undefined;
29
+
30
+ /**
31
+ * Check if this library supports a specific emoji.
32
+ */
33
+ declare const has: (codeOrName: string) => boolean;
34
+
35
+ /**
36
+ * Get a random emoji.
37
+ */
38
+ declare const random: () => {
39
+ emoji: string;
40
+ name: string;
41
+ };
42
+
43
+ interface Emoji {
44
+ emoji: string;
45
+ key: string;
46
+ }
47
+
48
+ type ReplaceReplacement = (emoji: Emoji, index: number, string: string) => string;
49
+ /**
50
+ * Replace the emojis in a string.
51
+ */
52
+ declare const replace: (input: string, replacement: ReplaceReplacement | string, { preserveSpaces }?: {
53
+ preserveSpaces?: boolean | undefined;
54
+ }) => string;
55
+
56
+ /**
57
+ * Search for emojis containing the provided name or pattern in their name.
58
+ */
59
+ declare const search: (keyword: RegExp | string) => {
60
+ emoji: string;
61
+ name: string;
62
+ }[];
63
+
64
+ interface StripOptions {
65
+ /**
66
+ * Whether to keep the extra space after a stripped emoji.
67
+ */
68
+ preserveSpaces?: boolean;
69
+ }
70
+ /**
71
+ * Remove all the emojis from a string.
72
+ */
73
+ declare const strip: (input: string, { preserveSpaces }?: StripOptions) => string;
74
+
75
+ /**
76
+ * Convert all emojis in a string to their markdown-encoded counterparts.
77
+ */
78
+ declare const unemojify: (input: string) => string;
79
+
80
+ interface WhichOptions {
81
+ markdown?: boolean;
82
+ }
83
+ /**
84
+ * Get an emoji name from an emoji.
85
+ */
86
+ declare const which: (emoji: string, { markdown }?: WhichOptions) => string | undefined;
87
+
88
+ export { type EmojifyFormat, type EmojifyOptions, type ReplaceReplacement, type StripOptions, type WhichOptions, emojify, find, get, has, random, replace, search, strip, unemojify, which };
@@ -0,0 +1,25 @@
1
+ import {
2
+ emojify,
3
+ find,
4
+ get,
5
+ has,
6
+ random,
7
+ replace,
8
+ search,
9
+ strip,
10
+ unemojify,
11
+ which
12
+ } from "../chunk-DT5PQCNR.js";
13
+ export {
14
+ emojify,
15
+ find,
16
+ get,
17
+ has,
18
+ random,
19
+ replace,
20
+ search,
21
+ strip,
22
+ unemojify,
23
+ which
24
+ };
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@involvex/emoji-cli",
3
- "version": "2.2.4",
3
+ "version": "2.2.6",
4
4
  "description": "Friendly emoji lookups and parsing utilities for Node.js. 💖",
5
5
  "keywords": [
6
6
  "emoji",
@@ -38,7 +38,7 @@
38
38
  },
39
39
  "main": "./lib/index.js",
40
40
  "bin": {
41
- "emoji-cli": "bin/emoji-cli-improved.ts"
41
+ "emoji-cli": "lib/bin/emoji-cli-improved.js"
42
42
  },
43
43
  "files": [
44
44
  "lib/",
@@ -53,7 +53,7 @@
53
53
  "build:cli": "bun build --target=node bin/emoji-cli-improved.ts --outdir=dist",
54
54
  "dev": "bun run bin/emoji-cli-improved.ts",
55
55
  "format": "prettier . --write",
56
- "lint": "eslint . -c eslint.config.ts",
56
+ "lint": "eslint . --ignore-pattern lib --ignore-pattern dist -c eslint.config.ts",
57
57
  "lint:knip": "knip",
58
58
  "lint:md": "markdownlint \"**/*.md\" \".github/**/*.md\" --rules sentences-per-line",
59
59
  "lint:package-json": "npmPkgJsonLint .",
@@ -61,7 +61,7 @@
61
61
  "lint:spelling": "cspell \"**\" \".github/**/*\"",
62
62
  "prepare": "husky install",
63
63
  "should-semantic-release": "should-semantic-release --verbose",
64
- "start": "node dist/emoji-cli-improved.js",
64
+ "start": "node lib/bin/emoji-cli-improved.js",
65
65
  "test": "vitest",
66
66
  "test:cjs": "node ./src/e2e.cjs",
67
67
  "tsc": "tsc"
package/src/emojify.ts CHANGED
@@ -31,9 +31,9 @@ export const emojify = (
31
31
  const fallbackFunction =
32
32
  fallback === undefined ? fallback : asFunction(fallback)
33
33
 
34
- is.assert.string(input)
35
- is.assert.any([is.default.undefined, is.default.function_], fallbackFunction)
36
- is.assert.function_(format)
34
+ is.string(input)
35
+ is.any([is.undefined, is.function_], fallbackFunction)
36
+ is.function_(format)
37
37
 
38
38
  return input.replace(/:[\w\-+]+:/g, part => {
39
39
  const found = findByName(part)
package/src/search.ts CHANGED
@@ -7,14 +7,14 @@ import { normalizeName } from './utils.js'
7
7
  * Search for emojis containing the provided name or pattern in their name.
8
8
  */
9
9
  export const search = (keyword: RegExp | string) => {
10
- assert.any([is.default.string, is.default.regExp], keyword)
10
+ assert.any([is.string, is.regExp], keyword)
11
11
 
12
- if (is.default.string(keyword)) {
12
+ if (is.string(keyword)) {
13
13
  keyword = normalizeName(keyword)
14
14
  }
15
15
 
16
- if (is.default.regExp(keyword)) {
17
- const normalizedPattern = normalizeName(keyword.source)
16
+ if (is.regExp(keyword)) {
17
+ const normalizedPattern = normalizeName(keyword.toString())
18
18
  keyword = new RegExp(normalizedPattern)
19
19
  }
20
20