Compare commits
6 Commits
Author | SHA1 | Date | |
---|---|---|---|
9717989831 | |||
8cfaad2071 | |||
339c41c259 | |||
bf6b323df5 | |||
41e4dad65c | |||
572454e54f |
19
changelog.md
19
changelog.md
@ -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
|
||||||
|
|
||||||
|
@ -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",
|
||||||
|
@ -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.'
|
||||||
}
|
}
|
||||||
|
@ -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[];
|
||||||
}
|
}
|
@ -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
|
||||||
|
@ -9,6 +9,7 @@ export interface IPayPalConnection {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface IPaymentOptionInfo {
|
export interface IPaymentOptionInfo {
|
||||||
|
description?: string;
|
||||||
sepaConnection: ISepaConnection;
|
sepaConnection: ISepaConnection;
|
||||||
payPal: IPayPalConnection;
|
payPal: IPayPalConnection;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user