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);
});