-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patherr-package-import-not-defined.ts
More file actions
131 lines (120 loc) · 3.4 KB
/
err-package-import-not-defined.ts
File metadata and controls
131 lines (120 loc) · 3.4 KB
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/**
* @file Errors - ERR_PACKAGE_IMPORT_NOT_DEFINED
* @module errnode/errors/ERR_PACKAGE_IMPORT_NOT_DEFINED
* @see https://github.com/nodejs/node/blob/v22.7.0/lib/internal/errors.js#L1628-L1631
*/
import E from '#e'
import { codes } from '#src/enums'
import type {
NodeError,
NodeErrorConstructor,
Stringifiable
} from '#src/interfaces'
import { ok } from 'devlop'
/**
* `ERR_PACKAGE_IMPORT_NOT_DEFINED` schema.
*
* @see {@linkcode NodeError}
* @see https://nodejs.org/api/errors.html#err_package_import_not_defined
*
* @extends {NodeError<codes.ERR_PACKAGE_IMPORT_NOT_DEFINED>}
* @extends {TypeError}
*/
interface ErrPackageImportNotDefined
extends NodeError<codes.ERR_PACKAGE_IMPORT_NOT_DEFINED>, TypeError {}
/**
* `ERR_PACKAGE_IMPORT_NOT_DEFINED` message arguments.
*
* @see {@linkcode Stringifiable}
*/
type Args = [
specifier: string,
dir?: Stringifiable | null | undefined,
base?: Stringifiable | null | undefined
]
/**
* `ERR_PACKAGE_IMPORT_NOT_DEFINED` constructor.
*
* @see {@linkcode Args}
* @see {@linkcode ErrPackageImportNotDefined}
* @see {@linkcode NodeErrorConstructor}
*
* @extends {NodeErrorConstructor<ErrPackageImportNotDefined,Args>}
*/
interface ErrPackageImportNotDefinedConstructor
extends NodeErrorConstructor<ErrPackageImportNotDefined, Args> {
/**
* Create a new `ERR_PACKAGE_IMPORT_NOT_DEFINED` error.
*
* @see {@linkcode ErrPackageImportNotDefined}
* @see {@linkcode Stringifiable}
*
* @param {string} specifier
* Invalid package import specifier
* @param {Stringifiable | null | undefined} [dir]
* Package directory id
* @param {Stringifiable | null | undefined} [base]
* Parent module id
* @return {ErrPackageImportNotDefined}
*/
new (
specifier: string,
dir?: Stringifiable | null | undefined,
base?: Stringifiable | null | undefined
): ErrPackageImportNotDefined
}
/**
* `ERR_PACKAGE_IMPORT_NOT_DEFINED` model.
*
* Thrown when a `package.json` [`"imports"`][imports] field does not define the
* given package import specifier.
*
* [imports]: https://nodejs.org/api/packages.html#imports
*
* @see {@linkcode ErrPackageImportNotDefinedConstructor}
*
* @type {ErrPackageImportNotDefinedConstructor}
*
* @class
*/
const ERR_PACKAGE_IMPORT_NOT_DEFINED: ErrPackageImportNotDefinedConstructor = E(
codes.ERR_PACKAGE_IMPORT_NOT_DEFINED,
TypeError,
/**
* @param {string} specifier
* Invalid package import specifier
* @param {Stringifiable | null | undefined} [dir]
* Package directory id
* @param {Stringifiable | null | undefined} [base]
* Parent module id
* @return {string} Error message
*/
function message(
specifier: string,
dir: Stringifiable | null | undefined = null,
base: Stringifiable | null | undefined = null
): string {
/**
* Error message.
*
* @var {string} message
*/
let message: string = `Package import specifier '${specifier}'`
message += ' is not defined'
if (dir !== null) {
ok(
String(dir).endsWith('/'),
'expected `dir` to end with trailing slash ("/")'
)
message += ` in package ${String(dir)}package.json`
}
if (base !== null) message += ` imported from ${String(base)}`
return message
}
)
export {
ERR_PACKAGE_IMPORT_NOT_DEFINED as default,
type ErrPackageImportNotDefined,
type Args as ErrPackageImportNotDefinedArgs,
type ErrPackageImportNotDefinedConstructor
}