@faiber/faiber-drm 0.5.1

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 ADDED
@@ -0,0 +1,27 @@
1
+ # @faiber/faiber-drm
2
+
3
+ Typed client for sandbox audio/video folders, tags, media search, uploads, metadata, deletion, and signed playback. Sandbox applications should normally install the single `@faiber/faiber-ts-sdk` facade; this package is its internal service module.
4
+
5
+ ## Run and configure
6
+
7
+ ```bash
8
+ npm install @faiber/faiber-ts-sdk
9
+ ```
10
+
11
+ ```ts
12
+ import { FaiberSDK } from "@faiber/faiber-ts-sdk";
13
+
14
+ const sdk = new FaiberSDK({
15
+ domains: { drm: process.env.FAIBER_DRM_URL! },
16
+ tokenProvider,
17
+ axios: { timeout: 15_000 },
18
+ });
19
+
20
+ const page = await sdk.drm.media({ search: "intro", media_type: "video", page: 1, size: 30 });
21
+ const upload = await sdk.drm.uploadMedia({ file, name: "Introduction", tag_ids: [tagId] });
22
+ const playback = await sdk.drm.playback(upload.data.id);
23
+ ```
24
+
25
+ `FAIBER_DRM_URL` must be the DRM service origin. Bearer and cookie authentication use the shared SDK configuration. Upload accepts `Blob` and sends `multipart/form-data`; only audio and video are accepted by the backend. Playback URLs are signed for 900 seconds. Every call returns the complete Axios response and accepts Axios request options, including `AbortSignal`, headers, timeout, and adapters.
26
+
27
+ The client covers all 15 mounted REST operations. Inputs, list filters, paginated results, entity models, and playback output are named exported TypeScript types. Axios errors preserve validation, not-found, and transport responses.
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.es2022.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/axios/index.d.ts","../../core/dist/types.d.ts","../../core/dist/env.d.ts","../../core/dist/auth.d.ts","../../core/dist/client.d.ts","../../core/dist/resource.d.ts","../../core/dist/openapi.d.ts","../../core/dist/index.d.ts","../src/types.ts","../src/index.ts"],"fileIdsList":[[61],[60,61],[60,61,62,63,64,65,66],[60,61,64],[60],[67,68],[67]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"8cdf8847677ac7d20486e54dd3fcf09eda95812ac8ace44b4418da1bbbab6eb8","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"2343ec253c90c370449755739733f5f429f58cffdb51a50977bb4a042012fa8f","impliedFormat":99},{"version":"26f987e0668743de897c1f91f5f23d4cbe168995a1c299a40560bc7ac41a93cf","impliedFormat":99},{"version":"82065c5512d8d6f81b26cf13ea9ecd3e558be9560f7b5c62260858219ecd87f7","impliedFormat":99},{"version":"ed17ed1b2bcf384c88bc6cec6b427989b98db99fc7ad35a50605501a463bbc53","impliedFormat":99},{"version":"82bf4efcca8ab8764a91ac126c0af605ab6717ee94b2316461b5fa388b27e165","impliedFormat":99},{"version":"82ffc9a1d95766c8f6f6bb4316b1d83e9d6a1d4ec41057d1a897cca70176bfc1","impliedFormat":99},{"version":"3f5eeb0a84713ccf640b9a6af4629e006f59d7629abc3fc95af2efb062fd0b83","impliedFormat":99},{"version":"66a0cb4d019dd780c2fb5c2942778929ec55715bb5a0f3b80aac4c0b92e35d16","impliedFormat":99},{"version":"b20f035716f3216403ad81333f43dd00262c78d961091c867facad32796ca290","signature":"967436c043c2f0f4371989f5a4610668f3cfa33f2f149a0239d41a847a7404a4","impliedFormat":99},{"version":"9088a6bbd44cff12289825f1ca93ed592721b18247291fe81cab28d7fa39eac8","signature":"8a56936ccca1e403f7ea259468e4968d658c07c82e49e85b6e3c52199ae223a5","impliedFormat":99}],"root":[68,69],"options":{"composite":true,"declaration":true,"declarationMap":true,"exactOptionalPropertyTypes":true,"module":199,"noUncheckedIndexedAccess":true,"outDir":"./","rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":true,"target":9,"tsBuildInfoFile":"./.tsbuildinfo","verbatimModuleSyntax":true},"referencedMap":[[63,1],[64,2],[62,1],[67,3],[66,4],[65,4],[61,5],[69,6],[68,7]],"latestChangedDtsFile":"./index.d.ts","version":"5.9.3"}
@@ -0,0 +1,36 @@
1
+ import { ServiceApi, type Identifier, type RequestOptions } from "@faiber/sdk-core";
2
+ import type * as T from "./types.js";
3
+ /** Complete typed client for the sandbox digital-rights media service. */
4
+ export declare class DrmApi extends ServiceApi {
5
+ /** Checks DRM service readiness. Calls `GET /api/v1/status`. */
6
+ status(options?: RequestOptions): Promise<import("axios").AxiosResponse<T.DrmStatus, any, {}>>;
7
+ /** Lists media folders. Calls `GET /api/v1/folders`. */
8
+ folders(options?: RequestOptions): Promise<import("axios").AxiosResponse<T.DrmFolder[], any, {}>>;
9
+ /** Creates a media folder. Calls `POST /api/v1/folders`. */
10
+ createFolder(data: T.DrmFolderInput, options?: RequestOptions<T.DrmFolderInput>): Promise<import("axios").AxiosResponse<T.DrmFolder, T.DrmFolderInput, {}>>;
11
+ /** Replaces a folder's mutable name and parent. Calls `PATCH /api/v1/folders/{id}`. */
12
+ updateFolder(id: Identifier, data: T.DrmFolderInput, options?: RequestOptions<T.DrmFolderInput>): Promise<import("axios").AxiosResponse<T.DrmFolder, T.DrmFolderInput, {}>>;
13
+ /** Deletes a folder and returns the full 204 Axios response. Calls `DELETE /api/v1/folders/{id}`. */
14
+ deleteFolder(id: Identifier, options?: RequestOptions): Promise<import("axios").AxiosResponse<void, any, {}>>;
15
+ /** Lists media tags. Calls `GET /api/v1/tags`. */
16
+ tags(options?: RequestOptions): Promise<import("axios").AxiosResponse<T.DrmTag[], any, {}>>;
17
+ /** Creates a media tag. Calls `POST /api/v1/tags`. */
18
+ createTag(data: T.DrmTagInput, options?: RequestOptions<T.DrmTagInput>): Promise<import("axios").AxiosResponse<T.DrmTag, T.DrmTagInput, {}>>;
19
+ /** Deletes a tag and returns the full 204 Axios response. Calls `DELETE /api/v1/tags/{id}`. */
20
+ deleteTag(id: Identifier, options?: RequestOptions): Promise<import("axios").AxiosResponse<void, any, {}>>;
21
+ /** Searches and filters paginated audio/video media. Calls `GET /api/v1/media`. */
22
+ media(params?: T.DrmMediaListQuery, options?: RequestOptions): Promise<import("axios").AxiosResponse<T.DrmMediaPage, any, {}>>;
23
+ /** Gets media metadata and tags. Calls `GET /api/v1/media/{id}`. */
24
+ medium(id: Identifier, options?: RequestOptions): Promise<import("axios").AxiosResponse<T.DrmMediaRecord, any, {}>>;
25
+ /** Uploads audio/video with optional metadata. Calls `POST /api/v1/media` as multipart form data. */
26
+ uploadMedia(input: T.DrmMediaUpload, options?: RequestOptions<FormData>): Promise<import("axios").AxiosResponse<T.DrmMediaRecord, FormData, {}>>;
27
+ /** Updates media metadata or tag links. Calls `PATCH /api/v1/media/{id}`. */
28
+ updateMedia(id: Identifier, data: T.DrmMediaUpdate, options?: RequestOptions<T.DrmMediaUpdate>): Promise<import("axios").AxiosResponse<T.DrmMediaRecord, T.DrmMediaUpdate, {}>>;
29
+ /** Deletes media metadata and stored object. Calls `DELETE /api/v1/media/{id}`. */
30
+ deleteMedia(id: Identifier, options?: RequestOptions): Promise<import("axios").AxiosResponse<void, any, {}>>;
31
+ /** Creates a 15-minute signed playback URL for active media. Calls `GET /api/v1/media/{id}/playback`. */
32
+ playback(id: Identifier, options?: RequestOptions): Promise<import("axios").AxiosResponse<T.DrmPlayback, any, {}>>;
33
+ }
34
+ export * from "./types.js";
35
+ export * from "@faiber/sdk-core";
36
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,KAAK,KAAK,CAAC,MAAM,YAAY,CAAC;AAErC,0EAA0E;AAC1E,qBAAa,MAAO,SAAQ,UAAU;IACpC,gEAAgE;IAChE,MAAM,CAAC,OAAO,CAAC,EAAE,cAAc;IAC/B,wDAAwD;IACxD,OAAO,CAAC,OAAO,CAAC,EAAE,cAAc;IAChC,4DAA4D;IAC5D,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC;IAC/E,uFAAuF;IACvF,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC;IAC/F,qGAAqG;IACrG,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,cAAc;IACrD,kDAAkD;IAClD,IAAI,CAAC,OAAO,CAAC,EAAE,cAAc;IAC7B,sDAAsD;IACtD,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC;IACtE,+FAA+F;IAC/F,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,cAAc;IAClD,mFAAmF;IACnF,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,iBAAiB,EAAE,OAAO,CAAC,EAAE,cAAc;IAC5D,oEAAoE;IACpE,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,cAAc;IAC/C,qGAAqG;IACrG,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,QAAQ,CAAC;IASvE,6EAA6E;IAC7E,WAAW,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC;IAC9F,mFAAmF;IACnF,WAAW,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,cAAc;IACpD,yGAAyG;IACzG,QAAQ,CAAC,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,cAAc;CAClD;AAED,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,47 @@
1
+ import { ServiceApi } from "@faiber/sdk-core";
2
+ /** Complete typed client for the sandbox digital-rights media service. */
3
+ export class DrmApi extends ServiceApi {
4
+ /** Checks DRM service readiness. Calls `GET /api/v1/status`. */
5
+ status(options) { return this.client.get("/api/v1/status", undefined, options); }
6
+ /** Lists media folders. Calls `GET /api/v1/folders`. */
7
+ folders(options) { return this.client.get("/api/v1/folders", undefined, options); }
8
+ /** Creates a media folder. Calls `POST /api/v1/folders`. */
9
+ createFolder(data, options) { return this.client.post("/api/v1/folders", data, options); }
10
+ /** Replaces a folder's mutable name and parent. Calls `PATCH /api/v1/folders/{id}`. */
11
+ updateFolder(id, data, options) { return this.client.patch(`/api/v1/folders/${encodeURIComponent(id)}`, data, options); }
12
+ /** Deletes a folder and returns the full 204 Axios response. Calls `DELETE /api/v1/folders/{id}`. */
13
+ deleteFolder(id, options) { return this.client.delete(`/api/v1/folders/${encodeURIComponent(id)}`, options); }
14
+ /** Lists media tags. Calls `GET /api/v1/tags`. */
15
+ tags(options) { return this.client.get("/api/v1/tags", undefined, options); }
16
+ /** Creates a media tag. Calls `POST /api/v1/tags`. */
17
+ createTag(data, options) { return this.client.post("/api/v1/tags", data, options); }
18
+ /** Deletes a tag and returns the full 204 Axios response. Calls `DELETE /api/v1/tags/{id}`. */
19
+ deleteTag(id, options) { return this.client.delete(`/api/v1/tags/${encodeURIComponent(id)}`, options); }
20
+ /** Searches and filters paginated audio/video media. Calls `GET /api/v1/media`. */
21
+ media(params, options) { return this.client.get("/api/v1/media", params, options); }
22
+ /** Gets media metadata and tags. Calls `GET /api/v1/media/{id}`. */
23
+ medium(id, options) { return this.client.get(`/api/v1/media/${encodeURIComponent(id)}`, undefined, options); }
24
+ /** Uploads audio/video with optional metadata. Calls `POST /api/v1/media` as multipart form data. */
25
+ uploadMedia(input, options) {
26
+ const data = new FormData();
27
+ data.append("file", input.file);
28
+ if (input.name !== undefined)
29
+ data.append("name", input.name);
30
+ if (input.description !== undefined)
31
+ data.append("description", input.description);
32
+ if (input.folder_id !== undefined)
33
+ data.append("folder_id", input.folder_id ?? "");
34
+ if (input.tag_ids !== undefined)
35
+ data.append("tag_ids", JSON.stringify(input.tag_ids));
36
+ return this.client.post("/api/v1/media", data, options);
37
+ }
38
+ /** Updates media metadata or tag links. Calls `PATCH /api/v1/media/{id}`. */
39
+ updateMedia(id, data, options) { return this.client.patch(`/api/v1/media/${encodeURIComponent(id)}`, data, options); }
40
+ /** Deletes media metadata and stored object. Calls `DELETE /api/v1/media/{id}`. */
41
+ deleteMedia(id, options) { return this.client.delete(`/api/v1/media/${encodeURIComponent(id)}`, options); }
42
+ /** Creates a 15-minute signed playback URL for active media. Calls `GET /api/v1/media/{id}/playback`. */
43
+ playback(id, options) { return this.client.get(`/api/v1/media/${encodeURIComponent(id)}/playback`, undefined, options); }
44
+ }
45
+ export * from "./types.js";
46
+ export * from "@faiber/sdk-core";
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ import type { JsonObject, QueryParams } from "@faiber/sdk-core";
2
+ export type DrmMediaType = "audio" | "video";
3
+ export type DrmMediaStatus = "active" | "inactive" | (string & {});
4
+ export interface DrmStatus extends JsonObject {
5
+ status: "ok";
6
+ service: "infera-drm";
7
+ }
8
+ export interface DrmFolder extends JsonObject {
9
+ id: string;
10
+ parent_id: string | null;
11
+ name: string;
12
+ created_at: string;
13
+ updated_at: string;
14
+ }
15
+ export interface DrmFolderInput extends JsonObject {
16
+ name: string;
17
+ parent_id?: string | null;
18
+ }
19
+ export interface DrmTag extends JsonObject {
20
+ id: string;
21
+ name: string;
22
+ created_at: string;
23
+ }
24
+ export interface DrmTagInput extends JsonObject {
25
+ name: string;
26
+ }
27
+ export interface DrmMedia extends JsonObject {
28
+ id: string;
29
+ folder_id: string | null;
30
+ name: string;
31
+ description: string | null;
32
+ media_type: DrmMediaType;
33
+ mime_type: string;
34
+ object_key: string;
35
+ bucket: string;
36
+ size_bytes: number;
37
+ duration_seconds: number | null;
38
+ status: DrmMediaStatus;
39
+ created_at: string;
40
+ updated_at: string;
41
+ }
42
+ export interface DrmMediaRecord extends DrmMedia {
43
+ tags: DrmTag[];
44
+ }
45
+ export interface DrmMediaListQuery extends QueryParams {
46
+ search?: string;
47
+ media_type?: DrmMediaType;
48
+ folder_id?: string;
49
+ tag_id?: string;
50
+ page?: number;
51
+ size?: number;
52
+ }
53
+ export interface DrmMediaPage extends JsonObject {
54
+ data: DrmMediaRecord[];
55
+ page: number;
56
+ page_size: number;
57
+ total_items: number;
58
+ }
59
+ export interface DrmMediaUpdate extends JsonObject {
60
+ name?: string;
61
+ description?: string;
62
+ folder_id?: string | null;
63
+ duration_seconds?: number;
64
+ status?: DrmMediaStatus;
65
+ tag_ids?: string[];
66
+ }
67
+ export interface DrmMediaUpload {
68
+ file: Blob;
69
+ name?: string;
70
+ description?: string;
71
+ folder_id?: string | null;
72
+ tag_ids?: string[];
73
+ }
74
+ export interface DrmPlayback extends JsonObject {
75
+ media_id: string;
76
+ media_type: DrmMediaType;
77
+ mime_type: string;
78
+ url: string;
79
+ expires_in_seconds: number;
80
+ }
81
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,21 @@
1
+ {
2
+ "name": "@faiber/faiber-drm",
3
+ "version": "0.5.1",
4
+ "type": "module",
5
+ "sideEffects": false,
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "files": [
15
+ "dist",
16
+ "README.md"
17
+ ],
18
+ "dependencies": {
19
+ "@faiber/sdk-core": "0.5.1"
20
+ }
21
+ }