@shumai-one/shumai-transcode 0.1.5 → 0.1.6
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.
|
@@ -12477,7 +12477,7 @@ model ApiToken {
|
|
|
12477
12477
|
INNER JOIN ancestor d ON d.parent_id = a.id
|
|
12478
12478
|
)
|
|
12479
12479
|
SELECT id, name, type FROM ancestor;
|
|
12480
|
-
`,g=[];for(let n of F){if(n.id===Q.id||n.type==="root"||n.type==="version_stack")continue;g.push({id:n.id,name:n.name})}let I=(await this.toAssetInfos([Q]))[0];if(I.ancestorFolders=g,I.media){if(I.media.imageTranscodes)for(let n of I.media.imageTranscodes)n.url=await EB.presign(process.env.S3_BUCKET||"shumai",n.key,"GET");if(I.media.videoTranscodes)for(let n of I.media.videoTranscodes)n.url=await EB.presign(process.env.S3_BUCKET||"shumai",n.key,"GET");if(I.media.original?.key)I.media.original.downloadUrl=await EB.presign(process.env.S3_BUCKET||"shumai",I.media.original.key,"GET")}return I}async getAssetContext(B){let Q=await this.prismaClient.asset.findUnique({where:{id:B},select:{projectId:!0,project:{select:{teamId:!0}},teamRootFolder:{select:{id:!0}}}});if(!Q)return null;if(Q.project)return{teamId:Q.project.teamId,projectId:Q.projectId??void 0};if(Q.teamRootFolder)return{teamId:Q.teamRootFolder.id};return null}async resolveTargetAssetId(B){let Q=await this.prismaClient.asset.findUnique({where:{id:B},select:{type:!0,targetId:!0}});if(Q?.type===eB.symlink&&Q.targetId)return Q.targetId;return B}async resolveLatestVersionId(B){let Q=await this.prismaClient.asset.findUnique({where:{id:B},select:{id:!0,type:!0,targetId:!0}});if(!Q)return B;let{id:F,type:g}=Q;if(Q.type===eB.symlink&&Q.targetId){let U=await this.prismaClient.asset.findUnique({where:{id:Q.targetId},select:{id:!0,type:!0}});if(U)F=U.id,g=U.type}if(g===eB.version_stack){let U=await this.prismaClient.asset.findFirst({where:{parentId:F,isDeleted:!1},orderBy:{sortIndex:"
|
|
12480
|
+
`,g=[];for(let n of F){if(n.id===Q.id||n.type==="root"||n.type==="version_stack")continue;g.push({id:n.id,name:n.name})}let I=(await this.toAssetInfos([Q]))[0];if(I.ancestorFolders=g,I.media){if(I.media.imageTranscodes)for(let n of I.media.imageTranscodes)n.url=await EB.presign(process.env.S3_BUCKET||"shumai",n.key,"GET");if(I.media.videoTranscodes)for(let n of I.media.videoTranscodes)n.url=await EB.presign(process.env.S3_BUCKET||"shumai",n.key,"GET");if(I.media.original?.key)I.media.original.downloadUrl=await EB.presign(process.env.S3_BUCKET||"shumai",I.media.original.key,"GET")}return I}async getAssetContext(B){let Q=await this.prismaClient.asset.findUnique({where:{id:B},select:{projectId:!0,project:{select:{teamId:!0}},teamRootFolder:{select:{id:!0}}}});if(!Q)return null;if(Q.project)return{teamId:Q.project.teamId,projectId:Q.projectId??void 0};if(Q.teamRootFolder)return{teamId:Q.teamRootFolder.id};return null}async resolveTargetAssetId(B){let Q=await this.prismaClient.asset.findUnique({where:{id:B},select:{type:!0,targetId:!0}});if(Q?.type===eB.symlink&&Q.targetId)return Q.targetId;return B}async resolveLatestVersionId(B){let Q=await this.prismaClient.asset.findUnique({where:{id:B},select:{id:!0,type:!0,targetId:!0}});if(!Q)return B;let{id:F,type:g}=Q;if(Q.type===eB.symlink&&Q.targetId){let U=await this.prismaClient.asset.findUnique({where:{id:Q.targetId},select:{id:!0,type:!0}});if(U)F=U.id,g=U.type}if(g===eB.version_stack){let U=await this.prismaClient.asset.findFirst({where:{parentId:F,isDeleted:!1},orderBy:{sortIndex:"asc"},select:{id:!0}});if(U)return U.id}return F}async updateAssetName(B){let Q=await this.prismaClient.asset.update({where:{id:B.id},data:{name:B.name},include:{creator:!0,metadataValues:!0,target:{include:{creator:!0,metadataValues:!0,storageKey:!0,children:{include:{creator:!0,metadataValues:!0,storageKey:!0},take:3,orderBy:{sortIndex:"asc"}}}},children:{include:{creator:!0,metadataValues:!0,storageKey:!0},take:3,orderBy:{sortIndex:"asc"}},storageKey:!0}});return(await this.toAssetInfos([Q]))[0]}async updateAssetOrder(B,Q){let F=await this.prismaClient.asset.findUnique({where:{id:B}});if(!F)throw Error("Asset not found");let g=null,U=null;if(Q.beforeIndex)U=Q.beforeIndex,g=(await this.prismaClient.asset.findFirst({where:{parentId:F.parentId,sortIndex:{lt:Q.beforeIndex},id:{not:B}},orderBy:{sortIndex:"desc"}}))?.sortIndex||null;else if(Q.afterIndex)g=Q.afterIndex,U=(await this.prismaClient.asset.findFirst({where:{parentId:F.parentId,sortIndex:{gt:Q.afterIndex},id:{not:B}},orderBy:{sortIndex:"asc"}}))?.sortIndex||null;let I=Mg(g,U);return await this.prismaClient.asset.update({where:{id:B},data:{sortIndex:I}}),this.getAsset({assetId:B})}async deleteAssets(B){for(let Q of B)await this.prismaClient.$transaction(async(F)=>{let g=await F.asset.findUnique({where:{id:Q},include:{project:{include:{team:!0}}}});if(!g)throw Error("Asset not found");if(!g.parentId)throw Error("Asset has no parent");await F.asset.update({where:{id:g.parentId},data:{fileCount:{decrement:1}}});let I=(await F.$queryRaw`
|
|
12481
12481
|
WITH RECURSIVE descendant AS (
|
|
12482
12482
|
SELECT id, parent_id FROM assets WHERE parent_id = ${g.id}
|
|
12483
12483
|
UNION ALL
|
|
@@ -12526,7 +12526,7 @@ model ApiToken {
|
|
|
12526
12526
|
WHERE a.is_deleted = false
|
|
12527
12527
|
)
|
|
12528
12528
|
SELECT id, name, type, parent_id AS "parentId", storage_key_id AS "storageKeyId", sort_index AS "sortIndex", target_id AS "targetId" FROM descendant;
|
|
12529
|
-
`,U=g.filter((Z)=>Z.type==="symlink"),I=[];if(U.length>0){let Z=U.map((u)=>u.targetId).filter((u)=>!!u);if(Z.length>0)I=(await this.prismaClient.asset.findMany({where:{id:{in:Z},isDeleted:!1}})).map((y)=>({id:y.id,name:y.name,type:y.type,parentId:y.parentId,storageKeyId:y.storageKeyId,sortIndex:y.sortIndex,targetId:y.targetId}))}let c=[...g.filter((Z)=>Z.type!=="symlink"),...I].filter((Z)=>Z.type!=="folder"&&Z.type!=="root"&&Z.type!=="share_root"&&Z.type!=="share"),l=new Set(c.filter((Z)=>Z.type==="version_stack").map((Z)=>Z.id)),b=new Map,G=[];for(let Z of c){if(Z.type==="version_stack")continue;if(Z.parentId&&l.has(Z.parentId)){let u=b.get(Z.parentId)||[];u.push(Z),b.set(Z.parentId,u)}else G.push(Z)}let i=[];for(let Z of b.values())if(Z.sort((u,y)=>{if(!u.sortIndex||!y.sortIndex)return 0;return u.sortIndex<y.sortIndex?-1:u.sortIndex>y.sortIndex?1:0}),Z.length>0)i.push(Z[0]);let W=[...G,...i],a=new Map;for(let Z of W)a.set(Z.id,Z);let V=Array.from(a.values()),m=V.map((Z)=>Z.storageKeyId).filter((Z)=>!!Z),C=await this.prismaClient.storageKey.findMany({where:{id:{in:m}}}),x=new Map(C.map((Z)=>[Z.id,Z.key]));return(await Promise.all(V.map(async(Z)=>{let u=Z.storageKeyId?x.get(Z.storageKeyId):null;if(!u)return null;let y=await EB.presign(process.env.S3_BUCKET||"shumai",u,"GET",!0);return{id:Z.id,name:Z.name,url:y}}))).filter((Z)=>!!Z)}async getDownloadUrl(B,Q){let F=await this.prismaClient.asset.findUnique({where:{id:B},select:{storageKey:{select:{key:!0}}}});if(!F?.storageKey?.key)throw Error("Asset not found or has no storage key");let g=F.storageKey.key,U=g.substring(0,g.lastIndexOf("/")+1);if(Q.includes("..")||!Q.startsWith(U))throw Error("Key does not belong to this asset");return EB.presign(process.env.S3_BUCKET||"shumai",Q,"GET",!0)}async toPreviewInfo(B){if(!B.media)return null;let Q=void 0;if(B.mediaType?.startsWith("image/")&&B.media.thumbnail?.key)Q=await EB.presign(process.env.S3_BUCKET||"shumai",B.media.thumbnail.key,"GET");else if(B.mediaType?.startsWith("video/")&&B.media.poster?.key)Q=await EB.presign(process.env.S3_BUCKET||"shumai",B.media.poster.key,"GET");let F=void 0;if(B.media.sprite?.key)F=await EB.presign(process.env.S3_BUCKET||"shumai",B.media.sprite.key,"GET");return{mediaType:B.mediaType,thumbnailUrl:Q,originalHeight:B.media.metadata?.originalHeight,originalWidth:B.media.metadata?.originalWidth,spriteUrl:F}}async toCommentInfo(B){let Q=[];if("replies"in B&&B.replies)for(let n of B.replies)Q.push(await this.toCommentInfo(n));let F=[];if(B.attachments){for(let n of B.attachments)if(n.asset?.storageKey?.key){let c=await EB.presign(process.env.S3_BUCKET||"shumai",n.asset.storageKey.key,"GET");F.push({id:n.id,assetId:n.asset.id,url:c,mediaType:n.asset.mediaType})}}let g=[],U=(B.message||"").match(/<@([^>]+)>/g);if(U){let n=U.map((l)=>l.replace("<@","").replace(">","")),c=await this.prismaClient.user.findMany({where:{id:{in:n}}});for(let l of c)g.push({id:l.id,name:l.name,image:await dg(l.image)})}let I={id:"",name:""};if(B.sessionId)I.id=B.creatorId||"",I.name=B.creator?.name||"Ai Bot",I.image=await dg(B.creator?.image);else if(B.creator)I.id=B.creator.id,I.name=B.creator.name,I.image=await dg(B.creator.image);return{id:B.id,assetId:B.assetId,message:B.message,annotations:B.annotation,second:B.second,creator:I,replies:Q,attachments:F,mentions:g,createdAt:B.createdAt.toISOString(),updatedAt:B.updatedAt.toISOString(),sessionId:B.sessionId}}}var Zc=new yx;rd();gg();async function TN(B,Q){let F;if(!B.database){let g=ag(B),U=Object.keys(g).reduce((n,c)=>{return n[c]=[],n},{}),{memoryAdapter:I}=await Promise.resolve().then(() => (zN(),wN));F=I(U)(B)}else if(typeof B.database==="function")F=B.database(B);else F=await Q(B);if(!F.transaction)aB.warn("Adapter does not correctly implement transaction function, patching it automatically. Please update your adapter implementation."),F.transaction=async(g)=>{return g(F)};return F}PB();async function xY(B){return TN(B,async(Q)=>{let{createKyselyAdapter:F}=await Promise.resolve().then(() => (Qu(),Bu)),{kysely:g,databaseType:U,transaction:I}=await F(Q);if(!g)throw new IB("Failed to initialize database adapter");let{kyselyAdapter:n}=await Promise.resolve().then(() => (Qu(),Bu));return n(g,{type:U||"sqlite",debugLogs:Q.database&&"debugLogs"in Q.database?Q.database.debugLogs:!1,transaction:I})(Q)})}function RY(B){let Q=ag(B),F={};for(let g in Q){let U=Q[g],I=U.fields,n={};if(Object.entries(I).forEach(([c,l])=>{if(n[l.fieldName||c]=l,l.references){let b=Q[l.references.model];if(b)n[l.fieldName||c].references={...l.references,model:b.modelName,field:l.references.field}}}),F[U.modelName]){F[U.modelName].fields={...F[U.modelName].fields,...n};continue}F[U.modelName]={fields:n,order:U.order||1/0}}return F}gg();it();Vb();cl();var tP={postgres:{string:["character varying","varchar","text","uuid"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamptz","timestamp","date"],json:["json","jsonb"]},mysql:{string:["varchar","text","uuid"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean","tinyint"],date:["timestamp","datetime","date"],json:["json"]},sqlite:{string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"],json:["TEXT"]},mssql:{string:["varchar","nvarchar","uniqueidentifier"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","smallint"],date:["datetime2","date","datetime"],json:["varchar","nvarchar"]}};function mP(B,Q,F){function g(I){return I.toLowerCase().split("(")[0].trim()}if(Q==="string[]"||Q==="number[]")return B.toLowerCase().includes("json");let U=tP[F];return(Array.isArray(Q)?U.string.map((I)=>I.toLowerCase()):U[Q].map((I)=>I.toLowerCase())).includes(g(B))}async function dP(B){try{let Q=await NB`SHOW search_path`.execute(B),F=Q.rows[0]?.search_path??Q.rows[0]?.searchPath;if(F)return F.split(",").map((g)=>g.trim()).map((g)=>g.replace(/^["']|["']$/g,"")).filter((g)=>!g.startsWith("$")&&!g.startsWith("\\$"))[0]||"public"}catch{}return"public"}async function eY(B){let Q=RY(B),F=AI(B.logger),{kysely:g,databaseType:U}=await $C(B);if(!U)F.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),U="sqlite";if(!g)F.error("Only kysely adapter is supported for migrations. You can use `generate` command to generate the schema, if you're using a different adapter."),process.exit(1);let I="public";if(U==="postgres"){I=await dP(g),F.debug(`PostgreSQL migration: Using schema '${I}' (from search_path)`);try{let u=await NB`
|
|
12529
|
+
`,U=g.filter((Z)=>Z.type==="symlink"),I=[];if(U.length>0){let Z=U.map((u)=>u.targetId).filter((u)=>!!u);if(Z.length>0)I=(await this.prismaClient.asset.findMany({where:{id:{in:Z},isDeleted:!1}})).map((y)=>({id:y.id,name:y.name,type:y.type,parentId:y.parentId,storageKeyId:y.storageKeyId,sortIndex:y.sortIndex,targetId:y.targetId}))}let c=[...g.filter((Z)=>Z.type!=="symlink"),...I].filter((Z)=>Z.type!=="folder"&&Z.type!=="root"&&Z.type!=="share_root"&&Z.type!=="share"),l=new Set(c.filter((Z)=>Z.type==="version_stack").map((Z)=>Z.id)),b=new Map,G=[];for(let Z of c){if(Z.type==="version_stack")continue;if(Z.parentId&&l.has(Z.parentId)){let u=b.get(Z.parentId)||[];u.push(Z),b.set(Z.parentId,u)}else G.push(Z)}let i=[];for(let Z of b.values())if(Z.sort((u,y)=>{if(!u.sortIndex||!y.sortIndex)return 0;return u.sortIndex<y.sortIndex?-1:u.sortIndex>y.sortIndex?1:0}),Z.length>0)i.push(Z[0]);let W=[...G,...i],a=new Map;for(let Z of W)a.set(Z.id,Z);let V=Array.from(a.values()),m=V.map((Z)=>Z.storageKeyId).filter((Z)=>!!Z),C=await this.prismaClient.storageKey.findMany({where:{id:{in:m}}}),x=new Map(C.map((Z)=>[Z.id,Z.key]));return(await Promise.all(V.map(async(Z)=>{let u=Z.storageKeyId?x.get(Z.storageKeyId):null;if(!u)return null;let y=await EB.presign(process.env.S3_BUCKET||"shumai",u,"GET",!0);return{id:Z.id,name:Z.name,url:y}}))).filter((Z)=>!!Z)}async getDownloadUrl(B,Q){let F=await this.prismaClient.asset.findUnique({where:{id:B},select:{storageKey:{select:{key:!0}}}});if(!F?.storageKey?.key)throw Error("Asset not found or has no storage key");let g=F.storageKey.key,U=g.substring(0,g.lastIndexOf("/")+1);if(Q.includes("..")||!Q.startsWith(U))throw Error("Key does not belong to this asset");return EB.presign(process.env.S3_BUCKET||"shumai",Q,"GET",!0)}async toPreviewInfo(B){if(!B.media)return null;let Q=void 0;if(B.mediaType?.startsWith("image/")&&B.media.thumbnail?.key)Q=await EB.presign(process.env.S3_BUCKET||"shumai",B.media.thumbnail.key,"GET");else if(B.mediaType?.startsWith("video/")&&B.media.poster?.key)Q=await EB.presign(process.env.S3_BUCKET||"shumai",B.media.poster.key,"GET");let F=void 0;if(B.media.sprite?.key)F=await EB.presign(process.env.S3_BUCKET||"shumai",B.media.sprite.key,"GET");return{mediaType:B.mediaType,thumbnailUrl:Q,originalHeight:B.media.metadata?.originalHeight,originalWidth:B.media.metadata?.originalWidth,spriteUrl:F,duration:B.media.metadata?.duration}}async toCommentInfo(B){let Q=[];if("replies"in B&&B.replies)for(let n of B.replies)Q.push(await this.toCommentInfo(n));let F=[];if(B.attachments){for(let n of B.attachments)if(n.asset?.storageKey?.key){let c=await EB.presign(process.env.S3_BUCKET||"shumai",n.asset.storageKey.key,"GET");F.push({id:n.id,assetId:n.asset.id,url:c,mediaType:n.asset.mediaType})}}let g=[],U=(B.message||"").match(/<@([^>]+)>/g);if(U){let n=U.map((l)=>l.replace("<@","").replace(">","")),c=await this.prismaClient.user.findMany({where:{id:{in:n}}});for(let l of c)g.push({id:l.id,name:l.name,image:await dg(l.image)})}let I={id:"",name:""};if(B.sessionId)I.id=B.creatorId||"",I.name=B.creator?.name||"Ai Bot",I.image=await dg(B.creator?.image);else if(B.creator)I.id=B.creator.id,I.name=B.creator.name,I.image=await dg(B.creator.image);return{id:B.id,assetId:B.assetId,message:B.message,annotations:B.annotation,second:B.second,creator:I,replies:Q,attachments:F,mentions:g,createdAt:B.createdAt.toISOString(),updatedAt:B.updatedAt.toISOString(),sessionId:B.sessionId}}}var Zc=new yx;rd();gg();async function TN(B,Q){let F;if(!B.database){let g=ag(B),U=Object.keys(g).reduce((n,c)=>{return n[c]=[],n},{}),{memoryAdapter:I}=await Promise.resolve().then(() => (zN(),wN));F=I(U)(B)}else if(typeof B.database==="function")F=B.database(B);else F=await Q(B);if(!F.transaction)aB.warn("Adapter does not correctly implement transaction function, patching it automatically. Please update your adapter implementation."),F.transaction=async(g)=>{return g(F)};return F}PB();async function xY(B){return TN(B,async(Q)=>{let{createKyselyAdapter:F}=await Promise.resolve().then(() => (Qu(),Bu)),{kysely:g,databaseType:U,transaction:I}=await F(Q);if(!g)throw new IB("Failed to initialize database adapter");let{kyselyAdapter:n}=await Promise.resolve().then(() => (Qu(),Bu));return n(g,{type:U||"sqlite",debugLogs:Q.database&&"debugLogs"in Q.database?Q.database.debugLogs:!1,transaction:I})(Q)})}function RY(B){let Q=ag(B),F={};for(let g in Q){let U=Q[g],I=U.fields,n={};if(Object.entries(I).forEach(([c,l])=>{if(n[l.fieldName||c]=l,l.references){let b=Q[l.references.model];if(b)n[l.fieldName||c].references={...l.references,model:b.modelName,field:l.references.field}}}),F[U.modelName]){F[U.modelName].fields={...F[U.modelName].fields,...n};continue}F[U.modelName]={fields:n,order:U.order||1/0}}return F}gg();it();Vb();cl();var tP={postgres:{string:["character varying","varchar","text","uuid"],number:["int4","integer","bigint","smallint","numeric","real","double precision"],boolean:["bool","boolean"],date:["timestamptz","timestamp","date"],json:["json","jsonb"]},mysql:{string:["varchar","text","uuid"],number:["integer","int","bigint","smallint","decimal","float","double"],boolean:["boolean","tinyint"],date:["timestamp","datetime","date"],json:["json"]},sqlite:{string:["TEXT"],number:["INTEGER","REAL"],boolean:["INTEGER","BOOLEAN"],date:["DATE","INTEGER"],json:["TEXT"]},mssql:{string:["varchar","nvarchar","uniqueidentifier"],number:["int","bigint","smallint","decimal","float","double"],boolean:["bit","smallint"],date:["datetime2","date","datetime"],json:["varchar","nvarchar"]}};function mP(B,Q,F){function g(I){return I.toLowerCase().split("(")[0].trim()}if(Q==="string[]"||Q==="number[]")return B.toLowerCase().includes("json");let U=tP[F];return(Array.isArray(Q)?U.string.map((I)=>I.toLowerCase()):U[Q].map((I)=>I.toLowerCase())).includes(g(B))}async function dP(B){try{let Q=await NB`SHOW search_path`.execute(B),F=Q.rows[0]?.search_path??Q.rows[0]?.searchPath;if(F)return F.split(",").map((g)=>g.trim()).map((g)=>g.replace(/^["']|["']$/g,"")).filter((g)=>!g.startsWith("$")&&!g.startsWith("\\$"))[0]||"public"}catch{}return"public"}async function eY(B){let Q=RY(B),F=AI(B.logger),{kysely:g,databaseType:U}=await $C(B);if(!U)F.warn("Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this."),U="sqlite";if(!g)F.error("Only kysely adapter is supported for migrations. You can use `generate` command to generate the schema, if you're using a different adapter."),process.exit(1);let I="public";if(U==="postgres"){I=await dP(g),F.debug(`PostgreSQL migration: Using schema '${I}' (from search_path)`);try{let u=await NB`
|
|
12530
12530
|
SELECT schema_name
|
|
12531
12531
|
FROM information_schema.schemata
|
|
12532
12532
|
WHERE schema_name = ${I}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shumai-one/shumai-transcode",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.6",
|
|
4
4
|
"description": "Media transcoding worker for the shumai media workspace",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
"zod": "4.4.3"
|
|
27
27
|
},
|
|
28
28
|
"optionalDependencies": {
|
|
29
|
-
"@shumai-one/shumai-transcode-darwin-arm64": "0.1.
|
|
30
|
-
"@shumai-one/shumai-transcode-darwin-x64": "0.1.
|
|
31
|
-
"@shumai-one/shumai-transcode-linux-arm64": "0.1.
|
|
32
|
-
"@shumai-one/shumai-transcode-linux-x64": "0.1.
|
|
33
|
-
"@shumai-one/shumai-transcode-win32-arm64": "0.1.
|
|
34
|
-
"@shumai-one/shumai-transcode-win32-x64": "0.1.
|
|
29
|
+
"@shumai-one/shumai-transcode-darwin-arm64": "0.1.6",
|
|
30
|
+
"@shumai-one/shumai-transcode-darwin-x64": "0.1.6",
|
|
31
|
+
"@shumai-one/shumai-transcode-linux-arm64": "0.1.6",
|
|
32
|
+
"@shumai-one/shumai-transcode-linux-x64": "0.1.6",
|
|
33
|
+
"@shumai-one/shumai-transcode-win32-arm64": "0.1.6",
|
|
34
|
+
"@shumai-one/shumai-transcode-win32-x64": "0.1.6"
|
|
35
35
|
},
|
|
36
36
|
"repository": {
|
|
37
37
|
"type": "git",
|