@remkoj/optimizely-cms-nextjs 2.0.0-pre5 → 2.0.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.
@@ -1,4 +1,3 @@
1
- /// <reference types="react" resolution-mode="require"/>
2
1
  import 'server-only';
3
2
  import type { Metadata, ResolvingMetadata } from 'next';
4
3
  import { type Route, type ClientFactory, type ChannelDefinition } from '@remkoj/optimizely-graph-client';
@@ -37,27 +37,29 @@ export function createPage(factory, options) {
37
37
  ...CreatePageOptionDefaults,
38
38
  ...options
39
39
  };
40
+ const globalClient = clientFactory();
40
41
  const pageDefintion = {
41
42
  generateStaticParams: async () => {
42
- const client = clientFactory();
43
- const resolver = new RouteResolver(client);
43
+ //const client = clientFactory()
44
+ const resolver = new RouteResolver(globalClient);
44
45
  return (await resolver.getRoutes()).map(r => routeToParams(r));
45
46
  },
46
47
  generateMetadata: async (props, resolving) => {
47
48
  // Read variables from request
48
- const client = clientFactory();
49
+ //const client = clientFactory()
49
50
  const requestPath = propsToCmsPath(props);
50
51
  if (!requestPath)
51
52
  return Promise.resolve({});
52
- const routeResolver = new RouteResolver(client);
53
- const metaResolver = new MetaDataResolver(client);
53
+ const routeResolver = new RouteResolver(globalClient);
54
+ const metaResolver = new MetaDataResolver(globalClient);
54
55
  // Resolve the route to a content link
55
56
  const route = await routeResolver.getContentInfoByPath(requestPath);
56
57
  if (!route)
57
58
  return Promise.resolve({});
58
59
  // Set context
59
- getServerContext().setLocale(localeToGraphLocale(route.locale, channel));
60
- getServerContext().setOptimizelyGraphClient(client);
60
+ getServerContext().setLocale(route.locale);
61
+ getServerContext().setOptimizelyGraphClient(globalClient);
62
+ getServerContext().setComponentFactory(factory);
61
63
  // Prepare metadata fetching
62
64
  const contentLink = routeResolver.routeToContentLink(route);
63
65
  const contentType = route.contentType;
@@ -83,7 +85,7 @@ export function createPage(factory, options) {
83
85
  CmsPage: async (props) => {
84
86
  // Prepare the context
85
87
  const context = getServerContext();
86
- const client = context.client ?? clientFactory();
88
+ const client = context.client ?? globalClient;
87
89
  if (!context.client)
88
90
  context.setOptimizelyGraphClient(client);
89
91
  context.setComponentFactory(factory);
@@ -1 +1 @@
1
- {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/cms-page/page.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/cms-page/page.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { FunctionComponent, ComponentPropsWithRef, ForwardRefExoticComponent, AnchorHTMLAttributes, ReactNode, RefAttributes } from "react";
2
+ import { LinkProps } from 'next/link.js';
3
+ import { CmsContentLinkDataType } from './types.js';
4
+ type LinkType = ForwardRefExoticComponent<Omit<AnchorHTMLAttributes<HTMLAnchorElement>, keyof LinkProps> & LinkProps & {
5
+ children?: ReactNode;
6
+ } & RefAttributes<HTMLAnchorElement>>;
7
+ type LinkTypeProps = ComponentPropsWithRef<LinkType>;
8
+ export type CmsContentLinkProps = {
9
+ /**
10
+ * The Link target as retrieved from Optimizely Graph
11
+ */
12
+ href?: CmsContentLinkDataType | null;
13
+ /**
14
+ * If set to a valid base URL, it will make all links targetting
15
+ * this base a same site link instead of an absolute link
16
+ */
17
+ base?: string;
18
+ } & Omit<LinkTypeProps, 'href'>;
19
+ /**
20
+ * Create a Next.js Link based upon data retrieved from Optimizely Graph, using the default
21
+ * IContentData, IContentInfo or LinkData fragments.
22
+ *
23
+ * @param param0 The component properties
24
+ * @returns The fully configured Next.js Link property
25
+ */
26
+ export declare const CmsContentLink: FunctionComponent<CmsContentLinkProps>;
27
+ export {};
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useMemo } from "react";
4
+ import LinkEl from 'next/link.js';
5
+ import { IsLinkItemData, isIContentData, isIContentInfo, isLinkData, iContentDataToHref, iContentInfoToHref, linkDataToHref, linkItemDataToHref } from './helpers.js';
6
+ const Link = LinkEl;
7
+ /**
8
+ * Create a Next.js Link based upon data retrieved from Optimizely Graph, using the default
9
+ * IContentData, IContentInfo or LinkData fragments.
10
+ *
11
+ * @param param0 The component properties
12
+ * @returns The fully configured Next.js Link property
13
+ */
14
+ export const CmsContentLink = ({ href, base, children, ...props }) => {
15
+ const linkHref = useMemo(() => {
16
+ let urlValue = '#';
17
+ if (typeof (href) == 'string')
18
+ urlValue = href;
19
+ else if (isIContentData(href))
20
+ urlValue = iContentDataToHref(href, base);
21
+ else if (isIContentInfo(href))
22
+ urlValue = iContentInfoToHref(href, base);
23
+ else if (isLinkData(href))
24
+ urlValue = linkDataToHref(href, base);
25
+ else if (IsLinkItemData(href))
26
+ urlValue = linkItemDataToHref(href, base);
27
+ return urlValue;
28
+ }, [href]);
29
+ return _jsx(Link, { href: linkHref, ...props, children: children });
30
+ };
31
+ //# sourceMappingURL=CmsContentLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CmsContentLink.js","sourceRoot":"","sources":["../../../src/components/shared/CmsContentLink.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,MAAqB,MAAM,cAAc,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAMrK,MAAM,IAAI,GAAc,MAA6B,CAAA;AAerD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAA4C,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAC1G,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,IAAI,QAAQ,GAAG,GAAG,CAAA;QAClB,IAAI,OAAM,CAAC,IAAI,CAAC,IAAI,QAAQ;YACxB,QAAQ,GAAG,IAAI,CAAA;aACd,IAAI,cAAc,CAAC,IAAI,CAAC;YACzB,QAAQ,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;aACxC,IAAI,cAAc,CAAC,IAAI,CAAC;YACzB,QAAQ,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;aACxC,IAAI,UAAU,CAAC,IAAI,CAAC;YACrB,QAAQ,GAAG,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;aACpC,IAAI,cAAc,CAAC,IAAI,CAAC;YACzB,QAAQ,GAAG,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC7C,OAAO,QAAQ,CAAA;IACnB,CAAC,EAAE,CAAE,IAAI,CAAE,CAAC,CAAA;IAEZ,OAAO,KAAC,IAAI,IAAC,IAAI,EAAG,QAAQ,KAAQ,KAAK,YAAK,QAAQ,GAAS,CAAA;AACnE,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=CmsImage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CmsImage.js","sourceRoot":"","sources":["../../../src/components/shared/CmsImage.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import type { FunctionComponent } from "react";
2
+ import type { LinkItemData } from './types.js';
3
+ import { type CmsContentLinkProps } from "./CmsContentLink.js";
4
+ export type CmsLinkProps = {
5
+ href: LinkItemData;
6
+ } & Omit<CmsContentLinkProps, 'href' | 'children' | 'title' | 'target'>;
7
+ export declare const CmsLink: FunctionComponent<CmsLinkProps>;
8
+ export default CmsLink;
@@ -0,0 +1,10 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { CmsContentLink } from "./CmsContentLink.js";
3
+ export const CmsLink = ({ href, ...props }) => {
4
+ const linkText = href.text ?? "";
5
+ const linkTitle = href.title ?? undefined;
6
+ const linkTarget = href.target ?? undefined;
7
+ return _jsx(CmsContentLink, { href: href, title: linkTitle, target: linkTarget, ...props, children: linkText });
8
+ };
9
+ export default CmsLink;
10
+ //# sourceMappingURL=CmsLink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CmsLink.js","sourceRoot":"","sources":["../../../src/components/shared/CmsLink.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAA4B,MAAM,qBAAqB,CAAC;AAM/E,MAAM,CAAC,MAAM,OAAO,GAAqC,CAAC,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE;IAE5E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAA;IAChC,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,IAAI,SAAS,CAAA;IACzC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,SAAS,CAAA;IAC3C,OAAO,KAAC,cAAc,IAAC,IAAI,EAAG,IAAI,EAAG,KAAK,EAAG,SAAS,EAAG,MAAM,EAAG,UAAU,KAAQ,KAAK,YAAM,QAAQ,GAAmB,CAAA;AAC9H,CAAC,CAAA;AAED,eAAe,OAAO,CAAA"}
@@ -0,0 +1,13 @@
1
+ import type { CmsContentLinkDataType, IContentData, IContentInfo, LinkData, LinkItemData } from "./types.js";
2
+ export declare function createListKey(item: CmsContentLinkDataType): string;
3
+ export declare function isIContentData(toTest: CmsContentLinkDataType | null | undefined): toTest is IContentData;
4
+ export declare function isIContentInfo(toTest: CmsContentLinkDataType | null | undefined): toTest is IContentInfo;
5
+ export declare function isLinkData(toTest: CmsContentLinkDataType | null | undefined): toTest is LinkData;
6
+ export declare function IsLinkItemData(toTest: CmsContentLinkDataType | null | undefined): toTest is LinkItemData;
7
+ export declare function getLinkData(item: LinkItemData): LinkData | null;
8
+ export declare function linkDataToUrl(item: LinkData | null | undefined): URL | undefined;
9
+ export declare function linkToUrl(item: LinkItemData): URL | undefined;
10
+ export declare function iContentDataToHref(contentData: IContentData, base?: string): string;
11
+ export declare function iContentInfoToHref(contentInfo: IContentInfo, base?: string): string;
12
+ export declare function linkItemDataToHref(linkItemData: LinkItemData, base?: string): string;
13
+ export declare function linkDataToHref(linkData: LinkData, base?: string): string;
@@ -0,0 +1,81 @@
1
+ export function createListKey(item) {
2
+ if (isIContentData(item))
3
+ return iContentDataToHref(item);
4
+ else if (isIContentInfo(item))
5
+ return iContentInfoToHref(item);
6
+ else if (isLinkData(item))
7
+ return linkDataToHref(item);
8
+ else if (IsLinkItemData(item)) {
9
+ const link = getLinkData(item);
10
+ return link && link.default ? link.default : (item.text ?? '-');
11
+ }
12
+ else {
13
+ return item;
14
+ }
15
+ }
16
+ export function isIContentData(toTest) {
17
+ // ToTest must be an Object
18
+ if (typeof (toTest) != 'object' || toTest == null)
19
+ return false;
20
+ // ToTest is considered IContentData if it has metadata
21
+ return isIContentInfo(toTest._metadata);
22
+ }
23
+ export function isIContentInfo(toTest) {
24
+ // ToTest must be an Object
25
+ if (typeof (toTest) != 'object' || toTest == null)
26
+ return false;
27
+ // Valid IContentInfo has a non-empty key or null value (for Inline content)
28
+ return ((typeof (toTest.key) == 'string' && (toTest.key ?? '').length > 0) || toTest.key == null);
29
+ }
30
+ export function isLinkData(toTest) {
31
+ // ToTest must be an Object
32
+ if (typeof (toTest) != 'object' || toTest == null)
33
+ return false;
34
+ if (toTest.__typename == "ContentUrl")
35
+ return true;
36
+ return typeof (toTest.default) == 'string' || toTest.default == null;
37
+ }
38
+ export function IsLinkItemData(toTest) {
39
+ // ToTest must be an Object
40
+ if (typeof (toTest) != 'object' || toTest == null)
41
+ return false;
42
+ if (toTest.__typename == "Link")
43
+ return true;
44
+ return toTest.url == null || isLinkData(toTest.url);
45
+ }
46
+ export function getLinkData(item) {
47
+ const url = item.url;
48
+ return url && url.default ? url : null;
49
+ }
50
+ export function linkDataToUrl(item) {
51
+ try {
52
+ return new URL(item?.default ?? '/', item?.base ?? undefined);
53
+ }
54
+ catch {
55
+ return undefined;
56
+ }
57
+ }
58
+ export function linkToUrl(item) {
59
+ return linkDataToUrl(getLinkData(item));
60
+ }
61
+ export function iContentDataToHref(contentData, base) {
62
+ if (!contentData._metadata)
63
+ return '#';
64
+ return iContentInfoToHref(contentData._metadata, base);
65
+ }
66
+ export function iContentInfoToHref(contentInfo, base) {
67
+ if (!contentInfo.url)
68
+ return '#';
69
+ return linkDataToHref(contentInfo.url, base);
70
+ }
71
+ export function linkItemDataToHref(linkItemData, base) {
72
+ if (!linkItemData.url)
73
+ return '#';
74
+ return linkDataToHref(linkItemData.url);
75
+ }
76
+ export function linkDataToHref(linkData, base) {
77
+ if (base && linkData.base == base)
78
+ return linkData.default ?? '#';
79
+ return linkData.base ? (new URL(linkData.default ?? '/#', linkData.base)).href : linkData.default ?? '#';
80
+ }
81
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/components/shared/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from './helpers.js';
2
+ export { CmsContentLink, type CmsContentLinkProps } from './CmsContentLink.js';
3
+ export { CmsLink, type CmsLinkProps } from './CmsLink.js';
@@ -0,0 +1,6 @@
1
+ // Export all utility functions
2
+ export * from './helpers.js';
3
+ // Export specific components
4
+ export { CmsContentLink } from './CmsContentLink.js';
5
+ export { CmsLink } from './CmsLink.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/shared/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,cAAc,cAAc,CAAA;AAE5B,6BAA6B;AAC7B,OAAO,EAAE,cAAc,EAA4B,MAAM,qBAAqB,CAAA;AAC9E,OAAO,EAAE,OAAO,EAAqB,MAAM,cAAc,CAAA"}
@@ -0,0 +1,28 @@
1
+ export type CmsContentLinkDataType = IContentData | IContentInfo | LinkData | LinkItemData | string;
2
+ export type IContentData<LT = string> = {
3
+ __typename?: string | null;
4
+ _type?: string | null;
5
+ _metadata?: IContentInfo<LT> | null;
6
+ };
7
+ export type IContentInfo<LT = string> = {
8
+ __typename?: string | null;
9
+ key?: string | null;
10
+ locale?: LT | null;
11
+ types?: Array<string | null> | null;
12
+ displayName?: string | null;
13
+ version?: string | null;
14
+ url?: LinkData | null;
15
+ };
16
+ export type LinkData = {
17
+ __typename?: "ContentUrl";
18
+ base?: string | null;
19
+ hierarchical?: string | null;
20
+ default?: string | null;
21
+ };
22
+ export type LinkItemData = {
23
+ __typename?: "Link";
24
+ title?: string | null;
25
+ text?: string | null;
26
+ target?: string | null;
27
+ url?: LinkData | null;
28
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/components/shared/types.ts"],"names":[],"mappings":""}
package/dist/metadata.js CHANGED
@@ -19,10 +19,16 @@ export class MetaDataResolver {
19
19
  if (locale && locale.includes("-"))
20
20
  throw new Error("🟠 [MetaDataResolver] Invalid character detected within the locale");
21
21
  const Component = factory.resolve(contentType);
22
- if (!Component)
22
+ if (!Component) {
23
+ if (this._cgClient.debug)
24
+ console.log(`🟠 [MetaDataResolver] No component found for ${contentType.join('/')}`);
23
25
  return {};
26
+ }
27
+ if (this._cgClient.debug)
28
+ console.log(`⚪ [MetaDataResolver] Using component ${Component.displayName ?? 'Unnamed component'}`);
24
29
  if (isOptimizelyNextPageWithMetaData(Component) && Component.getMetaData) {
25
- console.log("⚪ [MetaDataResolver] Component for content type has 'getMetaData, invoking...");
30
+ if (this._cgClient.debug)
31
+ console.log("⚪ [MetaDataResolver] Component for content type has 'getMetaData, invoking...");
26
32
  const meta = await Component.getMetaData(contentLink, locale, this._cgClient);
27
33
  if (this._cgClient.debug)
28
34
  console.log(`⚪ [MetaDataResolver] Resolved metadata to: ${JSON.stringify(meta)}`);
@@ -30,7 +36,7 @@ export class MetaDataResolver {
30
36
  }
31
37
  else {
32
38
  if (this._cgClient.debug)
33
- console.warn(`🟠 [MetaDataResolver] Resolved component for ${JSON.stringify(contentType)} does provide additional metadata`);
39
+ console.warn(`🟠 [MetaDataResolver] Resolved component for ${contentType.join('/')} does not provide additional metadata`);
34
40
  }
35
41
  return {};
36
42
  }
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,EAAE,EAAE,oBAAoB,EAAqD,MAAM,iCAAiC,CAAA;AAEvI,OAAO,EAAE,gCAAgC,EAAE,MAAM,WAAW,CAAA;AAE5D,MAAM,OAAO,gBAAgB;IAIzB,YAAmB,cAAyD;QAExE,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;IACzG,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,OAAO,CAAC,OAAyB,EAAE,WAAwB,EAAE,WAAqB,EAAE,MAAsB;QAEnH,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;YACpB,OAAO,CAAC,GAAG,CAAC,gDAAiD,IAAI,CAAC,SAAS,CAAC,EAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAC,CAAC,EAAE,CAAC,CAAA;QAEtH,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;QAEzF,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAA;QAC9C,IAAI,CAAC,SAAS;YACV,OAAO,EAAE,CAAA;QAEb,IAAI,gCAAgC,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAA;YAC5F,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;YAC7E,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;gBACpB,OAAO,CAAC,GAAG,CAAC,8CAA+C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAE,EAAE,CAAC,CAAA;YACvF,OAAO,IAAI,CAAA;QACf,CAAC;aAAM,CAAC;YACJ,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;gBACpB,OAAO,CAAC,IAAI,CAAC,gDAAiD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAE,mCAAmC,CAAC,CAAA;QACtI,CAAC;QACD,OAAO,EAAE,CAAA;IACb,CAAC;CACJ;AAED,eAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../src/metadata.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,EAAE,EAAE,oBAAoB,EAAqD,MAAM,iCAAiC,CAAA;AAEvI,OAAO,EAAE,gCAAgC,EAAE,MAAM,WAAW,CAAA;AAG5D,MAAM,OAAO,gBAAgB;IAIzB,YAAmB,cAAyD;QAExE,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,YAAY,CAAC,cAAc,CAAC,CAAA;IACzG,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,OAAO,CAAC,OAAyB,EAAE,WAAwB,EAAE,WAAqB,EAAE,MAAsB;QAEnH,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;YACpB,OAAO,CAAC,GAAG,CAAC,gDAAiD,IAAI,CAAC,SAAS,CAAC,EAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAC,CAAC,EAAE,CAAC,CAAA;QAEtH,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAA;QAEzF,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAA2B,CAAA;QACxE,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;gBACpB,OAAO,CAAC,GAAG,CAAC,gDAAiD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAE,EAAE,CAAC,CAAA;YAC1F,OAAO,EAAE,CAAA;QACb,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;YACpB,OAAO,CAAC,GAAG,CAAC,wCAAyC,SAAS,CAAC,WAAW,IAAI,mBAAoB,EAAE,CAAC,CAAA;QAEzG,IAAI,gCAAgC,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,WAAW,EAAE,CAAC;YACvE,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;gBACpB,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAA;YAChG,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;YAC7E,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;gBACpB,OAAO,CAAC,GAAG,CAAC,8CAA+C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAE,EAAE,CAAC,CAAA;YACvF,OAAO,IAAI,CAAA;QACf,CAAC;aAAM,CAAC;YACJ,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK;gBACpB,OAAO,CAAC,IAAI,CAAC,gDAAiD,WAAW,CAAC,IAAI,CAAC,GAAG,CAAE,uCAAuC,CAAC,CAAA;QACpI,CAAC;QACD,OAAO,EAAE,CAAA;IACb,CAAC;CACJ;AAED,eAAe,gBAAgB,CAAA"}
package/dist/ope/data.js CHANGED
@@ -3,7 +3,7 @@ export const getContentById = async (client, variables) => {
3
3
  return await client.request(gqlQuery, variables);
4
4
  };
5
5
  const gqlQuery = gql `query getContentByIdBase($key: String!, $version: String, $locale: [Locales!], $path: String, $domain: String) {
6
- content: Content(
6
+ content: _Content(
7
7
  where: {
8
8
  _or: [
9
9
  { _metadata: { key: { eq: $key }, version: { eq: $version } } }
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/ope/data.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAE1D,MAAM,CAAC,MAAM,cAAc,GAA0B,KAAK,EAAuB,MAAqB,EAAE,SAAwC,EAAE,EAAE;IAEhJ,OAAO,MAAM,MAAM,CAAC,OAAO,CAAgE,QAAQ,EAAE,SAAS,CAAC,CAAA;AACnH,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;EAsBlB,CAAA"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../../src/ope/data.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,GAAG,EAAE,MAAM,iBAAiB,CAAA;AAE1D,MAAM,CAAC,MAAM,cAAc,GAA0B,KAAK,EAAuB,MAAqB,EAAE,SAAwC,EAAE,EAAE;IAEhJ,OAAO,MAAM,MAAM,CAAC,OAAO,CAAgE,QAAQ,EAAE,SAAS,CAAC,CAAA;AACnH,CAAC,CAAA;AAED,MAAM,QAAQ,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;EAsBlB,CAAA"}
package/dist/ope/page.js CHANGED
@@ -1,6 +1,5 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import 'server-only';
3
- import { AuthMode } from '@remkoj/optimizely-graph-client';
4
3
  import { contentLinkToString } from '@remkoj/optimizely-graph-client/utils';
5
4
  import { Utils } from '@remkoj/optimizely-cms-react';
6
5
  import { CmsContent, getServerContext } from '@remkoj/optimizely-cms-react/rsc';
@@ -10,66 +9,14 @@ import { getAuthorizedServerClient } from '../client.js';
10
9
  import React from 'react';
11
10
  import Script from 'next/script.js';
12
11
  import { getContentById } from './data.js';
13
- function readValue(variableName, defaultValue) {
14
- try {
15
- const stringValue = process?.env ? process.env[variableName] : undefined;
16
- return stringValue || defaultValue;
17
- }
18
- catch {
19
- return defaultValue;
20
- }
21
- }
22
- function readValueAsInt(variableName, defaultValue) {
23
- const stringValue = readValue(variableName);
24
- if (!stringValue)
25
- return defaultValue;
26
- try {
27
- return parseInt(stringValue);
28
- }
29
- catch {
30
- return defaultValue;
31
- }
32
- }
12
+ import { getContentRequest, isValidRequest } from './tools.js';
33
13
  const defaultOptions = {
34
14
  refreshNotice: () => _jsx("div", { className: 'optly-refresh-notice', children: "Updating preview, please wait...." }),
35
- errorNotice: props => _jsxs("div", { className: 'optly-error-notice', children: [_jsx("div", { className: 'optly-error-title', children: props.title }), _jsx("div", { className: 'optly-error-message', children: props.message })] }),
36
15
  layout: props => _jsx(_Fragment, { children: props.children }),
37
16
  loader: getContentById,
38
17
  clientFactory: (token) => getAuthorizedServerClient(token),
39
18
  communicationInjectorPath: '/util/javascript/communicationinjector.js'
40
19
  };
41
- // Helper function to read the ContentID & WorkID
42
- function getContentRequest(path = "", searchParams) {
43
- try {
44
- if (searchParams.preview_token == AuthMode.HMAC || searchParams.preview_token == AuthMode.Basic) {
45
- console.error("🦺 [OnPageEdit] Edit mode requested with developer tokens, falling back to URL parsing to determine content");
46
- const fullPath = Array.isArray(path) ? path.map(p => decodeURIComponent(p)).join('/') : decodeURI(path);
47
- const [cmsPath, contentString] = fullPath.split(',,', 3);
48
- const [contentKey, contentVersion] = (contentString ?? '').split('_', 3);
49
- const contentPath = (cmsPath.startsWith('/') ? cmsPath.substring(1) : cmsPath).replace(/^(ui\/){0,1}(CMS\/){0,1}(Content\/){0,1}/gi, "");
50
- const firstSlug = contentPath.split('/')[0];
51
- const contentLocale = firstSlug?.length == 2 || firstSlug?.length == 5 ? firstSlug : undefined;
52
- return {
53
- key: contentKey,
54
- version: contentVersion,
55
- locale: contentLocale,
56
- path: '/' + contentPath + (contentPath.endsWith('/') || contentPath == '' ? '' : '/')
57
- };
58
- }
59
- else {
60
- const tokenInfo = JSON.parse(atob(searchParams.preview_token.split('.')[1]));
61
- return {
62
- key: tokenInfo.key,
63
- version: tokenInfo.ver,
64
- locale: tokenInfo.loc,
65
- path: ''
66
- };
67
- }
68
- }
69
- catch {
70
- return undefined;
71
- }
72
- }
73
20
  /**
74
21
  * Create the EditPage component needed by Next.JS to render the "On Page
75
22
  * Editing" variant of the content item selected by the editor.
@@ -81,39 +28,32 @@ function getContentRequest(path = "", searchParams) {
81
28
  * @returns The React Component that can be used by Next.JS to render the page
82
29
  */
83
30
  export function createEditPageComponent(factory, options) {
84
- const { layout: PageLayout, refreshNotice: RefreshNotice, errorNotice: ErrorNotice, loader: getContentById, clientFactory, communicationInjectorPath } = { ...defaultOptions, ...options };
85
- async function EditPage({ params: { path }, searchParams }) {
31
+ const { layout: PageLayout, refreshNotice: RefreshNotice, loader: getContentById, clientFactory, communicationInjectorPath } = { ...defaultOptions, ...options };
32
+ async function EditPage(props) {
86
33
  // Create context
87
34
  const context = getServerContext();
88
35
  // Validate the search parameters
89
- const epiEditMode = searchParams?.epieditmode?.toLowerCase();
90
- if (epiEditMode != 'true' && epiEditMode != 'false') {
91
- console.error("🔴 [OnPageEdit] Edit mode requested without valid EpiEditMode, refused to render the page. Mode set:", searchParams.epieditmode);
36
+ if (!isValidRequest(props, false, context.isDevelopment)) {
37
+ console.error("🔴 [OnPageEdit] Invalid edit mode request");
92
38
  return notFound();
93
39
  }
94
- // Allow use-hmac as magic token to be used only on a development environment, otherwise require a minimal length string as token
95
- const token = searchParams.preview_token;
96
- const validDev = context.isDevelopment && (searchParams.preview_token == AuthMode.HMAC || searchParams.preview_token == AuthMode.Basic);
97
- if (!token || (token.length < 20 && !validDev)) {
98
- console.error("🔴 [OnPageEdit] Edit mode requested without valid Preview Token, refused to render the page");
40
+ // Get the requested content item
41
+ const contentRequestInfo = getContentRequest(props);
42
+ if (!contentRequestInfo) {
43
+ console.error("🔴 [OnPageEdit] Unable to resolve requested content");
99
44
  return notFound();
100
45
  }
101
- if (context.isDebug)
102
- console.log(`⚪ [OnPageEdit] Valid edit mode request: EpiEditMode=${searchParams.epieditmode}`);
46
+ const { token, ctx, ...contentRequest } = contentRequestInfo;
103
47
  // Build context
104
48
  const client = clientFactory(token);
105
49
  context.setOptimizelyGraphClient(client);
106
50
  context.setComponentFactory(factory);
107
51
  context.setInEditMode(true);
108
52
  // Get information from the Request URI
109
- const contentRequest = getContentRequest(path, searchParams);
110
- if (!contentRequest) {
111
- console.error("🔴 [OnPageEdit] Unable to resolve requested content");
112
- return notFound();
113
- }
114
53
  if (context.isDebug) {
54
+ console.log("⚪ [OnPageEdit] Request context:", ctx);
55
+ console.log("⚪ [OnPageEdit] Request token:", token);
115
56
  console.log("⚪ [OnPageEdit] Requested content:", JSON.stringify(contentRequest));
116
- console.log("⚪ [OnPageEdit] Creating GraphQL Client:", token);
117
57
  }
118
58
  try {
119
59
  const contentInfo = await getContentById(client, contentRequest);
@@ -1 +1 @@
1
- {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/ope/page.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/ope/page.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { EditPageProps, ValidatedEditPageProps, ContentRequest } from './types.js';
2
+ export declare function isValidRequest(toTest: EditPageProps, throwOnInvalid?: boolean, isDevelopment?: boolean): toTest is ValidatedEditPageProps;
3
+ export declare function getContentRequest({ params: { path, lang }, searchParams: { preview_token: token, ...searchParams } }: ValidatedEditPageProps): ContentRequest | undefined;
4
+ export declare function readValue<T extends string | undefined>(variableName: string, defaultValue?: T): T extends string ? string : string | undefined;
5
+ export declare function readValueAsInt<T extends number | undefined>(variableName: string, defaultValue?: T): T extends number ? number : number | undefined;
@@ -0,0 +1,119 @@
1
+ import { AuthMode } from '@remkoj/optimizely-graph-client';
2
+ export function isValidRequest(toTest, throwOnInvalid = false, isDevelopment = false) {
3
+ // Validate Route Params
4
+ if (Object.getOwnPropertyNames(toTest.params).some(x => x != 'path' && x != 'lang')) {
5
+ if (throwOnInvalid)
6
+ throw new Error("🔴 An Optimizely CMS NextJS edit page may only have 'path' and 'lang' route parameters");
7
+ return false;
8
+ }
9
+ if (toTest.params.lang && typeof (toTest.params.lang) != 'string') {
10
+ if (throwOnInvalid)
11
+ throw new Error("🔴 The 'lang' route parameter must be a string");
12
+ return false;
13
+ }
14
+ if (toTest.params.path && (!Array.isArray(toTest.params.path) || !toTest.params.path.every(x => typeof (x) == 'string'))) {
15
+ if (throwOnInvalid)
16
+ throw new Error("🔴 The 'path' route parameter must be an array of strings");
17
+ return false;
18
+ }
19
+ // Validate URL Params
20
+ const token = toTest.searchParams.preview_token ?? "";
21
+ const validDevToken = isDevelopment && (token == AuthMode.HMAC || token == AuthMode.Basic);
22
+ if (token.length < 20 && !validDevToken) {
23
+ if (throwOnInvalid)
24
+ throw new Error("🔴 The search paramater \"preview_token\" is invalid or missing");
25
+ return false;
26
+ }
27
+ // Validate CTX
28
+ if (!(toTest.searchParams.ctx == undefined || toTest.searchParams.ctx == 'edit' || toTest.searchParams.ctx == 'preview')) {
29
+ if (throwOnInvalid)
30
+ throw new Error("The 'ctx' search parameter must be omitted or 'edit' or 'preview'");
31
+ return false;
32
+ }
33
+ // Validate EpiEditMode
34
+ if (!(toTest.searchParams.epieditmode == undefined || toTest.searchParams.epieditmode.toLowerCase() == 'true' || toTest.searchParams.epieditmode.toLowerCase() == 'false')) {
35
+ if (throwOnInvalid)
36
+ throw new Error("The 'epieditmode' search parameter must be omitted or 'true' or 'false'");
37
+ return false;
38
+ }
39
+ if (toTest.searchParams.ctx && toTest.searchParams.epieditmode) {
40
+ if (throwOnInvalid)
41
+ throw new Error("The 'epieditmode' and 'ctx' search parameters cannot be both defined");
42
+ return false;
43
+ }
44
+ if (!toTest.searchParams.ctx && !toTest.searchParams.epieditmode) {
45
+ if (throwOnInvalid)
46
+ throw new Error("Either 'epieditmode' and 'ctx' search parameters must be defined");
47
+ return false;
48
+ }
49
+ return true;
50
+ }
51
+ // Helper function to read the ContentID & WorkID
52
+ export function getContentRequest({ params: { path, lang }, searchParams: { preview_token: token, ...searchParams } }) {
53
+ try {
54
+ // First try to use the new style parameters
55
+ if (searchParams.key) {
56
+ return {
57
+ token,
58
+ ctx: searchParams.ctx,
59
+ key: searchParams.key,
60
+ locale: searchParams.loc,
61
+ version: searchParams.ver,
62
+ path: null
63
+ };
64
+ }
65
+ // Then fall back to old-mode URL parsing for developer URLs
66
+ if (token == AuthMode.HMAC || token == AuthMode.Basic) {
67
+ console.error("🦺 [OnPageEdit] Edit mode requested with developer tokens, falling back to URL parsing to determine content");
68
+ // Determine the contentPath
69
+ const fullPath = Array.isArray(path) ? path.map(p => decodeURIComponent(p)).join('/') : decodeURIComponent(path ?? '');
70
+ const [cmsPath, contentString] = fullPath.split(',,', 3);
71
+ const contentPath = (cmsPath.startsWith('/') ? cmsPath.substring(1) : cmsPath).replace(/^(ui\/){0,1}(CMS\/){0,1}(Content\/){0,1}/gi, "");
72
+ const [contentKey, contentVersion] = (contentString ?? '').split('_', 3);
73
+ const firstSlug = contentPath.split('/')[0];
74
+ const contentLocale = firstSlug?.length == 2 || firstSlug?.length == 5 ? firstSlug : lang;
75
+ return {
76
+ token,
77
+ ctx: searchParams.epieditmode?.toLowerCase() == 'true' ? 'edit' : 'preview',
78
+ key: contentKey,
79
+ version: contentVersion,
80
+ locale: contentLocale,
81
+ path: '/' + contentPath + (contentPath.endsWith('/') || contentPath == '' ? '' : '/')
82
+ };
83
+ }
84
+ // Finally parse the token, this is a last-restort, as it might change at any given time
85
+ const tokenInfo = JSON.parse(atob(token.split('.')[1]));
86
+ return {
87
+ token,
88
+ ctx: searchParams.epieditmode?.toLowerCase() == 'true' ? 'edit' : 'preview',
89
+ key: tokenInfo.key,
90
+ version: tokenInfo.ver,
91
+ locale: tokenInfo.loc,
92
+ path: null
93
+ };
94
+ }
95
+ catch {
96
+ return undefined;
97
+ }
98
+ }
99
+ export function readValue(variableName, defaultValue) {
100
+ try {
101
+ const stringValue = process?.env ? process.env[variableName] : undefined;
102
+ return stringValue || defaultValue;
103
+ }
104
+ catch {
105
+ return defaultValue;
106
+ }
107
+ }
108
+ export function readValueAsInt(variableName, defaultValue) {
109
+ const stringValue = readValue(variableName);
110
+ if (!stringValue)
111
+ return defaultValue;
112
+ try {
113
+ return parseInt(stringValue);
114
+ }
115
+ catch {
116
+ return defaultValue;
117
+ }
118
+ }
119
+ //# sourceMappingURL=tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/ope/tools.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,11 @@ import { type ComponentType, type PropsWithChildren } from 'react';
2
2
  import { type ClientFactory } from '@remkoj/optimizely-graph-client';
3
3
  import { type GraphQLClient } from 'graphql-request';
4
4
  import { type ContentQueryProps } from '@remkoj/optimizely-cms-react';
5
- export { type ContentQueryProps } from '@remkoj/optimizely-cms-react';
5
+ export type ContentRequest = (Omit<ContentQueryProps<string>, 'path'> & {
6
+ path: string | null;
7
+ token: string;
8
+ ctx: 'edit' | 'preview';
9
+ });
6
10
  type ServerPageProps = {
7
11
  params: Record<string, string | Array<string>>;
8
12
  searchParams: Record<string, string>;
@@ -10,12 +14,38 @@ type ServerPageProps = {
10
14
  export type EditPageComponent<T extends ServerPageProps = EditPageProps> = ({ params, searchParams }: T) => Promise<JSX.Element>;
11
15
  export type EditPageProps = {
12
16
  params: {
13
- path: string[];
17
+ path?: string[] | string;
18
+ lang?: string;
14
19
  };
15
- searchParams: Partial<{
16
- epieditmode: string;
20
+ searchParams: {
17
21
  preview_token: string;
18
- }>;
22
+ key?: string;
23
+ ver?: string;
24
+ loc?: string;
25
+ ctx?: 'edit' | 'preview';
26
+ epieditmode?: string;
27
+ };
28
+ };
29
+ export type ValidatedEditPageProps = {
30
+ params: {
31
+ path?: string[] | string;
32
+ lang?: string;
33
+ };
34
+ searchParams: {
35
+ preview_token: string;
36
+ } & ({
37
+ key: string;
38
+ ver: string;
39
+ loc: string;
40
+ ctx: 'edit' | 'preview';
41
+ epieditmode: undefined;
42
+ } | {
43
+ key: undefined;
44
+ ver: undefined;
45
+ loc: undefined;
46
+ ctx: undefined;
47
+ epieditmode: 'true' | 'false';
48
+ });
19
49
  };
20
50
  export type EditViewOptions = {
21
51
  /**
@@ -23,14 +53,6 @@ export type EditViewOptions = {
23
53
  * in ContentGraph
24
54
  */
25
55
  refreshNotice: ComponentType<{}>;
26
- /**
27
- * The message to show to the editor when an error occured in rendering the
28
- * on page editing mode
29
- */
30
- errorNotice: ComponentType<{
31
- title: string;
32
- message: string;
33
- }>;
34
56
  /**
35
57
  * The layout to use when rendering a page component
36
58
  */
@@ -73,3 +95,4 @@ export type GetContentByIdData<LocaleType = string> = {
73
95
  };
74
96
  };
75
97
  export type GetContentByIdMethod = <LocaleType = string>(client: GraphQLClient, variables: ContentQueryProps<LocaleType>) => Promise<GetContentByIdData<LocaleType>>;
98
+ export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@remkoj/optimizely-cms-nextjs",
3
3
  "license": "Apache-2.0",
4
- "version": "2.0.0-pre5",
4
+ "version": "2.0.0",
5
5
  "packageManager": "yarn@4.1.1",
6
6
  "repository": "https://github.com/remkoj/optimizely-dxp-clients.git",
7
7
  "author": "Remko Jantzen <693172+remkoj@users.noreply.github.com>",
@@ -16,7 +16,8 @@
16
16
  ".": "./dist/index.js",
17
17
  "./rsc": "./dist/client.js",
18
18
  "./publish": "./dist/publish/index.js",
19
- "./types": "./dist/types.js"
19
+ "./types": "./dist/types.js",
20
+ "./components": "./dist/components/shared/index.js"
20
21
  },
21
22
  "typesVersions": {
22
23
  "*": {
@@ -28,40 +29,42 @@
28
29
  ],
29
30
  "types": [
30
31
  "dist/types.d.ts"
32
+ ],
33
+ "components": [
34
+ "dist/components/shared/index.js"
31
35
  ]
32
36
  }
33
37
  },
34
38
  "devDependencies": {
35
- "@remkoj/optimizely-cms-react": "2.0.0-pre5",
36
- "@remkoj/optimizely-graph-client": "2.0.0-pre5",
37
- "@types/node": "^20.14.2",
39
+ "@remkoj/optimizely-cms-react": "2.0.0",
40
+ "@remkoj/optimizely-graph-client": "2.0.0",
41
+ "@types/node": "^20.14.7",
38
42
  "@types/react": "^18.3.3",
39
43
  "@types/react-dom": "18.3.0",
40
- "graphql": "^16.8.1",
44
+ "graphql": "^16.8.2",
41
45
  "graphql-request": "^6.1.0",
42
- "next": "^14.2.3",
46
+ "next": "^14.2.4",
43
47
  "prop-types": "^15.8.1",
44
48
  "react": "^18.3.1",
45
49
  "react-dom": "^18.3.1",
46
50
  "scheduler": "^0.23.2",
47
- "typescript": "^5.4.5"
51
+ "typescript": "^5.5.2"
48
52
  },
49
53
  "dependencies": {
50
54
  "deepmerge": "^4.3.1"
51
55
  },
52
56
  "peerDependencies": {
53
- "@remkoj/optimizely-cms-react": "2.0.0-pre5",
54
- "@remkoj/optimizely-graph-client": "2.0.0-pre5",
55
- "graphql": "^16.8.1",
56
- "graphql-request": "^6.1.0",
57
- "next": "^14.2.3",
58
- "react": "^18.3.1"
57
+ "@remkoj/optimizely-cms-react": "2.0.0",
58
+ "@remkoj/optimizely-graph-client": "2.0.0",
59
+ "graphql": "^16",
60
+ "graphql-request": "^6",
61
+ "next": "^14",
62
+ "react": "^18"
59
63
  },
60
64
  "scripts": {
61
65
  "clean": "yarn tsc --build --clean",
62
66
  "prepare": "yarn tsc --build",
63
67
  "watch": "yarn tsc --watch",
64
68
  "recompile": "yarn tsc --build --clean && yarn tsc --build --force"
65
- },
66
- "stableVersion": "1.0.4"
69
+ }
67
70
  }