@xylabs/api 5.1.2 → 5.1.4

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.
@@ -75,4 +75,4 @@ export {
75
75
  ApiStage,
76
76
  getApiStage
77
77
  };
78
- //# sourceMappingURL=index.mjs.map
78
+ //# sourceMappingURL=index.mjs.map
@@ -1 +1,7 @@
1
- {"version":3,"sources":["../../src/ApiStage.ts","../../src/ApiClient.ts","../../src/ApiEndpoint.ts","../../src/getApiStage.ts"],"sourcesContent":["import type { EnumValue } from '@xylabs/enum'\nimport { Enum } from '@xylabs/enum'\n\n/** Deployment stage identifiers for API environments. */\nexport const ApiStage = Enum({\n Beta: 'beta',\n Local: 'local',\n Prod: 'prod',\n})\n\n/** A valid API stage value ('prod', 'beta', or 'local'). */\nexport type ApiStage = EnumValue<typeof ApiStage>\n","import { ApiStage } from './ApiStage.ts'\n\n/** Abstract base class for API clients that provides stage and token configuration. */\nabstract class ApiClient {\n protected stage?: ApiStage\n protected token?: string | null\n\n constructor(\n token?: string | null,\n stage?: ApiStage,\n ) {\n this.stage = stage ?? ApiStage.Prod\n this.token = token\n }\n\n abstract endPoint(): string\n}\n\nexport { ApiClient }\n","import { fetchJsonGet, fetchJsonPost } from '@xylabs/fetch'\nimport { isUndefined } from '@xylabs/typeof'\n\nimport type { ApiConfig } from './ApiConfig.ts'\n\n/**\n * Generic REST API endpoint wrapper that supports fetching and inserting typed data.\n * @typeParam T - The type of data returned by the endpoint\n */\nclass ApiEndpoint<T> {\n private _value?: T\n private config: ApiConfig\n private path: string\n\n constructor(config: ApiConfig, path: string) {\n this.config = config\n this.path = path\n }\n\n get value() {\n return this._value\n }\n\n private get headers() {\n return isUndefined(this.config.jwtToken) ? undefined : { Authorization: this.config.jwtToken }\n }\n\n private get url() {\n return `${this.config.apiDomain}/${this.path}`\n }\n\n async fetch() {\n const response = await fetchJsonGet<T>(this.url, { headers: this.headers })\n if (response.status === 200) {\n this._value = response.data ?? undefined\n } else {\n throw new Error('Unexpected Status Code')\n }\n return this._value\n }\n\n async get() {\n return this._value ?? (await this.fetch())\n }\n\n async insert(value: T) {\n const response = await fetchJsonPost<T>(this.url, value, { headers: this.headers })\n if (response.status === 200) {\n this._value = response.data ?? undefined\n } else {\n throw new Error('Unexpected Status Code')\n }\n return this._value\n }\n}\n\nexport { ApiEndpoint }\n","import { ApiStage } from './ApiStage.ts'\n\n/**\n * Determines the API stage based on the hostname.\n * @param hostname - The hostname to evaluate\n * @returns The corresponding ApiStage (Local, Beta, or Prod)\n */\nconst getApiStage = (hostname: string) => {\n if (hostname.startsWith('localhost')) {\n return ApiStage.Local\n } else if (hostname.startsWith('beta.')) {\n return ApiStage.Beta\n } else {\n return ApiStage.Prod\n }\n}\n\nexport { getApiStage }\n"],"mappings":";AACA,SAAS,YAAY;AAGd,IAAM,WAAW,KAAK;AAAA,EAC3B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AACR,CAAC;;;ACLD,IAAe,YAAf,MAAyB;AAAA,EACb;AAAA,EACA;AAAA,EAEV,YACE,OACA,OACA;AACA,SAAK,QAAQ,SAAS,SAAS;AAC/B,SAAK,QAAQ;AAAA,EACf;AAGF;;;AChBA,SAAS,cAAc,qBAAqB;AAC5C,SAAS,mBAAmB;AAQ5B,IAAM,cAAN,MAAqB;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EAER,YAAY,QAAmB,MAAc;AAC3C,SAAK,SAAS;AACd,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,IAAI,QAAQ;AACV,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAY,UAAU;AACpB,WAAO,YAAY,KAAK,OAAO,QAAQ,IAAI,SAAY,EAAE,eAAe,KAAK,OAAO,SAAS;AAAA,EAC/F;AAAA,EAEA,IAAY,MAAM;AAChB,WAAO,GAAG,KAAK,OAAO,SAAS,IAAI,KAAK,IAAI;AAAA,EAC9C;AAAA,EAEA,MAAM,QAAQ;AACZ,UAAM,WAAW,MAAM,aAAgB,KAAK,KAAK,EAAE,SAAS,KAAK,QAAQ,CAAC;AAC1E,QAAI,SAAS,WAAW,KAAK;AAC3B,WAAK,SAAS,SAAS,QAAQ;AAAA,IACjC,OAAO;AACL,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,MAAM;AACV,WAAO,KAAK,UAAW,MAAM,KAAK,MAAM;AAAA,EAC1C;AAAA,EAEA,MAAM,OAAO,OAAU;AACrB,UAAM,WAAW,MAAM,cAAiB,KAAK,KAAK,OAAO,EAAE,SAAS,KAAK,QAAQ,CAAC;AAClF,QAAI,SAAS,WAAW,KAAK;AAC3B,WAAK,SAAS,SAAS,QAAQ;AAAA,IACjC,OAAO;AACL,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AACA,WAAO,KAAK;AAAA,EACd;AACF;;;AC/CA,IAAM,cAAc,CAAC,aAAqB;AACxC,MAAI,SAAS,WAAW,WAAW,GAAG;AACpC,WAAO,SAAS;AAAA,EAClB,WAAW,SAAS,WAAW,OAAO,GAAG;AACvC,WAAO,SAAS;AAAA,EAClB,OAAO;AACL,WAAO,SAAS;AAAA,EAClB;AACF;","names":[]}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/ApiStage.ts", "../../src/ApiClient.ts", "../../src/ApiEndpoint.ts", "../../src/getApiStage.ts"],
4
+ "sourcesContent": ["import type { EnumValue } from '@xylabs/enum'\nimport { Enum } from '@xylabs/enum'\n\n/** Deployment stage identifiers for API environments. */\nexport const ApiStage = Enum({\n Beta: 'beta',\n Local: 'local',\n Prod: 'prod',\n})\n\n/** A valid API stage value ('prod', 'beta', or 'local'). */\nexport type ApiStage = EnumValue<typeof ApiStage>\n", "import { ApiStage } from './ApiStage.ts'\n\n/** Abstract base class for API clients that provides stage and token configuration. */\nabstract class ApiClient {\n protected stage?: ApiStage\n protected token?: string | null\n\n constructor(\n token?: string | null,\n stage?: ApiStage,\n ) {\n this.stage = stage ?? ApiStage.Prod\n this.token = token\n }\n\n abstract endPoint(): string\n}\n\nexport { ApiClient }\n", "import { fetchJsonGet, fetchJsonPost } from '@xylabs/fetch'\nimport { isUndefined } from '@xylabs/typeof'\n\nimport type { ApiConfig } from './ApiConfig.ts'\n\n/**\n * Generic REST API endpoint wrapper that supports fetching and inserting typed data.\n * @typeParam T - The type of data returned by the endpoint\n */\nclass ApiEndpoint<T> {\n private _value?: T\n private config: ApiConfig\n private path: string\n\n constructor(config: ApiConfig, path: string) {\n this.config = config\n this.path = path\n }\n\n get value() {\n return this._value\n }\n\n private get headers() {\n return isUndefined(this.config.jwtToken) ? undefined : { Authorization: this.config.jwtToken }\n }\n\n private get url() {\n return `${this.config.apiDomain}/${this.path}`\n }\n\n async fetch() {\n const response = await fetchJsonGet<T>(this.url, { headers: this.headers })\n if (response.status === 200) {\n this._value = response.data ?? undefined\n } else {\n throw new Error('Unexpected Status Code')\n }\n return this._value\n }\n\n async get() {\n return this._value ?? (await this.fetch())\n }\n\n async insert(value: T) {\n const response = await fetchJsonPost<T>(this.url, value, { headers: this.headers })\n if (response.status === 200) {\n this._value = response.data ?? undefined\n } else {\n throw new Error('Unexpected Status Code')\n }\n return this._value\n }\n}\n\nexport { ApiEndpoint }\n", "import { ApiStage } from './ApiStage.ts'\n\n/**\n * Determines the API stage based on the hostname.\n * @param hostname - The hostname to evaluate\n * @returns The corresponding ApiStage (Local, Beta, or Prod)\n */\nconst getApiStage = (hostname: string) => {\n if (hostname.startsWith('localhost')) {\n return ApiStage.Local\n } else if (hostname.startsWith('beta.')) {\n return ApiStage.Beta\n } else {\n return ApiStage.Prod\n }\n}\n\nexport { getApiStage }\n"],
5
+ "mappings": ";AACA,SAAS,YAAY;AAGd,IAAM,WAAW,KAAK;AAAA,EAC3B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AACR,CAAC;;;ACLD,IAAe,YAAf,MAAyB;AAAA,EACb;AAAA,EACA;AAAA,EAEV,YACE,OACA,OACA;AACA,SAAK,QAAQ,SAAS,SAAS;AAC/B,SAAK,QAAQ;AAAA,EACf;AAGF;;;AChBA,SAAS,cAAc,qBAAqB;AAC5C,SAAS,mBAAmB;AAQ5B,IAAM,cAAN,MAAqB;AAAA,EACX;AAAA,EACA;AAAA,EACA;AAAA,EAER,YAAY,QAAmB,MAAc;AAC3C,SAAK,SAAS;AACd,SAAK,OAAO;AAAA,EACd;AAAA,EAEA,IAAI,QAAQ;AACV,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAY,UAAU;AACpB,WAAO,YAAY,KAAK,OAAO,QAAQ,IAAI,SAAY,EAAE,eAAe,KAAK,OAAO,SAAS;AAAA,EAC/F;AAAA,EAEA,IAAY,MAAM;AAChB,WAAO,GAAG,KAAK,OAAO,SAAS,IAAI,KAAK,IAAI;AAAA,EAC9C;AAAA,EAEA,MAAM,QAAQ;AACZ,UAAM,WAAW,MAAM,aAAgB,KAAK,KAAK,EAAE,SAAS,KAAK,QAAQ,CAAC;AAC1E,QAAI,SAAS,WAAW,KAAK;AAC3B,WAAK,SAAS,SAAS,QAAQ;AAAA,IACjC,OAAO;AACL,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,MAAM,MAAM;AACV,WAAO,KAAK,UAAW,MAAM,KAAK,MAAM;AAAA,EAC1C;AAAA,EAEA,MAAM,OAAO,OAAU;AACrB,UAAM,WAAW,MAAM,cAAiB,KAAK,KAAK,OAAO,EAAE,SAAS,KAAK,QAAQ,CAAC;AAClF,QAAI,SAAS,WAAW,KAAK;AAC3B,WAAK,SAAS,SAAS,QAAQ;AAAA,IACjC,OAAO;AACL,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AACA,WAAO,KAAK;AAAA,EACd;AACF;;;AC/CA,IAAM,cAAc,CAAC,aAAqB;AACxC,MAAI,SAAS,WAAW,WAAW,GAAG;AACpC,WAAO,SAAS;AAAA,EAClB,WAAW,SAAS,WAAW,OAAO,GAAG;AACvC,WAAO,SAAS;AAAA,EAClB,OAAO;AACL,WAAO,SAAS;AAAA,EAClB;AACF;",
6
+ "names": []
7
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xylabs/api",
3
- "version": "5.1.2",
3
+ "version": "5.1.4",
4
4
  "description": "Base functionality used throughout XY Labs TypeScript/JavaScript libraries",
