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/dist/api.js
CHANGED
|
@@ -18465,6 +18465,50 @@ var init_zsh = __esm({
|
|
|
18465
18465
|
});
|
|
18466
18466
|
|
|
18467
18467
|
// src/domain/category/registry.ts
|
|
18468
|
+
var CATEGORY_REGISTRY = [
|
|
18469
|
+
{
|
|
18470
|
+
slug: "frontend",
|
|
18471
|
+
name: "Frontend",
|
|
18472
|
+
description: "Languages that target the browser only.",
|
|
18473
|
+
aliases: ["frontend", "front-end"]
|
|
18474
|
+
},
|
|
18475
|
+
{
|
|
18476
|
+
slug: "backend",
|
|
18477
|
+
name: "Backend",
|
|
18478
|
+
description: "Languages that run on a server runtime.",
|
|
18479
|
+
aliases: ["backend", "back-end", "server"]
|
|
18480
|
+
},
|
|
18481
|
+
{
|
|
18482
|
+
slug: "fullstack",
|
|
18483
|
+
name: "Fullstack",
|
|
18484
|
+
description: "Languages that target both the browser and a server runtime.",
|
|
18485
|
+
aliases: ["fullstack", "full-stack"]
|
|
18486
|
+
},
|
|
18487
|
+
{
|
|
18488
|
+
slug: "systems",
|
|
18489
|
+
name: "Systems",
|
|
18490
|
+
description: "Low-level, native, and embedded programming languages.",
|
|
18491
|
+
aliases: ["systems", "systems-programming", "low-level"]
|
|
18492
|
+
},
|
|
18493
|
+
{
|
|
18494
|
+
slug: "data-science",
|
|
18495
|
+
name: "Data Science",
|
|
18496
|
+
description: "Languages for data analysis, machine learning, and scientific computing.",
|
|
18497
|
+
aliases: ["data-science", "datascience", "data"]
|
|
18498
|
+
},
|
|
18499
|
+
{
|
|
18500
|
+
slug: "scripting",
|
|
18501
|
+
name: "Scripting",
|
|
18502
|
+
description: "Shell and scripting languages.",
|
|
18503
|
+
aliases: ["scripting", "shell"]
|
|
18504
|
+
},
|
|
18505
|
+
{
|
|
18506
|
+
slug: "other",
|
|
18507
|
+
name: "Other",
|
|
18508
|
+
description: "Languages that do not match any other category.",
|
|
18509
|
+
aliases: ["other"]
|
|
18510
|
+
}
|
|
18511
|
+
];
|
|
18468
18512
|
var BROWSER_TARGETS = ["Browser"];
|
|
18469
18513
|
var SERVER_TARGETS = [
|
|
18470
18514
|
"Node.js",
|
|
@@ -18534,6 +18578,18 @@ function matchesCategory(lang, category) {
|
|
|
18534
18578
|
return !browser && !server && !poolMatches(pool, SYSTEMS_TARGETS) && !poolMatches(pool, DATA_TARGETS) && !poolMatches(pool, SCRIPT_TARGETS);
|
|
18535
18579
|
}
|
|
18536
18580
|
}
|
|
18581
|
+
function findCategory(value) {
|
|
18582
|
+
const key = value.trim().toLowerCase();
|
|
18583
|
+
return CATEGORY_REGISTRY.find((c2) => c2.aliases.includes(key));
|
|
18584
|
+
}
|
|
18585
|
+
function categoryInfoFromDefinition(def) {
|
|
18586
|
+
return {
|
|
18587
|
+
slug: def.slug,
|
|
18588
|
+
name: def.name,
|
|
18589
|
+
description: def.description,
|
|
18590
|
+
aliases: def.aliases
|
|
18591
|
+
};
|
|
18592
|
+
}
|
|
18537
18593
|
|
|
18538
18594
|
// src/domain/detection/match.ts
|
|
18539
18595
|
var pathSegmentPattern = /[/\\]/;
|
|
@@ -20409,6 +20465,14 @@ function packageManagerInfoFromDefinition(def) {
|
|
|
20409
20465
|
aliases: def.aliases
|
|
20410
20466
|
};
|
|
20411
20467
|
}
|
|
20468
|
+
function packageManagersForRuntime(names) {
|
|
20469
|
+
const keys = names.map((name) => name.trim().toLowerCase());
|
|
20470
|
+
return PACKAGE_MANAGER_REGISTRY.filter(
|
|
20471
|
+
(pm) => keys.some(
|
|
20472
|
+
(key) => pm.name.toLowerCase() === key || pm.aliases.includes(key) || pm.targets.some((target) => target.toLowerCase() === key)
|
|
20473
|
+
)
|
|
20474
|
+
).map(packageManagerInfoFromDefinition);
|
|
20475
|
+
}
|
|
20412
20476
|
|
|
20413
20477
|
// src/domain/paradigm/registry.ts
|
|
20414
20478
|
var PARADIGM_REGISTRY = [
|
|
@@ -21077,13 +21141,93 @@ var createLanguageRequest = (getLanguage, loadLanguageModule) => {
|
|
|
21077
21141
|
};
|
|
21078
21142
|
return request;
|
|
21079
21143
|
};
|
|
21144
|
+
var getLanguageBySlug = (slug) => languageMap.get(slug);
|
|
21145
|
+
var getRelationSlugs = (language) => {
|
|
21146
|
+
const { supersetOf = [], dialectOf = [], compilesTo = [] } = language.relations ?? {};
|
|
21147
|
+
return [...supersetOf, ...dialectOf, ...compilesTo];
|
|
21148
|
+
};
|
|
21149
|
+
var categoryPredicate = (value) => {
|
|
21150
|
+
const resolvedCategory = findCategory(value)?.slug ?? value;
|
|
21151
|
+
return (language) => matchesCategory(language, resolvedCategory);
|
|
21152
|
+
};
|
|
21153
|
+
var paradigmPredicate = (value) => {
|
|
21154
|
+
const targets = findParadigm(value)?.targets ?? [value];
|
|
21155
|
+
return (language) => matchesParadigm(language, targets);
|
|
21156
|
+
};
|
|
21157
|
+
var runtimePredicate = (value) => {
|
|
21158
|
+
const targets = findRuntime(value)?.targets ?? [value];
|
|
21159
|
+
return (language) => matchesRuntime(language, targets);
|
|
21160
|
+
};
|
|
21161
|
+
var packageManagerPredicate = (value) => {
|
|
21162
|
+
const targets = findPackageManager(value)?.targets ?? [value];
|
|
21163
|
+
return (language) => matchesPackageManager(language, targets);
|
|
21164
|
+
};
|
|
21165
|
+
var ecosystemPredicate = (value) => {
|
|
21166
|
+
const targets = findEcosystem(value)?.targets ?? [value];
|
|
21167
|
+
return (language) => matchesEcosystem(language, targets);
|
|
21168
|
+
};
|
|
21169
|
+
var extensionPredicate = (value) => {
|
|
21170
|
+
const normalized = value.trim().toLowerCase();
|
|
21171
|
+
return (language) => language.extensions.some((extension) => {
|
|
21172
|
+
const normalizedExtension = extension.toLowerCase();
|
|
21173
|
+
return normalizedExtension === normalized || normalizedExtension === `.${normalized}`;
|
|
21174
|
+
});
|
|
21175
|
+
};
|
|
21176
|
+
var statusPredicate = (value) => (language) => (language.status ?? "active") === value;
|
|
21177
|
+
var relatedPredicate = (slug) => {
|
|
21178
|
+
const resolvedSlug = resolveLanguageLookup(slug);
|
|
21179
|
+
const source = getLanguageBySlug(resolvedSlug);
|
|
21180
|
+
const outgoing = new Set(source ? getRelationSlugs(source) : []);
|
|
21181
|
+
return (language) => language.slug !== resolvedSlug && (outgoing.has(language.slug) || getRelationSlugs(language).includes(resolvedSlug));
|
|
21182
|
+
};
|
|
21080
21183
|
var createLanguageCollectionRequest = (getLanguageList, loadLanguageList) => {
|
|
21081
21184
|
let requestedLocale = defaultLocale;
|
|
21185
|
+
const narrow = (predicate) => {
|
|
21186
|
+
const filtered = () => getLanguageList().filter(predicate);
|
|
21187
|
+
const next = createLanguageCollectionRequest(filtered, async () => {
|
|
21188
|
+
const loaded = await Promise.all(filtered().map((language) => loadLanguage(language.slug)));
|
|
21189
|
+
return loaded.filter((language) => Boolean(language));
|
|
21190
|
+
});
|
|
21191
|
+
return next.locale(requestedLocale);
|
|
21192
|
+
};
|
|
21082
21193
|
const request = {
|
|
21083
21194
|
locale(locale) {
|
|
21084
21195
|
requestedLocale = locale;
|
|
21085
21196
|
return request;
|
|
21086
21197
|
},
|
|
21198
|
+
category(value) {
|
|
21199
|
+
return narrow(categoryPredicate(value));
|
|
21200
|
+
},
|
|
21201
|
+
paradigm(value) {
|
|
21202
|
+
return narrow(paradigmPredicate(value));
|
|
21203
|
+
},
|
|
21204
|
+
runtime(value) {
|
|
21205
|
+
return narrow(runtimePredicate(value));
|
|
21206
|
+
},
|
|
21207
|
+
packageManager(value) {
|
|
21208
|
+
return narrow(packageManagerPredicate(value));
|
|
21209
|
+
},
|
|
21210
|
+
ecosystem(value) {
|
|
21211
|
+
return narrow(ecosystemPredicate(value));
|
|
21212
|
+
},
|
|
21213
|
+
extension(value) {
|
|
21214
|
+
return narrow(extensionPredicate(value));
|
|
21215
|
+
},
|
|
21216
|
+
status(value) {
|
|
21217
|
+
return narrow(statusPredicate(value));
|
|
21218
|
+
},
|
|
21219
|
+
related(slug) {
|
|
21220
|
+
return narrow(relatedPredicate(slug));
|
|
21221
|
+
},
|
|
21222
|
+
slugs() {
|
|
21223
|
+
return getLanguageList().map((language) => language.slug);
|
|
21224
|
+
},
|
|
21225
|
+
count() {
|
|
21226
|
+
return getLanguageList().length;
|
|
21227
|
+
},
|
|
21228
|
+
first() {
|
|
21229
|
+
return localizeOptionalLanguage(getLanguageList().at(0), requestedLocale);
|
|
21230
|
+
},
|
|
21087
21231
|
get() {
|
|
21088
21232
|
return getLanguageList().map((language) => localizeLanguage(language, requestedLocale));
|
|
21089
21233
|
},
|
|
@@ -21101,17 +21245,20 @@ var createFilteredLanguageCollection = (predicate) => {
|
|
|
21101
21245
|
return loaded.filter((language) => Boolean(language));
|
|
21102
21246
|
});
|
|
21103
21247
|
};
|
|
21248
|
+
var createGroupSelection = (definition, toInfo, predicate) => ({
|
|
21249
|
+
info() {
|
|
21250
|
+
return definition ? toInfo(definition) : void 0;
|
|
21251
|
+
},
|
|
21252
|
+
langs() {
|
|
21253
|
+
return createFilteredLanguageCollection(predicate);
|
|
21254
|
+
}
|
|
21255
|
+
});
|
|
21104
21256
|
var loadDetectedLanguages = async (filename) => {
|
|
21105
21257
|
const detectedLanguages = await Promise.all(
|
|
21106
21258
|
detectLanguageSlugs(filename).map((slug) => loadLanguage(slug))
|
|
21107
21259
|
);
|
|
21108
21260
|
return detectedLanguages.filter((language) => Boolean(language));
|
|
21109
21261
|
};
|
|
21110
|
-
var getLanguageBySlug = (slug) => languageMap.get(slug);
|
|
21111
|
-
var getRelationSlugs = (language) => {
|
|
21112
|
-
const { supersetOf = [], dialectOf = [], compilesTo = [] } = language.relations ?? {};
|
|
21113
|
-
return [...supersetOf, ...dialectOf, ...compilesTo];
|
|
21114
|
-
};
|
|
21115
21262
|
var getDetectedLanguages = (filename) => detectLanguageSlugs(filename).map((slug) => getLanguageBySlug(slug)).filter((language) => Boolean(language));
|
|
21116
21263
|
var api = {
|
|
21117
21264
|
/**
|
|
@@ -21175,15 +21322,9 @@ var api = {
|
|
|
21175
21322
|
* api.extension('ts').langs().locale('es').get();
|
|
21176
21323
|
*/
|
|
21177
21324
|
extension(value) {
|
|
21178
|
-
const normalized = value.trim().toLowerCase();
|
|
21179
21325
|
return {
|
|
21180
21326
|
langs() {
|
|
21181
|
-
return createFilteredLanguageCollection(
|
|
21182
|
-
(language) => language.extensions.some((extension) => {
|
|
21183
|
-
const normalizedExtension = extension.toLowerCase();
|
|
21184
|
-
return normalizedExtension === normalized || normalizedExtension === `.${normalized}`;
|
|
21185
|
-
})
|
|
21186
|
-
);
|
|
21327
|
+
return createFilteredLanguageCollection(extensionPredicate(value));
|
|
21187
21328
|
}
|
|
21188
21329
|
};
|
|
21189
21330
|
},
|
|
@@ -21239,9 +21380,7 @@ var api = {
|
|
|
21239
21380
|
status(value) {
|
|
21240
21381
|
return {
|
|
21241
21382
|
langs() {
|
|
21242
|
-
return createFilteredLanguageCollection(
|
|
21243
|
-
(language) => (language.status ?? "active") === value
|
|
21244
|
-
);
|
|
21383
|
+
return createFilteredLanguageCollection(statusPredicate(value));
|
|
21245
21384
|
}
|
|
21246
21385
|
};
|
|
21247
21386
|
},
|
|
@@ -21254,14 +21393,9 @@ var api = {
|
|
|
21254
21393
|
* api.related('typescript').langs().get(); // JavaScript
|
|
21255
21394
|
*/
|
|
21256
21395
|
related(slug) {
|
|
21257
|
-
const resolvedSlug = resolveLanguageLookup(slug);
|
|
21258
21396
|
return {
|
|
21259
21397
|
langs() {
|
|
21260
|
-
|
|
21261
|
-
const outgoing = new Set(source ? getRelationSlugs(source) : []);
|
|
21262
|
-
return createFilteredLanguageCollection(
|
|
21263
|
-
(language) => language.slug !== resolvedSlug && (outgoing.has(language.slug) || getRelationSlugs(language).includes(resolvedSlug))
|
|
21264
|
-
);
|
|
21398
|
+
return createFilteredLanguageCollection(relatedPredicate(slug));
|
|
21265
21399
|
}
|
|
21266
21400
|
};
|
|
21267
21401
|
},
|
|
@@ -21274,16 +21408,14 @@ var api = {
|
|
|
21274
21408
|
* @example
|
|
21275
21409
|
* api.runtime('node').langs().locale('es').get();
|
|
21276
21410
|
* api.runtime('.net').info();
|
|
21411
|
+
* api.runtime('node').packageManagers();
|
|
21277
21412
|
*/
|
|
21278
21413
|
runtime(value) {
|
|
21279
21414
|
const definition = findRuntime(value);
|
|
21280
|
-
const targets = definition?.targets ?? [value];
|
|
21281
21415
|
return {
|
|
21282
|
-
|
|
21283
|
-
|
|
21284
|
-
|
|
21285
|
-
langs() {
|
|
21286
|
-
return createFilteredLanguageCollection((language) => matchesRuntime(language, targets));
|
|
21416
|
+
...createGroupSelection(definition, runtimeInfoFromDefinition, runtimePredicate(value)),
|
|
21417
|
+
packageManagers() {
|
|
21418
|
+
return definition ? packageManagersForRuntime(definition.packageManagers) : [];
|
|
21287
21419
|
}
|
|
21288
21420
|
};
|
|
21289
21421
|
},
|
|
@@ -21301,14 +21433,11 @@ var api = {
|
|
|
21301
21433
|
const definition = findPackageManager(value);
|
|
21302
21434
|
const targets = definition?.targets ?? [value];
|
|
21303
21435
|
return {
|
|
21304
|
-
|
|
21305
|
-
|
|
21306
|
-
|
|
21307
|
-
|
|
21308
|
-
|
|
21309
|
-
(language) => matchesPackageManager(language, targets)
|
|
21310
|
-
);
|
|
21311
|
-
},
|
|
21436
|
+
...createGroupSelection(
|
|
21437
|
+
definition,
|
|
21438
|
+
packageManagerInfoFromDefinition,
|
|
21439
|
+
packageManagerPredicate(value)
|
|
21440
|
+
),
|
|
21312
21441
|
runtimes() {
|
|
21313
21442
|
return runtimesForPackageManager(targets);
|
|
21314
21443
|
}
|
|
@@ -21330,14 +21459,15 @@ var api = {
|
|
|
21330
21459
|
*
|
|
21331
21460
|
* @example
|
|
21332
21461
|
* api.category('backend').langs().locale('es').get();
|
|
21462
|
+
* api.category('backend').info();
|
|
21333
21463
|
* await api.category('data-science').langs().load();
|
|
21334
21464
|
*/
|
|
21335
21465
|
category(value) {
|
|
21336
|
-
return
|
|
21337
|
-
|
|
21338
|
-
|
|
21339
|
-
|
|
21340
|
-
|
|
21466
|
+
return createGroupSelection(
|
|
21467
|
+
findCategory(value),
|
|
21468
|
+
categoryInfoFromDefinition,
|
|
21469
|
+
categoryPredicate(value)
|
|
21470
|
+
);
|
|
21341
21471
|
},
|
|
21342
21472
|
/**
|
|
21343
21473
|
* Selects every language that uses the given programming paradigm.
|
|
@@ -21350,16 +21480,11 @@ var api = {
|
|
|
21350
21480
|
* api.paradigm('oop').info();
|
|
21351
21481
|
*/
|
|
21352
21482
|
paradigm(value) {
|
|
21353
|
-
|
|
21354
|
-
|
|
21355
|
-
|
|
21356
|
-
|
|
21357
|
-
|
|
21358
|
-
},
|
|
21359
|
-
langs() {
|
|
21360
|
-
return createFilteredLanguageCollection((language) => matchesParadigm(language, targets));
|
|
21361
|
-
}
|
|
21362
|
-
};
|
|
21483
|
+
return createGroupSelection(
|
|
21484
|
+
findParadigm(value),
|
|
21485
|
+
paradigmInfoFromDefinition,
|
|
21486
|
+
paradigmPredicate(value)
|
|
21487
|
+
);
|
|
21363
21488
|
},
|
|
21364
21489
|
/**
|
|
21365
21490
|
* Selects every language that belongs to the given ecosystem.
|
|
@@ -21372,16 +21497,11 @@ var api = {
|
|
|
21372
21497
|
* api.ecosystem('blockchain').info();
|
|
21373
21498
|
*/
|
|
21374
21499
|
ecosystem(value) {
|
|
21375
|
-
|
|
21376
|
-
|
|
21377
|
-
|
|
21378
|
-
|
|
21379
|
-
|
|
21380
|
-
},
|
|
21381
|
-
langs() {
|
|
21382
|
-
return createFilteredLanguageCollection((language) => matchesEcosystem(language, targets));
|
|
21383
|
-
}
|
|
21384
|
-
};
|
|
21500
|
+
return createGroupSelection(
|
|
21501
|
+
findEcosystem(value),
|
|
21502
|
+
ecosystemInfoFromDefinition,
|
|
21503
|
+
ecosystemPredicate(value)
|
|
21504
|
+
);
|
|
21385
21505
|
},
|
|
21386
21506
|
/**
|
|
21387
21507
|
* Detects every matching language for a filename or path.
|