pte-interpolation-core 1.3.0 → 1.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.
package/dist/index.cjs
CHANGED
|
@@ -61,7 +61,10 @@ function interpolateToString(blocks, values, fallback = defaultFallback) {
|
|
|
61
61
|
return children.map((child) => {
|
|
62
62
|
if (child._type === VARIABLE_TYPE_PREFIX) {
|
|
63
63
|
const variableKey = child.variableKey;
|
|
64
|
-
|
|
64
|
+
if (typeof variableKey === "string") {
|
|
65
|
+
return values[variableKey] !== void 0 ? values[variableKey] : fallback(variableKey);
|
|
66
|
+
}
|
|
67
|
+
return "";
|
|
65
68
|
}
|
|
66
69
|
return typeof child.text === "string" ? child.text : "";
|
|
67
70
|
}).join("");
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/constants.ts","../src/extractVariableKeys.ts","../src/getMissingVariableKeys.ts","../src/interpolateToString.ts"],"sourcesContent":["export {VARIABLE_TYPE_PREFIX} from './constants'\nexport {extractVariableKeys} from './extractVariableKeys'\nexport {getMissingVariableKeys} from './getMissingVariableKeys'\nexport {interpolateToString} from './interpolateToString'\nexport type {\n InterpolationFallback,\n InterpolationValues,\n PortableTextBlockLike,\n PortableTextChild,\n PteInterpolationVariableBlock,\n} from './types'\n","/** @public */\nexport const VARIABLE_TYPE_PREFIX = 'pteInterpolationVariable'\n","import {VARIABLE_TYPE_PREFIX} from './constants'\nimport type {PortableTextBlockLike} from './types'\n\n/** @public */\nexport function extractVariableKeys(blocks: PortableTextBlockLike[]): string[] {\n const seen = new Set<string>()\n\n return blocks.reduce<string[]>((keys, block) => {\n const children = block.children ?? []\n\n return children.reduce((accumulated, child) => {\n if (child._type !== VARIABLE_TYPE_PREFIX) return accumulated\n\n const variableKey = child.variableKey\n if (typeof variableKey !== 'string') return accumulated\n if (seen.has(variableKey)) return accumulated\n\n seen.add(variableKey)\n return [...accumulated, variableKey]\n }, keys)\n }, [])\n}\n","import {extractVariableKeys} from './extractVariableKeys'\nimport type {InterpolationValues, PortableTextBlockLike} from './types'\n\n/** @public */\nexport function getMissingVariableKeys(\n blocks: PortableTextBlockLike[],\n values: InterpolationValues,\n): string[] {\n return extractVariableKeys(blocks).filter((key) => values[key] === undefined)\n}\n","import {VARIABLE_TYPE_PREFIX} from './constants'\nimport type {InterpolationFallback, InterpolationValues, PortableTextBlockLike} from './types'\n\nfunction defaultFallback(variableKey: string): string {\n return `{${variableKey}}`\n}\n\n/** @public */\nexport function interpolateToString(\n blocks: PortableTextBlockLike[],\n values: InterpolationValues,\n fallback: InterpolationFallback = defaultFallback,\n): string {\n return blocks\n .map((block) => {\n const children = block.children ?? []\n\n return children\n .map((child) => {\n if (child._type === VARIABLE_TYPE_PREFIX) {\n const variableKey = child.variableKey
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/constants.ts","../src/extractVariableKeys.ts","../src/getMissingVariableKeys.ts","../src/interpolateToString.ts"],"sourcesContent":["export {VARIABLE_TYPE_PREFIX} from './constants'\nexport {extractVariableKeys} from './extractVariableKeys'\nexport {getMissingVariableKeys} from './getMissingVariableKeys'\nexport {interpolateToString} from './interpolateToString'\nexport type {\n InterpolationFallback,\n InterpolationValues,\n PortableTextBlockLike,\n PortableTextChild,\n PteInterpolationVariableBlock,\n} from './types'\n","/** @public */\nexport const VARIABLE_TYPE_PREFIX = 'pteInterpolationVariable'\n","import {VARIABLE_TYPE_PREFIX} from './constants'\nimport type {PortableTextBlockLike} from './types'\n\n/** @public */\nexport function extractVariableKeys(blocks: PortableTextBlockLike[]): string[] {\n const seen = new Set<string>()\n\n return blocks.reduce<string[]>((keys, block) => {\n const children = block.children ?? []\n\n return children.reduce((accumulated, child) => {\n if (child._type !== VARIABLE_TYPE_PREFIX) return accumulated\n\n const variableKey = child.variableKey\n if (typeof variableKey !== 'string') return accumulated\n if (seen.has(variableKey)) return accumulated\n\n seen.add(variableKey)\n return [...accumulated, variableKey]\n }, keys)\n }, [])\n}\n","import {extractVariableKeys} from './extractVariableKeys'\nimport type {InterpolationValues, PortableTextBlockLike} from './types'\n\n/** @public */\nexport function getMissingVariableKeys(\n blocks: PortableTextBlockLike[],\n values: InterpolationValues,\n): string[] {\n return extractVariableKeys(blocks).filter((key) => values[key] === undefined)\n}\n","import {VARIABLE_TYPE_PREFIX} from './constants'\nimport type {InterpolationFallback, InterpolationValues, PortableTextBlockLike} from './types'\n\nfunction defaultFallback(variableKey: string): string {\n return `{${variableKey}}`\n}\n\n/** @public */\nexport function interpolateToString(\n blocks: PortableTextBlockLike[],\n values: InterpolationValues,\n fallback: InterpolationFallback = defaultFallback,\n): string {\n return blocks\n .map((block) => {\n const children = block.children ?? []\n\n return children\n .map((child) => {\n if (child._type === VARIABLE_TYPE_PREFIX) {\n const variableKey = child.variableKey\n if (typeof variableKey === 'string') {\n return values[variableKey] !== undefined ? values[variableKey] : fallback(variableKey)\n }\n return ''\n }\n\n return typeof child.text === 'string' ? child.text : ''\n })\n .join('')\n })\n .join('\\n')\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCO,IAAM,uBAAuB;;;ACG7B,SAAS,oBAAoB,QAA2C;AAC7E,QAAM,OAAO,oBAAI,IAAY;AAE7B,SAAO,OAAO,OAAiB,CAAC,MAAM,UAAU;AAC9C,UAAM,WAAW,MAAM,YAAY,CAAC;AAEpC,WAAO,SAAS,OAAO,CAAC,aAAa,UAAU;AAC7C,UAAI,MAAM,UAAU,qBAAsB,QAAO;AAEjD,YAAM,cAAc,MAAM;AAC1B,UAAI,OAAO,gBAAgB,SAAU,QAAO;AAC5C,UAAI,KAAK,IAAI,WAAW,EAAG,QAAO;AAElC,WAAK,IAAI,WAAW;AACpB,aAAO,CAAC,GAAG,aAAa,WAAW;AAAA,IACrC,GAAG,IAAI;AAAA,EACT,GAAG,CAAC,CAAC;AACP;;;ACjBO,SAAS,uBACd,QACA,QACU;AACV,SAAO,oBAAoB,MAAM,EAAE,OAAO,CAAC,QAAQ,OAAO,GAAG,MAAM,MAAS;AAC9E;;;ACNA,SAAS,gBAAgB,aAA6B;AACpD,SAAO,IAAI,WAAW;AACxB;AAGO,SAAS,oBACd,QACA,QACA,WAAkC,iBAC1B;AACR,SAAO,OACJ,IAAI,CAAC,UAAU;AACd,UAAM,WAAW,MAAM,YAAY,CAAC;AAEpC,WAAO,SACJ,IAAI,CAAC,UAAU;AACd,UAAI,MAAM,UAAU,sBAAsB;AACxC,cAAM,cAAc,MAAM;AAC1B,YAAI,OAAO,gBAAgB,UAAU;AACnC,iBAAO,OAAO,WAAW,MAAM,SAAY,OAAO,WAAW,IAAI,SAAS,WAAW;AAAA,QACvF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,OAAO,MAAM,SAAS,WAAW,MAAM,OAAO;AAAA,IACvD,CAAC,EACA,KAAK,EAAE;AAAA,EACZ,CAAC,EACA,KAAK,IAAI;AACd;","names":[]}
|
package/dist/index.js
CHANGED
|
@@ -32,7 +32,10 @@ function interpolateToString(blocks, values, fallback = defaultFallback) {
|
|
|
32
32
|
return children.map((child) => {
|
|
33
33
|
if (child._type === VARIABLE_TYPE_PREFIX) {
|
|
34
34
|
const variableKey = child.variableKey;
|
|
35
|
-
|
|
35
|
+
if (typeof variableKey === "string") {
|
|
36
|
+
return values[variableKey] !== void 0 ? values[variableKey] : fallback(variableKey);
|
|
37
|
+
}
|
|
38
|
+
return "";
|
|
36
39
|
}
|
|
37
40
|
return typeof child.text === "string" ? child.text : "";
|
|
38
41
|
}).join("");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/extractVariableKeys.ts","../src/getMissingVariableKeys.ts","../src/interpolateToString.ts"],"sourcesContent":["/** @public */\nexport const VARIABLE_TYPE_PREFIX = 'pteInterpolationVariable'\n","import {VARIABLE_TYPE_PREFIX} from './constants'\nimport type {PortableTextBlockLike} from './types'\n\n/** @public */\nexport function extractVariableKeys(blocks: PortableTextBlockLike[]): string[] {\n const seen = new Set<string>()\n\n return blocks.reduce<string[]>((keys, block) => {\n const children = block.children ?? []\n\n return children.reduce((accumulated, child) => {\n if (child._type !== VARIABLE_TYPE_PREFIX) return accumulated\n\n const variableKey = child.variableKey\n if (typeof variableKey !== 'string') return accumulated\n if (seen.has(variableKey)) return accumulated\n\n seen.add(variableKey)\n return [...accumulated, variableKey]\n }, keys)\n }, [])\n}\n","import {extractVariableKeys} from './extractVariableKeys'\nimport type {InterpolationValues, PortableTextBlockLike} from './types'\n\n/** @public */\nexport function getMissingVariableKeys(\n blocks: PortableTextBlockLike[],\n values: InterpolationValues,\n): string[] {\n return extractVariableKeys(blocks).filter((key) => values[key] === undefined)\n}\n","import {VARIABLE_TYPE_PREFIX} from './constants'\nimport type {InterpolationFallback, InterpolationValues, PortableTextBlockLike} from './types'\n\nfunction defaultFallback(variableKey: string): string {\n return `{${variableKey}}`\n}\n\n/** @public */\nexport function interpolateToString(\n blocks: PortableTextBlockLike[],\n values: InterpolationValues,\n fallback: InterpolationFallback = defaultFallback,\n): string {\n return blocks\n .map((block) => {\n const children = block.children ?? []\n\n return children\n .map((child) => {\n if (child._type === VARIABLE_TYPE_PREFIX) {\n const variableKey = child.variableKey
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/extractVariableKeys.ts","../src/getMissingVariableKeys.ts","../src/interpolateToString.ts"],"sourcesContent":["/** @public */\nexport const VARIABLE_TYPE_PREFIX = 'pteInterpolationVariable'\n","import {VARIABLE_TYPE_PREFIX} from './constants'\nimport type {PortableTextBlockLike} from './types'\n\n/** @public */\nexport function extractVariableKeys(blocks: PortableTextBlockLike[]): string[] {\n const seen = new Set<string>()\n\n return blocks.reduce<string[]>((keys, block) => {\n const children = block.children ?? []\n\n return children.reduce((accumulated, child) => {\n if (child._type !== VARIABLE_TYPE_PREFIX) return accumulated\n\n const variableKey = child.variableKey\n if (typeof variableKey !== 'string') return accumulated\n if (seen.has(variableKey)) return accumulated\n\n seen.add(variableKey)\n return [...accumulated, variableKey]\n }, keys)\n }, [])\n}\n","import {extractVariableKeys} from './extractVariableKeys'\nimport type {InterpolationValues, PortableTextBlockLike} from './types'\n\n/** @public */\nexport function getMissingVariableKeys(\n blocks: PortableTextBlockLike[],\n values: InterpolationValues,\n): string[] {\n return extractVariableKeys(blocks).filter((key) => values[key] === undefined)\n}\n","import {VARIABLE_TYPE_PREFIX} from './constants'\nimport type {InterpolationFallback, InterpolationValues, PortableTextBlockLike} from './types'\n\nfunction defaultFallback(variableKey: string): string {\n return `{${variableKey}}`\n}\n\n/** @public */\nexport function interpolateToString(\n blocks: PortableTextBlockLike[],\n values: InterpolationValues,\n fallback: InterpolationFallback = defaultFallback,\n): string {\n return blocks\n .map((block) => {\n const children = block.children ?? []\n\n return children\n .map((child) => {\n if (child._type === VARIABLE_TYPE_PREFIX) {\n const variableKey = child.variableKey\n if (typeof variableKey === 'string') {\n return values[variableKey] !== undefined ? values[variableKey] : fallback(variableKey)\n }\n return ''\n }\n\n return typeof child.text === 'string' ? child.text : ''\n })\n .join('')\n })\n .join('\\n')\n}\n"],"mappings":";AACO,IAAM,uBAAuB;;;ACG7B,SAAS,oBAAoB,QAA2C;AAC7E,QAAM,OAAO,oBAAI,IAAY;AAE7B,SAAO,OAAO,OAAiB,CAAC,MAAM,UAAU;AAC9C,UAAM,WAAW,MAAM,YAAY,CAAC;AAEpC,WAAO,SAAS,OAAO,CAAC,aAAa,UAAU;AAC7C,UAAI,MAAM,UAAU,qBAAsB,QAAO;AAEjD,YAAM,cAAc,MAAM;AAC1B,UAAI,OAAO,gBAAgB,SAAU,QAAO;AAC5C,UAAI,KAAK,IAAI,WAAW,EAAG,QAAO;AAElC,WAAK,IAAI,WAAW;AACpB,aAAO,CAAC,GAAG,aAAa,WAAW;AAAA,IACrC,GAAG,IAAI;AAAA,EACT,GAAG,CAAC,CAAC;AACP;;;ACjBO,SAAS,uBACd,QACA,QACU;AACV,SAAO,oBAAoB,MAAM,EAAE,OAAO,CAAC,QAAQ,OAAO,GAAG,MAAM,MAAS;AAC9E;;;ACNA,SAAS,gBAAgB,aAA6B;AACpD,SAAO,IAAI,WAAW;AACxB;AAGO,SAAS,oBACd,QACA,QACA,WAAkC,iBAC1B;AACR,SAAO,OACJ,IAAI,CAAC,UAAU;AACd,UAAM,WAAW,MAAM,YAAY,CAAC;AAEpC,WAAO,SACJ,IAAI,CAAC,UAAU;AACd,UAAI,MAAM,UAAU,sBAAsB;AACxC,cAAM,cAAc,MAAM;AAC1B,YAAI,OAAO,gBAAgB,UAAU;AACnC,iBAAO,OAAO,WAAW,MAAM,SAAY,OAAO,WAAW,IAAI,SAAS,WAAW;AAAA,QACvF;AACA,eAAO;AAAA,MACT;AAEA,aAAO,OAAO,MAAM,SAAS,WAAW,MAAM,OAAO;AAAA,IACvD,CAAC,EACA,KAAK,EAAE;AAAA,EACZ,CAAC,EACA,KAAK,IAAI;AACd;","names":[]}
|
package/package.json
CHANGED
|
@@ -81,6 +81,14 @@ export const duplicateVariableBlock: PortableTextBlockLike[] = [
|
|
|
81
81
|
|
|
82
82
|
export const blockWithNoChildren: PortableTextBlockLike[] = [{_type: 'block', _key: 'block-1'}]
|
|
83
83
|
|
|
84
|
+
export const blockWithMissingVariableKey: PortableTextBlockLike[] = [
|
|
85
|
+
{
|
|
86
|
+
_type: 'block',
|
|
87
|
+
_key: 'block-1',
|
|
88
|
+
children: [{_type: 'pteInterpolationVariable', _key: 'var-1'}],
|
|
89
|
+
},
|
|
90
|
+
]
|
|
91
|
+
|
|
84
92
|
export const blockWithNonStringVariableKey: PortableTextBlockLike[] = [
|
|
85
93
|
{
|
|
86
94
|
_type: 'block',
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import {describe, expect, it} from 'vitest'
|
|
2
2
|
import {interpolateToString} from '../interpolateToString'
|
|
3
3
|
import {
|
|
4
|
+
blockWithMissingVariableKey,
|
|
5
|
+
blockWithNonStringVariableKey,
|
|
4
6
|
consecutiveVariablesBlock,
|
|
5
7
|
emptyBlocksContent,
|
|
6
8
|
multiBlockContent,
|
|
@@ -56,4 +58,12 @@ describe('interpolateToString', () => {
|
|
|
56
58
|
}),
|
|
57
59
|
).toBe('Name: Patrick Pickles, Email: patrick@example.com')
|
|
58
60
|
})
|
|
61
|
+
|
|
62
|
+
it('returns empty string for a variable block with a missing variableKey', () => {
|
|
63
|
+
expect(interpolateToString(blockWithMissingVariableKey, {})).toBe('')
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
it('returns empty string for a variable block with a non-string variableKey', () => {
|
|
67
|
+
expect(interpolateToString(blockWithNonStringVariableKey, {})).toBe('')
|
|
68
|
+
})
|
|
59
69
|
})
|
|
@@ -18,8 +18,11 @@ export function interpolateToString(
|
|
|
18
18
|
return children
|
|
19
19
|
.map((child) => {
|
|
20
20
|
if (child._type === VARIABLE_TYPE_PREFIX) {
|
|
21
|
-
const variableKey = child.variableKey
|
|
22
|
-
|
|
21
|
+
const variableKey = child.variableKey
|
|
22
|
+
if (typeof variableKey === 'string') {
|
|
23
|
+
return values[variableKey] !== undefined ? values[variableKey] : fallback(variableKey)
|
|
24
|
+
}
|
|
25
|
+
return ''
|
|
23
26
|
}
|
|
24
27
|
|
|
25
28
|
return typeof child.text === 'string' ? child.text : ''
|