@akinon/next 1.114.0-snapshot-ZERO-3890-20251208193442 → 1.114.0-snapshot-ZERO-3890-20251209002835

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/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @akinon/next
2
2
 
3
- ## 1.114.0-snapshot-ZERO-3890-20251208193442
3
+ ## 1.114.0-snapshot-ZERO-3890-20251209002835
4
4
 
5
5
  ### Minor Changes
6
6
 
@@ -0,0 +1,53 @@
1
+ import { NextRequest, NextResponse } from 'next/server';
2
+ import { getProductData } from '@akinon/next/data/server';
3
+
4
+ export async function GET(request: NextRequest) {
5
+ try {
6
+ const { searchParams } = new URL(request.url);
7
+ const pksParam = searchParams.get('pks');
8
+
9
+ if (!pksParam) {
10
+ return NextResponse.json(
11
+ { error: 'pks parameter required' },
12
+ { status: 400 }
13
+ );
14
+ }
15
+
16
+ const pks = pksParam.split(',').map(Number).filter(Boolean);
17
+
18
+ if (pks.length === 0) {
19
+ return NextResponse.json({ error: 'Invalid pks' }, { status: 400 });
20
+ }
21
+
22
+ const results = await Promise.all(
23
+ pks.map(async (pk) => {
24
+ try {
25
+ const { breadcrumbData } = await getProductData({ pk });
26
+
27
+ const categoryIds =
28
+ breadcrumbData
29
+ ?.map((item: any) => item.extra_context?.attributes?.category_id)
30
+ .filter(Boolean) || [];
31
+
32
+ return { pk, categoryIds };
33
+ } catch (error) {
34
+ console.error(`Error fetching product ${pk}:`, error);
35
+ return { pk, categoryIds: [] };
36
+ }
37
+ })
38
+ );
39
+
40
+ const mapping: Record<string, number[]> = {};
41
+ results.forEach(({ pk, categoryIds }) => {
42
+ mapping[String(pk)] = categoryIds;
43
+ });
44
+
45
+ return NextResponse.json(mapping);
46
+ } catch (error) {
47
+ console.error('Error in product-categories API:', error);
48
+ return NextResponse.json(
49
+ { error: 'Internal server error' },
50
+ { status: 500 }
51
+ );
52
+ }
53
+ }
@@ -518,8 +518,8 @@ CacheHandler.onCreation(async () => {
518
518
  localSetResult = { status: 'fulfilled' };
519
519
  } catch (error) {
520
520
  localSetResult = { status: 'rejected', reason: error };
521
- return localSetResult;
522
521
  }
522
+ return localSetResult;
523
523
  },
524
524
  delete: async (key, context) => {
525
525
  const vKey = versionKey(key);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@akinon/next",
3
3
  "description": "Core package for Project Zero Next",
4
- "version": "1.114.0-snapshot-ZERO-3890-20251208193442",
4
+ "version": "1.114.0-snapshot-ZERO-3890-20251209002835",
5
5
  "private": false,
6
6
  "license": "MIT",
7
7
  "bin": {
@@ -35,7 +35,7 @@
35
35
  "set-cookie-parser": "2.6.0"
36
36
  },
37
37
  "devDependencies": {
38
- "@akinon/eslint-plugin-projectzero": "1.114.0-snapshot-ZERO-3890-20251208193442",
38
+ "@akinon/eslint-plugin-projectzero": "1.114.0-snapshot-ZERO-3890-20251209002835",
39
39
  "@babel/core": "7.26.10",
40
40
  "@babel/preset-env": "7.26.9",
41
41
  "@babel/preset-typescript": "7.27.0",