@sitecore-content-sdk/core 1.3.0-canary.9 → 1.4.0-canary.2

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.
Files changed (342) hide show
  1. package/README.md +7 -7
  2. package/dist/cjs/cache-client.js +55 -54
  3. package/dist/cjs/client/constants.js +7 -7
  4. package/dist/cjs/client/edge-proxy.js +24 -22
  5. package/dist/cjs/client/index.js +15 -15
  6. package/dist/cjs/client/models.js +2 -2
  7. package/dist/cjs/client/sitecore-client.js +421 -419
  8. package/dist/cjs/client/utils.js +47 -46
  9. package/dist/cjs/config/define-config.js +194 -193
  10. package/dist/cjs/config/index.js +7 -7
  11. package/dist/cjs/config/models.js +12 -11
  12. package/dist/cjs/config-cli/define-cli-config.js +23 -22
  13. package/dist/cjs/config-cli/index.js +7 -7
  14. package/dist/cjs/config-cli/models.js +8 -7
  15. package/dist/cjs/constants.js +49 -17
  16. package/dist/cjs/debug.js +48 -46
  17. package/dist/cjs/editing/codegen/index.js +14 -9
  18. package/dist/cjs/editing/codegen/preview.js +277 -193
  19. package/dist/cjs/editing/component-layout-service.js +62 -61
  20. package/dist/cjs/editing/design-library.js +183 -126
  21. package/dist/cjs/editing/editing-service.js +75 -74
  22. package/dist/cjs/editing/index.js +33 -27
  23. package/dist/cjs/editing/metadata.js +42 -42
  24. package/dist/cjs/editing/models.js +44 -38
  25. package/dist/cjs/editing/utils.js +108 -90
  26. package/dist/cjs/form/form.js +81 -78
  27. package/dist/cjs/form/index.js +7 -7
  28. package/dist/cjs/graphql-request-client.js +108 -107
  29. package/dist/cjs/i18n/dictionary-service.js +122 -121
  30. package/dist/cjs/i18n/index.js +7 -7
  31. package/dist/cjs/i18n/utils.js +16 -15
  32. package/dist/cjs/index.js +60 -60
  33. package/dist/cjs/layout/content-styles.js +72 -71
  34. package/dist/cjs/layout/index.js +24 -24
  35. package/dist/cjs/layout/layout-service.js +62 -57
  36. package/dist/cjs/layout/models.js +39 -34
  37. package/dist/cjs/layout/themes.js +76 -75
  38. package/dist/cjs/layout/utils.js +117 -110
  39. package/dist/cjs/media/index.js +38 -38
  40. package/dist/cjs/media/media-api.js +100 -96
  41. package/dist/cjs/models.js +2 -2
  42. package/dist/cjs/native-fetcher.js +194 -179
  43. package/dist/cjs/personalize/index.js +15 -15
  44. package/dist/cjs/personalize/layout-personalizer.js +98 -97
  45. package/dist/cjs/personalize/personalize-service.js +98 -94
  46. package/dist/cjs/personalize/utils.js +143 -136
  47. package/dist/cjs/retries.js +43 -42
  48. package/dist/cjs/site/error-pages-service.js +65 -64
  49. package/dist/cjs/site/index.js +26 -26
  50. package/dist/cjs/site/models.js +2 -2
  51. package/dist/cjs/site/redirects-service.js +94 -81
  52. package/dist/cjs/site/robots-service.js +66 -65
  53. package/dist/cjs/site/site-resolver.js +73 -72
  54. package/dist/cjs/site/siteinfo-service.js +84 -80
  55. package/dist/cjs/site/sitemap-xml-service.js +84 -83
  56. package/dist/cjs/site/sitepath-service.js +165 -164
  57. package/dist/cjs/site/utils.js +55 -47
  58. package/dist/cjs/sitecore-service-base.js +36 -36
  59. package/dist/cjs/tools/auth/flow.js +65 -64
  60. package/dist/cjs/tools/auth/index.js +5 -5
  61. package/dist/cjs/tools/auth/models.js +2 -2
  62. package/dist/cjs/tools/auth/tenant-store.js +38 -38
  63. package/dist/cjs/tools/codegen/component-generation.js +52 -50
  64. package/dist/cjs/tools/codegen/extract-files.js +105 -107
  65. package/dist/cjs/tools/codegen/import-map.js +401 -349
  66. package/dist/cjs/tools/codegen/utils.js +418 -418
  67. package/dist/cjs/tools/generate-map.js +2 -2
  68. package/dist/cjs/tools/generateMetadata.js +36 -35
  69. package/dist/cjs/tools/generateSites.js +59 -58
  70. package/dist/cjs/tools/index.js +75 -73
  71. package/dist/cjs/tools/scaffold.js +60 -59
  72. package/dist/cjs/tools/templating/components.js +96 -266
  73. package/dist/cjs/tools/templating/index.js +11 -14
  74. package/dist/cjs/tools/templating/plugins.js +80 -78
  75. package/dist/cjs/tools/templating/utils.js +67 -66
  76. package/dist/cjs/utils/ensurePath.js +20 -20
  77. package/dist/cjs/utils/env.js +28 -27
  78. package/dist/cjs/utils/globalCache.js +55 -0
  79. package/dist/cjs/utils/index.js +26 -21
  80. package/dist/cjs/utils/is-server.js +11 -10
  81. package/dist/cjs/utils/normalize-url.js +5 -5
  82. package/dist/cjs/utils/timeout-promise.js +31 -31
  83. package/dist/cjs/utils/utils.js +254 -229
  84. package/dist/esm/cache-client.js +51 -50
  85. package/dist/esm/client/constants.js +4 -4
  86. package/dist/esm/client/edge-proxy.js +19 -17
  87. package/dist/esm/client/index.js +5 -5
  88. package/dist/esm/client/models.js +1 -1
  89. package/dist/esm/client/sitecore-client.js +414 -412
  90. package/dist/esm/client/utils.js +43 -42
  91. package/dist/esm/config/define-config.js +188 -187
  92. package/dist/esm/config/index.js +2 -2
  93. package/dist/esm/config/models.js +9 -8
  94. package/dist/esm/config-cli/define-cli-config.js +19 -18
  95. package/dist/esm/config-cli/index.js +2 -2
  96. package/dist/esm/config-cli/models.js +5 -4
  97. package/dist/esm/constants.js +46 -14
  98. package/dist/esm/debug.js +41 -39
  99. package/dist/esm/editing/codegen/index.js +1 -1
  100. package/dist/esm/editing/codegen/preview.js +263 -185
  101. package/dist/esm/editing/component-layout-service.js +55 -54
  102. package/dist/esm/editing/design-library.js +171 -117
  103. package/dist/esm/editing/editing-service.js +68 -67
  104. package/dist/esm/editing/index.js +6 -5
  105. package/dist/esm/editing/metadata.js +39 -39
  106. package/dist/esm/editing/models.js +41 -35
  107. package/dist/esm/editing/utils.js +98 -80
  108. package/dist/esm/form/form.js +72 -69
  109. package/dist/esm/form/index.js +1 -1
  110. package/dist/esm/graphql-request-client.js +101 -100
  111. package/dist/esm/i18n/dictionary-service.js +115 -114
  112. package/dist/esm/i18n/index.js +2 -2
  113. package/dist/esm/i18n/utils.js +13 -12
  114. package/dist/esm/index.js +13 -13
  115. package/dist/esm/layout/content-styles.js +64 -63
  116. package/dist/esm/layout/index.js +6 -6
  117. package/dist/esm/layout/layout-service.js +55 -50
  118. package/dist/esm/layout/models.js +36 -31
  119. package/dist/esm/layout/themes.js +71 -70
  120. package/dist/esm/layout/utils.js +109 -102
  121. package/dist/esm/media/index.js +2 -2
  122. package/dist/esm/media/media-api.js +90 -86
  123. package/dist/esm/models.js +1 -1
  124. package/dist/esm/native-fetcher.js +187 -172
  125. package/dist/esm/personalize/index.js +3 -3
  126. package/dist/esm/personalize/layout-personalizer.js +93 -92
  127. package/dist/esm/personalize/personalize-service.js +91 -87
  128. package/dist/esm/personalize/utils.js +135 -128
  129. package/dist/esm/retries.js +39 -38
  130. package/dist/esm/site/error-pages-service.js +58 -57
  131. package/dist/esm/site/index.js +8 -8
  132. package/dist/esm/site/models.js +1 -1
  133. package/dist/esm/site/redirects-service.js +87 -74
  134. package/dist/esm/site/robots-service.js +59 -58
  135. package/dist/esm/site/site-resolver.js +69 -68
  136. package/dist/esm/site/siteinfo-service.js +77 -73
  137. package/dist/esm/site/sitemap-xml-service.js +77 -76
  138. package/dist/esm/site/sitepath-service.js +157 -156
  139. package/dist/esm/site/utils.js +49 -41
  140. package/dist/esm/sitecore-service-base.js +29 -29
  141. package/dist/esm/tools/auth/flow.js +62 -61
  142. package/dist/esm/tools/auth/index.js +1 -1
  143. package/dist/esm/tools/auth/models.js +1 -1
  144. package/dist/esm/tools/auth/tenant-store.js +35 -35
  145. package/dist/esm/tools/codegen/component-generation.js +44 -42
  146. package/dist/esm/tools/codegen/extract-files.js +99 -101
  147. package/dist/esm/tools/codegen/import-map.js +358 -306
  148. package/dist/esm/tools/codegen/utils.js +373 -373
  149. package/dist/esm/tools/generate-map.js +1 -1
  150. package/dist/esm/tools/generateMetadata.js +29 -28
  151. package/dist/esm/tools/generateSites.js +52 -51
  152. package/dist/esm/tools/index.js +28 -27
  153. package/dist/esm/tools/scaffold.js +52 -51
  154. package/dist/esm/tools/templating/components.js +59 -223
  155. package/dist/esm/tools/templating/index.js +3 -3
  156. package/dist/esm/tools/templating/plugins.js +72 -70
  157. package/dist/esm/tools/templating/utils.js +59 -58
  158. package/dist/esm/utils/ensurePath.js +13 -13
  159. package/dist/esm/utils/env.js +24 -23
  160. package/dist/esm/utils/globalCache.js +49 -0
  161. package/dist/esm/utils/index.js +4 -3
  162. package/dist/esm/utils/is-server.js +9 -8
  163. package/dist/esm/utils/normalize-url.js +1 -1
  164. package/dist/esm/utils/timeout-promise.js +28 -28
  165. package/dist/esm/utils/utils.js +238 -213
  166. package/package.json +73 -5
  167. package/types/cache-client.d.ts +68 -64
  168. package/types/cache-client.d.ts.map +1 -0
  169. package/types/client/constants.d.ts +5 -4
  170. package/types/client/constants.d.ts.map +1 -0
  171. package/types/client/edge-proxy.d.ts +18 -15
  172. package/types/client/edge-proxy.d.ts.map +1 -0
  173. package/types/client/index.d.ts +8 -7
  174. package/types/client/index.d.ts.map +1 -0
  175. package/types/client/models.d.ts +21 -19
  176. package/types/client/models.d.ts.map +1 -0
  177. package/types/client/sitecore-client.d.ts +338 -327
  178. package/types/client/sitecore-client.d.ts.map +1 -0
  179. package/types/client/utils.d.ts +15 -9
  180. package/types/client/utils.d.ts.map +1 -0
  181. package/types/config/define-config.d.ts +20 -18
  182. package/types/config/define-config.d.ts.map +1 -0
  183. package/types/config/index.d.ts +3 -2
  184. package/types/config/index.d.ts.map +1 -0
  185. package/types/config/models.d.ts +287 -268
  186. package/types/config/models.d.ts.map +1 -0
  187. package/types/config-cli/define-cli-config.d.ts +9 -7
  188. package/types/config-cli/define-cli-config.d.ts.map +1 -0
  189. package/types/config-cli/index.d.ts +3 -2
  190. package/types/config-cli/index.d.ts.map +1 -0
  191. package/types/config-cli/models.d.ts +6 -4
  192. package/types/config-cli/models.d.ts.map +1 -0
  193. package/types/constants.d.ts +44 -11
  194. package/types/constants.d.ts.map +1 -0
  195. package/types/debug.d.ts +35 -28
  196. package/types/debug.d.ts.map +1 -0
  197. package/types/editing/codegen/index.d.ts +2 -1
  198. package/types/editing/codegen/index.d.ts.map +1 -0
  199. package/types/editing/codegen/preview.d.ts +256 -195
  200. package/types/editing/codegen/preview.d.ts.map +1 -0
  201. package/types/editing/component-layout-service.d.ts +84 -80
  202. package/types/editing/component-layout-service.d.ts.map +1 -0
  203. package/types/editing/design-library.d.ts +111 -63
  204. package/types/editing/design-library.d.ts.map +1 -0
  205. package/types/editing/editing-service.d.ts +72 -62
  206. package/types/editing/editing-service.d.ts.map +1 -0
  207. package/types/editing/index.d.ts +7 -6
  208. package/types/editing/index.d.ts.map +1 -0
  209. package/types/editing/metadata.d.ts +8 -7
  210. package/types/editing/metadata.d.ts.map +1 -0
  211. package/types/editing/models.d.ts +103 -92
  212. package/types/editing/models.d.ts.map +1 -0
  213. package/types/editing/utils.d.ts +91 -74
  214. package/types/editing/utils.d.ts.map +1 -0
  215. package/types/form/form.d.ts +25 -21
  216. package/types/form/form.d.ts.map +1 -0
  217. package/types/form/index.d.ts +2 -1
  218. package/types/form/index.d.ts.map +1 -0
  219. package/types/graphql-request-client.d.ts +112 -105
  220. package/types/graphql-request-client.d.ts.map +1 -0
  221. package/types/i18n/dictionary-service.d.ts +135 -131
  222. package/types/i18n/dictionary-service.d.ts.map +1 -0
  223. package/types/i18n/index.d.ts +3 -2
  224. package/types/i18n/index.d.ts.map +1 -0
  225. package/types/i18n/utils.d.ts +9 -7
  226. package/types/i18n/utils.d.ts.map +1 -0
  227. package/types/index.d.ts +13 -12
  228. package/types/index.d.ts.map +1 -0
  229. package/types/layout/content-styles.d.ts +20 -18
  230. package/types/layout/content-styles.d.ts.map +1 -0
  231. package/types/layout/index.d.ts +6 -5
  232. package/types/layout/index.d.ts.map +1 -0
  233. package/types/layout/layout-service.d.ts +45 -35
  234. package/types/layout/layout-service.d.ts.map +1 -0
  235. package/types/layout/models.d.ts +174 -151
  236. package/types/layout/models.d.ts.map +1 -0
  237. package/types/layout/themes.d.ts +13 -11
  238. package/types/layout/themes.d.ts.map +1 -0
  239. package/types/layout/utils.d.ts +56 -41
  240. package/types/layout/utils.d.ts.map +1 -0
  241. package/types/media/index.d.ts +3 -2
  242. package/types/media/index.d.ts.map +1 -0
  243. package/types/media/media-api.d.ts +60 -55
  244. package/types/media/media-api.d.ts.map +1 -0
  245. package/types/models.d.ts +94 -84
  246. package/types/models.d.ts.map +1 -0
  247. package/types/native-fetcher.d.ts +124 -114
  248. package/types/native-fetcher.d.ts.map +1 -0
  249. package/types/personalize/index.d.ts +4 -3
  250. package/types/personalize/index.d.ts.map +1 -0
  251. package/types/personalize/layout-personalizer.d.ts +29 -27
  252. package/types/personalize/layout-personalizer.d.ts.map +1 -0
  253. package/types/personalize/personalize-service.d.ts +90 -80
  254. package/types/personalize/personalize-service.d.ts.map +1 -0
  255. package/types/personalize/utils.d.ts +78 -69
  256. package/types/personalize/utils.d.ts.map +1 -0
  257. package/types/retries.d.ts +26 -24
  258. package/types/retries.d.ts.map +1 -0
  259. package/types/site/error-pages-service.d.ts +64 -57
  260. package/types/site/error-pages-service.d.ts.map +1 -0
  261. package/types/site/index.d.ts +10 -9
  262. package/types/site/index.d.ts.map +1 -0
  263. package/types/site/models.d.ts +23 -18
  264. package/types/site/models.d.ts.map +1 -0
  265. package/types/site/redirects-service.d.ts +92 -69
  266. package/types/site/redirects-service.d.ts.map +1 -0
  267. package/types/site/robots-service.d.ts +57 -50
  268. package/types/site/robots-service.d.ts.map +1 -0
  269. package/types/site/site-resolver.d.ts +28 -26
  270. package/types/site/site-resolver.d.ts.map +1 -0
  271. package/types/site/siteinfo-service.d.ts +65 -52
  272. package/types/site/siteinfo-service.d.ts.map +1 -0
  273. package/types/site/sitemap-xml-service.d.ts +63 -56
  274. package/types/site/sitemap-xml-service.d.ts.map +1 -0
  275. package/types/site/sitepath-service.d.ts +137 -134
  276. package/types/site/sitepath-service.d.ts.map +1 -0
  277. package/types/site/utils.d.ts +41 -28
  278. package/types/site/utils.d.ts.map +1 -0
  279. package/types/sitecore-service-base.d.ts +31 -30
  280. package/types/sitecore-service-base.d.ts.map +1 -0
  281. package/types/tools/auth/flow.d.ts +29 -27
  282. package/types/tools/auth/flow.d.ts.map +1 -0
  283. package/types/tools/auth/index.d.ts +2 -1
  284. package/types/tools/auth/index.d.ts.map +1 -0
  285. package/types/tools/auth/models.d.ts +35 -33
  286. package/types/tools/auth/models.d.ts.map +1 -0
  287. package/types/tools/auth/tenant-store.d.ts +12 -11
  288. package/types/tools/auth/tenant-store.d.ts.map +1 -0
  289. package/types/tools/codegen/component-generation.d.ts +50 -47
  290. package/types/tools/codegen/component-generation.d.ts.map +1 -0
  291. package/types/tools/codegen/extract-files.d.ts +24 -22
  292. package/types/tools/codegen/extract-files.d.ts.map +1 -0
  293. package/types/tools/codegen/import-map.d.ts +103 -70
  294. package/types/tools/codegen/import-map.d.ts.map +1 -0
  295. package/types/tools/codegen/utils.d.ts +76 -75
  296. package/types/tools/codegen/utils.d.ts.map +1 -0
  297. package/types/tools/generate-map.d.ts +36 -26
  298. package/types/tools/generate-map.d.ts.map +1 -0
  299. package/types/tools/generateMetadata.d.ts +24 -22
  300. package/types/tools/generateMetadata.d.ts.map +1 -0
  301. package/types/tools/generateSites.d.ts +25 -22
  302. package/types/tools/generateSites.d.ts.map +1 -0
  303. package/types/tools/index.d.ts +22 -20
  304. package/types/tools/index.d.ts.map +1 -0
  305. package/types/tools/scaffold.d.ts +27 -25
  306. package/types/tools/scaffold.d.ts.map +1 -0
  307. package/types/tools/templating/components.d.ts +104 -103
  308. package/types/tools/templating/components.d.ts.map +1 -0
  309. package/types/tools/templating/index.d.ts +4 -3
  310. package/types/tools/templating/index.d.ts.map +1 -0
  311. package/types/tools/templating/plugins.d.ts +71 -67
  312. package/types/tools/templating/plugins.d.ts.map +1 -0
  313. package/types/tools/templating/utils.d.ts +42 -40
  314. package/types/tools/templating/utils.d.ts.map +1 -0
  315. package/types/utils/ensurePath.d.ts +7 -6
  316. package/types/utils/ensurePath.d.ts.map +1 -0
  317. package/types/utils/env.d.ts +9 -7
  318. package/types/utils/env.d.ts.map +1 -0
  319. package/types/utils/globalCache.d.ts +37 -0
  320. package/types/utils/globalCache.d.ts.map +1 -0
  321. package/types/utils/index.d.ts +5 -3
  322. package/types/utils/index.d.ts.map +1 -0
  323. package/types/utils/is-server.d.ts +8 -6
  324. package/types/utils/is-server.d.ts.map +1 -0
  325. package/types/utils/normalize-url.d.ts +2 -1
  326. package/types/utils/normalize-url.d.ts.map +1 -0
  327. package/types/utils/timeout-promise.d.ts +18 -17
  328. package/types/utils/timeout-promise.d.ts.map +1 -0
  329. package/types/utils/utils.d.ts +104 -79
  330. package/types/utils/utils.d.ts.map +1 -0
  331. package/client.js +0 -1
  332. package/codegen.js +0 -1
  333. package/config-cli.js +0 -1
  334. package/config.js +0 -1
  335. package/editing.js +0 -1
  336. package/i18n.js +0 -1
  337. package/layout.js +0 -1
  338. package/media.js +0 -1
  339. package/personalize.js +0 -1
  340. package/site.js +0 -1
  341. package/tools.js +0 -1
  342. package/utils.js +0 -1
