You're Invited:Meet the Socket Team at RSAC and BSidesSF 2026, March 23–26.RSVP
Socket
Book a DemoSign in
Socket

@mittwald/api-models

Package Overview
Dependencies
Maintainers
4
Versions
441
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@mittwald/api-models - npm Package Compare versions

Comparing version
0.0.0-development-e87cbeb-20251001
to
0.0.0-development-e8d9270-20260119
+39
dist/esm/marketplace/Contributor/behaviors/api.js
import { extractTotalCountHeader, assertStatus, } from "@mittwald/api-client";
export const apiContributorBehaviors = (client) => ({
find: async (contributorId) => {
const response = await client.marketplace.extensionGetContributor({
contributorId,
});
if (response.status === 200) {
return response.data;
}
assertStatus(response, 404);
},
list: async (query) => {
const response = await client.marketplace.extensionListContributors({
queryParameters: query,
});
assertStatus(response, 200);
return {
items: response.data,
totalCount: extractTotalCountHeader(response),
};
},
listIncomingInvoices: async (contributorId, queryParameters) => {
const response = await client.marketplace.contributorListIncomingInvoices({
contributorId,
queryParameters,
});
if (response.status === 200) {
return {
items: response.data,
totalCount: extractTotalCountHeader(response),
};
}
assertStatus(response, 404);
return {
items: [],
totalCount: 0,
};
},
});
export * from "./api.js";
export * from "./types.js";
import { config } from "../../config/config.js";
import { classes } from "polytype";
import { DataModel } from "../../base/DataModel.js";
import assertObjectFound from "../../base/assertObjectFound.js";
import { ReferenceModel } from "../../base/ReferenceModel.js";
import { provideReact, } from "../../react/provideReact.js";
import { ListQueryModel } from "../../base/ListQueryModel.js";
import { ListDataModel } from "../../base/ListDataModel.js";
import { ContributorIncomingInvoiceListQuery } from "./ContributorIncomingInvoice.js";
export class Contributor extends ReferenceModel {
incomingInvoices;
constructor(id) {
super(id);
this.incomingInvoices = new ContributorIncomingInvoiceListQuery(this);
}
static ofId(id) {
return new Contributor(id);
}
static find = provideReact(async (id) => {
const data = await config.behaviors.contributor.find(id);
if (data !== undefined) {
return new ContributorDetailed(data);
}
});
static query(query = {}) {
return new ContributorListQuery(query);
}
static get = provideReact(async (id) => {
const contributor = await this.find(id);
assertObjectFound(contributor, this, id);
return contributor;
});
getDetailed = provideReact(() => Contributor.get(this.id), [this.id]);
findDetailed = provideReact(() => Contributor.find(this.id), [this.id]);
}
class ContributorCommon extends classes((DataModel), Contributor) {
constructor(data) {
super([data], [data.id]);
}
}
export class ContributorDetailed extends classes(ContributorCommon, (DataModel)) {
constructor(data) {
super([data], [data]);
}
}
export class ContributorListItem extends classes(ContributorCommon, (DataModel)) {
constructor(data) {
super([data], [data]);
}
}
export class ContributorListQuery extends ListQueryModel {
constructor(query = {}) {
super(query);
}
refine(query) {
return new ContributorListQuery({
...this.query,
...query,
});
}
execute = provideReact(async () => {
const { items, totalCount } = await config.behaviors.contributor.list({
limit: config.defaultPaginationLimit,
...this.query,
});
return new ContributorList(this.query, items.map((d) => new ContributorListItem(d)), totalCount);
}, [this.queryId]);
getTotalCount = provideReact(async () => {
const { totalCount } = await this.refine({ limit: 1 }).execute();
return totalCount;
}, [this.queryId]);
findOneAndOnly = provideReact(async () => {
const { items, totalCount } = await this.refine({ limit: 2 }).execute();
if (totalCount === 1) {
return items[0];
}
}, [this.queryId]);
}
export class ContributorList extends classes(ContributorListQuery, (ListDataModel)) {
constructor(query, contributors, totalCount) {
super([query], [contributors, totalCount]);
}
}
import { classes } from "polytype";
import { ListQueryModel } from "../../base/ListQueryModel.js";
import { Money } from "../../base/Money.js";
import { provideReact } from "../../react.js";
import { DateTime } from "luxon";
import { ListDataModel } from "../../base/ListDataModel.js";
import { DataModel } from "../../base/DataModel.js";
import { config } from "../../config/config.js";
export class ContributorIncomingInvoice extends DataModel {
contributor;
id;
pdfId;
invoiceNumber;
date;
totalNet;
totalGross;
constructor(contributor, data) {
super(data);
this.contributor = contributor;
this.id = data.id;
this.pdfId = data.pdfId;
this.invoiceNumber = data.invoiceNumber;
this.date = DateTime.fromISO(data.date);
this.totalNet = Money({ amount: data.totalNet, currency: "EUR" });
this.totalGross = Money({ amount: data.totalGross, currency: "EUR" });
}
}
export class ContributorIncomingInvoiceListQuery extends ListQueryModel {
contributor;
constructor(contributor, query = {}) {
super(query, { dependencies: [contributor.id] });
this.contributor = contributor;
}
refine(query) {
return new ContributorIncomingInvoiceListQuery(this.contributor, {
...this.query,
...query,
});
}
execute = provideReact(async () => {
const { items, totalCount } = await config.behaviors.contributor.listIncomingInvoices(this.contributor.id, this.query);
return new ContributorIncomingInvoicesList(this.contributor, this.query, items.map((i) => new ContributorIncomingInvoice(this.contributor, i)), totalCount);
}, [this.queryId]);
getTotalCount = provideReact(async () => {
const result = await this.refine({ limit: 1, skip: 0 }).execute();
return result.totalCount;
});
}
export class ContributorIncomingInvoicesList extends classes(ContributorIncomingInvoiceListQuery, (ListDataModel)) {
constructor(contributor, query, invoices, totalCount) {
super([contributor, query], [invoices, totalCount]);
}
}
export * from "./Contributor.js";
export * from "./ContributorIncomingInvoice.js";
export * from "./types.js";
export * from "./Contributor/index.js";
import type { ContributorBehaviors } from "./types.js";
import { MittwaldAPIV2Client } from "@mittwald/api-client";
export declare const apiContributorBehaviors: (client: MittwaldAPIV2Client) => ContributorBehaviors;
export * from "./api.js";
export * from "./types.js";
import type { QueryResponseData } from "../../../base/types.js";
import type { ContributorData, ContributorIncomingInvoiceData, ContributorListIncomingInvoiceQueryData, ContributorListItemData, ContributorListQueryData } from "../types.js";
export interface ContributorBehaviors {
find: (contributorId: string) => Promise<ContributorData | undefined>;
list: (query?: ContributorListQueryData) => Promise<QueryResponseData<ContributorListItemData>>;
listIncomingInvoices: (contributorId: string, queryParameters?: ContributorListIncomingInvoiceQueryData) => Promise<{
items: ContributorIncomingInvoiceData[];
totalCount: number;
}>;
}
import { DataModel } from "../../base/DataModel.js";
import { ReferenceModel } from "../../base/ReferenceModel.js";
import { AsyncResourceVariant } from "../../react/provideReact.js";
import { ListQueryModel } from "../../base/ListQueryModel.js";
import { ListDataModel } from "../../base/ListDataModel.js";
import { ContributorIncomingInvoiceListQuery } from "./ContributorIncomingInvoice.js";
import type { ContributorData, ContributorListItemData, ContributorListQueryData } from "./types.js";
export declare class Contributor extends ReferenceModel {
readonly incomingInvoices: ContributorIncomingInvoiceListQuery;
constructor(id: string);
static ofId(id: string): Contributor;
static find: AsyncResourceVariant<(id: string) => Promise<ContributorDetailed | undefined>>;
static query(query?: ContributorListQueryData): ContributorListQuery;
static get: AsyncResourceVariant<(id: string) => Promise<ContributorDetailed>>;
getDetailed: AsyncResourceVariant<() => Promise<ContributorDetailed>>;
findDetailed: AsyncResourceVariant<() => Promise<ContributorDetailed | undefined>>;
}
declare const ContributorCommon_base: import("polytype").Polytype.ClusteredConstructor<[{
new (data: import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.MarketplaceContributor): DataModel<import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.MarketplaceContributor>;
}, typeof Contributor]>;
declare class ContributorCommon extends ContributorCommon_base {
constructor(data: ContributorListItemData | ContributorData);
}
declare const ContributorDetailed_base: import("polytype").Polytype.ClusteredConstructor<[typeof ContributorCommon, {
new (data: import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.MarketplaceContributor): DataModel<import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.MarketplaceContributor>;
}]>;
export declare class ContributorDetailed extends ContributorDetailed_base {
constructor(data: ContributorData);
}
declare const ContributorListItem_base: import("polytype").Polytype.ClusteredConstructor<[typeof ContributorCommon, {
new (data: import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.MarketplaceContributor): DataModel<import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.MarketplaceContributor>;
}]>;
export declare class ContributorListItem extends ContributorListItem_base {
constructor(data: ContributorListItemData);
}
export declare class ContributorListQuery extends ListQueryModel<ContributorListQueryData> {
constructor(query?: ContributorListQueryData);
refine(query: ContributorListQueryData): ContributorListQuery;
execute: AsyncResourceVariant<() => Promise<ContributorList>>;
getTotalCount: AsyncResourceVariant<() => Promise<number>>;
findOneAndOnly: AsyncResourceVariant<() => Promise<ContributorListItem | undefined>>;
}
declare const ContributorList_base: import("polytype").Polytype.ClusteredConstructor<[typeof ContributorListQuery, {
new (items: ContributorListItem[], totalCount: number): ListDataModel<ContributorListItem>;
}]>;
export declare class ContributorList extends ContributorList_base {
constructor(query: ContributorListQueryData, contributors: ContributorListItem[], totalCount: number);
}
export {};
import { ListQueryModel } from "../../base/ListQueryModel.js";
import { Money } from "../../base/Money.js";
import { DateTime } from "luxon";
import type { Contributor } from "./Contributor.js";
import type { ContributorIncomingInvoiceData, ContributorListIncomingInvoiceQueryData } from "./types.js";
import { ListDataModel } from "../../base/ListDataModel.js";
import { DataModel } from "../../base/DataModel.js";
export declare class ContributorIncomingInvoice extends DataModel<ContributorIncomingInvoiceData> {
readonly contributor: Contributor;
readonly id: string;
readonly pdfId: string;
readonly invoiceNumber: string;
readonly date: DateTime;
readonly totalNet: Money;
readonly totalGross: Money;
constructor(contributor: Contributor, data: ContributorIncomingInvoiceData);
}
export declare class ContributorIncomingInvoiceListQuery extends ListQueryModel<ContributorListIncomingInvoiceQueryData> {
readonly contributor: Contributor;
constructor(contributor: Contributor, query?: ContributorListIncomingInvoiceQueryData);
refine(query: ContributorListIncomingInvoiceQueryData): ContributorIncomingInvoiceListQuery;
execute: import("../../react.js").AsyncResourceVariant<() => Promise<ContributorIncomingInvoicesList>>;
getTotalCount: import("../../react.js").AsyncResourceVariant<() => Promise<number>>;
}
declare const ContributorIncomingInvoicesList_base: import("polytype").Polytype.ClusteredConstructor<[typeof ContributorIncomingInvoiceListQuery, {
new (items: ContributorIncomingInvoice[], totalCount: number): ListDataModel<ContributorIncomingInvoice>;
}]>;
export declare class ContributorIncomingInvoicesList extends ContributorIncomingInvoicesList_base {
constructor(contributor: Contributor, query: ContributorListIncomingInvoiceQueryData, invoices: ContributorIncomingInvoice[], totalCount: number);
}
export {};
export * from "./Contributor.js";
export * from "./ContributorIncomingInvoice.js";
export * from "./types.js";
import type { MittwaldAPIV2 } from "@mittwald/api-client";
export type ContributorData = MittwaldAPIV2.Components.Schemas.MarketplaceContributor;
export type ContributorListItemData = MittwaldAPIV2.Operations.ExtensionListContributors.ResponseData[number];
export type ContributorListQueryData = MittwaldAPIV2.Paths.V2Contributors.Get.Parameters.Query;
export type ContributorIncomingInvoiceData = MittwaldAPIV2.Operations.ContributorListIncomingInvoices.ResponseData[number];
export type ContributorListIncomingInvoiceQueryData = MittwaldAPIV2.Paths.V2ContributorsContributorIdInvoicesIncoming.Get.Parameters.Query;
export * from "./Contributor/index.js";
+2
-0

