@rubixstudios/payload-images 1.0.0 → 1.0.1

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.
Files changed (57) hide show
  1. package/LICENSE +22 -22
  2. package/dist/components/ImageSearch/index.d.ts +4 -0
  3. package/dist/components/ImageSearch/index.d.ts.map +1 -0
  4. package/dist/components/ImageSearch/index.js +31 -0
  5. package/dist/components/SearchImages/heart.d.ts +4 -0
  6. package/dist/components/SearchImages/heart.d.ts.map +1 -0
  7. package/dist/components/SearchImages/heart.js +12 -0
  8. package/dist/components/SearchImages/index.d.ts +11 -0
  9. package/dist/components/SearchImages/index.d.ts.map +1 -0
  10. package/dist/components/SearchImages/index.js +378 -0
  11. package/dist/components/SearchImages/style.css +1 -0
  12. package/dist/defaults.d.ts +3 -0
  13. package/dist/defaults.d.ts.map +1 -0
  14. package/dist/defaults.js +8 -0
  15. package/dist/endpoints/handler/Pexels.d.ts +12 -0
  16. package/dist/endpoints/handler/Pexels.d.ts.map +1 -0
  17. package/dist/endpoints/handler/Pexels.js +60 -0
  18. package/dist/endpoints/handler/Pixabay.d.ts +12 -0
  19. package/dist/endpoints/handler/Pixabay.d.ts.map +1 -0
  20. package/dist/endpoints/handler/Pixabay.js +63 -0
  21. package/dist/endpoints/handler/Provider.d.ts +20 -0
  22. package/dist/endpoints/handler/Provider.d.ts.map +1 -0
  23. package/dist/endpoints/handler/Provider.js +53 -0
  24. package/dist/endpoints/handler/Unsplash.d.ts +13 -0
  25. package/dist/endpoints/handler/Unsplash.d.ts.map +1 -0
  26. package/dist/endpoints/handler/Unsplash.js +82 -0
  27. package/dist/endpoints/providers.d.ts +3 -0
  28. package/dist/endpoints/providers.d.ts.map +1 -0
  29. package/dist/endpoints/providers.js +125 -0
  30. package/dist/exports/client.d.ts +2 -0
  31. package/dist/exports/client.d.ts.map +1 -0
  32. package/dist/exports/client.js +1 -0
  33. package/dist/index.d.ts +4 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +48 -0
  36. package/dist/lib/cache.d.ts +7 -0
  37. package/dist/lib/cache.d.ts.map +1 -0
  38. package/dist/lib/cache.js +34 -0
  39. package/dist/types.d.ts +167 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +316 -0
  42. package/dist/utils/fetchCache.d.ts +2 -0
  43. package/dist/utils/fetchCache.d.ts.map +1 -0
  44. package/dist/utils/fetchCache.js +15 -0
  45. package/dist/utils/getProvider.d.ts +6 -0
  46. package/dist/utils/getProvider.d.ts.map +1 -0
  47. package/dist/utils/getProvider.js +16 -0
  48. package/dist/utils/getProviders.d.ts +6 -0
  49. package/dist/utils/getProviders.d.ts.map +1 -0
  50. package/dist/utils/getProviders.js +10 -0
  51. package/dist/utils/requireAccess.d.ts +3 -0
  52. package/dist/utils/requireAccess.d.ts.map +1 -0
  53. package/dist/utils/requireAccess.js +13 -0
  54. package/dist/utils/resolveProvider.d.ts +6 -0
  55. package/dist/utils/resolveProvider.d.ts.map +1 -0
  56. package/dist/utils/resolveProvider.js +5 -0
  57. package/package.json +27 -12
