@mohasinac/appkit 4.49.1 → 4.51.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.
Files changed (44) hide show
  1. package/dist/.build-stamp.json +3 -3
  2. package/dist/_internal/server/features/franchises/data.d.ts +32 -0
  3. package/dist/_internal/server/features/franchises/data.js +33 -0
  4. package/dist/_internal/server/features/franchises/index.d.ts +2 -0
  5. package/dist/_internal/server/features/franchises/index.js +2 -0
  6. package/dist/_internal/server/features/franchises/og.d.ts +31 -0
  7. package/dist/_internal/server/features/franchises/og.js +11 -0
  8. package/dist/_internal/server/features/products/list-public.d.ts +9 -0
  9. package/dist/_internal/server/features/products/list-public.js +3 -0
  10. package/dist/constants/field-names.d.ts +3 -0
  11. package/dist/constants/field-names.js +11 -0
  12. package/dist/features/categories/components/FranchiseDetailPageView.d.ts +25 -0
  13. package/dist/features/categories/components/FranchiseDetailPageView.js +43 -0
  14. package/dist/features/categories/components/FranchisesIndexView.d.ts +14 -0
  15. package/dist/features/categories/components/FranchisesIndexView.js +33 -0
  16. package/dist/features/categories/repository/categories.repository.d.ts +15 -0
  17. package/dist/features/categories/repository/categories.repository.js +23 -0
  18. package/dist/features/categories/types/index.d.ts +1 -1
  19. package/dist/features/collections/schemas/index.d.ts +2 -2
  20. package/dist/features/pre-orders/schemas/index.d.ts +2 -2
  21. package/dist/features/products/repository/products.repository.d.ts +4 -0
  22. package/dist/features/products/repository/products.repository.js +5 -0
  23. package/dist/features/products/schemas/firestore.d.ts +13 -0
  24. package/dist/index.d.ts +1 -0
  25. package/dist/index.js +3 -0
  26. package/dist/next/routing/route-map.d.ts +4 -0
  27. package/dist/next/routing/route-map.js +9 -0
  28. package/dist/seed/_helpers/category-images-generated.d.ts +21 -1
  29. package/dist/seed/_helpers/category-images-generated.js +330 -1
  30. package/dist/seed/_helpers/franchise-rows.d.ts +43 -0
  31. package/dist/seed/_helpers/franchise-rows.js +181 -0
  32. package/dist/seed/_helpers/part-colours-generated.d.ts +18 -0
  33. package/dist/seed/_helpers/part-colours-generated.js +273 -0
  34. package/dist/seed/categories-seed-data.js +13 -0
  35. package/dist/seed/index.d.ts +2 -0
  36. package/dist/seed/index.js +2 -0
  37. package/dist/seed/media-assets-seed-data.d.ts +1 -1
  38. package/dist/seed/media-assets-seed-data.js +3091 -1
  39. package/dist/seed/products-catalogue-seed-data.d.ts +4 -4
  40. package/dist/seed/products-catalogue-seed-data.js +16796 -8776
  41. package/dist/server.d.ts +1 -0
  42. package/dist/server.js +1 -0
  43. package/package.json +1 -1
  44. package/scripts/seed-cli.mjs +32 -2
