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/dist/index.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,8 +18580,20 @@ 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
  function getCategories() {
18540
- return ["frontend", "backend", "fullstack", "systems", "data-science", "scripting", "other"];
18596
+ return CATEGORY_REGISTRY.map((c2) => c2.slug);
18541
18597
  }
18542
18598
 
18543
18599
  // src/domain/detection/match.ts
@@ -20488,6 +20544,14 @@ function packageManagerInfoFromDefinition(def) {
20488
20544
  aliases: def.aliases
20489
20545
  };
20490
20546
  }
20547
+ function packageManagersForRuntime(names) {
20548
+ const keys = names.map((name) => name.trim().toLowerCase());
20549
+ return PACKAGE_MANAGER_REGISTRY.filter(
20550
+ (pm) => keys.some(
20551
+ (key) => pm.name.toLowerCase() === key || pm.aliases.includes(key) || pm.targets.some((target) => target.toLowerCase() === key)
20552
+ )
20553
+ ).map(packageManagerInfoFromDefinition);
20554
+ }
20491
20555
  function getPackageManagers() {
20492
20556
  return PACKAGE_MANAGER_REGISTRY.map(packageManagerInfoFromDefinition);
20493
20557
  }
@@ -21165,13 +21229,93 @@ var createLanguageRequest = (getLanguage, loadLanguageModule) => {
21165
21229
  };
21166
21230
  return request;
21167
21231
  };
21232
+ var getLanguageBySlug = (slug) => languageMap.get(slug);
21233
+ var getRelationSlugs = (language) => {
21234
+ const { supersetOf = [], dialectOf = [], compilesTo = [] } = language.relations ?? {};
21235
+ return [...supersetOf, ...dialectOf, ...compilesTo];
21236
+ };
21237
+ var categoryPredicate = (value) => {
21238
+ const resolvedCategory = findCategory(value)?.slug ?? value;
21239
+ return (language) => matchesCategory(language, resolvedCategory);
21240
+ };
21241
+ var paradigmPredicate = (value) => {
21242
+ const targets = findParadigm(value)?.targets ?? [value];
21243
+ return (language) => matchesParadigm(language, targets);
21244
+ };
21245
+ var runtimePredicate = (value) => {
21246
+ const targets = findRuntime(value)?.targets ?? [value];
21247
+ return (language) => matchesRuntime(language, targets);
21248
+ };
21249
+ var packageManagerPredicate = (value) => {
21250
+ const targets = findPackageManager(value)?.targets ?? [value];
21251
+ return (language) => matchesPackageManager(language, targets);
21252
+ };
21253
+ var ecosystemPredicate = (value) => {
21254
+ const targets = findEcosystem(value)?.targets ?? [value];
21255
+ return (language) => matchesEcosystem(language, targets);
21256
+ };
21257
+ var extensionPredicate = (value) => {
21258
+ const normalized = value.trim().toLowerCase();
21259
+ return (language) => language.extensions.some((extension) => {
21260
+ const normalizedExtension = extension.toLowerCase();
21261
+ return normalizedExtension === normalized || normalizedExtension === `.${normalized}`;
21262
+ });
21263
+ };
21264
+ var statusPredicate = (value) => (language) => (language.status ?? "active") === value;
21265
+ var relatedPredicate = (slug) => {
21266
+ const resolvedSlug = resolveLanguageLookup(slug);
21267
+ const source = getLanguageBySlug(resolvedSlug);
21268
+ const outgoing = new Set(source ? getRelationSlugs(source) : []);
21269
+ return (language) => language.slug !== resolvedSlug && (outgoing.has(language.slug) || getRelationSlugs(language).includes(resolvedSlug));
21270
+ };
21168
21271
  var createLanguageCollectionRequest = (getLanguageList, loadLanguageList) => {
21169
21272
  let requestedLocale = defaultLocale;
21273
+ const narrow = (predicate) => {
21274
+ const filtered = () => getLanguageList().filter(predicate);
21275
+ const next = createLanguageCollectionRequest(filtered, async () => {
21276
+ const loaded = await Promise.all(filtered().map((language) => loadLanguage(language.slug)));
21277
+ return loaded.filter((language) => Boolean(language));
21278
+ });
21279
+ return next.locale(requestedLocale);
21280
+ };
21170
21281
  const request = {
21171
21282
  locale(locale) {
21172
21283
  requestedLocale = locale;
21173
21284
  return request;
21174
21285
  },
21286
+ category(value) {
21287
+ return narrow(categoryPredicate(value));
21288
+ },
21289
+ paradigm(value) {
21290
+ return narrow(paradigmPredicate(value));
21291
+ },
21292
+ runtime(value) {
21293
+ return narrow(runtimePredicate(value));
21294
+ },
21295
+ packageManager(value) {
21296
+ return narrow(packageManagerPredicate(value));
21297
+ },
21298
+ ecosystem(value) {
21299
+ return narrow(ecosystemPredicate(value));
21300
+ },
21301
+ extension(value) {
21302
+ return narrow(extensionPredicate(value));
21303
+ },
21304
+ status(value) {
21305
+ return narrow(statusPredicate(value));
21306
+ },
21307
+ related(slug) {
21308
+ return narrow(relatedPredicate(slug));
21309
+ },
21310
+ slugs() {
21311
+ return getLanguageList().map((language) => language.slug);
21312
+ },
21313
+ count() {
21314
+ return getLanguageList().length;
21315
+ },
21316
+ first() {
21317
+ return localizeOptionalLanguage(getLanguageList().at(0), requestedLocale);
21318
+ },
21175
21319
  get() {
21176
21320
  return getLanguageList().map((language) => localizeLanguage(language, requestedLocale));
21177
21321
  },
@@ -21189,17 +21333,20 @@ var createFilteredLanguageCollection = (predicate) => {
21189
21333
  return loaded.filter((language) => Boolean(language));
21190
21334
  });
21191
21335
  };
