@n8n/composables 1.35.3 → 2.0.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.
@@ -1 +1 @@
1
- {"version":3,"file":"telemetryRegistry.cjs","names":["TelemetryKey: InjectionKey<Telemetry>","registeredTelemetry: Telemetry | undefined"],"sources":["../src/registries/telemetryRegistry.ts"],"sourcesContent":["import type { ITelemetrySettings } from '@n8n/api-types';\nimport type { InferTelemetryProps, TelemetryEventDef } from '@n8n/telemetry';\nimport type { IDataObject, ITelemetryTrackProperties, NodeParameterValueType } from 'n8n-workflow';\nimport type { InjectionKey } from 'vue';\nimport type { RouteLocation } from 'vue-router';\n\nexport type TelemetryIdentifyOptions = {\n\tinstanceId: string;\n\tuserId?: string;\n\tprojectId?: string;\n\tversionCli?: string;\n\tuserRole?: string;\n};\n\n/**\n * Shape of a node-parameter change tracked by telemetry. Structurally mirrors\n * editor-ui's `IUpdateInformation`; declared here so the telemetry contract\n * carries no dependency back into the application package.\n */\nexport interface TelemetryNodeParameterChange {\n\tname: string;\n\tkey?: string;\n\tvalue: NodeParameterValueType;\n\tnode?: string;\n\toldValue?: string | number;\n\ttype?: 'optionsOrderChanged';\n}\n\n/**\n * The telemetry contract consumed across the frontend.\n *\n * This package owns the *type* only; the concrete implementation lives in the\n * application (`editor-ui`'s telemetry plugin) and is registered at bootstrap\n * via {@link setTelemetry} / provided through {@link TelemetryKey}. Keeping the\n * contract here lets `useTelemetry` return a fully-typed instance without the\n * package importing application code.\n */\nexport interface Telemetry {\n\tinit(\n\t\ttelemetrySettings: ITelemetrySettings,\n\t\toptions: TelemetryIdentifyOptions & { versionCli: string },\n\t): void;\n\tidentify(options: TelemetryIdentifyOptions): void;\n\ttrack<T extends TelemetryEventDef>(event: T, properties: InferTelemetryProps<T>): void;\n\ttrack(event: string, properties?: ITelemetryTrackProperties): void;\n\tpage(route: RouteLocation): void;\n\treset(): void;\n\tflushPageEvents(): void;\n\ttrackAskAI(event: string, ndvPushRef: string, properties?: IDataObject): void;\n\ttrackAiTransform(event: string, ndvPushRef: string, properties?: IDataObject): void;\n\ttrackNodeParametersValuesChange(nodeType: string, change: TelemetryNodeParameterChange): void;\n}\n\n/**\n * Injection key for the telemetry instance. The application provides it at\n * bootstrap; components may override it (e.g. a pop-out window with its own\n * instance). `useTelemetry` reads it when called inside an injection context.\n */\nexport const TelemetryKey: InjectionKey<Telemetry> = Symbol('Telemetry');\n\nlet registeredTelemetry: Telemetry | undefined;\n\n/**\n * Register the application's telemetry instance. Called once at bootstrap by\n * the editor-ui telemetry plugin so package-side `useTelemetry` can return it\n * from any context, including outside of component setup.\n */\nexport function setTelemetry(instance: Telemetry | undefined): void {\n\tregisteredTelemetry = instance;\n}\n\n/** The instance registered via {@link setTelemetry}, if bootstrap has run. */\nexport function getRegisteredTelemetry(): Telemetry | undefined {\n\treturn registeredTelemetry;\n}\n"],"mappings":";;;;;;;AA0DA,MAAaA,eAAwC,OAAO,YAAY;AAExE,IAAIC;;;;;;AAOJ,SAAgB,aAAa,UAAuC;AACnE,uBAAsB;;;AAIvB,SAAgB,yBAAgD;AAC/D,QAAO"}
1
+ {"version":3,"file":"telemetryRegistry.cjs","names":["TelemetryKey: InjectionKey<Telemetry>","registeredTelemetry: Telemetry | undefined"],"sources":["../src/registries/telemetryRegistry.ts"],"sourcesContent":["import type { ITelemetrySettings } from '@n8n/api-types';\nimport type { InferTelemetryProps, TelemetryEventDef } from '@n8n/telemetry';\nimport type { ITelemetryTrackProperties, NodeParameterValueType } from 'n8n-workflow';\nimport type { InjectionKey } from 'vue';\nimport type { RouteLocation } from 'vue-router';\n\nexport type TelemetryIdentifyOptions = {\n\tinstanceId: string;\n\tuserId?: string;\n\tprojectId?: string;\n\tversionCli?: string;\n\tuserRole?: string;\n};\n\n/**\n * Shape of a node-parameter change tracked by telemetry. Structurally mirrors\n * editor-ui's `IUpdateInformation`; declared here so the telemetry contract\n * carries no dependency back into the application package.\n */\nexport interface TelemetryNodeParameterChange {\n\tname: string;\n\tkey?: string;\n\tvalue: NodeParameterValueType;\n\tnode?: string;\n\toldValue?: string | number;\n\ttype?: 'optionsOrderChanged';\n}\n\n/**\n * The telemetry contract consumed across the frontend.\n *\n * This package owns the *type* only; the concrete implementation lives in the\n * application (`editor-ui`'s telemetry plugin) and is registered at bootstrap\n * via {@link setTelemetry} / provided through {@link TelemetryKey}. Keeping the\n * contract here lets `useTelemetry` return a fully-typed instance without the\n * package importing application code.\n */\nexport interface Telemetry {\n\tinit(\n\t\ttelemetrySettings: ITelemetrySettings,\n\t\toptions: TelemetryIdentifyOptions & { versionCli: string },\n\t): void;\n\tidentify(options: TelemetryIdentifyOptions): void;\n\ttrack<T extends TelemetryEventDef>(event: T, properties: InferTelemetryProps<T>): void;\n\ttrack(event: string, properties?: ITelemetryTrackProperties): void;\n\tpage(route: RouteLocation): void;\n\treset(): void;\n\tflushPageEvents(): void;\n\ttrackNodeParametersValuesChange(nodeType: string, change: TelemetryNodeParameterChange): void;\n}\n\n/**\n * Injection key for the telemetry instance. The application provides it at\n * bootstrap; components may override it (e.g. a pop-out window with its own\n * instance). `useTelemetry` reads it when called inside an injection context.\n */\nexport const TelemetryKey: InjectionKey<Telemetry> = Symbol('Telemetry');\n\nlet registeredTelemetry: Telemetry | undefined;\n\n/**\n * Register the application's telemetry instance. Called once at bootstrap by\n * the editor-ui telemetry plugin so package-side `useTelemetry` can return it\n * from any context, including outside of component setup.\n */\nexport function setTelemetry(instance: Telemetry | undefined): void {\n\tregisteredTelemetry = instance;\n}\n\n/** The instance registered via {@link setTelemetry}, if bootstrap has run. */\nexport function getRegisteredTelemetry(): Telemetry | undefined {\n\treturn registeredTelemetry;\n}\n"],"mappings":";;;;;;;AAwDA,MAAaA,eAAwC,OAAO,YAAY;AAExE,IAAIC;;;;;;AAOJ,SAAgB,aAAa,UAAuC;AACnE,uBAAsB;;;AAIvB,SAAgB,yBAAgD;AAC/D,QAAO"}
@@ -1,7 +1,7 @@
1
1
  import { InjectionKey } from "vue";
