code-languages 1.42.5 → 1.43.1

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/api.js CHANGED
@@ -10754,7 +10754,7 @@ var init_nix = __esm({
10754
10754
  packageManagers: ["nix", "nix flakes"],
10755
10755
  ecosystems: ["Linux", "macOS", "NixOS", "DevOps"]
10756
10756
  },
10757
- version: "2.34.8",
10757
+ version: "2.35.2",
10758
10758
  logo: "https://cdn.simpleicons.org/nixos/5277C3",
10759
10759
  color: "#5277C3",
10760
10760
  i18n: {
@@ -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
- const source = getLanguageBySlug(resolvedSlug);
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
- info() {
21283
- return definition ? runtimeInfoFromDefinition(definition) : void 0;
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
- info() {
21305
- return definition ? packageManagerInfoFromDefinition(definition) : void 0;
21306
- },
21307
- langs() {
21308
- return createFilteredLanguageCollection(
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
- langs() {
21338
- return createFilteredLanguageCollection((language) => matchesCategory(language, value));
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
- const definition = findParadigm(value);
21354
- const targets = definition?.targets ?? [value];
21355
- return {
21356
- info() {
21357
- return definition ? paradigmInfoFromDefinition(definition) : void 0;
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
- const definition = findEcosystem(value);
21376
- const targets = definition?.targets ?? [value];
21377
- return {
21378
- info() {
21379
- return definition ? ecosystemInfoFromDefinition(definition) : void 0;
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.
package/dist/detect.cjs CHANGED
@@ -9225,7 +9225,7 @@ var nix = {
9225
9225
  packageManagers: ["nix", "nix flakes"],
9226
9226
  ecosystems: ["Linux", "macOS", "NixOS", "DevOps"]
9227
9227
  },
9228
- version: "2.34.8",
9228
+ version: "2.35.2",
9229
9229
  logo: "https://cdn.simpleicons.org/nixos/5277C3",
9230
9230
  color: "#5277C3",
9231
9231
  i18n: {
package/dist/detect.js CHANGED
@@ -9223,7 +9223,7 @@ var nix = {
9223
9223
  packageManagers: ["nix", "nix flakes"],
9224
9224
  ecosystems: ["Linux", "macOS", "NixOS", "DevOps"]
9225
9225
  },
9226
- version: "2.34.8",
9226
+ version: "2.35.2",
9227
9227
  logo: "https://cdn.simpleicons.org/nixos/5277C3",
9228
9228
  color: "#5277C3",
9229
9229
  i18n: {