diff --git a/CHANGELOG.md b/CHANGELOG.md index ea3d0067..2ea4f70b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,16 @@ +## 3.0.0-stage.2 (2026-01-09) + +* feat: improve cache policy in presets and config (#346) ([79d3541](https://github.com/aziontech/lib/commit/79d3541)), closes [#346](https://github.com/aziontech/lib/issues/346) + +## 3.0.0-stage.1 (2026-01-08) + +* fix: rename edge_access to workloads_access (#345) ([f9f5bd9](https://github.com/aziontech/lib/commit/f9f5bd9)), closes [#345](https://github.com/aziontech/lib/issues/345) + + +### BREAKING CHANGE + +* rename edge_access to workloads_access in the storage package. + ## 2.3.3 (2026-01-07) * Merge pull request #344 from aziontech/stage ([2556f52](https://github.com/aziontech/lib/commit/2556f52)), closes [#344](https://github.com/aziontech/lib/issues/344) diff --git a/README.md b/README.md index 38b78f13..bcadb228 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ const client: StorageClient = createClient({ token: 'your-api-token', debug: tru const { data, error }: AzionStorageResponse = await client.createBucket({ name: 'my-new-bucket', - edge_access: 'public', + workloads_access: 'read_only', }); if (data) { @@ -120,7 +120,7 @@ import { createClient } from 'azion'; const client = createClient({ token: 'your-api-token', debug: true }); // Storage -const { data: newBucket, error } = await client.storage.createBucket({ name: 'my-new-bucket', edge_access: 'public' }); +const { data: newBucket, error } = await client.storage.createBucket({ name: 'my-new-bucket', workloads_access: 'read_only' }); console.log(`Bucket created with name: ${newBucket.name}`); const { data: allBuckets, error } = await client.storage.getBuckets(); @@ -152,7 +152,7 @@ const client: AzionClient = createClient({ token: 'your-api-token', debug: true // Storage const { data: newBucket, error }: AzionStorageResponse = await client.createBucket({ name: 'my-new-bucket', - edge_access: 'public', + workloads_access: 'read_only', }); console.log(`Bucket created with name: ${newBucket.name}`); diff --git a/package.json b/package.json index 3b71f74c..de2023f7 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "azion", - "version": "2.3.3", + "version": "3.0.0-stage.2", "description": "Azion Packages for Edge Computing.", "scripts": { "prepare": "husky", diff --git a/packages/client/README.MD b/packages/client/README.MD index f49abb8f..b41139d1 100644 --- a/packages/client/README.MD +++ b/packages/client/README.MD @@ -70,7 +70,7 @@ import { createClient } from 'azion'; const client = createClient({ token: 'your-api-token', debug: true }); -const { data: newBucket } = await client.storage.createBucket('my-new-bucket', 'public'); +const { data: newBucket } = await client.storage.createBucket('my-new-bucket', 'read_only'); if (newBucket) { console.log(`Bucket created with name: ${newBucket.name}`); } @@ -102,7 +102,7 @@ const client: AzionClient = createClient({ token: 'your-api-token', debug: true const { data: newBucket }: AzionStorageResponse = await client.storage.createBucket( 'my-new-bucket', - 'public', + 'read_only', ); if (newBucket) { console.log(`Bucket created with name: ${newBucket.name}`); diff --git a/packages/client/src/types.ts b/packages/client/src/types.ts index dedb914a..6b272528 100644 --- a/packages/client/src/types.ts +++ b/packages/client/src/types.ts @@ -25,7 +25,7 @@ export interface AzionClient { * * @example * // Create a new bucket - * const newBucket = await client.storage.createBucket({ name: 'my-new-bucket', edge_access: 'public' }); + * const newBucket = await client.storage.createBucket({ name: 'my-new-bucket', workloads_access: 'read_only' }); * * @example * // Get all buckets diff --git a/packages/config/README.md b/packages/config/README.md index d59ab274..8947b6b6 100644 --- a/packages/config/README.md +++ b/packages/config/README.md @@ -236,7 +236,7 @@ const config = defineConfig({ storage: [ { name: 'my-storage', - edgeAccess: 'read_write', + workloadsAccess: 'read_write', dir: './storage', prefix: '1236677364374', }, @@ -699,7 +699,7 @@ Type definition for storage configuration. - `name: string` - Name of the storage (6-63 characters). - `dir: string` - Local directory path. -- `edgeAccess?: 'read_only' | 'read_write' | 'restricted'` - access permissions. +- `workloadsAccess?: 'read_only' | 'read_write' | 'restricted'` - access permissions. - `prefix: string` - Storage prefix. ### `AzionCache` diff --git a/packages/config/src/configProcessor/converterJsonConfig/index.test.ts b/packages/config/src/configProcessor/converterJsonConfig/index.test.ts index 88912276..3e500c00 100644 --- a/packages/config/src/configProcessor/converterJsonConfig/index.test.ts +++ b/packages/config/src/configProcessor/converterJsonConfig/index.test.ts @@ -290,7 +290,7 @@ describe('convertJsonConfigToObject', () => { // { // name: 'my-storage', // dir: './public', -// edgeAccess: 'read_only', +// workloadsAccess: 'read_only', // }, // ], // }; @@ -301,7 +301,7 @@ describe('convertJsonConfigToObject', () => { // expect.objectContaining({ // name: 'my-storage', // dir: './public', -// edgeAccess: 'read_only', +// workloadsAccess: 'read_only', // }), // ]), // ); diff --git a/packages/config/src/configProcessor/helpers/azion.config.example.ts b/packages/config/src/configProcessor/helpers/azion.config.example.ts index 4de9fa6c..5cd9fd39 100644 --- a/packages/config/src/configProcessor/helpers/azion.config.example.ts +++ b/packages/config/src/configProcessor/helpers/azion.config.example.ts @@ -1,21 +1,21 @@ import type { - AzionConfig, - AzionConnector, - CacheByCookie, - CacheByQueryString, - ConnectorDnsResolution, - ConnectorHttpVersionPolicy, - ConnectorTransportPolicy, - ConnectorType, - CustomPageErrorCode, - CustomPageType, - NetworkListType, - WafSensitivity, - WafThreatType, - WorkloadInfrastructure, - WorkloadMTLSVerification, - WorkloadTLSCipher, - WorkloadTLSVersion, + AzionConfig, + AzionConnector, + CacheByCookie, + CacheByQueryString, + ConnectorDnsResolution, + ConnectorHttpVersionPolicy, + ConnectorTransportPolicy, + ConnectorType, + CustomPageErrorCode, + CustomPageType, + NetworkListType, + WafSensitivity, + WafThreatType, + WorkloadInfrastructure, + WorkloadMTLSVerification, + WorkloadTLSCipher, + WorkloadTLSVersion, } from 'azion/config'; const config: AzionConfig = { @@ -411,7 +411,7 @@ const config: AzionConfig = { storage: [ { name: 'my-storage', - edgeAccess: 'read_write', // 'read_only' | 'read_write' | 'restricted' + workloadsAccess: 'read_write', // 'read_only' | 'read_write' | 'restricted' dir: './storage', prefix: '1236677364374', }, diff --git a/packages/config/src/configProcessor/helpers/schema.ts b/packages/config/src/configProcessor/helpers/schema.ts index ca46ffc6..d1510ee6 100644 --- a/packages/config/src/configProcessor/helpers/schema.ts +++ b/packages/config/src/configProcessor/helpers/schema.ts @@ -5,7 +5,6 @@ import { COOKIE_BEHAVIORS, CUSTOM_PAGE_ERROR_CODES, CUSTOM_PAGE_TYPES, - EDGE_ACCESS_TYPES, EDGE_CONNECTOR_DNS_RESOLUTION, EDGE_CONNECTOR_HMAC_TYPE, EDGE_CONNECTOR_HTTP_VERSION_POLICY, @@ -28,6 +27,7 @@ import { WORKLOAD_HTTP_VERSIONS, WORKLOAD_MTLS_VERIFICATION, WORKLOAD_TLS_VERSIONS, + WORKLOADS_ACCESS_TYPES, } from '../../constants'; const createCriteriaBaseSchema = (isRequestPhase = false) => ({ @@ -447,10 +447,10 @@ const schemaStorage = { type: 'string', errorMessage: "The 'dir' field must be a string.", }, - edgeAccess: { + workloadsAccess: { type: 'string', - enum: EDGE_ACCESS_TYPES, - errorMessage: "The 'edge_access' field must be one of: read_only, read_write, restricted.", + enum: WORKLOADS_ACCESS_TYPES, + errorMessage: "The 'workloads_access' field must be one of: read_only, read_write, restricted.", }, prefix: { type: 'string', @@ -609,8 +609,7 @@ const azionConfigSchema = { type: 'string', minLength: 1, maxLength: 250, - pattern: "^[a-zA-Z0-9 \\-.',|]+$", - errorMessage: "The 'name' field must be a string between 1-250 characters with valid pattern.", + errorMessage: "The 'name' field must be a string with 1 to 250 characters", }, stale: { type: 'boolean', @@ -638,13 +637,13 @@ const azionConfigSchema = { }, required: ['enabled'], if: { - properties: { enabled: { const: true } } + properties: { enabled: { const: true } }, }, then: { required: ['enabled', 'topology'], errorMessage: { - required: "When 'enabled' is true, 'topology' is required in the 'tiered_cache' object." - } + required: "When 'enabled' is true, 'topology' is required in the 'tiered_cache' object.", + }, }, additionalProperties: false, errorMessage: { diff --git a/packages/config/src/configProcessor/helpers/schemaManifest.ts b/packages/config/src/configProcessor/helpers/schemaManifest.ts index d6db8000..25d32a62 100644 --- a/packages/config/src/configProcessor/helpers/schemaManifest.ts +++ b/packages/config/src/configProcessor/helpers/schemaManifest.ts @@ -1,44 +1,44 @@ import { - APPLICATION_DELIVERY_PROTOCOLS, - APPLICATION_HTTP_PORTS, - APPLICATION_HTTPS_PORTS, - APPLICATION_SUPPORTED_CIPHERS, - APPLICATION_TLS_VERSIONS, - CACHE_ADAPTIVE_DELIVERY, - CACHE_BROWSER_SETTINGS, - CACHE_BY_COOKIE, - CACHE_BY_QUERY_STRING, - CACHE_CDN_SETTINGS, - CACHE_VARY_BY_METHOD, - COOKIE_BEHAVIORS, - CUSTOM_PAGE_ERROR_CODES, - EDGE_CONNECTOR_DNS_RESOLUTION, - EDGE_CONNECTOR_HMAC_TYPE, - EDGE_CONNECTOR_HTTP_VERSION_POLICY, - EDGE_CONNECTOR_LOAD_BALANCE_METHOD, - EDGE_CONNECTOR_TRANSPORT_POLICY, - EDGE_CONNECTOR_TYPES, - FIREWALL_BEHAVIOR_NAMES, - FIREWALL_RATE_LIMIT_BY, - FIREWALL_RATE_LIMIT_TYPES, - FIREWALL_RULE_CONDITIONALS, - FIREWALL_RULE_OPERATORS, - FIREWALL_VARIABLES, - FIREWALL_WAF_MODES, - HEADER_BEHAVIORS, - ID_BEHAVIORS, - NETWORK_LIST_TYPES, - NO_ARGS_BEHAVIORS, - RULE_CONDITIONALS, - RULE_OPERATORS_WITH_VALUE, - RULE_OPERATORS_WITHOUT_VALUE, - RULE_VARIABLES, - STRING_BEHAVIORS, - TIERED_CACHE_TOPOLOGY, - WAF_ENGINE_VERSIONS, - WORKLOAD_HTTP_VERSIONS, - WORKLOAD_MTLS_VERIFICATION, - WORKLOAD_TLS_VERSIONS, + APPLICATION_DELIVERY_PROTOCOLS, + APPLICATION_HTTP_PORTS, + APPLICATION_HTTPS_PORTS, + APPLICATION_SUPPORTED_CIPHERS, + APPLICATION_TLS_VERSIONS, + CACHE_ADAPTIVE_DELIVERY, + CACHE_BROWSER_SETTINGS, + CACHE_BY_COOKIE, + CACHE_BY_QUERY_STRING, + CACHE_CDN_SETTINGS, + CACHE_VARY_BY_METHOD, + COOKIE_BEHAVIORS, + CUSTOM_PAGE_ERROR_CODES, + EDGE_CONNECTOR_DNS_RESOLUTION, + EDGE_CONNECTOR_HMAC_TYPE, + EDGE_CONNECTOR_HTTP_VERSION_POLICY, + EDGE_CONNECTOR_LOAD_BALANCE_METHOD, + EDGE_CONNECTOR_TRANSPORT_POLICY, + EDGE_CONNECTOR_TYPES, + FIREWALL_BEHAVIOR_NAMES, + FIREWALL_RATE_LIMIT_BY, + FIREWALL_RATE_LIMIT_TYPES, + FIREWALL_RULE_CONDITIONALS, + FIREWALL_RULE_OPERATORS, + FIREWALL_VARIABLES, + FIREWALL_WAF_MODES, + HEADER_BEHAVIORS, + ID_BEHAVIORS, + NETWORK_LIST_TYPES, + NO_ARGS_BEHAVIORS, + RULE_CONDITIONALS, + RULE_OPERATORS_WITH_VALUE, + RULE_OPERATORS_WITHOUT_VALUE, + RULE_VARIABLES, + STRING_BEHAVIORS, + TIERED_CACHE_TOPOLOGY, + WAF_ENGINE_VERSIONS, + WORKLOAD_HTTP_VERSIONS, + WORKLOAD_MTLS_VERIFICATION, + WORKLOAD_TLS_VERSIONS, } from '../../constants'; const schemaNetworkListManifest = { @@ -239,10 +239,10 @@ const schemaStorageManifest = { type: 'string', errorMessage: "The 'dir' field must be a string.", }, - edge_access: { + workloads_access: { type: 'string', enum: ['read_only', 'read_write', 'restricted'], - errorMessage: "The 'edge_access' field must be one of: read_only, read_write, restricted.", + errorMessage: "The 'workloads_access' field must be one of: read_only, read_write, restricted.", }, prefix: { type: 'string', diff --git a/packages/config/src/configProcessor/processStrategy/implementations/storageProcessConfigStrategy.test.ts b/packages/config/src/configProcessor/processStrategy/implementations/storageProcessConfigStrategy.test.ts index 85d437e3..9852c343 100644 --- a/packages/config/src/configProcessor/processStrategy/implementations/storageProcessConfigStrategy.test.ts +++ b/packages/config/src/configProcessor/processStrategy/implementations/storageProcessConfigStrategy.test.ts @@ -27,7 +27,7 @@ describe('StorageProcessConfigStrategy', () => { { name: 'my-storage', dir: './public', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', prefix: 'assets', }, ], @@ -38,14 +38,14 @@ describe('StorageProcessConfigStrategy', () => { expect(result).toEqual([ { name: 'my-storage', - edge_access: 'read_only', + workloads_access: 'read_only', dir: './public', prefix: 'assets', }, ]); }); - it('should use default edge_access when not provided', () => { + it('should use default workloads_access when not provided', () => { const config: AzionConfig = { storage: [ { @@ -61,7 +61,7 @@ describe('StorageProcessConfigStrategy', () => { expect(result).toEqual([ { name: 'my-storage', - edge_access: 'read_only', + workloads_access: 'read_only', dir: './public', prefix: 'assets', }, @@ -74,13 +74,13 @@ describe('StorageProcessConfigStrategy', () => { { name: 'storage-1', dir: './public', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', prefix: 'assets', }, { name: 'storage-2', dir: './static', - edgeAccess: 'read_write', + workloadsAccess: 'read_write', prefix: 'images', }, ], @@ -91,8 +91,8 @@ describe('StorageProcessConfigStrategy', () => { expect(result).toHaveLength(2); expect(result![0].name).toBe('storage-1'); expect(result![1].name).toBe('storage-2'); - expect(result![0].edge_access).toBe('read_only'); - expect(result![1].edge_access).toBe('read_write'); + expect(result![0].workloads_access).toBe('read_only'); + expect(result![1].workloads_access).toBe('read_write'); }); }); @@ -116,7 +116,7 @@ describe('StorageProcessConfigStrategy', () => { storage: [ { name: 'my-storage', - edge_access: 'read_only', + workloads_access: 'read_only', dir: './public', prefix: 'assets', }, @@ -129,7 +129,7 @@ describe('StorageProcessConfigStrategy', () => { expect(result).toEqual([ { name: 'my-storage', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', dir: './public', prefix: 'assets', }, @@ -137,14 +137,14 @@ describe('StorageProcessConfigStrategy', () => { expect(transformedPayload.storage).toEqual([ { name: 'my-storage', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', dir: './public', prefix: 'assets', }, ]); }); - it('should use default edgeAccess when not provided', () => { + it('should use default workloadsAccess when not provided', () => { const payload = { storage: [ { @@ -158,7 +158,7 @@ describe('StorageProcessConfigStrategy', () => { const result = strategy.transformToConfig(payload, transformedPayload); - expect(result![0].edgeAccess).toBe('read_only'); + expect(result![0].workloadsAccess).toBe('read_only'); }); it('should transform multiple storage manifests to config format', () => { @@ -166,13 +166,13 @@ describe('StorageProcessConfigStrategy', () => { storage: [ { name: 'storage-1', - edge_access: 'read_only', + workloads_access: 'read_only', dir: './public', prefix: 'assets', }, { name: 'storage-2', - edge_access: 'read_write', + workloads_access: 'read_write', dir: './static', prefix: 'images', }, @@ -185,8 +185,8 @@ describe('StorageProcessConfigStrategy', () => { expect(result).toHaveLength(2); expect(result![0].name).toBe('storage-1'); expect(result![1].name).toBe('storage-2'); - expect(result![0].edgeAccess).toBe('read_only'); - expect(result![1].edgeAccess).toBe('read_write'); + expect(result![0].workloadsAccess).toBe('read_only'); + expect(result![1].workloadsAccess).toBe('read_write'); expect(transformedPayload.storage).toEqual(result); }); @@ -195,7 +195,7 @@ describe('StorageProcessConfigStrategy', () => { storage: [ { name: 'new-storage', - edge_access: 'read_only', + workloads_access: 'read_only', dir: './public', prefix: 'assets', }, @@ -205,7 +205,7 @@ describe('StorageProcessConfigStrategy', () => { storage: [ { name: 'existing-storage', - edgeAccess: 'read_write', + workloadsAccess: 'read_write', dir: './existing', prefix: 'existing', }, diff --git a/packages/config/src/configProcessor/processStrategy/implementations/storageProcessConfigStrategy.ts b/packages/config/src/configProcessor/processStrategy/implementations/storageProcessConfigStrategy.ts index 33a10bbb..e6da73a0 100644 --- a/packages/config/src/configProcessor/processStrategy/implementations/storageProcessConfigStrategy.ts +++ b/packages/config/src/configProcessor/processStrategy/implementations/storageProcessConfigStrategy.ts @@ -14,7 +14,7 @@ class StorageProcessConfigStrategy extends ProcessConfigStrategy { return config.storage.map((item) => ({ name: item.name, - edge_access: item.edgeAccess || 'read_only', + workloads_access: item.workloadsAccess || 'read_only', dir: item.dir, prefix: item.prefix, })); @@ -29,7 +29,7 @@ class StorageProcessConfigStrategy extends ProcessConfigStrategy { transformedPayload.storage = storageConfig.map((item) => ({ name: item.name, - edgeAccess: item.edge_access || 'read_only', + workloadsAccess: item.workloads_access || 'read_only', dir: item.dir, prefix: item.prefix, })); diff --git a/packages/config/src/constants.ts b/packages/config/src/constants.ts index b4ac5ba7..c0f1e383 100644 --- a/packages/config/src/constants.ts +++ b/packages/config/src/constants.ts @@ -192,7 +192,7 @@ export const CACHE_L2_REGION = [null, 'sa-brazil', 'na-united-states'] as const; export const BUILD_BUNDLERS = ['webpack', 'esbuild'] as const; // Constantes para Storage -export const EDGE_ACCESS_TYPES = ['read_only', 'read_write', 'restricted'] as const; +export const WORKLOADS_ACCESS_TYPES = ['read_only', 'read_write', 'restricted'] as const; // Constantes para Origins export const ORIGIN_TYPES = ['single_origin', 'load_balancer', 'live_ingest', 'object_storage'] as const; diff --git a/packages/config/src/rules/request/createMPA.test.ts b/packages/config/src/rules/request/createMPA.test.ts index 94a0e37c..2ae2458f 100644 --- a/packages/config/src/rules/request/createMPA.test.ts +++ b/packages/config/src/rules/request/createMPA.test.ts @@ -17,8 +17,8 @@ describe('createMPARules', () => { // Check static assets rule const staticAssetsRule = rules.request?.[0]; expect(staticAssetsRule).toEqual({ - name: 'Deliver Static Assets', - description: 'Deliver static assets directly from storage', + name: 'Deliver Static Assets and Set Cache Policy', + description: 'Deliver static assets directly from storage and set cache policy', active: true, criteria: [ [ @@ -37,6 +37,12 @@ describe('createMPARules', () => { value: 'name-connector', }, }, + { + type: 'set_cache_policy', + attributes: { + value: 'name-application', + }, + }, { type: 'deliver', }, diff --git a/packages/config/src/rules/request/createMPA.ts b/packages/config/src/rules/request/createMPA.ts index fe64d837..38c7b82a 100644 --- a/packages/config/src/rules/request/createMPA.ts +++ b/packages/config/src/rules/request/createMPA.ts @@ -12,22 +12,24 @@ import { ALL_EXTENSIONS } from '../constants'; * * @param options Configuration options for the MPA rules * @param options.connector The name of the edge connector to use + * @param options.application The name of the application to use * @param options.staticExtensions List of file extensions to be treated as static assets * @returns Array of rules configured for MPA hosting on Azion Edge */ export function createMPARules( options: { connector?: string; + application?: string; staticExtensions?: string[]; } = {}, ): AzionRules { - const { connector = 'name-connector', staticExtensions = ALL_EXTENSIONS } = options; + const { connector = 'name-connector', application = 'name-application', staticExtensions = ALL_EXTENSIONS } = options; return { request: [ { - name: 'Deliver Static Assets', - description: 'Deliver static assets directly from storage', + name: 'Deliver Static Assets and Set Cache Policy', + description: 'Deliver static assets directly from storage and set cache policy', active: true, criteria: [ [ @@ -46,6 +48,12 @@ export function createMPARules( value: connector, }, }, + { + type: 'set_cache_policy', + attributes: { + value: application, + }, + }, { type: 'deliver', }, diff --git a/packages/config/src/rules/request/createSPA.test.ts b/packages/config/src/rules/request/createSPA.test.ts index e562b01b..b7acd3fc 100644 --- a/packages/config/src/rules/request/createSPA.test.ts +++ b/packages/config/src/rules/request/createSPA.test.ts @@ -17,8 +17,8 @@ describe('createSPARules', () => { // Check static assets rule const staticAssetsRule = rules.request?.[0]; expect(staticAssetsRule).toEqual({ - name: 'Deliver Static Assets', - description: 'Deliver static assets directly from storage', + name: 'Deliver Static Assets and Set Cache Policy', + description: 'Deliver static assets directly from storage and set cache policy', active: true, criteria: [ [ @@ -37,6 +37,12 @@ describe('createSPARules', () => { value: 'name-connector', }, }, + { + type: 'set_cache_policy', + attributes: { + value: 'name-application', + }, + }, { type: 'deliver', }, diff --git a/packages/config/src/rules/request/createSPA.ts b/packages/config/src/rules/request/createSPA.ts index 733ff98f..c9be242d 100644 --- a/packages/config/src/rules/request/createSPA.ts +++ b/packages/config/src/rules/request/createSPA.ts @@ -12,22 +12,24 @@ import { ALL_EXTENSIONS } from '../constants'; * * @param options Configuration options for the SPA rules * @param options.connector The name of the edge connector to use + * @param options.application The name of the application to use * @param options.staticExtensions List of file extensions to be treated as static assets * @returns Array of rules configured for SPA hosting on Azion Edge */ export function createSPARules( options: { connector?: string; + application?: string; staticExtensions?: string[]; } = {}, ): AzionRules { - const { connector = 'name-connector', staticExtensions = ALL_EXTENSIONS } = options; + const { connector = 'name-connector', application = 'name-application', staticExtensions = ALL_EXTENSIONS } = options; return { request: [ { - name: 'Deliver Static Assets', - description: 'Deliver static assets directly from storage', + name: 'Deliver Static Assets and Set Cache Policy', + description: 'Deliver static assets directly from storage and set cache policy', active: true, criteria: [ [ @@ -46,6 +48,12 @@ export function createSPARules( value: connector, }, }, + { + type: 'set_cache_policy', + attributes: { + value: application, + }, + }, { type: 'deliver', }, diff --git a/packages/config/src/types.ts b/packages/config/src/types.ts index ccbfd375..2103dce9 100644 --- a/packages/config/src/types.ts +++ b/packages/config/src/types.ts @@ -162,7 +162,7 @@ export type TieredCacheTopology = 'nearest-region' | 'br-east-1' | 'us-east-1'; // Build types export type BuildBundler = 'webpack' | 'esbuild'; -export type EdgeAccessType = 'read_only' | 'read_write' | 'restricted'; +export type workloadsAccessType = 'read_only' | 'read_write' | 'restricted'; // Functions types export type FunctionRuntime = 'azion_js'; @@ -527,7 +527,7 @@ export type AzionBucket = { /** Storage name */ name: string; /** access type */ - edgeAccess?: 'read_only' | 'read_write' | 'restricted'; + workloadsAccess?: 'read_only' | 'read_write' | 'restricted'; /** Storage path */ dir: string; /** Storage prefix */ diff --git a/packages/presets/src/presets/angular/config.ts b/packages/presets/src/presets/angular/config.ts index 1116364b..f5dac6f7 100644 --- a/packages/presets/src/presets/angular/config.ts +++ b/packages/presets/src/presets/angular/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './dist', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createSPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/presets/src/presets/astro/config.ts b/packages/presets/src/presets/astro/config.ts index d2de5909..6a4439c1 100644 --- a/packages/presets/src/presets/astro/config.ts +++ b/packages/presets/src/presets/astro/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './dist', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createMPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/presets/src/presets/docusaurus/config.ts b/packages/presets/src/presets/docusaurus/config.ts index d5a45539..f8cd1421 100644 --- a/packages/presets/src/presets/docusaurus/config.ts +++ b/packages/presets/src/presets/docusaurus/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './build', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createMPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/presets/src/presets/eleventy/config.ts b/packages/presets/src/presets/eleventy/config.ts index 2c1f0ff9..b61fcf65 100644 --- a/packages/presets/src/presets/eleventy/config.ts +++ b/packages/presets/src/presets/eleventy/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './_site', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createMPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/presets/src/presets/gatsby/config.ts b/packages/presets/src/presets/gatsby/config.ts index 49ef0ac4..7aa44ce3 100644 --- a/packages/presets/src/presets/gatsby/config.ts +++ b/packages/presets/src/presets/gatsby/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './public', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createMPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/presets/src/presets/hexo/config.ts b/packages/presets/src/presets/hexo/config.ts index 49ef0ac4..7aa44ce3 100644 --- a/packages/presets/src/presets/hexo/config.ts +++ b/packages/presets/src/presets/hexo/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './public', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createMPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/presets/src/presets/html/config.ts b/packages/presets/src/presets/html/config.ts index 30012633..442415cb 100644 --- a/packages/presets/src/presets/html/config.ts +++ b/packages/presets/src/presets/html/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './www', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createMPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/presets/src/presets/hugo/config.ts b/packages/presets/src/presets/hugo/config.ts index 49ef0ac4..7aa44ce3 100644 --- a/packages/presets/src/presets/hugo/config.ts +++ b/packages/presets/src/presets/hugo/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './public', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createMPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/presets/src/presets/jekyll/config.ts b/packages/presets/src/presets/jekyll/config.ts index 2c1f0ff9..b61fcf65 100644 --- a/packages/presets/src/presets/jekyll/config.ts +++ b/packages/presets/src/presets/jekyll/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './_site', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createMPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/presets/src/presets/next/config.ts b/packages/presets/src/presets/next/config.ts index 6ba13078..10a64757 100644 --- a/packages/presets/src/presets/next/config.ts +++ b/packages/presets/src/presets/next/config.ts @@ -8,7 +8,7 @@ const config: AzionConfig = { { name: '$BUCKET_NAME', dir: '.edge/next-build-assets', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', prefix: '$BUCKET_PREFIX', }, ], @@ -38,11 +38,22 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: { request: [ { - name: 'Next.js Static Assets', - description: 'Serve Next.js static assets through edge connector', + name: 'Next.js Static Assets and set cache policy', + description: 'Serve Next.js static assets through edge connector and set cache policy', active: true, criteria: [ [ @@ -61,14 +72,20 @@ const config: AzionConfig = { value: '$CONNECTOR_NAME', }, }, + { + type: 'set_cache_policy', + attributes: { + value: '$APPLICATION_NAME', + }, + }, { type: 'deliver', }, ], }, { - name: 'Deliver Static Assets', - description: 'Serve static assets through edge connector', + name: 'Deliver Static Assets and set cache policy', + description: 'Serve static assets through edge connector and set cache policy', active: true, criteria: [ [ @@ -87,6 +104,12 @@ const config: AzionConfig = { value: '$CONNECTOR_NAME', }, }, + { + type: 'set_cache_policy', + attributes: { + value: '$APPLICATION_NAME', + }, + }, { type: 'deliver', }, diff --git a/packages/presets/src/presets/nuxt/config.ts b/packages/presets/src/presets/nuxt/config.ts index 619e163f..395361d3 100644 --- a/packages/presets/src/presets/nuxt/config.ts +++ b/packages/presets/src/presets/nuxt/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: '.output/public', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -39,11 +39,22 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: { request: [ { - name: 'Nuxt Static Assets', - description: 'Serve Nuxt static assets through edge connector', + name: 'Nuxt Static Assets and set cache policy', + description: 'Serve Nuxt static assets through edge connector and set cache policy', active: true, criteria: [ [ @@ -62,6 +73,12 @@ const config: AzionConfig = { value: '$CONNECTOR_NAME', }, }, + { + type: 'set_cache_policy', + attributes: { + value: '$APPLICATION_NAME', + }, + }, { type: 'deliver', }, @@ -156,8 +173,8 @@ const config: AzionConfig = { ], }, { - name: 'Deliver Static Assets', - description: 'Deliver static assets directly from storage', + name: 'Deliver Static Assets and set cache policy', + description: 'Deliver static assets directly from storage and set cache policy', active: true, criteria: [ [ @@ -177,6 +194,12 @@ const config: AzionConfig = { value: '$CONNECTOR_NAME', }, }, + { + type: 'set_cache_policy', + attributes: { + value: '$APPLICATION_NAME', + }, + }, { type: 'deliver', }, diff --git a/packages/presets/src/presets/opennextjs/config.ts b/packages/presets/src/presets/opennextjs/config.ts index b11e36e1..c87a0ecb 100644 --- a/packages/presets/src/presets/opennextjs/config.ts +++ b/packages/presets/src/presets/opennextjs/config.ts @@ -12,7 +12,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './.edge/assets', - edgeAccess: 'read_write', + workloadsAccess: 'read_write', }, ], connectors: [ @@ -41,11 +41,22 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: { request: [ { - name: 'Set storage origin for all requests _next_static', - description: 'Serve Next.js static assets through edge connector', + name: 'Set storage origin for all requests _next_static and set cache policy', + description: 'Serve Next.js static assets through edge connector and set cache policy', active: true, criteria: [ [ @@ -64,14 +75,20 @@ const config: AzionConfig = { value: '$CONNECTOR_NAME', }, }, + { + type: 'set_cache_policy', + attributes: { + value: '$APPLICATION_NAME', + }, + }, { type: 'deliver', }, ], }, { - name: 'Deliver Static Assets', - description: 'Serve static assets through edge connector', + name: 'Deliver Static Assets and set cache policy', + description: 'Serve static assets through edge connector and set cache policy', active: true, criteria: [ [ @@ -90,6 +107,12 @@ const config: AzionConfig = { value: '$CONNECTOR_NAME', }, }, + { + type: 'set_cache_policy', + attributes: { + value: '$APPLICATION_NAME', + }, + }, { type: 'deliver', }, diff --git a/packages/presets/src/presets/preact/config.ts b/packages/presets/src/presets/preact/config.ts index 73c41bc7..84b14393 100644 --- a/packages/presets/src/presets/preact/config.ts +++ b/packages/presets/src/presets/preact/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './.edge/assets', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createSPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/presets/src/presets/qwik/config.ts b/packages/presets/src/presets/qwik/config.ts index 73c41bc7..84b14393 100644 --- a/packages/presets/src/presets/qwik/config.ts +++ b/packages/presets/src/presets/qwik/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './.edge/assets', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createSPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/presets/src/presets/react/config.ts b/packages/presets/src/presets/react/config.ts index 73c41bc7..84b14393 100644 --- a/packages/presets/src/presets/react/config.ts +++ b/packages/presets/src/presets/react/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './.edge/assets', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createSPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/presets/src/presets/rustwasm/config.ts b/packages/presets/src/presets/rustwasm/config.ts index ed263095..bd88d19e 100644 --- a/packages/presets/src/presets/rustwasm/config.ts +++ b/packages/presets/src/presets/rustwasm/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: '.wasm-bindgen', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ diff --git a/packages/presets/src/presets/stencil/config.ts b/packages/presets/src/presets/stencil/config.ts index 30012633..442415cb 100644 --- a/packages/presets/src/presets/stencil/config.ts +++ b/packages/presets/src/presets/stencil/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './www', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createMPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/presets/src/presets/svelte/config.ts b/packages/presets/src/presets/svelte/config.ts index 9fefc5aa..51a086ed 100644 --- a/packages/presets/src/presets/svelte/config.ts +++ b/packages/presets/src/presets/svelte/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './build', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -39,11 +39,22 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: { request: [ { - name: 'Deliver Immutable Assets', - description: 'Delivers immutable assets.', + name: 'Deliver Immutable Assets and Set Cache Policy', + description: 'Delivers immutable assets and set cache policy.', active: true, criteria: [ [ @@ -62,6 +73,12 @@ const config: AzionConfig = { value: '$CONNECTOR_NAME', }, }, + { + type: 'set_cache_policy', + attributes: { + value: '$APPLICATION_NAME', + }, + }, { type: 'deliver', }, @@ -126,8 +143,8 @@ const config: AzionConfig = { ], }, { - name: 'Deliver Static Assets', - description: 'Deliver static assets directly from storage', + name: 'Deliver Static Assets and Set Cache Policy', + description: 'Deliver static assets directly from storage and set cache policy', active: true, criteria: [ [ @@ -147,6 +164,12 @@ const config: AzionConfig = { value: '$CONNECTOR_NAME', }, }, + { + type: 'set_cache_policy', + attributes: { + value: '$APPLICATION_NAME', + }, + }, { type: 'deliver', }, diff --git a/packages/presets/src/presets/vitepress/config.ts b/packages/presets/src/presets/vitepress/config.ts index 635e9d68..d8d9820b 100644 --- a/packages/presets/src/presets/vitepress/config.ts +++ b/packages/presets/src/presets/vitepress/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './.edge/assets', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createMPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/presets/src/presets/vue/config.ts b/packages/presets/src/presets/vue/config.ts index 73c41bc7..84b14393 100644 --- a/packages/presets/src/presets/vue/config.ts +++ b/packages/presets/src/presets/vue/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './.edge/assets', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createSPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/presets/src/presets/vuepress/config.ts b/packages/presets/src/presets/vuepress/config.ts index 635e9d68..d8d9820b 100644 --- a/packages/presets/src/presets/vuepress/config.ts +++ b/packages/presets/src/presets/vuepress/config.ts @@ -10,7 +10,7 @@ const config: AzionConfig = { name: '$BUCKET_NAME', prefix: '$BUCKET_PREFIX', dir: './.edge/assets', - edgeAccess: 'read_only', + workloadsAccess: 'read_only', }, ], connectors: [ @@ -27,8 +27,20 @@ const config: AzionConfig = { applications: [ { name: '$APPLICATION_NAME', + cache: [ + { + name: '$APPLICATION_NAME', + browser: { + maxAgeSeconds: 7200, + }, + edge: { + maxAgeSeconds: 7200, + }, + }, + ], rules: createMPARules({ connector: '$CONNECTOR_NAME', + application: '$APPLICATION_NAME', }), }, ], diff --git a/packages/storage/README.md b/packages/storage/README.md index 31adc445..79269bf1 100644 --- a/packages/storage/README.md +++ b/packages/storage/README.md @@ -99,7 +99,7 @@ You can create a client instance with specific configurations. ```javascript import { createBucket } from 'azion/storage'; -const { data, error } = await createBucket({ name: 'my-new-bucket', edge_access: 'public' }); +const { data, error } = await createBucket({ name: 'my-new-bucket', workloads_access: 'read_only' }); if (data) { console.log(`Bucket created with name: ${data.name}`); } else { @@ -114,7 +114,7 @@ import { createBucket } from 'azion/storage'; import type { AzionStorageResponse, AzionBucket } from 'azion/storage'; const { data, error }: AzionStorageResponse = await createBucket({ name: 'my-new-bucket', - edge_access: 'public', + workloads_access: 'read_only', }); if (data) { console.log(`Bucket created with name: ${data.name}`); @@ -191,7 +191,7 @@ import { getBucket } from 'azion/storage'; const { data: bucket, error } = await getBucket({ name: 'my-bucket' }); if (bucket) { console.log(`Retrieved bucket: ${bucket.name}`); - console.log(`Edge access: ${bucket.edge_access}`); + console.log(`Workloads access: ${bucket.workloads_access}`); console.log(`Last editor: ${bucket.last_editor}`); console.log(`Last modified: ${bucket.last_modified}`); console.log(`Product version: ${bucket.product_version}`); @@ -208,7 +208,7 @@ import { getBucket, AzionBucket, AzionStorageResponse } from 'azion/storage'; const { data: bucket, error }: AzionStorageResponse = await getBucket({ name: 'my-bucket' }); if (bucket) { console.log(`Retrieved bucket: ${bucket.name}`); - console.log(`Edge access: ${bucket.edge_access}`); + console.log(`Workloads access: ${bucket.workloads_access}`); } else { console.error('Bucket not found', error); } @@ -225,11 +225,11 @@ import { setupStorage } from 'azion/storage'; const { data: bucket, error } = await setupStorage({ name: 'my-app-bucket', - edge_access: 'read_write', + workloads_access: 'read_write', }); if (bucket) { console.log(`Storage ready: ${bucket.name}`); - console.log(`Edge access: ${bucket.edge_access}`); + console.log(`Workloads access: ${bucket.workloads_access}`); } else { console.error('Failed to setup storage', error); } @@ -242,7 +242,7 @@ import { setupStorage, AzionBucket, AzionStorageResponse } from 'azion/storage'; const { data: bucket, error }: AzionStorageResponse = await setupStorage({ name: 'my-app-bucket', - edge_access: 'read_write', + workloads_access: 'read_write', }); if (bucket) { console.log(`Storage ready: ${bucket.name}`); @@ -264,7 +264,7 @@ if (bucket) { ```javascript import { updateBucket } from 'azion/storage'; -const { data: updatedBucket, error } = await updateBucket({ name: 'my-bucket', edge_access: 'private' }); +const { data: updatedBucket, error } = await updateBucket({ name: 'my-bucket', workloads_access: 'private' }); if (updatedBucket) { console.log(`Bucket updated: ${updatedBucket.name}`); } else { @@ -279,7 +279,7 @@ import { updateBucket, AzionBucket, AzionStorageResponse } from 'azion/storage'; const { data: updatedBucket, error }: AzionStorageResponse | null = await updateBucket({ name: 'my-bucket', - edge_access: 'private', + workloads_access: 'private', }); if (updatedBucket) { console.log(`Bucket updated: ${updatedBucket.name}`); @@ -473,7 +473,7 @@ import { createClient } from 'azion/storage'; const client = createClient({ token: 'your-api-token', debug: true }); -const { data, error } = await client.createBucket({ name: 'my-new-bucket', edge_access: 'public' }); +const { data, error } = await client.createBucket({ name: 'my-new-bucket', workloads_access: 'read_only' }); if (data) { console.log(`Bucket created with name: ${data.name}`); } @@ -524,7 +524,7 @@ const client: StorageClient = createClient({ token: 'your-api-token', debug: tru const { data, error }: AzionStorageResponse = await client.createBucket({ name: 'my-new-bucket', - edge_access: 'public', + workloads_access: 'read_only', }); if (data) { console.log(`Bucket created with name: ${data.name}`); @@ -569,7 +569,7 @@ Creates a new bucket. **Parameters:** - `name: string` - Name of the new bucket. -- `edge_access: string` - Edge access configuration for the bucket. +- `workloads_access: string` - Workloads access configuration for the bucket. - `options?: AzionClientOptions` - Optional parameters for the request. **Returns:** @@ -627,7 +627,7 @@ Updates an existing bucket. **Parameters:** - `name: string` - Name of the bucket to update. -- `edge_access: string` - New edge access configuration for the bucket. +- `workloads_access: string` - New Workloads access configuration for the bucket. - `debug?: boolean` - Enable debug mode for detailed logging. **Returns:** @@ -736,8 +736,8 @@ Configuration options for the Storage client. An object with methods to interact with Storage. - `getBuckets: (options?: BucketCollectionOptions) => Promise>` -- `createBucket: (name: string, edge_access: string) => Promise>` -- `updateBucket: (name: string, edge_access: string) => Promise>` +- `createBucket: (name: string, workloads_access: string) => Promise>` +- `updateBucket: (name: string, workloads_access: string) => Promise>` - `deleteBucket: (name: string) => Promise>` - `getBucket: (name: string) => Promise>` @@ -753,7 +753,7 @@ The response object from a bucket operation. The bucket object. - `name: string` -- `edge_access?: string` +- `workloads_access?: string` - `state?: 'executed' | 'executed-runtime' | 'pending'` - `last_editor?: string` - `last_modified?: string` diff --git a/packages/storage/src/index.ts b/packages/storage/src/index.ts index b018c9a5..e80eca4a 100644 --- a/packages/storage/src/index.ts +++ b/packages/storage/src/index.ts @@ -1,31 +1,31 @@ import { - deleteBucket, - deleteObject, - getBucketByName, - getBuckets, - getObjectByKey, - getObjects, - patchBucket, - postBucket, - postObject, - putObject, + deleteBucket, + deleteObject, + getBucketByName, + getBuckets, + getObjectByKey, + getObjects, + patchBucket, + postBucket, + postObject, + putObject, } from './services/api/index'; import { - AzionBucket, - AzionBucketCollection, - AzionBucketCollectionParams, - AzionBucketObject, - AzionBucketObjects, - AzionClientOptions, - AzionDeletedBucket, - AzionDeletedBucketObject, - AzionEnvironment, - AzionObjectCollectionParams, - AzionStorageClient, - AzionStorageResponse, - ContentObjectStorage, - CreateAzionStorageClient, - EdgeAccessType, + AzionBucket, + AzionBucketCollection, + AzionBucketCollectionParams, + AzionBucketObject, + AzionBucketObjects, + AzionClientOptions, + AzionDeletedBucket, + AzionDeletedBucketObject, + AzionEnvironment, + AzionObjectCollectionParams, + AzionStorageClient, + AzionStorageResponse, + ContentObjectStorage, + CreateAzionStorageClient, + EdgeAccessType, } from './types'; import { InternalStorageClient, isInternalStorageAvailable } from './services/runtime/index'; @@ -101,21 +101,21 @@ const createInternalOrExternalMethod = any>(inter * * @param {string} token - Authentication token for Azion API. * @param {string} name - Name of the bucket to create. - * @param {string} edge_access - Edge access configuration for the bucket. + * @param {string} workloads_access - Workloads access configuration for the bucket. * @param {AzionClientOptions} [options] - Client options including debug mode. * @returns {Promise} The created bucket object or error message. */ export const createBucketMethod = async ( token: string, name: string, - edge_access: EdgeAccessType, + workloads_access: EdgeAccessType, options?: AzionClientOptions, ): Promise> => { const resolvedOptions = resolveClientOptions(options); const apiResponse = await postBucket( resolveToken(token), name, - edge_access, + workloads_access, resolvedOptions.debug, resolvedOptions.env, ); @@ -123,7 +123,7 @@ export const createBucketMethod = async ( return { data: { ...apiResponse.data, - edge_access: apiResponse.data.edge_access as EdgeAccessType, + workloads_access: apiResponse.data.workloads_access as EdgeAccessType, last_editor: apiResponse.data.last_editor, last_modified: apiResponse.data.last_modified, product_version: apiResponse.data.product_version, @@ -206,7 +206,7 @@ export const getBucketsMethod = async ( if (apiResponse?.results) { const buckets = apiResponse.results?.map((bucket) => ({ ...bucket, - edge_access: bucket.edge_access as EdgeAccessType, + workloads_access: bucket.workloads_access as EdgeAccessType, last_editor: bucket.last_editor, last_modified: bucket.last_modified, product_version: bucket.product_version, @@ -281,7 +281,7 @@ const getBucketMethod = async ( return { data: { name: bucket.name, - edge_access: bucket.edge_access as EdgeAccessType, + workloads_access: bucket.workloads_access as EdgeAccessType, last_editor: bucket.last_editor, last_modified: bucket.last_modified, product_version: bucket.product_version, @@ -331,21 +331,21 @@ const getBucketMethod = async ( * * @param {string} token - Authentication token for Azion API. * @param {string} name - Name of the bucket to update. - * @param {string} edge_access - New edge access configuration for the bucket. + * @param {string} workloads_access - New Workloads access configuration for the bucket. * @param {AzionClientOptions} [options] - Client options including debug mode. * @returns {Promise>} The updated bucket or error message. */ export const updateBucketMethod = async ( token: string, name: string, - edge_access: EdgeAccessType, + workloads_access: EdgeAccessType, options?: AzionClientOptions, ): Promise> => { const resolvedOptions = resolveClientOptions(options); const apiResponse = await patchBucket( resolveToken(token), name, - edge_access, + workloads_access, resolvedOptions.debug, resolvedOptions.env, ); @@ -353,7 +353,7 @@ export const updateBucketMethod = async ( return { data: { ...apiResponse.data, - edge_access: apiResponse.data.edge_access as EdgeAccessType, + workloads_access: apiResponse.data.workloads_access as EdgeAccessType, last_editor: apiResponse.data.last_editor, last_modified: apiResponse.data.last_modified, product_version: apiResponse.data.product_version, @@ -400,14 +400,14 @@ export const updateBucketMethod = async ( * * @param {string} token - Authentication token for Azion API. * @param {string} name - Name of the bucket to setup. - * @param {EdgeAccessType} edge_access - Edge access configuration for the bucket (used only if creating). + * @param {EdgeAccessType} workloads_access - Workloads access configuration for the bucket (used only if creating). * @param {AzionClientOptions} [options] - Client options including debug mode. * @returns {Promise>} The existing or created bucket. */ export const setupStorageMethod = async ( token: string, name: string, - edge_access: EdgeAccessType, + workloads_access: EdgeAccessType, options?: AzionClientOptions, ): Promise> => { const resolvedOptions = resolveClientOptions(options); @@ -418,7 +418,7 @@ export const setupStorageMethod = async ( return getResult; } if (resolvedOptions.debug) console.log(`Bucket '${name}' not found, creating...`); - const createResult = await createBucketMethod(token, name, edge_access, resolvedOptions); + const createResult = await createBucketMethod(token, name, workloads_access, resolvedOptions); if (createResult.data) { if (resolvedOptions.debug) console.log(`Bucket '${name}' created successfully`); @@ -732,12 +732,12 @@ const deleteObjectMethod = createInternalOrExternalMethod( * * @param {Object} params - Parameters for creating a bucket. * @param {string} params.name - Name of the new bucket. - * @param {string} params.edge_access - Edge access configuration for the bucket. + * @param {string} params.workloads_access - Workloads access configuration for the bucket. * @param {AzionClientOptions} [params.options] - Client options including debug mode. * @returns {Promise} The created bucket or error message. * * @example - * const { data, error } = await createBucket({ name: 'my-new-bucket', edge_access: 'public', options: { debug: true } }); + * const { data, error } = await createBucket({ name: 'my-new-bucket', workloads_access: 'read_only', options: { debug: true } }); * if (data) { * console.log(`Bucket created with name: ${data.name}`); * } else { @@ -746,14 +746,14 @@ const deleteObjectMethod = createInternalOrExternalMethod( */ const createBucketWrapper = ({ name, - edge_access, + workloads_access, options, }: { name: string; - edge_access: EdgeAccessType; + workloads_access: EdgeAccessType; options?: AzionClientOptions; }): Promise> => - createBucketMethod(resolveToken(), name, edge_access, resolveClientOptions(options)); + createBucketMethod(resolveToken(), name, workloads_access, resolveClientOptions(options)); /** * Deletes a bucket by its name. @@ -834,12 +834,12 @@ const getBucketWrapper = ({ * * @param {Object} params - Parameters for updating a bucket. * @param {string} params.name - Name of the bucket to update. - * @param {string} params.edge_access - New edge access configuration for the bucket. + * @param {string} params.workloads_access - New Workloads access configuration for the bucket. * @param {AzionClientOptions} [params.options] - Client options including debug mode. * @returns {Promise>} The updated bucket or error message. * * @example - * const { data: updatedBucket, error } = await updateBucket({ name: 'my-bucket', edge_access: 'private', options: { debug: true } }); + * const { data: updatedBucket, error } = await updateBucket({ name: 'my-bucket', workloads_access: 'private', options: { debug: true } }); * if (updatedBucket) { * console.log(`Bucket updated: ${updatedBucket.name}`); * } else { @@ -848,14 +848,14 @@ const getBucketWrapper = ({ */ const updateBucketWrapper = ({ name, - edge_access, + workloads_access, options, }: { name: string; - edge_access: EdgeAccessType; + workloads_access: EdgeAccessType; options?: AzionClientOptions; }): Promise> => - updateBucketMethod(resolveToken(), name, edge_access, resolveClientOptions(options)); + updateBucketMethod(resolveToken(), name, workloads_access, resolveClientOptions(options)); /** * Sets up storage by getting an existing bucket or creating it if it doesn't exist. @@ -863,14 +863,14 @@ const updateBucketWrapper = ({ * * @param {Object} params - Parameters for setting up storage. * @param {string} params.name - Name of the bucket to setup. - * @param {EdgeAccessType} params.edge_access - Edge access configuration for the bucket (used only if creating). + * @param {EdgeAccessType} params.workloads_access - Workloads access configuration for the bucket (used only if creating). * @param {AzionClientOptions} [params.options] - Client options including debug mode. * @returns {Promise>} The existing or created bucket. * * @example * const { data: bucket, error } = await setupStorage({ * name: 'my-bucket', - * edge_access: 'read_write', + * workloads_access: 'read_write', * options: { debug: true } * }); * if (bucket) { @@ -881,14 +881,14 @@ const updateBucketWrapper = ({ */ const setupStorageWrapper = ({ name, - edge_access, + workloads_access, options, }: { name: string; - edge_access: EdgeAccessType; + workloads_access: EdgeAccessType; options?: AzionClientOptions; }): Promise> => - setupStorageMethod(resolveToken(), name, edge_access, resolveClientOptions(options)); + setupStorageMethod(resolveToken(), name, workloads_access, resolveClientOptions(options)); /** * Retrieves a list of objects in a specific bucket. @@ -1069,7 +1069,7 @@ const deleteObjectWrapper = ({ * const storageClient = createClient({ token: 'your-api-token', options: { debug: true } }); * * // Create a new bucket - * const { data, error } = await storageClient.createBucket({ name: 'my-new-bucket', edge_access: 'public' }); + * const { data, error } = await storageClient.createBucket({ name: 'my-new-bucket', workloads_access: 'read_only' }); * * // Get all buckets * const { data: allBuckets } = await storageClient.getBuckets({ params: { page: 1, page_size: 10 } }); @@ -1090,50 +1090,50 @@ const client: CreateAzionStorageClient = ( getBucketsMethod(tokenValue, params?.params, resolvedOptions), createBucket: ({ name, - edge_access, + workloads_access, }: { name: string; - edge_access: EdgeAccessType; + workloads_access: EdgeAccessType; }): Promise> => - createBucketMethod(tokenValue, name, edge_access, resolvedOptions), + createBucketMethod(tokenValue, name, workloads_access, resolvedOptions), updateBucket: ({ name, - edge_access, + workloads_access, }: { name: string; - edge_access: EdgeAccessType; + workloads_access: EdgeAccessType; }): Promise> => - updateBucketMethod(tokenValue, name, edge_access, resolvedOptions), + updateBucketMethod(tokenValue, name, workloads_access, resolvedOptions), deleteBucket: ({ name }: { name: string }): Promise> => deleteBucketMethod(tokenValue, name, resolvedOptions), getBucket: ({ name }: { name: string }): Promise> => getBucketMethod(tokenValue, name, resolvedOptions), setupStorage: ({ name, - edge_access, + workloads_access, }: { name: string; - edge_access: EdgeAccessType; + workloads_access: EdgeAccessType; }): Promise> => - setupStorageMethod(tokenValue, name, edge_access, resolvedOptions), + setupStorageMethod(tokenValue, name, workloads_access, resolvedOptions), } as const; return client; }; export { - createBucketWrapper as createBucket, - client as createClient, - createObjectWrapper as createObject, - deleteBucketWrapper as deleteBucket, - deleteObjectWrapper as deleteObject, - getBucketWrapper as getBucket, - getBucketsWrapper as getBuckets, - getObjectByKeyWrapper as getObjectByKey, - getObjectsWrapper as getObjects, - setupStorageWrapper as setupStorage, - updateBucketWrapper as updateBucket, - updateObjectWrapper as updateObject, + createBucketWrapper as createBucket, + client as createClient, + createObjectWrapper as createObject, + deleteBucketWrapper as deleteBucket, + deleteObjectWrapper as deleteObject, + getBucketWrapper as getBucket, + getBucketsWrapper as getBuckets, + getObjectByKeyWrapper as getObjectByKey, + getObjectsWrapper as getObjects, + setupStorageWrapper as setupStorage, + updateBucketWrapper as updateBucket, + updateObjectWrapper as updateObject }; export default client; diff --git a/packages/storage/src/services/api/index.ts b/packages/storage/src/services/api/index.ts index 9a976ef2..158314f6 100644 --- a/packages/storage/src/services/api/index.ts +++ b/packages/storage/src/services/api/index.ts @@ -1,17 +1,17 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { fetchWithErrorHandling } from '../../utils/index'; import { - ApiCreateBucketResponse, - ApiCreateObjectResponse, - ApiDeleteBucketResponse, - ApiDeleteObjectResponse, - ApiEditBucketResponse, - ApiError, - ApiGetBucketResponse, - ApiListBucketsParams, - ApiListBucketsResponse, - ApiListObjectsParams, - ApiListObjectsResponse, + ApiCreateBucketResponse, + ApiCreateObjectResponse, + ApiDeleteBucketResponse, + ApiDeleteObjectResponse, + ApiEditBucketResponse, + ApiError, + ApiGetBucketResponse, + ApiListBucketsParams, + ApiListBucketsResponse, + ApiListObjectsParams, + ApiListObjectsResponse, } from './types'; import { AzionEnvironment, ContentObjectStorage, EdgeAccessType } from '../../types'; @@ -193,7 +193,7 @@ const getBucketByName = async ( * * @param {string} token - Authentication token for Azion API. * @param {string} name - Name of the bucket to create. - * @param {string} edge_access - Edge access configuration for the bucket. + * @param {string} workloads_access - Workloads access configuration for the bucket. * @param {boolean} [debug] - Enable debug mode for detailed logging. * @param {AzionEnvironment} [env='production'] - Environment to use for the API call. * @returns {Promise} The created bucket or an error if creation failed. @@ -201,7 +201,7 @@ const getBucketByName = async ( const postBucket = async ( token: string, name: string, - edge_access: EdgeAccessType, + workloads_access: EdgeAccessType, debug?: boolean, env: AzionEnvironment = 'production', ): Promise => { @@ -212,12 +212,12 @@ const postBucket = async ( { method: 'POST', headers: { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: `Token ${token}` }, - body: JSON.stringify({ name, edge_access }), + body: JSON.stringify({ name, workloads_access }), }, debug, ); if (!data?.state) { - data.error = handleApiError(['name', 'edge_access', 'detail'], data, 'create bucket'); + data.error = handleApiError(['name', 'workloads_access', 'detail'], data, 'create bucket'); return { error: data.error ?? JSON.stringify(data), }; @@ -237,7 +237,7 @@ const postBucket = async ( * * @param {string} token - Authentication token for Azion API. * @param {string} name - Name of the bucket to update. - * @param {string} edge_access - New edge access configuration for the bucket. + * @param {string} workloads_access - New Workloads access configuration for the bucket. * @param {boolean} [debug] - Enable debug mode for detailed logging. * @param {AzionEnvironment} [env='production'] - Environment to use for the API call. * @returns {Promise} The updated bucket or an error if update failed. @@ -245,7 +245,7 @@ const postBucket = async ( const patchBucket = async ( token: string, name: string, - edge_access: EdgeAccessType, + workloads_access: EdgeAccessType, debug?: boolean, env: AzionEnvironment = 'production', ): Promise => { @@ -256,12 +256,12 @@ const patchBucket = async ( { method: 'PATCH', headers: { Accept: 'application/json', 'Content-Type': 'application/json', Authorization: `Token ${token}` }, - body: JSON.stringify({ edge_access }), + body: JSON.stringify({ workloads_access }), }, debug, ); if (!data?.state) { - data.error = handleApiError(['name', 'edge_access', 'detail'], data, 'update bucket'); + data.error = handleApiError(['name', 'workloads_access', 'detail'], data, 'update bucket'); return { error: data.error ?? JSON.stringify(data), }; @@ -554,14 +554,15 @@ const deleteObject = async ( }; export { - deleteBucket, - deleteObject, - getBucketByName, - getBuckets, - getObjectByKey, - getObjects, - patchBucket, - postBucket, - postObject, - putObject, + deleteBucket, + deleteObject, + getBucketByName, + getBuckets, + getObjectByKey, + getObjects, + patchBucket, + postBucket, + postObject, + putObject }; + diff --git a/packages/storage/src/services/api/types.d.ts b/packages/storage/src/services/api/types.d.ts index 3f94eb5a..cf9f7b3f 100644 --- a/packages/storage/src/services/api/types.d.ts +++ b/packages/storage/src/services/api/types.d.ts @@ -6,7 +6,7 @@ export type ApiBucketObject = { export interface ApiBucket { name: string; - edge_access: string; + workloads_access: string; last_editor?: string; last_modified?: string; product_version?: string; diff --git a/packages/storage/src/services/runtime/index.ts b/packages/storage/src/services/runtime/index.ts index 4cb7a267..5e8dd4c6 100644 --- a/packages/storage/src/services/runtime/index.ts +++ b/packages/storage/src/services/runtime/index.ts @@ -1,12 +1,12 @@ import { Azion } from 'azion/types'; import { - AzionBucket, - AzionBucketObject, - AzionBucketObjects, - AzionDeletedBucketObject, - AzionObjectCollectionParams, - AzionStorageResponse, - ContentObjectStorage, + AzionBucket, + AzionBucketObject, + AzionBucketObjects, + AzionDeletedBucketObject, + AzionObjectCollectionParams, + AzionStorageResponse, + ContentObjectStorage, } from '../../types'; import { removeLeadingSlash, retryWithBackoff } from '../../utils/index'; @@ -44,8 +44,8 @@ export class InternalStorageClient implements AzionBucket { } name: string = ''; - // @ts-expect-error - edge_access is not defined in the AzionBucket interface - edge_access: string = 'unknown'; + // @ts-expect-error - workloads_access is not defined in the AzionBucket interface + workloads_access: string = 'unknown'; /** * Retrieves a bucket by name. @@ -60,8 +60,8 @@ export class InternalStorageClient implements AzionBucket { this.name = name; return { name, - // @ts-expect-error - edge_access is not defined in the AzionBucket interface - edge_access: 'unknown', + // @ts-expect-error - workloads_access is not defined in the AzionBucket interface + workloads_access: 'unknown', state: 'executed-runtime', getObjects: this.getObjects.bind(this), getObjectByKey: this.getObjectByKey.bind(this), diff --git a/packages/storage/src/types.ts b/packages/storage/src/types.ts index 047a81df..51cc0f9c 100644 --- a/packages/storage/src/types.ts +++ b/packages/storage/src/types.ts @@ -1,5 +1,5 @@ /** - * Edge access configuration for storage buckets. + * Workloads access configuration for storage buckets. * * @type {'read_only' | 'read_write' | 'restricted'} * @property {'read_only'} read_only - Allows only read operations @@ -24,12 +24,12 @@ export type ContentObjectStorage = ArrayBuffer | ReadableStream | Uint8Array | s * @interface AzionBucket * * @property {string} name - The name of the bucket. - * @property {EdgeAccessType} edge_access - The edge access configuration for the bucket. + * @property {EdgeAccessType} workloads_access - The Workloads access configuration for the bucket. * @property {'executed' | 'executed-runtime' | 'pending'} [state] - The current state of the bucket. */ export interface AzionBucket { name: string; - edge_access: EdgeAccessType; + workloads_access: EdgeAccessType; state?: 'executed' | 'executed-runtime' | 'pending'; last_editor?: string; last_modified?: string; @@ -161,19 +161,19 @@ export interface AzionStorageClient { * Creates a new bucket. * @param {Object} params - Parameters for creating a bucket. * @param {string} params.name - Name of the new bucket. - * @param {EdgeAccessType} params.edge_access - Edge access configuration for the bucket. + * @param {EdgeAccessType} params.workloads_access - Workloads access configuration for the bucket. * @returns {Promise} The created bucket or error message. */ - createBucket: (params: { name: string; edge_access: EdgeAccessType }) => Promise>; + createBucket: (params: { name: string; workloads_access: EdgeAccessType }) => Promise>; /** * Updates a bucket by its name. * @param {Object} params - Parameters for updating a bucket. * @param {string} params.name - Name of the bucket to update. - * @param {EdgeAccessType} params.edge_access - New edge access configuration for the bucket. + * @param {EdgeAccessType} params.workloads_access - New Workloads access configuration for the bucket. * @returns {Promise>} The updated bucket or error message. */ - updateBucket: (params: { name: string; edge_access: EdgeAccessType }) => Promise>; + updateBucket: (params: { name: string; workloads_access: EdgeAccessType }) => Promise>; /** * Deletes a bucket by its name. * @param {Object} params - Parameters for deleting a bucket. @@ -192,10 +192,10 @@ export interface AzionStorageClient { * Sets up storage by getting an existing bucket or creating it if it doesn't exist. * @param {Object} params - Parameters for setting up storage. * @param {string} params.name - Name of the bucket to setup. - * @param {EdgeAccessType} params.edge_access - Edge access configuration for the bucket (used only if creating). + * @param {EdgeAccessType} params.workloads_access - Workloads access configuration for the bucket (used only if creating). * @returns {Promise>} The existing or created bucket. */ - setupStorage: (params: { name: string; edge_access: EdgeAccessType }) => Promise>; + setupStorage: (params: { name: string; workloads_access: EdgeAccessType }) => Promise>; } export type AzionBucketCollectionParams = { @@ -281,7 +281,7 @@ export type AzionClientOptions = { * // Use the Storage client to create a bucket * const newBucket = await storageClient.createBucket({ * name: 'my-new-bucket', - * edge_access: 'read_write' + * workloads_access: 'read_write' * }); */ export type CreateAzionStorageClient = ( diff --git a/packages/storage/tests/bucket.test.ts b/packages/storage/tests/bucket.test.ts index ca966c89..b6fabe58 100644 --- a/packages/storage/tests/bucket.test.ts +++ b/packages/storage/tests/bucket.test.ts @@ -20,12 +20,12 @@ describe('Storage Module - Bucket operations', () => { describe('createBucket', () => { it('should successfully create a bucket', async () => { - const mockResponse = { state: 'executed', data: { name: 'test-bucket', edge_access: 'read_write' } }; + const mockResponse = { state: 'executed', data: { name: 'test-bucket', workloads_access: 'read_write' } }; (services.postBucket as jest.Mock).mockResolvedValue(mockResponse); - const result = await createBucket({ name: 'test-bucket', edge_access: 'read_write', options: { debug, env } }); + const result = await createBucket({ name: 'test-bucket', workloads_access: 'read_write', options: { debug, env } }); - expect(result.data).toEqual(expect.objectContaining({ name: 'test-bucket', edge_access: 'read_write' })); + expect(result.data).toEqual(expect.objectContaining({ name: 'test-bucket', workloads_access: 'read_write' })); expect(services.postBucket).toHaveBeenCalledWith(mockToken, 'test-bucket', 'read_write', debug, env); }); @@ -34,7 +34,7 @@ describe('Storage Module - Bucket operations', () => { error: { message: 'token invalid', operation: 'create bucket' }, }); - const result = await createBucket({ name: 'test-bucket', edge_access: 'read_write', options: { debug, env } }); + const result = await createBucket({ name: 'test-bucket', workloads_access: 'read_write', options: { debug, env } }); expect(result).toEqual({ error: { message: 'token invalid', operation: 'create bucket' } }); }); @@ -87,12 +87,12 @@ describe('Storage Module - Bucket operations', () => { describe('getBucket', () => { it('should successfully get a bucket by name', async () => { - const mockResponse = { data: { name: 'test-bucket', edge_access: 'read_write' } }; + const mockResponse = { data: { name: 'test-bucket', workloads_access: 'read_write' } }; (services.getBucketByName as jest.Mock).mockResolvedValue(mockResponse); const result = await getBucket({ name: 'test-bucket', options: { debug, env } }); - expect(result.data).toEqual(expect.objectContaining({ name: 'test-bucket', edge_access: 'read_write' })); + expect(result.data).toEqual(expect.objectContaining({ name: 'test-bucket', workloads_access: 'read_write' })); expect(services.getBucketByName).toHaveBeenCalledWith(mockToken, 'test-bucket', undefined, debug, env); }); @@ -108,12 +108,12 @@ describe('Storage Module - Bucket operations', () => { describe('updateBucket', () => { it('should successfully update a bucket', async () => { - const mockResponse = { data: { name: 'test-bucket', edge_access: 'restricted' } }; + const mockResponse = { data: { name: 'test-bucket', workloads_access: 'restricted' } }; (services.patchBucket as jest.Mock).mockResolvedValue(mockResponse); - const result = await updateBucket({ name: 'test-bucket', edge_access: 'restricted', options: { debug, env } }); + const result = await updateBucket({ name: 'test-bucket', workloads_access: 'restricted', options: { debug, env } }); - expect(result.data).toEqual(expect.objectContaining({ name: 'test-bucket', edge_access: 'restricted' })); + expect(result.data).toEqual(expect.objectContaining({ name: 'test-bucket', workloads_access: 'restricted' })); expect(services.patchBucket).toHaveBeenCalledWith(mockToken, 'test-bucket', 'restricted', debug, env); }); @@ -122,7 +122,7 @@ describe('Storage Module - Bucket operations', () => { error: { message: 'token invalid', operation: 'update bucket' }, }); - const result = await updateBucket({ name: 'test-bucket', edge_access: 'restricted', options: { debug, env } }); + const result = await updateBucket({ name: 'test-bucket', workloads_access: 'restricted', options: { debug, env } }); expect(result.error).toEqual({ message: 'token invalid', operation: 'update bucket' }); }); @@ -130,22 +130,22 @@ describe('Storage Module - Bucket operations', () => { describe('setupStorage', () => { it('should return existing bucket if it already exists', async () => { - const mockBucketResponse = { data: { name: 'test-bucket', edge_access: 'read_write' } }; + const mockBucketResponse = { data: { name: 'test-bucket', workloads_access: 'read_write' } }; (services.getBucketByName as jest.Mock).mockResolvedValue(mockBucketResponse); - const result = await setupStorage({ name: 'test-bucket', edge_access: 'read_write', options: { debug, env } }); - expect(result.data).toEqual(expect.objectContaining({ name: 'test-bucket', edge_access: 'read_write' })); + const result = await setupStorage({ name: 'test-bucket', workloads_access: 'read_write', options: { debug, env } }); + expect(result.data).toEqual(expect.objectContaining({ name: 'test-bucket', workloads_access: 'read_write' })); expect(services.getBucketByName).toHaveBeenCalledWith(mockToken, 'test-bucket', undefined, debug, env); expect(services.postBucket).not.toHaveBeenCalled(); }); it('should create bucket if it does not exist', async () => { (services.getBucketByName as jest.Mock).mockResolvedValue({ error: { message: 'Bucket not found' } }); - const mockCreateResponse = { data: { name: 'test-bucket', edge_access: 'read_write' } }; + const mockCreateResponse = { data: { name: 'test-bucket', workloads_access: 'read_write' } }; (services.postBucket as jest.Mock).mockResolvedValue(mockCreateResponse); - const result = await setupStorage({ name: 'test-bucket', edge_access: 'read_write', options: { debug, env } }); - expect(result.data).toEqual(expect.objectContaining({ name: 'test-bucket', edge_access: 'read_write' })); + const result = await setupStorage({ name: 'test-bucket', workloads_access: 'read_write', options: { debug, env } }); + expect(result.data).toEqual(expect.objectContaining({ name: 'test-bucket', workloads_access: 'read_write' })); expect(services.getBucketByName).toHaveBeenCalledWith(mockToken, 'test-bucket', undefined, debug, env); expect(services.postBucket).toHaveBeenCalledWith(mockToken, 'test-bucket', 'read_write', debug, env); }); @@ -154,7 +154,7 @@ describe('Storage Module - Bucket operations', () => { (services.getBucketByName as jest.Mock).mockResolvedValue({ error: { message: 'Bucket not found' } }); (services.postBucket as jest.Mock).mockResolvedValue({ error: { message: 'Creation failed' } }); - const result = await setupStorage({ name: 'test-bucket', edge_access: 'read_write', options: { debug, env } }); + const result = await setupStorage({ name: 'test-bucket', workloads_access: 'read_write', options: { debug, env } }); expect(result.error).toEqual({ message: 'Creation failed', operation: 'setup storage' }); }); }); diff --git a/packages/storage/tests/client.test.ts b/packages/storage/tests/client.test.ts index 7c7afb50..563f35d9 100644 --- a/packages/storage/tests/client.test.ts +++ b/packages/storage/tests/client.test.ts @@ -60,19 +60,19 @@ describe('Storage Package - Client', () => { }); it('should call createBucket method', async () => { - const mockResponse = { data: { name: 'test-bucket', edge_access: 'read_write' } }; + const mockResponse = { data: { name: 'test-bucket', workloads_access: 'read_write' } }; (services.postBucket as jest.Mock).mockResolvedValue(mockResponse); - await client.createBucket({ name: 'test-bucket', edge_access: 'read_write' }); + await client.createBucket({ name: 'test-bucket', workloads_access: 'read_write' }); expect(services.postBucket).toHaveBeenCalledWith('custom-token', 'test-bucket', 'read_write', debug, env); }); it('should call updateBucket method', async () => { - const mockResponse = { data: { name: 'test-bucket', edge_access: 'restricted' } }; + const mockResponse = { data: { name: 'test-bucket', workloads_access: 'restricted' } }; (services.patchBucket as jest.Mock).mockResolvedValue(mockResponse); - await client.updateBucket({ name: 'test-bucket', edge_access: 'restricted' }); + await client.updateBucket({ name: 'test-bucket', workloads_access: 'restricted' }); expect(services.patchBucket).toHaveBeenCalledWith('custom-token', 'test-bucket', 'restricted', debug, env); }); @@ -87,7 +87,7 @@ describe('Storage Package - Client', () => { }); it('should call getBucket method', async () => { - const mockResponse = { results: [{ name: 'test-bucket', edge_access: 'read_write' }] }; + const mockResponse = { results: [{ name: 'test-bucket', workloads_access: 'read_write' }] }; (services.getBucketByName as jest.Mock).mockResolvedValue(mockResponse); await client.getBucket({ name: 'test-bucket' }); @@ -96,10 +96,10 @@ describe('Storage Package - Client', () => { }); it('should call setupStorage method', async () => { - const mockBucketResponse = { data: { name: 'test-bucket', edge_access: 'read_write' } }; + const mockBucketResponse = { data: { name: 'test-bucket', workloads_access: 'read_write' } }; (services.getBucketByName as jest.Mock).mockResolvedValue(mockBucketResponse); - await client.setupStorage({ name: 'test-bucket', edge_access: 'read_write' }); + await client.setupStorage({ name: 'test-bucket', workloads_access: 'read_write' }); expect(services.getBucketByName).toHaveBeenCalledWith('custom-token', 'test-bucket', undefined, debug, env); });