@getvitops/generator 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +148 -0
- package/config.schema.json +85 -1
- package/dist/index.d.mts +224 -7
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +305 -14
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":["left","top","width","height","rotate","hFlip","vFlip","IconifyDimenisons","IconifyTransformations","IconifyOptional","parent","body","hidden","IconifyIcon","APIIconAttributes","IconifyAlias","index","ExtendedIconifyIcon","ExtendedIconifyAlias","name","total","version","author","url","license","title","spdx","samples","displayHeight","category","tags","palette","prefix","suffix","info","IconifyInfo","chars","IconifyChars","categories","IconifyCategories","themes","LegacyIconifyThemes","prefixes","Record","suffixes","provider","icons","IconifyIcons","aliases","IconifyAliases","IconifyJSONIconsData","IconifyMetaData","lastModified","not_found","IconifyJSON","metadata"],"sources":["../src/schema.ts","../src/config.ts","../src/tokens.ts","../src/generate.ts","../src/docs.ts","../src/tiers.ts","../../../node_modules/.pnpm/@iconify+types@2.0.0/node_modules/@iconify/types/types.d.ts","../src/icons-sprite.ts","../src/shared.ts","../src/legal/providers.ts","../src/legal/derive.ts","../src/legal/templates/cookies.ca.ts","../src/legal/templates/privacy.ca.ts","../src/legal/templates/terms.ca.ts","../src/legal/templates/index.ts","../src/legal/render.ts","../src/legal/index.ts","../src/index.ts"],"x_google_ignoreList":[6],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":["left","top","width","height","rotate","hFlip","vFlip","IconifyDimenisons","IconifyTransformations","IconifyOptional","parent","body","hidden","IconifyIcon","APIIconAttributes","IconifyAlias","index","ExtendedIconifyIcon","ExtendedIconifyAlias","name","total","version","author","url","license","title","spdx","samples","displayHeight","category","tags","palette","prefix","suffix","info","IconifyInfo","chars","IconifyChars","categories","IconifyCategories","themes","LegacyIconifyThemes","prefixes","Record","suffixes","provider","icons","IconifyIcons","aliases","IconifyAliases","IconifyJSONIconsData","IconifyMetaData","lastModified","not_found","IconifyJSON","metadata"],"sources":["../src/schema.ts","../src/config.ts","../src/tokens.ts","../src/generate.ts","../src/docs.ts","../src/tiers.ts","../../../node_modules/.pnpm/@iconify+types@2.0.0/node_modules/@iconify/types/types.d.ts","../src/icons-sprite.ts","../src/shared.ts","../src/legal/providers.ts","../src/legal/derive.ts","../src/legal/templates/cookies.ca.ts","../src/legal/templates/privacy.ca.ts","../src/legal/templates/terms.ca.ts","../src/legal/templates/index.ts","../src/legal/render.ts","../src/legal/index.ts","../src/index.ts"],"x_google_ignoreList":[6],"mappings":";;;;cAkQa,kBAAA,EAAkB,CAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0CnB,YAAA,GAAe,CAAA,CAAE,KAAK,QAAQ,kBAAA;;;;;;cA0B7B,UAAA;;cAGA,UAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkDD,gBAAA;EACN,EAAA;EAAU,IAAA,EAAM,YAAA;EAAc,MAAA;EAAY,QAAA;AAAA;EAC1C,EAAA;EAAW,IAAA;EAAiB,MAAA,EAAQ,CAAA,CAAE,IAAA,CAAK,SAAS;EAAI,QAAA;AAAA;;;;;;;;iBAsD9C,QAAA,CAAS,KAAA,YAAiB,gBAAgB;;;cCxSpD,mBAAA,EAAmB,CAAA,CAAA,aAAA;;;;;;;cAWnB,mBAAA,EAAmB,CAAA,CAAA,aAAA;;;;;;;;;;;;KAUb,aAAA,GAAgB,CAAA,CAAE,KAAK,QAAQ,mBAAA;AAAA,KAC/B,aAAA,GAAgB,CAAA,CAAE,KAAK,QAAQ,mBAAA;AAAA,cAwK9B,cAAA,EAAc,CAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA4LrB,cAAA,EAAc,CAAA,CAAA,aAAA;;;;;cAed,mBAAA,EAAmB,CAAA,CAAA,aAAA;;;;cAWnB,cAAA,EAAc,CAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;cAgCP,YAAA;AAAA,KAWD,UAAA,WAAqB,YAAY;;;;;;;;;;;cAYvC,gBAAA,EAAgB,CAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;cAwCT,aAAA;AAAA,KAED,YAAA,WAAuB,aAAa;;;;;;;;;;;;;;cAenC,sBAAA;EAE2B,EAAA;AAAA;AAAA,cA+ClC,iBAAA,EAAiB,CAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAgVjB,yBAAA,EAAyB,CAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAmClB,YAAA,EAAY,CAAA,CAAA,aAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAYb,MAAA,GAAS,CAAA,CAAE,KAAK,QAAQ,YAAA;;KAExB,kBAAA,GAAqB,CAAA,CAAE,KAAK,QAAQ,yBAAA;;KAEpC,WAAA,GAAc,CAAA,CAAE,KAAK,QAAQ,iBAAA;;KAE7B,QAAA,GAAW,CAAA,CAAE,KAAK,QAAQ,cAAA;;KAE1B,YAAA,GAAe,CAAA,CAAE,KAAK,QAAQ,cAAA;;KAE9B,YAAA,GAAe,CAAA,CAAE,KAAK,QAAQ,cAAA;;KAE9B,iBAAA,GAAoB,CAAA,CAAE,KAAK,QAAQ,mBAAA;;KAInC,cAAA,GAAiB,CAAA,CAAE,KAAK,QAAQ,gBAAA;AAAA,cAI/B,iBAAA;;cAGA,gBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAKD,sBAAA;EACN,EAAA;EAAU,IAAA,EAAM,MAAA;EAAQ,MAAA;AAAA;EACxB,EAAA;EAAW,IAAA;EAAiB,MAAA,EAAQ,CAAA,CAAE,IAAA,CAAK,SAAS;AAAA;;;;;;iBA6E1C,cAAA,CAAe,KAAA,YAAiB,sBAAsB;;;;;;;;;;;;;;iBA4NtD,qBAAA,CAAsB,GAAA,EAAK,MAAA,GAAS,aAAa;AAAA,KAsB5D,kBAAA,GAAqB,OAAO,CAAC,YAAA;EAAkB,WAAA;EAAuB,OAAA;AAAA;;;;;;;iBAQ3D,YAAA,CACd,YAAA,EAAc,MAAA,SAAe,kBAAA,GAC7B,GAAA,WACC,YAAA;;;;;;;;;;;;;;;;;;;AAxkCA;iBAkoCa,aAAA,CAAc,KAAA,WAAgB,OAAA,YAAyB,MAAM;;;;;;;;;;;;;;;;;iBAiD7D,QAAA,CAAS,GAAY;;UAKpB,aAAA;;EAEf,YAAA,EAAc,YAAA;;EAEd,MAAA,GAAS,MAAM;;EAEf,KAAA;AAAA;;;;;;;;;;;;;;;iBAiBc,YAAA,CACd,GAAA,WACA,IAAA;EAAQ,KAAA;EAAgB,OAAA;AAAA,IACvB,aAAa;;iBAsBA,UAAA,CAAW,GAAY;;iBAevB,SAAA,CAAU,MAAA,EAAQ,MAAA,mBAAyB,MAAA,EAAQ,MAAM;;;cC1iD5D,aAAA;AAAA,KAaR,OAAA,WAAkB,aAAa;AAAA,UAWnB,WAAA;;EAEf,OAAA,EAAS,OAAA,CAAQ,MAAA,CAAO,OAAA;EFoOxB;EElOA,MAAA;;;;;;;EAOA,UAAA,GAAa,OAAA,CAAQ,MAAA,CAAO,OAAA;AAAA;;iBAwHd,aAAA,CAAc,GAAA,EAAK,MAAA,oBAA0B,MAAA,SAAe,WAAA;;KAsGhE,QAAA;;;;;;;;;;;iBA8FI,QAAA,CAAS,IAAA,UAAc,GAAW;;cAUrC,UAAA,GAAc,IAAA,UAAc,GAAW;AAAA,UAGnC,cAAA;EACf,IAAA;EACA,GAAA;EACA,IAAA,EAAM,QAAA;;EAEN,KAAA,EAAO,MAAA;EACP,IAAA,EAAM,MAAA;AAAA;;iBAIQ,cAAA,CACd,IAAA,UACA,OAAA,UACA,GAAA,EAAK,WAAA,EACL,IAAA,GAAM,QAAA,GACL,cAAA;;;;;;;cAqCU,QAAA;EAAA;;;;;;KC7ZD,MAAA;AHmNZ;;;;;;AAAA,KG3MY,gBAAA,GAAmB,OAAO,CAAC,MAAA;AAAA,UAEtB,eAAA;;;;;;;;;;;;;;;;EAgBf,KAAA,WAAgB,YAAA,GAAe,MAAA;;EAE/B,MAAA,GAAS,MAAA;;EAET,MAAA;;EAEA,SAAA;;;;;;EAMA,KAAA;;;;;EAKA,OAAA;;;;;;;;EAQA,IAAA,YAAgB,MAAA;;;;;;;;;;EAUhB,iBAAA;AAAA;AAAA,UAGe,cAAA;EACf,MAAA,EAAQ,MAAM;EACd,MAAA;EACA,OAAA;AAAA;AAAA,UA0Ce,YAAA;;EAEf,GAAA;;EAEA,IAAA;;EAEA,KAAA;AAAA;;;;;;;;;;;;;;iBA6Dc,kBAAA,CACd,KAAA,WAAgB,cAAA,IAChB,SAAA,sBACC,YAAY;AAAA,iBA2uDO,QAAA,CAAS,OAAA,EAAS,eAAA,GAAkB,OAAA,CAAQ,cAAA;;;UChpCjD,cAAA;EACf,IAAA;EACA,WAAA;EACA,UAAA,GAAa,MAAA,SAAe,cAAA;EAC5B,QAAA;EACA,oBAAA,GAAuB,cAAA;EACvB,KAAA,GAAQ,cAAA;EACR,KAAA,GAAQ,cAAA;EACR,IAAA;AAAA;;;;;;;;;;;;;;;;;;;cAsHW,oBAAA,GAAwB,CAAS;AAAA,UAoB7B,iBAAA;;EAEf,QAAA;;EAEA,QAAA;;;;;;;;;;;;;EAaA,KAAA;AAAA;AAAA,UAGe,cAAA;;EAEf,KAAA;;EAEA,IAAA;EACA,QAAA;;EAEA,WAAA;;;;;EAKA,EAAA;;EAEA,OAAA;EACA,QAAA,EAAU,cAAc;AAAA;;;;;;;;;;;;;;;;iBAkBV,eAAA,CACd,MAAA,EAAQ,cAAA,EACR,IAAA,GAAM,iBAAA,GACL,cAAA;;;;;iBAk9Ca,YAAA,CAAa,EAAA,EAAI,YAAA,EAAc,SAAA,WAAoB,MAAM;;;;;;;AJvtEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UKhOiB,OAAA;;;;;;EAMf,OAAA;;EAEA,OAAA;;;;;;;;;;;;;EAaA,SAAA;AAAA;AAAA,UAGe,MAAA;EACf,GAAA;;EAEA,UAAA;;EAEA,IAAA;;EAEA,MAAA;AAAA;AAAA,UAGe,SAAA;;EAEf,SAAA;;;;;EAKA,KAAK;AAAA;AAAA,UAGU,SAAA;EACf,GAAA,EAAK,OAAA;EACL,EAAA,GAAK,MAAA;;;;;;EAML,KAAA,GAAQ,SAAA;;EAER,MAAA;;EAEA,GAAA;AAAA;AAAA,cAsBW,KAAA,EAAO,MAAM,SAAS,SAAA;;cAoYtB,UAAA;;iBAGG,QAAA;EAAc,GAAA;EAAa,UAAA;EAAqB,OAAA;AAAA;;KAOpD,IAAA;;UAGK,cAAA;EACf,IAAA;EACA,KAAA,EAAO,SAAS;AAAA;;;;;;;;;;;;;;;;;iBAmBF,YAAA,CAAa,IAAA,EAAM,IAAA,GAAO,cAAc;;;;;;;ALpRxD;;;;UM1PiB,iBAAA;EAAA;EAAA;EAGhBA,IAAAA;EAAAA;EAIAC,GAAAA;EAAAA;EAIAC,KAAAA;EAAAA;EAIAC,MAAAA;AAAAA;;;;;;;;UAUgB,sBAAA;EAAA;EAAA;EAAA;EAAA;EAKhBC,MAAAA;EAAAA;EAAAA;EAKAC,KAAAA;EAGAC,KAAAA;AAAAA;;;;UAMgB,eAAA,SACR,iBAAA,EACP,sBAAsB;AAAA;;;;UAOP,YAAA,SAAqB,eAAe;EAAA;EAEpDI,MAAM;EAAA;EAAA;AAAA;;;;UAUU,WAAA,SAAoB,eAAe;EAAA;EAEnDC,IAAI;EAAA;AAAA;;;;UASK,iBAAA;EAAA;EAAA;EAAA;EAITC,MAAM;AAAA;AAAA,UAGU,mBAAA,SAA4B,WAAA,EAAa,iBAAiB;AAAA,UAC1D,oBAAA,SAA6B,YAAA,EAAc,iBAAiB;;;;UAK5D,YAAA;EAAA;EAAA,CAEfI,KAAAA,WAAgB,mBAAmB;AAAA;;;;UAMpB,cAAA;EAAA;EAAA,CAEfA,KAAAA,WAAgB,oBAAoB;AAAA;;;;UAMrB,WAAA;EAAA;EAEhBG,IAAAA;EAGAC,KAAAA;EAGAC,OAAAA;EAGAC,MAAAA;IAAAA;IAECH,IAAAA;IAGAI,GAAAA;EAAAA;EAIDC,OAAAA;IAAAA;IAECC,KAAAA;IAGAC,IAAAA;IAGAH,GAAAA;EAAAA;EAIDI,OAAAA;EAGAxB,MAAAA;EAGAyB,aAAAA;EAGAC,QAAAA;EAGAC,IAAAA;EAAAA;EAIAC,OAAAA;EAGAnB,MAAAA;AAAAA;;;;;;UAQgB,mBAAA;EAAA;EAAA,CAEfI,KAAAA;IAAAA;IAEAS,KAAAA;IAGAO,MAAAA;IACAC,MAAAA;EAAAA;AAAAA;;;;UAOe,YAAA;EAAA;EAAA;EAAA,CAGfjB,KAAa;AAAA;;;;UAME,iBAAA;EAAA;EAAA;EAAA;EAAA,CAIfA,KAAa;AAAA;;;;UAME,eAAA;EAAA;EAEhBkB,IAAAA,GAAO,WAAA;EAGPE,KAAAA,GAAQ,YAAA;EAGRE,UAAAA,GAAa,iBAAA;EAGbE,MAAAA,GAAS,mBAAA;EAGTE,QAAAA,GAAW,MAAA;EACXE,QAAAA,GAAW,MAAA;AAAA;;;;UAMK,oBAAA,SAA6B,iBAAA;EAAA;EAE7CZ,MAAAA;EAGAa,QAAAA;EAGAC,KAAAA,EAAO,YAAA;EAGPE,OAAAA,GAAU,cAAA;EAAA;EAAA;AAAA;;;;;;UAYM,WAAA,SAAoB,oBAAA,EAAsB,eAAe;EAAA;EAAA;EAAA;EAIzEI,YAAAA;EAGAC,SAAAA;AAAAA;;;UC7OgB,iBAAA;;EAEf,OAAA,EAAS,MAAA;EP4OE;;;;EOvOX,OAAA,GAAU,MAAA;;;;;;;;;EASV,WAAA;;EAEA,OAAA,IAAW,MAAA,aAAmB,OAAA,CAAQ,WAAA;AAAA;AAAA,UAGvB,gBAAA;EACf,GAAA;;EAEA,GAAA;;EAEA,OAAA;AAAA;;;;;;;;iBAUc,QAAA,CAAS,SAAiB;AAAA,iBAsBpB,eAAA,CAAgB,CAAA,EAAG,iBAAA,GAAoB,OAAA,CAAQ,gBAAA;;;;;;;;;;;iBAsE/C,WAAA,CACpB,SAAA,UACA,IAAA;EAAS,WAAA;EAAsB,OAAA,IAAW,MAAA,aAAmB,OAAA,CAAQ,WAAA;AAAA,IACpE,OAAA;EAAU,OAAA;EAAiB,IAAA;AAAA;;;;;;;AP2G9B;;;;;;;;;;;;;;;;;cQ5Oa,QAAA;;;;;;;;;;;;;;;;;cAmCA,cAAA;;;;;;;;;cAiBA,eAAA;;KA+BD,QAAA;EAAsB,GAAA;EAAa,IAAI;AAAA;;cAGtC,OAAA,GAAW,IAAc,EAAR,QAAQ;;;;;cAMzB,QAAA,GAAY,IAAc,EAAR,QAAQ;;;;;;;cAS1B,SAAA,EAAW,MAAM;;;;;;cAkBjB,QAAA,EAAU,WAAW;;;;UCrHjB,gBAAA;;EAEf,OAAA;ETgRA;;;;;;ESzQA,KAAK;AAAA;AAAA,UAGU,SAAA;;EAEf,IAAA;;EAEA,OAAA;;;;;;;;;EASA,OAAA;;;;;EAKA,OAAA,GAAU,gBAAgB;;;;;;;;;;;EAW1B,eAAA;EACA,UAAA;;;;;;EAMA,OAAA;;EAEA,MAAA;AAAA;;;;;cAOW,gBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAkGD,iBAAA,gBAAiC,gBAAgB;;;;;;;;iBAgB7C,mBAAA,CAAoB,GAAA,EAAK,MAAA,GAAS,iBAAiB;;;;;;;;iBA8BnD,iBAAA,CAAkB,GAAA,EAAK,MAAA,GAAS,SAAS;;;;;;;;;;;;;iBA2EzC,yBAAA,CAA0B,GAAW,EAAN,MAAM;;;;;AT1CrD;;;;;;UUhOiB,UAAA;EACf,YAAA;EACA,GAAA;;EAEA,cAAA;EACA,WAAA;;EAEA,SAAA;;EAEA,YAAA;;EAEA,iBAAA;EACA,gBAAA;;EAGA,iBAAA;;EAEA,YAAA;;EAEA,QAAA;;EAEA,gBAAA;;EAEA,aAAA;;EAEA,cAAA;;EAEA,UAAA;;EAEA,WAAA;;EAEA,aAAA;;;EAGA,mBAAA;EAEA,UAAA,EAAY,SAAS;;;;;;;;EAQrB,iBAAA;IAAqB,IAAA;IAAc,OAAA;IAAiB,SAAA;EAAA;;;;;;;EAOpD,mBAAA;;;;;EAKA,gBAAA;;;;;;;EAOA,aAAA;IAAiB,OAAA;IAAiB,KAAA;EAAA;;;;;;;EAOlC,iBAAA;;;;;;;;EAQA,SAAA;EACA,YAAA;EACA,gBAAA;AAAA;AAAA,iBAyHc,gBAAA,CAAiB,GAAA,EAAK,MAAA,GAAS,UAAU;;;iBC5NzC,SAAA,CAAU,CAAa,EAAV,UAAU;;;iBCOvB,SAAA,CAAU,CAAa,EAAV,UAAU;;;iBCHvB,OAAA,CAAQ,CAAa,EAAV,UAAU;;;KCDzB,QAAA;AAAA,KAEA,MAAA,GAAS,MAAA,CAAO,QAAA,GAAW,CAAA,EAAG,UAAA;AAAA,cAE7B,SAAA;;;;;;;;cAKA,SAAA,EAAW,QAAQ;;cAGnB,SAAA,EAAW,MAAM,CAAC,QAAA;;;UCPd,IAAA;EACf,IAAA;EACA,MAAA;EACA,IAAA;AAAA;AAAA,KAGU,KAAA;EACN,IAAA;EAAiB,KAAA;EAAkB,KAAA,EAAO,IAAA;AAAA;EAC1C,IAAA;EAAmB,KAAA,EAAO,IAAA;AAAA;EAC1B,IAAA;EAAc,KAAA,EAAO,IAAA;AAAA;EACrB,IAAA;EAAe,KAAA,EAAO,IAAA;AAAA;;iBA4CZ,aAAA,CAAc,EAAA,WAAa,KAAK;;;;;iBAsEhC,cAAA,CAAe,MAAA,EAAQ,KAAA,KAAU,WAAW;AAAA,iBAkB5C,cAAA,CAAe,MAAe,EAAP,KAAK;;;;;;;;;;;;;;iBAmB5B,cAAA,CAAe,MAAA,EAAQ,KAAK,IAAI,MAAA;;;KCrKpC,WAAA;AAAA,UAEK,oBAAA;;EAEf,IAAA,GAAO,QAAA;;EAEP,MAAA,GAAS,WAAW;AAAA;;iBAUN,WAAA,CAAY,GAAA,EAAK,MAAA,GAAS,QAAQ;;iBAWlC,cAAA,CAAe,GAAA,EAAK,MAAA,EAAQ,GAAA,EAAK,QAAA,EAAU,IAAA,GAAO,UAAA;;;;;;iBAclD,WAAA,CAAY,GAAA,EAAK,MAAA,EAAQ,GAAA,EAAK,QAAA,GAAW,WAAA;;;;;;;iBAUzC,aAAA,CACd,GAAA,EAAK,MAAA,EACL,IAAA,GAAM,oBAAA,GACL,MAAA;;;;;;;;iBCsEa,aAAA,IAAiB,YAAY"}
|
package/dist/index.mjs
CHANGED
|
@@ -5,6 +5,7 @@ import { fileURLToPath, pathToFileURL } from "node:url";
|
|
|
5
5
|
import { createHash } from "node:crypto";
|
|
6
6
|
import { transform } from "lightningcss";
|
|
7
7
|
import * as z from "zod/mini";
|
|
8
|
+
import { AD_PLATFORMS, AD_PROVIDER_KEYS } from "@getvitops/utils/ads";
|
|
8
9
|
import { LIGHTNESS_LADDER, contrastLc, generateOklchPalette, hexToOklch, oklchStringToHex, pickOn, tintedEndpoints } from "@getvitops/utils/color";
|
|
9
10
|
import { generateIconInclude, nodesToHtml, resolveIcon, t } from "@getvitops/utils";
|
|
10
11
|
import { getIconData, iconToSVG, replaceIDs } from "@iconify/utils";
|
|
@@ -645,6 +646,7 @@ const EnvironmentSchema = z.object({
|
|
|
645
646
|
url: desc(z.url(), "Public origin of this environment."),
|
|
646
647
|
api: desc(z.optional(z.url()), "API origin, when different from `url`."),
|
|
647
648
|
analytics: desc(z.optional(z.boolean()), "Whether analytics fire in this environment."),
|
|
649
|
+
ads: desc(z.optional(z.boolean()), "Whether `site.ads` pixels fire in this environment. Defaults to `analytics`, then true — a preview deployment sending pageviews is survivable, one firing conversion pixels is not, so this can be turned off on its own."),
|
|
648
650
|
robots: desc(z.optional(RobotsSchema), "Robots policy (e.g. \"noindex,nofollow\" for dev)."),
|
|
649
651
|
variant: desc(z.optional(z.string()), "Active `abTesting.variants` key for this environment.")
|
|
650
652
|
});
|
|
@@ -858,6 +860,47 @@ const IndexingSchema = z.object({
|
|
|
858
860
|
priorityUrls: desc(z.optional(z.array(z.url())), "The pages whose indexing actually matters. `vitops search notify --check` inspects these and exits non-zero if Google has not indexed one. Kept explicit because URL Inspection is quota-bound (2000/day), so checking every page is neither affordable nor informative.")
|
|
859
861
|
});
|
|
860
862
|
/**
|
|
863
|
+
* The ad platforms `vitops ads` can link a site to.
|
|
864
|
+
*
|
|
865
|
+
* A closed enum, mirroring `AD_PROVIDER_KEYS` in `@getvitops/utils/ads` — that
|
|
866
|
+
* module owns what each platform *can do* (whether it verifies a domain, what its
|
|
867
|
+
* tag is, which click ID it stamps), this owns what a config may *say*. Mirrored
|
|
868
|
+
* rather than derived because a `z.enum` needs literals to reach the published JSON
|
|
869
|
+
* Schema; `config.test.ts` asserts the two lists are the same set, so a provider
|
|
870
|
+
* added to one and not the other fails the build rather than silently getting no
|
|
871
|
+
* verification step and no tag.
|
|
872
|
+
*/
|
|
873
|
+
const AD_PROVIDERS = [
|
|
874
|
+
"google",
|
|
875
|
+
"meta",
|
|
876
|
+
"linkedin",
|
|
877
|
+
"reddit",
|
|
878
|
+
"tiktok",
|
|
879
|
+
"microsoft",
|
|
880
|
+
"pinterest",
|
|
881
|
+
"snapchat"
|
|
882
|
+
];
|
|
883
|
+
const AdProviderSchema = z.enum(AD_PROVIDERS);
|
|
884
|
+
/**
|
|
885
|
+
* One ad property this site is linked to.
|
|
886
|
+
*
|
|
887
|
+
* Facts, not prose — the same rule the legal block follows. This records *which*
|
|
888
|
+
* account and *which* tag id, and the platform capability table decides what can be
|
|
889
|
+
* done about them. It is also what finally lets the rest of the toolchain see an ad
|
|
890
|
+
* pixel: the generated cookie notice discloses its cookies, `vitops ads lint`
|
|
891
|
+
* checks its click ID is captured, and the consent gate is handed the cookie names
|
|
892
|
+
* to clear on revoke. A pixel pasted into a template is invisible to all three.
|
|
893
|
+
*/
|
|
894
|
+
const AdPropertySchema = z.object({
|
|
895
|
+
accountId: desc(z.optional(z.string()), "The advertising account as the platform shows it — Google Ads customer ID, Meta ad account, LinkedIn partner ID, Reddit advertiser ID. For LinkedIn this is also the Insight Tag id; everywhere else the tag id is `pixelId`."),
|
|
896
|
+
pixelId: desc(z.optional(z.string()), "The tag/pixel ID the browser snippet initialises — Meta pixel, TikTok pixel, Reddit pixel, Microsoft UET tag ID, Pinterest tag ID, Snap pixel, or the Google Ads conversion ID (`AW-…`, which is NOT the customer ID)."),
|
|
897
|
+
conversionLabel: desc(z.optional(z.string()), "Google Ads only: the conversion action label paired with the `AW-…` conversion ID."),
|
|
898
|
+
domain: desc(z.optional(z.string()), "Bare hostname to verify with this platform. Defaults to the host of `domains.canonical` — set it only when the ad account is verified against a different domain."),
|
|
899
|
+
domainVerification: desc(z.optional(z.string()), "The verification token from the platform UI, for the platforms that verify by DNS TXT (Meta, TikTok, Pinterest, Snapchat). `vitops ads setup` prompts for it and writes it here on first run. NOT a secret — it is published in DNS, and the platform fetching it back is the ownership proof, exactly like the IndexNow key. A value containing `=` is used as the whole record, which is the escape hatch if a platform changes its prefix."),
|
|
900
|
+
category: desc(z.optional(z.enum(["marketing", "analytics"])), "Consent category the tag waits on (default `marketing`). An ad pixel is advertising by default; `analytics` is for a site using one purely for its own measurement."),
|
|
901
|
+
enabled: desc(z.optional(z.boolean()), "Set false to keep the property on record without emitting its tag.")
|
|
902
|
+
});
|
|
903
|
+
/**
|
|
861
904
|
* Which template set the generated legal documents are written against. This is
|
|
862
905
|
* a closed enum rather than a free string because an unrecognised value would
|
|
863
906
|
* otherwise silently fall back to the wrong body of law; `validateConfig` rejects
|
|
@@ -867,6 +910,20 @@ const IndexingSchema = z.object({
|
|
|
867
910
|
const JURISDICTIONS = ["ca"];
|
|
868
911
|
const JurisdictionSchema = z.enum(JURISDICTIONS);
|
|
869
912
|
/**
|
|
913
|
+
* The country each template set frames cross-border transfers as *leaving*.
|
|
914
|
+
*
|
|
915
|
+
* A jurisdiction's own country is not a transfer, so this is what filters the
|
|
916
|
+
* disclosure lists — without it, `country: "Canada"` renders the incoherent
|
|
917
|
+
* "outside of Canada, including Canada".
|
|
918
|
+
*
|
|
919
|
+
* It belongs to the **jurisdiction**, not to `organization.address`: a `ca` policy
|
|
920
|
+
* says "outside of Canada" even for a business incorporated elsewhere. (The
|
|
921
|
+
* address drives a different sentence — the terms' governing-law clause, via
|
|
922
|
+
* `governingCountry`.) `satisfies` makes a new jurisdiction unable to forget it,
|
|
923
|
+
* the same guard style as `TEMPLATES`.
|
|
924
|
+
*/
|
|
925
|
+
const JURISDICTION_COUNTRIES = { ca: "Canada" };
|
|
926
|
+
/**
|
|
870
927
|
* A third party that receives personal information. The generator derives the
|
|
871
928
|
* ones it can see (analytics IDs, Turnstile, the deploy platform); this is for
|
|
872
929
|
* the rest, which no other part of the config implies.
|
|
@@ -874,10 +931,16 @@ const JurisdictionSchema = z.enum(JURISDICTIONS);
|
|
|
874
931
|
* Deliberately facts, not prose: the config records *what is true*, the template
|
|
875
932
|
* owns *how it is said*. That keeps a policy correct when the wording changes.
|
|
876
933
|
*/
|
|
934
|
+
const ProcessorStorageSchema = z.object({
|
|
935
|
+
country: desc(z.string(), "A country or bloc where this provider stores or processes the information, as it should read in a sentence (e.g. \"Canada\", \"the United States\", \"the European Union\"). Naming the jurisdiction the policy is written for is meaningful: it says this information does not leave it."),
|
|
936
|
+
scope: desc(z.optional(z.string()), "Which information is held there, as a noun phrase that reads after \"in the case of\" (e.g. \"account and sign-in information\", \"mailbox contents\"). Omit when this location holds everything the provider receives — a scoped entry claims LESS than an unscoped one, so omitting it is the safe default.")
|
|
937
|
+
});
|
|
877
938
|
const ProcessorSchema = z.object({
|
|
878
939
|
name: desc(z.string(), "The provider, as a reader would recognise it (e.g. \"Stripe\")."),
|
|
879
940
|
purpose: desc(z.string(), "Why they receive it, as a noun phrase that reads after \"for\" (e.g. \"payment processing\")."),
|
|
880
|
-
country: desc(z.optional(z.string()), "
|
|
941
|
+
country: desc(z.optional(z.string()), "Shorthand for the common case where one country is both where they store it and whose laws reach it: asserts BOTH `storage: [{ country }]` AND `operatorCountry`. Reads inside a sentence (e.g. \"the United States\"). When the two differ — a Canadian region operated by a US company — state `storage` and `operatorCountry` instead; setting this alongside either is rejected."),
|
|
942
|
+
storage: desc(z.optional(z.array(ProcessorStorageSchema)), "Where the information actually rests. Feeds the \"stored or processed outside of <jurisdiction>\" disclosure and nothing else. Several entries are allowed, each optionally scoped to a category of information — which is what makes a Canadian-region tenant holding identity data in the US expressible."),
|
|
943
|
+
operatorCountry: desc(z.optional(z.string()), "The jurisdiction that can compel this provider to hand the information over — where it is established, or from which it is controlled. Reads after \"the laws of\" (e.g. \"the United States\"); a bloc is acceptable. A SEPARATE fact from `storage`, because privacy law cares about foreign *access*, not only foreign storage: a Canadian-region service run by a US company is `storage: [{ country: \"Canada\" }]` with `operatorCountry: \"the United States\"`."),
|
|
881
944
|
privacyUrl: z.optional(z.url())
|
|
882
945
|
});
|
|
883
946
|
const SiteSectionSchema = z.object({
|
|
@@ -942,6 +1005,7 @@ const SiteSectionSchema = z.object({
|
|
|
942
1005
|
category: desc(z.optional(z.enum(["marketing", "analytics"])), "Consent category the `_ac` cookie waits on (default `marketing`). It is a 90-day identifier tying a visitor to the ad that brought them, so it is only written once this category is granted — and asking for it is what raises the banner."),
|
|
943
1006
|
platforms: desc(z.optional(z.array(z.string())), "Informational list of ad platforms in use. Capture recognises every known click-ID parameter regardless.")
|
|
944
1007
|
})), "Ad-click attribution for conversion tracking."),
|
|
1008
|
+
ads: desc(z.optional(z.partialRecord(AdProviderSchema, AdPropertySchema)), "Ad properties this site is linked to, keyed by platform. Read by `vitops ads setup` (ensure the DNS verification record), `vitops ads tags` (emit the consent-gated pixel), and the generated cookie notice (disclose what each pixel stores). Credentials never live here — the DNS write uses CLOUDFLARE_API_TOKEN from the environment."),
|
|
945
1009
|
security: desc(z.optional(z.object({ turnstile: z.optional(z.object({ siteKey: desc(z.optional(z.string()), "Cloudflare Turnstile site key (public).") })) })), "Security integrations (bot protection)."),
|
|
946
1010
|
legal: desc(z.optional(z.object({
|
|
947
1011
|
jurisdiction: desc(z.optional(JurisdictionSchema), "Which legal template set the generated documents use. Default `ca`."),
|
|
@@ -1161,6 +1225,27 @@ function validateConfig(input) {
|
|
|
1161
1225
|
bp
|
|
1162
1226
|
], `template "${tpl}" is not in site.templates`));
|
|
1163
1227
|
const privacy = site.legal?.privacyPolicy;
|
|
1228
|
+
/**
|
|
1229
|
+
* `country` is shorthand for BOTH `storage` and `operatorCountry`, so combining it
|
|
1230
|
+
* with either is genuinely ambiguous — is the shorthand narrowing the explicit
|
|
1231
|
+
* fact, or adding to it? Both readings are plausible and they make *contradictory
|
|
1232
|
+
* legal claims*, so this is rejected rather than resolved by a silent rule.
|
|
1233
|
+
*
|
|
1234
|
+
* Checked unconditionally, not gated on `privacy.enabled`: the fact is wrong
|
|
1235
|
+
* either way, and a document turned on later shouldn't surface it for the first
|
|
1236
|
+
* time. Here rather than as a `z.refine` on the schema because parse-time
|
|
1237
|
+
* rejection would make `resolveConfig` throw on the `vitops legal` path, which
|
|
1238
|
+
* has no formatting for a zod issue — `validateConfig` is where every other
|
|
1239
|
+
* cross-field legal requirement already lives, and it prints `path: message`.
|
|
1240
|
+
*/
|
|
1241
|
+
for (const [i, p] of (privacy?.processors ?? []).entries()) if (p.country != null && (p.storage != null || p.operatorCountry != null)) errors.push(issue([
|
|
1242
|
+
"site",
|
|
1243
|
+
"legal",
|
|
1244
|
+
"privacyPolicy",
|
|
1245
|
+
"processors",
|
|
1246
|
+
i,
|
|
1247
|
+
"country"
|
|
1248
|
+
], `processor "${p.name}": \`country\` is shorthand for BOTH \`storage\` and \`operatorCountry\`, so combining it with either makes the narrower claim ambiguous — drop \`country\` and state the two facts, or drop the two and keep the shorthand`));
|
|
1164
1249
|
if (typeof privacy?.privacyOfficer === "string" && !has(org?.locations, privacy.privacyOfficer)) errors.push(issue([
|
|
1165
1250
|
"site",
|
|
1166
1251
|
"legal",
|
|
@@ -1195,6 +1280,18 @@ function validateConfig(input) {
|
|
|
1195
1280
|
"keyLocation"
|
|
1196
1281
|
], "site.seo.indexing.indexNow needs site.domains.canonical to derive the key location — set one, or state keyLocation explicitly"));
|
|
1197
1282
|
}
|
|
1283
|
+
for (const [provider, entry] of Object.entries(site.ads ?? {})) {
|
|
1284
|
+
if (entry == null) continue;
|
|
1285
|
+
const platform = AD_PLATFORMS[provider];
|
|
1286
|
+
const at = [
|
|
1287
|
+
"site",
|
|
1288
|
+
"ads",
|
|
1289
|
+
provider
|
|
1290
|
+
];
|
|
1291
|
+
if (entry.domainVerification != null && platform.verification.method === "none") errors.push(issue([...at, "domainVerification"], `${platform.name} has no domain verification — ${platform.verification.reason ?? "nothing verifies a domain there"}. Remove the token; linking is the tag and the account id.`));
|
|
1292
|
+
if (entry.domainVerification != null && entry.domain == null && site.domains?.canonical == null) errors.push(issue([...at, "domain"], `site.ads.${provider}.domainVerification needs a domain to put the record on — set site.domains.canonical, or state site.ads.${provider}.domain explicitly`));
|
|
1293
|
+
if (entry.accountId == null && entry.pixelId == null) errors.push(issue(at, `site.ads.${provider} identifies nothing — set accountId (the advertising account) and/or pixelId (the tag: ${platform.tag.needs} is what its snippet needs)`));
|
|
1294
|
+
}
|
|
1198
1295
|
if (errors.length) return {
|
|
1199
1296
|
ok: false,
|
|
1200
1297
|
data: void 0,
|
|
@@ -4511,6 +4608,21 @@ is overwritten by the next build.
|
|
|
4511
4608
|
- **\`cookies: []\` is meaningfully different from \`undefined\`.** It *asserts* a provider is
|
|
4512
4609
|
cookieless (Plausible), which the cookie notice states **positively** rather than omitting.
|
|
4513
4610
|
|
|
4611
|
+
- **"Stored in" is not the same fact as "reachable by".** A processor's \`storage\` is where the
|
|
4612
|
+
information rests; \`operatorCountry\` is the jurisdiction that can compel the provider to hand
|
|
4613
|
+
it over. Privacy law turns on foreign **access**, not merely foreign storage, so the two get
|
|
4614
|
+
separate sentences — an Azure tenant in a Canadian region never moves the data and is still
|
|
4615
|
+
subject to US law. \`country\` is shorthand asserting both, and combining it with either is
|
|
4616
|
+
**rejected** rather than resolved by a silent rule: whether it narrows or adds is a
|
|
4617
|
+
contradiction between two legal claims, not a formatting choice.
|
|
4618
|
+
|
|
4619
|
+
A \`storage\` entry may be \`scope\`d to a category, which is what makes a Canadian tenant
|
|
4620
|
+
holding identity data abroad expressible. A country in the policy's own jurisdiction is not a
|
|
4621
|
+
transfer and is filtered out — that is what stopped \`country: "Canada"\` rendering "outside of
|
|
4622
|
+
Canada, including Canada". Only what the config states is asserted: hosts like Cloudflare
|
|
4623
|
+
declare an \`operatorCountry\` and **no** storage, because anycast means the config cannot know
|
|
4624
|
+
which region served a request, and "we don't know" is a fact.
|
|
4625
|
+
|
|
4514
4626
|
- **Form templates are the PII inventory.** \`site.templates\` entries of type \`form\` are the
|
|
4515
4627
|
only place the config says what personal information the site actually collects, so the
|
|
4516
4628
|
disclosed list derives from their fields. \`hidden\` fields and honeypots are **excluded** —
|
|
@@ -5063,6 +5175,26 @@ across every pattern. Focus rings are never removed, only restyled.
|
|
|
5063
5175
|
//#endregion
|
|
5064
5176
|
//#region src/legal/providers.ts
|
|
5065
5177
|
/**
|
|
5178
|
+
* What the config already tells us about third parties that receive personal
|
|
5179
|
+
* information.
|
|
5180
|
+
*
|
|
5181
|
+
* A privacy policy's riskiest sentence is the one naming service providers: if
|
|
5182
|
+
* it says "Plausible" while the site runs Google Analytics, the document is a
|
|
5183
|
+
* compliance defect, not a typo. The site config already records which analytics
|
|
5184
|
+
* ID is set, whether Turnstile is deployed and where the site is hosted — so the
|
|
5185
|
+
* sentence derives from those signals rather than from a hand-maintained string
|
|
5186
|
+
* that drifts the moment someone swaps providers.
|
|
5187
|
+
*
|
|
5188
|
+
* Presence of the key is the signal, matching how `analytics` already works
|
|
5189
|
+
* (provider identity is implied by which ID is set, not by an enum).
|
|
5190
|
+
*
|
|
5191
|
+
* This table is deliberately small and covers only what the schema can imply.
|
|
5192
|
+
* Everything else — payment processors, CRMs, mail senders — is declared by the
|
|
5193
|
+
* consumer in `legal.privacyPolicy.processors`, which flows through the same
|
|
5194
|
+
* pipeline. This is not a directory of the web; it's the set of providers the
|
|
5195
|
+
* toolchain itself can vouch for.
|
|
5196
|
+
*/
|
|
5197
|
+
/**
|
|
5066
5198
|
* The providers the config can imply. Keyed for testability — a test can assert
|
|
5067
5199
|
* a given config resolves to a given key without matching on prose.
|
|
5068
5200
|
*/
|
|
@@ -5116,28 +5248,28 @@ const KNOWN_PROCESSORS = {
|
|
|
5116
5248
|
turnstile: {
|
|
5117
5249
|
name: "Cloudflare Turnstile",
|
|
5118
5250
|
purpose: "bot protection on forms",
|
|
5119
|
-
|
|
5251
|
+
operatorCountry: "the United States",
|
|
5120
5252
|
privacyUrl: "https://www.cloudflare.com/privacypolicy/",
|
|
5121
5253
|
cookies: ["cf_clearance"]
|
|
5122
5254
|
},
|
|
5123
5255
|
cloudflare: {
|
|
5124
5256
|
name: "Cloudflare",
|
|
5125
5257
|
purpose: "website hosting and content delivery",
|
|
5126
|
-
|
|
5258
|
+
operatorCountry: "the United States",
|
|
5127
5259
|
privacyUrl: "https://www.cloudflare.com/privacypolicy/",
|
|
5128
5260
|
cookies: []
|
|
5129
5261
|
},
|
|
5130
5262
|
vercel: {
|
|
5131
5263
|
name: "Vercel",
|
|
5132
5264
|
purpose: "website hosting",
|
|
5133
|
-
|
|
5265
|
+
operatorCountry: "the United States",
|
|
5134
5266
|
privacyUrl: "https://vercel.com/legal/privacy-policy",
|
|
5135
5267
|
cookies: []
|
|
5136
5268
|
},
|
|
5137
5269
|
netlify: {
|
|
5138
5270
|
name: "Netlify",
|
|
5139
5271
|
purpose: "website hosting",
|
|
5140
|
-
|
|
5272
|
+
operatorCountry: "the United States",
|
|
5141
5273
|
privacyUrl: "https://www.netlify.com/privacy/",
|
|
5142
5274
|
cookies: []
|
|
5143
5275
|
}
|
|
@@ -5178,9 +5310,81 @@ function detectProcessorKeys(cfg) {
|
|
|
5178
5310
|
* an explicit declaration is a statement of fact we have no grounds to drop.
|
|
5179
5311
|
*/
|
|
5180
5312
|
function resolveProcessors(cfg) {
|
|
5181
|
-
const detected = detectProcessorKeys(cfg).map((k) =>
|
|
5313
|
+
const detected = detectProcessorKeys(cfg).map((k) => matomoLocation(KNOWN_PROCESSORS[k], cfg.site));
|
|
5182
5314
|
const declared = cfg.site.legal?.privacyPolicy?.processors ?? [];
|
|
5183
|
-
return [
|
|
5315
|
+
return [
|
|
5316
|
+
...detected,
|
|
5317
|
+
...adProcessors(cfg),
|
|
5318
|
+
...declared
|
|
5319
|
+
].map(desugarCountry);
|
|
5320
|
+
}
|
|
5321
|
+
/**
|
|
5322
|
+
* The ad platforms `site.ads` links this site to, as processors.
|
|
5323
|
+
*
|
|
5324
|
+
* Derived from `AD_PLATFORMS` rather than written out here, because the cookie
|
|
5325
|
+
* names, the privacy URL and the opt-out are the *same facts* `vitops ads tags`
|
|
5326
|
+
* writes into `data-consent-cookies` — and the one failure that matters is those
|
|
5327
|
+
* two disagreeing. A pixel that sets `_fbp` while the notice omits it is a
|
|
5328
|
+
* compliance defect, and a revoke that clears a cookie the notice never mentioned
|
|
5329
|
+
* is the same defect seen from the other end.
|
|
5330
|
+
*
|
|
5331
|
+
* `enabled: false` keeps a property on record without emitting its tag, so nothing
|
|
5332
|
+
* is set and nothing is disclosed. Everything else with an id is live.
|
|
5333
|
+
*/
|
|
5334
|
+
function adProcessors(cfg) {
|
|
5335
|
+
const ads = cfg.site.ads ?? {};
|
|
5336
|
+
return AD_PROVIDER_KEYS.filter((provider) => {
|
|
5337
|
+
const entry = ads[provider];
|
|
5338
|
+
return entry != null && entry.enabled !== false && (entry.pixelId ?? entry.accountId) != null;
|
|
5339
|
+
}).map((provider) => {
|
|
5340
|
+
const platform = AD_PLATFORMS[provider];
|
|
5341
|
+
return {
|
|
5342
|
+
name: platform.name,
|
|
5343
|
+
purpose: "advertising measurement and retargeting",
|
|
5344
|
+
operatorCountry: platform.operatorCountry,
|
|
5345
|
+
privacyUrl: platform.tag.privacyUrl,
|
|
5346
|
+
cookies: platform.tag.cookies,
|
|
5347
|
+
...platform.tag.optOut ? { optOut: platform.tag.optOut } : {}
|
|
5348
|
+
};
|
|
5349
|
+
});
|
|
5350
|
+
}
|
|
5351
|
+
/**
|
|
5352
|
+
* `country` → both facts it has always asserted.
|
|
5353
|
+
*
|
|
5354
|
+
* The sentence it fed claimed storage *and* legal reach in one breath ("may be
|
|
5355
|
+
* stored or processed in … including X. As a result … access requests from
|
|
5356
|
+
* governments … in those jurisdictions"). So expanding it to storage alone would
|
|
5357
|
+
* silently retract half of a claim consumers have already published. Expanding to
|
|
5358
|
+
* both is also what keeps the rendered output byte-identical for every config that
|
|
5359
|
+
* used the shorthand.
|
|
5360
|
+
*
|
|
5361
|
+
* `country` is left in place — it is public API and `PolicyVars.countries` still
|
|
5362
|
+
* reports it. When the explicit fields are present they win; `validateConfig`
|
|
5363
|
+
* rejects that combination, so it is unreachable through a validated config, but
|
|
5364
|
+
* `resolveProcessors` is exported and needs a defined answer regardless.
|
|
5365
|
+
*/
|
|
5366
|
+
function desugarCountry(p) {
|
|
5367
|
+
if (!p.country) return p;
|
|
5368
|
+
return {
|
|
5369
|
+
...p,
|
|
5370
|
+
storage: p.storage ?? [{ country: p.country }],
|
|
5371
|
+
operatorCountry: p.operatorCountry ?? p.country
|
|
5372
|
+
};
|
|
5373
|
+
}
|
|
5374
|
+
/**
|
|
5375
|
+
* Processors the config discloses but places nowhere.
|
|
5376
|
+
*
|
|
5377
|
+
* Such a processor cannot appear in the transfer disclosure — there is nothing true
|
|
5378
|
+
* to say about it — and today it vanishes from that section in silence, which is the
|
|
5379
|
+
* tidy-looking failure. Names only, and deliberately NOT on `PolicyVars`: that type
|
|
5380
|
+
* is the facts a template renders from, and a document must not editorialise about
|
|
5381
|
+
* its own gaps. The CLI reports these on stderr instead.
|
|
5382
|
+
*
|
|
5383
|
+
* Not a `validateConfig` error either: a bare `{ name, purpose }` validates today,
|
|
5384
|
+
* so rejecting it would make this a breaking change.
|
|
5385
|
+
*/
|
|
5386
|
+
function processorsMissingLocation(cfg) {
|
|
5387
|
+
return resolveProcessors(cfg).filter((p) => !p.operatorCountry && !p.storage?.length).map((p) => p.name);
|
|
5184
5388
|
}
|
|
5185
5389
|
/**
|
|
5186
5390
|
* Matomo is the one provider whose location the config actually knows.
|
|
@@ -5190,13 +5394,17 @@ function resolveProcessors(cfg) {
|
|
|
5190
5394
|
* country. So the cross-border transfer sentence is asserted only for the case we
|
|
5191
5395
|
* can see. Naming a transfer that isn't happening is the same class of error as
|
|
5192
5396
|
* omitting one that is — the config records facts, and "we don't know" is a fact.
|
|
5397
|
+
*
|
|
5398
|
+
* This sets `storage`, not `operatorCountry`: Matomo Cloud genuinely holds the data
|
|
5399
|
+
* in the EU. InnoCraft is New Zealand-based, but nothing in the config sees that, so
|
|
5400
|
+
* no operator jurisdiction is asserted — the same rule, applied to the other fact.
|
|
5193
5401
|
*/
|
|
5194
|
-
function
|
|
5402
|
+
function matomoLocation(processor, site) {
|
|
5195
5403
|
if (processor.name !== "Matomo") return processor;
|
|
5196
5404
|
const url = site.analytics?.matomo?.url ?? "";
|
|
5197
5405
|
return /\.matomo\.cloud/i.test(url) ? {
|
|
5198
5406
|
...processor,
|
|
5199
|
-
country: "the European Union"
|
|
5407
|
+
storage: [{ country: "the European Union" }]
|
|
5200
5408
|
} : processor;
|
|
5201
5409
|
}
|
|
5202
5410
|
|
|
@@ -5399,7 +5607,38 @@ function derivePolicyVars(cfg) {
|
|
|
5399
5607
|
...processors.filter((p) => p.optOut).map((p) => `You may opt out of ${p.name} directly at ${p.optOut}.`)
|
|
5400
5608
|
]);
|
|
5401
5609
|
const optOutOptions = uniq(["You may unsubscribe from any commercial e-mail we send using the \"unsubscribe\" link in that e-mail.", ...cookieOptOutOptions]);
|
|
5402
|
-
|
|
5610
|
+
/**
|
|
5611
|
+
* The cross-border disclosure, as two facts rather than one flattened list.
|
|
5612
|
+
*
|
|
5613
|
+
* Order matters here — each step narrows what the next may claim:
|
|
5614
|
+
*
|
|
5615
|
+
* 1. Anything in this jurisdiction is not a transfer at all, so it is filtered
|
|
5616
|
+
* out. Without this, `country: "Canada"` rendered "outside of Canada,
|
|
5617
|
+
* including Canada".
|
|
5618
|
+
* 2. An unscoped storage country is the BROAD claim; a scoped one covering the
|
|
5619
|
+
* same country would only narrow it, so it is dropped as redundant.
|
|
5620
|
+
* 3. An operator country already named as storage adds no fact — "US law reaches
|
|
5621
|
+
* information stored in the US" is a sentence, not information.
|
|
5622
|
+
*
|
|
5623
|
+
* Steps 2 and 3 are what make the rendered output byte-identical for every config
|
|
5624
|
+
* that used `country` (which desugars to both facts).
|
|
5625
|
+
*
|
|
5626
|
+
* No geography is inferred — "France" is not resolved into "the European Union".
|
|
5627
|
+
* Only what the config states is asserted, which is the `matomoLocation` rule.
|
|
5628
|
+
*/
|
|
5629
|
+
const jurisdictionCountry = JURISDICTION_COUNTRIES[legal?.jurisdiction ?? "ca"];
|
|
5630
|
+
const norm = (c) => c.trim().toLowerCase().replace(/^the\s+/, "");
|
|
5631
|
+
const foreign = (c) => norm(c) !== norm(jurisdictionCountry);
|
|
5632
|
+
const allStorage = processors.flatMap((p) => p.storage ?? []);
|
|
5633
|
+
const unscoped = uniq(allStorage.filter((s) => !s.scope && foreign(s.country)).map((s) => s.country));
|
|
5634
|
+
const storageCountries = list(unscoped);
|
|
5635
|
+
const named = new Set(unscoped.map(norm));
|
|
5636
|
+
const scopedStorage = [...new Map(allStorage.filter((s) => s.scope && foreign(s.country) && !named.has(norm(s.country))).map((s) => [`${norm(s.country)}|${s.scope}`, {
|
|
5637
|
+
country: s.country,
|
|
5638
|
+
scope: s.scope
|
|
5639
|
+
}])).values()];
|
|
5640
|
+
const operatorCountries = list(uniq(processors.map((p) => p.operatorCountry)).filter((c) => foreign(c) && !named.has(norm(c))));
|
|
5641
|
+
const countries = list(uniq(processors.flatMap((p) => [...(p.storage ?? []).map((s) => s.country), p.operatorCountry])));
|
|
5403
5642
|
const address = contact?.address ?? org?.address;
|
|
5404
5643
|
return {
|
|
5405
5644
|
businessName,
|
|
@@ -5426,6 +5665,10 @@ function derivePolicyVars(cfg) {
|
|
|
5426
5665
|
purpose: "records the advertisement or campaign you arrived from, so an enquiry can be attributed to it",
|
|
5427
5666
|
retention: "90 days"
|
|
5428
5667
|
}] : [],
|
|
5668
|
+
jurisdictionCountry,
|
|
5669
|
+
storageCountries: storageCountries || void 0,
|
|
5670
|
+
scopedStorage,
|
|
5671
|
+
operatorCountries: operatorCountries || void 0,
|
|
5429
5672
|
countries: countries || void 0,
|
|
5430
5673
|
consentModel: consent?.enabled ? consent.type ?? "opt-in" : "none",
|
|
5431
5674
|
cookieCategories: consent?.categories ?? []
|
|
@@ -5753,6 +5996,23 @@ ${bullets(v.cookieCategories)}
|
|
|
5753
5996
|
|
|
5754
5997
|
//#endregion
|
|
5755
5998
|
//#region src/legal/templates/privacy.ca.ts
|
|
5999
|
+
/**
|
|
6000
|
+
* Privacy policy — Canada (PIPEDA).
|
|
6001
|
+
*
|
|
6002
|
+
* Ported from the pandoc prototype at `packages/core/legal-templates/`. Two
|
|
6003
|
+
* things changed in the port and both are load-bearing:
|
|
6004
|
+
*
|
|
6005
|
+
* 1. `${var}` is now real TypeScript interpolation rather than a pandoc Lua
|
|
6006
|
+
* filter, so an unresolved variable is a compile error. The filter left
|
|
6007
|
+
* unknown keys as the literal text `${key}` — which would ship a live
|
|
6008
|
+
* privacy policy containing `${countries}`.
|
|
6009
|
+
* 2. Lists are built from arrays, not by splicing a string into a fixed bullet.
|
|
6010
|
+
* An empty derived value used to produce a stray `- ; and` bullet.
|
|
6011
|
+
*
|
|
6012
|
+
* The prose is jurisdiction-specific: it names the Office of the Privacy
|
|
6013
|
+
* Commissioner of Canada and frames transfers as "outside of Canada". Do not
|
|
6014
|
+
* reuse it for another jurisdiction — add a sibling template instead.
|
|
6015
|
+
*/
|
|
5756
6016
|
function privacyCa(v) {
|
|
5757
6017
|
return `# Privacy Policy
|
|
5758
6018
|
${updatedLine(v)}
|
|
@@ -5854,15 +6114,46 @@ ${bullets(v.processors.map((p) => `${p.name}, for ${p.purpose}${p.privacyUrl ? `
|
|
|
5854
6114
|
|
|
5855
6115
|
We remain responsible for personal information in the possession of our service providers.`;
|
|
5856
6116
|
}
|
|
5857
|
-
/**
|
|
6117
|
+
/**
|
|
6118
|
+
* Omitted entirely when nothing leaves the country — a false claim otherwise.
|
|
6119
|
+
*
|
|
6120
|
+
* Two clauses, because storage and legal reach are two facts and the OPC's concern
|
|
6121
|
+
* is foreign **access**, not merely foreign storage. A provider can hold data in
|
|
6122
|
+
* Canada and still be compellable abroad (Azure in a Canadian region), and a
|
|
6123
|
+
* provider can hold only one category of data abroad (a Canadian tenant whose
|
|
6124
|
+
* identity data sits in the US). One sentence could state neither.
|
|
6125
|
+
*
|
|
6126
|
+
* The closer is shared: it is true of whichever clauses appear.
|
|
6127
|
+
*/
|
|
5858
6128
|
function transferSection(v) {
|
|
5859
|
-
|
|
6129
|
+
const clauses = [storageClause(v), operatorClause(v)].filter(Boolean);
|
|
6130
|
+
if (clauses.length === 0) return "";
|
|
5860
6131
|
return `
|
|
5861
6132
|
### We May Transfer Personal Information to Other Countries
|
|
5862
6133
|
|
|
5863
|
-
|
|
6134
|
+
${clauses.join("\n\n")}
|
|
6135
|
+
|
|
6136
|
+
As a result, this information may be subject to access requests from governments, courts or law enforcement in those jurisdictions according to laws in those jurisdictions.
|
|
5864
6137
|
`;
|
|
5865
6138
|
}
|
|
6139
|
+
/**
|
|
6140
|
+
* Where the information rests.
|
|
6141
|
+
*
|
|
6142
|
+
* A scoped location gets its own sentence rather than joining the "including …"
|
|
6143
|
+
* list: folded in, a reader would take it to cover everything the provider holds,
|
|
6144
|
+
* which is a broader claim than the config made.
|
|
6145
|
+
*/
|
|
6146
|
+
function storageClause(v) {
|
|
6147
|
+
const scoped = list(v.scopedStorage.map((s) => `${s.country}, in the case of ${s.scope}`));
|
|
6148
|
+
if (v.storageCountries) return `Some or all of the personal information we collect may be stored or processed in jurisdictions outside of Canada, including ${v.storageCountries}.${scoped ? ` Certain categories of personal information are held outside of Canada even where the rest is not: ${scoped}.` : ""}`;
|
|
6149
|
+
if (scoped) return `Certain categories of the personal information we collect are stored or processed outside of Canada: ${scoped}.`;
|
|
6150
|
+
return "";
|
|
6151
|
+
}
|
|
6152
|
+
/** The Azure-in-Canada case: the information never moves, and foreign law still reaches it. */
|
|
6153
|
+
function operatorClause(v) {
|
|
6154
|
+
if (!v.operatorCountries) return "";
|
|
6155
|
+
return `Some of the service providers we use are established in, or controlled from, jurisdictions outside of Canada, including ${v.operatorCountries}. Personal information those providers handle on our behalf may be subject to the laws of those jurisdictions even when it is stored in Canada.`;
|
|
6156
|
+
}
|
|
5866
6157
|
|
|
5867
6158
|
//#endregion
|
|
5868
6159
|
//#region src/legal/templates/terms.ca.ts
|
|
@@ -7728,5 +8019,5 @@ function defaultConfig() {
|
|
|
7728
8019
|
}
|
|
7729
8020
|
|
|
7730
8021
|
//#endregion
|
|
7731
|
-
export { BASE_HOOK, CONFIG_SCHEMA_URL, CONTRAST, ConfigSchema, DARK_SEL, DOC_ORDER, DOC_SLUGS, DesignSystemSchema, JURISDICTIONS, KNOWN_PROCESSORS, NUMERIC_STEPS, REQUIRED_ROLES, ROLE_TOKEN_KEYS, SCHEMA_URL, SiteFontSchema, TEMPLATES, TIERS, TIER_NAMES, TW_CLASH, buildIconSprite, configJsonSchema, deepMerge, defaultConfig, derivePolicyVars, detectProcessorKeys, enabledDocs, expandPalette, functionalRole, generate, generateDocs, generateLegal, isConfig, jsonSchema, loadIconSvg, parseMarkdown, renderInlineMarkdown, renderMarkdown, renderNodes, resolveConfig, resolveInput, resolvePrivacyContact, resolveProcessors, resolveTheme, roleColorUtilities, roleHue, roleKind, schemaTreeNodes, spriteId, stripNulls, tierPatterns, tierTags, toContentNodes, toHtmlFragment, toPortableText, tokenClass, tokenVar, validate, validateConfig };
|
|
8022
|
+
export { AD_PROVIDERS, BASE_HOOK, CONFIG_SCHEMA_URL, CONTRAST, ConfigSchema, DARK_SEL, DOC_ORDER, DOC_SLUGS, DesignSystemSchema, JURISDICTIONS, JURISDICTION_COUNTRIES, KNOWN_PROCESSORS, NUMERIC_STEPS, REQUIRED_ROLES, ROLE_TOKEN_KEYS, SCHEMA_URL, SiteFontSchema, TEMPLATES, TIERS, TIER_NAMES, TW_CLASH, buildIconSprite, configJsonSchema, deepMerge, defaultConfig, derivePolicyVars, detectProcessorKeys, enabledDocs, expandPalette, functionalRole, generate, generateDocs, generateLegal, isConfig, jsonSchema, loadIconSvg, parseMarkdown, processorsMissingLocation, renderInlineMarkdown, renderMarkdown, renderNodes, resolveConfig, resolveInput, resolvePrivacyContact, resolveProcessors, resolveTheme, roleColorUtilities, roleHue, roleKind, schemaTreeNodes, spriteId, stripNulls, tierPatterns, tierTags, toContentNodes, toHtmlFragment, toPortableText, tokenClass, tokenVar, validate, validateConfig };
|
|
7732
8023
|
//# sourceMappingURL=index.mjs.map
|