dev-dict 0.3.1 → 0.4.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.
@@ -1,2 +1,2 @@
1
- (function(o,e){typeof exports=="object"&&typeof module<"u"?e(exports):typeof define=="function"&&define.amd?define(["exports"],e):(o=typeof globalThis<"u"?globalThis:o||self,e(o.devdict={}))})(this,(function(o){"use strict";const e={EN_US:"en-US",DE_DE:"de-DE"},m={id:"backend",name:{[e.EN_US]:"Backend",[e.DE_DE]:"Backend"}},p={id:"frontend",name:{[e.EN_US]:"Frontend",[e.DE_DE]:"Frontend"}},g={id:"open_source",name:{[e.EN_US]:"Open Source",[e.DE_DE]:"Open Source"}},s={[m.id]:m,[p.id]:p,[g.id]:g},l={id:"cms",name:{[e.EN_US]:"Content Management System",[e.DE_DE]:"Content-Management-System"}},L={id:"framework",name:{[e.EN_US]:"Framework",[e.DE_DE]:"Framework"}},_={id:"language",name:{[e.EN_US]:"Language",[e.DE_DE]:"Sprache"}},f={id:"library",name:{[e.EN_US]:"Library",[e.DE_DE]:"Bibliothek"}},D={id:"runtime_environment",name:{[e.EN_US]:"Runtime Environment",[e.DE_DE]:"Laufzeitumgebung"}},d={[l.id]:l,[L.id]:L,[_.id]:_,[f.id]:f,[D.id]:D},b={id:"node_js",name:"Node.js",type:[d.runtime_environment],label:{[e.EN_US]:"JavaScript Runtime",[e.DE_DE]:"JavaScript-Laufzeit"},definition:{[e.EN_US]:"Node.js is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.",[e.DE_DE]:"Node.js ist eine kostenlose, Open-Source, plattformübergreifende JavaScript-Laufzeitumgebung, die es Entwicklern ermöglicht, Server, Webanwendungen, Befehlszeilentools und Skripte zu erstellen."},tags:[s.backend],links:{website:"https://nodejs.org"}},S={id:"react",name:"React",type:[d.library],label:{[e.EN_US]:"JavaScript Library",[e.DE_DE]:"JavaScript-Bibliothek"},definition:{[e.EN_US]:"A JavaScript library for building component-based user interfaces.",[e.DE_DE]:"Eine JavaScript-Bibliothek zum Erstellen komponentenbasierter Benutzeroberflächen."},tags:[s.frontend,s.backend],links:{website:"https://react.dev"}},T={id:"typescript",name:"TypeScript",type:[d.language],label:{[e.EN_US]:"High-Level Programming Language",[e.DE_DE]:"Hochsprache"},definition:{[e.EN_US]:"TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.",[e.DE_DE]:"TypeScript ist eine stark typisierte Programmiersprache, die auf JavaScript aufbaut und Ihnen bei jeder Größenordnung bessere Werkzeuge bietet."},tags:[s.frontend,s.backend,s.open_source],links:{website:"https://www.typescriptlang.org"}},E={[b.id]:b,[S.id]:S,[T.id]:T},a={DEFAULT_LOCALE:e.EN_US},U=({label:n,locale:t=a.DEFAULT_LOCALE})=>n[t]||n[a.DEFAULT_LOCALE],v=({definition:n,locale:t=a.DEFAULT_LOCALE})=>n[t]||n[a.DEFAULT_LOCALE],y=({tag:n,locale:t=a.DEFAULT_LOCALE})=>({id:n.id,name:n.name[t]||n.name[a.DEFAULT_LOCALE]}),A=({term:n,locale:t=a.DEFAULT_LOCALE})=>({id:n.id,name:n.name[t]||n.name[a.DEFAULT_LOCALE]});function u({id:n,localized:t=!0,locale:i=a.DEFAULT_LOCALE}){const r=E[n];return t?{...r,label:U({label:r.label,locale:i}),definition:v({definition:r.definition,locale:i}),type:r.type.map(c=>A({term:c,locale:i})),tags:r.tags.map(c=>y({tag:c,locale:i}))}:r}function k({localized:n=!0,locale:t=a.DEFAULT_LOCALE}={}){const i=Object.values(E);return n?i.map(r=>u({id:r.id,locale:t})):i}function O({localized:n=!0,locale:t=a.DEFAULT_LOCALE}={}){if(!n)return E;const i={};for(const[r,c]of Object.entries(E)){const F=u({id:c.id,locale:t});i[r]=F}return i}function h({localized:n=!0,locale:t=a.DEFAULT_LOCALE}={}){const i=Object.values(d);return n?i.map(r=>A({term:r,locale:t})):i}function N({localized:n=!0,locale:t=a.DEFAULT_LOCALE}={}){const i=Object.values(s);return n?i.map(r=>y({tag:r,locale:t})):i}o.getDict=O,o.getTags=N,o.getTerm=u,o.getTerms=k,o.getTypes=h,Object.defineProperty(o,Symbol.toStringTag,{value:"Module"})}));
1
+ (function(c,e){typeof exports=="object"&&typeof module<"u"?e(exports):typeof define=="function"&&define.amd?define(["exports"],e):(c=typeof globalThis<"u"?globalThis:c||self,e(c.devdict={}))})(this,(function(c){"use strict";const e={EN_US:"en-US",EN_GB:"en-GB",DE_DE:"de-DE"},S=({obj:t,value:i,useFallback:n=a.USE_FALLBACK})=>i&&Object.values(e).includes(i)?t[i]||(n?t[e.EN_US]:""):i||(n?t[e.EN_US]:""),O=({obj:t,useFallback:i=a.USE_FALLBACK})=>{const n=Object.values(e);return Object.fromEntries(n.map(r=>[r,S({obj:t,value:t[r],useFallback:i})]))},d=({obj:t,keys:i,useFallback:n=a.USE_FALLBACK})=>Object.fromEntries(Object.entries(t).map(([r,o])=>{const s=i.filter(E=>E in o&&typeof o[E]=="object").map(E=>[E,O({obj:o[E],useFallback:n})]);return[r,{...o,...Object.fromEntries(s)}]})),m=({obj:t,locale:i=a.DEFAULT_LOCALE,useFallback:n=a.USE_FALLBACK})=>S({obj:t,value:t[i],useFallback:n}),L=({tag:t,locale:i=a.DEFAULT_LOCALE,useFallback:n=a.USE_FALLBACK})=>({id:t.id,name:m({obj:t.name,locale:i,useFallback:n})}),f=({term:t,locale:i=a.DEFAULT_LOCALE,useFallback:n=a.USE_FALLBACK})=>({id:t.id,name:m({obj:t.name,locale:i,useFallback:n})}),b={id:"backend",name:{[e.EN_US]:"Backend",[e.EN_GB]:e.EN_US,[e.DE_DE]:"Backend"}},g={id:"frontend",name:{[e.EN_US]:"Frontend",[e.EN_GB]:e.EN_US,[e.DE_DE]:"Frontend"}},U={id:"open_source",name:{[e.EN_US]:"Open Source",[e.EN_GB]:e.EN_US,[e.DE_DE]:"Open Source"}},A={[b.id]:b,[g.id]:g,[U.id]:U},_=d({obj:A,keys:["name"],useFallback:!1}),N={id:"cms",name:{[e.EN_US]:"Content Management System",[e.EN_GB]:e.EN_US,[e.DE_DE]:"Content-Management-System"}},D={id:"framework",name:{[e.EN_US]:"Framework",[e.EN_GB]:e.EN_US,[e.DE_DE]:"Framework"}},y={id:"language",name:{[e.EN_US]:"Language",[e.EN_GB]:e.EN_US,[e.DE_DE]:"Sprache"}},T={id:"library",name:{[e.EN_US]:"Library",[e.EN_GB]:e.EN_US,[e.DE_DE]:"Bibliothek"}},B={id:"runtime_environment",name:{[e.EN_US]:"Runtime Environment",[e.EN_GB]:e.EN_US,[e.DE_DE]:"Laufzeitumgebung"}},j={[N.id]:N,[D.id]:D,[y.id]:y,[T.id]:T,[B.id]:B},l=d({obj:j,keys:["name"],useFallback:!1}),k={id:"node_js",name:{[e.EN_US]:"Node.js"},label:{[e.EN_US]:"JavaScript Runtime",[e.DE_DE]:"JavaScript-Laufzeit"},definition:{[e.EN_US]:"Node.js is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.",[e.DE_DE]:"Node.js ist eine kostenlose, Open-Source, plattformübergreifende JavaScript-Laufzeitumgebung, die es Entwicklern ermöglicht, Server, Webanwendungen, Befehlszeilentools und Skripte zu erstellen."},type:[l.runtime_environment],tags:[_.backend],links:{website:"https://nodejs.org"}},v={id:"react",name:{[e.EN_US]:"React"},label:{[e.EN_US]:"JavaScript Library",[e.DE_DE]:"JavaScript-Bibliothek"},definition:{[e.EN_US]:"A JavaScript library for building component-based user interfaces.",[e.DE_DE]:"Eine JavaScript-Bibliothek zum Erstellen komponentenbasierter Benutzeroberflächen."},type:[l.library],tags:[_.frontend,_.backend],links:{website:"https://react.dev"}},C={id:"typescript",name:{[e.EN_US]:"TypeScript"},label:{[e.EN_US]:"High-Level Programming Language",[e.EN_GB]:e.EN_US,[e.DE_DE]:"Hochsprache"},definition:{[e.EN_US]:"TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.",[e.EN_GB]:e.EN_US,[e.DE_DE]:"TypeScript ist eine stark typisierte Programmiersprache, die auf JavaScript aufbaut und Ihnen bei jeder Größenordnung bessere Werkzeuge bietet."},type:[l.language],tags:[_.frontend,_.backend,_.open_source],links:{website:"https://www.typescriptlang.org"}},u={[k.id]:k,[v.id]:v,[C.id]:C};d({obj:u,keys:["name","label","definition"],useFallback:!1});const a={DEFAULT_LOCALE:e.EN_US,USE_FALLBACK:!0};function p({id:t,localized:i=!0,locale:n=a.DEFAULT_LOCALE,useFallback:r=a.USE_FALLBACK}){const s=d({obj:u,keys:["name","label","definition"],useFallback:r})[t];return i?{...s,name:m({obj:s.name,locale:n,useFallback:r}),label:m({obj:s.label,locale:n,useFallback:r}),definition:m({obj:s.definition,locale:n,useFallback:r}),type:s.type.map(E=>f({term:E,locale:n,useFallback:r})),tags:s.tags.map(E=>L({tag:E,locale:n,useFallback:r}))}:s}function F({localized:t=!0,locale:i=a.DEFAULT_LOCALE,useFallback:n=a.USE_FALLBACK}={}){const r=d({obj:u,keys:["name","label","definition"],useFallback:n}),o=Object.values(r);return t?o.map(s=>p({id:s.id,locale:i,useFallback:n})):o}function h({localized:t=!0,locale:i=a.DEFAULT_LOCALE,useFallback:n=a.USE_FALLBACK}={}){const r=d({obj:u,keys:["name","label","definition"],useFallback:n});if(!t)return r;const o={};for(const[s,E]of Object.entries(r)){const z=p({id:E.id,locale:i,useFallback:n});o[s]=z}return o}function G({localized:t=!0,locale:i=a.DEFAULT_LOCALE,useFallback:n=a.USE_FALLBACK}={}){const r=d({obj:j,keys:["name"],useFallback:!1}),o=Object.values(r);return t?o.map(s=>f({term:s,locale:i,useFallback:n})):o}function w({localized:t=!0,locale:i=a.DEFAULT_LOCALE,useFallback:n=a.USE_FALLBACK}={}){const r=d({obj:A,keys:["name"],useFallback:!1}),o=Object.values(r);return t?o.map(s=>L({tag:s,locale:i,useFallback:n})):o}c.getDict=h,c.getTags=w,c.getTerm=p,c.getTerms=F,c.getTypes=G,Object.defineProperty(c,Symbol.toStringTag,{value:"Module"})}));
2
2
  //# sourceMappingURL=dev-dict.min.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"dev-dict.min.js","sources":["../data/locales/index.ts","../data/tags/backend.ts","../data/tags/frontend.ts","../data/tags/open_source.ts","../data/tags/index.ts","../data/types/cms.ts","../data/types/framework.ts","../data/types/language.ts","../data/types/library.ts","../data/types/runtime_environment.ts","../data/types/index.ts","../data/terms/node_js.ts","../data/terms/react.ts","../data/terms/typescript.ts","../data/terms/index.ts","../src/common/index.ts","../src/utils/index.ts","../src/index.ts"],"sourcesContent":["export const LOCALE = {\n EN_US: 'en-US',\n EN_GB: 'en-GB',\n DE_DE: 'de-DE',\n} as const\n","import type { TTermTag } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'backend',\n\n name: {\n [LOCALE.EN_US]: `Backend`,\n [LOCALE.DE_DE]: `Backend`,\n },\n} as const satisfies TTermTag\n","import type { TTermTag } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'frontend',\n\n name: {\n [LOCALE.EN_US]: `Frontend`,\n [LOCALE.DE_DE]: `Frontend`,\n },\n} as const satisfies TTermTag\n","import type { TTermTag } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'open_source',\n\n name: {\n [LOCALE.EN_US]: `Open Source`,\n [LOCALE.DE_DE]: `Open Source`,\n },\n} as const satisfies TTermTag\n","import backend from './backend'\nimport frontend from './frontend'\nimport open_source from './open_source'\n\nexport const TAG = {\n [backend.id]: backend,\n [frontend.id]: frontend,\n [open_source.id]: open_source,\n} as const\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'cms',\n\n name: {\n [LOCALE.EN_US]: `Content Management System`,\n [LOCALE.DE_DE]: `Content-Management-System`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'framework',\n\n name: {\n [LOCALE.EN_US]: `Framework`,\n [LOCALE.DE_DE]: `Framework`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'language',\n\n name: {\n [LOCALE.EN_US]: `Language`,\n [LOCALE.DE_DE]: `Sprache`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'library',\n\n name: {\n [LOCALE.EN_US]: `Library`,\n [LOCALE.DE_DE]: `Bibliothek`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'runtime_environment',\n\n name: {\n [LOCALE.EN_US]: `Runtime Environment`,\n [LOCALE.DE_DE]: `Laufzeitumgebung`,\n },\n} as const satisfies TTermType\n","import cms from './cms'\nimport framework from './framework'\nimport language from './language'\nimport library from './library'\nimport runtime_environment from './runtime_environment'\n\nexport const TYPE = {\n [cms.id]: cms,\n [framework.id]: framework,\n [language.id]: language,\n [library.id]: library,\n [runtime_environment.id]: runtime_environment,\n} as const\n","import type { TTerm } from '@/types'\n\nimport { LOCALE } from '../locales'\nimport { TAG } from '../tags'\nimport { TYPE } from '../types'\n\nexport default {\n id: 'node_js',\n\n name: 'Node.js',\n\n type: [TYPE.runtime_environment],\n\n label: {\n [LOCALE.EN_US]: `JavaScript Runtime`,\n [LOCALE.DE_DE]: `JavaScript-Laufzeit`,\n },\n\n definition: {\n [LOCALE.EN_US]: `Node.js is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.`,\n [LOCALE.DE_DE]: `Node.js ist eine kostenlose, Open-Source, plattformübergreifende JavaScript-Laufzeitumgebung, die es Entwicklern ermöglicht, Server, Webanwendungen, Befehlszeilentools und Skripte zu erstellen.`,\n },\n\n tags: [TAG.backend],\n\n links: {\n website: 'https://nodejs.org',\n },\n} as const satisfies TTerm\n","import type { TTerm } from '@/types'\n\nimport { LOCALE } from '../locales'\nimport { TAG } from '../tags'\nimport { TYPE } from '../types'\n\nexport default {\n id: 'react',\n\n name: 'React',\n\n type: [TYPE.library],\n\n label: {\n [LOCALE.EN_US]: `JavaScript Library`,\n [LOCALE.DE_DE]: `JavaScript-Bibliothek`,\n },\n\n definition: {\n [LOCALE.EN_US]: `A JavaScript library for building component-based user interfaces.`,\n [LOCALE.DE_DE]: `Eine JavaScript-Bibliothek zum Erstellen komponentenbasierter Benutzeroberflächen.`,\n },\n\n tags: [TAG.frontend, TAG.backend],\n\n links: {\n website: 'https://react.dev',\n },\n} as const satisfies TTerm\n","import type { TTerm } from '@/types'\n\nimport { LOCALE } from '../locales'\nimport { TAG } from '../tags'\nimport { TYPE } from '../types'\n\nexport default {\n id: 'typescript',\n\n name: 'TypeScript',\n\n type: [TYPE.language],\n\n label: {\n [LOCALE.EN_US]: `High-Level Programming Language`,\n [LOCALE.DE_DE]: `Hochsprache`,\n },\n\n definition: {\n [LOCALE.EN_US]: `TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.`,\n [LOCALE.DE_DE]: `TypeScript ist eine stark typisierte Programmiersprache, die auf JavaScript aufbaut und Ihnen bei jeder Größenordnung bessere Werkzeuge bietet.`,\n },\n\n tags: [TAG.frontend, TAG.backend, TAG.open_source],\n\n links: {\n website: 'https://www.typescriptlang.org',\n },\n} as const satisfies TTerm\n","import node_js from './node_js'\nimport react from './react'\nimport typescript from './typescript'\n\nexport const TERM = {\n [node_js.id]: node_js,\n [react.id]: react,\n [typescript.id]: typescript,\n} as const\n","import { LOCALE } from '@data'\n\nexport const MISC = {} as const\n\nexport const CONFIG = {\n DEFAULT_LOCALE: LOCALE.EN_US,\n} as const\n","import type {\n TLocale,\n TTermDefinition,\n TTermLabel,\n TTermTag,\n TTermTagLocalized,\n TTermType,\n TTermTypeLocalized,\n} from '@/types'\nimport { CONFIG } from '@/common'\n\nexport const getLabelLocalized = ({\n label,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n label: TTermLabel\n locale?: TLocale\n}): string => {\n return label[locale] || label[CONFIG.DEFAULT_LOCALE]\n}\n\nexport const getDefinitionLocalized = ({\n definition,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n definition: TTermDefinition\n locale?: TLocale\n}): string => {\n return definition[locale] || definition[CONFIG.DEFAULT_LOCALE]\n}\n\nexport const getTermTagLocalized = ({\n tag,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n tag: TTermTag\n locale?: TLocale\n}): TTermTagLocalized => {\n return {\n id: tag.id,\n name: tag.name[locale] || tag.name[CONFIG.DEFAULT_LOCALE],\n }\n}\n\nexport const getTermTypeLocalized = ({\n term,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n term: TTermType\n locale?: TLocale\n}): TTermTypeLocalized => {\n return {\n id: term.id,\n name: term.name[locale] || term.name[CONFIG.DEFAULT_LOCALE],\n }\n}\n","import type { TDevDict, TDevDictLocalized, TLocale, TTerm, TTermId, TTermLocalized, TTermType, TTermTypeLocalized, TTermTag, TTermTagLocalized } from '@/types'\nimport { CONFIG } from '@/common'\nimport { getDefinitionLocalized, getLabelLocalized, getTermTagLocalized, getTermTypeLocalized } from '@/utils'\nimport { TAG, TERM, TYPE } from '@data'\n\nexport function getTerm(params: { id: TTermId; localized: false }): TTerm\nexport function getTerm(params: { id: TTermId; localized?: true; locale?: TLocale }): TTermLocalized\nexport function getTerm({\n id,\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n id: TTermId\n localized?: boolean\n locale?: TLocale\n}): TTerm | TTermLocalized {\n // We do not need a null check here because TTermId only allows valid IDs\n const term = TERM[id]\n\n if (!localized) {\n return term\n }\n\n return {\n ...term,\n label: getLabelLocalized({ label: term.label, locale }),\n definition: getDefinitionLocalized({ definition: term.definition, locale }),\n type: term.type.map((value) => getTermTypeLocalized({ term: value, locale })),\n tags: term.tags.map((value) => getTermTagLocalized({ tag: value, locale })),\n }\n}\n\nexport function getTerms(params?: { localized: false }): TTerm[]\nexport function getTerms(params?: { localized?: true; locale?: TLocale }): TTermLocalized[]\nexport function getTerms({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n localized?: boolean\n locale?: TLocale\n} = {}): TTerm[] | TTermLocalized[] {\n const terms = Object.values(TERM)\n\n if (!localized) {\n return terms\n }\n\n return terms.map((term) => getTerm({ id: term.id, locale }))\n}\n\nexport function getDict(params?: { localized: false }): TDevDict\nexport function getDict(params?: { localized?: true; locale?: TLocale }): TDevDictLocalized\nexport function getDict({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n localized?: boolean\n locale?: TLocale\n} = {}): TDevDict | TDevDictLocalized {\n if (!localized) {\n return TERM as TDevDict\n }\n\n const dict = {} as TDevDictLocalized\n\n for (const [key, term] of Object.entries(TERM)) {\n const localizedTerm = getTerm({ id: term.id, locale })\n dict[key as TTermId] = localizedTerm\n }\n\n return dict\n}\n\nexport function getTypes(params?: { localized: false }): TTermType[]\nexport function getTypes(params?: { localized?: true; locale?: TLocale }): TTermTypeLocalized[]\nexport function getTypes({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n localized?: boolean\n locale?: TLocale\n} = {}): TTermType[] | TTermTypeLocalized[] {\n const types = Object.values(TYPE)\n\n if (!localized) {\n return types\n }\n\n return types.map((type) => getTermTypeLocalized({ term: type, locale }))\n}\n\nexport function getTags(params?: { localized: false }): TTermTag[]\nexport function getTags(params?: { localized?: true; locale?: TLocale }): TTermTagLocalized[]\nexport function getTags({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n localized?: boolean\n locale?: TLocale\n} = {}): TTermTag[] | TTermTagLocalized[] {\n const tags = Object.values(TAG)\n\n if (!localized) {\n return tags\n }\n\n return tags.map((tag) => getTermTagLocalized({ tag, locale }))\n}\n"],"names":["LOCALE","backend","frontend","open_source","TAG","cms","framework","language","library","runtime_environment","TYPE","node_js","react","typescript","TERM","CONFIG","getLabelLocalized","label","locale","getDefinitionLocalized","definition","getTermTagLocalized","tag","getTermTypeLocalized","term","getTerm","id","localized","value","getTerms","terms","getDict","dict","key","localizedTerm","getTypes","types","type","getTags","tags"],"mappings":"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"}
