Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

@smithy/core

awslabs48.3mApache-2.03.1.1TypeScript support: included

NPM version NPM downloads

readme

@smithy/core

NPM version NPM downloads

An internal package. You probably shouldn't use this package, at least directly.

This package provides common or core functionality for generic Smithy clients.

You do not need to explicitly install this package, since it will be installed during code generation if used.

Development of @smithy/core submodules

Core submodules are organized for distribution via the package.json exports field.

exports is supported by default by the latest Node.js, webpack, and esbuild. For react-native, it can be enabled via instructions found at reactnative.dev/blog, but we also provide a compatibility redirect.

Think of @smithy/core as a mono-package within the monorepo. It preserves the benefits of modularization, for example to optimize Node.js initialization speed, while making it easier to have a consistent version of core dependencies, reducing package sprawl when installing a Smithy runtime client.

Guide for submodules

  • Each index.ts file corresponding to the pattern ./src/submodules/<MODULE_NAME>/index.ts will be published as a separate dist-cjs bundled submodule index using the Inliner.js build script.
  • create a folder as ./src/submodules/<SUBMODULE> including an index.ts file and a README.md file.
    • The linter will throw an error on missing submodule metadata in package.json and the various tsconfig.json files, but it will automatically fix them if possible.
  • a submodule is equivalent to a standalone @smithy/<pkg> package in that importing it in Node.js will resolve a separate bundle.
  • submodules may not relatively import files from other submodules. Instead, directly use the @scope/pkg/submodule name as the import.
    • The linter will check for this and throw an error.
  • To the extent possible, correctly declaring submodule metadata is validated by the linter in @smithy/core. The linter runs during yarn build and also as yarn lint.

When should I create an @smithy/core/submodule vs. @smithy/new-package?

Keep in mind that the core package is installed by all downstream clients.

If the component functionality is upstream of multiple clients, it is a good candidate for a core submodule. For example, if middleware-retry had been written after the support for submodules was added, it would have been a submodule.

If the component's functionality is downstream of a client (rare), or only expected to be used by a very small subset of clients, it could be written as a standalone package.

changelog

Smithy Typescript Codegen Changelog

0.25.0 (2024-11-18)

