Colorful logging and print for any environment including GitHub Actions
Get details about the current Continuous Integration environment
Detect if the current environment is a CI server
Runtime agnostic JS utils
the mighty option parser used by yargs
Get environment variables exposed by CI services
JavaScript syntax tree transformer, nondestructive pretty-printer, and automatic source map generator
Check if the process is running in a Continuous Integration (CI) environment
fast mysql driver. Implements core protocol, prepared statements, ssl and compression in native JS
Convert a string of words to a JavaScript identifier
Abstract logger TypeScript interface with a dummy logger that does nothing, useful for libraries.
Datadog CI plugin for `stepfunctions` commands
Fast, in memory work queue
Determines if a file is using a CommonJS or AMD module definition
Check if stdout or stderr is interactive
Datadog CI plugin for `deployment` commands
Sane aims to be fast, small, and reliable file system watcher.
Logging feature for lws
Gets you the Cypress test command log as JSON on failure
Use Datadog from your CI.
Datadog CI plugin for `cloud-run` commands
Very simple logger for CI environments.
Promisified version of cross-spawn
Sigstore signing library
CLI tool for fetching CircleCI job logs, test results, and workflow info
Programmable CI/CD engine without Containers, built on top of Nix ❄️
Log summary of failed tests for CI
Secure log format (for CI etc)
Tired of copying the test suites names from a failed CI? This gem will automate this tedious workflow. CI Runner will download the log from your CI provider, parse it, detect failures and rerun exactly the same failing tests on your machine. CI Runner can also detect the Ruby version used on your CI as well as which Gemfile and reuse those when starting the run locally.
Remote syslog appender for Logging
A collection of helpers and contexts to enhance Rails specs: logging, env/I18n/time helpers, SQL guards, request/DB dumps, benchmarking, CI guards, and performance limits.
Analyze code for potentially uncalled / dead methods, now with auto-removal. == Features/Problems: * Static analysis of code. Can be easily hooked up to a CI. * As with all static analysis tools of dynamic languages, can't be 100%. * Whitelisting known good methods by name or regexp. * Use --rails for Rails-specific domain knowledge. * Use debride_rm to brazenly remove all unused methods. BE CAREFUL. * Use `debride_rails_whitelist` to generate an emperical whitelist from logs. * Uses path_expander, so you can use: * dir_arg -- expand a directory automatically * @file_of_args -- persist arguments in a file * -path_to_subtract -- ignore intersecting subsets of files/directories
RSpec formatter optimized for AI agents and CI systems. Outputs compact NDJSON with file references instead of verbose text. Supports log splitting, error deduplication, and context-efficient reporting.
By default, if a page or a post in a Jekyll site has a syntax error in the front matter, Jekyll logs an error, does not render anything for the given page, and continues. The result is a site without any content for the page with the syntax error. This can be confusing for people who build sites without looking at the CLI, such as those of us whose sites build in a CI. In these cases, we may wish for our build to fail if there are front matter syntax errors. [This PR](https://github.com/jekyll/jekyll/pull/5832/files) seeks to add a config option for that, but in the meantime this plugin exists to fill the gap. This plugin may also be used to add the option to sites using an older version of Jekyll.
REST API for electronic invoicing in France: Factur-X (CII), UBL 2.1, AFNOR PDP/PA, electronic signatures. ## 🎯 Main Features ### 📄 Invoice Generation - **Formats**: CII XML, UBL 2.1 XML, or Factur-X PDF/A-3 - **Profiles** (CII/PDF): MINIMUM, BASIC, EN16931, EXTENDED - **UBL**: Always EN16931 compliant - **Standards**: EN 16931 (EU directive 2014/55), ISO 19005-3 (PDF/A-3), CII (UN/CEFACT), UBL 2.1 (OASIS) - **Simplified Format**: Generation from SIRET + auto-enrichment (Chorus Pro API + Business Search) ### ✅ Factur-X - Validation - **XML Validation**: Schematron (45 to 210+ rules depending on profile) - **PDF Validation**: PDF/A-3, Factur-X XMP metadata - **VeraPDF**: Strict PDF/A validation (146+ ISO 19005-3 rules) ### ✍️ Electronic Signature - **Standards**: PAdES-B-B, PAdES-B-T (RFC 3161 timestamping), PAdES-B-LT (long-term archival) - **eIDAS Levels**: SES (self-signed), AdES (commercial CA), QES (QTSP) - **Validation**: Cryptographic integrity and certificate verification ### 📋 Flux 6 - Invoice Lifecycle (CDAR) - **CDAR Messages**: Acknowledgements, invoice statuses - **PPF Statuses**: REFUSED (210), PAID (212) ### 📊 Flux 10 - E-Reporting - **Tax Declarations**: International B2B, B2C - **Flow Types**: 10.1 (B2B transactions), 10.2 (B2B payments), 10.3 (B2C transactions), 10.4 (B2C payments) ### 📡 AFNOR PDP/PA (XP Z12-013) - **Flow Service**: Submit and search flows to PDPs - **Directory Service**: Company search (SIREN/SIRET) - **Multi-client**: Support for multiple PDP configs per user ### 🏛️ Chorus Pro - **Public Sector Invoicing**: Complete API for Chorus Pro ### ⏳ Async Tasks - **Celery**: Asynchronous generation, validation and signing - **Polling**: Status tracking via `/tasks/{task_id}/status` - **Webhooks**: Automatic notifications when tasks complete ## 🔒 Authentication All requests require a **JWT token** in the Authorization header: ``` Authorization: Bearer YOUR_JWT_TOKEN ``` ### How to obtain a JWT token? #### 🔑 Method 1: `/api/token/` API (Recommended) **URL:** `https://factpulse.fr/api/token/` This method is **recommended** for integration in your applications and CI/CD workflows. **Prerequisites:** Having set a password on your account **For users registered via email/password:** - You already have a password, use it directly **For users registered via OAuth (Google/GitHub):** - You must first set a password at: https://factpulse.fr/accounts/password/set/ - Once the password is created, you can use the API **Request example:** ```bash curl -X POST https://factpulse.fr/api/token/ \ -H "Content-Type: application/json" \ -d '{ "username": "your_email@example.com", "password": "your_password" }' ``` **Optional `client_uid` parameter:** To select credentials for a specific client (PA/PDP, Chorus Pro, signing certificates), add `client_uid`: ```bash curl -X POST https://factpulse.fr/api/token/ \ -H "Content-Type: application/json" \ -d '{ "username": "your_email@example.com", "password": "your_password", "client_uid": "550e8400-e29b-41d4-a716-446655440000" }' ``` The `client_uid` will be included in the JWT and allow the API to automatically use: - AFNOR/PDP credentials configured for this client - Chorus Pro credentials configured for this client - Electronic signature certificates configured for this client **Response:** ```json { "access": "eyJ0eXAiOiJKV1QiLCJhbGc...", // Access token (validity: 30 min) "refresh": "eyJ0eXAiOiJKV1QiLCJhbGc..." // Refresh token (validity: 7 days) } ``` **Advantages:** - ✅ Full automation (CI/CD, scripts) - ✅ Programmatic token management - ✅ Refresh token support for automatic access renewal - ✅ Easy integration in any language/tool #### 🖥️ Method 2: Dashboard Generation (Alternative) **URL:** https://factpulse.fr/api/dashboard/ This method is suitable for quick tests or occasional use via the graphical interface. **How it works:** - Log in to the dashboard - Use the "Generate Test Token" or "Generate Production Token" buttons - Works for **all** users (OAuth and email/password), without requiring a password **Token types:** - **Test Token**: 24h validity, 1000 calls/day quota (free) - **Production Token**: 7 days validity, quota based on your plan **Advantages:** - ✅ Quick for API testing - ✅ No password required - ✅ Simple visual interface **Disadvantages:** - ❌ Requires manual action - ❌ No refresh token - ❌ Less suited for automation ### 📚 Full Documentation For more information on authentication and API usage: https://factpulse.fr/documentation-api/
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.
No description provided.