5
5
  "keywords": [
6
6
  "xylabs",
@@ -40,22 +40,22 @@
40
40
  "README.md"
41
41
  ],
42
42
  "dependencies": {
43
- "@xylabs/enum": "~5.1.2",
44
- "@xylabs/fetch": "~5.1.2",
45
- "@xylabs/typeof": "~5.1.2"
43
+ "@xylabs/enum": "~5.1.4",
44
+ "@xylabs/fetch": "~5.1.4",
45
+ "@xylabs/typeof": "~5.1.4"
46
46
  },
47
47
  "devDependencies": {
48
- "@types/node": "^25.6.0",
49
- "@xylabs/toolchain": "~7.13.15",
50
- "@xylabs/tsconfig": "~7.13.15",
51
- "eslint": "^10.3.0",
52
- "pako": "~2.1.0",
53
- "typescript": "^5.9.3",
54
- "vite": "^8.0.10",
55
- "vitest": "^4.1.5"
48
+ "@types/node": "^25.9.0",
49
+ "@xylabs/toolchain": "~8.0.8",
50
+ "@xylabs/tsconfig": "~8.0.8",
51
+ "eslint": "^10.4.0",
52
+ "pako": "^2.1.0",
53
+ "typescript": "^6.0.3",
54
+ "vite": "^8.0.13",
55
+ "vitest": "^4.1.6"
56
56
  },
57
57
  "peerDependencies": {
58
- "pako": "~2.1"
58
+ "pako": "^2.1"
59
59
  },
60
60
  "engines": {
61
61
  "node": ">=18"