Compare commits

..

6 Commits

Author SHA1 Message Date
9717989831 8.2.1
Some checks failed
Default (tags) / security (push) Successful in 40s
Default (tags) / test (push) Successful in 45s
Default (tags) / release (push) Failing after 32s
Default (tags) / metadata (push) Successful in 44s
2025-04-12 15:32:53 +00:00
8cfaad2071 fix(business/job): Refactor job interface to support expanded employment details and improve type safety 2025-04-12 15:32:53 +00:00
339c41c259 8.2.0 2025-04-04 13:06:21 +00:00
bf6b323df5 feat(finance/payment): Add optional description field to payment option info. 2025-04-04 13:06:21 +00:00
41e4dad65c 8.1.1 2025-03-26 17:00:01 +00:00
572454e54f fix(business/letter): Remove extraneous inline comment from TLetter type union in business/letter.ts 2025-03-26 17:00:01 +00:00
6 changed files with 143 additions and 16 deletions

View File

@ -1,5 +1,24 @@
# Changelog # Changelog
## 2025-04-12 - 8.2.1 - fix(business/job)
Refactor job interface to support expanded employment details and improve type safety
- Changed exported IJob from a class to an interface
- Removed obsolete properties (monthlyTotal, currency)
- Added new types for contract, work location, experience level, and job status
- Introduced detailed fields: url, location, postedDate, salary, contractType, skillTags, qualificationTags, languages, and history
## 2025-04-04 - 8.2.0 - feat(finance/payment)
Add optional 'description' field to payment option info.
- Enhanced the IPaymentOptionInfo interface in ts/finance/payment.ts by adding an optional 'description' property for improved context.
## 2025-03-26 - 8.1.1 - fix(business/letter)
Remove extraneous inline comment from TLetter type union in business/letter.ts
- Clean up redundant comment to improve code clarity
- Maintain consistency in type definitions
## 2025-03-26 - 8.1.0 - feat(business/letter) ## 2025-03-26 - 8.1.0 - feat(business/letter)
Extend TLetter to include invoice support and update dependency versions Extend TLetter to include invoice support and update dependency versions

View File

@ -1,6 +1,6 @@
{ {
"name": "@tsclass/tsclass", "name": "@tsclass/tsclass",
"version": "8.1.0", "version": "8.2.1",
"private": false, "private": false,
"description": "Provides TypeScript definitions for various business, financial, networking, content, and other common classes.", "description": "Provides TypeScript definitions for various business, financial, networking, content, and other common classes.",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@tsclass/tsclass', name: '@tsclass/tsclass',
version: '8.1.0', version: '8.2.1',
description: 'Provides TypeScript definitions for various business, financial, networking, content, and other common classes.' description: 'Provides TypeScript definitions for various business, financial, networking, content, and other common classes.'
} }

View File

@ -1,17 +1,124 @@
import * as finance from "../finance/index.js"; import * as finance from "../finance/index.js";
import { type TContact } from "./contact.js"; import { type TContact } from "./contact.js";
export class IJob {
type: "contract" | "employment"; /**
techTags?: string[]; * Represents the type of employment contract
qualificationTags?: string[]; */
languages?: { export type TContractType =
| 'full-time'
| 'part-time'
| 'contract'
| 'freelance'
| 'internship'
| 'apprenticeship'
| 'volunteer'
| 'temporary'
| 'seasonal';
/**
* Represents the work location arrangement
*/
export type TWorkLocationType =
| 'on-site'
| 'hybrid'
| 'remote';
/**
* Represents the experience level required for the job
*/
export type TExperienceLevel =
| 'entry'
| 'mid'
| 'senior'
| 'executive';
/**
* Represents the status of a job posting
*/
export type TJobStatus =
| 'active'
| 'closed'
| 'expired'
| 'filled'
| 'archived';
/**
* Language proficiency levels
*/
export type TLanguageProficiency =
| 'basic'
| 'intermediate'
| 'advanced'
| 'native';
/**
* Represents a language requirement with name and proficiency level
*/
export interface ILanguageRequirement {
name: string; name: string;
level: "basic" | "intermediate" | "advanced" | "native"; level: TLanguageProficiency;
}[]; }
name: string;
description: string; /**
monthlyTotal: number; * Represents salary information with structure if needed
currency: finance.TCurrency; */
from: TContact; export interface ISalaryInfo {
contact: TContact; min?: number;
max?: number;
currency?: finance.TCurrency;
period?: 'hourly' | 'daily' | 'weekly' | 'monthly' | 'annually';
}
/**
* Represents a record in the job history
*/
export interface IJobHistory {
timestamp: string;
source: string;
category?: string;
action?: string;
details?: string;
}
/**
* Universal Job Interface representing a job posting
*/
export interface IJob {
// Core job information
id: string;
title: string;
company: string;
description: string;
url: string;
// Location information
location: string;
locationType?: TWorkLocationType;
// Dates
postedDate?: string;
// Compensation
salary?: ISalaryInfo;
// Classification
contractType?: TContractType;
category?: string;
experienceLevel?: TExperienceLevel;
// Skills and requirements
skillTags?: string[];
qualificationTags?: string[];
languages?: ILanguageRequirement[];
// Contact information
from?: TContact;
contact?: TContact;
// Metadata
source: string;
status: TJobStatus;
firstScrapedAt: string;
lastScrapedAt: string;
history: IJobHistory[];
} }

View File

@ -51,4 +51,4 @@ export type TLetterEnvelope<TYPE extends string, FIELDS> = business.TDocumentEnv
export type TLetterSimple = TLetterEnvelope<"simple", {}>; export type TLetterSimple = TLetterEnvelope<"simple", {}>;
export type TLetter = TLetterSimple | finance.TInvoice // -> add all types here; export type TLetter = TLetterSimple | finance.TInvoice

View File

@ -9,6 +9,7 @@ export interface IPayPalConnection {
} }
export interface IPaymentOptionInfo { export interface IPaymentOptionInfo {
description?: string;
sepaConnection: ISepaConnection; sepaConnection: ISepaConnection;
payPal: IPayPalConnection; payPal: IPayPalConnection;
} }