@qelos/sdk 4.2.1 → 4.3.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.
- package/.gitignore +4 -0
- package/.npmignore +3 -0
- package/dist/administrator/payments.d.ts +12 -0
- package/dist/administrator/payments.js +9 -0
- package/dist/administrator/payments.js.map +1 -1
- package/package.json +10 -10
- package/src/administrator/payments.ts +16 -0
- package/test/payments.test.ts +85 -0
package/.gitignore
ADDED
package/.npmignore
ADDED
|
@@ -64,6 +64,18 @@ export default class QlPaymentsAdmin extends BaseSDK {
|
|
|
64
64
|
status?: SubscriptionStatus;
|
|
65
65
|
}): Promise<ISubscription[]>;
|
|
66
66
|
getSubscription(subscriptionId: string): Promise<ISubscription>;
|
|
67
|
+
/**
|
|
68
|
+
* Lists subscriptions for workspaces, with the related `Plan` populated in
|
|
69
|
+
* place of `planId`. Useful for an admin panel showing which plan each
|
|
70
|
+
* workspace is attached to.
|
|
71
|
+
*/
|
|
72
|
+
getWorkspaceSubscriptions(query?: {
|
|
73
|
+
billableEntityId?: string;
|
|
74
|
+
planId?: string;
|
|
75
|
+
status?: SubscriptionStatus;
|
|
76
|
+
}): Promise<(Omit<ISubscription, "planId"> & {
|
|
77
|
+
planId: IPlan;
|
|
78
|
+
})[]>;
|
|
67
79
|
/**
|
|
68
80
|
* Creates a pending subscription on behalf of any billable entity. Admins can
|
|
69
81
|
* also set `dynamicAmount` here for dynamic plans, making the subscription
|
|
@@ -49,6 +49,15 @@ export default class QlPaymentsAdmin extends BaseSDK {
|
|
|
49
49
|
getSubscription(subscriptionId) {
|
|
50
50
|
return this.callJsonApi(`/api/subscriptions/${subscriptionId}`);
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Lists subscriptions for workspaces, with the related `Plan` populated in
|
|
54
|
+
* place of `planId`. Useful for an admin panel showing which plan each
|
|
55
|
+
* workspace is attached to.
|
|
56
|
+
*/
|
|
57
|
+
getWorkspaceSubscriptions(query) {
|
|
58
|
+
const qs = query ? `?${new URLSearchParams(query)}` : '';
|
|
59
|
+
return this.callJsonApi(`/api/subscriptions/workspaces${qs}`);
|
|
60
|
+
}
|
|
52
61
|
/**
|
|
53
62
|
* Creates a pending subscription on behalf of any billable entity. Admins can
|
|
54
63
|
* also set `dynamicAmount` here for dynamic plans, making the subscription
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payments.js","sourceRoot":"","sources":["../../src/administrator/payments.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"payments.js","sourceRoot":"","sources":["../../src/administrator/payments.ts"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,aAAa,CAAC;AAqDlC,MAAM,CAAC,OAAO,OAAO,eAAgB,SAAQ,OAAO;IAC9B;IAApB,YAAoB,OAAwB;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAC;QADG,YAAO,GAAP,OAAO,CAAiB;IAE5C,CAAC;IAED,gBAAgB;IAEhB,QAAQ,CAAC,KAA8B;QACrC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,KAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,WAAW,CAAU,aAAa,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,CAAC,MAAc;QACpB,OAAO,IAAI,CAAC,WAAW,CAAQ,cAAc,MAAM,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,UAAU,CAAC,IAA+C;QACxD,OAAO,IAAI,CAAC,WAAW,CAAQ,YAAY,EAAE;YAC3C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,MAAc,EAAE,IAAoB;QAC7C,OAAO,IAAI,CAAC,WAAW,CAAQ,cAAc,MAAM,EAAE,EAAE;YACrD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,UAAU,CAAC,MAAc;QACvB,OAAO,IAAI,CAAC,WAAW,CAAQ,cAAc,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED;;;OAGG;IACH,QAAQ,CAAC,MAA4B;QACnC,OAAO,IAAI,CAAC,WAAW,CAAwB,eAAe,EAAE;YAC9D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;SAC7B,CAAC,CAAC;IACL,CAAC;IAED,wBAAwB;IAExB,gBAAgB,CAAC,KAIhB;QACC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,KAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,WAAW,CAAkB,qBAAqB,EAAE,EAAE,CAAC,CAAC;IACtE,CAAC;IAED,eAAe,CAAC,cAAsB;QACpC,OAAO,IAAI,CAAC,WAAW,CAAgB,sBAAsB,cAAc,EAAE,CAAC,CAAC;IACjF,CAAC;IAED;;;;OAIG;IACH,yBAAyB,CAAC,KAIzB;QACC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,KAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,WAAW,CACrB,gCAAgC,EAAE,EAAE,CACrC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,IAA4B;QAC7C,OAAO,IAAI,CAAC,WAAW,CAAgB,oBAAoB,EAAE;YAC3D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,CAAC,cAAsB;QACvC,OAAO,IAAI,CAAC,WAAW,CACrB,sBAAsB,cAAc,SAAS,EAC7C,EAAE,MAAM,EAAE,KAAK,EAAE,CAClB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,4BAA4B,CAAC,cAAsB,EAAE,MAAc;QACjE,OAAO,IAAI,CAAC,WAAW,CACrB,sBAAsB,cAAc,iBAAiB,EACrD;YACE,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;SACjC,CACF,CAAC;IACJ,CAAC;IAED,mBAAmB;IAEnB,WAAW,CAAC,KAIX;QACC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,KAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,WAAW,CAAa,gBAAgB,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,UAAU,CAAC,SAAiB;QAC1B,OAAO,IAAI,CAAC,WAAW,CAAW,iBAAiB,SAAS,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,kBAAkB;IAElB,UAAU,CAAC,KAA8B;QACvC,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,KAAY,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,WAAW,CAAY,eAAe,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,SAAS,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,WAAW,CAAU,gBAAgB,QAAQ,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,YAAY,CAAC,IAAwE;QACnF,OAAO,IAAI,CAAC,WAAW,CAAU,cAAc,EAAE;YAC/C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,QAAgB,EAAE,IAAsB;QACnD,OAAO,IAAI,CAAC,WAAW,CAAU,gBAAgB,QAAQ,EAAE,EAAE;YAC3D,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,YAAY,CAAC,QAAgB;QAC3B,OAAO,IAAI,CAAC,WAAW,CAAU,gBAAgB,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,gEAAgE;IAChE,wBAAwB;QACtB,OAAO,IAAI,CAAC,WAAW,CAA8B,6BAA6B,CAAC,CAAC;IACtF,CAAC;IAED,4FAA4F;IAC5F,2BAA2B,CAAC,QAAiD;QAC3E,OAAO,IAAI,CAAC,WAAW,CAA8B,6BAA6B,EAAE;YAClF,MAAM,EAAE,KAAK;YACb,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC;SACnC,CAAC,CAAC;IACL,CAAC;CACF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qelos/sdk",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.3.0",
|
|
4
4
|
"description": "SDK for Qelos API",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -96,23 +96,23 @@
|
|
|
96
96
|
},
|
|
97
97
|
"./package.json": "./package.json"
|
|
98
98
|
},
|
|
99
|
-
"scripts": {
|
|
100
|
-
"test": "node --import tsx --test **/**/*.test.ts",
|
|
101
|
-
"type-check": "tsc --noEmit",
|
|
102
|
-
"build": "npm run type-check && tsc",
|
|
103
|
-
"pre-build": "pnpm run type-check && tsc"
|
|
104
|
-
},
|
|
105
99
|
"author": "David Meir-Levy <davidmeirlevy@gmail.com>",
|
|
106
100
|
"license": "MIT",
|
|
107
101
|
"publishConfig": {
|
|
108
102
|
"access": "public"
|
|
109
103
|
},
|
|
110
104
|
"dependencies": {
|
|
111
|
-
"@qelos/global-types": "
|
|
105
|
+
"@qelos/global-types": "^4.3.0"
|
|
112
106
|
},
|
|
113
107
|
"devDependencies": {
|
|
114
108
|
"tsx": "^4.21.0",
|
|
115
109
|
"typescript": "^4.9.5"
|
|
116
110
|
},
|
|
117
|
-
"gitHead": "13468bc51557291935b96b1aeaa837b8b52861e8"
|
|
118
|
-
|
|
111
|
+
"gitHead": "13468bc51557291935b96b1aeaa837b8b52861e8",
|
|
112
|
+
"scripts": {
|
|
113
|
+
"test": "node --import tsx --test **/**/*.test.ts",
|
|
114
|
+
"type-check": "tsc --noEmit",
|
|
115
|
+
"build": "npm run type-check && tsc",
|
|
116
|
+
"pre-build": "pnpm run type-check && tsc"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
@@ -115,6 +115,22 @@ export default class QlPaymentsAdmin extends BaseSDK {
|
|
|
115
115
|
return this.callJsonApi<ISubscription>(`/api/subscriptions/${subscriptionId}`);
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
+
/**
|
|
119
|
+
* Lists subscriptions for workspaces, with the related `Plan` populated in
|
|
120
|
+
* place of `planId`. Useful for an admin panel showing which plan each
|
|
121
|
+
* workspace is attached to.
|
|
122
|
+
*/
|
|
123
|
+
getWorkspaceSubscriptions(query?: {
|
|
124
|
+
billableEntityId?: string;
|
|
125
|
+
planId?: string;
|
|
126
|
+
status?: SubscriptionStatus;
|
|
127
|
+
}) {
|
|
128
|
+
const qs = query ? `?${new URLSearchParams(query as any)}` : '';
|
|
129
|
+
return this.callJsonApi<(Omit<ISubscription, 'planId'> & { planId: IPlan })[]>(
|
|
130
|
+
`/api/subscriptions/workspaces${qs}`,
|
|
131
|
+
);
|
|
132
|
+
}
|
|
133
|
+
|
|
118
134
|
/**
|
|
119
135
|
* Creates a pending subscription on behalf of any billable entity. Admins can
|
|
120
136
|
* also set `dynamicAmount` here for dynamic plans, making the subscription
|
package/test/payments.test.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as assert from 'node:assert/strict';
|
|
2
2
|
import { test } from 'node:test';
|
|
3
3
|
import QlPayments from '../src/payments';
|
|
4
|
+
import QlPaymentsAdmin from '../src/administrator/payments';
|
|
4
5
|
import { QelosSDKOptions } from '../src/types';
|
|
5
6
|
|
|
6
7
|
function jsonResponse(body: unknown) {
|
|
@@ -63,3 +64,87 @@ test('QlPayments', async (t) => {
|
|
|
63
64
|
assert.equal('customer' in body, false);
|
|
64
65
|
});
|
|
65
66
|
});
|
|
67
|
+
|
|
68
|
+
test('QlPaymentsAdmin', async (t) => {
|
|
69
|
+
await t.test('createCoupon passes benefitDurationUnit/benefitDurationValue through to the POST body', async () => {
|
|
70
|
+
let init: RequestInit | undefined;
|
|
71
|
+
const options: QelosSDKOptions = {
|
|
72
|
+
appUrl: 'http://localhost:3000',
|
|
73
|
+
fetch: async (_url, requestInit) => {
|
|
74
|
+
init = requestInit;
|
|
75
|
+
return jsonResponse({ _id: 'coupon-1', code: 'FREEMONTH' });
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
const paymentsAdmin = new QlPaymentsAdmin(options);
|
|
79
|
+
await paymentsAdmin.createCoupon({
|
|
80
|
+
code: 'FREEMONTH',
|
|
81
|
+
discountType: 'percentage',
|
|
82
|
+
discountValue: 100,
|
|
83
|
+
currentRedemptions: 0,
|
|
84
|
+
applicablePlanIds: [],
|
|
85
|
+
isActive: true,
|
|
86
|
+
benefitDurationUnit: 'months',
|
|
87
|
+
benefitDurationValue: 1,
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
assert.equal(init?.method, 'post');
|
|
91
|
+
const body = JSON.parse(init?.body as string);
|
|
92
|
+
assert.equal(body.benefitDurationUnit, 'months');
|
|
93
|
+
assert.equal(body.benefitDurationValue, 1);
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
await t.test('updateCoupon passes benefitDurationUnit/benefitDurationValue through to the PUT body', async () => {
|
|
97
|
+
let init: RequestInit | undefined;
|
|
98
|
+
const options: QelosSDKOptions = {
|
|
99
|
+
appUrl: 'http://localhost:3000',
|
|
100
|
+
fetch: async (_url, requestInit) => {
|
|
101
|
+
init = requestInit;
|
|
102
|
+
return jsonResponse({ _id: 'coupon-1', code: 'FREEMONTH' });
|
|
103
|
+
},
|
|
104
|
+
};
|
|
105
|
+
const paymentsAdmin = new QlPaymentsAdmin(options);
|
|
106
|
+
await paymentsAdmin.updateCoupon('coupon-1', {
|
|
107
|
+
benefitDurationUnit: 'days',
|
|
108
|
+
benefitDurationValue: 14,
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
assert.equal(init?.method, 'put');
|
|
112
|
+
const body = JSON.parse(init?.body as string);
|
|
113
|
+
assert.equal(body.benefitDurationUnit, 'days');
|
|
114
|
+
assert.equal(body.benefitDurationValue, 14);
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
await t.test('getWorkspaceSubscriptions calls the workspace-filtered endpoint with the query string', async () => {
|
|
118
|
+
let url: string | undefined;
|
|
119
|
+
const options: QelosSDKOptions = {
|
|
120
|
+
appUrl: 'http://localhost:3000',
|
|
121
|
+
fetch: async (requestUrl) => {
|
|
122
|
+
url = requestUrl.toString();
|
|
123
|
+
return jsonResponse([
|
|
124
|
+
{ _id: 'sub-1', billableEntityType: 'workspace', billableEntityId: 'ws-1', planId: { _id: 'plan-1', name: 'Pro' } },
|
|
125
|
+
]);
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
const paymentsAdmin = new QlPaymentsAdmin(options);
|
|
129
|
+
const subscriptions = await paymentsAdmin.getWorkspaceSubscriptions({ status: 'active' });
|
|
130
|
+
|
|
131
|
+
assert.equal(url, 'http://localhost:3000/api/subscriptions/workspaces?status=active');
|
|
132
|
+
assert.equal(subscriptions[0].billableEntityId, 'ws-1');
|
|
133
|
+
assert.equal((subscriptions[0].planId as any).name, 'Pro');
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
await t.test('getWorkspaceSubscriptions omits the query string when no query is provided', async () => {
|
|
137
|
+
let url: string | undefined;
|
|
138
|
+
const options: QelosSDKOptions = {
|
|
139
|
+
appUrl: 'http://localhost:3000',
|
|
140
|
+
fetch: async (requestUrl) => {
|
|
141
|
+
url = requestUrl.toString();
|
|
142
|
+
return jsonResponse([]);
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
const paymentsAdmin = new QlPaymentsAdmin(options);
|
|
146
|
+
await paymentsAdmin.getWorkspaceSubscriptions();
|
|
147
|
+
|
|
148
|
+
assert.equal(url, 'http://localhost:3000/api/subscriptions/workspaces');
|
|
149
|
+
});
|
|
150
|
+
});
|