Compare commits

...

8 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
82b0325d7c 8.1.0 2025-03-26 16:54:00 +00:00
12cddd99e0 feat(business/letter): Extend TLetter to include invoice support and update dependency versions 2025-03-26 16:54:00 +00:00
7 changed files with 193 additions and 60 deletions

View File

@ -1,5 +1,30 @@
# 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)
Extend TLetter to include invoice support and update dependency versions
- Bump type-fest to ^4.38.0 and @types/node to ^22.13.13 in package.json
- Modify TLetter type in ts/business/letter.ts to support finance.TInvoice alongside simple letters
## 2025-03-25 - 8.0.4 - fix(license/business-letter)
Remove legacy commented-out code from letter module and update copyright header

View File

@ -1,6 +1,6 @@
{
"name": "@tsclass/tsclass",
"version": "8.0.4",
"version": "8.2.1",
"private": false,
"description": "Provides TypeScript definitions for various business, financial, networking, content, and other common classes.",
"main": "dist_ts/index.js",
@ -37,14 +37,14 @@
},
"homepage": "https://code.foss.global/tsclass/tsclass#readme",
"dependencies": {
"type-fest": "^4.37.0"
"type-fest": "^4.38.0"
},
"devDependencies": {
"@git.zone/tsbuild": "^2.3.2",
"@git.zone/tsrun": "^1.3.3",
"@git.zone/tstest": "^1.0.96",
"@push.rocks/tapbundle": "^5.6.0",
"@types/node": "^22.13.11"
"@types/node": "^22.13.13"
},
"files": [
"ts/**/*",

84
pnpm-lock.yaml generated
View File

@ -9,8 +9,8 @@ importers:
.:
dependencies:
type-fest:
specifier: ^4.37.0
version: 4.37.0
specifier: ^4.38.0
version: 4.38.0
devDependencies:
'@git.zone/tsbuild':
specifier: ^2.3.2
@ -25,8 +25,8 @@ importers:
specifier: ^5.6.0
version: 5.6.0(@aws-sdk/credential-providers@3.772.0)(socks@2.8.4)
'@types/node':
specifier: ^22.13.11
version: 22.13.11
specifier: ^22.13.13
version: 22.13.13
packages:
@ -1430,8 +1430,8 @@ packages:
'@types/node-forge@1.3.11':
resolution: {integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==}
'@types/node@22.13.11':
resolution: {integrity: sha512-iEUCUJoU0i3VnrCmgoWCXttklWcvoCIx4jzcP22fioIVSdTmjgoEvmAO/QPw6TcS9k5FrNgn4w7q5lGOd1CT5g==}
'@types/node@22.13.13':
resolution: {integrity: sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==}
'@types/parse5@6.0.3':
resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==}
@ -4119,8 +4119,8 @@ packages:
resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
engines: {node: '>=12.20'}
type-fest@4.37.0:
resolution: {integrity: sha512-S/5/0kFftkq27FPNye0XM1e2NsnoD/3FS+pBmbjmmtLT6I+i344KoOf7pvXreaFsDamWeaJX55nczA1m5PsBDg==}
type-fest@4.38.0:
resolution: {integrity: sha512-2dBz5D5ycHIoliLYLi0Q2V7KRaDlH0uWIvmk7TYlAg5slqwiPv1ezJdZm1QEM0xgk29oYWMCbIG7E6gHpvChlg==}
engines: {node: '>=16'}
type-is@1.6.18:
@ -5315,7 +5315,7 @@ snapshots:
'@jest/schemas': 29.6.3
'@types/istanbul-lib-coverage': 2.0.6
'@types/istanbul-reports': 3.0.4
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/yargs': 17.0.33
chalk: 4.1.2
@ -6673,22 +6673,22 @@ snapshots:
'@tsclass/tsclass@4.4.0':
dependencies:
type-fest: 4.37.0
type-fest: 4.38.0
'@tsclass/tsclass@4.4.4':
dependencies:
type-fest: 4.37.0
type-fest: 4.38.0
'@types/accepts@1.3.7':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/babel__code-frame@7.0.6': {}
'@types/body-parser@1.19.5':
dependencies:
'@types/connect': 3.4.38
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/buffer-json@2.0.3': {}
@ -6704,17 +6704,17 @@ snapshots:
'@types/clean-css@4.2.11':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
source-map: 0.6.1
'@types/co-body@6.1.3':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/qs': 6.9.18
'@types/connect@3.4.38':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/content-disposition@0.5.8': {}
@ -6727,11 +6727,11 @@ snapshots:
'@types/connect': 3.4.38
'@types/express': 5.0.1
'@types/keygrip': 1.0.6
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/cors@2.8.17':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/debounce@1.2.4': {}
@ -6745,14 +6745,14 @@ snapshots:
'@types/express-serve-static-core@4.19.6':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/qs': 6.9.18
'@types/range-parser': 1.2.7
'@types/send': 0.17.4
'@types/express-serve-static-core@5.0.6':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/qs': 6.9.18
'@types/range-parser': 1.2.7
'@types/send': 0.17.4
@ -6783,30 +6783,30 @@ snapshots:
'@types/from2@2.3.5':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/fs-extra@11.0.4':
dependencies:
'@types/jsonfile': 6.1.4
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/fs-extra@9.0.13':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/glob@7.2.0':
dependencies:
'@types/minimatch': 5.1.2
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/glob@8.1.0':
dependencies:
'@types/minimatch': 5.1.2
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/gunzip-maybe@1.4.2':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/hast@3.0.4':
dependencies:
@ -6840,7 +6840,7 @@ snapshots:
'@types/jsonfile@6.1.4':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/keygrip@1.0.6': {}
@ -6857,7 +6857,7 @@ snapshots:
'@types/http-errors': 2.0.4
'@types/keygrip': 1.0.6
'@types/koa-compose': 3.2.8
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/mdast@4.0.4':
dependencies:
@ -6875,9 +6875,9 @@ snapshots:
'@types/node-forge@1.3.11':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/node@22.13.11':
'@types/node@22.13.13':
dependencies:
undici-types: 6.20.0
@ -6895,19 +6895,19 @@ snapshots:
'@types/s3rver@3.7.4':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/semver@7.5.8': {}
'@types/send@0.17.4':
dependencies:
'@types/mime': 1.3.5
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/serve-static@1.15.7':
dependencies:
'@types/http-errors': 2.0.4
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/send': 0.17.4
'@types/sinon-chai@3.2.12':
@ -6927,11 +6927,11 @@ snapshots:
'@types/tar-stream@2.2.3':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/through2@2.0.41':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/triple-beam@1.3.5': {}
@ -6955,18 +6955,18 @@ snapshots:
'@types/whatwg-url@8.2.2':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/webidl-conversions': 7.0.3
'@types/which@3.0.4': {}
'@types/ws@7.4.7':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/ws@8.18.0':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
'@types/yargs-parser@21.0.3': {}
@ -6976,7 +6976,7 @@ snapshots:
'@types/yauzl@2.10.3':
dependencies:
'@types/node': 22.13.11
'@types/node': 22.13.13
optional: true
'@ungap/structured-clone@1.3.0': {}
@ -7616,7 +7616,7 @@ snapshots:
dependencies:
'@types/cookie': 0.4.1
'@types/cors': 2.8.17
'@types/node': 22.13.11
'@types/node': 22.13.13
accepts: 1.3.8
base64id: 2.0.0
cookie: 0.4.2
@ -8445,7 +8445,7 @@ snapshots:
jest-util@29.7.0:
dependencies:
'@jest/types': 29.6.3
'@types/node': 22.13.11
'@types/node': 22.13.13
chalk: 4.1.2
ci-info: 3.9.0
graceful-fs: 4.2.11
@ -10034,7 +10034,7 @@ snapshots:
type-fest@2.19.0: {}
type-fest@4.37.0: {}
type-fest@4.38.0: {}
type-is@1.6.18:
dependencies:

View File

@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@tsclass/tsclass',
version: '8.0.4',
version: '8.2.1',
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 { type TContact } from "./contact.js";
export class IJob {
type: "contract" | "employment";
techTags?: string[];
qualificationTags?: string[];
languages?: {
name: string;
level: "basic" | "intermediate" | "advanced" | "native";
}[];
/**
* Represents the type of employment contract
*/
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;
description: string;
monthlyTotal: number;
currency: finance.TCurrency;
from: TContact;
contact: TContact;
level: TLanguageProficiency;
}
/**
* Represents salary information with structure if needed
*/
export interface ISalaryInfo {
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 TLetter = TLetterSimple;
export type TLetter = TLetterSimple | finance.TInvoice

View File

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