1
+ {"version":3,"file":"dev-dict.min.js","sources":["../data/locales/index.ts","../src/utils/index.ts","../data/tags/backend.ts","../data/tags/frontend.ts","../data/tags/open_source.ts","../data/tags/index.ts","../data/types/cms.ts","../data/types/framework.ts","../data/types/language.ts","../data/types/library.ts","../data/types/runtime_environment.ts","../data/types/index.ts","../data/terms/node_js.ts","../data/terms/react.ts","../data/terms/typescript.ts","../data/terms/index.ts","../src/common/index.ts","../src/index.ts"],"sourcesContent":["export const LOCALE = {\n EN_US: 'en-US',\n EN_GB: 'en-GB',\n DE_DE: 'de-DE',\n} as const\n","import type { TLocale, TLocaleRecord, TTermTag, TTermTagLocalized, TTermType, TTermTypeLocalized } from '@/types'\nimport { CONFIG } from '@/common'\nimport { LOCALE } from '@data'\n\nexport const interpolateValue = ({\n obj,\n value,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n obj: TLocaleRecord\n value: undefined | string\n useFallback?: boolean\n}): string => {\n if (value && Object.values<string>(LOCALE).includes(value)) {\n return obj[value as TLocale] || (useFallback ? obj[LOCALE.EN_US] : '')\n }\n return value || (useFallback ? obj[LOCALE.EN_US] : '')\n}\n\nexport const interpolateLocaleRecord = ({\n obj,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n obj: TLocaleRecord\n useFallback?: boolean\n}): TLocaleRecord => {\n const locales = Object.values<string>(LOCALE) as TLocale[]\n\n return Object.fromEntries(\n locales.map((locale) => [locale, interpolateValue({ obj, value: obj[locale], useFallback })]),\n ) as TLocaleRecord\n}\n\nexport const interpolateValues = <T extends Record<string, any>>({\n obj,\n keys,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n obj: T\n keys: string[]\n useFallback?: boolean\n}): T => {\n return Object.fromEntries(\n Object.entries(obj).map(([itemKey, item]) => {\n const interpolatedFields = keys\n .filter((key) => key in item && typeof item[key] === 'object')\n .map((key) => [key, interpolateLocaleRecord({ obj: item[key], useFallback })])\n\n return [itemKey, { ...item, ...Object.fromEntries(interpolatedFields) }]\n }),\n ) as T\n}\n\nexport const getValueLocalized = ({\n obj,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n obj: TLocaleRecord\n locale?: TLocale\n useFallback?: boolean\n}): string => {\n return interpolateValue({ obj, value: obj[locale], useFallback })\n}\n\nexport const getTermTagLocalized = ({\n tag,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n tag: TTermTag\n locale?: TLocale\n useFallback?: boolean\n}): TTermTagLocalized => {\n return {\n id: tag.id,\n name: getValueLocalized({ obj: tag.name, locale, useFallback }),\n }\n}\n\nexport const getTermTypeLocalized = ({\n term,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n term: TTermType\n locale?: TLocale\n useFallback?: boolean\n}): TTermTypeLocalized => {\n return {\n id: term.id,\n name: getValueLocalized({ obj: term.name, locale, useFallback }),\n }\n}\n","import type { TTermTag } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'backend',\n\n name: {\n [LOCALE.EN_US]: `Backend`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Backend`,\n },\n} as const satisfies TTermTag\n","import type { TTermTag } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'frontend',\n\n name: {\n [LOCALE.EN_US]: `Frontend`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Frontend`,\n },\n} as const satisfies TTermTag\n","import type { TTermTag } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'open_source',\n\n name: {\n [LOCALE.EN_US]: `Open Source`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Open Source`,\n },\n} as const satisfies TTermTag\n","import { interpolateValues } from '@/utils'\n\nimport backend from './backend'\nimport frontend from './frontend'\nimport open_source from './open_source'\n\nexport const RAW_TAG = {\n [backend.id]: backend,\n [frontend.id]: frontend,\n [open_source.id]: open_source,\n} as const\n\nexport const TAG = interpolateValues({ obj: RAW_TAG, keys: ['name'], useFallback: false })\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'cms',\n\n name: {\n [LOCALE.EN_US]: `Content Management System`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Content-Management-System`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'framework',\n\n name: {\n [LOCALE.EN_US]: `Framework`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Framework`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'language',\n\n name: {\n [LOCALE.EN_US]: `Language`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Sprache`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'library',\n\n name: {\n [LOCALE.EN_US]: `Library`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Bibliothek`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'runtime_environment',\n\n name: {\n [LOCALE.EN_US]: `Runtime Environment`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Laufzeitumgebung`,\n },\n} as const satisfies TTermType\n","import { interpolateValues } from '@/utils'\n\nimport cms from './cms'\nimport framework from './framework'\nimport language from './language'\nimport library from './library'\nimport runtime_environment from './runtime_environment'\n\nexport const RAW_TYPE = {\n [cms.id]: cms,\n [framework.id]: framework,\n [language.id]: language,\n [library.id]: library,\n [runtime_environment.id]: runtime_environment,\n} as const\n\nexport const TYPE = interpolateValues({ obj: RAW_TYPE, keys: ['name'], useFallback: false })\n","import type { TTerm } from '@/types'\n\nimport { LOCALE } from '../locales'\nimport { TAG } from '../tags'\nimport { TYPE } from '../types'\n\nexport default {\n id: `node_js`,\n\n name: {\n [LOCALE.EN_US]: `Node.js`,\n },\n\n label: {\n [LOCALE.EN_US]: `JavaScript Runtime`,\n [LOCALE.DE_DE]: `JavaScript-Laufzeit`,\n },\n\n definition: {\n [LOCALE.EN_US]: `Node.js is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.`,\n [LOCALE.DE_DE]: `Node.js ist eine kostenlose, Open-Source, plattformübergreifende JavaScript-Laufzeitumgebung, die es Entwicklern ermöglicht, Server, Webanwendungen, Befehlszeilentools und Skripte zu erstellen.`,\n },\n\n type: [TYPE.runtime_environment],\n\n tags: [TAG.backend],\n\n links: {\n website: `https://nodejs.org`,\n },\n} as const satisfies TTerm\n","import type { TTerm } from '@/types'\n\nimport { LOCALE } from '../locales'\nimport { TAG } from '../tags'\nimport { TYPE } from '../types'\n\nexport default {\n id: `react`,\n\n name: {\n [LOCALE.EN_US]: `React`,\n },\n\n label: {\n [LOCALE.EN_US]: `JavaScript Library`,\n [LOCALE.DE_DE]: `JavaScript-Bibliothek`,\n },\n\n definition: {\n [LOCALE.EN_US]: `A JavaScript library for building component-based user interfaces.`,\n [LOCALE.DE_DE]: `Eine JavaScript-Bibliothek zum Erstellen komponentenbasierter Benutzeroberflächen.`,\n },\n\n type: [TYPE.library],\n\n tags: [TAG.frontend, TAG.backend],\n\n links: {\n website: `https://react.dev`,\n },\n} as const satisfies TTerm\n","import type { TTerm } from '@/types'\n\nimport { LOCALE } from '../locales'\nimport { TAG } from '../tags'\nimport { TYPE } from '../types'\n\nexport default {\n id: `typescript`,\n\n name: {\n [LOCALE.EN_US]: `TypeScript`,\n },\n\n label: {\n [LOCALE.EN_US]: `High-Level Programming Language`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Hochsprache`,\n },\n\n definition: {\n [LOCALE.EN_US]: `TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `TypeScript ist eine stark typisierte Programmiersprache, die auf JavaScript aufbaut und Ihnen bei jeder Größenordnung bessere Werkzeuge bietet.`,\n },\n\n type: [TYPE.language],\n\n tags: [TAG.frontend, TAG.backend, TAG.open_source],\n\n links: {\n website: `https://www.typescriptlang.org`,\n },\n} as const satisfies TTerm\n","import { interpolateValues } from '@/utils'\n\nimport node_js from './node_js'\nimport react from './react'\nimport typescript from './typescript'\n\nexport const RAW_TERM = {\n [node_js.id]: node_js,\n [react.id]: react,\n [typescript.id]: typescript,\n} as const\n\nexport const TERM = interpolateValues({ obj: RAW_TERM, keys: ['name', 'label', 'definition'], useFallback: false })\n","import { LOCALE } from '@data'\n\nexport const MISC = {} as const\n\nexport const CONFIG = {\n DEFAULT_LOCALE: LOCALE.EN_US,\n USE_FALLBACK: true,\n} as const\n","import type {\n TDevDict,\n TDevDictLocalized,\n TLocale,\n TTerm,\n TTermId,\n TTermLocalized,\n TTermTag,\n TTermTagLocalized,\n TTermType,\n TTermTypeLocalized,\n} from '@/types'\nimport { CONFIG } from '@/common'\nimport { getTermTagLocalized, getTermTypeLocalized, getValueLocalized, interpolateValues } from '@/utils'\nimport { RAW_TAG, RAW_TERM, RAW_TYPE } from '@data'\n\n/**\n * NB: The `useFallback` param only works when `localized` is `true`. This is by design.\n */\n\nexport function getTerm(params: { id: TTermId; localized: false }): TTerm\nexport function getTerm(params: {\n id: TTermId\n localized?: true\n locale?: TLocale\n useFallback?: boolean\n}): TTermLocalized\nexport function getTerm({\n id,\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n id: TTermId\n localized?: boolean\n locale?: TLocale\n useFallback?: boolean\n}): TTerm | TTermLocalized {\n // We do not need a null check here because TTermId only allows valid IDs\n const TERM = interpolateValues({ obj: RAW_TERM, keys: ['name', 'label', 'definition'], useFallback })\n const term = TERM[id]\n\n if (!localized) {\n return term\n }\n\n return {\n ...term,\n name: getValueLocalized({ obj: term.name, locale, useFallback }),\n label: getValueLocalized({ obj: term.label, locale, useFallback }),\n definition: getValueLocalized({ obj: term.definition, locale, useFallback }),\n type: term.type.map((value) => getTermTypeLocalized({ term: value, locale, useFallback })),\n tags: term.tags.map((value) => getTermTagLocalized({ tag: value, locale, useFallback })),\n }\n}\n\nexport function getTerms(params?: { localized: false; useFallback?: boolean }): TTerm[]\nexport function getTerms(params?: { localized?: true; locale?: TLocale; useFallback?: boolean }): TTermLocalized[]\nexport function getTerms({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n localized?: boolean\n locale?: TLocale\n useFallback?: boolean\n} = {}): TTerm[] | TTermLocalized[] {\n const TERM = interpolateValues({ obj: RAW_TERM, keys: ['name', 'label', 'definition'], useFallback })\n const terms = Object.values(TERM)\n\n if (!localized) {\n return terms\n }\n\n return terms.map((term) => getTerm({ id: term.id, locale, useFallback }))\n}\n\nexport function getDict(params?: { localized: false; useFallback?: boolean }): TDevDict\nexport function getDict(params?: { localized?: true; locale?: TLocale; useFallback?: boolean }): TDevDictLocalized\nexport function getDict({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n localized?: boolean\n locale?: TLocale\n useFallback?: boolean\n} = {}): TDevDict | TDevDictLocalized {\n const TERM = interpolateValues({ obj: RAW_TERM, keys: ['name', 'label', 'definition'], useFallback })\n\n if (!localized) {\n return TERM as TDevDict\n }\n\n const dict = {} as TDevDictLocalized\n\n for (const [key, term] of Object.entries(TERM)) {\n const localizedTerm = getTerm({ id: term.id, locale, useFallback })\n dict[key as TTermId] = localizedTerm\n }\n\n return dict\n}\n\nexport function getTypes(params?: { localized: false; useFallback?: boolean }): TTermType[]\nexport function getTypes(params?: { localized?: true; locale?: TLocale; useFallback?: boolean }): TTermTypeLocalized[]\nexport function getTypes({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n localized?: boolean\n locale?: TLocale\n useFallback?: boolean\n} = {}): TTermType[] | TTermTypeLocalized[] {\n const TYPE = interpolateValues({ obj: RAW_TYPE, keys: ['name'], useFallback: false })\n const types = Object.values(TYPE)\n\n if (!localized) {\n return types\n }\n\n return types.map((type) => getTermTypeLocalized({ term: type, locale, useFallback }))\n}\n\nexport function getTags(params?: { localized: false; useFallback?: boolean }): TTermTag[]\nexport function getTags(params?: { localized?: true; locale?: TLocale; useFallback?: boolean }): TTermTagLocalized[]\nexport function getTags({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n localized?: boolean\n locale?: TLocale\n useFallback?: boolean\n} = {}): TTermTag[] | TTermTagLocalized[] {\n const TAG = interpolateValues({ obj: RAW_TAG, keys: ['name'], useFallback: false })\n const tags = Object.values(TAG)\n\n if (!localized) {\n return tags\n }\n\n return tags.map((tag) => getTermTagLocalized({ tag, locale, useFallback }))\n}\n"],"names":["LOCALE","interpolateValue","obj","value","useFallback","CONFIG","interpolateLocaleRecord","locales","locale","interpolateValues","keys","itemKey","item","interpolatedFields","key","getValueLocalized","getTermTagLocalized","tag","getTermTypeLocalized","term","backend","frontend","open_source","RAW_TAG","TAG","cms","framework","language","library","runtime_environment","RAW_TYPE","TYPE","node_js","react","typescript","RAW_TERM","getTerm","id","localized","getTerms","TERM","terms","getDict","dict","localizedTerm","getTypes","types","type","getTags","tags"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,25 +1,33 @@
1
1
  declare const CONFIG: {
2
2
  readonly DEFAULT_LOCALE: "en-US";
3
+ readonly USE_FALLBACK: true;
3
4
  };
4
5
 
5
6
  export declare function getDict(params?: {
6
7
  localized: false;
8
+ useFallback?: boolean;
7
9
  }): TDevDict;
8
10
 
9
11
  export declare function getDict(params?: {
10
12
  localized?: true;
11
13
  locale?: TLocale;
14
+ useFallback?: boolean;
12
15
  }): TDevDictLocalized;
13
16
 
14
17
  export declare function getTags(params?: {
15
18
  localized: false;
19
+ useFallback?: boolean;
16
20
  }): TTermTag[];
17
21
 
18
22
  export declare function getTags(params?: {
19
23
  localized?: true;
20
24
  locale?: TLocale;
25
+ useFallback?: boolean;
21
26
  }): TTermTagLocalized[];
22
27
 
28
+ /**
29
+ * NB: The `useFallback` param only works when `localized` is `true`. This is by design.
30
+ */
23
31
  export declare function getTerm(params: {
24
32
  id: TTermId;
25
33
  localized: false;
@@ -29,24 +37,29 @@ export declare function getTerm(params: {
29
37
  id: TTermId;
30
38
  localized?: true;
31
39
  locale?: TLocale;
40
+ useFallback?: boolean;
32
41
  }): TTermLocalized;
33
42
 
34
43
  export declare function getTerms(params?: {
35
44
  localized: false;
45
+ useFallback?: boolean;
36
46
  }): TTerm[];
37
47
 
38
48
  export declare function getTerms(params?: {
39
49
  localized?: true;
40
50
  locale?: TLocale;
51
+ useFallback?: boolean;
41
52
  }): TTermLocalized[];
42
53
 
43
54
  export declare function getTypes(params?: {
44
55
  localized: false;
56
+ useFallback?: boolean;
45
57
  }): TTermType[];
46
58
 
47
59
  export declare function getTypes(params?: {
48
60
  localized?: true;
49
61
  locale?: TLocale;
62
+ useFallback?: boolean;
50
63
  }): TTermTypeLocalized[];
51
64
 
52
65
  declare const LOCALE: {
@@ -60,6 +73,7 @@ declare const TAG: {
60
73
  readonly id: "backend";
61
74
  readonly name: {
62
75
  readonly "en-US": "Backend";
76
+ readonly "en-GB": "en-US";
63
77
  readonly "de-DE": "Backend";
64
78
  };
65
79
  };
@@ -67,6 +81,7 @@ declare const TAG: {
67
81
  readonly id: "frontend";
68
82
  readonly name: {
69
83
  readonly "en-US": "Frontend";
84
+ readonly "en-GB": "en-US";
70
85
  readonly "de-DE": "Frontend";
71
86
  };
72
87
  };
@@ -74,6 +89,7 @@ declare const TAG: {
74
89
  readonly id: "open_source";
75
90
  readonly name: {
76
91
  readonly "en-US": "Open Source";
92
+ readonly "en-GB": "en-US";
77
93
  readonly "de-DE": "Open Source";
78
94
  };
79
95
  };
@@ -86,14 +102,9 @@ declare type TDevDictLocalized = Record<TTermId, TTermLocalized>;
86
102
  declare const TERM: {
87
103
  readonly node_js: {
88
104
  readonly id: "node_js";
89
- readonly name: "Node.js";
90
- readonly type: [{
91
- readonly id: "runtime_environment";
92
- readonly name: {
93
- readonly "en-US": "Runtime Environment";
94
- readonly "de-DE": "Laufzeitumgebung";
95
- };
96
- }];
105
+ readonly name: {
106
+ readonly "en-US": "Node.js";
107
+ };
97
108
  readonly label: {
98
109
  readonly "en-US": "JavaScript Runtime";
99
110
  readonly "de-DE": "JavaScript-Laufzeit";
@@ -102,10 +113,19 @@ declare const TERM: {
102
113
  readonly "en-US": "Node.js is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.";
103
114
  readonly "de-DE": "Node.js ist eine kostenlose, Open-Source, plattformübergreifende JavaScript-Laufzeitumgebung, die es Entwicklern ermöglicht, Server, Webanwendungen, Befehlszeilentools und Skripte zu erstellen.";
104
115
  };
116
+ readonly type: [{
117
+ readonly id: "runtime_environment";
118
+ readonly name: {
119
+ readonly "en-US": "Runtime Environment";
120
+ readonly "en-GB": "en-US";
121
+ readonly "de-DE": "Laufzeitumgebung";
122
+ };
123
+ }];
105
124
  readonly tags: [{
106
125
  readonly id: "backend";
107
126
  readonly name: {
108
127
  readonly "en-US": "Backend";
128
+ readonly "en-GB": "en-US";
109
129
  readonly "de-DE": "Backend";
110
130
  };
111
131
  }];
@@ -115,14 +135,9 @@ declare const TERM: {
115
135
  };
116
136
  readonly react: {
117
137
  readonly id: "react";
118
- readonly name: "React";
119
- readonly type: [{
120
- readonly id: "library";
121
- readonly name: {
122
- readonly "en-US": "Library";
123
- readonly "de-DE": "Bibliothek";
124
- };
125
- }];
138
+ readonly name: {
139
+ readonly "en-US": "React";
140
+ };
126
141
  readonly label: {
127
142
  readonly "en-US": "JavaScript Library";
128
143
  readonly "de-DE": "JavaScript-Bibliothek";
@@ -131,16 +146,26 @@ declare const TERM: {
131
146
  readonly "en-US": "A JavaScript library for building component-based user interfaces.";
132
147
  readonly "de-DE": "Eine JavaScript-Bibliothek zum Erstellen komponentenbasierter Benutzeroberflächen.";
133
148
  };
149
+ readonly type: [{
150
+ readonly id: "library";
151
+ readonly name: {
152
+ readonly "en-US": "Library";
153
+ readonly "en-GB": "en-US";
154
+ readonly "de-DE": "Bibliothek";
155
+ };
156
+ }];
134
157
  readonly tags: [{
135
158
  readonly id: "frontend";
136
159
  readonly name: {
137
160
  readonly "en-US": "Frontend";
161
+ readonly "en-GB": "en-US";
138
162
  readonly "de-DE": "Frontend";
139
163
  };
140
164
  }, {
141
165
  readonly id: "backend";
142
166
  readonly name: {
143
167
  readonly "en-US": "Backend";
168
+ readonly "en-GB": "en-US";
144
169
  readonly "de-DE": "Backend";
145
170
  };
146
171
  }];
@@ -150,38 +175,46 @@ declare const TERM: {
150
175
  };
151
176
  readonly typescript: {
152
177
  readonly id: "typescript";
153
- readonly name: "TypeScript";
154
- readonly type: [{
155
- readonly id: "language";
156
- readonly name: {
157
- readonly "en-US": "Language";
158
- readonly "de-DE": "Sprache";
159
- };
160
- }];
178
+ readonly name: {
179
+ readonly "en-US": "TypeScript";
180
+ };
161
181
  readonly label: {
162
182
  readonly "en-US": "High-Level Programming Language";
183
+ readonly "en-GB": "en-US";
163
184
  readonly "de-DE": "Hochsprache";
164
185
  };
165
186
  readonly definition: {
166
187
  readonly "en-US": "TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.";
188
+ readonly "en-GB": "en-US";
167
189
  readonly "de-DE": "TypeScript ist eine stark typisierte Programmiersprache, die auf JavaScript aufbaut und Ihnen bei jeder Größenordnung bessere Werkzeuge bietet.";
168
190
  };
191
+ readonly type: [{
192
+ readonly id: "language";
193
+ readonly name: {
194
+ readonly "en-US": "Language";
195
+ readonly "en-GB": "en-US";
196
+ readonly "de-DE": "Sprache";
197
+ };
198
+ }];
169
199
  readonly tags: [{
170
200
  readonly id: "frontend";
171
201
  readonly name: {
172
202
  readonly "en-US": "Frontend";
203
+ readonly "en-GB": "en-US";
173
204
  readonly "de-DE": "Frontend";
174
205
  };
175
206
  }, {
176
207
  readonly id: "backend";
177
208
  readonly name: {
178
209
  readonly "en-US": "Backend";
210
+ readonly "en-GB": "en-US";
179
211
  readonly "de-DE": "Backend";
180
212
  };
181
213
  }, {
182
214
  readonly id: "open_source";
183
215
  readonly name: {
184
216
  readonly "en-US": "Open Source";
217
+ readonly "en-GB": "en-US";
185
218
  readonly "de-DE": "Open Source";
186
219
  };
187
220
  }];
@@ -201,25 +234,22 @@ declare type TLocaleRecord = {
201
234
 
202
235
  declare type TTerm = {
203
236
  id: string;
204
- name: string;
237
+ name: TLocaleRecord;
205
238
  type: TTermTypes[];
206
- label: TTermLabel;
207
- definition: TTermDefinition;
239
+ label: TLocaleRecord;
240
+ definition: TLocaleRecord;
208
241
  tags: TTermTags[];
209
242
  links?: TTermLinks;
210
243
  };
211
244
 
212
- declare type TTermDefinition = TLocaleRecord;
213
-
214
245
  declare type TTermId = keyof typeof TERM;
215
246
 
216
- declare type TTermLabel = TLocaleRecord;
217
-
218
247
  declare type TTermLinks = {
219
248
  website: string;
220
249
  } & Partial<Record<Exclude<TLinkType, 'website'>, string>>;
221
250
 
222
- declare type TTermLocalized = Omit<TTerm, 'label' | 'definition' | 'type' | 'tags'> & {
251
+ declare type TTermLocalized = Omit<TTerm, 'name' | 'label' | 'definition' | 'type' | 'tags'> & {
252
+ name: string;
223
253
  label: string;
224
254
  definition: string;
225
255
  type: TTermTypeLocalized[];
@@ -255,6 +285,7 @@ declare const TYPE: {
255
285
  readonly id: "cms";
256
286
  readonly name: {
257
287
  readonly "en-US": "Content Management System";
288
+ readonly "en-GB": "en-US";
258
289
  readonly "de-DE": "Content-Management-System";
259
290
  };
260
291
  };
@@ -262,6 +293,7 @@ declare const TYPE: {
262
293
  readonly id: "framework";
263
294
  readonly name: {
264
295
  readonly "en-US": "Framework";
296
+ readonly "en-GB": "en-US";
265
297
  readonly "de-DE": "Framework";
266
298
  };
267
299
  };
@@ -269,6 +301,7 @@ declare const TYPE: {
269
301
  readonly id: "language";
270
302
  readonly name: {
271
303
  readonly "en-US": "Language";
304
+ readonly "en-GB": "en-US";
272
305
  readonly "de-DE": "Sprache";
273
306
  };
274
307
  };
@@ -276,6 +309,7 @@ declare const TYPE: {
276
309
  readonly id: "library";
277
310
  readonly name: {
278
311
  readonly "en-US": "Library";
312
+ readonly "en-GB": "en-US";
279
313
  readonly "de-DE": "Bibliothek";
280
314
  };
281
315
  };
@@ -283,6 +317,7 @@ declare const TYPE: {
283
317
  readonly id: "runtime_environment";
284
318
  readonly name: {
285
319
  readonly "en-US": "Runtime Environment";
320
+ readonly "en-GB": "en-US";
286
321
  readonly "de-DE": "Laufzeitumgebung";
287
322
  };
288
323
  };
package/dist/index.js CHANGED
@@ -1,68 +1,117 @@
1
1
  const e = {
2
2
  EN_US: "en-US",
3
+ EN_GB: "en-GB",
3
4
  DE_DE: "de-DE"
4
- }, d = {
5
+ }, y = ({
6
+ obj: t,
7
+ value: r,
8
+ useFallback: n = a.USE_FALLBACK
9
+ }) => r && Object.values(e).includes(r) ? t[r] || (n ? t[e.EN_US] : "") : r || (n ? t[e.EN_US] : ""), F = ({
10
+ obj: t,
11
+ useFallback: r = a.USE_FALLBACK
12
+ }) => {
13
+ const n = Object.values(e);
14
+ return Object.fromEntries(
15
+ n.map((i) => [i, y({ obj: t, value: t[i], useFallback: r })])
16
+ );
17
+ }, c = ({
18
+ obj: t,
19
+ keys: r,
20
+ useFallback: n = a.USE_FALLBACK
21
+ }) => Object.fromEntries(
22
+ Object.entries(t).map(([i, o]) => {
23
+ const s = r.filter((E) => E in o && typeof o[E] == "object").map((E) => [E, F({ obj: o[E], useFallback: n })]);
24
+ return [i, { ...o, ...Object.fromEntries(s) }];
25
+ })
26
+ ), d = ({
27
+ obj: t,
28
+ locale: r = a.DEFAULT_LOCALE,
29
+ useFallback: n = a.USE_FALLBACK
30
+ }) => y({ obj: t, value: t[r], useFallback: n }), T = ({
31
+ tag: t,
32
+ locale: r = a.DEFAULT_LOCALE,
33
+ useFallback: n = a.USE_FALLBACK
34
+ }) => ({
35
+ id: t.id,
36
+ name: d({ obj: t.name, locale: r, useFallback: n })
37
+ }), B = ({
38
+ term: t,
39
+ locale: r = a.DEFAULT_LOCALE,
40
+ useFallback: n = a.USE_FALLBACK
41
+ }) => ({
42
+ id: t.id,
43
+ name: d({ obj: t.name, locale: r, useFallback: n })
44
+ }), p = {
5
45
  id: "backend",
6
46
  name: {
7
47
  [e.EN_US]: "Backend",
48
+ [e.EN_GB]: e.EN_US,
8
49
  [e.DE_DE]: "Backend"
9
50
  }
10
- }, u = {
51
+ }, l = {
11
52
  id: "frontend",
12
53
  name: {
13
54
  [e.EN_US]: "Frontend",
55
+ [e.EN_GB]: e.EN_US,
14
56
  [e.DE_DE]: "Frontend"
15
57
  }
16
- }, m = {
58
+ }, L = {
17
59
  id: "open_source",
18
60
  name: {
19
61
  [e.EN_US]: "Open Source",
62
+ [e.EN_GB]: e.EN_US,
20
63
  [e.DE_DE]: "Open Source"
21
64
  }
22
- }, o = {
23
- [d.id]: d,
24
- [u.id]: u,
25
- [m.id]: m
26
- }, p = {
65
+ }, j = {
66
+ [p.id]: p,
67
+ [l.id]: l,
68
+ [L.id]: L
69
+ }, _ = c({ obj: j, keys: ["name"], useFallback: !1 }), S = {
27
70
  id: "cms",
28
71
  name: {
29
72
  [e.EN_US]: "Content Management System",
73
+ [e.EN_GB]: e.EN_US,
30
74
  [e.DE_DE]: "Content-Management-System"
31
75
  }
32
- }, L = {
76
+ }, b = {
33
77
  id: "framework",
34
78
  name: {
35
79
  [e.EN_US]: "Framework",
80
+ [e.EN_GB]: e.EN_US,
36
81
  [e.DE_DE]: "Framework"
37
82
  }
38
83
  }, g = {
39
84
  id: "language",
40
85
  name: {
41
86
  [e.EN_US]: "Language",
87
+ [e.EN_GB]: e.EN_US,
42
88
  [e.DE_DE]: "Sprache"
43
89
  }
44
- }, _ = {
90
+ }, U = {
45
91
  id: "library",
46
92
  name: {
47
93
  [e.EN_US]: "Library",
94
+ [e.EN_GB]: e.EN_US,
48
95
  [e.DE_DE]: "Bibliothek"
49
96
  }
50
- }, l = {
97
+ }, f = {
51
98
  id: "runtime_environment",
52
99
  name: {
53
100
  [e.EN_US]: "Runtime Environment",
101
+ [e.EN_GB]: e.EN_US,
54
102
  [e.DE_DE]: "Laufzeitumgebung"
55
103
  }
56
- }, E = {
57
- [p.id]: p,
58
- [L.id]: L,
104
+ }, k = {
105
+ [S.id]: S,
106
+ [b.id]: b,
59
107
  [g.id]: g,
60
- [_.id]: _,
61
- [l.id]: l
62
- }, D = {
108
+ [U.id]: U,
109
+ [f.id]: f
110
+ }, u = c({ obj: k, keys: ["name"], useFallback: !1 }), A = {
63
111
  id: "node_js",
64
- name: "Node.js",
65
- type: [E.runtime_environment],
112
+ name: {
113
+ [e.EN_US]: "Node.js"
114
+ },
66
115
  label: {
67
116
  [e.EN_US]: "JavaScript Runtime",
68
117
  [e.DE_DE]: "JavaScript-Laufzeit"
@@ -71,14 +120,16 @@ const e = {
71
120
  [e.EN_US]: "Node.js is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.",
72
121
  [e.DE_DE]: "Node.js ist eine kostenlose, Open-Source, plattformübergreifende JavaScript-Laufzeitumgebung, die es Entwicklern ermöglicht, Server, Webanwendungen, Befehlszeilentools und Skripte zu erstellen."
73
122
  },
74
- tags: [o.backend],
123
+ type: [u.runtime_environment],
124
+ tags: [_.backend],
75
125
  links: {
76
126
  website: "https://nodejs.org"
77
127
  }
78
- }, b = {
128
+ }, N = {
79
129
  id: "react",
80
- name: "React",
81
- type: [E.library],
130
+ name: {
131
+ [e.EN_US]: "React"
132
+ },
82
133
  label: {
83
134
  [e.EN_US]: "JavaScript Library",
84
135
  [e.DE_DE]: "JavaScript-Bibliothek"
@@ -87,104 +138,101 @@ const e = {
87
138
  [e.EN_US]: "A JavaScript library for building component-based user interfaces.",
88
139
  [e.DE_DE]: "Eine JavaScript-Bibliothek zum Erstellen komponentenbasierter Benutzeroberflächen."
89
140
  },
90
- tags: [o.frontend, o.backend],
141
+ type: [u.library],
142
+ tags: [_.frontend, _.backend],
91
143
  links: {
92
144
  website: "https://react.dev"
93
145
  }
94
- }, S = {
146
+ }, D = {
95
147
  id: "typescript",
96
- name: "TypeScript",
97
- type: [E.language],
148
+ name: {
149
+ [e.EN_US]: "TypeScript"
150
+ },
98
151
  label: {
99
152
  [e.EN_US]: "High-Level Programming Language",
153
+ [e.EN_GB]: e.EN_US,
100
154
  [e.DE_DE]: "Hochsprache"
101
155
  },
102
156
  definition: {
103
157
  [e.EN_US]: "TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.",
158
+ [e.EN_GB]: e.EN_US,
104
159
  [e.DE_DE]: "TypeScript ist eine stark typisierte Programmiersprache, die auf JavaScript aufbaut und Ihnen bei jeder Größenordnung bessere Werkzeuge bietet."
105
160
  },
106
- tags: [o.frontend, o.backend, o.open_source],
161
+ type: [u.language],
162
+ tags: [_.frontend, _.backend, _.open_source],
107
163
  links: {
108
164
  website: "https://www.typescriptlang.org"
109
165
  }
110
- }, c = {
111
- [D.id]: D,
112
- [b.id]: b,
113
- [S.id]: S
114
- }, a = {
115
- DEFAULT_LOCALE: e.EN_US
116
- }, y = ({
117
- label: n,
118
- locale: t = a.DEFAULT_LOCALE
119
- }) => n[t] || n[a.DEFAULT_LOCALE], k = ({
120
- definition: n,
121
- locale: t = a.DEFAULT_LOCALE
122
- }) => n[t] || n[a.DEFAULT_LOCALE], f = ({
123
- tag: n,
124
- locale: t = a.DEFAULT_LOCALE
125
- }) => ({
126
- id: n.id,
127
- name: n.name[t] || n.name[a.DEFAULT_LOCALE]
128
- }), A = ({
129
- term: n,
130
- locale: t = a.DEFAULT_LOCALE
131
- }) => ({
132
- id: n.id,
133
- name: n.name[t] || n.name[a.DEFAULT_LOCALE]
134
- });
135
- function U({
136
- id: n,
137
- localized: t = !0,
138
- locale: r = a.DEFAULT_LOCALE
166
+ }, m = {
167
+ [A.id]: A,
168
+ [N.id]: N,
169
+ [D.id]: D
170
+ };
171
+ c({ obj: m, keys: ["name", "label", "definition"], useFallback: !1 });
172
+ const a = {
173
+ DEFAULT_LOCALE: e.EN_US,
174
+ USE_FALLBACK: !0
175
+ };
176
+ function v({
177
+ id: t,
178
+ localized: r = !0,
179
+ locale: n = a.DEFAULT_LOCALE,
180
+ useFallback: i = a.USE_FALLBACK
139
181
  }) {
140
- const i = c[n];
141
- return t ? {
142
- ...i,
143
- label: y({ label: i.label, locale: r }),
144
- definition: k({ definition: i.definition, locale: r }),
145
- type: i.type.map((s) => A({ term: s, locale: r })),
146
- tags: i.tags.map((s) => f({ tag: s, locale: r }))
147
- } : i;
182
+ const s = c({ obj: m, keys: ["name", "label", "definition"], useFallback: i })[t];
183
+ return r ? {
184
+ ...s,
185
+ name: d({ obj: s.name, locale: n, useFallback: i }),
186
+ label: d({ obj: s.label, locale: n, useFallback: i }),
187
+ definition: d({ obj: s.definition, locale: n, useFallback: i }),
188
+ type: s.type.map((E) => B({ term: E, locale: n, useFallback: i })),
189
+ tags: s.tags.map((E) => T({ tag: E, locale: n, useFallback: i }))
190
+ } : s;
148
191
  }
149
- function v({
150
- localized: n = !0,
151
- locale: t = a.DEFAULT_LOCALE
192
+ function O({
193
+ localized: t = !0,
194
+ locale: r = a.DEFAULT_LOCALE,
195
+ useFallback: n = a.USE_FALLBACK
152
196
  } = {}) {
153
- const r = Object.values(c);
154
- return n ? r.map((i) => U({ id: i.id, locale: t })) : r;
197
+ const i = c({ obj: m, keys: ["name", "label", "definition"], useFallback: n }), o = Object.values(i);
198
+ return t ? o.map((s) => v({ id: s.id, locale: r, useFallback: n })) : o;
155
199
  }
156
- function O({
157
- localized: n = !0,
158
- locale: t = a.DEFAULT_LOCALE
200
+ function h({
201
+ localized: t = !0,
202
+ locale: r = a.DEFAULT_LOCALE,
203
+ useFallback: n = a.USE_FALLBACK
159
204
  } = {}) {
160
- if (!n)
161
- return c;
162
- const r = {};
163
- for (const [i, s] of Object.entries(c)) {
164
- const T = U({ id: s.id, locale: t });
165
- r[i] = T;
205
+ const i = c({ obj: m, keys: ["name", "label", "definition"], useFallback: n });
206
+ if (!t)
207
+ return i;
208
+ const o = {};
209
+ for (const [s, E] of Object.entries(i)) {
210
+ const C = v({ id: E.id, locale: r, useFallback: n });
211
+ o[s] = C;
166
212
  }
167
- return r;
213
+ return o;
168
214
  }
169
- function N({
170
- localized: n = !0,
171
- locale: t = a.DEFAULT_LOCALE
215
+ function G({
216
+ localized: t = !0,
217
+ locale: r = a.DEFAULT_LOCALE,
218
+ useFallback: n = a.USE_FALLBACK
172
219
  } = {}) {
173
- const r = Object.values(E);
174
- return n ? r.map((i) => A({ term: i, locale: t })) : r;
220
+ const i = c({ obj: k, keys: ["name"], useFallback: !1 }), o = Object.values(i);
221
+ return t ? o.map((s) => B({ term: s, locale: r, useFallback: n })) : o;
175
222
  }
176
- function F({
177
- localized: n = !0,
178
- locale: t = a.DEFAULT_LOCALE
223
+ function w({
224
+ localized: t = !0,
225
+ locale: r = a.DEFAULT_LOCALE,
226
+ useFallback: n = a.USE_FALLBACK
179
227
  } = {}) {
180
- const r = Object.values(o);
181
- return n ? r.map((i) => f({ tag: i, locale: t })) : r;
228
+ const i = c({ obj: j, keys: ["name"], useFallback: !1 }), o = Object.values(i);
229
+ return t ? o.map((s) => T({ tag: s, locale: r, useFallback: n })) : o;
182
230
  }
183
231
  export {
184
- O as getDict,
185
- F as getTags,
186
- U as getTerm,
187
- v as getTerms,
188
- N as getTypes
232
+ h as getDict,
233
+ w as getTags,
234
+ v as getTerm,
235
+ O as getTerms,
236
+ G as getTypes
189
237
  };
190
238
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../data/locales/index.ts","../data/tags/backend.ts","../data/tags/frontend.ts","../data/tags/open_source.ts","../data/tags/index.ts","../data/types/cms.ts","../data/types/framework.ts","../data/types/language.ts","../data/types/library.ts","../data/types/runtime_environment.ts","../data/types/index.ts","../data/terms/node_js.ts","../data/terms/react.ts","../data/terms/typescript.ts","../data/terms/index.ts","../src/common/index.ts","../src/utils/index.ts","../src/index.ts"],"sourcesContent":["export const LOCALE = {\n EN_US: 'en-US',\n EN_GB: 'en-GB',\n DE_DE: 'de-DE',\n} as const\n","import type { TTermTag } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'backend',\n\n name: {\n [LOCALE.EN_US]: `Backend`,\n [LOCALE.DE_DE]: `Backend`,\n },\n} as const satisfies TTermTag\n","import type { TTermTag } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'frontend',\n\n name: {\n [LOCALE.EN_US]: `Frontend`,\n [LOCALE.DE_DE]: `Frontend`,\n },\n} as const satisfies TTermTag\n","import type { TTermTag } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'open_source',\n\n name: {\n [LOCALE.EN_US]: `Open Source`,\n [LOCALE.DE_DE]: `Open Source`,\n },\n} as const satisfies TTermTag\n","import backend from './backend'\nimport frontend from './frontend'\nimport open_source from './open_source'\n\nexport const TAG = {\n [backend.id]: backend,\n [frontend.id]: frontend,\n [open_source.id]: open_source,\n} as const\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'cms',\n\n name: {\n [LOCALE.EN_US]: `Content Management System`,\n [LOCALE.DE_DE]: `Content-Management-System`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'framework',\n\n name: {\n [LOCALE.EN_US]: `Framework`,\n [LOCALE.DE_DE]: `Framework`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'language',\n\n name: {\n [LOCALE.EN_US]: `Language`,\n [LOCALE.DE_DE]: `Sprache`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'library',\n\n name: {\n [LOCALE.EN_US]: `Library`,\n [LOCALE.DE_DE]: `Bibliothek`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'runtime_environment',\n\n name: {\n [LOCALE.EN_US]: `Runtime Environment`,\n [LOCALE.DE_DE]: `Laufzeitumgebung`,\n },\n} as const satisfies TTermType\n","import cms from './cms'\nimport framework from './framework'\nimport language from './language'\nimport library from './library'\nimport runtime_environment from './runtime_environment'\n\nexport const TYPE = {\n [cms.id]: cms,\n [framework.id]: framework,\n [language.id]: language,\n [library.id]: library,\n [runtime_environment.id]: runtime_environment,\n} as const\n","import type { TTerm } from '@/types'\n\nimport { LOCALE } from '../locales'\nimport { TAG } from '../tags'\nimport { TYPE } from '../types'\n\nexport default {\n id: 'node_js',\n\n name: 'Node.js',\n\n type: [TYPE.runtime_environment],\n\n label: {\n [LOCALE.EN_US]: `JavaScript Runtime`,\n [LOCALE.DE_DE]: `JavaScript-Laufzeit`,\n },\n\n definition: {\n [LOCALE.EN_US]: `Node.js is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.`,\n [LOCALE.DE_DE]: `Node.js ist eine kostenlose, Open-Source, plattformübergreifende JavaScript-Laufzeitumgebung, die es Entwicklern ermöglicht, Server, Webanwendungen, Befehlszeilentools und Skripte zu erstellen.`,\n },\n\n tags: [TAG.backend],\n\n links: {\n website: 'https://nodejs.org',\n },\n} as const satisfies TTerm\n","import type { TTerm } from '@/types'\n\nimport { LOCALE } from '../locales'\nimport { TAG } from '../tags'\nimport { TYPE } from '../types'\n\nexport default {\n id: 'react',\n\n name: 'React',\n\n type: [TYPE.library],\n\n label: {\n [LOCALE.EN_US]: `JavaScript Library`,\n [LOCALE.DE_DE]: `JavaScript-Bibliothek`,\n },\n\n definition: {\n [LOCALE.EN_US]: `A JavaScript library for building component-based user interfaces.`,\n [LOCALE.DE_DE]: `Eine JavaScript-Bibliothek zum Erstellen komponentenbasierter Benutzeroberflächen.`,\n },\n\n tags: [TAG.frontend, TAG.backend],\n\n links: {\n website: 'https://react.dev',\n },\n} as const satisfies TTerm\n","import type { TTerm } from '@/types'\n\nimport { LOCALE } from '../locales'\nimport { TAG } from '../tags'\nimport { TYPE } from '../types'\n\nexport default {\n id: 'typescript',\n\n name: 'TypeScript',\n\n type: [TYPE.language],\n\n label: {\n [LOCALE.EN_US]: `High-Level Programming Language`,\n [LOCALE.DE_DE]: `Hochsprache`,\n },\n\n definition: {\n [LOCALE.EN_US]: `TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.`,\n [LOCALE.DE_DE]: `TypeScript ist eine stark typisierte Programmiersprache, die auf JavaScript aufbaut und Ihnen bei jeder Größenordnung bessere Werkzeuge bietet.`,\n },\n\n tags: [TAG.frontend, TAG.backend, TAG.open_source],\n\n links: {\n website: 'https://www.typescriptlang.org',\n },\n} as const satisfies TTerm\n","import node_js from './node_js'\nimport react from './react'\nimport typescript from './typescript'\n\nexport const TERM = {\n [node_js.id]: node_js,\n [react.id]: react,\n [typescript.id]: typescript,\n} as const\n","import { LOCALE } from '@data'\n\nexport const MISC = {} as const\n\nexport const CONFIG = {\n DEFAULT_LOCALE: LOCALE.EN_US,\n} as const\n","import type {\n TLocale,\n TTermDefinition,\n TTermLabel,\n TTermTag,\n TTermTagLocalized,\n TTermType,\n TTermTypeLocalized,\n} from '@/types'\nimport { CONFIG } from '@/common'\n\nexport const getLabelLocalized = ({\n label,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n label: TTermLabel\n locale?: TLocale\n}): string => {\n return label[locale] || label[CONFIG.DEFAULT_LOCALE]\n}\n\nexport const getDefinitionLocalized = ({\n definition,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n definition: TTermDefinition\n locale?: TLocale\n}): string => {\n return definition[locale] || definition[CONFIG.DEFAULT_LOCALE]\n}\n\nexport const getTermTagLocalized = ({\n tag,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n tag: TTermTag\n locale?: TLocale\n}): TTermTagLocalized => {\n return {\n id: tag.id,\n name: tag.name[locale] || tag.name[CONFIG.DEFAULT_LOCALE],\n }\n}\n\nexport const getTermTypeLocalized = ({\n term,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n term: TTermType\n locale?: TLocale\n}): TTermTypeLocalized => {\n return {\n id: term.id,\n name: term.name[locale] || term.name[CONFIG.DEFAULT_LOCALE],\n }\n}\n","import type { TDevDict, TDevDictLocalized, TLocale, TTerm, TTermId, TTermLocalized, TTermType, TTermTypeLocalized, TTermTag, TTermTagLocalized } from '@/types'\nimport { CONFIG } from '@/common'\nimport { getDefinitionLocalized, getLabelLocalized, getTermTagLocalized, getTermTypeLocalized } from '@/utils'\nimport { TAG, TERM, TYPE } from '@data'\n\nexport function getTerm(params: { id: TTermId; localized: false }): TTerm\nexport function getTerm(params: { id: TTermId; localized?: true; locale?: TLocale }): TTermLocalized\nexport function getTerm({\n id,\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n id: TTermId\n localized?: boolean\n locale?: TLocale\n}): TTerm | TTermLocalized {\n // We do not need a null check here because TTermId only allows valid IDs\n const term = TERM[id]\n\n if (!localized) {\n return term\n }\n\n return {\n ...term,\n label: getLabelLocalized({ label: term.label, locale }),\n definition: getDefinitionLocalized({ definition: term.definition, locale }),\n type: term.type.map((value) => getTermTypeLocalized({ term: value, locale })),\n tags: term.tags.map((value) => getTermTagLocalized({ tag: value, locale })),\n }\n}\n\nexport function getTerms(params?: { localized: false }): TTerm[]\nexport function getTerms(params?: { localized?: true; locale?: TLocale }): TTermLocalized[]\nexport function getTerms({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n localized?: boolean\n locale?: TLocale\n} = {}): TTerm[] | TTermLocalized[] {\n const terms = Object.values(TERM)\n\n if (!localized) {\n return terms\n }\n\n return terms.map((term) => getTerm({ id: term.id, locale }))\n}\n\nexport function getDict(params?: { localized: false }): TDevDict\nexport function getDict(params?: { localized?: true; locale?: TLocale }): TDevDictLocalized\nexport function getDict({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n localized?: boolean\n locale?: TLocale\n} = {}): TDevDict | TDevDictLocalized {\n if (!localized) {\n return TERM as TDevDict\n }\n\n const dict = {} as TDevDictLocalized\n\n for (const [key, term] of Object.entries(TERM)) {\n const localizedTerm = getTerm({ id: term.id, locale })\n dict[key as TTermId] = localizedTerm\n }\n\n return dict\n}\n\nexport function getTypes(params?: { localized: false }): TTermType[]\nexport function getTypes(params?: { localized?: true; locale?: TLocale }): TTermTypeLocalized[]\nexport function getTypes({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n localized?: boolean\n locale?: TLocale\n} = {}): TTermType[] | TTermTypeLocalized[] {\n const types = Object.values(TYPE)\n\n if (!localized) {\n return types\n }\n\n return types.map((type) => getTermTypeLocalized({ term: type, locale }))\n}\n\nexport function getTags(params?: { localized: false }): TTermTag[]\nexport function getTags(params?: { localized?: true; locale?: TLocale }): TTermTagLocalized[]\nexport function getTags({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n}: {\n localized?: boolean\n locale?: TLocale\n} = {}): TTermTag[] | TTermTagLocalized[] {\n const tags = Object.values(TAG)\n\n if (!localized) {\n return tags\n }\n\n return tags.map((tag) => getTermTagLocalized({ tag, locale }))\n}\n"],"names":["LOCALE","backend","frontend","open_source","TAG","cms","framework","language","library","runtime_environment","TYPE","node_js","react","typescript","TERM","CONFIG","getLabelLocalized","label","locale","getDefinitionLocalized","definition","getTermTagLocalized","tag","getTermTypeLocalized","term","getTerm","id","localized","value","getTerms","terms","getDict","dict","key","localizedTerm","getTypes","types","type","getTags","tags"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../data/locales/index.ts","../src/utils/index.ts","../data/tags/backend.ts","../data/tags/frontend.ts","../data/tags/open_source.ts","../data/tags/index.ts","../data/types/cms.ts","../data/types/framework.ts","../data/types/language.ts","../data/types/library.ts","../data/types/runtime_environment.ts","../data/types/index.ts","../data/terms/node_js.ts","../data/terms/react.ts","../data/terms/typescript.ts","../data/terms/index.ts","../src/common/index.ts","../src/index.ts"],"sourcesContent":["export const LOCALE = {\n EN_US: 'en-US',\n EN_GB: 'en-GB',\n DE_DE: 'de-DE',\n} as const\n","import type { TLocale, TLocaleRecord, TTermTag, TTermTagLocalized, TTermType, TTermTypeLocalized } from '@/types'\nimport { CONFIG } from '@/common'\nimport { LOCALE } from '@data'\n\nexport const interpolateValue = ({\n obj,\n value,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n obj: TLocaleRecord\n value: undefined | string\n useFallback?: boolean\n}): string => {\n if (value && Object.values<string>(LOCALE).includes(value)) {\n return obj[value as TLocale] || (useFallback ? obj[LOCALE.EN_US] : '')\n }\n return value || (useFallback ? obj[LOCALE.EN_US] : '')\n}\n\nexport const interpolateLocaleRecord = ({\n obj,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n obj: TLocaleRecord\n useFallback?: boolean\n}): TLocaleRecord => {\n const locales = Object.values<string>(LOCALE) as TLocale[]\n\n return Object.fromEntries(\n locales.map((locale) => [locale, interpolateValue({ obj, value: obj[locale], useFallback })]),\n ) as TLocaleRecord\n}\n\nexport const interpolateValues = <T extends Record<string, any>>({\n obj,\n keys,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n obj: T\n keys: string[]\n useFallback?: boolean\n}): T => {\n return Object.fromEntries(\n Object.entries(obj).map(([itemKey, item]) => {\n const interpolatedFields = keys\n .filter((key) => key in item && typeof item[key] === 'object')\n .map((key) => [key, interpolateLocaleRecord({ obj: item[key], useFallback })])\n\n return [itemKey, { ...item, ...Object.fromEntries(interpolatedFields) }]\n }),\n ) as T\n}\n\nexport const getValueLocalized = ({\n obj,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n obj: TLocaleRecord\n locale?: TLocale\n useFallback?: boolean\n}): string => {\n return interpolateValue({ obj, value: obj[locale], useFallback })\n}\n\nexport const getTermTagLocalized = ({\n tag,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n tag: TTermTag\n locale?: TLocale\n useFallback?: boolean\n}): TTermTagLocalized => {\n return {\n id: tag.id,\n name: getValueLocalized({ obj: tag.name, locale, useFallback }),\n }\n}\n\nexport const getTermTypeLocalized = ({\n term,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n term: TTermType\n locale?: TLocale\n useFallback?: boolean\n}): TTermTypeLocalized => {\n return {\n id: term.id,\n name: getValueLocalized({ obj: term.name, locale, useFallback }),\n }\n}\n","import type { TTermTag } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'backend',\n\n name: {\n [LOCALE.EN_US]: `Backend`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Backend`,\n },\n} as const satisfies TTermTag\n","import type { TTermTag } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'frontend',\n\n name: {\n [LOCALE.EN_US]: `Frontend`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Frontend`,\n },\n} as const satisfies TTermTag\n","import type { TTermTag } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'open_source',\n\n name: {\n [LOCALE.EN_US]: `Open Source`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Open Source`,\n },\n} as const satisfies TTermTag\n","import { interpolateValues } from '@/utils'\n\nimport backend from './backend'\nimport frontend from './frontend'\nimport open_source from './open_source'\n\nexport const RAW_TAG = {\n [backend.id]: backend,\n [frontend.id]: frontend,\n [open_source.id]: open_source,\n} as const\n\nexport const TAG = interpolateValues({ obj: RAW_TAG, keys: ['name'], useFallback: false })\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'cms',\n\n name: {\n [LOCALE.EN_US]: `Content Management System`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Content-Management-System`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'framework',\n\n name: {\n [LOCALE.EN_US]: `Framework`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Framework`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'language',\n\n name: {\n [LOCALE.EN_US]: `Language`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Sprache`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'library',\n\n name: {\n [LOCALE.EN_US]: `Library`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Bibliothek`,\n },\n} as const satisfies TTermType\n","import type { TTermType } from '@/types'\n\nimport { LOCALE } from '../locales'\n\nexport default {\n id: 'runtime_environment',\n\n name: {\n [LOCALE.EN_US]: `Runtime Environment`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Laufzeitumgebung`,\n },\n} as const satisfies TTermType\n","import { interpolateValues } from '@/utils'\n\nimport cms from './cms'\nimport framework from './framework'\nimport language from './language'\nimport library from './library'\nimport runtime_environment from './runtime_environment'\n\nexport const RAW_TYPE = {\n [cms.id]: cms,\n [framework.id]: framework,\n [language.id]: language,\n [library.id]: library,\n [runtime_environment.id]: runtime_environment,\n} as const\n\nexport const TYPE = interpolateValues({ obj: RAW_TYPE, keys: ['name'], useFallback: false })\n","import type { TTerm } from '@/types'\n\nimport { LOCALE } from '../locales'\nimport { TAG } from '../tags'\nimport { TYPE } from '../types'\n\nexport default {\n id: `node_js`,\n\n name: {\n [LOCALE.EN_US]: `Node.js`,\n },\n\n label: {\n [LOCALE.EN_US]: `JavaScript Runtime`,\n [LOCALE.DE_DE]: `JavaScript-Laufzeit`,\n },\n\n definition: {\n [LOCALE.EN_US]: `Node.js is a free, open-source, cross-platform JavaScript runtime environment that lets developers create servers, web apps, command line tools and scripts.`,\n [LOCALE.DE_DE]: `Node.js ist eine kostenlose, Open-Source, plattformübergreifende JavaScript-Laufzeitumgebung, die es Entwicklern ermöglicht, Server, Webanwendungen, Befehlszeilentools und Skripte zu erstellen.`,\n },\n\n type: [TYPE.runtime_environment],\n\n tags: [TAG.backend],\n\n links: {\n website: `https://nodejs.org`,\n },\n} as const satisfies TTerm\n","import type { TTerm } from '@/types'\n\nimport { LOCALE } from '../locales'\nimport { TAG } from '../tags'\nimport { TYPE } from '../types'\n\nexport default {\n id: `react`,\n\n name: {\n [LOCALE.EN_US]: `React`,\n },\n\n label: {\n [LOCALE.EN_US]: `JavaScript Library`,\n [LOCALE.DE_DE]: `JavaScript-Bibliothek`,\n },\n\n definition: {\n [LOCALE.EN_US]: `A JavaScript library for building component-based user interfaces.`,\n [LOCALE.DE_DE]: `Eine JavaScript-Bibliothek zum Erstellen komponentenbasierter Benutzeroberflächen.`,\n },\n\n type: [TYPE.library],\n\n tags: [TAG.frontend, TAG.backend],\n\n links: {\n website: `https://react.dev`,\n },\n} as const satisfies TTerm\n","import type { TTerm } from '@/types'\n\nimport { LOCALE } from '../locales'\nimport { TAG } from '../tags'\nimport { TYPE } from '../types'\n\nexport default {\n id: `typescript`,\n\n name: {\n [LOCALE.EN_US]: `TypeScript`,\n },\n\n label: {\n [LOCALE.EN_US]: `High-Level Programming Language`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `Hochsprache`,\n },\n\n definition: {\n [LOCALE.EN_US]: `TypeScript is a strongly typed programming language that builds on JavaScript, giving you better tooling at any scale.`,\n [LOCALE.EN_GB]: LOCALE.EN_US,\n [LOCALE.DE_DE]: `TypeScript ist eine stark typisierte Programmiersprache, die auf JavaScript aufbaut und Ihnen bei jeder Größenordnung bessere Werkzeuge bietet.`,\n },\n\n type: [TYPE.language],\n\n tags: [TAG.frontend, TAG.backend, TAG.open_source],\n\n links: {\n website: `https://www.typescriptlang.org`,\n },\n} as const satisfies TTerm\n","import { interpolateValues } from '@/utils'\n\nimport node_js from './node_js'\nimport react from './react'\nimport typescript from './typescript'\n\nexport const RAW_TERM = {\n [node_js.id]: node_js,\n [react.id]: react,\n [typescript.id]: typescript,\n} as const\n\nexport const TERM = interpolateValues({ obj: RAW_TERM, keys: ['name', 'label', 'definition'], useFallback: false })\n","import { LOCALE } from '@data'\n\nexport const MISC = {} as const\n\nexport const CONFIG = {\n DEFAULT_LOCALE: LOCALE.EN_US,\n USE_FALLBACK: true,\n} as const\n","import type {\n TDevDict,\n TDevDictLocalized,\n TLocale,\n TTerm,\n TTermId,\n TTermLocalized,\n TTermTag,\n TTermTagLocalized,\n TTermType,\n TTermTypeLocalized,\n} from '@/types'\nimport { CONFIG } from '@/common'\nimport { getTermTagLocalized, getTermTypeLocalized, getValueLocalized, interpolateValues } from '@/utils'\nimport { RAW_TAG, RAW_TERM, RAW_TYPE } from '@data'\n\n/**\n * NB: The `useFallback` param only works when `localized` is `true`. This is by design.\n */\n\nexport function getTerm(params: { id: TTermId; localized: false }): TTerm\nexport function getTerm(params: {\n id: TTermId\n localized?: true\n locale?: TLocale\n useFallback?: boolean\n}): TTermLocalized\nexport function getTerm({\n id,\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n id: TTermId\n localized?: boolean\n locale?: TLocale\n useFallback?: boolean\n}): TTerm | TTermLocalized {\n // We do not need a null check here because TTermId only allows valid IDs\n const TERM = interpolateValues({ obj: RAW_TERM, keys: ['name', 'label', 'definition'], useFallback })\n const term = TERM[id]\n\n if (!localized) {\n return term\n }\n\n return {\n ...term,\n name: getValueLocalized({ obj: term.name, locale, useFallback }),\n label: getValueLocalized({ obj: term.label, locale, useFallback }),\n definition: getValueLocalized({ obj: term.definition, locale, useFallback }),\n type: term.type.map((value) => getTermTypeLocalized({ term: value, locale, useFallback })),\n tags: term.tags.map((value) => getTermTagLocalized({ tag: value, locale, useFallback })),\n }\n}\n\nexport function getTerms(params?: { localized: false; useFallback?: boolean }): TTerm[]\nexport function getTerms(params?: { localized?: true; locale?: TLocale; useFallback?: boolean }): TTermLocalized[]\nexport function getTerms({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n localized?: boolean\n locale?: TLocale\n useFallback?: boolean\n} = {}): TTerm[] | TTermLocalized[] {\n const TERM = interpolateValues({ obj: RAW_TERM, keys: ['name', 'label', 'definition'], useFallback })\n const terms = Object.values(TERM)\n\n if (!localized) {\n return terms\n }\n\n return terms.map((term) => getTerm({ id: term.id, locale, useFallback }))\n}\n\nexport function getDict(params?: { localized: false; useFallback?: boolean }): TDevDict\nexport function getDict(params?: { localized?: true; locale?: TLocale; useFallback?: boolean }): TDevDictLocalized\nexport function getDict({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n localized?: boolean\n locale?: TLocale\n useFallback?: boolean\n} = {}): TDevDict | TDevDictLocalized {\n const TERM = interpolateValues({ obj: RAW_TERM, keys: ['name', 'label', 'definition'], useFallback })\n\n if (!localized) {\n return TERM as TDevDict\n }\n\n const dict = {} as TDevDictLocalized\n\n for (const [key, term] of Object.entries(TERM)) {\n const localizedTerm = getTerm({ id: term.id, locale, useFallback })\n dict[key as TTermId] = localizedTerm\n }\n\n return dict\n}\n\nexport function getTypes(params?: { localized: false; useFallback?: boolean }): TTermType[]\nexport function getTypes(params?: { localized?: true; locale?: TLocale; useFallback?: boolean }): TTermTypeLocalized[]\nexport function getTypes({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n localized?: boolean\n locale?: TLocale\n useFallback?: boolean\n} = {}): TTermType[] | TTermTypeLocalized[] {\n const TYPE = interpolateValues({ obj: RAW_TYPE, keys: ['name'], useFallback: false })\n const types = Object.values(TYPE)\n\n if (!localized) {\n return types\n }\n\n return types.map((type) => getTermTypeLocalized({ term: type, locale, useFallback }))\n}\n\nexport function getTags(params?: { localized: false; useFallback?: boolean }): TTermTag[]\nexport function getTags(params?: { localized?: true; locale?: TLocale; useFallback?: boolean }): TTermTagLocalized[]\nexport function getTags({\n localized = true,\n locale = CONFIG.DEFAULT_LOCALE,\n useFallback = CONFIG.USE_FALLBACK,\n}: {\n localized?: boolean\n locale?: TLocale\n useFallback?: boolean\n} = {}): TTermTag[] | TTermTagLocalized[] {\n const TAG = interpolateValues({ obj: RAW_TAG, keys: ['name'], useFallback: false })\n const tags = Object.values(TAG)\n\n if (!localized) {\n return tags\n }\n\n return tags.map((tag) => getTermTagLocalized({ tag, locale, useFallback }))\n}\n"],"names":["LOCALE","interpolateValue","obj","value","useFallback","CONFIG","interpolateLocaleRecord","locales","locale","interpolateValues","keys","itemKey","item","interpolatedFields","key","getValueLocalized","getTermTagLocalized","tag","getTermTypeLocalized","term","backend","frontend","open_source","RAW_TAG","TAG","cms","framework","language","library","runtime_environment","RAW_TYPE","TYPE","node_js","react","typescript","RAW_TERM","getTerm","id","localized","getTerms","TERM","terms","getDict","dict","localizedTerm","getTypes","types","type","getTags","tags"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dev-dict",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "A dictionary of software related terms. Supports multiple languages.",
5
5
  "author": "Cornelius Weidmann <cornelius@kyco.io> (https://kyco.io)",
6
6
  "license": "MIT",
@@ -45,10 +45,10 @@
45
45
  "scripts": {
46
46
  "dev": "vite",
47
47
  "build": "vite build",
48
- "docs:generate": "node scripts/generate-docs.js",
49
- "prepublishOnly": "npm run build && npm run docs:generate",
48
+ "docs:generate": "pnpm build && tsx scripts/generate-docs.ts",
49
+ "prepublishOnly": "pnpm docs:generate",
50
50
  "test": "echo \"This project does not have any tests which can be run yet...\"",
51
- "update-packages": "npx npm-check-updates -u"
51
+ "update-packages": "pnpm dlx npm-check-updates -u"
52
52
  },
53
53
  "packageManager": "pnpm@10.24.0",
54
54
  "devDependencies": {
@@ -65,6 +65,7 @@
65
65
  "globals": "^16.5.0",
66
66
  "prettier": "^3.7.4",
67
67
  "semantic-release": "^25.0.2",
68
+ "tsx": "^4.21.0",
68
69
  "typescript": "^5.9.3",
69
70
  "typescript-eslint": "^8.48.1",
70
71
  "vite": "^7.2.6",