@makeswift/runtime 0.28.7-canary.2 → 0.28.7-canary.4

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 (154) hide show
  1. package/dist/cjs/api/api-resources-client.js +160 -0
  2. package/dist/cjs/api/api-resources-client.js.map +1 -0
  3. package/dist/cjs/api/client.js +20 -190
  4. package/dist/cjs/api/client.js.map +1 -1
  5. package/dist/cjs/api/graphql-api-client.js +39 -0
  6. package/dist/cjs/api/graphql-api-client.js.map +1 -0
  7. package/dist/cjs/api-handler/handlers/manifest.js +1 -1
  8. package/dist/cjs/client/index.js +3 -3
  9. package/dist/cjs/components/builtin/Form/Form.js +2 -2
  10. package/dist/cjs/components/builtin/Form/Form.js.map +1 -1
  11. package/dist/cjs/controls/index.js +2 -2
  12. package/dist/cjs/controls/index.js.map +1 -1
  13. package/dist/cjs/next/fetch.js.map +1 -1
  14. package/dist/cjs/runtimes/react/components/GoogleFontLink.js +2 -2
  15. package/dist/cjs/runtimes/react/components/GoogleFontLink.js.map +1 -1
  16. package/dist/cjs/runtimes/react/components/hooks/use-page-snippets.js +2 -2
  17. package/dist/cjs/runtimes/react/components/hooks/use-page-snippets.js.map +1 -1
  18. package/dist/cjs/runtimes/react/components/page/PageHead.js +2 -2
  19. package/dist/cjs/runtimes/react/components/page/PageHead.js.map +1 -1
  20. package/dist/cjs/runtimes/react/hooks/makeswift-api.js +10 -10
  21. package/dist/cjs/runtimes/react/hooks/makeswift-api.js.map +1 -1
  22. package/dist/cjs/runtimes/react/{host-api-client.js → hooks/use-api-resources-client.js} +9 -9
  23. package/dist/cjs/runtimes/react/hooks/use-api-resources-client.js.map +1 -0
  24. package/dist/cjs/runtimes/react/hooks/use-cache-data.js +2 -2
  25. package/dist/cjs/runtimes/react/hooks/use-cache-data.js.map +1 -1
  26. package/dist/cjs/runtimes/react/hooks/use-graphql-api-client.js +35 -0
  27. package/dist/cjs/runtimes/react/hooks/use-graphql-api-client.js.map +1 -0
  28. package/dist/cjs/runtimes/react/hooks/use-resource-resolver.js +13 -34
  29. package/dist/cjs/runtimes/react/hooks/use-resource-resolver.js.map +1 -1
  30. package/dist/cjs/runtimes/react/resource-resolver.js +52 -0
  31. package/dist/cjs/runtimes/react/resource-resolver.js.map +1 -0
  32. package/dist/cjs/runtimes/react/runtime-core.js +11 -6
  33. package/dist/cjs/runtimes/react/runtime-core.js.map +1 -1
  34. package/dist/cjs/slate/InlinePlugin/index.js +1 -1
  35. package/dist/cjs/slate/InlinePlugin/index.js.map +1 -1
  36. package/dist/cjs/slate/InlinePlugin/types.js +3 -3
  37. package/dist/cjs/slate/InlinePlugin/types.js.map +1 -1
  38. package/dist/cjs/slate/TextAlignPlugin/index.js +5 -5
  39. package/dist/cjs/slate/TextAlignPlugin/index.js.map +1 -1
  40. package/dist/cjs/state/actions/internal/read-write-actions.js.map +1 -1
  41. package/dist/cjs/state/api-client/client-store.js +81 -0
  42. package/dist/cjs/state/api-client/client-store.js.map +1 -0
  43. package/dist/cjs/state/{makeswift-api-client.js → api-client/fetch-api-resource.js} +15 -101
  44. package/dist/cjs/state/api-client/fetch-api-resource.js.map +1 -0
  45. package/dist/cjs/state/api-client/state.js +89 -0
  46. package/dist/cjs/state/api-client/state.js.map +1 -0
  47. package/dist/cjs/state/api-client/store.js +36 -0
  48. package/dist/cjs/state/api-client/store.js.map +1 -0
  49. package/dist/cjs/state/middleware/makeswift-api-client-sync.js +1 -1
  50. package/dist/cjs/state/middleware/makeswift-api-client-sync.js.map +1 -1
  51. package/dist/cjs/state/store.js +3 -3
  52. package/dist/cjs/state/store.js.map +1 -1
  53. package/dist/esm/api/api-resources-client.js +127 -0
  54. package/dist/esm/api/api-resources-client.js.map +1 -0
  55. package/dist/esm/api/client.js +19 -179
  56. package/dist/esm/api/client.js.map +1 -1
  57. package/dist/esm/api/graphql-api-client.js +15 -0
  58. package/dist/esm/api/graphql-api-client.js.map +1 -0
  59. package/dist/esm/api-handler/handlers/manifest.js +1 -1
  60. package/dist/esm/client/index.js +3 -3
  61. package/dist/esm/components/builtin/Form/Form.js +2 -2
  62. package/dist/esm/components/builtin/Form/Form.js.map +1 -1
  63. package/dist/esm/controls/index.js +2 -2
  64. package/dist/esm/controls/index.js.map +1 -1
  65. package/dist/esm/next/fetch.js.map +1 -1
  66. package/dist/esm/runtimes/react/components/GoogleFontLink.js +2 -2
  67. package/dist/esm/runtimes/react/components/GoogleFontLink.js.map +1 -1
  68. package/dist/esm/runtimes/react/components/hooks/use-page-snippets.js +2 -2
  69. package/dist/esm/runtimes/react/components/hooks/use-page-snippets.js.map +1 -1
  70. package/dist/esm/runtimes/react/components/page/PageHead.js +2 -2
  71. package/dist/esm/runtimes/react/components/page/PageHead.js.map +1 -1
  72. package/dist/esm/runtimes/react/hooks/makeswift-api.js +10 -10
  73. package/dist/esm/runtimes/react/hooks/makeswift-api.js.map +1 -1
  74. package/dist/esm/runtimes/react/hooks/use-api-resources-client.js +9 -0
  75. package/dist/esm/runtimes/react/hooks/use-api-resources-client.js.map +1 -0
  76. package/dist/esm/runtimes/react/hooks/use-cache-data.js +2 -2
  77. package/dist/esm/runtimes/react/hooks/use-cache-data.js.map +1 -1
  78. package/dist/esm/runtimes/react/hooks/use-graphql-api-client.js +11 -0
  79. package/dist/esm/runtimes/react/hooks/use-graphql-api-client.js.map +1 -0
  80. package/dist/esm/runtimes/react/hooks/use-resource-resolver.js +13 -24
  81. package/dist/esm/runtimes/react/hooks/use-resource-resolver.js.map +1 -1
  82. package/dist/esm/runtimes/react/resource-resolver.js +28 -0
  83. package/dist/esm/runtimes/react/resource-resolver.js.map +1 -0
  84. package/dist/esm/runtimes/react/runtime-core.js +11 -6
  85. package/dist/esm/runtimes/react/runtime-core.js.map +1 -1
  86. package/dist/esm/slate/InlinePlugin/index.js +2 -2
  87. package/dist/esm/slate/InlinePlugin/index.js.map +1 -1
  88. package/dist/esm/slate/InlinePlugin/types.js +4 -4
  89. package/dist/esm/slate/InlinePlugin/types.js.map +1 -1
  90. package/dist/esm/slate/TextAlignPlugin/index.js +6 -6
  91. package/dist/esm/slate/TextAlignPlugin/index.js.map +1 -1
  92. package/dist/esm/state/actions/internal/read-write-actions.js.map +1 -1
  93. package/dist/esm/state/api-client/client-store.js +49 -0
  94. package/dist/esm/state/api-client/client-store.js.map +1 -0
  95. package/dist/esm/state/api-client/fetch-api-resource.js +93 -0
  96. package/dist/esm/state/api-client/fetch-api-resource.js.map +1 -0
  97. package/dist/esm/state/api-client/state.js +52 -0
  98. package/dist/esm/state/api-client/state.js.map +1 -0
  99. package/dist/esm/state/api-client/store.js +12 -0
  100. package/dist/esm/state/api-client/store.js.map +1 -0
  101. package/dist/esm/state/middleware/makeswift-api-client-sync.js +1 -1
  102. package/dist/esm/state/middleware/makeswift-api-client-sync.js.map +1 -1
  103. package/dist/esm/state/store.js +3 -3
  104. package/dist/esm/state/store.js.map +1 -1
  105. package/dist/types/api/api-resources-client.d.ts +57 -0
  106. package/dist/types/api/api-resources-client.d.ts.map +1 -0
  107. package/dist/types/api/client.d.ts +10 -46
  108. package/dist/types/api/client.d.ts.map +1 -1
  109. package/dist/types/api/graphql-api-client.d.ts +9 -0
  110. package/dist/types/api/graphql-api-client.d.ts.map +1 -0
  111. package/dist/types/client/index.d.ts +9 -9
  112. package/dist/types/controls/index.d.ts +1 -1
  113. package/dist/types/controls/index.d.ts.map +1 -1
  114. package/dist/types/next/fetch.d.ts +1 -1
  115. package/dist/types/next/fetch.d.ts.map +1 -1
  116. package/dist/types/runtimes/react/components/GoogleFontLink.d.ts.map +1 -1
  117. package/dist/types/runtimes/react/components/page/PageHead.d.ts.map +1 -1
  118. package/dist/types/runtimes/react/hooks/use-api-resources-client.d.ts +3 -0
  119. package/dist/types/runtimes/react/hooks/use-api-resources-client.d.ts.map +1 -0
  120. package/dist/types/runtimes/react/hooks/use-graphql-api-client.d.ts +3 -0
  121. package/dist/types/runtimes/react/hooks/use-graphql-api-client.d.ts.map +1 -0
  122. package/dist/types/runtimes/react/hooks/use-resource-resolver.d.ts.map +1 -1
  123. package/dist/types/runtimes/react/resource-resolver.d.ts +10 -0
  124. package/dist/types/runtimes/react/resource-resolver.d.ts.map +1 -0
  125. package/dist/types/runtimes/react/runtime-core.d.ts +5 -3
  126. package/dist/types/runtimes/react/runtime-core.d.ts.map +1 -1
  127. package/dist/types/slate/InlinePlugin/types.d.ts +3 -3
  128. package/dist/types/slate/InlinePlugin/types.d.ts.map +1 -1
  129. package/dist/types/slate/TextAlignPlugin/index.d.ts.map +1 -1
  130. package/dist/types/state/actions/internal/read-write-actions.d.ts +1 -1
  131. package/dist/types/state/actions/internal/read-write-actions.d.ts.map +1 -1
  132. package/dist/types/state/api-client/client-store.d.ts +6 -0
  133. package/dist/types/state/api-client/client-store.d.ts.map +1 -0
  134. package/dist/types/state/api-client/fetch-api-resource.d.ts +11 -0
  135. package/dist/types/state/api-client/fetch-api-resource.d.ts.map +1 -0
  136. package/dist/types/state/api-client/state.d.ts +30 -0
  137. package/dist/types/state/api-client/state.d.ts.map +1 -0
  138. package/dist/types/state/api-client/store.d.ts +18 -0
  139. package/dist/types/state/api-client/store.d.ts.map +1 -0
  140. package/dist/types/state/middleware/makeswift-api-client-sync.d.ts +2 -2
  141. package/dist/types/state/middleware/makeswift-api-client-sync.d.ts.map +1 -1
  142. package/dist/types/state/store.d.ts +4 -4
  143. package/dist/types/state/store.d.ts.map +1 -1
  144. package/package.json +3 -3
  145. package/dist/cjs/runtimes/react/host-api-client.js.map +0 -1
  146. package/dist/cjs/state/makeswift-api-client.js.map +0 -1
  147. package/dist/esm/runtimes/react/host-api-client.js +0 -9
  148. package/dist/esm/runtimes/react/host-api-client.js.map +0 -1
  149. package/dist/esm/state/makeswift-api-client.js +0 -179
  150. package/dist/esm/state/makeswift-api-client.js.map +0 -1
  151. package/dist/types/runtimes/react/host-api-client.d.ts +0 -3
  152. package/dist/types/runtimes/react/host-api-client.d.ts.map +0 -1
  153. package/dist/types/state/makeswift-api-client.d.ts +0 -51
  154. package/dist/types/state/makeswift-api-client.d.ts.map +0 -1
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var state_exports = {};
30
+ __export(state_exports, {
31
+ getAPIResource: () => getAPIResource,
32
+ getHasAPIResource: () => getHasAPIResource,
33
+ getLocalizedResourceId: () => getLocalizedResourceId,
34
+ reducer: () => reducer
35
+ });
36
+ module.exports = __toCommonJS(state_exports);
37
+ var import_toolkit = require("@reduxjs/toolkit");
38
+ var SiteVersionState = __toESM(require("../modules/site-version"));
39
+ var LocaleState = __toESM(require("../modules/locale"));
40
+ var APIResources = __toESM(require("../modules/api-resources"));
41
+ var LocalizedResourcesMap = __toESM(require("../modules/localized-resources-map"));
42
+ var import_api = require("../../api");
43
+ const reducer = (0, import_toolkit.combineReducers)({
44
+ siteVersion: SiteVersionState.reducer,
45
+ locale: LocaleState.reducer,
46
+ apiResources: APIResources.reducer,
47
+ localizedResourcesMap: LocalizedResourcesMap.reducer
48
+ });
49
+ function getLocalizedResourceId(state, locale, resourceId) {
50
+ return LocalizedResourcesMap.getLocalizedResourceId(
51
+ state.localizedResourcesMap,
52
+ locale,
53
+ resourceId
54
+ );
55
+ }
56
+ function getHasAPIResource(state, resourceType, resourceId, locale) {
57
+ switch (resourceType) {
58
+ case import_api.APIResourceType.LocalizedGlobalElement:
59
+ if (locale == null) {
60
+ console.error(`Attempt to access ${resourceType} ${resourceId} without a locale`);
61
+ return false;
62
+ }
63
+ const localizedId = getLocalizedResourceId(state, locale, resourceId);
64
+ return localizedId != null && APIResources.getHasAPIResource(state.apiResources, resourceType, localizedId, locale);
65
+ default:
66
+ return APIResources.getHasAPIResource(state.apiResources, resourceType, resourceId, locale);
67
+ }
68
+ }
69
+ function getAPIResource(state, resourceType, resourceId, locale) {
70
+ switch (resourceType) {
71
+ case import_api.APIResourceType.LocalizedGlobalElement:
72
+ if (locale == null) {
73
+ console.error(`Attempt to access ${resourceType} ${resourceId} without a locale`);
74
+ return null;
75
+ }
76
+ const localizedId = getLocalizedResourceId(state, locale, resourceId);
77
+ return localizedId != null ? APIResources.getAPIResource(state.apiResources, resourceType, localizedId, locale) : null;
78
+ default:
79
+ return APIResources.getAPIResource(state.apiResources, resourceType, resourceId, locale);
80
+ }
81
+ }
82
+ // Annotate the CommonJS export names for ESM import in node:
83
+ 0 && (module.exports = {
84
+ getAPIResource,
85
+ getHasAPIResource,
86
+ getLocalizedResourceId,
87
+ reducer
88
+ });
89
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/state/api-client/state.ts"],"sourcesContent":["import { combineReducers, type ThunkDispatch } from '@reduxjs/toolkit'\n\nimport * as SiteVersionState from '../modules/site-version'\nimport * as LocaleState from '../modules/locale'\nimport * as APIResources from '../modules/api-resources'\nimport * as LocalizedResourcesMap from '../modules/localized-resources-map'\n\nimport { type Action } from '../actions'\n\nimport { APIResourceType, type APIResource, type APIResourceLocale } from '../../api'\n\nexport const reducer = combineReducers({\n siteVersion: SiteVersionState.reducer,\n locale: LocaleState.reducer,\n apiResources: APIResources.reducer,\n localizedResourcesMap: LocalizedResourcesMap.reducer,\n})\n\nexport type State = ReturnType<typeof reducer>\nexport type Dispatch = ThunkDispatch<State, unknown, Action>\n\nexport type SerializedState = {\n apiResources: APIResources.SerializedState\n localizedResourcesMap: LocalizedResourcesMap.SerializedState\n}\n\nexport function getLocalizedResourceId(\n state: State,\n locale: string,\n resourceId: string,\n): string | undefined | null {\n return LocalizedResourcesMap.getLocalizedResourceId(\n state.localizedResourcesMap,\n locale,\n resourceId,\n )\n}\n\nexport function getHasAPIResource<T extends APIResourceType>(\n state: State,\n resourceType: APIResourceType,\n resourceId: string,\n locale?: APIResourceLocale<T>,\n): boolean {\n switch (resourceType) {\n case APIResourceType.LocalizedGlobalElement:\n if (locale == null) {\n console.error(`Attempt to access ${resourceType} ${resourceId} without a locale`)\n return false\n }\n\n const localizedId = getLocalizedResourceId(state, locale, resourceId)\n return (\n localizedId != null &&\n APIResources.getHasAPIResource(state.apiResources, resourceType, localizedId, locale)\n )\n\n default:\n return APIResources.getHasAPIResource(state.apiResources, resourceType, resourceId, locale)\n }\n}\n\nexport function getAPIResource<T extends APIResourceType>(\n state: State,\n resourceType: T,\n resourceId: string,\n locale?: APIResourceLocale<T>,\n): Extract<APIResource, { __typename: T }> | null {\n switch (resourceType) {\n case APIResourceType.LocalizedGlobalElement:\n if (locale == null) {\n console.error(`Attempt to access ${resourceType} ${resourceId} without a locale`)\n return null\n }\n\n const localizedId = getLocalizedResourceId(state, locale, resourceId)\n return localizedId != null\n ? APIResources.getAPIResource(state.apiResources, resourceType, localizedId, locale)\n : null\n\n default:\n return APIResources.getAPIResource(state.apiResources, resourceType, resourceId, locale)\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoD;AAEpD,uBAAkC;AAClC,kBAA6B;AAC7B,mBAA8B;AAC9B,4BAAuC;AAIvC,iBAA0E;AAEnE,MAAM,cAAU,gCAAgB;AAAA,EACrC,aAAa,iBAAiB;AAAA,EAC9B,QAAQ,YAAY;AAAA,EACpB,cAAc,aAAa;AAAA,EAC3B,uBAAuB,sBAAsB;AAC/C,CAAC;AAUM,SAAS,uBACd,OACA,QACA,YAC2B;AAC3B,SAAO,sBAAsB;AAAA,IAC3B,MAAM;AAAA,IACN;AAAA,IACA;AAAA,EACF;AACF;AAEO,SAAS,kBACd,OACA,cACA,YACA,QACS;AACT,UAAQ,cAAc;AAAA,IACpB,KAAK,2BAAgB;AACnB,UAAI,UAAU,MAAM;AAClB,gBAAQ,MAAM,qBAAqB,YAAY,IAAI,UAAU,mBAAmB;AAChF,eAAO;AAAA,MACT;AAEA,YAAM,cAAc,uBAAuB,OAAO,QAAQ,UAAU;AACpE,aACE,eAAe,QACf,aAAa,kBAAkB,MAAM,cAAc,cAAc,aAAa,MAAM;AAAA,IAGxF;AACE,aAAO,aAAa,kBAAkB,MAAM,cAAc,cAAc,YAAY,MAAM;AAAA,EAC9F;AACF;AAEO,SAAS,eACd,OACA,cACA,YACA,QACgD;AAChD,UAAQ,cAAc;AAAA,IACpB,KAAK,2BAAgB;AACnB,UAAI,UAAU,MAAM;AAClB,gBAAQ,MAAM,qBAAqB,YAAY,IAAI,UAAU,mBAAmB;AAChF,eAAO;AAAA,MACT;AAEA,YAAM,cAAc,uBAAuB,OAAO,QAAQ,UAAU;AACpE,aAAO,eAAe,OAClB,aAAa,eAAe,MAAM,cAAc,cAAc,aAAa,MAAM,IACjF;AAAA,IAEN;AACE,aAAO,aAAa,eAAe,MAAM,cAAc,cAAc,YAAY,MAAM;AAAA,EAC3F;AACF;","names":[]}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var store_exports = {};
20
+ __export(store_exports, {
21
+ configureStore: () => configureStore
22
+ });
23
+ module.exports = __toCommonJS(store_exports);
24
+ var import_toolkit = require("@reduxjs/toolkit");
25
+ var import_state = require("./state");
26
+ function configureStore({ preloadedState }) {
27
+ return (0, import_toolkit.configureStore)({
28
+ reducer: import_state.reducer,
29
+ preloadedState
30
+ });
31
+ }
32
+ // Annotate the CommonJS export names for ESM import in node:
33
+ 0 && (module.exports = {
34
+ configureStore
35
+ });
36
+ //# sourceMappingURL=store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/state/api-client/store.ts"],"sourcesContent":["import { configureStore as configureReduxStore } from '@reduxjs/toolkit'\n\nimport { type State, reducer } from './state'\n\nexport function configureStore({ preloadedState }: { preloadedState: Partial<State> }) {\n return configureReduxStore({\n reducer,\n preloadedState,\n })\n}\n\nexport type Store = ReturnType<typeof configureStore>\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAsD;AAEtD,mBAAoC;AAE7B,SAAS,eAAe,EAAE,eAAe,GAAuC;AACrF,aAAO,eAAAA,gBAAoB;AAAA,IACzB;AAAA,IACA;AAAA,EACF,CAAC;AACH;","names":["configureReduxStore"]}
@@ -25,7 +25,7 @@ var import_toolkit2 = require("../toolkit");
25
25
  function makeswiftApiClientSyncMiddleware(client) {
26
26
  return (0, import_toolkit2.actionMiddleware)(() => (next) => {
27
27
  return (action) => {
28
- client.makeswiftApiClient.dispatch(action);
28
+ client.store.dispatch(action);
29
29
  return next(action);
30
30
  };
31
31
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/state/middleware/makeswift-api-client-sync.ts"],"sourcesContent":["import { type Middleware } from '@reduxjs/toolkit'\n\nimport { MakeswiftHostApiClient } from '../../api/client'\n\nimport { type Action } from '../actions'\nimport { actionMiddleware } from '../toolkit'\nimport { type State, type Dispatch } from '../unified-state'\n\nexport function makeswiftApiClientSyncMiddleware(\n client: MakeswiftHostApiClient,\n): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(() => next => {\n return (action: Action) => {\n client.makeswiftApiClient.dispatch(action)\n\n return next(action)\n }\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,IAAAA,kBAAiC;AAG1B,SAAS,iCACd,QACuC;AACvC,aAAO,kCAAiB,MAAM,UAAQ;AACpC,WAAO,CAAC,WAAmB;AACzB,aAAO,mBAAmB,SAAS,MAAM;AAEzC,aAAO,KAAK,MAAM;AAAA,IACpB;AAAA,EACF,CAAC;AACH;","names":["import_toolkit"]}
1
+ {"version":3,"sources":["../../../../src/state/middleware/makeswift-api-client-sync.ts"],"sourcesContent":["import { type Middleware } from '@reduxjs/toolkit'\n\nimport { ApiResourcesClient } from '../../api/api-resources-client'\n\nimport { type Action } from '../actions'\nimport { actionMiddleware } from '../toolkit'\nimport { type State, type Dispatch } from '../unified-state'\n\nexport function makeswiftApiClientSyncMiddleware(\n client: ApiResourcesClient,\n): Middleware<Dispatch, State, Dispatch> {\n return actionMiddleware(() => next => {\n return (action: Action) => {\n client.store.dispatch(action)\n\n return next(action)\n }\n })\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,IAAAA,kBAAiC;AAG1B,SAAS,iCACd,QACuC;AACvC,aAAO,kCAAiB,MAAM,UAAQ;AACpC,WAAO,CAAC,WAAmB;AACzB,aAAO,MAAM,SAAS,MAAM;AAE5B,aAAO,KAAK,MAAM;AAAA,IACpB;AAAA,EACF,CAAC;AACH;","names":["import_toolkit"]}
@@ -124,7 +124,7 @@ function withMixin(mixin) {
124
124
  function configureReadWriteStore({
125
125
  name,
126
126
  appOrigin,
127
- hostApiClient,
127
+ apiResourcesClient,
128
128
  preloadedState
129
129
  }) {
130
130
  const readWriteMiddlewareRef = {
@@ -168,7 +168,7 @@ function configureReadWriteStore({
168
168
  name,
169
169
  preloadedState,
170
170
  middleware: () => [
171
- (0, import_makeswift_api_client_sync.makeswiftApiClientSyncMiddleware)(hostApiClient),
171
+ (0, import_makeswift_api_client_sync.makeswiftApiClientSyncMiddleware)(apiResourcesClient),
172
172
  conditionalReadWriteMiddleware(readWriteMiddlewareRef)
173
173
  ],
174
174
  enhancers: () => new import_toolkit.Tuple(
@@ -180,7 +180,7 @@ function configureReadWriteStore({
180
180
  })
181
181
  ),
182
182
  withMixin({
183
- hostApiClient,
183
+ apiResourcesClient,
184
184
  loadReadWriteStateIfNeeded: async () => {
185
185
  const { isReadOnly } = store.getState();
186
186
  if (isReadOnly) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/state/store.ts"],"sourcesContent":["import {\n type Middleware,\n type StoreEnhancer,\n type MiddlewareAPI,\n Tuple,\n configureStore as configureReduxStore,\n combineReducers,\n compose,\n} from '@reduxjs/toolkit'\n\nimport { MakeswiftHostApiClient } from '../api/client'\n\nimport { actionMiddleware, middlewareOptions, devToolsConfig } from './toolkit'\nimport { BuilderActionTypes } from './builder-api/actions'\nimport { HostActionTypes } from './host-api'\n\nimport * as Breakpoints from './modules/breakpoints'\n\nimport { readOnlyElementTreeMiddleware } from './middleware/read-only-element-tree'\nimport { makeswiftApiClientSyncMiddleware } from './middleware/makeswift-api-client-sync'\nimport { type BreakpointWatch, breakpointWatchMixin } from './mixins/breakpoint-watch'\n\nimport { type Action } from './actions'\n\nimport { type State as ReadWriteState } from './read-write-state'\nimport * as ReadOnlyState from './read-only-state'\nimport {\n type State,\n type Dispatch,\n type ReadOnlyReducer,\n type ReadWriteDispatch,\n} from './unified-state'\n\nexport { type State } from './unified-state'\n\nconst configureStore = <Items extends readonly StoreEnhancer[] = []>({\n name,\n preloadedState,\n enhancers,\n middleware,\n}: {\n name: string\n preloadedState: Partial<State>\n enhancers: () => Tuple<Items>\n middleware?: () => Middleware[]\n}) => {\n const store = configureReduxStore({\n reducer: combineReducers(ReadOnlyState.reducers),\n preloadedState,\n\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware(middlewareOptions).concat([\n readOnlyElementTreeMiddleware(),\n ...(middleware ? middleware() : []),\n ]),\n\n enhancers: getDefaultEnhancers => getDefaultEnhancers().concat(enhancers()),\n\n devTools: devToolsConfig({\n name: `${name} (${new Date().toISOString()})`,\n actionsDenylist: [\n HostActionTypes.BUILDER_POINTER_MOVE,\n BuilderActionTypes.HANDLE_POINTER_MOVE,\n BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE,\n ],\n }),\n })\n\n return store\n}\n\nexport function configureProtoStore({\n name,\n breakpoints,\n}: {\n name: string\n breakpoints: Breakpoints.Breakpoints | undefined\n}) {\n return configureStore({\n name,\n preloadedState: {\n breakpoints: Breakpoints.getInitialState(breakpoints),\n },\n enhancers: () => new Tuple(),\n })\n}\n\nexport type ProtoStore = ReturnType<typeof configureProtoStore>\n\ntype ReadWriteMiddleware = ReturnType<\n typeof import('./middleware/read-write').createReadWriteMiddleware\n>\n\ntype ReadWriteMiddlewareRef = {\n current: ReadWriteMiddleware | null\n}\n\nexport function conditionalReadWriteMiddleware(\n middlewareRef: ReadWriteMiddlewareRef,\n): Middleware<Dispatch, State, Dispatch> {\n let readWriteActionBuffer: Action[] = []\n let middlewares: ReadWriteMiddleware | null = null\n let enhancedDispatch: Dispatch | null = null\n\n return actionMiddleware(({ dispatch, getState }) => next => {\n return (action: Action) => {\n const state = getState()\n\n if (middlewareRef.current == null) {\n if (!state.isReadOnly) {\n // because switching to the read-write state is an asynchronous operation,\n // we need to buffer all actions dispatched after the isReadOnly state is\n // set to false but before the read-write middleware is installed\n readWriteActionBuffer.push(action)\n }\n\n return next(action)\n }\n\n if (state.isReadOnly) {\n console.error('Read-write state mismatch', {\n isReadOnly: state.isReadOnly,\n middlewareRef: middlewareRef.current,\n siteVersion: state.siteVersion,\n })\n }\n\n // build and cache the enhanced dispatch chain when read-write middleware is installed\n if (enhancedDispatch == null || middlewares !== middlewareRef.current) {\n middlewares = middlewareRef.current\n\n const middlewareApi = { dispatch, getState } as MiddlewareAPI<\n ReadWriteDispatch,\n ReadWriteState\n >\n\n enhancedDispatch = compose<Dispatch>(...middlewares.map(mw => mw(middlewareApi)))(next)\n }\n\n // dispatch buffered actions, if any\n if (readWriteActionBuffer.length > 0) {\n const readWriteActions = [...readWriteActionBuffer]\n readWriteActionBuffer = []\n\n // Note that we're rerunning the actions through the entire middleware chain,\n // including the read-only middleware and the reducers, some of which have\n // already processed these actions once. This is safe to do because actions that\n // are run as part of page initialization are idempotent.\n for (const bufferedAction of readWriteActions) {\n enhancedDispatch(bufferedAction)\n }\n }\n\n return enhancedDispatch(action)\n }\n })\n}\n\nexport interface ReadWriteStateMixin {\n readonly hostApiClient: MakeswiftHostApiClient\n\n loadReadWriteStateIfNeeded(): Promise<() => void>\n}\n\nfunction withMixin<M extends {}>(mixin: M): StoreEnhancer<M> {\n return next => (reducer, preloadedState?) => ({\n ...next(reducer, preloadedState),\n ...mixin,\n })\n}\n\nexport function configureReadWriteStore({\n name,\n appOrigin,\n hostApiClient,\n preloadedState,\n}: {\n name: string\n appOrigin: string\n hostApiClient: MakeswiftHostApiClient\n preloadedState: Partial<State>\n}) {\n const readWriteMiddlewareRef: ReadWriteMiddlewareRef = {\n current: null,\n }\n\n let refCount = 0\n let readWriteCleanup: (() => void) | null = null\n let readWriteSetupPromise: Promise<void> | null = null\n\n const loadReadWriteState = async (): Promise<void> => {\n if (readWriteCleanup != null) {\n return\n }\n\n if (readWriteSetupPromise != null) {\n await readWriteSetupPromise\n return\n }\n\n readWriteSetupPromise = (async () => {\n // import all the modules needed for read-write mode before proceeding with\n // the setup to avoid race conditions when `setup` is called concurrently\n // in two different page regions\n const { BuilderAPIProxy } = await import('./builder-api/proxy')\n const { createRootReducer, setupBuilderProxy } = await import('./read-write-state')\n const { createReadWriteMiddleware } = await import('./middleware/read-write')\n\n // IMPORTANT: only synchronous code after this point\n\n // with all modules imported, check if another concurrent setup already\n // initialized the read-write middleware\n if (readWriteMiddlewareRef.current != null) {\n return\n }\n\n store.replaceReducer(createRootReducer() as ReadOnlyReducer)\n\n const builderProxy = new BuilderAPIProxy({ appOrigin })\n readWriteMiddlewareRef.current = createReadWriteMiddleware({ builderProxy })\n\n const dispatch = store.dispatch as ReadWriteDispatch\n const builderProxyCleanup = dispatch(setupBuilderProxy(builderProxy))\n\n readWriteCleanup = () => {\n readWriteMiddlewareRef.current = null\n builderProxyCleanup()\n }\n })()\n\n try {\n await readWriteSetupPromise\n } finally {\n readWriteSetupPromise = null\n }\n }\n\n const store = configureStore({\n name,\n preloadedState,\n\n middleware: () => [\n makeswiftApiClientSyncMiddleware(hostApiClient),\n conditionalReadWriteMiddleware(readWriteMiddlewareRef),\n ],\n\n enhancers: () =>\n new Tuple(\n withMixin<BreakpointWatch>(\n breakpointWatchMixin({\n dispatch: (...args: Parameters<Dispatch>) => store.dispatch(...args),\n getState: (): State => store.getState(),\n subscribe: (listener): VoidFunction => store.subscribe(listener),\n }),\n ),\n\n withMixin<ReadWriteStateMixin>({\n hostApiClient,\n loadReadWriteStateIfNeeded: async () => {\n const { isReadOnly } = store.getState()\n\n if (isReadOnly) {\n if (refCount > 0) {\n console.error('Read-write state mismatch', { isReadOnly, refCount })\n }\n\n return () => {}\n }\n\n await loadReadWriteState()\n refCount += 1\n\n let didCleanup = false\n return () => {\n if (didCleanup) {\n return\n }\n\n didCleanup = true\n refCount -= 1\n if (refCount === 0 && readWriteCleanup != null) {\n readWriteCleanup()\n readWriteCleanup = null\n }\n }\n },\n }),\n ),\n })\n\n return store\n}\n\nexport type Store = ReturnType<typeof configureReadWriteStore>\n"],"mappings":"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","names":["import_toolkit","configureReduxStore"]}
1
+ {"version":3,"sources":["../../../src/state/store.ts"],"sourcesContent":["import {\n type Middleware,\n type StoreEnhancer,\n type MiddlewareAPI,\n Tuple,\n configureStore as configureReduxStore,\n combineReducers,\n compose,\n} from '@reduxjs/toolkit'\n\nimport { ApiResourcesClient } from '../api/api-resources-client'\n\nimport { actionMiddleware, middlewareOptions, devToolsConfig } from './toolkit'\nimport { BuilderActionTypes } from './builder-api/actions'\nimport { HostActionTypes } from './host-api'\n\nimport * as Breakpoints from './modules/breakpoints'\n\nimport { readOnlyElementTreeMiddleware } from './middleware/read-only-element-tree'\nimport { makeswiftApiClientSyncMiddleware } from './middleware/makeswift-api-client-sync'\nimport { type BreakpointWatch, breakpointWatchMixin } from './mixins/breakpoint-watch'\n\nimport { type Action } from './actions'\n\nimport { type State as ReadWriteState } from './read-write-state'\nimport * as ReadOnlyState from './read-only-state'\nimport {\n type State,\n type Dispatch,\n type ReadOnlyReducer,\n type ReadWriteDispatch,\n} from './unified-state'\n\nexport { type State } from './unified-state'\n\nconst configureStore = <Items extends readonly StoreEnhancer[] = []>({\n name,\n preloadedState,\n enhancers,\n middleware,\n}: {\n name: string\n preloadedState: Partial<State>\n enhancers: () => Tuple<Items>\n middleware?: () => Middleware[]\n}) => {\n const store = configureReduxStore({\n reducer: combineReducers(ReadOnlyState.reducers),\n preloadedState,\n\n middleware: getDefaultMiddleware =>\n getDefaultMiddleware(middlewareOptions).concat([\n readOnlyElementTreeMiddleware(),\n ...(middleware ? middleware() : []),\n ]),\n\n enhancers: getDefaultEnhancers => getDefaultEnhancers().concat(enhancers()),\n\n devTools: devToolsConfig({\n name: `${name} (${new Date().toISOString()})`,\n actionsDenylist: [\n HostActionTypes.BUILDER_POINTER_MOVE,\n BuilderActionTypes.HANDLE_POINTER_MOVE,\n BuilderActionTypes.ELEMENT_FROM_POINT_CHANGE,\n ],\n }),\n })\n\n return store\n}\n\nexport function configureProtoStore({\n name,\n breakpoints,\n}: {\n name: string\n breakpoints: Breakpoints.Breakpoints | undefined\n}) {\n return configureStore({\n name,\n preloadedState: {\n breakpoints: Breakpoints.getInitialState(breakpoints),\n },\n enhancers: () => new Tuple(),\n })\n}\n\nexport type ProtoStore = ReturnType<typeof configureProtoStore>\n\ntype ReadWriteMiddleware = ReturnType<\n typeof import('./middleware/read-write').createReadWriteMiddleware\n>\n\ntype ReadWriteMiddlewareRef = {\n current: ReadWriteMiddleware | null\n}\n\nexport function conditionalReadWriteMiddleware(\n middlewareRef: ReadWriteMiddlewareRef,\n): Middleware<Dispatch, State, Dispatch> {\n let readWriteActionBuffer: Action[] = []\n let middlewares: ReadWriteMiddleware | null = null\n let enhancedDispatch: Dispatch | null = null\n\n return actionMiddleware(({ dispatch, getState }) => next => {\n return (action: Action) => {\n const state = getState()\n\n if (middlewareRef.current == null) {\n if (!state.isReadOnly) {\n // because switching to the read-write state is an asynchronous operation,\n // we need to buffer all actions dispatched after the isReadOnly state is\n // set to false but before the read-write middleware is installed\n readWriteActionBuffer.push(action)\n }\n\n return next(action)\n }\n\n if (state.isReadOnly) {\n console.error('Read-write state mismatch', {\n isReadOnly: state.isReadOnly,\n middlewareRef: middlewareRef.current,\n siteVersion: state.siteVersion,\n })\n }\n\n // build and cache the enhanced dispatch chain when read-write middleware is installed\n if (enhancedDispatch == null || middlewares !== middlewareRef.current) {\n middlewares = middlewareRef.current\n\n const middlewareApi = { dispatch, getState } as MiddlewareAPI<\n ReadWriteDispatch,\n ReadWriteState\n >\n\n enhancedDispatch = compose<Dispatch>(...middlewares.map(mw => mw(middlewareApi)))(next)\n }\n\n // dispatch buffered actions, if any\n if (readWriteActionBuffer.length > 0) {\n const readWriteActions = [...readWriteActionBuffer]\n readWriteActionBuffer = []\n\n // Note that we're rerunning the actions through the entire middleware chain,\n // including the read-only middleware and the reducers, some of which have\n // already processed these actions once. This is safe to do because actions that\n // are run as part of page initialization are idempotent.\n for (const bufferedAction of readWriteActions) {\n enhancedDispatch(bufferedAction)\n }\n }\n\n return enhancedDispatch(action)\n }\n })\n}\n\nexport interface ReadWriteStateMixin {\n readonly apiResourcesClient: ApiResourcesClient\n\n loadReadWriteStateIfNeeded(): Promise<() => void>\n}\n\nfunction withMixin<M extends {}>(mixin: M): StoreEnhancer<M> {\n return next => (reducer, preloadedState?) => ({\n ...next(reducer, preloadedState),\n ...mixin,\n })\n}\n\nexport function configureReadWriteStore({\n name,\n appOrigin,\n apiResourcesClient,\n preloadedState,\n}: {\n name: string\n appOrigin: string\n apiResourcesClient: ApiResourcesClient\n preloadedState: Partial<State>\n}) {\n const readWriteMiddlewareRef: ReadWriteMiddlewareRef = {\n current: null,\n }\n\n let refCount = 0\n let readWriteCleanup: (() => void) | null = null\n let readWriteSetupPromise: Promise<void> | null = null\n\n const loadReadWriteState = async (): Promise<void> => {\n if (readWriteCleanup != null) {\n return\n }\n\n if (readWriteSetupPromise != null) {\n await readWriteSetupPromise\n return\n }\n\n readWriteSetupPromise = (async () => {\n // import all the modules needed for read-write mode before proceeding with\n // the setup to avoid race conditions when `setup` is called concurrently\n // in two different page regions\n const { BuilderAPIProxy } = await import('./builder-api/proxy')\n const { createRootReducer, setupBuilderProxy } = await import('./read-write-state')\n const { createReadWriteMiddleware } = await import('./middleware/read-write')\n\n // IMPORTANT: only synchronous code after this point\n\n // with all modules imported, check if another concurrent setup already\n // initialized the read-write middleware\n if (readWriteMiddlewareRef.current != null) {\n return\n }\n\n store.replaceReducer(createRootReducer() as ReadOnlyReducer)\n\n const builderProxy = new BuilderAPIProxy({ appOrigin })\n readWriteMiddlewareRef.current = createReadWriteMiddleware({ builderProxy })\n\n const dispatch = store.dispatch as ReadWriteDispatch\n const builderProxyCleanup = dispatch(setupBuilderProxy(builderProxy))\n\n readWriteCleanup = () => {\n readWriteMiddlewareRef.current = null\n builderProxyCleanup()\n }\n })()\n\n try {\n await readWriteSetupPromise\n } finally {\n readWriteSetupPromise = null\n }\n }\n\n const store = configureStore({\n name,\n preloadedState,\n\n middleware: () => [\n makeswiftApiClientSyncMiddleware(apiResourcesClient),\n conditionalReadWriteMiddleware(readWriteMiddlewareRef),\n ],\n\n enhancers: () =>\n new Tuple(\n withMixin<BreakpointWatch>(\n breakpointWatchMixin({\n dispatch: (...args: Parameters<Dispatch>) => store.dispatch(...args),\n getState: (): State => store.getState(),\n subscribe: (listener): VoidFunction => store.subscribe(listener),\n }),\n ),\n\n withMixin<ReadWriteStateMixin>({\n apiResourcesClient,\n loadReadWriteStateIfNeeded: async () => {\n const { isReadOnly } = store.getState()\n\n if (isReadOnly) {\n if (refCount > 0) {\n console.error('Read-write state mismatch', { isReadOnly, refCount })\n }\n\n return () => {}\n }\n\n await loadReadWriteState()\n refCount += 1\n\n let didCleanup = false\n return () => {\n if (didCleanup) {\n return\n }\n\n didCleanup = true\n refCount -= 1\n if (refCount === 0 && readWriteCleanup != null) {\n readWriteCleanup()\n readWriteCleanup = null\n }\n }\n },\n }),\n ),\n })\n\n return store\n}\n\nexport type Store = ReturnType<typeof configureReadWriteStore>\n"],"mappings":"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","names":["import_toolkit","configureReduxStore"]}
@@ -0,0 +1,127 @@
1
+ import * as ApiClientState from "../state/api-client/state";
2
+ import {
3
+ APIResourceType
4
+ } from "./types";
5
+ const CacheData = {
6
+ empty() {
7
+ return {
8
+ apiResources: {},
9
+ localizedResourcesMap: {}
10
+ };
11
+ }
12
+ };
13
+ class ApiResourcesClient {
14
+ store;
15
+ subscribe;
16
+ constructor({ store }) {
17
+ this.store = store;
18
+ this.subscribe = this.store.subscribe;
19
+ }
20
+ readSwatch(swatchId) {
21
+ return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Swatch, swatchId);
22
+ }
23
+ resolveSwatch(swatchId) {
24
+ return this.resolveResource(APIResourceType.Swatch, {
25
+ id: swatchId,
26
+ read: (id) => this.readSwatch(id),
27
+ fetch: (id) => this.fetchSwatch(id)
28
+ });
29
+ }
30
+ readFile(fileId) {
31
+ return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.File, fileId);
32
+ }
33
+ resolveFile(fileId) {
34
+ return this.resolveResource(APIResourceType.File, {
35
+ id: fileId,
36
+ read: (id) => this.readFile(id),
37
+ fetch: (id) => this.fetchFile(id)
38
+ });
39
+ }
40
+ readTypography(typographyId) {
41
+ return ApiClientState.getAPIResource(
42
+ this.store.getState(),
43
+ APIResourceType.Typography,
44
+ typographyId
45
+ );
46
+ }
47
+ resolveTypography(typographyId) {
48
+ return this.resolveResource(APIResourceType.Typography, {
49
+ id: typographyId,
50
+ read: (id) => this.readTypography(id),
51
+ fetch: (id) => this.fetchTypography(id)
52
+ });
53
+ }
54
+ readGlobalElement(globalElementId) {
55
+ return ApiClientState.getAPIResource(
56
+ this.store.getState(),
57
+ APIResourceType.GlobalElement,
58
+ globalElementId
59
+ );
60
+ }
61
+ readLocalizedGlobalElement({
62
+ globalElementId,
63
+ locale
64
+ }) {
65
+ return ApiClientState.getAPIResource(
66
+ this.store.getState(),
67
+ APIResourceType.LocalizedGlobalElement,
68
+ globalElementId,
69
+ locale
70
+ );
71
+ }
72
+ readPagePathnameSlice({
73
+ pageId,
74
+ locale
75
+ }) {
76
+ return ApiClientState.getAPIResource(
77
+ this.store.getState(),
78
+ APIResourceType.PagePathnameSlice,
79
+ pageId,
80
+ locale
81
+ );
82
+ }
83
+ resolvePagePathnameSlice({
84
+ pageId,
85
+ locale
86
+ }) {
87
+ return this.resolveResource(APIResourceType.PagePathnameSlice, {
88
+ id: pageId,
89
+ read: (id) => this.readPagePathnameSlice({ pageId: id, locale }),
90
+ fetch: (id) => this.fetchPagePathnameSlice({ pageId: id, locale })
91
+ });
92
+ }
93
+ resolveResource(type, {
94
+ id,
95
+ read,
96
+ fetch
97
+ }) {
98
+ const _read = () => id != null ? read(id) : null;
99
+ let lastValue = null;
100
+ return {
101
+ name: `${type}:${id}`,
102
+ readStable: () => lastValue = _read(),
103
+ subscribe: (onUpdate) => this.subscribe(() => {
104
+ if (_read() !== lastValue)
105
+ onUpdate();
106
+ }),
107
+ fetch: async () => id != null ? fetch(id) : null
108
+ };
109
+ }
110
+ readTable(tableId) {
111
+ return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Table, tableId);
112
+ }
113
+ readSite(siteId) {
114
+ return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Site, siteId);
115
+ }
116
+ readPage(pageId) {
117
+ return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Page, pageId);
118
+ }
119
+ readSnippet(snippetId) {
120
+ return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Snippet, snippetId);
121
+ }
122
+ }
123
+ export {
124
+ ApiResourcesClient,
125
+ CacheData
126
+ };
127
+ //# sourceMappingURL=api-resources-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/api/api-resources-client.ts"],"sourcesContent":["import { type FetchableValue } from '@makeswift/controls'\n\nimport { type Store as ApiClientStore } from '../state/api-client/store'\nimport * as ApiClientState from '../state/api-client/state'\n\nimport {\n type File,\n type GlobalElement,\n type LocalizedGlobalElement,\n type Page,\n type PagePathnameSlice,\n type Site,\n type Snippet,\n type Swatch,\n type Table,\n type Typography,\n APIResourceType,\n} from './types'\n\nexport type CacheData = ApiClientState.SerializedState\n\nexport const CacheData = {\n empty(): CacheData {\n return {\n apiResources: {},\n localizedResourcesMap: {},\n }\n },\n}\nexport abstract class ApiResourcesClient {\n readonly store: ApiClientStore\n readonly subscribe: ApiClientStore['subscribe']\n\n constructor({ store }: { store: ApiClientStore }) {\n this.store = store\n this.subscribe = this.store.subscribe\n }\n\n abstract fetchSwatch(swatchId: string): Promise<Swatch | null>\n\n readSwatch(swatchId: string): Swatch | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Swatch, swatchId)\n }\n\n resolveSwatch(swatchId: string | undefined): FetchableValue<Swatch | null> {\n return this.resolveResource(APIResourceType.Swatch, {\n id: swatchId,\n read: id => this.readSwatch(id),\n fetch: id => this.fetchSwatch(id),\n })\n }\n\n abstract fetchFile(fileId: string): Promise<File | null>\n\n readFile(fileId: string): File | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.File, fileId)\n }\n\n resolveFile(fileId: string | undefined): FetchableValue<File | null> {\n return this.resolveResource(APIResourceType.File, {\n id: fileId,\n read: id => this.readFile(id),\n fetch: id => this.fetchFile(id),\n })\n }\n\n abstract fetchTypography(typographyId: string): Promise<Typography | null>\n\n readTypography(typographyId: string): Typography | null {\n return ApiClientState.getAPIResource(\n this.store.getState(),\n APIResourceType.Typography,\n typographyId,\n )\n }\n\n resolveTypography(typographyId: string | undefined): FetchableValue<Typography | null> {\n return this.resolveResource(APIResourceType.Typography, {\n id: typographyId,\n read: id => this.readTypography(id),\n fetch: id => this.fetchTypography(id),\n })\n }\n\n abstract fetchGlobalElement(globalElementId: string): Promise<GlobalElement | null>\n\n readGlobalElement(globalElementId: string): GlobalElement | null {\n return ApiClientState.getAPIResource(\n this.store.getState(),\n APIResourceType.GlobalElement,\n globalElementId,\n )\n }\n\n abstract fetchLocalizedGlobalElement({\n globalElementId,\n locale,\n }: {\n globalElementId: string\n locale: string\n }): Promise<LocalizedGlobalElement | null>\n\n readLocalizedGlobalElement({\n globalElementId,\n locale,\n }: {\n globalElementId: string\n locale: string\n }): LocalizedGlobalElement | null {\n return ApiClientState.getAPIResource(\n this.store.getState(),\n APIResourceType.LocalizedGlobalElement,\n globalElementId,\n locale,\n )\n }\n\n readPagePathnameSlice({\n pageId,\n locale,\n }: {\n pageId: string\n locale: string | null\n }): PagePathnameSlice | null {\n return ApiClientState.getAPIResource(\n this.store.getState(),\n APIResourceType.PagePathnameSlice,\n pageId,\n locale,\n )\n }\n\n abstract fetchPagePathnameSlice({\n pageId,\n locale,\n }: {\n pageId: string\n locale: string | null\n }): Promise<PagePathnameSlice | null>\n\n resolvePagePathnameSlice({\n pageId,\n locale,\n }: {\n pageId: string | undefined\n locale: string | null\n }): FetchableValue<PagePathnameSlice | null> {\n return this.resolveResource(APIResourceType.PagePathnameSlice, {\n id: pageId,\n read: id => this.readPagePathnameSlice({ pageId: id, locale }),\n fetch: id => this.fetchPagePathnameSlice({ pageId: id, locale }),\n })\n }\n\n resolveResource<R>(\n type: APIResourceType,\n {\n id,\n read,\n fetch,\n }: {\n id: string | undefined\n read: (id: string) => R | null\n fetch: (id: string) => Promise<R | null>\n },\n ): FetchableValue<R | null> {\n const _read = () => (id != null ? read(id) : null)\n let lastValue: R | null = null\n return {\n name: `${type}:${id}`,\n readStable: () => (lastValue = _read()),\n subscribe: (onUpdate: () => void) =>\n this.subscribe(() => {\n if (_read() !== lastValue) onUpdate()\n }),\n fetch: async () => (id != null ? fetch(id) : null),\n }\n }\n\n abstract fetchTable(tableId: string): Promise<Table | null>\n\n readTable(tableId: string): Table | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Table, tableId)\n }\n\n readSite(siteId: string): Site | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Site, siteId)\n }\n\n readPage(pageId: string): Page | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Page, pageId)\n }\n\n readSnippet(snippetId: string): Snippet | null {\n return ApiClientState.getAPIResource(this.store.getState(), APIResourceType.Snippet, snippetId)\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,215 +1,55 @@
1
- import * as MakeswiftApiClient from "../state/makeswift-api-client";
1
+ import { fetchAPIResource } from "../state/api-client/fetch-api-resource";
2
+ import { configureClientStore } from "../state/api-client/client-store";
2
3
  import {
3
4
  APIResourceType
4
5
  } from "./types";
5
- import { GraphQLClient } from "./graphql/client";
6
- import { CreateTableRecordMutation } from "./graphql/documents";
7
- const CacheData = {
8
- empty() {
9
- return {
10
- apiResources: {},
11
- localizedResourcesMap: {}
12
- };
13
- }
14
- };
15
- class MakeswiftHostApiClient {
16
- graphqlClient;
17
- makeswiftApiClient;
18
- subscribe;
6
+ import { ApiResourcesClient } from "./api-resources-client";
7
+ import { CacheData } from "./api-resources-client";
8
+ class MakeswiftHostApiClient extends ApiResourcesClient {
19
9
  fetch;
20
10
  constructor({
21
- uri,
22
11
  fetch,
23
12
  preloadedState
24
13
  }) {
25
- this.graphqlClient = new GraphQLClient(uri);
26
- this.makeswiftApiClient = MakeswiftApiClient.configureStore({ preloadedState });
14
+ super({
15
+ store: configureClientStore({ preloadedState })
16
+ });
27
17
  this.fetch = fetch;
28
- this.subscribe = this.makeswiftApiClient.subscribe;
29
- }
30
- readSwatch(swatchId) {
31
- return MakeswiftApiClient.getAPIResource(
32
- this.makeswiftApiClient.getState(),
33
- APIResourceType.Swatch,
34
- swatchId
35
- );
36
18
  }
37
19
  async fetchSwatch(swatchId) {
38
- return await this.makeswiftApiClient.dispatch(
39
- MakeswiftApiClient.fetchAPIResource(APIResourceType.Swatch, swatchId, this.fetch)
40
- );
41
- }
42
- resolveSwatch(swatchId) {
43
- return this.resolveResource(APIResourceType.Swatch, {
44
- id: swatchId,
45
- read: (id) => this.readSwatch(id),
46
- fetch: (id) => this.fetchSwatch(id)
47
- });
48
- }
49
- readFile(fileId) {
50
- return MakeswiftApiClient.getAPIResource(
51
- this.makeswiftApiClient.getState(),
52
- APIResourceType.File,
53
- fileId
54
- );
20
+ return await this.store.dispatch(fetchAPIResource(APIResourceType.Swatch, swatchId, this.fetch));
55
21
  }
56
22
  async fetchFile(fileId) {
57
- return await this.makeswiftApiClient.dispatch(
58
- MakeswiftApiClient.fetchAPIResource(APIResourceType.File, fileId, this.fetch)
59
- );
60
- }
61
- resolveFile(fileId) {
62
- return this.resolveResource(APIResourceType.File, {
63
- id: fileId,
64
- read: (id) => this.readFile(id),
65
- fetch: (id) => this.fetchFile(id)
66
- });
67
- }
68
- readTypography(typographyId) {
69
- return MakeswiftApiClient.getAPIResource(
70
- this.makeswiftApiClient.getState(),
71
- APIResourceType.Typography,
72
- typographyId
73
- );
23
+ return await this.store.dispatch(fetchAPIResource(APIResourceType.File, fileId, this.fetch));
74
24
  }
75
25
  async fetchTypography(typographyId) {
76
- return await this.makeswiftApiClient.dispatch(
77
- MakeswiftApiClient.fetchAPIResource(APIResourceType.Typography, typographyId, this.fetch)
78
- );
79
- }
80
- resolveTypography(typographyId) {
81
- return this.resolveResource(APIResourceType.Typography, {
82
- id: typographyId,
83
- read: (id) => this.readTypography(id),
84
- fetch: (id) => this.fetchTypography(id)
85
- });
86
- }
87
- readGlobalElement(globalElementId) {
88
- return MakeswiftApiClient.getAPIResource(
89
- this.makeswiftApiClient.getState(),
90
- APIResourceType.GlobalElement,
91
- globalElementId
26
+ return await this.store.dispatch(
27
+ fetchAPIResource(APIResourceType.Typography, typographyId, this.fetch)
92
28
  );
93
29
  }
94
30
  async fetchGlobalElement(globalElementId) {
95
- return await this.makeswiftApiClient.dispatch(
96
- MakeswiftApiClient.fetchAPIResource(
97
- APIResourceType.GlobalElement,
98
- globalElementId,
99
- this.fetch
100
- )
101
- );
102
- }
103
- readLocalizedGlobalElement({
104
- globalElementId,
105
- locale
106
- }) {
107
- return MakeswiftApiClient.getAPIResource(
108
- this.makeswiftApiClient.getState(),
109
- APIResourceType.LocalizedGlobalElement,
110
- globalElementId,
111
- locale
31
+ return await this.store.dispatch(
32
+ fetchAPIResource(APIResourceType.GlobalElement, globalElementId, this.fetch)
112
33
  );
113
34
  }
114
35
  async fetchLocalizedGlobalElement({
115
36
  globalElementId,
116
37
  locale
117
38
  }) {
118
- return await this.makeswiftApiClient.dispatch(
119
- MakeswiftApiClient.fetchAPIResource(
120
- APIResourceType.LocalizedGlobalElement,
121
- globalElementId,
122
- this.fetch,
123
- locale
124
- )
125
- );
126
- }
127
- readPagePathnameSlice({
128
- pageId,
129
- locale
130
- }) {
131
- return MakeswiftApiClient.getAPIResource(
132
- this.makeswiftApiClient.getState(),
133
- APIResourceType.PagePathnameSlice,
134
- pageId,
135
- locale
39
+ return await this.store.dispatch(
40
+ fetchAPIResource(APIResourceType.LocalizedGlobalElement, globalElementId, this.fetch, locale)
136
41
  );
137
42
  }
138
43
  async fetchPagePathnameSlice({
139
44
  pageId,
140
45
  locale
141
46
  }) {
142
- return await this.makeswiftApiClient.dispatch(
143
- MakeswiftApiClient.fetchAPIResource(
144
- APIResourceType.PagePathnameSlice,
145
- pageId,
146
- this.fetch,
147
- locale
148
- )
149
- );
150
- }
151
- resolvePagePathnameSlice({
152
- pageId,
153
- locale
154
- }) {
155
- return this.resolveResource(APIResourceType.PagePathnameSlice, {
156
- id: pageId,
157
- read: (id) => this.readPagePathnameSlice({ pageId: id, locale }),
158
- fetch: (id) => this.fetchPagePathnameSlice({ pageId: id, locale })
159
- });
160
- }
161
- resolveResource(type, {
162
- id,
163
- read,
164
- fetch
165
- }) {
166
- const _read = () => id != null ? read(id) : null;
167
- let lastValue = null;
168
- return {
169
- name: `${type}:${id}`,
170
- readStable: () => lastValue = _read(),
171
- subscribe: (onUpdate) => this.subscribe(() => {
172
- if (_read() !== lastValue)
173
- onUpdate();
174
- }),
175
- fetch: async () => id != null ? fetch(id) : null
176
- };
177
- }
178
- readTable(tableId) {
179
- return MakeswiftApiClient.getAPIResource(
180
- this.makeswiftApiClient.getState(),
181
- APIResourceType.Table,
182
- tableId
47
+ return await this.store.dispatch(
48
+ fetchAPIResource(APIResourceType.PagePathnameSlice, pageId, this.fetch, locale)
183
49
  );
184
50
  }
185
51
  async fetchTable(tableId) {
186
- return await this.makeswiftApiClient.dispatch(
187
- MakeswiftApiClient.fetchAPIResource(APIResourceType.Table, tableId, this.fetch)
188
- );
189
- }
190
- async createTableRecord(tableId, columns) {
191
- await this.graphqlClient.request(CreateTableRecordMutation, { input: { data: { tableId, columns } } });
192
- }
193
- readSite(siteId) {
194
- return MakeswiftApiClient.getAPIResource(
195
- this.makeswiftApiClient.getState(),
196
- APIResourceType.Site,
197
- siteId
198
- );
199
- }
200
- readPage(pageId) {
201
- return MakeswiftApiClient.getAPIResource(
202
- this.makeswiftApiClient.getState(),
203
- APIResourceType.Page,
204
- pageId
205
- );
206
- }
207
- readSnippet(snippetId) {
208
- return MakeswiftApiClient.getAPIResource(
209
- this.makeswiftApiClient.getState(),
210
- APIResourceType.Snippet,
211
- snippetId
212
- );
52
+ return await this.store.dispatch(fetchAPIResource(APIResourceType.Table, tableId, this.fetch));
213
53
  }
214
54
  }
215
55
  export {