2
2
  import { ITelemetrySettings } from "@n8n/api-types";
3
3
  import { InferTelemetryProps, TelemetryEventDef } from "@n8n/telemetry";
4
- import { IDataObject, ITelemetryTrackProperties, NodeParameterValueType } from "n8n-workflow";
4
+ import { ITelemetryTrackProperties, NodeParameterValueType } from "n8n-workflow";
5
5
  import { RouteLocation } from "vue-router";
6
6
 
7
7
  //#region src/registries/telemetryRegistry.d.ts
@@ -30,8 +30,6 @@ interface Telemetry {
30
30
  page(route: RouteLocation): void;
31
31
  reset(): void;
32
32
  flushPageEvents(): void;
33
- trackAskAI(event: string, ndvPushRef: string, properties?: IDataObject): void;
34
- trackAiTransform(event: string, ndvPushRef: string, properties?: IDataObject): void;
35
33
  trackNodeParametersValuesChange(nodeType: string, change: TelemetryNodeParameterChange): void;
36
34
  }
37
35
  declare const TelemetryKey: InjectionKey<Telemetry>;
@@ -2,7 +2,7 @@ import { InjectionKey } from "vue";
2
2
  import { RouteLocation } from "vue-router";
3
3
  import { ITelemetrySettings } from "@n8n/api-types";
4
4
  import { InferTelemetryProps, TelemetryEventDef } from "@n8n/telemetry";
