@studiometa/forge-sdk 0.4.5 → 0.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -185,6 +185,25 @@ forge.server(id).daemons.restart(daemonId);
185
185
  forge.server(id).daemons.delete(daemonId);
186
186
  ```
187
187
 
188
+ ### PHP
189
+
190
+ Version methods take the PHP version ID from `php.list()`.
191
+
192
+ ```typescript
193
+ forge.server(id).php.list(); // Installed PHP versions
194
+ forge.server(id).php.get(versionId);
195
+ forge.server(id).php.config(versionId, "fpm"); // "cli", "fpm" or "pool"
196
+ forge.server(id).php.config(versionId, "pool", { user: "forge" });
197
+ forge.server(id).php.updateConfig(versionId, "fpm", "memory_limit = 512M\n...");
198
+ forge.server(id).php.maxUploadSize(); // Megabytes
199
+ forge.server(id).php.setMaxUploadSize(128);
200
+ forge.server(id).php.maxExecutionTime(); // Seconds
201
+ forge.server(id).php.setMaxExecutionTime(120);
202
+ forge.server(id).php.opcache(); // true or false
203
+ forge.server(id).php.enableOpcache();
204
+ forge.server(id).php.disableOpcache();
205
+ ```
206
+
188
207
  ### User
189
208
 
190
209
  ```typescript
package/dist/index.d.ts CHANGED
@@ -21,6 +21,8 @@ export { MonitorsCollection } from "./resources/monitors.ts";
21
21
  export type { MonitorListOptions } from "./resources/monitors.ts";
22
22
  export { NginxTemplatesCollection } from "./resources/nginx-templates.ts";
23
23
  export type { NginxTemplateListOptions } from "./resources/nginx-templates.ts";
24
+ export { PhpResource, PHP_CONFIG_TYPES } from "./resources/php.ts";
25
+ export type { PhpConfigOptions, PhpConfigType, PhpVersionListOptions } from "./resources/php.ts";
24
26
  export { RecipesCollection } from "./resources/recipes.ts";
25
27
  export type { RecipeListOptions, RunRecipeOptions } from "./resources/recipes.ts";
26
28
  export { RedirectRulesCollection } from "./resources/redirect-rules.ts";
@@ -31,6 +33,8 @@ export { SecurityRulesCollection } from "./resources/security-rules.ts";
31
33
  export type { SecurityRuleListOptions } from "./resources/security-rules.ts";
32
34
  export { ServersCollection, ServerResource } from "./resources/servers.ts";
33
35
  export type { ServerListOptions, ResolveMatch, ResolveResult } from "./resources/servers.ts";
36
+ export { ServicesCollection, RESTARTABLE_SERVICES } from "./resources/services.ts";
37
+ export type { RestartableService, RestartServiceOptions, ServiceStatus, } from "./resources/services.ts";
34
38
  export { SshKeysCollection } from "./resources/ssh-keys.ts";
35
39
  export type { SshKeyListOptions } from "./resources/ssh-keys.ts";
36
40
  export { SiteEnvResource, SiteNginxResource, SiteResource, SitesCollection, } from "./resources/sites.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1100,6 +1100,17 @@ var DaemonsCollection = class extends BaseCollection {
1100
1100
  return unwrapDocument$1(await this.client.get(`${this.basePath}/${daemonId}`));
1101
1101
  }
