@automattic/data-stores 3.1.1 → 3.2.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.
Files changed (318) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/README.md +10 -9
  3. package/dist/cjs/add-ons/hooks/use-add-on-prices.js +3 -3
  4. package/dist/cjs/add-ons/hooks/use-add-on-prices.js.map +1 -1
  5. package/dist/cjs/add-ons/icons/custom-design.js +1 -1
  6. package/dist/cjs/add-ons/icons/custom-design.js.map +1 -1
  7. package/dist/cjs/add-ons/icons/unlimited-themes.js +1 -1
  8. package/dist/cjs/add-ons/icons/unlimited-themes.js.map +1 -1
  9. package/dist/cjs/contextual-help/admin-sections.js +2 -2
  10. package/dist/cjs/contextual-help/admin-sections.js.map +1 -1
  11. package/dist/cjs/help-center/actions.js +89 -62
  12. package/dist/cjs/help-center/actions.js.map +1 -1
  13. package/dist/cjs/help-center/index.js +13 -12
  14. package/dist/cjs/help-center/index.js.map +1 -1
  15. package/dist/cjs/help-center/reducer.js +32 -16
  16. package/dist/cjs/help-center/reducer.js.map +1 -1
  17. package/dist/cjs/help-center/resolvers.js +6 -1
  18. package/dist/cjs/help-center/resolvers.js.map +1 -1
  19. package/dist/cjs/help-center/selectors.js +11 -7
  20. package/dist/cjs/help-center/selectors.js.map +1 -1
  21. package/dist/cjs/index.js +3 -6
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/onboard/actions.js +10 -10
  24. package/dist/cjs/onboard/actions.js.map +1 -1
  25. package/dist/cjs/onboard/index.js +0 -1
  26. package/dist/cjs/onboard/index.js.map +1 -1
  27. package/dist/cjs/onboard/reducer.js +18 -16
  28. package/dist/cjs/onboard/reducer.js.map +1 -1
  29. package/dist/cjs/onboard/selectors.js +5 -5
  30. package/dist/cjs/onboard/selectors.js.map +1 -1
  31. package/dist/cjs/plans/queries/use-plans.js +20 -1
  32. package/dist/cjs/plans/queries/use-plans.js.map +1 -1
  33. package/dist/cjs/plans/resolvers.js +4 -4
  34. package/dist/cjs/plans/resolvers.js.map +1 -1
  35. package/dist/cjs/purchases/lib/assembler.js +7 -13
  36. package/dist/cjs/purchases/lib/assembler.js.map +1 -1
  37. package/dist/cjs/purchases/queries/lib/use-query-keys-factory.js +1 -0
  38. package/dist/cjs/purchases/queries/lib/use-query-keys-factory.js.map +1 -1
  39. package/dist/cjs/purchases/queries/use-get-jetpack-transferred-license-purchases.js +33 -0
  40. package/dist/cjs/purchases/queries/use-get-jetpack-transferred-license-purchases.js.map +1 -0
  41. package/dist/cjs/queries/use-launchpad.js +3 -2
  42. package/dist/cjs/queries/use-launchpad.js.map +1 -1
  43. package/dist/cjs/queries/use-site-domains-query.js.map +1 -1
  44. package/dist/cjs/queries/use-site-intent.js.map +1 -1
  45. package/dist/cjs/reader/mutations/use-site-subscribe-mutation.js +1 -1
  46. package/dist/cjs/reader/mutations/use-site-subscribe-mutation.js.map +1 -1
  47. package/dist/cjs/reader/mutations/use-site-unsubscribe-mutation.js +4 -0
  48. package/dist/cjs/reader/mutations/use-site-unsubscribe-mutation.js.map +1 -1
  49. package/dist/cjs/site/actions.js +1 -1
  50. package/dist/cjs/site/actions.js.map +1 -1
  51. package/dist/cjs/site/constants.js +2 -1
  52. package/dist/cjs/site/constants.js.map +1 -1
  53. package/dist/cjs/site/types.js.map +1 -1
  54. package/dist/esm/add-ons/hooks/use-add-on-prices.js +1 -1
  55. package/dist/esm/add-ons/hooks/use-add-on-prices.js.map +1 -1
  56. package/dist/esm/add-ons/icons/custom-design.js +2 -2
  57. package/dist/esm/add-ons/icons/custom-design.js.map +1 -1
  58. package/dist/esm/add-ons/icons/unlimited-themes.js +2 -2
  59. package/dist/esm/add-ons/icons/unlimited-themes.js.map +1 -1
  60. package/dist/esm/contextual-help/admin-sections.js +2 -2
  61. package/dist/esm/contextual-help/admin-sections.js.map +1 -1
  62. package/dist/esm/help-center/actions.js +81 -57
  63. package/dist/esm/help-center/actions.js.map +1 -1
  64. package/dist/esm/help-center/index.js +11 -10
  65. package/dist/esm/help-center/index.js.map +1 -1
  66. package/dist/esm/help-center/reducer.js +32 -16
  67. package/dist/esm/help-center/reducer.js.map +1 -1
  68. package/dist/esm/help-center/resolvers.js +6 -1
  69. package/dist/esm/help-center/resolvers.js.map +1 -1
  70. package/dist/esm/help-center/selectors.js +5 -3
  71. package/dist/esm/help-center/selectors.js.map +1 -1
  72. package/dist/esm/index.js +2 -4
  73. package/dist/esm/index.js.map +1 -1
  74. package/dist/esm/onboard/actions.js +7 -7
  75. package/dist/esm/onboard/actions.js.map +1 -1
  76. package/dist/esm/onboard/index.js +0 -1
  77. package/dist/esm/onboard/index.js.map +1 -1
  78. package/dist/esm/onboard/reducer.js +15 -15
  79. package/dist/esm/onboard/reducer.js.map +1 -1
  80. package/dist/esm/onboard/selectors.js +2 -2
  81. package/dist/esm/onboard/selectors.js.map +1 -1
  82. package/dist/esm/plans/queries/use-plans.js +20 -1
  83. package/dist/esm/plans/queries/use-plans.js.map +1 -1
  84. package/dist/esm/plans/resolvers.js +1 -1
  85. package/dist/esm/plans/resolvers.js.map +1 -1
  86. package/dist/esm/purchases/lib/assembler.js +7 -13
  87. package/dist/esm/purchases/lib/assembler.js.map +1 -1
  88. package/dist/esm/purchases/queries/lib/use-query-keys-factory.js +1 -0
  89. package/dist/esm/purchases/queries/lib/use-query-keys-factory.js.map +1 -1
  90. package/dist/esm/purchases/queries/use-get-jetpack-transferred-license-purchases.js +29 -0
  91. package/dist/esm/purchases/queries/use-get-jetpack-transferred-license-purchases.js.map +1 -0
  92. package/dist/esm/queries/use-launchpad.js +2 -2
  93. package/dist/esm/queries/use-launchpad.js.map +1 -1
  94. package/dist/esm/queries/use-site-domains-query.js.map +1 -1
  95. package/dist/esm/queries/use-site-intent.js.map +1 -1
  96. package/dist/esm/reader/mutations/use-site-subscribe-mutation.js +1 -1
  97. package/dist/esm/reader/mutations/use-site-subscribe-mutation.js.map +1 -1
  98. package/dist/esm/reader/mutations/use-site-unsubscribe-mutation.js +4 -0
  99. package/dist/esm/reader/mutations/use-site-unsubscribe-mutation.js.map +1 -1
  100. package/dist/esm/site/actions.js +1 -1
  101. package/dist/esm/site/actions.js.map +1 -1
  102. package/dist/esm/site/constants.js +1 -0
  103. package/dist/esm/site/constants.js.map +1 -1
  104. package/dist/esm/site/types.js.map +1 -1
  105. package/dist/tsconfig-cjs.tsbuildinfo +1 -1
  106. package/dist/tsconfig.tsbuildinfo +1 -1
  107. package/dist/types/add-ons/icons/custom-design.d.ts.map +1 -1
  108. package/dist/types/add-ons/icons/unlimited-themes.d.ts.map +1 -1
  109. package/dist/types/help-center/actions.d.ts +53 -30
  110. package/dist/types/help-center/actions.d.ts.map +1 -1
  111. package/dist/types/help-center/index.d.ts +1 -1
  112. package/dist/types/help-center/index.d.ts.map +1 -1
  113. package/dist/types/help-center/reducer.d.ts +14 -7
  114. package/dist/types/help-center/reducer.d.ts.map +1 -1
  115. package/dist/types/help-center/resolvers.d.ts +22 -3
  116. package/dist/types/help-center/resolvers.d.ts.map +1 -1
  117. package/dist/types/help-center/selectors.d.ts +8 -3
  118. package/dist/types/help-center/selectors.d.ts.map +1 -1
  119. package/dist/types/help-center/types.d.ts +3 -1
  120. package/dist/types/help-center/types.d.ts.map +1 -1
  121. package/dist/types/index.d.ts +478 -46
  122. package/dist/types/index.d.ts.map +1 -1
  123. package/dist/types/onboard/actions.d.ts +13 -24
  124. package/dist/types/onboard/actions.d.ts.map +1 -1
  125. package/dist/types/onboard/index.d.ts.map +1 -1
  126. package/dist/types/onboard/reducer.d.ts +7 -5
  127. package/dist/types/onboard/reducer.d.ts.map +1 -1
  128. package/dist/types/onboard/selectors.d.ts +6 -6
  129. package/dist/types/onboard/selectors.d.ts.map +1 -1
  130. package/dist/types/onboard/types.d.ts +1 -1
  131. package/dist/types/onboard/types.d.ts.map +1 -1
  132. package/dist/types/plans/queries/use-plans.d.ts.map +1 -1
  133. package/dist/types/purchases/lib/assembler.d.ts +3 -3
  134. package/dist/types/purchases/lib/assembler.d.ts.map +1 -1
  135. package/dist/types/purchases/queries/lib/use-query-keys-factory.d.ts +1 -0
  136. package/dist/types/purchases/queries/lib/use-query-keys-factory.d.ts.map +1 -1
  137. package/dist/types/purchases/queries/use-get-jetpack-transferred-license-purchases.d.ts +18 -0
  138. package/dist/types/purchases/queries/use-get-jetpack-transferred-license-purchases.d.ts.map +1 -0
  139. package/dist/types/purchases/types.d.ts +16 -106
  140. package/dist/types/purchases/types.d.ts.map +1 -1
  141. package/dist/types/queries/use-all-domains-query.d.ts +1 -1
  142. package/dist/types/queries/use-all-domains-query.d.ts.map +1 -1
  143. package/dist/types/queries/use-launchpad.d.ts +1 -0
  144. package/dist/types/queries/use-launchpad.d.ts.map +1 -1
  145. package/dist/types/queries/use-site-domains-query.d.ts +2 -1
  146. package/dist/types/queries/use-site-domains-query.d.ts.map +1 -1
  147. package/dist/types/queries/use-site-intent.d.ts +2 -1
  148. package/dist/types/queries/use-site-intent.d.ts.map +1 -1
  149. package/dist/types/queries/use-site-query.d.ts +1 -1
  150. package/dist/types/queries/use-site-query.d.ts.map +1 -1
  151. package/dist/types/reader/index.d.ts +475 -41
  152. package/dist/types/reader/index.d.ts.map +1 -1
  153. package/dist/types/reader/mutations/use-site-subscribe-mutation.d.ts +1 -1
  154. package/dist/types/reader/mutations/use-site-subscribe-mutation.d.ts.map +1 -1
  155. package/dist/types/reader/mutations/use-site-unsubscribe-mutation.d.ts +2 -0
  156. package/dist/types/reader/mutations/use-site-unsubscribe-mutation.d.ts.map +1 -1
  157. package/dist/types/reader/queries/use-pending-post-subscriptions-query.d.ts +75 -7
  158. package/dist/types/reader/queries/use-pending-post-subscriptions-query.d.ts.map +1 -1
  159. package/dist/types/reader/queries/use-pending-site-subscriptions-query.d.ts +75 -7
  160. package/dist/types/reader/queries/use-pending-site-subscriptions-query.d.ts.map +1 -1
  161. package/dist/types/reader/queries/use-post-subscriptions-query.d.ts +143 -13
  162. package/dist/types/reader/queries/use-post-subscriptions-query.d.ts.map +1 -1
  163. package/dist/types/reader/queries/use-site-subscriptions-query.d.ts +103 -13
  164. package/dist/types/reader/queries/use-site-subscriptions-query.d.ts.map +1 -1
  165. package/dist/types/site/actions.d.ts.map +1 -1
  166. package/dist/types/site/constants.d.ts +1 -0
  167. package/dist/types/site/constants.d.ts.map +1 -1
  168. package/dist/types/site/types.d.ts +12 -2
  169. package/dist/types/site/types.d.ts.map +1 -1
  170. package/dist/types/user/actions.d.ts +1 -1
  171. package/dist/types/user/reducer.d.ts +1 -1
  172. package/dist/types/user/resolvers.d.ts +2 -2
  173. package/dist/types/user/selectors.d.ts +2 -2
  174. package/dist/types/user/selectors.d.ts.map +1 -1
  175. package/dist/types/user/types.d.ts +2 -31
  176. package/dist/types/user/types.d.ts.map +1 -1
  177. package/package.json +28 -21
  178. package/src/add-ons/hooks/use-add-on-prices.ts +1 -1
  179. package/src/add-ons/icons/custom-design.tsx +3 -11
  180. package/src/add-ons/icons/unlimited-themes.tsx +3 -12
  181. package/src/contextual-help/admin-sections.ts +2 -2
  182. package/src/help-center/actions.ts +101 -65
  183. package/src/help-center/index.ts +10 -8
  184. package/src/help-center/reducer.ts +45 -24
  185. package/src/help-center/resolvers.ts +20 -3
  186. package/src/help-center/selectors.ts +6 -3
  187. package/src/help-center/types.ts +3 -1
  188. package/src/index.ts +6 -6
  189. package/src/newsletter-categories/test/index.tsx +5 -7
  190. package/src/onboard/actions.ts +11 -24
  191. package/src/onboard/index.ts +0 -1
  192. package/src/onboard/reducer.ts +18 -19
  193. package/src/onboard/selectors.ts +2 -2
  194. package/src/onboard/types.ts +1 -1
  195. package/src/plans/queries/use-plans.ts +29 -1
  196. package/src/plans/resolvers.ts +1 -1
  197. package/src/purchases/lib/assembler.ts +11 -21
  198. package/src/purchases/queries/lib/use-query-keys-factory.ts +1 -0
  199. package/src/purchases/queries/use-get-jetpack-transferred-license-purchases.tsx +43 -0
  200. package/src/purchases/types.ts +21 -113
  201. package/src/queries/use-launchpad.ts +2 -2
  202. package/src/queries/use-site-domains-query.ts +1 -0
  203. package/src/queries/use-site-intent.ts +2 -1
  204. package/src/reader/mutations/use-site-subscribe-mutation.ts +2 -2
  205. package/src/reader/mutations/use-site-unsubscribe-mutation.ts +7 -0
  206. package/src/reader/queries/test/use-read-feed-search-query.tsx +1 -1
  207. package/src/site/actions.ts +1 -1
  208. package/src/site/constants.ts +1 -0
  209. package/src/site/test/selectors.ts +0 -1
  210. package/src/site/types.ts +12 -2
  211. package/src/user/types.ts +2 -36
  212. package/dist/cjs/analyzer/actions.js +0 -38
  213. package/dist/cjs/analyzer/actions.js.map +0 -1
  214. package/dist/cjs/analyzer/constants.js +0 -5
  215. package/dist/cjs/analyzer/constants.js.map +0 -1
  216. package/dist/cjs/analyzer/index.js +0 -19
  217. package/dist/cjs/analyzer/index.js.map +0 -1
  218. package/dist/cjs/analyzer/reducers.js +0 -27
  219. package/dist/cjs/analyzer/reducers.js.map +0 -1
  220. package/dist/cjs/analyzer/selectors.js +0 -15
  221. package/dist/cjs/analyzer/selectors.js.map +0 -1
  222. package/dist/cjs/analyzer/types.js +0 -3
  223. package/dist/cjs/analyzer/types.js.map +0 -1
  224. package/dist/cjs/domain-suggestions/actions.js +0 -33
  225. package/dist/cjs/domain-suggestions/actions.js.map +0 -1
  226. package/dist/cjs/domain-suggestions/constants.js +0 -12
  227. package/dist/cjs/domain-suggestions/constants.js.map +0 -1
  228. package/dist/cjs/domain-suggestions/index.js +0 -25
  229. package/dist/cjs/domain-suggestions/index.js.map +0 -1
  230. package/dist/cjs/domain-suggestions/queries.js +0 -78
  231. package/dist/cjs/domain-suggestions/queries.js.map +0 -1
  232. package/dist/cjs/domain-suggestions/reducer.js +0 -65
  233. package/dist/cjs/domain-suggestions/reducer.js.map +0 -1
  234. package/dist/cjs/domain-suggestions/resolvers.js +0 -91
  235. package/dist/cjs/domain-suggestions/resolvers.js.map +0 -1
  236. package/dist/cjs/domain-suggestions/selectors.js +0 -58
  237. package/dist/cjs/domain-suggestions/selectors.js.map +0 -1
  238. package/dist/cjs/domain-suggestions/types.js +0 -3
  239. package/dist/cjs/domain-suggestions/types.js.map +0 -1
  240. package/dist/cjs/domain-suggestions/utils.js +0 -47
  241. package/dist/cjs/domain-suggestions/utils.js.map +0 -1
  242. package/dist/esm/analyzer/actions.js +0 -35
  243. package/dist/esm/analyzer/actions.js.map +0 -1
  244. package/dist/esm/analyzer/constants.js +0 -2
  245. package/dist/esm/analyzer/constants.js.map +0 -1
  246. package/dist/esm/analyzer/index.js +0 -15
  247. package/dist/esm/analyzer/index.js.map +0 -1
  248. package/dist/esm/analyzer/reducers.js +0 -25
  249. package/dist/esm/analyzer/reducers.js.map +0 -1
  250. package/dist/esm/analyzer/selectors.js +0 -9
  251. package/dist/esm/analyzer/selectors.js.map +0 -1
  252. package/dist/esm/analyzer/types.js +0 -2
  253. package/dist/esm/analyzer/types.js.map +0 -1
  254. package/dist/esm/domain-suggestions/actions.js +0 -25
  255. package/dist/esm/domain-suggestions/actions.js.map +0 -1
  256. package/dist/esm/domain-suggestions/constants.js +0 -9
  257. package/dist/esm/domain-suggestions/constants.js.map +0 -1
  258. package/dist/esm/domain-suggestions/index.js +0 -20
  259. package/dist/esm/domain-suggestions/index.js.map +0 -1
  260. package/dist/esm/domain-suggestions/queries.js +0 -72
  261. package/dist/esm/domain-suggestions/queries.js.map +0 -1
  262. package/dist/esm/domain-suggestions/reducer.js +0 -61
  263. package/dist/esm/domain-suggestions/reducer.js.map +0 -1
  264. package/dist/esm/domain-suggestions/resolvers.js +0 -84
  265. package/dist/esm/domain-suggestions/resolvers.js.map +0 -1
  266. package/dist/esm/domain-suggestions/selectors.js +0 -47
  267. package/dist/esm/domain-suggestions/selectors.js.map +0 -1
  268. package/dist/esm/domain-suggestions/types.js +0 -2
  269. package/dist/esm/domain-suggestions/types.js.map +0 -1
  270. package/dist/esm/domain-suggestions/utils.js +0 -41
  271. package/dist/esm/domain-suggestions/utils.js.map +0 -1
  272. package/dist/types/analyzer/actions.d.ts +0 -37
  273. package/dist/types/analyzer/actions.d.ts.map +0 -1
  274. package/dist/types/analyzer/constants.d.ts +0 -2
  275. package/dist/types/analyzer/constants.d.ts.map +0 -1
  276. package/dist/types/analyzer/index.d.ts +0 -38
  277. package/dist/types/analyzer/index.d.ts.map +0 -1
  278. package/dist/types/analyzer/reducers.d.ts +0 -11
  279. package/dist/types/analyzer/reducers.d.ts.map +0 -1
  280. package/dist/types/analyzer/selectors.d.ts +0 -7
  281. package/dist/types/analyzer/selectors.d.ts.map +0 -1
  282. package/dist/types/analyzer/types.d.ts +0 -35
  283. package/dist/types/analyzer/types.d.ts.map +0 -1
  284. package/dist/types/domain-suggestions/actions.d.ts +0 -27
  285. package/dist/types/domain-suggestions/actions.d.ts.map +0 -1
  286. package/dist/types/domain-suggestions/constants.d.ts +0 -8
  287. package/dist/types/domain-suggestions/constants.d.ts.map +0 -1
  288. package/dist/types/domain-suggestions/index.d.ts +0 -10
  289. package/dist/types/domain-suggestions/index.d.ts.map +0 -1
  290. package/dist/types/domain-suggestions/queries.d.ts +0 -323
  291. package/dist/types/domain-suggestions/queries.d.ts.map +0 -1
  292. package/dist/types/domain-suggestions/reducer.d.ts +0 -16
  293. package/dist/types/domain-suggestions/reducer.d.ts.map +0 -1
  294. package/dist/types/domain-suggestions/resolvers.d.ts +0 -39
  295. package/dist/types/domain-suggestions/resolvers.d.ts.map +0 -1
  296. package/dist/types/domain-suggestions/selectors.d.ts +0 -18
  297. package/dist/types/domain-suggestions/selectors.d.ts.map +0 -1
  298. package/dist/types/domain-suggestions/types.d.ts +0 -206
  299. package/dist/types/domain-suggestions/types.d.ts.map +0 -1
  300. package/dist/types/domain-suggestions/utils.d.ts +0 -23
  301. package/dist/types/domain-suggestions/utils.d.ts.map +0 -1
  302. package/src/analyzer/actions.ts +0 -49
  303. package/src/analyzer/constants.ts +0 -1
  304. package/src/analyzer/index.ts +0 -17
  305. package/src/analyzer/reducers.ts +0 -36
  306. package/src/analyzer/selectors.ts +0 -11
  307. package/src/analyzer/types.ts +0 -37
  308. package/src/domain-suggestions/actions.ts +0 -51
  309. package/src/domain-suggestions/constants.ts +0 -8
  310. package/src/domain-suggestions/index.ts +0 -22
  311. package/src/domain-suggestions/queries.ts +0 -85
  312. package/src/domain-suggestions/reducer.ts +0 -77
  313. package/src/domain-suggestions/resolvers.ts +0 -110
  314. package/src/domain-suggestions/selectors.ts +0 -86
  315. package/src/domain-suggestions/test/reducer.ts +0 -105
  316. package/src/domain-suggestions/test/selectors.ts +0 -127
  317. package/src/domain-suggestions/types.ts +0 -254
  318. package/src/domain-suggestions/utils.ts +0 -50
