code-languages 1.42.5 → 1.43.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -0
- package/dist/{api-DfKZeygA.d.ts → api-CiSr3n5R.d.ts} +44 -2
- package/dist/{api-D10hZgSz.d.cts → api-jHE_4U3C.d.cts} +44 -2
- package/dist/api.cjs +180 -60
- package/dist/api.d.cts +1 -1
- package/dist/api.d.ts +1 -1
- package/dist/api.js +180 -60
- package/dist/index.cjs +181 -61
- package/dist/index.d.cts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +181 -61
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -430,6 +430,37 @@ api.related("typescript").langs().get(); // JavaScript
|
|
|
430
430
|
api.related("sql").langs().get(); // T-SQL, PL/SQL, PL/pgSQL, PRQL
|
|
431
431
|
```
|
|
432
432
|
|
|
433
|
+
Filters compose. Every language collection is chainable: call `.category()`, `.paradigm()`, `.runtime()`,
|
|
434
|
+
`.packageManager()`, `.ecosystem()`, `.extension()`, `.status()`, or `.related()` on any
|
|
435
|
+
`langs()`, `languages()`, `search()`, or `detectAll()` result to intersect filters.
|
|
436
|
+
Order does not matter, and `.locale()` can be set at any point in the chain:
|
|
437
|
+
|
|
438
|
+
```ts
|
|
439
|
+
import { api } from "code-languages/api";
|
|
440
|
+
|
|
441
|
+
// Backend languages that are also functional
|
|
442
|
+
api.category("backend").langs().paradigm("functional").get(); // Elixir, Erlang, ...
|
|
443
|
+
|
|
444
|
+
// Active languages that run on Node.js, localized
|
|
445
|
+
api.languages().runtime("node").status("active").locale("es").get();
|
|
446
|
+
|
|
447
|
+
// Systems languages registering the .h extension
|
|
448
|
+
api.category("systems").langs().extension(".h").get(); // C, C++
|
|
449
|
+
|
|
450
|
+
// Ranked search narrowed by lifecycle status
|
|
451
|
+
api.search("script").status("active").get();
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
Collections also offer cheap helpers that skip localization: `.slugs()` returns the
|
|
455
|
+
matching catalog slugs, `.count()` the number of matches, and `.first()` the first
|
|
456
|
+
match localized (or `undefined` when the collection is empty):
|
|
457
|
+
|
|
458
|
+
```ts
|
|
459
|
+
api.category("backend").langs().paradigm("functional").slugs(); // ["clojure", "elixir", ...]
|
|
460
|
+
api.runtime("node").langs().count(); // number of matching languages
|
|
461
|
+
api.search("golang").first()?.slug; // "go"
|
|
462
|
+
```
|
|
463
|
+
|
|
433
464
|
## Supported Languages
|
|
434
465
|
|
|
435
466
|
The catalog currently includes 313 language entries. Each row can be imported directly
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { L as LanguageSlug } from './registry-DftZRMv6.js';
|
|
2
|
-
import { f as Locale,
|
|
2
|
+
import { f as Locale, c as LanguageStatus, g as LocalizedLanguage } from './types-BRDmsib7.js';
|
|
3
3
|
|
|
4
4
|
type LanguageCategory = 'frontend' | 'backend' | 'fullstack' | 'systems' | 'data-science' | 'scripting' | 'other';
|
|
5
|
+
interface CategoryInfo {
|
|
6
|
+
slug: LanguageCategory;
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
aliases: string[];
|
|
10
|
+
}
|
|
5
11
|
declare function getCategories(): LanguageCategory[];
|
|
6
12
|
|
|
7
13
|
interface EcosystemInfo {
|
|
@@ -79,6 +85,8 @@ interface RuntimeRequest {
|
|
|
79
85
|
info(): RuntimeInfo | undefined;
|
|
80
86
|
/** Languages that run on or target this platform. */
|
|
81
87
|
langs(): LanguageCollectionRequest;
|
|
88
|
+
/** Package managers available on this runtime platform. */
|
|
89
|
+
packageManagers(): PackageManagerInfo[];
|
|
82
90
|
}
|
|
83
91
|
interface PackageManagerRequest {
|
|
84
92
|
/** Metadata about the matched package manager. Returns undefined for unknown values. */
|
|
@@ -89,6 +97,8 @@ interface PackageManagerRequest {
|
|
|
89
97
|
runtimes(): RuntimeInfo[];
|
|
90
98
|
}
|
|
91
99
|
interface CategoryRequest {
|
|
100
|
+
/** Metadata about the matched category. Returns undefined for unknown values. */
|
|
101
|
+
info(): CategoryInfo | undefined;
|
|
92
102
|
/** Languages that belong to this category. */
|
|
93
103
|
langs(): LanguageCollectionRequest;
|
|
94
104
|
}
|
|
@@ -121,6 +131,28 @@ interface LanguageCollectionRequest {
|
|
|
121
131
|
* Sets the requested locale for every language returned by this collection lookup.
|
|
122
132
|
*/
|
|
123
133
|
locale(locale: Locale): LanguageCollectionRequest;
|
|
134
|
+
/** Narrows the collection to languages that belong to the given category. */
|
|
135
|
+
category(value: LanguageCategory): LanguageCollectionRequest;
|
|
136
|
+
/** Narrows the collection to languages that use the given programming paradigm. */
|
|
137
|
+
paradigm(value: string): LanguageCollectionRequest;
|
|
138
|
+
/** Narrows the collection to languages that run on or target the given platform. */
|
|
139
|
+
runtime(value: string): LanguageCollectionRequest;
|
|
140
|
+
/** Narrows the collection to languages that use the given package manager. */
|
|
141
|
+
packageManager(value: string): LanguageCollectionRequest;
|
|
142
|
+
/** Narrows the collection to languages that belong to the given ecosystem. */
|
|
143
|
+
ecosystem(value: string): LanguageCollectionRequest;
|
|
144
|
+
/** Narrows the collection to languages registering the given extension or exact filename. */
|
|
145
|
+
extension(value: string): LanguageCollectionRequest;
|
|
146
|
+
/** Narrows the collection to languages with the given lifecycle status. */
|
|
147
|
+
status(value: LanguageStatus): LanguageCollectionRequest;
|
|
148
|
+
/** Narrows the collection to languages related to the given language through `relations`. */
|
|
149
|
+
related(slug: RuntimeLanguageSlug): LanguageCollectionRequest;
|
|
150
|
+
/** Lists the matching catalog slugs without localizing. */
|
|
151
|
+
slugs(): string[];
|
|
152
|
+
/** Counts the matching languages without localizing. */
|
|
153
|
+
count(): number;
|
|
154
|
+
/** Reads the first matching language from the in-memory catalog and localizes it. */
|
|
155
|
+
first(): LocalizedLanguage | undefined;
|
|
124
156
|
/**
|
|
125
157
|
* Reads every language from the in-memory catalog and localizes the result.
|
|
126
158
|
*/
|
|
@@ -135,6 +167,14 @@ interface LanguageCollectionRequest {
|
|
|
135
167
|
*
|
|
136
168
|
* Use `.get()` for synchronous catalog access or `.load()` to dynamically import only the
|
|
137
169
|
* requested language modules.
|
|
170
|
+
*
|
|
171
|
+
* Language collections compose: chain `.category()`, `.paradigm()`, `.runtime()`,
|
|
172
|
+
* `.packageManager()`, `.ecosystem()`, `.extension()`, `.status()`, or `.related()` on any
|
|
173
|
+
* collection to intersect filters.
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* api.category('backend').langs().paradigm('functional').get();
|
|
177
|
+
* api.languages().runtime('node').status('active').locale('es').get();
|
|
138
178
|
*/
|
|
139
179
|
declare const api: {
|
|
140
180
|
/**
|
|
@@ -215,6 +255,7 @@ declare const api: {
|
|
|
215
255
|
* @example
|
|
216
256
|
* api.runtime('node').langs().locale('es').get();
|
|
217
257
|
* api.runtime('.net').info();
|
|
258
|
+
* api.runtime('node').packageManagers();
|
|
218
259
|
*/
|
|
219
260
|
runtime(value: string): RuntimeRequest;
|
|
220
261
|
/**
|
|
@@ -244,6 +285,7 @@ declare const api: {
|
|
|
244
285
|
*
|
|
245
286
|
* @example
|
|
246
287
|
* api.category('backend').langs().locale('es').get();
|
|
288
|
+
* api.category('backend').info();
|
|
247
289
|
* await api.category('data-science').langs().load();
|
|
248
290
|
*/
|
|
249
291
|
category(value: LanguageCategory): CategoryRequest;
|
|
@@ -279,4 +321,4 @@ declare const api: {
|
|
|
279
321
|
/** Lists every lifecycle status usable with `api.status()`. */
|
|
280
322
|
declare function getStatuses(): LanguageStatus[];
|
|
281
323
|
|
|
282
|
-
export { type
|
|
324
|
+
export { type CategoryInfo as C, type EcosystemInfo as E, type LanguageCategory as L, type PackageManagerInfo as P, type RelatedRequest as R, type StatusRequest as S, type CategoryRequest as a, type EcosystemRequest as b, type ExtensionRequest as c, type ParadigmInfo as d, type ParadigmRequest as e, type ResolvedLanguageRequest as f, type RuntimeInfo as g, api as h, getCategories as i, getEcosystems as j, getPackageManagers as k, getParadigms as l, getRuntimes as m, getStatuses as n, type LanguageCollectionRequest as o, type LanguageRequest as p, type PackageManagerRequest as q, type RuntimeRequest as r };
|
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
import { L as LanguageSlug } from './registry-DftZRMv6.cjs';
|
|
2
|
-
import { f as Locale,
|
|
2
|
+
import { f as Locale, c as LanguageStatus, g as LocalizedLanguage } from './types-BRDmsib7.cjs';
|
|
3
3
|
|
|
4
4
|
type LanguageCategory = 'frontend' | 'backend' | 'fullstack' | 'systems' | 'data-science' | 'scripting' | 'other';
|
|
5
|
+
interface CategoryInfo {
|
|
6
|
+
slug: LanguageCategory;
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
aliases: string[];
|
|
10
|
+
}
|
|
5
11
|
declare function getCategories(): LanguageCategory[];
|
|
6
12
|
|
|
7
13
|
interface EcosystemInfo {
|
|
@@ -79,6 +85,8 @@ interface RuntimeRequest {
|
|
|
79
85
|
info(): RuntimeInfo | undefined;
|
|
80
86
|
/** Languages that run on or target this platform. */
|
|
81
87
|
langs(): LanguageCollectionRequest;
|
|
88
|
+
/** Package managers available on this runtime platform. */
|
|
89
|
+
packageManagers(): PackageManagerInfo[];
|
|
82
90
|
}
|
|
83
91
|
interface PackageManagerRequest {
|
|
84
92
|
/** Metadata about the matched package manager. Returns undefined for unknown values. */
|
|
@@ -89,6 +97,8 @@ interface PackageManagerRequest {
|
|
|
89
97
|
runtimes(): RuntimeInfo[];
|
|
90
98
|
}
|
|
91
99
|
interface CategoryRequest {
|
|
100
|
+
/** Metadata about the matched category. Returns undefined for unknown values. */
|
|
101
|
+
info(): CategoryInfo | undefined;
|
|
92
102
|
/** Languages that belong to this category. */
|
|
93
103
|
langs(): LanguageCollectionRequest;
|
|
94
104
|
}
|
|
@@ -121,6 +131,28 @@ interface LanguageCollectionRequest {
|
|
|
121
131
|
* Sets the requested locale for every language returned by this collection lookup.
|
|
122
132
|
*/
|
|
123
133
|
locale(locale: Locale): LanguageCollectionRequest;
|
|
134
|
+
/** Narrows the collection to languages that belong to the given category. */
|
|
135
|
+
category(value: LanguageCategory): LanguageCollectionRequest;
|
|
136
|
+
/** Narrows the collection to languages that use the given programming paradigm. */
|
|
137
|
+
paradigm(value: string): LanguageCollectionRequest;
|
|
138
|
+
/** Narrows the collection to languages that run on or target the given platform. */
|
|
139
|
+
runtime(value: string): LanguageCollectionRequest;
|
|
140
|
+
/** Narrows the collection to languages that use the given package manager. */
|
|
141
|
+
packageManager(value: string): LanguageCollectionRequest;
|
|
142
|
+
/** Narrows the collection to languages that belong to the given ecosystem. */
|
|
143
|
+
ecosystem(value: string): LanguageCollectionRequest;
|
|
144
|
+
/** Narrows the collection to languages registering the given extension or exact filename. */
|
|
145
|
+
extension(value: string): LanguageCollectionRequest;
|
|
146
|
+
/** Narrows the collection to languages with the given lifecycle status. */
|
|
147
|
+
status(value: LanguageStatus): LanguageCollectionRequest;
|
|
148
|
+
/** Narrows the collection to languages related to the given language through `relations`. */
|
|
149
|
+
related(slug: RuntimeLanguageSlug): LanguageCollectionRequest;
|
|
150
|
+
/** Lists the matching catalog slugs without localizing. */
|
|
151
|
+
slugs(): string[];
|
|
152
|
+
/** Counts the matching languages without localizing. */
|
|
153
|
+
count(): number;
|
|
154
|
+
/** Reads the first matching language from the in-memory catalog and localizes it. */
|
|
155
|
+
first(): LocalizedLanguage | undefined;
|
|
124
156
|
/**
|
|
125
157
|
* Reads every language from the in-memory catalog and localizes the result.
|
|
126
158
|
*/
|
|
@@ -135,6 +167,14 @@ interface LanguageCollectionRequest {
|
|
|
135
167
|
*
|
|
136
168
|
* Use `.get()` for synchronous catalog access or `.load()` to dynamically import only the
|
|
137
169
|
* requested language modules.
|
|
170
|
+
*
|
|
171
|
+
* Language collections compose: chain `.category()`, `.paradigm()`, `.runtime()`,
|
|
172
|
+
* `.packageManager()`, `.ecosystem()`, `.extension()`, `.status()`, or `.related()` on any
|
|
173
|
+
* collection to intersect filters.
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* api.category('backend').langs().paradigm('functional').get();
|
|
177
|
+
* api.languages().runtime('node').status('active').locale('es').get();
|
|
138
178
|
*/
|
|
139
179
|
declare const api: {
|
|
140
180
|
/**
|
|
@@ -215,6 +255,7 @@ declare const api: {
|
|
|
215
255
|
* @example
|
|
216
256
|
* api.runtime('node').langs().locale('es').get();
|
|
217
257
|
* api.runtime('.net').info();
|
|
258
|
+
* api.runtime('node').packageManagers();
|
|
218
259
|
*/
|
|
219
260
|
runtime(value: string): RuntimeRequest;
|
|
220
261
|
/**
|
|
@@ -244,6 +285,7 @@ declare const api: {
|
|
|
244
285
|
*
|
|
245
286
|
* @example
|
|
246
287
|
* api.category('backend').langs().locale('es').get();
|
|
288
|
+
* api.category('backend').info();
|
|
247
289
|
* await api.category('data-science').langs().load();
|
|
248
290
|
*/
|
|
249
291
|
category(value: LanguageCategory): CategoryRequest;
|
|
@@ -279,4 +321,4 @@ declare const api: {
|
|
|
279
321
|
/** Lists every lifecycle status usable with `api.status()`. */
|
|
280
322
|
declare function getStatuses(): LanguageStatus[];
|
|
281
323
|
|
|
282
|
-
export { type
|
|
324
|
+
export { type CategoryInfo as C, type EcosystemInfo as E, type LanguageCategory as L, type PackageManagerInfo as P, type RelatedRequest as R, type StatusRequest as S, type CategoryRequest as a, type EcosystemRequest as b, type ExtensionRequest as c, type ParadigmInfo as d, type ParadigmRequest as e, type ResolvedLanguageRequest as f, type RuntimeInfo as g, api as h, getCategories as i, getEcosystems as j, getPackageManagers as k, getParadigms as l, getRuntimes as m, getStatuses as n, type LanguageCollectionRequest as o, type LanguageRequest as p, type PackageManagerRequest as q, type RuntimeRequest as r };
|
package/dist/api.cjs
CHANGED
|
@@ -18467,6 +18467,50 @@ var init_zsh = __esm({
|
|
|
18467
18467
|
});
|
|
18468
18468
|
|
|
18469
18469
|
// src/domain/category/registry.ts
|
|
18470
|
+
var CATEGORY_REGISTRY = [
|
|
18471
|
+
{
|
|
18472
|
+
slug: "frontend",
|
|
18473
|
+
name: "Frontend",
|
|
18474
|
+
description: "Languages that target the browser only.",
|
|
18475
|
+
aliases: ["frontend", "front-end"]
|
|
18476
|
+
},
|
|
18477
|
+
{
|
|
18478
|
+
slug: "backend",
|
|
18479
|
+
name: "Backend",
|
|
18480
|
+
description: "Languages that run on a server runtime.",
|
|
18481
|
+
aliases: ["backend", "back-end", "server"]
|
|
18482
|
+
},
|
|
18483
|
+
{
|
|
18484
|
+
slug: "fullstack",
|
|
18485
|
+
name: "Fullstack",
|
|
18486
|
+
description: "Languages that target both the browser and a server runtime.",
|
|
18487
|
+
aliases: ["fullstack", "full-stack"]
|
|
18488
|
+
},
|
|
18489
|
+
{
|
|
18490
|
+
slug: "systems",
|
|
18491
|
+
name: "Systems",
|
|
18492
|
+
description: "Low-level, native, and embedded programming languages.",
|
|
18493
|
+
aliases: ["systems", "systems-programming", "low-level"]
|
|
18494
|
+
},
|
|
18495
|
+
{
|
|
18496
|
+
slug: "data-science",
|
|
18497
|
+
name: "Data Science",
|
|
18498
|
+
description: "Languages for data analysis, machine learning, and scientific computing.",
|
|
18499
|
+
aliases: ["data-science", "datascience", "data"]
|
|
18500
|
+
},
|
|
18501
|
+
{
|
|
18502
|
+
slug: "scripting",
|
|
18503
|
+
name: "Scripting",
|
|
18504
|
+
description: "Shell and scripting languages.",
|
|
18505
|
+
aliases: ["scripting", "shell"]
|
|
18506
|
+
},
|
|
18507
|
+
{
|
|
18508
|
+
slug: "other",
|
|
18509
|
+
name: "Other",
|
|
18510
|
+
description: "Languages that do not match any other category.",
|
|
18511
|
+
aliases: ["other"]
|
|
18512
|
+
}
|
|
18513
|
+
];
|
|
18470
18514
|
var BROWSER_TARGETS = ["Browser"];
|
|
18471
18515
|
var SERVER_TARGETS = [
|
|
18472
18516
|
"Node.js",
|
|
@@ -18536,6 +18580,18 @@ function matchesCategory(lang, category) {
|
|
|
18536
18580
|
return !browser && !server && !poolMatches(pool, SYSTEMS_TARGETS) && !poolMatches(pool, DATA_TARGETS) && !poolMatches(pool, SCRIPT_TARGETS);
|
|
18537
18581
|
}
|
|
18538
18582
|
}
|
|
18583
|
+
function findCategory(value) {
|
|
18584
|
+
const key = value.trim().toLowerCase();
|
|
18585
|
+
return CATEGORY_REGISTRY.find((c2) => c2.aliases.includes(key));
|
|
18586
|
+
}
|
|
18587
|
+
function categoryInfoFromDefinition(def) {
|
|
18588
|
+
return {
|
|
18589
|
+
slug: def.slug,
|
|
18590
|
+
name: def.name,
|
|
18591
|
+
description: def.description,
|
|
18592
|
+
aliases: def.aliases
|
|
18593
|
+
};
|
|
18594
|
+
}
|
|
18539
18595
|
|
|
18540
18596
|
// src/domain/detection/match.ts
|
|
18541
18597
|
var pathSegmentPattern = /[/\\]/;
|
|
@@ -20411,6 +20467,14 @@ function packageManagerInfoFromDefinition(def) {
|
|
|
20411
20467
|
aliases: def.aliases
|
|
20412
20468
|
};
|
|
20413
20469
|
}
|
|
20470
|
+
function packageManagersForRuntime(names) {
|
|
20471
|
+
const keys = names.map((name) => name.trim().toLowerCase());
|
|
20472
|
+
return PACKAGE_MANAGER_REGISTRY.filter(
|
|
20473
|
+
(pm) => keys.some(
|
|
20474
|
+
(key) => pm.name.toLowerCase() === key || pm.aliases.includes(key) || pm.targets.some((target) => target.toLowerCase() === key)
|
|
20475
|
+
)
|
|
20476
|
+
).map(packageManagerInfoFromDefinition);
|
|
20477
|
+
}
|
|
20414
20478
|
|
|
20415
20479
|
// src/domain/paradigm/registry.ts
|
|
20416
20480
|
var PARADIGM_REGISTRY = [
|
|
@@ -21079,13 +21143,93 @@ var createLanguageRequest = (getLanguage, loadLanguageModule) => {
|
|
|
21079
21143
|
};
|
|
21080
21144
|
return request;
|
|
21081
21145
|
};
|
|
21146
|
+
var getLanguageBySlug = (slug) => languageMap.get(slug);
|
|
21147
|
+
var getRelationSlugs = (language) => {
|
|
21148
|
+
const { supersetOf = [], dialectOf = [], compilesTo = [] } = language.relations ?? {};
|
|
21149
|
+
return [...supersetOf, ...dialectOf, ...compilesTo];
|
|
21150
|
+
};
|
|
21151
|
+
var categoryPredicate = (value) => {
|
|
21152
|
+
const resolvedCategory = findCategory(value)?.slug ?? value;
|
|
21153
|
+
return (language) => matchesCategory(language, resolvedCategory);
|
|
21154
|
+
};
|
|
21155
|
+
var paradigmPredicate = (value) => {
|
|
21156
|
+
const targets = findParadigm(value)?.targets ?? [value];
|
|
21157
|
+
return (language) => matchesParadigm(language, targets);
|
|
21158
|
+
};
|
|
21159
|
+
var runtimePredicate = (value) => {
|
|
21160
|
+
const targets = findRuntime(value)?.targets ?? [value];
|
|
21161
|
+
return (language) => matchesRuntime(language, targets);
|
|
21162
|
+
};
|
|
21163
|
+
var packageManagerPredicate = (value) => {
|
|
21164
|
+
const targets = findPackageManager(value)?.targets ?? [value];
|
|
21165
|
+
return (language) => matchesPackageManager(language, targets);
|
|
21166
|
+
};
|
|
21167
|
+
var ecosystemPredicate = (value) => {
|
|
21168
|
+
const targets = findEcosystem(value)?.targets ?? [value];
|
|
21169
|
+
return (language) => matchesEcosystem(language, targets);
|
|
21170
|
+
};
|
|
21171
|
+
var extensionPredicate = (value) => {
|
|
21172
|
+
const normalized = value.trim().toLowerCase();
|
|
21173
|
+
return (language) => language.extensions.some((extension) => {
|
|
21174
|
+
const normalizedExtension = extension.toLowerCase();
|
|
21175
|
+
return normalizedExtension === normalized || normalizedExtension === `.${normalized}`;
|
|
21176
|
+
});
|
|
21177
|
+
};
|
|
21178
|
+
var statusPredicate = (value) => (language) => (language.status ?? "active") === value;
|
|
21179
|
+
var relatedPredicate = (slug) => {
|
|
21180
|
+
const resolvedSlug = resolveLanguageLookup(slug);
|
|
21181
|
+
const source = getLanguageBySlug(resolvedSlug);
|
|
21182
|
+
const outgoing = new Set(source ? getRelationSlugs(source) : []);
|
|
21183
|
+
return (language) => language.slug !== resolvedSlug && (outgoing.has(language.slug) || getRelationSlugs(language).includes(resolvedSlug));
|
|
21184
|
+
};
|
|
21082
21185
|
var createLanguageCollectionRequest = (getLanguageList, loadLanguageList) => {
|
|
21083
21186
|
let requestedLocale = defaultLocale;
|
|
21187
|
+
const narrow = (predicate) => {
|
|
21188
|
+
const filtered = () => getLanguageList().filter(predicate);
|
|
21189
|
+
const next = createLanguageCollectionRequest(filtered, async () => {
|
|
21190
|
+
const loaded = await Promise.all(filtered().map((language) => loadLanguage(language.slug)));
|
|
21191
|
+
return loaded.filter((language) => Boolean(language));
|
|
21192
|
+
});
|
|
21193
|
+
return next.locale(requestedLocale);
|
|
21194
|
+
};
|
|
21084
21195
|
const request = {
|
|
21085
21196
|
locale(locale) {
|
|
21086
21197
|
requestedLocale = locale;
|
|
21087
21198
|
return request;
|
|
21088
21199
|
},
|
|
21200
|
+
category(value) {
|
|
21201
|
+
return narrow(categoryPredicate(value));
|
|
21202
|
+
},
|
|
21203
|
+
paradigm(value) {
|
|
21204
|
+
return narrow(paradigmPredicate(value));
|
|
21205
|
+
},
|
|
21206
|
+
runtime(value) {
|
|
21207
|
+
return narrow(runtimePredicate(value));
|
|
21208
|
+
},
|
|
21209
|
+
packageManager(value) {
|
|
21210
|
+
return narrow(packageManagerPredicate(value));
|
|
21211
|
+
},
|
|
21212
|
+
ecosystem(value) {
|
|
21213
|
+
return narrow(ecosystemPredicate(value));
|
|
21214
|
+
},
|
|
21215
|
+
extension(value) {
|
|
21216
|
+
return narrow(extensionPredicate(value));
|
|
21217
|
+
},
|
|
21218
|
+
status(value) {
|
|
21219
|
+
return narrow(statusPredicate(value));
|
|
21220
|
+
},
|
|
21221
|
+
related(slug) {
|
|
21222
|
+
return narrow(relatedPredicate(slug));
|
|
21223
|
+
},
|
|
21224
|
+
slugs() {
|
|
21225
|
+
return getLanguageList().map((language) => language.slug);
|
|
21226
|
+
},
|
|
21227
|
+
count() {
|
|
21228
|
+
return getLanguageList().length;
|
|
21229
|
+
},
|
|
21230
|
+
first() {
|
|
21231
|
+
return localizeOptionalLanguage(getLanguageList().at(0), requestedLocale);
|
|
21232
|
+
},
|
|
21089
21233
|
get() {
|
|
21090
21234
|
return getLanguageList().map((language) => localizeLanguage(language, requestedLocale));
|
|
21091
21235
|
},
|
|
@@ -21103,17 +21247,20 @@ var createFilteredLanguageCollection = (predicate) => {
|
|
|
21103
21247
|
return loaded.filter((language) => Boolean(language));
|
|
21104
21248
|
});
|
|
21105
21249
|
};
|
|
21250
|
+
var createGroupSelection = (definition, toInfo, predicate) => ({
|
|
21251
|
+
info() {
|
|
21252
|
+
return definition ? toInfo(definition) : void 0;
|
|
21253
|
+
},
|
|
21254
|
+
langs() {
|
|
21255
|
+
return createFilteredLanguageCollection(predicate);
|
|
21256
|
+
}
|
|
21257
|
+
});
|
|
21106
21258
|
var loadDetectedLanguages = async (filename) => {
|
|
21107
21259
|
const detectedLanguages = await Promise.all(
|
|
21108
21260
|
detectLanguageSlugs(filename).map((slug) => loadLanguage(slug))
|
|
21109
21261
|
);
|
|
21110
21262
|
return detectedLanguages.filter((language) => Boolean(language));
|
|
21111
21263
|
};
|
|
21112
|
-
var getLanguageBySlug = (slug) => languageMap.get(slug);
|
|
21113
|
-
var getRelationSlugs = (language) => {
|
|
21114
|
-
const { supersetOf = [], dialectOf = [], compilesTo = [] } = language.relations ?? {};
|
|
21115
|
-
return [...supersetOf, ...dialectOf, ...compilesTo];
|
|
21116
|
-
};
|
|
21117
21264
|
var getDetectedLanguages = (filename) => detectLanguageSlugs(filename).map((slug) => getLanguageBySlug(slug)).filter((language) => Boolean(language));
|
|
21118
21265
|
var api = {
|
|
21119
21266
|
/**
|
|
@@ -21177,15 +21324,9 @@ var api = {
|
|
|
21177
21324
|
* api.extension('ts').langs().locale('es').get();
|
|
21178
21325
|
*/
|
|
21179
21326
|
extension(value) {
|
|
21180
|
-
const normalized = value.trim().toLowerCase();
|
|
21181
21327
|
return {
|
|
21182
21328
|
langs() {
|
|
21183
|
-
return createFilteredLanguageCollection(
|
|
21184
|
-
(language) => language.extensions.some((extension) => {
|
|
21185
|
-
const normalizedExtension = extension.toLowerCase();
|
|
21186
|
-
return normalizedExtension === normalized || normalizedExtension === `.${normalized}`;
|
|
21187
|
-
})
|
|
21188
|
-
);
|
|
21329
|
+
return createFilteredLanguageCollection(extensionPredicate(value));
|
|
21189
21330
|
}
|
|
21190
21331
|
};
|
|
21191
21332
|
},
|
|
@@ -21241,9 +21382,7 @@ var api = {
|
|
|
21241
21382
|
status(value) {
|
|
21242
21383
|
return {
|
|
21243
21384
|
langs() {
|
|
21244
|
-
return createFilteredLanguageCollection(
|
|
21245
|
-
(language) => (language.status ?? "active") === value
|
|
21246
|
-
);
|
|
21385
|
+
return createFilteredLanguageCollection(statusPredicate(value));
|
|
21247
21386
|
}
|
|
21248
21387
|
};
|
|
21249
21388
|
},
|
|
@@ -21256,14 +21395,9 @@ var api = {
|
|
|
21256
21395
|
* api.related('typescript').langs().get(); // JavaScript
|
|
21257
21396
|
*/
|
|
21258
21397
|
related(slug) {
|
|
21259
|
-
const resolvedSlug = resolveLanguageLookup(slug);
|
|
21260
21398
|
return {
|
|
21261
21399
|
langs() {
|
|
21262
|
-
|
|
21263
|
-
const outgoing = new Set(source ? getRelationSlugs(source) : []);
|
|
21264
|
-
return createFilteredLanguageCollection(
|
|
21265
|
-
(language) => language.slug !== resolvedSlug && (outgoing.has(language.slug) || getRelationSlugs(language).includes(resolvedSlug))
|
|
21266
|
-
);
|
|
21400
|
+
return createFilteredLanguageCollection(relatedPredicate(slug));
|
|
21267
21401
|
}
|
|
21268
21402
|
};
|
|
21269
21403
|
},
|
|
@@ -21276,16 +21410,14 @@ var api = {
|
|
|
21276
21410
|
* @example
|
|
21277
21411
|
* api.runtime('node').langs().locale('es').get();
|
|
21278
21412
|
* api.runtime('.net').info();
|
|
21413
|
+
* api.runtime('node').packageManagers();
|
|
21279
21414
|
*/
|
|
21280
21415
|
runtime(value) {
|
|
21281
21416
|
const definition = findRuntime(value);
|
|
21282
|
-
const targets = definition?.targets ?? [value];
|
|
21283
21417
|
return {
|
|
21284
|
-
|
|
21285
|
-
|
|
21286
|
-
|
|
21287
|
-
langs() {
|
|
21288
|
-
return createFilteredLanguageCollection((language) => matchesRuntime(language, targets));
|
|
21418
|
+
...createGroupSelection(definition, runtimeInfoFromDefinition, runtimePredicate(value)),
|
|
21419
|
+
packageManagers() {
|
|
21420
|
+
return definition ? packageManagersForRuntime(definition.packageManagers) : [];
|
|
21289
21421
|
}
|
|
21290
21422
|
};
|
|
21291
21423
|
},
|
|
@@ -21303,14 +21435,11 @@ var api = {
|
|
|
21303
21435
|
const definition = findPackageManager(value);
|
|
21304
21436
|
const targets = definition?.targets ?? [value];
|
|
21305
21437
|
return {
|
|
21306
|
-
|
|
21307
|
-
|
|
21308
|
-
|
|
21309
|
-
|
|
21310
|
-
|
|
21311
|
-
(language) => matchesPackageManager(language, targets)
|
|
21312
|
-
);
|
|
21313
|
-
},
|
|
21438
|
+
...createGroupSelection(
|
|
21439
|
+
definition,
|
|
21440
|
+
packageManagerInfoFromDefinition,
|
|
21441
|
+
packageManagerPredicate(value)
|
|
21442
|
+
),
|
|
21314
21443
|
runtimes() {
|
|
21315
21444
|
return runtimesForPackageManager(targets);
|
|
21316
21445
|
}
|
|
@@ -21332,14 +21461,15 @@ var api = {
|
|
|
21332
21461
|
*
|
|
21333
21462
|
* @example
|
|
21334
21463
|
* api.category('backend').langs().locale('es').get();
|
|
21464
|
+
* api.category('backend').info();
|
|
21335
21465
|
* await api.category('data-science').langs().load();
|
|
21336
21466
|
*/
|
|
21337
21467
|
category(value) {
|
|
21338
|
-
return
|
|
21339
|
-
|
|
21340
|
-
|
|
21341
|
-
|
|
21342
|
-
|
|
21468
|
+
return createGroupSelection(
|
|
21469
|
+
findCategory(value),
|
|
21470
|
+
categoryInfoFromDefinition,
|
|
21471
|
+
categoryPredicate(value)
|
|
21472
|
+
);
|
|
21343
21473
|
},
|
|
21344
21474
|
/**
|
|
21345
21475
|
* Selects every language that uses the given programming paradigm.
|
|
@@ -21352,16 +21482,11 @@ var api = {
|
|
|
21352
21482
|
* api.paradigm('oop').info();
|
|
21353
21483
|
*/
|
|
21354
21484
|
paradigm(value) {
|
|
21355
|
-
|
|
21356
|
-
|
|
21357
|
-
|
|
21358
|
-
|
|
21359
|
-
|
|
21360
|
-
},
|
|
21361
|
-
langs() {
|
|
21362
|
-
return createFilteredLanguageCollection((language) => matchesParadigm(language, targets));
|
|
21363
|
-
}
|
|
21364
|
-
};
|
|
21485
|
+
return createGroupSelection(
|
|
21486
|
+
findParadigm(value),
|
|
21487
|
+
paradigmInfoFromDefinition,
|
|
21488
|
+
paradigmPredicate(value)
|
|
21489
|
+
);
|
|
21365
21490
|
},
|
|
21366
21491
|
/**
|
|
21367
21492
|
* Selects every language that belongs to the given ecosystem.
|
|
@@ -21374,16 +21499,11 @@ var api = {
|
|
|
21374
21499
|
* api.ecosystem('blockchain').info();
|
|
21375
21500
|
*/
|
|
21376
21501
|
ecosystem(value) {
|
|
21377
|
-
|
|
21378
|
-
|
|
21379
|
-
|
|
21380
|
-
|
|
21381
|
-
|
|
21382
|
-
},
|
|
21383
|
-
langs() {
|
|
21384
|
-
return createFilteredLanguageCollection((language) => matchesEcosystem(language, targets));
|
|
21385
|
-
}
|
|
21386
|
-
};
|
|
21502
|
+
return createGroupSelection(
|
|
21503
|
+
findEcosystem(value),
|
|
21504
|
+
ecosystemInfoFromDefinition,
|
|
21505
|
+
ecosystemPredicate(value)
|
|
21506
|
+
);
|
|
21387
21507
|
},
|
|
21388
21508
|
/**
|
|
21389
21509
|
* Detects every matching language for a filename or path.
|
package/dist/api.d.cts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { C as CategoryRequest, E as EcosystemInfo,
|
|
1
|
+
export { C as CategoryInfo, a as CategoryRequest, E as EcosystemInfo, b as EcosystemRequest, c as ExtensionRequest, L as LanguageCategory, o as LanguageCollectionRequest, p as LanguageRequest, q as PackageManagerRequest, d as ParadigmInfo, e as ParadigmRequest, R as RelatedRequest, f as ResolvedLanguageRequest, r as RuntimeRequest, S as StatusRequest, h as api, n as getStatuses } from './api-jHE_4U3C.cjs';
|
|
2
2
|
export { L as LanguageSlug } from './registry-DftZRMv6.cjs';
|
|
3
3
|
import './types-BRDmsib7.cjs';
|
package/dist/api.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { C as CategoryRequest, E as EcosystemInfo,
|
|
1
|
+
export { C as CategoryInfo, a as CategoryRequest, E as EcosystemInfo, b as EcosystemRequest, c as ExtensionRequest, L as LanguageCategory, o as LanguageCollectionRequest, p as LanguageRequest, q as PackageManagerRequest, d as ParadigmInfo, e as ParadigmRequest, R as RelatedRequest, f as ResolvedLanguageRequest, r as RuntimeRequest, S as StatusRequest, h as api, n as getStatuses } from './api-CiSr3n5R.js';
|
|
2
2
|
export { L as LanguageSlug } from './registry-DftZRMv6.js';
|
|
3
3
|
import './types-BRDmsib7.js';
|