1102
1102
  /**
1103
+ * Get the log output of a daemon.
1104
+ *
1105
+ * @example
1106
+ * ```ts
1107
+ * const log = await forge.server(123).daemons.log(789);
1108
+ * ```
1109
+ */
1110
+ async log(daemonId) {
1111
+ return unwrapDocument$1(await this.client.get(`${this.basePath}/${daemonId}/log`)).content;
1112
+ }
1113
+ /**
1103
1114
  * Create a new daemon.
1104
1115
  *
1105
1116
  * @example
@@ -1740,6 +1751,292 @@ var NginxTemplatesCollection = class extends BaseCollection {
1740
1751
  }
1741
1752
  };
1742
1753
  //#endregion
1754
+ //#region src/resources/services.ts
1755
+ /**
1756
+ * The six restartable services exposed by the Forge v2 API.
1757
+ */
1758
+ var RESTARTABLE_SERVICES = [
1759
+ "nginx",
1760
+ "php",
1761
+ "mysql",
1762
+ "postgres",
1763
+ "redis",
1764
+ "supervisor"
1765
+ ];
1766
+ /**
1767
+ * Services on a server — list availability and restart individual services.
1768
+ *
1769
+ * Access via `forge.server(id).services`.
1770
+ *
1771
+ * The v2 API has no GET endpoint for services, so `list()` derives availability
1772
+ * from the server object. Restarting maps to the API action `reboot`.
1773
+ *
1774
+ * @example
1775
+ * ```ts
1776
+ * // List services and their availability
1777
+ * const services = await forge.server(123).services.list();
1778
+ *
1779
+ * // Restart nginx
1780
+ * await forge.server(123).services.restart('nginx');
1781
+ *
1782
+ * // Restart php (version required)
1783
+ * await forge.server(123).services.restart('php', { version: 'php83' });
1784
+ * ```
1785
+ */
1786
+ var ServicesCollection = class extends BaseCollection {
1787
+ serverId;
1788
+ /** @internal */
1789
+ constructor(client, orgSlug, serverId) {
1790
+ super(client, orgSlug);
1791
+ this.serverId = serverId;
1792
+ }
1793
+ get basePath() {
1794
+ return `/orgs/${this.orgSlug}/servers/${this.serverId}`;
1795
+ }
1796
+ /**
1797
+ * List services on this server with a derived availability flag.
1798
+ *
1799
+ * @example
1800
+ * ```ts
1801
+ * const services = await forge.server(123).services.list();
1802
+ * // → [{ service: 'nginx', available: true, detail: null }, ...]
1803
+ * ```
1804
+ */
1805
+ async list() {
1806
+ const server = unwrapDocument$1(await this.client.get(this.basePath));
1807
+ const databaseType = server.database_type ?? "";
1808
+ const isMysql = databaseType.startsWith("mysql") || databaseType.startsWith("mariadb");
1809
+ const isPostgres = databaseType.startsWith("postgres");
1810
+ return [
1811
+ {
1812
+ service: "nginx",
1813
+ available: true,
1814
+ detail: null
1815
+ },
1816
+ {
1817
+ service: "php",
1818
+ available: server.php_version !== null,
1819
+ detail: server.php_version
1820
+ },
1821
+ {
1822
+ service: "mysql",
1823
+ available: isMysql,
1824
+ detail: isMysql ? server.database_type : null
1825
+ },
1826
+ {
1827
+ service: "postgres",
1828
+ available: isPostgres,
1829
+ detail: isPostgres ? server.database_type : null
1830
+ },
1831
+ {
1832
+ service: "redis",
1833
+ available: server.redis_status !== null,
1834
+ detail: server.redis_status
1835
+ },
1836
+ {
1837
+ service: "supervisor",
1838
+ available: true,
1839
+ detail: null
1840
+ }
1841
+ ];
1842
+ }
1843
+ /**
1844
+ * Restart a service on this server.
1845
+ *
1846
+ * Maps to the API action `reboot`. The php service requires a `version`.
1847
+ *
1848
+ * @example
1849
+ * ```ts
1850
+ * await forge.server(123).services.restart('nginx');
1851
+ * await forge.server(123).services.restart('php', { version: 'php83' });
1852
+ * ```
1853
+ */
1854
+ async restart(service, options = {}) {
1855
+ if (!RESTARTABLE_SERVICES.includes(service)) throw new Error(`Invalid service "${service}". Valid services: ${RESTARTABLE_SERVICES.join(", ")}.`);
1856
+ if (service === "php" && !options.version) throw new Error("The \"php\" service requires a version (e.g. \"php83\") to restart.");
1857
+ await this.client.post(`${this.basePath}/services/${service}/actions`, {
1858
+ action: "reboot",
1859
+ ...options.version ? { version: options.version } : {}
1860
+ });
1861
+ }
1862
+ };
1863
+ //#endregion
1864
+ //#region src/resources/php.ts
1865
+ /**
1866
+ * The PHP configuration files that Forge can read and write.
1867
+ */
1868
+ var PHP_CONFIG_TYPES = [
1869
+ "cli",
1870
+ "fpm",
1871
+ "pool"
1872
+ ];
1873
+ /**
1874
+ * Throw when the configuration type is not one of cli, fpm or pool,
1875
+ * or when a user is given for a type other than pool.
1876
+ */
1877
+ function assertConfigTarget(type, options) {
1878
+ if (!PHP_CONFIG_TYPES.includes(type)) throw new Error(`Invalid PHP config type "${type}". Valid types: ${PHP_CONFIG_TYPES.join(", ")}.`);
1879
+ if (options.user && type !== "pool") throw new Error(`The user option applies to the pool config only, not "${type}".`);
1880
+ }
1881
+ /**
1882
+ * PHP on a server — installed versions, configuration files, limits and OPcache.
1883
+ *
1884
+ * Access via `forge.server(id).php`.
1885
+ *
1886
+ * Version methods take the PHP version ID from `list()`.
1887
+ *
1888
+ * @example
1889
+ * ```ts
1890
+ * const versions = await forge.server(123).php.list();
1891
+ * const fpm = await forge.server(123).php.config(versions[0].id, 'fpm');
1892
+ * await forge.server(123).php.setMaxUploadSize(64);
1893
+ * await forge.server(123).php.enableOpcache();
1894
+ * ```
1895
+ */
1896
+ var PhpResource = class extends BaseCollection {
1897
+ serverId;
1898
+ /** @internal */
1899
+ constructor(client, orgSlug, serverId) {
1900
+ super(client, orgSlug);
1901
+ this.serverId = serverId;
1902
+ }
1903
+ get basePath() {
1904
+ return `/orgs/${this.orgSlug}/servers/${this.serverId}/php`;
1905
+ }
1906
+ /**
1907
+ * List the PHP versions installed on this server.
1908
+ *
1909
+ * @example
1910
+ * ```ts
1911
+ * const versions = await forge.server(123).php.list();
1912
+ * // → [{ id: 12, version: '8.3', binary_name: 'php8.3', status: 'installed', ... }]
1913
+ * ```
1914
+ */
1915
+ async list(options = {}) {
1916
+ const query = options.cursor !== void 0 ? `?page[cursor]=${options.cursor}` : "";
1917
+ return unwrapListDocument$1(await this.client.get(`${this.basePath}/versions${query}`));
1918
+ }
1919
+ /**
1920
+ * Get one installed PHP version.
1921
+ *
1922
+ * @example
1923
+ * ```ts
1924
+ * const version = await forge.server(123).php.get(12);
1925
+ * ```
1926
+ */
1927
+ async get(versionId) {
1928
+ return unwrapDocument$1(await this.client.get(`${this.basePath}/versions/${versionId}`));
1929
+ }
1930
+ /**
1931
+ * Get a PHP configuration file (cli, fpm or pool) of a version.
1932
+ *
1933
+ * @example
1934
+ * ```ts
1935
+ * const ini = await forge.server(123).php.config(12, 'fpm');
1936
+ * const pool = await forge.server(123).php.config(12, 'pool', { user: 'forge' });
1937
+ * ```
1938
+ */
1939
+ async config(versionId, type, options = {}) {
1940
+ assertConfigTarget(type, options);
1941
+ const query = options.user ? `?user=${encodeURIComponent(options.user)}` : "";
1942
+ return unwrapDocument$1(await this.client.get(`${this.basePath}/versions/${versionId}/configs/${type}${query}`)).configuration;
1943
+ }
1944
+ /**
1945
+ * Replace a PHP configuration file (cli, fpm or pool) of a version.
1946
+ *
1947
+ * @example
1948
+ * ```ts
1949
+ * await forge.server(123).php.updateConfig(12, 'fpm', 'memory_limit = 512M\n...');
1950
+ * ```
1951
+ */
1952
+ async updateConfig(versionId, type, content, options = {}) {
1953
+ assertConfigTarget(type, options);
1954
+ await this.client.put(`${this.basePath}/versions/${versionId}/configs/${type}`, {
1955
+ config: content,
1956
+ ...options.user ? { user: options.user } : {}
1957
+ });
1958
+ }
1959
+ /**
1960
+ * Get the PHP max upload size, in megabytes.
1961
+ *
1962
+ * @example
1963
+ * ```ts
1964
+ * const size = await forge.server(123).php.maxUploadSize(); // → "64"
1965
+ * ```
1966
+ */
1967
+ async maxUploadSize() {
1968
+ const response = await this.client.get(`${this.basePath}/max-upload-size`);
1969
+ return String(unwrapDocument$1(response).max_upload_size);
1970
+ }
1971
+ /**
1972
+ * Set the PHP max upload size, in megabytes.
1973
+ *
1974
+ * @example
1975
+ * ```ts
1976
+ * await forge.server(123).php.setMaxUploadSize(128);
1977
+ * ```
1978
+ */
1979
+ async setMaxUploadSize(size) {
1980
+ await this.client.put(`${this.basePath}/max-upload-size`, { max_upload_size: size });
1981
+ }
1982
+ /**
1983
+ * Get the PHP max execution time, in seconds.
1984
+ *
1985
+ * @example
1986
+ * ```ts
1987
+ * const seconds = await forge.server(123).php.maxExecutionTime(); // → "60"
1988
+ * ```
1989
+ */
1990
+ async maxExecutionTime() {
1991
+ const response = await this.client.get(`${this.basePath}/max-execution-time`);
1992
+ return String(unwrapDocument$1(response).max_execution_time);
1993
+ }
1994
+ /**
1995
+ * Set the PHP max execution time, in seconds.
1996
+ *
1997
+ * @example
1998
+ * ```ts
1999
+ * await forge.server(123).php.setMaxExecutionTime(120);
2000
+ * ```
2001
+ */
2002
+ async setMaxExecutionTime(seconds) {
2003
+ await this.client.put(`${this.basePath}/max-execution-time`, { max_execution_time: seconds });
2004
+ }
2005
+ /**
2006
+ * Get whether OPcache is enabled.
2007
+ *
2008
+ * @example
2009
+ * ```ts
2010
+ * const enabled = await forge.server(123).php.opcache(); // → true
2011
+ * ```
2012
+ */
2013
+ async opcache() {
2014
+ return unwrapDocument$1(await this.client.get(`${this.basePath}/opcache`)).opcache_enabled;
2015
+ }
2016
+ /**
2017
+ * Enable OPcache.
2018
+ *
2019
+ * @example
2020
+ * ```ts
2021
+ * await forge.server(123).php.enableOpcache();
2022
+ * ```
2023
+ */
2024
+ async enableOpcache() {
2025
+ await this.client.post(`${this.basePath}/opcache`);
2026
+ }
2027
+ /**
2028
+ * Disable OPcache.
2029
+ *
2030
+ * @example
2031
+ * ```ts
2032
+ * await forge.server(123).php.disableOpcache();
2033
+ * ```
2034
+ */
2035
+ async disableOpcache() {
2036
+ await this.client.delete(`${this.basePath}/opcache`);
2037
+ }
2038
+ };
2039
+ //#endregion
1743
2040
  //#region src/resources/servers.ts
