()
| 93 | } |
| 94 | |
| 95 | async function uploadResource() { |
| 96 | const source = yaml.load(await readFile(RESOURCE_FILE, 'utf8')); |
| 97 | const content = Object.entries(source).reduce((prev, [key, value]) => { |
| 98 | if (value.touched !== false) { |
| 99 | prev[key] = { |
| 100 | description: value.description, |
| 101 | message: value.message, |
| 102 | }; |
| 103 | } |
| 104 | return prev; |
| 105 | }, {}); |
| 106 | let { result } = await request('/resource_strings_async_uploads', { |
| 107 | method: 'POST', |
| 108 | body: { |
| 109 | data: { |
| 110 | type: 'resource_strings_async_uploads', |
| 111 | attributes: { |
| 112 | content: JSON.stringify(content), |
| 113 | content_encoding: 'text', |
| 114 | }, |
| 115 | relationships: { |
| 116 | resource: { |
| 117 | data: { |
| 118 | id: RESOURCE_ID, |
| 119 | type: 'resources', |
| 120 | }, |
| 121 | }, |
| 122 | }, |
| 123 | }, |
| 124 | }, |
| 125 | }); |
| 126 | while (['pending', 'processing'].includes(result.data.attributes.status)) { |
| 127 | await delay(500); |
| 128 | ({ result } = await request(`/resource_strings_async_uploads/${result.data.id}`)); |
| 129 | } |
| 130 | if (result.data.attributes.status !== 'succeeded') throw { result }; |
| 131 | return result.data.attributes.details; |
| 132 | } |
| 133 | |
| 134 | async function getLanguages() { |
| 135 | const { result } = await request(`/projects/${PROJECT_ID}/languages`); |
no test coverage detected