@stepzen/sdk 0.51.0-experimental.d53f92f → 0.51.0-experimental.fcac1cd
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/lib/client-v2.d.ts.map +1 -1
- package/lib/client-v2.js +14 -8
- package/lib/client-v2.js.map +1 -1
- package/lib/commands-v2/delete.js +1 -1
- package/lib/commands-v2/deploy.js +2 -2
- package/lib/commands-v2/list.js +2 -2
- package/lib/shared/validation.d.ts +2 -0
- package/lib/shared/validation.d.ts.map +1 -1
- package/lib/shared/validation.js +15 -0
- package/lib/shared/validation.js.map +1 -1
- package/package.json +5 -4
- package/src/client-v2.ts +13 -7
- package/src/commands-v2/delete.ts +1 -1
- package/src/commands-v2/deploy.ts +2 -2
- package/src/commands-v2/list.ts +2 -2
- package/src/shared/validation.ts +14 -0
package/lib/client-v2.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-v2.d.ts","sourceRoot":"","sources":["../src/client-v2.ts"],"names":[],"mappings":"AAUA,OAAO,EAAC,kBAAkB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAA;AAGtE,eAAO,MAAM,sBAAsB,SAC3B;IACJ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,aACU,kBAAkB,8BAmB9B,CAAA;AAED,eAAO,MAAM,eAAe,SACpB;IACJ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,aACU,kBAAkB;;
|
|
1
|
+
{"version":3,"file":"client-v2.d.ts","sourceRoot":"","sources":["../src/client-v2.ts"],"names":[],"mappings":"AAUA,OAAO,EAAC,kBAAkB,EAAE,gBAAgB,EAAC,MAAM,mBAAmB,CAAA;AAGtE,eAAO,MAAM,sBAAsB,SAC3B;IACJ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,aACU,kBAAkB,8BAmB9B,CAAA;AAED,eAAO,MAAM,eAAe,SACpB;IACJ,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,aACU,kBAAkB;;IA4B3B;;;;;;OAMG;;gBACqC,MAAM;cAAQ,MAAM;;IAW5D;;;;;;;;;;;OAWG;;gBAQO,MAAM;cACR,MAAM;mBACD,MAAM;;;;;QAmBjB;;;;WAIG;;;;;;EAkBR,CAAA"}
|
package/lib/client-v2.js
CHANGED
|
@@ -4,7 +4,7 @@ import deleteCmd from './commands-v2/delete.js';
|
|
|
4
4
|
import deployCmd from './commands-v2/deploy.js';
|
|
5
5
|
import listEndpointsCmd from './commands-v2/list.js';
|
|
6
6
|
import { generateConfigurationPayload, generateSchemaFilesPayload, } from './shared/payloads.js';
|
|
7
|
-
import { parseJwt } from './shared/validation.js';
|
|
7
|
+
import { isValidJWT, parseJwt } from './shared/validation.js';
|
|
8
8
|
export const ensureValidCredentials = async (auth, sdkConfig) => {
|
|
9
9
|
let credentials;
|
|
10
10
|
// use the provided account to initialize an SDK client instance
|
|
@@ -24,13 +24,19 @@ export const createSdkClient = async (auth, sdkConfig) => {
|
|
|
24
24
|
let credentials;
|
|
25
25
|
if (auth?.accessToken) {
|
|
26
26
|
const token = auth.accessToken;
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
const isValid = await isValidJWT(token);
|
|
28
|
+
if (isValid) {
|
|
29
|
+
const parsedJWT = await parseJwt(token);
|
|
30
|
+
credentials = {
|
|
31
|
+
instanceId: parsedJWT.instanceId,
|
|
32
|
+
ownerEmail: parsedJWT.email,
|
|
33
|
+
accessToken: token,
|
|
34
|
+
deploymentType: auth.deploymentType,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
throw new Error('JWT token is expired. Please login again.');
|
|
39
|
+
}
|
|
34
40
|
}
|
|
35
41
|
else {
|
|
36
42
|
credentials = await ensureValidCredentials(auth, sdkConfig);
|
package/lib/client-v2.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client-v2.js","sourceRoot":"","sources":["../src/client-v2.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC,OAAO,UAAU,MAAM,0BAA0B,CAAA;AACjD,OAAO,SAAS,MAAM,yBAAyB,CAAA;AAC/C,OAAO,SAAS,MAAM,yBAAyB,CAAA;AAC/C,OAAO,gBAAgB,MAAM,uBAAuB,CAAA;AACpD,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAC,QAAQ,EAAC,MAAM,wBAAwB,CAAA;
|
|
1
|
+
{"version":3,"file":"client-v2.js","sourceRoot":"","sources":["../src/client-v2.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export default async ({ account, adminKey, accessToken, deploymentType, folder,
|
|
|
7
7
|
adminKey,
|
|
8
8
|
accessToken,
|
|
9
9
|
deploymentType,
|
|
10
|
-
query: `mutation DeleteEndpoint($a: String
|
|
10
|
+
query: `mutation DeleteEndpoint($a: String, $dt: String!, $f: String!, $e: String!, $ak: String) {
|
|
11
11
|
removeEndpoint(
|
|
12
12
|
account: $a
|
|
13
13
|
deploymentType: $dt
|
|
@@ -8,7 +8,7 @@ export default async ({ account, deploymentType, folderName, endpointName, publi
|
|
|
8
8
|
accessToken,
|
|
9
9
|
query: /* GraphQL */ `
|
|
10
10
|
mutation CreateEndpoint(
|
|
11
|
-
$account: String
|
|
11
|
+
$account: String
|
|
12
12
|
$deploymentType: String!
|
|
13
13
|
$folderName: String!
|
|
14
14
|
$endpointName: String!
|
|
@@ -16,7 +16,7 @@ export default async ({ account, deploymentType, folderName, endpointName, publi
|
|
|
16
16
|
$endpointType: String!
|
|
17
17
|
$schemaFiles: SchemaFilesInput!
|
|
18
18
|
$configuration: Configuration
|
|
19
|
-
$adminKey: String
|
|
19
|
+
$adminKey: String
|
|
20
20
|
) {
|
|
21
21
|
endpoints: addEndpoint(
|
|
22
22
|
account: $account
|
package/lib/commands-v2/list.js
CHANGED
|
@@ -25,9 +25,9 @@ export default async ({ account, deploymentType, adminKey, accessToken, sdkConfi
|
|
|
25
25
|
accessToken,
|
|
26
26
|
query: /* GraphQL */ `
|
|
27
27
|
query ListEndpoints(
|
|
28
|
-
$account: String
|
|
28
|
+
$account: String
|
|
29
29
|
$deploymentType: String!
|
|
30
|
-
$adminKey: String
|
|
30
|
+
$adminKey: String
|
|
31
31
|
$filter: EndpointFilter
|
|
32
32
|
) {
|
|
33
33
|
endpoints: endpointsForAccount(
|
|
@@ -4,4 +4,6 @@ export declare const parseJwt: (token: string) => Promise<{
|
|
|
4
4
|
instanceId?: string;
|
|
5
5
|
email?: string;
|
|
6
6
|
}>;
|
|
7
|
+
/** Validates a JSON Web Token (JWT) by verifying its structure and expiration. */
|
|
8
|
+
export declare const isValidJWT: (token: string) => Promise<boolean>;
|
|
7
9
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/shared/validation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/shared/validation.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,wBAAwB,SAAgB,MAAM,GAAG,SAAS,kBA0BtE,CAAA;AAGD,eAAO,MAAM,cAAc,cAAqB,MAAM,GAAG,SAAS,kBAcjE,CAAA;AAGD,eAAO,MAAM,QAAQ,UACZ,MAAM,KACZ,QAAQ;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAC,CA6B/C,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,UAAU,UAAiB,MAAM,KAAG,QAAQ,OAAO,CAU/D,CAAA"}
|
package/lib/shared/validation.js
CHANGED
|
@@ -3,6 +3,7 @@ import debug from 'debug';
|
|
|
3
3
|
import fs from 'node:fs';
|
|
4
4
|
import glob from 'glob';
|
|
5
5
|
import yaml from 'yaml';
|
|
6
|
+
import { decodeJwt } from 'jose';
|
|
6
7
|
// Validate the Configurationset file
|
|
7
8
|
export const validateConfigurationset = async (file) => {
|
|
8
9
|
if (!file) {
|
|
@@ -66,4 +67,18 @@ export const parseJwt = async (token) => {
|
|
|
66
67
|
return {};
|
|
67
68
|
}
|
|
68
69
|
};
|
|
70
|
+
/** Validates a JSON Web Token (JWT) by verifying its structure and expiration. */
|
|
71
|
+
export const isValidJWT = async (token) => {
|
|
72
|
+
try {
|
|
73
|
+
const payload = decodeJwt(token);
|
|
74
|
+
if (!payload.exp)
|
|
75
|
+
return false;
|
|
76
|
+
const currentTime = Math.floor(Date.now() / 1000);
|
|
77
|
+
return payload.exp > currentTime;
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
console.error('Failed to validate JWT token:', error);
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
69
84
|
//# sourceMappingURL=validation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/shared/validation.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,SAAS,CAAA;AACxB,OAAO,IAAI,MAAM,MAAM,CAAA;AACvB,OAAO,IAAI,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/shared/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stepzen/sdk",
|
|
3
|
-
"version": "0.51.0-experimental.
|
|
3
|
+
"version": "0.51.0-experimental.fcac1cd",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Darren Waddell <darren@stepzen.com>",
|
|
6
6
|
"homepage": "https://stepzen.com",
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
"posttest": "prettier . --check"
|
|
23
23
|
},
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@stepzen/fetch": "0.51.0-experimental.
|
|
26
|
-
"@stepzen/transpiler": "0.51.0-experimental.
|
|
25
|
+
"@stepzen/fetch": "0.51.0-experimental.fcac1cd",
|
|
26
|
+
"@stepzen/transpiler": "0.51.0-experimental.fcac1cd",
|
|
27
27
|
"archiver": "^5.3.0",
|
|
28
28
|
"debug": "^4.3.4",
|
|
29
29
|
"dotenv": "^16.0.3",
|
|
@@ -32,6 +32,7 @@
|
|
|
32
32
|
"glob": "^7.2.3",
|
|
33
33
|
"graphql": "^16.8.1",
|
|
34
34
|
"is-wsl": "^2.2.0",
|
|
35
|
+
"jose": "^6.0.11",
|
|
35
36
|
"yaml": "^2.2.2"
|
|
36
37
|
},
|
|
37
38
|
"devDependencies": {
|
|
@@ -57,5 +58,5 @@
|
|
|
57
58
|
"--comment--": "workaround for CVE-2024-21538",
|
|
58
59
|
"cross-spawn": "^7.0.6"
|
|
59
60
|
},
|
|
60
|
-
"gitHead": "
|
|
61
|
+
"gitHead": "fcac1cdc8681490f72da3d8383f0035faeb21135"
|
|
61
62
|
}
|
package/src/client-v2.ts
CHANGED
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
generateSchemaFilesPayload,
|
|
10
10
|
} from './shared/payloads.js'
|
|
11
11
|
import {SDKConfigurationV2, StepZenAccountV2} from './shared/types.js'
|
|
12
|
-
import {parseJwt} from './shared/validation.js'
|
|
12
|
+
import {isValidJWT, parseJwt} from './shared/validation.js'
|
|
13
13
|
|
|
14
14
|
export const ensureValidCredentials = async (
|
|
15
15
|
auth: {
|
|
@@ -51,12 +51,18 @@ export const createSdkClient = async (
|
|
|
51
51
|
|
|
52
52
|
if (auth?.accessToken) {
|
|
53
53
|
const token: string = auth.accessToken
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
54
|
+
const isValid = await isValidJWT(token)
|
|
55
|
+
if (isValid) {
|
|
56
|
+
const parsedJWT = await parseJwt(token)
|
|
57
|
+
|
|
58
|
+
credentials = {
|
|
59
|
+
instanceId: parsedJWT.instanceId,
|
|
60
|
+
ownerEmail: parsedJWT.email,
|
|
61
|
+
accessToken: token,
|
|
62
|
+
deploymentType: auth.deploymentType!,
|
|
63
|
+
}
|
|
64
|
+
} else {
|
|
65
|
+
throw new Error('JWT token is expired. Please login again.')
|
|
60
66
|
}
|
|
61
67
|
} else {
|
|
62
68
|
credentials = await ensureValidCredentials(auth, sdkConfig)
|
|
@@ -37,7 +37,7 @@ export default async ({
|
|
|
37
37
|
adminKey,
|
|
38
38
|
accessToken,
|
|
39
39
|
deploymentType,
|
|
40
|
-
query: `mutation DeleteEndpoint($a: String
|
|
40
|
+
query: `mutation DeleteEndpoint($a: String, $dt: String!, $f: String!, $e: String!, $ak: String) {
|
|
41
41
|
removeEndpoint(
|
|
42
42
|
account: $a
|
|
43
43
|
deploymentType: $dt
|
|
@@ -52,7 +52,7 @@ export default async ({
|
|
|
52
52
|
accessToken,
|
|
53
53
|
query: /* GraphQL */ `
|
|
54
54
|
mutation CreateEndpoint(
|
|
55
|
-
$account: String
|
|
55
|
+
$account: String
|
|
56
56
|
$deploymentType: String!
|
|
57
57
|
$folderName: String!
|
|
58
58
|
$endpointName: String!
|
|
@@ -60,7 +60,7 @@ export default async ({
|
|
|
60
60
|
$endpointType: String!
|
|
61
61
|
$schemaFiles: SchemaFilesInput!
|
|
62
62
|
$configuration: Configuration
|
|
63
|
-
$adminKey: String
|
|
63
|
+
$adminKey: String
|
|
64
64
|
) {
|
|
65
65
|
endpoints: addEndpoint(
|
|
66
66
|
account: $account
|
package/src/commands-v2/list.ts
CHANGED
|
@@ -61,9 +61,9 @@ export default async ({
|
|
|
61
61
|
accessToken,
|
|
62
62
|
query: /* GraphQL */ `
|
|
63
63
|
query ListEndpoints(
|
|
64
|
-
$account: String
|
|
64
|
+
$account: String
|
|
65
65
|
$deploymentType: String!
|
|
66
|
-
$adminKey: String
|
|
66
|
+
$adminKey: String
|
|
67
67
|
$filter: EndpointFilter
|
|
68
68
|
) {
|
|
69
69
|
endpoints: endpointsForAccount(
|
package/src/shared/validation.ts
CHANGED
|
@@ -4,6 +4,7 @@ import debug from 'debug'
|
|
|
4
4
|
import fs from 'node:fs'
|
|
5
5
|
import glob from 'glob'
|
|
6
6
|
import yaml from 'yaml'
|
|
7
|
+
import {decodeJwt} from 'jose'
|
|
7
8
|
|
|
8
9
|
// Validate the Configurationset file
|
|
9
10
|
export const validateConfigurationset = async (file: string | undefined) => {
|
|
@@ -84,3 +85,16 @@ export const parseJwt = async (
|
|
|
84
85
|
return {}
|
|
85
86
|
}
|
|
86
87
|
}
|
|
88
|
+
|
|
89
|
+
/** Validates a JSON Web Token (JWT) by verifying its structure and expiration. */
|
|
90
|
+
export const isValidJWT = async (token: string): Promise<boolean> => {
|
|
91
|
+
try {
|
|
92
|
+
const payload = decodeJwt(token)
|
|
93
|
+
if (!payload.exp) return false
|
|
94
|
+
const currentTime = Math.floor(Date.now() / 1000)
|
|
95
|
+
return payload.exp > currentTime
|
|
96
|
+
} catch (error) {
|
|
97
|
+
console.error('Failed to validate JWT token:', error)
|
|
98
|
+
return false
|
|
99
|
+
}
|
|
100
|
+
}
|