@proxima-io/storefront-core 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.
@@ -0,0 +1,57 @@
1
+ export interface ProximaApiConfig {
2
+ baseUrl: string;
3
+ domain: string;
4
+ path: string;
5
+ websiteId?: string;
6
+ businessId?: string;
7
+ }
8
+ export interface ProximaWebsiteResponse {
9
+ id: string;
10
+ business_id: string;
11
+ name: string;
12
+ domain: string;
13
+ subdomain_slug?: string | null;
14
+ custom_domain?: string | null;
15
+ publication_status?: string;
16
+ published_at?: string | null;
17
+ delivery_mode: string;
18
+ website_kind: string;
19
+ template_key?: string | null;
20
+ code_profile?: string | null;
21
+ capabilities: Record<string, any>;
22
+ theme_tokens: Record<string, any>;
23
+ animation_config: Record<string, any>;
24
+ }
25
+ export interface ProximaCompositionResponse {
26
+ page_id: number;
27
+ website_id: string;
28
+ path: string;
29
+ path_template: string;
30
+ name: string;
31
+ entity_type?: string | null;
32
+ resolver_kind?: string | null;
33
+ route_params: Record<string, string>;
34
+ resolved_data?: Record<string, any> | null;
35
+ sections: Array<{
36
+ id: number;
37
+ name: string;
38
+ type: string;
39
+ order: number;
40
+ attributes: Record<string, any>;
41
+ attributes_meta?: Record<string, any>;
42
+ }>;
43
+ seo?: Record<string, any> | null;
44
+ }
45
+ export interface ProximaProductListResponse {
46
+ items: any[];
47
+ total: number;
48
+ page: number;
49
+ size: number;
50
+ }
51
+ export declare function fetchProximaWebsite(config: Pick<ProximaApiConfig, "baseUrl" | "domain"> & {
52
+ host?: string;
53
+ }): Promise<ProximaWebsiteResponse>;
54
+ export declare function makeBuilderPreviewWebsite(config: Pick<ProximaApiConfig, "websiteId" | "businessId" | "domain">): ProximaWebsiteResponse;
55
+ export declare function fetchProximaComposition(config: ProximaApiConfig, website: ProximaWebsiteResponse): Promise<ProximaCompositionResponse>;
56
+ export declare function fetchProximaProducts(config: Pick<ProximaApiConfig, "baseUrl">, website: ProximaWebsiteResponse): Promise<ProximaProductListResponse>;
57
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,60 @@
1
+ export async function fetchProximaWebsite(config) {
2
+ const url = new URL("/api/v1/storefront/cms/websites/resolve", config.baseUrl);
3
+ url.searchParams.set("host", config.host || config.domain);
4
+ const response = await fetch(url);
5
+ if (!response.ok) {
6
+ throw new Error(`Website resolve failed: ${response.status}`);
7
+ }
8
+ return response.json();
9
+ }
10
+ export function makeBuilderPreviewWebsite(config) {
11
+ if (!config.websiteId || !config.businessId) {
12
+ throw new Error("Builder preview requires websiteId and businessId");
13
+ }
14
+ return {
15
+ id: config.websiteId,
16
+ business_id: config.businessId,
17
+ name: "Builder preview",
18
+ domain: config.domain,
19
+ delivery_mode: "custom_managed",
20
+ website_kind: "ecommerce",
21
+ template_key: null,
22
+ code_profile: null,
23
+ capabilities: {},
24
+ theme_tokens: {},
25
+ animation_config: {},
26
+ };
27
+ }
28
+ export async function fetchProximaComposition(config, website) {
29
+ const url = new URL(`/api/v1/storefront/cms/websites/${website.id}/pages/composition`, config.baseUrl);
30
+ url.searchParams.set("path", config.path);
31
+ url.searchParams.set("locale", "es");
32
+ url.searchParams.set("business_id", website.business_id);
33
+ const response = await fetch(url, {
34
+ headers: {
35
+ "X-Business-ID": website.business_id,
36
+ "Accept-Language": "es",
37
+ "X-Currency": "PEN",
38
+ },
39
+ });
40
+ if (!response.ok) {
41
+ throw new Error(`Composition failed: ${response.status}`);
42
+ }
43
+ return response.json();
44
+ }
45
+ export async function fetchProximaProducts(config, website) {
46
+ const url = new URL("/api/v1/products", config.baseUrl);
47
+ url.searchParams.set("size", "12");
48
+ const response = await fetch(url, {
49
+ headers: {
50
+ "X-Business-ID": website.business_id,
51
+ "Accept-Language": "es",
52
+ "X-Currency": "PEN",
53
+ },
54
+ });
55
+ if (!response.ok) {
56
+ throw new Error(`Products failed: ${response.status}`);
57
+ }
58
+ return response.json();
59
+ }
60
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "name": "@proxima-io/storefront-core",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "HTTP client for the Proxima API — website resolution, CMS composition, and product listing.",
6
+ "license": "MIT",
7
+ "main": "./dist/index.js",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "import": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ }
14
+ },
15
+ "files": [
16
+ "dist"
17
+ ],
18
+ "devDependencies": {
19
+ "@types/node": "^24.0.0",
20
+ "typescript": "^6.0.3",
21
+ "vitest": "^4.1.6"
22
+ },
23
+ "publishConfig": {
24
+ "access": "public"
25
+ },
26
+ "scripts": {
27
+ "build": "tsc --project tsconfig.json",
28
+ "typecheck": "tsc --project tsconfig.json --noEmit",
29
+ "test": "vitest run",
30
+ "clean": "rm -rf dist",
31
+ "publish:pkg": "pnpm publish --no-git-checks"
32
+ }
33
+ }