You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							164 lines
						
					
					
						
							3.1 KiB
						
					
					
				
			
		
		
	
	
							164 lines
						
					
					
						
							3.1 KiB
						
					
					
				| # detect-libc
 | |
| 
 | |
| Node.js module to detect details of the C standard library (libc)
 | |
| implementation provided by a given Linux system.
 | |
| 
 | |
| Currently supports detection of GNU glibc and MUSL libc.
 | |
| 
 | |
| Provides asychronous and synchronous functions for the
 | |
| family (e.g. `glibc`, `musl`) and version (e.g. `1.23`, `1.2.3`).
 | |
| 
 | |
| The version numbers of libc implementations
 | |
| are not guaranteed to be semver-compliant.
 | |
| 
 | |
| For previous v1.x releases, please see the
 | |
| [v1](https://github.com/lovell/detect-libc/tree/v1) branch.
 | |
| 
 | |
| ## Install
 | |
| 
 | |
| ```sh
 | |
| npm install detect-libc
 | |
| ```
 | |
| 
 | |
| ## API
 | |
| 
 | |
| ### GLIBC
 | |
| 
 | |
| ```ts
 | |
| const GLIBC: string = 'glibc';
 | |
| ```
 | |
| 
 | |
| A String constant containing the value `glibc`.
 | |
| 
 | |
| ### MUSL
 | |
| 
 | |
| ```ts
 | |
| const MUSL: string = 'musl';
 | |
| ```
 | |
| 
 | |
| A String constant containing the value `musl`.
 | |
| 
 | |
| ### family
 | |
| 
 | |
| ```ts
 | |
| function family(): Promise<string | null>;
 | |
| ```
 | |
| 
 | |
| Resolves asychronously with:
 | |
| 
 | |
| * `glibc` or `musl` when the libc family can be determined
 | |
| * `null` when the libc family cannot be determined
 | |
| * `null` when run on a non-Linux platform
 | |
| 
 | |
| ```js
 | |
| const { family, GLIBC, MUSL } = require('detect-libc');
 | |
| 
 | |
| switch (await family()) {
 | |
|   case GLIBC: ...
 | |
|   case MUSL: ...
 | |
|   case null: ...
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### familySync
 | |
| 
 | |
| ```ts
 | |
| function familySync(): string | null;
 | |
| ```
 | |
| 
 | |
| Synchronous version of `family()`.
 | |
| 
 | |
| ```js
 | |
| const { familySync, GLIBC, MUSL } = require('detect-libc');
 | |
| 
 | |
| switch (familySync()) {
 | |
|   case GLIBC: ...
 | |
|   case MUSL: ...
 | |
|   case null: ...
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### version
 | |
| 
 | |
| ```ts
 | |
| function version(): Promise<string | null>;
 | |
| ```
 | |
| 
 | |
| Resolves asychronously with:
 | |
| 
 | |
| * The version when it can be determined
 | |
| * `null` when the libc family cannot be determined
 | |
| * `null` when run on a non-Linux platform
 | |
| 
 | |
| ```js
 | |
| const { version } = require('detect-libc');
 | |
| 
 | |
| const v = await version();
 | |
| if (v) {
 | |
|   const [major, minor, patch] = v.split('.');
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### versionSync
 | |
| 
 | |
| ```ts
 | |
| function versionSync(): string | null;
 | |
| ```
 | |
| 
 | |
| Synchronous version of `version()`.
 | |
| 
 | |
| ```js
 | |
| const { versionSync } = require('detect-libc');
 | |
| 
 | |
| const v = versionSync();
 | |
| if (v) {
 | |
|   const [major, minor, patch] = v.split('.');
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### isNonGlibcLinux
 | |
| 
 | |
| ```ts
 | |
| function isNonGlibcLinux(): Promise<boolean>;
 | |
| ```
 | |
| 
 | |
| Resolves asychronously with:
 | |
| 
 | |
| * `false` when the libc family is `glibc`
 | |
| * `true` when the libc family is not `glibc`
 | |
| * `false` when run on a non-Linux platform
 | |
| 
 | |
| ```js
 | |
| const { isNonGlibcLinux } = require('detect-libc');
 | |
| 
 | |
| if (await isNonGlibcLinux()) { ... }
 | |
| ```
 | |
| 
 | |
| ### isNonGlibcLinuxSync
 | |
| 
 | |
| ```ts
 | |
| function isNonGlibcLinuxSync(): boolean;
 | |
| ```
 | |
| 
 | |
| Synchronous version of `isNonGlibcLinux()`.
 | |
| 
 | |
| ```js
 | |
| const { isNonGlibcLinuxSync } = require('detect-libc');
 | |
| 
 | |
| if (isNonGlibcLinuxSync()) { ... }
 | |
| ```
 | |
| 
 | |
| ## Licensing
 | |
| 
 | |
| Copyright 2017 Lovell Fuller and others.
 | |
| 
 | |
| Licensed under the Apache License, Version 2.0 (the "License");
 | |
| you may not use this file except in compliance with the License.
 | |
| You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0.html)
 | |
| 
 | |
| Unless required by applicable law or agreed to in writing, software
 | |
| distributed under the License is distributed on an "AS IS" BASIS,
 | |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
| See the License for the specific language governing permissions and
 | |
| limitations under the License.
 |