@enonic/nextjs-adapter 6.0.0-beta.4 → 6.0.0-beta.5
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 +11 -0
- package/dist/common/env.d.ts +4 -4
- package/dist/common/env.js +9 -8
- package/dist/common/env.js.map +1 -1
- package/dist/guillotine/fetchGuillotine.js +3 -2
- package/dist/guillotine/fetchGuillotine.js.map +1 -1
- package/dist/guillotine/metadata/richTextQuery.d.ts +7 -0
- package/dist/guillotine/metadata/richTextQuery.js +54 -28
- package/dist/guillotine/metadata/richTextQuery.js.map +1 -1
- package/dist/guillotine/validateShortcut.js +1 -1
- package/dist/guillotine/validateShortcut.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -355,6 +355,17 @@ mapping's locale unless it is the default one, leaving sources untouched.
|
|
|
355
355
|
This is a utility function for querying for `RichTextData` needed for [RichTextView](#rich-text-view). It creates a graphql query string for
|
|
356
356
|
HTML area input type with given field name.
|
|
357
357
|
|
|
358
|
+
> **NOTE!** On the server the adapter reads `ENONIC_API`, `ENONIC_MEDIA_CDN`, `ENONIC_APP_NAME` and `ENONIC_MAPPINGS`. In the browser
|
|
359
|
+
> it reads the `NEXT_PUBLIC_ENONIC_API`, `NEXT_PUBLIC_ENONIC_MEDIA_CDN`, `NEXT_PUBLIC_ENONIC_APP_NAME` and `NEXT_PUBLIC_ENONIC_MAPPINGS`
|
|
360
|
+
> copies, so define the ones your client components need (e.g. `NEXT_PUBLIC_ENONIC_API=$ENONIC_API` for `imageUrl()` in a client
|
|
361
|
+
> component, `NEXT_PUBLIC_ENONIC_APP_NAME` when `_mappings.ts` is imported client-side). Without them media URLs stay relative and
|
|
362
|
+
> the locale helpers throw in the browser.
|
|
363
|
+
|
|
364
|
+
The macro configs, links and images are selected through the named fragments `RichTextMacros`, `RichTextLinks` and `RichTextImages`, so a
|
|
365
|
+
document with many rich text fields stays small. `fetchGuillotine()` (and therefore `fetchContent()`) appends the fragment definitions once
|
|
366
|
+
per document. If you send such a query with your own HTTP client, append `richTextFragments()` to it yourself, or pass the document
|
|
367
|
+
through `withRichTextFragments(query)`.
|
|
368
|
+
|
|
358
369
|
| Argument | Description |
|
|
359
370
|
|-------------|----------------------|
|
|
360
371
|
| `fieldName` | HTML area field name |
|
package/dist/common/env.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
/** Absolute URL to the Enonic XP API root
|
|
1
|
+
/** Absolute URL to the Enonic XP API root */
|
|
2
2
|
export declare const API_URL: string;
|
|
3
3
|
/** URL to the Guillotine GraphQL endpoint: API_URL + GUILLOTINE_API (server-side only) */
|
|
4
4
|
export declare const GUILLOTINE_URL: string;
|
|
5
|
-
/** Absolute URL to the media API root, defaults to API_URL
|
|
5
|
+
/** Absolute URL to the media API root, defaults to API_URL; without a NEXT_PUBLIC_ copy the client keeps media URLs relative */
|
|
6
6
|
export declare const MEDIA_URL: string;
|
|
7
|
-
/** Optional utility value - defining in one place the name of the target app (the app that defines the content types, the app name is therefore part of the content type strings used both in typeselector and in query introspections)
|
|
7
|
+
/** Optional utility value - defining in one place the name of the target app (the app that defines the content types, the app name is therefore part of the content type strings used both in typeselector and in query introspections) */
|
|
8
8
|
export declare const APP_NAME: string;
|
|
9
9
|
/** Optional utility value - derived from APP_NAME, only with underscores instead of dots */
|
|
10
10
|
export declare const APP_NAME_UNDERSCORED: string;
|
|
@@ -13,5 +13,5 @@ export declare const APP_NAME_DASHED: string;
|
|
|
13
13
|
/** True under `next dev`; NODE_ENV is inlined by Next.js on both server and client */
|
|
14
14
|
export declare const IS_DEV_MODE: boolean;
|
|
15
15
|
export declare const LOGGING: string;
|
|
16
|
-
/** Locales and Enonic XP projects correspondence list
|
|
16
|
+
/** Locales and Enonic XP projects correspondence list; undefined on the client without a NEXT_PUBLIC_ copy */
|
|
17
17
|
export declare const MAPPINGS: string;
|
package/dist/common/env.js
CHANGED
|
@@ -3,14 +3,15 @@ import { stripOutsideSlashes, stripTrailingSlashes } from '../utils/fixDoubleSla
|
|
|
3
3
|
const isServer = typeof window === 'undefined';
|
|
4
4
|
// IMPORTANT:
|
|
5
5
|
// NEXT_PUBLIC_ vars should be explicitly referenced to be made available on the client side (substituted with constants) !!!
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
// The server reads ENONIC_*; the browser gets the NEXT_PUBLIC_* copies a site defines for its client components.
|
|
7
|
+
/** Absolute URL to the Enonic XP API root */
|
|
8
|
+
export const API_URL = stripTrailingSlashes((isServer ? process.env[ENV_VARS.API_URL] : process.env.NEXT_PUBLIC_ENONIC_API) || '');
|
|
8
9
|
/** URL to the Guillotine GraphQL endpoint: API_URL + GUILLOTINE_API (server-side only) */
|
|
9
10
|
export const GUILLOTINE_URL = API_URL && `${API_URL}/${stripOutsideSlashes(process.env[ENV_VARS.GUILLOTINE_API] || DEFAULT_GUILLOTINE_API)}`;
|
|
10
|
-
/** Absolute URL to the media API root, defaults to API_URL
|
|
11
|
-
export const MEDIA_URL = stripTrailingSlashes(process.env[ENV_VARS.MEDIA_URL] || '') || API_URL;
|
|
12
|
-
/** Optional utility value - defining in one place the name of the target app (the app that defines the content types, the app name is therefore part of the content type strings used both in typeselector and in query introspections)
|
|
13
|
-
export const APP_NAME = process.env[ENV_VARS.APP_NAME];
|
|
11
|
+
/** Absolute URL to the media API root, defaults to API_URL; without a NEXT_PUBLIC_ copy the client keeps media URLs relative */
|
|
12
|
+
export const MEDIA_URL = stripTrailingSlashes((isServer ? process.env[ENV_VARS.MEDIA_URL] : process.env.NEXT_PUBLIC_ENONIC_MEDIA_CDN) || '') || API_URL;
|
|
13
|
+
/** Optional utility value - defining in one place the name of the target app (the app that defines the content types, the app name is therefore part of the content type strings used both in typeselector and in query introspections) */
|
|
14
|
+
export const APP_NAME = isServer ? process.env[ENV_VARS.APP_NAME] : process.env.NEXT_PUBLIC_ENONIC_APP_NAME;
|
|
14
15
|
/** Optional utility value - derived from APP_NAME, only with underscores instead of dots */
|
|
15
16
|
export const APP_NAME_UNDERSCORED = (APP_NAME || '').replace(/\./g, '_');
|
|
16
17
|
/** Optional utility value - derived from APP_NAME, only with dashes instead of dots */
|
|
@@ -18,8 +19,8 @@ export const APP_NAME_DASHED = (APP_NAME || '').replace(/\./g, '-');
|
|
|
18
19
|
/** True under `next dev`; NODE_ENV is inlined by Next.js on both server and client */
|
|
19
20
|
export const IS_DEV_MODE = process.env.NODE_ENV === 'development';
|
|
20
21
|
export const LOGGING = isServer ? process.env[ENV_VARS.LOG] : process.env['NEXT_PUBLIC_ENONIC_LOGGING'];
|
|
21
|
-
/** Locales and Enonic XP projects correspondence list
|
|
22
|
-
export const MAPPINGS = process.env[ENV_VARS.MAPPINGS];
|
|
22
|
+
/** Locales and Enonic XP projects correspondence list; undefined on the client without a NEXT_PUBLIC_ copy */
|
|
23
|
+
export const MAPPINGS = isServer ? process.env[ENV_VARS.MAPPINGS] : process.env.NEXT_PUBLIC_ENONIC_MAPPINGS;
|
|
23
24
|
// Verify required values on server-side only
|
|
24
25
|
if (isServer) {
|
|
25
26
|
const requiredConstants = {
|
package/dist/common/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/common/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAC,mBAAmB,EAAE,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAEpF,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;AAE/C,aAAa;AACb,6HAA6H;AAC7H,
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/common/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,sBAAsB,EAAE,QAAQ,EAAC,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAC,mBAAmB,EAAE,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAEpF,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,CAAC;AAE/C,aAAa;AACb,6HAA6H;AAC7H,iHAAiH;AACjH,6CAA6C;AAC7C,MAAM,CAAC,MAAM,OAAO,GAAG,oBAAoB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC;AAEnI,0FAA0F;AAC1F,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,IAAI,GAAG,OAAO,IAAI,mBAAmB,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,sBAAsB,CAAC,EAAE,CAAC;AAE7I,gIAAgI;AAChI,MAAM,CAAC,MAAM,SAAS,GAAG,oBAAoB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC;AAExJ,2OAA2O;AAC3O,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;AAE5G,4FAA4F;AAC5F,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAEzE,uFAAuF;AACvF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAEpE,sFAAsF;AACtF,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC;AAElE,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;AAExG,8GAA8G;AAC9G,MAAM,CAAC,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;AAE5G,6CAA6C;AAC7C,IAAI,QAAQ,EAAE,CAAC;IACX,MAAM,iBAAiB,GAAG;QACtB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ;QAC7B,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO;QAC3B,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ;KAChC,CAAC;IAEF,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE;QACnD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,2BAA2B,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import gqlmin from 'gqlmin';
|
|
2
2
|
import { fetchFromApi } from './fetchFromApi';
|
|
3
|
+
import { withRichTextFragments } from './metadata/richTextQuery';
|
|
3
4
|
const XP_ERROR_PATTERN = '/_/error/';
|
|
4
5
|
/** Guillotine-specialized fetch, using the generic fetch above */
|
|
5
6
|
export async function fetchGuillotine(contentApiUrl, options) {
|
|
@@ -26,8 +27,8 @@ export async function fetchGuillotine(contentApiUrl, options) {
|
|
|
26
27
|
};
|
|
27
28
|
}
|
|
28
29
|
else {
|
|
29
|
-
//
|
|
30
|
-
body.query = gqlmin(body.query);
|
|
30
|
+
// Define the rich text fragments once, then minify the query to avoid hitting 200k space limit
|
|
31
|
+
body.query = gqlmin(withRichTextFragments(body.query));
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
34
|
const pathMessage = path ? JSON.stringify(path) : '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetchGuillotine.js","sourceRoot":"","sources":["../../src/guillotine/fetchGuillotine.ts"],"names":[],"mappings":"AACA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAC,YAAY,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"fetchGuillotine.js","sourceRoot":"","sources":["../../src/guillotine/fetchGuillotine.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1,8 @@
|
|
|
1
|
+
export declare const RICH_TEXT_MACROS_FRAGMENT = "RichTextMacros";
|
|
2
|
+
export declare const RICH_TEXT_LINKS_FRAGMENT = "RichTextLinks";
|
|
3
|
+
export declare const RICH_TEXT_IMAGES_FRAGMENT = "RichTextImages";
|
|
1
4
|
export declare const richTextQuery: (fieldName: string) => string;
|
|
5
|
+
/** The fragment definitions behind richTextQuery(); evaluated when called, so the registered macros are included */
|
|
6
|
+
export declare const richTextFragments: () => string;
|
|
7
|
+
/** Appends the definitions of the rich text fragments a document spreads but does not define (fetchGuillotine does this) */
|
|
8
|
+
export declare function withRichTextFragments(query: string): string;
|
|
@@ -2,6 +2,10 @@ import { ComponentRegistry } from '../../common/ComponentRegistry';
|
|
|
2
2
|
import { configQuery } from './configQuery';
|
|
3
3
|
import { indent } from '../../utils/indent';
|
|
4
4
|
import { imageUrlQuery, mediaUrlQuery, pageUrlQuery } from '../urlQueries';
|
|
5
|
+
// Fragments on Guillotine's rich text member types: spread by every rich text field, defined once per document
|
|
6
|
+
export const RICH_TEXT_MACROS_FRAGMENT = 'RichTextMacros';
|
|
7
|
+
export const RICH_TEXT_LINKS_FRAGMENT = 'RichTextLinks';
|
|
8
|
+
export const RICH_TEXT_IMAGES_FRAGMENT = 'RichTextImages';
|
|
5
9
|
const macroConfigQuery = () => {
|
|
6
10
|
return configQuery(ComponentRegistry.getMacros(), false, false);
|
|
7
11
|
};
|
|
@@ -9,42 +13,64 @@ export const richTextQuery = (fieldName) => {
|
|
|
9
13
|
return `${fieldName}(processHtml:{imageWidths:[400, 800, 1200], imageSizes:"(max-width: 400px) 400px, (max-width: 800px) 800px, 1200px"}) {
|
|
10
14
|
processedHtml
|
|
11
15
|
macros {
|
|
12
|
-
|
|
13
|
-
name
|
|
14
|
-
descriptor
|
|
15
|
-
${indent(macroConfigQuery(), 8)}
|
|
16
|
+
...${RICH_TEXT_MACROS_FRAGMENT}
|
|
16
17
|
}
|
|
17
18
|
links {
|
|
18
|
-
|
|
19
|
-
uri
|
|
20
|
-
content {
|
|
21
|
-
_path
|
|
22
|
-
_id
|
|
23
|
-
${pageUrlQuery()}
|
|
24
|
-
}
|
|
25
|
-
media {
|
|
26
|
-
content {
|
|
27
|
-
_id
|
|
28
|
-
... on media_Image {
|
|
29
|
-
${mediaUrlQuery()}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
intent
|
|
33
|
-
}
|
|
19
|
+
...${RICH_TEXT_LINKS_FRAGMENT}
|
|
34
20
|
}
|
|
35
21
|
images {
|
|
36
|
-
|
|
37
|
-
|
|
22
|
+
...${RICH_TEXT_IMAGES_FRAGMENT}
|
|
23
|
+
}}`;
|
|
24
|
+
};
|
|
25
|
+
const fragmentDefinitions = () => [
|
|
26
|
+
[RICH_TEXT_MACROS_FRAGMENT, `fragment ${RICH_TEXT_MACROS_FRAGMENT} on Macro {
|
|
27
|
+
ref
|
|
28
|
+
name
|
|
29
|
+
descriptor
|
|
30
|
+
${indent(macroConfigQuery(), 4)}
|
|
31
|
+
}`],
|
|
32
|
+
[RICH_TEXT_LINKS_FRAGMENT, `fragment ${RICH_TEXT_LINKS_FRAGMENT} on Link {
|
|
33
|
+
ref
|
|
34
|
+
uri
|
|
35
|
+
content {
|
|
36
|
+
_path
|
|
37
|
+
_id
|
|
38
|
+
${pageUrlQuery()}
|
|
39
|
+
}
|
|
40
|
+
media {
|
|
41
|
+
content {
|
|
38
42
|
_id
|
|
39
43
|
... on media_Image {
|
|
40
|
-
${
|
|
44
|
+
${mediaUrlQuery()}
|
|
41
45
|
}
|
|
42
46
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
intent
|
|
48
|
+
}
|
|
49
|
+
}`],
|
|
50
|
+
[RICH_TEXT_IMAGES_FRAGMENT, `fragment ${RICH_TEXT_IMAGES_FRAGMENT} on Image {
|
|
51
|
+
ref
|
|
52
|
+
image {
|
|
53
|
+
_id
|
|
54
|
+
... on media_Image {
|
|
55
|
+
${imageUrlQuery({ scale: 'width(768)' })}
|
|
47
56
|
}
|
|
48
|
-
}
|
|
57
|
+
}
|
|
58
|
+
style {
|
|
59
|
+
name
|
|
60
|
+
aspectRatio
|
|
61
|
+
filter
|
|
62
|
+
}
|
|
63
|
+
}`]
|
|
64
|
+
];
|
|
65
|
+
/** The fragment definitions behind richTextQuery(); evaluated when called, so the registered macros are included */
|
|
66
|
+
export const richTextFragments = () => {
|
|
67
|
+
return fragmentDefinitions().map(([, definition]) => definition).join('\n');
|
|
49
68
|
};
|
|
69
|
+
/** Appends the definitions of the rich text fragments a document spreads but does not define (fetchGuillotine does this) */
|
|
70
|
+
export function withRichTextFragments(query) {
|
|
71
|
+
const missing = fragmentDefinitions()
|
|
72
|
+
.filter(([name]) => query.includes(`...${name}`) && !query.includes(`fragment ${name} `))
|
|
73
|
+
.map(([, definition]) => definition);
|
|
74
|
+
return missing.length ? `${query}\n${missing.join('\n')}` : query;
|
|
75
|
+
}
|
|
50
76
|
//# sourceMappingURL=richTextQuery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"richTextQuery.js","sourceRoot":"","sources":["../../../src/guillotine/metadata/richTextQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAC,aAAa,EAAE,aAAa,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AAGzE,MAAM,gBAAgB,GAAG,GAAW,EAAE;IAClC,OAAO,WAAW,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAiB,EAAE,EAAE;IAC/C,OAAO,GAAG,SAAS
|
|
1
|
+
{"version":3,"file":"richTextQuery.js","sourceRoot":"","sources":["../../../src/guillotine/metadata/richTextQuery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAC,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,MAAM,EAAC,MAAM,oBAAoB,CAAC;AAC1C,OAAO,EAAC,aAAa,EAAE,aAAa,EAAE,YAAY,EAAC,MAAM,eAAe,CAAC;AAGzE,+GAA+G;AAC/G,MAAM,CAAC,MAAM,yBAAyB,GAAG,gBAAgB,CAAC;AAC1D,MAAM,CAAC,MAAM,wBAAwB,GAAG,eAAe,CAAC;AACxD,MAAM,CAAC,MAAM,yBAAyB,GAAG,gBAAgB,CAAC;AAE1D,MAAM,gBAAgB,GAAG,GAAW,EAAE;IAClC,OAAO,WAAW,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AACpE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAiB,EAAE,EAAE;IAC/C,OAAO,GAAG,SAAS;;;aAGV,yBAAyB;;;aAGzB,wBAAwB;;;aAGxB,yBAAyB;OAC/B,CAAC;AACR,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,GAAuB,EAAE,CAAC;IAClD,CAAC,yBAAyB,EAAE,YAAY,yBAAyB;;;;MAI/D,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;EACjC,CAAC;IACC,CAAC,wBAAwB,EAAE,YAAY,wBAAwB;;;;;;UAMzD,YAAY,EAAE;;;;;;kBAMN,aAAa,EAAE;;;;;EAK/B,CAAC;IACC,CAAC,yBAAyB,EAAE,YAAY,yBAAyB;;;;;cAKvD,aAAa,CAAC,EAAC,KAAK,EAAE,YAAY,EAAC,CAAC;;;;;;;;EAQhD,CAAC;CACF,CAAC;AAEF,oHAAoH;AACpH,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAW,EAAE;IAC1C,OAAO,mBAAmB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChF,CAAC,CAAC;AAEF,4HAA4H;AAC5H,MAAM,UAAU,qBAAqB,CAAC,KAAa;IAC/C,MAAM,OAAO,GAAG,mBAAmB,EAAE;SAChC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC;SACxF,GAAG,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;IAEzC,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACtE,CAAC"}
|
|
@@ -14,7 +14,7 @@ export function validateShortcut(props) {
|
|
|
14
14
|
console.warn(404, `Shortcuts are not available in ${meta.renderMode} render mode`);
|
|
15
15
|
notFound();
|
|
16
16
|
}
|
|
17
|
-
if (parameters) {
|
|
17
|
+
if (parameters === null || parameters === void 0 ? void 0 : parameters.length) {
|
|
18
18
|
const searchParams = parameters.map(({ name, value }) => `${encodeURIComponent(name)}=${encodeURIComponent(value)}`).join('&');
|
|
19
19
|
destination += '?' + searchParams;
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validateShortcut.js","sourceRoot":"","sources":["../../src/guillotine/validateShortcut.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAC,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAG/B,MAAM,UAAU,gBAAgB,CAAC,KAAyB;;IACtD,MAAM,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,GAAG,KAAK,CAAC;IAClC,MAAM,OAAO,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,0CAAE,IAAI,CAAC;IAChC,MAAM,UAAU,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,CAAC;IACvC,IAAI,WAAW,GAAG,OAAO,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,WAAW,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,UAAU,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC;YACvC,oDAAoD;YACpD,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,kCAAkC,IAAI,CAAC,UAAU,cAAc,CAAC,CAAC;YACnF,QAAQ,EAAE,CAAC;QACf,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"validateShortcut.js","sourceRoot":"","sources":["../../src/guillotine/validateShortcut.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAC,MAAM,iBAAiB,CAAC;AACjE,OAAO,EAAC,WAAW,EAAC,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAC,WAAW,EAAC,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAC,OAAO,EAAC,MAAM,QAAQ,CAAC;AAG/B,MAAM,UAAU,gBAAgB,CAAC,KAAyB;;IACtD,MAAM,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAC,GAAG,KAAK,CAAC;IAClC,MAAM,OAAO,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,GAAG,0CAAE,IAAI,CAAC;IAChC,MAAM,UAAU,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,CAAC;IACvC,IAAI,WAAW,GAAG,OAAO,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,0CAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,IAAI,WAAW,EAAE,CAAC;QAC/C,IAAI,IAAI,CAAC,UAAU,KAAK,WAAW,CAAC,IAAI,EAAE,CAAC;YACvC,oDAAoD;YACpD,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,kCAAkC,IAAI,CAAC,UAAU,cAAc,CAAC,CAAC;YACnF,QAAQ,EAAE,CAAC;QACf,CAAC;QAED,IAAI,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,EAAE,CAAC;YACrB,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,EAAC,IAAI,EAAE,KAAK,EAAC,EAAE,EAAE,CAAC,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7H,WAAW,IAAI,GAAG,GAAG,YAAY,CAAC;QACtC,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,iCAAiC,IAAI,CAAC,IAAI,MAAM,EAAE,WAAW,CAAC,CAAC;QAC7E,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,uCAAuC;IACvC,kDAAkD;IAClD,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,KAAK,WAAW,CAAC,IAAI,CAAC;IAErF,MAAM,sBAAsB,GAAG,IAAI,CAAC,UAAU,KAAK,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC;IAErG,MAAM,UAAU,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,YAAY,IAAI,sBAAsB,CAAC;IAE7F,IAAI,UAAU,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,8BAA8B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC9D,QAAQ,EAAE,CAAC;IACf,CAAC;AACL,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { APP_NAME, APP_NAME_DASHED, APP_NAME_UNDERSCORED, IS_DEV_MODE } from './
|
|
|
2
2
|
export type * from './types';
|
|
3
3
|
export { ComponentRegistry } from './common/ComponentRegistry';
|
|
4
4
|
export { CATCH_ALL, FROM_XP_PARAM, JSESSIONID_HEADER, PORTAL_COMPONENT_ATTRIBUTE, PORTAL_REGION_ATTRIBUTE, PROJECT_ID_HEADER, RENDER_MODE, RENDER_MODE_HEADER, XP_BASE_URL_HEADER, XP_COMPONENT_TYPE, XP_REQUEST_TYPE } from './common/constants';
|
|
5
|
-
export { richTextQuery } from './guillotine/metadata/richTextQuery';
|
|
5
|
+
export { richTextQuery, richTextFragments, withRichTextFragments } from './guillotine/metadata/richTextQuery';
|
|
6
6
|
export { validateData } from './guillotine/validateData';
|
|
7
7
|
export { I18n } from './i18n/i18n';
|
|
8
8
|
export { getContentBranch } from './utils/getContentBranch';
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { APP_NAME, APP_NAME_DASHED, APP_NAME_UNDERSCORED, IS_DEV_MODE } from './common/env';
|
|
2
2
|
export { ComponentRegistry } from './common/ComponentRegistry';
|
|
3
3
|
export { CATCH_ALL, FROM_XP_PARAM, JSESSIONID_HEADER, PORTAL_COMPONENT_ATTRIBUTE, PORTAL_REGION_ATTRIBUTE, PROJECT_ID_HEADER, RENDER_MODE, RENDER_MODE_HEADER, XP_BASE_URL_HEADER, XP_COMPONENT_TYPE, XP_REQUEST_TYPE } from './common/constants';
|
|
4
|
-
export { richTextQuery } from './guillotine/metadata/richTextQuery';
|
|
4
|
+
export { richTextQuery, richTextFragments, withRichTextFragments } from './guillotine/metadata/richTextQuery';
|
|
5
5
|
export { validateData } from './guillotine/validateData';
|
|
6
6
|
export { I18n } from './i18n/i18n';
|
|
7
7
|
export { getContentBranch } from './utils/getContentBranch';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,WAAW,EACd,MAAM,cAAc,CAAC;AAItB,OAAO,EAAC,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EACH,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAC,aAAa,EAAC,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,WAAW,EACd,MAAM,cAAc,CAAC;AAItB,OAAO,EAAC,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAE7D,OAAO,EACH,SAAS,EACT,aAAa,EACb,iBAAiB,EACjB,0BAA0B,EAC1B,uBAAuB,EACvB,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EAClB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAC,aAAa,EAAE,iBAAiB,EAAE,qBAAqB,EAAC,MAAM,qCAAqC,CAAC;AAC5G,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAC;AAEjC,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAC,2BAA2B,EAAC,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAC,wBAAwB,EAAC,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAC,oBAAoB,EAAC,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAC,mBAAmB,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAC,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAC,MAAM,yBAAyB,CAAC;AACvG,OAAO,EAAC,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAC,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAC,gBAAgB,EAAC,MAAM,0BAA0B,CAAC"}
|