@@ -1,206 +0,0 @@
1
- import type { DataStatus } from './constants';
2
- export interface DomainSuggestionQuery {
3
- /**
4
- * True to include .blog subdomain suggestions
5
- * @example
6
- * example.photo.blog
7
- */
8
- include_dotblogsubdomain: boolean;
9
- /**
10
- * True to include WordPress.com subdomain suggestions
11
- * @example
12
- * example.wordpress.com
13
- */
14
- include_wordpressdotcom: boolean;
15
- /**
16
- * True to include domains registered with wpcom in the response
17
- */
18
- include_internal_move_eligible?: boolean;
19
- /**
20
- * Localizes domain results, e.g., price format
21
- */
22
- locale?: string;
23
- /**
24
- * True to only provide a wordpress.com subdomain
25
- * @example
26
- * example.wordpress.com
27
- */
28
- only_wordpressdotcom: boolean;
29
- /**
30
- * Desired number of results
31
- */
32
- quantity: number;
33
- /**
34
- * Domain search term
35
- */
36
- query: string;
37
- recommendation_context?: string;
38
- /**
39
- * Vendor
40
- */
41
- vendor: string;
42
- /**
43
- * The vertical id or slug
44
- */
45
- vertical?: string;
46
- /**
47
- * An array of tlds
48
- */
49
- tlds?: readonly string[];
50
- /**
51
- * Domain category slug
52
- */
53
- category_slug?: string;
54
- }
55
- export type DomainName = string;
56
- export interface DomainSuggestion {
57
- /**
58
- * The domain name
59
- * @example "example.com"
60
- */
61
- domain_name: DomainName;
62
- /**
63
- * Rendered formatted cost
64
- * @example "Free" or "€15.00"
65
- */
66
- cost: string;
67
- /**
68
- * Raw price
69
- * @example 40
70
- */
71
- raw_price: number;
72
- /**
73
- * Currency code
74
- * @example USD
75
- */
76
- currency_code: string;
77
- /**
78
- * Relevance as a percent: 0 <= relevance <= 1
79
- * @example 0.9
80
- */
81
- relevance?: number;
82
- /**
83
- * Whether the domain supports privacy
84
- */
85
- supports_privacy?: boolean;
86
- /**
87
- * The domain vendor
88
- */
89
- vendor?: string;
90
- /**
91
- * Reasons for suggestion the domain
92
- * @example [ "exact-match" ]
93
- */
94
- match_reasons?: readonly string[];
95
- /**
96
- * The product ID
97
- */
98
- product_id?: number;
99
- /**
100
- * The product slug
101
- */
102
- product_slug?: string;
103
- /**
104
- * Whether the domain is free
105
- */
106
- is_free?: boolean;
107
- /**
108
- * Whether the domain requires HSTS
109
- */
110
- hsts_required?: boolean;
111
- /**
112
- * Whether the domain requires to show the notice for .gay tld
113
- */
114
- is_dot_gay_notice_required?: boolean;
115
- /**
116
- * Whether the domain is unavailable
117
- */
118
- unavailable: boolean;
119
- isRecommended?: boolean;
120
- isBestAlternative?: boolean;
121
- is_premium?: boolean;
122
- }
123
- export interface DomainCategory {
124
- /**
125
- * The domain category title
126
- */
127
- title: string;
128
- /**
129
- * The domain category slug
130
- */
131
- slug: string;
132
- /**
133
- * The domain category tier
134
- */
135
- tier: number | null;
136
- }
137
- export interface DomainAvailability {
138
- /**
139
- * The domain name the availability was checked for.
140
- */
141
- domain_name: string;
142
- /**
143
- * The mappability status of the domain.
144
- */
145
- mappable: string;
146
- /**
147
- * The availability status of the domain.
148
- */
149
- status: string;
150
- /**
151
- * Whether the domain supports privacy.
152
- */
153
- supports_privacy: boolean;
154
- /**
155
- * ID of the product
156
- */
157
- product_id?: number;
158
- /**
159
- * The product slug
160
- */
161
- product_slug?: string;
162
- /**
163
- * Rendered cost with currency
164
- * @example "€15.00"
165
- */
166
- cost?: string;
167
- /**
168
- * Vendor
169
- */
170
- vendor?: string;
171
- /**
172
- * Whether the domain requires HSTS
173
- */
174
- hsts_required?: boolean;
175
- /**
176
- * Whether the domain requires to show the notice for .gay tld
177
- */
178
- is_dot_gay_notice_required?: boolean;
179
- }
180
- export type TimestampMS = ReturnType<typeof Date.now>;
181
- export type DomainSuggestions = Record<string, DomainSuggestion[] | undefined>;
182
- export interface DomainSuggestionState {
183
- /**
184
- * The state of the DomainSuggestions e.g. pending, failure etc
185
- */
186
- state: DataStatus;
187
- /**
188
- * Domain suggestion data typically returned from the API
189
- */
190
- data: DomainSuggestions;
191
- /**
192
- * Error message
193
- */
194
- errorMessage: string | null;
195
- /**
196
- * Timestamp from last updated attempt
197
- */
198
- lastUpdated: TimestampMS;
199
- /**
200
- * Pending timestamp
201
- */
202
- pendingSince: TimestampMS | undefined;
203
- }
204
- export type DomainAvailabilities = Record<string, DomainAvailability | undefined>;
205
- export type DomainSuggestionSelectorOptions = Partial<Exclude<DomainSuggestionQuery, 'query'>>;
206
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/domain-suggestions/types.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import type { DomainSuggestionQuery, DomainSuggestionSelectorOptions } from './types';
2
- /**
3
- * Stable transform to an object key for storage and access.
4
- */
5
- export declare const stringifyDomainQueryObject: (q: DomainSuggestionQuery) => string;
6
- /**
7
- * Formats the domain suggestion price according to 'format-currency' package rules
8
- * We use this for consistency in prices formats across plans and domains
9
- * @param price the domain suggestion raw price
10
- * @param currencyCode the currency code to be used when formatting price
11
- */
12
- export declare function getFormattedPrice(price: number, currencyCode: string): string;
13
- /**
14
- * Normalize domain query
15
- *
16
- * It's important to have a consistent, reproduceable representation of a domains query so that the result can be
17
- * stored and retrieved.
18
- * @param search Domain search string
19
- * @param queryOptions Optional paramaters for the query
20
- * @returns Normalized query object
21
- */
22
- export declare function normalizeDomainSuggestionQuery(search: string, queryOptions: DomainSuggestionSelectorOptions): DomainSuggestionQuery;
23
- //# sourceMappingURL=utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/domain-suggestions/utils.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,qBAAqB,EAAE,+BAA+B,EAAE,MAAM,SAAS,CAAC;AAEtF;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAAE,CAAE,CAAC,EAAE,qBAAqB,KAAM,MAClD,CAAC;AAExB;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAI,MAAM,CAI/E;AAED;;;;;;;;GAQG;AACH,wBAAgB,8BAA8B,CAC7C,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,+BAA+B,GAC3C,qBAAqB,CAevB"}
@@ -1,49 +0,0 @@
1
- import { wpcomRequest } from '../wpcom-request-controls';
2
- import { AnalyzeColorsResponse } from './types';
3
-
4
- export function createActions() {
5
- const colorsAnalyzeStart = ( url: string ) => ( {
6
- type: 'COLORS_ANALYZE_START' as const,
7
- url,
8
- } );
9
-
10
- const colorsAnalyzeSuccess = ( url: string, data: AnalyzeColorsResponse ) => ( {
11
- type: 'COLORS_ANALYZE_SUCCESS' as const,
12
- data: { url, colors: data.colors },
13
- } );
14
-
15
- const colorsAnalyzeFailed = ( url: string ) => ( {
16
- type: 'COLORS_ANALYZE_FAILED' as const,
17
- url,
18
- } );
19
-
20
- function* analyzeColors( url: string ) {
21
- yield colorsAnalyzeStart( url );
22
-
23
- try {
24
- const data: AnalyzeColorsResponse = yield wpcomRequest( {
25
- path: '/imports/url-analyzer/colors/?url=' + encodeURIComponent( url ),
26
- apiNamespace: 'wpcom/v2',
27
- } );
28
-
29
- yield colorsAnalyzeSuccess( url, data );
30
- } catch ( err ) {
31
- yield colorsAnalyzeFailed( url );
32
- }
33
- }
34
-
35
- return {
36
- colorsAnalyzeStart,
37
- colorsAnalyzeSuccess,
38
- colorsAnalyzeFailed,
39
- analyzeColors,
40
- };
41
- }
42
-
43
- export type ActionCreators = ReturnType< typeof createActions >;
44
-
45
- export type Action = ReturnType<
46
- | ActionCreators[ 'colorsAnalyzeStart' ]
47
- | ActionCreators[ 'colorsAnalyzeSuccess' ]
48
- | ActionCreators[ 'colorsAnalyzeFailed' ]
49
- >;
@@ -1 +0,0 @@
1
- export const STORE_KEY = 'automattic/analyzer';
@@ -1,17 +0,0 @@
1
- import { register, createReduxStore } from '@wordpress/data';
2
- import { controls } from '../wpcom-request-controls';
3
- import { createActions } from './actions';
4
- import { STORE_KEY } from './constants';
5
- import reducer, { State } from './reducers';
6
- import * as selectors from './selectors';
7
- export * from './types';
8
- export type { State };
9
-
10
- export const store = createReduxStore( STORE_KEY, {
11
- actions: createActions(),
12
- controls: controls,
13
- reducer: reducer,
14
- selectors,
15
- } );
16
-
17
- register( store );
@@ -1,36 +0,0 @@
1
- import { combineReducers } from '@wordpress/data';
2
- import type { Action } from './actions';
3
- import type { ColorsState } from './types';
4
- import type { Reducer } from 'redux';
5
-
6
- const analyzer: Reducer< ColorsState, Action > = ( state = {}, action ) => {
7
- if ( action.type === 'COLORS_ANALYZE_START' ) {
8
- return {
9
- analyzing: true,
10
- };
11
- }
12
-
13
- if ( action.type === 'COLORS_ANALYZE_SUCCESS' ) {
14
- const colors = { ...state.colors };
15
- colors[ action.data.url ] = action.data.colors;
16
-
17
- return {
18
- analyzing: false,
19
- colors,
20
- };
21
- }
22
-
23
- if ( action.type === 'COLORS_ANALYZE_FAILED' ) {
24
- return {
25
- analyzing: false,
26
- };
27
- }
28
-
29
- return state;
30
- };
31
-
32
- const reducers = combineReducers( { analyzer } );
33
-
34
- export type State = ReturnType< typeof reducers >;
35
-
36
- export default reducers;
@@ -1,11 +0,0 @@
1
- import type { State } from './reducers';
2
-
3
- export const getState = ( state: State ) => state;
4
- export const isSiteColorsInAnalysis = ( state: State ) => state.analyzer.analyzing;
5
- export const getSiteColors = ( state: State, url: null | string ) => {
6
- if ( ! url ) {
7
- return null;
8
- }
9
-
10
- return state.analyzer.colors?.[ url ];
11
- };
@@ -1,37 +0,0 @@
1
- import * as actions from './actions';
2
- import type { DispatchFromMap } from '../mapped-types';
3
-
4
- interface Color {
5
- name: string;
6
- hex: string;
7
- }
8
-
9
- export interface ColorsData {
10
- link: Color[];
11
- text: Color[];
12
- background: Color[];
13
- }
14
-
15
- export interface PreferredPalettes {
16
- preferred_palettes: {
17
- link: Color;
18
- text: Color;
19
- background: Color;
20
- }[];
21
- }
22
-
23
- export interface AnalyzeColorsResponse {
24
- url: string;
25
- status: string;
26
- colors: ColorsData & PreferredPalettes;
27
- }
28
-
29
- type SiteUrl = string;
30
- export type ColorsState = {
31
- analyzing?: boolean;
32
- colors?: { [ key: SiteUrl ]: ColorsData & PreferredPalettes };
33
- };
34
-
35
- export interface Dispatch {
36
- dispatch: DispatchFromMap< typeof actions >;
37
- }
@@ -1,51 +0,0 @@
1
- import type {
2
- DomainSuggestion,
3
- DomainSuggestionQuery,
4
- DomainCategory,
5
- DomainAvailability,
6
- } from './types';
7
-
8
- export const receiveCategories = ( categories: DomainCategory[] ) =>
9
- ( {
10
- type: 'RECEIVE_CATEGORIES',
11
- categories,
12
- } ) as const;
13
-
14
- export const fetchDomainSuggestions = () =>
15
- ( {
16
- type: 'FETCH_DOMAIN_SUGGESTIONS',
17
- timeStamp: Date.now(),
18
- } ) as const;
19
-
20
- export const receiveDomainAvailability = ( domainName: string, availability: DomainAvailability ) =>
21
- ( {
22
- type: 'RECEIVE_DOMAIN_AVAILABILITY',
23
- domainName,
24
- availability,
25
- } ) as const;
26
-
27
- export const receiveDomainSuggestionsSuccess = (
28
- queryObject: DomainSuggestionQuery,
29
- suggestions: DomainSuggestion[] | undefined
30
- ) =>
31
- ( {
32
- type: 'RECEIVE_DOMAIN_SUGGESTIONS_SUCCESS',
33
- queryObject,
34
- suggestions,
35
- timeStamp: Date.now(),
36
- } ) as const;
37
-
38
- export const receiveDomainSuggestionsError = ( errorMessage: string ) =>
39
- ( {
40
- type: 'RECEIVE_DOMAIN_SUGGESTIONS_ERROR',
41
- errorMessage,
42
- timeStamp: Date.now(),
43
- } ) as const;
44
-
45
- export type Action = ReturnType<
46
- | typeof receiveCategories
47
- | typeof fetchDomainSuggestions
48
- | typeof receiveDomainSuggestionsSuccess
49
- | typeof receiveDomainSuggestionsError
50
- | typeof receiveDomainAvailability
51
- >;
@@ -1,8 +0,0 @@
1
- export const STORE_KEY = 'automattic/domains/suggestions';
2
-
3
- export enum DataStatus {
4
- Failure = 'failure',
5
- Pending = 'pending',
6
- Success = 'success',
7
- Uninitialized = 'uninitialized',
8
- }
@@ -1,22 +0,0 @@
1
- import { register, createReduxStore } from '@wordpress/data';
2
- import { controls } from '../wpcom-request-controls';
3
- import * as actions from './actions';
4
- import { STORE_KEY } from './constants';
5
- import reducer, { State } from './reducer';
6
- import * as resolvers from './resolvers';
7
- import * as selectors from './selectors';
8
-
9
- export * from './types';
10
- export * from './constants';
11
- export * from './queries';
12
- export { getFormattedPrice } from './utils';
13
- export type { State };
14
-
15
- export const store = createReduxStore( STORE_KEY, {
16
- actions,
17
- controls,
18
- reducer,
19
- resolvers,
20
- selectors,
21
- } );
22
- register( store );
@@ -1,85 +0,0 @@
1
- import { useQuery, useQueryClient } from '@tanstack/react-query';
2
- import { stringify } from 'qs';
3
- import wpcomProxyRequest from 'wpcom-proxy-request';
4
- import { getFormattedPrice, normalizeDomainSuggestionQuery } from './utils';
5
- import type { DomainSuggestion, DomainSuggestionSelectorOptions } from './types';
6
-
7
- const STALE_TIME = 1000 * 60 * 5; // 5 minutes
8
-
9
- export function useGetDomainSuggestions(
10
- search?: string | null,
11
- searchOptions: DomainSuggestionSelectorOptions = {},
12
- queryOptions = {}
13
- ) {
14
- const queryClient = useQueryClient();
15
- const result = useQuery( {
16
- queryKey: [ 'domain-suggestions', search, searchOptions ],
17
- queryFn: async () => {
18
- if ( ! search ) {
19
- return [];
20
- }
21
- const queryObject = normalizeDomainSuggestionQuery( search, searchOptions );
22
-
23
- const suggestions: DomainSuggestion[] = await wpcomProxyRequest( {
24
- apiVersion: '1.1',
25
- path: '/domains/suggestions',
26
- query: stringify( queryObject ),
27
- } );
28
- if ( ! Array.isArray( suggestions ) ) {
29
- throw new Error( 'Invalid response from the server' );
30
- }
31
-
32
- const processedSuggestions = suggestions.map( ( suggestion: DomainSuggestion ) => {
33
- if ( suggestion.unavailable ) {
34
- return suggestion;
35
- }
36
- return {
37
- ...suggestion,
38
- ...( suggestion.raw_price &&
39
- suggestion.currency_code && {
40
- cost: getFormattedPrice( suggestion.raw_price, suggestion.currency_code ),
41
- } ),
42
- };
43
- } );
44
-
45
- return processedSuggestions;
46
- },
47
- enabled: !! search,
48
- staleTime: STALE_TIME,
49
- ...queryOptions,
50
- } );
51
-
52
- return {
53
- ...result,
54
- invalidateCache: () =>
55
- queryClient.invalidateQueries( {
56
- queryKey: [ 'domain-suggestions', search, searchOptions ],
57
- } ),
58
- };
59
- }
60
-
61
- /**
62
- * Returns the expected *.wordpress.com for a given domain name
63
- */
64
- export function useGetWordPressSubdomain( paidDomainName?: string | null ) {
65
- return useGetDomainSuggestions( paidDomainName, {
66
- quantity: 1,
67
- include_wordpressdotcom: true,
68
- include_dotblogsubdomain: false,
69
- only_wordpressdotcom: false,
70
- vendor: 'dot',
71
- } );
72
- }
73
-
74
- /**
75
- * Returns a custom .com domain suggestion for a given query
76
- */
77
- export function useGetSingleCustomDotComDomainSuggestion( query?: string | null, locale?: string ) {
78
- return useGetDomainSuggestions( query, {
79
- quantity: 1,
80
- include_wordpressdotcom: false,
81
- include_dotblogsubdomain: false,
82
- locale,
83
- tlds: [ 'com' ],
84
- } );
85
- }
@@ -1,77 +0,0 @@
1
- import { combineReducers } from '@wordpress/data';
2
- import { DataStatus } from './constants';
3
- import { stringifyDomainQueryObject } from './utils';
4
- import type { Action } from './actions';
5
- import type { DomainCategory, DomainSuggestionState, DomainAvailabilities } from './types';
6
- import type { Reducer } from 'redux';
7
-
8
- const initialDomainSuggestionState: DomainSuggestionState = {
9
- state: DataStatus.Uninitialized,
10
- data: {},
11
- errorMessage: null,
12
- lastUpdated: -Infinity,
13
- pendingSince: undefined,
14
- };
15
-
16
- export const domainSuggestions: Reducer< DomainSuggestionState, Action > = (
17
- state = initialDomainSuggestionState,
18
- action
19
- ) => {
20
- if ( action.type === 'FETCH_DOMAIN_SUGGESTIONS' ) {
21
- return {
22
- ...state,
23
- state: DataStatus.Pending,
24
- errorMessage: null,
25
- pendingSince: action.timeStamp,
26
- };
27
- }
28
-
29
- if ( action.type === 'RECEIVE_DOMAIN_SUGGESTIONS_SUCCESS' ) {
30
- return {
31
- ...state,
32
- state: DataStatus.Success,
33
- data: {
34
- ...state.data,
35
- [ stringifyDomainQueryObject( action.queryObject ) ]: action.suggestions,
36
- },
37
- errorMessage: null,
38
- lastUpdated: action.timeStamp,
39
- pendingSince: undefined,
40
- };
41
- }
42
-
43
- if ( action.type === 'RECEIVE_DOMAIN_SUGGESTIONS_ERROR' ) {
44
- return {
45
- ...state,
46
- state: DataStatus.Failure,
47
- errorMessage: action.errorMessage,
48
- lastUpdated: action.timeStamp,
49
- pendingSince: undefined,
50
- };
51
- }
52
-
53
- return state;
54
- };
55
-
56
- const categories: Reducer< DomainCategory[], Action > = ( state = [], action ) => {
57
- if ( action.type === 'RECEIVE_CATEGORIES' ) {
58
- return action.categories;
59
- }
60
- return state;
61
- };
62
-
63
- const availability: Reducer< DomainAvailabilities, Action > = ( state = {}, action ) => {
64
- if ( action.type === 'RECEIVE_DOMAIN_AVAILABILITY' ) {
65
- return {
66
- ...state,
67
- [ action.domainName ]: action.availability,
68
- };
69
- }
70
- return state;
71
- };
72
-
73
- const reducer = combineReducers( { categories, domainSuggestions, availability } );
74
-
75
- export type State = ReturnType< typeof reducer >;
76
-
77
- export default reducer;