1744
2041
  /**
1745
2042
  * Collection of servers.
@@ -1933,6 +2230,10 @@ var ServerResource = class extends BaseCollection {
1933
2230
  sshKeys;
1934
2231
  /** Nginx templates on this server. */
1935
2232
  nginxTemplates;
2233
+ /** Services (nginx, php, mysql, etc.) on this server. */
2234
+ services;
2235
+ /** PHP versions, configuration files, limits and OPcache on this server. */
2236
+ php;
1936
2237
  /** @internal */
1937
2238
  constructor(client, orgSlug, serverId) {
1938
2239
  super(client, orgSlug);
@@ -1947,6 +2248,8 @@ var ServerResource = class extends BaseCollection {
1947
2248
  this.firewallRules = new FirewallRulesCollection(client, orgSlug, serverId);
1948
2249
  this.sshKeys = new SshKeysCollection(client, orgSlug, serverId);
1949
2250
  this.nginxTemplates = new NginxTemplatesCollection(client, orgSlug, serverId);
2251
+ this.services = new ServicesCollection(client, orgSlug, serverId);
2252
+ this.php = new PhpResource(client, orgSlug, serverId);
1950
2253
  }
1951
2254
  /**
1952
2255
  * Access a specific site on this server, with nested resources.
@@ -2207,6 +2510,6 @@ var Forge = class {
2207
2510
  }
2208
2511
  };
2209
2512
  //#endregion
2210
- export { AsyncPaginatedIterator, BackupsCollection, BaseCollection, CertificatesCollection, CommandsCollection, DaemonsCollection, DatabaseUsersCollection, DatabasesCollection, DeploymentsCollection, FirewallRulesCollection, Forge, MonitorsCollection, NginxTemplatesCollection, RecipesCollection, RedirectRulesCollection, ScheduledJobsCollection, SecurityRulesCollection, ServerResource, ServersCollection, SiteEnvResource, SiteNginxResource, SiteResource, SitesCollection, SshKeysCollection, unwrapDocument, unwrapListDocument, unwrapResource };
2513
+ export { AsyncPaginatedIterator, BackupsCollection, BaseCollection, CertificatesCollection, CommandsCollection, DaemonsCollection, DatabaseUsersCollection, DatabasesCollection, DeploymentsCollection, FirewallRulesCollection, Forge, MonitorsCollection, NginxTemplatesCollection, PHP_CONFIG_TYPES, PhpResource, RESTARTABLE_SERVICES, RecipesCollection, RedirectRulesCollection, ScheduledJobsCollection, SecurityRulesCollection, ServerResource, ServersCollection, ServicesCollection, SiteEnvResource, SiteNginxResource, SiteResource, SitesCollection, SshKeysCollection, unwrapDocument, unwrapListDocument, unwrapResource };
2211
2514
 
2212
2515
  //# sourceMappingURL=index.js.map