@curless/hotel-storefront 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/dist/__tests__/card-contract.test.js +13 -0
  2. package/dist/__tests__/card-contract.test.js.map +1 -1
  3. package/dist/__tests__/data.test.js +28 -3
  4. package/dist/__tests__/data.test.js.map +1 -1
  5. package/dist/__tests__/demo-hotels.test.js +25 -11
  6. package/dist/__tests__/demo-hotels.test.js.map +1 -1
  7. package/dist/__tests__/present.test.d.ts +2 -0
  8. package/dist/__tests__/present.test.d.ts.map +1 -0
  9. package/dist/__tests__/present.test.js +140 -0
  10. package/dist/__tests__/present.test.js.map +1 -0
  11. package/dist/__tests__/server.test.js +63 -4
  12. package/dist/__tests__/server.test.js.map +1 -1
  13. package/dist/__tests__/tools.test.js +129 -0
  14. package/dist/__tests__/tools.test.js.map +1 -1
  15. package/dist/backend.d.ts +30 -6
  16. package/dist/backend.d.ts.map +1 -1
  17. package/dist/card.generated.d.ts +1 -1
  18. package/dist/card.generated.js +2 -2
  19. package/dist/card.generated.js.map +1 -1
  20. package/dist/config.d.ts +11 -0
  21. package/dist/config.d.ts.map +1 -1
  22. package/dist/config.js +7 -0
  23. package/dist/config.js.map +1 -1
  24. package/dist/data.d.ts.map +1 -1
  25. package/dist/data.js +88 -13
  26. package/dist/data.js.map +1 -1
  27. package/dist/demo-hotels.d.ts +24 -1
  28. package/dist/demo-hotels.d.ts.map +1 -1
  29. package/dist/demo-hotels.js +136 -13
  30. package/dist/demo-hotels.js.map +1 -1
  31. package/dist/fence.d.ts +9 -3
  32. package/dist/fence.d.ts.map +1 -1
  33. package/dist/fence.js +0 -0
  34. package/dist/fence.js.map +1 -1
  35. package/dist/index.js +0 -0
  36. package/dist/members.d.ts +14 -0
  37. package/dist/members.d.ts.map +1 -0
  38. package/dist/members.js +56 -0
  39. package/dist/members.js.map +1 -0
  40. package/dist/present.d.ts +129 -0
  41. package/dist/present.d.ts.map +1 -0
  42. package/dist/present.js +188 -0
  43. package/dist/present.js.map +1 -0
  44. package/dist/server.d.ts +27 -10
  45. package/dist/server.d.ts.map +1 -1
  46. package/dist/server.js +27 -7
  47. package/dist/server.js.map +1 -1
  48. package/dist/surface.d.ts.map +1 -1
  49. package/dist/surface.js +27 -2
  50. package/dist/surface.js.map +1 -1
  51. package/dist/tools.d.ts +174 -1
  52. package/dist/tools.d.ts.map +1 -1
  53. package/dist/tools.js +464 -50
  54. package/dist/tools.js.map +1 -1
  55. package/dist/types.d.ts +57 -1
  56. package/dist/types.d.ts.map +1 -1
  57. package/dist/vocab.d.ts +1 -1
  58. package/dist/vocab.d.ts.map +1 -1
  59. package/dist/vocab.js +1 -1
  60. package/dist/vocab.js.map +1 -1
  61. package/package.json +11 -9
@@ -2,6 +2,7 @@ import { fileURLToPath } from 'node:url';
2
2
  import { beforeEach, describe, expect, it } from 'vitest';
3
3
  import { loadHotelData } from '../data.js';
4
4
  import { createDemoHotels } from '../demo-hotels.js';
5
+ import { MemberStore } from '../members.js';
5
6
  import { handleTool } from '../tools.js';
6
7
  import { TripStore } from '../trip.js';
7
8
  import { resolveBrand } from '../vocab.js';