@@ -0,0 +1,273 @@
1
+ /**
2
+ * GENERATED by scripts/derive-part-colours.mjs — do not edit by hand.
3
+ *
4
+ * Part glossary id -> the dominant colour MEASURED from that part's cached
5
+ * reference photograph. Not invented: the pixels are the evidence.
6
+ *
7
+ * 🛑 The wiki exposes ONE photo per part, so for a part released in several
8
+ * models this is the colour of the photographed release — exact for that one,
9
+ * indicative for the others. The MODEL half of a colourway is always exact
10
+ * (it comes from `usedBy`); this half carries that caveat. Replacing these
11
+ * with real per-release photography is the intended fix.
12
+ *
13
+ * White is excluded before counting, because the fetcher flattens transparent
14
+ * PNGs onto white and a naive dominant-colour read returns White for almost
15
+ * everything.
16
+ */
17
+ export const GENERATED_PART_COLOURS = {
18
+ "attack-ring--circle-upper": "Maroon",
19
+ "attack-ring--cross-attacker": "Navy",
20
+ "attack-ring--cross-dranzer": "Blue",
21
+ "attack-ring--cross-fang": "Brown",
22
+ "attack-ring--cross-griffon": "Teal",
23
+ "attack-ring--cross-spike": "Black",
24
+ "attack-ring--cross-spiker": "Green",
25
+ "attack-ring--cybernetic-dragon": "Black",
26
+ "attack-ring--devil-crusher": "Grey",
27
+ "attack-ring--double-horn": "Gold",
28
+ "attack-ring--double-wing": "Blue",
29
+ "attack-ring--dragon-breaker": "Navy",
30
+ "attack-ring--dragon-saucer": "Navy",
31
+ "attack-ring--eight-attacker": "Brown",
32
+ "attack-ring--eight-spike": "Silver",
33
+ "attack-ring--flame-wing": "Navy",
34
+ "attack-ring--g-upper": "Bronze",
35
+ "attack-ring--genocide-circle": "Red",
36
+ "attack-ring--gigantic-claw": "Bronze",
37
+ "attack-ring--great-dragon": "Black",
38
+ "attack-ring--hammer-tusk": "Blue",
39
+ "attack-ring--howling-leo": "Silver",
40
+ "attack-ring--jiraiya-blade": "Silver",
41
+ "attack-ring--metal-ape": "Grey",
42
+ "attack-ring--metal-attacker": "Grey",
43
+ "attack-ring--metal-defense": "Grey",
44
+ "attack-ring--metal-saucer": "Purple",
45
+ "attack-ring--mountain-hammer": "Maroon",
46
+ "attack-ring--panther-claw": "Navy",
47
+ "attack-ring--panther-head": "Maroon",
48
+ "attack-ring--penta-wing": "Navy",
49
+ "attack-ring--reverse-dragon": "Maroon",
50
+ "attack-ring--sharkrash": "Navy",
51
+ "attack-ring--shield-hammer": "Green",
52
+ "attack-ring--sonic-tiger": "Black",
53
+ "attack-ring--spike-dragon": "Brown",
54
+ "attack-ring--spiral-upper": "Navy",
55
+ "attack-ring--star-wolf": "Purple",
56
+ "attack-ring--strike-turtle": "Black",
57
+ "attack-ring--ten-spike": "Black",
58
+ "attack-ring--tiger-defenser": "Red",
59
+ "attack-ring--triangle-wing": "Navy",
60
+ "attack-ring--triple-beak": "Red",
61
+ "attack-ring--turtle-survivor": "Navy",
62
+ "attack-ring--ultimate-attacker": "Grey",
63
+ "attack-ring--upper-claw": "Black",
64
+ "attack-ring--upper-dragon": "Bronze",
65
+ "attack-ring--vanishing-moot": "Teal",
66
+ "attack-ring--war-lion": "Maroon",
67
+ "attack-ring--war-monkey": "Grey",
68
+ "attack-ring--wing-survivor": "Blue",
69
+ "attack-ring--wing-upper": "Silver",
70
+ "attack-ring--wolf-crusher": "Brown",
71
+ "bit--accel": "Navy",
72
+ "bit--disk-ball": "Gold",
73
+ "bit--flat": "Teal",
74
+ "bit--free-ball": "Yellow",
75
+ "bit--gear-ball": "Yellow",
76
+ "bit--hexa": "Maroon",
77
+ "bit--point": "Maroon",
78
+ "bit--taper": "Red",
79
+ "bit--trans-point": "Red",
80
+ "bit--vortex": "Navy",
81
+ "blade--aeropegasus": "Navy",
82
+ "blade--cobaltdragoon": "Blue",
83
+ "blade--cobaltdrake": "Blue",
84
+ "blade--crimsongaruda": "Maroon",
85
+ "blade--dranbuster": "Navy",
86
+ "blade--drandagger": "Navy",
87
+ "blade--dransword": "Black",
88
+ "blade--dranzerspiral": "Blue",
89
+ "blade--drigerslash": "Red",
90
+ "blade--ghostcircle": "Maroon",
91
+ "blade--hellshammer": "Maroon",
92
+ "blade--hellsscythe": "Black",
93
+ "blade--knightshield": "Black",
94
+ "blade--leonclaw": "Navy",
95
+ "blade--phoenixwing": "Maroon",
96
+ "blade--savior": "Blue",
97
+ "blade--sharkedge": "Navy",
98
+ "blade--silverwolf": "Grey",
99
+ "blade--tyrannobeat": "Maroon",
100
+ "blade--unicornsting": "Black",
101
+ "blade--vipertail": "Black",
102
+ "blade--wizardarrow": "Yellow",
103
+ "blade--wizardrod": "Gold",
104
+ "blade-base--customize-clutch-base": "Blue",
105
+ "blade-base--customize-grip-base": "Navy",
106
+ "blade-base--customize-metal-sharp": "Red",
107
+ "blade-base--engine-stopper-base": "Silver",
108
+ "blade-base--first-clutch-base": "Green",
109
+ "blade-base--flame-change-base": "Navy",
110
+ "blade-base--fortress-base": "Navy",
111
+ "blade-base--full-auto-clutch-base": "Brown",
112
+ "blade-base--griffolyon-base": "Grey",
113
+ "blade-base--instant-release": "Grey",
114
+ "blade-base--jumping-base": "Brown",
115
+ "blade-base--magne-flat-base": "Grey",
116
+ "blade-base--metal-change-base": "Grey",
117
+ "blade-base--metal-sharp-base": "Black",
118
+ "blade-base--sg-flat": "Red",
119
+ "blade-base--sg-flat-base": "Red",
120
+ "blade-base--sg-jumping-base-2": "Grey",
121
+ "blade-base--sg-metal-ball": "Green",
122
+ "blade-base--sg-metal-flat-2": "Purple",
123
+ "blade-base--sg-metal-flat-base": "Brown",
124
+ "blade-base--viper-metal-ball-base": "Black",
125
+ "blade-base--volcano-change-base": "Navy",
126
+ "chrome-wheel--dragoon": "White",
127
+ "disc--0": "Grey",
128
+ "disc--00": "Grey",
129
+ "disc--1": "Grey",
130
+ "disc--10": "Grey",
131
+ "disc--11": "Navy",
132
+ "disc--7": "Grey",
133
+ "disc--8": "Grey",
134
+ "disc--aquilon-q": "Grey",
135
+ "disc--around": "Maroon",
136
+ "disc--blitz": "Red",
137
+ "disc--boost": "Grey",
138
+ "disc--drake": "Navy",
139
+ "disc--force": "Grey",
140
+ "disc--karma": "Grey",
141
+ "disc--knuckle": "Grey",
142
+ "disc--legacy": "Grey",
143
+ "disc--limited": "Grey",
144
+ "disc--nexus": "Grey",
145
+ "disc--nine": "Teal",
146
+ "disc--over": "Navy",
147
+ "disc--sting": "Navy",
148
+ "disc--tapered": "Grey",
149
+ "disc--triple": "Navy",
150
+ "disc--vanguard": "Red",
151
+ "disc--vertical": "Black",
152
+ "disc--yell": "Brown",
153
+ "disc--zenith": "Pink",
154
+ "driver--atomic": "Gold",
155
+ "driver--bullet": "Maroon",
156
+ "driver--charge": "Teal",
157
+ "driver--destroy-dash": "Teal",
158
+ "driver--dimension": "Red",
159
+ "driver--dimension-dash": "Red",
160
+ "driver--drift": "Grey",
161
+ "driver--evolution-dash": "Teal",
162
+ "driver--iron": "Teal",
163
+ "driver--jaggy": "Navy",
164
+ "driver--loop": "Black",
165
+ "driver--merge": "Maroon",
166
+ "driver--mobius": "Black",
167
+ "driver--nothing": "Red",
168
+ "driver--press": "Black",
169
+ "driver--reboot": "Blue",
170
+ "driver--revolve-q": "Purple",
171
+ "driver--spiral": "Grey",
172
+ "driver--unite": "Maroon",
173
+ "driver--unite-dash": "Gold",
174
+ "driver--variable": "Teal",
175
+ "driver--variable-dash": "Navy",
176
+ "driver--xceed-x": "Bronze",
177
+ "driver--xtend": "Red",
178
+ "driver--zone-z": "Blue",
179
+ "energy-ring--4d-clear-wheel-orion": "Maroon",
180
+ "energy-ring--blaze": "Bronze",
181
+ "energy-ring--bull": "Navy",
182
+ "energy-ring--capricorn": "Green",
183
+ "energy-ring--capricorne": "Green",
184
+ "energy-ring--clear-wheel-wolf": "Navy",
185
+ "energy-ring--nemesis-x": "Yellow",
186
+ "energy-ring--sagittario": "Green",
187
+ "energy-ring--sagittario-i": "Green",
188
+ "energy-ring--striker-ii": "Maroon",
189
+ "energy-ring--wolf": "Navy",
190
+ "energy-ring--zurafa": "Black",
191
+ "engine-gear--left-engine-gear": "Grey",
192
+ "fusion-wheel--4d-metal-wheel-phantom": "Purple",
193
+ "fusion-wheel--burn": "Grey",
194
+ "fusion-wheel--earth": "Silver",
195
+ "fusion-wheel--flame": "Grey",
196
+ "fusion-wheel--forbidden": "Grey",
197
+ "fusion-wheel--metal-wheel-mercury": "Navy",
198
+ "fusion-wheel--proto": "Grey",
199
+ "fusion-wheel--rock": "Gold",
200
+ "layer--dark-deathscyther": "Black",
201
+ "layer--draciel-fortress": "Grey",
202
+ "layer--drain-fafnir": "Blue",
203
+ "layer--dranzer-flame": "Navy",
204
+ "layer--engine-gear": "Brown",
205
+ "layer--gaia-dragoon": "Purple",
206
+ "layer--genesis-valtryek-v3": "Grey",
207
+ "layer--god-valkyrie": "Blue",
208
+ "layer--kaiser-kerbeus": "Teal",
209
+ "layer--king-kerbeus-k2": "Grey",
210
+ "layer--legend-spriggan": "Pink",
211
+ "layer--maximum-garuda": "Yellow",
212
+ "layer--obelisk-odin": "Silver",
213
+ "layer--sieg-xcalibur": "Blue",
214
+ "layer--spryzen-requiem-s3": "Maroon",
215
+ "layer--storm-spriggan": "Pink",
216
+ "layer--victory-valkyrie": "Blue",
217
+ "layer--wild-wyvern": "Black",
218
+ "layer--wolborg": "Silver",
219
+ "layer--xeno-xcalibur": "Red",
220
+ "performance-tip--as": "Silver",
221
+ "performance-tip--bs": "Grey",
222
+ "performance-tip--cf": "Red",
223
+ "performance-tip--cs": "Navy",
224
+ "performance-tip--evolution": "Blue",
225
+ "performance-tip--ewd": "Gold",
226
+ "performance-tip--f": "Grey",
227
+ "performance-tip--f-d": "Gold",
228
+ "performance-tip--gf": "Black",
229
+ "performance-tip--ms": "Grey",
230
+ "performance-tip--r-f": "Navy",
231
+ "performance-tip--rb": "Grey",
232
+ "performance-tip--rf": "Bronze",
233
+ "performance-tip--sf": "Grey",
234
+ "performance-tip--tb": "Black",
235
+ "performance-tip--wb": "White",
236
+ "performance-tip--wsf": "Brown",
237
+ "ratchet--0-80": "Navy",
238
+ "ratchet--1-60": "Navy",
239
+ "ratchet--3-60": "Navy",
240
+ "ratchet--3-70": "Bronze",
241
+ "ratchet--3-80": "Green",
242
+ "ratchet--4-60": "Maroon",
243
+ "ratchet--4-70": "Silver",
244
+ "ratchet--4-80": "Gold",
245
+ "ratchet--5-60": "Black",
246
+ "ratchet--5-70": "Gold",
247
+ "ratchet--5-80": "Red",
248
+ "ratchet--9-60": "Maroon",
249
+ "running-core--flat-core": "Brown",
250
+ "running-core--grip-flat-core": "Grey",
251
+ "running-core--manual-change-core": "White",
252
+ "running-core--semi-flat-core": "Grey",
253
+ "running-core--sharp-core": "Grey",
254
+ "spin-gear--heavy-metal-core": "Brown",
255
+ "spin-gear--neo-right-sg": "Maroon",
256
+ "spin-track--135": "Grey",
257
+ "spin-track--a230": "Maroon",
258
+ "spin-track--sa165": "Brown",
259
+ "spin-track--sp230": "Grey",
260
+ "spin-track--t125": "Yellow",
261
+ "spin-track--v145": "Red",
262
+ "spin-track--w105": "Navy",
263
+ "weight-disk--circle-balance": "Grey",
264
+ "weight-disk--eight-heavy": "Grey",
265
+ "weight-disk--heavy-attack": "White",
266
+ "weight-disk--magne-weight-disk": "Grey",
267
+ "weight-disk--star-attack": "Grey",
268
+ "weight-disk--ten-balance": "White",
269
+ "weight-disk--ten-heavy": "Grey",
270
+ "weight-disk--ten-wide": "Grey",
271
+ "weight-disk--wing-attacker": "Red",
272
+ };
273
+ export const GENERATED_PART_COLOUR_COUNT = 254;
@@ -56,6 +56,7 @@ import { buildCategoryTree } from "./_helpers/category-tree.js";
56
56
  import { withCategorySearchTxt } from "./_helpers/search-txt-wrappers.js";
