Skip to content

Commit

Permalink
feat: provide plain resource model types (PL-000) (#15)
Browse files Browse the repository at this point in the history
* feat: provide plain resource model types (PL-000)

* chore: update dependencies

* fix: update resource models

* fix: deep model types
  • Loading branch information
trs authored Mar 26, 2024
1 parent 8aa1615 commit 8437a2f
Show file tree
Hide file tree
Showing 10 changed files with 925 additions and 8 deletions.
541 changes: 541 additions & 0 deletions .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs

Large diffs are not rendered by default.

7 changes: 6 additions & 1 deletion .yarnrc.yml
Original file line number Diff line number Diff line change
@@ -1,2 +1,7 @@
yarnPath: .yarn/releases/yarn-3.4.1.cjs
nodeLinker: node-modules

plugins:
- path: .yarn/plugins/@yarnpkg/plugin-interactive-tools.cjs
spec: "@yarnpkg/plugin-interactive-tools"

yarnPath: .yarn/releases/yarn-3.4.1.cjs
7 changes: 6 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@
"types": "./build/types/main.d.ts",
"import": "./build/esm/main.js",
"default": "./build/cjs/main.js"
},
"./models": {
"types": "./build/types/models/mod.d.ts",
"import": "./build/esm/models/mod.js",
"default": "./build/cjs/models/mod.js"
}
},
"main": "build/cjs/main.js",
Expand Down Expand Up @@ -45,7 +50,7 @@
]
},
"dependencies": {
"chargebee-typescript": "2.26.0"
"chargebee-typescript": "2.30.0"
},
"devDependencies": {
"@commitlint/cli": "^17.6.7",
Expand Down
5 changes: 4 additions & 1 deletion src/chargebee-resource-wrapper.class.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import { CouponSetResource } from "./resources/coupon-set-resource";
import { CreditNoteResource } from "./resources/credit-note-resource";
import { CustomerResource } from "./resources/customer-resource";
import { DifferentialPriceResource } from "./resources/differential-price-resource";
import { EntitlementResource } from "./resources/entitlement-resource";
import { EntitlementOverrideResource } from "./resources/entitlement-override-resource";
import { EstimateResource } from "./resources/estimate-resource";
import { ExportResource } from "./resources/export-resource";
Expand Down Expand Up @@ -41,7 +42,8 @@ import { UsageResource } from "./resources/usage-resource";
import { VirtualBankAccountResource } from "./resources/virtual-bank-account-resource";
import { SubscriptionResource } from "./resources/subscription-resource";
import { DownloadResource } from "./resources/download.resource";
import { ChargebeeModuleOptions } from "./chargebee.interface";

import type { ChargebeeModuleOptions } from "./chargebee.interface";

export class ChargebeeResourceWrapper {
constructor(private readonly options: ChargebeeModuleOptions) {}
Expand Down Expand Up @@ -85,6 +87,7 @@ export class ChargebeeResourceWrapper {
itemEntitlement = new ItemEntitlementResource(this.options);
inAppSubscription = new InAppSubscriptionResource(this.options);
nonSubscription = new NonSubscriptionResource(this.options);
entitlement = new EntitlementResource(this.options);
entitlementOverride = new EntitlementOverrideResource(this.options);
purchase = new PurchaseResource(this.options);
paymentVoucher = new PaymentVoucherResource(this.options);
Expand Down
1 change: 1 addition & 0 deletions src/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ export * from "./chargebee.interface";
export * from "./chargebee.module";
export * from "./chargebee.module-definition";
export * from "./chargebee.service";
export * as Models from "./models/mod";
1 change: 1 addition & 0 deletions src/models/mod.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from "./resource-models";
20 changes: 20 additions & 0 deletions src/models/resource-model.type.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
import type { Model } from "chargebee-typescript/lib/resources/model";

type FilterModelKeys<T extends Model> = {
[K in keyof T]: K extends keyof Model ? never : K;
}[keyof T];

/**
* Extracts the properties from a Chargebee resource class.
*/
export type ResourceModelType<TResource extends Model> = {
[K in FilterModelKeys<TResource>]: TResource[K] extends (
...args: unknown[]
) => unknown
? never
: TResource[K] extends Model
? ResourceModelType<TResource[K]>
: TResource[K] extends Array<Model>
? Array<ResourceModelType<TResource[K][0]>>
: TResource[K];
};
331 changes: 331 additions & 0 deletions src/models/resource-models.ts

Large diffs are not rendered by default.

10 changes: 10 additions & 0 deletions src/resources/entitlement-resource.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { ChargebeeResource } from "../chargebee-resource.class";
export class EntitlementResource extends ChargebeeResource {
public readonly create = super.request("entitlement", "create", {
entitlement: { optional: false },
});

public readonly list = super.listRequest("entitlement", "list", {
entitlement: { optional: false },
});
}
10 changes: 5 additions & 5 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3150,12 +3150,12 @@ __metadata:
languageName: node
linkType: hard

"chargebee-typescript@npm:2.26.0":
version: 2.26.0
resolution: "chargebee-typescript@npm:2.26.0"
"chargebee-typescript@npm:2.30.0":
version: 2.30.0
resolution: "chargebee-typescript@npm:2.30.0"
dependencies:
q: ">=1.0.1"
checksum: e9647776d864f57c2615448467249345459aeebc1e002749a7f7720d15a726ebe1f9d25804db8c5c86c79526b67ff6c56bda6b8255721f7b91e04cee5d3ebc3c
checksum: ebc3b8b52e9928245fe9c6f29f852b1c0b782476e3b3c39990394396e7564a1fe1acc3faddb52703b6c6203050b532800cd4aa3f3596403741c535213d3cbaff
languageName: node
linkType: hard

Expand Down Expand Up @@ -7488,7 +7488,7 @@ __metadata:
"@types/supertest": ^2.0.12
"@typescript-eslint/eslint-plugin": ^6.2.1
"@typescript-eslint/parser": ^6.2.1
chargebee-typescript: 2.26.0
chargebee-typescript: 2.30.0
eslint: ^8.46.0
eslint-config-prettier: ^8.9.0
eslint-plugin-prettier: ^5.0.0
Expand Down

0 comments on commit 8437a2f

Please sign in to comment.