@heycatch/sdk 0.7.0-dev.43 → 0.7.0-dev.59

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.
@@ -113,15 +113,38 @@ interface ServerTrackOptions extends TrackOptions {
113
113
  */
114
114
  declare const STAGE: "dev" | "prod";
115
115
  declare const SDK_VERSION: string;
116
+ /** Stamped when the installer could not determine a value. */
117
+ declare const UNKNOWN_INSTALL_VALUE: "unknown";
116
118
  /**
117
- * Frameworks the install guides can detect. Kept as a type alias, not a
118
- * runtime array: `apps/landing-web/tests/agent-install-guides.spec.ts`
119
- * reads this source text and asserts the set matches the guides' tables,
120
- * so docs, types, and reported values cannot drift.
119
+ * Frameworks the install guides can detect. **Written out as a union, not
120
+ * derived from the array below**, because
121
+ * `apps/landing-web/tests/agent-install-guides.spec.ts` matches this
122
+ * declaration as source text to assert the set agrees with the guide's
123
+ * detection table. Collapsing it to `(typeof …)[number]` leaves that guard
124
+ * matching nothing.
125
+ *
126
+ * For the same reason, do not restate the declaration's opening line anywhere
127
+ * above it - including in a comment. The guard takes the FIRST match in the
128
+ * file, so a prose copy of it wins and yields zero ids. (Written here after
129
+ * doing exactly that; the spec's vacuity check is what caught it.)
121
130
  */
122
131
  type KnownFramework = 'nextjs' | 'vite-react' | 'react' | 'vue' | 'svelte' | 'astro' | 'angular' | 'react-native' | 'web';
123
132
  /** Coding agents that run the install. `other` is the catch-all. */
124
133
  type KnownInstallAgent = 'lovable' | 'bolt' | 'v0' | 'replit' | 'cursor' | 'claude-code' | 'codex' | 'windsurf' | 'other';
134
+ /**
135
+ * The same two sets at RUNTIME, for code that has to ask "is this reported
136
+ * value one we recognise?" - a question a type union cannot answer, because
137
+ * `install.framework` is deliberately `KnownFramework | (string & {})` so an
138
+ * unlisted framework still installs cleanly.
139
+ *
140
+ * The consumer is the internal stats page, which flags an unrecognised or
141
+ * missing value rather than silently rendering it as though it were expected.
142
+ *
143
+ * Drift between each array and its union is a **compile error** (see the
144
+ * assertions below), so this is a second spelling, not a second source.
145
+ */
146
+ declare const KNOWN_FRAMEWORKS: readonly ["nextjs", "vite-react", "react", "vue", "svelte", "astro", "angular", "react-native", "web"];
147
+ declare const KNOWN_INSTALL_AGENTS: readonly ["lovable", "bolt", "v0", "replit", "cursor", "claude-code", "codex", "windsurf", "other"];
125
148
  /**
126
149
  * Who installed the SDK and into what. Stamped as super-properties on
127
150
  * every event - the dashboard reads them off the event stream, so there
@@ -154,4 +177,4 @@ interface HeyCatchConfig {
154
177
  tracingHosts?: string[];
155
178
  }
156
179
 
157
- export { type HeyCatchConfig as H, type PersonPropertyUpdate as P, SDK_VERSION as S, type TrackOptions as T, type HeyCatchPersonProperties as a, type HeyCatchProperties as b, STAGE as c, type ServerTrackOptions as d };
180
+ export { type HeyCatchConfig as H, KNOWN_FRAMEWORKS as K, type PersonPropertyUpdate as P, SDK_VERSION as S, type TrackOptions as T, UNKNOWN_INSTALL_VALUE as U, type HeyCatchPersonProperties as a, type HeyCatchProperties as b, KNOWN_INSTALL_AGENTS as c, STAGE as d, type ServerTrackOptions as e };
@@ -113,15 +113,38 @@ interface ServerTrackOptions extends TrackOptions {
113
113
  */
114
114
  declare const STAGE: "dev" | "prod";
115
115
  declare const SDK_VERSION: string;
116
+ /** Stamped when the installer could not determine a value. */
117
+ declare const UNKNOWN_INSTALL_VALUE: "unknown";
116
118
  /**
117
- * Frameworks the install guides can detect. Kept as a type alias, not a
118
- * runtime array: `apps/landing-web/tests/agent-install-guides.spec.ts`
119
- * reads this source text and asserts the set matches the guides' tables,
120
- * so docs, types, and reported values cannot drift.
119
+ * Frameworks the install guides can detect. **Written out as a union, not
120
+ * derived from the array below**, because
121
+ * `apps/landing-web/tests/agent-install-guides.spec.ts` matches this
122
+ * declaration as source text to assert the set agrees with the guide's
123
+ * detection table. Collapsing it to `(typeof …)[number]` leaves that guard
124
+ * matching nothing.
125
+ *
126
+ * For the same reason, do not restate the declaration's opening line anywhere
127
+ * above it - including in a comment. The guard takes the FIRST match in the
128
+ * file, so a prose copy of it wins and yields zero ids. (Written here after
129
+ * doing exactly that; the spec's vacuity check is what caught it.)
121
130
  */
122
131
  type KnownFramework = 'nextjs' | 'vite-react' | 'react' | 'vue' | 'svelte' | 'astro' | 'angular' | 'react-native' | 'web';
123
132
  /** Coding agents that run the install. `other` is the catch-all. */
124
133
  type KnownInstallAgent = 'lovable' | 'bolt' | 'v0' | 'replit' | 'cursor' | 'claude-code' | 'codex' | 'windsurf' | 'other';
134
+ /**
135
+ * The same two sets at RUNTIME, for code that has to ask "is this reported
136
+ * value one we recognise?" - a question a type union cannot answer, because
137
+ * `install.framework` is deliberately `KnownFramework | (string & {})` so an
138
+ * unlisted framework still installs cleanly.
139
+ *
140
+ * The consumer is the internal stats page, which flags an unrecognised or
141
+ * missing value rather than silently rendering it as though it were expected.
142
+ *
143
+ * Drift between each array and its union is a **compile error** (see the
144
+ * assertions below), so this is a second spelling, not a second source.
145
+ */
146
+ declare const KNOWN_FRAMEWORKS: readonly ["nextjs", "vite-react", "react", "vue", "svelte", "astro", "angular", "react-native", "web"];
147
+ declare const KNOWN_INSTALL_AGENTS: readonly ["lovable", "bolt", "v0", "replit", "cursor", "claude-code", "codex", "windsurf", "other"];
125
148
  /**
126
149
  * Who installed the SDK and into what. Stamped as super-properties on
127
150
  * every event - the dashboard reads them off the event stream, so there
@@ -154,4 +177,4 @@ interface HeyCatchConfig {
154
177
  tracingHosts?: string[];
155
178
  }
156
179
 
157
- export { type HeyCatchConfig as H, type PersonPropertyUpdate as P, SDK_VERSION as S, type TrackOptions as T, type HeyCatchPersonProperties as a, type HeyCatchProperties as b, STAGE as c, type ServerTrackOptions as d };
180
+ export { type HeyCatchConfig as H, KNOWN_FRAMEWORKS as K, type PersonPropertyUpdate as P, SDK_VERSION as S, type TrackOptions as T, UNKNOWN_INSTALL_VALUE as U, type HeyCatchPersonProperties as a, type HeyCatchProperties as b, KNOWN_INSTALL_AGENTS as c, STAGE as d, type ServerTrackOptions as e };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heycatch/sdk",
3
- "version": "0.7.0-dev.43",
3
+ "version": "0.7.0-dev.59",
4
4
  "description": "HeyCatch SDK",
5
5
  "keywords": [
6
6
  "analytics",