Features

  • Upgraded smithyVersion to 1.52.0 (#1434)
  • Added default accepts=application/cbor header for Smithy RPC v2 CBOR protocol (#1427)
  • Added | undefined for optional type properties to support exactOptionalPropertyTypes (#1448)

Bug Fixes

  • Added uuid types import when adding uuid import (#1428)

0.24.0 (2024-09-30)

Features

  • Use spread operator for Command endpoint params only when necessary (#1396)
  • Improve IDE type navigation assistance for command classes (#1373)

Bug Fixes

  • Allow empty string field values for headers (#1412)

0.23.0 (2024-09-09)

Features

  • codegen: Added Smithy RPCv2 CBOR protocol generator (#1280)

  • codegen: Added support for string array parameters in endpoints (#1376)

  • codegen: Added support for operation context params in endpoints (#1379)

Bug Fixes

  • Added logic to resolve the service specific endpoint once per client instance instead of for each request (#1382)

  • Fixed a bug that prevented a concrete client type (e.g., S3Client) to be converted to a NodeJsClient (#1389)

Documentation

0.22.0 (2024-08-06)

Features

  • codegen: Enabled the new identity and auth behavior by default and add a legacy auth mode (#1352)

  • codegen: Added logic to skip the application of the CustomEndpoints plugin for models using Endpoints-2.0 (#1337)

  • codegen: Added automatic default idempotency tokens in headers for requests when a token is not explicitly provided (#1327)

  • codegen: Added a set of built-in integration plugins to code-generator (#1321)

Bug Fixes

  • codegen: Fixed inconsistent ordering issue when writing client params during code-generation (#1355)

  • codegen: Fixed incorrect usage of string templates when generating commands (#1354)

  • codegen: Fixed serialization of :event-type in event-streams where the member target-id was being used instead of the member name (#1349)

  • codegen: Fixed issue where content-type was being set when input body was empty (#1304)

0.21.1 (2024-06-05)

Features

  • Added logging for CredentialsProviderError (#1290)

Bug Fixes

  • Fixed issues with serializing millisecond precision timestamps for certain formats (#1289, #1295)
  • Fixed issue where export was used instead of the clearer export type (#1284)

0.21.0 (2024-05-22)

Breaking Changes

  • Update Engines to Node.js 16, Node.js 14 is not officialy supported anymore (#1258)

Features

  • Bumped TypeScript to ~5.2.x in smithy JS packages (#1275)
  • @smithy/fetch-http-handler, @smithy/node-http-handler: Improveed stream collection performance (#1272)
  • Improved support for fetch and web-streams in Node.js (#1256)
  • @smithy/node-http-handler, "@smithy/util-stream: Handle web streams in streamCollector and sdkStreamMixin
  • Added service client doc generator only when typedoc is selected (#1253)

Bug Fixes

  • @smithy/types: Fixed type transforms account for no-args operation methods (#1262)
  • Check dependencies when adding imports (#1239)
  • Fixed typo in HttpResponse docs (#958)
  • Fixed URI escape path (#1224) (#1226)

0.20.1 (2024-04-05)

Features

  • Updated SigV4 with its own header formatter to avoid import of entire eventstream-codec package (#1233)
  • Updated Smithy Version to 1.47.0 (#1225)

Bug Fixes

  • Fix middleware-endpoint to check for s3 arn parts (#1227)

0.20.0 (2024-03-21)

Features

  • codegen: Identity and Auth, support for the @auth Smithy trait. See https://smithy.io/2.0/spec/authentication-traits.html#auth-trait.
  • codegen: Support request compression (#1129)
  • codegen: Allow commands to be constructed without arg if all arg fields optional (#1206)
  • codegen: Generate unified error dispatcher (#1150)
  • codegen: Generate Commands using Command classBuilder (#1118)
  • codegen: Paginator factory (#1115)
  • codegen: Generate paginators using a factory (#1114)
  • codegen: XML serde reduction (#1108)
  • codegen: Add requestBuilder, generate requests using a builder pattern (#1107)
  • codegen-docs: Add deprecation message in shape docs (#1209)
  • codegen-docs: Move documentation before release tag and deprecation (#1211)
  • codegen-docs: Move deprecation after description in docs (#1212)
  • codegen-docs: Add more information about BLOB values in structures (#1182)
  • @smithy/types: Assertive client type helper (#1076)
  • @smithy/*: dist-cjs artifacts are now generated as a bundle (#1146)
  • @smithy/util-base64: Encoders now accept strings (#1176)
  • @smithy/node-http-handler: Enable ctor arg passthrough for requestHandler (#1167)
  • @smithy/node-http-handler: Add checked socket exhaustion warning when throughput is slow (#1164)
  • @smithy/node-http-handler: Allow http(s).Agent ctor arg in lieu of instance (#1165)
  • @smithy/node-http-handler: Reduce buffer copies (#867)

Bug Fixes

  • codegen: Empty the contents of the dependencyVersions.properties file when creating it (#1213)
  • codegen: Import _json function at call sites (#1174)
  • codegen: Model bucketing edge case with resource shape (#1123)
  • codegen: Use TopDownIndex::getContainedOperations() for operation iterations (#1109)
  • codegen: Accommodate services with the world Client in their names (#1102)
  • @smithy/middleware-retry: Retry after clock skew correction (#1170)
  • @smithy/middleware-retry: Warn streaming requests are not retryable (#1092)
  • @smithy/core: Handle multi-part token paths in paginator (#1160)
  • @smithy/util-utf8: Use Node.js implementations in react-native (#1070)
  • @smithy/smithy-client: Apply filtering when walking json arrays (#1086)
  • @smithy/util-body-length-browser: Increase performance of body length calculation for larger payloads on browser (#1088)
  • @smithy/middleware-serde: Allow error deserializers to populate error response body (#1180)
  • @smithy/shared-ini-file-loader: Process sso-session names with config prefix separator (#1173)
  • @smithy/shared-ini-file-loader: Process config files for profile names containing prefix separator (#1100)
  • @smithy/shared-ini-file-loader: Allow dot, solidus, percent and colon characters in profile names (#1067)

Documentation

  • Add readme content for signature-v4 (#1087)
  • Sigv4 README.md brackets (#1103)
  • Fix README smithy-build.json examples (#1082)

0.19.0 (2023-11-02)

Features

  • Updated codegen plugins to match idiomatic plugin names(#1057)
  • Added flag for blocking imds v1 fallback behavior (#1059)
  • Upgraded@babel/traverse from 7.21.2 to 7.23.2 (#1041)
  • Upgraded browserify-sign from 4.2.1 to 4.2.2 (#1058)
  • Updated to use migrated util-endpoints (#1044)
  • Re-exported existing endpoint types (#1055)
  • Added util-endpoints package (#1043)
  • Allow TypeScriptIntegration to write prior to the config object literal (#1054)
  • Updated to transform inputs for platform specific type helpers (#1046)
  • Made unionShape deserializer overridable (#1040, #1045)
  • Update to generate enum Record keys when target is enum (#1037)
  • Removed "| string" and "| number" from enum targeted members (#1028)
  • Added -p for mkdir in build-generated-test-packages (#1010)
  • Added logging for buildAndCopyToNodeModules() (#1003)
  • Reorganized models in smithy-typescript-codegen-test (#995)
  • Updated to export empty model index if no model_* files exist (#996)
  • Read service specific endpoints for environment or config (#1014)
  • Updated to populate sso-session and services sections when loading config files (#993)
  • Added export CONFIG_PREFIX_SEPARATOR from loadSharedConfigFiles (#992)
  • Updated to pass configuration file as second parameter to configSelector (#990)
  • Updated to populate subsection using dot separator in section key when parsing INI files (#989)
  • Added support for reading values from main section when parsing INI files (#986)

Bug Fixes

  • Exported RuntimeExtension and Client ExtensionConfiguration interfaces (#1057)
  • Removed TARGET_NAMESPACE from TypeScriptSettings (#1057)
  • Updated Server Codegen to generate without a protocol (#1057)
  • Updated to use partial record for enum keyed types (#1049)
  • Allowed lowercase type names for endpoint parameters (#1050)
  • Added parsing for profile name with invalid '+' character (#1047)
  • Added missing map shape reference (#1038)
  • Adds parsing for profile name with invalid '@' character (#1036)
  • Treat absence of prefix whitespace as section keys when reading ini files (#1029)
  • Added missing dependency of @smithy/shared-ini-file-loader (#1027)
  • Fixed operation index file codegen (#1025)
  • Removed extra $ from HttpApiKeyAuthSigner (#1006)
  • Added await to signer.sign() in httpSigningMiddleware (#1005)
  • Fixed @httpApiKeyAuth scheme property (#1001)
  • Fixed HttpAuthSchemeParameters codegen (#998)
  • Fixed resolveHttpAuthSchemeConfig imports (#997)
  • Updated default keepalive=false for fetch (#1016)

0.18.0 (2023-10-04)

Features

  • Add SSDK codegen test (#825)
  • Add test script when specs are generated (#821)
  • Move vitest config to js (#833)
  • Add PackageContainer interface (#837)
  • Add codegen for improved streaming payload types (#840)
  • Set public release tags on client config interface components (#850)
  • Check for Optional Configuration in client constructor (#859)
  • Add matchSettings() to RuntimeClientPlugins (#856)
  • Add experimentalIdentityAndAuth flag (#857)
  • Add extensions to client runtime config (#852)
  • Use ASCII replacement for character 0xE2 (#866)
  • Add more auth traits to generic client tests (#882)
  • Rename defaultClientConfiguration to defaultExtensionConfiguration (#888)
  • Update codegen to use defaultExtensionConfiguration (#889)
  • Add matchSettings() to TypeScriptIntegration and TypeScriptCodegenPlugin (#901)
  • Add codegen and TS integration points for config (#881)
  • Add generic @httpApiKeyAuth support (#883)
  • Add generic @httpBearerAuth support (#884)
  • Add generic @aws.auth#sigv4 support (#885)
  • Update HttpAuthOption and HttpAuthScheme codegen (#907)
  • Update ExtensionConfigurations to generate for clients only (#911)
  • Add codegen for http component in runtime extension (#913)
  • Add codegen for HttpAuthExtensionConfiguration (#910)
  • Add HttpAuthScheme interfaces for auth scheme resolution (#928)
  • Add service and operation names to HandlerExecutionContext (#934)
  • Add httpSigningMiddleware to authorize and sign requests (#930)
  • Make writeDocs() with Runnable public (#939)
  • Refactor HttpAuthScheme properties to builders (#941)
  • Reorganize http auth module constants (#942)
  • Rename to generateDefaultHttpAuthSchemeProviderFunction() (#946)
  • Add traitId to HttpAuthScheme (#947)
  • Add customizing default httpAuthSchemeProvider and httpAuthSchemeParametersProvider (#943)
  • Add partial support for aws.auth#sigv4a (#950)
  • Update @smithy.rules#endpointRuleSet codegen (#945)
  • Add collect*() methods to dedupe ConfigFields and HttpAuthSchemeParameter (#948)
  • Add httpAuthSchemeMiddleware to select an auth scheme (#929)
  • Add SmithyContextCodeSection to CommandGenerator (#957)
  • Add link for retryModes input enum (#962)
  • Add aliases for httpSigningMiddleware (#970)
  • Update endpoint rules engine tests (#976)
  • Upgrade to Smithy 1.39.0 (#976)

Bug fixes

  • Fix types import (#831)
  • Allow lowercase endpoint param (#923)
  • Generate jsdocs for operations with no documentation (#971)
  • Fix missing release tag on shape members (#854)

0.17.1 (2023-07-07)

Bug fixes

  • Fixed @smithy/protocol-http import in HttpApiKeyAuth spec (#817)

0.17.0 (2023-07-06)

Features

  • Upgraded to Smithy 1.33.0 (#808)
  • Updated enum validator to not remove "internal" tagged members (#807)

Bug fixes

  • Fixed @aws-smithy/server-common version (#806)

0.16.0 (2023-06-30)

Features

  • Updated code generator to use @smithy scoped npm packages (#791, #766)
  • Improved blob payload input and output types (#777)
  • Added packageDocumentation and improved interface inheritance (#770)
  • Updated code generator to use runtime-agnostic util-stream package (#775)

Bug fixes

  • Fixed endpoint parameter name conflict (#772)
  • Stopped trimming collection query param output values (#764)

0.15.0 (2023-05-10)

Features

  • Add Gradle composite build (#761)
  • Improve generated command documentation (#757)
  • Bump SSDK libs version to 1.0.0-alpha.10 (#738)
  • Use aggregated client runtime generator (#736)
  • Add SerdeElision KnowledgeIndex and serde helper function (#735, #759)
  • Shorten internal serde function names (#730)
  • Reduce generated HTTP request header code (#729)
  • Improve documentation truncation (#728)
  • Export enum as const to reduce generated code (#726)
  • Add structural hint to commmand examples (#723)
  • Skip generating unused sensitive filter functions (#722)
  • Add DefaultReadmeGenerator (#721)
  • Add TSDocs release tags (#719)
  • Add thrown exceptions to generated command documentation (#715)
  • Remove internal enum values from validation message (#713)
  • Omit aggregated client from paginators (#712)
  • Add NodeJS runtime support to SSDK (#703)
  • Remove reflected values from validation message (#695)
  • Add AddClientRuntimeConfig for generic clients (#693)

Bug Fixes

  • Fix creating empty model files when chunking (#714)

0.14.0 (2023-02-09)

Features

  • Upgrade TypeScript lib to use es2018 for SSDK libs (#678)
  • Bump SSDK libs version to 1.0.0-alpha.8 (#689)
  • Add a code generator setting to generate @required members without | undefined. WARNING: Using this mode may lead to backwards incompatible impact for clients when a service removes @required from a member. (#566, #688)

0.13.0 (2023-01-31)

Features

  • Upgrade tsconfig.es.json target to ES2020 (#603)
  • Upgrade to Java 17 (#621)
  • Upgrade to node >= 14.0.0 (#623, #625, #628)
  • Upgrade to Smithy 1.27.2 (#682)
  • Add mavenCentral as plugin repository (#629)
  • Add intEnum generation with validation and tests (#605, #654)
  • Use util-base64 instead of platform-based dependencies (#627, #631)
  • Use util-base8 instead of platform-based dependencies (#672, #677)
  • Add util-retry dependency (#650)
  • Replace Hash with Checksum (#668)
  • Allow deferred resolution for api key config (#588)
  • Stream improvement serde (#593)
  • Support delegation of determining errors for an operation (#598)
  • Reduce object copying in iterators (#638)
  • Refactor writeAdditionalFiles and writeAdditionalExports logic into integration.customize() (#607)
  • Expose static endpoint param instructions provider (#590)
  • Add unit tests for endpoints v2 generator (#674)
  • Use util-utf8 on server and tests ()
  • Bump ssdk lib version to 1.0.0-alpha.7(#675)
  • Clients parse datetime offsets (#681)

Bug Fixes

  • Call parseErrorBody when parsing error structures (#597)
  • Fix broken reference to fail() after jest-upgrade (#645)
  • Validate required input query params (#647, #646)
  • Include x-amz-request-id in request id deser (#606)
  • Add idempotencyToken generation if member is queryParam (#655)
  • Fix Error printout for protocol-response tests (#657)
  • Fix codegen for windows platforms (#661)
  • Fix consistency with type aliases (#670, #671)
  • Fix misc endpoints 2.0 bugs (#592, #600, #614, #615, #616, #617, #618, #619, #622, #626, #634, #644, #652, #658)

0.12.0 (2022-09-19)

Features

  • Migrated the code generator to use Smithy's new and recommended DirectedCodegen. (#585)
  • Added support for endpoints v2. (#586)
  • Updated Smithy version to 1.25.x which bring Smithy IDL v2 support. (#589)
  • Updated SSDK library version to 1.0.0-alpha6. (#583)
  • Added different package description for client v/s server. (#582)
  • Overrode typescript version for typedoc. (#561)
  • Removed namespaces that only contain log filters. (#574)
  • Added support for event stream for RPC protocols. (#573)
  • Added fallback to status code for unmodeled errors. (#565)
  • Added support for generating protocol specific event payload. (#554)
  • Used Record type instead of Object. (#556, #557, #558, #562)
  • Removed explicit reference to MetadataBearer from error shapes. (#545)
  • Added codegen indicator comment to generated files. (#538)
  • Added check to stop pagination on same token. (#534)

Bug Fixes

  • Fixed code generation for server protocol tests. (#577)
  • Fixed missing Content-Type header in some events. (#567)

0.11.0 (2022-04-04)

Features

  • Removed MetadataBearer from output type. (#530)
  • Updated Smithy version to 1.19.x. (#531)
  • Updated typescript to ~4.6.2. (#527)
  • Set bodyLengthChecker type to BodyLengthCalculator. (#524)

Bug Fixes

  • Added missing export for httpApiKeyAuth middleware. (#528)

0.10.0 (2022-03-02)

Features

  • Bumped SSDK library versions to 1.0.0-alpha5. (#520)
  • Added support for List<String> in function parameters list. (#516)
  • Updated generation of exceptions for easier handling. (#502)
  • Updated clean script to delete *.tsbuildinfo. (#514)

Bug Fixes

  • Fixed scripts for npm by extracting run command out. (#519)
  • Fixed the generation of collections of documents in protocol tests. (#513)

0.9.0 (2022-02-14)

Features

  • Updated Smithy version to 1.17.x. (#505)
  • Added support for @httpApiKeyAuth. (#473)
  • Added a default prepack script to generated packages. (#479)
  • Added TypeScript contextual keywords to the reserved words list. (#500)
  • Changed generated builds to run concurrently. (#498)
  • Added support for defaultsMode. (#495)
  • Updated generated packages to use @tsconfig/recommended. (#493)
  • Removed filterSensitiveLog from exceptions. (#488)
  • Bumped SSDK library versions to 1.0.0-alpha4. (#480)
  • Removed test dependencies and configuration from generated packages. (#483)
  • Updated minimum supported Node version to 12. (#481, #482)
  • Added option to configure package manager, supporting yarn and npm. (#476)
  • Switched pattern validation to re2-wasm to avoid native dependency. (#467)

Bug Fixes

  • Updated protocol tests to check for ErrorName. (#490)
  • Added escaping for regex literals in path segments. (#477)
  • Fix greedy label matching. (#474)

Documentation

  • Updated README example. (#501)

0.8.0 (2021-11-23)

Features

  • Updated Smithy version dependency to be more specific. (#465)
  • Updated Smithy version to 1.14.x. (#468)

Bug Fixes

  • Fixed the generated comment for link to client config. (#466)

0.7.0 (2021-11-03)

Features

  • Updated parsing of timestamps and unions to be stricter. (#412, #414)
  • Reduced published package size. (#427, #443, #446, #444, #452)
  • Added handling for more complex Accept header values. (#431)
  • Moved source files to src folder. (#434, #437, #438)
  • Added ability to ts-ignore a default import. (#445)
  • Updated Smithy version to 1.12.0. (#448)
  • Switched to re2 for pattern validation. (#451)

Bug Fixes

  • Used base64 en/decoder from context in bindings. (#419)
  • Downgraded typescript to ~4.3.5. (#418)
  • Fixed XML protocol test to compare payload with outmost node. (#433)
  • Fixed handling of multi-value query parameters to align with API Gateway behavior. (#449)

0.6.0 (2021-09-02)

Features

  • Updated parsing of request and response payloads for Http binding protocols to be stricter. (#405)
  • Updated number parsing to be stricter based on size. (#397, #404)
  • Added handling for Content-Type and Accept headers in SSDK. (#394)
  • Added a generator for @httpMalformedRequestTests. (#393)
  • Added warning for unsupported Node.js version. (#392)

Bug Fixes

  • Allowed setting prefix path for rpc protocols. (#406)
  • Fixed SSDK codegen for different casing of operation name, by using operation symbol name consistently. (#402)
  • Fixed processing of runtime config for generic clients. (#401)

0.5.0 (2021-07-23)

Features

  • Bumped tslib version to 2.3.0. (#387)
  • Calculate content-length for SSDKs. (#386)

Bug Fixes

  • Update dependency versioning to pull from smithy-aws-typescript-codegen or use latest. (#388)