@alpaca-headless/alpaca-headless-nextjs 0.0.1 → 0.0.2

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,72 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.loadRouteData = exports.Component = void 0;
13
+ class Component {
14
+ constructor(data, reactComponent) {
15
+ this.data = data;
16
+ this.reactComponent = reactComponent;
17
+ }
18
+ getPlaceholderData(placeholder) {
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ return this.data.placeholders.find((x) => x.name == placeholder);
21
+ });
22
+ }
23
+ getReactComponent() {
24
+ return this.reactComponent;
25
+ }
26
+ getData() {
27
+ return;
28
+ }
29
+ }
30
+ exports.Component = Component;
31
+ function loadRouteData(params) {
32
+ var _a, _b;
33
+ return __awaiter(this, void 0, void 0, function* () {
34
+ const request = {
35
+ Path: (_b = (_a = params.path) === null || _a === void 0 ? void 0 : _a.join("/")) !== null && _b !== void 0 ? _b : "/",
36
+ Host: "alpaca.headless.site",
37
+ Mode: "preview",
38
+ };
39
+ const url = process.env.LAYOUT_SERVICE_URL + "/alpaca/headless/layout";
40
+ console.log(`Fetching page layout from ${url}`);
41
+ const response = yield fetch(url, {
42
+ method: "POST",
43
+ body: JSON.stringify(request),
44
+ headers: {
45
+ "Content-Type": "application/json",
46
+ },
47
+ next: { tags: ["pages"], revalidate: 10 },
48
+ });
49
+ if (response.status === 404) {
50
+ return {
51
+ type: "notfound",
52
+ };
53
+ }
54
+ if (response.status === 301) {
55
+ return {
56
+ type: "redirect",
57
+ location: response.url,
58
+ };
59
+ }
60
+ if (response.status !== 200) {
61
+ const message = yield response.text();
62
+ return {
63
+ type: "error",
64
+ errorCode: response.status,
65
+ message: message,
66
+ };
67
+ }
68
+ const data = yield response.json();
69
+ return Object.assign(Object.assign({}, data.page), { type: "page" });
70
+ });
71
+ }
72
+ exports.loadRouteData = loadRouteData;
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.Placeholder = void 0;
39
+ const react_1 = __importDefault(require("react"));
40
+ function Placeholder({ name, content, }) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ const data = yield content;
43
+ if (data.type !== "page" && data.type !== "component")
44
+ return;
45
+ const placeholderData = data.placeholders.find((x) => x.name == name);
46
+ if (!placeholderData)
47
+ return;
48
+ const promises = placeholderData === null || placeholderData === void 0 ? void 0 : placeholderData.components.map((component) => __awaiter(this, void 0, void 0, function* () {
49
+ const module = yield Promise.resolve(`${`./components/${component.componentType}`}`).then(s => __importStar(require(s)));
50
+ return { data: component, Component: module.default };
51
+ }));
52
+ const components = yield Promise.all(promises);
53
+ return (react_1.default.createElement(react_1.default.Fragment, null, components.map(({ Component, data }) => (react_1.default.createElement(Component, { component: data })))));
54
+ });
55
+ }
56
+ exports.Placeholder = Placeholder;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Test = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ function Test({ name }) {
9
+ return react_1.default.createElement(react_1.default.Fragment, null, name);
10
+ }
11
+ exports.Test = Test;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./AlpacaHeadless"), exports);
18
+ __exportStar(require("./Placeholder"), exports);
@@ -0,0 +1,67 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ export class Component {
11
+ constructor(data, reactComponent) {
12
+ this.data = data;
13
+ this.reactComponent = reactComponent;
14
+ }
15
+ getPlaceholderData(placeholder) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ return this.data.placeholders.find((x) => x.name == placeholder);
18
+ });
19
+ }
20
+ getReactComponent() {
21
+ return this.reactComponent;
22
+ }
23
+ getData() {
24
+ return;
25
+ }
26
+ }
27
+ export function loadRouteData(params) {
28
+ var _a, _b;
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ const request = {
31
+ Path: (_b = (_a = params.path) === null || _a === void 0 ? void 0 : _a.join("/")) !== null && _b !== void 0 ? _b : "/",
32
+ Host: "alpaca.headless.site",
33
+ Mode: "preview",
34
+ };
35
+ const url = process.env.LAYOUT_SERVICE_URL + "/alpaca/headless/layout";
36
+ console.log(`Fetching page layout from ${url}`);
37
+ const response = yield fetch(url, {
38
+ method: "POST",
39
+ body: JSON.stringify(request),
40
+ headers: {
41
+ "Content-Type": "application/json",
42
+ },
43
+ next: { tags: ["pages"], revalidate: 10 },
44
+ });
45
+ if (response.status === 404) {
46
+ return {
47
+ type: "notfound",
48
+ };
49
+ }
50
+ if (response.status === 301) {
51
+ return {
52
+ type: "redirect",
53
+ location: response.url,
54
+ };
55
+ }
56
+ if (response.status !== 200) {
57
+ const message = yield response.text();
58
+ return {
59
+ type: "error",
60
+ errorCode: response.status,
61
+ message: message,
62
+ };
63
+ }
64
+ const data = yield response.json();
65
+ return Object.assign(Object.assign({}, data.page), { type: "page" });
66
+ });
67
+ }
@@ -0,0 +1,26 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import React from "react";
11
+ export function Placeholder({ name, content, }) {
12
+ return __awaiter(this, void 0, void 0, function* () {
13
+ const data = yield content;
14
+ if (data.type !== "page" && data.type !== "component")
15
+ return;
16
+ const placeholderData = data.placeholders.find((x) => x.name == name);
17
+ if (!placeholderData)
18
+ return;
19
+ const promises = placeholderData === null || placeholderData === void 0 ? void 0 : placeholderData.components.map((component) => __awaiter(this, void 0, void 0, function* () {
20
+ const module = yield import(`./components/${component.componentType}`);
21
+ return { data: component, Component: module.default };
22
+ }));
23
+ const components = yield Promise.all(promises);
24
+ return (React.createElement(React.Fragment, null, components.map(({ Component, data }) => (React.createElement(Component, { component: data })))));
25
+ });
26
+ }
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ export function Test({ name }) {
3
+ return React.createElement(React.Fragment, null, name);
4
+ }
@@ -0,0 +1,2 @@
1
+ export * from "./AlpacaHeadless";
2
+ export * from "./Placeholder";
package/next-env.d.ts ADDED
@@ -0,0 +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.
package/next.config.js ADDED
@@ -0,0 +1,6 @@
1
+ /** @type {import('next').NextConfig} */
2
+ const nextConfig = {
3
+ // output: "export",
4
+ };
5
+
6
+ module.exports = nextConfig;
package/package.json CHANGED
@@ -1,11 +1,41 @@
1
1
  {
2
2
  "name": "@alpaca-headless/alpaca-headless-nextjs",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "description": "Alpaca Headless NextJs Integration",
5
- "main": "index.js",
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
+ ],
6
14
  "scripts": {
7
- "test": "echo \"Error: no test specified\" && exit 1"
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
+ "build:umd": "node tools/cleanup umd && webpack --config config/webpack.config.js --noEmit false",
19
+ "build:types": "node tools/cleanup types && tsc -p config/tsconfig.types.json --noEmit false",
20
+ "clean": "node tools/cleanup",
21
+ "package": "npm run build && npm pack"
8
22
  },
