@graphext/cuery 0.2.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.
- package/README.md +18 -0
- package/esm/_dnt.shims.d.ts +6 -0
- package/esm/_dnt.shims.d.ts.map +1 -0
- package/esm/_dnt.shims.js +61 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/index.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/index.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/index.js +4 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/checks.d.ts +2 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/checks.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/checks.js +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/coerce.d.ts +18 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/coerce.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/coerce.js +17 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/compat.d.ts +51 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/compat.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/compat.js +31 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/errors.d.ts +31 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/errors.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/errors.js +48 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/external.d.ts +14 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/external.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/external.js +18 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/iso.d.ts +23 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/iso.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/iso.js +30 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/parse.d.ts +32 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/parse.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/parse.js +15 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/schemas.d.ts +674 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/schemas.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/schemas.js +1040 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/api.d.ts +296 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/api.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/api.js +925 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/checks.d.ts +279 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/checks.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/checks.js +560 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/core.d.ts +53 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/core.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/core.js +65 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/doc.d.ts +15 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/doc.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/doc.js +36 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/errors.d.ts +211 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/errors.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/errors.js +181 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/index.d.ts +15 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/index.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/index.js +14 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/json-schema.d.ts +89 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/json-schema.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/json-schema.js +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/parse.d.ts +50 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/parse.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/parse.js +93 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/regexes.d.ts +79 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/regexes.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/regexes.js +127 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/registries.d.ts +36 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/registries.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/registries.js +52 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/schemas.d.ts +1115 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/schemas.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/schemas.js +1954 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/standard-schema.d.ts +56 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/standard-schema.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/standard-schema.js +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/to-json-schema.d.ts +91 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/to-json-schema.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/to-json-schema.js +920 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/util.d.ts +198 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/util.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/util.js +600 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/versions.d.ts +6 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/versions.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/versions.js +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ar.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ar.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ar.js +116 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/az.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/az.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/az.js +115 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/be.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/be.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/be.js +164 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/bg.d.ts +6 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/bg.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/bg.js +128 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ca.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ca.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ca.js +118 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/cs.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/cs.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/cs.js +135 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/da.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/da.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/da.js +131 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/de.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/de.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/de.js +116 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/en.d.ts +6 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/en.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/en.js +117 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/eo.d.ts +6 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/eo.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/eo.js +116 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/es.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/es.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/es.js +149 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fa.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fa.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fa.js +122 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fi.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fi.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fi.js +122 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fr-CA.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fr-CA.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fr-CA.js +117 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fr.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fr.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fr.js +116 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/he.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/he.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/he.js +117 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/hu.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/hu.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/hu.js +117 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/id.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/id.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/id.js +116 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/index.d.ts +48 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/index.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/index.js +47 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/is.d.ts +6 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/is.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/is.js +117 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/it.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/it.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/it.js +117 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ja.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ja.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ja.js +115 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ka.d.ts +6 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ka.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ka.js +125 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/kh.d.ts +6 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/kh.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/kh.js +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/km.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/km.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/km.js +117 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ko.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ko.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ko.js +121 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/lt.d.ts +6 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/lt.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/lt.js +230 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/mk.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/mk.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/mk.js +118 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ms.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ms.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ms.js +116 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/nl.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/nl.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/nl.js +117 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/no.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/no.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/no.js +116 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ota.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ota.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ota.js +117 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/pl.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/pl.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/pl.js +117 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ps.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ps.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ps.js +122 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/pt.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/pt.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/pt.js +116 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ru.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ru.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ru.js +164 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/sl.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/sl.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/sl.js +117 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/sv.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/sv.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/sv.js +118 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ta.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ta.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ta.js +117 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/th.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/th.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/th.js +117 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/tr.d.ts +6 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/tr.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/tr.js +115 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ua.d.ts +6 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ua.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ua.js +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/uk.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/uk.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/uk.js +117 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ur.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ur.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ur.js +117 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/vi.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/vi.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/vi.js +116 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/yo.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/yo.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/yo.js +115 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/zh-CN.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/zh-CN.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/zh-CN.js +116 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/zh-TW.d.ts +5 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/zh-TW.d.ts.map +1 -0
- package/esm/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/zh-TW.js +117 -0
- package/esm/mod.d.ts +23 -0
- package/esm/mod.d.ts.map +1 -0
- package/esm/mod.js +22 -0
- package/esm/package.json +3 -0
- package/esm/src/api.d.ts +42 -0
- package/esm/src/api.d.ts.map +1 -0
- package/esm/src/api.js +161 -0
- package/esm/src/apis/chatgptScraper/brightdata.d.ts +3 -0
- package/esm/src/apis/chatgptScraper/brightdata.d.ts.map +1 -0
- package/esm/src/apis/chatgptScraper/brightdata.js +172 -0
- package/esm/src/apis/chatgptScraper/index.d.ts +10 -0
- package/esm/src/apis/chatgptScraper/index.d.ts.map +1 -0
- package/esm/src/apis/chatgptScraper/index.js +41 -0
- package/esm/src/apis/chatgptScraper/oxy.d.ts +3 -0
- package/esm/src/apis/chatgptScraper/oxy.d.ts.map +1 -0
- package/esm/src/apis/chatgptScraper/oxy.js +156 -0
- package/esm/src/apis/chatgptScraper/scraper.d.ts +46 -0
- package/esm/src/apis/chatgptScraper/scraper.d.ts.map +1 -0
- package/esm/src/apis/chatgptScraper/scraper.js +98 -0
- package/esm/src/apis/googleAds/apiTypes.d.ts +131 -0
- package/esm/src/apis/googleAds/apiTypes.d.ts.map +1 -0
- package/esm/src/apis/googleAds/apiTypes.js +1 -0
- package/esm/src/apis/googleAds/client.d.ts +2 -0
- package/esm/src/apis/googleAds/client.d.ts.map +1 -0
- package/esm/src/apis/googleAds/client.js +97 -0
- package/esm/src/apis/googleAds/countryResourceMap.d.ts +2 -0
- package/esm/src/apis/googleAds/countryResourceMap.d.ts.map +1 -0
- package/esm/src/apis/googleAds/countryResourceMap.js +874 -0
- package/esm/src/apis/googleAds/keywordPlanner.d.ts +64 -0
- package/esm/src/apis/googleAds/keywordPlanner.d.ts.map +1 -0
- package/esm/src/apis/googleAds/keywordPlanner.js +462 -0
- package/esm/src/apis/googleAds/languageResourceMap.d.ts +2 -0
- package/esm/src/apis/googleAds/languageResourceMap.d.ts.map +1 -0
- package/esm/src/apis/googleAds/languageResourceMap.js +208 -0
- package/esm/src/apis/hasdata/aim.d.ts +4 -0
- package/esm/src/apis/hasdata/aim.d.ts.map +1 -0
- package/esm/src/apis/hasdata/aim.js +32 -0
- package/esm/src/apis/hasdata/aio.d.ts +4 -0
- package/esm/src/apis/hasdata/aio.d.ts.map +1 -0
- package/esm/src/apis/hasdata/aio.js +42 -0
- package/esm/src/apis/hasdata/helpers.d.ts +55 -0
- package/esm/src/apis/hasdata/helpers.d.ts.map +1 -0
- package/esm/src/apis/hasdata/helpers.js +182 -0
- package/esm/src/async.d.ts +29 -0
- package/esm/src/async.d.ts.map +1 -0
- package/esm/src/async.js +109 -0
- package/esm/src/models.d.ts +18 -0
- package/esm/src/models.d.ts.map +1 -0
- package/esm/src/models.js +48 -0
- package/esm/src/openai.d.ts +17 -0
- package/esm/src/openai.d.ts.map +1 -0
- package/esm/src/openai.js +136 -0
- package/esm/src/schemas/brand.schema.d.ts +182 -0
- package/esm/src/schemas/brand.schema.d.ts.map +1 -0
- package/esm/src/schemas/brand.schema.js +49 -0
- package/esm/src/schemas/entity.schema.d.ts +14 -0
- package/esm/src/schemas/entity.schema.d.ts.map +1 -0
- package/esm/src/schemas/entity.schema.js +8 -0
- package/esm/src/schemas/funnel.schema.d.ts +94 -0
- package/esm/src/schemas/funnel.schema.d.ts.map +1 -0
- package/esm/src/schemas/funnel.schema.js +46 -0
- package/esm/src/schemas/index.d.ts +21 -0
- package/esm/src/schemas/index.d.ts.map +1 -0
- package/esm/src/schemas/index.js +13 -0
- package/esm/src/schemas/keyword.schema.d.ts +44 -0
- package/esm/src/schemas/keyword.schema.d.ts.map +1 -0
- package/esm/src/schemas/keyword.schema.js +6 -0
- package/esm/src/schemas/models.schema.d.ts +6 -0
- package/esm/src/schemas/models.schema.d.ts.map +1 -0
- package/esm/src/schemas/models.schema.js +1 -0
- package/esm/src/schemas/persona.schema.d.ts +50 -0
- package/esm/src/schemas/persona.schema.d.ts.map +1 -0
- package/esm/src/schemas/persona.schema.js +21 -0
- package/esm/src/schemas/pipeline.schema.d.ts +146 -0
- package/esm/src/schemas/pipeline.schema.d.ts.map +1 -0
- package/esm/src/schemas/pipeline.schema.js +16 -0
- package/esm/src/schemas/search.schema.d.ts +29 -0
- package/esm/src/schemas/search.schema.d.ts.map +1 -0
- package/esm/src/schemas/search.schema.js +1 -0
- package/esm/src/schemas/seedKeyword.schema.d.ts +15 -0
- package/esm/src/schemas/seedKeyword.schema.d.ts.map +1 -0
- package/esm/src/schemas/seedKeyword.schema.js +7 -0
- package/esm/src/schemas/sentiment.schema.d.ts +22 -0
- package/esm/src/schemas/sentiment.schema.d.ts.map +1 -0
- package/esm/src/schemas/sentiment.schema.js +9 -0
- package/esm/src/schemas/sources.schema.d.ts +29 -0
- package/esm/src/schemas/sources.schema.d.ts.map +1 -0
- package/esm/src/schemas/sources.schema.js +1 -0
- package/esm/src/schemas/topics.schema.d.ts +33 -0
- package/esm/src/schemas/topics.schema.d.ts.map +1 -0
- package/esm/src/schemas/topics.schema.js +14 -0
- package/esm/src/tools/brands.d.ts +55 -0
- package/esm/src/tools/brands.d.ts.map +1 -0
- package/esm/src/tools/brands.js +458 -0
- package/esm/src/tools/classifier.d.ts +17 -0
- package/esm/src/tools/classifier.d.ts.map +1 -0
- package/esm/src/tools/classifier.js +135 -0
- package/esm/src/tools/entities.d.ts +19 -0
- package/esm/src/tools/entities.d.ts.map +1 -0
- package/esm/src/tools/entities.js +80 -0
- package/esm/src/tools/funnel.d.ts +41 -0
- package/esm/src/tools/funnel.d.ts.map +1 -0
- package/esm/src/tools/funnel.js +372 -0
- package/esm/src/tools/keywords.d.ts +21 -0
- package/esm/src/tools/keywords.d.ts.map +1 -0
- package/esm/src/tools/keywords.js +172 -0
- package/esm/src/tools/personas.d.ts +3 -0
- package/esm/src/tools/personas.d.ts.map +1 -0
- package/esm/src/tools/personas.js +88 -0
- package/esm/src/tools/scorer.d.ts +14 -0
- package/esm/src/tools/scorer.d.ts.map +1 -0
- package/esm/src/tools/scorer.js +54 -0
- package/esm/src/tools/search.d.ts +24 -0
- package/esm/src/tools/search.d.ts.map +1 -0
- package/esm/src/tools/search.js +130 -0
- package/esm/src/tools/seedKeywords.d.ts +68 -0
- package/esm/src/tools/seedKeywords.d.ts.map +1 -0
- package/esm/src/tools/seedKeywords.js +214 -0
- package/esm/src/tools/sentiment.d.ts +11 -0
- package/esm/src/tools/sentiment.d.ts.map +1 -0
- package/esm/src/tools/sentiment.js +68 -0
- package/esm/src/tools/sources.d.ts +39 -0
- package/esm/src/tools/sources.d.ts.map +1 -0
- package/esm/src/tools/sources.js +263 -0
- package/esm/src/tools/topics.d.ts +74 -0
- package/esm/src/tools/topics.d.ts.map +1 -0
- package/esm/src/tools/topics.js +229 -0
- package/esm/src/tools/translate.d.ts +44 -0
- package/esm/src/tools/translate.d.ts.map +1 -0
- package/esm/src/tools/translate.js +112 -0
- package/esm/src/urls.d.ts +10 -0
- package/esm/src/urls.d.ts.map +1 -0
- package/esm/src/urls.js +49 -0
- package/esm/src/utils.d.ts +38 -0
- package/esm/src/utils.d.ts.map +1 -0
- package/esm/src/utils.js +175 -0
- package/package.json +32 -0
- package/script/_dnt.shims.d.ts +6 -0
- package/script/_dnt.shims.d.ts.map +1 -0
- package/script/_dnt.shims.js +65 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/index.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/index.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/index.js +43 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/checks.d.ts +2 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/checks.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/checks.js +32 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/coerce.d.ts +18 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/coerce.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/coerce.js +57 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/compat.d.ts +51 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/compat.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/compat.js +71 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/errors.d.ts +31 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/errors.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/errors.js +84 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/external.d.ts +14 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/external.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/external.js +80 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/iso.d.ts +23 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/iso.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/iso.js +70 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/parse.d.ts +32 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/parse.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/parse.js +51 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/schemas.d.ts +674 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/schemas.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/classic/schemas.js +1161 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/api.d.ts +296 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/api.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/api.js +1066 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/checks.d.ts +279 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/checks.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/checks.js +596 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/core.d.ts +53 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/core.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/core.js +72 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/doc.d.ts +15 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/doc.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/doc.js +40 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/errors.d.ts +211 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/errors.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/errors.js +222 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/index.d.ts +15 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/index.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/index.js +53 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/json-schema.d.ts +89 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/json-schema.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/json-schema.js +2 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/parse.d.ts +50 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/parse.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/parse.js +141 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/regexes.d.ts +79 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/regexes.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/regexes.js +136 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/registries.d.ts +36 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/registries.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/registries.js +57 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/schemas.d.ts +1115 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/schemas.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/schemas.js +1995 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/standard-schema.d.ts +56 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/standard-schema.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/standard-schema.js +2 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/to-json-schema.d.ts +91 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/to-json-schema.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/to-json-schema.js +925 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/util.d.ts +198 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/util.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/util.js +657 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/versions.d.ts +6 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/versions.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/core/versions.js +8 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ar.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ar.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ar.js +152 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/az.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/az.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/az.js +151 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/be.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/be.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/be.js +200 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/bg.d.ts +6 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/bg.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/bg.js +166 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ca.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ca.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ca.js +154 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/cs.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/cs.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/cs.js +171 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/da.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/da.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/da.js +167 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/de.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/de.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/de.js +152 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/en.d.ts +6 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/en.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/en.js +155 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/eo.d.ts +6 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/eo.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/eo.js +154 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/es.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/es.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/es.js +185 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fa.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fa.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fa.js +158 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fi.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fi.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fi.js +158 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fr-CA.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fr-CA.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fr-CA.js +153 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fr.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fr.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/fr.js +152 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/he.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/he.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/he.js +153 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/hu.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/hu.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/hu.js +153 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/id.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/id.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/id.js +152 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/index.d.ts +48 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/index.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/index.js +100 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/is.d.ts +6 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/is.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/is.js +155 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/it.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/it.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/it.js +153 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ja.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ja.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ja.js +151 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ka.d.ts +6 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ka.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ka.js +163 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/kh.d.ts +6 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/kh.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/kh.js +11 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/km.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/km.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/km.js +153 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ko.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ko.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ko.js +157 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/lt.d.ts +6 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/lt.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/lt.js +268 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/mk.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/mk.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/mk.js +154 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ms.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ms.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ms.js +152 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/nl.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/nl.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/nl.js +153 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/no.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/no.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/no.js +152 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ota.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ota.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ota.js +153 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/pl.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/pl.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/pl.js +153 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ps.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ps.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ps.js +158 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/pt.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/pt.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/pt.js +152 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ru.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ru.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ru.js +200 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/sl.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/sl.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/sl.js +153 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/sv.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/sv.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/sv.js +154 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ta.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ta.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ta.js +153 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/th.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/th.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/th.js +153 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/tr.d.ts +6 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/tr.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/tr.js +153 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ua.d.ts +6 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ua.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ua.js +11 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/uk.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/uk.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/uk.js +153 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ur.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ur.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/ur.js +153 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/vi.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/vi.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/vi.js +152 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/yo.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/yo.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/yo.js +151 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/zh-CN.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/zh-CN.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/zh-CN.js +152 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/zh-TW.d.ts +5 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/zh-TW.d.ts.map +1 -0
- package/script/deps/jsr.io/@zod/zod/4.1.12/src/v4/locales/zh-TW.js +153 -0
- package/script/mod.d.ts +23 -0
- package/script/mod.d.ts.map +1 -0
- package/script/mod.js +38 -0
- package/script/package.json +3 -0
- package/script/src/api.d.ts +42 -0
- package/script/src/api.d.ts.map +1 -0
- package/script/src/api.js +172 -0
- package/script/src/apis/chatgptScraper/brightdata.d.ts +3 -0
- package/script/src/apis/chatgptScraper/brightdata.d.ts.map +1 -0
- package/script/src/apis/chatgptScraper/brightdata.js +208 -0
- package/script/src/apis/chatgptScraper/index.d.ts +10 -0
- package/script/src/apis/chatgptScraper/index.d.ts.map +1 -0
- package/script/src/apis/chatgptScraper/index.js +81 -0
- package/script/src/apis/chatgptScraper/oxy.d.ts +3 -0
- package/script/src/apis/chatgptScraper/oxy.d.ts.map +1 -0
- package/script/src/apis/chatgptScraper/oxy.js +192 -0
- package/script/src/apis/chatgptScraper/scraper.d.ts +46 -0
- package/script/src/apis/chatgptScraper/scraper.d.ts.map +1 -0
- package/script/src/apis/chatgptScraper/scraper.js +139 -0
- package/script/src/apis/googleAds/apiTypes.d.ts +131 -0
- package/script/src/apis/googleAds/apiTypes.d.ts.map +1 -0
- package/script/src/apis/googleAds/apiTypes.js +2 -0
- package/script/src/apis/googleAds/client.d.ts +2 -0
- package/script/src/apis/googleAds/client.d.ts.map +1 -0
- package/script/src/apis/googleAds/client.js +133 -0
- package/script/src/apis/googleAds/countryResourceMap.d.ts +2 -0
- package/script/src/apis/googleAds/countryResourceMap.d.ts.map +1 -0
- package/script/src/apis/googleAds/countryResourceMap.js +877 -0
- package/script/src/apis/googleAds/keywordPlanner.d.ts +64 -0
- package/script/src/apis/googleAds/keywordPlanner.d.ts.map +1 -0
- package/script/src/apis/googleAds/keywordPlanner.js +465 -0
- package/script/src/apis/googleAds/languageResourceMap.d.ts +2 -0
- package/script/src/apis/googleAds/languageResourceMap.d.ts.map +1 -0
- package/script/src/apis/googleAds/languageResourceMap.js +211 -0
- package/script/src/apis/hasdata/aim.d.ts +4 -0
- package/script/src/apis/hasdata/aim.d.ts.map +1 -0
- package/script/src/apis/hasdata/aim.js +36 -0
- package/script/src/apis/hasdata/aio.d.ts +4 -0
- package/script/src/apis/hasdata/aio.d.ts.map +1 -0
- package/script/src/apis/hasdata/aio.js +46 -0
- package/script/src/apis/hasdata/helpers.d.ts +55 -0
- package/script/src/apis/hasdata/helpers.d.ts.map +1 -0
- package/script/src/apis/hasdata/helpers.js +222 -0
- package/script/src/async.d.ts +29 -0
- package/script/src/async.d.ts.map +1 -0
- package/script/src/async.js +148 -0
- package/script/src/models.d.ts +18 -0
- package/script/src/models.d.ts.map +1 -0
- package/script/src/models.js +52 -0
- package/script/src/openai.d.ts +17 -0
- package/script/src/openai.d.ts.map +1 -0
- package/script/src/openai.js +175 -0
- package/script/src/schemas/brand.schema.d.ts +182 -0
- package/script/src/schemas/brand.schema.d.ts.map +1 -0
- package/script/src/schemas/brand.schema.js +52 -0
- package/script/src/schemas/entity.schema.d.ts +14 -0
- package/script/src/schemas/entity.schema.d.ts.map +1 -0
- package/script/src/schemas/entity.schema.js +11 -0
- package/script/src/schemas/funnel.schema.d.ts +94 -0
- package/script/src/schemas/funnel.schema.d.ts.map +1 -0
- package/script/src/schemas/funnel.schema.js +49 -0
- package/script/src/schemas/index.d.ts +21 -0
- package/script/src/schemas/index.d.ts.map +1 -0
- package/script/src/schemas/index.js +14 -0
- package/script/src/schemas/keyword.schema.d.ts +44 -0
- package/script/src/schemas/keyword.schema.d.ts.map +1 -0
- package/script/src/schemas/keyword.schema.js +9 -0
- package/script/src/schemas/models.schema.d.ts +6 -0
- package/script/src/schemas/models.schema.d.ts.map +1 -0
- package/script/src/schemas/models.schema.js +2 -0
- package/script/src/schemas/persona.schema.d.ts +50 -0
- package/script/src/schemas/persona.schema.d.ts.map +1 -0
- package/script/src/schemas/persona.schema.js +24 -0
- package/script/src/schemas/pipeline.schema.d.ts +146 -0
- package/script/src/schemas/pipeline.schema.d.ts.map +1 -0
- package/script/src/schemas/pipeline.schema.js +17 -0
- package/script/src/schemas/search.schema.d.ts +29 -0
- package/script/src/schemas/search.schema.d.ts.map +1 -0
- package/script/src/schemas/search.schema.js +2 -0
- package/script/src/schemas/seedKeyword.schema.d.ts +15 -0
- package/script/src/schemas/seedKeyword.schema.d.ts.map +1 -0
- package/script/src/schemas/seedKeyword.schema.js +8 -0
- package/script/src/schemas/sentiment.schema.d.ts +22 -0
- package/script/src/schemas/sentiment.schema.d.ts.map +1 -0
- package/script/src/schemas/sentiment.schema.js +12 -0
- package/script/src/schemas/sources.schema.d.ts +29 -0
- package/script/src/schemas/sources.schema.d.ts.map +1 -0
- package/script/src/schemas/sources.schema.js +2 -0
- package/script/src/schemas/topics.schema.d.ts +33 -0
- package/script/src/schemas/topics.schema.d.ts.map +1 -0
- package/script/src/schemas/topics.schema.js +17 -0
- package/script/src/tools/brands.d.ts +55 -0
- package/script/src/tools/brands.d.ts.map +1 -0
- package/script/src/tools/brands.js +470 -0
- package/script/src/tools/classifier.d.ts +17 -0
- package/script/src/tools/classifier.d.ts.map +1 -0
- package/script/src/tools/classifier.js +141 -0
- package/script/src/tools/entities.d.ts +19 -0
- package/script/src/tools/entities.d.ts.map +1 -0
- package/script/src/tools/entities.js +88 -0
- package/script/src/tools/funnel.d.ts +41 -0
- package/script/src/tools/funnel.d.ts.map +1 -0
- package/script/src/tools/funnel.js +381 -0
- package/script/src/tools/keywords.d.ts +21 -0
- package/script/src/tools/keywords.d.ts.map +1 -0
- package/script/src/tools/keywords.js +190 -0
- package/script/src/tools/personas.d.ts +3 -0
- package/script/src/tools/personas.d.ts.map +1 -0
- package/script/src/tools/personas.js +91 -0
- package/script/src/tools/scorer.d.ts +14 -0
- package/script/src/tools/scorer.d.ts.map +1 -0
- package/script/src/tools/scorer.js +59 -0
- package/script/src/tools/search.d.ts +24 -0
- package/script/src/tools/search.d.ts.map +1 -0
- package/script/src/tools/search.js +135 -0
- package/script/src/tools/seedKeywords.d.ts +68 -0
- package/script/src/tools/seedKeywords.d.ts.map +1 -0
- package/script/src/tools/seedKeywords.js +220 -0
- package/script/src/tools/sentiment.d.ts +11 -0
- package/script/src/tools/sentiment.d.ts.map +1 -0
- package/script/src/tools/sentiment.js +72 -0
- package/script/src/tools/sources.d.ts +39 -0
- package/script/src/tools/sources.d.ts.map +1 -0
- package/script/src/tools/sources.js +273 -0
- package/script/src/tools/topics.d.ts +74 -0
- package/script/src/tools/topics.d.ts.map +1 -0
- package/script/src/tools/topics.js +237 -0
- package/script/src/tools/translate.d.ts +44 -0
- package/script/src/tools/translate.d.ts.map +1 -0
- package/script/src/tools/translate.js +118 -0
- package/script/src/urls.d.ts +10 -0
- package/script/src/urls.d.ts.map +1 -0
- package/script/src/urls.js +53 -0
- package/script/src/utils.d.ts +38 -0
- package/script/src/utils.d.ts.map +1 -0
- package/script/src/utils.js +183 -0
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generatePersonas = generatePersonas;
|
|
4
|
+
const openai_js_1 = require("../openai.js");
|
|
5
|
+
const brands_js_1 = require("./brands.js");
|
|
6
|
+
const persona_schema_js_1 = require("../schemas/persona.schema.js");
|
|
7
|
+
const utils_js_1 = require("../utils.js");
|
|
8
|
+
const PROMPT = (0, utils_js_1.dedent)(`
|
|
9
|
+
You're a marketing expert identifying typical profiles/personas of people searching
|
|
10
|
+
for brands, products or services. Generate {count} detailed customer personas for a brand
|
|
11
|
+
in the {sector} sector targeting the {market} market.
|
|
12
|
+
|
|
13
|
+
For context, the brand being analyzed is{brand_context}. Use this brand as context to better understand
|
|
14
|
+
the specific niche, positioning, and target audience within the {sector} sector. However, you MUST NOT
|
|
15
|
+
mention the brand name{brand_exclusion} anywhere in the persona names or descriptions. The personas should be
|
|
16
|
+
generic profiles that could apply to similar brands in the same space.
|
|
17
|
+
|
|
18
|
+
Each persona should include:
|
|
19
|
+
- name: A short and catchy name, such as "Tech-Savvy Creative Director", "Gaming Industry Veteran",
|
|
20
|
+
"Eco-Conscious Millennial", "Budget-Conscious Family Planner", or "Luxury Lifestyle Enthusiast".
|
|
21
|
+
- description: A brief description of the persona's characteristics, needs, and behaviors.
|
|
22
|
+
- keywordSeeds: A list of 5-10 keyword seed phrases in language {language} that this persona would typically search for
|
|
23
|
+
when looking for products/services in this space. These should be realistic search queries that
|
|
24
|
+
reflect the persona's language ({language}), intent, and level of expertise. Include a mix of informational
|
|
25
|
+
and transactional queries. Keywords should be broad (1-3 words) suitable for Google Keyword Planner
|
|
26
|
+
seed expansion. Do NOT include the brand name {brand_exclusion} in these keywords.
|
|
27
|
+
|
|
28
|
+
Make sure you're answer is in the language "{userLanguage} except keywordSeeds, that should maintain the original language {language}".
|
|
29
|
+
|
|
30
|
+
Return the personas as a list of JSON objects.
|
|
31
|
+
|
|
32
|
+
Also provide an "explanation" field with a brief summary (2-3 sentences) explaining the reasoning behind
|
|
33
|
+
the personas you generated: why these profiles are relevant for this sector and market, and what key
|
|
34
|
+
customer segments they represent.
|
|
35
|
+
|
|
36
|
+
{instructions}
|
|
37
|
+
|
|
38
|
+
{currentPersonasInfo}
|
|
39
|
+
`);
|
|
40
|
+
const CURRENT_DATA_CLAUSE = (0, utils_js_1.dedent)(`
|
|
41
|
+
# Current Personas Information
|
|
42
|
+
|
|
43
|
+
The following is the current information the user has about personas for the brand(s).
|
|
44
|
+
|
|
45
|
+
{currentData}
|
|
46
|
+
|
|
47
|
+
IMPORTANT: Unless the instructions explicitly specify to modify, replace, add, or remove competitors
|
|
48
|
+
from this list, you MUST return at least all the same competitors that are already present in the
|
|
49
|
+
current data. If no modification instructions are provided, maintain the existing list and only add
|
|
50
|
+
new competitors if they are relevant.
|
|
51
|
+
`);
|
|
52
|
+
async function generatePersonas({ sector, market, brand, brandDomain, language = 'english', userLanguage = null, count = 5, model = 'gpt-4.1', briefing, instructions, personas = null }) {
|
|
53
|
+
if (!brand && !brandDomain) {
|
|
54
|
+
throw new Error('Either brand or brandDomain must be provided');
|
|
55
|
+
}
|
|
56
|
+
const brandContext = (0, brands_js_1.buildBrandContext)({
|
|
57
|
+
brand,
|
|
58
|
+
brandDomain,
|
|
59
|
+
sector,
|
|
60
|
+
market,
|
|
61
|
+
briefing
|
|
62
|
+
});
|
|
63
|
+
let brandExclusion;
|
|
64
|
+
if (brandDomain) {
|
|
65
|
+
if (brand) {
|
|
66
|
+
brandExclusion = ` "${brand}" or the domain`;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
brandExclusion = ' or domain';
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
brandExclusion = ` "${brand}"`;
|
|
74
|
+
}
|
|
75
|
+
const currentData = personas && personas.length > 0 ? CURRENT_DATA_CLAUSE.replace('{currentData}', JSON.stringify({ personas }, null, 2)) : null;
|
|
76
|
+
const content = PROMPT
|
|
77
|
+
.replace('{count}', count.toString())
|
|
78
|
+
.replaceAll('{sector}', sector)
|
|
79
|
+
.replaceAll('{market}', market)
|
|
80
|
+
.replaceAll('{brand_context}', brandContext)
|
|
81
|
+
.replaceAll('{brand_exclusion}', brandExclusion)
|
|
82
|
+
.replaceAll('{language}', language)
|
|
83
|
+
.replaceAll('{userLanguage}', userLanguage ?? language)
|
|
84
|
+
.replaceAll('{instructions}', instructions || '')
|
|
85
|
+
.replaceAll('{currentPersonasInfo}', currentData || '');
|
|
86
|
+
const { parsed } = await (0, openai_js_1.askOpenAISafe)(content, model, persona_schema_js_1.PersonasResponseSchema);
|
|
87
|
+
if (!parsed) {
|
|
88
|
+
throw new Error('Failed to parse response from OpenAI');
|
|
89
|
+
}
|
|
90
|
+
return parsed;
|
|
91
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { z } from '../../deps/jsr.io/@zod/zod/4.1.12/src/index.js';
|
|
2
|
+
export type ScoreSchema = z.ZodObject<{
|
|
3
|
+
value: z.ZodNumber;
|
|
4
|
+
}>;
|
|
5
|
+
/**
|
|
6
|
+
* Dynamically create a Zod schema for a score based on provided parameters.
|
|
7
|
+
*/
|
|
8
|
+
export declare function makeScoreSchema(type: 'integer' | 'number', min: number, max: number, description: string): ScoreSchema;
|
|
9
|
+
/**
|
|
10
|
+
* Assumes only remaining placeholder in prompt is {record}
|
|
11
|
+
*/
|
|
12
|
+
export declare function score(record: Record<string, unknown>, prompt: string, schema: ScoreSchema, model?: string): Promise<number>;
|
|
13
|
+
export declare function scoreBatch(records: Array<Record<string, unknown>>, name: string, description: string, type: 'integer' | 'number', min: number, max: number, model?: string, maxConcurrency?: number): Promise<Array<number>>;
|
|
14
|
+
//# sourceMappingURL=scorer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scorer.d.ts","sourceRoot":"","sources":["../../../src/src/tools/scorer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,gDAAgD,CAAC;AAqBnE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,SAAS,CAAC;IAAE,KAAK,EAAE,CAAC,CAAC,SAAS,CAAA;CAAE,CAAC,CAAC;AAE9D;;GAEG;AACH,wBAAgB,eAAe,CAC9B,IAAI,EAAE,SAAS,GAAG,QAAQ,EAC1B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GACjB,WAAW,CAWb;AAED;;GAEG;AACH,wBAAsB,KAAK,CAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EACnB,KAAK,GAAE,MAAuB,GAC5B,OAAO,CAAC,MAAM,CAAC,CAajB;AAED,wBAAsB,UAAU,CAC/B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACvC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,SAAS,GAAG,QAAQ,EAC1B,GAAG,EAAE,MAAM,EACX,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,MAAuB,EAC9B,cAAc,GAAE,MAAY,GAC1B,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAcxB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeScoreSchema = makeScoreSchema;
|
|
4
|
+
exports.score = score;
|
|
5
|
+
exports.scoreBatch = scoreBatch;
|
|
6
|
+
const index_js_1 = require("../../deps/jsr.io/@zod/zod/4.1.12/src/index.js");
|
|
7
|
+
const async_js_1 = require("../async.js");
|
|
8
|
+
const openai_js_1 = require("../openai.js");
|
|
9
|
+
const utils_js_1 = require("../utils.js");
|
|
10
|
+
const PROMPT = (0, utils_js_1.dedent)(`
|
|
11
|
+
# Instructions
|
|
12
|
+
|
|
13
|
+
Assign a {name} ({type} score between {min} and {max}) to the data record below.
|
|
14
|
+
|
|
15
|
+
Score description: {description}
|
|
16
|
+
|
|
17
|
+
Make sure to consider all the attributes of the data record, and assign the score
|
|
18
|
+
based on the content of the attributes.
|
|
19
|
+
|
|
20
|
+
# Data Record
|
|
21
|
+
|
|
22
|
+
{record}
|
|
23
|
+
`);
|
|
24
|
+
/**
|
|
25
|
+
* Dynamically create a Zod schema for a score based on provided parameters.
|
|
26
|
+
*/
|
|
27
|
+
function makeScoreSchema(type, min, max, description) {
|
|
28
|
+
let schema;
|
|
29
|
+
if (type === 'integer') {
|
|
30
|
+
schema = index_js_1.z.number().int().min(min).max(max).describe(description);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
schema = index_js_1.z.number().min(min).max(max).describe(description);
|
|
34
|
+
}
|
|
35
|
+
return index_js_1.z.object({
|
|
36
|
+
value: schema
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Assumes only remaining placeholder in prompt is {record}
|
|
41
|
+
*/
|
|
42
|
+
async function score(record, prompt, schema, model = 'gpt-4.1-mini') {
|
|
43
|
+
const renderedPrompt = prompt.replace('record', JSON.stringify(record, null, 2));
|
|
44
|
+
const response = await (0, openai_js_1.askOpenAISafe)(renderedPrompt, model, schema);
|
|
45
|
+
if (response.parsed == null) {
|
|
46
|
+
throw new Error('Failed to parse score from OpenAI response');
|
|
47
|
+
}
|
|
48
|
+
return response.parsed.value;
|
|
49
|
+
}
|
|
50
|
+
async function scoreBatch(records, name, description, type, min, max, model = 'gpt-4.1-mini', maxConcurrency = 100) {
|
|
51
|
+
const schema = makeScoreSchema(type, min, max, description);
|
|
52
|
+
const prompt = PROMPT
|
|
53
|
+
.replace('{name}', name)
|
|
54
|
+
.replace('{type}', type)
|
|
55
|
+
.replace('{min}', min.toString())
|
|
56
|
+
.replace('{max}', max.toString())
|
|
57
|
+
.replace('{description}', description);
|
|
58
|
+
return (0, async_js_1.mapParallel)(records, maxConcurrency, (record) => score(record, prompt, schema, model));
|
|
59
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { BatchSearchOptions, FormattedSearchOptions, SearchOptions, SearchResult } from '../schemas/search.schema.js';
|
|
2
|
+
export type { SearchResult } from '../schemas/search.schema.js';
|
|
3
|
+
/**
|
|
4
|
+
* Call OpenAI Responses API with Web Search enabled (async).
|
|
5
|
+
*
|
|
6
|
+
* API Docs:
|
|
7
|
+
* - https://platform.openai.com/docs/guides/tools-web-search?api-mode=responses
|
|
8
|
+
*/
|
|
9
|
+
export declare function searchOpenAI({ prompt, model, useSearch, countryISOCode, contextSize, reasoningEffort, searchTool }: SearchOptions): Promise<SearchResult>;
|
|
10
|
+
/**
|
|
11
|
+
* Perform a web search using searchOpenAI and return structured response.
|
|
12
|
+
* The OpenAI API doesn't currently allow both web search tool and response format in the same call.
|
|
13
|
+
*
|
|
14
|
+
* This function:
|
|
15
|
+
* 1. Performs a web search using searchOpenAI
|
|
16
|
+
* 2. Formats the search results using a template
|
|
17
|
+
* 3. Sends the formatted results to OpenAI with a Zod schema to extract structured information
|
|
18
|
+
*/
|
|
19
|
+
export declare function searchWithFormat<T>({ prompt, model, responseSchema, useSearch, countryISOCode, contextSize, reasoningEffort }: FormattedSearchOptions<T>): Promise<T>;
|
|
20
|
+
/**
|
|
21
|
+
* Performs web search for multiple prompts concurrently while preserving order.
|
|
22
|
+
*/
|
|
23
|
+
export declare function searchBatch({ prompts, model, useSearch, countryISOCode, contextSize, reasoningEffort, maxConcurrency }: BatchSearchOptions): Promise<Array<SearchResult>>;
|
|
24
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/src/tools/search.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAK3H,YAAY,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,EAClC,MAAM,EACN,KAAsB,EACtB,SAAgB,EAChB,cAAqB,EACrB,WAAmB,EACnB,eAAuB,EACvB,UAAyB,EACzB,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAqBvC;AAqED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,CAAC,EAAE,EACzC,MAAM,EACN,KAAK,EACL,cAAc,EACd,SAAgB,EAChB,cAAqB,EACrB,WAAsB,EACtB,eAAuB,EACvB,EAAE,sBAAsB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CA0BxC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,EAC3B,OAAO,EACP,KAAsB,EACtB,SAAgB,EAChB,cAAqB,EACrB,WAAsB,EACtB,eAAuB,EACvB,cAAoB,EACpB,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAanD"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.searchOpenAI = searchOpenAI;
|
|
4
|
+
exports.searchWithFormat = searchWithFormat;
|
|
5
|
+
exports.searchBatch = searchBatch;
|
|
6
|
+
const async_js_1 = require("../async.js");
|
|
7
|
+
const openai_js_1 = require("../openai.js");
|
|
8
|
+
const urls_js_1 = require("../urls.js");
|
|
9
|
+
const utils_js_1 = require("../utils.js");
|
|
10
|
+
/**
|
|
11
|
+
* Call OpenAI Responses API with Web Search enabled (async).
|
|
12
|
+
*
|
|
13
|
+
* API Docs:
|
|
14
|
+
* - https://platform.openai.com/docs/guides/tools-web-search?api-mode=responses
|
|
15
|
+
*/
|
|
16
|
+
async function searchOpenAI({ prompt, model = 'gpt-4.1-mini', useSearch = true, countryISOCode = null, contextSize = 'low', reasoningEffort = 'low', searchTool = 'web_search' }) {
|
|
17
|
+
const params = {};
|
|
18
|
+
if (model.includes('-5')) {
|
|
19
|
+
params.reasoning = { effort: reasoningEffort };
|
|
20
|
+
}
|
|
21
|
+
if (useSearch) {
|
|
22
|
+
params.tools = [{
|
|
23
|
+
type: searchTool,
|
|
24
|
+
search_context_size: contextSize,
|
|
25
|
+
...(countryISOCode ? { user_location: { type: 'approximate', country: countryISOCode } } : {})
|
|
26
|
+
}];
|
|
27
|
+
params.tool_choice = 'required';
|
|
28
|
+
}
|
|
29
|
+
const { output } = await (0, openai_js_1.askOpenAISafe)(prompt, model, undefined, params);
|
|
30
|
+
if (!output) {
|
|
31
|
+
throw new Error('No output from OpenAI');
|
|
32
|
+
}
|
|
33
|
+
return validateOpenAI(output);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Convert a raw web search response into a SearchResult instance.
|
|
37
|
+
*/
|
|
38
|
+
function validateOpenAI(response) {
|
|
39
|
+
let answer = '';
|
|
40
|
+
let sources = [];
|
|
41
|
+
// Filter out reasoning elements and find relevant elements
|
|
42
|
+
const relevantElements = response.filter(item => item.type !== 'reasoning');
|
|
43
|
+
const messageElement = relevantElements.find(item => item.type === 'message');
|
|
44
|
+
const hasWebSearch = relevantElements.some(item => item.type === 'web_search_call');
|
|
45
|
+
if (!messageElement) {
|
|
46
|
+
throw new Error('No message element found in response');
|
|
47
|
+
}
|
|
48
|
+
if (messageElement.type !== 'message') {
|
|
49
|
+
throw new Error('Message element must be of type "message"');
|
|
50
|
+
}
|
|
51
|
+
const content = messageElement.content?.[0];
|
|
52
|
+
if (!content) {
|
|
53
|
+
throw new Error('Message element has no content');
|
|
54
|
+
}
|
|
55
|
+
if (content.type !== 'output_text') {
|
|
56
|
+
throw new Error(`Content must be of type "output_text", got "${content.type}"`);
|
|
57
|
+
}
|
|
58
|
+
answer = content.text;
|
|
59
|
+
// Extract sources from annotations if web search was used
|
|
60
|
+
if (hasWebSearch && content.annotations) {
|
|
61
|
+
sources = content.annotations
|
|
62
|
+
.filter(ann => ann.type === 'url_citation')
|
|
63
|
+
.map(ann => ({
|
|
64
|
+
title: ann.title,
|
|
65
|
+
url: ann.url,
|
|
66
|
+
domain: (0, urls_js_1.extractDomain)(ann.url)
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
return {
|
|
70
|
+
answer,
|
|
71
|
+
sources
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
const FORMATTED_SEARCH_PROMPT = (0, utils_js_1.dedent)(`
|
|
75
|
+
Based on the following search results, please format the information according
|
|
76
|
+
to the requested structure:
|
|
77
|
+
|
|
78
|
+
# Search Query
|
|
79
|
+
|
|
80
|
+
{prompt}
|
|
81
|
+
|
|
82
|
+
# Search Results
|
|
83
|
+
|
|
84
|
+
{answer}
|
|
85
|
+
|
|
86
|
+
# Sources
|
|
87
|
+
|
|
88
|
+
{sources}
|
|
89
|
+
|
|
90
|
+
Please extract and format the relevant information from these search results as a JSON object.
|
|
91
|
+
`);
|
|
92
|
+
/**
|
|
93
|
+
* Perform a web search using searchOpenAI and return structured response.
|
|
94
|
+
* The OpenAI API doesn't currently allow both web search tool and response format in the same call.
|
|
95
|
+
*
|
|
96
|
+
* This function:
|
|
97
|
+
* 1. Performs a web search using searchOpenAI
|
|
98
|
+
* 2. Formats the search results using a template
|
|
99
|
+
* 3. Sends the formatted results to OpenAI with a Zod schema to extract structured information
|
|
100
|
+
*/
|
|
101
|
+
async function searchWithFormat({ prompt, model, responseSchema, useSearch = true, countryISOCode = null, contextSize = 'medium', reasoningEffort = 'low' }) {
|
|
102
|
+
const searchResult = await searchOpenAI({
|
|
103
|
+
prompt,
|
|
104
|
+
model,
|
|
105
|
+
useSearch,
|
|
106
|
+
countryISOCode,
|
|
107
|
+
contextSize,
|
|
108
|
+
reasoningEffort
|
|
109
|
+
});
|
|
110
|
+
const sources = searchResult.sources
|
|
111
|
+
.map((source) => `- ${source.title}: ${source.url}`)
|
|
112
|
+
.join('\n');
|
|
113
|
+
const formattedPrompt = FORMATTED_SEARCH_PROMPT
|
|
114
|
+
.replace('{prompt}', prompt)
|
|
115
|
+
.replace('{answer}', searchResult.answer)
|
|
116
|
+
.replace('{sources}', sources);
|
|
117
|
+
const { parsed } = await (0, openai_js_1.askOpenAISafe)(formattedPrompt, 'gpt-4.1-mini', responseSchema);
|
|
118
|
+
if (!parsed) {
|
|
119
|
+
throw new Error('Failed to parse structured response from OpenAI');
|
|
120
|
+
}
|
|
121
|
+
return parsed;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Performs web search for multiple prompts concurrently while preserving order.
|
|
125
|
+
*/
|
|
126
|
+
function searchBatch({ prompts, model = 'gpt-4.1-mini', useSearch = true, countryISOCode = null, contextSize = 'medium', reasoningEffort = 'low', maxConcurrency = 100 }) {
|
|
127
|
+
return (0, async_js_1.mapParallel)(prompts, maxConcurrency, prompt => searchOpenAI({
|
|
128
|
+
prompt,
|
|
129
|
+
model,
|
|
130
|
+
useSearch,
|
|
131
|
+
countryISOCode: countryISOCode,
|
|
132
|
+
contextSize: contextSize,
|
|
133
|
+
reasoningEffort: reasoningEffort
|
|
134
|
+
}));
|
|
135
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Seed Keyword Functions
|
|
3
|
+
*
|
|
4
|
+
* Pure functions for collecting and grouping seed keywords.
|
|
5
|
+
* No external dependencies - safe to import in both frontend and backend.
|
|
6
|
+
*/
|
|
7
|
+
export type { SeedKeyword, SeedKeywordSource } from '../schemas/seedKeyword.schema.js';
|
|
8
|
+
import type { SeedKeyword } from '../schemas/seedKeyword.schema.js';
|
|
9
|
+
interface PortfolioItemLike {
|
|
10
|
+
name: string;
|
|
11
|
+
keywordSeeds?: Array<string>;
|
|
12
|
+
}
|
|
13
|
+
interface PersonaLike {
|
|
14
|
+
name: string;
|
|
15
|
+
keywordSeeds?: Array<string>;
|
|
16
|
+
}
|
|
17
|
+
interface FunnelCategoryLike {
|
|
18
|
+
name: string;
|
|
19
|
+
keywordSeeds?: Array<string>;
|
|
20
|
+
}
|
|
21
|
+
interface FunnelStageLike {
|
|
22
|
+
stage: string;
|
|
23
|
+
categories?: Array<FunnelCategoryLike>;
|
|
24
|
+
}
|
|
25
|
+
interface CompetitorLike {
|
|
26
|
+
name: string;
|
|
27
|
+
portfolio?: Array<PortfolioItemLike>;
|
|
28
|
+
}
|
|
29
|
+
export interface CollectSeedKeywordsParams {
|
|
30
|
+
brandPortfolio?: Array<PortfolioItemLike>;
|
|
31
|
+
personas?: Array<PersonaLike>;
|
|
32
|
+
funnelStages?: Array<FunnelStageLike>;
|
|
33
|
+
competitors?: Array<CompetitorLike>;
|
|
34
|
+
customKeywords?: Array<string>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Collects seed keywords from all sources and creates SeedKeyword objects
|
|
38
|
+
* with proper metadata (id, source, sourceId, sourceName).
|
|
39
|
+
*/
|
|
40
|
+
export declare function collectSeedKeywords({ brandPortfolio, personas, funnelStages, competitors, customKeywords }: CollectSeedKeywordsParams): Array<SeedKeyword>;
|
|
41
|
+
/**
|
|
42
|
+
* Groups seed keywords by their source, maintaining order within each source.
|
|
43
|
+
* Keywords from the same portfolio item, competitor product, or funnel category
|
|
44
|
+
* are grouped together.
|
|
45
|
+
*
|
|
46
|
+
* @param seedKeywords - Flat array of seed keywords
|
|
47
|
+
* @param generateIdeasFromSeeds - When true, returns grouped keywords for idea generation.
|
|
48
|
+
* When false, returns all keywords flattened into a single group.
|
|
49
|
+
* @returns Array of grouped keywords (arrays for same-source groups, single items for personas/custom)
|
|
50
|
+
*/
|
|
51
|
+
export declare function groupSeedKeywords(seedKeywords: Array<SeedKeyword>, generateIdeasFromSeeds?: boolean): Array<Array<SeedKeyword> | SeedKeyword>;
|
|
52
|
+
/**
|
|
53
|
+
* Groups seed keywords and extracts just the keyword strings.
|
|
54
|
+
* Convenience wrapper around groupSeedKeywords for cases where
|
|
55
|
+
* only the keyword text is needed (not the full metadata).
|
|
56
|
+
*/
|
|
57
|
+
export declare function groupKeywordStrings(seedKeywords: Array<SeedKeyword>, generateIdeasFromSeeds?: boolean): Array<Array<string> | string>;
|
|
58
|
+
/**
|
|
59
|
+
* Collects and groups seed keywords in one step, returning only keyword strings.
|
|
60
|
+
* This is a convenience function for pipelines that need grouped keyword strings
|
|
61
|
+
* without the full SeedKeyword metadata.
|
|
62
|
+
*
|
|
63
|
+
* @param params - Same parameters as collectSeedKeywords
|
|
64
|
+
* @param generateIdeasFromSeeds - When true, returns grouped keywords. When false, returns flat.
|
|
65
|
+
* @returns Grouped keyword strings (arrays for same-source groups, single strings otherwise)
|
|
66
|
+
*/
|
|
67
|
+
export declare function collectAndGroupKeywordStrings(params: CollectSeedKeywordsParams, generateIdeasFromSeeds?: boolean): Array<Array<string> | string>;
|
|
68
|
+
//# sourceMappingURL=seedKeywords.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seedKeywords.d.ts","sourceRoot":"","sources":["../../../src/src/tools/seedKeywords.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAGvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAOpE,UAAU,iBAAiB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,UAAU,WAAW;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,UAAU,kBAAkB;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,UAAU,eAAe;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;CACvC;AAED,UAAU,cAAc;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;CACrC;AAMD,MAAM,WAAW,yBAAyB;IACzC,cAAc,CAAC,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC1C,QAAQ,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC9B,YAAY,CAAC,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IACpC,cAAc,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EACnC,cAAc,EACd,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,cAAc,EACd,EAAE,yBAAyB,GAAG,KAAK,CAAC,WAAW,CAAC,CA+EhD;AAcD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAChC,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,EAChC,sBAAsB,GAAE,OAAc,GACpC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,CA8FzC;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAClC,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,EAChC,sBAAsB,GAAE,OAAc,GACpC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAS/B;AAED;;;;;;;;GAQG;AACH,wBAAgB,6BAA6B,CAC5C,MAAM,EAAE,yBAAyB,EACjC,sBAAsB,GAAE,OAAc,GACpC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,CAG/B"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Seed Keyword Functions
|
|
4
|
+
*
|
|
5
|
+
* Pure functions for collecting and grouping seed keywords.
|
|
6
|
+
* No external dependencies - safe to import in both frontend and backend.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.collectSeedKeywords = collectSeedKeywords;
|
|
10
|
+
exports.groupSeedKeywords = groupSeedKeywords;
|
|
11
|
+
exports.groupKeywordStrings = groupKeywordStrings;
|
|
12
|
+
exports.collectAndGroupKeywordStrings = collectAndGroupKeywordStrings;
|
|
13
|
+
/**
|
|
14
|
+
* Collects seed keywords from all sources and creates SeedKeyword objects
|
|
15
|
+
* with proper metadata (id, source, sourceId, sourceName).
|
|
16
|
+
*/
|
|
17
|
+
function collectSeedKeywords({ brandPortfolio, personas, funnelStages, competitors, customKeywords }) {
|
|
18
|
+
const keywords = [];
|
|
19
|
+
// Brand portfolio keywords
|
|
20
|
+
brandPortfolio?.forEach((portfolioItem) => {
|
|
21
|
+
if (portfolioItem.keywordSeeds && portfolioItem.keywordSeeds.length > 0) {
|
|
22
|
+
portfolioItem.keywordSeeds.forEach((keyword) => {
|
|
23
|
+
keywords.push({
|
|
24
|
+
id: `brand-portfolio-${portfolioItem.name}-${keyword}`,
|
|
25
|
+
keyword,
|
|
26
|
+
source: 'brand-portfolio',
|
|
27
|
+
sourceId: portfolioItem.name,
|
|
28
|
+
sourceName: portfolioItem.name
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
// Persona keywords
|
|
34
|
+
personas?.forEach((persona) => {
|
|
35
|
+
if (persona.keywordSeeds && persona.keywordSeeds.length > 0) {
|
|
36
|
+
persona.keywordSeeds.forEach((keyword) => {
|
|
37
|
+
keywords.push({
|
|
38
|
+
id: `persona-${persona.name}-${keyword}`,
|
|
39
|
+
keyword,
|
|
40
|
+
source: 'persona',
|
|
41
|
+
sourceId: persona.name,
|
|
42
|
+
sourceName: persona.name
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
// Funnel category keywords
|
|
48
|
+
funnelStages?.forEach((stage) => {
|
|
49
|
+
stage.categories?.forEach((category) => {
|
|
50
|
+
if (category.keywordSeeds && category.keywordSeeds.length > 0) {
|
|
51
|
+
category.keywordSeeds.forEach((example) => {
|
|
52
|
+
keywords.push({
|
|
53
|
+
id: `funnel-${stage.stage}-${category.name}-${example}`,
|
|
54
|
+
keyword: example,
|
|
55
|
+
source: 'funnel',
|
|
56
|
+
sourceId: `${stage.stage}::${category.name}`,
|
|
57
|
+
sourceName: `${stage.stage} > ${category.name}`
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
// Competitor portfolio keywords
|
|
64
|
+
competitors?.forEach((competitor) => {
|
|
65
|
+
if (competitor.portfolio && competitor.portfolio.length > 0) {
|
|
66
|
+
competitor.portfolio.forEach((portfolioItem) => {
|
|
67
|
+
if (portfolioItem.keywordSeeds && portfolioItem.keywordSeeds.length > 0) {
|
|
68
|
+
portfolioItem.keywordSeeds.forEach((keyword) => {
|
|
69
|
+
keywords.push({
|
|
70
|
+
id: `portfolio-${competitor.name}-${portfolioItem.name}-${keyword}`,
|
|
71
|
+
keyword,
|
|
72
|
+
source: 'portfolio',
|
|
73
|
+
sourceId: portfolioItem.name,
|
|
74
|
+
sourceName: `${competitor.name} > ${portfolioItem.name}`
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
// Custom keywords
|
|
82
|
+
customKeywords?.forEach((keyword, index) => {
|
|
83
|
+
keywords.push({
|
|
84
|
+
id: `custom-${index}-${keyword}`,
|
|
85
|
+
keyword,
|
|
86
|
+
source: 'custom'
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
return keywords;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Groups seed keywords by their source, maintaining order within each source.
|
|
93
|
+
* Keywords from the same portfolio item, competitor product, or funnel category
|
|
94
|
+
* are grouped together.
|
|
95
|
+
*
|
|
96
|
+
* @param seedKeywords - Flat array of seed keywords
|
|
97
|
+
* @param generateIdeasFromSeeds - When true, returns grouped keywords for idea generation.
|
|
98
|
+
* When false, returns all keywords flattened into a single group.
|
|
99
|
+
* @returns Array of grouped keywords (arrays for same-source groups, single items for personas/custom)
|
|
100
|
+
*/
|
|
101
|
+
function groupSeedKeywords(seedKeywords, generateIdeasFromSeeds = true) {
|
|
102
|
+
let group;
|
|
103
|
+
const keywords = seedKeywords.reduce((acc, item) => {
|
|
104
|
+
if (item.source === 'brand-portfolio') {
|
|
105
|
+
if (item.sourceName === group) {
|
|
106
|
+
acc.brandInfoKeywords[acc.brandInfoKeywords.length - 1].push(item);
|
|
107
|
+
return acc;
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
group = item.sourceName;
|
|
111
|
+
acc.brandInfoKeywords.push([item]);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else if (item.source === 'portfolio') {
|
|
115
|
+
if (item.sourceName === group) {
|
|
116
|
+
acc.competitorKeywords[acc.competitorKeywords.length - 1].push(item);
|
|
117
|
+
return acc;
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
group = item.sourceName;
|
|
121
|
+
acc.competitorKeywords.push([item]);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else if (item.source === 'persona') {
|
|
125
|
+
group = undefined;
|
|
126
|
+
acc.personasKeywords.push(item);
|
|
127
|
+
}
|
|
128
|
+
else if (item.source === 'funnel') {
|
|
129
|
+
if (item.sourceName === group) {
|
|
130
|
+
acc.funnelKeywords[acc.funnelKeywords.length - 1].push(item);
|
|
131
|
+
return acc;
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
group = item.sourceName;
|
|
135
|
+
acc.funnelKeywords.push([item]);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else if (item.source === 'custom') {
|
|
139
|
+
group = undefined;
|
|
140
|
+
acc.customKeywords.push(item);
|
|
141
|
+
}
|
|
142
|
+
return acc;
|
|
143
|
+
}, {
|
|
144
|
+
brandInfoKeywords: [],
|
|
145
|
+
competitorKeywords: [],
|
|
146
|
+
personasKeywords: [],
|
|
147
|
+
funnelKeywords: [],
|
|
148
|
+
customKeywords: []
|
|
149
|
+
});
|
|
150
|
+
const groupedKeywords = [
|
|
151
|
+
...keywords.brandInfoKeywords,
|
|
152
|
+
...keywords.competitorKeywords,
|
|
153
|
+
...keywords.personasKeywords,
|
|
154
|
+
...keywords.funnelKeywords,
|
|
155
|
+
...keywords.customKeywords
|
|
156
|
+
];
|
|
157
|
+
if (!generateIdeasFromSeeds) {
|
|
158
|
+
return [[...new Set(groupedKeywords.flat())]].filter(g => g.length > 0);
|
|
159
|
+
}
|
|
160
|
+
const normalizeKeyword = (keyword) => ({
|
|
161
|
+
...keyword,
|
|
162
|
+
keyword: keyword.keyword.trim().toLowerCase()
|
|
163
|
+
});
|
|
164
|
+
const dedupeKeywordArray = (kws) => {
|
|
165
|
+
const seen = new Set();
|
|
166
|
+
return kws.filter(kw => {
|
|
167
|
+
const normalized = normalizeKeyword(kw);
|
|
168
|
+
if (seen.has(normalized.keyword)) {
|
|
169
|
+
return false;
|
|
170
|
+
}
|
|
171
|
+
seen.add(normalized.keyword);
|
|
172
|
+
return true;
|
|
173
|
+
});
|
|
174
|
+
};
|
|
175
|
+
const uniqueKeywordsSet = new Set();
|
|
176
|
+
const deduplicatedGroupedKeywords = groupedKeywords.reduce((acc, item) => {
|
|
177
|
+
if (Array.isArray(item)) {
|
|
178
|
+
const deduped = dedupeKeywordArray(item);
|
|
179
|
+
if (deduped.length > 0) {
|
|
180
|
+
acc.push(deduped);
|
|
181
|
+
}
|
|
182
|
+
return acc;
|
|
183
|
+
}
|
|
184
|
+
const normalized = normalizeKeyword(item);
|
|
185
|
+
if (uniqueKeywordsSet.has(normalized.keyword)) {
|
|
186
|
+
return acc;
|
|
187
|
+
}
|
|
188
|
+
uniqueKeywordsSet.add(normalized.keyword);
|
|
189
|
+
acc.push(item);
|
|
190
|
+
return acc;
|
|
191
|
+
}, []);
|
|
192
|
+
return deduplicatedGroupedKeywords;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Groups seed keywords and extracts just the keyword strings.
|
|
196
|
+
* Convenience wrapper around groupSeedKeywords for cases where
|
|
197
|
+
* only the keyword text is needed (not the full metadata).
|
|
198
|
+
*/
|
|
199
|
+
function groupKeywordStrings(seedKeywords, generateIdeasFromSeeds = true) {
|
|
200
|
+
const groupedSeedKeywords = groupSeedKeywords(seedKeywords, generateIdeasFromSeeds);
|
|
201
|
+
return groupedSeedKeywords.map(g => {
|
|
202
|
+
if (Array.isArray(g)) {
|
|
203
|
+
return g.map(kw => kw.keyword);
|
|
204
|
+
}
|
|
205
|
+
return g.keyword;
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Collects and groups seed keywords in one step, returning only keyword strings.
|
|
210
|
+
* This is a convenience function for pipelines that need grouped keyword strings
|
|
211
|
+
* without the full SeedKeyword metadata.
|
|
212
|
+
*
|
|
213
|
+
* @param params - Same parameters as collectSeedKeywords
|
|
214
|
+
* @param generateIdeasFromSeeds - When true, returns grouped keywords. When false, returns flat.
|
|
215
|
+
* @returns Grouped keyword strings (arrays for same-source groups, single strings otherwise)
|
|
216
|
+
*/
|
|
217
|
+
function collectAndGroupKeywordStrings(params, generateIdeasFromSeeds = true) {
|
|
218
|
+
const seedKeywords = collectSeedKeywords(params);
|
|
219
|
+
return groupKeywordStrings(seedKeywords, generateIdeasFromSeeds);
|
|
220
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type BrandContext } from '../schemas/brand.schema.js';
|
|
2
|
+
import { type ABSentiment } from '../schemas/sentiment.schema.js';
|
|
3
|
+
/**
|
|
4
|
+
* Extracts aspect-based sentiments from a text.
|
|
5
|
+
*/
|
|
6
|
+
export declare function extractAspectBasedSentiments(text: string | null, instructions?: string, model?: string): Promise<Array<ABSentiment>>;
|
|
7
|
+
/**
|
|
8
|
+
* Classifies multiple data records concurrently while preserving order.
|
|
9
|
+
*/
|
|
10
|
+
export declare function extractABSForBrandBatch(texts: Array<string | null>, brand?: BrandContext | null, model?: string, maxConcurrency?: number): Promise<Array<Array<ABSentiment>>>;
|
|
11
|
+
//# sourceMappingURL=sentiment.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sentiment.d.ts","sourceRoot":"","sources":["../../../src/src/tools/sentiment.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAsB,KAAK,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAwCtF;;GAEG;AACH,wBAAsB,4BAA4B,CACjD,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,YAAY,GAAE,MAAW,EACzB,KAAK,GAAE,MAAuB,GAC5B,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAoB7B;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC5C,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,EAC3B,KAAK,GAAE,YAAY,GAAG,IAAW,EACjC,KAAK,GAAE,MAAuB,EAC9B,cAAc,GAAE,MAAY,GAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAYpC"}
|