MCPcopy
hub / github.com/codeceptjs/CodeceptJS / parseMappings

Function parseMappings

lib/plugin/expose.js:84–121  ·  view source on GitHub ↗
(inject)

Source from the content-addressed store, hash-verified

82}
83
84function parseMappings(inject) {
85 const out = {}
86 for (const [name, value] of Object.entries(inject || {})) {
87 if (RESERVED_NAMES.has(name)) {
88 throw new Error(`expose plugin: inject name '${name}' is reserved`)
89 }
90 if (typeof value !== 'string' || !value) {
91 throw new Error(`expose plugin: inject value for '${name}' must be a non-empty string`)
92 }
93
94 let helperName
95 let property
96
97 if (value.includes('.')) {
98 const dot = value.indexOf('.')
99 helperName = value.slice(0, dot)
100 property = value.slice(dot + 1)
101 if (!helperName || !property) {
102 throw new Error(`expose plugin: invalid inject value '${value}' for '${name}' (expected 'HelperName.propertyName')`)
103 }
104 if (!Container.helpers(helperName)) {
105 throw new Error(`expose plugin: helper '${helperName}' is not configured (needed for inject '${name}')`)
106 }
107 } else {
108 property = value
109 if (!SHORTHAND_PROPERTIES.has(property)) {
110 throw new Error(`expose plugin: shorthand '${property}' is not a known helper property for '${name}' (use 'HelperName.${property}' instead)`)
111 }
112 helperName = Container.STANDARD_ACTING_HELPERS.find(h => Container.helpers(h))
113 if (!helperName) {
114 throw new Error(`expose plugin: no standard browser helper configured (needed for inject '${name}')`)
115 }
116 }
117
118 out[name] = { helperName, property }
119 }
120 return out
121}
122
123function makeLiveProxy(helperName, property) {
124 const resolve = () => Container.helpers(helperName)?.[property]

Callers 1

expose.jsFile · 0.85

Calls 4

entriesMethod · 0.80
includesMethod · 0.80
helpersMethod · 0.80
findMethod · 0.45

Tested by

no test coverage detected