9
23
  "author": "Canvas REPLY DE GmbH",
10
- "license": "ISC"
24
+ "license": "MIT",
25
+ "dependencies": {
26
+ "autoprefixer": "10.4.14",
27
+ "next": "13.4.9",
28
+ "node-cleanup": "^2.1.2",
29
+ "react": "18.2.0",
30
+ "react-dom": "18.2.0",
31
+ "server-only": "^0.0.1"
32
+ },
33
+ "devDependencies": {
34
+ "@types/node": "20.4.1",
35
+ "@types/react": "18.2.14",
36
+ "@types/react-dom": "18.2.6",
37
+ "eslint": "8.44.0",
38
+ "eslint-config-next": "13.4.9",
39
+ "typescript": "5.1.6"
40
+ }
11
41
  }
@@ -0,0 +1,45 @@
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
+ export declare class Component {
13
+ private data;
14
+ private reactComponent;
15
+ constructor(data: ComponentData, reactComponent: any);
16
+ getPlaceholderData(placeholder: string): Promise<PlaceholderData | undefined>;
17
+ getReactComponent(): any;
18
+ getData(): void;
19
+ }
20
+ type Response = {
21
+ type: "page" | "redirect" | "error" | "notfound";
22
+ };
23
+ export type Error = Response & {
24
+ type: "error";
25
+ message: string;
26
+ errorCode: number;
27
+ };
28
+ export type Page = Response & {
29
+ type: "page";
30
+ placeholders: PlaceholderData[];
31
+ };
32
+ export type Redirect = Response & {
33
+ type: "redirect";
34
+ location: string;
35
+ };
36
+ export type NotFound = Response & {
37
+ type: "notfound";
38
+ };
39
+ export type TextField = {
40
+ value: string;
41
+ };
42
+ export declare function loadRouteData(params: {
43
+ path: string[];
44
+ }): Promise<Page | Error | Redirect | NotFound>;
45
+ export {};
@@ -0,0 +1,6 @@
1
+ import React from "react";
2
+ import { ComponentData, Page, Redirect, NotFound, Error } from "./AlpacaHeadless";
3
+ export declare function Placeholder({ name, content, }: {
4
+ name: string;
5
+ content: Promise<Error | Page | Redirect | NotFound | ComponentData> | ComponentData;
6
+ }): Promise<React.JSX.Element | undefined>;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ export declare function Test({ name }: {
3
+ name: string;
4
+ }): React.JSX.Element;
@@ -0,0 +1,2 @@
1
+ export * from "./AlpacaHeadless";
2
+ export * from "./Placeholder";