@starlightcms/next-sdk 1.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.
package/LICENSE ADDED
@@ -0,0 +1,11 @@
1
+ Copyright 2023 Starlight Tecnologia LTDA
2
+
3
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4
+
5
+ 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
6
+
7
+ 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8
+
9
+ 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
10
+
11
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package/README.md ADDED
@@ -0,0 +1,58 @@
1
+ <picture>
2
+ <source media="(prefers-color-scheme: dark)" srcset="/assets/sdk-header-dark.svg">
3
+ <source media="(prefers-color-scheme: light)" srcset="/assets/sdk-header.svg">
4
+ <img alt="Starlight Next SDK logo" src="/assets/sdk-header.svg">
5
+ </picture>
6
+
7
+ # Starlight Next SDK
8
+
9
+ This is the official Starlight SDK for Next applications, which makes integrating Starlight
10
+ content into your apps a real breeze.
11
+
12
+ You can read the usage guide and the API reference in [its documentation page](https://next.sdk.starlight.sh).
13
+
14
+ ## Quick Start
15
+
16
+ To quickly start using the Next SDK, install it into your project:
17
+
18
+ ```shell
19
+ npm install @starlightcms/next-sdk
20
+ ```
21
+
22
+ Then, import the SDK and configure which Starlight workspace it should request data from:
23
+
24
+ ```js
25
+ import Starlight from '@starlightcms/next-sdk'
26
+
27
+ Starlight.configure({
28
+ workspace: '1234567890'
29
+ })
30
+ ```
31
+
32
+ And, finally, start requesting data and rendering content:
33
+
34
+ ```jsx
35
+ import Starlight, { VisualContent } from '@starlightcms/next-sdk'
36
+
37
+ // Listing all entries from the 'posts' model.
38
+ const response = Starlight.posts.entries.list()
39
+
40
+ // Getting content from the 'hello-world' entry.
41
+ const response = Starlight.posts.entries.get('hello-world')
42
+
43
+ // Rendering visual editor content:
44
+ <VisualContent content={response.data.data.content} />
45
+ ```
46
+
47
+ The SDK is capable of requesting a myriad of different content from your workspaces. Check out
48
+ [the documentation](https://next.sdk.starlight.sh/docs/intro) to learn more.
49
+
50
+ ## React and JavaScript SDKs
51
+
52
+ If you don't use Next, take a look at our [React SDK](https://github.com/starlightcms/react-sdk) or
53
+ [JavaScript SDK](https://github.com/starlightcms/js-sdk), as they provide functionality specific to React or Vanilla JS
54
+ applications respectively.
55
+
56
+ ## Issues
57
+
58
+ If you have any questions or you're facing any issues with the SDK, feel free to [open an issue](https://github.com/starlightcms/next-sdk/issues).
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { ImageProps } from './types';
3
+ export declare const Image: ({ media, variation, alt, placeholder, ...props }: ImageProps) => JSX.Element;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Image/index.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAsBpC,eAAO,MAAM,KAAK,qDAMf,UAAU,KAAG,WAyBf,CAAA"}
@@ -0,0 +1,69 @@
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 __rest = (this && this.__rest) || function (s, e) {
26
+ var t = {};
27
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
28
+ t[p] = s[p];
29
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
30
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
31
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
32
+ t[p[i]] = s[p[i]];
33
+ }
34
+ return t;
35
+ };
36
+ var __importDefault = (this && this.__importDefault) || function (mod) {
37
+ return (mod && mod.__esModule) ? mod : { "default": mod };
38
+ };
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.Image = void 0;
41
+ const react_1 = __importStar(require("react"));
42
+ const image_1 = __importDefault(require("next/image"));
43
+ const react_sdk_1 = require("@starlightcms/react-sdk");
44
+ const keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
45
+ const triplet = (e1, e2, e3) => keyStr.charAt(e1 >> 2) +
46
+ keyStr.charAt(((e1 & 3) << 4) | (e2 >> 4)) +
47
+ keyStr.charAt(((e2 & 15) << 2) | (e3 >> 6)) +
48
+ keyStr.charAt(e3 & 63);
49
+ const rgbDataURL = (hex) => {
50
+ const aRgbHex = hex.match(/.{1,2}/g);
51
+ const r = parseInt(aRgbHex[0], 16), g = parseInt(aRgbHex[1], 16), b = parseInt(aRgbHex[2], 16);
52
+ return `data:image/gif;base64,R0lGODlhAQABAPAA${triplet(0, r, g) + triplet(b, 255, 255)}/yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==`;
53
+ };
54
+ const Image = (_a) => {
55
+ var _b, _c, _d;
56
+ var { media, variation, alt, placeholder } = _a, props = __rest(_a, ["media", "variation", "alt", "placeholder"]);
57
+ const file = (0, react_1.useMemo)(() => (0, react_sdk_1.getMediaFile)(media, variation), [media, variation]);
58
+ const blurDataURL = (0, react_1.useMemo)(() => {
59
+ return placeholder === 'blur' && file.background_color
60
+ ? rgbDataURL(file.background_color)
61
+ : undefined;
62
+ }, [file, placeholder]);
63
+ if (file.variation !== variation) {
64
+ console.warn(`Starlight media file ${media.name}.${media.extension} has no "${variation}" variation. The "${file.variation}" variation was used instead.`);
65
+ }
66
+ return (react_1.default.createElement(image_1.default, Object.assign({ src: file.path, width: (_b = file.meta) === null || _b === void 0 ? void 0 : _b.width, height: (_c = file.meta) === null || _c === void 0 ? void 0 : _c.height, alt: (_d = alt !== null && alt !== void 0 ? alt : media.alt) !== null && _d !== void 0 ? _d : '', placeholder: placeholder, blurDataURL: blurDataURL }, props)));
67
+ };
68
+ exports.Image = Image;
69
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Image/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+CAAsC;AACtC,uDAAiD;AACjD,uDAAsD;AAGtD,MAAM,MAAM,GACV,mEAAmE,CAAA;AAErE,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAE,CACrD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACtB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;AAExB,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE;IACjC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAqB,CAAA;IACxD,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAChC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAC5B,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAE9B,OAAO,yCACL,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CACxC,sCAAsC,CAAA;AACxC,CAAC,CAAA;AAEM,MAAM,KAAK,GAAG,CAAC,EAMT,EAAe,EAAE;;QANR,EACpB,KAAK,EACL,SAAS,EACT,GAAG,EACH,WAAW,OAEA,EADR,KAAK,cALY,4CAMrB,CADS;IAER,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAA,wBAAY,EAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAA;IAC9E,MAAM,WAAW,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC/B,OAAO,WAAW,KAAK,MAAM,IAAI,IAAI,CAAC,gBAAgB;YACpD,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACnC,CAAC,CAAC,SAAS,CAAA;IACf,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;IAEvB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;QAChC,OAAO,CAAC,IAAI,CACV,wBAAwB,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,YAAY,SAAS,qBAAqB,IAAI,CAAC,SAAS,+BAA+B,CAC7I,CAAA;KACF;IAED,OAAO,CACL,8BAAC,eAAS,kBACR,GAAG,EAAE,IAAI,CAAC,IAAI,EACd,KAAK,EAAE,MAAA,IAAI,CAAC,IAAI,0CAAE,KAAe,EACjC,MAAM,EAAE,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAgB,EACnC,GAAG,EAAE,MAAA,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,KAAK,CAAC,GAAG,mCAAI,EAAE,EAC3B,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,IACpB,KAAK,EACT,CACH,CAAA;AACH,CAAC,CAAA;AA/BY,QAAA,KAAK,SA+BjB","sourcesContent":["import React, { useMemo } from 'react'\nimport { default as NextImage } from 'next/image'\nimport { getMediaFile } from '@starlightcms/react-sdk'\nimport { ImageProps } from './types'\n\nconst keyStr =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\nconst triplet = (e1: number, e2: number, e3: number) =>\n keyStr.charAt(e1 >> 2) +\n keyStr.charAt(((e1 & 3) << 4) | (e2 >> 4)) +\n keyStr.charAt(((e2 & 15) << 2) | (e3 >> 6)) +\n keyStr.charAt(e3 & 63)\n\nconst rgbDataURL = (hex: string) => {\n const aRgbHex = hex.match(/.{1,2}/g) as RegExpMatchArray\n const r = parseInt(aRgbHex[0], 16),\n g = parseInt(aRgbHex[1], 16),\n b = parseInt(aRgbHex[2], 16)\n\n return `data:image/gif;base64,R0lGODlhAQABAPAA${\n triplet(0, r, g) + triplet(b, 255, 255)\n }/yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==`\n}\n\nexport const Image = ({\n media,\n variation,\n alt,\n placeholder,\n ...props\n}: ImageProps): JSX.Element => {\n const file = useMemo(() => getMediaFile(media, variation), [media, variation])\n const blurDataURL = useMemo(() => {\n return placeholder === 'blur' && file.background_color\n ? rgbDataURL(file.background_color)\n : undefined\n }, [file, placeholder])\n\n if (file.variation !== variation) {\n console.warn(\n `Starlight media file ${media.name}.${media.extension} has no \"${variation}\" variation. The \"${file.variation}\" variation was used instead.`\n )\n }\n\n return (\n <NextImage\n src={file.path}\n width={file.meta?.width as number}\n height={file.meta?.height as number}\n alt={alt ?? media.alt ?? ''}\n placeholder={placeholder}\n blurDataURL={blurDataURL}\n {...props}\n />\n )\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import { ImageProps as NextImageProps } from 'next/image';
2
+ import { MediaObject } from '@starlightcms/react-sdk';
3
+ export type ImageProps = Omit<NextImageProps, 'src' | 'alt'> & {
4
+ media: MediaObject;
5
+ variation?: string;
6
+ alt?: string;
7
+ };
8
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/Image/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,YAAY,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG;IAC7D,KAAK,EAAE,WAAW,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Image/types.ts"],"names":[],"mappings":"","sourcesContent":["import { ImageProps as NextImageProps } from 'next/image'\nimport { MediaObject } from '@starlightcms/react-sdk'\n\nexport type ImageProps = Omit<NextImageProps, 'src' | 'alt'> & {\n media: MediaObject\n variation?: string\n alt?: string\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import Starlight from '@starlightcms/react-sdk';
2
+ export * from '@starlightcms/react-sdk';
3
+ export { Image } from './Image';
4
+ export default Starlight;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,yBAAyB,CAAA;AAC/C,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,eAAe,SAAS,CAAA"}
@@ -0,0 +1,26 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
19
+ Object.defineProperty(exports, "__esModule", { value: true });
20
+ exports.Image = void 0;
21
+ const react_sdk_1 = __importDefault(require("@starlightcms/react-sdk"));
22
+ __exportStar(require("@starlightcms/react-sdk"), exports);
23
+ var Image_1 = require("./Image");
24
+ Object.defineProperty(exports, "Image", { enumerable: true, get: function () { return Image_1.Image; } });
25
+ exports.default = react_sdk_1.default;
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,wEAA+C;AAC/C,0DAAuC;AACvC,iCAA+B;AAAtB,8FAAA,KAAK,OAAA;AAEd,kBAAe,mBAAS,CAAA","sourcesContent":["import Starlight from '@starlightcms/react-sdk'\nexport * from '@starlightcms/react-sdk'\nexport { Image } from './Image'\n\nexport default Starlight\n"]}
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { ImageProps } from './types';
3
+ export declare const Image: ({ media, variation, alt, placeholder, ...props }: ImageProps) => JSX.Element;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/Image/index.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAsBpC,eAAO,MAAM,KAAK,qDAMf,UAAU,KAAG,WAyBf,CAAA"}
@@ -0,0 +1,39 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import React, { useMemo } from 'react';
13
+ import { default as NextImage } from 'next/image';
14
+ import { getMediaFile } from '@starlightcms/react-sdk';
15
+ const keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
16
+ const triplet = (e1, e2, e3) => keyStr.charAt(e1 >> 2) +
17
+ keyStr.charAt(((e1 & 3) << 4) | (e2 >> 4)) +
18
+ keyStr.charAt(((e2 & 15) << 2) | (e3 >> 6)) +
19
+ keyStr.charAt(e3 & 63);
20
+ const rgbDataURL = (hex) => {
21
+ const aRgbHex = hex.match(/.{1,2}/g);
22
+ const r = parseInt(aRgbHex[0], 16), g = parseInt(aRgbHex[1], 16), b = parseInt(aRgbHex[2], 16);
23
+ return `data:image/gif;base64,R0lGODlhAQABAPAA${triplet(0, r, g) + triplet(b, 255, 255)}/yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==`;
24
+ };
25
+ export const Image = (_a) => {
26
+ var _b, _c, _d;
27
+ var { media, variation, alt, placeholder } = _a, props = __rest(_a, ["media", "variation", "alt", "placeholder"]);
28
+ const file = useMemo(() => getMediaFile(media, variation), [media, variation]);
29
+ const blurDataURL = useMemo(() => {
30
+ return placeholder === 'blur' && file.background_color
31
+ ? rgbDataURL(file.background_color)
32
+ : undefined;
33
+ }, [file, placeholder]);
34
+ if (file.variation !== variation) {
35
+ console.warn(`Starlight media file ${media.name}.${media.extension} has no "${variation}" variation. The "${file.variation}" variation was used instead.`);
36
+ }
37
+ return (React.createElement(NextImage, Object.assign({ src: file.path, width: (_b = file.meta) === null || _b === void 0 ? void 0 : _b.width, height: (_c = file.meta) === null || _c === void 0 ? void 0 : _c.height, alt: (_d = alt !== null && alt !== void 0 ? alt : media.alt) !== null && _d !== void 0 ? _d : '', placeholder: placeholder, blurDataURL: blurDataURL }, props)));
38
+ };
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Image/index.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAGtD,MAAM,MAAM,GACV,mEAAmE,CAAA;AAErE,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,EAAU,EAAE,EAAU,EAAE,EAAE,CACrD,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACtB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3C,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,CAAA;AAExB,MAAM,UAAU,GAAG,CAAC,GAAW,EAAE,EAAE;IACjC,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAqB,CAAA;IACxD,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAChC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAC5B,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IAE9B,OAAO,yCACL,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CACxC,sCAAsC,CAAA;AACxC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAMT,EAAe,EAAE;;QANR,EACpB,KAAK,EACL,SAAS,EACT,GAAG,EACH,WAAW,OAEA,EADR,KAAK,cALY,4CAMrB,CADS;IAER,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAA;IAC9E,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE;QAC/B,OAAO,WAAW,KAAK,MAAM,IAAI,IAAI,CAAC,gBAAgB;YACpD,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACnC,CAAC,CAAC,SAAS,CAAA;IACf,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;IAEvB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;QAChC,OAAO,CAAC,IAAI,CACV,wBAAwB,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,YAAY,SAAS,qBAAqB,IAAI,CAAC,SAAS,+BAA+B,CAC7I,CAAA;KACF;IAED,OAAO,CACL,oBAAC,SAAS,kBACR,GAAG,EAAE,IAAI,CAAC,IAAI,EACd,KAAK,EAAE,MAAA,IAAI,CAAC,IAAI,0CAAE,KAAe,EACjC,MAAM,EAAE,MAAA,IAAI,CAAC,IAAI,0CAAE,MAAgB,EACnC,GAAG,EAAE,MAAA,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,KAAK,CAAC,GAAG,mCAAI,EAAE,EAC3B,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,IACpB,KAAK,EACT,CACH,CAAA;AACH,CAAC,CAAA","sourcesContent":["import React, { useMemo } from 'react'\nimport { default as NextImage } from 'next/image'\nimport { getMediaFile } from '@starlightcms/react-sdk'\nimport { ImageProps } from './types'\n\nconst keyStr =\n 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='\n\nconst triplet = (e1: number, e2: number, e3: number) =>\n keyStr.charAt(e1 >> 2) +\n keyStr.charAt(((e1 & 3) << 4) | (e2 >> 4)) +\n keyStr.charAt(((e2 & 15) << 2) | (e3 >> 6)) +\n keyStr.charAt(e3 & 63)\n\nconst rgbDataURL = (hex: string) => {\n const aRgbHex = hex.match(/.{1,2}/g) as RegExpMatchArray\n const r = parseInt(aRgbHex[0], 16),\n g = parseInt(aRgbHex[1], 16),\n b = parseInt(aRgbHex[2], 16)\n\n return `data:image/gif;base64,R0lGODlhAQABAPAA${\n triplet(0, r, g) + triplet(b, 255, 255)\n }/yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==`\n}\n\nexport const Image = ({\n media,\n variation,\n alt,\n placeholder,\n ...props\n}: ImageProps): JSX.Element => {\n const file = useMemo(() => getMediaFile(media, variation), [media, variation])\n const blurDataURL = useMemo(() => {\n return placeholder === 'blur' && file.background_color\n ? rgbDataURL(file.background_color)\n : undefined\n }, [file, placeholder])\n\n if (file.variation !== variation) {\n console.warn(\n `Starlight media file ${media.name}.${media.extension} has no \"${variation}\" variation. The \"${file.variation}\" variation was used instead.`\n )\n }\n\n return (\n <NextImage\n src={file.path}\n width={file.meta?.width as number}\n height={file.meta?.height as number}\n alt={alt ?? media.alt ?? ''}\n placeholder={placeholder}\n blurDataURL={blurDataURL}\n {...props}\n />\n )\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import { ImageProps as NextImageProps } from 'next/image';
2
+ import { MediaObject } from '@starlightcms/react-sdk';
3
+ export type ImageProps = Omit<NextImageProps, 'src' | 'alt'> & {
4
+ media: MediaObject;
5
+ variation?: string;
6
+ alt?: string;
7
+ };
8
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/Image/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,IAAI,cAAc,EAAE,MAAM,YAAY,CAAA;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,EAAE,KAAK,GAAG,KAAK,CAAC,GAAG;IAC7D,KAAK,EAAE,WAAW,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/Image/types.ts"],"names":[],"mappings":"","sourcesContent":["import { ImageProps as NextImageProps } from 'next/image'\nimport { MediaObject } from '@starlightcms/react-sdk'\n\nexport type ImageProps = Omit<NextImageProps, 'src' | 'alt'> & {\n media: MediaObject\n variation?: string\n alt?: string\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import Starlight from '@starlightcms/react-sdk';
2
+ export * from '@starlightcms/react-sdk';
3
+ export { Image } from './Image';
4
+ export default Starlight;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,yBAAyB,CAAA;AAC/C,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,eAAe,SAAS,CAAA"}
@@ -0,0 +1,5 @@
1
+ import Starlight from '@starlightcms/react-sdk';
2
+ export * from '@starlightcms/react-sdk';
3
+ export { Image } from './Image';
4
+ export default Starlight;
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,yBAAyB,CAAA;AAC/C,cAAc,yBAAyB,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,eAAe,SAAS,CAAA","sourcesContent":["import Starlight from '@starlightcms/react-sdk'\nexport * from '@starlightcms/react-sdk'\nexport { Image } from './Image'\n\nexport default Starlight\n"]}
package/package.json ADDED
@@ -0,0 +1,63 @@
1
+ {
2
+ "name": "@starlightcms/next-sdk",
3
+ "version": "1.0.0",
4
+ "description": "The Starlight SDK for Next",
5
+ "main": "dist/cjs/index.js",
6
+ "exports": {
7
+ "require": "./dist/cjs/index.js",
8
+ "import": "./dist/esm/index.js"
9
+ },
10
+ "scripts": {
11
+ "build": "rimraf dist && npm run build:cjs && npm run build:esm",
12
+ "build:esm": "tsc --module esnext --outDir dist/esm",
13
+ "build:cjs": "tsc --module commonjs --outDir dist/cjs",
14
+ "dev": "tsc --watch --module esnext --outDir dist/esm",
15
+ "dev:cjs": "tsc --watch --module commonjs --outDir dist/cjs",
16
+ "prepare": "husky install",
17
+ "prepublishOnly": "npm run build",
18
+ "test": "echo \"Error: no test specified\" && exit 1"
19
+ },
20
+ "files": [
21
+ "dist/**/*"
22
+ ],
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+https://github.com/starlightcms/next-sdk.git"
26
+ },
27
+ "keywords": [
28
+ "starlight",
29
+ "sdk"
30
+ ],
31
+ "author": "Lucas Varela <hi@lucasvarela.dev>",
32
+ "license": "BSD-3-Clause",
33
+ "bugs": {
34
+ "url": "https://github.com/starlightcms/next-sdk/issues"
35
+ },
36
+ "homepage": "https://github.com/starlightcms/next-sdk#readme",
37
+ "devDependencies": {
38
+ "@types/node": "^16.10.1",
39
+ "@types/react": "^18.0.0",
40
+ "@typescript-eslint/eslint-plugin": "^4.31.2",
41
+ "@typescript-eslint/parser": "^4.31.2",
42
+ "eslint": "^7.32.0",
43
+ "eslint-config-prettier": "^8.3.0",
44
+ "husky": "^7.0.2",
45
+ "lint-staged": "^11.1.2",
46
+ "prettier": "2.4.1",
47
+ "rimraf": "^3.0.2",
48
+ "typescript": "^4.4.3"
49
+ },
50
+ "lint-staged": {
51
+ "*.{ts,tsx}": [
52
+ "eslint --cache --fix",
53
+ "prettier --write"
54
+ ]
55
+ },
56
+ "dependencies": {
57
+ "@starlightcms/react-sdk": "^1.1.0"
58
+ },
59
+ "peerDependencies": {
60
+ "react": ">=18.0.0",
61
+ "next": ">=13.0.0"
62
+ }
63
+ }