@@ -12,2 +12,3 @@ import { MittwaldAPIV2Client } from "@mittwald/api-client";

import { apiContractItemBehaviors } from "../../contract/ContractItem/behaviors/index.js";
import { apiContributorBehaviors } from "../../marketplace/Contributor/behaviors/api.js";
class ApiSetupState {

@@ -29,2 +30,3 @@ _client;

config.behaviors.contract = apiContractBehaviors(client);
config.behaviors.contributor = apiContributorBehaviors(client);
config.behaviors.contractItem = apiContractItemBehaviors(client);

@@ -31,0 +33,0 @@ }

@@ -6,2 +6,3 @@ export const config = {

contractItem: undefined,
contributor: undefined,
article: undefined,

@@ -8,0 +9,0 @@ project: undefined,

@@ -24,2 +24,3 @@ import { DataModel } from "../../base/DataModel.js";

customDocumentRoot?: string | undefined;
deletionRequested?: boolean | undefined;
description: string;

@@ -46,2 +47,3 @@ disabled: boolean;

customDocumentRoot?: string | undefined;
deletionRequested?: boolean | undefined;
description: string;

@@ -74,2 +76,3 @@ disabled: boolean;

customDocumentRoot?: string | undefined;
deletionRequested?: boolean | undefined;
description: string;

@@ -96,2 +99,3 @@ disabled: boolean;

customDocumentRoot?: string | undefined;
deletionRequested?: boolean | undefined;
description: string;

@@ -98,0 +102,0 @@ disabled: boolean;

+4
-4

@@ -31,3 +31,3 @@ import { ReferenceModel } from "../../base/ReferenceModel.js";

name: string;
orderable: "forbidden" | "internal" | "beta_testing" | "full" | "deprecated";
orderable: "full" | "forbidden" | "internal" | "beta_testing" | "deprecated";
possibleArticleChanges?: import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.ArticleReadableChangeArticleOptions[] | undefined;

@@ -54,3 +54,3 @@ price?: number | undefined;

name: string;
orderable: "forbidden" | "internal" | "beta_testing" | "full" | "deprecated";
orderable: "full" | "forbidden" | "internal" | "beta_testing" | "deprecated";
possibleArticleChanges?: import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.ArticleReadableChangeArticleOptions[] | undefined;

@@ -84,3 +84,3 @@ price?: number | undefined;

name: string;
orderable: "forbidden" | "internal" | "beta_testing" | "full" | "deprecated";
orderable: "full" | "forbidden" | "internal" | "beta_testing" | "deprecated";
possibleArticleChanges?: import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.ArticleReadableChangeArticleOptions[] | undefined;

@@ -107,3 +107,3 @@ price?: number | undefined;

name: string;
orderable: "forbidden" | "internal" | "beta_testing" | "full" | "deprecated";
orderable: "full" | "forbidden" | "internal" | "beta_testing" | "deprecated";
possibleArticleChanges?: import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.ArticleReadableChangeArticleOptions[] | undefined;

@@ -110,0 +110,0 @@ price?: number | undefined;

@@ -9,2 +9,3 @@ import { ProjectBehaviors } from "../project/Project/behaviors/index.js";

import { ArticleBehaviors } from "../article/Article/behaviors/index.js";
import type { ContributorBehaviors } from "../marketplace/Contributor/behaviors/types.js";
interface Config {

@@ -14,2 +15,3 @@ defaultPaginationLimit: number;

contract: ContractBehaviors;
contributor: ContributorBehaviors;
contractItem: ContractItemBehaviors;

@@ -16,0 +18,0 @@ article: ArticleBehaviors;

@@ -33,2 +33,3 @@ import { DataModel } from "../../base/DataModel.js";

customerNumber: string;
deletionProhibitedBy?: ("hasOpenInvoices" | "hasActiveContracts" | "hasActiveExtensionSubscriptions" | "isActiveContributor")[] | undefined;
executingUserRoles?: import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.CustomerRole[] | undefined;

@@ -39,2 +40,3 @@ flags?: import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.CustomerCustomerFlag[] | undefined;

isInDefaultOfPayment?: boolean | undefined;
isMailAddressInvalid?: boolean | undefined;
levelOfUndeliverableDunningNotice?: "first" | "second" | undefined;

@@ -56,2 +58,3 @@ memberCount: number;

customerNumber: string;
deletionProhibitedBy?: ("hasOpenInvoices" | "hasActiveContracts" | "hasActiveExtensionSubscriptions" | "isActiveContributor")[] | undefined;
executingUserRoles?: import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.CustomerRole[] | undefined;

@@ -62,2 +65,3 @@ flags?: import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.CustomerCustomerFlag[] | undefined;

isInDefaultOfPayment?: boolean | undefined;
isMailAddressInvalid?: boolean | undefined;
levelOfUndeliverableDunningNotice?: "first" | "second" | undefined;

@@ -85,2 +89,3 @@ memberCount: number;

customerNumber: string;
deletionProhibitedBy?: ("hasOpenInvoices" | "hasActiveContracts" | "hasActiveExtensionSubscriptions" | "isActiveContributor")[] | undefined;
executingUserRoles?: import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.CustomerRole[] | undefined;

@@ -91,2 +96,3 @@ flags?: import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.CustomerCustomerFlag[] | undefined;

isInDefaultOfPayment?: boolean | undefined;
isMailAddressInvalid?: boolean | undefined;
levelOfUndeliverableDunningNotice?: "first" | "second" | undefined;

@@ -108,2 +114,3 @@ memberCount: number;

customerNumber: string;
deletionProhibitedBy?: ("hasOpenInvoices" | "hasActiveContracts" | "hasActiveExtensionSubscriptions" | "isActiveContributor")[] | undefined;
executingUserRoles?: import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.CustomerRole[] | undefined;

@@ -114,2 +121,3 @@ flags?: import("@mittwald/api-client").MittwaldAPIV2.Components.Schemas.CustomerCustomerFlag[] | undefined;

isInDefaultOfPayment?: boolean | undefined;
isMailAddressInvalid?: boolean | undefined;
levelOfUndeliverableDunningNotice?: "first" | "second" | undefined;

@@ -116,0 +124,0 @@ memberCount: number;

@@ -65,2 +65,3 @@ import { ProjectData, ProjectListItemData, ProjectListQueryData, ProjectListQueryModelData } from "./types.js";

customerId: string;
deletionRequested?: boolean | undefined;
description: string;

@@ -122,2 +123,3 @@ directories: {

customerId: string;
deletionRequested?: boolean | undefined;
description: string;

@@ -162,2 +164,3 @@ directories: {

customerId: string;
deletionRequested?: boolean | undefined;
description: string;

@@ -194,2 +197,3 @@ directories: {

customerId: string;
deletionRequested?: boolean | undefined;
description: string;

@@ -196,0 +200,0 @@ directories: {

{
"name": "@mittwald/api-models",
"version": "0.0.0-development-e87cbeb-20251001",
"version": "0.0.0-development-e8d9270-20260119",
"author": "Mittwald CM Service GmbH & Co. KG <opensource@mittwald.de>",

@@ -42,7 +42,7 @@ "type": "module",

"dependencies": {
"@mittwald/api-client": "^0.0.0-development-e87cbeb-20251001",
"another-deep-freeze": "^1.0.0",
"@mittwald/api-client": "^0.0.0-development-e8d9270-20260119",
"another-deep-freeze": "1.0.0",
"context": "^3.0.33",
"dinero.js": "^1.9.1",
"object-code": "^1.3.3",
"object-code": "^1.3.4",
"polytype": "^0.17.0",

@@ -54,19 +54,21 @@ "tsd": "^0.31.2",

"@jest/globals": "^29.7.0",
"@mittwald/react-use-promise": "^2.6.0",
"@testing-library/dom": "^10.4.0",
"@testing-library/jest-dom": "^6.6.3",
"@testing-library/react": "^16.1.0",
"@types/dinero.js": "^1",
"@mittwald/react-use-promise": "^2.6.2",
"@testing-library/dom": "^10.4.1",
"@testing-library/jest-dom": "^6.9.1",
"@testing-library/react": "^16.3.0",
"@types/dinero.js": "^1.9.4",
"@types/jest": "^29.5.14",
"@types/react": "^18.3.14",
"@types/react-dom": "^18",
"@types/luxon": "^3.7.1",
"@types/react": "^18.3.26",
"@types/react-dom": "^18.3.7",
"@typescript-eslint/eslint-plugin": "^7.18.0",
"@typescript-eslint/parser": "^7.18.0",
"eslint": "^8.57.1",
"eslint-config-prettier": "^9.1.0",
"eslint-config-prettier": "^9.1.2",
"eslint-plugin-json": "^3.1.0",
"eslint-plugin-prettier": "^5.2.1",
"eslint-plugin-prettier": "^5.5.4",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"prettier": "^3.4.2",
"luxon": "^3.7.2",
"prettier": "^3.6.2",
"react": "^18.3.1",

@@ -89,3 +91,3 @@ "react-dom": "^18.3.1",

},
"gitHead": "01b01e9cefc0ae0b5b7dabd7261dd7acd0b33d44"
"gitHead": "421fb85a679788d0f7f4c8bf0f5618435a895367"
}