dev-dict 0.12.0 → 0.12.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/README.md +20 -0
- package/dist/{utils-CxyRIyjZ.js → helpers-BflLlJFu.js} +3 -87
- package/dist/helpers-BflLlJFu.js.map +1 -0
- package/dist/index.js +4 -4
- package/dist/terms-entry.js +1 -1
- package/dist/utils-entry.js +91 -2
- package/dist/utils-entry.js.map +1 -0
- package/dist/{zod-Cv0BGuWS.js → zod-CMqTmxZc.js} +2 -2
- package/dist/{zod-Cv0BGuWS.js.map → zod-CMqTmxZc.js.map} +1 -1
- package/package.json +2 -1
- package/dist/utils-CxyRIyjZ.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dev-dict",
|
|
3
|
-
"version": "0.12.
|
|
3
|
+
"version": "0.12.1",
|
|
4
4
|
"description": "A community-driven collection of software development terms with explanations in multiple languages. Perfect for building multilingual developer tools, documentation sites, and educational platforms.",
|
|
5
5
|
"author": "Cornelius Weidmann <cornelius@kyco.io> (https://kyco.io)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -65,6 +65,7 @@
|
|
|
65
65
|
"import": "./dist/utils-entry.js"
|
|
66
66
|
}
|
|
67
67
|
},
|
|
68
|
+
"sideEffects": false,
|
|
68
69
|
"files": [
|
|
69
70
|
"dist"
|
|
70
71
|
],
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils-CxyRIyjZ.js","names":[],"sources":["../src/common/index.ts","../src/utils/helpers.ts","../src/utils/utils.ts"],"sourcesContent":["import { LOCALES } from '@/data/locales'\n\nexport const MISC = {\n TERM_INTERPOLATION_KEYS: ['name', 'altName', 'label', 'definition'],\n}\n\nexport const CONFIG = {\n DEFAULT_LOCALE: LOCALES.EN_US,\n POPULATE_EMPTY: true,\n}\n","import type {\n TLocale,\n TLocaleRecord,\n TTerm,\n TTermLocalized,\n TTermSource,\n TTermSourceLocalized,\n TTermTag,\n TTermTagLocalized,\n TTermType,\n TTermTypeLocalized,\n} from '@/types'\nimport { CONFIG } from '@/common'\nimport { LOCALES } from '@/data/locales'\n\n/**\n * This method will convert e.g. `[LOCALES.EN_GB]: LOCALES.EN_US` to the actual value\n * of the specified locale, in this case the value of `LOCALES.EN_US`.\n */\nexport const interpolateValue = ({\n obj,\n value,\n populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n obj: TLocaleRecord\n value: undefined | string\n populateEmpty?: boolean\n}): string => {\n if (value && Object.values<string>(LOCALES).includes(value)) {\n return obj[value as TLocale] || (populateEmpty ? obj[LOCALES.EN_US] : '')\n }\n return value || (populateEmpty ? obj[LOCALES.EN_US] : '')\n}\n\nexport const interpolateLocaleRecord = ({\n obj,\n populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n obj: TLocaleRecord\n populateEmpty?: boolean\n}): TLocaleRecord => {\n const locales = Object.values<string>(LOCALES) as TLocale[]\n\n return Object.fromEntries(\n locales.map((locale) => [locale, interpolateValue({ obj, value: obj[locale], populateEmpty })]),\n ) as TLocaleRecord\n}\n\nexport const interpolateValues = <T extends Record<string, any>>({\n obj,\n keys,\n populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n obj: T\n keys: string[]\n populateEmpty?: 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], populateEmpty })])\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 populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n obj: TLocaleRecord\n locale?: TLocale\n populateEmpty?: boolean\n}): string => {\n return interpolateValue({ obj, value: obj[locale], populateEmpty })\n}\n\nexport const getTerm = ({\n term,\n locale = CONFIG.DEFAULT_LOCALE,\n populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n term: TTerm\n locale?: TLocale\n populateEmpty?: boolean\n}): TTermLocalized => {\n const sourcesLocalized = term.sources\n ? {\n ...(term.sources.label && {\n label: term.sources.label.map((value) => getSource({ source: value, locale, populateEmpty })),\n }),\n ...(term.sources.definition && {\n definition: term.sources.definition.map((value) => getSource({ source: value, locale, populateEmpty })),\n }),\n }\n : undefined\n\n return {\n id: term.id,\n name: getValueLocalized({ obj: term.name, locale, populateEmpty }),\n ...('altName' in term && term.altName\n ? { altName: getValueLocalized({ obj: term.altName, locale, populateEmpty }) }\n : {}),\n type: term.type.map((value) => getType({ type: value, locale, populateEmpty })),\n label: getValueLocalized({ obj: term.label, locale, populateEmpty }),\n definition: getValueLocalized({ obj: term.definition, locale, populateEmpty }),\n tags: term.tags.map((value) => getTag({ tag: value, locale, populateEmpty })),\n links: term.links,\n ...(sourcesLocalized && Object.keys(sourcesLocalized).length > 0 ? { sources: sourcesLocalized } : {}),\n } as TTermLocalized\n}\n\nexport const getTag = ({\n tag,\n locale = CONFIG.DEFAULT_LOCALE,\n populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n tag: TTermTag\n locale?: TLocale\n populateEmpty?: boolean\n}): TTermTagLocalized => {\n return {\n id: tag.id,\n name: getValueLocalized({ obj: tag.name, locale, populateEmpty }),\n }\n}\n\nexport const getType = ({\n type,\n locale = CONFIG.DEFAULT_LOCALE,\n populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n type: TTermType\n locale?: TLocale\n populateEmpty?: boolean\n}): TTermTypeLocalized => {\n return {\n id: type.id,\n name: getValueLocalized({ obj: type.name, locale, populateEmpty }),\n }\n}\n\nexport const getSource = ({\n source,\n locale = CONFIG.DEFAULT_LOCALE,\n populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n source: TTermSource\n locale?: TLocale\n populateEmpty?: boolean\n}): TTermSourceLocalized => {\n return {\n id: source.id,\n name: getValueLocalized({ obj: source.name, locale, populateEmpty }),\n }\n}\n","import type {\n TLocale,\n TTermLocalized,\n TTermsDict,\n TTermsDictPartial,\n TTermSourceId,\n TTermSourceLocalized,\n TTermSourcesDict,\n TTermSourcesDictLocalized,\n TTermTagId,\n TTermTagLocalized,\n TTermTagsDict,\n TTermTagsDictLocalized,\n TTermTypeId,\n TTermTypeLocalized,\n TTermTypesDict,\n TTermTypesDictLocalized,\n} from '@/types'\nimport { CONFIG, MISC } from '@/common'\n\nimport { getSource, getTag, getTerm, getType, interpolateValues } from './helpers'\n\nexport const getTermsDict = <T extends TTermsDict | TTermsDictPartial>({\n terms,\n locale = CONFIG.DEFAULT_LOCALE,\n populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n terms: T\n locale?: TLocale\n populateEmpty?: boolean\n}): { [K in keyof T]: TTermLocalized } => {\n const interpolatedTerms = interpolateValues({ obj: terms, keys: MISC.TERM_INTERPOLATION_KEYS, populateEmpty })\n const localizedTerms = {} as { [K in keyof T]: TTermLocalized }\n\n for (const [key, term] of Object.entries(interpolatedTerms)) {\n localizedTerms[key as keyof T] = getTerm({ term, locale, populateEmpty })\n }\n\n return localizedTerms\n}\n\nexport const getTerms = ({\n terms,\n locale = CONFIG.DEFAULT_LOCALE,\n populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n terms: TTermsDict | TTermsDictPartial\n locale?: TLocale\n populateEmpty?: boolean\n}): TTermLocalized[] => {\n return Object.values(getTermsDict({ terms, locale, populateEmpty }))\n}\n\nexport const getTypesDict = ({\n terms,\n locale = CONFIG.DEFAULT_LOCALE,\n populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n terms: TTermsDict | TTermsDictPartial\n locale?: TLocale\n populateEmpty?: boolean\n}): TTermTypesDictLocalized => {\n const interpolatedTerms = interpolateValues({ obj: terms, keys: MISC.TERM_INTERPOLATION_KEYS, populateEmpty })\n const typesDict: TTermTypesDict = {}\n\n Object.values(interpolatedTerms).forEach((term) => {\n term.type.forEach((type) => {\n if (!typesDict[type.id]) {\n typesDict[type.id] = type\n }\n })\n })\n\n const localizedTypes: TTermTypesDictLocalized = {}\n\n for (const [key, type] of Object.entries(typesDict)) {\n localizedTypes[key as TTermTypeId] = getType({ type, locale, populateEmpty })\n }\n\n return localizedTypes\n}\n\nexport const getTypes = ({\n terms,\n locale = CONFIG.DEFAULT_LOCALE,\n populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n terms: TTermsDict | TTermsDictPartial\n locale?: TLocale\n populateEmpty?: boolean\n}): TTermTypeLocalized[] => {\n return Object.values(getTypesDict({ terms, locale, populateEmpty }))\n}\n\nexport const getTagsDict = ({\n terms,\n locale = CONFIG.DEFAULT_LOCALE,\n populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n terms: TTermsDict | TTermsDictPartial\n locale?: TLocale\n populateEmpty?: boolean\n}): TTermTagsDictLocalized => {\n const interpolatedTerms = interpolateValues({ obj: terms, keys: MISC.TERM_INTERPOLATION_KEYS, populateEmpty })\n const tagsDict: TTermTagsDict = {}\n\n Object.values(interpolatedTerms).forEach((term) => {\n term.tags.forEach((tag) => {\n if (!tagsDict[tag.id]) {\n tagsDict[tag.id] = tag\n }\n })\n })\n\n const localizedTags: TTermTagsDictLocalized = {}\n\n for (const [key, tag] of Object.entries(tagsDict)) {\n localizedTags[key as TTermTagId] = getTag({ tag, locale, populateEmpty })\n }\n\n return localizedTags\n}\n\nexport const getTags = ({\n terms,\n locale = CONFIG.DEFAULT_LOCALE,\n populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n terms: TTermsDict | TTermsDictPartial\n locale?: TLocale\n populateEmpty?: boolean\n}): TTermTagLocalized[] => {\n return Object.values(getTagsDict({ terms, locale, populateEmpty }))\n}\n\nexport const getSourcesDict = ({\n terms,\n locale = CONFIG.DEFAULT_LOCALE,\n populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n terms: TTermsDict | TTermsDictPartial\n locale?: TLocale\n populateEmpty?: boolean\n}): TTermSourcesDictLocalized => {\n const interpolatedTerms = interpolateValues({ obj: terms, keys: MISC.TERM_INTERPOLATION_KEYS, populateEmpty })\n const sourcesDict: TTermSourcesDict = {}\n\n Object.values(interpolatedTerms).forEach((term) => {\n if (term.sources?.label) {\n term.sources.label.forEach((source) => {\n if (!sourcesDict[source.id]) {\n sourcesDict[source.id] = source\n }\n })\n }\n if (term.sources?.definition) {\n term.sources.definition.forEach((source) => {\n if (!sourcesDict[source.id]) {\n sourcesDict[source.id] = source\n }\n })\n }\n })\n\n const localizedSources: TTermSourcesDictLocalized = {}\n\n for (const [key, source] of Object.entries(sourcesDict)) {\n localizedSources[key as TTermSourceId] = getSource({ source, locale, populateEmpty })\n }\n\n return localizedSources\n}\n\nexport const getSources = ({\n terms,\n locale = CONFIG.DEFAULT_LOCALE,\n populateEmpty = CONFIG.POPULATE_EMPTY,\n}: {\n terms: TTermsDict | TTermsDictPartial\n locale?: TLocale\n populateEmpty?: boolean\n}): TTermSourceLocalized[] => {\n return Object.values(getSourcesDict({ terms, locale, populateEmpty }))\n}\n"],"mappings":"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"}
|