57
57
  import { CATEGORY_FOREST } from "./_helpers/category-forest.js";
58
58
  import { BRAND_ROW_COUNT, buildBrandRows } from "./_helpers/brand-rows.js";
59
+ import { FRANCHISE_ROW_COUNT, buildFranchiseRows } from "./_helpers/franchise-rows.js";
59
60
  import { MODEL_LEAF_COUNT } from "./_helpers/category-models.js";
60
61
  import { PART_LEAF_COUNT } from "./_helpers/category-parts.js";
61
62
  import { MARKET_BAND_LEAF_IDS } from "./_helpers/category-content.js";
@@ -195,6 +196,14 @@ const brandRows = buildBrandRows({
195
196
  createdAt: daysAgo(300),
196
197
  updatedAt: daysAgo(30),
197
198
  });
199
+ // FRANCHISE rows — what a product is FROM, where a brand is who MADE it.
200
+ // Same tier-0, outside-the-forest shape as brands. Seven of the eight are
201
+ // seeded INACTIVE on purpose; see the dead-facet rule in _helpers/franchise-rows.ts.
202
+ const franchiseRows = buildFranchiseRows({
203
+ createdBy: "user-admin-letitrip",
204
+ createdAt: daysAgo(300),
205
+ updatedAt: daysAgo(30),
206
+ });
198
207
  // P-17 — 5 bundle rows (categoryType:"bundle") grouping the Beyblade-minimal
