@alpaca-headless/alpaca-headless-nextjs 0.0.3 → 1.0.1111

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.
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.setAlpacaContext = exports.useAlpacaContext = void 0;
3
+ exports.useAlpacaContext = void 0;
4
4
  function useAlpacaContext() {
5
- return globalThis.alpacaContext;
5
+ let context = globalThis.alpacaContext;
6
+ if (!context) {
7
+ context = {};
8
+ globalThis.alpacaContext = context;
9
+ }
10
+ return context;
6
11
  }
7
12
  exports.useAlpacaContext = useAlpacaContext;
8
- function setAlpacaContext(context) {
9
- globalThis.alpacaContext = context;
10
- }
11
- exports.setAlpacaContext = setAlpacaContext;
@@ -11,6 +11,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.Placeholder = void 0;
13
13
  const jsx_runtime_1 = require("react/jsx-runtime");
14
+ const __1 = require("..");
14
15
  function Placeholder({ name, content, }) {
15
16
  return __awaiter(this, void 0, void 0, function* () {
16
17
  const data = yield content;
@@ -19,7 +20,8 @@ function Placeholder({ name, content, }) {
19
20
  const placeholderData = data.placeholders.find((x) => x.name == name);
20
21
  if (!placeholderData)
21
22
  return;
22
- const loader = globalThis.moduleLoader;
23
+ const context = (0, __1.useAlpacaContext)();
24
+ const loader = context.componentModuleLoader;
23
25
  const promises = placeholderData === null || placeholderData === void 0 ? void 0 : placeholderData.components.map((component) => __awaiter(this, void 0, void 0, function* () {
24
26
  const module = yield loader(component.componentType);
25
27
  return { data: component, Component: module.default };
package/dist/cjs/index.js CHANGED
@@ -17,3 +17,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./layoutData"), exports);
18
18
  __exportStar(require("./loadRouteData"), exports);
19
19
  __exportStar(require("./components"), exports);
20
+ __exportStar(require("./alpacaContext"), exports);
21
+ __exportStar(require("./fieldTypes"), exports);
@@ -11,21 +11,26 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.loadRouteData = void 0;
13
13
  const alpacaContext_1 = require("./alpacaContext");
14
- function loadRouteData(params, host) {
14
+ const headers_1 = require("next/headers");
15
+ function loadRouteData(params, searchParams, host) {
15
16
  var _a, _b;
16
17
  return __awaiter(this, void 0, void 0, function* () {
17
18
  const request = {
18
19
  Path: (_b = (_a = params.path) === null || _a === void 0 ? void 0 : _a.join("/")) !== null && _b !== void 0 ? _b : "/",
19
20
  Host: host,
20
- Mode: "preview",
21
+ Mode: searchParams["mode"] || "preview",
22
+ ItemId: searchParams["itemid"],
23
+ Language: searchParams["language"],
21
24
  };
22
25
  const url = process.env.LAYOUT_SERVICE_URL + "/alpaca/headless/layout";
23
- console.log(`Fetching page layout from ${url}`);
26
+ console.log(`Fetching page layout from ${url}. Host:${request.Host} Path: ${request.Path}`);
24
27
  const response = yield fetch(url, {
25
28
  method: "POST",
26
29
  body: JSON.stringify(request),
30
+ credentials: "include",
27
31
  headers: {
28
32
  "Content-Type": "application/json",
33
+ Cookie: (0, headers_1.cookies)().toString(),
29
34
  },
30
35
  next: { tags: ["pages"], revalidate: 10 },
31
36
  });
@@ -48,15 +53,16 @@ function loadRouteData(params, host) {
48
53
  message: message,
49
54
  };
50
55
  }
51
- (0, alpacaContext_1.setAlpacaContext)({
52
- itemId: "",
53
- language: "en",
54
- site: { name: "" },
55
- pageEditing: true,
56
- pageState: "",
57
- });
58
56
  const data = yield response.json();
59
57
  console.log(data);
58
+ const context = (0, alpacaContext_1.useAlpacaContext)();
59
+ context.pageContext = {
60
+ itemId: data.page.id,
61
+ language: data.page.language,
62
+ site: data.site,
63
+ pageEditing: true,
64
+ pageState: "",
65
+ };
60
66
  return Object.assign(Object.assign({}, data.page), { type: "page" });
61
67
  });
62
68
  }
@@ -1,6 +1,8 @@
1
1
  export function useAlpacaContext() {
2
- return globalThis.alpacaContext;
3
- }
4
- export function setAlpacaContext(context) {
5
- globalThis.alpacaContext = context;
2
+ let context = globalThis.alpacaContext;
3
+ if (!context) {
4
+ context = {};
5
+ globalThis.alpacaContext = context;
6
+ }
7
+ return context;
6
8
  }
@@ -8,6 +8,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
11
+ import { useAlpacaContext, } from "..";
11
12
  export function Placeholder({ name, content, }) {
12
13
  return __awaiter(this, void 0, void 0, function* () {
13
14
  const data = yield content;
@@ -16,7 +17,8 @@ export function Placeholder({ name, content, }) {
16
17
  const placeholderData = data.placeholders.find((x) => x.name == name);
17
18
  if (!placeholderData)
18
19
  return;
19
- const loader = globalThis.moduleLoader;
20
+ const context = useAlpacaContext();
21
+ const loader = context.componentModuleLoader;
20
22
  const promises = placeholderData === null || placeholderData === void 0 ? void 0 : placeholderData.components.map((component) => __awaiter(this, void 0, void 0, function* () {
21
23
  const module = yield loader(component.componentType);
22
24
  return { data: component, Component: module.default };
package/dist/esm/index.js CHANGED
@@ -1,3 +1,5 @@
1
1
  export * from "./layoutData";
2
2
  export * from "./loadRouteData";
3
3
  export * from "./components";
4
+ export * from "./alpacaContext";
5
+ export * from "./fieldTypes";
@@ -7,22 +7,27 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { setAlpacaContext } from "./alpacaContext";
11
- export function loadRouteData(params, host) {
10
+ import { useAlpacaContext } from "./alpacaContext";
11
+ import { cookies } from "next/headers";
12
+ export function loadRouteData(params, searchParams, host) {
12
13
  var _a, _b;
13
14
  return __awaiter(this, void 0, void 0, function* () {
14
15
  const request = {
15
16
  Path: (_b = (_a = params.path) === null || _a === void 0 ? void 0 : _a.join("/")) !== null && _b !== void 0 ? _b : "/",
16
17
  Host: host,
17
- Mode: "preview",
18
+ Mode: searchParams["mode"] || "preview",
19
+ ItemId: searchParams["itemid"],
20
+ Language: searchParams["language"],
18
21
  };
19
22
  const url = process.env.LAYOUT_SERVICE_URL + "/alpaca/headless/layout";
20
- console.log(`Fetching page layout from ${url}`);
23
+ console.log(`Fetching page layout from ${url}. Host:${request.Host} Path: ${request.Path}`);
21
24
  const response = yield fetch(url, {
22
25
  method: "POST",
23
26
  body: JSON.stringify(request),
27
+ credentials: "include",
24
28
  headers: {
25
29
  "Content-Type": "application/json",
30
+ Cookie: cookies().toString(),
26
31
  },
27
32
  next: { tags: ["pages"], revalidate: 10 },
28
33
  });
@@ -45,15 +50,16 @@ export function loadRouteData(params, host) {
45
50
  message: message,
46
51
  };
47
52
  }
48
- setAlpacaContext({
49
- itemId: "",
50
- language: "en",
51
- site: { name: "" },
52
- pageEditing: true,
53
- pageState: "",
54
- });
55
53
  const data = yield response.json();
56
54
  console.log(data);
55
+ const context = useAlpacaContext();
56
+ context.pageContext = {
57
+ itemId: data.page.id,
58
+ language: data.page.language,
59
+ site: data.site,
60
+ pageEditing: true,
61
+ pageState: "",
62
+ };
57
63
  return Object.assign(Object.assign({}, data.page), { type: "page" });
58
64
  });
59
65
  }
package/next-env.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- /// <reference types="next" />
2
- /// <reference types="next/image-types/global" />
3
-
4
- // NOTE: This file should not be edited
5
- // see https://nextjs.org/docs/basic-features/typescript for more information.
1
+ /// <reference types="next" />
2
+ /// <reference types="next/image-types/global" />
3
+
4
+ // NOTE: This file should not be edited
5
+ // see https://nextjs.org/docs/basic-features/typescript for more information.
package/package.json CHANGED
@@ -1,39 +1,39 @@
1
- {
2
- "name": "@alpaca-headless/alpaca-headless-nextjs",
3
- "version": "0.0.3",
4
- "description": "Alpaca Headless NextJs Integration",
5
- "main": "dist/cjs/index.js",
6
- "module": "dist/esm/index.js",
7
- "types": "types/index.d.ts",
8
- "files": [
9
- "dist",
10
- "types",
11
- "/*.js",
12
- "/*.d.ts"
13
- ],
14
- "scripts": {
15
- "build": "npm run build:cjs && npm run build:esm",
16
- "build:cjs": "node tools/cleanup cjs && tsc -p config/tsconfig.cjs.json --noEmit false",
17
- "build:esm": "node tools/cleanup esm && tsc -p config/tsconfig.esm.json --noEmit false",
18
- "clean": "node tools/cleanup",
19
- "package": "npm run build && npm pack"
20
- },
21
- "author": "Canvas REPLY DE GmbH",
22
- "license": "MIT",
23
- "dependencies": {
24
- "autoprefixer": "10.4.14",
25
- "next": "13.4.9",
26
- "node-cleanup": "^2.1.2",
27
- "react": "18.2.0",
28
- "react-dom": "18.2.0",
29
- "server-only": "^0.0.1"
30
- },
31
- "devDependencies": {
32
- "@types/node": "20.4.1",
33
- "@types/react": "18.2.14",
34
- "@types/react-dom": "18.2.6",
35
- "eslint": "8.44.0",
36
- "eslint-config-next": "13.4.9",
37
- "typescript": "5.1.6"
38
- }
39
- }
1
+ {
2
+ "name": "@alpaca-headless/alpaca-headless-nextjs",
3
+ "version": "1.0.1111",
4
+ "description": "Alpaca Headless NextJs Integration",
5
+ "main": "dist/cjs/index.js",
6
+ "module": "dist/esm/index.js",
7
+ "types": "types/index.d.ts",
8
+ "files": [
9
+ "dist",
10
+ "types",
11
+ "/*.js",
12
+ "/*.d.ts"
13
+ ],
14
+ "scripts": {
15
+ "build": "npm run build:cjs && npm run build:esm",
16
+ "build:cjs": "node tools/cleanup cjs && tsc -p config/tsconfig.cjs.json --noEmit false",
17
+ "build:esm": "node tools/cleanup esm && tsc -p config/tsconfig.esm.json --noEmit false",
18
+ "clean": "node tools/cleanup",
19
+ "package": "npm run build && npm pack"
20
+ },
21
+ "author": "Canvas REPLY DE GmbH",
22
+ "license": "MIT",
23
+ "dependencies": {
24
+ "autoprefixer": "10.4.14",
25
+ "next": "13.4.9",
26
+ "node-cleanup": "^2.1.2",
27
+ "react": "18.2.0",
28
+ "react-dom": "18.2.0",
29
+ "server-only": "^0.0.1"
30
+ },
31
+ "devDependencies": {
32
+ "@types/node": "20.4.1",
33
+ "@types/react": "18.2.14",
34
+ "@types/react-dom": "18.2.6",
35
+ "eslint": "8.44.0",
36
+ "eslint-config-next": "13.4.9",
37
+ "typescript": "5.1.6"
38
+ }
39
+ }
@@ -1,12 +1,14 @@
1
1
  type AlpacaContext = {
2
- itemId: string;
3
- language: string;
4
- pageEditing: boolean;
5
- pageState: string;
6
- site: {
7
- name: string;
2
+ componentModuleLoader: (name: string) => Promise<any>;
3
+ pageContext: {
4
+ itemId: string;
5
+ language: string;
6
+ pageEditing: boolean;
7
+ pageState: string;
8
+ site: {
9
+ name: string;
10
+ };
8
11
  };
9
12
  };
10
13
  export declare function useAlpacaContext(): AlpacaContext;
11
- export declare function setAlpacaContext(context: AlpacaContext): void;
12
14
  export {};
package/types/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  export * from "./layoutData";
2
2
  export * from "./loadRouteData";
3
3
  export * from "./components";
4
+ export * from "./alpacaContext";
5
+ export * from "./fieldTypes";
@@ -10,6 +10,9 @@ export type Error = Response & {
10
10
  export type Page = Response & {
11
11
  type: "page";
12
12
  placeholders: PlaceholderData[];
13
+ meta: {
14
+ title: string;
15
+ };
13
16
  };
14
17
  export type Redirect = Response & {
15
18
  type: "redirect";
@@ -20,5 +23,5 @@ export type NotFound = Response & {
20
23
  };
21
24
  export declare function loadRouteData(params: {
22
25
  path: string[];
23
- }, host: string): Promise<Page | Error | Redirect | NotFound>;
26
+ }, searchParams: any, host: string): Promise<Page | Error | Redirect | NotFound>;
24
27
  export {};
@@ -1,37 +0,0 @@
1
- export type PlaceholderData = {
2
- name: string;
3
- components: ComponentData[];
4
- };
5
- export type ComponentData = {
6
- name: string;
7
- componentType: string;
8
- graphql: object;
9
- placeholders: PlaceholderData[];
10
- type: "component";
11
- };
12
- type Response = {
13
- type: "page" | "redirect" | "error" | "notfound";
14
- };
15
- export type Error = Response & {
16
- type: "error";
17
- message: string;
18
- errorCode: number;
19
- };
20
- export type Page = Response & {
21
- type: "page";
22
- placeholders: PlaceholderData[];
23
- };
24
- export type Redirect = Response & {
25
- type: "redirect";
26
- location: string;
27
- };
28
- export type NotFound = Response & {
29
- type: "notfound";
30
- };
31
- export type TextField = {
32
- value: string;
33
- };
34
- export declare function loadRouteData(params: {
35
- path: string[];
36
- }): Promise<Page | Error | Redirect | NotFound>;
37
- export {};