@cloudnux/local-cloud-provider 0.2.2 → 0.4.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.
- package/dist/dev-console-plugin/{index.mjs → index.js} +2 -2
- package/dist/dev-console-plugin/index.js.map +1 -0
- package/dist/{index.mjs → index.js} +228 -324
- package/dist/{index.mjs.map → index.js.map} +1 -1
- package/dist/queue-plugin/{index.mjs → index.js} +1 -1
- package/dist/queue-plugin/{index.mjs.map → index.js.map} +1 -1
- package/dist/schedule-plugin/{index.mjs → index.js} +1 -1
- package/package.json +19 -13
- package/dist/dev-console-plugin/index.mjs.map +0 -1
- /package/dist/dev-console-plugin/{index.d.mts → index.d.ts} +0 -0
- /package/dist/{index.d.mts → index.d.ts} +0 -0
- /package/dist/queue-plugin/{index.d.mts → index.d.ts} +0 -0
- /package/dist/schedule-plugin/{index.d.mts → index.d.ts} +0 -0
- /package/dist/schedule-plugin/{index.mjs.map → index.js.map} +0 -0
|
@@ -1266,341 +1266,199 @@ function createLocalStorageService() {
|
|
|
1266
1266
|
import * as fs2 from "fs";
|
|
1267
1267
|
import * as path2 from "path";
|
|
1268
1268
|
var { readFile: readFile2, writeFile: writeFile2, access: access2, mkdir: mkdir2 } = fs2.promises;
|
|
1269
|
-
var
|
|
1269
|
+
var DEFAULT_MOCK_LOCATIONS = {
|
|
1270
1270
|
"place-001": {
|
|
1271
1271
|
placeId: "place-001",
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
formattedAddress: "Gamla Stan, Stockholm, 111 27, Sweden",
|
|
1272
|
+
title: "Gamla Stan",
|
|
1273
|
+
subtitle: "Old Town, Stockholm",
|
|
1275
1274
|
coordinates: {
|
|
1276
|
-
|
|
1277
|
-
|
|
1275
|
+
lat: 59.3254,
|
|
1276
|
+
lng: 18.0716
|
|
1278
1277
|
},
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
{ day: 3, open: "00:00", close: "00:00" },
|
|
1289
|
-
{ day: 4, open: "00:00", close: "00:00" },
|
|
1290
|
-
{ day: 5, open: "00:00", close: "00:00" },
|
|
1291
|
-
{ day: 6, open: "00:00", close: "00:00" }
|
|
1292
|
-
],
|
|
1293
|
-
weekdayText: [
|
|
1294
|
-
"Monday: Open 24 hours",
|
|
1295
|
-
"Tuesday: Open 24 hours",
|
|
1296
|
-
"Wednesday: Open 24 hours",
|
|
1297
|
-
"Thursday: Open 24 hours",
|
|
1298
|
-
"Friday: Open 24 hours",
|
|
1299
|
-
"Saturday: Open 24 hours",
|
|
1300
|
-
"Sunday: Open 24 hours"
|
|
1301
|
-
]
|
|
1302
|
-
}
|
|
1278
|
+
street: "Gamla Stan",
|
|
1279
|
+
city: "Stockholm",
|
|
1280
|
+
region: "Stockholm County",
|
|
1281
|
+
postalCode: "111 27",
|
|
1282
|
+
country: "Sweden",
|
|
1283
|
+
countryCode: "SWE",
|
|
1284
|
+
fullAddress: "Gamla Stan, 111 27 Stockholm, Sweden",
|
|
1285
|
+
placeType: "locality",
|
|
1286
|
+
categories: ["historical", "tourist_attraction", "landmark"]
|
|
1303
1287
|
},
|
|
1304
1288
|
"place-002": {
|
|
1305
1289
|
placeId: "place-002",
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
formattedAddress: "Kungliga Slottet, Slottsbacken 1, 111 30 Stockholm, Sweden",
|
|
1290
|
+
title: "Kungliga Slottet",
|
|
1291
|
+
subtitle: "Royal Palace of Stockholm",
|
|
1309
1292
|
coordinates: {
|
|
1310
|
-
|
|
1311
|
-
|
|
1293
|
+
lat: 59.3268,
|
|
1294
|
+
lng: 18.0718
|
|
1312
1295
|
},
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
{ day: 5, open: "10:00", close: "17:00" },
|
|
1324
|
-
{ day: 6, open: "10:00", close: "17:00" }
|
|
1325
|
-
],
|
|
1326
|
-
weekdayText: [
|
|
1327
|
-
"Monday: 10:00 AM \u2013 5:00 PM",
|
|
1328
|
-
"Tuesday: 10:00 AM \u2013 5:00 PM",
|
|
1329
|
-
"Wednesday: 10:00 AM \u2013 5:00 PM",
|
|
1330
|
-
"Thursday: 10:00 AM \u2013 5:00 PM",
|
|
1331
|
-
"Friday: 10:00 AM \u2013 5:00 PM",
|
|
1332
|
-
"Saturday: 10:00 AM \u2013 5:00 PM",
|
|
1333
|
-
"Sunday: 10:00 AM \u2013 5:00 PM"
|
|
1334
|
-
]
|
|
1335
|
-
}
|
|
1296
|
+
street: "Slottsbacken",
|
|
1297
|
+
streetNumber: "1",
|
|
1298
|
+
city: "Stockholm",
|
|
1299
|
+
region: "Stockholm County",
|
|
1300
|
+
postalCode: "111 30",
|
|
1301
|
+
country: "Sweden",
|
|
1302
|
+
countryCode: "SWE",
|
|
1303
|
+
fullAddress: "Slottsbacken 1, 111 30 Stockholm, Sweden",
|
|
1304
|
+
placeType: "poi",
|
|
1305
|
+
categories: ["tourist_attraction", "landmark", "palace"]
|
|
1336
1306
|
},
|
|
1337
1307
|
"place-003": {
|
|
1338
1308
|
placeId: "place-003",
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
formattedAddress: "Espresso House, Kungstr\xE4dg\xE5rden 18, 111 47 Stockholm, Sweden",
|
|
1309
|
+
title: "Espresso House Kungstr\xE4dg\xE5rden",
|
|
1310
|
+
subtitle: "Coffee shop in central Stockholm",
|
|
1342
1311
|
coordinates: {
|
|
1343
|
-
|
|
1344
|
-
|
|
1312
|
+
lat: 59.3311,
|
|
1313
|
+
lng: 18.072
|
|
1345
1314
|
},
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
{ day: 5, open: "07:00", close: "22:00" },
|
|
1357
|
-
{ day: 6, open: "08:00", close: "21:00" }
|
|
1358
|
-
],
|
|
1359
|
-
weekdayText: [
|
|
1360
|
-
"Monday: 7:00 AM \u2013 9:00 PM",
|
|
1361
|
-
"Tuesday: 7:00 AM \u2013 9:00 PM",
|
|
1362
|
-
"Wednesday: 7:00 AM \u2013 9:00 PM",
|
|
1363
|
-
"Thursday: 7:00 AM \u2013 9:00 PM",
|
|
1364
|
-
"Friday: 7:00 AM \u2013 10:00 PM",
|
|
1365
|
-
"Saturday: 8:00 AM \u2013 9:00 PM",
|
|
1366
|
-
"Sunday: 7:00 AM \u2013 8:00 PM"
|
|
1367
|
-
]
|
|
1368
|
-
}
|
|
1315
|
+
street: "Kungstr\xE4dg\xE5rden",
|
|
1316
|
+
streetNumber: "18",
|
|
1317
|
+
city: "Stockholm",
|
|
1318
|
+
region: "Stockholm County",
|
|
1319
|
+
postalCode: "111 47",
|
|
1320
|
+
country: "Sweden",
|
|
1321
|
+
countryCode: "SWE",
|
|
1322
|
+
fullAddress: "Kungstr\xE4dg\xE5rden 18, 111 47 Stockholm, Sweden",
|
|
1323
|
+
placeType: "poi",
|
|
1324
|
+
categories: ["cafe", "coffee_shop", "food"]
|
|
1369
1325
|
},
|
|
1370
1326
|
"place-004": {
|
|
1371
1327
|
placeId: "place-004",
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
formattedAddress: "ICA N\xE4ra Stureplan, Humleg\xE5rdsgatan 17, 114 46 Stockholm, Sweden",
|
|
1328
|
+
title: "ICA N\xE4ra Stureplan",
|
|
1329
|
+
subtitle: "Grocery store",
|
|
1375
1330
|
coordinates: {
|
|
1376
|
-
|
|
1377
|
-
|
|
1331
|
+
lat: 59.3372,
|
|
1332
|
+
lng: 18.0737
|
|
1378
1333
|
},
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
{ day: 5, open: "07:00", close: "23:00" },
|
|
1390
|
-
{ day: 6, open: "07:00", close: "23:00" }
|
|
1391
|
-
],
|
|
1392
|
-
weekdayText: [
|
|
1393
|
-
"Monday: 7:00 AM \u2013 11:00 PM",
|
|
1394
|
-
"Tuesday: 7:00 AM \u2013 11:00 PM",
|
|
1395
|
-
"Wednesday: 7:00 AM \u2013 11:00 PM",
|
|
1396
|
-
"Thursday: 7:00 AM \u2013 11:00 PM",
|
|
1397
|
-
"Friday: 7:00 AM \u2013 11:00 PM",
|
|
1398
|
-
"Saturday: 7:00 AM \u2013 11:00 PM",
|
|
1399
|
-
"Sunday: 7:00 AM \u2013 11:00 PM"
|
|
1400
|
-
]
|
|
1401
|
-
}
|
|
1334
|
+
street: "Humleg\xE5rdsgatan",
|
|
1335
|
+
streetNumber: "17",
|
|
1336
|
+
city: "Stockholm",
|
|
1337
|
+
region: "Stockholm County",
|
|
1338
|
+
postalCode: "114 46",
|
|
1339
|
+
country: "Sweden",
|
|
1340
|
+
countryCode: "SWE",
|
|
1341
|
+
fullAddress: "Humleg\xE5rdsgatan 17, 114 46 Stockholm, Sweden",
|
|
1342
|
+
placeType: "poi",
|
|
1343
|
+
categories: ["grocery", "supermarket", "food"]
|
|
1402
1344
|
},
|
|
1403
1345
|
"place-005": {
|
|
1404
1346
|
placeId: "place-005",
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
formattedAddress: "Stockholm Central Station, Centralplan 15, 111 20 Stockholm, Sweden",
|
|
1347
|
+
title: "Stockholm Central Station",
|
|
1348
|
+
subtitle: "Main railway station",
|
|
1408
1349
|
coordinates: {
|
|
1409
|
-
|
|
1410
|
-
|
|
1350
|
+
lat: 59.3303,
|
|
1351
|
+
lng: 18.0604
|
|
1411
1352
|
},
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
{ day: 5, open: "04:00", close: "01:00" },
|
|
1423
|
-
{ day: 6, open: "04:00", close: "01:00" }
|
|
1424
|
-
],
|
|
1425
|
-
weekdayText: [
|
|
1426
|
-
"Monday: 4:00 AM \u2013 1:00 AM",
|
|
1427
|
-
"Tuesday: 4:00 AM \u2013 1:00 AM",
|
|
1428
|
-
"Wednesday: 4:00 AM \u2013 1:00 AM",
|
|
1429
|
-
"Thursday: 4:00 AM \u2013 1:00 AM",
|
|
1430
|
-
"Friday: 4:00 AM \u2013 1:00 AM",
|
|
1431
|
-
"Saturday: 4:00 AM \u2013 1:00 AM",
|
|
1432
|
-
"Sunday: 4:00 AM \u2013 1:00 AM"
|
|
1433
|
-
]
|
|
1434
|
-
}
|
|
1353
|
+
street: "Centralplan",
|
|
1354
|
+
streetNumber: "15",
|
|
1355
|
+
city: "Stockholm",
|
|
1356
|
+
region: "Stockholm County",
|
|
1357
|
+
postalCode: "111 20",
|
|
1358
|
+
country: "Sweden",
|
|
1359
|
+
countryCode: "SWE",
|
|
1360
|
+
fullAddress: "Centralplan 15, 111 20 Stockholm, Sweden",
|
|
1361
|
+
placeType: "poi",
|
|
1362
|
+
categories: ["train_station", "transport", "travel"]
|
|
1435
1363
|
},
|
|
1436
1364
|
"place-006": {
|
|
1437
1365
|
placeId: "place-006",
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
formattedAddress: "Fotografiska, Stadsg\xE5rdshamnen 22, 116 45 Stockholm, Sweden",
|
|
1366
|
+
title: "Fotografiska",
|
|
1367
|
+
subtitle: "Photography museum",
|
|
1441
1368
|
coordinates: {
|
|
1442
|
-
|
|
1443
|
-
|
|
1369
|
+
lat: 59.3188,
|
|
1370
|
+
lng: 18.086
|
|
1444
1371
|
},
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
{ day: 5, open: "10:00", close: "01:00" },
|
|
1456
|
-
{ day: 6, open: "10:00", close: "23:00" }
|
|
1457
|
-
],
|
|
1458
|
-
weekdayText: [
|
|
1459
|
-
"Monday: 10:00 AM \u2013 11:00 PM",
|
|
1460
|
-
"Tuesday: 10:00 AM \u2013 11:00 PM",
|
|
1461
|
-
"Wednesday: 10:00 AM \u2013 11:00 PM",
|
|
1462
|
-
"Thursday: 10:00 AM \u2013 11:00 PM",
|
|
1463
|
-
"Friday: 10:00 AM \u2013 1:00 AM",
|
|
1464
|
-
"Saturday: 10:00 AM \u2013 1:00 AM",
|
|
1465
|
-
"Sunday: 10:00 AM \u2013 11:00 PM"
|
|
1466
|
-
]
|
|
1467
|
-
}
|
|
1372
|
+
street: "Stadsg\xE5rdshamnen",
|
|
1373
|
+
streetNumber: "22",
|
|
1374
|
+
city: "Stockholm",
|
|
1375
|
+
region: "Stockholm County",
|
|
1376
|
+
postalCode: "116 45",
|
|
1377
|
+
country: "Sweden",
|
|
1378
|
+
countryCode: "SWE",
|
|
1379
|
+
fullAddress: "Stadsg\xE5rdshamnen 22, 116 45 Stockholm, Sweden",
|
|
1380
|
+
placeType: "poi",
|
|
1381
|
+
categories: ["museum", "art", "photography", "cultural"]
|
|
1468
1382
|
},
|
|
1469
1383
|
"place-007": {
|
|
1470
1384
|
placeId: "place-007",
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
formattedAddress: "IKEA City, Sveav\xE4gen 44, 111 34 Stockholm, Sweden",
|
|
1385
|
+
title: "IKEA City",
|
|
1386
|
+
subtitle: "Furniture store in central Stockholm",
|
|
1474
1387
|
coordinates: {
|
|
1475
|
-
|
|
1476
|
-
|
|
1388
|
+
lat: 59.3378,
|
|
1389
|
+
lng: 18.0597
|
|
1477
1390
|
},
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
{ day: 5, open: "10:00", close: "19:00" },
|
|
1489
|
-
{ day: 6, open: "10:00", close: "18:00" }
|
|
1490
|
-
],
|
|
1491
|
-
weekdayText: [
|
|
1492
|
-
"Monday: 10:00 AM \u2013 7:00 PM",
|
|
1493
|
-
"Tuesday: 10:00 AM \u2013 7:00 PM",
|
|
1494
|
-
"Wednesday: 10:00 AM \u2013 7:00 PM",
|
|
1495
|
-
"Thursday: 10:00 AM \u2013 7:00 PM",
|
|
1496
|
-
"Friday: 10:00 AM \u2013 7:00 PM",
|
|
1497
|
-
"Saturday: 10:00 AM \u2013 6:00 PM",
|
|
1498
|
-
"Sunday: 10:00 AM \u2013 6:00 PM"
|
|
1499
|
-
]
|
|
1500
|
-
}
|
|
1391
|
+
street: "Sveav\xE4gen",
|
|
1392
|
+
streetNumber: "44",
|
|
1393
|
+
city: "Stockholm",
|
|
1394
|
+
region: "Stockholm County",
|
|
1395
|
+
postalCode: "111 34",
|
|
1396
|
+
country: "Sweden",
|
|
1397
|
+
countryCode: "SWE",
|
|
1398
|
+
fullAddress: "Sveav\xE4gen 44, 111 34 Stockholm, Sweden",
|
|
1399
|
+
placeType: "poi",
|
|
1400
|
+
categories: ["furniture", "shopping", "home_goods"]
|
|
1501
1401
|
},
|
|
1502
1402
|
"place-008": {
|
|
1503
1403
|
placeId: "place-008",
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
formattedAddress: "Skansen, Djurg\xE5rdssl\xE4tten 49-51, 115 21 Stockholm, Sweden",
|
|
1404
|
+
title: "Skansen",
|
|
1405
|
+
subtitle: "Open-air museum and zoo",
|
|
1507
1406
|
coordinates: {
|
|
1508
|
-
|
|
1509
|
-
|
|
1407
|
+
lat: 59.3263,
|
|
1408
|
+
lng: 18.1066
|
|
1510
1409
|
},
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
{ day: 5, open: "10:00", close: "20:00" },
|
|
1522
|
-
{ day: 6, open: "10:00", close: "20:00" }
|
|
1523
|
-
],
|
|
1524
|
-
weekdayText: [
|
|
1525
|
-
"Monday: 10:00 AM \u2013 6:00 PM",
|
|
1526
|
-
"Tuesday: 10:00 AM \u2013 6:00 PM",
|
|
1527
|
-
"Wednesday: 10:00 AM \u2013 6:00 PM",
|
|
1528
|
-
"Thursday: 10:00 AM \u2013 6:00 PM",
|
|
1529
|
-
"Friday: 10:00 AM \u2013 8:00 PM",
|
|
1530
|
-
"Saturday: 10:00 AM \u2013 8:00 PM",
|
|
1531
|
-
"Sunday: 10:00 AM \u2013 6:00 PM"
|
|
1532
|
-
]
|
|
1533
|
-
}
|
|
1410
|
+
street: "Djurg\xE5rdssl\xE4tten",
|
|
1411
|
+
streetNumber: "49-51",
|
|
1412
|
+
city: "Stockholm",
|
|
1413
|
+
region: "Stockholm County",
|
|
1414
|
+
postalCode: "115 21",
|
|
1415
|
+
country: "Sweden",
|
|
1416
|
+
countryCode: "SWE",
|
|
1417
|
+
fullAddress: "Djurg\xE5rdssl\xE4tten 49-51, 115 21 Stockholm, Sweden",
|
|
1418
|
+
placeType: "poi",
|
|
1419
|
+
categories: ["museum", "park", "tourist_attraction", "zoo"]
|
|
1534
1420
|
},
|
|
1535
1421
|
"place-009": {
|
|
1536
1422
|
placeId: "place-009",
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
formattedAddress: "Drop Coffee, Wollmar Yxkullsgatan 10, 118 50 Stockholm, Sweden",
|
|
1423
|
+
title: "Drop Coffee",
|
|
1424
|
+
subtitle: "Specialty coffee roastery",
|
|
1540
1425
|
coordinates: {
|
|
1541
|
-
|
|
1542
|
-
|
|
1426
|
+
lat: 59.3149,
|
|
1427
|
+
lng: 18.0608
|
|
1543
1428
|
},
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
{ day: 5, open: "07:30", close: "18:00" },
|
|
1555
|
-
{ day: 6, open: "08:00", close: "18:00" }
|
|
1556
|
-
],
|
|
1557
|
-
weekdayText: [
|
|
1558
|
-
"Monday: 7:30 AM \u2013 6:00 PM",
|
|
1559
|
-
"Tuesday: 7:30 AM \u2013 6:00 PM",
|
|
1560
|
-
"Wednesday: 7:30 AM \u2013 6:00 PM",
|
|
1561
|
-
"Thursday: 7:30 AM \u2013 6:00 PM",
|
|
1562
|
-
"Friday: 7:30 AM \u2013 6:00 PM",
|
|
1563
|
-
"Saturday: 8:00 AM \u2013 6:00 PM",
|
|
1564
|
-
"Sunday: 8:00 AM \u2013 6:00 PM"
|
|
1565
|
-
]
|
|
1566
|
-
}
|
|
1429
|
+
street: "Wollmar Yxkullsgatan",
|
|
1430
|
+
streetNumber: "10",
|
|
1431
|
+
city: "Stockholm",
|
|
1432
|
+
region: "Stockholm County",
|
|
1433
|
+
postalCode: "118 50",
|
|
1434
|
+
country: "Sweden",
|
|
1435
|
+
countryCode: "SWE",
|
|
1436
|
+
fullAddress: "Wollmar Yxkullsgatan 10, 118 50 Stockholm, Sweden",
|
|
1437
|
+
placeType: "poi",
|
|
1438
|
+
categories: ["cafe", "coffee_shop", "food"]
|
|
1567
1439
|
},
|
|
1568
1440
|
"place-010": {
|
|
1569
1441
|
placeId: "place-010",
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
formattedAddress: "Vasa Museum, Gal\xE4rvarvsv\xE4gen 14, 115 21 Stockholm, Sweden",
|
|
1442
|
+
title: "Vasa Museum",
|
|
1443
|
+
subtitle: "Maritime museum",
|
|
1573
1444
|
coordinates: {
|
|
1574
|
-
|
|
1575
|
-
|
|
1445
|
+
lat: 59.328,
|
|
1446
|
+
lng: 18.0914
|
|
1576
1447
|
},
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
{ day: 5, open: "10:00", close: "17:00" },
|
|
1588
|
-
{ day: 6, open: "10:00", close: "17:00" }
|
|
1589
|
-
],
|
|
1590
|
-
weekdayText: [
|
|
1591
|
-
"Monday: 10:00 AM \u2013 5:00 PM",
|
|
1592
|
-
"Tuesday: 10:00 AM \u2013 5:00 PM",
|
|
1593
|
-
"Wednesday: 10:00 AM \u2013 5:00 PM",
|
|
1594
|
-
"Thursday: 10:00 AM \u2013 8:00 PM",
|
|
1595
|
-
"Friday: 10:00 AM \u2013 5:00 PM",
|
|
1596
|
-
"Saturday: 10:00 AM \u2013 5:00 PM",
|
|
1597
|
-
"Sunday: 10:00 AM \u2013 5:00 PM"
|
|
1598
|
-
]
|
|
1599
|
-
}
|
|
1448
|
+
street: "Gal\xE4rvarvsv\xE4gen",
|
|
1449
|
+
streetNumber: "14",
|
|
1450
|
+
city: "Stockholm",
|
|
1451
|
+
region: "Stockholm County",
|
|
1452
|
+
postalCode: "115 21",
|
|
1453
|
+
country: "Sweden",
|
|
1454
|
+
countryCode: "SWE",
|
|
1455
|
+
fullAddress: "Gal\xE4rvarvsv\xE4gen 14, 115 21 Stockholm, Sweden",
|
|
1456
|
+
placeType: "poi",
|
|
1457
|
+
categories: ["museum", "tourist_attraction", "historical"]
|
|
1600
1458
|
}
|
|
1601
1459
|
};
|
|
1602
1460
|
function calculateDistance(lat1, lon1, lat2, lon2) {
|
|
1603
|
-
const R =
|
|
1461
|
+
const R = 6371e3;
|
|
1604
1462
|
const dLat = (lat2 - lat1) * Math.PI / 180;
|
|
1605
1463
|
const dLon = (lon2 - lon1) * Math.PI / 180;
|
|
1606
1464
|
const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
|
|
@@ -1608,6 +1466,35 @@ function calculateDistance(lat1, lon1, lat2, lon2) {
|
|
|
1608
1466
|
const distance = R * c;
|
|
1609
1467
|
return distance;
|
|
1610
1468
|
}
|
|
1469
|
+
function toLocationSuggestion(location, distance) {
|
|
1470
|
+
return {
|
|
1471
|
+
title: location.title,
|
|
1472
|
+
subtitle: location.subtitle,
|
|
1473
|
+
coordinates: location.coordinates,
|
|
1474
|
+
placeId: location.placeId,
|
|
1475
|
+
placeType: location.placeType,
|
|
1476
|
+
distance,
|
|
1477
|
+
provider: "local",
|
|
1478
|
+
rawData: location
|
|
1479
|
+
};
|
|
1480
|
+
}
|
|
1481
|
+
function toLocationAddress(location) {
|
|
1482
|
+
return {
|
|
1483
|
+
fullAddress: location.fullAddress,
|
|
1484
|
+
street: location.street,
|
|
1485
|
+
streetNumber: location.streetNumber,
|
|
1486
|
+
city: location.city,
|
|
1487
|
+
district: location.district,
|
|
1488
|
+
region: location.region,
|
|
1489
|
+
postalCode: location.postalCode,
|
|
1490
|
+
country: location.country,
|
|
1491
|
+
countryCode: location.countryCode,
|
|
1492
|
+
coordinates: location.coordinates,
|
|
1493
|
+
placeType: location.placeType,
|
|
1494
|
+
provider: "local",
|
|
1495
|
+
rawData: location
|
|
1496
|
+
};
|
|
1497
|
+
}
|
|
1611
1498
|
function createLocalLocationService() {
|
|
1612
1499
|
const baseDir = env("DEV_CLOUD_LOCATION_PATH", path2.join(process.cwd(), ".develop", ".local-location"));
|
|
1613
1500
|
const placesFilePath = path2.join(baseDir, "places.json");
|
|
@@ -1623,66 +1510,83 @@ function createLocalLocationService() {
|
|
|
1623
1510
|
const data = await readFile2(placesFilePath, "utf8");
|
|
1624
1511
|
return JSON.parse(data);
|
|
1625
1512
|
} catch {
|
|
1626
|
-
await writeFile2(placesFilePath, JSON.stringify(
|
|
1627
|
-
|
|
1513
|
+
await writeFile2(placesFilePath, JSON.stringify(DEFAULT_MOCK_LOCATIONS, null, 2), "utf8");
|
|
1514
|
+
logger.info(`Created default places file at: ${placesFilePath}`);
|
|
1515
|
+
return DEFAULT_MOCK_LOCATIONS;
|
|
1628
1516
|
}
|
|
1629
1517
|
} catch (error) {
|
|
1630
1518
|
logger.warn(`Error loading places data: ${String(error)}`);
|
|
1631
|
-
return
|
|
1519
|
+
return DEFAULT_MOCK_LOCATIONS;
|
|
1632
1520
|
}
|
|
1633
1521
|
}
|
|
1634
1522
|
return {
|
|
1635
1523
|
/**
|
|
1636
|
-
*
|
|
1637
|
-
*
|
|
1638
|
-
* @param options Search options
|
|
1639
|
-
* @returns Promise containing search results
|
|
1524
|
+
* Get autocomplete suggestions for search box
|
|
1525
|
+
* Use case: User types "Stock..." → Show ["Stockholm", "Stockton", ...]
|
|
1640
1526
|
*/
|
|
1641
|
-
async
|
|
1527
|
+
async getSuggestions(params) {
|
|
1642
1528
|
const places = await loadPlaces();
|
|
1643
|
-
const queryLower = query.toLowerCase();
|
|
1644
|
-
|
|
1645
|
-
const matchesQuery = place.
|
|
1646
|
-
const
|
|
1647
|
-
|
|
1648
|
-
);
|
|
1649
|
-
return matchesQuery && matchesCategories;
|
|
1529
|
+
const queryLower = params.query.toLowerCase();
|
|
1530
|
+
const results = Object.values(places).filter((place) => {
|
|
1531
|
+
const matchesQuery = place.title.toLowerCase().includes(queryLower) || place.subtitle?.toLowerCase().includes(queryLower) || place.fullAddress.toLowerCase().includes(queryLower) || place.city?.toLowerCase().includes(queryLower);
|
|
1532
|
+
const matchesPlaceTypes = !params.placeTypes || params.placeTypes.includes(place.placeType || "");
|
|
1533
|
+
return matchesQuery && matchesPlaceTypes;
|
|
1650
1534
|
});
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1535
|
+
let resultsWithDistance;
|
|
1536
|
+
if (params.biasPosition) {
|
|
1537
|
+
resultsWithDistance = results.map((place) => ({
|
|
1538
|
+
place,
|
|
1539
|
+
distance: calculateDistance(
|
|
1540
|
+
params.biasPosition.lat,
|
|
1541
|
+
params.biasPosition.lng,
|
|
1542
|
+
place.coordinates.lat,
|
|
1543
|
+
place.coordinates.lng
|
|
1544
|
+
)
|
|
1545
|
+
}));
|
|
1546
|
+
resultsWithDistance.sort((a, b) => (a.distance || 0) - (b.distance || 0));
|
|
1547
|
+
} else {
|
|
1548
|
+
results.sort((a, b) => a.title.localeCompare(b.title));
|
|
1549
|
+
resultsWithDistance = results.map((place) => ({ place }));
|
|
1657
1550
|
}
|
|
1658
|
-
const
|
|
1659
|
-
const
|
|
1660
|
-
|
|
1661
|
-
place
|
|
1662
|
-
|
|
1663
|
-
|
|
1664
|
-
|
|
1665
|
-
|
|
1666
|
-
|
|
1667
|
-
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
|
|
1551
|
+
const maxResults = params.maxResults || 5;
|
|
1552
|
+
const limitedResults = resultsWithDistance.slice(0, maxResults);
|
|
1553
|
+
return limitedResults.map(
|
|
1554
|
+
({ place, distance }) => toLocationSuggestion(place, distance)
|
|
1555
|
+
);
|
|
1556
|
+
},
|
|
1557
|
+
/**
|
|
1558
|
+
* Get address from coordinates (reverse geocoding)
|
|
1559
|
+
* Use case: User clicks "Get my location" → Show "Drottninggatan 10, Stockholm"
|
|
1560
|
+
*/
|
|
1561
|
+
async reverseGeocode(params) {
|
|
1562
|
+
const places = await loadPlaces();
|
|
1563
|
+
const placesWithDistance = Object.values(places).map((place) => ({
|
|
1564
|
+
place,
|
|
1565
|
+
distance: calculateDistance(
|
|
1566
|
+
params.coordinates.lat,
|
|
1567
|
+
params.coordinates.lng,
|
|
1568
|
+
place.coordinates.lat,
|
|
1569
|
+
place.coordinates.lng
|
|
1570
|
+
)
|
|
1571
|
+
}));
|
|
1572
|
+
placesWithDistance.sort((a, b) => a.distance - b.distance);
|
|
1573
|
+
const closest = placesWithDistance[0];
|
|
1574
|
+
if (!closest) {
|
|
1575
|
+
throw new Error("No places found near the given coordinates");
|
|
1671
1576
|
}
|
|
1672
|
-
return
|
|
1577
|
+
return toLocationAddress(closest.place);
|
|
1673
1578
|
},
|
|
1674
1579
|
/**
|
|
1675
|
-
* Get detailed
|
|
1676
|
-
*
|
|
1677
|
-
* @returns Promise containing place details
|
|
1580
|
+
* Get detailed location info if suggestion doesn't have coordinates
|
|
1581
|
+
* Use case: User selects suggestion → Need full coordinates
|
|
1678
1582
|
*/
|
|
1679
|
-
async
|
|
1583
|
+
async getLocationDetails(placeId) {
|
|
1680
1584
|
const places = await loadPlaces();
|
|
1681
1585
|
const place = places[placeId];
|
|
1682
1586
|
if (!place) {
|
|
1683
1587
|
throw new Error(`Place not found: ${placeId}`);
|
|
1684
1588
|
}
|
|
1685
|
-
return place;
|
|
1589
|
+
return toLocationAddress(place);
|
|
1686
1590
|
}
|
|
1687
1591
|
};
|
|
1688
1592
|
}
|
|
@@ -1821,4 +1725,4 @@ lodash-es/lodash.js:
|
|
|
1821
1725
|
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
|
|
1822
1726
|
*)
|
|
1823
1727
|
*/
|
|
1824
|
-
//# sourceMappingURL=index.
|
|
1728
|
+
//# sourceMappingURL=index.js.map
|