@@ -29,6 +30,7 @@ beforeEach(() => {
29
30
  deps = {
30
31
  backend: createDemoHotels({ data: DATA, now: () => clock, rng: () => 0.5 }),
31
32
  trips: new TripStore(() => clock),
33
+ members: new MemberStore(() => clock),
32
34
  tools: t,
33
35
  vocab: brand.vocab,
34
36
  };
@@ -75,6 +77,49 @@ describe('one hotel', () => {
75
77
  });
76
78
  expect(res.text).toContain('incl. taxes and fees');
77
79
  });
80
+ // ⚠️ The room count FILTERS, it does not just ride along. A guest who needs
81
+ // two rooms and is shown a type with one left finds out when the trip drops
82
+ // the line - later, and after they thought it was settled.
83
+ it('leaves out the room types that cannot supply the rooms asked for', async () => {
84
+ const one = await call(t.getHotel, { hotel: 'hong-kong-island', ...STAY });
85
+ expect(one.structured.rooms.map((r) => r.id)).toContain('suite');
86
+ // The Island Suite has one left; the Horizon Club has two.
87
+ const two = await call(t.getHotel, { hotel: 'hong-kong-island', ...STAY, rooms: 2 });
88
+ const ids = two.structured.rooms.map((r) => r.id);
89
+ expect(ids).not.toContain('suite');
90
+ expect(ids).toContain('horizon-club');
91
+ expect(two.structured.rooms_wanted).toBe(2);
92
+ expect(two.text).toContain('2 rooms');
93
+ });
94
+ // ⚠️ robin picked two rooms and the price did not move: the card was still
95
+ // showing one room's total, and nothing on it said so.
96
+ it('prices the rooms actually asked for, per room and in total', async () => {
97
+ const one = await call(t.getHotel, { hotel: 'hong-kong-island', ...STAY });
98
+ const oneRoom = one.structured.rooms.find((r) => r.id === 'deluxe-city');
99
+ expect(oneRoom?.stayTotal).toBe('HK$8,588');
100
+ expect(oneRoom?.roomsTotal).toBeUndefined();
101
+ const two = await call(t.getHotel, { hotel: 'hong-kong-island', ...STAY, rooms: 2 });
102
+ const twoRooms = two.structured.rooms.find((r) => r.id === 'deluxe-city');
103
+ // Per room is unchanged; the total is what two of them cost.
104
+ expect(twoRooms?.stayTotal).toBe('HK$8,588');
105
+ expect(twoRooms?.roomsTotal).toBe('HK$17,176');
106
+ expect(two.text).toContain('HK$17,176 for 2 rooms');
107
+ });
108
+ it('says so plainly once the held rooms mean nothing can supply that many', async () => {
109
+ // Island's largest type has six; two held leaves four, and four is under
110
+ // the five being asked for. Held inventory changing what a room count can
111
+ // supply is the real path here, so the test walks it rather than inventing
112
+ // a thinner hotel.
113
+ await call(t.addToTrip, { hotel: 'hong-kong-island', room: 'deluxe-city', ...STAY, rooms: 2 });
114
+ await call(t.requestBooking, { name: 'Robin Ruan', email: 'robin@example.com' });
115
+ const res = await call(t.getHotel, { hotel: 'hong-kong-island', ...STAY, rooms: 5 });
116
+ expect(res.structured.view).toBe('no-rooms');
117
+ expect(res.text).toContain('No room type at Island Shangri-La');
118
+ expect(res.text).toContain('5');
119
+ // Four is still there, which is the other half of the same fact.
120
+ const four = await call(t.getHotel, { hotel: 'hong-kong-island', ...STAY, rooms: 4 });
121
+ expect(four.structured.view).toBe('hotel');
122
+ });
78
123
  it('hands back the hotel’s own reason instead of a room that does not fit', async () => {
79
124
  const res = await call(t.getHotel, { hotel: 'hong-kong-island', ...STAY, guests: 6 });
80
125
  expect(res.structured.view).toBe('no-rooms');
@@ -134,6 +179,23 @@ describe('building a trip', () => {
134
179
  guests: 2,
135
180
  });
136
181
  });
182
+ // ⚠️ The line used to go in and then be dropped from every total from then
183
+ // on: the guest carried something that never counted and never said why.
184
+ it('refuses a hotel in another currency at the door, leaving the trip alone', async () => {
185
+ await call(t.addToTrip, { hotel: 'hong-kong-island', room: 'deluxe-city', ...STAY });
186
+ const clash = await call(t.addToTrip, {
187
+ hotel: 'shanghai-pudong',
188
+ room: 'deluxe-city',
189
+ ...STAY,
190
+ });
191
+ expect(clash.structured.view).toBe('error');
192
+ expect(clash.structured.error).toBe('mixed-currency');
193
+ expect(clash.text).toContain('HKD');
194
+ expect(clash.text).toContain('CNY');
195
+ const trip = await call(t.viewTrip);
196
+ expect(trip.structured.lines).toHaveLength(1);
197
+ expect(trip.structured.dropped).toBeUndefined();
198
+ });
137
199
  it('names the room types it does have when the one asked for is not among them', async () => {
138
200
  const res = await call(t.addToTrip, {
139
201
  hotel: 'hong-kong-island',
@@ -160,6 +222,21 @@ describe('asking for the rooms', () => {
160
222
  await book();
161
223
  expect((await call(t.viewTrip)).structured.lines).toEqual([]);
162
224
  });
225
+ // ⚠️ FOUND ON THE LIVE CONNECTOR: `request_booking {}` answered with a
226
+ // confirmation code and `guest: { name: '', email: '' }`. The schema said
227
+ // both were required; a schema is what the model is told, not what it must
228
+ // do. The hotel would have been holding a room for nobody.
229
+ it('will not hold a room for nobody', async () => {
230
+ await call(t.addToTrip, { hotel: 'hong-kong-island', room: 'deluxe-city', ...STAY });
231
+ const none = await call(t.requestBooking, {});
232
+ expect(none.structured.view).toBe('needs-guest');
233
+ expect(none.structured.missing).toEqual(['a name', 'an email']);
234
+ const noEmail = await call(t.requestBooking, { name: 'Robin Ruan' });
235
+ expect(noEmail.structured.view).toBe('needs-guest');
236
+ expect(noEmail.structured.missing).toEqual(['an email']);
237
+ // And the trip is untouched, so the fix is one more message.
238
+ expect((await call(t.viewTrip)).structured.lines).toHaveLength(1);
239
+ });
163
240
  it('will not book an empty trip', async () => {
164
241
  const res = await call(t.requestBooking, { name: 'Robin Ruan', email: 'robin@example.com' });
165
242
  expect(res.structured.view).toBe('empty-trip');
@@ -171,6 +248,58 @@ describe('asking for the rooms', () => {
171
248
  expect(res.text).toMatch(/^SL-[A-Z0-9]{6} · Island Shangri-La/);
172
249
  });
173
250
  });
251
+ describe('membership', () => {
252
+ const signIn = () => call(t.signIn, { number: 'SLC-4471-8820', surname: 'Ruan' });
253
+ it('takes a number and the surname on it, and says what the tier is worth', async () => {
254
+ const res = await signIn();
255
+ expect(res.structured.view).toBe('member');
256
+ expect(res.text).toContain('Jade');
257
+ expect(res.text).toContain('10% off');
258
+ // ⚠️ The word must not appear anywhere on this path.
259
+ expect(JSON.stringify(res).toLowerCase()).not.toContain('password');
260
+ });
261
+ it('prices the rooms at the member rate, with the public one beside it', async () => {
262
+ await signIn();
263
+ const res = await call(t.getHotel, { hotel: 'hong-kong-island', ...STAY });
264
+ const room = res.structured.rooms.find((r) => r.id === 'deluxe-city');
265
+ // 10% off the room; tax is charged on what is actually paid, not on the
266
+ // public rate - the other order hands the member a second, invisible
267
+ // discount on the government's share.
268
+ expect(room?.publicStayTotal).toBe('HK$8,588');
269
+ expect(room?.stayTotal).toBe('HK$7,729.20');
270
+ });
271
+ it('says what membership was worth on THIS trip, in money', async () => {
272
+ await signIn();
273
+ await call(t.addToTrip, { hotel: 'hong-kong-island', room: 'deluxe-harbour', ...STAY });
274
+ const trip = await call(t.viewTrip);
275
+ const m = trip.structured.memberSaving;
276
+ expect(m.tier).toBe('Jade');
277
+ expect(m.saved).toBe('HK$1,039.60');
278
+ expect(Number(m.points)).toBeGreaterThan(0);
279
+ });
280
+ it('goes back to the public rate on the way out', async () => {
281
+ await signIn();
282
+ const out = await call(t.signOut);
283
+ expect(out.structured.view).toBe('signed-out');
284
+ const res = await call(t.getHotel, { hotel: 'hong-kong-island', ...STAY });
285
+ const room = res.structured.rooms[0];
286
+ expect(room?.publicStayTotal).toBeUndefined();
287
+ expect(room?.stayTotal).toBe('HK$8,588');
288
+ });
289
+ // ⚠️ A tier buys a RATE, not a lookup. A membership number and a surname are
290
+ // what a desk checks - not authentication - so it must never become a way to
291
+ // read a booking somebody else made.
292
+ it('does not let a membership reach somebody else’s booking', async () => {
293
+ await call(t.addToTrip, { hotel: 'hong-kong-island', room: 'deluxe-city', ...STAY });
294
+ await call(t.requestBooking, { name: 'Robin Ruan', email: 'robin@example.com' });
295
+ const theirs = await handleTool(deps, t.signIn, { number: 'SLC-2209-5513', surname: 'Chan' }, {
296
+ session: 'someone-else',
297
+ });
298
+ expect(theirs.structured.view).toBe('member');
299
+ const list = await handleTool(deps, t.listBookings, {}, { session: 'someone-else' });
300
+ expect(list.structured.count).toBe(0);
301
+ });
302
+ });
174
303
  describe('cancelling', () => {
175
304
  const book = async () => {
176
305
  await call(t.addToTrip, { hotel: 'hong-kong-island', room: 'deluxe-city', ...STAY });
@@ -1 +1 @@
1
- {"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../src/__tests__/tools.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.test.js","sourceRoot":"","sources":["../../src/__tests__/tools.test.ts"],"names":[],"mappings":"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"}
package/dist/backend.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { Booking, CancellationPreview, Extra, Guest, Hotel, HotelDetail, HotelPolicy, Identity, Quote, Stay, TripDraft } from './types.js';
1
+ import type { Booking, CancellationPreview, Extra, Guest, Hotel, HotelDetail, HotelPolicy, Identity, Member, Quote, Stay, TripDraft } from './types.js';
2
2
  /**
3
3
  * Where the rooms come from.
4
4
  *
@@ -15,18 +15,42 @@ import type { Booking, CancellationPreview, Extra, Guest, Hotel, HotelDetail, Ho
15
15
  export type HotelBackend = {
16
16
  /** Who the data belongs to, for the card's header and the legal pages. */
17
17
  readonly brand: string;
18
- /** Hotels, by city or free text. No dates needed - this is browsing. */
18
+ /**
19
+ * Hotels, by city, country or free text. No dates needed - this is browsing.
20
+ *
21
+ * `total` is how many MATCHED; `hotels` is the page of them. A backend that
22
+ * returned only the page would leave the card to report the page size as the
23
+ * answer, which is how "20 hotels" gets said about a city with forty.
24
+ */
19
25
  searchHotels(q: {
20
26
  query?: string;
21
27
  city?: string;
22
28
  limit?: number;
23
- }): Promise<Hotel[]>;
24
- /** One hotel. With a `Stay` it also answers with that stay's rooms and prices. */
25
- getHotel(id: string, stay?: Stay): Promise<HotelDetail | null>;
29
+ }): Promise<{
30
+ hotels: Hotel[];
31
+ total: number;
32
+ }>;
33
+ /**
34
+ * One hotel. With a `Stay` it also answers with that stay's rooms and prices.
35
+ *
36
+ * `who` carries the signed-in member, because a member rate is the hotel's to
37
+ * apply, not ours: the group's own API will return the member's price, and
38
+ * the discount arithmetic must sit on the same side of this seam as the
39
+ * public rate it comes off.
40
+ */
41
+ getHotel(id: string, stay?: Stay, who?: Identity): Promise<HotelDetail | null>;
42
+ /**
43
+ * A membership number and the surname on it - what a desk checks.
44
+ *
45
+ * ⚠️ NO PASSWORD, EVER. This connector has nowhere to put one and never asks;
46
+ * a real programme's API replaces this with its own sign-in, and whatever it
47
+ * uses, the credential does not pass through a chat.
48
+ */
49
+ signInMember(number: string, surname: string): Promise<Member | null>;
26
50
  /** What the hotel offers beside the room for those nights. */
27
51
  extrasFor(hotelId: string, stay?: Stay): Promise<Extra[]>;
28
52
  /** A trip priced: every line, the tax split, and the all-in total. */
29
- quote(trip: TripDraft): Promise<Quote>;
53
+ quote(trip: TripDraft, who?: Identity): Promise<Quote>;
30
54
  /**
31
55
  * Ask for the rooms. TODAY THIS TAKES NO MONEY: it holds them and answers
32
56
  * with a confirmation code and when the hold lapses. Payment is the next
@@ -1 +1 @@
1
- {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,mBAAmB,EACnB,KAAK,EACL,KAAK,EACL,KAAK,EACL,WAAW,EACX,WAAW,EACX,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB,wEAAwE;IACxE,YAAY,CAAC,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAErF,kFAAkF;IAClF,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE/D,8DAA8D;IAC9D,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAE1D,sEAAsE;IACtE,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEvC;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/E,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEhE,sFAAsF;IACtF,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAE5F,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE3F,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CACnD,CAAC"}
1
+ {"version":3,"file":"backend.d.ts","sourceRoot":"","sources":["../src/backend.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,OAAO,EACP,mBAAmB,EACnB,KAAK,EACL,KAAK,EACL,KAAK,EACL,WAAW,EACX,WAAW,EACX,QAAQ,EACR,MAAM,EACN,KAAK,EACL,IAAI,EACJ,SAAS,EACV,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAEvB;;;;;;OAMG;IACH,YAAY,CAAC,CAAC,EAAE;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAEhD;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAE/E;;;;;;OAMG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEtE,8DAA8D;IAC9D,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAE1D,sEAAsE;IACtE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;IAEvD;;;;OAIG;IACH,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE/E,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAEhE,sFAAsF;IACtF,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAE5F,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE3F,0CAA0C;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;CACnD,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export declare const HOTEL_CARD_HTML: string;
2
2
  /** sha256 of widget/src + widget/index.html at build time - the drift guard reads this. */
3
- export declare const HOTEL_CARD_SOURCE_SHA = "aad3e7d8f96533d4f70936ab9fbcb6bd9598ff4e574465095d4bdf2a256b2663";
3
+ export declare const HOTEL_CARD_SOURCE_SHA = "d5e92e7909f1f51be6ace0a732ce6da46b969e06f5493824e6752dc6b9264436";
4
4
  //# sourceMappingURL=card.generated.d.ts.map