Skip to content

Commit

Permalink
feat: add profiling support
Browse files Browse the repository at this point in the history
  • Loading branch information
Kikobeats committed Jan 10, 2025
1 parent 9043b79 commit 0d091b3
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 6 deletions.
9 changes: 7 additions & 2 deletions packages/metascraper-helpers/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
'use strict'

const memoizeOne = require('memoize-one').default || require('memoize-one')
const debug = require('debug-logfmt')('metascraper:find-rule')
const condenseWhitespace = require('condense-whitespace')
const { getExtension: mimeExtension } = require('mime')
const capitalize = require('microsoft-capitalize')
Expand Down Expand Up @@ -420,14 +421,18 @@ const validator = {

const truthyTest = () => true

const findRule = async (rules, args) => {
const findRule = async (rules, args, propName) => {
let index = 0
let value

do {
const rule = rules[index++]
const test = rule.test || truthyTest
if (test(args)) value = await rule(args)
if (test(args)) {
const duration = debug.duration()
value = await rule(args)
duration(`${rule.pkgName}:${propName}:${index - 1}:${has(value)}`)
}
} while (!has(value) && index < rules.length)

return value
Expand Down
12 changes: 8 additions & 4 deletions packages/metascraper/src/get-data.js
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
'use strict'

const { map, fromPairs } = require('lodash')
const debug = require('debug-logfmt')('metascraper:get-data')
const { findRule, has } = require('@metascraper/helpers')
const { map, fromPairs } = require('lodash')

const normalizeValue = value => (has(value) ? value : null)

const getData = async ({ rules, ...props }) => {
const getData = async ({ rules, name, ...props }) => {
const data = await Promise.all(
map(rules, async ([propName, innerRules]) => {
const value = await findRule(innerRules, props)
return [propName, normalizeValue(value)]
const duration = debug.duration()
const value = await findRule(innerRules, props, propName)
const normalizedValue = normalizeValue(value)
duration(`${propName}=${normalizedValue} rules=${innerRules.length}`)
return [propName, normalizedValue]
})
)

Expand Down

0 comments on commit 0d091b3

Please sign in to comment.