Files
avcf/errno-data.js
adrien b8e8ef9113 overhaul: modular architecture, tests, doc generation, warning system, and UX improvements
- Modular block files: split into blocks-algo, blocks-data, blocks-proc
- New modules: sections.js (labelled canvas areas), proc-browser.js (procedure tree modal), lib-loader.js (lazy library loading), templates.js (project templates), errno-data.js (errno table)
- Test infrastructure: browser test suite (28 tests) and Node pure-function tests (75 tests)
- Warning system: unified .block-warn for disconnected inputs, unconnected error hooks, and zero-exit-in-error-path
- Error path highlighting: red flow paths and block borders for error-only subgraphs
- Input hooks: hidden by default, shown during linking; outputs always at bottom
- Block editor modal: pencil icon, colour picker for accent, compact field labels
- Doc generation: standalone node script extracts JSDoc -> docs/API.md (124 declarations)
- Persistence: save/restore sections, errno selection, block colours
- Fixes: _segmentsIntersect bug, WCEnd crash from closest(this), drawpath guard on detached elements
2026-06-22 18:31:23 +02:00

138 lines
8.7 KiB
JavaScript

// ── Errno table: code, name, description ────────────────────────────────────
// Generated from the system's errno definitions.
// Used by WCEnd blocks to select exit codes.
/** @type {Array<{code:number, name:string, desc:string}>} */
const ERRNO_LIST = [
{ code: 1, name: 'EPERM', desc: 'Operation not permitted' },
{ code: 2, name: 'ENOENT', desc: 'No such file or directory' },
{ code: 3, name: 'ESRCH', desc: 'No such process' },
{ code: 4, name: 'EINTR', desc: 'Interrupted system call' },
{ code: 5, name: 'EIO', desc: 'Input/output error' },
{ code: 6, name: 'ENXIO', desc: 'No such device or address' },
{ code: 7, name: 'E2BIG', desc: 'Argument list too long' },
{ code: 8, name: 'ENOEXEC', desc: 'Exec format error' },
{ code: 9, name: 'EBADF', desc: 'Bad file descriptor' },
{ code: 10, name: 'ECHILD', desc: 'No child processes' },
{ code: 11, name: 'EAGAIN', desc: 'Resource temporarily unavailable' },
{ code: 12, name: 'ENOMEM', desc: 'Cannot allocate memory' },
{ code: 13, name: 'EACCES', desc: 'Permission denied' },
{ code: 14, name: 'EFAULT', desc: 'Bad address' },
{ code: 15, name: 'ENOTBLK', desc: 'Block device required' },
{ code: 16, name: 'EBUSY', desc: 'Device or resource busy' },
{ code: 17, name: 'EEXIST', desc: 'File exists' },
{ code: 18, name: 'EXDEV', desc: 'Invalid cross-device link' },
{ code: 19, name: 'ENODEV', desc: 'No such device' },
{ code: 20, name: 'ENOTDIR', desc: 'Not a directory' },
{ code: 21, name: 'EISDIR', desc: 'Is a directory' },
{ code: 22, name: 'EINVAL', desc: 'Invalid argument' },
{ code: 23, name: 'ENFILE', desc: 'Too many open files in system' },
{ code: 24, name: 'EMFILE', desc: 'Too many open files' },
{ code: 25, name: 'ENOTTY', desc: 'Inappropriate ioctl for device' },
{ code: 26, name: 'ETXTBSY', desc: 'Text file busy' },
{ code: 27, name: 'EFBIG', desc: 'File too large' },
{ code: 28, name: 'ENOSPC', desc: 'No space left on device' },
{ code: 29, name: 'ESPIPE', desc: 'Illegal seek' },
{ code: 30, name: 'EROFS', desc: 'Read-only file system' },
{ code: 31, name: 'EMLINK', desc: 'Too many links' },
{ code: 32, name: 'EPIPE', desc: 'Broken pipe' },
{ code: 33, name: 'EDOM', desc: 'Numerical argument out of domain' },
{ code: 34, name: 'ERANGE', desc: 'Numerical result out of range' },
{ code: 35, name: 'EDEADLOCK', desc: 'Resource deadlock avoided' },
{ code: 36, name: 'ENAMETOOLONG', desc: 'File name too long' },
{ code: 37, name: 'ENOLCK', desc: 'No locks available' },
{ code: 38, name: 'ENOSYS', desc: 'Function not implemented' },
{ code: 39, name: 'ENOTEMPTY', desc: 'Directory not empty' },
{ code: 40, name: 'ELOOP', desc: 'Too many levels of symbolic links' },
{ code: 42, name: 'ENOMSG', desc: 'No message of desired type' },
{ code: 43, name: 'EIDRM', desc: 'Identifier removed' },
{ code: 44, name: 'ECHRNG', desc: 'Channel number out of range' },
{ code: 45, name: 'EL2NSYNC', desc: 'Level 2 not synchronized' },
{ code: 46, name: 'EL3HLT', desc: 'Level 3 halted' },
{ code: 47, name: 'EL3RST', desc: 'Level 3 reset' },
{ code: 48, name: 'ELNRNG', desc: 'Link number out of range' },
{ code: 49, name: 'EUNATCH', desc: 'Protocol driver not attached' },
{ code: 50, name: 'ENOCSI', desc: 'No CSI structure available' },
{ code: 51, name: 'EL2HLT', desc: 'Level 2 halted' },
{ code: 52, name: 'EBADE', desc: 'Invalid exchange' },
{ code: 53, name: 'EBADR', desc: 'Invalid request descriptor' },
{ code: 54, name: 'EXFULL', desc: 'Exchange full' },
{ code: 55, name: 'ENOANO', desc: 'No anode' },
{ code: 56, name: 'EBADRQC', desc: 'Invalid request code' },
{ code: 57, name: 'EBADSLT', desc: 'Invalid slot' },
{ code: 59, name: 'EBFONT', desc: 'Bad font file format' },
{ code: 60, name: 'ENOSTR', desc: 'Device not a stream' },
{ code: 61, name: 'ENODATA', desc: 'No data available' },
{ code: 62, name: 'ETIME', desc: 'Timer expired' },
{ code: 63, name: 'ENOSR', desc: 'Out of streams resources' },
{ code: 64, name: 'ENONET', desc: 'Machine is not on the network' },
{ code: 65, name: 'ENOPKG', desc: 'Package not installed' },
{ code: 66, name: 'EREMOTE', desc: 'Object is remote' },
{ code: 67, name: 'ENOLINK', desc: 'Link has been severed' },
{ code: 68, name: 'EADV', desc: 'Advertise error' },
{ code: 69, name: 'ESRMNT', desc: 'Srmount error' },
{ code: 70, name: 'ECOMM', desc: 'Communication error on send' },
{ code: 71, name: 'EPROTO', desc: 'Protocol error' },
{ code: 72, name: 'EMULTIHOP', desc: 'Multihop attempted' },
{ code: 73, name: 'EDOTDOT', desc: 'RFS specific error' },
{ code: 74, name: 'EBADMSG', desc: 'Bad message' },
{ code: 75, name: 'EOVERFLOW', desc: 'Value too large for defined data type' },
{ code: 76, name: 'ENOTUNIQ', desc: 'Name not unique on network' },
{ code: 77, name: 'EBADFD', desc: 'File descriptor in bad state' },
{ code: 78, name: 'EREMCHG', desc: 'Remote address changed' },
{ code: 79, name: 'ELIBACC', desc: 'Can not access a needed shared library' },
{ code: 80, name: 'ELIBBAD', desc: 'Accessing a corrupted shared library' },
{ code: 81, name: 'ELIBSCN', desc: '.lib section in a.out corrupted' },
{ code: 82, name: 'ELIBMAX', desc: 'Attempting to link in too many shared libraries' },
{ code: 83, name: 'ELIBEXEC', desc: 'Cannot exec a shared library directly' },
{ code: 84, name: 'EILSEQ', desc: 'Invalid or incomplete multibyte or wide character' },
{ code: 85, name: 'ERESTART', desc: 'Interrupted system call should be restarted' },
{ code: 86, name: 'ESTRPIPE', desc: 'Streams pipe error' },
{ code: 87, name: 'EUSERS', desc: 'Too many users' },
{ code: 88, name: 'ENOTSOCK', desc: 'Socket operation on non-socket' },
{ code: 89, name: 'EDESTADDRREQ', desc: 'Destination address required' },
{ code: 90, name: 'EMSGSIZE', desc: 'Message too long' },
{ code: 91, name: 'EPROTOTYPE', desc: 'Protocol wrong type for socket' },
{ code: 92, name: 'ENOPROTOOPT', desc: 'Protocol not available' },
{ code: 93, name: 'EPROTONOSUPPORT', desc: 'Protocol not supported' },
{ code: 94, name: 'ESOCKTNOSUPPORT', desc: 'Socket type not supported' },
{ code: 95, name: 'ENOTSUP', desc: 'Operation not supported' },
{ code: 96, name: 'EPFNOSUPPORT', desc: 'Protocol family not supported' },
{ code: 97, name: 'EAFNOSUPPORT', desc: 'Address family not supported by protocol' },
{ code: 98, name: 'EADDRINUSE', desc: 'Address already in use' },
{ code: 99, name: 'EADDRNOTAVAIL', desc: 'Cannot assign requested address' },
{ code: 100, name: 'ENETDOWN', desc: 'Network is down' },
{ code: 101, name: 'ENETUNREACH', desc: 'Network is unreachable' },
{ code: 102, name: 'ENETRESET', desc: 'Network dropped connection on reset' },
{ code: 103, name: 'ECONNABORTED', desc: 'Software caused connection abort' },
{ code: 104, name: 'ECONNRESET', desc: 'Connection reset by peer' },
{ code: 105, name: 'ENOBUFS', desc: 'No buffer space available' },
{ code: 106, name: 'EISCONN', desc: 'Transport endpoint is already connected' },
{ code: 107, name: 'ENOTCONN', desc: 'Transport endpoint is not connected' },
{ code: 108, name: 'ESHUTDOWN', desc: 'Cannot send after transport endpoint shutdown' },
{ code: 109, name: 'ETOOMANYREFS', desc: 'Too many references: cannot splice' },
{ code: 110, name: 'ETIMEDOUT', desc: 'Connection timed out' },
{ code: 111, name: 'ECONNREFUSED', desc: 'Connection refused' },
{ code: 112, name: 'EHOSTDOWN', desc: 'Host is down' },
{ code: 113, name: 'EHOSTUNREACH', desc: 'No route to host' },
{ code: 114, name: 'EALREADY', desc: 'Operation already in progress' },
{ code: 115, name: 'EINPROGRESS', desc: 'Operation now in progress' },
{ code: 116, name: 'ESTALE', desc: 'Stale file handle' },
{ code: 117, name: 'EUCLEAN', desc: 'Structure needs cleaning' },
{ code: 118, name: 'ENOTNAM', desc: 'Not a XENIX named type file' },
{ code: 119, name: 'ENAVAIL', desc: 'No XENIX semaphores available' },
{ code: 120, name: 'EISNAM', desc: 'Is a named type file' },
{ code: 121, name: 'EREMOTEIO', desc: 'Remote I/O error' },
{ code: 122, name: 'EDQUOT', desc: 'Disk quota exceeded' },
{ code: 123, name: 'ENOMEDIUM', desc: 'No medium found' },
{ code: 124, name: 'EMEDIUMTYPE', desc: 'Wrong medium type' },
{ code: 125, name: 'ECANCELED', desc: 'Operation canceled' },
{ code: 126, name: 'ENOKEY', desc: 'Required key not available' },
{ code: 127, name: 'EKEYEXPIRED', desc: 'Key has expired' },
{ code: 128, name: 'EKEYREVOKED', desc: 'Key has been revoked' },
{ code: 129, name: 'EKEYREJECTED', desc: 'Key was rejected by service' },
{ code: 130, name: 'EOWNERDEAD', desc: 'Owner died' },
{ code: 131, name: 'ENOTRECOVERABLE', desc: 'State not recoverable' },
{ code: 132, name: 'ERFKILL', desc: 'Operation not possible due to RF-kill' },
];