package/dist/types.js ADDED
@@ -0,0 +1,316 @@
1
+ export const PexelsColours = [
2
+ {
3
+ label: 'Color',
4
+ value: ''
5
+ },
6
+ {
7
+ label: 'Black',
8
+ value: 'black'
9
+ },
10
+ {
11
+ label: 'Blue',
12
+ value: 'blue'
13
+ },
14
+ {
15
+ label: 'Brown',
16
+ value: 'brown'
17
+ },
18
+ {
19
+ label: 'Gray',
20
+ value: 'gray'
21
+ },
22
+ {
23
+ label: 'Green',
24
+ value: 'green'
25
+ },
26
+ {
27
+ label: 'Orange',
28
+ value: 'orange'
29
+ },
30
+ {
31
+ label: 'Pink',
32
+ value: 'pink'
33
+ },
34
+ {
35
+ label: 'Red',
36
+ value: 'red'
37
+ },
38
+ {
39
+ label: 'Turquoise',
40
+ value: 'turquoise'
41
+ },
42
+ {
43
+ label: 'Violet',
44
+ value: 'violet'
45
+ },
46
+ {
47
+ label: 'White',
48
+ value: 'white'
49
+ },
50
+ {
51
+ label: 'Yellow',
52
+ value: 'yellow'
53
+ }
54
+ ];
55
+ export const PexelsOrientation = [
56
+ {
57
+ label: 'Landscape',
58
+ value: 'landscape'
59
+ },
60
+ {
61
+ label: 'Portrait',
62
+ value: 'portrait'
63
+ },
64
+ {
65
+ label: 'Square',
66
+ value: 'square'
67
+ }
68
+ ];
69
+ export const PexelsSize = [
70
+ {
71
+ label: 'Small (4MP)',
72
+ value: 'small'
73
+ },
74
+ {
75
+ label: 'Medium (12MP)',
76
+ value: 'medium'
77
+ },
78
+ {
79
+ label: 'Large (24MP)',
80
+ value: 'large'
81
+ }
82
+ ];
83
+ export const PixabayCategories = [
84
+ {
85
+ label: 'Animals',
86
+ value: 'animals'
87
+ },
88
+ {
89
+ label: 'Backgrounds',
90
+ value: 'backgrounds'
91
+ },
92
+ {
93
+ label: 'Buildings',
94
+ value: 'buildings'
95
+ },
96
+ {
97
+ label: 'Business',
98
+ value: 'business'
99
+ },
100
+ {
101
+ label: 'Computer',
102
+ value: 'computer'
103
+ },
104
+ {
105
+ label: 'Education',
106
+ value: 'education'
107
+ },
108
+ {
109
+ label: 'Fashion',
110
+ value: 'fashion'
111
+ },
112
+ {
113
+ label: 'Feelings',
114
+ value: 'feelings'
115
+ },
116
+ {
117
+ label: 'Food',
118
+ value: 'food'
119
+ },
120
+ {
121
+ label: 'Health',
122
+ value: 'health'
123
+ },
124
+ {
125
+ label: 'Industry',
126
+ value: 'industry'
127
+ },
128
+ {
129
+ label: 'Music',
130
+ value: 'music'
131
+ },
132
+ {
133
+ label: 'Nature',
134
+ value: 'nature'
135
+ },
136
+ {
137
+ label: 'People',
138
+ value: 'people'
139
+ },
140
+ {
141
+ label: 'Places',
142
+ value: 'places'
143
+ },
144
+ {
145
+ label: 'Religion',
146
+ value: 'religion'
147
+ },
148
+ {
149
+ label: 'Science',
150
+ value: 'science'
151
+ },
152
+ {
153
+ label: 'Sports',
154
+ value: 'sports'
155
+ },
156
+ {
157
+ label: 'Transportation',
158
+ value: 'transportation'
159
+ },
160
+ {
161
+ label: 'Travel',
162
+ value: 'travel'
163
+ }
164
+ ];
165
+ export const PixabayColours = [
166
+ {
167
+ label: 'Black',
168
+ value: 'black'
169
+ },
170
+ {
171
+ label: 'Blue',
172
+ value: 'blue'
173
+ },
174
+ {
175
+ label: 'Brown',
176
+ value: 'brown'
177
+ },
178
+ {
179
+ label: 'Grayscale',
180
+ value: 'grayscale'
181
+ },
182
+ {
183
+ label: 'Gray',
184
+ value: 'gray'
185
+ },
186
+ {
187
+ label: 'Green',
188
+ value: 'green'
189
+ },
190
+ {
191
+ label: 'Lilac',
192
+ value: 'lilac'
193
+ },
194
+ {
195
+ label: 'Orange',
196
+ value: 'orange'
197
+ },
198
+ {
199
+ label: 'Pink',
200
+ value: 'pink'
201
+ },
202
+ {
203
+ label: 'Red',
204
+ value: 'red'
205
+ },
206
+ {
207
+ label: 'Transparent',
208
+ value: 'transparent'
209
+ },
210
+ {
211
+ label: 'Turquoise',
212
+ value: 'turquoise'
213
+ },
214
+ {
215
+ label: 'White',
216
+ value: 'white'
217
+ },
218
+ {
219
+ label: 'Yellow',
220
+ value: 'yellow'
221
+ }
222
+ ];
223
+ export const PixabayImageType = [
224
+ {
225
+ label: 'Photo',
226
+ value: 'photo'
227
+ },
228
+ {
229
+ label: 'Illustration',
230
+ value: 'illustration'
231
+ },
232
+ {
233
+ label: 'Vector',
234
+ value: 'vector'
235
+ }
236
+ ];
237
+ export const PixabayOrder = [
238
+ {
239
+ label: 'Popular',
240
+ value: 'popular'
241
+ },
242
+ {
243
+ label: 'Latest',
244
+ value: 'latest'
245
+ }
246
+ ];
247
+ export const PixabayOrientation = [
248
+ {
249
+ label: 'Landscape',
250
+ value: 'horizontal'
251
+ },
252
+ {
253
+ label: 'Portrait',
254
+ value: 'vertical'
255
+ }
256
+ ];
257
+ export const UnsplashColours = [
258
+ {
259
+ label: 'Black',
260
+ value: 'black'
261
+ },
262
+ {
263
+ label: 'Blue',
264
+ value: 'blue'
265
+ },
266
+ {
267
+ label: 'Grayscale',
268
+ value: 'black_and_white'
269
+ },
270
+ {
271
+ label: 'Green',
272
+ value: 'green'
273
+ },
274
+ {
275
+ label: 'Magenta',
276
+ value: 'magenta'
277
+ },
278
+ {
279
+ label: 'Orange',
280
+ value: 'orange'
281
+ },
282
+ {
283
+ label: 'Purple',
284
+ value: 'purple'
285
+ },
286
+ {
287
+ label: 'Red',
288
+ value: 'red'
289
+ },
290
+ {
291
+ label: 'Teal',
292
+ value: 'teal'
293
+ },
294
+ {
295
+ label: 'White',
296
+ value: 'white'
297
+ },
298
+ {
299
+ label: 'Yellow',
300
+ value: 'yellow'
301
+ }
302
+ ];
303
+ export const UnsplashOrientation = [
304
+ {
305
+ label: 'Landscape',
306
+ value: 'landscape'
307
+ },
308
+ {
309
+ label: 'Portrait',
310
+ value: 'portrait'
311
+ },
312
+ {
313
+ label: 'Square',
314
+ value: 'squarish'
315
+ }
316
+ ];
@@ -0,0 +1,2 @@
1
+ export declare const fetchCache: (queryPath: string) => Promise<any>;
2
+ //# sourceMappingURL=fetchCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchCache.d.ts","sourceRoot":"","sources":["../../src/utils/fetchCache.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,UAAU,GAAU,WAAW,MAAM,iBAejD,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { CacheManager } from '../lib/cache.js';
2
+ const cache = new CacheManager();
3
+ const defaultExpiry = 24 * 60 * 60 * 1000;
4
+ export const fetchCache = async (queryPath)=>{
5
+ const key = `image-search:${queryPath}`;
6
+ if (cache.exists(key)) {
7
+ return cache.get(key);
8
+ }
9
+ const response = await fetch(queryPath);
10
+ const json = await response.json();
11
+ if (response.status < 400) {
12
+ cache.set(key, json, defaultExpiry);
13
+ }
14
+ return json;
15
+ };
@@ -0,0 +1,6 @@
1
+ import { Pexels } from '../endpoints/handler/Pexels.js';
2
+ import { Pixabay } from '../endpoints/handler/Pixabay.js';
3
+ import { Unsplash } from '../endpoints/handler/Unsplash.js';
4
+ import { type ProviderKeys } from '../types.js';
5
+ export declare const getProvider: (providerKey: string | undefined, providerKeys?: ProviderKeys) => Pexels | Pixabay | Unsplash | null;
6
+ //# sourceMappingURL=getProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getProvider.d.ts","sourceRoot":"","sources":["../../src/utils/getProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAC3D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,eAAO,MAAM,WAAW,GAAI,aAAa,MAAM,GAAG,SAAS,EAAE,eAAe,YAAY,uCAavF,CAAA"}
@@ -0,0 +1,16 @@
1
+ import { Pexels } from '../endpoints/handler/Pexels.js';
2
+ import { Pixabay } from '../endpoints/handler/Pixabay.js';
3
+ import { Unsplash } from '../endpoints/handler/Unsplash.js';
4
+ export const getProvider = (providerKey, providerKeys)=>{
5
+ if (!providerKey) return null;
6
+ switch(providerKey.toLowerCase()){
7
+ case 'unsplash':
8
+ return new Unsplash(()=>providerKeys?.unsplash);
9
+ case 'pexels':
10
+ return new Pexels(()=>providerKeys?.pexels);
11
+ case 'pixabay':
12
+ return new Pixabay(()=>providerKeys?.pixabay);
13
+ default:
14
+ return null;
15
+ }
16
+ };
@@ -0,0 +1,6 @@
1
+ import { Pexels } from '../endpoints/handler/Pexels.js';
2
+ import { Pixabay } from '../endpoints/handler/Pixabay.js';
3
+ import { Unsplash } from '../endpoints/handler/Unsplash.js';
4
+ import { type ProviderKeys } from '../types.js';
5
+ export declare function getProviders(providerKey?: ProviderKeys): Array<Pexels | Unsplash | Pixabay>;
6
+ //# sourceMappingURL=getProviders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getProviders.d.ts","sourceRoot":"","sources":["../../src/utils/getProviders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAA;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAC3D,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AAE/C,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,CAM3F"}
@@ -0,0 +1,10 @@
1
+ import { Pexels } from '../endpoints/handler/Pexels.js';
2
+ import { Pixabay } from '../endpoints/handler/Pixabay.js';
3
+ import { Unsplash } from '../endpoints/handler/Unsplash.js';
4
+ export function getProviders(providerKey) {
5
+ return [
6
+ new Unsplash(()=>providerKey?.unsplash),
7
+ new Pexels(()=>providerKey?.pexels),
8
+ new Pixabay(()=>providerKey?.pixabay)
9
+ ].filter((p)=>p.isConfigured);
10
+ }
@@ -0,0 +1,3 @@
1
+ import type { PayloadRequest } from 'payload';
2
+ export declare const requireAccess: (req: PayloadRequest) => Promise<Response | undefined>;
3
+ //# sourceMappingURL=requireAccess.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requireAccess.d.ts","sourceRoot":"","sources":["../../src/utils/requireAccess.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,eAAO,MAAM,aAAa,GAAU,KAAK,cAAc,KAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CASrF,CAAA"}
@@ -0,0 +1,13 @@
1
+ export const requireAccess = async (req)=>{
2
+ const allowed = await req.payload?.config?.custom?.providerAccess?.({
3
+ req
4
+ });
5
+ if (!allowed) {
6
+ return Response.json({
7
+ data: null,
8
+ error: 'You are not allowed to perform this action.'
9
+ }, {
10
+ status: 403
11
+ });
12
+ }
13
+ };
@@ -0,0 +1,6 @@
1
+ import { PayloadRequest } from 'payload';
2
+ import { type Pexels } from '../endpoints/handler/Pexels.js';
3
+ import { type Pixabay } from '../endpoints/handler/Pixabay.js';
4
+ import { type Unsplash } from '../endpoints/handler/Unsplash.js';
5
+ export declare const resolveProvider: (req: PayloadRequest) => Unsplash | Pexels | Pixabay | null;
6
+ //# sourceMappingURL=resolveProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolveProvider.d.ts","sourceRoot":"","sources":["../../src/utils/resolveProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AACxC,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,gCAAgC,CAAA;AAC5D,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,kCAAkC,CAAA;AAGhE,eAAO,MAAM,eAAe,GAAI,KAAK,cAAc,KAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,IAGnF,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { getProvider } from './getProvider.js';
2
+ export const resolveProvider = (req)=>{
3
+ const providerKeys = req.payload?.config?.custom?.providerKeys;
4
+ return getProvider(req.routeParams?.provider, providerKeys);
5
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rubixstudios/payload-images",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "A Payload CMS plugin that integrates with stock image providers including Unsplash, Pexels and Pixabay.",
5
5
  "license": "MIT",
6
6
  "author": "Rubix Studios <hello@rubixstudios.com.au> (https://rubixstudios.com.au)",
@@ -36,6 +36,11 @@
36
36
  "import": "./dist/index.js",
37
37
  "types": "./dist/index.d.ts",
38
38
  "default": "./dist/index.js"
39
+ },
40
+ "./client": {
41
+ "import": "./dist/exports/client.js",
42
+ "types": "./dist/exports/client.d.ts",
43
+ "default": "./dist/exports/client.js"
39
44
  }
