source: frontend/node_modules/node-exports-info/getConditionsForCategory.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 3.2 KB
Line 
1'use strict';
2
3var $RangeError = require('es-errors/range');
4var $TypeError = require('es-errors/type');
5
6var isCategory = require('./isCategory');
7
8// pre-computed condition sets
9/** @type {['import', 'node', 'require', 'default']} */
10var base = [
11 'import',
12 'node',
13 'require',
14 'default'
15];
16/** @type {['import', 'node', 'default']} */
17var baseImport = [
18 'import',
19 'node',
20 'default'
21];
22/** @type {['node', 'require', 'default']} */
23var baseRequire = [
24 'node',
25 'require',
26 'default'
27];
28/** @type {['import', 'node-addons', 'node', 'require', 'default']} */
29var withAddons = [
30 'import',
31 'node-addons',
32 'node',
33 'require',
34 'default'
35];
36/** @type {['import', 'node-addons', 'node', 'default']} */
37var withAddonsImport = [
38 'import',
39 'node-addons',
40 'node',
41 'default'
42];
43/** @type {['node-addons', 'node', 'require', 'default']} */
44var withAddonsRequire = [
45 'node-addons',
46 'node',
47 'require',
48 'default'
49];
50/** @type {['import', 'node-addons', 'node', 'require', 'module-sync', 'default']} */
51var withAddonsModuleSync = [
52 'import',
53 'node-addons',
54 'node',
55 'require',
56 'module-sync',
57 'default'
58];
59/** @type {['import', 'node-addons', 'node', 'module-sync', 'default']} */
60var withAddonsModuleSyncImport = [
61 'import',
62 'node-addons',
63 'node',
64 'module-sync',
65 'default'
66];
67/** @type {['node-addons', 'node', 'require', 'module-sync', 'default']} */
68var withAddonsModuleSyncRequire = [
69 'node-addons',
70 'node',
71 'require',
72 'module-sync',
73 'default'
74];
75
76// categories that support node-addons condition (added in v14.19/v16.10)
77/** @type {{ [k: string]: boolean | null | undefined }} */
78var nodeAddonsCategories = {
79 __proto__: null,
80 'pattern-trailers': true,
81 'pattern-trailers+json-imports': true,
82 'pattern-trailers-no-dir-slash': true,
83 'pattern-trailers-no-dir-slash+json-imports': true,
84 'require-esm': true,
85 'strips-types': true,
86 'subpath-imports-slash': true
87};
88
89// categories that support module-sync condition (added in v22.12)
90/** @type {{ [k: string]: boolean | null | undefined }} */
91var moduleSyncCategories = {
92 __proto__: null,
93 'require-esm': true,
94 'strips-types': true,
95 'subpath-imports-slash': true
96};
97
98/** @type {import('./getConditionsForCategory')} */
99module.exports = function getConditionsForCategory(category) {
100 if (!isCategory(category)) {
101 throw new $RangeError('invalid category ' + category);
102 }
103
104 var moduleSystem = arguments.length > 1 ? arguments[1] : null;
105 if (arguments.length > 1 && moduleSystem !== 'import' && moduleSystem !== 'require') {
106 throw new $TypeError('invalid moduleSystem: must be `\'require\'` or `\'import\'` if provided, got' + moduleSystem);
107 }
108
109 if (category === 'experimental') {
110 return ['default'];
111 }
112 if (category === 'broken' || category === 'pre-exports') {
113 return null;
114 }
115
116 var hasAddons = !!nodeAddonsCategories[category];
117 var hasModuleSync = !!moduleSyncCategories[category];
118
119 if (hasAddons && hasModuleSync) {
120 return moduleSystem === 'import' ? withAddonsModuleSyncImport : moduleSystem === 'require' ? withAddonsModuleSyncRequire : withAddonsModuleSync;
121 }
122 if (hasAddons) {
123 return moduleSystem === 'import' ? withAddonsImport : moduleSystem === 'require' ? withAddonsRequire : withAddons;
124 }
125 return moduleSystem === 'import' ? baseImport : moduleSystem === 'require' ? baseRequire : base;
126};
Note: See TracBrowser for help on using the repository browser.