feat(sanity-plugin-studio-smartling): migrate plugin to monorepo#975
Draft
stipsan wants to merge 63 commits into
Draft
feat(sanity-plugin-studio-smartling): migrate plugin to monorepo#975stipsan wants to merge 63 commits into
stipsan wants to merge 63 commits into
Conversation
update dependency versions and change createTask flow
* fixes from in-studio testing * null handling in item progress * update versions
* Use machine translation workflow when requested
Add optional `isWorkflowMT` boolean param to `createJobBatch` method.
If `true`, pass `localeWorkflows` param with POST request, containing
an array with an object for each locale that has the locale id string
and the workflowUid for machine testing workflow in the AT project.
This param is not necessary if we want to keep the default workflow for
each locale, so only include if `isWorkflowMT` is true.
I couldn't find a way to fetch the workflowUids from the API, but they
can be found on the project dashboard under Project Settings > Workflows,
then clicking "Edit workflow Settings." Looks like uid is the same
across an account/project, so we _can_ use the same one, but I left it
out of this commit in case it should be kept private.
Next iteration will include updating the translations tab config to
include `options`, which could either accept one uid for MT or possibly
and array of workflow names + id's to allow selecting from a custom set
of workflows. This way we can set the ID from each project, instead of
in the plugin.
* Use workflowUid to create task with workflow
Along with updates to translations-tab, use an optional workflowUid (if
present) passed in by the user to set the workflow on task creation,
rather than hard-coding the specific uid string for the machine
translation workflow.
Dev can pass an optional array of `workflowOptions` in the options
config that's sent to `TranslationsTab`, enabling a select option in
the tab for choosing a workflow and passing in `workflowUid` with the
`createTask` params here.
Example:
```
const myCustomConfig = {
...defaultFieldLevelConfig,
workflowOptions: [
{ workflowUid: '35cdc9b707d9', workflowName: 'Machine Translation (testing)' }
]
}
```
* Use machine translation workflow when requested
Add optional `isWorkflowMT` boolean param to `createJobBatch` method.
If `true`, pass `localeWorkflows` param with POST request, containing
an array with an object for each locale that has the locale id string
and the workflowUid for machine testing workflow in the AT project.
This param is not necessary if we want to keep the default workflow for
each locale, so only include if `isWorkflowMT` is true.
I couldn't find a way to fetch the workflowUids from the API, but they
can be found on the project dashboard under Project Settings > Workflows,
then clicking "Edit workflow Settings." Looks like uid is the same
across an account/project, so we _can_ use the same one, but I left it
out of this commit in case it should be kept private.
Next iteration will include updating the translations tab config to
include `options`, which could either accept one uid for MT or possibly
and array of workflow names + id's to allow selecting from a custom set
of workflows. This way we can set the ID from each project, instead of
in the plugin.
* Use workflowUid to create task with workflow
Along with updates to translations-tab, use an optional workflowUid (if
present) passed in by the user to set the workflow on task creation,
rather than hard-coding the specific uid string for the machine
translation workflow.
Dev can pass an optional array of `workflowOptions` in the options
config that's sent to `TranslationsTab`, enabling a select option in
the tab for choosing a workflow and passing in `workflowUid` with the
`createTask` params here.
Example:
```
const myCustomConfig = {
...defaultFieldLevelConfig,
workflowOptions: [
{ workflowUid: '35cdc9b707d9', workflowName: 'Machine Translation (testing)' }
]
}
```
* Handle errors; await for finished promises
There are lots of points of potential silent and/or unhandled errors
due to not applying await for async functions and/or not using a
`catch` for any errors thrown. If we don't add `await` or `throw`
errors, then the translation tab won't be able to tell if a the call
is actually complete or was successful, resulting in a "Success" toast
that's potentially inaccurate.
I tried manually adding in errors in all the various calls and
triggering the "Import" from the button in the translation tab and this
update (along with the parallel change to `TranslationsTab`) allowed
all of them to be caught in the `try/catch` added to `imortFile` in
TranslationsTab.
Note, however, that I didn't test the documentLevel functions because I
don't have that implemented. I copied the changes made for fieldLevel
and have no reason to believe they wouldn't work :)
* Remove unnecessary catches
* Update package version
* Add `test` script
Adds `test` script so that added workflow doesn't fail, although there
aren't any tests yet
* Comment out test from github workflow
Commenting out `Test` from workflow for now because we don't have any
tests so it fails. Tried to start by adding a simple test, but everything
here is involves fetching from Sanity or Smartling so no simple functions
to add quickly.
* Remove `@sanity/client` dependency
Had added this as a dependency in attempt to fix error showing in VSCode
in helper.js where we import `sanityClient`, but that created different
issues when I tried to use `@sanity/client` instead of
`'part:@sanity/base/client'`, so just removing the dependency from package.
Combined with a parallel update in sanity-translations-tab, this update includes a link that goes straight to the given task in Smartling, using the project id and task id. If there is a task, then a link will show along with the current job to "View Job" so users can easily get to the associated Smartling job for additional updates or info.
- Explicitly updated with `--save` to latest sanity-translations-tab (1.4.0), including link out to Smartling job in the UI. - Also ran `npm update` so there are additional updates in package-lock
Fix incorrect defaultDocumentNode name
* fix: hotfix for custom job names
* feat: move callback to top level and include * fix: use updated types from tab --------- Co-authored-by: arthurpereira <arthurpereira@pinterest.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
…nerated by scaffold
- Import source via git subtree from sanity-io/sanity-plugin-studio-smartling - Add monorepo package config, tests, and test-studio example - Use workspace sanity-translations-tab and add styled-components peer dependency - Fix type-only imports and indexed access for oxlint compliance - Replace Buffer usage with native Blob in upload path
🦋 Changeset detectedLatest commit: f185029 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Review the following changes in direct dependencies. Learn more about Socket for GitHub.
|
- Resolve pnpm-lock.yaml conflict by taking main's lockfile and re-running pnpm install + pnpm dedupe to re-add the sanity-plugin-studio-smartling workspace entries - smartling now builds against the sanity v6 catalog like sibling plugins; peer range ^5 || ^6.0.0-0 already covers v6
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Migrate sanity-plugin-studio-smartling
Ports
sanity-plugin-studio-smartlinginto the monorepo using thepnpm generate "copy plugin"workflow, with full git history imported via git subtree.Changes
sanity-io/sanity-plugin-studio-smartling(history preserved)package.json,package.config.ts,tsconfig.json,tsconfig.build.json,vitest.config.ts) and package-exports testsanity-translations-tabat the workspace package and addstyled-componentspeer/dev dependency (required bysanity-translations-tab)docs/folder (FAQ + advanced configuration) and originalREADME.md; replace the broken npm description (!smartling gif) with a real oneRecord<string, string>instead of a shadowingHeadersinterface, guard for indexed access ingetTranslationTask, remove staleeslint-disablecomments and aconsole.infodebug logBuffer.from(content)+Blobwith a nativenew Blob([content])in the batch upload path, removing the undeclaredbufferdependency (identical UTF-8 output, browser-safe)Smartlingtest-studio example (dev/test-studio/src/smartling/index.tsx) wired as a dedicatedsmartling-exampleworkspace, mirroring the Transifex exampleREADME.mdplugins table rowDemo
Test studio (
pnpm dev), Smartling workspace — document form and the SmartlingTranslationsTabview rendering on a test document:smartling_translations_tab_demo.mp4
Smartling tab in test studio
Transfer verification
npm trust github sanity-plugin-studio-smartling --file=release.yml --repository=sanity-io/pluginspackage.jsondependencies/peerDependencies/exports verified against original repopnpm dev)pnpm format,pnpm knip,pnpm lint,pnpm build,pnpm test runall passMaintainer follow-up
# [This plugin has moved](https://github.com/sanity-io/plugins/tree/main/plugins/sanity-plugin-studio-smartling)studio-smartlingTo show artifacts inline, enable in settings.