40
45
  },
41
46
  "main": "./dist/index.js",
@@ -43,6 +48,15 @@
43
48
  "files": [
44
49
  "dist"
45
50
  ],
51
+ "scripts": {
52
+ "build": "pnpm build:types && pnpm build:swc && pnpm build:assets",
53
+ "build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths",
54
+ "build:types": "tsc -p tsconfig.json",
55
+ "build:assets": "cleancss -o dist/components/SearchImages/style.css src/components/SearchImages/*.css",
56
+ "clean": "rimraf -g {dist,*.tsbuildinfo} && pnpm exec biome check --write",
57
+ "update": "pnpm update --latest && pnpm install && pnpm prune && pnpm dedupe && pnpm run clean",
58
+ "release": "semantic-release"
59
+ },
46
60
  "devDependencies": {
47
61
  "@biomejs/biome": "2.3.12",
48
62
  "@payloadcms/ui": "^3.73.0",
@@ -66,15 +80,16 @@
66
80
  },
67
81
  "publishConfig": {
68
82
  "access": "public",
69
- "registry": "https://registry.npmjs.org/"
83
+ "registry": "https://registry.npmjs.org/",
84
+ "main": "./dist/index.js",
85
+ "types": "./dist/index.d.ts",
86
+ "exports": {
87
+ ".": {
88
+ "import": "./dist/index.js",
89
+ "types": "./dist/index.d.ts",
90
+ "default": "./dist/index.js"
91
+ }
92
+ }
70
93
  },
71
- "scripts": {
72
- "build": "pnpm build:types && pnpm build:swc && pnpm build:assets",
73
- "build:swc": "swc ./src -d ./dist --config-file .swcrc --strip-leading-paths",
74
- "build:types": "tsc -p tsconfig.json",
75
- "build:assets": "cleancss -o dist/components/SearchImages/style.css src/components/SearchImages/*.css",
76
- "clean": "rimraf -g {dist,*.tsbuildinfo} && pnpm exec biome check --write",
77
- "update": "pnpm update --latest && pnpm install && pnpm prune && pnpm dedupe && pnpm run clean",
78
- "release": "semantic-release"
79
- }
80
- }
94
+ "packageManager": "pnpm@10.28.1"
95
+ }