@adobe/aio-commerce-lib-events 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/LICENSE +201 -0
- package/README.md +3 -0
- package/dist/cjs/commerce/index.cjs +14 -0
- package/dist/cjs/commerce/index.d.cts +316 -0
- package/dist/cjs/io-events/index.cjs +14 -0
- package/dist/cjs/io-events/index.d.cts +2114 -0
- package/dist/cjs/ky-Rubdb7BL.cjs +14 -0
- package/dist/es/commerce/index.d.ts +316 -0
- package/dist/es/commerce/index.js +14 -0
- package/dist/es/io-events/index.d.ts +2114 -0
- package/dist/es/io-events/index.js +14 -0
- package/dist/es/ky-6HcrUVIg.js +14 -0
- package/package.json +72 -0
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*
|
|
4
|
+
* Copyright 2025 Adobe. All rights reserved.
|
|
5
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
7
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
10
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
11
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
12
|
+
* governing permissions and limitations under the License.
|
|
13
|
+
*/
|
|
14
|
+
import{b as optionallyExtendKy,c as ensureImsScopes,d as buildImsAuthBeforeRequestHook,f as isAuthProvider,g as HttpClientBase,h as ApiClient,k as booleanValueSchema,l as stringValueSchema,m as parseOrThrow,n as buildCamelCaseKeysResponseHook,o as __export}from"../ky-6HcrUVIg.js";import*as v from"valibot";import ky from"ky";const IO_EVENTS_IMS_REQUIRED_SCOPES=[`adobeio_api`];function buildIoEventsHttpClient(params){let{auth,config,fetchOptions}=params,beforeRequestAuthHook=isAuthProvider(auth)?buildImsAuthBeforeRequestHook(auth):buildImsAuthBeforeRequestHook(ensureImsScopes(auth,IO_EVENTS_IMS_REQUIRED_SCOPES)),adobeIoBaseUrl=config.baseUrl,httpClient=ky.create({prefixUrl:adobeIoBaseUrl,headers:{Accept:`application/hal+json`},hooks:{beforeRequest:[beforeRequestAuthHook]}});return optionallyExtendKy(httpClient,fetchOptions)}var AdobeIoEventsHttpClient=class extends HttpClientBase{constructor(params){let config={...params.config,baseUrl:params.config?.baseUrl??`https://api.adobe.io/events`},httpClient=buildIoEventsHttpClient({...params,config});super(config,httpClient)}};const BASE64_ENCODED_STRING_REGEX=/^[A-Za-z0-9+/]*={0,2}$/;function isBase64EncodedString(value){return BASE64_ENCODED_STRING_REGEX.test(value)&&value.length%4==0}function encodeToBase64(value){return Buffer.from(value).toString(`base64`)}function tryDecodeFromBase64(value){return isBase64EncodedString(value)?Buffer.from(value,`base64`).toString(`utf-8`):value}function sampleEventTemplateSchema(fieldName){return v.pipe(v.union([v.pipe(stringValueSchema(fieldName),v.transform(tryDecodeFromBase64),v.parseJson(void 0,`Expected valid JSON string for property '${fieldName}'`),v.record(v.string(),v.unknown()),v.stringifyJson()),v.record(v.string(),v.unknown()),v.array(v.unknown())]),v.stringifyJson(void 0,`Expected valid JSON data for property '${fieldName}'`),v.transform(encodeToBase64))}const GetAllEventMetadataForProviderSchema=v.object({providerId:stringValueSchema(`providerId`)}),GetEventMetadataForEventAndProviderSchema=v.object({eventCode:stringValueSchema(`eventCode`),providerId:stringValueSchema(`providerId`)}),CreateEventMetadataForProviderSchema=v.object({consumerOrgId:stringValueSchema(`consumerOrgId`),projectId:stringValueSchema(`projectId`),workspaceId:stringValueSchema(`workspaceId`),providerId:stringValueSchema(`providerId`),label:stringValueSchema(`label`),description:stringValueSchema(`description`),eventCode:stringValueSchema(`eventCode`),sampleEventTemplate:v.optional(sampleEventTemplateSchema(`sampleEventTemplate`))});var endpoints_exports={};__export(endpoints_exports,{createEventMetadataForProvider:()=>createEventMetadataForProvider,getAllEventMetadataForProvider:()=>getAllEventMetadataForProvider,getEventMetadataForEventAndProvider:()=>getEventMetadataForEventAndProvider});function getAllEventMetadataForProvider(httpClient,params,fetchOptions){let validatedParams=parseOrThrow(GetAllEventMetadataForProviderSchema,params),withHooksClient=httpClient.extend({hooks:{afterResponse:[buildCamelCaseKeysResponseHook()]}});return withHooksClient.get(`providers/${validatedParams.providerId}/eventmetadata`,fetchOptions).json()}function getEventMetadataForEventAndProvider(httpClient,params,fetchOptions){let validatedParams=parseOrThrow(GetEventMetadataForEventAndProviderSchema,params),withHooksClient=httpClient.extend({hooks:{afterResponse:[buildCamelCaseKeysResponseHook()]}});return withHooksClient.get(`providers/${validatedParams.providerId}/eventmetadata/${validatedParams.eventCode}`,fetchOptions).json()}function createEventMetadataForProvider(httpClient,params,fetchOptions){let validatedParams=parseOrThrow(CreateEventMetadataForProviderSchema,params),withHooksClient=httpClient.extend({hooks:{afterResponse:[buildCamelCaseKeysResponseHook()]}});return withHooksClient.post(`${validatedParams.consumerOrgId}/${validatedParams.projectId}/${validatedParams.workspaceId}/providers/${validatedParams.providerId}/eventmetadata`,{...fetchOptions,json:{label:validatedParams.label,description:validatedParams.description,event_code:validatedParams.eventCode,sample_event_template:validatedParams.sampleEventTemplate}}).json()}function setQueryParamIfTruthy(queryParams,key,value){value&&queryParams.set(key,`${value}`)}function setArrayQueryParam(queryParams,key,values){if(values!==void 0&&values.length>0)for(let value of values)queryParams.set(key,`${value}`)}const VALID_EVENT_PROVIDER_TYPES=[`dx_commerce_events`,`3rd_party_custom_events`],VALID_DATA_RESIDENCY_REGIONS=[`va6`,`irl1`],EventProviderTypeSchema=v.picklist(VALID_EVENT_PROVIDER_TYPES),DataResidencyRegionSchema=v.picklist(VALID_DATA_RESIDENCY_REGIONS),EventProviderListAllParamsSchema=v.object({consumerOrgId:stringValueSchema(`consumerOrgId`),withEventMetadata:v.optional(booleanValueSchema(`withEventMetadata`)),filterBy:v.optional(v.object({instanceId:v.optional(stringValueSchema(`instanceId`)),providerTypes:v.optional(v.union([v.array(EventProviderTypeSchema,`Expected an array of event provider types`)]))}))}),EventProviderGetByIdParamsSchema=v.object({providerId:stringValueSchema(`providerId`),withEventMetadata:v.optional(booleanValueSchema(`withEventMetadata`))}),EventProviderCreateParamsSchema=v.object({consumerOrgId:stringValueSchema(`consumerOrgId`),projectId:stringValueSchema(`projectId`),workspaceId:stringValueSchema(`workspaceId`),label:stringValueSchema(`label`),description:v.optional(stringValueSchema(`description`)),docsUrl:v.optional(stringValueSchema(`docsUrl`)),instanceId:v.optional(stringValueSchema(`instanceId`)),providerType:v.optional(EventProviderTypeSchema),dataResidencyRegion:v.optional(DataResidencyRegionSchema)});var endpoints_exports$1={};__export(endpoints_exports$1,{createEventProvider:()=>createEventProvider,getAllEventProviders:()=>getAllEventProviders,getEventProviderById:()=>getEventProviderById});function getAllEventProviders(httpClient,params,fetchOptions){let validatedParams=parseOrThrow(EventProviderListAllParamsSchema,params),queryParams=new URLSearchParams,{providerTypes=[],instanceId}=validatedParams.filterBy??{};setArrayQueryParam(queryParams,`providerMetadataIds`,providerTypes),setQueryParamIfTruthy(queryParams,`instanceId`,instanceId),setQueryParamIfTruthy(queryParams,`eventmetadata`,validatedParams.withEventMetadata);let withHooksClient=httpClient.extend({hooks:{afterResponse:[buildCamelCaseKeysResponseHook()]}});return withHooksClient.get(`${validatedParams.consumerOrgId}/providers`,{...fetchOptions,searchParams:queryParams}).json()}function getEventProviderById(httpClient,params,fetchOptions){let validatedParams=parseOrThrow(EventProviderGetByIdParamsSchema,params),searchParams=new URLSearchParams;setQueryParamIfTruthy(searchParams,`eventmetadata`,validatedParams.withEventMetadata);let withHooksClient=httpClient.extend({hooks:{afterResponse:[buildCamelCaseKeysResponseHook()]}});return withHooksClient.get(`providers/${params.providerId}`,{...fetchOptions,searchParams}).json()}function createEventProvider(httpClient,params,fetchOptions){let validatedParams=parseOrThrow(EventProviderCreateParamsSchema,params),withHooksClient=httpClient.extend({hooks:{afterResponse:[buildCamelCaseKeysResponseHook()]}});return withHooksClient.post(`${validatedParams.consumerOrgId}/${validatedParams.projectId}/${validatedParams.workspaceId}/providers`,{...fetchOptions,json:{...validatedParams,docs_url:validatedParams.docsUrl,provider_metadata:validatedParams.providerType,instance_id:validatedParams.instanceId,data_residency_region:validatedParams.dataResidencyRegion}}).json()}var shorthands_exports={};__export(shorthands_exports,{create3rdPartyCustomEventProvider:()=>create3rdPartyCustomEventProvider,createCommerceEventProvider:()=>createCommerceEventProvider,getAll3rdPartyCustomEventProviders:()=>getAll3rdPartyCustomEventProviders,getAllCommerceEventProviders:()=>getAllCommerceEventProviders});function getAllCommerceEventProviders(httpClient,params,fetchOptions){return getAllEventProviders(httpClient,{...params,filterBy:{...params.filterBy,providerTypes:[`dx_commerce_events`]}},fetchOptions)}function getAll3rdPartyCustomEventProviders(httpClient,params,fetchOptions){return getAllEventProviders(httpClient,{...params,filterBy:{...params.filterBy,providerTypes:[`3rd_party_custom_events`]}},fetchOptions)}function createCommerceEventProvider(httpClient,params,fetchOptions){return createEventProvider(httpClient,{...params,providerType:`dx_commerce_events`},fetchOptions)}function create3rdPartyCustomEventProvider(httpClient,params,fetchOptions){return createEventProvider(httpClient,{...params,providerType:`3rd_party_custom_events`},fetchOptions)}function createAdobeIoEventsApiClient(params){return ApiClient.create(new AdobeIoEventsHttpClient(params),{...endpoints_exports$1,...endpoints_exports,...shorthands_exports})}function createCustomAdobeIoEventsApiClient(params,functions){return ApiClient.create(new AdobeIoEventsHttpClient(params),functions)}export{create3rdPartyCustomEventProvider,createAdobeIoEventsApiClient,createCommerceEventProvider,createCustomAdobeIoEventsApiClient,createEventMetadataForProvider,createEventProvider,getAll3rdPartyCustomEventProviders,getAllCommerceEventProviders,getAllEventMetadataForProvider,getAllEventProviders,getEventMetadataForEventAndProvider,getEventProviderById};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*
|
|
4
|
+
* Copyright 2025 Adobe. All rights reserved.
|
|
5
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
7
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
*
|
|
9
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
10
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
11
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
12
|
+
* governing permissions and limitations under the License.
|
|
13
|
+
*/
|
|
14
|
+
import{CommerceSdkValidationError}from"@adobe/aio-commerce-lib-core/error";import*as v from"valibot";import{getImsAuthProvider,getIntegrationAuthProvider}from"@adobe/aio-commerce-lib-auth";var __defProp=Object.defineProperty,__export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})};const UPPERCASE=/[\p{Lu}]/u,LOWERCASE=/[\p{Ll}]/u,LEADING_CAPITAL=/^[\p{Lu}](?![\p{Lu}])/gu,IDENTIFIER=/([\p{Alpha}\p{N}_]|$)/u,SEPARATORS=/[_.\- ]+/,LEADING_SEPARATORS=RegExp(`^`+SEPARATORS.source),SEPARATORS_AND_IDENTIFIER=new RegExp(SEPARATORS.source+IDENTIFIER.source,`gu`),NUMBERS_AND_IDENTIFIER=RegExp(`\\d+`+IDENTIFIER.source,`gu`),preserveCamelCase=(string,toLowerCase,toUpperCase,preserveConsecutiveUppercase$1)=>{let isLastCharLower=!1,isLastCharUpper=!1,isLastLastCharUpper=!1,isLastLastCharPreserved=!1;for(let index=0;index<string.length;index++){let character=string[index];isLastLastCharPreserved=index>2?string[index-3]===`-`:!0,isLastCharLower&&UPPERCASE.test(character)?(string=string.slice(0,index)+`-`+string.slice(index),isLastCharLower=!1,isLastLastCharUpper=isLastCharUpper,isLastCharUpper=!0,index++):isLastCharUpper&&isLastLastCharUpper&&LOWERCASE.test(character)&&(!isLastLastCharPreserved||preserveConsecutiveUppercase$1)?(string=string.slice(0,index-1)+`-`+string.slice(index-1),isLastLastCharUpper=isLastCharUpper,isLastCharUpper=!1,isLastCharLower=!0):(isLastCharLower=toLowerCase(character)===character&&toUpperCase(character)!==character,isLastLastCharUpper=isLastCharUpper,isLastCharUpper=toUpperCase(character)===character&&toLowerCase(character)!==character)}return string},preserveConsecutiveUppercase=(input,toLowerCase)=>(LEADING_CAPITAL.lastIndex=0,input.replaceAll(LEADING_CAPITAL,match=>toLowerCase(match))),postProcess=(input,toUpperCase)=>(SEPARATORS_AND_IDENTIFIER.lastIndex=0,NUMBERS_AND_IDENTIFIER.lastIndex=0,input.replaceAll(NUMBERS_AND_IDENTIFIER,(match,pattern,offset)=>[`_`,`-`].includes(input.charAt(offset+match.length))?match:toUpperCase(match)).replaceAll(SEPARATORS_AND_IDENTIFIER,(_,identifier)=>toUpperCase(identifier)));function camelCase(input,options){if(!(typeof input==`string`||Array.isArray(input)))throw TypeError("Expected the input to be `string | string[]`");if(options={pascalCase:!1,preserveConsecutiveUppercase:!1,...options},input=Array.isArray(input)?input.map(x=>x.trim()).filter(x=>x.length).join(`-`):input.trim(),input.length===0)return``;let toLowerCase=options.locale===!1?string=>string.toLowerCase():string=>string.toLocaleLowerCase(options.locale),toUpperCase=options.locale===!1?string=>string.toUpperCase():string=>string.toLocaleUpperCase(options.locale);if(input.length===1)return SEPARATORS.test(input)?``:options.pascalCase?toUpperCase(input):toLowerCase(input);let hasUpperCase=input!==toLowerCase(input);return hasUpperCase&&(input=preserveCamelCase(input,toLowerCase,toUpperCase,options.preserveConsecutiveUppercase)),input=input.replace(LEADING_SEPARATORS,``),input=options.preserveConsecutiveUppercase?preserveConsecutiveUppercase(input,toLowerCase):toLowerCase(input),options.pascalCase&&(input=toUpperCase(input.charAt(0))+input.slice(1)),postProcess(input,toUpperCase)}function buildObjectKeyTransformerResponseHook(transformer,recursive=!0){let transformObject=obj=>{if(typeof obj!=`object`||!obj)return obj;if(Array.isArray(obj))return recursive?obj.map(transformObject):obj;let transformedData=Object.fromEntries(Object.entries(obj).map(([key,value])=>{let transformedKey=transformer(key),transformedValue=recursive?transformObject(value):value;return[transformedKey,transformedValue]}));return transformedData};return(_req,_opt,response)=>response.json().then(data=>{let transformedData=transformObject(data);return new Response(JSON.stringify(transformedData),response)})}function buildCamelCaseKeysResponseHook(){return buildObjectKeyTransformerResponseHook(camelCase)}function parseOrThrow(schema,input){let result=v.safeParse(schema,input);if(!result.success)throw new CommerceSdkValidationError(`Invalid input`,{issues:result.issues});return result.output}const ALPHANUMERIC_OR_UNDERSCORE_REGEX=/^[a-zA-Z0-9_]+$/,ALPHANUMERIC_OR_UNDERSCORE_OR_HYPHEN_REGEX=/^[a-zA-Z0-9_-]+$/;function stringValueSchema(propertyName){return v.string(`Expected a string value for property '${propertyName}'`)}function booleanValueSchema(propertyName){return v.boolean(`Expected a boolean value for property '${propertyName}'`)}function alphaNumericOrUnderscoreSchema(name){return v.pipe(stringValueSchema(name),v.regex(ALPHANUMERIC_OR_UNDERSCORE_REGEX,`Only alphanumeric characters and underscores are allowed for "${name}"`))}function alphaNumericOrUnderscoreOrHyphenSchema(name){return v.pipe(stringValueSchema(name),v.regex(ALPHANUMERIC_OR_UNDERSCORE_OR_HYPHEN_REGEX,`Only alphanumeric characters, underscores, and hyphens are allowed for property "${name}"`))}var ApiClient=class{static create(client,functions){let wrapped={};for(let key in functions)if(Object.hasOwn(functions,key)){let fn=functions[key];wrapped[key]=((...args)=>fn(client,...args))}return wrapped}},HttpClientBase=class HttpClientBase{#httpClient;constructor(config,httpClient){this.#httpClient=Object.freeze(httpClient),this.config=Object.freeze(config),this.get=this.#httpClient.get.bind(this.#httpClient),this.post=this.#httpClient.post.bind(this.#httpClient),this.put=this.#httpClient.put.bind(this.#httpClient),this.delete=this.#httpClient.delete.bind(this.#httpClient),this.patch=this.#httpClient.patch.bind(this.#httpClient),this.head=this.#httpClient.head.bind(this.#httpClient),this.stop=this.#httpClient.stop}extend(options){let client=Object.freeze(this.#httpClient.extend(options));return new HttpClientBase(this.config,client)}};function isAuthProvider(auth){return`getHeaders`in auth}function buildIntegrationAuthBeforeRequestHook(integrationAuth){let integrationAuthProvider=isAuthProvider(integrationAuth)?integrationAuth:getIntegrationAuthProvider(integrationAuth);return request=>{let headers=integrationAuthProvider.getHeaders(request.method.toUpperCase(),request.url);request.headers.set(`Authorization`,headers.Authorization)}}function buildImsAuthBeforeRequestHook(imsAuth){let imsAuthProvider=isAuthProvider(imsAuth)?imsAuth:getImsAuthProvider(imsAuth);return async request=>{let headers=await imsAuthProvider.getHeaders();request.headers.set(`Authorization`,headers.Authorization),request.headers.set(`x-api-key`,headers[`x-api-key`])}}function ensureImsScopes(imsAuth,requiredScopes){let scopes=new Set([...imsAuth.scopes??[],...requiredScopes]);return{...imsAuth,scopes:Array.from(scopes)}}function optionallyExtendKy(ky,options){return options?ky.extend(options):ky}export{optionallyExtendKy as b,ensureImsScopes as c,buildImsAuthBeforeRequestHook as d,buildIntegrationAuthBeforeRequestHook as e,isAuthProvider as f,HttpClientBase as g,ApiClient as h,alphaNumericOrUnderscoreOrHyphenSchema as i,alphaNumericOrUnderscoreSchema as j,booleanValueSchema as k,stringValueSchema as l,parseOrThrow as m,buildCamelCaseKeysResponseHook as n,__export as o};
|
package/package.json
ADDED
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@adobe/aio-commerce-lib-events",
|
|
3
|
+
"type": "module",
|
|
4
|
+
"author": "Adobe Inc.",
|
|
5
|
+
"version": "0.1.0",
|
|
6
|
+
"private": false,
|
|
7
|
+
"engines": {
|
|
8
|
+
"node": ">=20 <=24"
|
|
9
|
+
},
|
|
10
|
+
"license": "Apache-2.0",
|
|
11
|
+
"description": "A library to interact with the Adobe I/O and Commerce Eventing APIs",
|
|
12
|
+
"keywords": [],
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/adobe/aio-commerce-sdk/issues"
|
|
15
|
+
},
|
|
16
|
+
"repository": {
|
|
17
|
+
"type": "git",
|
|
18
|
+
"url": "git+https://github.com/adobe/aio-commerce-sdk.git",
|
|
19
|
+
"directory": "packages/aio-commerce-lib-events"
|
|
20
|
+
},
|
|
21
|
+
"main": "./dist/cjs/index.cjs",
|
|
22
|
+
"module": "./dist/es/index.js",
|
|
23
|
+
"types": "./dist/cjs/index.d.cts",
|
|
24
|
+
"exports": {
|
|
25
|
+
".": {
|
|
26
|
+
"import": {
|
|
27
|
+
"types": "./dist/es/index.d.ts",
|
|
28
|
+
"default": "./dist/es/index.js"
|
|
29
|
+
},
|
|
30
|
+
"require": {
|
|
31
|
+
"types": "./dist/cjs/index.d.cts",
|
|
32
|
+
"default": "./dist/cjs/index.cjs"
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"./package.json": "./package.json"
|
|
36
|
+
},
|
|
37
|
+
"files": [
|
|
38
|
+
"dist",
|
|
39
|
+
"package.json",
|
|
40
|
+
"CHANGELOG.md",
|
|
41
|
+
"README.md"
|
|
42
|
+
],
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"ky": "^1.9.0",
|
|
45
|
+
"valibot": "^1.1.0",
|
|
46
|
+
"@adobe/aio-commerce-lib-auth": "0.3.4",
|
|
47
|
+
"@adobe/aio-commerce-lib-core": "0.4.1"
|
|
48
|
+
},
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"@aio-commerce-sdk/aio-commerce-lib-api": "0.1.0",
|
|
51
|
+
"@aio-commerce-sdk/config-tsdown": "1.0.0",
|
|
52
|
+
"@aio-commerce-sdk/config-typedoc": "1.0.0",
|
|
53
|
+
"@aio-commerce-sdk/config-vitest": "1.0.0",
|
|
54
|
+
"@aio-commerce-sdk/config-typescript": "1.0.0"
|
|
55
|
+
},
|
|
56
|
+
"sideEffects": false,
|
|
57
|
+
"scripts": {
|
|
58
|
+
"build": "tsdown",
|
|
59
|
+
"docs": "typedoc && prettier --write '**/*.md'",
|
|
60
|
+
"assist": "biome check --formatter-enabled=false --linter-enabled=false --assist-enabled=true --no-errors-on-unmatched",
|
|
61
|
+
"assist:apply": "biome check --write --formatter-enabled=false --linter-enabled=false --assist-enabled=true --no-errors-on-unmatched",
|
|
62
|
+
"check:ci": "biome ci --formatter-enabled=true --linter-enabled=true --assist-enabled=true --no-errors-on-unmatched",
|
|
63
|
+
"format": "biome format --write --no-errors-on-unmatched",
|
|
64
|
+
"format:markdown": "prettier --no-error-on-unmatched-pattern --write '**/*.md' \"!**/{CODE_OF_CONDUCT.md,COPYRIGHT,LICENSE,SECURITY.md,CONTRIBUTING.md}\"",
|
|
65
|
+
"format:check": "biome format --no-errors-on-unmatched",
|
|
66
|
+
"lint": "biome lint --no-errors-on-unmatched",
|
|
67
|
+
"lint:fix": "biome lint --write --no-errors-on-unmatched",
|
|
68
|
+
"typecheck": "tsc --noEmit && echo '✅ No type errors found.'",
|
|
69
|
+
"test": "vitest run",
|
|
70
|
+
"test:watch": "vitest --watch"
|
|
71
|
+
}
|
|
72
|
+
}
|