@next-core/supply 2.2.1 → 2.3.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/cjs/index.js +4 -4
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/index.js +5 -5
- package/dist/esm/index.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/package.json +3 -3
package/dist/cjs/index.js
CHANGED
|
@@ -9,13 +9,13 @@ var _lodash = _interopRequireDefault(require("lodash"));
|
|
|
9
9
|
var _moment = _interopRequireDefault(require("moment"));
|
|
10
10
|
var _pipes = require("@next-core/pipes");
|
|
11
11
|
function supply(attemptToVisitGlobals, providedGlobalVariables, mock) {
|
|
12
|
-
const globalVariables = {
|
|
13
|
-
undefined
|
|
14
|
-
};
|
|
12
|
+
const globalVariables = {};
|
|
15
13
|
// Allow limited browser builtin values.
|
|
16
14
|
for (const variableName of attemptToVisitGlobals) {
|
|
17
15
|
if (!Object.prototype.hasOwnProperty.call(globalVariables, variableName)) {
|
|
18
|
-
if (
|
|
16
|
+
if (variableName === "undefined") {
|
|
17
|
+
globalVariables[variableName] = undefined;
|
|
18
|
+
} else if (providedGlobalVariables && Object.prototype.hasOwnProperty.call(providedGlobalVariables, variableName)) {
|
|
19
19
|
globalVariables[variableName] = providedGlobalVariables[variableName];
|
|
20
20
|
} else {
|
|
21
21
|
const variable = supplyIndividual(variableName, mock);
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_lodash","_interopRequireDefault","require","_moment","_pipes","supply","attemptToVisitGlobals","providedGlobalVariables","mock","globalVariables","undefined","variableName","Object","prototype","hasOwnProperty","call","variable","supplyIndividual","shouldOmitInLodash","Set","shouldOmitInMoment","allowedGlobalObjects","delegateMethods","fromEntries","entries","lodash","filter","entry","has","concat","prefix","assign","args","moment","pipes","tagUrlFactory","window","target","methods","map","method","apply","ignoreSlashes","strings","partials","result","forEach","str","index","push","length","String","replace","p","encodeURIComponent","join"],"sources":["../../src/index.ts"],"sourcesContent":["import lodash from \"lodash\";\nimport moment from \"moment\";\nimport { pipes } from \"@next-core/pipes\";\n\nexport function supply(\n attemptToVisitGlobals: Set<string>,\n providedGlobalVariables?: Record<string, unknown>,\n mock?: boolean\n): Record<string, unknown> {\n const globalVariables: Record<string, unknown> = {\n undefined,\n };\n // Allow limited browser builtin values.\n for (const variableName of attemptToVisitGlobals) {\n if (!Object.prototype.hasOwnProperty.call(globalVariables, variableName)) {\n if (\n providedGlobalVariables &&\n Object.prototype.hasOwnProperty.call(\n providedGlobalVariables,\n variableName\n )\n ) {\n globalVariables[variableName] = providedGlobalVariables[variableName];\n } else {\n const variable = supplyIndividual(variableName, mock);\n if (variable !== undefined) {\n globalVariables[variableName] = variable;\n }\n }\n }\n }\n return globalVariables;\n}\n\nconst shouldOmitInLodash = new Set([\n // Omit all mutable methods from lodash.\n // But allow sequence methods like `_.chain`.\n \"fill\",\n \"pull\",\n \"pullAll\",\n \"pullAllBy\",\n \"pullAllWith\",\n \"pullAt\",\n \"remove\",\n \"reverse\",\n \"assign\",\n \"assignIn\",\n \"assignInWith\",\n \"assignWith\",\n \"defaults\",\n \"defaultsDeep\",\n \"merge\",\n \"mergeWith\",\n \"set\",\n \"setWith\",\n \"unset\",\n \"update\",\n \"updateWith\",\n /**\n * Ignore `Function` methods from lodash, too.\n * There are chances to invoke `Object.assign`, etc.\n *\n * E.g.:\n *\n * ```\n * _.wrap(_.method('constructor.assign',{b:2},{b:3}),(func,...a) => func(...a))({})\n * ```\n */\n \"after\",\n \"ary\",\n \"before\",\n \"bind\",\n \"bindKey\",\n \"curry\",\n \"curryRight\",\n \"debounce\",\n \"defer\",\n \"delay\",\n \"flip\",\n \"memoize\",\n \"negate\",\n \"once\",\n \"overArgs\",\n \"partial\",\n \"partialRight\",\n \"rearg\",\n \"rest\",\n \"spread\",\n \"throttle\",\n \"unary\",\n \"wrap\",\n]);\n\n// Omit all mutable methods from moment.\nconst shouldOmitInMoment = new Set([\n \"lang\",\n \"langData\",\n \"locale\",\n \"localeData\",\n \"defineLocale\",\n \"updateLocale\",\n \"updateOffset\",\n]);\n\nconst allowedGlobalObjects = new Set([\n \"Array\",\n \"Boolean\",\n \"Date\",\n \"Infinity\",\n \"JSON\",\n \"Math\",\n \"NaN\",\n \"Number\",\n \"String\",\n \"RegExp\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"Map\",\n \"Set\",\n \"URL\",\n \"URLSearchParams\",\n \"WeakMap\",\n \"WeakSet\",\n \"atob\",\n \"btoa\",\n]);\n\nfunction supplyIndividual(variableName: string, mock?: boolean): unknown {\n switch (variableName) {\n case \"Object\":\n // Do not allow mutable methods like `Object.assign`.\n return delegateMethods(Object, [\n \"entries\",\n \"fromEntries\",\n \"keys\",\n \"values\",\n ]);\n case \"_\":\n return Object.fromEntries(\n Object.entries(lodash)\n .filter((entry) => !shouldOmitInLodash.has(entry[0]))\n .concat(\n mock ? [[\"uniqueId\", (prefix?: string) => `${prefix ?? \"\"}42`]] : []\n )\n );\n case \"moment\":\n return Object.assign(\n (...args: Parameters<typeof moment>) => moment(...args),\n Object.fromEntries(\n Object.entries(moment).filter(\n (entry) => !shouldOmitInMoment.has(entry[0])\n )\n )\n );\n case \"PIPES\":\n return pipes;\n case \"TAG_URL\":\n return tagUrlFactory(true);\n case \"SAFE_TAG_URL\":\n return tagUrlFactory();\n default:\n if (allowedGlobalObjects.has(variableName)) {\n return window[variableName as keyof Window];\n }\n }\n}\n\nfunction delegateMethods(\n target: unknown,\n methods: string[]\n): Record<string, Function> {\n return Object.fromEntries(\n methods.map((method) => [\n method,\n <T>(...args: T[]) =>\n (target as Record<typeof method, (...args: T[]) => unknown>)[\n method\n ].apply(target, args),\n ])\n );\n}\n\ntype FnTagUrl = (\n strings: TemplateStringsArray,\n ...partials: unknown[]\n) => string;\n\n/**\n * Pass `ignoreSlashes` as `true` to encode all tagged expressions\n * as URL components, except for `/` which maybe used in `APP.homepage`.\n *\n * Otherwise encode all tagged expressions as URL components.\n * This will encode `/` as `%2F`. So do not use it directly\n * with `APP.homepage` as in template expressions.\n *\n * @example\n *\n * ```js\n * TAG_URL`${APP.homepage}/list?q=${q}&redirect=${redirect}`\n * ```\n *\n * ```js\n * SAFE_TAG_URL`file/${path}?q=${q}`\n * // `path` will be fully transformed by `encodeURIComponent`.\n * ```\n *\n * ```js\n * // Wrap `APP.homepage` outside of `SAFE_TAG_URL`.\n * `${APP.homepage}/${SAFE_TAG_URL`file/${path}?q=${q}`}`\n * ```\n */\nfunction tagUrlFactory(ignoreSlashes?: boolean): FnTagUrl {\n return function (\n strings: TemplateStringsArray,\n ...partials: unknown[]\n ): string {\n const result: string[] = [];\n strings.forEach((str, index) => {\n result.push(str);\n if (index < partials.length) {\n result.push(\n ignoreSlashes\n ? String(partials[index]).replace(/[^/]+/g, (p) =>\n encodeURIComponent(p)\n )\n : encodeURIComponent(String(partials[index]))\n );\n }\n });\n return result.join(\"\");\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_lodash","_interopRequireDefault","require","_moment","_pipes","supply","attemptToVisitGlobals","providedGlobalVariables","mock","globalVariables","variableName","Object","prototype","hasOwnProperty","call","undefined","variable","supplyIndividual","shouldOmitInLodash","Set","shouldOmitInMoment","allowedGlobalObjects","delegateMethods","fromEntries","entries","lodash","filter","entry","has","concat","prefix","assign","args","moment","pipes","tagUrlFactory","window","target","methods","map","method","apply","ignoreSlashes","strings","partials","result","forEach","str","index","push","length","String","replace","p","encodeURIComponent","join"],"sources":["../../src/index.ts"],"sourcesContent":["import lodash from \"lodash\";\nimport moment from \"moment\";\nimport { pipes } from \"@next-core/pipes\";\n\nexport function supply(\n attemptToVisitGlobals: Set<string> | string[],\n providedGlobalVariables?: Record<string, unknown>,\n mock?: boolean\n): Record<string, unknown> {\n const globalVariables: Record<string, unknown> = {};\n // Allow limited browser builtin values.\n for (const variableName of attemptToVisitGlobals) {\n if (!Object.prototype.hasOwnProperty.call(globalVariables, variableName)) {\n if (variableName === \"undefined\") {\n globalVariables[variableName] = undefined;\n } else if (\n providedGlobalVariables &&\n Object.prototype.hasOwnProperty.call(\n providedGlobalVariables,\n variableName\n )\n ) {\n globalVariables[variableName] = providedGlobalVariables[variableName];\n } else {\n const variable = supplyIndividual(variableName, mock);\n if (variable !== undefined) {\n globalVariables[variableName] = variable;\n }\n }\n }\n }\n return globalVariables;\n}\n\nconst shouldOmitInLodash = new Set([\n // Omit all mutable methods from lodash.\n // But allow sequence methods like `_.chain`.\n \"fill\",\n \"pull\",\n \"pullAll\",\n \"pullAllBy\",\n \"pullAllWith\",\n \"pullAt\",\n \"remove\",\n \"reverse\",\n \"assign\",\n \"assignIn\",\n \"assignInWith\",\n \"assignWith\",\n \"defaults\",\n \"defaultsDeep\",\n \"merge\",\n \"mergeWith\",\n \"set\",\n \"setWith\",\n \"unset\",\n \"update\",\n \"updateWith\",\n /**\n * Ignore `Function` methods from lodash, too.\n * There are chances to invoke `Object.assign`, etc.\n *\n * E.g.:\n *\n * ```\n * _.wrap(_.method('constructor.assign',{b:2},{b:3}),(func,...a) => func(...a))({})\n * ```\n */\n \"after\",\n \"ary\",\n \"before\",\n \"bind\",\n \"bindKey\",\n \"curry\",\n \"curryRight\",\n \"debounce\",\n \"defer\",\n \"delay\",\n \"flip\",\n \"memoize\",\n \"negate\",\n \"once\",\n \"overArgs\",\n \"partial\",\n \"partialRight\",\n \"rearg\",\n \"rest\",\n \"spread\",\n \"throttle\",\n \"unary\",\n \"wrap\",\n]);\n\n// Omit all mutable methods from moment.\nconst shouldOmitInMoment = new Set([\n \"lang\",\n \"langData\",\n \"locale\",\n \"localeData\",\n \"defineLocale\",\n \"updateLocale\",\n \"updateOffset\",\n]);\n\nconst allowedGlobalObjects = new Set([\n \"Array\",\n \"Boolean\",\n \"Date\",\n \"Infinity\",\n \"JSON\",\n \"Math\",\n \"NaN\",\n \"Number\",\n \"String\",\n \"RegExp\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"Map\",\n \"Set\",\n \"URL\",\n \"URLSearchParams\",\n \"WeakMap\",\n \"WeakSet\",\n \"atob\",\n \"btoa\",\n]);\n\nfunction supplyIndividual(variableName: string, mock?: boolean): unknown {\n switch (variableName) {\n case \"Object\":\n // Do not allow mutable methods like `Object.assign`.\n return delegateMethods(Object, [\n \"entries\",\n \"fromEntries\",\n \"keys\",\n \"values\",\n ]);\n case \"_\":\n return Object.fromEntries(\n Object.entries(lodash)\n .filter((entry) => !shouldOmitInLodash.has(entry[0]))\n .concat(\n mock ? [[\"uniqueId\", (prefix?: string) => `${prefix ?? \"\"}42`]] : []\n )\n );\n case \"moment\":\n return Object.assign(\n (...args: Parameters<typeof moment>) => moment(...args),\n Object.fromEntries(\n Object.entries(moment).filter(\n (entry) => !shouldOmitInMoment.has(entry[0])\n )\n )\n );\n case \"PIPES\":\n return pipes;\n case \"TAG_URL\":\n return tagUrlFactory(true);\n case \"SAFE_TAG_URL\":\n return tagUrlFactory();\n default:\n if (allowedGlobalObjects.has(variableName)) {\n return window[variableName as keyof Window];\n }\n }\n}\n\nfunction delegateMethods(\n target: unknown,\n methods: string[]\n): Record<string, Function> {\n return Object.fromEntries(\n methods.map((method) => [\n method,\n <T>(...args: T[]) =>\n (target as Record<typeof method, (...args: T[]) => unknown>)[\n method\n ].apply(target, args),\n ])\n );\n}\n\ntype FnTagUrl = (\n strings: TemplateStringsArray,\n ...partials: unknown[]\n) => string;\n\n/**\n * Pass `ignoreSlashes` as `true` to encode all tagged expressions\n * as URL components, except for `/` which maybe used in `APP.homepage`.\n *\n * Otherwise encode all tagged expressions as URL components.\n * This will encode `/` as `%2F`. So do not use it directly\n * with `APP.homepage` as in template expressions.\n *\n * @example\n *\n * ```js\n * TAG_URL`${APP.homepage}/list?q=${q}&redirect=${redirect}`\n * ```\n *\n * ```js\n * SAFE_TAG_URL`file/${path}?q=${q}`\n * // `path` will be fully transformed by `encodeURIComponent`.\n * ```\n *\n * ```js\n * // Wrap `APP.homepage` outside of `SAFE_TAG_URL`.\n * `${APP.homepage}/${SAFE_TAG_URL`file/${path}?q=${q}`}`\n * ```\n */\nfunction tagUrlFactory(ignoreSlashes?: boolean): FnTagUrl {\n return function (\n strings: TemplateStringsArray,\n ...partials: unknown[]\n ): string {\n const result: string[] = [];\n strings.forEach((str, index) => {\n result.push(str);\n if (index < partials.length) {\n result.push(\n ignoreSlashes\n ? String(partials[index]).replace(/[^/]+/g, (p) =>\n encodeURIComponent(p)\n )\n : encodeURIComponent(String(partials[index]))\n );\n }\n });\n return result.join(\"\");\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/esm/index.js
CHANGED
|
@@ -2,13 +2,13 @@ import lodash from "lodash";
|
|
|
2
2
|
import moment from "moment";
|
|
3
3
|
import { pipes } from "@next-core/pipes";
|
|
4
4
|
export function supply(attemptToVisitGlobals, providedGlobalVariables, mock) {
|
|
5
|
-
const globalVariables = {
|
|
6
|
-
undefined
|
|
7
|
-
};
|
|
5
|
+
const globalVariables = {};
|
|
8
6
|
// Allow limited browser builtin values.
|
|
9
7
|
for (const variableName of attemptToVisitGlobals) {
|
|
10
8
|
if (!Object.prototype.hasOwnProperty.call(globalVariables, variableName)) {
|
|
11
|
-
if (
|
|
9
|
+
if (variableName === "undefined") {
|
|
10
|
+
globalVariables[variableName] = undefined;
|
|
11
|
+
} else if (providedGlobalVariables && Object.prototype.hasOwnProperty.call(providedGlobalVariables, variableName)) {
|
|
12
12
|
globalVariables[variableName] = providedGlobalVariables[variableName];
|
|
13
13
|
} else {
|
|
14
14
|
const variable = supplyIndividual(variableName, mock);
|
|
@@ -45,7 +45,7 @@ function supplyIndividual(variableName, mock) {
|
|
|
45
45
|
// Do not allow mutable methods like `Object.assign`.
|
|
46
46
|
return delegateMethods(Object, ["entries", "fromEntries", "keys", "values"]);
|
|
47
47
|
case "_":
|
|
48
|
-
return Object.fromEntries(Object.entries(lodash).filter(entry => !shouldOmitInLodash.has(entry[0])).concat(mock ? [["uniqueId", prefix => `${prefix
|
|
48
|
+
return Object.fromEntries(Object.entries(lodash).filter(entry => !shouldOmitInLodash.has(entry[0])).concat(mock ? [["uniqueId", prefix => `${prefix !== null && prefix !== void 0 ? prefix : ""}42`]] : []));
|
|
49
49
|
case "moment":
|
|
50
50
|
return Object.assign(function () {
|
|
51
51
|
return moment(...arguments);
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["lodash","moment","pipes","supply","attemptToVisitGlobals","providedGlobalVariables","mock","globalVariables","undefined","variableName","Object","prototype","hasOwnProperty","call","variable","supplyIndividual","shouldOmitInLodash","Set","shouldOmitInMoment","allowedGlobalObjects","delegateMethods","fromEntries","entries","filter","entry","has","concat","prefix","assign","arguments","tagUrlFactory","window","target","methods","map","method","_len","length","args","Array","_key","apply","ignoreSlashes","strings","_len2","partials","_key2","result","forEach","str","index","push","String","replace","p","encodeURIComponent","join"],"sources":["../../src/index.ts"],"sourcesContent":["import lodash from \"lodash\";\nimport moment from \"moment\";\nimport { pipes } from \"@next-core/pipes\";\n\nexport function supply(\n attemptToVisitGlobals: Set<string>,\n providedGlobalVariables?: Record<string, unknown>,\n mock?: boolean\n): Record<string, unknown> {\n const globalVariables: Record<string, unknown> = {\n undefined,\n };\n // Allow limited browser builtin values.\n for (const variableName of attemptToVisitGlobals) {\n if (!Object.prototype.hasOwnProperty.call(globalVariables, variableName)) {\n if (\n providedGlobalVariables &&\n Object.prototype.hasOwnProperty.call(\n providedGlobalVariables,\n variableName\n )\n ) {\n globalVariables[variableName] = providedGlobalVariables[variableName];\n } else {\n const variable = supplyIndividual(variableName, mock);\n if (variable !== undefined) {\n globalVariables[variableName] = variable;\n }\n }\n }\n }\n return globalVariables;\n}\n\nconst shouldOmitInLodash = new Set([\n // Omit all mutable methods from lodash.\n // But allow sequence methods like `_.chain`.\n \"fill\",\n \"pull\",\n \"pullAll\",\n \"pullAllBy\",\n \"pullAllWith\",\n \"pullAt\",\n \"remove\",\n \"reverse\",\n \"assign\",\n \"assignIn\",\n \"assignInWith\",\n \"assignWith\",\n \"defaults\",\n \"defaultsDeep\",\n \"merge\",\n \"mergeWith\",\n \"set\",\n \"setWith\",\n \"unset\",\n \"update\",\n \"updateWith\",\n /**\n * Ignore `Function` methods from lodash, too.\n * There are chances to invoke `Object.assign`, etc.\n *\n * E.g.:\n *\n * ```\n * _.wrap(_.method('constructor.assign',{b:2},{b:3}),(func,...a) => func(...a))({})\n * ```\n */\n \"after\",\n \"ary\",\n \"before\",\n \"bind\",\n \"bindKey\",\n \"curry\",\n \"curryRight\",\n \"debounce\",\n \"defer\",\n \"delay\",\n \"flip\",\n \"memoize\",\n \"negate\",\n \"once\",\n \"overArgs\",\n \"partial\",\n \"partialRight\",\n \"rearg\",\n \"rest\",\n \"spread\",\n \"throttle\",\n \"unary\",\n \"wrap\",\n]);\n\n// Omit all mutable methods from moment.\nconst shouldOmitInMoment = new Set([\n \"lang\",\n \"langData\",\n \"locale\",\n \"localeData\",\n \"defineLocale\",\n \"updateLocale\",\n \"updateOffset\",\n]);\n\nconst allowedGlobalObjects = new Set([\n \"Array\",\n \"Boolean\",\n \"Date\",\n \"Infinity\",\n \"JSON\",\n \"Math\",\n \"NaN\",\n \"Number\",\n \"String\",\n \"RegExp\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"Map\",\n \"Set\",\n \"URL\",\n \"URLSearchParams\",\n \"WeakMap\",\n \"WeakSet\",\n \"atob\",\n \"btoa\",\n]);\n\nfunction supplyIndividual(variableName: string, mock?: boolean): unknown {\n switch (variableName) {\n case \"Object\":\n // Do not allow mutable methods like `Object.assign`.\n return delegateMethods(Object, [\n \"entries\",\n \"fromEntries\",\n \"keys\",\n \"values\",\n ]);\n case \"_\":\n return Object.fromEntries(\n Object.entries(lodash)\n .filter((entry) => !shouldOmitInLodash.has(entry[0]))\n .concat(\n mock ? [[\"uniqueId\", (prefix?: string) => `${prefix ?? \"\"}42`]] : []\n )\n );\n case \"moment\":\n return Object.assign(\n (...args: Parameters<typeof moment>) => moment(...args),\n Object.fromEntries(\n Object.entries(moment).filter(\n (entry) => !shouldOmitInMoment.has(entry[0])\n )\n )\n );\n case \"PIPES\":\n return pipes;\n case \"TAG_URL\":\n return tagUrlFactory(true);\n case \"SAFE_TAG_URL\":\n return tagUrlFactory();\n default:\n if (allowedGlobalObjects.has(variableName)) {\n return window[variableName as keyof Window];\n }\n }\n}\n\nfunction delegateMethods(\n target: unknown,\n methods: string[]\n): Record<string, Function> {\n return Object.fromEntries(\n methods.map((method) => [\n method,\n <T>(...args: T[]) =>\n (target as Record<typeof method, (...args: T[]) => unknown>)[\n method\n ].apply(target, args),\n ])\n );\n}\n\ntype FnTagUrl = (\n strings: TemplateStringsArray,\n ...partials: unknown[]\n) => string;\n\n/**\n * Pass `ignoreSlashes` as `true` to encode all tagged expressions\n * as URL components, except for `/` which maybe used in `APP.homepage`.\n *\n * Otherwise encode all tagged expressions as URL components.\n * This will encode `/` as `%2F`. So do not use it directly\n * with `APP.homepage` as in template expressions.\n *\n * @example\n *\n * ```js\n * TAG_URL`${APP.homepage}/list?q=${q}&redirect=${redirect}`\n * ```\n *\n * ```js\n * SAFE_TAG_URL`file/${path}?q=${q}`\n * // `path` will be fully transformed by `encodeURIComponent`.\n * ```\n *\n * ```js\n * // Wrap `APP.homepage` outside of `SAFE_TAG_URL`.\n * `${APP.homepage}/${SAFE_TAG_URL`file/${path}?q=${q}`}`\n * ```\n */\nfunction tagUrlFactory(ignoreSlashes?: boolean): FnTagUrl {\n return function (\n strings: TemplateStringsArray,\n ...partials: unknown[]\n ): string {\n const result: string[] = [];\n strings.forEach((str, index) => {\n result.push(str);\n if (index < partials.length) {\n result.push(\n ignoreSlashes\n ? String(partials[index]).replace(/[^/]+/g, (p) =>\n encodeURIComponent(p)\n )\n : encodeURIComponent(String(partials[index]))\n );\n }\n });\n return result.join(\"\");\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["lodash","moment","pipes","supply","attemptToVisitGlobals","providedGlobalVariables","mock","globalVariables","variableName","Object","prototype","hasOwnProperty","call","undefined","variable","supplyIndividual","shouldOmitInLodash","Set","shouldOmitInMoment","allowedGlobalObjects","delegateMethods","fromEntries","entries","filter","entry","has","concat","prefix","assign","arguments","tagUrlFactory","window","target","methods","map","method","_len","length","args","Array","_key","apply","ignoreSlashes","strings","_len2","partials","_key2","result","forEach","str","index","push","String","replace","p","encodeURIComponent","join"],"sources":["../../src/index.ts"],"sourcesContent":["import lodash from \"lodash\";\nimport moment from \"moment\";\nimport { pipes } from \"@next-core/pipes\";\n\nexport function supply(\n attemptToVisitGlobals: Set<string> | string[],\n providedGlobalVariables?: Record<string, unknown>,\n mock?: boolean\n): Record<string, unknown> {\n const globalVariables: Record<string, unknown> = {};\n // Allow limited browser builtin values.\n for (const variableName of attemptToVisitGlobals) {\n if (!Object.prototype.hasOwnProperty.call(globalVariables, variableName)) {\n if (variableName === \"undefined\") {\n globalVariables[variableName] = undefined;\n } else if (\n providedGlobalVariables &&\n Object.prototype.hasOwnProperty.call(\n providedGlobalVariables,\n variableName\n )\n ) {\n globalVariables[variableName] = providedGlobalVariables[variableName];\n } else {\n const variable = supplyIndividual(variableName, mock);\n if (variable !== undefined) {\n globalVariables[variableName] = variable;\n }\n }\n }\n }\n return globalVariables;\n}\n\nconst shouldOmitInLodash = new Set([\n // Omit all mutable methods from lodash.\n // But allow sequence methods like `_.chain`.\n \"fill\",\n \"pull\",\n \"pullAll\",\n \"pullAllBy\",\n \"pullAllWith\",\n \"pullAt\",\n \"remove\",\n \"reverse\",\n \"assign\",\n \"assignIn\",\n \"assignInWith\",\n \"assignWith\",\n \"defaults\",\n \"defaultsDeep\",\n \"merge\",\n \"mergeWith\",\n \"set\",\n \"setWith\",\n \"unset\",\n \"update\",\n \"updateWith\",\n /**\n * Ignore `Function` methods from lodash, too.\n * There are chances to invoke `Object.assign`, etc.\n *\n * E.g.:\n *\n * ```\n * _.wrap(_.method('constructor.assign',{b:2},{b:3}),(func,...a) => func(...a))({})\n * ```\n */\n \"after\",\n \"ary\",\n \"before\",\n \"bind\",\n \"bindKey\",\n \"curry\",\n \"curryRight\",\n \"debounce\",\n \"defer\",\n \"delay\",\n \"flip\",\n \"memoize\",\n \"negate\",\n \"once\",\n \"overArgs\",\n \"partial\",\n \"partialRight\",\n \"rearg\",\n \"rest\",\n \"spread\",\n \"throttle\",\n \"unary\",\n \"wrap\",\n]);\n\n// Omit all mutable methods from moment.\nconst shouldOmitInMoment = new Set([\n \"lang\",\n \"langData\",\n \"locale\",\n \"localeData\",\n \"defineLocale\",\n \"updateLocale\",\n \"updateOffset\",\n]);\n\nconst allowedGlobalObjects = new Set([\n \"Array\",\n \"Boolean\",\n \"Date\",\n \"Infinity\",\n \"JSON\",\n \"Math\",\n \"NaN\",\n \"Number\",\n \"String\",\n \"RegExp\",\n \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"Map\",\n \"Set\",\n \"URL\",\n \"URLSearchParams\",\n \"WeakMap\",\n \"WeakSet\",\n \"atob\",\n \"btoa\",\n]);\n\nfunction supplyIndividual(variableName: string, mock?: boolean): unknown {\n switch (variableName) {\n case \"Object\":\n // Do not allow mutable methods like `Object.assign`.\n return delegateMethods(Object, [\n \"entries\",\n \"fromEntries\",\n \"keys\",\n \"values\",\n ]);\n case \"_\":\n return Object.fromEntries(\n Object.entries(lodash)\n .filter((entry) => !shouldOmitInLodash.has(entry[0]))\n .concat(\n mock ? [[\"uniqueId\", (prefix?: string) => `${prefix ?? \"\"}42`]] : []\n )\n );\n case \"moment\":\n return Object.assign(\n (...args: Parameters<typeof moment>) => moment(...args),\n Object.fromEntries(\n Object.entries(moment).filter(\n (entry) => !shouldOmitInMoment.has(entry[0])\n )\n )\n );\n case \"PIPES\":\n return pipes;\n case \"TAG_URL\":\n return tagUrlFactory(true);\n case \"SAFE_TAG_URL\":\n return tagUrlFactory();\n default:\n if (allowedGlobalObjects.has(variableName)) {\n return window[variableName as keyof Window];\n }\n }\n}\n\nfunction delegateMethods(\n target: unknown,\n methods: string[]\n): Record<string, Function> {\n return Object.fromEntries(\n methods.map((method) => [\n method,\n <T>(...args: T[]) =>\n (target as Record<typeof method, (...args: T[]) => unknown>)[\n method\n ].apply(target, args),\n ])\n );\n}\n\ntype FnTagUrl = (\n strings: TemplateStringsArray,\n ...partials: unknown[]\n) => string;\n\n/**\n * Pass `ignoreSlashes` as `true` to encode all tagged expressions\n * as URL components, except for `/` which maybe used in `APP.homepage`.\n *\n * Otherwise encode all tagged expressions as URL components.\n * This will encode `/` as `%2F`. So do not use it directly\n * with `APP.homepage` as in template expressions.\n *\n * @example\n *\n * ```js\n * TAG_URL`${APP.homepage}/list?q=${q}&redirect=${redirect}`\n * ```\n *\n * ```js\n * SAFE_TAG_URL`file/${path}?q=${q}`\n * // `path` will be fully transformed by `encodeURIComponent`.\n * ```\n *\n * ```js\n * // Wrap `APP.homepage` outside of `SAFE_TAG_URL`.\n * `${APP.homepage}/${SAFE_TAG_URL`file/${path}?q=${q}`}`\n * ```\n */\nfunction tagUrlFactory(ignoreSlashes?: boolean): FnTagUrl {\n return function (\n strings: TemplateStringsArray,\n ...partials: unknown[]\n ): string {\n const result: string[] = [];\n strings.forEach((str, index) => {\n result.push(str);\n if (index < partials.length) {\n result.push(\n ignoreSlashes\n ? String(partials[index]).replace(/[^/]+/g, (p) =>\n encodeURIComponent(p)\n )\n : encodeURIComponent(String(partials[index]))\n );\n }\n });\n return result.join(\"\");\n };\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function supply(attemptToVisitGlobals: Set<string
|
|
1
|
+
export declare function supply(attemptToVisitGlobals: Set<string> | string[], providedGlobalVariables?: Record<string, unknown>, mock?: boolean): Record<string, unknown>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@next-core/supply",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.0",
|
|
4
4
|
"description": "Supply for expressions and storyboard functions",
|
|
5
5
|
"homepage": "https://github.com/easyops-cn/next-core/tree/v3/packages/supply",
|
|
6
6
|
"license": "GPL-3.0",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
},
|
|
38
38
|
"sideEffects": false,
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@next-core/pipes": "^2.0.
|
|
40
|
+
"@next-core/pipes": "^2.0.27",
|
|
41
41
|
"lodash": "^4.17.21",
|
|
42
42
|
"moment": "^2.30.1"
|
|
43
43
|
},
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"@next-core/build-next-libs": "^1.0.20",
|
|
46
46
|
"@next-core/test-next": "^1.1.7"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "88b6d23b476b970add53676df48b89137ba668f2"
|
|
49
49
|
}
|