geo-semantic-layer 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +289 -0
- package/LICENSE +21 -0
- package/README.md +394 -0
- package/dist/config-BcP2K8Tq.d.ts +150 -0
- package/dist/event-BG0_yYK4.d.ts +2231 -0
- package/dist/generators/index.d.ts +723 -0
- package/dist/generators/index.js +969 -0
- package/dist/generators/index.js.map +1 -0
- package/dist/geo/index.d.ts +38 -0
- package/dist/geo/index.js +107 -0
- package/dist/geo/index.js.map +1 -0
- package/dist/index.d.ts +53 -0
- package/dist/index.js +1000 -0
- package/dist/index.js.map +1 -0
- package/dist/schemas/index.d.ts +97 -0
- package/dist/schemas/index.js +402 -0
- package/dist/schemas/index.js.map +1 -0
- package/package.json +97 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/core/schemas/organization.ts","../../src/core/schemas/person.ts","../../src/core/schemas/product.ts","../../src/core/schemas/article.ts","../../src/core/schemas/faq.ts","../../src/core/schemas/breadcrumb.ts","../../src/core/schemas/webpage.ts","../../src/core/schemas/opengraph.ts","../../src/core/schemas/localbusiness.ts","../../src/core/schemas/event.ts","../../src/core/geo/processor.ts","../../src/core/generators/identity.ts","../../src/core/generators/product.ts","../../src/core/generators/article.ts","../../src/core/generators/faq.ts","../../src/core/generators/breadcrumb.ts","../../src/core/generators/opengraph.ts","../../src/core/generators/localbusiness.ts","../../src/core/generators/event.ts","../../src/core/generators/webpage.ts"],"names":["z"],"mappings":";;;AAUO,IAAM,mBAAA,GAAsB,EAAE,MAAA,CAAO;AAAA,EAC1C,SAAS,CAAA,CAAE,OAAA,CAAQ,eAAe,CAAA,CAAE,QAAQ,eAAe,CAAA;AAAA,EAC3D,aAAA,EAAe,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACnC,eAAA,EAAiB,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACrC,aAAA,EAAe,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACnC,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAChC,gBAAgB,CAAA,CAAE,MAAA,GAAS,MAAA,CAAO,CAAC,EAAE,QAAA;AAAS;AAChD,CAAC,CAAA;AAKM,IAAM,kBAAA,GAAqB,EAAE,MAAA,CAAO;AAAA,EACzC,SAAS,CAAA,CAAE,OAAA,CAAQ,cAAc,CAAA,CAAE,QAAQ,cAAc,CAAA;AAAA,EACzD,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,OAAO,CAAA,CAAE,MAAA,EAAO,CAAE,KAAA,GAAQ,QAAA,EAAS;AAAA,EACnC,WAAA,EAAa,CAAA,CACV,IAAA,CAAK,CAAC,kBAAA,EAAoB,qBAAqB,OAAA,EAAS,SAAS,CAAC,CAAA,CAClE,QAAA,EAAS;AAAA,EACZ,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAChC,mBAAmB,CAAA,CAAE,KAAA,CAAM,EAAE,MAAA,EAAQ,EAAE,QAAA;AACzC,CAAC,CAAA;AAQM,IAAM,kBAAA,GAAqB,EAAE,MAAA,CAAO;AAAA,EACzC,YAAY,CAAA,CAAE,OAAA,CAAQ,oBAAoB,CAAA,CAAE,QAAQ,oBAAoB,CAAA;AAAA,EACxE,SAAS,CAAA,CAAE,OAAA,CAAQ,cAAc,CAAA,CAAE,QAAQ,cAAc,CAAA;AAAA;AAAA,EAGzD,MAAM,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,+BAA+B,CAAA;AAAA,EACvD,GAAA,EAAK,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,qBAAqB,CAAA;AAAA;AAAA,EAGzC,MAAM,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,0BAA0B,EAAE,QAAA,EAAS;AAAA,EAC1D,OAAO,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,2BAA2B,EAAE,QAAA,EAAS;AAAA,EAC5D,WAAA,EAAa,EAAE,MAAA,EAAO,CAAE,IAAI,EAAA,EAAI,8CAA8C,EAAE,QAAA,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzF,MAAA,EAAQ,CAAA,CACL,KAAA,CAAM,CAAA,CAAE,QAAO,CAAE,GAAA,EAAK,CAAA,CACtB,GAAA,CAAI,CAAA,EAAG,+DAA+D,CAAA,CACtE,SAAS,uEAAuE,CAAA;AAAA;AAAA,EAGnF,OAAO,CAAA,CAAE,MAAA,EAAO,CAAE,KAAA,GAAQ,QAAA,EAAS;AAAA,EACnC,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,OAAA,EAAS,oBAAoB,QAAA,EAAS;AAAA,EACtC,YAAA,EAAc,CAAA,CAAE,KAAA,CAAM,CAAC,kBAAA,EAAoB,CAAA,CAAE,KAAA,CAAM,kBAAkB,CAAC,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA;AAAA,EAGlF,aAAA,EAAe,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACnC,YAAA,EAAc,EAAE,MAAA,EAAO,CAAE,MAAM,qBAAA,EAAuB,8BAA8B,EAAE,QAAA,EAAS;AAAA,EAC/F,SAAS,CAAA,CAAE,KAAA,CAAM,EAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA;AAAA,EAGtC,kBAAA,EAAoB,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACxC,iBAAiB,CAAA,CAAE,KAAA,CAAM,EAAE,MAAA,EAAQ,EAAE,QAAA;AACvC,CAAC,CAAA;AC5DM,IAAM,YAAA,GAAeA,EAAE,MAAA,CAAO;AAAA,EACnC,YAAYA,CAAAA,CAAE,OAAA,CAAQ,oBAAoB,CAAA,CAAE,QAAQ,oBAAoB,CAAA;AAAA,EACxE,SAASA,CAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA,CAAE,QAAQ,QAAQ,CAAA;AAAA;AAAA,EAG7C,MAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,yBAAyB,CAAA;AAAA,EACjD,KAAKA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,qBAAqB,EAAE,QAAA,EAAS;AAAA;AAAA,EAGpD,OAAOA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,2BAA2B,EAAE,QAAA,EAAS;AAAA,EAC5D,WAAA,EAAaA,EAAE,MAAA,EAAO,CAAE,IAAI,EAAA,EAAI,8CAA8C,EAAE,QAAA,EAAS;AAAA;AAAA;AAAA;AAAA;AAAA,EAMzF,MAAA,EAAQA,CAAAA,CACL,KAAA,CAAMA,CAAAA,CAAE,QAAO,CAAE,GAAA,EAAK,CAAA,CACtB,GAAA,CAAI,CAAA,EAAG,+DAA+D,CAAA,CACtE,SAAS,uEAAuE,CAAA;AAAA;AAAA,EAGnF,OAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,GAAQ,QAAA,EAAS;AAAA,EACnC,SAAA,EAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,OAAA,EAAS,oBAAoB,QAAA,EAAS;AAAA;AAAA,EAGtC,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,QAAA,EAAUA,EACP,MAAA,CAAO;AAAA,IACN,OAAA,EAASA,CAAAA,CAAE,OAAA,CAAQ,cAAc,CAAA;AAAA,IACjC,IAAA,EAAMA,EAAE,MAAA,EAAO;AAAA,IACf,KAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA;AAAS,GAChC,EACA,QAAA,EAAS;AAAA;AAAA,EAGZ,aAAA,EAAeA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACnC,SAAA,EAAWA,EAAE,MAAA,EAAO,CAAE,MAAM,qBAAA,EAAuB,8BAA8B,EAAE,QAAA,EAAS;AAAA,EAC5F,WAAA,EAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAGjC,WAAWA,CAAAA,CAAE,KAAA,CAAMA,EAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA,EACxC,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACvB,CAAC,CAAA;ACjDM,IAAM,WAAA,GAAcA,EAAE,MAAA,CAAO;AAAA,EAClC,SAASA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA,CAAE,QAAQ,OAAO,CAAA;AAAA,EAC3C,KAAA,EAAOA,CAAAA,CAAE,KAAA,CAAM,CAACA,CAAAA,CAAE,QAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA;AAAA,EACvC,aAAA,EAAeA,CAAAA,CAAE,MAAA,EAAO,CAAE,OAAO,CAAC,CAAA;AAAA;AAAA,EAClC,YAAA,EAAcA,EACX,MAAA,EAAO,CACP,KAAI,CACJ,QAAA,EAAS,CACT,QAAA,CAAS,kCAAkC,CAAA;AAAA,EAC9C,KAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EAC/B,iBAAiBA,CAAAA,CAAE,MAAA,GAAS,KAAA,CAAM,qBAAqB,EAAE,QAAA,EAAS;AAAA,EAClE,MAAA,EAAQA,EACL,MAAA,CAAO;AAAA,IACN,OAAA,EAASA,CAAAA,CAAE,OAAA,CAAQ,cAAc,CAAA;AAAA,IACjC,IAAA,EAAMA,EAAE,MAAA;AAAO,GAChB,EACA,QAAA;AACL,CAAC,CAAA;AAKM,IAAM,qBAAA,GAAwBA,EAAE,MAAA,CAAO;AAAA,EAC5C,SAASA,CAAAA,CAAE,OAAA,CAAQ,iBAAiB,CAAA,CAAE,QAAQ,iBAAiB,CAAA;AAAA,EAC/D,WAAA,EAAaA,CAAAA,CAAE,KAAA,CAAM,CAACA,CAAAA,CAAE,QAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA;AAAA,EAC7C,aAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EACvC,UAAA,EAAYA,CAAAA,CAAE,KAAA,CAAM,CAACA,EAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAQ,CAAC,CAAA;AAAA,EAClE,WAAA,EAAaA,CAAAA,CAAE,KAAA,CAAM,CAACA,EAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAQ,CAAC;AACrE,CAAC,CAAA;AAKM,IAAM,YAAA,GAAeA,EAAE,MAAA,CAAO;AAAA,EACnC,SAASA,CAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA,CAAE,QAAQ,QAAQ,CAAA;AAAA,EAC7C,MAAA,EAAQA,EAAE,MAAA,CAAO;AAAA,IACf,OAAA,EAASA,CAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,IAC3B,IAAA,EAAMA,EAAE,MAAA;AAAO,GAChB,CAAA;AAAA,EACD,aAAA,EAAeA,CAAAA,CAAE,MAAA,EAAO,CAAE,MAAM,qBAAqB,CAAA;AAAA,EACrD,UAAA,EAAYA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,EAAE,CAAA;AAAA,EAC7B,YAAA,EAAcA,EAAE,MAAA,CAAO;AAAA,IACrB,OAAA,EAASA,CAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,IAC3B,WAAA,EAAaA,CAAAA,CAAE,KAAA,CAAM,CAACA,CAAAA,CAAE,QAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA;AAAA,IAC7C,UAAA,EAAYA,CAAAA,CAAE,KAAA,CAAM,CAACA,EAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAQ,CAAC;AAAA,GACnE;AACH,CAAC,CAAA;AAQM,IAAM,aAAA,GAAgBA,EAAE,MAAA,CAAO;AAAA,EACpC,YAAYA,CAAAA,CAAE,OAAA,CAAQ,oBAAoB,CAAA,CAAE,QAAQ,oBAAoB,CAAA;AAAA,EACxE,SAASA,CAAAA,CAAE,OAAA,CAAQ,SAAS,CAAA,CAAE,QAAQ,SAAS,CAAA;AAAA;AAAA,EAG/C,MAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,0BAA0B,CAAA;AAAA;AAAA,EAGlD,OAAOA,CAAAA,CAAE,KAAA,CAAM,CAACA,CAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,EAAGA,EAAE,KAAA,CAAMA,CAAAA,CAAE,QAAO,CAAE,GAAA,EAAK,CAAC,CAAC,EAAE,QAAA,EAAS;AAAA,EACvE,WAAA,EAAaA,EAAE,MAAA,EAAO,CAAE,IAAI,EAAA,EAAI,8CAA8C,EAAE,QAAA,EAAS;AAAA;AAAA,EAGzF,GAAA,EAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACzB,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC1B,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC3B,MAAA,EAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,MAAA,EAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,MAAA,EAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,GAAA,EAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAGzB,KAAA,EAAOA,EACJ,MAAA,CAAO;AAAA,IACN,OAAA,EAASA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,IAC1B,IAAA,EAAMA,EAAE,MAAA;AAAO,GAChB,EACA,QAAA,EAAS;AAAA;AAAA,EAGZ,MAAA,EAAQA,CAAAA,CAAE,KAAA,CAAM,CAAC,WAAA,EAAaA,CAAAA,CAAE,KAAA,CAAM,WAAW,CAAC,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA;AAAA,EAG9D,eAAA,EAAiB,sBAAsB,QAAA,EAAS;AAAA,EAChD,MAAA,EAAQA,CAAAA,CAAE,KAAA,CAAM,CAAC,YAAA,EAAcA,CAAAA,CAAE,KAAA,CAAM,YAAY,CAAC,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA;AAAA,EAGhE,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,KAAA,EAAOA,CAAAA,CAAE,KAAA,CAAM,CAACA,EAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,KAAA,CAAMA,EAAE,MAAA,EAAQ,CAAC,CAAC,EAAE,QAAA,EAAS;AAAA,EAC3D,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,YAAA,EAAcA,EACX,MAAA,CAAO;AAAA,IACN,OAAA,EAASA,CAAAA,CAAE,OAAA,CAAQ,cAAc,CAAA;AAAA,IACjC,IAAA,EAAMA,EAAE,MAAA;AAAO,GAChB,EACA,QAAA;AACL,CAAC,CAAA;AChGM,IAAM,aAAA,GAAgBA,EAAE,MAAA,CAAO;AAAA,EACpC,YAAYA,CAAAA,CAAE,OAAA,CAAQ,oBAAoB,CAAA,CAAE,QAAQ,oBAAoB,CAAA;AAAA,EACxE,OAAA,EAASA,CAAAA,CACN,IAAA,CAAK,CAAC,SAAA,EAAW,aAAA,EAAe,aAAA,EAAe,aAAa,CAAC,CAAA,CAC7D,OAAA,CAAQ,SAAS,CAAA;AAAA;AAAA,EAGpB,QAAA,EAAUA,EACP,MAAA,EAAO,CACP,IAAI,CAAC,CAAA,CACL,GAAA,CAAI,GAAA,EAAK,6DAA6D,CAAA;AAAA,EACzE,OAAOA,CAAAA,CAAE,KAAA,CAAM,CAACA,CAAAA,CAAE,QAAO,CAAE,GAAA,EAAI,EAAGA,CAAAA,CAAE,MAAMA,CAAAA,CAAE,MAAA,GAAS,GAAA,EAAK,CAAC,CAAC,CAAA;AAAA;AAAA,EAG5D,MAAA,EAAQA,EACL,KAAA,CAAM;AAAA,IACLA,EAAE,MAAA,CAAO;AAAA,MACP,SAASA,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,cAAc,CAAC,CAAA;AAAA,MAC1C,IAAA,EAAMA,EAAE,MAAA,EAAO;AAAA,MACf,KAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA;AAAS,KAChC,CAAA;AAAA,IACDA,CAAAA,CAAE,KAAA;AAAA,MACAA,EAAE,MAAA,CAAO;AAAA,QACP,SAASA,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,cAAc,CAAC,CAAA;AAAA,QAC1C,IAAA,EAAMA,EAAE,MAAA,EAAO;AAAA,QACf,KAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA;AAAS,OAChC;AAAA;AACH,GACD,CAAA,CACA,QAAA,CAAS,0BAA0B,CAAA;AAAA,EAEtC,eAAeA,CAAAA,CACZ,MAAA,EAAO,CACP,KAAA,CAAM,6CAA6C,yBAAyB,CAAA;AAAA,EAE/E,YAAA,EAAcA,EACX,MAAA,EAAO,CACP,MAAM,2CAAA,EAA6C,yBAAyB,EAC5E,QAAA,EAAS;AAAA;AAAA,EAGZ,SAAA,EAAWA,EACR,MAAA,CAAO;AAAA,IACN,OAAA,EAASA,CAAAA,CAAE,OAAA,CAAQ,cAAc,CAAA;AAAA,IACjC,IAAA,EAAMA,EAAE,MAAA,EAAO;AAAA,IACf,IAAA,EAAMA,EACH,MAAA,CAAO;AAAA,MACN,OAAA,EAASA,CAAAA,CAAE,OAAA,CAAQ,aAAa,CAAA;AAAA,MAChC,GAAA,EAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,MACpB,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MAC3B,MAAA,EAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,KAC7B,EACA,QAAA;AAAS,GACb,EACA,QAAA,EAAS;AAAA;AAAA,EAGZ,aAAaA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,EAAE,EAAE,QAAA,EAAS;AAAA,EACzC,WAAA,EAAaA,EAAE,MAAA,EAAO,CAAE,IAAI,EAAA,EAAI,+CAA+C,EAAE,QAAA,EAAS;AAAA,EAC1F,SAAA,EAAWA,EAAE,MAAA,EAAO,CAAE,KAAI,CAAE,QAAA,GAAW,QAAA,EAAS;AAAA;AAAA,EAGhD,KAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EAC/B,kBAAkBA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EAC5C,QAAA,EAAUA,CAAAA,CAAE,KAAA,CAAM,CAACA,EAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,KAAA,CAAMA,EAAE,MAAA,EAAQ,CAAC,CAAC,EAAE,QAAA,EAAS;AAAA,EAC9D,cAAA,EAAgBA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACpC,UAAA,EAAYA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACzB,CAAC,CAAA;AAKgC,cAAc,MAAA,CAAO;AAAA,EACpD,SAASA,CAAAA,CAAE,OAAA,CAAQ,aAAa,CAAA,CAAE,QAAQ,aAAa;AACzD,CAAC;AAKgC,cAAc,MAAA,CAAO;AAAA,EACpD,SAASA,CAAAA,CAAE,OAAA,CAAQ,aAAa,CAAA,CAAE,QAAQ,aAAa,CAAA;AAAA,EACvD,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACvB,CAAC;ACrFM,IAAM,cAAA,GAAiBA,EAAE,MAAA,CAAO;AAAA,EACrC,SAASA,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA,CAAE,QAAQ,UAAU,CAAA;AAAA,EACjD,MAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,2BAA2B,CAAA;AAAA,EACnD,cAAA,EAAgBA,EAAE,MAAA,CAAO;AAAA,IACvB,SAASA,CAAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA,CAAE,QAAQ,QAAQ,CAAA;AAAA,IAC7C,MAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,yBAAyB;AAAA,GAClD;AACH,CAAC,CAAA;AAQM,IAAM,aAAA,GAAgBA,EAAE,MAAA,CAAO;AAAA,EACpC,YAAYA,CAAAA,CAAE,OAAA,CAAQ,oBAAoB,CAAA,CAAE,QAAQ,oBAAoB,CAAA;AAAA,EACxE,SAASA,CAAAA,CAAE,OAAA,CAAQ,SAAS,CAAA,CAAE,QAAQ,SAAS,CAAA;AAAA,EAE/C,UAAA,EAAYA,CAAAA,CACT,KAAA,CAAM,cAAc,CAAA,CACpB,IAAI,CAAA,EAAG,2CAA2C,CAAA,CAClD,QAAA,CAAS,gCAAgC;AAC9C,CAAC,CAAA;ACvBM,IAAM,cAAA,GAAiBA,EAAE,MAAA,CAAO;AAAA,EACrC,SAASA,CAAAA,CAAE,OAAA,CAAQ,UAAU,CAAA,CAAE,QAAQ,UAAU,CAAA;AAAA,EACjD,UAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EACpC,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,MAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA;AACzB,CAAC,CAAA;AAQM,IAAM,oBAAA,GAAuBA,EAAE,MAAA,CAAO;AAAA,EAC3C,YAAYA,CAAAA,CAAE,OAAA,CAAQ,oBAAoB,CAAA,CAAE,QAAQ,oBAAoB,CAAA;AAAA,EACxE,SAASA,CAAAA,CAAE,OAAA,CAAQ,gBAAgB,CAAA,CAAE,QAAQ,gBAAgB,CAAA;AAAA,EAE7D,eAAA,EAAiBA,CAAAA,CACd,KAAA,CAAM,cAAc,CAAA,CACpB,IAAI,CAAA,EAAG,4CAA4C,CAAA,CACnD,QAAA,CAAS,kCAAkC;AAChD,CAAC,CAAA;ACnBM,IAAM,aAAA,GAAgBA,EAAE,MAAA,CAAO;AAAA,EACpC,YAAYA,CAAAA,CAAE,OAAA,CAAQ,oBAAoB,CAAA,CAAE,QAAQ,oBAAoB,CAAA;AAAA,EACxE,SAASA,CAAAA,CAAE,OAAA,CAAQ,SAAS,CAAA,CAAE,QAAQ,SAAS,CAAA;AAAA,EAE/C,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EACtB,aAAaA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,EAAE,EAAE,QAAA,EAAS;AAAA,EACzC,GAAA,EAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA;AAAA,EAGpB,UAAA,EAAYA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAChC,QAAA,EAAUA,EACP,MAAA,CAAO;AAAA,IACN,OAAA,EAASA,CAAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA,IAC5B,IAAA,EAAMA,EAAE,MAAA,EAAO;AAAA,IACf,GAAA,EAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA;AAAI,GACrB,EACA,QAAA,EAAS;AAAA,EACZ,UAAA,EAAYA,EACT,MAAA,CAAO;AAAA,IACN,OAAA,EAASA,CAAAA,CAAE,OAAA,CAAQ,gBAAgB;AAAA,GACpC,EACA,QAAA,EAAS;AAAA,EACZ,eAAeA,CAAAA,CAAE,MAAA,GAAS,KAAA,CAAM,2CAA2C,EAAE,QAAA,EAAS;AAAA,EACtF,cAAcA,CAAAA,CAAE,MAAA,GAAS,KAAA,CAAM,2CAA2C,EAAE,QAAA,EAAS;AAAA,EACrF,MAAA,EAAQA,EACL,MAAA,CAAO;AAAA,IACN,SAASA,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,cAAc,CAAC,CAAA;AAAA,IAC1C,IAAA,EAAMA,EAAE,MAAA;AAAO,GAChB,EACA,QAAA;AACL,CAAC,CAAA;AChCM,IAAM,eAAA,GAAkBA,EAAE,MAAA,CAAO;AAAA,EACtC,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,GAAA,CAAI,EAAA,EAAI,6DAA6D,CAAA;AAAA,EAC9F,WAAA,EAAaA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAA,EAAK,gDAAgD,CAAA;AAAA,EACxF,GAAA,EAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACpB,IAAA,EAAMA,CAAAA,CAAE,IAAA,CAAK,CAAC,WAAW,SAAA,EAAW,SAAA,EAAW,MAAA,EAAQ,SAAA,EAAW,OAAA,EAAS,OAAO,CAAC,CAAA,CAAE,QAAQ,SAAS,CAAA;AAAA,EACtG,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACtB,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC9B,MAAA,EAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAQ,OAAO,CAAA;AAAA;AAAA,EAGlC,aAAA,EAAeA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EACnC,YAAA,EAAcA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAClC,MAAA,EAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,OAAA,EAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC7B,MAAMA,CAAAA,CAAE,KAAA,CAAMA,EAAE,MAAA,EAAQ,EAAE,QAAA,EAAS;AAAA;AAAA,EAGnC,KAAA,EAAOA,CAAAA,CAAE,KAAA,CAAM,CAACA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EAClD,UAAUA,CAAAA,CAAE,MAAA,GAAS,MAAA,CAAO,CAAC,EAAE,QAAA;AACjC,CAAC,CAAA;AAKM,IAAM,iBAAA,GAAoBA,EAAE,MAAA,CAAO;AAAA,EACxC,IAAA,EAAMA,CAAAA,CAAE,IAAA,CAAK,CAAC,SAAA,EAAW,qBAAA,EAAuB,KAAA,EAAO,QAAQ,CAAC,CAAA,CAAE,OAAA,CAAQ,qBAAqB,CAAA;AAAA,EAC/F,IAAA,EAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAC1B,OAAA,EAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA,EAC7B,KAAA,EAAOA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,GAAA,CAAI,EAAA,EAAI,iDAAiD,CAAA;AAAA,EAClF,WAAA,EAAaA,EAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAA,EAAK,wDAAwD,CAAA;AAAA,EAChG,KAAA,EAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI;AAAA,EACtB,QAAA,EAAUA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACvB,CAAC,CAAA;AChCM,IAAM,oBAAA,GAAuBA,EAAE,MAAA,CAAO;AAAA,EAC3C,SAASA,CAAAA,CAAE,OAAA,CAAQ,gBAAgB,CAAA,CAAE,QAAQ,gBAAgB,CAAA;AAAA,EAC7D,QAAA,EAAUA,EAAE,MAAA,EAAO,CAAE,IAAI,GAAG,CAAA,CAAE,IAAI,EAAE,CAAA;AAAA,EACpC,SAAA,EAAWA,EAAE,MAAA,EAAO,CAAE,IAAI,IAAI,CAAA,CAAE,IAAI,GAAG;AACzC,CAAC,CAAA;AAKM,IAAM,kBAAA,GAAqBA,EAAE,MAAA,CAAO;AAAA,EACzC,SAASA,CAAAA,CAAE,OAAA,CAAQ,2BAA2B,CAAA,CAAE,QAAQ,2BAA2B,CAAA;AAAA,EACnF,SAAA,EAAWA,EAAE,KAAA,CAAM;AAAA,IACjBA,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,SAAA,EAAW,aAAa,UAAA,EAAY,QAAA,EAAU,UAAA,EAAY,QAAQ,CAAC,CAAA;AAAA,IACrFA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,SAAA,EAAW,WAAA,EAAa,UAAA,EAAY,QAAA,EAAU,UAAA,EAAY,QAAQ,CAAC,CAAC;AAAA,GAC/F,CAAA;AAAA,EACD,OAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,CAAM,+BAA+B,yBAAyB,CAAA;AAAA,EAChF,QAAQA,CAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,CAAM,+BAA+B,yBAAyB;AACnF,CAAC,CAAA;AAQM,IAAM,mBAAA,GAAsBA,EAAE,MAAA,CAAO;AAAA,EAC1C,YAAYA,CAAAA,CAAE,OAAA,CAAQ,oBAAoB,CAAA,CAAE,QAAQ,oBAAoB,CAAA;AAAA,EACxE,OAAA,EAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAQ,eAAe,CAAA;AAAA;AAAA;AAAA,EAG3C,MAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,2BAA2B,CAAA;AAAA,EACnD,OAAOA,CAAAA,CAAE,KAAA,CAAM,CAACA,CAAAA,CAAE,QAAO,CAAE,GAAA,EAAI,EAAGA,CAAAA,CAAE,MAAMA,CAAAA,CAAE,MAAA,GAAS,GAAA,EAAK,CAAC,CAAC,CAAA;AAAA,EAC5D,OAAA,EAAS,mBAAA;AAAA;AAAA,EAGT,OAAOA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EACjC,KAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EAC/B,SAAA,EAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC/B,UAAA,EAAYA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA;AAAA;AAAA,EAGhC,GAAA,EAAK,qBAAqB,QAAA,EAAS;AAAA;AAAA,EAGnC,yBAAA,EAA2BA,EAAE,KAAA,CAAM;AAAA,IACjC,kBAAA;AAAA,IACAA,CAAAA,CAAE,MAAM,kBAAkB;AAAA,GAC3B,EAAE,QAAA,EAAS;AAAA;AAAA,EAGZ,eAAA,EAAiBA,EAAE,MAAA,CAAO;AAAA,IACxB,OAAA,EAASA,CAAAA,CAAE,OAAA,CAAQ,iBAAiB,CAAA;AAAA,IACpC,WAAA,EAAaA,CAAAA,CAAE,KAAA,CAAM,CAACA,CAAAA,CAAE,QAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA;AAAA,IAC7C,aAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA;AAAS,GACxC,EAAE,QAAA,EAAS;AAAA;AAAA,EAGZ,aAAaA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,EAAE,EAAE,QAAA,EAAS;AAAA,EACzC,aAAA,EAAeA,CAAAA,CAAE,KAAA,CAAM,CAACA,EAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,KAAA,CAAMA,EAAE,MAAA,EAAQ,CAAC,CAAC,EAAE,QAAA,EAAS;AAAA;AAAA,EACnE,MAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA;AAAA,EAChC,mBAAA,EAAqBA,CAAAA,CAAE,KAAA,CAAM,CAACA,CAAAA,CAAE,OAAA,EAAQ,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EACjE,eAAA,EAAiBA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAC9B,CAAC,CAAA;AC/DM,IAAM,WAAA,GAAcA,EAAE,MAAA,CAAO;AAAA,EAClC,SAASA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA,CAAE,QAAQ,OAAO,CAAA;AAAA,EAC3C,IAAA,EAAMA,EAAE,MAAA,EAAO;AAAA,EACf,OAAA,EAASA,EAAE,KAAA,CAAM;AAAA,IACfA,EAAE,MAAA,EAAO;AAAA,IACTA,EAAE,MAAA,CAAO;AAAA,MACP,OAAA,EAASA,CAAAA,CAAE,OAAA,CAAQ,eAAe,CAAA;AAAA,MAClC,aAAA,EAAeA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MACnC,eAAA,EAAiBA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MACrC,aAAA,EAAeA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MACnC,UAAA,EAAYA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,MAChC,cAAA,EAAgBA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AAAS,KACrC;AAAA,GACF,EAAE,QAAA;AACL,CAAC,CAAA;AAKM,IAAM,gBAAA,GAAmBA,EAAE,MAAA,CAAO;AAAA,EACvC,SAASA,CAAAA,CAAE,OAAA,CAAQ,OAAO,CAAA,CAAE,QAAQ,OAAO,CAAA;AAAA,EAC3C,KAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EAC/B,KAAA,EAAOA,CAAAA,CAAE,KAAA,CAAM,CAACA,CAAAA,CAAE,QAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAC,CAAA;AAAA,EACvC,aAAA,EAAeA,CAAAA,CAAE,MAAA,EAAO,CAAE,OAAO,CAAC,CAAA;AAAA,EAClC,cAAcA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA,EAAS;AAAA,EACxC,SAAA,EAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,QAAA;AACxB,CAAC,CAAA;AAQM,IAAM,WAAA,GAAcA,EAAE,MAAA,CAAO;AAAA,EAClC,YAAYA,CAAAA,CAAE,OAAA,CAAQ,oBAAoB,CAAA,CAAE,QAAQ,oBAAoB,CAAA;AAAA,EACxE,OAAA,EAASA,CAAAA,CAAE,IAAA,CAAK,CAAC,OAAA,EAAS,YAAA,EAAc,eAAA,EAAiB,aAAA,EAAe,cAAA,EAAgB,gBAAgB,CAAC,CAAA,CAAE,QAAQ,OAAO,CAAA;AAAA;AAAA,EAG1H,MAAMA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,CAAI,GAAG,wBAAwB,CAAA;AAAA,EAChD,WAAWA,CAAAA,CAAE,MAAA,EAAO,CAAE,KAAA,CAAM,2DAA2D,yBAAyB,CAAA;AAAA;AAAA,EAGhH,OAAA,EAASA,EAAE,MAAA,EAAO,CAAE,MAAM,yDAAA,EAA2D,yBAAyB,EAAE,QAAA,EAAS;AAAA,EACzH,WAAA,EAAaA,EAAE,IAAA,CAAK;AAAA,IAClB,mCAAA;AAAA,IACA,mCAAA;AAAA,IACA,qCAAA;AAAA,IACA,mCAAA;AAAA,IACA;AAAA,GACD,EAAE,QAAA,EAAS;AAAA,EACZ,mBAAA,EAAqBA,EAAE,IAAA,CAAK;AAAA,IAC1B,+CAAA;AAAA,IACA,8CAAA;AAAA,IACA;AAAA,GACD,EAAE,QAAA,EAAS;AAAA,EAEZ,QAAA,EAAUA,CAAAA,CAAE,KAAA,CAAM,CAAC,WAAA,EAAaA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAK,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA;AAAA,EAE5D,OAAOA,CAAAA,CAAE,KAAA,CAAM,CAACA,CAAAA,CAAE,MAAA,GAAS,GAAA,EAAI,EAAGA,EAAE,KAAA,CAAMA,CAAAA,CAAE,QAAO,CAAE,GAAA,EAAK,CAAC,CAAC,EAAE,QAAA,EAAS;AAAA,EACvE,aAAaA,CAAAA,CAAE,MAAA,GAAS,GAAA,CAAI,EAAE,EAAE,QAAA,EAAS;AAAA;AAAA,EAGzC,SAAA,EAAWA,EAAE,MAAA,CAAO;AAAA,IAClB,SAASA,CAAAA,CAAE,IAAA,CAAK,CAAC,cAAA,EAAgB,QAAQ,CAAC,CAAA;AAAA,IAC1C,IAAA,EAAMA,EAAE,MAAA,EAAO;AAAA,IACf,KAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA;AAAS,GAChC,EAAE,QAAA,EAAS;AAAA;AAAA,EAGZ,SAAA,EAAWA,EAAE,KAAA,CAAM;AAAA,IACjBA,EAAE,MAAA,CAAO;AAAA,MACP,SAASA,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC7C,IAAA,EAAMA,EAAE,MAAA;AAAO,KAChB,CAAA;AAAA,IACDA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,CAAO;AAAA,MACf,SAASA,CAAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,iBAAiB,CAAC,CAAA;AAAA,MAC7C,IAAA,EAAMA,EAAE,MAAA;AAAO,KAChB,CAAC;AAAA,GACH,EAAE,QAAA,EAAS;AAAA;AAAA,EAGZ,MAAA,EAAQA,CAAAA,CAAE,KAAA,CAAM,CAAC,gBAAA,EAAkBA,CAAAA,CAAE,KAAA,CAAM,gBAAgB,CAAC,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA;AAAA,EAGxE,KAAKA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,GAAM,QAAA;AACxB,CAAC,CAAA;;;AC1FM,IAAM,eAAN,MAAmB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKxB,OAAO,eAAA,CAAgB,MAAA,EAA6B,OAAA,GAA0B,KAAA,EAA4B;AACxG,IAAA,IAAI,YAAY,KAAA,EAAO;AACrB,MAAA,OAAO,IAAA,CAAK,WAAW,MAAM,CAAA;AAAA,IAC/B;AAGA,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA;AAExC,IAAA,IAAI,YAAY,MAAA,EAAQ;AAGtB,MAAA,MAAM,eAAA,GAAkB;AAAA,QACtB,UAAA;AAAA,QAAY,OAAA;AAAA,QAAS,MAAA;AAAA,QAAQ,UAAA;AAAA,QAAY,aAAA;AAAA,QACzC,KAAA;AAAA,QAAO,QAAA;AAAA,QAAU,QAAA;AAAA,QAAU,eAAA;AAAA,QAAiB,WAAA;AAAA,QAC5C,iBAAA;AAAA,QAAmB,MAAA;AAAA,QAAQ;AAAA,OAC7B;AAEA,MAAA,OAAO,IAAA,CAAK,gBAAgB,SAAA,EAAW,CAAC,QAAQ,eAAA,CAAgB,QAAA,CAAS,GAAG,CAAC,CAAA;AAAA,IAC/E;AAEA,IAAA,OAAO,SAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,OAAe,WAAW,GAAA,EAAe;AACvC,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACtB,MAAA,OAAO,GAAA,CACJ,GAAA,CAAI,CAAA,CAAA,KAAK,IAAA,CAAK,WAAW,CAAC,CAAC,CAAA,CAC3B,MAAA,CAAO,OAAK,CAAA,KAAM,IAAA,IAAQ,CAAA,KAAM,MAAA,IAAa,MAAM,EAAE,CAAA;AAAA,IAC1D;AAEA,IAAA,IAAI,GAAA,KAAQ,IAAA,IAAQ,OAAO,GAAA,KAAQ,QAAA,EAAU;AAC3C,MAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,EAAK,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AACvD,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA;AAEpC,QAAA,IAAI,MAAA,KAAW,QAAQ,MAAA,KAAW,MAAA,IAAa,WAAW,EAAA,KACtD,CAAC,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,IAAK,OAAO,MAAA,GAAS,CAAA,CAAA,KAC1C,OAAO,MAAA,KAAW,QAAA,IAAY,OAAO,IAAA,CAAK,MAAM,CAAA,CAAE,MAAA,GAAS,CAAA,CAAA,EAAI;AACjE,UAAA,GAAA,CAAI,GAAG,CAAA,GAAI,MAAA;AAAA,QACb;AACA,QAAA,OAAO,GAAA;AAAA,MACT,CAAA,EAAG,EAAS,CAAA;AAAA,IACd;AAEA,IAAA,OAAO,GAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,OAAe,eAAA,CAAgB,GAAA,EAAU,SAAA,EAA0C;AACjF,IAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACtB,MAAA,OAAO,IAAI,GAAA,CAAI,CAAA,CAAA,KAAK,KAAK,eAAA,CAAgB,CAAA,EAAG,SAAS,CAAC,CAAA;AAAA,IACxD;AAEA,IAAA,IAAI,GAAA,KAAQ,IAAA,IAAQ,OAAO,GAAA,KAAQ,QAAA,EAAU;AAC3C,MAAA,OAAO,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA,CAAE,MAAA,CAAO,CAAC,GAAA,EAAK,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAEvD,QAAA,IAAI,QAAQ,OAAA,IAAW,GAAA,KAAQ,UAAA,IAAc,SAAA,CAAU,GAAG,CAAA,EAAG;AAC3D,UAAA,GAAA,CAAI,GAAG,CAAA,GAAI,IAAA,CAAK,eAAA,CAAgB,OAAO,SAAS,CAAA;AAAA,QAClD;AACA,QAAA,OAAO,GAAA;AAAA,MACT,CAAA,EAAG,EAAS,CAAA;AAAA,IACd;AAEA,IAAA,OAAO,GAAA;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,OAAO,mBAAA,CAAoB,MAAA,GAAmB,EAAC,EAA4C;AACzF,IAAA,MAAM,iBAAA,GAAoB;AAAA,MACxB,gBAAA;AAAA,MACA,eAAA;AAAA,MACA,eAAA;AAAA,MACA,cAAA;AAAA,MACA,QAAA;AAAA,MACA,eAAA;AAAA,MACA,gBAAA;AAAA,MACA,aAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,QAAkB,EAAC;AACzB,IAAA,MAAM,WAAqB,EAAC;AAE5B,IAAA,MAAA,CAAO,QAAQ,CAAA,GAAA,KAAO;AACpB,MAAA,IAAI;AACF,QAAA,MAAM,MAAA,GAAS,IAAI,GAAA,CAAI,GAAG,CAAA;AAC1B,QAAA,MAAM,WAAA,GAAc,kBAAkB,IAAA,CAAK,CAAA,OAAA,KAAW,QAAQ,IAAA,CAAK,MAAA,CAAO,QAAQ,CAAC,CAAA;AACnF,QAAA,IAAI,WAAA,EAAa;AACf,UAAA,KAAA,CAAM,KAAK,GAAG,CAAA;AAAA,QAChB,CAAA,MAAO;AACL,UAAA,QAAA,CAAS,IAAA,CAAK,CAAA,iCAAA,EAAoC,GAAG,CAAA,CAAE,CAAA;AAAA,QACzD;AAAA,MACF,SAAS,CAAA,EAAG;AACV,QAAA,QAAA,CAAS,IAAA,CAAK,CAAA,oBAAA,EAAuB,GAAG,CAAA,CAAE,CAAA;AAAA,MAC5C;AAAA,IACF,CAAC,CAAA;AAED,IAAA,OAAO,EAAE,OAAO,QAAA,EAAS;AAAA,EAC3B;AACF,CAAA;;;ACjBO,SAAS,uBAAuB,MAAA,EAA8E;AACnH,EAAA,IAAI,MAAA,CAAO,SAAS,cAAA,EAAgB;AAElC,IAAA,MAAM,SAAA,GAAgC;AAAA,MACpC,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,GAAI,MAAA,CAAO,aAAA,IAAiB,EAAE,aAAA,EAAe,OAAO,aAAA,EAAc;AAAA,MAClE,GAAI,MAAA,CAAO,GAAA,IAAO,EAAE,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,MACpC,GAAI,MAAA,CAAO,OAAA,IAAW,EAAE,IAAA,EAAM,OAAO,OAAA,EAAQ;AAAA,MAC7C,GAAI,MAAA,CAAO,WAAA,IAAe,EAAE,WAAA,EAAa,OAAO,WAAA,EAAY;AAAA,MAC5D,GAAI,MAAA,CAAO,MAAA,IAAU,EAAE,MAAA,EAAQ,OAAO,MAAA,EAAO;AAAA,MAC7C,GAAI,MAAA,CAAO,KAAA,IAAS,EAAE,KAAA,EAAO,OAAO,KAAA,EAAM;AAAA,MAC1C,GAAI,MAAA,CAAO,SAAA,IAAa,EAAE,SAAA,EAAW,OAAO,SAAA,EAAU;AAAA,MACtD,GAAI,MAAA,CAAO,OAAA,IAAW,EAAE,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,MAChD,GAAI,MAAA,CAAO,YAAA,IAAgB,EAAE,YAAA,EAAc,OAAO,YAAA,EAAa;AAAA,MAC/D,GAAI,MAAA,CAAO,YAAA,IAAgB,EAAE,YAAA,EAAc,OAAO,YAAA,EAAa;AAAA,MAC/D,GAAI,OAAO,OAAA,IAAW;AAAA,QACpB,OAAA,EAAS,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,OAAO,IAAI,MAAA,CAAO,OAAA,GAAU,CAAC,MAAA,CAAO,OAAO;AAAA,OAC3E;AAAA,MACA,GAAI,MAAA,CAAO,GAAA,IAAO,EAAE,GAAA,EAAK,OAAO,GAAA;AAAI,KACtC;AACA,IAAA,OAAO,2BAA2B,SAAS,CAAA;AAAA,EAC7C,CAAA,MAAO;AAEL,IAAA,MAAM,YAAA,GAA6B;AAAA,MACjC,MAAM,MAAA,CAAO,IAAA;AAAA,MACb,GAAI,MAAA,CAAO,GAAA,IAAO,EAAE,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,MACpC,GAAI,MAAA,CAAO,QAAA,IAAY,EAAE,KAAA,EAAO,OAAO,QAAA,EAAS;AAAA,MAChD,GAAI,MAAA,CAAO,WAAA,IAAe,EAAE,WAAA,EAAa,OAAO,WAAA,EAAY;AAAA,MAC5D,GAAI,MAAA,CAAO,QAAA,IAAY,EAAE,QAAA,EAAU,OAAO,QAAA,EAAS;AAAA,MACnD,GAAI,MAAA,CAAO,MAAA,IAAU,EAAE,MAAA,EAAQ,OAAO,MAAA,EAAO;AAAA,MAC7C,GAAI,MAAA,CAAO,KAAA,IAAS,EAAE,KAAA,EAAO,OAAO,KAAA,EAAM;AAAA,MAC1C,GAAI,MAAA,CAAO,SAAA,IAAa,EAAE,SAAA,EAAW,OAAO,SAAA,EAAU;AAAA,MACtD,GAAI,MAAA,CAAO,OAAA,IAAW,EAAE,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,MAChD,GAAI,MAAA,CAAO,QAAA,IAAY,EAAE,QAAA,EAAU,OAAO,QAAA,EAAS;AAAA,MACnD,GAAI,MAAA,CAAO,GAAA,IAAO,EAAE,GAAA,EAAK,OAAO,GAAA;AAAI,KACtC;AACA,IAAA,OAAO,qBAAqB,YAAY,CAAA;AAAA,EAC1C;AACF;AAkBO,SAAS,2BAA2B,MAAA,EAA0C;AAEnF,EAAA,IAAI,MAAA,CAAO,GAAA,EAAK,wBAAA,IAA4B,MAAA,CAAO,MAAA,EAAQ;AACzD,IAAA,MAAM,EAAE,QAAA,EAAS,GAAI,YAAA,CAAa,mBAAA,CAAoB,OAAO,MAAM,CAAA;AACnE,IAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,MAAA,OAAA,CAAQ,IAAA,CAAK,sDAAsD,QAAQ,CAAA;AAAA,IAC7E;AAAA,EACF;AAGA,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,UAAA,EAAY,oBAAA;AAAA,IACZ,OAAA,EAAS,cAAA;AAAA,IACT,MAAM,MAAA,CAAO,IAAA;AAAA,IACb,GAAI,MAAA,CAAO,aAAA,IAAiB,EAAE,aAAA,EAAe,OAAO,aAAA,EAAc;AAAA,IAClE,GAAI,MAAA,CAAO,GAAA,IAAO,EAAE,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,IACpC,GAAI,MAAA,CAAO,WAAA,IAAe,EAAE,WAAA,EAAa,OAAO,WAAA,EAAY;AAAA,IAC5D,GAAI,MAAA,CAAO,IAAA,IAAQ,EAAE,IAAA,EAAM,OAAO,IAAA,EAAK;AAAA,IACvC,GAAI,MAAA,CAAO,MAAA,IAAU,MAAA,CAAO,MAAA,CAAO,SAAS,CAAA,IAAK,EAAE,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAO;AAAA,IACzE,GAAI,MAAA,CAAO,KAAA,IAAS,EAAE,KAAA,EAAO,OAAO,KAAA,EAAM;AAAA,IAC1C,GAAI,MAAA,CAAO,SAAA,IAAa,EAAE,SAAA,EAAW,OAAO,SAAA,EAAU;AAAA,IACtD,GAAI,OAAO,OAAA,IAAW;AAAA,MACpB,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,eAAA;AAAA,QACT,GAAG,MAAA,CAAO;AAAA;AACZ,KACF;AAAA,IACA,GAAI,OAAO,YAAA,IAAgB;AAAA,MACzB,YAAA,EAAc;AAAA,QACZ,OAAA,EAAS,cAAA;AAAA,QACT,GAAG,MAAA,CAAO;AAAA;AACZ,KACF;AAAA,IACA,GAAI,MAAA,CAAO,YAAA,IAAgB,EAAE,YAAA,EAAc,OAAO,YAAA,EAAa;AAAA,IAC/D,GAAI,MAAA,CAAO,OAAA,IAAW,EAAE,SAAS,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,OAAO,IAAI,MAAA,CAAO,OAAA,GAAU,CAAC,MAAA,CAAO,OAAO,CAAA,EAAE;AAAA,IACnG,GAAI,MAAA,CAAO,iBAAA,IAAqB,EAAE,iBAAA,EAAmB,OAAO,iBAAA;AAAkB,GAChF;AAGA,EAAA,MAAM,MAAA,GAAS,kBAAA,CAAmB,KAAA,CAAM,MAAM,CAAA;AAE9C,EAAA,IAAI,OAAO,GAAA,EAAK;AACd,IAAA,OAAO,YAAA,CAAa,eAAA,CAAgB,MAAA,EAAQ,MAAA,CAAO,IAAI,cAAc,CAAA;AAAA,EACvE;AAEA,EAAA,OAAO,MAAA;AACT;AAkBO,SAAS,qBAAqB,MAAA,EAA8B;AAEjE,EAAA,IAAI,MAAA,CAAO,GAAA,EAAK,wBAAA,IAA4B,MAAA,CAAO,MAAA,EAAQ;AACzD,IAAA,MAAM,EAAE,QAAA,EAAS,GAAI,YAAA,CAAa,mBAAA,CAAoB,OAAO,MAAM,CAAA;AACnE,IAAA,IAAI,QAAA,CAAS,SAAS,CAAA,EAAG;AACvB,MAAA,OAAA,CAAQ,IAAA,CAAK,sDAAsD,QAAQ,CAAA;AAAA,IAC7E;AAAA,EACF;AAGA,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,UAAA,EAAY,oBAAA;AAAA,IACZ,OAAA,EAAS,QAAA;AAAA,IACT,MAAM,MAAA,CAAO,IAAA;AAAA,IACb,GAAI,MAAA,CAAO,GAAA,IAAO,EAAE,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,IACpC,GAAI,MAAA,CAAO,WAAA,IAAe,EAAE,WAAA,EAAa,OAAO,WAAA,EAAY;AAAA,IAC5D,GAAI,MAAA,CAAO,KAAA,IAAS,EAAE,KAAA,EAAO,OAAO,KAAA,EAAM;AAAA,IAC1C,GAAI,MAAA,CAAO,MAAA,IAAU,MAAA,CAAO,MAAA,CAAO,SAAS,CAAA,IAAK,EAAE,MAAA,EAAQ,MAAA,CAAO,MAAA,EAAO;AAAA,IACzE,GAAI,MAAA,CAAO,KAAA,IAAS,EAAE,KAAA,EAAO,OAAO,KAAA,EAAM;AAAA,IAC1C,GAAI,MAAA,CAAO,SAAA,IAAa,EAAE,SAAA,EAAW,OAAO,SAAA,EAAU;AAAA,IACtD,GAAI,OAAO,OAAA,IAAW;AAAA,MACpB,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,eAAA;AAAA,QACT,GAAG,MAAA,CAAO;AAAA;AACZ,KACF;AAAA,IACA,GAAI,MAAA,CAAO,QAAA,IAAY,EAAE,QAAA,EAAU,OAAO,QAAA,EAAS;AAAA,IACnD,GAAI,OAAO,QAAA,IAAY;AAAA,MACrB,QAAA,EAAU,OAAO,MAAA,CAAO,QAAA,KAAa,QAAA,GACjC,EAAE,OAAA,EAAS,cAAA,EAAyB,IAAA,EAAM,MAAA,CAAO,QAAA,EAAS,GAC1D,MAAA,CAAO;AAAA,KACb;AAAA,IACA,GAAI,MAAA,CAAO,SAAA,IAAa,EAAE,SAAA,EAAW,OAAO,SAAA;AAAU,GACxD;AAGA,EAAA,MAAM,MAAA,GAAS,YAAA,CAAa,KAAA,CAAM,MAAM,CAAA;AAExC,EAAA,IAAI,OAAO,GAAA,EAAK;AACd,IAAA,OAAO,YAAA,CAAa,eAAA,CAAgB,MAAA,EAAQ,MAAA,CAAO,IAAI,cAAc,CAAA;AAAA,EACvE;AAEA,EAAA,OAAO,MAAA;AACT;AAiBO,SAAS,gBAAgB,MAAA,EAAuC;AACrE,EAAA,OAAO,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,IAAA,EAAM,CAAC,CAAA;AACvC;AAmBO,SAAS,kBAAkB,MAAA,EAAuC;AACvE,EAAA,MAAM,UAAA,GAAa,gBAAgB,MAAM,CAAA;AACzC,EAAA,OAAO,CAAA;AAAA,EAAwC,UAAU;AAAA,SAAA,CAAA;AAC3D;;;AC3OO,SAAS,sBAAsB,MAAA,EAAgC;AACpE,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,UAAA,EAAY,oBAAA;AAAA,IACZ,OAAA,EAAS,SAAA;AAAA,IACT,MAAM,MAAA,CAAO,IAAA;AAAA,IACb,GAAI,MAAA,CAAO,WAAA,IAAe,EAAE,WAAA,EAAa,OAAO,WAAA,EAAY;AAAA,IAC5D,GAAI,MAAA,CAAO,KAAA,IAAS,EAAE,KAAA,EAAO,OAAO,KAAA,EAAM;AAAA,IAC1C,GAAI,MAAA,CAAO,GAAA,IAAO,EAAE,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,IACpC,GAAI,MAAA,CAAO,IAAA,IAAQ,EAAE,IAAA,EAAM,OAAO,IAAA,EAAK;AAAA,IACvC,GAAI,OAAO,KAAA,IAAS;AAAA,MAClB,KAAA,EAAO;AAAA,QACL,OAAA,EAAS,OAAA;AAAA,QACT,MAAM,MAAA,CAAO;AAAA;AACf,KACF;AAAA,IACA,GAAI,OAAO,MAAA,IAAU;AAAA,MACnB,QAAQ,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,MAAM,IAC/B,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,CAAC,UAAU,YAAA,CAAa,KAAK,CAAC,CAAA,GAChD,YAAA,CAAa,OAAO,MAAM;AAAA,KAChC;AAAA,IACA,GAAI,OAAO,eAAA,IAAmB;AAAA,MAC5B,eAAA,EAAiB;AAAA,QACf,OAAA,EAAS,iBAAA;AAAA,QACT,GAAG,MAAA,CAAO;AAAA;AACZ,KACF;AAAA,IACA,GAAI,MAAA,CAAO,QAAA,IAAY,EAAE,QAAA,EAAU,OAAO,QAAA,EAAS;AAAA,IACnD,GAAI,MAAA,CAAO,KAAA,IAAS,EAAE,KAAA,EAAO,OAAO,KAAA;AAAM,GAC5C;AAEA,EAAA,OAAO,aAAA,CAAc,MAAM,MAAM,CAAA;AACnC;AAKA,SAAS,aAAa,MAAA,EAA4B;AAChD,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,OAAA;AAAA,IACT,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,eAAe,MAAA,CAAO,aAAA;AAAA,IACtB,GAAI,MAAA,CAAO,YAAA,IAAgB,EAAE,YAAA,EAAc,OAAO,YAAA,EAAa;AAAA,IAC/D,GAAI,MAAA,CAAO,GAAA,IAAO,EAAE,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,IACpC,GAAI,MAAA,CAAO,eAAA,IAAmB,EAAE,eAAA,EAAiB,OAAO,eAAA,EAAgB;AAAA,IACxE,GAAI,OAAO,MAAA,IAAU;AAAA,MACnB,MAAA,EAAQ;AAAA,QACN,OAAA,EAAS,cAAA;AAAA,QACT,IAAA,EAAM,OAAO,MAAA,CAAO;AAAA;AACtB;AACF,GACF;AACF;;;ACrEO,SAAS,sBAAsB,MAAA,EAAgC;AACpE,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,UAAA,EAAY,oBAAA;AAAA,IACZ,OAAA,EAAS,SAAA;AAAA,IACT,UAAU,MAAA,CAAO,QAAA;AAAA,IACjB,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,MAAA,EAAQ,aAAA,CAAc,MAAA,CAAO,MAAM,CAAA;AAAA,IACnC,eAAe,MAAA,CAAO,aAAA;AAAA,IACtB,GAAI,MAAA,CAAO,YAAA,IAAgB,EAAE,YAAA,EAAc,OAAO,YAAA,EAAa;AAAA,IAC/D,GAAI,MAAA,CAAO,WAAA,IAAe,EAAE,WAAA,EAAa,OAAO,WAAA,EAAY;AAAA,IAC5D,GAAI,MAAA,CAAO,WAAA,IAAe,EAAE,WAAA,EAAa,OAAO,WAAA,EAAY;AAAA,IAC5D,GAAI,OAAO,SAAA,IAAa;AAAA,MACtB,SAAA,EAAW;AAAA,QACT,OAAA,EAAS,cAAA;AAAA,QACT,IAAA,EAAM,OAAO,SAAA,CAAU,IAAA;AAAA,QACvB,GAAI,MAAA,CAAO,SAAA,CAAU,IAAA,IAAQ;AAAA,UAC3B,IAAA,EAAM;AAAA,YACJ,OAAA,EAAS,aAAA;AAAA,YACT,GAAA,EAAK,OAAO,SAAA,CAAU;AAAA;AACxB;AACF;AACF,KACF;AAAA,IACA,GAAI,MAAA,CAAO,GAAA,IAAO,EAAE,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,IACpC,GAAI,MAAA,CAAO,QAAA,IAAY,EAAE,QAAA,EAAU,OAAO,QAAA,EAAS;AAAA,IACnD,GAAI,MAAA,CAAO,cAAA,IAAkB,EAAE,cAAA,EAAgB,OAAO,cAAA;AAAe,GACvE;AAEA,EAAA,MAAM,MAAA,GAAS,aAAA,CAAc,KAAA,CAAM,MAAM,CAAA;AAEzC,EAAA,IAAI,OAAO,GAAA,EAAK;AACd,IAAA,OAAO,YAAA,CAAa,eAAA,CAAgB,MAAA,EAAQ,MAAA,CAAO,IAAI,cAAc,CAAA;AAAA,EACvE;AAEA,EAAA,OAAO,MAAA;AACT;AAKA,SAAS,cACP,MAAA,EACA;AACA,EAAA,IAAI,OAAO,WAAW,QAAA,EAAU;AAC9B,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,QAAA;AAAA,MACT,IAAA,EAAM;AAAA,KACR;AAAA,EACF;AAEA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EAAG;AACzB,IAAA,OAAO,MAAA,CAAO,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MACxB,OAAA,EAAS,QAAA;AAAA,MACT,MAAM,CAAA,CAAE,IAAA;AAAA,MACR,GAAI,CAAA,CAAE,GAAA,IAAO,EAAE,GAAA,EAAK,EAAE,GAAA;AAAI,KAC5B,CAAE,CAAA;AAAA,EACJ;AAEA,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,QAAA;AAAA,IACT,MAAM,MAAA,CAAO,IAAA;AAAA,IACb,GAAI,MAAA,CAAO,GAAA,IAAO,EAAE,GAAA,EAAK,OAAO,GAAA;AAAI,GACtC;AACF;;;ACrEO,SAAS,kBAAkB,MAAA,EAA4B;AAC5D,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,UAAA,EAAY,oBAAA;AAAA,IACZ,OAAA,EAAS,SAAA;AAAA,IACT,UAAA,EAAY,MAAA,CAAO,SAAA,CAAU,GAAA,CAAI,CAAC,CAAA,MAAO;AAAA,MACvC,OAAA,EAAS,UAAA;AAAA,MACT,MAAM,CAAA,CAAE,QAAA;AAAA,MACR,cAAA,EAAgB;AAAA,QACd,OAAA,EAAS,QAAA;AAAA,QACT,MAAM,CAAA,CAAE;AAAA;AACV,KACF,CAAE;AAAA,GACJ;AAEA,EAAA,OAAO,aAAA,CAAc,MAAM,MAAM,CAAA;AACnC;;;ACnBO,SAAS,yBAAyB,MAAA,EAA0C;AACjF,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,UAAA,EAAY,oBAAA;AAAA,IACZ,OAAA,EAAS,gBAAA;AAAA,IACT,iBAAiB,MAAA,CAAO,KAAA,CAAM,GAAA,CAAI,CAAC,MAAM,KAAA,MAAW;AAAA,MAClD,OAAA,EAAS,UAAA;AAAA,MACT,UAAU,KAAA,GAAQ,CAAA;AAAA,MAClB,MAAM,IAAA,CAAK,IAAA;AAAA,MACX,GAAI,IAAA,CAAK,GAAA,IAAO,EAAE,IAAA,EAAM,KAAK,GAAA;AAAI,KACnC,CAAE;AAAA,GACJ;AAEA,EAAA,OAAO,oBAAA,CAAqB,MAAM,MAAM,CAAA;AAC1C;;;ACmBO,SAAS,sBAAsB,MAAA,EAAoC;AACxE,EAAA,MAAM,SAAA,GAAY,eAAA,CAAgB,KAAA,CAAM,MAAM,CAAA;AAE9C,EAAA,MAAM,IAAA,GAAkB;AAAA,IACtB,EAAE,QAAA,EAAU,UAAA,EAAY,OAAA,EAAS,UAAU,KAAA,EAAM;AAAA,IACjD,EAAE,QAAA,EAAU,gBAAA,EAAkB,OAAA,EAAS,UAAU,WAAA,EAAY;AAAA,IAC7D,EAAE,QAAA,EAAU,QAAA,EAAU,OAAA,EAAS,UAAU,GAAA,EAAI;AAAA,IAC7C,EAAE,QAAA,EAAU,SAAA,EAAW,OAAA,EAAS,UAAU,IAAA,EAAK;AAAA,IAC/C,EAAE,QAAA,EAAU,UAAA,EAAY,OAAA,EAAS,UAAU,KAAA,EAAM;AAAA,IACjD,EAAE,QAAA,EAAU,WAAA,EAAa,OAAA,EAAS,UAAU,MAAA;AAAO,GACrD;AAEA,EAAA,IAAI,UAAU,QAAA,EAAU;AACtB,IAAA,IAAA,CAAK,KAAK,EAAE,QAAA,EAAU,gBAAgB,OAAA,EAAS,SAAA,CAAU,UAAU,CAAA;AAAA,EACrE;AAEA,EAAA,IAAI,UAAU,QAAA,EAAU;AACtB,IAAA,IAAA,CAAK,KAAK,EAAE,QAAA,EAAU,gBAAgB,OAAA,EAAS,SAAA,CAAU,UAAU,CAAA;AAAA,EACrE;AAGA,EAAA,IAAI,SAAA,CAAU,SAAS,SAAA,EAAW;AAChC,IAAA,IAAI,UAAU,aAAA,EAAe;AAC3B,MAAA,IAAA,CAAK,KAAK,EAAE,QAAA,EAAU,0BAA0B,OAAA,EAAS,SAAA,CAAU,eAAe,CAAA;AAAA,IACpF;AACA,IAAA,IAAI,UAAU,YAAA,EAAc;AAC1B,MAAA,IAAA,CAAK,KAAK,EAAE,QAAA,EAAU,yBAAyB,OAAA,EAAS,SAAA,CAAU,cAAc,CAAA;AAAA,IAClF;AACA,IAAA,IAAI,UAAU,MAAA,EAAQ;AACpB,MAAA,IAAA,CAAK,KAAK,EAAE,QAAA,EAAU,kBAAkB,OAAA,EAAS,SAAA,CAAU,QAAQ,CAAA;AAAA,IACrE;AACA,IAAA,IAAI,UAAU,OAAA,EAAS;AACrB,MAAA,IAAA,CAAK,KAAK,EAAE,QAAA,EAAU,mBAAmB,OAAA,EAAS,SAAA,CAAU,SAAS,CAAA;AAAA,IACvE;AACA,IAAA,IAAI,UAAU,IAAA,EAAM;AAClB,MAAA,SAAA,CAAU,IAAA,CAAK,QAAQ,CAAA,GAAA,KAAO;AAC5B,QAAA,IAAA,CAAK,KAAK,EAAE,QAAA,EAAU,aAAA,EAAe,OAAA,EAAS,KAAK,CAAA;AAAA,MACrD,CAAC,CAAA;AAAA,IACH;AAAA,EACF;AAGA,EAAA,IAAI,SAAA,CAAU,SAAS,SAAA,EAAW;AAChC,IAAA,IAAI,UAAU,KAAA,EAAO;AACnB,MAAA,IAAA,CAAK,IAAA,CAAK,EAAE,QAAA,EAAU,sBAAA,EAAwB,SAAS,MAAA,CAAO,SAAA,CAAU,KAAK,CAAA,EAAG,CAAA;AAAA,IAClF;AACA,IAAA,IAAI,UAAU,QAAA,EAAU;AACtB,MAAA,IAAA,CAAK,KAAK,EAAE,QAAA,EAAU,0BAA0B,OAAA,EAAS,SAAA,CAAU,UAAU,CAAA;AAAA,IAC/E;AAAA,EACF;AAEA,EAAA,OAAO,IAAA;AACT;AAmBO,SAAS,wBAAwB,MAAA,EAAsC;AAC5E,EAAA,MAAM,SAAA,GAAY,iBAAA,CAAkB,KAAA,CAAM,MAAM,CAAA;AAEhD,EAAA,MAAM,IAAA,GAAkB;AAAA,IACtB,EAAE,IAAA,EAAM,cAAA,EAAgB,OAAA,EAAS,UAAU,IAAA,EAAK;AAAA,IAChD,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,UAAU,KAAA,EAAM;AAAA,IAClD,EAAE,IAAA,EAAM,qBAAA,EAAuB,OAAA,EAAS,UAAU,WAAA,EAAY;AAAA,IAC9D,EAAE,IAAA,EAAM,eAAA,EAAiB,OAAA,EAAS,UAAU,KAAA;AAAM,GACpD;AAEA,EAAA,IAAI,UAAU,IAAA,EAAM;AAClB,IAAA,IAAA,CAAK,KAAK,EAAE,IAAA,EAAM,gBAAgB,OAAA,EAAS,SAAA,CAAU,MAAM,CAAA;AAAA,EAC7D;AAEA,EAAA,IAAI,UAAU,OAAA,EAAS;AACrB,IAAA,IAAA,CAAK,KAAK,EAAE,IAAA,EAAM,mBAAmB,OAAA,EAAS,SAAA,CAAU,SAAS,CAAA;AAAA,EACnE;AAEA,EAAA,IAAI,UAAU,QAAA,EAAU;AACtB,IAAA,IAAA,CAAK,KAAK,EAAE,IAAA,EAAM,qBAAqB,OAAA,EAAS,SAAA,CAAU,UAAU,CAAA;AAAA,EACtE;AAEA,EAAA,OAAO,IAAA;AACT;AAmBO,SAAS,uBAAuB,MAAA,EAWU;AAC/C,EAAA,MAAM,YAAY,qBAAA,CAAsB;AAAA,IACtC,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,aAAa,MAAA,CAAO,WAAA;AAAA,IACpB,KAAK,MAAA,CAAO,GAAA;AAAA,IACZ,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,GAAI,MAAA,CAAO,QAAA,IAAY,EAAE,QAAA,EAAU,OAAO,QAAA,EAAS;AAAA,IACnD,GAAI,MAAA,CAAO,IAAA,IAAQ,EAAE,IAAA,EAAM,OAAO,IAAA,EAAK;AAAA,IACvC,GAAI,MAAA,CAAO,QAAA,IAAY,EAAE,QAAA,EAAU,OAAO,QAAA;AAAS,GACpD,CAAA;AAED,EAAA,MAAM,UAAU,uBAAA,CAAwB;AAAA,IACtC,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,aAAa,MAAA,CAAO,WAAA;AAAA,IACpB,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,GAAI,MAAA,CAAO,QAAA,IAAY,EAAE,QAAA,EAAU,OAAO,QAAA,EAAS;AAAA,IACnD,GAAI,MAAA,CAAO,WAAA,IAAe,EAAE,IAAA,EAAM,OAAO,WAAA,EAAY;AAAA,IACrD,GAAI,MAAA,CAAO,cAAA,IAAkB,EAAE,OAAA,EAAS,OAAO,cAAA,EAAe;AAAA,IAC9D,GAAI,MAAA,CAAO,WAAA,IAAe,EAAE,IAAA,EAAM,OAAO,WAAA;AAAY,GACtD,CAAA;AAED,EAAA,OAAO,EAAE,WAAW,OAAA,EAAQ;AAC9B;AAQO,SAAS,eAAe,IAAA,EAAyB;AACtD,EAAA,OAAO,IAAA,CACJ,IAAI,CAAA,GAAA,KAAO;AACV,IAAA,MAAM,IAAA,GAAO,IAAI,QAAA,GAAW,CAAA,UAAA,EAAa,IAAI,QAAQ,CAAA,CAAA,CAAA,GAAM,CAAA,MAAA,EAAS,GAAA,CAAI,IAAI,CAAA,CAAA,CAAA;AAC5E,IAAA,OAAO,CAAA,MAAA,EAAS,IAAI,CAAA,UAAA,EAAa,GAAA,CAAI,OAAO,CAAA,IAAA,CAAA;AAAA,EAC9C,CAAC,CAAA,CACA,IAAA,CAAK,IAAI,CAAA;AACd;;;ACjIO,SAAS,4BAA4B,MAAA,EAA4C;AACtF,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,UAAA,EAAY,oBAAA;AAAA,IACZ,OAAA,EAAS,OAAO,IAAA,IAAQ,eAAA;AAAA,IACxB,MAAM,MAAA,CAAO,IAAA;AAAA,IACb,OAAO,MAAA,CAAO,KAAA;AAAA,IACd,OAAA,EAAS;AAAA,MACP,OAAA,EAAS,eAAA;AAAA,MACT,GAAG,MAAA,CAAO;AAAA,KACZ;AAAA,IACA,GAAI,MAAA,CAAO,GAAA,IAAO,EAAE,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,IACpC,GAAI,MAAA,CAAO,SAAA,IAAa,EAAE,SAAA,EAAW,OAAO,SAAA,EAAU;AAAA,IACtD,GAAI,MAAA,CAAO,UAAA,IAAc,EAAE,UAAA,EAAY,OAAO,UAAA,EAAW;AAAA,IACzD,GAAI,OAAO,GAAA,IAAO;AAAA,MAChB,GAAA,EAAK;AAAA,QACH,OAAA,EAAS,gBAAA;AAAA,QACT,QAAA,EAAU,OAAO,GAAA,CAAI,QAAA;AAAA,QACrB,SAAA,EAAW,OAAO,GAAA,CAAI;AAAA;AACxB,KACF;AAAA,IACA,GAAI,OAAO,YAAA,IAAgB;AAAA,MACzB,yBAAA,EAA2B,MAAM,OAAA,CAAQ,MAAA,CAAO,YAAY,CAAA,GACxD,MAAA,CAAO,YAAA,CAAa,GAAA,CAAI,CAAA,KAAA,MAAU;AAAA,QAChC,OAAA,EAAS,2BAAA;AAAA,QACT,GAAG;AAAA,QACH,CAAA,GACF;AAAA,QACE,OAAA,EAAS,2BAAA;AAAA,QACT,GAAG,MAAA,CAAO;AAAA;AACZ,KACN;AAAA,IACA,GAAI,MAAA,CAAO,WAAA,IAAe,EAAE,WAAA,EAAa,OAAO,WAAA,EAAY;AAAA,IAC5D,GAAI,OAAO,eAAA,IAAmB;AAAA,MAC5B,eAAA,EAAiB;AAAA,QACf,OAAA,EAAS,iBAAA;AAAA,QACT,GAAG,MAAA,CAAO;AAAA;AACZ,KACF;AAAA,IACA,GAAI,MAAA,CAAO,aAAA,IAAiB,EAAE,aAAA,EAAe,OAAO,aAAA,EAAc;AAAA,IAClE,GAAI,MAAA,CAAO,IAAA,IAAQ,EAAE,IAAA,EAAM,OAAO,IAAA,EAAK;AAAA,IACvC,GAAI,MAAA,CAAO,mBAAA,KAAwB,UAAa,EAAE,mBAAA,EAAqB,OAAO,mBAAA,EAAoB;AAAA,IAClG,GAAI,MAAA,CAAO,eAAA,IAAmB,EAAE,eAAA,EAAiB,OAAO,eAAA;AAAgB,GAC1E;AAEA,EAAA,OAAO,mBAAA,CAAoB,MAAM,MAAM,CAAA;AACzC;;;ACzCO,SAAS,oBAAoB,MAAA,EAA4B;AAC9D,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,UAAA,EAAY,oBAAA;AAAA,IACZ,OAAA,EAAS,OAAO,IAAA,IAAQ,OAAA;AAAA,IACxB,MAAM,MAAA,CAAO,IAAA;AAAA,IACb,WAAW,MAAA,CAAO,SAAA;AAAA,IAClB,GAAI,MAAA,CAAO,OAAA,IAAW,EAAE,OAAA,EAAS,OAAO,OAAA,EAAQ;AAAA,IAChD,GAAI,OAAO,WAAA,IAAe,EAAE,aAAa,CAAA,mBAAA,EAAsB,MAAA,CAAO,WAAW,CAAA,CAAA,EAAG;AAAA,IACpF,GAAI,OAAO,mBAAA,IAAuB,EAAE,qBAAqB,CAAA,mBAAA,EAAsB,MAAA,CAAO,mBAAmB,CAAA,CAAA,EAAG;AAAA,IAC5G,GAAI,OAAO,QAAA,IAAY;AAAA,MACrB,UAAU,OAAO,MAAA,CAAO,QAAA,KAAa,QAAA,GACjC,OAAO,QAAA,GACP;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,IAAA,EAAM,OAAO,QAAA,CAAS,IAAA;AAAA,QACtB,GAAI,MAAA,CAAO,QAAA,CAAS,OAAA,IAAW;AAAA,UAC7B,OAAA,EAAS,OAAO,MAAA,CAAO,QAAA,CAAS,YAAY,QAAA,GACxC,MAAA,CAAO,SAAS,OAAA,GAChB;AAAA,YACE,OAAA,EAAS,eAAA;AAAA,YACT,GAAG,OAAO,QAAA,CAAS;AAAA;AACrB;AACN;AACF,KACN;AAAA,IACA,GAAI,MAAA,CAAO,KAAA,IAAS,EAAE,KAAA,EAAO,OAAO,KAAA,EAAM;AAAA,IAC1C,GAAI,MAAA,CAAO,WAAA,IAAe,EAAE,WAAA,EAAa,OAAO,WAAA,EAAY;AAAA,IAC5D,GAAI,MAAA,CAAO,GAAA,IAAO,EAAE,GAAA,EAAK,OAAO,GAAA,EAAI;AAAA,IACpC,GAAI,OAAO,SAAA,IAAa;AAAA,MACtB,SAAA,EAAW;AAAA,QACT,OAAA,EAAS,OAAO,SAAA,CAAU,IAAA;AAAA,QAC1B,IAAA,EAAM,OAAO,SAAA,CAAU,IAAA;AAAA,QACvB,GAAI,OAAO,SAAA,CAAU,GAAA,IAAO,EAAE,GAAA,EAAK,MAAA,CAAO,UAAU,GAAA;AAAI;AAC1D,KACF;AAAA,IACA,GAAI,OAAO,SAAA,IAAa;AAAA,MACtB,SAAA,EAAW,MAAM,OAAA,CAAQ,MAAA,CAAO,SAAS,CAAA,GACrC,MAAA,CAAO,SAAA,CAAU,GAAA,CAAI,CAAA,CAAA,MAAM;AAAA,QACzB,SAAS,CAAA,CAAE,IAAA;AAAA,QACX,MAAM,CAAA,CAAE;AAAA,QACR,CAAA,GACF;AAAA,QACE,OAAA,EAAS,OAAO,SAAA,CAAU,IAAA;AAAA,QAC1B,IAAA,EAAM,OAAO,SAAA,CAAU;AAAA;AACzB,KACN;AAAA,IACA,GAAI,OAAO,MAAA,IAAU;AAAA,MACnB,MAAA,EAAQ,MAAM,OAAA,CAAQ,MAAA,CAAO,MAAM,CAAA,GAC/B,MAAA,CAAO,MAAA,CAAO,GAAA,CAAI,CAAA,KAAA,MAAU;AAAA,QAC1B,OAAA,EAAS,OAAA;AAAA,QACT,GAAG,KAAA;AAAA,QACH,GAAI,KAAA,CAAM,YAAA,IAAgB,EAAE,YAAA,EAAc,MAAM,YAAA;AAAa,QAC7D,CAAA,GACF;AAAA,QACE,OAAA,EAAS,OAAA;AAAA,QACT,GAAG,MAAA,CAAO,MAAA;AAAA,QACV,GAAI,OAAO,MAAA,CAAO,YAAA,IAAgB,EAAE,YAAA,EAAc,MAAA,CAAO,OAAO,YAAA;AAAa;AAC/E;AACN,GACF;AAEA,EAAA,OAAO,WAAA,CAAY,MAAM,MAAM,CAAA;AACjC;;;AC3HO,SAAS,sBAAsB,MAAA,EAAgC;AACpE,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,UAAA,EAAY,oBAAA;AAAA,IACZ,OAAA,EAAS,SAAA;AAAA,IACT,MAAM,MAAA,CAAO,IAAA;AAAA,IACb,aAAa,MAAA,CAAO,WAAA;AAAA,IACpB,KAAK,MAAA,CAAO,GAAA;AAAA,IACZ,GAAI,MAAA,CAAO,UAAA,IAAc,EAAE,UAAA,EAAY,OAAO,UAAA,EAAW;AAAA,IACzD,GAAI,MAAA,CAAO,QAAA,IAAY,EAAE,QAAA,EAAU,OAAO,QAAA,EAAS;AAAA,IACnD,GAAI,MAAA,CAAO,UAAA,IAAc,EAAE,UAAA,EAAY,OAAO,UAAA;AAAW,GAC3D;AAGA,EAAA,OAAO,aAAA,CAAc,MAAM,MAAM,CAAA;AACnC","file":"index.js","sourcesContent":["/**\n * Zod schema validation for Schema.org Organization type\n * @module schemas/organization\n */\n\nimport { z } from 'zod';\n\n/**\n * Schema.org PostalAddress validation schema\n */\nexport const PostalAddressSchema = z.object({\n '@type': z.literal('PostalAddress').default('PostalAddress'),\n streetAddress: z.string().optional(),\n addressLocality: z.string().optional(),\n addressRegion: z.string().optional(),\n postalCode: z.string().optional(),\n addressCountry: z.string().length(2).optional(), // ISO 3166-1 alpha-2\n});\n\n/**\n * Schema.org ContactPoint validation schema\n */\nexport const ContactPointSchema = z.object({\n '@type': z.literal('ContactPoint').default('ContactPoint'),\n telephone: z.string().optional(),\n email: z.string().email().optional(),\n contactType: z\n .enum(['customer service', 'technical support', 'sales', 'billing'])\n .optional(),\n areaServed: z.string().optional(),\n availableLanguage: z.array(z.string()).optional(),\n});\n\n/**\n * Schema.org Organization validation schema\n *\n * @see https://schema.org/Organization\n * @see https://developers.google.com/search/docs/appearance/structured-data/organization\n */\nexport const OrganizationSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.literal('Organization').default('Organization'),\n\n // Required fields\n name: z.string().min(1, 'Organization name is required'),\n url: z.string().url('Must be a valid URL'),\n\n // Recommended fields\n logo: z.string().url('Logo must be a valid URL').optional(),\n image: z.string().url('Image must be a valid URL').optional(),\n description: z.string().min(10, 'Description should be at least 10 characters').optional(),\n\n /**\n * CRITICAL for GEO: Entity disambiguation\n * Should include at least one social profile or authority ID (Wikidata, Wikipedia, etc.)\n */\n sameAs: z\n .array(z.string().url())\n .min(1, 'At least one sameAs URL is required for entity disambiguation')\n .describe('Social profiles, Wikidata ID, Wikipedia URL for entity disambiguation'),\n\n // Contact information\n email: z.string().email().optional(),\n telephone: z.string().optional(),\n address: PostalAddressSchema.optional(),\n contactPoint: z.union([ContactPointSchema, z.array(ContactPointSchema)]).optional(),\n\n // Additional information\n alternateName: z.string().optional(),\n foundingDate: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/, 'Must be in YYYY-MM-DD format').optional(),\n founder: z.array(z.string()).optional(),\n\n // Relationships\n parentOrganization: z.string().optional(),\n subOrganization: z.array(z.string()).optional(),\n});\n\n/**\n * TypeScript type inferred from Zod schema\n */\nexport type Organization = z.infer<typeof OrganizationSchema>;\n\n/**\n * Input type for creating Organization schema (before defaults are applied)\n */\nexport type OrganizationInput = z.input<typeof OrganizationSchema>;\n","/**\n * Zod schema validation for Schema.org Person type\n * @module schemas/person\n */\n\nimport { z } from 'zod';\n\nimport { PostalAddressSchema } from './organization.js';\n\n/**\n * Schema.org Person validation schema\n *\n * @see https://schema.org/Person\n * @see https://developers.google.com/search/docs/appearance/structured-data/person\n */\nexport const PersonSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.literal('Person').default('Person'),\n\n // Required fields\n name: z.string().min(1, 'Person name is required'),\n url: z.string().url('Must be a valid URL').optional(),\n\n // Recommended fields\n image: z.string().url('Image must be a valid URL').optional(),\n description: z.string().min(10, 'Description should be at least 10 characters').optional(),\n\n /**\n * CRITICAL for GEO: Entity disambiguation\n * Should include social profiles, Wikidata ID, Wikipedia URL, etc.\n */\n sameAs: z\n .array(z.string().url())\n .min(1, 'At least one sameAs URL is required for entity disambiguation')\n .describe('Social profiles, Wikidata ID, Wikipedia URL for entity disambiguation'),\n\n // Contact information\n email: z.string().email().optional(),\n telephone: z.string().optional(),\n address: PostalAddressSchema.optional(),\n\n // Professional information\n jobTitle: z.string().optional(),\n worksFor: z\n .object({\n '@type': z.literal('Organization'),\n name: z.string(),\n url: z.string().url().optional(),\n })\n .optional(),\n\n // Additional information\n alternateName: z.string().optional(),\n birthDate: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/, 'Must be in YYYY-MM-DD format').optional(),\n nationality: z.string().optional(),\n\n // Relationships\n colleague: z.array(z.string()).optional(),\n alumniOf: z.string().optional(),\n});\n\n/**\n * TypeScript type inferred from Zod schema\n */\nexport type Person = z.infer<typeof PersonSchema>;\n\n/**\n * Input type for creating Person schema (before defaults are applied)\n */\nexport type PersonInput = z.input<typeof PersonSchema>;\n","/**\n * Zod schema validation for Schema.org Product type\n * @module schemas/product\n */\n\nimport { z } from 'zod';\n\n/**\n * Schema.org Offer validation schema\n */\nexport const OfferSchema = z.object({\n '@type': z.literal('Offer').default('Offer'),\n price: z.union([z.string(), z.number()]),\n priceCurrency: z.string().length(3), // ISO 4217 currency code\n availability: z\n .string()\n .url()\n .optional()\n .describe('e.g., https://schema.org/InStock'),\n url: z.string().url().optional(),\n priceValidUntil: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/).optional(),\n seller: z\n .object({\n '@type': z.literal('Organization'),\n name: z.string(),\n })\n .optional(),\n});\n\n/**\n * Schema.org AggregateRating validation schema\n */\nexport const AggregateRatingSchema = z.object({\n '@type': z.literal('AggregateRating').default('AggregateRating'),\n ratingValue: z.union([z.string(), z.number()]),\n reviewCount: z.number().int().positive(),\n bestRating: z.union([z.string(), z.number()]).optional().default(5),\n worstRating: z.union([z.string(), z.number()]).optional().default(1),\n});\n\n/**\n * Schema.org Review validation schema\n */\nexport const ReviewSchema = z.object({\n '@type': z.literal('Review').default('Review'),\n author: z.object({\n '@type': z.literal('Person'),\n name: z.string(),\n }),\n datePublished: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}$/),\n reviewBody: z.string().min(10),\n reviewRating: z.object({\n '@type': z.literal('Rating'),\n ratingValue: z.union([z.string(), z.number()]),\n bestRating: z.union([z.string(), z.number()]).optional().default(5),\n }),\n});\n\n/**\n * Schema.org Product validation schema\n *\n * @see https://schema.org/Product\n * @see https://developers.google.com/search/docs/appearance/structured-data/product\n */\nexport const ProductSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.literal('Product').default('Product'),\n\n // Required fields\n name: z.string().min(1, 'Product name is required'),\n\n // Recommended fields\n image: z.union([z.string().url(), z.array(z.string().url())]).optional(),\n description: z.string().min(10, 'Description should be at least 10 characters').optional(),\n\n // SKU or other identifiers\n sku: z.string().optional(),\n gtin: z.string().optional(),\n gtin8: z.string().optional(),\n gtin12: z.string().optional(),\n gtin13: z.string().optional(),\n gtin14: z.string().optional(),\n mpn: z.string().optional(),\n\n // Brand\n brand: z\n .object({\n '@type': z.literal('Brand'),\n name: z.string(),\n })\n .optional(),\n\n // Offers (pricing)\n offers: z.union([OfferSchema, z.array(OfferSchema)]).optional(),\n\n // Ratings and Reviews\n aggregateRating: AggregateRatingSchema.optional(),\n review: z.union([ReviewSchema, z.array(ReviewSchema)]).optional(),\n\n // Additional information\n category: z.string().optional(),\n color: z.union([z.string(), z.array(z.string())]).optional(),\n material: z.string().optional(),\n manufacturer: z\n .object({\n '@type': z.literal('Organization'),\n name: z.string(),\n })\n .optional(),\n});\n\n/**\n * TypeScript type inferred from Zod schema\n */\nexport type Product = z.infer<typeof ProductSchema>;\n\n/**\n * Input type for creating Product schema (before defaults are applied)\n */\nexport type ProductInput = z.input<typeof ProductSchema>;\n\nexport type Offer = z.infer<typeof OfferSchema>;\nexport type AggregateRating = z.infer<typeof AggregateRatingSchema>;\nexport type Review = z.infer<typeof ReviewSchema>;\n","/**\n * Zod schema validation for Schema.org Article type\n * @module schemas/article\n */\n\nimport { z } from 'zod';\n\n/**\n * Schema.org Article validation schema\n *\n * @see https://schema.org/Article\n * @see https://developers.google.com/search/docs/appearance/structured-data/article\n */\nexport const ArticleSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z\n .enum(['Article', 'NewsArticle', 'BlogPosting', 'TechArticle'])\n .default('Article'),\n\n // Required fields\n headline: z\n .string()\n .min(1)\n .max(110, 'Headline should be less than 110 characters for optimal SEO'),\n image: z.union([z.string().url(), z.array(z.string().url())]),\n\n // Recommended fields\n author: z\n .union([\n z.object({\n '@type': z.enum(['Person', 'Organization']),\n name: z.string(),\n url: z.string().url().optional(),\n }),\n z.array(\n z.object({\n '@type': z.enum(['Person', 'Organization']),\n name: z.string(),\n url: z.string().url().optional(),\n })\n ),\n ])\n .describe('Author(s) of the article'),\n\n datePublished: z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}Z)?$/, 'Must be ISO 8601 format'),\n\n dateModified: z\n .string()\n .regex(/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}Z)?$/, 'Must be ISO 8601 format')\n .optional(),\n\n // Publisher (recommended for Google News)\n publisher: z\n .object({\n '@type': z.literal('Organization'),\n name: z.string(),\n logo: z\n .object({\n '@type': z.literal('ImageObject'),\n url: z.string().url(),\n width: z.number().optional(),\n height: z.number().optional(),\n })\n .optional(),\n })\n .optional(),\n\n // Content\n description: z.string().min(10).optional(),\n articleBody: z.string().min(50, 'Article body should be at least 50 characters').optional(),\n wordCount: z.number().int().positive().optional(),\n\n // Additional metadata\n url: z.string().url().optional(),\n mainEntityOfPage: z.string().url().optional(),\n keywords: z.union([z.string(), z.array(z.string())]).optional(),\n articleSection: z.string().optional(),\n inLanguage: z.string().optional(),\n});\n\n/**\n * Schema.org BlogPosting validation schema (extends Article)\n */\nexport const BlogPostingSchema = ArticleSchema.extend({\n '@type': z.literal('BlogPosting').default('BlogPosting'),\n});\n\n/**\n * Schema.org NewsArticle validation schema (extends Article)\n */\nexport const NewsArticleSchema = ArticleSchema.extend({\n '@type': z.literal('NewsArticle').default('NewsArticle'),\n dateline: z.string().optional(),\n});\n\n/**\n * TypeScript types inferred from Zod schemas\n */\nexport type Article = z.infer<typeof ArticleSchema>;\nexport type ArticleInput = z.input<typeof ArticleSchema>;\nexport type BlogPosting = z.infer<typeof BlogPostingSchema>;\nexport type NewsArticle = z.infer<typeof NewsArticleSchema>;\n","/**\n * Zod schema validation for Schema.org FAQPage type\n * @module schemas/faq\n */\n\nimport { z } from 'zod';\n\n/**\n * Schema.org Question validation schema\n */\nexport const QuestionSchema = z.object({\n '@type': z.literal('Question').default('Question'),\n name: z.string().min(1, 'Question text is required'),\n acceptedAnswer: z.object({\n '@type': z.literal('Answer').default('Answer'),\n text: z.string().min(1, 'Answer text is required'),\n }),\n});\n\n/**\n * Schema.org FAQPage validation schema\n *\n * @see https://schema.org/FAQPage\n * @see https://developers.google.com/search/docs/appearance/structured-data/faqpage\n */\nexport const FAQPageSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.literal('FAQPage').default('FAQPage'),\n\n mainEntity: z\n .array(QuestionSchema)\n .min(1, 'At least one question is required for FAQ')\n .describe('Array of questions and answers'),\n});\n\n/**\n * TypeScript types inferred from Zod schemas\n */\nexport type Question = z.infer<typeof QuestionSchema>;\nexport type FAQPage = z.infer<typeof FAQPageSchema>;\nexport type FAQPageInput = z.input<typeof FAQPageSchema>;\n","/**\n * Zod schema validation for Schema.org BreadcrumbList type\n * @module schemas/breadcrumb\n */\n\nimport { z } from 'zod';\n\n/**\n * Schema.org ListItem validation schema\n */\nexport const ListItemSchema = z.object({\n '@type': z.literal('ListItem').default('ListItem'),\n position: z.number().int().positive(),\n name: z.string().min(1),\n item: z.string().url().optional(),\n});\n\n/**\n * Schema.org BreadcrumbList validation schema\n *\n * @see https://schema.org/BreadcrumbList\n * @see https://developers.google.com/search/docs/appearance/structured-data/breadcrumb\n */\nexport const BreadcrumbListSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.literal('BreadcrumbList').default('BreadcrumbList'),\n\n itemListElement: z\n .array(ListItemSchema)\n .min(2, 'Breadcrumb list must have at least 2 items')\n .describe('Ordered list of breadcrumb items'),\n});\n\n/**\n * TypeScript types inferred from Zod schemas\n */\nexport type ListItem = z.infer<typeof ListItemSchema>;\nexport type BreadcrumbList = z.infer<typeof BreadcrumbListSchema>;\nexport type BreadcrumbListInput = z.input<typeof BreadcrumbListSchema>;\n","/**\n * Zod schema validation for Schema.org WebPage type\n * @module schemas/webpage\n */\n\nimport { z } from 'zod';\n\n/**\n * Schema.org WebPage validation schema\n *\n * @see https://schema.org/WebPage\n */\nexport const WebPageSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.literal('WebPage').default('WebPage'),\n\n name: z.string().min(1),\n description: z.string().min(10).optional(),\n url: z.string().url(),\n\n // Optional fields\n inLanguage: z.string().optional(),\n isPartOf: z\n .object({\n '@type': z.literal('WebSite'),\n name: z.string(),\n url: z.string().url(),\n })\n .optional(),\n breadcrumb: z\n .object({\n '@type': z.literal('BreadcrumbList'),\n })\n .optional(),\n datePublished: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}Z)?$/).optional(),\n dateModified: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}Z)?$/).optional(),\n author: z\n .object({\n '@type': z.enum(['Person', 'Organization']),\n name: z.string(),\n })\n .optional(),\n});\n\n/**\n * TypeScript types inferred from Zod schemas\n */\nexport type WebPage = z.infer<typeof WebPageSchema>;\nexport type WebPageInput = z.input<typeof WebPageSchema>;\n","/**\n * OpenGraph and Twitter Cards metadata generation\n * @module schemas/opengraph\n */\n\nimport { z } from 'zod';\n\n/**\n * OpenGraph meta tag schema\n */\nexport const OpenGraphSchema = z.object({\n title: z.string().min(1).max(60, 'Title should be less than 60 characters for optimal display'),\n description: z.string().min(1).max(160, 'Description should be less than 160 characters'),\n url: z.string().url(),\n type: z.enum(['website', 'article', 'product', 'book', 'profile', 'music', 'video']).default('website'),\n image: z.string().url(),\n imageAlt: z.string().optional(),\n siteName: z.string().optional(),\n locale: z.string().default('en_US'),\n\n // Article-specific\n publishedTime: z.string().optional(),\n modifiedTime: z.string().optional(),\n author: z.string().optional(),\n section: z.string().optional(),\n tags: z.array(z.string()).optional(),\n\n // Product-specific\n price: z.union([z.string(), z.number()]).optional(),\n currency: z.string().length(3).optional(),\n});\n\n/**\n * Twitter Card meta tag schema\n */\nexport const TwitterCardSchema = z.object({\n card: z.enum(['summary', 'summary_large_image', 'app', 'player']).default('summary_large_image'),\n site: z.string().optional(), // @username\n creator: z.string().optional(), // @username\n title: z.string().min(1).max(70, 'Twitter title should be less than 70 characters'),\n description: z.string().min(1).max(200, 'Twitter description should be less than 200 characters'),\n image: z.string().url(),\n imageAlt: z.string().optional(),\n});\n\n/**\n * TypeScript types\n */\nexport type OpenGraph = z.infer<typeof OpenGraphSchema>;\nexport type TwitterCard = z.infer<typeof TwitterCardSchema>;\nexport type OpenGraphInput = z.input<typeof OpenGraphSchema>;\nexport type TwitterCardInput = z.input<typeof TwitterCardSchema>;\n","/**\n * Zod schema validation for Schema.org LocalBusiness type\n * @module schemas/localbusiness\n */\n\nimport { z } from 'zod';\nimport { PostalAddressSchema } from './organization.js';\n\n/**\n * Geographic coordinates schema\n */\nexport const GeoCoordinatesSchema = z.object({\n '@type': z.literal('GeoCoordinates').default('GeoCoordinates'),\n latitude: z.number().min(-90).max(90),\n longitude: z.number().min(-180).max(180),\n});\n\n/**\n * Opening hours specification schema\n */\nexport const OpeningHoursSchema = z.object({\n '@type': z.literal('OpeningHoursSpecification').default('OpeningHoursSpecification'),\n dayOfWeek: z.union([\n z.enum(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']),\n z.array(z.enum(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'])),\n ]),\n opens: z.string().regex(/^([01]\\d|2[0-3]):([0-5]\\d)$/, 'Must be in HH:MM format'),\n closes: z.string().regex(/^([01]\\d|2[0-3]):([0-5]\\d)$/, 'Must be in HH:MM format'),\n});\n\n/**\n * Schema.org LocalBusiness validation schema\n *\n * @see https://schema.org/LocalBusiness\n * @see https://developers.google.com/search/docs/appearance/structured-data/local-business\n */\nexport const LocalBusinessSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.string().default('LocalBusiness'), // Can be Restaurant, Store, etc.\n\n // Required\n name: z.string().min(1, 'Business name is required'),\n image: z.union([z.string().url(), z.array(z.string().url())]),\n address: PostalAddressSchema,\n\n // Recommended\n '@id': z.string().url().optional(),\n url: z.string().url().optional(),\n telephone: z.string().optional(),\n priceRange: z.string().optional(), // e.g., \"$$\"\n\n // Location\n geo: GeoCoordinatesSchema.optional(),\n\n // Opening hours\n openingHoursSpecification: z.union([\n OpeningHoursSchema,\n z.array(OpeningHoursSchema),\n ]).optional(),\n\n // Ratings\n aggregateRating: z.object({\n '@type': z.literal('AggregateRating'),\n ratingValue: z.union([z.string(), z.number()]),\n reviewCount: z.number().int().positive(),\n }).optional(),\n\n // Additional info\n description: z.string().min(10).optional(),\n servesCuisine: z.union([z.string(), z.array(z.string())]).optional(), // For restaurants\n menu: z.string().url().optional(), // For restaurants\n acceptsReservations: z.union([z.boolean(), z.string()]).optional(),\n paymentAccepted: z.string().optional(),\n});\n\n/**\n * TypeScript types\n */\nexport type LocalBusiness = z.infer<typeof LocalBusinessSchema>;\nexport type LocalBusinessInput = z.input<typeof LocalBusinessSchema>;\nexport type GeoCoordinates = z.infer<typeof GeoCoordinatesSchema>;\nexport type OpeningHours = z.infer<typeof OpeningHoursSchema>;\n","/**\n * Zod schema validation for Schema.org Event type\n * @module schemas/event\n */\n\nimport { z } from 'zod';\n\n/**\n * Schema.org Place (for event location)\n */\nexport const PlaceSchema = z.object({\n '@type': z.literal('Place').default('Place'),\n name: z.string(),\n address: z.union([\n z.string(),\n z.object({\n '@type': z.literal('PostalAddress'),\n streetAddress: z.string().optional(),\n addressLocality: z.string().optional(),\n addressRegion: z.string().optional(),\n postalCode: z.string().optional(),\n addressCountry: z.string().optional(),\n }),\n ]).optional(),\n});\n\n/**\n * Schema.org Offer (for event tickets)\n */\nexport const EventOfferSchema = z.object({\n '@type': z.literal('Offer').default('Offer'),\n url: z.string().url().optional(),\n price: z.union([z.string(), z.number()]),\n priceCurrency: z.string().length(3),\n availability: z.string().url().optional(),\n validFrom: z.string().optional(),\n});\n\n/**\n * Schema.org Event validation schema\n *\n * @see https://schema.org/Event\n * @see https://developers.google.com/search/docs/appearance/structured-data/event\n */\nexport const EventSchema = z.object({\n '@context': z.literal('https://schema.org').default('https://schema.org'),\n '@type': z.enum(['Event', 'MusicEvent', 'BusinessEvent', 'SportsEvent', 'TheaterEvent', 'EducationEvent']).default('Event'),\n\n // Required\n name: z.string().min(1, 'Event name is required'),\n startDate: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}[+-]\\d{2}:\\d{2})?$/, 'Must be ISO 8601 format'),\n\n // Recommended\n endDate: z.string().regex(/^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}[+-]\\d{2}:\\d{2})?$/, 'Must be ISO 8601 format').optional(),\n eventStatus: z.enum([\n 'https://schema.org/EventScheduled',\n 'https://schema.org/EventCancelled',\n 'https://schema.org/EventMovedOnline',\n 'https://schema.org/EventPostponed',\n 'https://schema.org/EventRescheduled',\n ]).optional(),\n eventAttendanceMode: z.enum([\n 'https://schema.org/OfflineEventAttendanceMode',\n 'https://schema.org/OnlineEventAttendanceMode',\n 'https://schema.org/MixedEventAttendanceMode',\n ]).optional(),\n\n location: z.union([PlaceSchema, z.string().url()]).optional(), // Can be Place or VirtualLocation URL\n\n image: z.union([z.string().url(), z.array(z.string().url())]).optional(),\n description: z.string().min(10).optional(),\n\n // Organizer\n organizer: z.object({\n '@type': z.enum(['Organization', 'Person']),\n name: z.string(),\n url: z.string().url().optional(),\n }).optional(),\n\n // Performer\n performer: z.union([\n z.object({\n '@type': z.enum(['Person', 'PerformingGroup']),\n name: z.string(),\n }),\n z.array(z.object({\n '@type': z.enum(['Person', 'PerformingGroup']),\n name: z.string(),\n })),\n ]).optional(),\n\n // Offers (tickets)\n offers: z.union([EventOfferSchema, z.array(EventOfferSchema)]).optional(),\n\n // Additional\n url: z.string().url().optional(),\n});\n\n/**\n * TypeScript types\n */\nexport type Event = z.infer<typeof EventSchema>;\nexport type EventInput = z.input<typeof EventSchema>;\nexport type Place = z.infer<typeof PlaceSchema>;\nexport type EventOffer = z.infer<typeof EventOfferSchema>;\n","import { type ContentDensity } from '../types/config.js';\n\n/**\n * GEO Processor Engine\n * Handles optimization logic for Generative Engine Optimization\n */\nexport class GeoProcessor {\n /**\n * Optimizes schema density based on configuration.\n * Removes nulls, undefined, and non-essential fields for 'high' density (AI-focused).\n */\n static optimizeDensity(schema: Record<string, any>, density: ContentDensity = 'low'): Record<string, any> {\n if (density === 'low') {\n return this.pruneEmpty(schema);\n }\n\n // High/Medium density optimization\n const optimized = this.pruneEmpty(schema);\n\n if (density === 'high') {\n // For HIGH density (AI focus), we remove decorative fields that waste tokens\n // but keep semantic identifiers\n const aiEssentialKeys = [\n '@context', '@type', 'name', 'headline', 'description', \n 'url', 'sameAs', 'author', 'datePublished', 'publisher',\n 'itemListElement', 'item', 'position'\n ];\n\n return this.filterRecursive(optimized, (key) => aiEssentialKeys.includes(key));\n }\n\n return optimized;\n }\n\n /**\n * Recursively removes null, undefined, and empty strings/arrays\n */\n private static pruneEmpty(obj: any): any {\n if (Array.isArray(obj)) {\n return obj\n .map(v => this.pruneEmpty(v))\n .filter(v => v !== null && v !== undefined && v !== '');\n }\n\n if (obj !== null && typeof obj === 'object') {\n return Object.entries(obj).reduce((acc, [key, value]) => {\n const pruned = this.pruneEmpty(value);\n // Keep non-empty values\n if (pruned !== null && pruned !== undefined && pruned !== '' && \n (!Array.isArray(pruned) || pruned.length > 0) &&\n (typeof pruned !== 'object' || Object.keys(pruned).length > 0)) {\n acc[key] = pruned;\n }\n return acc;\n }, {} as any);\n }\n\n return obj;\n }\n\n /**\n * Filter object keys recursively based on a predicate\n */\n private static filterRecursive(obj: any, predicate: (key: string) => boolean): any {\n if (Array.isArray(obj)) {\n return obj.map(v => this.filterRecursive(v, predicate));\n }\n\n if (obj !== null && typeof obj === 'object') {\n return Object.entries(obj).reduce((acc, [key, value]) => {\n // Always keep @type and @context as they are structural\n if (key === '@type' || key === '@context' || predicate(key)) {\n acc[key] = this.filterRecursive(value, predicate);\n }\n return acc;\n }, {} as any);\n }\n\n return obj;\n }\n\n /**\n * Validates authority links to prevent hallucinations.\n * Checks if sameAs links match known authoritative patterns.\n */\n static validateAuthorities(sameAs: string[] = []): { valid: string[], warnings: string[] } {\n const authorityPatterns = [\n /wikipedia\\.org/,\n /wikidata\\.org/,\n /linkedin\\.com/,\n /twitter\\.com/,\n /x\\.com/,\n /facebook\\.com/,\n /instagram\\.com/,\n /github\\.com/,\n /crunchbase\\.com/\n ];\n\n const valid: string[] = [];\n const warnings: string[] = [];\n\n sameAs.forEach(url => {\n try {\n const parsed = new URL(url);\n const isAuthority = authorityPatterns.some(pattern => pattern.test(parsed.hostname));\n if (isAuthority) {\n valid.push(url);\n } else {\n warnings.push(`Low authority or unknown source: ${url}`);\n }\n } catch (e) {\n warnings.push(`Invalid URL format: ${url}`);\n }\n });\n\n return { valid, warnings };\n }\n}\n","/**\n * Identity schema generator (Organization/Person)\n * @module generators/identity\n */\n\nimport type { IdentityConfig, PostalAddress, ContactPoint, GeoConfig } from '../types/config.js';\nimport type { Organization, Person } from '../schemas/index.js';\nimport { OrganizationSchema, PersonSchema } from '../schemas/index.js';\nimport { GeoProcessor } from '../geo/processor.js';\n\n/**\n * Configuration for generating Organization schema\n */\nexport interface OrganizationConfig {\n name: string;\n alternateName?: string;\n url?: string;\n logo?: string;\n description?: string;\n sameAs?: string[];\n email?: string;\n telephone?: string;\n address?: PostalAddress;\n contactPoint?: ContactPoint;\n foundingDate?: string;\n founder?: string | string[];\n founders?: string[];\n numberOfEmployees?: number;\n /**\n * GEO optimization settings\n */\n geo?: Partial<GeoConfig>;\n}\n\n/**\n * Configuration for generating Person schema\n */\nexport interface PersonConfig {\n name: string;\n url?: string;\n image?: string;\n description?: string;\n jobTitle?: string;\n sameAs?: string[];\n email?: string;\n telephone?: string;\n address?: PostalAddress;\n worksFor?: { '@type': 'Organization'; name: string } | string;\n birthDate?: string;\n /**\n * GEO optimization settings\n */\n geo?: Partial<GeoConfig>;\n}\n\n/**\n * Generates a validated JSON-LD schema for Organization or Person identity\n *\n * This is the core function for creating your website's root entity,\n * which serves as the anchor for all semantic relationships.\n *\n * @param config - Identity configuration (name, URL, social profiles, etc.)\n * @returns Validated JSON-LD schema ready to inject into <script type=\"application/ld+json\">\n *\n * @throws {z.ZodError} If validation fails (invalid URLs, missing required fields, etc.)\n *\n * @example\n * ```typescript\n * // Organization example\n * const orgSchema = generateIdentitySchema({\n * type: 'Organization',\n * name: 'Acme Corp',\n * url: 'https://acme.com',\n * logoUrl: 'https://acme.com/logo.png',\n * sameAs: [\n * 'https://twitter.com/acme',\n * 'https://www.wikidata.org/wiki/Q123456'\n * ],\n * email: 'contact@acme.com',\n * telephone: '+1-555-0100'\n * });\n * ```\n *\n * @example\n * ```typescript\n * // Person example\n * const personSchema = generateIdentitySchema({\n * type: 'Person',\n * name: 'John Doe',\n * url: 'https://johndoe.com',\n * imageUrl: 'https://johndoe.com/photo.jpg',\n * sameAs: [\n * 'https://twitter.com/johndoe',\n * 'https://linkedin.com/in/johndoe'\n * ],\n * jobTitle: 'Senior Software Architect',\n * worksFor: 'Acme Corp'\n * });\n * ```\n */\nexport function generateIdentitySchema(config: IdentityConfig & { geo?: Partial<GeoConfig> }): Organization | Person {\n if (config.type === 'Organization') {\n // Convert IdentityConfig to OrganizationConfig\n const orgConfig: OrganizationConfig = {\n name: config.name,\n ...(config.alternateName && { alternateName: config.alternateName }),\n ...(config.url && { url: config.url }),\n ...(config.logoUrl && { logo: config.logoUrl }),\n ...(config.description && { description: config.description }),\n ...(config.sameAs && { sameAs: config.sameAs }),\n ...(config.email && { email: config.email }),\n ...(config.telephone && { telephone: config.telephone }),\n ...(config.address && { address: config.address }),\n ...(config.contactPoint && { contactPoint: config.contactPoint }),\n ...(config.foundingDate && { foundingDate: config.foundingDate }),\n ...(config.founder && {\n founder: Array.isArray(config.founder) ? config.founder : [config.founder]\n }),\n ...(config.geo && { geo: config.geo }),\n };\n return generateOrganizationSchema(orgConfig);\n } else {\n // Convert IdentityConfig to PersonConfig\n const personConfig: PersonConfig = {\n name: config.name,\n ...(config.url && { url: config.url }),\n ...(config.imageUrl && { image: config.imageUrl }),\n ...(config.description && { description: config.description }),\n ...(config.jobTitle && { jobTitle: config.jobTitle }),\n ...(config.sameAs && { sameAs: config.sameAs }),\n ...(config.email && { email: config.email }),\n ...(config.telephone && { telephone: config.telephone }),\n ...(config.address && { address: config.address }),\n ...(config.worksFor && { worksFor: config.worksFor }),\n ...(config.geo && { geo: config.geo }),\n };\n return generatePersonSchema(personConfig);\n }\n}\n\n/**\n * Generates Organization JSON-LD schema\n *\n * @param config - Organization configuration\n * @returns Validated Organization schema\n *\n * @example\n * ```typescript\n * const orgSchema = generateOrganizationSchema({\n * name: 'Acme Corp',\n * url: 'https://acme.com',\n * logo: 'https://acme.com/logo.png',\n * sameAs: ['https://twitter.com/acme']\n * });\n * ```\n */\nexport function generateOrganizationSchema(config: OrganizationConfig): Organization {\n // Validate authorities if Hallucination Guard is enabled\n if (config.geo?.enableHallucinationGuard && config.sameAs) {\n const { warnings } = GeoProcessor.validateAuthorities(config.sameAs);\n if (warnings.length > 0) {\n console.warn('[SemanticLayer:GEO] Authority validation warnings:', warnings);\n }\n }\n\n // Build the schema object\n const schema = {\n '@context': 'https://schema.org' as const,\n '@type': 'Organization' as const,\n name: config.name,\n ...(config.alternateName && { alternateName: config.alternateName }),\n ...(config.url && { url: config.url }),\n ...(config.description && { description: config.description }),\n ...(config.logo && { logo: config.logo }),\n ...(config.sameAs && config.sameAs.length > 0 && { sameAs: config.sameAs }),\n ...(config.email && { email: config.email }),\n ...(config.telephone && { telephone: config.telephone }),\n ...(config.address && {\n address: {\n '@type': 'PostalAddress' as const,\n ...config.address,\n },\n }),\n ...(config.contactPoint && {\n contactPoint: {\n '@type': 'ContactPoint' as const,\n ...config.contactPoint,\n },\n }),\n ...(config.foundingDate && { foundingDate: config.foundingDate }),\n ...(config.founder && { founder: Array.isArray(config.founder) ? config.founder : [config.founder] }),\n ...(config.numberOfEmployees && { numberOfEmployees: config.numberOfEmployees }),\n };\n\n // Validate using Zod schema\n const parsed = OrganizationSchema.parse(schema);\n\n if (config.geo) {\n return GeoProcessor.optimizeDensity(parsed, config.geo.contentDensity) as Organization;\n }\n\n return parsed;\n}\n\n/**\n * Generates Person JSON-LD schema\n *\n * @param config - Person configuration\n * @returns Validated Person schema\n *\n * @example\n * ```typescript\n * const personSchema = generatePersonSchema({\n * name: 'John Doe',\n * url: 'https://johndoe.com',\n * image: 'https://johndoe.com/photo.jpg',\n * jobTitle: 'Software Engineer'\n * });\n * ```\n */\nexport function generatePersonSchema(config: PersonConfig): Person {\n // Validate authorities if Hallucination Guard is enabled\n if (config.geo?.enableHallucinationGuard && config.sameAs) {\n const { warnings } = GeoProcessor.validateAuthorities(config.sameAs);\n if (warnings.length > 0) {\n console.warn('[SemanticLayer:GEO] Authority validation warnings:', warnings);\n }\n }\n\n // Build the schema object\n const schema = {\n '@context': 'https://schema.org' as const,\n '@type': 'Person' as const,\n name: config.name,\n ...(config.url && { url: config.url }),\n ...(config.description && { description: config.description }),\n ...(config.image && { image: config.image }),\n ...(config.sameAs && config.sameAs.length > 0 && { sameAs: config.sameAs }),\n ...(config.email && { email: config.email }),\n ...(config.telephone && { telephone: config.telephone }),\n ...(config.address && {\n address: {\n '@type': 'PostalAddress' as const,\n ...config.address,\n },\n }),\n ...(config.jobTitle && { jobTitle: config.jobTitle }),\n ...(config.worksFor && {\n worksFor: typeof config.worksFor === 'string'\n ? { '@type': 'Organization' as const, name: config.worksFor }\n : config.worksFor,\n }),\n ...(config.birthDate && { birthDate: config.birthDate }),\n };\n\n // Validate using Zod schema\n const parsed = PersonSchema.parse(schema);\n\n if (config.geo) {\n return GeoProcessor.optimizeDensity(parsed, config.geo.contentDensity) as Person;\n }\n\n return parsed;\n}\n\n/**\n * Serializes a JSON-LD schema to string for HTML injection\n *\n * @param schema - JSON-LD schema object\n * @returns Formatted JSON string ready for <script type=\"application/ld+json\">\n *\n * @example\n * ```typescript\n * const schema = generateIdentitySchema({ ... });\n * const scriptContent = serializeSchema(schema);\n *\n * // In HTML:\n * // <script type=\"application/ld+json\">{scriptContent}</script>\n * ```\n */\nexport function serializeSchema(schema: Organization | Person): string {\n return JSON.stringify(schema, null, 2);\n}\n\n/**\n * Generates a complete <script> tag with JSON-LD content\n *\n * @param schema - JSON-LD schema object\n * @returns Complete script tag HTML string\n *\n * @example\n * ```typescript\n * const schema = generateIdentitySchema({ ... });\n * const scriptTag = generateScriptTag(schema);\n *\n * // Returns:\n * // <script type=\"application/ld+json\">\n * // { \"@context\": \"https://schema.org\", ... }\n * // </script>\n * ```\n */\nexport function generateScriptTag(schema: Organization | Person): string {\n const serialized = serializeSchema(schema);\n return `<script type=\"application/ld+json\">\\n${serialized}\\n</script>`;\n}\n","/**\n * Product schema generator\n * @module generators/product\n */\n\nimport type { Product, Offer } from '../schemas/index.js';\nimport { ProductSchema } from '../schemas/index.js';\n\n/**\n * Configuration for generating Product schema\n */\nexport interface ProductConfig {\n name: string;\n description?: string;\n image?: string | string[];\n sku?: string;\n gtin?: string;\n brand?: string;\n offers?: OfferConfig | OfferConfig[];\n aggregateRating?: {\n ratingValue: number | string;\n reviewCount: number;\n bestRating?: number | string;\n worstRating?: number | string;\n };\n category?: string;\n color?: string | string[];\n}\n\n/**\n * Configuration for Offer\n */\nexport interface OfferConfig {\n price: number | string;\n priceCurrency: string;\n availability?: string;\n url?: string;\n priceValidUntil?: string;\n seller?: {\n name: string;\n };\n}\n\n/**\n * Generates a validated Product JSON-LD schema\n *\n * @param config - Product configuration\n * @returns Validated Product schema\n *\n * @example\n * ```typescript\n * const product = generateProductSchema({\n * name: 'Premium Wireless Headphones',\n * description: 'High-quality wireless headphones with noise cancellation',\n * image: 'https://example.com/headphones.jpg',\n * sku: 'WH-1000XM5',\n * brand: 'TechBrand',\n * offers: {\n * price: 299.99,\n * priceCurrency: 'USD',\n * availability: 'https://schema.org/InStock',\n * },\n * aggregateRating: {\n * ratingValue: 4.8,\n * reviewCount: 247,\n * },\n * });\n * ```\n */\nexport function generateProductSchema(config: ProductConfig): Product {\n const schema = {\n '@context': 'https://schema.org' as const,\n '@type': 'Product' as const,\n name: config.name,\n ...(config.description && { description: config.description }),\n ...(config.image && { image: config.image }),\n ...(config.sku && { sku: config.sku }),\n ...(config.gtin && { gtin: config.gtin }),\n ...(config.brand && {\n brand: {\n '@type': 'Brand' as const,\n name: config.brand,\n },\n }),\n ...(config.offers && {\n offers: Array.isArray(config.offers)\n ? config.offers.map((offer) => convertOffer(offer))\n : convertOffer(config.offers),\n }),\n ...(config.aggregateRating && {\n aggregateRating: {\n '@type': 'AggregateRating' as const,\n ...config.aggregateRating,\n },\n }),\n ...(config.category && { category: config.category }),\n ...(config.color && { color: config.color }),\n };\n\n return ProductSchema.parse(schema);\n}\n\n/**\n * Helper to convert OfferConfig to Offer schema\n */\nfunction convertOffer(config: OfferConfig): Offer {\n return {\n '@type': 'Offer' as const,\n price: config.price,\n priceCurrency: config.priceCurrency,\n ...(config.availability && { availability: config.availability }),\n ...(config.url && { url: config.url }),\n ...(config.priceValidUntil && { priceValidUntil: config.priceValidUntil }),\n ...(config.seller && {\n seller: {\n '@type': 'Organization' as const,\n name: config.seller.name,\n },\n }),\n };\n}\n","/**\n * Article schema generator\n * @module generators/article\n */\n\nimport type { Article } from '../schemas/index.js';\nimport { ArticleSchema } from '../schemas/index.js';\nimport { GeoProcessor } from '../geo/processor.js';\nimport type { GeoConfig } from '../types/config.js';\n\n/**\n * Configuration for generating Article schema\n */\nexport interface ArticleConfig {\n headline: string;\n image: string | string[];\n author: string | { name: string; url?: string } | Array<{ name: string; url?: string }>;\n datePublished: string;\n dateModified?: string;\n description?: string;\n articleBody?: string;\n publisher?: {\n name: string;\n logo?: string;\n };\n url?: string;\n keywords?: string | string[];\n articleSection?: string;\n /**\n * GEO optimization settings for this specific article\n */\n geo?: Partial<GeoConfig>;\n}\n\n/**\n * Generates a validated Article JSON-LD schema\n *\n * @param config - Article configuration\n * @returns Validated Article schema\n *\n * @example\n * ```typescript\n * const article = generateArticleSchema({\n * headline: 'The Future of GEO in 2026',\n * image: 'https://example.com/article-image.jpg',\n * author: 'John Doe',\n * datePublished: '2026-01-05',\n * geo: { contentDensity: 'high' } // Optimize for LLMs\n * });\n * ```\n */\nexport function generateArticleSchema(config: ArticleConfig): Article {\n const schema = {\n '@context': 'https://schema.org' as const,\n '@type': 'Article' as const,\n headline: config.headline,\n image: config.image,\n author: convertAuthor(config.author),\n datePublished: config.datePublished,\n ...(config.dateModified && { dateModified: config.dateModified }),\n ...(config.description && { description: config.description }),\n ...(config.articleBody && { articleBody: config.articleBody }),\n ...(config.publisher && {\n publisher: {\n '@type': 'Organization' as const,\n name: config.publisher.name,\n ...(config.publisher.logo && {\n logo: {\n '@type': 'ImageObject' as const,\n url: config.publisher.logo,\n },\n }),\n },\n }),\n ...(config.url && { url: config.url }),\n ...(config.keywords && { keywords: config.keywords }),\n ...(config.articleSection && { articleSection: config.articleSection }),\n };\n\n const parsed = ArticleSchema.parse(schema);\n\n if (config.geo) {\n return GeoProcessor.optimizeDensity(parsed, config.geo.contentDensity) as Article;\n }\n\n return parsed;\n}\n\n/**\n * Helper to convert author config to schema format\n */\nfunction convertAuthor(\n author: string | { name: string; url?: string } | Array<{ name: string; url?: string }>\n) {\n if (typeof author === 'string') {\n return {\n '@type': 'Person' as const,\n name: author,\n };\n }\n\n if (Array.isArray(author)) {\n return author.map((a) => ({\n '@type': 'Person' as const,\n name: a.name,\n ...(a.url && { url: a.url }),\n }));\n }\n\n return {\n '@type': 'Person' as const,\n name: author.name,\n ...(author.url && { url: author.url }),\n };\n}\n","/**\n * FAQ schema generator\n * @module generators/faq\n */\n\nimport type { FAQPage } from '../schemas/index.js';\nimport { FAQPageSchema } from '../schemas/index.js';\n\n/**\n * Configuration for a single FAQ question\n */\nexport interface FAQQuestion {\n question: string;\n answer: string;\n}\n\n/**\n * Configuration for generating FAQPage schema\n */\nexport interface FAQConfig {\n questions: FAQQuestion[];\n}\n\n/**\n * Generates a validated FAQPage JSON-LD schema\n *\n * @param config - FAQ configuration with array of questions and answers\n * @returns Validated FAQPage schema\n *\n * @example\n * ```typescript\n * const faq = generateFAQSchema({\n * questions: [\n * {\n * question: 'What is GEO?',\n * answer: 'GEO (Generative Engine Optimization) is the practice of optimizing content for AI search engines like ChatGPT, Gemini, and Perplexity.',\n * },\n * {\n * question: 'How does Semantic Layer help with GEO?',\n * answer: 'Semantic Layer automatically generates validated JSON-LD schemas that help AI models understand and cite your content.',\n * },\n * ],\n * });\n * ```\n */\nexport function generateFAQSchema(config: FAQConfig): FAQPage {\n const schema = {\n '@context': 'https://schema.org' as const,\n '@type': 'FAQPage' as const,\n mainEntity: config.questions.map((q) => ({\n '@type': 'Question' as const,\n name: q.question,\n acceptedAnswer: {\n '@type': 'Answer' as const,\n text: q.answer,\n },\n })),\n };\n\n return FAQPageSchema.parse(schema);\n}\n","/**\n * Breadcrumb schema generator\n * @module generators/breadcrumb\n */\n\nimport type { BreadcrumbList } from '../schemas/index.js';\nimport { BreadcrumbListSchema } from '../schemas/index.js';\n\n/**\n * Configuration for a single breadcrumb item\n */\nexport interface BreadcrumbItem {\n name: string;\n url?: string;\n}\n\n/**\n * Configuration for generating BreadcrumbList schema\n */\nexport interface BreadcrumbConfig {\n items: BreadcrumbItem[];\n}\n\n/**\n * Generates a validated BreadcrumbList JSON-LD schema\n *\n * @param config - Breadcrumb configuration with ordered array of items\n * @returns Validated BreadcrumbList schema\n *\n * @example\n * ```typescript\n * const breadcrumb = generateBreadcrumbSchema({\n * items: [\n * { name: 'Home', url: 'https://example.com' },\n * { name: 'Products', url: 'https://example.com/products' },\n * { name: 'Headphones', url: 'https://example.com/products/headphones' },\n * { name: 'WH-1000XM5' }, // Current page (no URL)\n * ],\n * });\n * ```\n */\nexport function generateBreadcrumbSchema(config: BreadcrumbConfig): BreadcrumbList {\n const schema = {\n '@context': 'https://schema.org' as const,\n '@type': 'BreadcrumbList' as const,\n itemListElement: config.items.map((item, index) => ({\n '@type': 'ListItem' as const,\n position: index + 1,\n name: item.name,\n ...(item.url && { item: item.url }),\n })),\n };\n\n return BreadcrumbListSchema.parse(schema);\n}\n","/**\n * OpenGraph and Twitter Cards meta tag generators\n * @module generators/opengraph\n */\n\nimport { OpenGraphSchema, TwitterCardSchema } from '../schemas/opengraph.js';\n\n/**\n * Meta tag interface\n */\nexport interface MetaTag {\n property?: string;\n name?: string;\n content: string;\n}\n\n/**\n * Configuration for OpenGraph\n */\nexport interface OpenGraphConfig {\n title: string;\n description: string;\n url: string;\n type?: 'website' | 'article' | 'product' | 'book' | 'profile' | 'music' | 'video';\n image: string;\n imageAlt?: string;\n siteName?: string;\n locale?: string;\n\n // Article\n publishedTime?: string;\n modifiedTime?: string;\n author?: string;\n section?: string;\n tags?: string[];\n\n // Product\n price?: number | string;\n currency?: string;\n}\n\n/**\n * Configuration for Twitter Cards\n */\nexport interface TwitterCardConfig {\n card?: 'summary' | 'summary_large_image' | 'app' | 'player';\n site?: string;\n creator?: string;\n title: string;\n description: string;\n image: string;\n imageAlt?: string;\n}\n\n/**\n * Generates OpenGraph meta tags\n *\n * @param config - OpenGraph configuration\n * @returns Array of validated meta tags\n *\n * @example\n * ```typescript\n * const ogTags = generateOpenGraphTags({\n * title: 'Amazing Product',\n * description: 'The best product ever',\n * url: 'https://example.com/product',\n * image: 'https://example.com/image.jpg',\n * type: 'product',\n * price: 99.99,\n * currency: 'USD',\n * });\n * ```\n */\nexport function generateOpenGraphTags(config: OpenGraphConfig): MetaTag[] {\n const validated = OpenGraphSchema.parse(config);\n\n const tags: MetaTag[] = [\n { property: 'og:title', content: validated.title },\n { property: 'og:description', content: validated.description },\n { property: 'og:url', content: validated.url },\n { property: 'og:type', content: validated.type },\n { property: 'og:image', content: validated.image },\n { property: 'og:locale', content: validated.locale },\n ];\n\n if (validated.imageAlt) {\n tags.push({ property: 'og:image:alt', content: validated.imageAlt });\n }\n\n if (validated.siteName) {\n tags.push({ property: 'og:site_name', content: validated.siteName });\n }\n\n // Article-specific\n if (validated.type === 'article') {\n if (validated.publishedTime) {\n tags.push({ property: 'article:published_time', content: validated.publishedTime });\n }\n if (validated.modifiedTime) {\n tags.push({ property: 'article:modified_time', content: validated.modifiedTime });\n }\n if (validated.author) {\n tags.push({ property: 'article:author', content: validated.author });\n }\n if (validated.section) {\n tags.push({ property: 'article:section', content: validated.section });\n }\n if (validated.tags) {\n validated.tags.forEach(tag => {\n tags.push({ property: 'article:tag', content: tag });\n });\n }\n }\n\n // Product-specific\n if (validated.type === 'product') {\n if (validated.price) {\n tags.push({ property: 'product:price:amount', content: String(validated.price) });\n }\n if (validated.currency) {\n tags.push({ property: 'product:price:currency', content: validated.currency });\n }\n }\n\n return tags;\n}\n\n/**\n * Generates Twitter Card meta tags\n *\n * @param config - Twitter Card configuration\n * @returns Array of validated meta tags\n *\n * @example\n * ```typescript\n * const twitterTags = generateTwitterCardTags({\n * card: 'summary_large_image',\n * site: '@mysite',\n * title: 'Amazing Product',\n * description: 'Check out this product',\n * image: 'https://example.com/image.jpg',\n * });\n * ```\n */\nexport function generateTwitterCardTags(config: TwitterCardConfig): MetaTag[] {\n const validated = TwitterCardSchema.parse(config);\n\n const tags: MetaTag[] = [\n { name: 'twitter:card', content: validated.card },\n { name: 'twitter:title', content: validated.title },\n { name: 'twitter:description', content: validated.description },\n { name: 'twitter:image', content: validated.image },\n ];\n\n if (validated.site) {\n tags.push({ name: 'twitter:site', content: validated.site });\n }\n\n if (validated.creator) {\n tags.push({ name: 'twitter:creator', content: validated.creator });\n }\n\n if (validated.imageAlt) {\n tags.push({ name: 'twitter:image:alt', content: validated.imageAlt });\n }\n\n return tags;\n}\n\n/**\n * Generates both OpenGraph and Twitter Card meta tags\n *\n * @param config - Combined configuration\n * @returns Object with separate arrays for og and twitter tags\n *\n * @example\n * ```typescript\n * const { openGraph, twitter } = generateSocialMetaTags({\n * title: 'My Page',\n * description: 'Page description',\n * url: 'https://example.com',\n * image: 'https://example.com/image.jpg',\n * twitterSite: '@mysite',\n * });\n * ```\n */\nexport function generateSocialMetaTags(config: {\n title: string;\n description: string;\n url: string;\n image: string;\n imageAlt?: string;\n type?: OpenGraphConfig['type'];\n siteName?: string;\n twitterSite?: string;\n twitterCreator?: string;\n twitterCard?: TwitterCardConfig['card'];\n}): { openGraph: MetaTag[]; twitter: MetaTag[] } {\n const openGraph = generateOpenGraphTags({\n title: config.title,\n description: config.description,\n url: config.url,\n image: config.image,\n ...(config.imageAlt && { imageAlt: config.imageAlt }),\n ...(config.type && { type: config.type }),\n ...(config.siteName && { siteName: config.siteName }),\n });\n\n const twitter = generateTwitterCardTags({\n title: config.title,\n description: config.description,\n image: config.image,\n ...(config.imageAlt && { imageAlt: config.imageAlt }),\n ...(config.twitterSite && { site: config.twitterSite }),\n ...(config.twitterCreator && { creator: config.twitterCreator }),\n ...(config.twitterCard && { card: config.twitterCard }),\n });\n\n return { openGraph, twitter };\n}\n\n/**\n * Converts meta tags to HTML string\n *\n * @param tags - Array of meta tags\n * @returns HTML string\n */\nexport function metaTagsToHTML(tags: MetaTag[]): string {\n return tags\n .map(tag => {\n const attr = tag.property ? `property=\"${tag.property}\"` : `name=\"${tag.name}\"`;\n return `<meta ${attr} content=\"${tag.content}\" />`;\n })\n .join('\\n');\n}\n","/**\n * LocalBusiness schema generator\n * @module generators/localbusiness\n */\n\nimport type { LocalBusiness } from '../schemas/localbusiness.js';\nimport { LocalBusinessSchema } from '../schemas/localbusiness.js';\n\n/**\n * Day of week type\n */\nexport type DayOfWeek = 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday' | 'Sunday';\n\n/**\n * Opening hours configuration\n */\nexport interface OpeningHoursConfig {\n dayOfWeek: DayOfWeek | DayOfWeek[];\n opens: string; // HH:MM format\n closes: string; // HH:MM format\n}\n\n/**\n * Configuration for LocalBusiness schema\n */\nexport interface LocalBusinessConfig {\n type?: string; // 'Restaurant', 'Store', 'Dentist', etc.\n name: string;\n image: string | string[];\n\n // Address\n address: {\n streetAddress: string;\n addressLocality: string;\n addressRegion: string;\n postalCode: string;\n addressCountry: string;\n };\n\n // Location\n geo?: {\n latitude: number;\n longitude: number;\n };\n\n // Contact\n url?: string;\n telephone?: string;\n priceRange?: string; // '$', '$$', '$$$', '$$$$'\n\n // Hours\n openingHours?: OpeningHoursConfig | OpeningHoursConfig[];\n\n // Additional\n description?: string;\n aggregateRating?: {\n ratingValue: number | string;\n reviewCount: number;\n };\n\n // Restaurant-specific\n servesCuisine?: string | string[];\n menu?: string;\n acceptsReservations?: boolean | string;\n\n // Payment\n paymentAccepted?: string;\n}\n\n/**\n * Generates a validated LocalBusiness JSON-LD schema\n *\n * Perfect for restaurants, stores, offices, dentists, salons, etc.\n *\n * @param config - LocalBusiness configuration\n * @returns Validated LocalBusiness schema\n *\n * @example\n * ```typescript\n * const business = generateLocalBusinessSchema({\n * type: 'Restaurant',\n * name: 'Pizza Palace',\n * image: 'https://example.com/pizza.jpg',\n * address: {\n * streetAddress: '123 Main St',\n * addressLocality: 'New York',\n * addressRegion: 'NY',\n * postalCode: '10001',\n * addressCountry: 'US',\n * },\n * geo: {\n * latitude: 40.7128,\n * longitude: -74.0060,\n * },\n * telephone: '+1-555-0199',\n * priceRange: '$$',\n * servesCuisine: 'Italian',\n * openingHours: [\n * { dayOfWeek: ['Monday', 'Tuesday', 'Wednesday', 'Thursday'], opens: '11:00', closes: '22:00' },\n * { dayOfWeek: ['Friday', 'Saturday'], opens: '11:00', closes: '23:00' },\n * { dayOfWeek: 'Sunday', opens: '12:00', closes: '21:00' },\n * ],\n * });\n * ```\n */\nexport function generateLocalBusinessSchema(config: LocalBusinessConfig): LocalBusiness {\n const schema = {\n '@context': 'https://schema.org' as const,\n '@type': config.type || 'LocalBusiness',\n name: config.name,\n image: config.image,\n address: {\n '@type': 'PostalAddress' as const,\n ...config.address,\n },\n ...(config.url && { url: config.url }),\n ...(config.telephone && { telephone: config.telephone }),\n ...(config.priceRange && { priceRange: config.priceRange }),\n ...(config.geo && {\n geo: {\n '@type': 'GeoCoordinates' as const,\n latitude: config.geo.latitude,\n longitude: config.geo.longitude,\n },\n }),\n ...(config.openingHours && {\n openingHoursSpecification: Array.isArray(config.openingHours)\n ? config.openingHours.map(hours => ({\n '@type': 'OpeningHoursSpecification' as const,\n ...hours,\n }))\n : {\n '@type': 'OpeningHoursSpecification' as const,\n ...config.openingHours,\n },\n }),\n ...(config.description && { description: config.description }),\n ...(config.aggregateRating && {\n aggregateRating: {\n '@type': 'AggregateRating' as const,\n ...config.aggregateRating,\n },\n }),\n ...(config.servesCuisine && { servesCuisine: config.servesCuisine }),\n ...(config.menu && { menu: config.menu }),\n ...(config.acceptsReservations !== undefined && { acceptsReservations: config.acceptsReservations }),\n ...(config.paymentAccepted && { paymentAccepted: config.paymentAccepted }),\n };\n\n return LocalBusinessSchema.parse(schema);\n}\n","/**\n * Event schema generator\n * @module generators/event\n */\n\nimport type { Event } from '../schemas/event.js';\nimport { EventSchema } from '../schemas/event.js';\n\n/**\n * Configuration for Event schema\n */\nexport interface EventConfig {\n type?: 'Event' | 'MusicEvent' | 'BusinessEvent' | 'SportsEvent' | 'TheaterEvent' | 'EducationEvent';\n name: string;\n startDate: string; // ISO 8601\n endDate?: string; // ISO 8601\n\n // Status\n eventStatus?: 'EventScheduled' | 'EventCancelled' | 'EventMovedOnline' | 'EventPostponed' | 'EventRescheduled';\n eventAttendanceMode?: 'OfflineEventAttendanceMode' | 'OnlineEventAttendanceMode' | 'MixedEventAttendanceMode';\n\n // Location\n location?: {\n name: string;\n address?: string | {\n streetAddress?: string;\n addressLocality?: string;\n addressRegion?: string;\n postalCode?: string;\n addressCountry?: string;\n };\n } | string; // URL for virtual events\n\n // Content\n image?: string | string[];\n description?: string;\n url?: string;\n\n // People\n organizer?: {\n type: 'Organization' | 'Person';\n name: string;\n url?: string;\n };\n\n performer?: {\n type: 'Person' | 'PerformingGroup';\n name: string;\n } | Array<{\n type: 'Person' | 'PerformingGroup';\n name: string;\n }>;\n\n // Tickets\n offers?: {\n url?: string;\n price: number | string;\n priceCurrency: string;\n availability?: string;\n validFrom?: string;\n } | Array<{\n url?: string;\n price: number | string;\n priceCurrency: string;\n availability?: string;\n validFrom?: string;\n }>;\n}\n\n/**\n * Generates a validated Event JSON-LD schema\n *\n * Perfect for concerts, conferences, workshops, sports games, theater shows, etc.\n *\n * @param config - Event configuration\n * @returns Validated Event schema\n *\n * @example\n * ```typescript\n * const event = generateEventSchema({\n * type: 'MusicEvent',\n * name: 'Summer Music Festival 2026',\n * startDate: '2026-07-15T18:00:00-05:00',\n * endDate: '2026-07-15T23:00:00-05:00',\n * eventStatus: 'EventScheduled',\n * eventAttendanceMode: 'OfflineEventAttendanceMode',\n * location: {\n * name: 'Central Park',\n * address: {\n * addressLocality: 'New York',\n * addressRegion: 'NY',\n * addressCountry: 'US',\n * },\n * },\n * image: 'https://example.com/festival.jpg',\n * description: 'Annual summer music festival featuring top artists',\n * organizer: {\n * type: 'Organization',\n * name: 'Music Events Inc',\n * },\n * offers: {\n * price: 75,\n * priceCurrency: 'USD',\n * availability: 'https://schema.org/InStock',\n * url: 'https://example.com/tickets',\n * },\n * });\n * ```\n */\nexport function generateEventSchema(config: EventConfig): Event {\n const schema = {\n '@context': 'https://schema.org' as const,\n '@type': config.type || 'Event',\n name: config.name,\n startDate: config.startDate,\n ...(config.endDate && { endDate: config.endDate }),\n ...(config.eventStatus && { eventStatus: `https://schema.org/${config.eventStatus}` }),\n ...(config.eventAttendanceMode && { eventAttendanceMode: `https://schema.org/${config.eventAttendanceMode}` }),\n ...(config.location && {\n location: typeof config.location === 'string'\n ? config.location // Virtual event URL\n : {\n '@type': 'Place' as const,\n name: config.location.name,\n ...(config.location.address && {\n address: typeof config.location.address === 'string'\n ? config.location.address\n : {\n '@type': 'PostalAddress' as const,\n ...config.location.address,\n },\n }),\n },\n }),\n ...(config.image && { image: config.image }),\n ...(config.description && { description: config.description }),\n ...(config.url && { url: config.url }),\n ...(config.organizer && {\n organizer: {\n '@type': config.organizer.type,\n name: config.organizer.name,\n ...(config.organizer.url && { url: config.organizer.url }),\n },\n }),\n ...(config.performer && {\n performer: Array.isArray(config.performer)\n ? config.performer.map(p => ({\n '@type': p.type,\n name: p.name,\n }))\n : {\n '@type': config.performer.type,\n name: config.performer.name,\n },\n }),\n ...(config.offers && {\n offers: Array.isArray(config.offers)\n ? config.offers.map(offer => ({\n '@type': 'Offer' as const,\n ...offer,\n ...(offer.availability && { availability: offer.availability }),\n }))\n : {\n '@type': 'Offer' as const,\n ...config.offers,\n ...(config.offers.availability && { availability: config.offers.availability }),\n },\n }),\n };\n\n return EventSchema.parse(schema);\n}\n","/**\n * WebPage schema generator\n * @module generators/webpage\n */\n\nimport type { WebPage } from '../schemas/index.js';\nimport { WebPageSchema } from '../schemas/index.js';\n\n/**\n * Configuration for generating WebPage schema\n */\nexport interface WebPageConfig {\n name: string;\n description: string;\n url: string;\n inLanguage?: string;\n isPartOf?: {\n '@type': 'WebSite';\n name: string;\n url: string;\n };\n breadcrumb?: {\n '@type': 'BreadcrumbList';\n itemListElement: Array<{\n '@type': 'ListItem';\n position: number;\n name: string;\n item?: string;\n }>;\n };\n}\n\n/**\n * Generates a validated WebPage JSON-LD schema\n *\n * @param config - WebPage configuration\n * @returns Validated WebPage schema\n *\n * @example\n * ```typescript\n * const webPage = generateWebPageSchema({\n * name: 'Product Catalog',\n * description: 'Browse our complete product catalog',\n * url: 'https://example.com/products',\n * inLanguage: 'en-US'\n * });\n * ```\n */\nexport function generateWebPageSchema(config: WebPageConfig): WebPage {\n const schema = {\n '@context': 'https://schema.org' as const,\n '@type': 'WebPage' as const,\n name: config.name,\n description: config.description,\n url: config.url,\n ...(config.inLanguage && { inLanguage: config.inLanguage }),\n ...(config.isPartOf && { isPartOf: config.isPartOf }),\n ...(config.breadcrumb && { breadcrumb: config.breadcrumb }),\n };\n\n // Validate using Zod schema\n return WebPageSchema.parse(schema);\n}\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { a as ContentDensity } from '../config-BcP2K8Tq.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* GEO Processor Engine
|
|
5
|
+
* Handles optimization logic for Generative Engine Optimization
|
|
6
|
+
*/
|
|
7
|
+
declare class GeoProcessor {
|
|
8
|
+
/**
|
|
9
|
+
* Optimizes schema density based on configuration.
|
|
10
|
+
* Removes nulls, undefined, and non-essential fields for 'high' density (AI-focused).
|
|
11
|
+
*/
|
|
12
|
+
static optimizeDensity(schema: Record<string, any>, density?: ContentDensity): Record<string, any>;
|
|
13
|
+
/**
|
|
14
|
+
* Recursively removes null, undefined, and empty strings/arrays
|
|
15
|
+
*/
|
|
16
|
+
private static pruneEmpty;
|
|
17
|
+
/**
|
|
18
|
+
* Filter object keys recursively based on a predicate
|
|
19
|
+
*/
|
|
20
|
+
private static filterRecursive;
|
|
21
|
+
/**
|
|
22
|
+
* Validates authority links to prevent hallucinations.
|
|
23
|
+
* Checks if sameAs links match known authoritative patterns.
|
|
24
|
+
*/
|
|
25
|
+
static validateAuthorities(sameAs?: string[]): {
|
|
26
|
+
valid: string[];
|
|
27
|
+
warnings: string[];
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* GEO (Generative Engine Optimization) utilities
|
|
33
|
+
* @module geo
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
declare const VERSION = "0.2.0-beta";
|
|
37
|
+
|
|
38
|
+
export { GeoProcessor, VERSION };
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// src/core/geo/processor.ts
|
|
2
|
+
var GeoProcessor = class {
|
|
3
|
+
/**
|
|
4
|
+
* Optimizes schema density based on configuration.
|
|
5
|
+
* Removes nulls, undefined, and non-essential fields for 'high' density (AI-focused).
|
|
6
|
+
*/
|
|
7
|
+
static optimizeDensity(schema, density = "low") {
|
|
8
|
+
if (density === "low") {
|
|
9
|
+
return this.pruneEmpty(schema);
|
|
10
|
+
}
|
|
11
|
+
const optimized = this.pruneEmpty(schema);
|
|
12
|
+
if (density === "high") {
|
|
13
|
+
const aiEssentialKeys = [
|
|
14
|
+
"@context",
|
|
15
|
+
"@type",
|
|
16
|
+
"name",
|
|
17
|
+
"headline",
|
|
18
|
+
"description",
|
|
19
|
+
"url",
|
|
20
|
+
"sameAs",
|
|
21
|
+
"author",
|
|
22
|
+
"datePublished",
|
|
23
|
+
"publisher",
|
|
24
|
+
"itemListElement",
|
|
25
|
+
"item",
|
|
26
|
+
"position"
|
|
27
|
+
];
|
|
28
|
+
return this.filterRecursive(optimized, (key) => aiEssentialKeys.includes(key));
|
|
29
|
+
}
|
|
30
|
+
return optimized;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Recursively removes null, undefined, and empty strings/arrays
|
|
34
|
+
*/
|
|
35
|
+
static pruneEmpty(obj) {
|
|
36
|
+
if (Array.isArray(obj)) {
|
|
37
|
+
return obj.map((v) => this.pruneEmpty(v)).filter((v) => v !== null && v !== void 0 && v !== "");
|
|
38
|
+
}
|
|
39
|
+
if (obj !== null && typeof obj === "object") {
|
|
40
|
+
return Object.entries(obj).reduce((acc, [key, value]) => {
|
|
41
|
+
const pruned = this.pruneEmpty(value);
|
|
42
|
+
if (pruned !== null && pruned !== void 0 && pruned !== "" && (!Array.isArray(pruned) || pruned.length > 0) && (typeof pruned !== "object" || Object.keys(pruned).length > 0)) {
|
|
43
|
+
acc[key] = pruned;
|
|
44
|
+
}
|
|
45
|
+
return acc;
|
|
46
|
+
}, {});
|
|
47
|
+
}
|
|
48
|
+
return obj;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Filter object keys recursively based on a predicate
|
|
52
|
+
*/
|
|
53
|
+
static filterRecursive(obj, predicate) {
|
|
54
|
+
if (Array.isArray(obj)) {
|
|
55
|
+
return obj.map((v) => this.filterRecursive(v, predicate));
|
|
56
|
+
}
|
|
57
|
+
if (obj !== null && typeof obj === "object") {
|
|
58
|
+
return Object.entries(obj).reduce((acc, [key, value]) => {
|
|
59
|
+
if (key === "@type" || key === "@context" || predicate(key)) {
|
|
60
|
+
acc[key] = this.filterRecursive(value, predicate);
|
|
61
|
+
}
|
|
62
|
+
return acc;
|
|
63
|
+
}, {});
|
|
64
|
+
}
|
|
65
|
+
return obj;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Validates authority links to prevent hallucinations.
|
|
69
|
+
* Checks if sameAs links match known authoritative patterns.
|
|
70
|
+
*/
|
|
71
|
+
static validateAuthorities(sameAs = []) {
|
|
72
|
+
const authorityPatterns = [
|
|
73
|
+
/wikipedia\.org/,
|
|
74
|
+
/wikidata\.org/,
|
|
75
|
+
/linkedin\.com/,
|
|
76
|
+
/twitter\.com/,
|
|
77
|
+
/x\.com/,
|
|
78
|
+
/facebook\.com/,
|
|
79
|
+
/instagram\.com/,
|
|
80
|
+
/github\.com/,
|
|
81
|
+
/crunchbase\.com/
|
|
82
|
+
];
|
|
83
|
+
const valid = [];
|
|
84
|
+
const warnings = [];
|
|
85
|
+
sameAs.forEach((url) => {
|
|
86
|
+
try {
|
|
87
|
+
const parsed = new URL(url);
|
|
88
|
+
const isAuthority = authorityPatterns.some((pattern) => pattern.test(parsed.hostname));
|
|
89
|
+
if (isAuthority) {
|
|
90
|
+
valid.push(url);
|
|
91
|
+
} else {
|
|
92
|
+
warnings.push(`Low authority or unknown source: ${url}`);
|
|
93
|
+
}
|
|
94
|
+
} catch (e) {
|
|
95
|
+
warnings.push(`Invalid URL format: ${url}`);
|
|
96
|
+
}
|
|
97
|
+
});
|
|
98
|
+
return { valid, warnings };
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// src/core/geo/index.ts
|
|
103
|
+
var VERSION = "0.2.0-beta";
|
|
104
|
+
|
|
105
|
+
export { GeoProcessor, VERSION };
|
|
106
|
+
//# sourceMappingURL=index.js.map
|
|
107
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/core/geo/processor.ts","../../src/core/geo/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { type ContentDensity } from '../types/config.js';\n\n/**\n * GEO Processor Engine\n * Handles optimization logic for Generative Engine Optimization\n */\nexport class GeoProcessor {\n /**\n * Optimizes schema density based on configuration.\n * Removes nulls, undefined, and non-essential fields for 'high' density (AI-focused).\n */\n static optimizeDensity(schema: Record<string, any>, density: ContentDensity = 'low'): Record<string, any> {\n if (density === 'low') {\n return this.pruneEmpty(schema);\n }\n\n // High/Medium density optimization\n const optimized = this.pruneEmpty(schema);\n\n if (density === 'high') {\n // For HIGH density (AI focus), we remove decorative fields that waste tokens\n // but keep semantic identifiers\n const aiEssentialKeys = [\n '@context', '@type', 'name', 'headline', 'description', \n 'url', 'sameAs', 'author', 'datePublished', 'publisher',\n 'itemListElement', 'item', 'position'\n ];\n\n return this.filterRecursive(optimized, (key) => aiEssentialKeys.includes(key));\n }\n\n return optimized;\n }\n\n /**\n * Recursively removes null, undefined, and empty strings/arrays\n */\n private static pruneEmpty(obj: any): any {\n if (Array.isArray(obj)) {\n return obj\n .map(v => this.pruneEmpty(v))\n .filter(v => v !== null && v !== undefined && v !== '');\n }\n\n if (obj !== null && typeof obj === 'object') {\n return Object.entries(obj).reduce((acc, [key, value]) => {\n const pruned = this.pruneEmpty(value);\n // Keep non-empty values\n if (pruned !== null && pruned !== undefined && pruned !== '' && \n (!Array.isArray(pruned) || pruned.length > 0) &&\n (typeof pruned !== 'object' || Object.keys(pruned).length > 0)) {\n acc[key] = pruned;\n }\n return acc;\n }, {} as any);\n }\n\n return obj;\n }\n\n /**\n * Filter object keys recursively based on a predicate\n */\n private static filterRecursive(obj: any, predicate: (key: string) => boolean): any {\n if (Array.isArray(obj)) {\n return obj.map(v => this.filterRecursive(v, predicate));\n }\n\n if (obj !== null && typeof obj === 'object') {\n return Object.entries(obj).reduce((acc, [key, value]) => {\n // Always keep @type and @context as they are structural\n if (key === '@type' || key === '@context' || predicate(key)) {\n acc[key] = this.filterRecursive(value, predicate);\n }\n return acc;\n }, {} as any);\n }\n\n return obj;\n }\n\n /**\n * Validates authority links to prevent hallucinations.\n * Checks if sameAs links match known authoritative patterns.\n */\n static validateAuthorities(sameAs: string[] = []): { valid: string[], warnings: string[] } {\n const authorityPatterns = [\n /wikipedia\\.org/,\n /wikidata\\.org/,\n /linkedin\\.com/,\n /twitter\\.com/,\n /x\\.com/,\n /facebook\\.com/,\n /instagram\\.com/,\n /github\\.com/,\n /crunchbase\\.com/\n ];\n\n const valid: string[] = [];\n const warnings: string[] = [];\n\n sameAs.forEach(url => {\n try {\n const parsed = new URL(url);\n const isAuthority = authorityPatterns.some(pattern => pattern.test(parsed.hostname));\n if (isAuthority) {\n valid.push(url);\n } else {\n warnings.push(`Low authority or unknown source: ${url}`);\n }\n } catch (e) {\n warnings.push(`Invalid URL format: ${url}`);\n }\n });\n\n return { valid, warnings };\n }\n}\n","/**\n * GEO (Generative Engine Optimization) utilities\n * @module geo\n */\n\nexport { GeoProcessor } from './processor.js';\nexport const VERSION = '0.2.0-beta'; // Bumped version to signify real code"]}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
export { e as CacheConfig, b as CacheStrategy, c as ContactPoint, C as ContactType, a as ContentDensity, G as GeoConfig, d as IdentityConfig, I as IdentityType, L as LocaleConfig, P as PostalAddress, f as SemanticConfig, S as SemanticPlugin } from './config-BcP2K8Tq.js';
|
|
2
|
+
export { k as AggregateRating, A as AggregateRatingSchema, n as Article, o as ArticleInput, m as ArticleSchema, p as BlogPosting, B as BlogPostingSchema, v as BreadcrumbList, w as BreadcrumbListInput, u as BreadcrumbListSchema, C as ContactPointSchema, r as FAQPage, s as FAQPageInput, F as FAQPageSchema, x as ListItem, L as ListItemSchema, q as NewsArticle, N as NewsArticleSchema, j as Offer, g as OfferSchema, a as Organization, b as OrganizationInput, O as OrganizationSchema, d as Person, e as PersonInput, c as PersonSchema, P as PostalAddressSchema, h as Product, i as ProductInput, f as ProductSchema, t as Question, Q as QuestionSchema, l as Review, R as ReviewSchema, y as WebPage, z as WebPageInput, W as WebPageSchema } from './event-BG0_yYK4.js';
|
|
3
|
+
export { ArticleConfig, BreadcrumbConfig, BreadcrumbItem, DayOfWeek, EventConfig, FAQConfig, FAQQuestion, LocalBusinessConfig, MetaTag, OfferConfig, OpenGraphConfig, OpeningHoursConfig, OrganizationConfig, PersonConfig, ProductConfig, TwitterCardConfig, WebPageConfig, generateArticleSchema, generateBreadcrumbSchema, generateEventSchema, generateFAQSchema, generateIdentitySchema, generateLocalBusinessSchema, generateOpenGraphTags, generateOrganizationSchema, generatePersonSchema, generateProductSchema, generateScriptTag, generateSocialMetaTags, generateTwitterCardTags, generateWebPageSchema, metaTagsToHTML, serializeSchema } from './generators/index.js';
|
|
4
|
+
import 'zod';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Validation utilities
|
|
8
|
+
* @module utils/validation
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Validates if a string is a valid URL
|
|
12
|
+
*
|
|
13
|
+
* @param url - URL string to validate
|
|
14
|
+
* @returns true if valid, false otherwise
|
|
15
|
+
*/
|
|
16
|
+
declare function isValidUrl(url: string): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Validates if a URL is HTTPS (required for production JSON-LD)
|
|
19
|
+
*
|
|
20
|
+
* @param url - URL string to validate
|
|
21
|
+
* @returns true if HTTPS, false otherwise
|
|
22
|
+
*/
|
|
23
|
+
declare function isHttps(url: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Validates date format (YYYY-MM-DD)
|
|
26
|
+
*
|
|
27
|
+
* @param date - Date string to validate
|
|
28
|
+
* @returns true if valid ISO date, false otherwise
|
|
29
|
+
*/
|
|
30
|
+
declare function isValidISODate(date: string): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Validates email format
|
|
33
|
+
*
|
|
34
|
+
* @param email - Email string to validate
|
|
35
|
+
* @returns true if valid email, false otherwise
|
|
36
|
+
*/
|
|
37
|
+
declare function isValidEmail(email: string): boolean;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @semantic-layer/core
|
|
41
|
+
*
|
|
42
|
+
* Core TypeScript library for Generative Engine Optimization (GEO)
|
|
43
|
+
* Framework-agnostic semantic data generation and validation
|
|
44
|
+
*
|
|
45
|
+
* @packageDocumentation
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Library version
|
|
50
|
+
*/
|
|
51
|
+
declare const VERSION = "0.1.0";
|
|
52
|
+
|
|
53
|
+
export { VERSION, isHttps, isValidEmail, isValidISODate, isValidUrl };
|