199
208
  // standard products by generation, plus one cross-generation starter pack.
200
209
  // Every bundle references real seeded product ids (products-standard-seed-data.ts),
@@ -504,6 +513,7 @@ const allCategoryRows = [
504
513
  ...rawCategories.map((c) => ({ ancestors: [], ...c, createdByType: "admin" })),
505
514
  ...sublistingRows.map((s) => ({ ancestors: [], ...s, createdByType: "admin" })),
506
515
  ...brandRows.map((b) => ({ ancestors: [], ...b, createdByType: "admin" })),
516
+ ...franchiseRows.map((f) => ({ ancestors: [], ...f, createdByType: "admin" })),
507
517
  ...bundleRows.map((b) => ({ ancestors: [], ...b })),
508
518
  ]
509
519
  .map(withGeneratedContent)
@@ -610,6 +620,9 @@ if (tier4Rows !== expectedTier4) {
610
620
  if (brandRows.length !== BRAND_ROW_COUNT) {
611
621
  throw new Error(`category seed: ${brandRows.length} brand rows built, expected ${BRAND_ROW_COUNT}`);
612
622
  }
623
+ if (franchiseRows.length !== FRANCHISE_ROW_COUNT) {
624
+ throw new Error(`category seed: ${franchiseRows.length} franchise rows built, expected ${FRANCHISE_ROW_COUNT}`);
625
+ }
613
626
  {
614
627
  /*
615
628
  * A price band keyed on a leaf that does not exist is dead weight that READS
@@ -78,6 +78,8 @@ export { historySeedData } from "./history-seed-data";
78
78
  export { groupedListingsSeedData } from "./grouped-listings-seed-data";
79
79
  export { mediaAssetsSeedData, MEDIA_ASSET_SEED_COUNT, } from "./media-assets-seed-data";
80
80
  export { productsCatalogueSeedData, CATALOGUE_LISTING_COUNT, } from "./products-catalogue-seed-data";
81
+ export { GENERATED_PART_COLOURS, GENERATED_PART_COLOUR_COUNT, } from "./_helpers/part-colours-generated";
82
+ export { FRANCHISE_ROW_COUNT, FRANCHISE_SLUGS, FRANCHISE_BY_CATEGORY_ROOT, } from "./_helpers/franchise-rows";
81
83
  export { scammersSeedData } from "./scammers-seed-data";
82
84
  export { supportTicketsSeedData } from "./support-tickets-seed-data";
83
85
  export { testerChecklistSeedData, testerResponsesSeedData, } from "../features/tester/seed-data";
@@ -77,6 +77,8 @@ export { historySeedData } from "./history-seed-data.js";
77
77
  export { groupedListingsSeedData } from "./grouped-listings-seed-data.js";
78
78
  export { mediaAssetsSeedData, MEDIA_ASSET_SEED_COUNT, } from "./media-assets-seed-data.js";
79
79
  export { productsCatalogueSeedData, CATALOGUE_LISTING_COUNT, } from "./products-catalogue-seed-data.js";
80
+ export { GENERATED_PART_COLOURS, GENERATED_PART_COLOUR_COUNT, } from "./_helpers/part-colours-generated.js";
81
+ export { FRANCHISE_ROW_COUNT, FRANCHISE_SLUGS, FRANCHISE_BY_CATEGORY_ROOT, } from "./_helpers/franchise-rows.js";
80
82
  export { scammersSeedData } from "./scammers-seed-data.js";
81
83
  export { supportTicketsSeedData } from "./support-tickets-seed-data.js";
82
84
  // Tester checklist/response seed data lives in ../features/tester/seed-data (isolated from
@@ -19,4 +19,4 @@
19
19
  */
20
20
  import type { MediaAssetDocument } from "../features/media/repository/media-assets.repository";
21
21
  export declare const mediaAssetsSeedData: Partial<MediaAssetDocument>[];
22
- export declare const MEDIA_ASSET_SEED_COUNT = 195;
22
+ export declare const MEDIA_ASSET_SEED_COUNT = 504;