@next-core/supply 1.0.38 → 1.0.41

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/CHANGELOG.md CHANGED
@@ -3,7 +3,7 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- ## [1.0.38](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.37...@next-core/supply@1.0.38) (2022-05-06)
6
+ ## [1.0.41](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.40...@next-core/supply@1.0.41) (2022-05-26)
7
7
 
8
8
  **Note:** Version bump only for package @next-core/supply
9
9
 
@@ -11,18 +11,15 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
11
11
 
12
12
 
13
13
 
14
- ## [1.0.37](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.36...@next-core/supply@1.0.37) (2022-04-22)
15
-
14
+ ## [1.0.40](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.39...@next-core/supply@1.0.40) (2022-05-10)
16
15
 
17
- ### Bug Fixes
18
-
19
- * mock _.uniqueId in storyboard functions ([f6d5eb2](https://github.com/easyops-cn/next-core/commit/f6d5eb2a6e00d7c5bd32e60a238b67c14641b840))
16
+ **Note:** Version bump only for package @next-core/supply
20
17
 
21
18
 
22
19
 
23
20
 
24
21
 
25
- ## [1.0.36](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.35...@next-core/supply@1.0.36) (2022-04-21)
22
+ ## [1.0.39](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.38...@next-core/supply@1.0.39) (2022-05-09)
26
23
 
27
24
  **Note:** Version bump only for package @next-core/supply
28
25
 
@@ -30,89 +27,62 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
30
27
 
31
28
 
32
29
 
33
- ## [1.0.35](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.34...@next-core/supply@1.0.35) (2022-04-19)
30
+ ## [1.0.38](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.37...@next-core/supply@1.0.38) (2022-05-06)
34
31
 
35
32
  **Note:** Version bump only for package @next-core/supply
36
33
 
34
+ ## [1.0.37](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.36...@next-core/supply@1.0.37) (2022-04-22)
37
35
 
36
+ ### Bug Fixes
38
37
 
38
+ - mock \_.uniqueId in storyboard functions ([f6d5eb2](https://github.com/easyops-cn/next-core/commit/f6d5eb2a6e00d7c5bd32e60a238b67c14641b840))
39
39
 
40
-
41
- ## [1.0.34](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.33...@next-core/supply@1.0.34) (2022-04-14)
40
+ ## [1.0.36](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.35...@next-core/supply@1.0.36) (2022-04-21)
42
41
 
43
42
  **Note:** Version bump only for package @next-core/supply
44
43
 
44
+ ## [1.0.35](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.34...@next-core/supply@1.0.35) (2022-04-19)
45
45
 
46
+ **Note:** Version bump only for package @next-core/supply
46
47
 
48
+ ## [1.0.34](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.33...@next-core/supply@1.0.34) (2022-04-14)
47
49
 
50
+ **Note:** Version bump only for package @next-core/supply
48
51
 
49
52
  ## [1.0.33](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.32...@next-core/supply@1.0.33) (2022-04-07)
50
53
 
51
54
  **Note:** Version bump only for package @next-core/supply
52
55
 
53
-
54
-
55
-
56
-
57
56
  ## [1.0.32](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.31...@next-core/supply@1.0.32) (2022-04-06)
58
57
 
59
58
  **Note:** Version bump only for package @next-core/supply
60
59
 
61
-
62
-
63
-
64
-
65
60
  ## [1.0.31](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.30...@next-core/supply@1.0.31) (2022-03-29)
66
61
 
67
62
  **Note:** Version bump only for package @next-core/supply
68
63
 
69
-
70
-
71
-
72
-
73
64
  ## [1.0.30](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.29...@next-core/supply@1.0.30) (2022-03-29)
74
65
 
75
66
  **Note:** Version bump only for package @next-core/supply
76
67
 
77
-
78
-
79
-
80
-
81
68
  ## [1.0.29](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.28...@next-core/supply@1.0.29) (2022-03-28)
82
69
 
83
70
  **Note:** Version bump only for package @next-core/supply
84
71
 
85
-
86
-
87
-
88
-
89
72
  ## [1.0.28](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.27...@next-core/supply@1.0.28) (2022-03-24)
90
73
 
91
-
92
74
  ### Bug Fixes
93
75
 
94
- * support mocked location in storyboard functions ([260e775](https://github.com/easyops-cn/next-core/commit/260e77567a61c7f3199a174171de2eead4007d06))
95
-
96
-
97
-
98
-
76
+ - support mocked location in storyboard functions ([260e775](https://github.com/easyops-cn/next-core/commit/260e77567a61c7f3199a174171de2eead4007d06))
99
77
 
100
78
  ## [1.0.27](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.26...@next-core/supply@1.0.27) (2022-03-15)
101
79
 
102
80
  **Note:** Version bump only for package @next-core/supply
103
81
 
104
-
105
-
106
-
107
-
108
82
  ## [1.0.26](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.25...@next-core/supply@1.0.26) (2022-02-28)
109
83
 
110
84
  **Note:** Version bump only for package @next-core/supply
111
85
 
112
-
113
-
114
-
115
-
116
86
  ## [1.0.25](https://github.com/easyops-cn/next-core/compare/@next-core/supply@1.0.24...@next-core/supply@1.0.25) (2022-02-21)
117
87
 
118
88
  **Note:** Version bump only for package @next-core/supply
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"names":["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"],"mappings":";;;;;;;;;AAAA;;AACA;;AAEA;;AAEO,SAASA,MAAT,CACLC,qBADK,EAELC,uBAFK,EAGLC,IAHK,EAIoB;AACzB,QAAMC,eAAe,GAAG,EACtB,GAAGF;AADmB,GAAxB,CADyB,CAIzB;;AACAE,EAAAA,eAAe,CAAC,WAAD,CAAf,GAA+BC,SAA/B;;AACA,OAAK,MAAMC,YAAX,IAA2BL,qBAA3B,EAAkD;AAChD,QAAI,CAACM,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCN,eAArC,EAAsDE,YAAtD,CAAL,EAA0E;AACxE,YAAMK,QAAQ,GAAGC,gBAAgB,CAACN,YAAD,EAAeH,IAAf,CAAjC;;AACA,UAAIQ,QAAQ,KAAKN,SAAjB,EAA4B;AAC1BD,QAAAA,eAAe,CAACE,YAAD,CAAf,GAAgCK,QAAhC;AACD;AACF;AACF;;AACD,SAAOP,eAAP;AACD;;AAED,MAAMS,kBAAkB,GAAG,IAAIC,GAAJ,CAAQ,CACjC;AACA;AACA,MAHiC,EAIjC,MAJiC,EAKjC,SALiC,EAMjC,WANiC,EAOjC,aAPiC,EAQjC,QARiC,EASjC,QATiC,EAUjC,SAViC,EAWjC,QAXiC,EAYjC,UAZiC,EAajC,cAbiC,EAcjC,YAdiC,EAejC,UAfiC,EAgBjC,cAhBiC,EAiBjC,OAjBiC,EAkBjC,WAlBiC,EAmBjC,KAnBiC,EAoBjC,SApBiC,EAqBjC,OArBiC,EAsBjC,QAtBiC,EAuBjC,YAvBiC;AAwBjC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,OAlCiC,EAmCjC,KAnCiC,EAoCjC,QApCiC,EAqCjC,MArCiC,EAsCjC,SAtCiC,EAuCjC,OAvCiC,EAwCjC,YAxCiC,EAyCjC,UAzCiC,EA0CjC,OA1CiC,EA2CjC,OA3CiC,EA4CjC,MA5CiC,EA6CjC,SA7CiC,EA8CjC,QA9CiC,EA+CjC,MA/CiC,EAgDjC,UAhDiC,EAiDjC,SAjDiC,EAkDjC,cAlDiC,EAmDjC,OAnDiC,EAoDjC,MApDiC,EAqDjC,QArDiC,EAsDjC,UAtDiC,EAuDjC,OAvDiC,EAwDjC,MAxDiC,CAAR,CAA3B,C,CA2DA;;AACA,MAAMC,kBAAkB,GAAG,IAAID,GAAJ,CAAQ,CACjC,MADiC,EAEjC,UAFiC,EAGjC,QAHiC,EAIjC,YAJiC,EAKjC,cALiC,EAMjC,cANiC,EAOjC,cAPiC,CAAR,CAA3B;AAUA,MAAME,oBAAoB,GAAG,IAAIF,GAAJ,CAAQ,CACnC,OADmC,EAEnC,SAFmC,EAGnC,MAHmC,EAInC,UAJmC,EAKnC,MALmC,EAMnC,MANmC,EAOnC,KAPmC,EAQnC,QARmC,EASnC,QATmC,EAUnC,WAVmC,EAWnC,oBAXmC,EAYnC,WAZmC,EAanC,oBAbmC,EAcnC,UAdmC,EAenC,OAfmC,EAgBnC,YAhBmC,EAiBnC,UAjBmC,EAkBnC,KAlBmC,EAmBnC,KAnBmC,EAoBnC,iBApBmC,EAqBnC,SArBmC,EAsBnC,SAtBmC,EAuBnC,MAvBmC,EAwBnC,MAxBmC,CAAR,CAA7B;;AA2BA,SAASF,gBAAT,CAA0BN,YAA1B,EAAgDH,IAAhD,EAAyE;AACvE,UAAQG,YAAR;AACE,SAAK,QAAL;AACE;AACA,aAAOW,eAAe,CAACV,MAAD,EAAS,CAC7B,SAD6B,EAE7B,aAF6B,EAG7B,MAH6B,EAI7B,QAJ6B,CAAT,CAAtB;;AAMF,SAAK,GAAL;AACE,aAAOA,MAAM,CAACW,WAAP,CACLX,MAAM,CAACY,OAAP,CAAeC,eAAf,EACGC,MADH,CACWC,KAAD,IAAW,CAACT,kBAAkB,CAACU,GAAnB,CAAuBD,KAAK,CAAC,CAAD,CAA5B,CADtB,EAEGE,MAFH,CAGIrB,IAAI,GAAG,CAAC,CAAC,UAAD,EAAcsB,MAAD,IAAsB,GAAEA,MAAH,aAAGA,MAAH,cAAGA,MAAH,GAAa,EAAG,IAAlD,CAAD,CAAH,GAA8D,EAHtE,CADK,CAAP;;AAOF,SAAK,QAAL;AACE,aAAOlB,MAAM,CAACmB,MAAP,CACL,CAAC,GAAGC,IAAJ,KAAwC,qBAAO,GAAGA,IAAV,CADnC,EAELpB,MAAM,CAACW,WAAP,CACEX,MAAM,CAACY,OAAP,CAAeS,eAAf,EAAuBP,MAAvB,CACGC,KAAD,IAAW,CAACP,kBAAkB,CAACQ,GAAnB,CAAuBD,KAAK,CAAC,CAAD,CAA5B,CADd,CADF,CAFK,CAAP;;AAQF,SAAK,OAAL;AACE,aAAOO,YAAP;;AACF,SAAK,SAAL;AACE,aAAOC,aAAa,CAAC,IAAD,CAApB;;AACF,SAAK,cAAL;AACE,aAAOA,aAAa,EAApB;;AACF;AACE,UAAId,oBAAoB,CAACO,GAArB,CAAyBjB,YAAzB,CAAJ,EAA4C;AAC1C,eAAOyB,MAAM,CAACzB,YAAD,CAAb;AACD;;AAnCL;AAqCD;;AAED,SAASW,eAAT,CACEe,MADF,EAEEC,OAFF,EAGkC;AAChC,SAAO1B,MAAM,CAACW,WAAP,CACLe,OAAO,CAACC,GAAR,CAAaC,MAAD,IAAY,CACtBA,MADsB,EAEtB,CAAI,GAAGR,IAAP,KACGK,MAAD,CACEG,MADF,EAEEC,KAFF,CAEQJ,MAFR,EAEgBL,IAFhB,CAHoB,CAAxB,CADK,CAAP;AASD;;AAOD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,aAAT,CAAuBO,aAAvB,EAA0D;AACxD,SAAO,UACLC,OADK,EAEL,GAAGC,QAFE,EAGG;AACR,UAAMC,MAAgB,GAAG,EAAzB;AACAF,IAAAA,OAAO,CAACG,OAAR,CAAgB,CAACC,GAAD,EAAMC,KAAN,KAAgB;AAC9BH,MAAAA,MAAM,CAACI,IAAP,CAAYF,GAAZ;;AACA,UAAIC,KAAK,GAAGJ,QAAQ,CAACM,MAArB,EAA6B;AAC3BL,QAAAA,MAAM,CAACI,IAAP,CACEP,aAAa,GACTS,MAAM,CAACP,QAAQ,CAACI,KAAD,CAAT,CAAN,CAAwBI,OAAxB,CAAgC,QAAhC,EAA2CC,CAAD,IACxCC,kBAAkB,CAACD,CAAD,CADpB,CADS,GAITC,kBAAkB,CAACH,MAAM,CAACP,QAAQ,CAACI,KAAD,CAAT,CAAP,CALxB;AAOD;AACF,KAXD;AAYA,WAAOH,MAAM,CAACU,IAAP,CAAY,EAAZ,CAAP;AACD,GAlBD;AAmBD","sourcesContent":["import lodash from \"lodash\";\nimport moment from \"moment\";\nimport { SimpleFunction } from \"@next-core/brick-types\";\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 = {\n ...providedGlobalVariables,\n };\n // Allow limited browser builtin values.\n globalVariables[\"undefined\"] = undefined;\n for (const variableName of attemptToVisitGlobals) {\n if (!Object.prototype.hasOwnProperty.call(globalVariables, variableName)) {\n const variable = supplyIndividual(variableName, mock);\n if (variable !== undefined) {\n globalVariables[variableName] = variable;\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 \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"Map\",\n \"Set\",\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, SimpleFunction> {\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"],"file":"index.js"}
1
+ {"version":3,"file":"index.js","names":["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 { SimpleFunction } from \"@next-core/brick-types\";\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 = {\n ...providedGlobalVariables,\n };\n // Allow limited browser builtin values.\n globalVariables[\"undefined\"] = undefined;\n for (const variableName of attemptToVisitGlobals) {\n if (!Object.prototype.hasOwnProperty.call(globalVariables, variableName)) {\n const variable = supplyIndividual(variableName, mock);\n if (variable !== undefined) {\n globalVariables[variableName] = variable;\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 \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"Map\",\n \"Set\",\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, SimpleFunction> {\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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"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"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","tagUrlFactory","window","target","methods","map","method","args","apply","ignoreSlashes","strings","partials","result","forEach","str","index","push","length","String","replace","p","encodeURIComponent","join"],"mappings":"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","sourcesContent":["import lodash from \"lodash\";\nimport moment from \"moment\";\nimport { SimpleFunction } from \"@next-core/brick-types\";\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 = {\n ...providedGlobalVariables,\n };\n // Allow limited browser builtin values.\n globalVariables[\"undefined\"] = undefined;\n for (const variableName of attemptToVisitGlobals) {\n if (!Object.prototype.hasOwnProperty.call(globalVariables, variableName)) {\n const variable = supplyIndividual(variableName, mock);\n if (variable !== undefined) {\n globalVariables[variableName] = variable;\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 \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"Map\",\n \"Set\",\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, SimpleFunction> {\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"],"file":"index.js"}
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","tagUrlFactory","window","target","methods","map","method","args","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 { SimpleFunction } from \"@next-core/brick-types\";\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 = {\n ...providedGlobalVariables,\n };\n // Allow limited browser builtin values.\n globalVariables[\"undefined\"] = undefined;\n for (const variableName of attemptToVisitGlobals) {\n if (!Object.prototype.hasOwnProperty.call(globalVariables, variableName)) {\n const variable = supplyIndividual(variableName, mock);\n if (variable !== undefined) {\n globalVariables[variableName] = variable;\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 \"decodeURI\",\n \"decodeURIComponent\",\n \"encodeURI\",\n \"encodeURIComponent\",\n \"isFinite\",\n \"isNaN\",\n \"parseFloat\",\n \"parseInt\",\n \"Map\",\n \"Set\",\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, SimpleFunction> {\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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@next-core/supply",
3
- "version": "1.0.38",
3
+ "version": "1.0.41",
4
4
  "description": "Supply for expressions and storyboard functions",
5
5
  "homepage": "https://github.com/easyops-cn/next-core/tree/master/packages/supply",
6
6
  "license": "GPL-3.0",
@@ -29,10 +29,10 @@
29
29
  },
30
30
  "sideEffects": false,
31
31
  "dependencies": {
32
- "@next-core/brick-types": "^2.61.5"
32
+ "@next-core/brick-types": "^2.62.0"
33
33
  },
34
34
  "devDependencies": {
35
- "@next-core/pipes": "^1.0.2",
35
+ "@next-core/pipes": "^1.0.3",
36
36
  "js-yaml": "^3.14.1",
37
37
  "lodash": "^4.17.21",
38
38
  "moment": "^2.29.3"
@@ -43,5 +43,5 @@
43
43
  "lodash": "*",
44
44
  "moment": "*"
45
45
  },
46
- "gitHead": "1581cae9641d53f22a4081c0b73ea10bec1bad36"
46
+ "gitHead": "60c6f7af22de947bd5c327eb91a353cd592d5679"
47
47
  }