sanity-plugin-transifex 2.0.6 → 3.0.0
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/LICENSE +2 -2
- package/README.md +84 -84
- package/dist/index.d.ts +52 -11
- package/dist/index.esm.js +192 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +251 -7
- package/dist/index.js.map +1 -0
- package/package.json +87 -48
- package/sanity.json +8 -0
- package/src/index.ts +14 -19
- package/src/transifexAdapter/createTask.ts +12 -17
- package/src/transifexAdapter/getLocales.ts +10 -11
- package/src/transifexAdapter/getTranslation.ts +48 -60
- package/src/transifexAdapter/getTranslationTask.ts +12 -19
- package/src/transifexAdapter/helpers.ts +3 -3
- package/src/transifexAdapter/index.ts +5 -5
- package/v2-incompatible.js +11 -0
- package/.github/workflows/main.yml +0 -29
- package/.github/workflows/npm-publish.yml +0 -19
- package/dist/sanity-plugin-transifex.cjs.development.js +0 -903
- package/dist/sanity-plugin-transifex.cjs.development.js.map +0 -1
- package/dist/sanity-plugin-transifex.cjs.production.min.js +0 -2
- package/dist/sanity-plugin-transifex.cjs.production.min.js.map +0 -1
- package/dist/sanity-plugin-transifex.esm.js +0 -844
- package/dist/sanity-plugin-transifex.esm.js.map +0 -1
- package/dist/transifexAdapter/createTask.d.ts +0 -6
- package/dist/transifexAdapter/getLocales.d.ts +0 -2
- package/dist/transifexAdapter/getTranslation.d.ts +0 -2
- package/dist/transifexAdapter/getTranslationTask.d.ts +0 -6
- package/dist/transifexAdapter/helpers.d.ts +0 -7
- package/dist/transifexAdapter/index.d.ts +0 -2
- package/test/directives.test.ts +0 -155
- package/test/localeId.test.ts +0 -17
- package/test/mergeTranslation.test.ts +0 -113
- package/tsconfig.json +0 -35
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sanity-plugin-transifex.cjs.development.js","sources":["../src/transifexAdapter/helpers.ts","../src/transifexAdapter/getLocales.ts","../src/transifexAdapter/getTranslationTask.ts","../src/transifexAdapter/getTranslation.ts","../src/transifexAdapter/createTask.ts","../src/transifexAdapter/index.ts","../src/index.ts"],"sourcesContent":["import { Secrets } from 'sanity-translations-tab'\n\nexport const baseTransifexUrl = 'https://rest.api.transifex.com'\n\nexport const getHeaders = (secrets: Secrets | null) => ({\n Authorization: `Bearer ${secrets?.token}`,\n 'Content-Type': 'application/vnd.api+json',\n})\n\nexport const projOrgSlug = (secrets: Secrets | null) =>\n `o:${secrets?.organization}:p:${secrets?.project}`\n","import { Secrets } from 'sanity-translations-tab'\nimport { baseTransifexUrl, projOrgSlug, getHeaders } from './helpers'\n\nexport default async function getLocales(secrets: Secrets | null) {\n if (secrets) {\n return fetch(\n `${baseTransifexUrl}/projects/${projOrgSlug(secrets)}/languages`,\n { headers: getHeaders(secrets) }\n )\n .then(res => res.json())\n .then(res =>\n res.data.map((lang: Record<string, any>) => ({\n enabled: true,\n description: lang.attributes.name,\n localeId: lang.attributes.code,\n }))\n )\n } else {\n return []\n }\n}\n","import { Secrets } from 'sanity-translations-tab'\nimport { baseTransifexUrl, projOrgSlug, getHeaders } from './helpers'\nimport getLocales from './getLocales'\n\nexport default async function getTranslationTask(\n documentId: string,\n secrets: Secrets | null\n) {\n if (!documentId || !secrets) {\n return {\n taskId: documentId,\n documentId: documentId,\n locales: [],\n }\n }\n const projectFilter = `filter[project]=${projOrgSlug(secrets)}`\n const resourceFilter = `filter[resource]=${projOrgSlug(\n secrets\n )}:r:${documentId}`\n const task = await fetch(\n `${baseTransifexUrl}/resource_language_stats?${projectFilter}&${resourceFilter}`,\n { headers: getHeaders(secrets) }\n )\n .then(res => {\n if (res.ok) {\n return res.json()\n }\n //normal -- just means that this task doesn't exist yet.\n else if (res.status === 404) {\n return { data: [] }\n } else {\n throw Error(\n `Failed to retrieve tasks from Transifex. Status: ${res.status}`\n )\n }\n })\n .then(res => ({\n taskId: `${projOrgSlug(secrets)}:r:${documentId}`,\n documentId: documentId,\n locales: res.data.map((locale: Record<string, any>) => ({\n localeId: locale.relationships.language.data.id.split(':')[1],\n progress: Math.floor(\n 100 *\n (locale.attributes.reviewed_strings /\n parseFloat(locale.attributes.total_strings))\n ),\n })),\n }))\n\n const locales = await getLocales(secrets)\n const localeIds = locales.map((l: Record<string, any>) => l.localeId)\n const validLocales = task.locales.filter((locale: Record<string, any>) =>\n localeIds.find((id: string) => id === locale.localeId)\n )\n task.locales = validLocales\n\n return task\n}\n","import { Secrets } from 'sanity-translations-tab'\nimport { baseTransifexUrl, getHeaders } from './helpers'\n\nexport default async function getTranslation(\n taskId: string,\n localeId: string,\n secrets: Secrets | null\n) {\n const resourceDownloadBody = {\n data: {\n attributes: {\n content_encoding: 'text',\n },\n relationships: {\n language: {\n data: {\n id: `l:${localeId}`,\n type: 'languages',\n },\n },\n resource: {\n data: {\n id: taskId,\n type: 'resources',\n },\n },\n },\n type: 'resource_translations_async_downloads',\n },\n }\n\n const resourceDownloadUrl = `${baseTransifexUrl}/resource_translations_async_downloads`\n const translationDownloadId = await fetch(resourceDownloadUrl, {\n headers: getHeaders(secrets),\n method: 'POST',\n body: JSON.stringify(resourceDownloadBody),\n })\n .then(res => res.json())\n .then(res => res.data.id)\n\n const headers = getHeaders(secrets)\n const location = await pollForFileDownloadLocation(\n resourceDownloadUrl,\n translationDownloadId,\n headers\n )\n return handleFileDownload(location)\n}\n\nconst pollForFileDownloadLocation = async (\n resourceDownloadUrl: string,\n translationDownloadId: string,\n headers: Record<string, any>\n): Promise<string> => {\n const response = await fetch(\n `${resourceDownloadUrl}/${translationDownloadId}`,\n {\n headers: headers,\n }\n )\n\n if (response.status === 500) {\n console.info(\n `Transifex plugin message: Received 500 for translation download ID ${translationDownloadId}. Trying to reconnect...`\n )\n await new Promise(resolve => setTimeout(resolve, 3000))\n return pollForFileDownloadLocation(\n resourceDownloadUrl,\n translationDownloadId,\n headers\n )\n } else if (response.redirected) {\n console.info(\n `Transifex plugin message: Received redirect for translation download ID ${translationDownloadId}. Following redirect now for file download.`\n )\n return response.url\n } else if (response.status === 200) {\n console.info(\n `Transifex plugin message: Requested download location for translation download ID ${translationDownloadId}. Location is still pending, trying again.`\n )\n await new Promise(resolve => setTimeout(resolve, 3000))\n return pollForFileDownloadLocation(\n resourceDownloadUrl,\n translationDownloadId,\n headers\n )\n } else {\n console.info(\n `Transifex plugin message: Requested download location for translation download ID ${translationDownloadId} but received error code ${response.status}. Waiting and trying again.`\n )\n await new Promise(resolve => setTimeout(resolve, 3000))\n return pollForFileDownloadLocation(\n resourceDownloadUrl,\n translationDownloadId,\n headers\n )\n }\n}\n\nconst handleFileDownload = async (url: string) => {\n return fetch(url).then(res => res.text())\n}\n","import { Secrets } from 'sanity-translations-tab'\nimport { baseTransifexUrl, projOrgSlug, getHeaders } from './helpers'\nimport getTranslationTask from './getTranslationTask'\n\nconst createResource = async (\n doc: Record<string, any>,\n documentId: string,\n secrets: Secrets | null\n) => {\n const resourceCreateBody = {\n data: {\n attributes: {\n accept_translations: true,\n name: doc.name,\n slug: documentId,\n },\n relationships: {\n i18n_format: {\n data: {\n id: 'HTML_FRAGMENT',\n type: 'i18n_formats',\n },\n },\n project: {\n data: {\n id: projOrgSlug(secrets),\n type: 'projects',\n },\n },\n },\n type: 'resources',\n },\n }\n\n return fetch(`${baseTransifexUrl}/resources`, {\n headers: getHeaders(secrets),\n method: 'POST',\n body: JSON.stringify(resourceCreateBody),\n })\n .then(res => res.json())\n .then(res => res.data.id)\n}\n\nexport default async function createTask(\n documentId: string,\n document: Record<string, any>,\n //unfortunately Transifex doesn't let you specify locales on creating a task\n //@ts-ignore\n localeIds: string[],\n secrets: Secrets | null\n) {\n let resourceId = await fetch(\n `${baseTransifexUrl}/resources/${projOrgSlug(secrets)}:r:${documentId}`,\n { headers: getHeaders(secrets) }\n )\n .then(res => res.json())\n .then(res => (res.data ? res.data.id : null))\n\n if (!resourceId) {\n resourceId = await createResource(document, documentId, secrets)\n }\n\n const resourceUploadUrl = `${baseTransifexUrl}/resource_strings_async_uploads`\n const resourceUploadBody = {\n data: {\n attributes: {\n content: document.content,\n content_encoding: 'text',\n },\n relationships: {\n resource: {\n data: {\n id: resourceId,\n type: 'resources',\n },\n },\n },\n type: 'resource_strings_async_uploads',\n },\n }\n\n return fetch(resourceUploadUrl, {\n method: 'POST',\n body: JSON.stringify(resourceUploadBody),\n headers: getHeaders(secrets),\n }).then(() => getTranslationTask(documentId, secrets))\n}\n","import { Adapter } from 'sanity-translations-tab'\n\nimport getLocales from './getLocales'\nimport getTranslationTask from './getTranslationTask'\nimport getTranslation from './getTranslation'\nimport createTask from './createTask'\n\nexport const TransifexAdapter: Adapter = {\n getLocales,\n getTranslationTask,\n createTask,\n getTranslation,\n}\n","import {\n TranslationsTab,\n baseDocumentLevelConfig,\n baseFieldLevelConfig,\n findLatestDraft,\n BaseDocumentDeserializer,\n BaseDocumentSerializer,\n BaseDocumentMerger,\n defaultStopTypes,\n customSerializers,\n Adapter,\n documentLevelPatch,\n fieldLevelPatch,\n} from 'sanity-translations-tab'\nimport { TransifexAdapter } from './transifexAdapter'\n\ninterface ConfigOptions {\n adapter: Adapter\n secretsNamespace: string | null\n exportForTranslation: (id: string) => Promise<Record<string, any>>\n importTranslation: (\n id: string,\n localeId: string,\n doc: string\n ) => Promise<void>\n}\nconst defaultDocumentLevelConfig: ConfigOptions = {\n ...baseDocumentLevelConfig,\n adapter: TransifexAdapter,\n secretsNamespace: 'transifex',\n}\n\nconst defaultFieldLevelConfig: ConfigOptions = {\n ...baseFieldLevelConfig,\n adapter: TransifexAdapter,\n secretsNamespace: 'transifex',\n}\n\nexport {\n TranslationsTab,\n findLatestDraft,\n documentLevelPatch,\n fieldLevelPatch,\n BaseDocumentDeserializer,\n BaseDocumentSerializer,\n BaseDocumentMerger,\n defaultStopTypes,\n customSerializers,\n TransifexAdapter,\n defaultDocumentLevelConfig,\n defaultFieldLevelConfig,\n}\n"],"names":["baseTransifexUrl","getHeaders","secrets","Authorization","token","projOrgSlug","organization","project","getLocales","fetch","headers","then","res","json","data","map","lang","enabled","description","attributes","name","localeId","code","getTranslationTask","documentId","taskId","locales","projectFilter","resourceFilter","ok","status","Error","locale","relationships","language","id","split","progress","Math","floor","reviewed_strings","parseFloat","total_strings","task","localeIds","l","validLocales","filter","find","getTranslation","resourceDownloadBody","content_encoding","type","resource","resourceDownloadUrl","method","body","JSON","stringify","translationDownloadId","pollForFileDownloadLocation","location","handleFileDownload","response","console","info","Promise","resolve","setTimeout","redirected","url","text","createResource","doc","resourceCreateBody","accept_translations","slug","i18n_format","createTask","document","resourceId","resourceUploadUrl","resourceUploadBody","content","TransifexAdapter","defaultDocumentLevelConfig","baseDocumentLevelConfig","adapter","secretsNamespace","defaultFieldLevelConfig","baseFieldLevelConfig"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("sanity-translations-tab");function e(){e=function(){return t};var t={},r=Object.prototype,n=r.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",i=o.asyncIterator||"@@asyncIterator",u=o.toStringTag||"@@toStringTag";function s(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{s({},"")}catch(t){s=function(t,e,r){return t[e]=r}}function c(t,e,r,n){var o=Object.create((e&&e.prototype instanceof p?e:p).prototype),a=new j(n||[]);return o._invoke=function(t,e,r){var n="suspendedStart";return function(o,a){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw a;return{value:void 0,done:!0}}for(r.method=o,r.arg=a;;){var i=r.delegate;if(i){var u=x(i,r);if(u){if(u===l)continue;return u}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var s=f(t,e,r);if("normal"===s.type){if(n=r.done?"completed":"suspendedYield",s.arg===l)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(n="completed",r.method="throw",r.arg=s.arg)}}}(t,r,a),o}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=c;var l={};function p(){}function d(){}function h(){}var y={};s(y,a,(function(){return this}));var v=Object.getPrototypeOf,g=v&&v(v(O([])));g&&g!==r&&n.call(g,a)&&(y=g);var m=h.prototype=p.prototype=Object.create(y);function b(t){["next","throw","return"].forEach((function(e){s(t,e,(function(t){return this._invoke(e,t)}))}))}function w(t,e){var r;this._invoke=function(o,a){function i(){return new e((function(r,i){!function r(o,a,i,u){var s=f(t[o],t,a);if("throw"!==s.type){var c=s.arg,l=c.value;return l&&"object"==typeof l&&n.call(l,"__await")?e.resolve(l.__await).then((function(t){r("next",t,i,u)}),(function(t){r("throw",t,i,u)})):e.resolve(l).then((function(t){c.value=t,i(c)}),(function(t){return r("throw",t,i,u)}))}u(s.arg)}(o,a,r,i)}))}return r=r?r.then(i,i):i()}}function x(t,e){var r=t.iterator[e.method];if(void 0===r){if(e.delegate=null,"throw"===e.method){if(t.iterator.return&&(e.method="return",e.arg=void 0,x(t,e),"throw"===e.method))return l;e.method="throw",e.arg=new TypeError("The iterator does not provide a 'throw' method")}return l}var n=f(r,t.iterator,e.arg);if("throw"===n.type)return e.method="throw",e.arg=n.arg,e.delegate=null,l;var o=n.arg;return o?o.done?(e[t.resultName]=o.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,l):o:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,l)}function L(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function _(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function j(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(L,this),this.reset(!0)}function O(t){if(t){var e=t[a];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var r=-1,o=function e(){for(;++r<t.length;)if(n.call(t,r))return e.value=t[r],e.done=!1,e;return e.value=void 0,e.done=!0,e};return o.next=o}}return{next:T}}function T(){return{value:void 0,done:!0}}return d.prototype=h,s(m,"constructor",h),s(h,"constructor",d),d.displayName=s(h,u,"GeneratorFunction"),t.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===d||"GeneratorFunction"===(e.displayName||e.name))},t.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,h):(t.__proto__=h,s(t,u,"GeneratorFunction")),t.prototype=Object.create(m),t},t.awrap=function(t){return{__await:t}},b(w.prototype),s(w.prototype,i,(function(){return this})),t.AsyncIterator=w,t.async=function(e,r,n,o,a){void 0===a&&(a=Promise);var i=new w(c(e,r,n,o),a);return t.isGeneratorFunction(r)?i:i.next().then((function(t){return t.done?t.value:i.next()}))},b(m),s(m,u,"Generator"),s(m,a,(function(){return this})),s(m,"toString",(function(){return"[object Generator]"})),t.keys=function(t){var e=[];for(var r in t)e.push(r);return e.reverse(),function r(){for(;e.length;){var n=e.pop();if(n in t)return r.value=n,r.done=!1,r}return r.done=!0,r}},t.values=O,j.prototype={constructor:j,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(_),!t)for(var e in this)"t"===e.charAt(0)&&n.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=void 0)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(t){if(this.done)throw t;var e=this;function r(r,n){return i.type="throw",i.arg=t,e.next=r,n&&(e.method="next",e.arg=void 0),!!n}for(var o=this.tryEntries.length-1;o>=0;--o){var a=this.tryEntries[o],i=a.completion;if("root"===a.tryLoc)return r("end");if(a.tryLoc<=this.prev){var u=n.call(a,"catchLoc"),s=n.call(a,"finallyLoc");if(u&&s){if(this.prev<a.catchLoc)return r(a.catchLoc,!0);if(this.prev<a.finallyLoc)return r(a.finallyLoc)}else if(u){if(this.prev<a.catchLoc)return r(a.catchLoc,!0)}else{if(!s)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return r(a.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var a=o;break}}a&&("break"===t||"continue"===t)&&a.tryLoc<=e&&e<=a.finallyLoc&&(a=null);var i=a?a.completion:{};return i.type=t,i.arg=e,a?(this.method="next",this.next=a.finallyLoc,l):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),l},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),_(r),l}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;_(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:O(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),l}},t}function r(t,e,r,n,o,a,i){try{var u=t[a](i),s=u.value}catch(t){return void r(t)}u.done?e(s):Promise.resolve(s).then(n,o)}function n(t){return function(){var e=this,n=arguments;return new Promise((function(o,a){var i=t.apply(e,n);function u(t){r(i,o,a,u,s,"next",t)}function s(t){r(i,o,a,u,s,"throw",t)}u(void 0)}))}}function o(){return(o=Object.assign?Object.assign.bind():function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(t[n]=r[n])}return t}).apply(this,arguments)}var a="https://rest.api.transifex.com",i=function(t){return{Authorization:"Bearer "+(null==t?void 0:t.token),"Content-Type":"application/vnd.api+json"}},u=function(t){return"o:"+(null==t?void 0:t.organization)+":p:"+(null==t?void 0:t.project)};function s(t){return c.apply(this,arguments)}function c(){return(c=n(e().mark((function t(r){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!r){t.next=4;break}return t.abrupt("return",fetch(a+"/projects/"+u(r)+"/languages",{headers:i(r)}).then((function(t){return t.json()})).then((function(t){return t.data.map((function(t){return{enabled:!0,description:t.attributes.name,localeId:t.attributes.code}}))})));case 4:return t.abrupt("return",[]);case 5:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function f(t,e){return l.apply(this,arguments)}function l(){return(l=n(e().mark((function t(r,n){var o,c,f,l,p;return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r&&n){t.next=2;break}return t.abrupt("return",{taskId:r,documentId:r,locales:[]});case 2:return o="filter[project]="+u(n),c="filter[resource]="+u(n)+":r:"+r,t.next=6,fetch(a+"/resource_language_stats?"+o+"&"+c,{headers:i(n)}).then((function(t){if(t.ok)return t.json();if(404===t.status)return{data:[]};throw Error("Failed to retrieve tasks from Transifex. Status: "+t.status)})).then((function(t){return{taskId:u(n)+":r:"+r,documentId:r,locales:t.data.map((function(t){return{localeId:t.relationships.language.data.id.split(":")[1],progress:Math.floor(t.attributes.reviewed_strings/parseFloat(t.attributes.total_strings)*100)}}))}}));case 6:return f=t.sent,t.next=9,s(n);case 9:return l=t.sent.map((function(t){return t.localeId})),p=f.locales.filter((function(t){return l.find((function(e){return e===t.localeId}))})),f.locales=p,t.abrupt("return",f);case 14:case"end":return t.stop()}}),t)})))).apply(this,arguments)}function p(){return(p=n(e().mark((function t(r,n,o){var u,s,c,f;return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return u={data:{attributes:{content_encoding:"text"},relationships:{language:{data:{id:"l:"+n,type:"languages"}},resource:{data:{id:r,type:"resources"}}},type:"resource_translations_async_downloads"}},s=a+"/resource_translations_async_downloads",t.next=4,fetch(s,{headers:i(o),method:"POST",body:JSON.stringify(u)}).then((function(t){return t.json()})).then((function(t){return t.data.id}));case 4:return c=t.sent,f=i(o),t.next=8,d(s,c,f);case 8:return t.abrupt("return",h(t.sent));case 10:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var d=function(){var t=n(e().mark((function t(r,n,o){var a;return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,fetch(r+"/"+n,{headers:o});case 2:if(500!==(a=t.sent).status){t.next=10;break}return console.info("Transifex plugin message: Received 500 for translation download ID "+n+". Trying to reconnect..."),t.next=7,new Promise((function(t){return setTimeout(t,3e3)}));case 7:return t.abrupt("return",d(r,n,o));case 10:if(!a.redirected){t.next=15;break}return console.info("Transifex plugin message: Received redirect for translation download ID "+n+". Following redirect now for file download."),t.abrupt("return",a.url);case 15:if(200!==a.status){t.next=22;break}return console.info("Transifex plugin message: Requested download location for translation download ID "+n+". Location is still pending, trying again."),t.next=19,new Promise((function(t){return setTimeout(t,3e3)}));case 19:return t.abrupt("return",d(r,n,o));case 22:return console.info("Transifex plugin message: Requested download location for translation download ID "+n+" but received error code "+a.status+". Waiting and trying again."),t.next=25,new Promise((function(t){return setTimeout(t,3e3)}));case 25:return t.abrupt("return",d(r,n,o));case 26:case"end":return t.stop()}}),t)})));return function(e,r,n){return t.apply(this,arguments)}}(),h=function(){var t=n(e().mark((function t(r){return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.abrupt("return",fetch(r).then((function(t){return t.text()})));case 1:case"end":return t.stop()}}),t)})));return function(e){return t.apply(this,arguments)}}(),y=function(){var t=n(e().mark((function t(r,n,o){var s;return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return s={data:{attributes:{accept_translations:!0,name:r.name,slug:n},relationships:{i18n_format:{data:{id:"HTML_FRAGMENT",type:"i18n_formats"}},project:{data:{id:u(o),type:"projects"}}},type:"resources"}},t.abrupt("return",fetch(a+"/resources",{headers:i(o),method:"POST",body:JSON.stringify(s)}).then((function(t){return t.json()})).then((function(t){return t.data.id})));case 2:case"end":return t.stop()}}),t)})));return function(e,r,n){return t.apply(this,arguments)}}();function v(){return(v=n(e().mark((function t(r,n,o,s){var c;return e().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,fetch(a+"/resources/"+u(s)+":r:"+r,{headers:i(s)}).then((function(t){return t.json()})).then((function(t){return t.data?t.data.id:null}));case 2:if(c=t.sent){t.next=7;break}return t.next=6,y(n,r,s);case 6:c=t.sent;case 7:return t.abrupt("return",fetch("https://rest.api.transifex.com/resource_strings_async_uploads",{method:"POST",body:JSON.stringify({data:{attributes:{content:n.content,content_encoding:"text"},relationships:{resource:{data:{id:c,type:"resources"}}},type:"resource_strings_async_uploads"}}),headers:i(s)}).then((function(){return f(r,s)})));case 10:case"end":return t.stop()}}),t)})))).apply(this,arguments)}var g={getLocales:s,getTranslationTask:f,createTask:function(t,e,r,n){return v.apply(this,arguments)},getTranslation:function(t,e,r){return p.apply(this,arguments)}},m=o({},t.baseDocumentLevelConfig,{adapter:g,secretsNamespace:"transifex"}),b=o({},t.baseFieldLevelConfig,{adapter:g,secretsNamespace:"transifex"});Object.defineProperty(exports,"BaseDocumentDeserializer",{enumerable:!0,get:function(){return t.BaseDocumentDeserializer}}),Object.defineProperty(exports,"BaseDocumentMerger",{enumerable:!0,get:function(){return t.BaseDocumentMerger}}),Object.defineProperty(exports,"BaseDocumentSerializer",{enumerable:!0,get:function(){return t.BaseDocumentSerializer}}),Object.defineProperty(exports,"TranslationsTab",{enumerable:!0,get:function(){return t.TranslationsTab}}),Object.defineProperty(exports,"customSerializers",{enumerable:!0,get:function(){return t.customSerializers}}),Object.defineProperty(exports,"defaultStopTypes",{enumerable:!0,get:function(){return t.defaultStopTypes}}),Object.defineProperty(exports,"documentLevelPatch",{enumerable:!0,get:function(){return t.documentLevelPatch}}),Object.defineProperty(exports,"fieldLevelPatch",{enumerable:!0,get:function(){return t.fieldLevelPatch}}),Object.defineProperty(exports,"findLatestDraft",{enumerable:!0,get:function(){return t.findLatestDraft}}),exports.TransifexAdapter=g,exports.defaultDocumentLevelConfig=m,exports.defaultFieldLevelConfig=b;
|
|
2
|
-
//# sourceMappingURL=sanity-plugin-transifex.cjs.production.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sanity-plugin-transifex.cjs.production.min.js","sources":["../src/transifexAdapter/helpers.ts","../src/transifexAdapter/getLocales.ts","../src/transifexAdapter/getTranslationTask.ts","../src/transifexAdapter/getTranslation.ts","../src/transifexAdapter/createTask.ts","../src/transifexAdapter/index.ts","../src/index.ts"],"sourcesContent":["import { Secrets } from 'sanity-translations-tab'\n\nexport const baseTransifexUrl = 'https://rest.api.transifex.com'\n\nexport const getHeaders = (secrets: Secrets | null) => ({\n Authorization: `Bearer ${secrets?.token}`,\n 'Content-Type': 'application/vnd.api+json',\n})\n\nexport const projOrgSlug = (secrets: Secrets | null) =>\n `o:${secrets?.organization}:p:${secrets?.project}`\n","import { Secrets } from 'sanity-translations-tab'\nimport { baseTransifexUrl, projOrgSlug, getHeaders } from './helpers'\n\nexport default async function getLocales(secrets: Secrets | null) {\n if (secrets) {\n return fetch(\n `${baseTransifexUrl}/projects/${projOrgSlug(secrets)}/languages`,\n { headers: getHeaders(secrets) }\n )\n .then(res => res.json())\n .then(res =>\n res.data.map((lang: Record<string, any>) => ({\n enabled: true,\n description: lang.attributes.name,\n localeId: lang.attributes.code,\n }))\n )\n } else {\n return []\n }\n}\n","import { Secrets } from 'sanity-translations-tab'\nimport { baseTransifexUrl, projOrgSlug, getHeaders } from './helpers'\nimport getLocales from './getLocales'\n\nexport default async function getTranslationTask(\n documentId: string,\n secrets: Secrets | null\n) {\n if (!documentId || !secrets) {\n return {\n taskId: documentId,\n documentId: documentId,\n locales: [],\n }\n }\n const projectFilter = `filter[project]=${projOrgSlug(secrets)}`\n const resourceFilter = `filter[resource]=${projOrgSlug(\n secrets\n )}:r:${documentId}`\n const task = await fetch(\n `${baseTransifexUrl}/resource_language_stats?${projectFilter}&${resourceFilter}`,\n { headers: getHeaders(secrets) }\n )\n .then(res => {\n if (res.ok) {\n return res.json()\n }\n //normal -- just means that this task doesn't exist yet.\n else if (res.status === 404) {\n return { data: [] }\n } else {\n throw Error(\n `Failed to retrieve tasks from Transifex. Status: ${res.status}`\n )\n }\n })\n .then(res => ({\n taskId: `${projOrgSlug(secrets)}:r:${documentId}`,\n documentId: documentId,\n locales: res.data.map((locale: Record<string, any>) => ({\n localeId: locale.relationships.language.data.id.split(':')[1],\n progress: Math.floor(\n 100 *\n (locale.attributes.reviewed_strings /\n parseFloat(locale.attributes.total_strings))\n ),\n })),\n }))\n\n const locales = await getLocales(secrets)\n const localeIds = locales.map((l: Record<string, any>) => l.localeId)\n const validLocales = task.locales.filter((locale: Record<string, any>) =>\n localeIds.find((id: string) => id === locale.localeId)\n )\n task.locales = validLocales\n\n return task\n}\n","import { Secrets } from 'sanity-translations-tab'\nimport { baseTransifexUrl, getHeaders } from './helpers'\n\nexport default async function getTranslation(\n taskId: string,\n localeId: string,\n secrets: Secrets | null\n) {\n const resourceDownloadBody = {\n data: {\n attributes: {\n content_encoding: 'text',\n },\n relationships: {\n language: {\n data: {\n id: `l:${localeId}`,\n type: 'languages',\n },\n },\n resource: {\n data: {\n id: taskId,\n type: 'resources',\n },\n },\n },\n type: 'resource_translations_async_downloads',\n },\n }\n\n const resourceDownloadUrl = `${baseTransifexUrl}/resource_translations_async_downloads`\n const translationDownloadId = await fetch(resourceDownloadUrl, {\n headers: getHeaders(secrets),\n method: 'POST',\n body: JSON.stringify(resourceDownloadBody),\n })\n .then(res => res.json())\n .then(res => res.data.id)\n\n const headers = getHeaders(secrets)\n const location = await pollForFileDownloadLocation(\n resourceDownloadUrl,\n translationDownloadId,\n headers\n )\n return handleFileDownload(location)\n}\n\nconst pollForFileDownloadLocation = async (\n resourceDownloadUrl: string,\n translationDownloadId: string,\n headers: Record<string, any>\n): Promise<string> => {\n const response = await fetch(\n `${resourceDownloadUrl}/${translationDownloadId}`,\n {\n headers: headers,\n }\n )\n\n if (response.status === 500) {\n console.info(\n `Transifex plugin message: Received 500 for translation download ID ${translationDownloadId}. Trying to reconnect...`\n )\n await new Promise(resolve => setTimeout(resolve, 3000))\n return pollForFileDownloadLocation(\n resourceDownloadUrl,\n translationDownloadId,\n headers\n )\n } else if (response.redirected) {\n console.info(\n `Transifex plugin message: Received redirect for translation download ID ${translationDownloadId}. Following redirect now for file download.`\n )\n return response.url\n } else if (response.status === 200) {\n console.info(\n `Transifex plugin message: Requested download location for translation download ID ${translationDownloadId}. Location is still pending, trying again.`\n )\n await new Promise(resolve => setTimeout(resolve, 3000))\n return pollForFileDownloadLocation(\n resourceDownloadUrl,\n translationDownloadId,\n headers\n )\n } else {\n console.info(\n `Transifex plugin message: Requested download location for translation download ID ${translationDownloadId} but received error code ${response.status}. Waiting and trying again.`\n )\n await new Promise(resolve => setTimeout(resolve, 3000))\n return pollForFileDownloadLocation(\n resourceDownloadUrl,\n translationDownloadId,\n headers\n )\n }\n}\n\nconst handleFileDownload = async (url: string) => {\n return fetch(url).then(res => res.text())\n}\n","import { Secrets } from 'sanity-translations-tab'\nimport { baseTransifexUrl, projOrgSlug, getHeaders } from './helpers'\nimport getTranslationTask from './getTranslationTask'\n\nconst createResource = async (\n doc: Record<string, any>,\n documentId: string,\n secrets: Secrets | null\n) => {\n const resourceCreateBody = {\n data: {\n attributes: {\n accept_translations: true,\n name: doc.name,\n slug: documentId,\n },\n relationships: {\n i18n_format: {\n data: {\n id: 'HTML_FRAGMENT',\n type: 'i18n_formats',\n },\n },\n project: {\n data: {\n id: projOrgSlug(secrets),\n type: 'projects',\n },\n },\n },\n type: 'resources',\n },\n }\n\n return fetch(`${baseTransifexUrl}/resources`, {\n headers: getHeaders(secrets),\n method: 'POST',\n body: JSON.stringify(resourceCreateBody),\n })\n .then(res => res.json())\n .then(res => res.data.id)\n}\n\nexport default async function createTask(\n documentId: string,\n document: Record<string, any>,\n //unfortunately Transifex doesn't let you specify locales on creating a task\n //@ts-ignore\n localeIds: string[],\n secrets: Secrets | null\n) {\n let resourceId = await fetch(\n `${baseTransifexUrl}/resources/${projOrgSlug(secrets)}:r:${documentId}`,\n { headers: getHeaders(secrets) }\n )\n .then(res => res.json())\n .then(res => (res.data ? res.data.id : null))\n\n if (!resourceId) {\n resourceId = await createResource(document, documentId, secrets)\n }\n\n const resourceUploadUrl = `${baseTransifexUrl}/resource_strings_async_uploads`\n const resourceUploadBody = {\n data: {\n attributes: {\n content: document.content,\n content_encoding: 'text',\n },\n relationships: {\n resource: {\n data: {\n id: resourceId,\n type: 'resources',\n },\n },\n },\n type: 'resource_strings_async_uploads',\n },\n }\n\n return fetch(resourceUploadUrl, {\n method: 'POST',\n body: JSON.stringify(resourceUploadBody),\n headers: getHeaders(secrets),\n }).then(() => getTranslationTask(documentId, secrets))\n}\n","import { Adapter } from 'sanity-translations-tab'\n\nimport getLocales from './getLocales'\nimport getTranslationTask from './getTranslationTask'\nimport getTranslation from './getTranslation'\nimport createTask from './createTask'\n\nexport const TransifexAdapter: Adapter = {\n getLocales,\n getTranslationTask,\n createTask,\n getTranslation,\n}\n","import {\n TranslationsTab,\n baseDocumentLevelConfig,\n baseFieldLevelConfig,\n findLatestDraft,\n BaseDocumentDeserializer,\n BaseDocumentSerializer,\n BaseDocumentMerger,\n defaultStopTypes,\n customSerializers,\n Adapter,\n documentLevelPatch,\n fieldLevelPatch,\n} from 'sanity-translations-tab'\nimport { TransifexAdapter } from './transifexAdapter'\n\ninterface ConfigOptions {\n adapter: Adapter\n secretsNamespace: string | null\n exportForTranslation: (id: string) => Promise<Record<string, any>>\n importTranslation: (\n id: string,\n localeId: string,\n doc: string\n ) => Promise<void>\n}\nconst defaultDocumentLevelConfig: ConfigOptions = {\n ...baseDocumentLevelConfig,\n adapter: TransifexAdapter,\n secretsNamespace: 'transifex',\n}\n\nconst defaultFieldLevelConfig: ConfigOptions = {\n ...baseFieldLevelConfig,\n adapter: TransifexAdapter,\n secretsNamespace: 'transifex',\n}\n\nexport {\n TranslationsTab,\n findLatestDraft,\n documentLevelPatch,\n fieldLevelPatch,\n BaseDocumentDeserializer,\n BaseDocumentSerializer,\n BaseDocumentMerger,\n defaultStopTypes,\n customSerializers,\n TransifexAdapter,\n defaultDocumentLevelConfig,\n defaultFieldLevelConfig,\n}\n"],"names":["baseTransifexUrl","getHeaders","secrets","Authorization","token","Content-Type","projOrgSlug","organization","project","getLocales","_context","fetch","headers","then","res","json","data","map","lang","enabled","description","attributes","name","localeId","code","getTranslationTask","documentId","taskId","locales","projectFilter","resourceFilter","ok","status","Error","locale","relationships","language","id","split","progress","Math","floor","reviewed_strings","parseFloat","total_strings","task","localeIds","l","validLocales","filter","find","resourceDownloadBody","content_encoding","type","resource","resourceDownloadUrl","_context3","method","body","JSON","stringify","translationDownloadId","pollForFileDownloadLocation","handleFileDownload","response","console","info","Promise","resolve","setTimeout","redirected","url","text","createResource","doc","resourceCreateBody","accept_translations","slug","i18n_format","document","_context2","resourceId","content","TransifexAdapter","createTask","getTranslation","defaultDocumentLevelConfig","baseDocumentLevelConfig","adapter","secretsNamespace","defaultFieldLevelConfig","baseFieldLevelConfig"],"mappings":"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"}
|