bsmnt 0.12.0 → 0.13.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/dist/application/add-integration/index.d.ts.map +1 -1
- package/dist/application/add-integration/index.js +23 -0
- package/dist/application/add-integration/index.js.map +1 -1
- package/dist/domain/consent.d.ts +17 -0
- package/dist/domain/consent.d.ts.map +1 -0
- package/dist/domain/consent.js +13 -0
- package/dist/domain/consent.js.map +1 -0
- package/dist/domain/integration.d.ts +19 -2
- package/dist/domain/integration.d.ts.map +1 -1
- package/dist/domain/integration.js +10 -1
- package/dist/domain/integration.js.map +1 -1
- package/dist/domain/jobs.d.ts +17 -0
- package/dist/domain/jobs.d.ts.map +1 -0
- package/dist/domain/jobs.js +13 -0
- package/dist/domain/jobs.js.map +1 -0
- package/dist/domain/skills.d.ts +23 -2
- package/dist/domain/skills.d.ts.map +1 -1
- package/dist/domain/skills.js +23 -2
- package/dist/domain/skills.js.map +1 -1
- package/dist/domain/templates.d.ts +7 -1
- package/dist/domain/templates.d.ts.map +1 -1
- package/dist/domain/templates.js +2 -0
- package/dist/domain/templates.js.map +1 -1
- package/dist/index.js +34 -9
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/create/setup-agent.d.ts.map +1 -1
- package/dist/infrastructure/create/setup-agent.js +11 -4
- package/dist/infrastructure/create/setup-agent.js.map +1 -1
- package/dist/infrastructure/integrations/inject-integration.d.ts.map +1 -1
- package/dist/infrastructure/integrations/inject-integration.js +36 -2
- package/dist/infrastructure/integrations/inject-integration.js.map +1 -1
- package/dist/modules/features/consent/ketch/config.d.ts +18 -0
- package/dist/modules/features/consent/ketch/config.d.ts.map +1 -0
- package/dist/modules/features/consent/ketch/config.js +24 -0
- package/dist/modules/features/consent/ketch/config.js.map +1 -0
- package/dist/modules/features/consent/ketch/mergers/biome.d.ts +16 -0
- package/dist/modules/features/consent/ketch/mergers/biome.d.ts.map +1 -0
- package/dist/modules/features/consent/ketch/mergers/biome.js +31 -0
- package/dist/modules/features/consent/ketch/mergers/biome.js.map +1 -0
- package/dist/modules/features/consent/ketch/mergers/check-integration.d.ts +13 -0
- package/dist/modules/features/consent/ketch/mergers/check-integration.d.ts.map +1 -0
- package/dist/modules/features/consent/ketch/mergers/check-integration.js +64 -0
- package/dist/modules/features/consent/ketch/mergers/check-integration.js.map +1 -0
- package/dist/modules/features/consent/ketch/mergers/env-example.d.ts +12 -0
- package/dist/modules/features/consent/ketch/mergers/env-example.d.ts.map +1 -0
- package/dist/modules/features/consent/ketch/mergers/env-example.js +28 -0
- package/dist/modules/features/consent/ketch/mergers/env-example.js.map +1 -0
- package/dist/modules/features/consent/ketch/mergers/footer.d.ts +17 -0
- package/dist/modules/features/consent/ketch/mergers/footer.d.ts.map +1 -0
- package/dist/modules/features/consent/ketch/mergers/footer.js +40 -0
- package/dist/modules/features/consent/ketch/mergers/footer.js.map +1 -0
- package/dist/modules/features/consent/ketch/mergers/knip.d.ts +18 -0
- package/dist/modules/features/consent/ketch/mergers/knip.d.ts.map +1 -0
- package/dist/modules/features/consent/ketch/mergers/knip.js +37 -0
- package/dist/modules/features/consent/ketch/mergers/knip.js.map +1 -0
- package/dist/modules/features/consent/ketch/mergers/layout.d.ts +25 -0
- package/dist/modules/features/consent/ketch/mergers/layout.d.ts.map +1 -0
- package/dist/modules/features/consent/ketch/mergers/layout.js +55 -0
- package/dist/modules/features/consent/ketch/mergers/layout.js.map +1 -0
- package/dist/modules/features/jobs/ashby/config.d.ts +19 -0
- package/dist/modules/features/jobs/ashby/config.d.ts.map +1 -0
- package/dist/modules/features/jobs/ashby/config.js +29 -0
- package/dist/modules/features/jobs/ashby/config.js.map +1 -0
- package/dist/modules/features/jobs/ashby/mergers/check-integration.d.ts +14 -0
- package/dist/modules/features/jobs/ashby/mergers/check-integration.d.ts.map +1 -0
- package/dist/modules/features/jobs/ashby/mergers/check-integration.js +78 -0
- package/dist/modules/features/jobs/ashby/mergers/check-integration.js.map +1 -0
- package/dist/modules/features/jobs/ashby/mergers/env-example.d.ts +12 -0
- package/dist/modules/features/jobs/ashby/mergers/env-example.d.ts.map +1 -0
- package/dist/modules/features/jobs/ashby/mergers/env-example.js +27 -0
- package/dist/modules/features/jobs/ashby/mergers/env-example.js.map +1 -0
- package/dist/modules/features/jobs/ashby/mergers/knip.d.ts +18 -0
- package/dist/modules/features/jobs/ashby/mergers/knip.d.ts.map +1 -0
- package/dist/modules/features/jobs/ashby/mergers/knip.js +41 -0
- package/dist/modules/features/jobs/ashby/mergers/knip.js.map +1 -0
- package/dist/paths.d.ts +12 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +12 -0
- package/dist/paths.js.map +1 -1
- package/package.json +3 -1
- package/src/agent-skills/ashby-pagebuilder-block/SKILL.md +277 -0
- package/src/agent-skills/hubspot-pagebuilder-block/SKILL.md +58 -25
- package/src/agent-skills/ketch-consent-check/SKILL.md +197 -0
- package/src/agent-skills/ketch-consent-setup/SKILL.md +326 -0
- package/src/agent-skills/ketch-consent-setup/references/ui-customization.md +329 -0
- package/src/agent-skills/page-builder-block/SKILL.md +150 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/components/anchor-id-input.tsx +17 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/components/presentation-input.tsx +146 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/components/spacing-steps-input.tsx +84 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/fetchers/layout.ts +6 -3
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/icons.ts +8 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/queries.ts +12 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/components/reusable/blog-content.ts +3 -3
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/components/reusable/description.ts +3 -3
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/components/reusable/gated-content.ts +3 -3
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/components/reusable/hero.ts +3 -3
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/components/reusable/rich-text-block.ts +3 -3
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/components/singleton/content-collection.ts +3 -3
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/index.ts +8 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/layout/spacing-settings.ts +120 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/shared/anchor.ts +75 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/shared/block.ts +46 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/shared/presentation.ts +44 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/schemas/shared/spacing.ts +164 -0
- package/src/modules/features/cms/sanity-pagebuilder/files/lib/integrations/sanity/singletons.ts +7 -0
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/components/anchor-id-input.tsx +17 -0
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/components/presentation-input.tsx +146 -0
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/components/spacing-steps-input.tsx +84 -0
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/fetchers/layout.ts +4 -2
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/icons.ts +8 -0
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/queries.ts +12 -0
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/schemas/components/reusable/blog-content.ts +3 -3
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/schemas/components/reusable/description.ts +3 -3
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/schemas/components/reusable/gated-content.ts +3 -3
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/schemas/components/reusable/hero.ts +3 -3
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/schemas/components/reusable/rich-text-block.ts +3 -3
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/schemas/components/singleton/content-collection.ts +3 -3
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/schemas/index.ts +8 -0
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/schemas/layout/spacing-settings.ts +120 -0
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/schemas/shared/anchor.ts +75 -0
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/schemas/shared/block.ts +46 -0
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/schemas/shared/presentation.ts +44 -0
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/schemas/shared/spacing.ts +164 -0
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/singletons.ts +7 -0
- package/src/modules/features/cms/sanity-pagebuilder-cache/files/lib/integrations/sanity/tags.ts +2 -0
- package/src/modules/features/consent/ketch/files/lib/integrations/check-integration.ts +25 -0
- package/src/modules/features/consent/ketch/files/lib/integrations/ketch/README.md +70 -0
- package/src/modules/features/consent/ketch/files/lib/integrations/ketch/categories.ts +20 -0
- package/src/modules/features/consent/ketch/files/lib/integrations/ketch/consent-store.ts +107 -0
- package/src/modules/features/consent/ketch/files/lib/integrations/ketch/env.ts +20 -0
- package/src/modules/features/consent/ketch/files/lib/integrations/ketch/ketch-experience.css +136 -0
- package/src/modules/features/consent/ketch/files/lib/integrations/ketch/preferences-button.tsx +51 -0
- package/src/modules/features/consent/ketch/files/lib/integrations/ketch/script.tsx +8 -0
- package/src/modules/features/consent/ketch/files/lib/integrations/ketch/types.ts +15 -0
- package/src/modules/features/consent/ketch/files/lib/integrations/ketch/use-consent.ts +26 -0
- package/src/modules/features/jobs/ashby/files/_sanity-adapter/job-board-block.ts +53 -0
- package/src/modules/features/jobs/ashby/files/lib/integrations/ashby/README.md +134 -0
- package/src/modules/features/jobs/ashby/files/lib/integrations/ashby/env.ts +3 -0
- package/src/modules/features/jobs/ashby/files/lib/integrations/ashby/index.ts +40 -0
- package/src/modules/features/jobs/ashby/files/lib/integrations/ashby/normalize.ts +124 -0
- package/src/modules/features/jobs/ashby/files/lib/integrations/ashby/types.ts +20 -0
- package/src/modules/features/jobs/ashby/files/lib/integrations/check-integration.ts +25 -0
- package/src/templates/next-pagebuilder/AGENTS.md +129 -0
- package/src/templates/next-pagebuilder/CLAUDE.md +3 -0
- package/src/templates/next-pagebuilder/README.md +70 -0
- package/src/templates/next-pagebuilder/app/(content)/layout.tsx +2 -0
- package/src/templates/next-pagebuilder/components/layout/spacing-scale/index.tsx +18 -0
- package/src/templates/next-pagebuilder/components/page-builder/components/article-content/index.tsx +1 -1
- package/src/templates/next-pagebuilder/components/page-builder/components/content-collection/index.tsx +2 -2
- package/src/templates/next-pagebuilder/components/page-builder/components/description.tsx +3 -7
- package/src/templates/next-pagebuilder/components/page-builder/components/gated-content/index.tsx +2 -2
- package/src/templates/next-pagebuilder/components/page-builder/components/hero.tsx +3 -7
- package/src/templates/next-pagebuilder/components/page-builder/components/rich-text-block.tsx +3 -5
- package/src/templates/next-pagebuilder/components/page-builder/registry.tsx +70 -0
- package/src/templates/next-pagebuilder/components/page-builder/renderer.tsx +33 -49
- package/src/templates/next-pagebuilder/components/page-builder/section.tsx +35 -0
- package/src/templates/next-pagebuilder/components/page-document/index.tsx +1 -1
- package/src/templates/next-pagebuilder/lib/integrations/sanity/sanity.types.ts +92 -4
- package/src/templates/next-pagebuilder-cache/AGENTS.md +136 -0
- package/src/templates/next-pagebuilder-cache/CLAUDE.md +3 -0
- package/src/templates/next-pagebuilder-cache/README.md +75 -0
- package/src/templates/next-pagebuilder-cache/app/(content)/layout.tsx +2 -0
- package/src/templates/next-pagebuilder-cache/components/layout/spacing-scale/index.tsx +46 -0
- package/src/templates/next-pagebuilder-cache/components/page-builder/components/article-content/index.tsx +1 -1
- package/src/templates/next-pagebuilder-cache/components/page-builder/components/content-collection/index.tsx +2 -2
- package/src/templates/next-pagebuilder-cache/components/page-builder/components/description.tsx +3 -7
- package/src/templates/next-pagebuilder-cache/components/page-builder/components/gated-content/index.tsx +2 -2
- package/src/templates/next-pagebuilder-cache/components/page-builder/components/hero.tsx +3 -7
- package/src/templates/next-pagebuilder-cache/components/page-builder/components/rich-text-block.tsx +3 -5
- package/src/templates/next-pagebuilder-cache/components/page-builder/registry.tsx +70 -0
- package/src/templates/next-pagebuilder-cache/components/page-builder/renderer.tsx +33 -49
- package/src/templates/next-pagebuilder-cache/components/page-builder/section.tsx +35 -0
- package/src/templates/next-pagebuilder-cache/components/page-document/index.tsx +1 -1
- package/src/templates/next-pagebuilder-cache/lib/integrations/sanity/sanity.types.ts +92 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knip.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/features/consent/ketch/mergers/knip.ts"],"names":[],"mappings":"AAUA,UAAU,gBAAgB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD,UAAU,WAAW;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAUD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC9B,QAAQ,EAAE,MAAM,EAChB,EAAE,UAAU,EAAE,GAAE,gBAAqB,GACnC,OAAO,CAAC,WAAW,CAAC,CAgBtB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import fs from "fs-extra";
|
|
2
|
+
/**
|
|
3
|
+
* knip config addition for the Ketch surface. `lib/integrations/ketch/**`
|
|
4
|
+
* isn't covered by the default `components/**` entry, and its exports
|
|
5
|
+
* (`useConsent`, `consentStore`, `TRACKER_CONSENT_CATEGORY`, …) are meant to
|
|
6
|
+
* be imported from elsewhere in the app, not flagged as unused.
|
|
7
|
+
*/
|
|
8
|
+
const KETCH_ENTRY_PATH = "lib/integrations/ketch/**/*.{ts,tsx}";
|
|
9
|
+
function union(existing, additions) {
|
|
10
|
+
const result = [...(existing ?? [])];
|
|
11
|
+
for (const item of additions) {
|
|
12
|
+
if (!result.includes(item))
|
|
13
|
+
result.push(item);
|
|
14
|
+
}
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Merge the Ketch knip entry into the project's `knip.json` so its exports
|
|
19
|
+
* aren't flagged as unused once the integration files are in place. Respects
|
|
20
|
+
* `pathPrefix` — on a `src/app` project the files land under
|
|
21
|
+
* `src/lib/integrations/ketch`, so the glob has to match that, or knip treats
|
|
22
|
+
* every export there as dead code.
|
|
23
|
+
*/
|
|
24
|
+
export async function mergeKnip(knipPath, { pathPrefix } = {}) {
|
|
25
|
+
if (!(await fs.pathExists(knipPath))) {
|
|
26
|
+
return { skipped: true, reason: "No knip.json to update" };
|
|
27
|
+
}
|
|
28
|
+
const entryGlob = `${pathPrefix ?? ""}${KETCH_ENTRY_PATH}`;
|
|
29
|
+
const config = (await fs.readJson(knipPath));
|
|
30
|
+
if (config.entry?.includes(entryGlob)) {
|
|
31
|
+
return { skipped: true, reason: "Already has the Ketch entry" };
|
|
32
|
+
}
|
|
33
|
+
config.entry = union(config.entry, [entryGlob]);
|
|
34
|
+
await fs.writeJson(knipPath, config, { spaces: 2 });
|
|
35
|
+
return { success: true };
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=knip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knip.js","sourceRoot":"","sources":["../../../../../../src/modules/features/consent/ketch/mergers/knip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,sCAAsC,CAAC;AAiBhE,SAAS,KAAK,CAAC,QAA8B,EAAE,SAAmB;IACjE,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC9B,QAAgB,EAChB,EAAE,UAAU,EAAE,GAAqB,EAAE;IAErC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,SAAS,GAAG,GAAG,UAAU,IAAI,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC3D,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAe,CAAC;IAE3D,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,6BAA6B,EAAE,CAAC;IACjE,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhD,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
interface MergeLayoutOptions {
|
|
2
|
+
targetDir?: string;
|
|
3
|
+
pathPrefix?: string;
|
|
4
|
+
}
|
|
5
|
+
interface MergeResult {
|
|
6
|
+
skipped?: boolean;
|
|
7
|
+
reason?: string;
|
|
8
|
+
success?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Merge the Ketch consent script into the layout that renders the site chrome
|
|
12
|
+
* — never the root layout directly, so the CMP stays out of `/studio`:
|
|
13
|
+
*
|
|
14
|
+
* - Page-builder templates ship a dedicated `app/(content)/layout.tsx` for
|
|
15
|
+
* chrome, kept separate from the root layout precisely so admin routes
|
|
16
|
+
* don't render it. Mount there.
|
|
17
|
+
* - Otherwise there's no such split. If Sanity's own merger already wrapped
|
|
18
|
+
* the root layout's chrome in `<SanityStudioGuard>`, mount inside that
|
|
19
|
+
* guard. If not (no Sanity, or Sanity not installed yet), the root layout
|
|
20
|
+
* *is* the site-chrome layout — there's no `/studio` to keep it out of —
|
|
21
|
+
* so mount as the first child of `<body>`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function mergeLayout(templatePath: string, { targetDir, pathPrefix }?: MergeLayoutOptions): Promise<MergeResult>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=layout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/features/consent/ketch/mergers/layout.ts"],"names":[],"mappings":"AAMA,UAAU,kBAAkB;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,WAAW;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AA2BD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAChC,YAAY,EAAE,MAAM,EACpB,EAAE,SAAS,EAAE,UAAU,EAAE,GAAE,kBAAuB,GAChD,OAAO,CAAC,WAAW,CAAC,CAiCtB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
const KETCH_IMPORT = `import { KetchConsentScript } from "@/lib/integrations/ketch/script"`;
|
|
4
|
+
const KETCH_TAG = "<KetchConsentScript />";
|
|
5
|
+
/** Insert `line` right after the first match of `openTag`, indented like the line that follows it. */
|
|
6
|
+
function insertAfterOpenTag(content, openTag, line) {
|
|
7
|
+
const match = content.match(openTag);
|
|
8
|
+
if (!match || match.index === undefined)
|
|
9
|
+
return null;
|
|
10
|
+
const afterTag = match.index + match[0].length;
|
|
11
|
+
const nextLineIndent = content.slice(afterTag).match(/\r?\n(\s*)\S/)?.[1] ?? "";
|
|
12
|
+
return `${content.slice(0, afterTag)}\n${nextLineIndent}${line}${content.slice(afterTag)}`;
|
|
13
|
+
}
|
|
14
|
+
function addImport(content) {
|
|
15
|
+
const importSectionMatch = content.match(/^(?:import[\s\S]+?["'];?\r?\n)+/m);
|
|
16
|
+
if (importSectionMatch?.index === undefined)
|
|
17
|
+
return `${KETCH_IMPORT}\n${content}`;
|
|
18
|
+
const insertPos = importSectionMatch.index + importSectionMatch[0].length;
|
|
19
|
+
return `${content.slice(0, insertPos)}${KETCH_IMPORT}\n${content.slice(insertPos)}`;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Merge the Ketch consent script into the layout that renders the site chrome
|
|
23
|
+
* — never the root layout directly, so the CMP stays out of `/studio`:
|
|
24
|
+
*
|
|
25
|
+
* - Page-builder templates ship a dedicated `app/(content)/layout.tsx` for
|
|
26
|
+
* chrome, kept separate from the root layout precisely so admin routes
|
|
27
|
+
* don't render it. Mount there.
|
|
28
|
+
* - Otherwise there's no such split. If Sanity's own merger already wrapped
|
|
29
|
+
* the root layout's chrome in `<SanityStudioGuard>`, mount inside that
|
|
30
|
+
* guard. If not (no Sanity, or Sanity not installed yet), the root layout
|
|
31
|
+
* *is* the site-chrome layout — there's no `/studio` to keep it out of —
|
|
32
|
+
* so mount as the first child of `<body>`.
|
|
33
|
+
*/
|
|
34
|
+
export async function mergeLayout(templatePath, { targetDir, pathPrefix } = {}) {
|
|
35
|
+
const contentLayoutPath = targetDir
|
|
36
|
+
? path.join(targetDir, pathPrefix ?? "", "app", "(content)", "layout.tsx")
|
|
37
|
+
: null;
|
|
38
|
+
const targetPath = contentLayoutPath && (await fs.pathExists(contentLayoutPath))
|
|
39
|
+
? contentLayoutPath
|
|
40
|
+
: templatePath;
|
|
41
|
+
let content = await fs.readFile(targetPath, "utf-8");
|
|
42
|
+
if (content.includes("KetchConsentScript")) {
|
|
43
|
+
return { skipped: true, reason: "Already has Ketch integration" };
|
|
44
|
+
}
|
|
45
|
+
content = addImport(content);
|
|
46
|
+
const insertedInGuard = insertAfterOpenTag(content, /<SanityStudioGuard>/, KETCH_TAG);
|
|
47
|
+
const insertedInFragment = insertedInGuard ?? insertAfterOpenTag(content, /<>/, KETCH_TAG);
|
|
48
|
+
const inserted = insertedInFragment ?? insertAfterOpenTag(content, /<body[^>]*>/, KETCH_TAG);
|
|
49
|
+
if (!inserted) {
|
|
50
|
+
return { skipped: true, reason: "No <body> or fragment root found" };
|
|
51
|
+
}
|
|
52
|
+
await fs.writeFile(targetPath, inserted);
|
|
53
|
+
return { success: true };
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=layout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../../../../../src/modules/features/consent/ketch/mergers/layout.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,MAAM,YAAY,GAAG,sEAAsE,CAAC;AAC5F,MAAM,SAAS,GAAG,wBAAwB,CAAC;AAa3C,sGAAsG;AACtG,SAAS,kBAAkB,CAC1B,OAAe,EACf,OAAe,EACf,IAAY;IAEZ,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAErD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/C,MAAM,cAAc,GACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAE1D,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,cAAc,GAAG,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC5F,CAAC;AAED,SAAS,SAAS,CAAC,OAAe;IACjC,MAAM,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IAC7E,IAAI,kBAAkB,EAAE,KAAK,KAAK,SAAS;QAC1C,OAAO,GAAG,YAAY,KAAK,OAAO,EAAE,CAAC;IAEtC,MAAM,SAAS,GAAG,kBAAkB,CAAC,KAAK,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1E,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,YAAY,KAAK,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;AACrF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAChC,YAAoB,EACpB,EAAE,SAAS,EAAE,UAAU,EAAE,GAAuB,EAAE;IAElD,MAAM,iBAAiB,GAAG,SAAS;QAClC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC;QAC1E,CAAC,CAAC,IAAI,CAAC;IACR,MAAM,UAAU,GACf,iBAAiB,IAAI,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAC5D,CAAC,CAAC,iBAAiB;QACnB,CAAC,CAAC,YAAY,CAAC;IAEjB,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAErD,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC;IACnE,CAAC;IAED,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAE7B,MAAM,eAAe,GAAG,kBAAkB,CACzC,OAAO,EACP,qBAAqB,EACrB,SAAS,CACT,CAAC;IACF,MAAM,kBAAkB,GACvB,eAAe,IAAI,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IACjE,MAAM,QAAQ,GACb,kBAAkB,IAAI,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;IAE7E,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,kCAAkC,EAAE,CAAC;IACtE,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ashby job-board integration configuration manifest.
|
|
3
|
+
* Single source of truth for dependencies, scripts, paths, and merge rules.
|
|
4
|
+
*
|
|
5
|
+
* The core is dependency-free: it reads Ashby's public job-board API and
|
|
6
|
+
* normalizes the payload into a stable shape with no CMS coupling.
|
|
7
|
+
*/
|
|
8
|
+
import type { ConditionalPath } from "../../forms/hubspot/config.js";
|
|
9
|
+
export interface AshbyIntegrationConfig {
|
|
10
|
+
name: string;
|
|
11
|
+
dependencies: Record<string, string>;
|
|
12
|
+
devDependencies: Record<string, string>;
|
|
13
|
+
scripts: Record<string, string>;
|
|
14
|
+
additivePaths: string[];
|
|
15
|
+
mergeFiles: string[];
|
|
16
|
+
conditionalPaths: ConditionalPath[];
|
|
17
|
+
}
|
|
18
|
+
export declare const ashbyConfig: AshbyIntegrationConfig;
|
|
19
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../../src/modules/features/jobs/ashby/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,MAAM,WAAW,sBAAsB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,EAAE,eAAe,EAAE,CAAC;CACpC;AAED,eAAO,MAAM,WAAW,EAAE,sBAwBzB,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ashby job-board integration configuration manifest.
|
|
3
|
+
* Single source of truth for dependencies, scripts, paths, and merge rules.
|
|
4
|
+
*
|
|
5
|
+
* The core is dependency-free: it reads Ashby's public job-board API and
|
|
6
|
+
* normalizes the payload into a stable shape with no CMS coupling.
|
|
7
|
+
*/
|
|
8
|
+
export const ashbyConfig = {
|
|
9
|
+
name: "ashby",
|
|
10
|
+
// The core hits Ashby's public REST endpoint — no extra packages.
|
|
11
|
+
dependencies: {},
|
|
12
|
+
devDependencies: {},
|
|
13
|
+
scripts: {},
|
|
14
|
+
additivePaths: ["lib/integrations/ashby"],
|
|
15
|
+
mergeFiles: [
|
|
16
|
+
"lib/integrations/check-integration.ts",
|
|
17
|
+
"knip.json",
|
|
18
|
+
".env.example",
|
|
19
|
+
],
|
|
20
|
+
// The Studio block document is only useful with Sanity installed.
|
|
21
|
+
conditionalPaths: [
|
|
22
|
+
{
|
|
23
|
+
src: "_sanity-adapter",
|
|
24
|
+
dest: "lib/integrations/ashby/sanity",
|
|
25
|
+
requires: "sanity",
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../../src/modules/features/jobs/ashby/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAcH,MAAM,CAAC,MAAM,WAAW,GAA2B;IAClD,IAAI,EAAE,OAAO;IAEb,kEAAkE;IAClE,YAAY,EAAE,EAAE;IAChB,eAAe,EAAE,EAAE;IACnB,OAAO,EAAE,EAAE;IAEX,aAAa,EAAE,CAAC,wBAAwB,CAAC;IAEzC,UAAU,EAAE;QACX,uCAAuC;QACvC,WAAW;QACX,cAAc;KACd;IAED,kEAAkE;IAClE,gBAAgB,EAAE;QACjB;YACC,GAAG,EAAE,iBAAiB;YACtB,IAAI,EAAE,+BAA+B;YACrC,QAAQ,EAAE,QAAQ;SAClB;KACD;CACD,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface MergeResult {
|
|
2
|
+
skipped?: boolean;
|
|
3
|
+
reason?: string;
|
|
4
|
+
success?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Merge the Ashby integration into the template's check-integration file.
|
|
8
|
+
* Adds the `isAshbyConfigured` function and, when the file defines them, wires
|
|
9
|
+
* it into the `getConfiguredIntegrations` / `getUnconfiguredIntegrations`
|
|
10
|
+
* helpers — otherwise the new export reads as dead code to knip.
|
|
11
|
+
*/
|
|
12
|
+
export declare function mergeCheckIntegration(templatePath: string): Promise<MergeResult>;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=check-integration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-integration.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/features/jobs/ashby/mergers/check-integration.ts"],"names":[],"mappings":"AAqDA,UAAU,WAAW;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAC1C,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,WAAW,CAAC,CA6CtB"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import fs from "fs-extra";
|
|
2
|
+
/**
|
|
3
|
+
* Ashby configuration check function to add. Inlines env.ts's resolution rather
|
|
4
|
+
* than importing it, because this text is spliced into a file that already exists
|
|
5
|
+
* and injecting an import line is far more fragile. `check-integration.test.ts`
|
|
6
|
+
* asserts the two stay in agreement.
|
|
7
|
+
*/
|
|
8
|
+
const ASHBY_FUNCTION = `
|
|
9
|
+
/**
|
|
10
|
+
* Check if the Ashby job board is configured.
|
|
11
|
+
*
|
|
12
|
+
* Mirrors lib/integrations/ashby/env.ts.
|
|
13
|
+
*/
|
|
14
|
+
export function isAshbyConfigured(): boolean {
|
|
15
|
+
return Boolean((process.env.ASHBY_JOB_BOARD_NAME ?? "").trim())
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
18
|
+
/**
|
|
19
|
+
* Update to getConfiguredIntegrations to include the Ashby board.
|
|
20
|
+
*/
|
|
21
|
+
const ASHBY_CONFIGURED_CHECK = ` if (isAshbyConfigured()) integrations.push("Ashby")`;
|
|
22
|
+
/**
|
|
23
|
+
* Update to getUnconfiguredIntegrations to include the Ashby board.
|
|
24
|
+
*/
|
|
25
|
+
const ASHBY_UNCONFIGURED_CHECK = ` if (!isAshbyConfigured()) integrations.push("Ashby")`;
|
|
26
|
+
/**
|
|
27
|
+
* Splice `check` in just before the `return integrations` of `fnName`. Leaves
|
|
28
|
+
* the content untouched when the helper isn't there — the shipped fallback
|
|
29
|
+
* doesn't define these aggregate helpers at all.
|
|
30
|
+
*/
|
|
31
|
+
function addToIntegrationList(content, fnName, check) {
|
|
32
|
+
const fnMatch = content.match(new RegExp(`export function ${fnName}\\(\\)[\\s\\S]*?return integrations`));
|
|
33
|
+
if (!fnMatch || fnMatch.index === undefined)
|
|
34
|
+
return content;
|
|
35
|
+
const insertPos = content.lastIndexOf("return integrations", fnMatch.index + fnMatch[0].length);
|
|
36
|
+
if (insertPos === -1)
|
|
37
|
+
return content;
|
|
38
|
+
return `${content.slice(0, insertPos)}${check}\n\n ${content.slice(insertPos)}`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Merge the Ashby integration into the template's check-integration file.
|
|
42
|
+
* Adds the `isAshbyConfigured` function and, when the file defines them, wires
|
|
43
|
+
* it into the `getConfiguredIntegrations` / `getUnconfiguredIntegrations`
|
|
44
|
+
* helpers — otherwise the new export reads as dead code to knip.
|
|
45
|
+
*/
|
|
46
|
+
export async function mergeCheckIntegration(templatePath) {
|
|
47
|
+
let content = await fs.readFile(templatePath, "utf-8");
|
|
48
|
+
if (content.includes("isAshbyConfigured")) {
|
|
49
|
+
return { skipped: true, reason: "Already has isAshbyConfigured" };
|
|
50
|
+
}
|
|
51
|
+
const analyticsMatch = content.match(/(export function isAnalyticsConfigured\(\)[^}]+\})/s);
|
|
52
|
+
if (analyticsMatch?.index !== undefined) {
|
|
53
|
+
const insertPos = analyticsMatch.index + analyticsMatch[0].length;
|
|
54
|
+
content =
|
|
55
|
+
content.slice(0, insertPos) +
|
|
56
|
+
"\n" +
|
|
57
|
+
ASHBY_FUNCTION +
|
|
58
|
+
content.slice(insertPos);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const getConfiguredMatch = content.match(/export function getConfiguredIntegrations/);
|
|
62
|
+
if (getConfiguredMatch?.index !== undefined) {
|
|
63
|
+
content =
|
|
64
|
+
content.slice(0, getConfiguredMatch.index) +
|
|
65
|
+
ASHBY_FUNCTION +
|
|
66
|
+
"\n" +
|
|
67
|
+
content.slice(getConfiguredMatch.index);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
content = `${content.trimEnd()}\n${ASHBY_FUNCTION}`;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
content = addToIntegrationList(content, "getConfiguredIntegrations", ASHBY_CONFIGURED_CHECK);
|
|
74
|
+
content = addToIntegrationList(content, "getUnconfiguredIntegrations", ASHBY_UNCONFIGURED_CHECK);
|
|
75
|
+
await fs.writeFile(templatePath, content);
|
|
76
|
+
return { success: true };
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=check-integration.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-integration.js","sourceRoot":"","sources":["../../../../../../src/modules/features/jobs/ashby/mergers/check-integration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B;;;;;GAKG;AACH,MAAM,cAAc,GAAG;;;;;;;;;CAStB,CAAC;AAEF;;GAEG;AACH,MAAM,sBAAsB,GAAG,uDAAuD,CAAC;AAEvF;;GAEG;AACH,MAAM,wBAAwB,GAAG,wDAAwD,CAAC;AAE1F;;;;GAIG;AACH,SAAS,oBAAoB,CAC5B,OAAe,EACf,MAAc,EACd,KAAa;IAEb,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAC5B,IAAI,MAAM,CAAC,mBAAmB,MAAM,qCAAqC,CAAC,CAC1E,CAAC;IACF,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAE5D,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,CACpC,qBAAqB,EACrB,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CACjC,CAAC;IACF,IAAI,SAAS,KAAK,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IAErC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK,SAAS,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;AAClF,CAAC;AAQD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAC1C,YAAoB;IAEpB,IAAI,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAEvD,IAAI,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC3C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC;IACnE,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CACnC,qDAAqD,CACrD,CAAC;IACF,IAAI,cAAc,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAClE,OAAO;YACN,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;gBAC3B,IAAI;gBACJ,cAAc;gBACd,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;SAAM,CAAC;QACP,MAAM,kBAAkB,GAAG,OAAO,CAAC,KAAK,CACvC,2CAA2C,CAC3C,CAAC;QACF,IAAI,kBAAkB,EAAE,KAAK,KAAK,SAAS,EAAE,CAAC;YAC7C,OAAO;gBACN,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,KAAK,CAAC;oBAC1C,cAAc;oBACd,IAAI;oBACJ,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACP,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,cAAc,EAAE,CAAC;QACrD,CAAC;IACF,CAAC;IAED,OAAO,GAAG,oBAAoB,CAC7B,OAAO,EACP,2BAA2B,EAC3B,sBAAsB,CACtB,CAAC;IACF,OAAO,GAAG,oBAAoB,CAC7B,OAAO,EACP,6BAA6B,EAC7B,wBAAwB,CACxB,CAAC;IAEF,MAAM,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface MergeResult {
|
|
2
|
+
skipped?: boolean;
|
|
3
|
+
reason?: string;
|
|
4
|
+
success?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Append the Ashby env var to `.env.example`. It's a plain (public) value,
|
|
8
|
+
* documented the same way as the other optional integrations above.
|
|
9
|
+
*/
|
|
10
|
+
export declare function mergeEnvExample(envExamplePath: string): Promise<MergeResult>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=env-example.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-example.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/features/jobs/ashby/mergers/env-example.ts"],"names":[],"mappings":"AAaA,UAAU,WAAW;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACpC,cAAc,EAAE,MAAM,GACpB,OAAO,CAAC,WAAW,CAAC,CAatB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import fs from "fs-extra";
|
|
2
|
+
const ASHBY_SECTION = `
|
|
3
|
+
# ============================================
|
|
4
|
+
# ASHBY JOB BOARD (Optional)
|
|
5
|
+
# Lists open positions from an Ashby job board
|
|
6
|
+
# Board name: the slug in https://jobs.ashbyhq.com/<board-name>
|
|
7
|
+
# ============================================
|
|
8
|
+
|
|
9
|
+
# Not a secret — the job board endpoint is public. No token needed.
|
|
10
|
+
ASHBY_JOB_BOARD_NAME=""
|
|
11
|
+
`;
|
|
12
|
+
/**
|
|
13
|
+
* Append the Ashby env var to `.env.example`. It's a plain (public) value,
|
|
14
|
+
* documented the same way as the other optional integrations above.
|
|
15
|
+
*/
|
|
16
|
+
export async function mergeEnvExample(envExamplePath) {
|
|
17
|
+
if (!(await fs.pathExists(envExamplePath))) {
|
|
18
|
+
return { skipped: true, reason: "No .env.example to update" };
|
|
19
|
+
}
|
|
20
|
+
const content = await fs.readFile(envExamplePath, "utf-8");
|
|
21
|
+
if (content.includes("ASHBY_JOB_BOARD_NAME")) {
|
|
22
|
+
return { skipped: true, reason: "Already has Ashby vars" };
|
|
23
|
+
}
|
|
24
|
+
await fs.writeFile(envExamplePath, `${content.trimEnd()}\n${ASHBY_SECTION}`);
|
|
25
|
+
return { success: true };
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=env-example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-example.js","sourceRoot":"","sources":["../../../../../../src/modules/features/jobs/ashby/mergers/env-example.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,MAAM,aAAa,GAAG;;;;;;;;;CASrB,CAAC;AAQF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACpC,cAAsB;IAEtB,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;IAC/D,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAE3D,IAAI,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,KAAK,aAAa,EAAE,CAAC,CAAC;IAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface MergeKnipOptions {
|
|
2
|
+
pathPrefix?: string;
|
|
3
|
+
}
|
|
4
|
+
interface MergeResult {
|
|
5
|
+
skipped?: boolean;
|
|
6
|
+
reason?: string;
|
|
7
|
+
success?: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Merge the Ashby knip entry into the project's `knip.json` so its exports
|
|
11
|
+
* aren't flagged as unused once the integration files are in place. Respects
|
|
12
|
+
* `pathPrefix` — on a `src/app` project the files land under
|
|
13
|
+
* `src/lib/integrations/ashby`, so the glob has to match that, or knip treats
|
|
14
|
+
* every export there as dead code.
|
|
15
|
+
*/
|
|
16
|
+
export declare function mergeKnip(knipPath: string, { pathPrefix }?: MergeKnipOptions): Promise<MergeResult>;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=knip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knip.d.ts","sourceRoot":"","sources":["../../../../../../src/modules/features/jobs/ashby/mergers/knip.ts"],"names":[],"mappings":"AAcA,UAAU,gBAAgB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD,UAAU,WAAW;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CAClB;AAUD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC9B,QAAQ,EAAE,MAAM,EAChB,EAAE,UAAU,EAAE,GAAE,gBAAqB,GACnC,OAAO,CAAC,WAAW,CAAC,CAkBtB"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import fs from "fs-extra";
|
|
2
|
+
/**
|
|
3
|
+
* knip config additions for the Ashby surface. Neither path is covered by the
|
|
4
|
+
* default `components/**` entry, and both hold exports meant to be imported
|
|
5
|
+
* from elsewhere in the app rather than flagged as unused:
|
|
6
|
+
* `lib/integrations/ashby/**` (`getCareerJobs`, `normalizeBoard`, `CareerJob`, …)
|
|
7
|
+
* and the `isAshbyConfigured` checker the check-integration merger splices in.
|
|
8
|
+
*/
|
|
9
|
+
const ASHBY_ENTRY_PATHS = [
|
|
10
|
+
"lib/integrations/ashby/**/*.{ts,tsx}",
|
|
11
|
+
"lib/integrations/check-integration.ts",
|
|
12
|
+
];
|
|
13
|
+
function union(existing, additions) {
|
|
14
|
+
const result = [...(existing ?? [])];
|
|
15
|
+
for (const item of additions) {
|
|
16
|
+
if (!result.includes(item))
|
|
17
|
+
result.push(item);
|
|
18
|
+
}
|
|
19
|
+
return result;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Merge the Ashby knip entry into the project's `knip.json` so its exports
|
|
23
|
+
* aren't flagged as unused once the integration files are in place. Respects
|
|
24
|
+
* `pathPrefix` — on a `src/app` project the files land under
|
|
25
|
+
* `src/lib/integrations/ashby`, so the glob has to match that, or knip treats
|
|
26
|
+
* every export there as dead code.
|
|
27
|
+
*/
|
|
28
|
+
export async function mergeKnip(knipPath, { pathPrefix } = {}) {
|
|
29
|
+
if (!(await fs.pathExists(knipPath))) {
|
|
30
|
+
return { skipped: true, reason: "No knip.json to update" };
|
|
31
|
+
}
|
|
32
|
+
const entryGlobs = ASHBY_ENTRY_PATHS.map((entryPath) => `${pathPrefix ?? ""}${entryPath}`);
|
|
33
|
+
const config = (await fs.readJson(knipPath));
|
|
34
|
+
if (entryGlobs.every((glob) => config.entry?.includes(glob))) {
|
|
35
|
+
return { skipped: true, reason: "Already has the Ashby entries" };
|
|
36
|
+
}
|
|
37
|
+
config.entry = union(config.entry, entryGlobs);
|
|
38
|
+
await fs.writeJson(knipPath, config, { spaces: 2 });
|
|
39
|
+
return { success: true };
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=knip.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knip.js","sourceRoot":"","sources":["../../../../../../src/modules/features/jobs/ashby/mergers/knip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B;;;;;;GAMG;AACH,MAAM,iBAAiB,GAAG;IACzB,sCAAsC;IACtC,uCAAuC;CACvC,CAAC;AAiBF,SAAS,KAAK,CAAC,QAA8B,EAAE,SAAmB;IACjE,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC9B,QAAgB,EAChB,EAAE,UAAU,EAAE,GAAqB,EAAE;IAErC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CACvC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,UAAU,IAAI,EAAE,GAAG,SAAS,EAAE,CAChD,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAe,CAAC;IAE3D,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC;IACnE,CAAC;IAED,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAE/C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IACpD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC1B,CAAC"}
|
package/dist/paths.d.ts
CHANGED
|
@@ -31,10 +31,22 @@ export declare const SANITY_PAGEBUILDER_CACHE_FILES_DIR: string;
|
|
|
31
31
|
* project root.
|
|
32
32
|
*/
|
|
33
33
|
export declare const HUBSPOT_FILES_DIR: string;
|
|
34
|
+
/**
|
|
35
|
+
* Directory containing the Ashby job-board integration source files.
|
|
36
|
+
* Always resolves to `src/modules/features/jobs/ashby/files/` relative to the
|
|
37
|
+
* project root.
|
|
38
|
+
*/
|
|
39
|
+
export declare const ASHBY_FILES_DIR: string;
|
|
34
40
|
/**
|
|
35
41
|
* Directory containing the dotenvx integration source files (the CI guard
|
|
36
42
|
* workflow and the 1Password key-restore script). Always resolves to
|
|
37
43
|
* `src/modules/features/env/dotenvx/files/` relative to the project root.
|
|
38
44
|
*/
|
|
39
45
|
export declare const DOTENVX_FILES_DIR: string;
|
|
46
|
+
/**
|
|
47
|
+
* Directory containing the Ketch consent (CMP) integration source files.
|
|
48
|
+
* Always resolves to `src/modules/features/consent/ketch/files/` relative to
|
|
49
|
+
* the project root.
|
|
50
|
+
*/
|
|
51
|
+
export declare const KETCH_FILES_DIR: string;
|
|
40
52
|
//# sourceMappingURL=paths.d.ts.map
|
package/dist/paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAaA,6DAA6D;AAC7D,eAAO,MAAM,aAAa,EAAE,MAI3B,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,EAAE,MAIhC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,EAAE,MAI9B,CAAC;AAEF,mGAAmG;AACnG,eAAO,MAAM,uBAAuB,EAAE,MAKrC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAQ9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,MAQ1C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,EAAE,MAQhD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAQ/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAQ/B,CAAC"}
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAaA,6DAA6D;AAC7D,eAAO,MAAM,aAAa,EAAE,MAI3B,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,kBAAkB,EAAE,MAIhC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,EAAE,MAI9B,CAAC;AAEF,mGAAmG;AACnG,eAAO,MAAM,uBAAuB,EAAE,MAKrC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAQ9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,MAQ1C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,EAAE,MAQhD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAQ/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,MAQ7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAQ/B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,MAQ7B,CAAC"}
|
package/dist/paths.js
CHANGED
|
@@ -41,10 +41,22 @@ export const SANITY_PAGEBUILDER_CACHE_FILES_DIR = path.join(PROJECT_ROOT, "src",
|
|
|
41
41
|
* project root.
|
|
42
42
|
*/
|
|
43
43
|
export const HUBSPOT_FILES_DIR = path.join(PROJECT_ROOT, "src", "modules", "features", "forms", "hubspot", "files");
|
|
44
|
+
/**
|
|
45
|
+
* Directory containing the Ashby job-board integration source files.
|
|
46
|
+
* Always resolves to `src/modules/features/jobs/ashby/files/` relative to the
|
|
47
|
+
* project root.
|
|
48
|
+
*/
|
|
49
|
+
export const ASHBY_FILES_DIR = path.join(PROJECT_ROOT, "src", "modules", "features", "jobs", "ashby", "files");
|
|
44
50
|
/**
|
|
45
51
|
* Directory containing the dotenvx integration source files (the CI guard
|
|
46
52
|
* workflow and the 1Password key-restore script). Always resolves to
|
|
47
53
|
* `src/modules/features/env/dotenvx/files/` relative to the project root.
|
|
48
54
|
*/
|
|
49
55
|
export const DOTENVX_FILES_DIR = path.join(PROJECT_ROOT, "src", "modules", "features", "env", "dotenvx", "files");
|
|
56
|
+
/**
|
|
57
|
+
* Directory containing the Ketch consent (CMP) integration source files.
|
|
58
|
+
* Always resolves to `src/modules/features/consent/ketch/files/` relative to
|
|
59
|
+
* the project root.
|
|
60
|
+
*/
|
|
61
|
+
export const KETCH_FILES_DIR = path.join(PROJECT_ROOT, "src", "modules", "features", "consent", "ketch", "files");
|
|
50
62
|
//# sourceMappingURL=paths.js.map
|
package/dist/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAW,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1D,MAAM,SAAS,GAAW,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAEnD;;;;GAIG;AACH,MAAM,YAAY,GAAW,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAE3D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAW,IAAI,CAAC,IAAI,CAC7C,YAAY,EACZ,KAAK,EACL,WAAW,CACX,CAAC;AAEF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,kBAAkB,GAAW,IAAI,CAAC,IAAI,CAClD,YAAY,EACZ,KAAK,EACL,gBAAgB,CAChB,CAAC;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,gBAAgB,GAAW,IAAI,CAAC,IAAI,CAChD,YAAY,EACZ,KAAK,EACL,cAAc,CACd,CAAC;AAEF,mGAAmG;AACnG,MAAM,CAAC,MAAM,uBAAuB,GAAW,IAAI,CAAC,IAAI,CACvD,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,wBAAwB,CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAW,IAAI,CAAC,IAAI,CAChD,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,KAAK,EACL,QAAQ,EACR,OAAO,CACP,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAW,IAAI,CAAC,IAAI,CAC5D,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,KAAK,EACL,oBAAoB,EACpB,OAAO,CACP,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAW,IAAI,CAAC,IAAI,CAClE,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,KAAK,EACL,0BAA0B,EAC1B,OAAO,CACP,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAW,IAAI,CAAC,IAAI,CACjD,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,OAAO,EACP,SAAS,EACT,OAAO,CACP,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAW,IAAI,CAAC,IAAI,CACjD,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,KAAK,EACL,SAAS,EACT,OAAO,CACP,CAAC"}
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,UAAU,GAAW,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC1D,MAAM,SAAS,GAAW,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAEnD;;;;GAIG;AACH,MAAM,YAAY,GAAW,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAE3D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAW,IAAI,CAAC,IAAI,CAC7C,YAAY,EACZ,KAAK,EACL,WAAW,CACX,CAAC;AAEF,0DAA0D;AAC1D,MAAM,CAAC,MAAM,kBAAkB,GAAW,IAAI,CAAC,IAAI,CAClD,YAAY,EACZ,KAAK,EACL,gBAAgB,CAChB,CAAC;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,gBAAgB,GAAW,IAAI,CAAC,IAAI,CAChD,YAAY,EACZ,KAAK,EACL,cAAc,CACd,CAAC;AAEF,mGAAmG;AACnG,MAAM,CAAC,MAAM,uBAAuB,GAAW,IAAI,CAAC,IAAI,CACvD,YAAY,EACZ,KAAK,EACL,QAAQ,EACR,wBAAwB,CACxB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAW,IAAI,CAAC,IAAI,CAChD,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,KAAK,EACL,QAAQ,EACR,OAAO,CACP,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAW,IAAI,CAAC,IAAI,CAC5D,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,KAAK,EACL,oBAAoB,EACpB,OAAO,CACP,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAW,IAAI,CAAC,IAAI,CAClE,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,KAAK,EACL,0BAA0B,EAC1B,OAAO,CACP,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAW,IAAI,CAAC,IAAI,CACjD,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,OAAO,EACP,SAAS,EACT,OAAO,CACP,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAW,IAAI,CAAC,IAAI,CAC/C,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,MAAM,EACN,OAAO,EACP,OAAO,CACP,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAW,IAAI,CAAC,IAAI,CACjD,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,KAAK,EACL,SAAS,EACT,OAAO,CACP,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAW,IAAI,CAAC,IAAI,CAC/C,YAAY,EACZ,KAAK,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,OAAO,EACP,OAAO,CACP,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bsmnt",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"packageManager": "bun@1.3.14",
|
|
5
5
|
"description": "CLI to scaffold basement projects and add integrations",
|
|
6
6
|
"type": "module",
|
|
@@ -29,6 +29,8 @@
|
|
|
29
29
|
"src/modules/features/cms/sanity-pagebuilder/files",
|
|
30
30
|
"src/modules/features/cms/sanity-pagebuilder-cache/files",
|
|
31
31
|
"src/modules/features/forms/hubspot/files",
|
|
32
|
+
"src/modules/features/jobs/ashby/files",
|
|
33
|
+
"src/modules/features/consent/ketch/files",
|
|
32
34
|
"src/modules/features/env/dotenvx/files",
|
|
33
35
|
"src/assets"
|
|
34
36
|
],
|