@@ -1,70 +1,72 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- import { getItems } from './utils';
4
- /**
5
- * Identifies the format of the module to be compiled
6
- */
7
- export var ModuleType;
8
- (function (ModuleType) {
9
- ModuleType[ModuleType["CJS"] = 0] = "CJS";
10
- ModuleType[ModuleType["ESM"] = 1] = "ESM";
11
- })(ModuleType || (ModuleType = {}));
12
- /**
13
- * Get list of plugins from @var path
14
- * Returns a list of plugins in the following format:
15
- * {
16
- * path: 'path/to/plugin/foo',
17
- * name: 'fooPlugin'
18
- * }
19
- * @example getPluginList('src/foo/plugins', 'Foo')
20
- * @param {object} definition plugin definition
21
- * @param {string} definition.path path to get plugin from
22
- * @param {string} definition.pluginName plugin name
23
- * @param {boolean} [definition.silent] whether to suppress console output
24
- */
25
- export function getPluginList({ path, pluginName, silent = false, }) {
26
- const plugins = getItems({
27
- path,
28
- resolveItem: (path, name) => ({
29
- path: `${path}/${name}`,
30
- name: `${name.replace(/-./g, (x) => x[1].toUpperCase())}Plugin`,
31
- }),
32
- cb: (name) => !silent && console.debug(`Registering ${pluginName} plugin ${name}`),
33
- });
34
- return plugins;
35
- }
36
- /**
37
- * Generates the plugins file and saves it to the filesystem.
38
- * By convention, we expect to find plugins under {pluginName}/plugins/** (subfolders are searched recursively).
39
- * generated file will be saved to @var {distPath} and will contain a list of plugins in the following format:
40
- * CJS: exports.fooPlugin = require('{pluginPath}');
41
- * ESM: export { fooPlugin } from '{pluginPath}';
42
- * @example generatePlugins({ distPath: 'src/temp/foo-plugins.js', rootPath: 'src/foo/plugins', moduleType: ModuleType.CJS })
43
- * @param {PluginDefinition} definition plugin definition
44
- */
45
- export function generatePlugins(definition) {
46
- const { rootPath, distPath, moduleType, relative = false, silent } = definition;
47
- const segments = rootPath.split('/');
48
- const pluginName = segments[segments.length - 2];
49
- const plugins = getPluginList({ path: rootPath, pluginName, silent });
50
- let fileContent = '';
51
- fileContent = plugins
52
- .map((plugin) => {
53
- const sourcePath = relative
54
- ? path.relative(path.dirname(distPath), plugin.path).replace(/\\/g, '/')
55
- : plugin.path;
56
- return moduleType === ModuleType.CJS
57
- ? `exports.${plugin.name} = require('${sourcePath}');`
58
- : `export { ${plugin.name} } from '${sourcePath}';`;
59
- })
60
- .join('\r\n')
61
- .concat('\r\n');
62
- if (!plugins.length) {
63
- fileContent = moduleType === ModuleType.CJS ? 'module.exports = {};\r\n' : 'export {};\r\n';
64
- }
65
- const filePath = path.resolve(distPath);
66
- !silent && console.log(`Writing ${pluginName} plugins to ${filePath}`);
67
- fs.writeFileSync(filePath, fileContent, {
68
- encoding: 'utf8',
69
- });
70
- }
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { getItems } from './utils';
4
+ /**
5
+ * Identifies the format of the module to be compiled
6
+ * @public
7
+ */
8
+ export var ModuleType;
9
+ (function (ModuleType) {
10
+ ModuleType[ModuleType["CJS"] = 0] = "CJS";
11
+ ModuleType[ModuleType["ESM"] = 1] = "ESM";
12
+ })(ModuleType || (ModuleType = {}));
13
+ /**
14
+ * Get list of plugins from @var path
15
+ * Returns a list of plugins in the following format:
16
+ * {
17
+ * path: 'path/to/plugin/foo',
18
+ * name: 'fooPlugin'
19
+ * }
20
+ * @example getPluginList('src/foo/plugins', 'Foo')
21
+ * @param {object} definition plugin definition
22
+ * @param {string} definition.path path to get plugin from
23
+ * @param {string} definition.pluginName plugin name
24
+ * @param {boolean} [definition.silent] whether to suppress console output
25
+ */
26
+ export function getPluginList({ path, pluginName, silent = false, }) {
27
+ const plugins = getItems({
28
+ path,
29
+ resolveItem: (path, name) => ({
30
+ path: `${path}/${name}`,
31
+ name: `${name.replace(/-./g, (x) => x[1].toUpperCase())}Plugin`,
32
+ }),
33
+ cb: (name) => !silent && console.debug(`Registering ${pluginName} plugin ${name}`),
34
+ });
35
+ return plugins;
36
+ }
37
+ /**
38
+ * Generates the plugins file and saves it to the filesystem.
39
+ * By convention, we expect to find plugins under {pluginName}/plugins/** (subfolders are searched recursively).
40
+ * generated file will be saved to @var {distPath} and will contain a list of plugins in the following format:
41
+ * CJS: exports.fooPlugin = require('{pluginPath}');
42
+ * ESM: export { fooPlugin } from '{pluginPath}';
43
+ * @example generatePlugins({ distPath: 'src/temp/foo-plugins.js', rootPath: 'src/foo/plugins', moduleType: ModuleType.CJS })
44
+ * @param {PluginDefinition} definition plugin definition
45
+ * @public
46
+ */
47
+ export function generatePlugins(definition) {
48
+ const { rootPath, distPath, moduleType, relative = false, silent } = definition;
49
+ const segments = rootPath.split('/');
50
+ const pluginName = segments[segments.length - 2];
51
+ const plugins = getPluginList({ path: rootPath, pluginName, silent });
52
+ let fileContent = '';
53
+ fileContent = plugins
54
+ .map((plugin) => {
55
+ const sourcePath = relative
56
+ ? path.relative(path.dirname(distPath), plugin.path).replace(/\\/g, '/')
57
+ : plugin.path;
58
+ return moduleType === ModuleType.CJS
59
+ ? `exports.${plugin.name} = require('${sourcePath}');`
60
+ : `export { ${plugin.name} } from '${sourcePath}';`;
61
+ })
62
+ .join('\r\n')
63
+ .concat('\r\n');
64
+ if (!plugins.length) {
65
+ fileContent = moduleType === ModuleType.CJS ? 'module.exports = {};\r\n' : 'export {};\r\n';
66
+ }
67
+ const filePath = path.resolve(distPath);
68
+ !silent && console.log(`Writing ${pluginName} plugins to ${filePath}`);
69
+ fs.writeFileSync(filePath, fileContent, {
70
+ encoding: 'utf8',
71
+ });
72
+ }
@@ -1,58 +1,59 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- /**
4
- * Compares two paths to determine if they match.
5
- * @param {string} itemPath base path to compare against, can be absolute or relative
6
- * @param {string} compare comparer, can be relate, absolute or regex string
7
- * @returns true if paths match, false otherwise
8
- */
9
- export const matchPath = (itemPath, compare) => {
10
- if (compare === itemPath ||
11
- path.join(process.cwd(), itemPath) === compare ||
12
- itemPath === path.join(process.cwd(), compare) ||
13
- new RegExp(compare).test(itemPath)) {
14
- return true;
15
- }
16
- return false;
17
- };
18
- /**
19
- * Using @var path find all files and generate output using @var resolveItem function for each file
20
- * Can be used to generate list of components, templates, etc.
21
- * @param {GetItemsSettings} settings
22
- * @returns {Item[]} list of items
23
- */
24
- export function getItems(settings) {
25
- const { recursive = true, path, resolveItem, cb, fileFormat = new RegExp(/(.+)(?<!\.d)\.[jt]sx?$/), exclude, } = settings;
26
- const items = [];
27
- const folders = [];
28
- if (!fs.existsSync(path))
29
- return [];
30
- if (exclude) {
31
- for (const exclusion of exclude) {
32
- if (matchPath(path, exclusion))
33
- return [];
34
- }
35
- }
36
- fs.readdirSync(path, { withFileTypes: true }).forEach((item) => {
37
- if (item.isDirectory()) {
38
- folders.push(item);
39
- }
40
- if (fileFormat.test(item.name)) {
41
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
42
- const name = item.name.match(fileFormat)[1];
43
- items.push(resolveItem(path, name));
44
- cb && cb(name);
45
- }
46
- });
47
- for (const folder of folders) {
48
- recursive
49
- ? items.push(...getItems({
50
- path: `${path}/${folder.name}`,
51
- resolveItem,
52
- cb,
53
- fileFormat,
54
- }))
55
- : items.push(resolveItem(`${path}/${folder.name}`, folder.name));
56
- }
57
- return items;
58
- }
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ /**
4
+ * Compares two paths to determine if they match.
5
+ * @param {string} itemPath base path to compare against, can be absolute or relative
6
+ * @param {string} compare comparer, can be relate, absolute or regex string
7
+ * @returns true if paths match, false otherwise
8
+ * @public
9
+ */
10
+ export const matchPath = (itemPath, compare) => {
11
+ if (compare === itemPath ||
12
+ path.join(process.cwd(), itemPath) === compare ||
13
+ itemPath === path.join(process.cwd(), compare) ||
14
+ new RegExp(compare).test(itemPath)) {
15
+ return true;
16
+ }
17
+ return false;
18
+ };
19
+ /**
20
+ * Using @var path find all files and generate output using @var resolveItem function for each file
21
+ * Can be used to generate list of components, templates, etc.
22
+ * @param {GetItemsSettings} settings
23
+ * @returns {Item[]} list of items
24
+ */
25
+ export function getItems(settings) {
26
+ const { recursive = true, path, resolveItem, cb, fileFormat = new RegExp(/(.+)(?<!\.d)\.[jt]sx?$/), exclude, } = settings;
27
+ const items = [];
28
+ const folders = [];
29
+ if (!fs.existsSync(path))
30
+ return [];
31
+ if (exclude) {
32
+ for (const exclusion of exclude) {
33
+ if (matchPath(path, exclusion))
34
+ return [];
35
+ }
36
+ }
37
+ fs.readdirSync(path, { withFileTypes: true }).forEach((item) => {
38
+ if (item.isDirectory()) {
39
+ folders.push(item);
40
+ }
41
+ if (fileFormat.test(item.name)) {
42
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
43
+ const name = item.name.match(fileFormat)[1];
44
+ items.push(resolveItem(path, name));
45
+ cb && cb(name);
46
+ }
47
+ });
48
+ for (const folder of folders) {
49
+ recursive
50
+ ? items.push(...getItems({
51
+ path: `${path}/${folder.name}`,
52
+ resolveItem,
53
+ cb,
54
+ fileFormat,
55
+ }))
56
+ : items.push(resolveItem(`${path}/${folder.name}`, folder.name));
57
+ }
58
+ return items;
59
+ }
@@ -1,13 +1,13 @@
1
- import fs from 'fs';
2
- import path from 'path';
3
- /**
4
- * Ensures that the directory path for the given file path exists.
5
- * If the directory does not exist, it will be created recursively.
6
- * @param {string} filePath - The file path for which to ensure the directory exists.
7
- */
8
- export const ensurePathExists = (filePath) => {
9
- const outputDir = path.dirname(filePath);
10
- if (!fs.existsSync(outputDir)) {
11
- fs.mkdirSync(outputDir, { recursive: true });
12
- }
13
- };
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ /**
4
+ * Ensures that the directory path for the given file path exists.
5
+ * If the directory does not exist, it will be created recursively.
6
+ * @param {string} filePath - The file path for which to ensure the directory exists.
7
+ */
8
+ export const ensurePathExists = (filePath) => {
9
+ const outputDir = path.dirname(filePath);
10
+ if (!fs.existsSync(outputDir)) {
11
+ fs.mkdirSync(outputDir, { recursive: true });
12
+ }
13
+ };
@@ -1,23 +1,24 @@
1
- /**
2
- * Method to parse JSON-formatted environment variables
3
- * @param {string} envValue - can be undefined when providing values via process.env
4
- * @param {T} defaultValue - default value
5
- * @returns {T | string} parsed value
6
- */
7
- export const tryParseEnvValue = (envValue, defaultValue) => {
8
- if (!envValue) {
9
- return defaultValue;
10
- }
11
- if (envValue.startsWith('{') && envValue.endsWith('}')) {
12
- try {
13
- return JSON.parse(envValue);
14
- // eslint-disable-next-line no-unused-vars
15
- }
16
- catch (error) {
17
- console.warn('Parsing of env variable failed');
18
- console.warn(`Attempted to parse ${envValue}`);
19
- return defaultValue;
20
- }
21
- }
22
- return defaultValue;
23
- };
1
+ /**
2
+ * Method to parse JSON-formatted environment variables
3
+ * @param {string} envValue - can be undefined when providing values via process.env
4
+ * @param {T} defaultValue - default value
5
+ * @returns {T | string} parsed value
6
+ * @public
7
+ */
8
+ export const tryParseEnvValue = (envValue, defaultValue) => {
9
+ if (!envValue) {
10
+ return defaultValue;
11
+ }
12
+ if (envValue.startsWith('{') && envValue.endsWith('}')) {
13
+ try {
14
+ return JSON.parse(envValue);
15
+ // eslint-disable-next-line no-unused-vars
16
+ }
17
+ catch (error) {
18
+ console.warn('Parsing of env variable failed');
19
+ console.warn(`Attempted to parse ${envValue}`);
20
+ return defaultValue;
21
+ }
22
+ }
23
+ return defaultValue;
24
+ };
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Stores a value in the global cache under the specified key.
3
+ * - Initializes the cache object on `globalThis` if it does not exist.
4
+ * - Overwrites any existing value for the given key.
5
+ * @param {string} key - The cache key to set.
6
+ * @param {unknown} data - The value to store in the cache.
7
+ * @internal
8
+ */
9
+ export function setCache(key, data) {
10
+ if (!globalThis.__dlCache) {
11
+ globalThis.__dlCache = {};
12
+ }
13
+ globalThis.__dlCache[key] = data;
14
+ }
15
+ /**
16
+ * Retrieves a value from the global cache by key.
17
+ * - The cache is stored on `globalThis`
18
+ * @param {string} key - The cache key to retrieve and remove.
19
+ * @returns {T} - The cached value if present, otherwise undefined.
20
+ * @internal
21
+ */
22
+ export function getCache(key) {
23
+ const cache = globalThis.__dlCache;
24
+ return cache === null || cache === void 0 ? void 0 : cache[key];
25
+ }
26
+ /**
27
+ * Retrieves a value from the global cache by key and removes it from the cache.
28
+ * - The cache is stored on `globalThis`
29
+ * @param {string} key - The cache key to retrieve and remove.
30
+ * @returns {T} - The cached value if present, otherwise undefined.
31
+ * @internal
32
+ */
33
+ export function getCacheAndClean(key) {
34
+ const cache = globalThis.__dlCache;
35
+ const data = cache === null || cache === void 0 ? void 0 : cache[key];
36
+ cache === null || cache === void 0 ? true : delete cache[key];
37
+ return data;
38
+ }
39
+ /**
40
+ * Determines whether a cached value exists for the provided key
41
+ * - The cache is stored on `globalThis`
42
+ * @param {string} key - The cache key to test for existence.
43
+ * @returns {boolean} - true if a value is present for the given key; otherwise false.
44
+ * @internal
45
+ */
46
+ export function hasCache(key) {
47
+ const cache = globalThis.__dlCache;
48
+ return (cache === null || cache === void 0 ? void 0 : cache[key]) !== undefined;
49
+ }
@@ -1,3 +1,4 @@
1
- export { default as isServer } from './is-server';
2
- export { resolveUrl, isAbsoluteUrl, isTimeoutError, enforceCors, getEnforcedCorsHeaders, getAllowedOriginsFromEnv, isRegexOrUrl, areURLSearchParamsEqual, escapeNonSpecialQuestionMarks, mergeURLSearchParams, } from './utils';
3
- export { tryParseEnvValue } from './env';
1
+ export { default as isServer } from './is-server';
2
+ export { resolveUrl, isAbsoluteUrl, isTimeoutError, enforceCors, getEnforcedCorsHeaders, getAllowedOriginsFromEnv, isRegexOrUrl, areURLSearchParamsEqual, escapeNonSpecialQuestionMarks, mergeURLSearchParams, } from './utils';
3
+ export { hasCache, getCache, getCacheAndClean, setCache } from './globalCache';
4
+ export { tryParseEnvValue } from './env';
@@ -1,8 +1,9 @@
1
- /**
2
- * Determines whether the current execution context is server-side
3
- * @returns true if executing server-side
4
- */
5
- function isServer() {
6
- return !(typeof window !== 'undefined' && window.document);
7
- }
8
- export default isServer;
1
+ /**
2
+ * Determines whether the current execution context is server-side
3
+ * @returns true if executing server-side
4
+ * @public
5
+ */
6
+ function isServer() {
7
+ return !(typeof window !== 'undefined' && window.document);
8
+ }
9
+ export default isServer;
@@ -1 +1 @@
1
- export const normalizeUrl = (url) => (url.endsWith('/') ? url.slice(0, -1) : url);
1
+ export const normalizeUrl = (url) => (url.endsWith('/') ? url.slice(0, -1) : url);
@@ -1,28 +1,28 @@
1
- /**
2
- * A helper to assign timeouts to fetch or other promises
3
- * Useful in nextjs middleware until fetch.signal is fully supported by Vercel edge functions
4
- */
5
- export default class TimeoutPromise {
6
- constructor(timeout) {
7
- this.timeout = timeout;
8
- this.timeoutId = undefined;
9
- }
10
- /**
11
- * Creates a timeout promise
12
- */
13
- get start() {
14
- return new Promise((_, reject) => {
15
- this.timeoutId = setTimeout(() => {
16
- const abortError = new Error(`Request timed out, timeout of ${this.timeout}ms is exceeded`);
17
- abortError.name = 'AbortError';
18
- reject(abortError);
19
- }, this.timeout);
20
- });
21
- }
22
- /**
23
- * Clears the timeout from timeout promise
24
- */
25
- clear() {
26
- this.timeoutId && clearTimeout(this.timeoutId);
27
- }
28
- }
1
+ /**
2
+ * A helper to assign timeouts to fetch or other promises
3
+ * Useful in nextjs middleware until fetch.signal is fully supported by Vercel edge functions
4
+ */
5
+ export default class TimeoutPromise {
6
+ constructor(timeout) {
7
+ this.timeout = timeout;
8
+ this.timeoutId = undefined;
9
+ }
10
+ /**
11
+ * Creates a timeout promise
12
+ */
13
+ get start() {
14
+ return new Promise((_, reject) => {
15
+ this.timeoutId = setTimeout(() => {
16
+ const abortError = new Error(`Request timed out, timeout of ${this.timeout}ms is exceeded`);
17
+ abortError.name = 'AbortError';
18
+ reject(abortError);
19
+ }, this.timeout);
20
+ });
21
+ }
22
+ /**
23
+ * Clears the timeout from timeout promise
24
+ */
25
+ clear() {
26
+ this.timeoutId && clearTimeout(this.timeoutId);
27
+ }
28
+ }