BoxLang 🚀 A New JVM Dynamic Language Learn More...

BoxLang Compat Module For CFML

v1.15.0+21 BoxLang Modules

⚡︎ BoxLang Module: BoxLang Compat Module For CFML

|:------------------------------------------------------:  |
| ⚡︎ B o x L a n g ⚡︎
| Dynamic : Modular : Productive
|:------------------------------------------------------:  |
Copyright Since 2023 by Ortus Solutions, Corp
www.boxlang.io | www.ortussolutions.com

 

Welcome to the BoxLang Compat Module For CFML

This module will allow your ColdFusion (CFML) applications under Adobe or Lucee to run under BoxLang. This module will provide the necessary compatibility layer to run your applications under BoxLang.

If there are any issues, please report them to the BoxLang JIRA or the Module Issues repository.

Settings

Here are the available settings for the compat module:

settings = {
	// The engine to mimick: adobe or lucee
    engine = "lucee",
	// JSON control character auto-escaping flag
	// IF you turn to true, be aware that the entire JSON serialization will be escaped and be slower.
	jsonEscapeControlCharacters = true,
	// This simulates the query to empty value that Adobe/Lucee do when NOT in full null support
	// We default it to true to simulate Adobe/Lucee behavior
	queryNullToEmpty = true,
	// The CF -> BL AST transpiler settings
	// The transpiler is in the core, but will eventually live in this module, so the settings are here.
	transpiler = {
		// Turn foo.bar into foo.BAR
		upperCaseKeys = true,
		// Add output=true to functions and classes
		forceOutputTrue = true,
		// Merged doc comments into actual function, class, and property annotations
		mergeDocsIntoAnnotations = true
	}
}

The valid engines are adobe or lucee. By default the engine is lucee. All module settings can be changed via the boxlang.json in your configuration.

"modules" : {
    "compat-cfml" : {
        "disabled" : false,
        "settings" : {
            "engine" : "adobe",
			// JSON control character auto-escaping flag
			// IF you turn to true, be aware that the entire JSON serialization will be escaped and be slower.
			jsonEscapeControlCharacters = true,
			// This simulates the query to empty value that Adobe/Lucee do when NOT in full null support
			// We default it to true to simulate Adobe/Lucee behavior
			queryNullToEmpty = true,
			// The CF -> BL AST transpiler settings
			// The transpiler is in the core, but will eventually live in this module, so the settings are here.
            transpiler = {
				// Turn foo.bar into foo.BAR
				upperCaseKeys = true,
				// Add output=true to functions and classes
				forceOutputTrue = true,
				// Merged doc comments into actual function, class, and property annotations
				mergeDocsIntoAnnotations = true
            }
        }
    }
}

Server Scope Mimic

Depending on which engine you select an interceptor will be loaded that will seed the server scope with the appropriate engine details.

Contributed BIFs

The compat module will contribute the following built-in functions globally:

Ortus Sponsors

BoxLang is a professional open-source project and it is completely funded by the community and Ortus Solutions, Corp. Ortus Patreons get many benefits like a cfcasts account, a FORGEBOX Pro account and so much more. If you are interested in becoming a sponsor, please visits our patronage page: https://patreon.com/ortussolutions

THE DAILY BREAD

"I am the way, and the truth, and the life; no one comes to the Father, but by me (JESUS)" Jn 14:1-12

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.


Unreleased

1.15.0 - 2024-12-17

1.14.0 - 2024-12-10

Fixed

  • When calling getMetadata() with a DynamicObject make sure the class is unwrapped

1.14.0 - 2024-12-10

Fixed

  • Pre-seed clientManagement setting to false to avoid issues with Adobe/Lucee CFML engines

1.13.0 - 2024-12-10

Added

  • CFIDE mapping for compatibility for orm and scheduler interfaces
  • More integration tests
  • Client scope
  • Many more test scenarios
  • struckKeyExists() transpilers

1.12.0 - 2024-11-15

1.11.0 - 2024-10-31

Added

  • getTagData() and getFunctionData() lucee compats

1.10.0 - 2024-10-28

Fixed

  • Change to toUnmodifiable from toImmutable

Added

  • cftoken migration to comply with CFML engines.
  • cfid migration to comply with CFML engines.

1.9.0 - 2024-10-15

1.8.0 - 2024-10-10

Fixed

  • Bug with json escape characters in serializeJSON()

1.8.0 - 2024-10-10

Fixed

  • Bug with structGet() and invalid paths not working with null values
  • structGet() not adhering to the actual Adobe CFML behavior

1.7.0 - 2024-09-30

1.6.0 - 2024-09-19

Changed

  • Name change to bx-compat-cfml to better describe the module

1.4.1 - 2024-09-19

1.4.0 - 2024-09-16

1.3.0 - 2024-09-04

1.2.0 - 2024-08-09

Added

  • BL-491 New module settings:
// The CF -> BL AST transpiler settings
// The transpiler is in the core, but will eventually live in this module, so the settings are here.
transpiler = {
	// Turn foo.bar into foo.BAR
	upperCaseKeys = true,
	// Add output=true to functions and classes
	forceOutputTrue = true,
	// Merged doc comments into actual function, class, and property annotations
	mergeDocsIntoAnnotations = true
}
  • BL-449 preserve single quotes
  • Added more docs
  • Added new BIFS: getVariable(), setVariable(), getComponentMetadata(), getMetaData(), deleteClientVariable(), getClientVariablesList()

1.2.0 - 2024-08-09

Added

  • Module should coerce null values to empty string if the queryNullToEmpty is set to true, which is the default
  • objectLoad(), and objectSave() aliases for objectSerialize() and objectDeserialize() respectively.

Fixed

  • Updated to use Attempts instead of Optionals for caching.

1.1.0 - 2024-06-29

Fixed

  • change of interface for cache provider returning arrays now since beta3
  • New setting engine so you can chose "adobe" or "lucee" instead of the boolean operators
  • Use the latest stable BoxLang beta build
  • Gradle not using the boxlangVersion property

1.0.0 - 2024-06-13

  • First iteration of this module

$ box install bx-compat-cfml

No collaborators yet.
     
  • {{ getFullDate("2024-09-19T14:42:39Z") }}
  • {{ getFullDate("2024-12-17T18:02:45Z") }}
  • 468
  • 1,042