@firfi/voila-sdk 0.1.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 (155) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +165 -0
  3. package/dist/src/domain/cart.d.ts +10 -0
  4. package/dist/src/domain/cart.d.ts.map +1 -0
  5. package/dist/src/domain/cart.js +14 -0
  6. package/dist/src/domain/cart.js.map +1 -0
  7. package/dist/src/domain/checkout-readiness.d.ts +3 -0
  8. package/dist/src/domain/checkout-readiness.d.ts.map +1 -0
  9. package/dist/src/domain/checkout-readiness.js +18 -0
  10. package/dist/src/domain/checkout-readiness.js.map +1 -0
  11. package/dist/src/domain/parse.d.ts +5 -0
  12. package/dist/src/domain/parse.d.ts.map +1 -0
  13. package/dist/src/domain/parse.js +11 -0
  14. package/dist/src/domain/parse.js.map +1 -0
  15. package/dist/src/domain/schemas/auth.d.ts +123 -0
  16. package/dist/src/domain/schemas/auth.d.ts.map +1 -0
  17. package/dist/src/domain/schemas/auth.js +36 -0
  18. package/dist/src/domain/schemas/auth.js.map +1 -0
  19. package/dist/src/domain/schemas/cart.d.ts +1224 -0
  20. package/dist/src/domain/schemas/cart.d.ts.map +1 -0
  21. package/dist/src/domain/schemas/cart.js +123 -0
  22. package/dist/src/domain/schemas/cart.js.map +1 -0
  23. package/dist/src/domain/schemas/category-page.d.ts +187 -0
  24. package/dist/src/domain/schemas/category-page.d.ts.map +1 -0
  25. package/dist/src/domain/schemas/category-page.js +43 -0
  26. package/dist/src/domain/schemas/category-page.js.map +1 -0
  27. package/dist/src/domain/schemas/category.d.ts +25 -0
  28. package/dist/src/domain/schemas/category.d.ts.map +1 -0
  29. package/dist/src/domain/schemas/category.js +30 -0
  30. package/dist/src/domain/schemas/category.js.map +1 -0
  31. package/dist/src/domain/schemas/checkout-summary.d.ts +1035 -0
  32. package/dist/src/domain/schemas/checkout-summary.d.ts.map +1 -0
  33. package/dist/src/domain/schemas/checkout-summary.js +103 -0
  34. package/dist/src/domain/schemas/checkout-summary.js.map +1 -0
  35. package/dist/src/domain/schemas/delivery-destination.d.ts +176 -0
  36. package/dist/src/domain/schemas/delivery-destination.d.ts.map +1 -0
  37. package/dist/src/domain/schemas/delivery-destination.js +52 -0
  38. package/dist/src/domain/schemas/delivery-destination.js.map +1 -0
  39. package/dist/src/domain/schemas/index.d.ts +13 -0
  40. package/dist/src/domain/schemas/index.d.ts.map +1 -0
  41. package/dist/src/domain/schemas/index.js +13 -0
  42. package/dist/src/domain/schemas/index.js.map +1 -0
  43. package/dist/src/domain/schemas/money.d.ts +18 -0
  44. package/dist/src/domain/schemas/money.d.ts.map +1 -0
  45. package/dist/src/domain/schemas/money.js +11 -0
  46. package/dist/src/domain/schemas/money.js.map +1 -0
  47. package/dist/src/domain/schemas/product.d.ts +230 -0
  48. package/dist/src/domain/schemas/product.d.ts.map +1 -0
  49. package/dist/src/domain/schemas/product.js +32 -0
  50. package/dist/src/domain/schemas/product.js.map +1 -0
  51. package/dist/src/domain/schemas/proposition.d.ts +746 -0
  52. package/dist/src/domain/schemas/proposition.d.ts.map +1 -0
  53. package/dist/src/domain/schemas/proposition.js +110 -0
  54. package/dist/src/domain/schemas/proposition.js.map +1 -0
  55. package/dist/src/domain/schemas/search.d.ts +31 -0
  56. package/dist/src/domain/schemas/search.d.ts.map +1 -0
  57. package/dist/src/domain/schemas/search.js +16 -0
  58. package/dist/src/domain/schemas/search.js.map +1 -0
  59. package/dist/src/domain/schemas/session.d.ts +1341 -0
  60. package/dist/src/domain/schemas/session.d.ts.map +1 -0
  61. package/dist/src/domain/schemas/session.js +140 -0
  62. package/dist/src/domain/schemas/session.js.map +1 -0
  63. package/dist/src/domain/schemas/slot.d.ts +844 -0
  64. package/dist/src/domain/schemas/slot.d.ts.map +1 -0
  65. package/dist/src/domain/schemas/slot.js +130 -0
  66. package/dist/src/domain/schemas/slot.js.map +1 -0
  67. package/dist/src/index.d.ts +26 -0
  68. package/dist/src/index.d.ts.map +1 -0
  69. package/dist/src/index.js +26 -0
  70. package/dist/src/index.js.map +1 -0
  71. package/dist/src/voila/browser-login-adapter.d.ts +108 -0
  72. package/dist/src/voila/browser-login-adapter.d.ts.map +1 -0
  73. package/dist/src/voila/browser-login-adapter.js +128 -0
  74. package/dist/src/voila/browser-login-adapter.js.map +1 -0
  75. package/dist/src/voila/browser-login.d.ts +32 -0
  76. package/dist/src/voila/browser-login.d.ts.map +1 -0
  77. package/dist/src/voila/browser-login.js +86 -0
  78. package/dist/src/voila/browser-login.js.map +1 -0
  79. package/dist/src/voila/cart-mutation.d.ts +23 -0
  80. package/dist/src/voila/cart-mutation.d.ts.map +1 -0
  81. package/dist/src/voila/cart-mutation.js +52 -0
  82. package/dist/src/voila/cart-mutation.js.map +1 -0
  83. package/dist/src/voila/cart-view.d.ts +14 -0
  84. package/dist/src/voila/cart-view.d.ts.map +1 -0
  85. package/dist/src/voila/cart-view.js +45 -0
  86. package/dist/src/voila/cart-view.js.map +1 -0
  87. package/dist/src/voila/catalog-search.d.ts +27 -0
  88. package/dist/src/voila/catalog-search.d.ts.map +1 -0
  89. package/dist/src/voila/catalog-search.js +40 -0
  90. package/dist/src/voila/catalog-search.js.map +1 -0
  91. package/dist/src/voila/categories.d.ts +4 -0
  92. package/dist/src/voila/categories.d.ts.map +1 -0
  93. package/dist/src/voila/categories.js +22 -0
  94. package/dist/src/voila/categories.js.map +1 -0
  95. package/dist/src/voila/category-products.d.ts +22 -0
  96. package/dist/src/voila/category-products.d.ts.map +1 -0
  97. package/dist/src/voila/category-products.js +32 -0
  98. package/dist/src/voila/category-products.js.map +1 -0
  99. package/dist/src/voila/checkout-summary.d.ts +15 -0
  100. package/dist/src/voila/checkout-summary.d.ts.map +1 -0
  101. package/dist/src/voila/checkout-summary.js +93 -0
  102. package/dist/src/voila/checkout-summary.js.map +1 -0
  103. package/dist/src/voila/checkout-urls.d.ts +11 -0
  104. package/dist/src/voila/checkout-urls.d.ts.map +1 -0
  105. package/dist/src/voila/checkout-urls.js +23 -0
  106. package/dist/src/voila/checkout-urls.js.map +1 -0
  107. package/dist/src/voila/delivery-destinations.d.ts +22 -0
  108. package/dist/src/voila/delivery-destinations.d.ts.map +1 -0
  109. package/dist/src/voila/delivery-destinations.js +70 -0
  110. package/dist/src/voila/delivery-destinations.js.map +1 -0
  111. package/dist/src/voila/guest-bootstrap.d.ts +40 -0
  112. package/dist/src/voila/guest-bootstrap.d.ts.map +1 -0
  113. package/dist/src/voila/guest-bootstrap.js +108 -0
  114. package/dist/src/voila/guest-bootstrap.js.map +1 -0
  115. package/dist/src/voila/headers.d.ts +5 -0
  116. package/dist/src/voila/headers.d.ts.map +1 -0
  117. package/dist/src/voila/headers.js +20 -0
  118. package/dist/src/voila/headers.js.map +1 -0
  119. package/dist/src/voila/http-client.d.ts +60 -0
  120. package/dist/src/voila/http-client.d.ts.map +1 -0
  121. package/dist/src/voila/http-client.js +124 -0
  122. package/dist/src/voila/http-client.js.map +1 -0
  123. package/dist/src/voila/initial-state.d.ts +19 -0
  124. package/dist/src/voila/initial-state.d.ts.map +1 -0
  125. package/dist/src/voila/initial-state.js +117 -0
  126. package/dist/src/voila/initial-state.js.map +1 -0
  127. package/dist/src/voila/session-health.d.ts +10 -0
  128. package/dist/src/voila/session-health.d.ts.map +1 -0
  129. package/dist/src/voila/session-health.js +176 -0
  130. package/dist/src/voila/session-health.js.map +1 -0
  131. package/dist/src/voila/session-snapshot.d.ts +41 -0
  132. package/dist/src/voila/session-snapshot.d.ts.map +1 -0
  133. package/dist/src/voila/session-snapshot.js +101 -0
  134. package/dist/src/voila/session-snapshot.js.map +1 -0
  135. package/dist/src/voila/session-storage.d.ts +22 -0
  136. package/dist/src/voila/session-storage.d.ts.map +1 -0
  137. package/dist/src/voila/session-storage.js +54 -0
  138. package/dist/src/voila/session-storage.js.map +1 -0
  139. package/dist/src/voila/shopping-context.d.ts +33 -0
  140. package/dist/src/voila/shopping-context.d.ts.map +1 -0
  141. package/dist/src/voila/shopping-context.js +159 -0
  142. package/dist/src/voila/shopping-context.js.map +1 -0
  143. package/dist/src/voila/slot-urls.d.ts +22 -0
  144. package/dist/src/voila/slot-urls.d.ts.map +1 -0
  145. package/dist/src/voila/slot-urls.js +51 -0
  146. package/dist/src/voila/slot-urls.js.map +1 -0
  147. package/dist/src/voila/slots.d.ts +41 -0
  148. package/dist/src/voila/slots.d.ts.map +1 -0
  149. package/dist/src/voila/slots.js +137 -0
  150. package/dist/src/voila/slots.js.map +1 -0
  151. package/dist/src/voila/urls.d.ts +114 -0
  152. package/dist/src/voila/urls.d.ts.map +1 -0
  153. package/dist/src/voila/urls.js +197 -0
  154. package/dist/src/voila/urls.js.map +1 -0
  155. package/package.json +66 -0
@@ -0,0 +1,176 @@
1
+ import { Either } from "effect";
2
+ import { parseJson, parseUnknown } from "../domain/parse.js";
3
+ import { ActiveCustomerSessionResponseSchema, SessionHealthSchema } from "../domain/schemas/index.js";
4
+ import { getHeaderValues, makeVoilaHeaders } from "./headers.js";
5
+ import { makeAuthenticatedSdkSessionSnapshot, makeGuestSdkSessionSnapshot, toughCookieJarPort } from "./session-snapshot.js";
6
+ import { makeActiveCustomerSessionRequest } from "./urls.js";
7
+ const emptyStringLength = 0;
8
+ const forbiddenStatus = 403;
9
+ const setCookieHeader = "set-cookie";
10
+ const successStatusMax = 300;
11
+ const successStatusMin = 200;
12
+ const unauthorizedStatus = 401;
13
+ const sessionHealthSnapshotInvalid = () => ({
14
+ _tag: "SessionHealthSnapshotInvalid",
15
+ message: "Session health could not build a typed SDK session snapshot"
16
+ });
17
+ const decodeSessionHealth = (health) => Either.mapLeft(parseUnknown(SessionHealthSchema, health), sessionHealthSnapshotInvalid);
18
+ const responseSaysAuthenticated = (response) => response.authenticated === true
19
+ || response.isAuthenticated === true
20
+ || response.customer?.authenticated === true
21
+ || response.status?.toLowerCase() === "authenticated"
22
+ || (typeof response.cartId === "string" && typeof response.regionId === "string");
23
+ const makeSdkSnapshotWithSession = (previous, session) => previous.kind === "authenticated"
24
+ ? Either.mapLeft(makeAuthenticatedSdkSessionSnapshot(session, previous.state, previous.account), sessionHealthSnapshotInvalid)
25
+ : Either.mapLeft(makeGuestSdkSessionSnapshot(session), sessionHealthSnapshotInvalid);
26
+ const makeActiveSession = (previous, response, session) => {
27
+ if (previous.kind === "authenticated" && !responseSaysAuthenticated(response)) {
28
+ return makeReauthRequired(previous, session);
29
+ }
30
+ return previous.kind === "authenticated"
31
+ ? Either.mapLeft(makeAuthenticatedSdkSessionSnapshot(session, "authenticated", previous.account), sessionHealthSnapshotInvalid).pipe(Either.flatMap((updatedSession) => decodeSessionHealth({
32
+ session: updatedSession,
33
+ status: "active"
34
+ })))
35
+ : Either.mapLeft(makeGuestSdkSessionSnapshot(session), sessionHealthSnapshotInvalid).pipe(Either.flatMap((updatedSession) => decodeSessionHealth({
36
+ session: updatedSession,
37
+ status: "active"
38
+ })));
39
+ };
40
+ const makeReauthRequired = (previous, session = previous.session) => previous.kind === "authenticated"
41
+ ? Either.mapLeft(makeAuthenticatedSdkSessionSnapshot(session, "reauth-required", previous.account), sessionHealthSnapshotInvalid).pipe(Either.flatMap((session) => decodeSessionHealth({
42
+ session,
43
+ status: "reauth-required"
44
+ })))
45
+ : Either.flatMap(makeGuestSdkSessionSnapshot(session), (updatedSession) => decodeSessionHealth({
46
+ session: updatedSession,
47
+ status: "unauthorized"
48
+ })).pipe(Either.mapLeft(sessionHealthSnapshotInvalid));
49
+ const isSuccessStatus = (status) => status >= successStatusMin && status < successStatusMax;
50
+ const isUnauthorizedStatus = (status) => status === unauthorizedStatus || status === forbiddenStatus;
51
+ const applySetCookieHeaders = (cookieJarPort, session, response) => {
52
+ const cookieHeaders = getHeaderValues(response.headers, setCookieHeader);
53
+ if (cookieHeaders.length === emptyStringLength) {
54
+ return Either.right(session);
55
+ }
56
+ const jar = cookieJarPort.deserialize(session.cookieJar);
57
+ if (Either.isLeft(jar)) {
58
+ return Either.left("persistence");
59
+ }
60
+ for (const cookie of cookieHeaders) {
61
+ try {
62
+ jar.right.setCookieSync(cookie, makeActiveCustomerSessionRequest().url.href);
63
+ }
64
+ catch {
65
+ return Either.left("persistence");
66
+ }
67
+ }
68
+ return Either.map(Either.mapLeft(cookieJarPort.serialize(jar.right), () => "persistence"), (cookieJar) => ({
69
+ ...session,
70
+ cookieJar
71
+ }));
72
+ };
73
+ const makeTransportHeaders = (cookieJarPort, session) => {
74
+ const jar = cookieJarPort.deserialize(session.cookieJar);
75
+ if (Either.isLeft(jar)) {
76
+ return Either.left("persistence");
77
+ }
78
+ const cookieHeader = jar.right.getCookieStringSync(makeActiveCustomerSessionRequest().url.href);
79
+ return Either.right({
80
+ ...makeVoilaHeaders(session.metadata, session.csrf.token),
81
+ ...(cookieHeader.length === emptyStringLength ? {} : { cookie: cookieHeader })
82
+ });
83
+ };
84
+ const requestActiveCustomerSession = async (session, transport, cookieJarPort) => {
85
+ if (session.csrf.token.trim().length === emptyStringLength) {
86
+ return {
87
+ _tag: "ActiveCustomerSessionUnauthorized",
88
+ session
89
+ };
90
+ }
91
+ const headers = makeTransportHeaders(cookieJarPort, session);
92
+ if (Either.isLeft(headers)) {
93
+ return {
94
+ _tag: "ActiveCustomerSessionRetry",
95
+ reason: "persistence",
96
+ session
97
+ };
98
+ }
99
+ const request = makeActiveCustomerSessionRequest();
100
+ let response;
101
+ try {
102
+ response = await transport.request({
103
+ headers: headers.right,
104
+ method: request.method,
105
+ url: request.url
106
+ });
107
+ }
108
+ catch {
109
+ return {
110
+ _tag: "ActiveCustomerSessionRetry",
111
+ reason: "network",
112
+ session
113
+ };
114
+ }
115
+ if (Either.isLeft(response)) {
116
+ return {
117
+ _tag: "ActiveCustomerSessionRetry",
118
+ reason: "network",
119
+ session
120
+ };
121
+ }
122
+ const updatedSession = applySetCookieHeaders(cookieJarPort, session, response.right);
123
+ if (Either.isLeft(updatedSession)) {
124
+ return {
125
+ _tag: "ActiveCustomerSessionRetry",
126
+ reason: "persistence",
127
+ session
128
+ };
129
+ }
130
+ if (isUnauthorizedStatus(response.right.status)) {
131
+ return {
132
+ _tag: "ActiveCustomerSessionUnauthorized",
133
+ session: updatedSession.right
134
+ };
135
+ }
136
+ if (!isSuccessStatus(response.right.status)) {
137
+ return {
138
+ _tag: "ActiveCustomerSessionRetry",
139
+ reason: "server",
140
+ session: updatedSession.right
141
+ };
142
+ }
143
+ const parsed = Either.flatMap(parseJson(response.right.body), (payload) => parseUnknown(ActiveCustomerSessionResponseSchema, payload));
144
+ if (Either.isLeft(parsed)) {
145
+ return {
146
+ _tag: "ActiveCustomerSessionSchemaChanged",
147
+ session: updatedSession.right
148
+ };
149
+ }
150
+ return {
151
+ _tag: "ActiveCustomerSessionOk",
152
+ session: updatedSession.right,
153
+ value: parsed.right
154
+ };
155
+ };
156
+ export const checkSessionHealth = async (snapshot, transport, cookieJarPort) => {
157
+ const result = await requestActiveCustomerSession(snapshot.session, transport, cookieJarPort ?? toughCookieJarPort);
158
+ switch (result._tag) {
159
+ case "ActiveCustomerSessionOk":
160
+ return makeActiveSession(snapshot, result.value, result.session);
161
+ case "ActiveCustomerSessionRetry":
162
+ return Either.flatMap(makeSdkSnapshotWithSession(snapshot, result.session), (updatedSnapshot) => decodeSessionHealth({
163
+ reason: result.reason,
164
+ session: updatedSnapshot,
165
+ status: "retry"
166
+ }));
167
+ case "ActiveCustomerSessionSchemaChanged":
168
+ return Either.flatMap(makeSdkSnapshotWithSession(snapshot, result.session), (updatedSnapshot) => decodeSessionHealth({
169
+ session: updatedSnapshot,
170
+ status: "schema-changed"
171
+ }));
172
+ case "ActiveCustomerSessionUnauthorized":
173
+ return makeReauthRequired(snapshot, result.session);
174
+ }
175
+ };
176
+ //# sourceMappingURL=session-health.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-health.js","sourceRoot":"","sources":["../../../src/voila/session-health.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import { Either } from "effect";
2
+ import { CookieJar } from "tough-cookie";
3
+ import { type AuthAccountSummary, type AuthenticatedSdkSessionSnapshot, type CsrfState, type GuestSdkSessionSnapshot, type SdkSessionSnapshot, type SdkSessionSnapshotDiagnostic, type SerializedCookieJarSnapshot, type SessionMetadata, type SessionSnapshot, type SessionSnapshotDiagnostic } from "../domain/schemas/index.js";
4
+ export type CookieJarPortError = {
5
+ readonly _tag: "CookieJarSerializationUnsupported";
6
+ } | {
7
+ readonly _tag: "CookieJarSerializationFailed";
8
+ readonly message: string;
9
+ } | {
10
+ readonly _tag: "CookieJarSnapshotSchemaMismatch";
11
+ readonly message: string;
12
+ } | {
13
+ readonly _tag: "CookieJarSnapshotImportFailed";
14
+ readonly message: string;
15
+ };
16
+ export interface CookieJarPort {
17
+ readonly create: () => CookieJar;
18
+ readonly deserialize: (snapshot: SerializedCookieJarSnapshot) => Either.Either<CookieJar, CookieJarPortError>;
19
+ readonly serialize: (jar: SerializableCookieJar) => Either.Either<SerializedCookieJarSnapshot, CookieJarPortError>;
20
+ }
21
+ export interface SerializableCookieJar {
22
+ readonly serializeSync: () => unknown;
23
+ }
24
+ export type SessionSnapshotError = CookieJarPortError | {
25
+ readonly _tag: "SessionSnapshotSchemaMismatch";
26
+ readonly message: string;
27
+ };
28
+ export declare const createCookieJar: () => CookieJar;
29
+ export declare const serializeCookieJar: (jar: SerializableCookieJar) => Either.Either<SerializedCookieJarSnapshot, CookieJarPortError>;
30
+ export declare const deserializeCookieJar: (snapshot: SerializedCookieJarSnapshot) => Either.Either<CookieJar, CookieJarPortError>;
31
+ export declare const toughCookieJarPort: CookieJarPort;
32
+ export declare const decodeSessionSnapshot: (input: unknown) => Either.Either<SessionSnapshot, SessionSnapshotError>;
33
+ export declare const decodeSdkSessionSnapshot: (input: unknown) => Either.Either<SdkSessionSnapshot, SessionSnapshotError>;
34
+ export declare const makeSessionSnapshot: (metadata: SessionMetadata, csrf: CsrfState, cookieJar: SerializedCookieJarSnapshot) => Either.Either<SessionSnapshot, SessionSnapshotError>;
35
+ export declare const makeGuestSdkSessionSnapshot: (session: SessionSnapshot) => Either.Either<GuestSdkSessionSnapshot, SessionSnapshotError>;
36
+ export declare const makeAuthenticatedSdkSessionSnapshot: (session: SessionSnapshot, state: AuthenticatedSdkSessionSnapshot["state"], account?: AuthAccountSummary) => Either.Either<AuthenticatedSdkSessionSnapshot, SessionSnapshotError>;
37
+ export declare const redactSessionSnapshot: (snapshot: SessionSnapshot) => SessionSnapshotDiagnostic;
38
+ export declare const formatSessionSnapshotDiagnostic: (snapshot: SessionSnapshot) => string;
39
+ export declare const redactSdkSessionSnapshot: (snapshot: SdkSessionSnapshot) => SdkSessionSnapshotDiagnostic;
40
+ export declare const formatSdkSessionSnapshotDiagnostic: (snapshot: SdkSessionSnapshot) => string;
41
+ //# sourceMappingURL=session-snapshot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-snapshot.d.ts","sourceRoot":"","sources":["../../../src/voila/session-snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ import { Either } from "effect";
2
+ import { CookieJar } from "tough-cookie";
3
+ import { parseUnknown } from "../domain/parse.js";
4
+ import { AuthenticatedSdkSessionSnapshotSchema, GuestSdkSessionSnapshotSchema, SdkSessionSnapshotDiagnosticSchema, SdkSessionSnapshotSchema, SerializedCookieJarSnapshotSchema, SessionSnapshotDiagnosticSchema, SessionSnapshotSchema } from "../domain/schemas/index.js";
5
+ const cookieJarSerializationUnsupported = () => ({
6
+ _tag: "CookieJarSerializationUnsupported"
7
+ });
8
+ const cookieJarSerializationFailed = (_cause) => ({
9
+ _tag: "CookieJarSerializationFailed",
10
+ message: "Cookie jar serialization failed"
11
+ });
12
+ const cookieJarSnapshotSchemaMismatch = () => ({
13
+ _tag: "CookieJarSnapshotSchemaMismatch",
14
+ message: "Serialized cookie jar snapshot does not match the SDK schema"
15
+ });
16
+ const cookieJarSnapshotImportFailed = (_cause) => ({
17
+ _tag: "CookieJarSnapshotImportFailed",
18
+ message: "Cookie jar snapshot import failed"
19
+ });
20
+ const sessionSnapshotSchemaMismatch = () => ({
21
+ _tag: "SessionSnapshotSchemaMismatch",
22
+ message: "Session snapshot does not match the SDK schema"
23
+ });
24
+ export const createCookieJar = () => new CookieJar();
25
+ export const serializeCookieJar = (jar) => {
26
+ let snapshot;
27
+ try {
28
+ snapshot = jar.serializeSync();
29
+ }
30
+ catch (error) {
31
+ return Either.left(cookieJarSerializationFailed(error));
32
+ }
33
+ if (snapshot === undefined) {
34
+ return Either.left(cookieJarSerializationUnsupported());
35
+ }
36
+ return Either.mapLeft(parseUnknown(SerializedCookieJarSnapshotSchema, snapshot), cookieJarSnapshotSchemaMismatch);
37
+ };
38
+ export const deserializeCookieJar = (snapshot) => {
39
+ try {
40
+ return Either.right(CookieJar.deserializeSync(JSON.stringify(snapshot)));
41
+ }
42
+ catch (error) {
43
+ return Either.left(cookieJarSnapshotImportFailed(error));
44
+ }
45
+ };
46
+ export const toughCookieJarPort = {
47
+ create: createCookieJar,
48
+ deserialize: deserializeCookieJar,
49
+ serialize: serializeCookieJar
50
+ };
51
+ export const decodeSessionSnapshot = (input) => Either.mapLeft(parseUnknown(SessionSnapshotSchema, input), sessionSnapshotSchemaMismatch);
52
+ export const decodeSdkSessionSnapshot = (input) => Either.mapLeft(parseUnknown(SdkSessionSnapshotSchema, input), sessionSnapshotSchemaMismatch);
53
+ export const makeSessionSnapshot = (metadata, csrf, cookieJar) => decodeSessionSnapshot({
54
+ cookieJar,
55
+ csrf,
56
+ metadata
57
+ });
58
+ export const makeGuestSdkSessionSnapshot = (session) => Either.mapLeft(parseUnknown(GuestSdkSessionSnapshotSchema, {
59
+ kind: "guest",
60
+ session
61
+ }), sessionSnapshotSchemaMismatch);
62
+ export const makeAuthenticatedSdkSessionSnapshot = (session, state, account) => Either.mapLeft(parseUnknown(AuthenticatedSdkSessionSnapshotSchema, {
63
+ ...(account === undefined ? {} : { account }),
64
+ kind: "authenticated",
65
+ session,
66
+ state
67
+ }), sessionSnapshotSchemaMismatch);
68
+ const redactSessionMetadata = (metadata) => ({
69
+ assetVersion: metadata.assetVersion,
70
+ clientRouteId: "[redacted]",
71
+ pageViewId: "[redacted]",
72
+ regionId: metadata.regionId
73
+ });
74
+ export const redactSessionSnapshot = (snapshot) => Either.getOrThrow(parseUnknown(SessionSnapshotDiagnosticSchema, {
75
+ cookieJar: {
76
+ cookieCount: snapshot.cookieJar.cookies.length,
77
+ storeType: snapshot.cookieJar.storeType,
78
+ version: snapshot.cookieJar.version
79
+ },
80
+ csrf: "[redacted]",
81
+ metadata: redactSessionMetadata(snapshot.metadata)
82
+ }));
83
+ export const formatSessionSnapshotDiagnostic = (snapshot) => JSON.stringify(redactSessionSnapshot(snapshot));
84
+ const redactAccountSummary = (account) => account === undefined
85
+ ? undefined
86
+ : {
87
+ ...(account.displayName === undefined ? {} : { displayName: "[redacted]" }),
88
+ ...(account.emailHint === undefined ? {} : { emailHint: "[redacted]" }),
89
+ ...(account.stableAccountIdHash === undefined ? {} : { stableAccountIdHash: "[redacted]" })
90
+ };
91
+ export const redactSdkSessionSnapshot = (snapshot) => Either.getOrThrow(parseUnknown(SdkSessionSnapshotDiagnosticSchema, {
92
+ ...redactSessionSnapshot(snapshot.session),
93
+ ...(() => {
94
+ const account = snapshot.kind === "authenticated" ? redactAccountSummary(snapshot.account) : undefined;
95
+ return account === undefined ? {} : { account };
96
+ })(),
97
+ kind: snapshot.kind,
98
+ state: snapshot.kind === "authenticated" ? snapshot.state : "guest"
99
+ }));
100
+ export const formatSdkSessionSnapshotDiagnostic = (snapshot) => JSON.stringify(redactSdkSessionSnapshot(snapshot));
101
+ //# sourceMappingURL=session-snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-snapshot.js","sourceRoot":"","sources":["../../../src/voila/session-snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Either } from "effect";
2
+ import { type SdkSessionSnapshot } from "../domain/schemas/index.js";
3
+ export interface SessionStoragePort {
4
+ readonly read: () => Promise<unknown>;
5
+ readonly write: (contents: string) => Promise<unknown>;
6
+ }
7
+ export type SessionStorageError = {
8
+ readonly _tag: "SessionStorageSnapshotInvalid";
9
+ readonly message: string;
10
+ } | {
11
+ readonly _tag: "SessionStorageWriteFailure";
12
+ readonly message: string;
13
+ } | {
14
+ readonly _tag: "SessionStorageReadFailure";
15
+ readonly message: string;
16
+ } | {
17
+ readonly _tag: "SessionStorageContentsInvalid";
18
+ readonly message: string;
19
+ };
20
+ export declare const saveSdkSessionSnapshot: (storage: SessionStoragePort, snapshot: unknown) => Promise<Either.Either<undefined, SessionStorageError>>;
21
+ export declare const loadSdkSessionSnapshot: (storage: SessionStoragePort) => Promise<Either.Either<SdkSessionSnapshot, SessionStorageError>>;
22
+ //# sourceMappingURL=session-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-storage.d.ts","sourceRoot":"","sources":["../../../src/voila/session-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAU,MAAM,QAAQ,CAAA;AAGvC,OAAO,EAAE,KAAK,kBAAkB,EAA4B,MAAM,4BAA4B,CAAA;AAE9F,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IACrC,QAAQ,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACvD;AAED,MAAM,MAAM,mBAAmB,GAC3B;IACA,QAAQ,CAAC,IAAI,EAAE,+BAA+B,CAAA;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,GACC;IACA,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAA;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,GACC;IACA,QAAQ,CAAC,IAAI,EAAE,2BAA2B,CAAA;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,GACC;IACA,QAAQ,CAAC,IAAI,EAAE,+BAA+B,CAAA;IAC9C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAsBH,eAAO,MAAM,sBAAsB,GACjC,SAAS,kBAAkB,EAC3B,UAAU,OAAO,KAChB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC,CA0BvD,CAAA;AAED,eAAO,MAAM,sBAAsB,GACjC,SAAS,kBAAkB,KAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,EAAE,mBAAmB,CAAC,CAuBhE,CAAA"}
@@ -0,0 +1,54 @@
1
+ import { Either, Schema } from "effect";
2
+ import { parseJson, parseUnknown } from "../domain/parse.js";
3
+ import { SdkSessionSnapshotSchema } from "../domain/schemas/index.js";
4
+ const sessionStorageSnapshotInvalid = () => ({
5
+ _tag: "SessionStorageSnapshotInvalid",
6
+ message: "Session snapshot does not match the SDK schema"
7
+ });
8
+ const sessionStorageWriteFailure = () => ({
9
+ _tag: "SessionStorageWriteFailure",
10
+ message: "Session snapshot could not be written"
11
+ });
12
+ const sessionStorageReadFailure = () => ({
13
+ _tag: "SessionStorageReadFailure",
14
+ message: "Session snapshot could not be read"
15
+ });
16
+ const sessionStorageContentsInvalid = () => ({
17
+ _tag: "SessionStorageContentsInvalid",
18
+ message: "Stored session snapshot is corrupt or stale"
19
+ });
20
+ export const saveSdkSessionSnapshot = async (storage, snapshot) => {
21
+ const decoded = Either.mapLeft(parseUnknown(SdkSessionSnapshotSchema, snapshot), sessionStorageSnapshotInvalid);
22
+ if (Either.isLeft(decoded)) {
23
+ return Either.left(decoded.left);
24
+ }
25
+ const encoded = Either.mapLeft(Schema.encodeEither(SdkSessionSnapshotSchema)(decoded.right), sessionStorageSnapshotInvalid);
26
+ if (Either.isLeft(encoded)) {
27
+ return Either.left(encoded.left);
28
+ }
29
+ try {
30
+ await storage.write(JSON.stringify(encoded.right));
31
+ return Either.right(undefined);
32
+ }
33
+ catch {
34
+ return Either.left(sessionStorageWriteFailure());
35
+ }
36
+ };
37
+ export const loadSdkSessionSnapshot = async (storage) => {
38
+ let contents;
39
+ try {
40
+ contents = await storage.read();
41
+ }
42
+ catch {
43
+ return Either.left(sessionStorageReadFailure());
44
+ }
45
+ if (typeof contents !== "string") {
46
+ return Either.left(sessionStorageContentsInvalid());
47
+ }
48
+ const parsed = Either.mapLeft(parseJson(contents), sessionStorageContentsInvalid);
49
+ if (Either.isLeft(parsed)) {
50
+ return Either.left(parsed.left);
51
+ }
52
+ return Either.mapLeft(parseUnknown(SdkSessionSnapshotSchema, parsed.right), sessionStorageContentsInvalid);
53
+ };
54
+ //# sourceMappingURL=session-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-storage.js","sourceRoot":"","sources":["../../../src/voila/session-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEvC,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAA2B,wBAAwB,EAAE,MAAM,4BAA4B,CAAA;AAyB9F,MAAM,6BAA6B,GAAG,GAAwB,EAAE,CAAC,CAAC;IAChE,IAAI,EAAE,+BAA+B;IACrC,OAAO,EAAE,gDAAgD;CAC1D,CAAC,CAAA;AAEF,MAAM,0BAA0B,GAAG,GAAwB,EAAE,CAAC,CAAC;IAC7D,IAAI,EAAE,4BAA4B;IAClC,OAAO,EAAE,uCAAuC;CACjD,CAAC,CAAA;AAEF,MAAM,yBAAyB,GAAG,GAAwB,EAAE,CAAC,CAAC;IAC5D,IAAI,EAAE,2BAA2B;IACjC,OAAO,EAAE,oCAAoC;CAC9C,CAAC,CAAA;AAEF,MAAM,6BAA6B,GAAG,GAAwB,EAAE,CAAC,CAAC;IAChE,IAAI,EAAE,+BAA+B;IACrC,OAAO,EAAE,6CAA6C;CACvD,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACzC,OAA2B,EAC3B,QAAiB,EACuC,EAAE;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAC5B,YAAY,CAAC,wBAAwB,EAAE,QAAQ,CAAC,EAChD,6BAA6B,CAC9B,CAAA;IAED,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAC5B,MAAM,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAC5D,6BAA6B,CAC9B,CAAA;IAED,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;QAElD,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAA;IAClD,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,EACzC,OAA2B,EACsC,EAAE;IACnE,IAAI,QAAiB,CAAA;IAErB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAA;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAA;IACjD,CAAC;IAED,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,6BAA6B,CAAC,CAAA;IAEjF,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,CACnB,YAAY,CAAC,wBAAwB,EAAE,MAAM,CAAC,KAAK,CAAC,EACpD,6BAA6B,CAC9B,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,33 @@
1
+ import { Either } from "effect";
2
+ import { type ActiveShoppingContextResponse, type DeliveryContextChangeResult, type DeliveryContextPreviewResponse, type DeliveryPropositionDetailsResponse, type NormalizedActiveShoppingContext, type NormalizedDeliveryContextPreview, type NormalizedDeliveryPropositionDetails, type SessionSnapshot } from "../domain/schemas/index.js";
3
+ import type { VoilaJsonResult, VoilaSdkError, VoilaTransport } from "./http-client.js";
4
+ import type { CookieJarPort } from "./session-snapshot.js";
5
+ import type { ActiveShoppingContextRequestError, ApplyDeliveryContextChangeRequestError, DeliveryContextPreviewRequestError, DeliveryPropositionDetailsRequestError, SetActiveCartPropositionRequestError, SetActiveDeliveryDestinationRequestError } from "./urls.js";
6
+ export type ShoppingContextNormalizationError = {
7
+ readonly _tag: "ShoppingContextSchemaMismatch";
8
+ readonly message: string;
9
+ };
10
+ export type GetActiveShoppingContextError = ActiveShoppingContextRequestError | VoilaSdkError;
11
+ export type GetActiveShoppingContextResult = VoilaJsonResult<NormalizedActiveShoppingContext>;
12
+ export type GetDeliveryPropositionDetailsError = DeliveryPropositionDetailsRequestError | VoilaSdkError;
13
+ export type GetDeliveryPropositionDetailsResult = VoilaJsonResult<NormalizedDeliveryPropositionDetails>;
14
+ export type PreviewDeliveryContextChangeError = DeliveryContextPreviewRequestError | VoilaSdkError;
15
+ export type PreviewDeliveryContextChangeResult = VoilaJsonResult<NormalizedDeliveryContextPreview>;
16
+ export type SetActiveDeliveryDestinationContextError = SetActiveDeliveryDestinationRequestError | VoilaSdkError;
17
+ export type SetActiveCartPropositionContextError = SetActiveCartPropositionRequestError | VoilaSdkError;
18
+ export type SetActiveShoppingContextResult = VoilaJsonResult<NormalizedActiveShoppingContext>;
19
+ export type ApplyDeliveryContextChangeError = ApplyDeliveryContextChangeRequestError | DeliveryContextPreviewRequestError | SetActiveCartPropositionRequestError | SetActiveDeliveryDestinationRequestError | ShoppingContextNormalizationError | VoilaSdkError;
20
+ export type ApplyDeliveryContextChangeResult = VoilaJsonResult<DeliveryContextChangeResult>;
21
+ export declare const normalizeActiveShoppingContext: (response: ActiveShoppingContextResponse) => NormalizedActiveShoppingContext;
22
+ export declare const normalizeDeliveryPropositionDetailsResponse: (response: DeliveryPropositionDetailsResponse) => NormalizedDeliveryPropositionDetails;
23
+ export declare const normalizeDeliveryContextPreviewResponse: (response: DeliveryContextPreviewResponse) => NormalizedDeliveryContextPreview;
24
+ export declare const parseActiveShoppingContextResponse: (input: unknown) => Either.Either<NormalizedActiveShoppingContext, ShoppingContextNormalizationError>;
25
+ export declare const parseDeliveryPropositionDetailsResponse: (input: unknown) => Either.Either<NormalizedDeliveryPropositionDetails, ShoppingContextNormalizationError>;
26
+ export declare const parseDeliveryContextPreviewResponse: (input: unknown) => Either.Either<NormalizedDeliveryContextPreview, ShoppingContextNormalizationError>;
27
+ export declare const getActiveShoppingContext: (session: SessionSnapshot, input: unknown, transport: VoilaTransport, cookieJarPort?: CookieJarPort) => Promise<Either.Either<GetActiveShoppingContextResult, GetActiveShoppingContextError>>;
28
+ export declare const getDeliveryPropositionDetails: (session: SessionSnapshot, input: unknown, transport: VoilaTransport, cookieJarPort?: CookieJarPort) => Promise<Either.Either<GetDeliveryPropositionDetailsResult, GetDeliveryPropositionDetailsError>>;
29
+ export declare const previewDeliveryContextChange: (session: SessionSnapshot, input: unknown, transport: VoilaTransport, cookieJarPort?: CookieJarPort) => Promise<Either.Either<PreviewDeliveryContextChangeResult, PreviewDeliveryContextChangeError>>;
30
+ export declare const setActiveDeliveryDestinationContext: (session: SessionSnapshot, input: unknown, transport: VoilaTransport, cookieJarPort?: CookieJarPort) => Promise<Either.Either<SetActiveShoppingContextResult, SetActiveDeliveryDestinationContextError>>;
31
+ export declare const setActiveCartPropositionContext: (session: SessionSnapshot, input: unknown, transport: VoilaTransport, cookieJarPort?: CookieJarPort) => Promise<Either.Either<SetActiveShoppingContextResult, SetActiveCartPropositionContextError>>;
32
+ export declare const applyDeliveryContextChange: (session: SessionSnapshot, input: unknown, transport: VoilaTransport, cookieJarPort?: CookieJarPort) => Promise<Either.Either<ApplyDeliveryContextChangeResult, ApplyDeliveryContextChangeError>>;
33
+ //# sourceMappingURL=shopping-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shopping-context.d.ts","sourceRoot":"","sources":["../../../src/voila/shopping-context.ts"],"names":[],"mappings":"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"}