21336
+ var createGroupSelection = (definition, toInfo, predicate) => ({
21337
+ info() {
21338
+ return definition ? toInfo(definition) : void 0;
21339
+ },
21340
+ langs() {
21341
+ return createFilteredLanguageCollection(predicate);
21342
+ }
21343
+ });
21192
21344
  var loadDetectedLanguages = async (filename) => {
21193
21345
  const detectedLanguages = await Promise.all(
21194
21346
  detectLanguageSlugs(filename).map((slug) => loadLanguage(slug))
21195
21347
  );
21196
21348
  return detectedLanguages.filter((language) => Boolean(language));
21197
21349
  };
21198
- var getLanguageBySlug = (slug) => languageMap.get(slug);
21199
- var getRelationSlugs = (language) => {
21200
- const { supersetOf = [], dialectOf = [], compilesTo = [] } = language.relations ?? {};
21201
- return [...supersetOf, ...dialectOf, ...compilesTo];
21202
- };
21203
21350
  var getDetectedLanguages = (filename) => detectLanguageSlugs(filename).map((slug) => getLanguageBySlug(slug)).filter((language) => Boolean(language));
21204
21351
  var api = {
21205
21352
  /**
@@ -21263,15 +21410,9 @@ var api = {
21263
21410
  * api.extension('ts').langs().locale('es').get();
21264
21411
  */
21265
21412
  extension(value) {
21266
- const normalized = value.trim().toLowerCase();
21267
21413
  return {
21268
21414
  langs() {
21269
- return createFilteredLanguageCollection(
21270
- (language) => language.extensions.some((extension) => {
21271
- const normalizedExtension = extension.toLowerCase();
21272
- return normalizedExtension === normalized || normalizedExtension === `.${normalized}`;
21273
- })
21274
- );
21415
+ return createFilteredLanguageCollection(extensionPredicate(value));
21275
21416
  }
21276
21417
  };
21277
21418
  },
@@ -21327,9 +21468,7 @@ var api = {
21327
21468
  status(value) {
21328
21469
  return {
21329
21470
  langs() {
21330
- return createFilteredLanguageCollection(
21331
- (language) => (language.status ?? "active") === value
21332
- );
21471
+ return createFilteredLanguageCollection(statusPredicate(value));
21333
21472
  }
21334
21473
  };
21335
21474
  },
@@ -21342,14 +21481,9 @@ var api = {
21342
21481
  * api.related('typescript').langs().get(); // JavaScript
21343
21482
  */
21344
21483
  related(slug) {
21345
- const resolvedSlug = resolveLanguageLookup(slug);
21346
21484
  return {
21347
21485
  langs() {
21348
- const source = getLanguageBySlug(resolvedSlug);
21349
- const outgoing = new Set(source ? getRelationSlugs(source) : []);
21350
- return createFilteredLanguageCollection(
21351
- (language) => language.slug !== resolvedSlug && (outgoing.has(language.slug) || getRelationSlugs(language).includes(resolvedSlug))
21352
- );
21486
+ return createFilteredLanguageCollection(relatedPredicate(slug));
21353
21487
  }
21354
21488
  };
21355
21489
  },
@@ -21362,16 +21496,14 @@ var api = {
21362
21496
  * @example
21363
21497
  * api.runtime('node').langs().locale('es').get();
21364
21498
  * api.runtime('.net').info();
21499
+ * api.runtime('node').packageManagers();
21365
21500
  */
21366
21501
  runtime(value) {
21367
21502
  const definition = findRuntime(value);
21368
- const targets = definition?.targets ?? [value];
21369
21503
  return {
21370
- info() {
21371
- return definition ? runtimeInfoFromDefinition(definition) : void 0;
21372
- },
21373
- langs() {
21374
- return createFilteredLanguageCollection((language) => matchesRuntime(language, targets));
21504
+ ...createGroupSelection(definition, runtimeInfoFromDefinition, runtimePredicate(value)),
21505
+ packageManagers() {
21506
+ return definition ? packageManagersForRuntime(definition.packageManagers) : [];
21375
21507
  }
21376
21508
  };
21377
21509
  },
@@ -21389,14 +21521,11 @@ var api = {
21389
21521
  const definition = findPackageManager(value);
21390
21522
  const targets = definition?.targets ?? [value];
21391
21523
  return {
21392
- info() {
21393
- return definition ? packageManagerInfoFromDefinition(definition) : void 0;
21394
- },
21395
- langs() {
21396
- return createFilteredLanguageCollection(
21397
- (language) => matchesPackageManager(language, targets)
21398
- );
21399
- },
21524
+ ...createGroupSelection(
21525
+ definition,
21526
+ packageManagerInfoFromDefinition,
21527
+ packageManagerPredicate(value)
21528
+ ),
21400
21529
  runtimes() {
21401
21530
  return runtimesForPackageManager(targets);
21402
21531
  }
@@ -21418,14 +21547,15 @@ var api = {
21418
21547
  *
21419
21548
  * @example
21420
21549
  * api.category('backend').langs().locale('es').get();
21550
+ * api.category('backend').info();
21421
21551
  * await api.category('data-science').langs().load();
21422
21552
  */
21423
21553
  category(value) {
21424
- return {
21425
- langs() {
21426
- return createFilteredLanguageCollection((language) => matchesCategory(language, value));
21427
- }
21428
- };
21554
+ return createGroupSelection(
21555
+ findCategory(value),
21556
+ categoryInfoFromDefinition,
21557
+ categoryPredicate(value)
21558
+ );
21429
21559
  },
21430
21560
  /**
21431
21561
  * Selects every language that uses the given programming paradigm.
@@ -21438,16 +21568,11 @@ var api = {
21438
21568
  * api.paradigm('oop').info();
21439
21569
  */
21440
21570
  paradigm(value) {
21441
- const definition = findParadigm(value);
21442
- const targets = definition?.targets ?? [value];
21443
- return {
21444
- info() {
21445
- return definition ? paradigmInfoFromDefinition(definition) : void 0;
21446
- },
21447
- langs() {
21448
- return createFilteredLanguageCollection((language) => matchesParadigm(language, targets));
21449
- }
21450
- };
21571
+ return createGroupSelection(
21572
+ findParadigm(value),
21573
+ paradigmInfoFromDefinition,
21574
+ paradigmPredicate(value)
21575
+ );
21451
21576
  },
21452
21577
  /**
21453
21578
  * Selects every language that belongs to the given ecosystem.
@@ -21460,16 +21585,11 @@ var api = {
21460
21585
  * api.ecosystem('blockchain').info();
21461
21586
  */
21462
21587
  ecosystem(value) {
21463
- const definition = findEcosystem(value);
21464
- const targets = definition?.targets ?? [value];
21465
- return {
21466
- info() {
21467
- return definition ? ecosystemInfoFromDefinition(definition) : void 0;
21468
- },
21469
- langs() {
21470
- return createFilteredLanguageCollection((language) => matchesEcosystem(language, targets));
21471
- }
21472
- };
21588
+ return createGroupSelection(
21589
+ findEcosystem(value),
21590
+ ecosystemInfoFromDefinition,
21591
+ ecosystemPredicate(value)
21592
+ );
21473
21593
  },
21474
21594
  /**
21475
21595
  * Detects every matching language for a filename or path.
package/dist/index.d.cts CHANGED
@@ -1,4 +1,4 @@
1
- export { C as CategoryRequest, E as EcosystemInfo, a as EcosystemRequest, b as ExtensionRequest, L as LanguageCategory, P as PackageManagerInfo, c as ParadigmInfo, d as ParadigmRequest, R as RelatedRequest, e as ResolvedLanguageRequest, f as RuntimeInfo, S as StatusRequest, g as api, h as getCategories, i as getEcosystems, j as getPackageManagers, k as getParadigms, l as getRuntimes, m as getStatuses } from './api-D10hZgSz.cjs';
1
+ export { C as CategoryInfo, a as CategoryRequest, E as EcosystemInfo, b as EcosystemRequest, c as ExtensionRequest, L as LanguageCategory, P as PackageManagerInfo, d as ParadigmInfo, e as ParadigmRequest, R as RelatedRequest, f as ResolvedLanguageRequest, g as RuntimeInfo, S as StatusRequest, h as api, i as getCategories, j as getEcosystems, k as getPackageManagers, l as getParadigms, m as getRuntimes, n as getStatuses } from './api-jHE_4U3C.cjs';
2
2
  export { detectLanguage, detectLanguageByShebang, detectLanguages } from './detect.cjs';
3
3
  export { ProjectLanguageDetection, detectLanguageSlug, detectLanguageSlugs, detectProjectLanguages } from './detect-slugs.cjs';
4
4
  export { d as detectLanguageSlugByShebang, g as getShebangInterpreters } from './shebang-Be8JBsB_.cjs';
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { C as CategoryRequest, E as EcosystemInfo, a as EcosystemRequest, b as ExtensionRequest, L as LanguageCategory, P as PackageManagerInfo, c as ParadigmInfo, d as ParadigmRequest, R as RelatedRequest, e as ResolvedLanguageRequest, f as RuntimeInfo, S as StatusRequest, g as api, h as getCategories, i as getEcosystems, j as getPackageManagers, k as getParadigms, l as getRuntimes, m as getStatuses } from './api-DfKZeygA.js';
1
+ export { C as CategoryInfo, a as CategoryRequest, E as EcosystemInfo, b as EcosystemRequest, c as ExtensionRequest, L as LanguageCategory, P as PackageManagerInfo, d as ParadigmInfo, e as ParadigmRequest, R as RelatedRequest, f as ResolvedLanguageRequest, g as RuntimeInfo, S as StatusRequest, h as api, i as getCategories, j as getEcosystems, k as getPackageManagers, l as getParadigms, m as getRuntimes, n as getStatuses } from './api-CiSr3n5R.js';
2
2
  export { detectLanguage, detectLanguageByShebang, detectLanguages } from './detect.js';
3
3
  export { ProjectLanguageDetection, detectLanguageSlug, detectLanguageSlugs, detectProjectLanguages } from './detect-slugs.js';
4
4
  export { d as detectLanguageSlugByShebang, g as getShebangInterpreters } from './shebang-wOz_EqIy.js';