release notes

Post date: October 11, 2021 1:14 PM

  • Issue 1944 - JetBrains 2021.2 support status - Things continue to look good, so I'm going to remove the warnings and begin treating 2021.2.2+ like a fully-supported version of the underlying JetBrains IDEs. If you do see issues unique to the latest JetBrains versions, please let me know via either email or the public issue tracker.

  • Issue 1985 - Winter '22 / API v53.0 support

    • Updated all SOAP API clients to be based on the API v53.0 WSDLs.

    • Updated the API version used for primary communication with Salesforce APIs to 53.0.

    • Added 53.0 as an available API version number for configured connections.

    • Updated metadata.xsd used for validation and code completion in metadata XML files to API v53.0.

    • Updated the OST version number to prompt regeneration for system API changes in API v53.0.

    • Updated Visualforce, Aura, and LWC component components, functions, modules, etc., for Winter '22 changes.

    • Updated the bundled SLDS to 2.16.1.

    • Updated all integrated API documentation.

    • Added support for the new Apex enum valueOf(name) class method.

    • Added full support for Salesforce Functions development. See below for details.

  • Issue 1951 - Salesforce Functions support - Implemented full support for development, deployment, monitoring, etc., of Salesforce Functions in all supported languages (see below for IDE-specific details). For a relatively complete overview of these features as well as a more general description of Salesforce Functions, please see this demonstration video.
    Salesforce Functions development features provided by Illuminated Cloud 2 include:

    • A new Salesforce Functions tool window that is the primary interface for managing the project's Salesforce functions.

    • Creation of Salesforce functions in all supported languages. Illuminated Cloud 2 enriches the CLI's generated function source files for package/class name specification in Java, stronger typing in JavaScript via type inference hints, optional source code formatting, etc.

    • Removal of Salesforce functions including removal of all IDE configuration scaffolding, automatic termination of associated running processes, etc.

    • Automatic detection of existing functions in opened projects and assistance with the required IDE project configuration, function SDK processing, etc., to provide the full set of IDE features for development and management of those functions.

    • Integrated unit test execution and interactive debugging (as supported by the host IDE based on the implementation language; see below).

    • Integrated local Salesforce function deployment to Docker. Locally-deployed functions can be monitored, invoked, debugged, terminated, etc. Per-function local deployment configurations are possible including specification of function invocation port, remote debug port, environment variables, etc.

    • Integrated local Salesforce function invocation as a standard IDE run configuration with a configurable payload (file-based or explicitly-provided). Gutter annotations are automatically added to Salesforce function source files for easy invocation and debugging via the IDE's standard run configuration features.

    • Integrated remote Salesforce function deployment to a Heroku compute environment. Remotely-deployed functions can be monitored, invoked, etc. NOTE: At this time it's not possible to specify the -b branch or --force arguments for remote deployments.

    • Integrated compute environment management.

    • Automatic detection and assistance with the most common types of deployment issues, e.g., port conflicts, unfulfilled version control dependencies, unauthenticated or expired sessions, missing or invalid compute environments, etc.

    • Cross-language code completion, validation, reference navigation, etc., for:

      • SOQL in Java, JavaScript, and TypeScript string literals used for query execution.

      • JSON payloads in Apex string literals used for function invocation.

      • Function names in Apex string literals used for function lookup.

  • Language Support
    As stated, function language support varies based on the host JetBrains IDE:

    • IntelliJ IDEA Commercial Edition fully-supports development of functions in Java, JavaScript, and TypeScript.

    • IntelliJ IDEA Community Edition fully-supports development of functions in Java with very limited support for JavaScript and TypeScript. Functions of the latter types can be created, deployed both locally and remotely and invoked, but editor features are limited and interactive debugging is not available for those languages.

    • PhpStorm, PyCharm Professional Edition, RubyMine, and WebStorm fully-support development of functions in JavaScript and TypeScript with very limited support for Java. Functions of the latter type can be created, deployed both locally and remotely and invoked, but editor features are limited and interactive debugging is not available for Java.

    • PyCharm Community Edition provides very limited support for Java, JavaScript, and TypeScript. Functions can be created, deployed both locally and remotely and invoked, but editor features are limited and interactive debugging is not available for any function language.

  • Software Prerequisites
    Several prerequisites must be installed for Salesforce Functions development. Specifically the following command-line utilities must be installed and available to the IDE process' via the operating system's search path (i.e., PATH environment variable):

    • Salesforce CLI - The Salesforce CLI (sfdx) must be installed and registered with IC2, and the sf executable must be available via the search path.

    • Salesforce Functions plugin - The Salesforce Functions plugin for sf must be installed using sf plugins install functions.

    • Docker - Docker must be installed and running for local deployment.

    • Git - The Git command-line must be installed for remote deployment. Note that project version control is strongly-recommended regardless of whether remote deployment occurs.

  • Additionally the following JetBrains IDE plugins should be enabled for the best Salesforce Functions development experience:

    • Maven (IntelliJ IDEA only) - Required for Java-based function development.

    • JUnit (IntelliJ IDEA only) - Required for Java-based function unit testing.

    • JavaScript and TypeScript (commercial IDEs only) - Required for JavaScript- and TypeScript-based function development.

    • JavaScript Debugger (commercial IDEs only) - Required for JavaScript- and TypeScript-based function interactive debugging.

    • Node.js (commercial IDEs only) - Required for JavaScript- and TypeScript-based function development and Mocha-based unit testing.

    • Git (all IDEs) - Required for integrated Git version control management.

    • Docker (commercial IDEs only) - Optional for management of locally-deployed function Docker containers, images, etc.

  • What Can You Do Right Now?
    Salesforce Functions are an add-on feature that must be licensed and enabled in your organization(s) for production use. However, even without a license you can create functions in all supported languages, write and execute unit tests for them, and even deploy them locally into Docker containers connected to your existing organizations where they can be invoked and debugged interactively.
    Without a Salesforce Functions license, you cannot deploy your functions remotely into Heroku compute environments or consequently invoke them from Apex.
    This level of available functionality, albeit limited, should provide
    all users the opportunity to experiment with Salesforce Functions immediately to gain an understanding of how they work and how they might be used in existing and/or future Salesforce projects.
    Known Issues and Limitations

    • The CLI commands for Salesforce Functions do not currently support a formal programmatic interface. As a result, the type of CLI-based integration employed by Illuminated Cloud 2 may be fragile until a more formal interface is provided. I have shared IC2's current assumptions and expectations with the team responsible for this work in hopes that it helps to ensure a stable integration, but issues are possible as the plugin is updated in the interim. If such issues occur, please bring them to my attention and I will work quickly to resolve them. However, it will be critically important that the versions of IC2 and the functions plugin are kept up-to-date and in sync to ensure the best results.

    • The env list -t compute CLI command that is used by IC2 to derive a project's compute environment name was erroneously removed between beta and GA. Salesforce is aware of this, and it should hopefully be restored shortly. In the interim, IC2 is not able to determine an existing compute environment name unless it was explicitly created from within IC2 itself. As a workaround, you can use IC2's Create Compute Environment action in the Salesforce Functions tool window's Details tab under Remote Execution with the exact same compute environment name, and it will be properly registered with IC2.

    • Source maps are not published for TypeScript-based functions. As a result, remote debugging of such functions deployed locally into a Docker container will result in stepping through the transpiled JavaScript function source instead.

    • I've observed an issue with local Docker-based deployment of Java-based functions on an M1 Mac where deployment simply fails with either a Node.js stack trace that goes through benny.js or even a core dump. I have not seen this issue on an Intel Mac, nor have I seen it on Windows or Linux.

  • Other related fixes and improvements.