Skip to content

chore: prepare v1.1.1 release - #46

Merged
AbdelrahmanBayoumi merged 1 commit into
mainfrom
release/1.1.1
Nov 4, 2026
Merged

AbdelrahmanBayoumi merged 1 commit into
mainfrom
release/1.1.1

Conversation

@AbdelrahmanBayoumi

Copy link
Copy Markdown
Member

ملخص التغيير (Summary)

Prepare arabic-services 1.1.1 from the fixes and package improvements accumulated since v1.1.0.

  • Set package.json and both lockfile root versions to 1.1.1.
  • Promote Unreleased notes into a dated 1.1.1 entry (2026-11-04 / 24 Jumada al-Awwal 1448), retaining an empty Unreleased section.
  • Keep published 1.1.0 and older changelog content byte-for-byte unchanged.
  • Include the reviewed npm audit fix lock resolutions within existing dependency ranges; no force/override or new manifest dependency.

التوافق (Compatibility)

This PR changes release metadata, notes, and development-tool resolutions; it adds no new function changes. Release notes explicitly disclose affix-output corrections, stricter numeric-level validation, ESM nested namespace shape changes, and incomplete generated facade/helper maps. The package still has zero runtime dependencies; known development-tool audit advisories remain.

The API query-conversion fix is separately committed in Seen-Arabic/Arabic-Services-API@3f233c2. The actual packed 1.1.1 artifact was exercised through its real Nest controller, service, and pipes in an isolated local HTTP app; only telemetry and database logging were stubbed. The service's library import was pinned and asserted to be the candidate package, not its installed 1.1.0 dependency. No consumer dependency update or deployment was performed.

التحقق (Validation)

  • npm run format:check
  • npm run lint
  • npm test: 119 source tests, fresh CJS/ESM/UMD build, 18 artifact tests passed.
  • npm pack --ignore-scripts: produced arabic-services-1.1.1.tgz.
  • Actual-tarball API HTTP validation: 15/15 passed, including levels 1/0/omitted for all three obfuscation methods, invalid/fractional/negative values, short affixes, and exact listed-word matching.
  • Manifest/lock version consistency, original lock graph preservation except release version metadata, published changelog preservation, and git diff --check.

Tarball SHA-256: 8660245DA6196C09C5E76FBA6BA7484EB23C97C3DEC504ADE5AF158C9687C5C2.

Publishing is a separate step after merging this PR. No tag or GitHub Release has been created, and npm publication has not been triggered. The comparison link in the prepared release details becomes available once v1.1.1 is tagged.

Prepared GitHub Release details — title: 1.1.1; tag: v1.1.1

What's Changed

Version 1.1.1 2026-11-04 (24 Jumada al-Awwal 1448) ✨

Added

  • Extensionless TypeScript Imports: Enabled extensionless static relative imports and directory barrels in source builds; the ESM build emits explicit .js relative references while retaining the CJS and browser UMD package entry paths (PR #45).
  • Built Artifact Coverage: Added CJS, ESM, and browser UMD integration checks, package-content and source-map checks, and built-consumer tree-shaking checks.
  • Arabic Affix and Banned-Word Guides: Added focused technical documentation, direct jsDelivr and unpkg links, and a GitHub browser-bundle guide.
  • Published Sources and Maps: Included original TypeScript sources and JavaScript source maps for CJS, ESM, UMD, and browser ESM outputs, plus declaration maps for CJS and ESM (PR #40).

Updated

  • Modular TypeScript Sources: Split the monolithic script implementation into focused modules while preserving function names and the public function export set (PR #38).
  • ESM Namespace Objects: Kept the keys and values of ArabicServices.constants and ArabicServices.utils while changing their object prototypes, extensibility, and property descriptors.
  • Browser Demo and Test Commands: Moved the standalone browser demo to examples/browser/index.html and separated source and compiled-artifact test commands; npm test runs both suites around one build.
  • CI and Publishing Runtime: Added CI coverage for Node.js 22.x and 24.x and moved the publish workflow to Node.js 24.
  • Development Dependencies: Refreshed typescript-eslint and its packages to 8.72.1, fast-uri to 3.1.9, and ignore to 7.0.14 within existing manifest ranges.

Fixed

  • Short Affix Results: Preserve the original word when removing listed affixes would leave fewer than three Arabic-script letters. This changes results for some short words, including نور, بنت, and اليد; the transformation remains heuristic (PR #44).
  • Separator Handling: Process affix removal independently across letter, mark, and number sequences while preserving separators. Unicode property escape support is required when this function is called (PR #44).
  • Exact Banned-Word Matching: Check listed words such as فلسطين before lossy affix stripping, while retaining the existing affix-based similarity path. Exact matching is case-sensitive and does not normalize tokens (PR #43).
  • Similarity Scores: Calculate string lengths after lowercasing so Unicode case expansion does not produce scores outside the documented 0–1 range; edit distance remains based on UTF-16 code units (PR #42).
  • Obfuscation-Level Validation: Reject non-number levels with TypeError and negative, fractional, or non-finite levels with RangeError; empty input terminates and random-index counts are capped at the word length (PR #36).
  • Publishing Workflow: Continue browser-bundle upload after a successful build when npm publishing fails.
  • Development Script: Removed the unused dev command, which relied on an uninstalled ts-node runner.

Compatibility notes

  • The short-result guard changes some prior affix-removal outputs. Direct JavaScript callers passing string levels now receive TypeError; valid numeric inputs remain the typed API.
  • In ESM, ArabicServices.constants and .utils changed from null-prototype, non-extensible namespace objects with data properties to Object.prototype objects that are extensible and expose getters. Their keys and values are unchanged, but reflection and augmentation observe the difference.
  • Source maps are provided, but some generated re-export facades and a helper remain unmapped; this release does not claim complete map coverage.
  • The lockfile audit reported 13 moderate advisories in development-tool dependency paths and no runtime dependencies; this release does not claim an audit-free dependency tree.

Full Changelog

@AbdelrahmanBayoumi
AbdelrahmanBayoumi merged commit 812d9d1 into main Nov 4, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant