rdme
rdme copied to clipboard
v9 milestone
- [ ] Add deprecation notice to
docs
commands - [ ] Remove
workingDirectory
argument fromopenapi
family of commands (RM-7754, #904) - [ ] https://github.com/readmeio/rdme/issues/645
- [ ] #962
- [ ] Auto-publish GitHub releases (e.g., remove
gh
CLI usage) - [ ] Remove
lastUpdatedHash
insertion (internal ticket) - [x] Make sure JSON import assertions are future-proof (or aren't used at all) https://github.com/readmeio/rdme/pull/993
- [x] #889
- [x] Migrate to ESM (#856)
- [x] Do some QA to ensure no Node
ExperimentalWarning
s show up https://github.com/readmeio/rdme/pull/901
- [x] Do some QA to ensure no Node
- [x] Drop support for Node 14 + 16 (release schedule) https://github.com/readmeio/rdme/pull/900
- [x] Bump lockfile to v3
- [x] Remove
docs:edit
command https://github.com/readmeio/rdme/pull/902 - [x] Remove
oas
command https://github.com/readmeio/rdme/pull/902 - [x] Remove
swagger
command https://github.com/readmeio/rdme/pull/902 - [x] (Probably separate from the ESM migration) look into any clean-up/modernizations we can do in the
tsconfig
https://github.com/readmeio/rdme/pull/905 - [x] flip the
isPublic
flag in theversions:create
andversions:update
commands to behidden
so it's consistent with the other flags and with our API endpoints https://github.com/readmeio/rdme/pull/906 - [x] https://github.com/readmeio/rdme/pull/895
- [x] #857
- [x] Use native Node 18
fetch
andFormData
~~andmsw
~~ in favor ofnode-fetch
~~andnock
~~ andformdata-node
, convert everything over accordingly #1000
lower priority
- [ ] Volta guidance?
- [ ] Remove logic for triple tagging (i.e.
v9
,v9.0.0
, ~~9.0.0
~~) - [ ] Optimize GHA build process
Maybe we also migrate to ESM? 😬
fwiw, iirc last time i looked into that you still needed to pass the --experimental
flag to Node for ESM in order to run bin/rdme
. That was like a year and a half ago though, and before we migrated to TS, so maybe things are different now.
maybe we also drop Node 16 support also when that is EOL in a few weeks. we'll want to bump the version here (in addition to everywhere else):
https://github.com/readmeio/rdme/blob/9756d95f510d05d2b4cdacddf91d509b287291e0/Dockerfile#L1
Now that we've got rdme guides
and rdme guides:prune
aliased to rdme docs:<cmd>
can we deprecate and remove rdme docs
?
@erunion ah yeah good callout — definitely down to add a deprecation notice but i don't think we should remove those until we're using the new /guides
routes
For dumping node-fetch
and formdata-node
for native fetch
the place where you're using formdata-node
in https://github.com/readmeio/rdme/pull/856 can be replaced with this diff:
diff --git a/src/lib/streamSpecToRegistry.ts b/src/lib/streamSpecToRegistry.ts
index a73445f..9d4f68a 100644
--- a/src/lib/streamSpecToRegistry.ts
+++ b/src/lib/streamSpecToRegistry.ts
@@ -1,8 +1,4 @@
-import fs from 'node:fs';
-
-import { FormData } from 'formdata-node';
import ora from 'ora';
-import { file as tmpFile } from 'tmp-promise';
import { debug, oraOptions } from './logger.js';
import readmeAPIFetch, { handleRes } from './readmeAPIFetch.js';
@@ -15,23 +11,15 @@ import readmeAPIFetch, { handleRes } from './readmeAPIFetch.js';
*/
export default async function streamSpecToRegistry(spec: string) {
const spinner = ora({ text: 'Staging your API definition for upload...', ...oraOptions() }).start();
- // Create a temporary file to write the bundled spec to,
- // which we will then stream into the form data body
- const { path } = await tmpFile({ prefix: 'rdme-openapi-', postfix: '.json' });
- debug(`creating temporary file at ${path}`);
- await fs.writeFileSync(path, spec);
- const stream = fs.createReadStream(path);
-
- debug('file and stream created, streaming into form data payload');
+ debug('preparing spec into form data payload');
const formData = new FormData();
- formData.append('spec', {
- type: 'application/json',
- name: 'openapi.json',
- [Symbol.toStringTag]: 'File',
- stream() {
- return stream;
- },
- });
+ formData.append(
+ spec,
+ new Blob([spec], {
+ type: 'application/json',
+ }),
+ 'openapi.json',
+ );
const options = {
body: formData,