diff --git a/eleventy.config.mjs b/eleventy.config.mjs
index 731a27ed0..55ab337f9 100644
--- a/eleventy.config.mjs
+++ b/eleventy.config.mjs
@@ -370,6 +370,7 @@ const vendorModules = [
export default async function (eleventyConfig) {
const isProd = process.env.NODE_ENV === 'production' || process.env.ELEVENTY_ENV === 'production'
+ const rankingEasterEgg = rankingEasterEggEnabled(isProd)
const prodOrigin = 'https://packages.sublimetext.io'
const devOrigin = process.env.DEV_ORIGIN || 'http://localhost:8080'
const siteOrigin = isProd ? prodOrigin : devOrigin
@@ -628,6 +629,7 @@ export default async function (eleventyConfig) {
prodOrigin,
devOrigin,
disableLiveLink: Boolean(process.env.DISABLE_L_LINK),
+ rankingEasterEgg,
})
// Send the full tag history so the browser can decide what is visible and
@@ -686,6 +688,15 @@ export default async function (eleventyConfig) {
}
}
+function rankingEasterEggEnabled(isProd) {
+ const override = process.env.RANKING_EASTER_EGG
+ if (typeof override === 'string') {
+ return override.trim().toLowerCase() === 'true'
+ }
+
+ return !isProd
+}
+
async function bundleJs(staticOutputDir, entries, isProd) {
if (!entries.size) {
return
diff --git a/eleventy.filters.mjs b/eleventy.filters.mjs
index ec8247587..be693f6a3 100644
--- a/eleventy.filters.mjs
+++ b/eleventy.filters.mjs
@@ -98,15 +98,15 @@ export function label_normalization_note(changes) {
return `
* ${heading}
`
}
-export function search_index_json(packages) {
+export function search_index_json(packages, options = {}) {
return JSON.stringify({
- packages: packages.map(compactSearchPackage),
+ packages: packages.map(pkg => compactSearchPackage(pkg, options)),
label_icon_aliases: labelIconAliases,
label_icon_tints: labelIconTints,
})
}
-function compactSearchPackage(pkg) {
+function compactSearchPackage(pkg, { includeMagicDetails = true } = {}) {
const row = [
pkg.name,
htmlDescription(pkg.description ?? ''),
@@ -116,11 +116,17 @@ function compactSearchPackage(pkg) {
timestamp(pkg.first_seen) || 0,
timestamp(pkg.last_modified) || 0,
pkg.magic_score ?? 0,
- compactMagicBreakdown(pkg.magic),
+ ]
+
+ if (includeMagicDetails) {
+ row.push(compactMagicBreakdown(pkg.magic))
+ }
+
+ row.push(
(pkg.platforms ?? []).join(','),
pkg.platform_statement ?? '',
(pkg.labels ?? []).join(','),
- ]
+ )
if (pkg.outdated || pkg.st3_only || pkg.removed || pkg.archived_at) {
row.push(
diff --git a/search-index.11ty.mjs b/search-index.11ty.mjs
index d040eefb6..ba86e49b6 100644
--- a/search-index.11ty.mjs
+++ b/search-index.11ty.mjs
@@ -7,7 +7,9 @@ export default class SearchIndex {
}
}
- render({ collections }) {
- return search_index_json(collections.searchable_packages)
+ render({ collections, site }) {
+ return search_index_json(collections.searchable_packages, {
+ includeMagicDetails: site.rankingEasterEgg,
+ })
}
}
diff --git a/static/package-search.js b/static/package-search.js
index f5c01a882..cc23f86ec 100644
--- a/static/package-search.js
+++ b/static/package-search.js
@@ -63,7 +63,18 @@ function expandSearchPackage(row) {
first_seen,
last_modified,
magic_score,
- magic,
+ ] = row
+
+ let offset = 8
+ const hasMagicDetails = Array.isArray(row[offset])
+ const magic = hasMagicDetails
+ ? row[offset]
+ : undefined
+ if (hasMagicDetails) {
+ offset += 1
+ }
+
+ const [
platforms,
platform_statement,
labels,
@@ -71,7 +82,7 @@ function expandSearchPackage(row) {
st3_only,
removed,
archived_at,
- ] = row
+ ] = row.slice(offset)
return {
name,
@@ -93,7 +104,11 @@ function expandSearchPackage(row) {
}
}
-function expandMagicBreakdown(values = []) {
+function expandMagicBreakdown(values) {
+ if (!Array.isArray(values)) {
+ return null
+ }
+
const [popularity, stars, freshness, longevity, recency, penalty] = values
return { popularity, stars, freshness, longevity, recency, penalty }
}