strapi-plugin-map-box 0.0.1
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/README.md +4 -0
- package/dist/_chunks/en-B4KWt_jN.js +5 -0
- package/dist/_chunks/en-B4KWt_jN.js.map +1 -0
- package/dist/_chunks/en-Byx4XI2L.mjs +5 -0
- package/dist/_chunks/en-Byx4XI2L.mjs.map +1 -0
- package/dist/admin/index.js +419 -0
- package/dist/admin/index.js.map +1 -0
- package/dist/admin/index.mjs +417 -0
- package/dist/admin/index.mjs.map +1 -0
- package/dist/admin/src/components/Initializer.d.ts +5 -0
- package/dist/admin/src/components/PluginIcon.d.ts +2 -0
- package/dist/admin/src/components/custom-field/MapBoxField/DebugInfo.d.ts +14 -0
- package/dist/admin/src/components/custom-field/MapBoxField/MapSearch.d.ts +9 -0
- package/dist/admin/src/components/custom-field/MapBoxField/hooks.d.ts +29 -0
- package/dist/admin/src/components/custom-field/MapBoxField/index.d.ts +19 -0
- package/dist/admin/src/components/custom-field/MapBoxField/styles.d.ts +6 -0
- package/dist/admin/src/components/custom-field/MapBoxField/types.d.ts +22 -0
- package/dist/admin/src/index.d.ts +10 -0
- package/dist/admin/src/pages/App.d.ts +2 -0
- package/dist/admin/src/pages/HomePage.d.ts +2 -0
- package/dist/admin/src/pluginId.d.ts +1 -0
- package/dist/admin/src/utils/getTranslation.d.ts +2 -0
- package/dist/server/index.js +116 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/index.mjs +117 -0
- package/dist/server/index.mjs.map +1 -0
- package/dist/server/src/bootstrap.d.ts +5 -0
- package/dist/server/src/config/index.d.ts +5 -0
- package/dist/server/src/content-types/index.d.ts +2 -0
- package/dist/server/src/controllers/controller.d.ts +8 -0
- package/dist/server/src/controllers/index.d.ts +9 -0
- package/dist/server/src/destroy.d.ts +5 -0
- package/dist/server/src/index.d.ts +54 -0
- package/dist/server/src/middlewares/index.d.ts +2 -0
- package/dist/server/src/policies/index.d.ts +2 -0
- package/dist/server/src/register.d.ts +5 -0
- package/dist/server/src/routes/admin-api.d.ts +9 -0
- package/dist/server/src/routes/content-api.d.ts +2 -0
- package/dist/server/src/routes/index.d.ts +18 -0
- package/dist/server/src/services/index.d.ts +11 -0
- package/dist/server/src/services/service.d.ts +33 -0
- package/dist/server/src/utils/index.d.ts +4 -0
- package/dist/types.d.ts +6 -0
- package/package.json +89 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const bootstrap = ({ strapi: strapi2 }) => {
|
|
3
|
+
};
|
|
4
|
+
const destroy = ({ strapi: strapi2 }) => {
|
|
5
|
+
};
|
|
6
|
+
const register = ({ strapi: strapi2 }) => {
|
|
7
|
+
strapi2.customFields.register({
|
|
8
|
+
name: "map-box",
|
|
9
|
+
type: "json"
|
|
10
|
+
});
|
|
11
|
+
};
|
|
12
|
+
const config = {
|
|
13
|
+
default: {},
|
|
14
|
+
validator() {
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const contentTypes = {};
|
|
18
|
+
function getPluginConfig(name) {
|
|
19
|
+
const config2 = strapi.plugin("strapi-plugin-map-box").config(name);
|
|
20
|
+
return config2;
|
|
21
|
+
}
|
|
22
|
+
const controller = ({ strapi: strapi2 }) => ({
|
|
23
|
+
async locationSearch(ctx) {
|
|
24
|
+
const query = ctx.params.query;
|
|
25
|
+
console.log("Query from URL:", query);
|
|
26
|
+
const result = await strapi2.plugin("strapi-plugin-map-box").service("service").locationSearch(query);
|
|
27
|
+
ctx.body = result;
|
|
28
|
+
},
|
|
29
|
+
async getSettings(ctx) {
|
|
30
|
+
const result = getPluginConfig("public");
|
|
31
|
+
console.log("result from getSettings", result);
|
|
32
|
+
ctx.body = result;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
const controllers = {
|
|
36
|
+
controller
|
|
37
|
+
};
|
|
38
|
+
const middlewares = {};
|
|
39
|
+
const policies = {};
|
|
40
|
+
const contentAPIRoutes = [];
|
|
41
|
+
const adminAPIRoutes = [
|
|
42
|
+
{
|
|
43
|
+
method: "GET",
|
|
44
|
+
path: "/location-search/:query",
|
|
45
|
+
handler: "controller.locationSearch",
|
|
46
|
+
config: {
|
|
47
|
+
policies: ["admin::isAuthenticatedAdmin"]
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
method: "GET",
|
|
52
|
+
path: "/get-settings",
|
|
53
|
+
handler: "controller.getSettings",
|
|
54
|
+
config: {
|
|
55
|
+
policies: ["admin::isAuthenticatedAdmin"]
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
];
|
|
59
|
+
const routes = {
|
|
60
|
+
"content-api": {
|
|
61
|
+
type: "content-api",
|
|
62
|
+
routes: contentAPIRoutes
|
|
63
|
+
},
|
|
64
|
+
"admin-api": {
|
|
65
|
+
type: "admin",
|
|
66
|
+
routes: adminAPIRoutes
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
const service = ({ strapi: strapi2 }) => ({
|
|
70
|
+
async locationSearch(query) {
|
|
71
|
+
try {
|
|
72
|
+
const pluginSettings = getPluginConfig("public");
|
|
73
|
+
console.log("pluginSettings", pluginSettings);
|
|
74
|
+
if (!pluginSettings.accessToken) {
|
|
75
|
+
return {
|
|
76
|
+
error: "MapBox access token is not configured. Please add your access token in the plugin settings.",
|
|
77
|
+
features: []
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
const MAPBOX_ACCESS_TOKEN = pluginSettings.accessToken;
|
|
81
|
+
console.log("MAPBOX_ACCESS_TOKEN", MAPBOX_ACCESS_TOKEN);
|
|
82
|
+
console.log("Searching for:", query);
|
|
83
|
+
const response = await fetch(
|
|
84
|
+
`https://api.mapbox.com/geocoding/v5/mapbox.places/${encodeURIComponent(query)}.json?access_token=${MAPBOX_ACCESS_TOKEN}`
|
|
85
|
+
);
|
|
86
|
+
if (!response.ok) {
|
|
87
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
88
|
+
}
|
|
89
|
+
const data = await response.json();
|
|
90
|
+
return data;
|
|
91
|
+
} catch (error) {
|
|
92
|
+
console.error("Error searching location:", error);
|
|
93
|
+
return {
|
|
94
|
+
error: error instanceof Error ? error.message : "An error occurred",
|
|
95
|
+
features: []
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
const services = {
|
|
101
|
+
service
|
|
102
|
+
};
|
|
103
|
+
const index = {
|
|
104
|
+
register,
|
|
105
|
+
bootstrap,
|
|
106
|
+
destroy,
|
|
107
|
+
config,
|
|
108
|
+
controllers,
|
|
109
|
+
routes,
|
|
110
|
+
services,
|
|
111
|
+
contentTypes,
|
|
112
|
+
policies,
|
|
113
|
+
middlewares
|
|
114
|
+
};
|
|
115
|
+
module.exports = index;
|
|
116
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../server/src/bootstrap.ts","../../server/src/destroy.ts","../../server/src/register.ts","../../server/src/config/index.ts","../../server/src/content-types/index.ts","../../server/src/utils/index.ts","../../server/src/controllers/controller.ts","../../server/src/controllers/index.ts","../../server/src/middlewares/index.ts","../../server/src/policies/index.ts","../../server/src/routes/content-api.ts","../../server/src/routes/admin-api.ts","../../server/src/routes/index.ts","../../server/src/services/service.ts","../../server/src/services/index.ts","../../server/src/index.ts"],"sourcesContent":["import type { Core } from '@strapi/strapi';\n\nconst bootstrap = ({ strapi }: { strapi: Core.Strapi }) => {\n // bootstrap phase\n};\n\nexport default bootstrap;\n","import type { Core } from '@strapi/strapi';\n\nconst destroy = ({ strapi }: { strapi: Core.Strapi }) => {\n // destroy phase\n};\n\nexport default destroy;\n","import type { Core } from '@strapi/strapi';\n\nconst register = ({ strapi }: { strapi: Core.Strapi }) => {\n strapi.customFields.register({\n name: 'map-box',\n type: 'json',\n });\n};\n\nexport default register;\n\n","export default {\n default: {},\n validator() {},\n};\n","export default {};\n","import { config } from '../../../types';\n\nexport function getPluginConfig(name: string) {\n const config = strapi.plugin('strapi-plugin-map-box').config<config['public']>(name);\n return config;\n}\n\n","import type { Core } from '@strapi/strapi';\nimport { getPluginConfig } from '../utils';\n\nconst controller = ({ strapi }: { strapi: Core.Strapi }) => ({\n async locationSearch(ctx) {\n // Extract query from URL path\n const query = ctx.params.query;\n console.log('Query from URL:', query);\n\n const result = await strapi\n .plugin('strapi-plugin-map-box')\n .service('service')\n .locationSearch(query);\n\n ctx.body = result;\n },\n\n async getSettings(ctx) {\n const result = getPluginConfig('public')\n console.log('result from getSettings', result);\n ctx.body = result;\n },\n});\n\nexport default controller;\n","import controller from './controller';\n\nexport default {\n controller,\n};\n","export default {};\n","export default {};\n","export default [\n \n];\n","export default [\n {\n method: 'GET',\n path: '/location-search/:query',\n handler: 'controller.locationSearch',\n config: {\n policies: ['admin::isAuthenticatedAdmin'],\n },\n },\n {\n method: 'GET',\n path: '/get-settings',\n handler: 'controller.getSettings',\n config: {\n policies: ['admin::isAuthenticatedAdmin'],\n },\n },\n];\n","import contentAPIRoutes from './content-api';\nimport adminAPIRoutes from './admin-api';\n\nconst routes = {\n 'content-api': {\n type: 'content-api',\n routes: contentAPIRoutes,\n },\n 'admin-api': {\n type: 'admin',\n routes: adminAPIRoutes,\n },\n};\n\nexport default routes;","import type { Core } from '@strapi/strapi';\nimport { getPluginConfig } from '../utils';\n\nexport interface MapboxFeature {\n id: string;\n type: string;\n place_type: string[];\n relevance: number;\n properties: {\n mapbox_id: string;\n wikidata?: string;\n };\n text: string;\n place_name: string;\n center: [number, number];\n geometry: {\n type: string;\n coordinates: [number, number];\n };\n}\n\nexport interface MapboxResponse {\n type: string;\n query: string[];\n features: MapboxFeature[];\n attribution: string;\n}\n\ninterface MapBoxConfig {\n accessToken: string;\n}\n\nconst service = ({ strapi }: { strapi: Core.Strapi }) => ({\n async locationSearch(query: string) {\n try {\n const pluginSettings = getPluginConfig('public');\n\n console.log('pluginSettings', pluginSettings);\n\n if (!pluginSettings.accessToken) {\n return {\n error:\n 'MapBox access token is not configured. Please add your access token in the plugin settings.',\n features: [],\n };\n }\n\n const MAPBOX_ACCESS_TOKEN = pluginSettings.accessToken;\n console.log('MAPBOX_ACCESS_TOKEN', MAPBOX_ACCESS_TOKEN);\n console.log('Searching for:', query);\n\n const response = await fetch(\n `https://api.mapbox.com/geocoding/v5/mapbox.places/${encodeURIComponent(query)}.json?access_token=${MAPBOX_ACCESS_TOKEN}`\n );\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data = (await response.json()) as MapboxResponse;\n return data;\n } catch (error) {\n console.error('Error searching location:', error);\n return {\n error: error instanceof Error ? error.message : 'An error occurred',\n features: [],\n };\n }\n },\n});\n\nexport default service;\n","import service from './service';\n\nexport default {\n service,\n};\n","/**\n * Application methods\n */\nimport bootstrap from './bootstrap';\nimport destroy from './destroy';\nimport register from './register';\n\n/**\n * Plugin server methods\n */\nimport config from './config';\nimport contentTypes from './content-types';\nimport controllers from './controllers';\nimport middlewares from './middlewares';\nimport policies from './policies';\nimport routes from './routes';\nimport services from './services';\n\nexport default {\n register,\n bootstrap,\n destroy,\n config,\n controllers,\n routes,\n services,\n contentTypes,\n policies,\n middlewares,\n};\n"],"names":["strapi","config"],"mappings":";AAEA,MAAM,YAAY,CAAC,EAAE,QAAAA,cAAsC;AAE3D;ACFA,MAAM,UAAU,CAAC,EAAE,QAAAA,cAAsC;AAEzD;ACFA,MAAM,WAAW,CAAC,EAAE,QAAAA,cAAsC;AACxD,EAAAA,QAAO,aAAa,SAAS;AAAA,IAC3B,MAAM;AAAA,IACN,MAAM;AAAA,EAAA,CACP;AACH;ACPA,MAAe,SAAA;AAAA,EACb,SAAS,CAAC;AAAA,EACV,YAAY;AAAA,EAAA;AACd;ACHA,MAAA,eAAe,CAAC;ACET,SAAS,gBAAgB,MAAc;AAC5C,QAAMC,UAAS,OAAO,OAAO,uBAAuB,EAAE,OAAyB,IAAI;AAC5EA,SAAAA;AACT;ACFA,MAAM,aAAa,CAAC,EAAE,QAAAD,eAAuC;AAAA,EAC3D,MAAM,eAAe,KAAK;AAElB,UAAA,QAAQ,IAAI,OAAO;AACjB,YAAA,IAAI,mBAAmB,KAAK;AAE9B,UAAA,SAAS,MAAMA,QAClB,OAAO,uBAAuB,EAC9B,QAAQ,SAAS,EACjB,eAAe,KAAK;AAEvB,QAAI,OAAO;AAAA,EACb;AAAA,EAEA,MAAM,YAAY,KAAK;AACf,UAAA,SAAS,gBAAgB,QAAQ;AAC/B,YAAA,IAAI,2BAA2B,MAAM;AAC7C,QAAI,OAAO;AAAA,EAAA;AAEf;ACpBA,MAAe,cAAA;AAAA,EACb;AACF;ACJA,MAAA,cAAe,CAAC;ACAhB,MAAA,WAAe,CAAC;ACAhB,MAAA,mBAAe,CAEf;ACFA,MAAe,iBAAA;AAAA,EACb;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,MACN,UAAU,CAAC,6BAA6B;AAAA,IAAA;AAAA,EAE5C;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,MACN,UAAU,CAAC,6BAA6B;AAAA,IAAA;AAAA,EAC1C;AAEJ;ACdA,MAAM,SAAS;AAAA,EACb,eAAe;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,QAAQ;AAAA,EAAA;AAEZ;ACoBA,MAAM,UAAU,CAAC,EAAE,QAAAA,eAAuC;AAAA,EACxD,MAAM,eAAe,OAAe;AAC9B,QAAA;AACI,YAAA,iBAAiB,gBAAgB,QAAQ;AAEvC,cAAA,IAAI,kBAAkB,cAAc;AAExC,UAAA,CAAC,eAAe,aAAa;AACxB,eAAA;AAAA,UACL,OACE;AAAA,UACF,UAAU,CAAA;AAAA,QACZ;AAAA,MAAA;AAGF,YAAM,sBAAsB,eAAe;AACnC,cAAA,IAAI,uBAAuB,mBAAmB;AAC9C,cAAA,IAAI,kBAAkB,KAAK;AAEnC,YAAM,WAAW,MAAM;AAAA,QACrB,qDAAqD,mBAAmB,KAAK,CAAC,sBAAsB,mBAAmB;AAAA,MACzH;AAEI,UAAA,CAAC,SAAS,IAAI;AAChB,cAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,EAAE;AAAA,MAAA;AAGpD,YAAA,OAAQ,MAAM,SAAS,KAAK;AAC3B,aAAA;AAAA,aACA,OAAO;AACN,cAAA,MAAM,6BAA6B,KAAK;AACzC,aAAA;AAAA,QACL,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,QAChD,UAAU,CAAA;AAAA,MACZ;AAAA,IAAA;AAAA,EACF;AAEJ;ACnEA,MAAe,WAAA;AAAA,EACb;AACF;ACcA,MAAe,QAAA;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
const bootstrap = ({ strapi: strapi2 }) => {
|
|
2
|
+
};
|
|
3
|
+
const destroy = ({ strapi: strapi2 }) => {
|
|
4
|
+
};
|
|
5
|
+
const register = ({ strapi: strapi2 }) => {
|
|
6
|
+
strapi2.customFields.register({
|
|
7
|
+
name: "map-box",
|
|
8
|
+
type: "json"
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
const config = {
|
|
12
|
+
default: {},
|
|
13
|
+
validator() {
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
const contentTypes = {};
|
|
17
|
+
function getPluginConfig(name) {
|
|
18
|
+
const config2 = strapi.plugin("strapi-plugin-map-box").config(name);
|
|
19
|
+
return config2;
|
|
20
|
+
}
|
|
21
|
+
const controller = ({ strapi: strapi2 }) => ({
|
|
22
|
+
async locationSearch(ctx) {
|
|
23
|
+
const query = ctx.params.query;
|
|
24
|
+
console.log("Query from URL:", query);
|
|
25
|
+
const result = await strapi2.plugin("strapi-plugin-map-box").service("service").locationSearch(query);
|
|
26
|
+
ctx.body = result;
|
|
27
|
+
},
|
|
28
|
+
async getSettings(ctx) {
|
|
29
|
+
const result = getPluginConfig("public");
|
|
30
|
+
console.log("result from getSettings", result);
|
|
31
|
+
ctx.body = result;
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
const controllers = {
|
|
35
|
+
controller
|
|
36
|
+
};
|
|
37
|
+
const middlewares = {};
|
|
38
|
+
const policies = {};
|
|
39
|
+
const contentAPIRoutes = [];
|
|
40
|
+
const adminAPIRoutes = [
|
|
41
|
+
{
|
|
42
|
+
method: "GET",
|
|
43
|
+
path: "/location-search/:query",
|
|
44
|
+
handler: "controller.locationSearch",
|
|
45
|
+
config: {
|
|
46
|
+
policies: ["admin::isAuthenticatedAdmin"]
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
method: "GET",
|
|
51
|
+
path: "/get-settings",
|
|
52
|
+
handler: "controller.getSettings",
|
|
53
|
+
config: {
|
|
54
|
+
policies: ["admin::isAuthenticatedAdmin"]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
];
|
|
58
|
+
const routes = {
|
|
59
|
+
"content-api": {
|
|
60
|
+
type: "content-api",
|
|
61
|
+
routes: contentAPIRoutes
|
|
62
|
+
},
|
|
63
|
+
"admin-api": {
|
|
64
|
+
type: "admin",
|
|
65
|
+
routes: adminAPIRoutes
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
const service = ({ strapi: strapi2 }) => ({
|
|
69
|
+
async locationSearch(query) {
|
|
70
|
+
try {
|
|
71
|
+
const pluginSettings = getPluginConfig("public");
|
|
72
|
+
console.log("pluginSettings", pluginSettings);
|
|
73
|
+
if (!pluginSettings.accessToken) {
|
|
74
|
+
return {
|
|
75
|
+
error: "MapBox access token is not configured. Please add your access token in the plugin settings.",
|
|
76
|
+
features: []
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const MAPBOX_ACCESS_TOKEN = pluginSettings.accessToken;
|
|
80
|
+
console.log("MAPBOX_ACCESS_TOKEN", MAPBOX_ACCESS_TOKEN);
|
|
81
|
+
console.log("Searching for:", query);
|
|
82
|
+
const response = await fetch(
|
|
83
|
+
`https://api.mapbox.com/geocoding/v5/mapbox.places/${encodeURIComponent(query)}.json?access_token=${MAPBOX_ACCESS_TOKEN}`
|
|
84
|
+
);
|
|
85
|
+
if (!response.ok) {
|
|
86
|
+
throw new Error(`HTTP error! status: ${response.status}`);
|
|
87
|
+
}
|
|
88
|
+
const data = await response.json();
|
|
89
|
+
return data;
|
|
90
|
+
} catch (error) {
|
|
91
|
+
console.error("Error searching location:", error);
|
|
92
|
+
return {
|
|
93
|
+
error: error instanceof Error ? error.message : "An error occurred",
|
|
94
|
+
features: []
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
const services = {
|
|
100
|
+
service
|
|
101
|
+
};
|
|
102
|
+
const index = {
|
|
103
|
+
register,
|
|
104
|
+
bootstrap,
|
|
105
|
+
destroy,
|
|
106
|
+
config,
|
|
107
|
+
controllers,
|
|
108
|
+
routes,
|
|
109
|
+
services,
|
|
110
|
+
contentTypes,
|
|
111
|
+
policies,
|
|
112
|
+
middlewares
|
|
113
|
+
};
|
|
114
|
+
export {
|
|
115
|
+
index as default
|
|
116
|
+
};
|
|
117
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../server/src/bootstrap.ts","../../server/src/destroy.ts","../../server/src/register.ts","../../server/src/config/index.ts","../../server/src/content-types/index.ts","../../server/src/utils/index.ts","../../server/src/controllers/controller.ts","../../server/src/controllers/index.ts","../../server/src/middlewares/index.ts","../../server/src/policies/index.ts","../../server/src/routes/content-api.ts","../../server/src/routes/admin-api.ts","../../server/src/routes/index.ts","../../server/src/services/service.ts","../../server/src/services/index.ts","../../server/src/index.ts"],"sourcesContent":["import type { Core } from '@strapi/strapi';\n\nconst bootstrap = ({ strapi }: { strapi: Core.Strapi }) => {\n // bootstrap phase\n};\n\nexport default bootstrap;\n","import type { Core } from '@strapi/strapi';\n\nconst destroy = ({ strapi }: { strapi: Core.Strapi }) => {\n // destroy phase\n};\n\nexport default destroy;\n","import type { Core } from '@strapi/strapi';\n\nconst register = ({ strapi }: { strapi: Core.Strapi }) => {\n strapi.customFields.register({\n name: 'map-box',\n type: 'json',\n });\n};\n\nexport default register;\n\n","export default {\n default: {},\n validator() {},\n};\n","export default {};\n","import { config } from '../../../types';\n\nexport function getPluginConfig(name: string) {\n const config = strapi.plugin('strapi-plugin-map-box').config<config['public']>(name);\n return config;\n}\n\n","import type { Core } from '@strapi/strapi';\nimport { getPluginConfig } from '../utils';\n\nconst controller = ({ strapi }: { strapi: Core.Strapi }) => ({\n async locationSearch(ctx) {\n // Extract query from URL path\n const query = ctx.params.query;\n console.log('Query from URL:', query);\n\n const result = await strapi\n .plugin('strapi-plugin-map-box')\n .service('service')\n .locationSearch(query);\n\n ctx.body = result;\n },\n\n async getSettings(ctx) {\n const result = getPluginConfig('public')\n console.log('result from getSettings', result);\n ctx.body = result;\n },\n});\n\nexport default controller;\n","import controller from './controller';\n\nexport default {\n controller,\n};\n","export default {};\n","export default {};\n","export default [\n \n];\n","export default [\n {\n method: 'GET',\n path: '/location-search/:query',\n handler: 'controller.locationSearch',\n config: {\n policies: ['admin::isAuthenticatedAdmin'],\n },\n },\n {\n method: 'GET',\n path: '/get-settings',\n handler: 'controller.getSettings',\n config: {\n policies: ['admin::isAuthenticatedAdmin'],\n },\n },\n];\n","import contentAPIRoutes from './content-api';\nimport adminAPIRoutes from './admin-api';\n\nconst routes = {\n 'content-api': {\n type: 'content-api',\n routes: contentAPIRoutes,\n },\n 'admin-api': {\n type: 'admin',\n routes: adminAPIRoutes,\n },\n};\n\nexport default routes;","import type { Core } from '@strapi/strapi';\nimport { getPluginConfig } from '../utils';\n\nexport interface MapboxFeature {\n id: string;\n type: string;\n place_type: string[];\n relevance: number;\n properties: {\n mapbox_id: string;\n wikidata?: string;\n };\n text: string;\n place_name: string;\n center: [number, number];\n geometry: {\n type: string;\n coordinates: [number, number];\n };\n}\n\nexport interface MapboxResponse {\n type: string;\n query: string[];\n features: MapboxFeature[];\n attribution: string;\n}\n\ninterface MapBoxConfig {\n accessToken: string;\n}\n\nconst service = ({ strapi }: { strapi: Core.Strapi }) => ({\n async locationSearch(query: string) {\n try {\n const pluginSettings = getPluginConfig('public');\n\n console.log('pluginSettings', pluginSettings);\n\n if (!pluginSettings.accessToken) {\n return {\n error:\n 'MapBox access token is not configured. Please add your access token in the plugin settings.',\n features: [],\n };\n }\n\n const MAPBOX_ACCESS_TOKEN = pluginSettings.accessToken;\n console.log('MAPBOX_ACCESS_TOKEN', MAPBOX_ACCESS_TOKEN);\n console.log('Searching for:', query);\n\n const response = await fetch(\n `https://api.mapbox.com/geocoding/v5/mapbox.places/${encodeURIComponent(query)}.json?access_token=${MAPBOX_ACCESS_TOKEN}`\n );\n\n if (!response.ok) {\n throw new Error(`HTTP error! status: ${response.status}`);\n }\n\n const data = (await response.json()) as MapboxResponse;\n return data;\n } catch (error) {\n console.error('Error searching location:', error);\n return {\n error: error instanceof Error ? error.message : 'An error occurred',\n features: [],\n };\n }\n },\n});\n\nexport default service;\n","import service from './service';\n\nexport default {\n service,\n};\n","/**\n * Application methods\n */\nimport bootstrap from './bootstrap';\nimport destroy from './destroy';\nimport register from './register';\n\n/**\n * Plugin server methods\n */\nimport config from './config';\nimport contentTypes from './content-types';\nimport controllers from './controllers';\nimport middlewares from './middlewares';\nimport policies from './policies';\nimport routes from './routes';\nimport services from './services';\n\nexport default {\n register,\n bootstrap,\n destroy,\n config,\n controllers,\n routes,\n services,\n contentTypes,\n policies,\n middlewares,\n};\n"],"names":["strapi","config"],"mappings":"AAEA,MAAM,YAAY,CAAC,EAAE,QAAAA,cAAsC;AAE3D;ACFA,MAAM,UAAU,CAAC,EAAE,QAAAA,cAAsC;AAEzD;ACFA,MAAM,WAAW,CAAC,EAAE,QAAAA,cAAsC;AACxD,EAAAA,QAAO,aAAa,SAAS;AAAA,IAC3B,MAAM;AAAA,IACN,MAAM;AAAA,EAAA,CACP;AACH;ACPA,MAAe,SAAA;AAAA,EACb,SAAS,CAAC;AAAA,EACV,YAAY;AAAA,EAAA;AACd;ACHA,MAAA,eAAe,CAAC;ACET,SAAS,gBAAgB,MAAc;AAC5C,QAAMC,UAAS,OAAO,OAAO,uBAAuB,EAAE,OAAyB,IAAI;AAC5EA,SAAAA;AACT;ACFA,MAAM,aAAa,CAAC,EAAE,QAAAD,eAAuC;AAAA,EAC3D,MAAM,eAAe,KAAK;AAElB,UAAA,QAAQ,IAAI,OAAO;AACjB,YAAA,IAAI,mBAAmB,KAAK;AAE9B,UAAA,SAAS,MAAMA,QAClB,OAAO,uBAAuB,EAC9B,QAAQ,SAAS,EACjB,eAAe,KAAK;AAEvB,QAAI,OAAO;AAAA,EACb;AAAA,EAEA,MAAM,YAAY,KAAK;AACf,UAAA,SAAS,gBAAgB,QAAQ;AAC/B,YAAA,IAAI,2BAA2B,MAAM;AAC7C,QAAI,OAAO;AAAA,EAAA;AAEf;ACpBA,MAAe,cAAA;AAAA,EACb;AACF;ACJA,MAAA,cAAe,CAAC;ACAhB,MAAA,WAAe,CAAC;ACAhB,MAAA,mBAAe,CAEf;ACFA,MAAe,iBAAA;AAAA,EACb;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,MACN,UAAU,CAAC,6BAA6B;AAAA,IAAA;AAAA,EAE5C;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,QAAQ;AAAA,MACN,UAAU,CAAC,6BAA6B;AAAA,IAAA;AAAA,EAC1C;AAEJ;ACdA,MAAM,SAAS;AAAA,EACb,eAAe;AAAA,IACb,MAAM;AAAA,IACN,QAAQ;AAAA,EACV;AAAA,EACA,aAAa;AAAA,IACX,MAAM;AAAA,IACN,QAAQ;AAAA,EAAA;AAEZ;ACoBA,MAAM,UAAU,CAAC,EAAE,QAAAA,eAAuC;AAAA,EACxD,MAAM,eAAe,OAAe;AAC9B,QAAA;AACI,YAAA,iBAAiB,gBAAgB,QAAQ;AAEvC,cAAA,IAAI,kBAAkB,cAAc;AAExC,UAAA,CAAC,eAAe,aAAa;AACxB,eAAA;AAAA,UACL,OACE;AAAA,UACF,UAAU,CAAA;AAAA,QACZ;AAAA,MAAA;AAGF,YAAM,sBAAsB,eAAe;AACnC,cAAA,IAAI,uBAAuB,mBAAmB;AAC9C,cAAA,IAAI,kBAAkB,KAAK;AAEnC,YAAM,WAAW,MAAM;AAAA,QACrB,qDAAqD,mBAAmB,KAAK,CAAC,sBAAsB,mBAAmB;AAAA,MACzH;AAEI,UAAA,CAAC,SAAS,IAAI;AAChB,cAAM,IAAI,MAAM,uBAAuB,SAAS,MAAM,EAAE;AAAA,MAAA;AAGpD,YAAA,OAAQ,MAAM,SAAS,KAAK;AAC3B,aAAA;AAAA,aACA,OAAO;AACN,cAAA,MAAM,6BAA6B,KAAK;AACzC,aAAA;AAAA,QACL,OAAO,iBAAiB,QAAQ,MAAM,UAAU;AAAA,QAChD,UAAU,CAAA;AAAA,MACZ;AAAA,IAAA;AAAA,EACF;AAEJ;ACnEA,MAAe,WAAA;AAAA,EACb;AACF;ACcA,MAAe,QAAA;AAAA,EACb;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
register: ({ strapi }: {
|
|
3
|
+
strapi: import("@strapi/types/dist/core").Strapi;
|
|
4
|
+
}) => void;
|
|
5
|
+
bootstrap: ({ strapi }: {
|
|
6
|
+
strapi: import("@strapi/types/dist/core").Strapi;
|
|
7
|
+
}) => void;
|
|
8
|
+
destroy: ({ strapi }: {
|
|
9
|
+
strapi: import("@strapi/types/dist/core").Strapi;
|
|
10
|
+
}) => void;
|
|
11
|
+
config: {
|
|
12
|
+
default: {};
|
|
13
|
+
validator(): void;
|
|
14
|
+
};
|
|
15
|
+
controllers: {
|
|
16
|
+
controller: ({ strapi }: {
|
|
17
|
+
strapi: import("@strapi/types/dist/core").Strapi;
|
|
18
|
+
}) => {
|
|
19
|
+
locationSearch(ctx: any): Promise<void>;
|
|
20
|
+
getSettings(ctx: any): Promise<void>;
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
routes: {
|
|
24
|
+
'content-api': {
|
|
25
|
+
type: string;
|
|
26
|
+
routes: any[];
|
|
27
|
+
};
|
|
28
|
+
'admin-api': {
|
|
29
|
+
type: string;
|
|
30
|
+
routes: {
|
|
31
|
+
method: string;
|
|
32
|
+
path: string;
|
|
33
|
+
handler: string;
|
|
34
|
+
config: {
|
|
35
|
+
policies: string[];
|
|
36
|
+
};
|
|
37
|
+
}[];
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
services: {
|
|
41
|
+
service: ({ strapi }: {
|
|
42
|
+
strapi: import("@strapi/types/dist/core").Strapi;
|
|
43
|
+
}) => {
|
|
44
|
+
locationSearch(query: string): Promise<import("./services/service").MapboxResponse | {
|
|
45
|
+
error: string;
|
|
46
|
+
features: any[];
|
|
47
|
+
}>;
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
contentTypes: {};
|
|
51
|
+
policies: {};
|
|
52
|
+
middlewares: {};
|
|
53
|
+
};
|
|
54
|
+
export default _default;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
declare const routes: {
|
|
2
|
+
'content-api': {
|
|
3
|
+
type: string;
|
|
4
|
+
routes: any[];
|
|
5
|
+
};
|
|
6
|
+
'admin-api': {
|
|
7
|
+
type: string;
|
|
8
|
+
routes: {
|
|
9
|
+
method: string;
|
|
10
|
+
path: string;
|
|
11
|
+
handler: string;
|
|
12
|
+
config: {
|
|
13
|
+
policies: string[];
|
|
14
|
+
};
|
|
15
|
+
}[];
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export default routes;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
declare const _default: {
|
|
2
|
+
service: ({ strapi }: {
|
|
3
|
+
strapi: import("@strapi/types/dist/core").Strapi;
|
|
4
|
+
}) => {
|
|
5
|
+
locationSearch(query: string): Promise<import("./service").MapboxResponse | {
|
|
6
|
+
error: string;
|
|
7
|
+
features: any[];
|
|
8
|
+
}>;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export default _default;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { Core } from '@strapi/strapi';
|
|
2
|
+
export interface MapboxFeature {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
place_type: string[];
|
|
6
|
+
relevance: number;
|
|
7
|
+
properties: {
|
|
8
|
+
mapbox_id: string;
|
|
9
|
+
wikidata?: string;
|
|
10
|
+
};
|
|
11
|
+
text: string;
|
|
12
|
+
place_name: string;
|
|
13
|
+
center: [number, number];
|
|
14
|
+
geometry: {
|
|
15
|
+
type: string;
|
|
16
|
+
coordinates: [number, number];
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export interface MapboxResponse {
|
|
20
|
+
type: string;
|
|
21
|
+
query: string[];
|
|
22
|
+
features: MapboxFeature[];
|
|
23
|
+
attribution: string;
|
|
24
|
+
}
|
|
25
|
+
declare const service: ({ strapi }: {
|
|
26
|
+
strapi: Core.Strapi;
|
|
27
|
+
}) => {
|
|
28
|
+
locationSearch(query: string): Promise<MapboxResponse | {
|
|
29
|
+
error: string;
|
|
30
|
+
features: any[];
|
|
31
|
+
}>;
|
|
32
|
+
};
|
|
33
|
+
export default service;
|
package/dist/types.d.ts
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.0.1",
|
|
3
|
+
"keywords": [
|
|
4
|
+
"mapbox",
|
|
5
|
+
"map",
|
|
6
|
+
"location",
|
|
7
|
+
"mapbox-plugin",
|
|
8
|
+
"mapbox-map",
|
|
9
|
+
"mapbox-location"
|
|
10
|
+
],
|
|
11
|
+
"type": "commonjs",
|
|
12
|
+
"exports": {
|
|
13
|
+
"./package.json": "./package.json",
|
|
14
|
+
"./strapi-admin": {
|
|
15
|
+
"types": "./dist/admin/src/index.d.ts",
|
|
16
|
+
"source": "./admin/src/index.ts",
|
|
17
|
+
"import": "./dist/admin/index.mjs",
|
|
18
|
+
"require": "./dist/admin/index.js",
|
|
19
|
+
"default": "./dist/admin/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./strapi-server": {
|
|
22
|
+
"types": "./dist/server/src/index.d.ts",
|
|
23
|
+
"source": "./server/src/index.ts",
|
|
24
|
+
"import": "./dist/server/index.mjs",
|
|
25
|
+
"require": "./dist/server/index.js",
|
|
26
|
+
"default": "./dist/server/index.js"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"dist"
|
|
31
|
+
],
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "strapi-plugin build",
|
|
34
|
+
"watch": "strapi-plugin watch",
|
|
35
|
+
"watch:link": "strapi-plugin watch:link",
|
|
36
|
+
"verify": "strapi-plugin verify",
|
|
37
|
+
"test:ts:front": "run -T tsc -p admin/tsconfig.json",
|
|
38
|
+
"test:ts:back": "run -T tsc -p server/tsconfig.json"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@mapbox/search-js-react": "^1.1.0",
|
|
42
|
+
"@strapi/design-system": "^2.0.0-rc.25",
|
|
43
|
+
"@strapi/icons": "^2.0.0-rc.25",
|
|
44
|
+
"mapbox-gl": "^3.12.0",
|
|
45
|
+
"react-intl": "^7.1.11",
|
|
46
|
+
"react-map-gl": "^8.0.4",
|
|
47
|
+
"use-debounce": "^10.0.5"
|
|
48
|
+
},
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"@strapi/sdk-plugin": "^5.3.2",
|
|
51
|
+
"@strapi/strapi": "^5.15.1",
|
|
52
|
+
"@strapi/typescript-utils": "^5.15.1",
|
|
53
|
+
"@types/mapbox-gl": "^3.4.1",
|
|
54
|
+
"@types/react": "^19.1.8",
|
|
55
|
+
"@types/react-dom": "^19.1.6",
|
|
56
|
+
"prettier": "^3.5.3",
|
|
57
|
+
"react": "^18.3.1",
|
|
58
|
+
"react-dom": "^18.3.1",
|
|
59
|
+
"react-router-dom": "^6.30.1",
|
|
60
|
+
"styled-components": "^6.1.18",
|
|
61
|
+
"typescript": "^5.8.3"
|
|
62
|
+
},
|
|
63
|
+
"peerDependencies": {
|
|
64
|
+
"@strapi/sdk-plugin": "^5.3.2",
|
|
65
|
+
"@strapi/strapi": "^5.15.1",
|
|
66
|
+
"react": "^18.3.1",
|
|
67
|
+
"react-dom": "^18.3.1",
|
|
68
|
+
"react-router-dom": "^6.30.1",
|
|
69
|
+
"styled-components": "^6.1.18"
|
|
70
|
+
},
|
|
71
|
+
"strapi": {
|
|
72
|
+
"kind": "plugin",
|
|
73
|
+
"name": "strapi-plugin-map-box",
|
|
74
|
+
"displayName": "MapBox",
|
|
75
|
+
"description": "This plugin allows you to add a map field to your Strapi content types. It uses MapBox to display the map and search for locations."
|
|
76
|
+
},
|
|
77
|
+
"repository": {
|
|
78
|
+
"type": "git",
|
|
79
|
+
"url": "https://github.com/PaulBratslavsky/strapi-plugin-map-box"
|
|
80
|
+
},
|
|
81
|
+
"name": "strapi-plugin-map-box",
|
|
82
|
+
"description": "MapBox map field.",
|
|
83
|
+
"author": {
|
|
84
|
+
"name": "Paul Bratslavsky",
|
|
85
|
+
"email": "paul.braatslavsky@strapi.io",
|
|
86
|
+
"url": "https://github.com/PaulBratslavsky"
|
|
87
|
+
},
|
|
88
|
+
"license": "MIT"
|
|
89
|
+
}
|