5
- import { IDataObject, ITelemetryTrackProperties, NodeParameterValueType } from "n8n-workflow";
5
+ import { ITelemetryTrackProperties, NodeParameterValueType } from "n8n-workflow";
6
6
 
7
7
  //#region src/registries/telemetryRegistry.d.ts
8
8
  type TelemetryIdentifyOptions = {
@@ -30,8 +30,6 @@ interface Telemetry {
30
30
  page(route: RouteLocation): void;
31
31
  reset(): void;
32
32
  flushPageEvents(): void;
33
- trackAskAI(event: string, ndvPushRef: string, properties?: IDataObject): void;
34
- trackAiTransform(event: string, ndvPushRef: string, properties?: IDataObject): void;
35
33
  trackNodeParametersValuesChange(nodeType: string, change: TelemetryNodeParameterChange): void;
36
34
  }
37
35
  declare const TelemetryKey: InjectionKey<Telemetry>;
@@ -1 +1 @@
1
- {"version":3,"file":"telemetryRegistry.mjs","names":["TelemetryKey: InjectionKey<Telemetry>","registeredTelemetry: Telemetry | undefined"],"sources":["../src/registries/telemetryRegistry.ts"],"sourcesContent":["import type { ITelemetrySettings } from '@n8n/api-types';\nimport type { InferTelemetryProps, TelemetryEventDef } from '@n8n/telemetry';\nimport type { IDataObject, ITelemetryTrackProperties, NodeParameterValueType } from 'n8n-workflow';\nimport type { InjectionKey } from 'vue';\nimport type { RouteLocation } from 'vue-router';\n\nexport type TelemetryIdentifyOptions = {\n\tinstanceId: string;\n\tuserId?: string;\n\tprojectId?: string;\n\tversionCli?: string;\n\tuserRole?: string;\n};\n\n/**\n * Shape of a node-parameter change tracked by telemetry. Structurally mirrors\n * editor-ui's `IUpdateInformation`; declared here so the telemetry contract\n * carries no dependency back into the application package.\n */\nexport interface TelemetryNodeParameterChange {\n\tname: string;\n\tkey?: string;\n\tvalue: NodeParameterValueType;\n\tnode?: string;\n\toldValue?: string | number;\n\ttype?: 'optionsOrderChanged';\n}\n\n/**\n * The telemetry contract consumed across the frontend.\n *\n * This package owns the *type* only; the concrete implementation lives in the\n * application (`editor-ui`'s telemetry plugin) and is registered at bootstrap\n * via {@link setTelemetry} / provided through {@link TelemetryKey}. Keeping the\n * contract here lets `useTelemetry` return a fully-typed instance without the\n * package importing application code.\n */\nexport interface Telemetry {\n\tinit(\n\t\ttelemetrySettings: ITelemetrySettings,\n\t\toptions: TelemetryIdentifyOptions & { versionCli: string },\n\t): void;\n\tidentify(options: TelemetryIdentifyOptions): void;\n\ttrack<T extends TelemetryEventDef>(event: T, properties: InferTelemetryProps<T>): void;\n\ttrack(event: string, properties?: ITelemetryTrackProperties): void;\n\tpage(route: RouteLocation): void;\n\treset(): void;\n\tflushPageEvents(): void;\n\ttrackAskAI(event: string, ndvPushRef: string, properties?: IDataObject): void;\n\ttrackAiTransform(event: string, ndvPushRef: string, properties?: IDataObject): void;\n\ttrackNodeParametersValuesChange(nodeType: string, change: TelemetryNodeParameterChange): void;\n}\n\n/**\n * Injection key for the telemetry instance. The application provides it at\n * bootstrap; components may override it (e.g. a pop-out window with its own\n * instance). `useTelemetry` reads it when called inside an injection context.\n */\nexport const TelemetryKey: InjectionKey<Telemetry> = Symbol('Telemetry');\n\nlet registeredTelemetry: Telemetry | undefined;\n\n/**\n * Register the application's telemetry instance. Called once at bootstrap by\n * the editor-ui telemetry plugin so package-side `useTelemetry` can return it\n * from any context, including outside of component setup.\n */\nexport function setTelemetry(instance: Telemetry | undefined): void {\n\tregisteredTelemetry = instance;\n}\n\n/** The instance registered via {@link setTelemetry}, if bootstrap has run. */\nexport function getRegisteredTelemetry(): Telemetry | undefined {\n\treturn registeredTelemetry;\n}\n"],"mappings":";;;;;;AA0DA,MAAaA,eAAwC,OAAO,YAAY;AAExE,IAAIC;;;;;;AAOJ,SAAgB,aAAa,UAAuC;AACnE,uBAAsB;;;AAIvB,SAAgB,yBAAgD;AAC/D,QAAO"}
1
+ {"version":3,"file":"telemetryRegistry.mjs","names":["TelemetryKey: InjectionKey<Telemetry>","registeredTelemetry: Telemetry | undefined"],"sources":["../src/registries/telemetryRegistry.ts"],"sourcesContent":["import type { ITelemetrySettings } from '@n8n/api-types';\nimport type { InferTelemetryProps, TelemetryEventDef } from '@n8n/telemetry';\nimport type { ITelemetryTrackProperties, NodeParameterValueType } from 'n8n-workflow';\nimport type { InjectionKey } from 'vue';\nimport type { RouteLocation } from 'vue-router';\n\nexport type TelemetryIdentifyOptions = {\n\tinstanceId: string;\n\tuserId?: string;\n\tprojectId?: string;\n\tversionCli?: string;\n\tuserRole?: string;\n};\n\n/**\n * Shape of a node-parameter change tracked by telemetry. Structurally mirrors\n * editor-ui's `IUpdateInformation`; declared here so the telemetry contract\n * carries no dependency back into the application package.\n */\nexport interface TelemetryNodeParameterChange {\n\tname: string;\n\tkey?: string;\n\tvalue: NodeParameterValueType;\n\tnode?: string;\n\toldValue?: string | number;\n\ttype?: 'optionsOrderChanged';\n}\n\n/**\n * The telemetry contract consumed across the frontend.\n *\n * This package owns the *type* only; the concrete implementation lives in the\n * application (`editor-ui`'s telemetry plugin) and is registered at bootstrap\n * via {@link setTelemetry} / provided through {@link TelemetryKey}. Keeping the\n * contract here lets `useTelemetry` return a fully-typed instance without the\n * package importing application code.\n */\nexport interface Telemetry {\n\tinit(\n\t\ttelemetrySettings: ITelemetrySettings,\n\t\toptions: TelemetryIdentifyOptions & { versionCli: string },\n\t): void;\n\tidentify(options: TelemetryIdentifyOptions): void;\n\ttrack<T extends TelemetryEventDef>(event: T, properties: InferTelemetryProps<T>): void;\n\ttrack(event: string, properties?: ITelemetryTrackProperties): void;\n\tpage(route: RouteLocation): void;\n\treset(): void;\n\tflushPageEvents(): void;\n\ttrackNodeParametersValuesChange(nodeType: string, change: TelemetryNodeParameterChange): void;\n}\n\n/**\n * Injection key for the telemetry instance. The application provides it at\n * bootstrap; components may override it (e.g. a pop-out window with its own\n * instance). `useTelemetry` reads it when called inside an injection context.\n */\nexport const TelemetryKey: InjectionKey<Telemetry> = Symbol('Telemetry');\n\nlet registeredTelemetry: Telemetry | undefined;\n\n/**\n * Register the application's telemetry instance. Called once at bootstrap by\n * the editor-ui telemetry plugin so package-side `useTelemetry` can return it\n * from any context, including outside of component setup.\n */\nexport function setTelemetry(instance: Telemetry | undefined): void {\n\tregisteredTelemetry = instance;\n}\n\n/** The instance registered via {@link setTelemetry}, if bootstrap has run. */\nexport function getRegisteredTelemetry(): Telemetry | undefined {\n\treturn registeredTelemetry;\n}\n"],"mappings":";;;;;;AAwDA,MAAaA,eAAwC,OAAO,YAAY;AAExE,IAAIC;;;;;;AAOJ,SAAgB,aAAa,UAAuC;AACnE,uBAAsB;;;AAIvB,SAAgB,yBAAgD;AAC/D,QAAO"}
@@ -1,4 +1,4 @@
1
- import * as vue3 from "vue";
1
+ import * as vue0 from "vue";
2
2
 
3
3
  //#region src/useDeviceSupport.d.ts
4
4
  declare function useDeviceSupport(): {
@@ -9,7 +9,7 @@ declare function useDeviceSupport(): {
9
9
  isMacOs: boolean;
10
10
  isMobileDevice: boolean;
11
11
  controlKeyCode: string;
12
- controlKeyText: vue3.ComputedRef<"⌘" | "Ctrl">;
12
+ controlKeyText: vue0.ComputedRef<"⌘" | "Ctrl">;
13
13
  isCtrlKeyPressed: (e: MouseEvent | KeyboardEvent) => boolean;
14
14
  };
15
15
  //#endregion
@@ -20,8 +20,6 @@ const noopTelemetry = {
20
20
  page() {},
21
21
  reset() {},
22
22
  flushPageEvents() {},
23
- trackAskAI() {},
24
- trackAiTransform() {},
25
23
  trackNodeParametersValuesChange() {}
26
24
  };
27
25
  let warnedAboutMissingTelemetry = false;
@@ -1 +1 @@
1
- {"version":3,"file":"useTelemetry2.cjs","names":["noopTelemetry: Telemetry","TelemetryKey","getRegisteredTelemetry"],"sources":["../src/useTelemetry.ts"],"sourcesContent":["import { hasInjectionContext, inject } from 'vue';\n\nimport {\n\tgetRegisteredTelemetry,\n\tTelemetryKey,\n\ttype Telemetry,\n} from './registries/telemetryRegistry';\n\n// The telemetry *contract* and the *registration* surface deliberately live in\n// `./registries/telemetryRegistry`: this module is `vi.mock`ed in ~100 test\n// files, and a mock factory replaces the whole module. While `setTelemetry`\n// lived here, any partial factory (the common `{ useTelemetry: () => ... }`\n// shape) also starved the telemetry plugin's own bootstrap import of it.\n// Separate modules make that unreachable — the plugin never imports this one.\nexport type {\n\tTelemetry,\n\tTelemetryIdentifyOptions,\n\tTelemetryNodeParameterChange,\n} from './registries/telemetryRegistry';\n\n/**\n * Null-object telemetry used when no instance has been registered (e.g. in\n * tests that never install the plugin). Telemetry is best-effort and must never\n * throw or break the UI, so every method is a no-op. Any registered instance\n * (via `setTelemetry` or `TelemetryKey`) takes precedence.\n *\n * A plain object literal (not a `Proxy`) so method identity is stable, spies\n * attach, `'track' in noopTelemetry` holds, and there is no accidental `then`\n * that would make `await useTelemetry()` hang.\n */\nconst noopTelemetry: Telemetry = {\n\tinit() {},\n\tidentify() {},\n\ttrack() {},\n\tpage() {},\n\treset() {},\n\tflushPageEvents() {},\n\ttrackAskAI() {},\n\ttrackAiTransform() {},\n\ttrackNodeParametersValuesChange() {},\n};\n\nlet warnedAboutMissingTelemetry = false;\n\n/**\n * Returns the active telemetry instance. Resolution order: a component-provided\n * instance (via `TelemetryKey`), then the app-registered singleton (via\n * `setTelemetry`), then a no-op fallback.\n */\nexport function useTelemetry(): Telemetry {\n\tconst injected = hasInjectionContext() ? inject(TelemetryKey, null) : null;\n\tconst instance = injected ?? getRegisteredTelemetry();\n\tif (instance) return instance;\n\n\t// Falling back to the no-op means the plugin has not registered an instance\n\t// yet. That should never happen in the app (bootstrap registers before any\n\t// consumer runs); warn once in dev so an ordering regression stays visible.\n\tif (import.meta.env.DEV && !warnedAboutMissingTelemetry) {\n\t\twarnedAboutMissingTelemetry = true;\n\t\tconsole.warn(\n\t\t\t'[useTelemetry] No telemetry instance registered; using a no-op. Ensure the telemetry plugin is installed at bootstrap.',\n\t\t);\n\t}\n\treturn noopTelemetry;\n}\n"],"mappings":";;;;;;;;;;;;;;;AA8BA,MAAMA,gBAA2B;CAChC,OAAO;CACP,WAAW;CACX,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,kBAAkB;CAClB,aAAa;CACb,mBAAmB;CACnB,kCAAkC;CAClC;AAED,IAAI,8BAA8B;;;;;;AAOlC,SAAgB,eAA0B;CAEzC,MAAM,0CADgC,mBAAUC,wCAAc,KAAK,GAAG,SACzCC,kDAAwB;AACrD,KAAI,SAAU,QAAO;AAKrB,QAAgB,IAAI,OAAO,CAAC,6BAA6B;AACxD,gCAA8B;AAC9B,UAAQ,KACP,yHACA;;AAEF,QAAO"}
1
+ {"version":3,"file":"useTelemetry2.cjs","names":["noopTelemetry: Telemetry","TelemetryKey","getRegisteredTelemetry"],"sources":["../src/useTelemetry.ts"],"sourcesContent":["import { hasInjectionContext, inject } from 'vue';\n\nimport {\n\tgetRegisteredTelemetry,\n\tTelemetryKey,\n\ttype Telemetry,\n} from './registries/telemetryRegistry';\n\n// The telemetry *contract* and the *registration* surface deliberately live in\n// `./registries/telemetryRegistry`: this module is `vi.mock`ed in ~100 test\n// files, and a mock factory replaces the whole module. While `setTelemetry`\n// lived here, any partial factory (the common `{ useTelemetry: () => ... }`\n// shape) also starved the telemetry plugin's own bootstrap import of it.\n// Separate modules make that unreachable — the plugin never imports this one.\nexport type {\n\tTelemetry,\n\tTelemetryIdentifyOptions,\n\tTelemetryNodeParameterChange,\n} from './registries/telemetryRegistry';\n\n/**\n * Null-object telemetry used when no instance has been registered (e.g. in\n * tests that never install the plugin). Telemetry is best-effort and must never\n * throw or break the UI, so every method is a no-op. Any registered instance\n * (via `setTelemetry` or `TelemetryKey`) takes precedence.\n *\n * A plain object literal (not a `Proxy`) so method identity is stable, spies\n * attach, `'track' in noopTelemetry` holds, and there is no accidental `then`\n * that would make `await useTelemetry()` hang.\n */\nconst noopTelemetry: Telemetry = {\n\tinit() {},\n\tidentify() {},\n\ttrack() {},\n\tpage() {},\n\treset() {},\n\tflushPageEvents() {},\n\ttrackNodeParametersValuesChange() {},\n};\n\nlet warnedAboutMissingTelemetry = false;\n\n/**\n * Returns the active telemetry instance. Resolution order: a component-provided\n * instance (via `TelemetryKey`), then the app-registered singleton (via\n * `setTelemetry`), then a no-op fallback.\n */\nexport function useTelemetry(): Telemetry {\n\tconst injected = hasInjectionContext() ? inject(TelemetryKey, null) : null;\n\tconst instance = injected ?? getRegisteredTelemetry();\n\tif (instance) return instance;\n\n\t// Falling back to the no-op means the plugin has not registered an instance\n\t// yet. That should never happen in the app (bootstrap registers before any\n\t// consumer runs); warn once in dev so an ordering regression stays visible.\n\tif (import.meta.env.DEV && !warnedAboutMissingTelemetry) {\n\t\twarnedAboutMissingTelemetry = true;\n\t\tconsole.warn(\n\t\t\t'[useTelemetry] No telemetry instance registered; using a no-op. Ensure the telemetry plugin is installed at bootstrap.',\n\t\t);\n\t}\n\treturn noopTelemetry;\n}\n"],"mappings":";;;;;;;;;;;;;;;AA8BA,MAAMA,gBAA2B;CAChC,OAAO;CACP,WAAW;CACX,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,kBAAkB;CAClB,kCAAkC;CAClC;AAED,IAAI,8BAA8B;;;;;;AAOlC,SAAgB,eAA0B;CAEzC,MAAM,0CADgC,mBAAUC,wCAAc,KAAK,GAAG,SACzCC,kDAAwB;AACrD,KAAI,SAAU,QAAO;AAKrB,QAAgB,IAAI,OAAO,CAAC,6BAA6B;AACxD,gCAA8B;AAC9B,UAAQ,KACP,yHACA;;AAEF,QAAO"}
@@ -19,8 +19,6 @@ const noopTelemetry = {
19
19
  page() {},
20
20
  reset() {},
21
21
  flushPageEvents() {},
22
- trackAskAI() {},
23
- trackAiTransform() {},
24
22
  trackNodeParametersValuesChange() {}
25
23
  };
26
24
  let warnedAboutMissingTelemetry = false;
@@ -1 +1 @@
1
- {"version":3,"file":"useTelemetry2.mjs","names":["noopTelemetry: Telemetry"],"sources":["../src/useTelemetry.ts"],"sourcesContent":["import { hasInjectionContext, inject } from 'vue';\n\nimport {\n\tgetRegisteredTelemetry,\n\tTelemetryKey,\n\ttype Telemetry,\n} from './registries/telemetryRegistry';\n\n// The telemetry *contract* and the *registration* surface deliberately live in\n// `./registries/telemetryRegistry`: this module is `vi.mock`ed in ~100 test\n// files, and a mock factory replaces the whole module. While `setTelemetry`\n// lived here, any partial factory (the common `{ useTelemetry: () => ... }`\n// shape) also starved the telemetry plugin's own bootstrap import of it.\n// Separate modules make that unreachable — the plugin never imports this one.\nexport type {\n\tTelemetry,\n\tTelemetryIdentifyOptions,\n\tTelemetryNodeParameterChange,\n} from './registries/telemetryRegistry';\n\n/**\n * Null-object telemetry used when no instance has been registered (e.g. in\n * tests that never install the plugin). Telemetry is best-effort and must never\n * throw or break the UI, so every method is a no-op. Any registered instance\n * (via `setTelemetry` or `TelemetryKey`) takes precedence.\n *\n * A plain object literal (not a `Proxy`) so method identity is stable, spies\n * attach, `'track' in noopTelemetry` holds, and there is no accidental `then`\n * that would make `await useTelemetry()` hang.\n */\nconst noopTelemetry: Telemetry = {\n\tinit() {},\n\tidentify() {},\n\ttrack() {},\n\tpage() {},\n\treset() {},\n\tflushPageEvents() {},\n\ttrackAskAI() {},\n\ttrackAiTransform() {},\n\ttrackNodeParametersValuesChange() {},\n};\n\nlet warnedAboutMissingTelemetry = false;\n\n/**\n * Returns the active telemetry instance. Resolution order: a component-provided\n * instance (via `TelemetryKey`), then the app-registered singleton (via\n * `setTelemetry`), then a no-op fallback.\n */\nexport function useTelemetry(): Telemetry {\n\tconst injected = hasInjectionContext() ? inject(TelemetryKey, null) : null;\n\tconst instance = injected ?? getRegisteredTelemetry();\n\tif (instance) return instance;\n\n\t// Falling back to the no-op means the plugin has not registered an instance\n\t// yet. That should never happen in the app (bootstrap registers before any\n\t// consumer runs); warn once in dev so an ordering regression stays visible.\n\tif (import.meta.env.DEV && !warnedAboutMissingTelemetry) {\n\t\twarnedAboutMissingTelemetry = true;\n\t\tconsole.warn(\n\t\t\t'[useTelemetry] No telemetry instance registered; using a no-op. Ensure the telemetry plugin is installed at bootstrap.',\n\t\t);\n\t}\n\treturn noopTelemetry;\n}\n"],"mappings":";;;;;;;;;;;;;;AA8BA,MAAMA,gBAA2B;CAChC,OAAO;CACP,WAAW;CACX,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,kBAAkB;CAClB,aAAa;CACb,mBAAmB;CACnB,kCAAkC;CAClC;AAED,IAAI,8BAA8B;;;;;;AAOlC,SAAgB,eAA0B;CAEzC,MAAM,YADW,qBAAqB,GAAG,OAAO,cAAc,KAAK,GAAG,SACzC,wBAAwB;AACrD,KAAI,SAAU,QAAO;AAKrB,KAAI,OAAO,KAAK,IAAI,OAAO,CAAC,6BAA6B;AACxD,gCAA8B;AAC9B,UAAQ,KACP,yHACA;;AAEF,QAAO"}
1
+ {"version":3,"file":"useTelemetry2.mjs","names":["noopTelemetry: Telemetry"],"sources":["../src/useTelemetry.ts"],"sourcesContent":["import { hasInjectionContext, inject } from 'vue';\n\nimport {\n\tgetRegisteredTelemetry,\n\tTelemetryKey,\n\ttype Telemetry,\n} from './registries/telemetryRegistry';\n\n// The telemetry *contract* and the *registration* surface deliberately live in\n// `./registries/telemetryRegistry`: this module is `vi.mock`ed in ~100 test\n// files, and a mock factory replaces the whole module. While `setTelemetry`\n// lived here, any partial factory (the common `{ useTelemetry: () => ... }`\n// shape) also starved the telemetry plugin's own bootstrap import of it.\n// Separate modules make that unreachable — the plugin never imports this one.\nexport type {\n\tTelemetry,\n\tTelemetryIdentifyOptions,\n\tTelemetryNodeParameterChange,\n} from './registries/telemetryRegistry';\n\n/**\n * Null-object telemetry used when no instance has been registered (e.g. in\n * tests that never install the plugin). Telemetry is best-effort and must never\n * throw or break the UI, so every method is a no-op. Any registered instance\n * (via `setTelemetry` or `TelemetryKey`) takes precedence.\n *\n * A plain object literal (not a `Proxy`) so method identity is stable, spies\n * attach, `'track' in noopTelemetry` holds, and there is no accidental `then`\n * that would make `await useTelemetry()` hang.\n */\nconst noopTelemetry: Telemetry = {\n\tinit() {},\n\tidentify() {},\n\ttrack() {},\n\tpage() {},\n\treset() {},\n\tflushPageEvents() {},\n\ttrackNodeParametersValuesChange() {},\n};\n\nlet warnedAboutMissingTelemetry = false;\n\n/**\n * Returns the active telemetry instance. Resolution order: a component-provided\n * instance (via `TelemetryKey`), then the app-registered singleton (via\n * `setTelemetry`), then a no-op fallback.\n */\nexport function useTelemetry(): Telemetry {\n\tconst injected = hasInjectionContext() ? inject(TelemetryKey, null) : null;\n\tconst instance = injected ?? getRegisteredTelemetry();\n\tif (instance) return instance;\n\n\t// Falling back to the no-op means the plugin has not registered an instance\n\t// yet. That should never happen in the app (bootstrap registers before any\n\t// consumer runs); warn once in dev so an ordering regression stays visible.\n\tif (import.meta.env.DEV && !warnedAboutMissingTelemetry) {\n\t\twarnedAboutMissingTelemetry = true;\n\t\tconsole.warn(\n\t\t\t'[useTelemetry] No telemetry instance registered; using a no-op. Ensure the telemetry plugin is installed at bootstrap.',\n\t\t);\n\t}\n\treturn noopTelemetry;\n}\n"],"mappings":";;;;;;;;;;;;;;AA8BA,MAAMA,gBAA2B;CAChC,OAAO;CACP,WAAW;CACX,QAAQ;CACR,OAAO;CACP,QAAQ;CACR,kBAAkB;CAClB,kCAAkC;CAClC;AAED,IAAI,8BAA8B;;;;;;AAOlC,SAAgB,eAA0B;CAEzC,MAAM,YADW,qBAAqB,GAAG,OAAO,cAAc,KAAK,GAAG,SACzC,wBAAwB;AACrD,KAAI,SAAU,QAAO;AAKrB,KAAI,OAAO,KAAK,IAAI,OAAO,CAAC,6BAA6B;AACxD,gCAA8B;AAC9B,UAAQ,KACP,yHACA;;AAEF,QAAO"}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@n8n/composables",
3
3
  "type": "module",
4
- "version": "1.35.3",
4
+ "version": "2.0.0",
5
5
  "files": [
6
6
  "dist",
7
- "LICENSE.md",
8
- "LICENSE_EE.md"
7
+ "LICENSE_EE.md",
8
+ "LICENSE.md"
9
9
  ],
10
10
  "exports": {
11
11
  "./*": {
@@ -15,22 +15,22 @@
15
15
  }
16
16
  },
17
17
  "dependencies": {
18
- "@n8n/api-types": "1.45.3",
19
- "@n8n/frontend-constants": "0.11.0",
20
- "@n8n/frontend-utils": "0.4.0",
21
- "@n8n/i18n": "2.45.3",
18
+ "@n8n/api-types": "2.0.0",
19
+ "@n8n/frontend-constants": "1.0.0",
20
+ "@n8n/frontend-utils": "1.0.0",
21
+ "@n8n/i18n": "3.0.0",
22
22
  "@vueuse/core": "^14.3.0",
23
23
  "lodash": "4.18.1",
24
- "n8n-workflow": "2.45.1",
24
+ "n8n-workflow": "3.0.0",
25
25
  "vue": "^3.5.13",
26
26
  "vue-router": "^4.5.0"
27
27
  },
28
28
  "devDependencies": {
29
29
  "@n8n/eslint-config": "0.0.1",
30
30
  "@n8n/playwright-janitor": "0.1.0",
31
- "@n8n/telemetry": "1.13.3",
32
- "@n8n/typescript-config": "1.12.0",
33
- "@n8n/vitest-config": "1.24.0",
31
+ "@n8n/telemetry": "2.0.0",
32
+ "@n8n/typescript-config": "2.0.0",
33
+ "@n8n/vitest-config": "2.0.0",
34
34
  "@pinia/testing": "^0.1.6",
35
35
  "element-plus": "2.4.3",
36
36
  "@testing-library/vue": "^8.1.0",
@@ -40,7 +40,7 @@
40
40
  "pinia": "^2.2.4",
41
41
  "tsdown": "^0.16.5",
42
42
  "typescript": "6.0.2",
43
- "vite": "^8.0.2",
43
+ "vite": "^8.1.6",
44
44
  "vitest": "5.0.1",
45
45
  "vue-tsc": "^2.2.8"
46
46
  },