n8n-nodes-withings 0.6.3 → 0.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.
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RETRY_ENDPOINTS = exports.FALLBACK_ENDPOINTS = exports.REFRESH_STRATEGIES = exports.VALIDATION_ENDPOINTS = exports.TOKEN_ERROR_PATTERNS = exports.DEFAULT_SCOPES = exports.CACHE_HEADERS = exports.JITTER = exports.TOKEN_CONFIG = exports.ENDPOINTS = exports.WITHINGS_API = void 0;
4
+ exports.WITHINGS_API = {
5
+ BASE_URL: 'https://wbsapi.withings.net',
6
+ AUTH_URL: 'https://account.withings.com/oauth2_user/authorize2',
7
+ TOKEN_URL: 'https://wbsapi.withings.net/v2/oauth2?action=requesttoken',
8
+ SIGNATURE_URL: 'https://wbsapi.withings.net/v2/signature',
9
+ };
10
+ exports.ENDPOINTS = {
11
+ USER: '/v2/user',
12
+ MEASURE: '/v2/measure',
13
+ MEASURE_V1: '/measure',
14
+ SLEEP: '/v2/sleep',
15
+ NOTIFY: '/notify',
16
+ };
17
+ exports.TOKEN_CONFIG = {
18
+ EXPIRES_IN: 15,
19
+ MAX_RETRIES: 5,
20
+ BASE_DELAY: 1000,
21
+ PRE_VALIDATION_ATTEMPTS: 7,
22
+ DIRECT_REFRESH_ATTEMPTS: 5,
23
+ INITIAL_DELAY: 1500,
24
+ TOKEN_REFRESH_DELAY: 2000,
25
+ VALIDATION_DELAY: 2000,
26
+ SLEEP_VALIDATION_DELAY: 2500,
27
+ REQUEST_TIMEOUT: 10000,
28
+ };
29
+ exports.JITTER = {
30
+ MIN: 0.8,
31
+ MAX: 1.2,
32
+ RANGE: 0.4,
33
+ };
34
+ exports.CACHE_HEADERS = {
35
+ 'Cache-Control': 'no-cache, no-store, must-revalidate',
36
+ 'Pragma': 'no-cache',
37
+ 'Expires': '0',
38
+ };
39
+ exports.DEFAULT_SCOPES = 'user.info,user.metrics,user.activity,user.sleepevents';
40
+ exports.TOKEN_ERROR_PATTERNS = [
41
+ 'token',
42
+ 'sign',
43
+ 'auth',
44
+ 'unauthorized',
45
+ 'expired',
46
+ 'authentication',
47
+ 'credentials',
48
+ 'access',
49
+ 'permission',
50
+ 'invalid',
51
+ 'oauth',
52
+ '401',
53
+ '403',
54
+ 'denied',
55
+ 'reject',
56
+ 'login',
57
+ 'signature',
58
+ 'identity',
59
+ 'verify',
60
+ 'key',
61
+ 'secret',
62
+ ];
63
+ exports.VALIDATION_ENDPOINTS = [
64
+ { url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.USER}`, action: 'getdevice' },
65
+ { url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.MEASURE}`, action: 'getactivity' },
66
+ { url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.SLEEP}`, action: 'get' },
67
+ { url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.SLEEP}`, action: 'getsummary' },
68
+ ];
69
+ exports.REFRESH_STRATEGIES = [
70
+ {
71
+ url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.USER}`,
72
+ action: 'getdevice',
73
+ waitTime: 1200,
74
+ description: 'User endpoint with getdevice action (most reliable)',
75
+ },
76
+ {
77
+ url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.MEASURE}`,
78
+ action: 'getactivity',
79
+ waitTime: 1500,
80
+ description: 'Measure endpoint (different service)',
81
+ },
82
+ {
83
+ url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.USER}`,
84
+ action: 'get',
85
+ waitTime: 1800,
86
+ description: 'User endpoint with simpler action',
87
+ },
88
+ {
89
+ url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.SLEEP}`,
90
+ action: 'get',
91
+ waitTime: 2000,
92
+ description: 'Sleep endpoint (different service)',
93
+ },
94
+ {
95
+ url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.NOTIFY}`,
96
+ action: 'list',
97
+ waitTime: 2500,
98
+ description: 'Notification endpoint (completely different API area)',
99
+ },
100
+ ];
101
+ exports.FALLBACK_ENDPOINTS = [
102
+ {
103
+ url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.SLEEP}`,
104
+ action: 'get',
105
+ waitTime: 2000,
106
+ },
107
+ {
108
+ url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.MEASURE}`,
109
+ action: 'getactivity',
110
+ waitTime: 2200,
111
+ },
112
+ {
113
+ url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.USER}`,
114
+ action: 'getdevice',
115
+ waitTime: 2500,
116
+ },
117
+ {
118
+ url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.NOTIFY}`,
119
+ action: 'list',
120
+ waitTime: 3000,
121
+ },
122
+ ];
123
+ exports.RETRY_ENDPOINTS = [
124
+ { url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.USER}`, action: 'get' },
125
+ { url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.USER}`, action: 'getdevice' },
126
+ { url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.MEASURE}`, action: 'getactivity' },
127
+ { url: `${exports.WITHINGS_API.BASE_URL}${exports.ENDPOINTS.SLEEP}`, action: 'get' },
128
+ ];
129
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../utils/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { IExecuteFunctions, IDataObject } from 'n8n-workflow';
2
+ import { IEndpointConfig, ITokenRefreshResult, IValidationAttemptResult } from './types';
3
+ export declare function calculateJitter(baseValue: number): number;
4
+ export declare function generateUniqueTimestamp(): number;
5
+ export declare function createRequestHeaders(additionalHeaders?: IDataObject): IDataObject;
6
+ export declare function isTokenError(error: any): boolean;
7
+ export declare function calculateBackoffDelay(retries: number, baseDelay?: number): number;
8
+ export declare function makeValidationRequest(context: IExecuteFunctions, endpoint: IEndpointConfig): Promise<IValidationAttemptResult>;
9
+ export declare function performPreValidation(context: IExecuteFunctions): Promise<void>;
10
+ export declare function performDirectTokenRefresh(context: IExecuteFunctions): Promise<ITokenRefreshResult>;
11
+ export declare function refreshTokenForRetry(context: IExecuteFunctions, retryCount: number): Promise<ITokenRefreshResult>;
12
+ export declare function executeRefreshStrategies(context: IExecuteFunctions): Promise<ITokenRefreshResult>;
13
+ export declare function validateSleepToken(context: IExecuteFunctions, operation: string): Promise<void>;
14
+ export declare function createTokenErrorMessage(maxRetries: number, error: any, tokenRefreshed: boolean): string;
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateJitter = calculateJitter;
4
+ exports.generateUniqueTimestamp = generateUniqueTimestamp;
5
+ exports.createRequestHeaders = createRequestHeaders;
6
+ exports.isTokenError = isTokenError;
7
+ exports.calculateBackoffDelay = calculateBackoffDelay;
8
+ exports.makeValidationRequest = makeValidationRequest;
9
+ exports.performPreValidation = performPreValidation;
10
+ exports.performDirectTokenRefresh = performDirectTokenRefresh;
11
+ exports.refreshTokenForRetry = refreshTokenForRetry;
12
+ exports.executeRefreshStrategies = executeRefreshStrategies;
13
+ exports.validateSleepToken = validateSleepToken;
14
+ exports.createTokenErrorMessage = createTokenErrorMessage;
15
+ const n8n_workflow_1 = require("n8n-workflow");
16
+ const constants_1 = require("./constants");
17
+ function calculateJitter(baseValue) {
18
+ const jitter = Math.random() * constants_1.JITTER.RANGE + constants_1.JITTER.MIN;
19
+ return Math.floor(baseValue * jitter);
20
+ }
21
+ function generateUniqueTimestamp() {
22
+ return Date.now() + Math.floor(Math.random() * 1000);
23
+ }
24
+ function createRequestHeaders(additionalHeaders = {}) {
25
+ return {
26
+ 'Accept': 'application/json',
27
+ ...constants_1.CACHE_HEADERS,
28
+ ...additionalHeaders,
29
+ };
30
+ }
31
+ function isTokenError(error) {
32
+ const errorMsg = (error.message || '').toLowerCase();
33
+ return constants_1.TOKEN_ERROR_PATTERNS.some((pattern) => errorMsg.includes(pattern));
34
+ }
35
+ function calculateBackoffDelay(retries, baseDelay = constants_1.TOKEN_CONFIG.BASE_DELAY) {
36
+ const exponentialDelay = baseDelay * Math.pow(2, retries - 1);
37
+ return calculateJitter(exponentialDelay);
38
+ }
39
+ async function makeValidationRequest(context, endpoint) {
40
+ try {
41
+ const uniqueTimestamp = generateUniqueTimestamp();
42
+ await context.helpers.requestWithAuthentication.call(context, 'withingsOAuth2Api', {
43
+ method: 'GET',
44
+ url: endpoint.url,
45
+ qs: {
46
+ action: endpoint.action,
47
+ _ts: uniqueTimestamp,
48
+ },
49
+ json: true,
50
+ headers: {
51
+ ...createRequestHeaders(),
52
+ 'X-Request-ID': `validation-${uniqueTimestamp}`,
53
+ },
54
+ timeout: constants_1.TOKEN_CONFIG.REQUEST_TIMEOUT,
55
+ });
56
+ return { success: true, endpoint: endpoint.url };
57
+ }
58
+ catch (error) {
59
+ return { success: false, endpoint: endpoint.url, error };
60
+ }
61
+ }
62
+ async function performPreValidation(context) {
63
+ for (let attempt = 0; attempt < constants_1.TOKEN_CONFIG.PRE_VALIDATION_ATTEMPTS; attempt++) {
64
+ const result = await makeValidationRequest(context, constants_1.VALIDATION_ENDPOINTS[0]);
65
+ if (result.success) {
66
+ await (0, n8n_workflow_1.sleep)(constants_1.TOKEN_CONFIG.VALIDATION_DELAY);
67
+ break;
68
+ }
69
+ if (attempt === constants_1.TOKEN_CONFIG.PRE_VALIDATION_ATTEMPTS - 1) {
70
+ await (0, n8n_workflow_1.sleep)(4000);
71
+ continue;
72
+ }
73
+ const delay = calculateJitter(1800 * Math.pow(1.5, attempt));
74
+ await (0, n8n_workflow_1.sleep)(delay);
75
+ const alternateEndpointIndex = (attempt % (constants_1.VALIDATION_ENDPOINTS.length - 1)) + 1;
76
+ const alternateResult = await makeValidationRequest(context, constants_1.VALIDATION_ENDPOINTS[alternateEndpointIndex]);
77
+ if (alternateResult.success) {
78
+ await (0, n8n_workflow_1.sleep)(constants_1.TOKEN_CONFIG.VALIDATION_DELAY);
79
+ break;
80
+ }
81
+ await (0, n8n_workflow_1.sleep)(2500);
82
+ }
83
+ }
84
+ async function performDirectTokenRefresh(context) {
85
+ for (let attempt = 0; attempt < constants_1.TOKEN_CONFIG.DIRECT_REFRESH_ATTEMPTS; attempt++) {
86
+ const result = await makeValidationRequest(context, {
87
+ url: constants_1.VALIDATION_ENDPOINTS[0].url,
88
+ action: 'get',
89
+ });
90
+ if (result.success) {
91
+ await (0, n8n_workflow_1.sleep)(2500);
92
+ return { success: true };
93
+ }
94
+ if (attempt < constants_1.FALLBACK_ENDPOINTS.length) {
95
+ const fallback = constants_1.FALLBACK_ENDPOINTS[attempt];
96
+ const fallbackResult = await makeValidationRequest(context, fallback);
97
+ if (fallbackResult.success) {
98
+ await (0, n8n_workflow_1.sleep)(fallback.waitTime || 2000);
99
+ return { success: true };
100
+ }
101
+ const delay = calculateJitter(1200 * Math.pow(1.5, attempt));
102
+ await (0, n8n_workflow_1.sleep)(delay);
103
+ }
104
+ }
105
+ await (0, n8n_workflow_1.sleep)(3000);
106
+ return { success: false };
107
+ }
108
+ async function refreshTokenForRetry(context, retryCount) {
109
+ const endpoint = constants_1.RETRY_ENDPOINTS[retryCount % constants_1.RETRY_ENDPOINTS.length];
110
+ try {
111
+ const uniqueTimestamp = generateUniqueTimestamp();
112
+ await context.helpers.requestWithAuthentication.call(context, 'withingsOAuth2Api', {
113
+ method: 'GET',
114
+ url: endpoint.url,
115
+ qs: {
116
+ action: endpoint.action,
117
+ _ts: uniqueTimestamp,
118
+ },
119
+ json: true,
120
+ headers: createRequestHeaders(),
121
+ timeout: constants_1.TOKEN_CONFIG.REQUEST_TIMEOUT,
122
+ });
123
+ await (0, n8n_workflow_1.sleep)(constants_1.TOKEN_CONFIG.TOKEN_REFRESH_DELAY);
124
+ return { success: true };
125
+ }
126
+ catch (error) {
127
+ await (0, n8n_workflow_1.sleep)(1000);
128
+ return { success: false, error };
129
+ }
130
+ }
131
+ async function executeRefreshStrategies(context) {
132
+ for (const strategy of constants_1.REFRESH_STRATEGIES) {
133
+ try {
134
+ await (0, n8n_workflow_1.sleep)(strategy.waitTime);
135
+ const uniqueTimestamp = generateUniqueTimestamp();
136
+ await context.helpers.requestWithAuthentication.call(context, 'withingsOAuth2Api', {
137
+ method: 'GET',
138
+ url: strategy.url,
139
+ qs: {
140
+ action: strategy.action,
141
+ _ts: uniqueTimestamp,
142
+ },
143
+ json: true,
144
+ headers: createRequestHeaders(),
145
+ timeout: constants_1.TOKEN_CONFIG.REQUEST_TIMEOUT,
146
+ });
147
+ await (0, n8n_workflow_1.sleep)(constants_1.TOKEN_CONFIG.TOKEN_REFRESH_DELAY);
148
+ return { success: true };
149
+ }
150
+ catch (error) {
151
+ continue;
152
+ }
153
+ }
154
+ await (0, n8n_workflow_1.sleep)(3000);
155
+ return { success: false };
156
+ }
157
+ async function validateSleepToken(context, operation) {
158
+ try {
159
+ const uniqueTimestamp = generateUniqueTimestamp();
160
+ await context.helpers.requestWithAuthentication.call(context, 'withingsOAuth2Api', {
161
+ method: 'GET',
162
+ url: constants_1.VALIDATION_ENDPOINTS[2].url,
163
+ qs: {
164
+ action: operation === 'getsummary' ? 'getsummary' : 'get',
165
+ _ts: uniqueTimestamp,
166
+ },
167
+ json: true,
168
+ headers: {
169
+ ...createRequestHeaders(),
170
+ 'X-Request-ID': `sleep-validation-${uniqueTimestamp}`,
171
+ },
172
+ timeout: constants_1.TOKEN_CONFIG.REQUEST_TIMEOUT,
173
+ });
174
+ await (0, n8n_workflow_1.sleep)(constants_1.TOKEN_CONFIG.SLEEP_VALIDATION_DELAY);
175
+ }
176
+ catch (error) {
177
+ await (0, n8n_workflow_1.sleep)(1500);
178
+ }
179
+ }
180
+ function createTokenErrorMessage(maxRetries, error, tokenRefreshed) {
181
+ return `Failed after ${maxRetries} attempts: ${error.message}.
182
+ Error type: ${error.name || 'Unknown'}, Status code: ${error.statusCode || 'N/A'}.
183
+ Token refresh status: ${tokenRefreshed ? 'Refreshed' : 'Not refreshed'}.
184
+
185
+ The token may be invalid or revoked. Please try the following:
186
+ 1. Reconnect your Withings account in the credentials
187
+ 2. Ensure your Withings Developer account is active
188
+ 3. Check that your application has the required scopes
189
+ 4. Verify that your Withings account is active and properly configured
190
+ 5. Try again in a few minutes as Withings API may be experiencing temporary issues`;
191
+ }
192
+ //# sourceMappingURL=tokenHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenHelpers.js","sourceRoot":"","sources":["../../utils/tokenHelpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { IDataObject } from 'n8n-workflow';
2
+ export interface IWithingsResponse {
3
+ status: number;
4
+ body?: IDataObject;
5
+ error?: string;
6
+ }
7
+ export interface IEndpointConfig {
8
+ url: string;
9
+ action: string;
10
+ waitTime?: number;
11
+ description?: string;
12
+ }
13
+ export interface ITokenRefreshResult {
14
+ success: boolean;
15
+ error?: Error;
16
+ }
17
+ export interface IRequestOptionsWithTimestamp {
18
+ method: string;
19
+ url: string;
20
+ qs: IDataObject & {
21
+ _ts: number;
22
+ };
23
+ json: boolean;
24
+ headers: IDataObject;
25
+ timeout?: number;
26
+ }
27
+ export interface IValidationAttemptResult {
28
+ success: boolean;
29
+ endpoint: string;
30
+ error?: Error;
31
+ }
32
+ export interface IRetryContext {
33
+ retries: number;
34
+ maxRetries: number;
35
+ tokenRefreshed: boolean;
36
+ lastError?: Error;
37
+ }
38
+ export interface IFormattedResponse extends IDataObject {
39
+ success: boolean;
40
+ resource: string;
41
+ operation: string;
42
+ error?: string;
43
+ status?: number;
44
+ errorCode?: string;
45
+ }
46
+ export interface ISleepValidationOptions {
47
+ operation: string;
48
+ uniqueTimestamp: number;
49
+ }
50
+ export interface IJitterConfig {
51
+ min: number;
52
+ max: number;
53
+ value: number;
54
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../utils/types.ts"],"names":[],"mappings":""}
@@ -40,6 +40,7 @@ exports.normalizeMonth = normalizeMonth;
40
40
  exports.normalizeDay = normalizeDay;
41
41
  const crypto = __importStar(require("crypto"));
42
42
  const process = __importStar(require("process"));
43
+ const constants_1 = require("./constants");
43
44
  function formatScope(scope) {
44
45
  return scope
45
46
  .split(',')
@@ -57,7 +58,7 @@ async function getNonce(clientId, clientSecret, makeRequest) {
57
58
  const timestamp = Math.floor(Date.now() / 1000);
58
59
  const options = {
59
60
  method: 'POST',
60
- url: 'https://wbsapi.withings.net/v2/signature',
61
+ url: constants_1.WITHINGS_API.SIGNATURE_URL,
61
62
  body: {
62
63
  action: 'getnonce',
63
64
  client_id: clientId,
@@ -67,11 +68,9 @@ async function getNonce(clientId, clientSecret, makeRequest) {
67
68
  json: true,
68
69
  headers: {
69
70
  'Accept': 'application/json',
70
- 'Cache-Control': 'no-cache, no-store, must-revalidate',
71
- 'Pragma': 'no-cache',
72
- 'Expires': '0',
71
+ ...constants_1.CACHE_HEADERS,
73
72
  },
74
- timeout: 10000,
73
+ timeout: constants_1.TOKEN_CONFIG.REQUEST_TIMEOUT,
75
74
  };
76
75
  const response = await makeRequest(options);
77
76
  if (response.body && response.body.nonce) {
@@ -1 +1 @@
1
- {"version":3,"file":"withings.js","sourceRoot":"","sources":["../../utils/withings.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,kCAKC;AAUD,8CAUC;AASD,4BAyCC;AAOD,wCAEC;AAOD,oCAEC;AArGD,+CAAiC;AACjC,iDAAmC;AAOnC,SAAgB,WAAW,CAAC,KAAa;IACvC,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAUD,SAAgB,iBAAiB,CAC/B,MAAc,EACd,QAAgB,EAChB,YAAoB,EACpB,SAA0B;IAE1B,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AASM,KAAK,UAAU,QAAQ,CAC5B,QAAgB,EAChB,YAAoB,EACpB,WAA2D;IAE3D,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAwB;YACnC,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,0CAA0C;YAC/C,IAAI,EAAE;gBACJ,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,QAAQ;gBACnB,SAAS;gBACT,SAAS,EAAE,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC;aAC5E;YACD,IAAI,EAAE,IAAI;YACV,OAAO,EAAE;gBACP,QAAQ,EAAE,kBAAkB;gBAC5B,eAAe,EAAE,qCAAqC;gBACtD,QAAQ,EAAE,UAAU;gBACpB,SAAS,EAAE,GAAG;aACf;YACD,OAAO,EAAE,KAAK;SACf,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACzC,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,IAAI,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAOD,SAAgB,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAOD,SAAgB,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"withings.js","sourceRoot":"","sources":["../../utils/withings.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBA,kCAKC;AAcD,8CAUC;AAWD,4BAuCC;AAWD,wCAEC;AAWD,oCAEC;AAtHD,+CAAiC;AACjC,iDAAmC;AAEnC,2CAAwE;AAUxE,SAAgB,WAAW,CAAC,KAAa;IACvC,OAAO,KAAK;SACT,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;SAChC,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAcD,SAAgB,iBAAiB,CAC/B,MAAc,EACd,QAAgB,EAChB,YAAoB,EACpB,SAA0B;IAE1B,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAWM,KAAK,UAAU,QAAQ,CAC5B,QAAgB,EAChB,YAAoB,EACpB,WAA2D;IAE3D,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAwB;YACnC,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,wBAAY,CAAC,aAAa;YAC/B,IAAI,EAAE;gBACJ,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,QAAQ;gBACnB,SAAS;gBACT,SAAS,EAAE,iBAAiB,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,CAAC;aAC5E;YACD,IAAI,EAAE,IAAI;YACV,OAAO,EAAE;gBACP,QAAQ,EAAE,kBAAkB;gBAC5B,GAAG,yBAAa;aACjB;YACD,OAAO,EAAE,wBAAY,CAAC,eAAe;SACtC,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACzC,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,IAAI,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAWD,SAAgB,cAAc,CAAC,KAAa;IAC1C,OAAO,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC3D,CAAC;AAWD,SAAgB,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC;AACzC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-withings",
3
- "version": "0.6.3",
3
+ "version": "0.7.0",
4
4
  "description": "n8n node for Withings API integration",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",