source: node_modules/@npmcli/fs/lib/errors.js@ 62b2964

finki-main main
Last change on this file since 62b2964 was 81bc7da, checked in by Klimentina Efremova <klimentina08642@…>, 3 months ago

Initial commit

  • Property mode set to 100644
File size: 3.3 KB
Line 
1'use strict'
2const { inspect } = require('util')
3
4// adapted from node's internal/errors
5// https://github.com/nodejs/node/blob/c8a04049/lib/internal/errors.js
6
7// close copy of node's internal SystemError class.
8class SystemError {
9 constructor (code, prefix, context) {
10 // XXX context.code is undefined in all constructors used in cp/polyfill
11 // that may be a bug copied from node, maybe the constructor should use
12 // `code` not `errno`? nodejs/node#41104
13 let message = `${prefix}: ${context.syscall} returned ` +
14 `${context.code} (${context.message})`
15
16 if (context.path !== undefined) {
17 message += ` ${context.path}`
18 }
19 if (context.dest !== undefined) {
20 message += ` => ${context.dest}`
21 }
22
23 this.code = code
24 Object.defineProperties(this, {
25 name: {
26 value: 'SystemError',
27 enumerable: false,
28 writable: true,
29 configurable: true,
30 },
31 message: {
32 value: message,
33 enumerable: false,
34 writable: true,
35 configurable: true,
36 },
37 info: {
38 value: context,
39 enumerable: true,
40 configurable: true,
41 writable: false,
42 },
43 errno: {
44 get () {
45 return context.errno
46 },
47 set (value) {
48 context.errno = value
49 },
50 enumerable: true,
51 configurable: true,
52 },
53 syscall: {
54 get () {
55 return context.syscall
56 },
57 set (value) {
58 context.syscall = value
59 },
60 enumerable: true,
61 configurable: true,
62 },
63 })
64
65 if (context.path !== undefined) {
66 Object.defineProperty(this, 'path', {
67 get () {
68 return context.path
69 },
70 set (value) {
71 context.path = value
72 },
73 enumerable: true,
74 configurable: true,
75 })
76 }
77
78 if (context.dest !== undefined) {
79 Object.defineProperty(this, 'dest', {
80 get () {
81 return context.dest
82 },
83 set (value) {
84 context.dest = value
85 },
86 enumerable: true,
87 configurable: true,
88 })
89 }
90 }
91
92 toString () {
93 return `${this.name} [${this.code}]: ${this.message}`
94 }
95
96 [Symbol.for('nodejs.util.inspect.custom')] (_recurseTimes, ctx) {
97 return inspect(this, {
98 ...ctx,
99 getters: true,
100 customInspect: false,
101 })
102 }
103}
104
105function E (code, message) {
106 module.exports[code] = class NodeError extends SystemError {
107 constructor (ctx) {
108 super(code, message, ctx)
109 }
110 }
111}
112
113E('ERR_FS_CP_DIR_TO_NON_DIR', 'Cannot overwrite directory with non-directory')
114E('ERR_FS_CP_EEXIST', 'Target already exists')
115E('ERR_FS_CP_EINVAL', 'Invalid src or dest')
116E('ERR_FS_CP_FIFO_PIPE', 'Cannot copy a FIFO pipe')
117E('ERR_FS_CP_NON_DIR_TO_DIR', 'Cannot overwrite non-directory with directory')
118E('ERR_FS_CP_SOCKET', 'Cannot copy a socket file')
119E('ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY', 'Cannot overwrite symlink in subdirectory of self')
120E('ERR_FS_CP_UNKNOWN', 'Cannot copy an unknown file type')
121E('ERR_FS_EISDIR', 'Path is a directory')
122
123module.exports.ERR_INVALID_ARG_TYPE = class ERR_INVALID_ARG_TYPE extends Error {
124 constructor (name, expected, actual) {
125 super()
126 this.code = 'ERR_INVALID_ARG_TYPE'
127 this.message = `The ${name} argument must be ${expected}. Received ${typeof actual}`
128 }
129}
Note: See TracBrowser for help on using the repository browser.