@revenexx/integrations-node-sdk 1.5.1 → 1.7.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.
@@ -14,15 +14,23 @@ function extractCredentialManifests(credentials) {
14
14
 
15
15
  // src/manifest.ts
16
16
  var MANIFEST_VERSION = "v0-draft";
17
+ var PACKAGE_ICON = /^lucide:[a-z0-9]+(-[a-z0-9]+)*$/;
18
+ var PHP_TRIM = /^[ \t\n\r\0\v]+|[ \t\n\r\0\v]+$/g;
19
+ function packageIconProblem(icon) {
20
+ if (icon === void 0 || PACKAGE_ICON.test(icon)) return void 0;
21
+ return `package.json "revenexx.icon" must be a Lucide icon name such as "lucide:bell", got "${icon}".`;
22
+ }
17
23
  function parsePackageMeta(raw) {
18
24
  const obj = raw && typeof raw === "object" ? raw : {};
19
25
  const str = (v) => typeof v === "string" ? v.trim() : "";
20
26
  const revenexx = obj.revenexx && typeof obj.revenexx === "object" ? obj.revenexx : {};
21
27
  const displayName = str(revenexx.displayName);
28
+ const icon = typeof revenexx.icon === "string" ? revenexx.icon.replace(PHP_TRIM, "") : "";
22
29
  return {
23
30
  name: str(obj.name),
24
31
  version: str(obj.version),
25
- displayName: displayName !== "" ? displayName : void 0
32
+ displayName: displayName !== "" ? displayName : void 0,
33
+ icon: icon !== "" ? icon : void 0
26
34
  };
27
35
  }
28
36
  function buildManifest(nodes, credentials = [], templates = []) {
@@ -45,6 +53,7 @@ export {
45
53
  extractCredentialManifest,
46
54
  extractCredentialManifests,
47
55
  MANIFEST_VERSION,
56
+ packageIconProblem,
48
57
  parsePackageMeta,
49
58
  buildManifest
50
59
  };
package/dist/cli.cjs CHANGED
@@ -93,15 +93,23 @@ function extractCredentialManifests(credentials) {
93
93
 
94
94
  // src/manifest.ts
95
95
  var MANIFEST_VERSION = "v0-draft";
96
+ var PACKAGE_ICON = /^lucide:[a-z0-9]+(-[a-z0-9]+)*$/;
97
+ var PHP_TRIM = /^[ \t\n\r\0\v]+|[ \t\n\r\0\v]+$/g;
98
+ function packageIconProblem(icon) {
99
+ if (icon === void 0 || PACKAGE_ICON.test(icon)) return void 0;
100
+ return `package.json "revenexx.icon" must be a Lucide icon name such as "lucide:bell", got "${icon}".`;
101
+ }
96
102
  function parsePackageMeta(raw) {
97
103
  const obj = raw && typeof raw === "object" ? raw : {};
98
104
  const str = (v) => typeof v === "string" ? v.trim() : "";
99
105
  const revenexx = obj.revenexx && typeof obj.revenexx === "object" ? obj.revenexx : {};
100
106
  const displayName = str(revenexx.displayName);
107
+ const icon = typeof revenexx.icon === "string" ? revenexx.icon.replace(PHP_TRIM, "") : "";
101
108
  return {
102
109
  name: str(obj.name),
103
110
  version: str(obj.version),
104
- displayName: displayName !== "" ? displayName : void 0
111
+ displayName: displayName !== "" ? displayName : void 0,
112
+ icon: icon !== "" ? icon : void 0
105
113
  };
106
114
  }
107
115
  function buildManifest(nodes, credentials = [], templates = []) {
@@ -136,6 +144,14 @@ function readPackageJson(root) {
136
144
  }
137
145
  }
138
146
  async function runManifest() {
147
+ const pkg = readPackageJson(projectRoot);
148
+ const meta = parsePackageMeta(pkg);
149
+ const iconProblem = packageIconProblem(meta.icon);
150
+ if (iconProblem) fail(iconProblem);
151
+ const declaredIcon = pkg?.revenexx?.icon;
152
+ if (declaredIcon != null && typeof declaredIcon !== "string") {
153
+ console.warn('\u26A0 package.json "revenexx.icon" is not text \u2014 the folder will show no icon.');
154
+ }
139
155
  const distEntry = (0, import_node_path2.resolve)(projectRoot, "dist", "index.js");
140
156
  if (!fs2.existsSync(distEntry)) {
141
157
  fail("dist/index.js is missing. Run the build (tsup) before `rvnxx-nodes manifest`.");
@@ -152,7 +168,6 @@ async function runManifest() {
152
168
  }
153
169
  const credentials = mod.CREDENTIALS ?? [];
154
170
  const templates = mod.TEMPLATES ?? [];
155
- const meta = parsePackageMeta(readPackageJson(projectRoot));
156
171
  const hasPackage = meta.name !== "" && meta.version !== "";
157
172
  if (hasPackage && !meta.displayName) {
158
173
  console.warn(
package/dist/cli.js CHANGED
@@ -1,8 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  buildManifest,
4
+ packageIconProblem,
4
5
  parsePackageMeta
5
- } from "./chunk-WB3BYMLA.js";
6
+ } from "./chunk-5BCAXRU3.js";
6
7
 
7
8
  // src/cli.ts
8
9
  import * as fs2 from "fs";
@@ -76,6 +77,14 @@ function readPackageJson(root) {
76
77
  }
77
78
  }
78
79
  async function runManifest() {
80
+ const pkg = readPackageJson(projectRoot);
81
+ const meta = parsePackageMeta(pkg);
82
+ const iconProblem = packageIconProblem(meta.icon);
83
+ if (iconProblem) fail(iconProblem);
84
+ const declaredIcon = pkg?.revenexx?.icon;
85
+ if (declaredIcon != null && typeof declaredIcon !== "string") {
86
+ console.warn('\u26A0 package.json "revenexx.icon" is not text \u2014 the folder will show no icon.');
87
+ }
79
88
  const distEntry = resolve2(projectRoot, "dist", "index.js");
80
89
  if (!fs2.existsSync(distEntry)) {
81
90
  fail("dist/index.js is missing. Run the build (tsup) before `rvnxx-nodes manifest`.");
@@ -92,7 +101,6 @@ async function runManifest() {
92
101
  }
93
102
  const credentials = mod.CREDENTIALS ?? [];
94
103
  const templates = mod.TEMPLATES ?? [];
95
- const meta = parsePackageMeta(readPackageJson(projectRoot));
96
104
  const hasPackage = meta.name !== "" && meta.version !== "";
97
105
  if (hasPackage && !meta.displayName) {
98
106
  console.warn(
package/dist/index.cjs CHANGED
@@ -69,6 +69,7 @@ __export(index_exports, {
69
69
  maxBytesConfigField: () => maxBytesConfigField,
70
70
  normalizeCredentialType: () => normalizeCredentialType,
71
71
  normalizeLocalized: () => normalizeLocalized,
72
+ packageIconProblem: () => packageIconProblem,
72
73
  parsePackageMeta: () => parsePackageMeta,
73
74
  readArrayBuffer: () => readArrayBuffer,
74
75
  readJsonOrText: () => readJsonOrText,
@@ -791,15 +792,23 @@ async function withRetry(fn, policy, hooks) {
791
792
 
792
793
  // src/manifest.ts
793
794
  var MANIFEST_VERSION = "v0-draft";
795
+ var PACKAGE_ICON = /^lucide:[a-z0-9]+(-[a-z0-9]+)*$/;
796
+ var PHP_TRIM = /^[ \t\n\r\0\v]+|[ \t\n\r\0\v]+$/g;
797
+ function packageIconProblem(icon) {
798
+ if (icon === void 0 || PACKAGE_ICON.test(icon)) return void 0;
799
+ return `package.json "revenexx.icon" must be a Lucide icon name such as "lucide:bell", got "${icon}".`;
800
+ }
794
801
  function parsePackageMeta(raw) {
795
802
  const obj = raw && typeof raw === "object" ? raw : {};
796
803
  const str = (v) => typeof v === "string" ? v.trim() : "";
797
804
  const revenexx = obj.revenexx && typeof obj.revenexx === "object" ? obj.revenexx : {};
798
805
  const displayName = str(revenexx.displayName);
806
+ const icon = typeof revenexx.icon === "string" ? revenexx.icon.replace(PHP_TRIM, "") : "";
799
807
  return {
800
808
  name: str(obj.name),
801
809
  version: str(obj.version),
802
- displayName: displayName !== "" ? displayName : void 0
810
+ displayName: displayName !== "" ? displayName : void 0,
811
+ icon: icon !== "" ? icon : void 0
803
812
  };
804
813
  }
805
814
  function buildManifest(nodes, credentials = [], templates = []) {
@@ -1114,6 +1123,7 @@ function base64Url(buf) {
1114
1123
  maxBytesConfigField,
1115
1124
  normalizeCredentialType,
1116
1125
  normalizeLocalized,
1126
+ packageIconProblem,
1117
1127
  parsePackageMeta,
1118
1128
  readArrayBuffer,
1119
1129
  readJsonOrText,
package/dist/index.d.cts CHANGED
@@ -58,12 +58,18 @@ interface IInputPort {
58
58
  * One value an output carries, as the editor offers it to the next step.
59
59
  *
60
60
  * Deliberately flat: there is no member describing what is inside the value,
61
- * because the registry's manifest schema refuses any key beside these two and
61
+ * because the registry's manifest schema refuses any key beside these three and
62
62
  * the studio reads none. What is inside a value is declared beside it, under a
63
63
  * dotted name — see `IOutputPort.fields` (PO-408).
64
64
  */
65
65
  interface IOutputField {
66
66
  dataType: DataType;
67
+ /**
68
+ * What the value is called, for an author picking it in the editor's `{ }` list —
69
+ * "Rechnungen" where the key is `invoices` (PO-594). Left out, the editor shows the
70
+ * key, as before.
71
+ */
72
+ label?: LocalizedString;
67
73
  description?: LocalizedString;
68
74
  }
69
75
  interface IOutputPort {
@@ -171,6 +177,20 @@ interface IConfigFieldBase {
171
177
  * know the key.
172
178
  */
173
179
  showIf?: IShowIfCondition;
180
+ /**
181
+ * What a value mapped into this field from an earlier step has to be — `'array'`
182
+ * for a setting that wants the list a previous node produced (PO-594).
183
+ *
184
+ * The editor uses it to put the earlier steps' outputs of that kind first in the
185
+ * `{ }` list, mark them, and offer the single matching one as a one-click answer
186
+ * under an empty field. So the author does not have to know what a previous node
187
+ * returns, or which of its fields is the list.
188
+ *
189
+ * Not to be confused with `type: 'array'`, which draws the setting itself as
190
+ * repeating rows the author fills in by hand. Only meaningful together with
191
+ * `expressionAllowed`. Left unset, every output is offered alike, as before.
192
+ */
193
+ accepts?: DataType;
174
194
  /**
175
195
  * Only meaningful when `type === 'credentials-ref'`: the namespaced slug(s) of
176
196
  * the credential type(s) this field accepts (e.g. `revenexx:smtp`). The editor
@@ -1003,9 +1023,10 @@ interface NodeManifest {
1003
1023
  * The registry-relevant fields of a node package's `package.json`, as read by
1004
1024
  * the CLI. `name`/`version` identify the package; `displayName` is the
1005
1025
  * human-readable bundle label shown in the editor's node palette (e.g.
1006
- * „Business Central"). All three are read straight from `package.json` by the
1007
- * integrations server on upload — the CLI reads them only to warn about a
1008
- * missing label and to annotate the manifest log line.
1026
+ * „Business Central"); `icon` marks its folder there. All four are read straight
1027
+ * from `package.json` by the integrations server on upload — the CLI reads them
1028
+ * only to warn about a missing label, to annotate the manifest log line, and to
1029
+ * stop on an icon the server would refuse.
1009
1030
  *
1010
1031
  * The label lives under a namespaced `revenexx` group in `package.json`
1011
1032
  * (`{ "revenexx": { "displayName": "…" } }`), not a bespoke top-level key, so
@@ -1016,14 +1037,34 @@ interface NodePackageMeta {
1016
1037
  version: string;
1017
1038
  /** Human-readable bundle label (e.g. „Business Central"); optional. */
1018
1039
  displayName?: string;
1040
+ /**
1041
+ * The glyph that marks the package's folder in the studio's palette, as
1042
+ * `lucide:<kebab-name>` (e.g. `lucide:bell`); optional. Declared by a package
1043
+ * holding several services, which has no one vendor logo to mark its folder
1044
+ * with — a package that is one vendor leaves it out. Trimmed, and a value that
1045
+ * is not a string counts as none, as the server reads it; whether it is well
1046
+ * formed is {@link packageIconProblem}'s question.
1047
+ */
1048
+ icon?: string;
1019
1049
  }
1050
+ /**
1051
+ * Why a declared `revenexx.icon` would be refused by the registry, or
1052
+ * `undefined` when it is fine (or absent). Lets the build stop where the author
1053
+ * can still fix it, rather than at upload. Takes the icon as
1054
+ * {@link parsePackageMeta} returns it — trimmed as the registry trims it; an
1055
+ * untrimmed raw value can be refused here although the registry accepts it.
1056
+ */
1057
+ declare function packageIconProblem(icon: string | undefined): string | undefined;
1020
1058
  /**
1021
1059
  * Extracts {@link NodePackageMeta} from parsed `package.json` contents, keeping
1022
1060
  * only the registry-relevant fields and coercing anything malformed to a safe
1023
- * shape. All three fields are trimmed; a blank or whitespace-only value becomes
1024
- * `''` (`name`/`version`) or `undefined` (`displayName`, matching how the server
1025
- * treats it), so whitespace can't masquerade as a present value in tooling.
1026
- * The bundle label is read from the `revenexx` group (`revenexx.displayName`).
1061
+ * shape. All four fields are trimmed — the icon of ASCII whitespace only, as the
1062
+ * server's PHP `trim()` does, so a pasted no-break space is refused here as it
1063
+ * is there rather than trimmed away; a blank or whitespace-only value becomes
1064
+ * `''` (`name`/`version`) or `undefined` (`displayName`, `icon`, matching how the
1065
+ * server treats them), so whitespace can't masquerade as a present value in
1066
+ * tooling. The bundle label and the folder icon are read from the `revenexx`
1067
+ * group (`revenexx.displayName`, `revenexx.icon`).
1027
1068
  * Does not validate that `name`/`version` are present — the integrations server
1028
1069
  * enforces that on upload; this is a typed, lenient read for tooling.
1029
1070
  */
@@ -1198,4 +1239,4 @@ declare abstract class OAuth2AuthCodeCredential extends BaseCredential implement
1198
1239
  test(_ctx: ICredentialContext, config: Config): Promise<ICredentialTestResult>;
1199
1240
  }
1200
1241
 
1201
- export { ApiKeyCredential, BaseCredential, BasicAuthCredential, type ConfigType, type CredentialAuthKind, type CredentialFieldType, DEFAULT_MAX_RESPONSE_BYTES, DEFAULT_RETRY_ATTEMPTS, DEFAULT_RETRY_DELAY_MS, DEFAULT_RETRY_POLICY, DEFAULT_TIMEOUT_MS, type DataType, type IConfigField, type IConfigFieldBase, type IConfigOption, type IConfigValidation, type ICredential, type ICredentialContext, type ICredentialDescription, type ICredentialField, type ICredentialOAuthAuthorize, type ICredentialResolveResult, type ICredentialTestResult, type IImage, type IInputPort, type INode, type INodeAuthorContext, type INodeContext, type INodeDescription, type INodeResult, type INodeState, type INodeWithIteration, type IOutputField, type IOutputPort, type IShowIfCondition, type ITemplateDescription, type ITemplateTrigger, type ImageCategory, type LocalizedString, type LookupAddress, type LookupFn, MANIFEST_VERSION, MAX_REDIRECTS, MAX_RESPONSE_BYTES, MAX_RETRY_ATTEMPTS, MAX_TIMEOUT_MS, type NodeCategory, NodeError, type NodeErrorOutput, type NodeManifest, type NodePackageMeta, OAuth2AuthCodeCredential, OAuth2ClientCredentialsCredential, type OAuthTokenResponse, OPERATORS, type Operator, type OutputKind, type RetryHooks, type RetryPolicy, RetryableError, type SafeFetchOptions, type SafeFetchRetry, SimpleValueCredential, type TemplateLevel, type TemplateTriggerType, VALUELESS_OPERATORS, assertPublicUrl, backoffDelay, buildManifest, clampResponseBytes, errorPort, errorResult, evaluate, extractCredentialManifest, extractCredentialManifests, extractManifest, extractManifests, httpErrorResult, isBlockedAddress, isNodeWithIteration, isOAuthAuthorizeCredential, isOperator, maxBytesConfigField, normalizeCredentialType, normalizeLocalized, parsePackageMeta, readArrayBuffer, readJsonOrText, readText, retryConfigFields, safeFetch, settingApplies, sleepWithSignal, takesValue, timeoutConfigField, toErrorOutput, toErrorResult, withRetry };
1242
+ export { ApiKeyCredential, BaseCredential, BasicAuthCredential, type ConfigType, type CredentialAuthKind, type CredentialFieldType, DEFAULT_MAX_RESPONSE_BYTES, DEFAULT_RETRY_ATTEMPTS, DEFAULT_RETRY_DELAY_MS, DEFAULT_RETRY_POLICY, DEFAULT_TIMEOUT_MS, type DataType, type IConfigField, type IConfigFieldBase, type IConfigOption, type IConfigValidation, type ICredential, type ICredentialContext, type ICredentialDescription, type ICredentialField, type ICredentialOAuthAuthorize, type ICredentialResolveResult, type ICredentialTestResult, type IImage, type IInputPort, type INode, type INodeAuthorContext, type INodeContext, type INodeDescription, type INodeResult, type INodeState, type INodeWithIteration, type IOutputField, type IOutputPort, type IShowIfCondition, type ITemplateDescription, type ITemplateTrigger, type ImageCategory, type LocalizedString, type LookupAddress, type LookupFn, MANIFEST_VERSION, MAX_REDIRECTS, MAX_RESPONSE_BYTES, MAX_RETRY_ATTEMPTS, MAX_TIMEOUT_MS, type NodeCategory, NodeError, type NodeErrorOutput, type NodeManifest, type NodePackageMeta, OAuth2AuthCodeCredential, OAuth2ClientCredentialsCredential, type OAuthTokenResponse, OPERATORS, type Operator, type OutputKind, type RetryHooks, type RetryPolicy, RetryableError, type SafeFetchOptions, type SafeFetchRetry, SimpleValueCredential, type TemplateLevel, type TemplateTriggerType, VALUELESS_OPERATORS, assertPublicUrl, backoffDelay, buildManifest, clampResponseBytes, errorPort, errorResult, evaluate, extractCredentialManifest, extractCredentialManifests, extractManifest, extractManifests, httpErrorResult, isBlockedAddress, isNodeWithIteration, isOAuthAuthorizeCredential, isOperator, maxBytesConfigField, normalizeCredentialType, normalizeLocalized, packageIconProblem, parsePackageMeta, readArrayBuffer, readJsonOrText, readText, retryConfigFields, safeFetch, settingApplies, sleepWithSignal, takesValue, timeoutConfigField, toErrorOutput, toErrorResult, withRetry };
package/dist/index.d.ts CHANGED
@@ -58,12 +58,18 @@ interface IInputPort {
58
58
  * One value an output carries, as the editor offers it to the next step.
59
59
  *
60
60
  * Deliberately flat: there is no member describing what is inside the value,
61
- * because the registry's manifest schema refuses any key beside these two and
61
+ * because the registry's manifest schema refuses any key beside these three and
62
62
  * the studio reads none. What is inside a value is declared beside it, under a
63
63
  * dotted name — see `IOutputPort.fields` (PO-408).
64
64
  */
65
65
  interface IOutputField {
66
66
  dataType: DataType;
67
+ /**
68
+ * What the value is called, for an author picking it in the editor's `{ }` list —
69
+ * "Rechnungen" where the key is `invoices` (PO-594). Left out, the editor shows the
70
+ * key, as before.
71
+ */
72
+ label?: LocalizedString;
67
73
  description?: LocalizedString;
68
74
  }
69
75
  interface IOutputPort {
@@ -171,6 +177,20 @@ interface IConfigFieldBase {
171
177
  * know the key.
172
178
  */
173
179
  showIf?: IShowIfCondition;
180
+ /**
181
+ * What a value mapped into this field from an earlier step has to be — `'array'`
182
+ * for a setting that wants the list a previous node produced (PO-594).
183
+ *
184
+ * The editor uses it to put the earlier steps' outputs of that kind first in the
185
+ * `{ }` list, mark them, and offer the single matching one as a one-click answer
186
+ * under an empty field. So the author does not have to know what a previous node
187
+ * returns, or which of its fields is the list.
188
+ *
189
+ * Not to be confused with `type: 'array'`, which draws the setting itself as
190
+ * repeating rows the author fills in by hand. Only meaningful together with
191
+ * `expressionAllowed`. Left unset, every output is offered alike, as before.
192
+ */
193
+ accepts?: DataType;
174
194
  /**
175
195
  * Only meaningful when `type === 'credentials-ref'`: the namespaced slug(s) of
176
196
  * the credential type(s) this field accepts (e.g. `revenexx:smtp`). The editor
@@ -1003,9 +1023,10 @@ interface NodeManifest {
1003
1023
  * The registry-relevant fields of a node package's `package.json`, as read by
1004
1024
  * the CLI. `name`/`version` identify the package; `displayName` is the
1005
1025
  * human-readable bundle label shown in the editor's node palette (e.g.
1006
- * „Business Central"). All three are read straight from `package.json` by the
1007
- * integrations server on upload — the CLI reads them only to warn about a
1008
- * missing label and to annotate the manifest log line.
1026
+ * „Business Central"); `icon` marks its folder there. All four are read straight
1027
+ * from `package.json` by the integrations server on upload — the CLI reads them
1028
+ * only to warn about a missing label, to annotate the manifest log line, and to
1029
+ * stop on an icon the server would refuse.
1009
1030
  *
1010
1031
  * The label lives under a namespaced `revenexx` group in `package.json`
1011
1032
  * (`{ "revenexx": { "displayName": "…" } }`), not a bespoke top-level key, so
@@ -1016,14 +1037,34 @@ interface NodePackageMeta {
1016
1037
  version: string;
1017
1038
  /** Human-readable bundle label (e.g. „Business Central"); optional. */
1018
1039
  displayName?: string;
1040
+ /**
1041
+ * The glyph that marks the package's folder in the studio's palette, as
1042
+ * `lucide:<kebab-name>` (e.g. `lucide:bell`); optional. Declared by a package
1043
+ * holding several services, which has no one vendor logo to mark its folder
1044
+ * with — a package that is one vendor leaves it out. Trimmed, and a value that
1045
+ * is not a string counts as none, as the server reads it; whether it is well
1046
+ * formed is {@link packageIconProblem}'s question.
1047
+ */
1048
+ icon?: string;
1019
1049
  }
1050
+ /**
1051
+ * Why a declared `revenexx.icon` would be refused by the registry, or
1052
+ * `undefined` when it is fine (or absent). Lets the build stop where the author
1053
+ * can still fix it, rather than at upload. Takes the icon as
1054
+ * {@link parsePackageMeta} returns it — trimmed as the registry trims it; an
1055
+ * untrimmed raw value can be refused here although the registry accepts it.
1056
+ */
1057
+ declare function packageIconProblem(icon: string | undefined): string | undefined;
1020
1058
  /**
1021
1059
  * Extracts {@link NodePackageMeta} from parsed `package.json` contents, keeping
1022
1060
  * only the registry-relevant fields and coercing anything malformed to a safe
1023
- * shape. All three fields are trimmed; a blank or whitespace-only value becomes
1024
- * `''` (`name`/`version`) or `undefined` (`displayName`, matching how the server
1025
- * treats it), so whitespace can't masquerade as a present value in tooling.
1026
- * The bundle label is read from the `revenexx` group (`revenexx.displayName`).
1061
+ * shape. All four fields are trimmed — the icon of ASCII whitespace only, as the
1062
+ * server's PHP `trim()` does, so a pasted no-break space is refused here as it
1063
+ * is there rather than trimmed away; a blank or whitespace-only value becomes
1064
+ * `''` (`name`/`version`) or `undefined` (`displayName`, `icon`, matching how the
1065
+ * server treats them), so whitespace can't masquerade as a present value in
1066
+ * tooling. The bundle label and the folder icon are read from the `revenexx`
1067
+ * group (`revenexx.displayName`, `revenexx.icon`).
1027
1068
  * Does not validate that `name`/`version` are present — the integrations server
1028
1069
  * enforces that on upload; this is a typed, lenient read for tooling.
1029
1070
  */
@@ -1198,4 +1239,4 @@ declare abstract class OAuth2AuthCodeCredential extends BaseCredential implement
1198
1239
  test(_ctx: ICredentialContext, config: Config): Promise<ICredentialTestResult>;
1199
1240
  }
1200
1241
 
1201
- export { ApiKeyCredential, BaseCredential, BasicAuthCredential, type ConfigType, type CredentialAuthKind, type CredentialFieldType, DEFAULT_MAX_RESPONSE_BYTES, DEFAULT_RETRY_ATTEMPTS, DEFAULT_RETRY_DELAY_MS, DEFAULT_RETRY_POLICY, DEFAULT_TIMEOUT_MS, type DataType, type IConfigField, type IConfigFieldBase, type IConfigOption, type IConfigValidation, type ICredential, type ICredentialContext, type ICredentialDescription, type ICredentialField, type ICredentialOAuthAuthorize, type ICredentialResolveResult, type ICredentialTestResult, type IImage, type IInputPort, type INode, type INodeAuthorContext, type INodeContext, type INodeDescription, type INodeResult, type INodeState, type INodeWithIteration, type IOutputField, type IOutputPort, type IShowIfCondition, type ITemplateDescription, type ITemplateTrigger, type ImageCategory, type LocalizedString, type LookupAddress, type LookupFn, MANIFEST_VERSION, MAX_REDIRECTS, MAX_RESPONSE_BYTES, MAX_RETRY_ATTEMPTS, MAX_TIMEOUT_MS, type NodeCategory, NodeError, type NodeErrorOutput, type NodeManifest, type NodePackageMeta, OAuth2AuthCodeCredential, OAuth2ClientCredentialsCredential, type OAuthTokenResponse, OPERATORS, type Operator, type OutputKind, type RetryHooks, type RetryPolicy, RetryableError, type SafeFetchOptions, type SafeFetchRetry, SimpleValueCredential, type TemplateLevel, type TemplateTriggerType, VALUELESS_OPERATORS, assertPublicUrl, backoffDelay, buildManifest, clampResponseBytes, errorPort, errorResult, evaluate, extractCredentialManifest, extractCredentialManifests, extractManifest, extractManifests, httpErrorResult, isBlockedAddress, isNodeWithIteration, isOAuthAuthorizeCredential, isOperator, maxBytesConfigField, normalizeCredentialType, normalizeLocalized, parsePackageMeta, readArrayBuffer, readJsonOrText, readText, retryConfigFields, safeFetch, settingApplies, sleepWithSignal, takesValue, timeoutConfigField, toErrorOutput, toErrorResult, withRetry };
1242
+ export { ApiKeyCredential, BaseCredential, BasicAuthCredential, type ConfigType, type CredentialAuthKind, type CredentialFieldType, DEFAULT_MAX_RESPONSE_BYTES, DEFAULT_RETRY_ATTEMPTS, DEFAULT_RETRY_DELAY_MS, DEFAULT_RETRY_POLICY, DEFAULT_TIMEOUT_MS, type DataType, type IConfigField, type IConfigFieldBase, type IConfigOption, type IConfigValidation, type ICredential, type ICredentialContext, type ICredentialDescription, type ICredentialField, type ICredentialOAuthAuthorize, type ICredentialResolveResult, type ICredentialTestResult, type IImage, type IInputPort, type INode, type INodeAuthorContext, type INodeContext, type INodeDescription, type INodeResult, type INodeState, type INodeWithIteration, type IOutputField, type IOutputPort, type IShowIfCondition, type ITemplateDescription, type ITemplateTrigger, type ImageCategory, type LocalizedString, type LookupAddress, type LookupFn, MANIFEST_VERSION, MAX_REDIRECTS, MAX_RESPONSE_BYTES, MAX_RETRY_ATTEMPTS, MAX_TIMEOUT_MS, type NodeCategory, NodeError, type NodeErrorOutput, type NodeManifest, type NodePackageMeta, OAuth2AuthCodeCredential, OAuth2ClientCredentialsCredential, type OAuthTokenResponse, OPERATORS, type Operator, type OutputKind, type RetryHooks, type RetryPolicy, RetryableError, type SafeFetchOptions, type SafeFetchRetry, SimpleValueCredential, type TemplateLevel, type TemplateTriggerType, VALUELESS_OPERATORS, assertPublicUrl, backoffDelay, buildManifest, clampResponseBytes, errorPort, errorResult, evaluate, extractCredentialManifest, extractCredentialManifests, extractManifest, extractManifests, httpErrorResult, isBlockedAddress, isNodeWithIteration, isOAuthAuthorizeCredential, isOperator, maxBytesConfigField, normalizeCredentialType, normalizeLocalized, packageIconProblem, parsePackageMeta, readArrayBuffer, readJsonOrText, readText, retryConfigFields, safeFetch, settingApplies, sleepWithSignal, takesValue, timeoutConfigField, toErrorOutput, toErrorResult, withRetry };
package/dist/index.js CHANGED
@@ -5,8 +5,9 @@ import {
5
5
  extractCredentialManifests,
6
6
  extractManifest,
7
7
  extractManifests,
8
+ packageIconProblem,
8
9
  parsePackageMeta
9
- } from "./chunk-WB3BYMLA.js";
10
+ } from "./chunk-5BCAXRU3.js";
10
11
 
11
12
  // src/types.ts
12
13
  function isNodeWithIteration(node) {
@@ -995,6 +996,7 @@ export {
995
996
  maxBytesConfigField,
996
997
  normalizeCredentialType,
997
998
  normalizeLocalized,
999
+ packageIconProblem,
998
1000
  parsePackageMeta,
999
1001
  readArrayBuffer,
1000
1002
  readJsonOrText,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@revenexx/integrations-node-sdk",
3
- "version": "1.5.1",
3
+ "version": "1.7.0",
4
4
  "description": "TypeScript interfaces and utilities for Revenexx integration nodes",
5
5
  "license": "MIT",
6
6
  "author": "revenexx GmbH",