* clears all errors in tests, enables overrides for spec generators
* removes copy/pasta in tests, uses spec generator, removes useless async
continuing from the last commit, but separated out for easier review
* consolidates openapi x-kong extension to one place, uses consistently
these were used for some things, not used for others, exported in some places, not exported in others. now it's uniform and we can look up references for each type.
* adds failing test for ticket
* only adds `enabled` where it was specified
* allows adding passing top-level properties to config
now, the line that was there specifically for `config` is redundant.
* adds tags to test result per review feedback
* removes unnecessary generic
for some reason, this didn't error before, but now it is.
* removes unnecessary argument
this failed on the CI with:
openapi-2-kong: FAIL src/generate.test.ts
openapi-2-kong: ● Test suite failed to run
openapi-2-kong: src/generate.test.ts:90:58 - error TS2769: No overload matches this call.
openapi-2-kong: Overload 1 of 2, '(src: string, options?: (ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions) | undefined): any', gave the following error.
openapi-2-kong: Argument of type '"utf8"' is not assignable to parameter of type '(ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions) | undefined'.
openapi-2-kong: Overload 2 of 2, '(src: string, reviver: Reviver, options?: (ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions) | undefined): any', gave the following error.
openapi-2-kong: Argument of type 'string' is not assignable to parameter of type 'Reviver'.
openapi-2-kong: 90 const parsedSpec = YAML.parse(dcFixtureFileString, 'utf8');
openapi-2-kong: ~~~~~~
openapi-2-kong: src/generate.test.ts💯59 - error TS2769: No overload matches this call.
openapi-2-kong: Overload 1 of 2, '(src: string, options?: (ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions) | undefined): any', gave the following error.
openapi-2-kong: Argument of type '"utf8"' is not assignable to parameter of type '(ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions) | undefined'.
openapi-2-kong: Overload 2 of 2, '(src: string, reviver: Reviver, options?: (ParseOptions & DocumentOptions & SchemaOptions & ToJSOptions) | undefined): any', gave the following error.
openapi-2-kong: Argument of type 'string' is not assignable to parameter of type 'Reviver'.
openapi-2-kong: 100 const parsedSpec = YAML.parse(k8sFixtureFileString, 'utf8');
* removes unnecessary plugin indirection
there is no reason to have functions that literally call other functions with the same argument. well... maybe not _no_ reason, but the one valid reason I can think of (to satisfy an abstraction's constraints) is not met here. This serves no documentational value either because it creates indirection rather than showing what it's really doing (which is, to generate a plugin).
* reworks generatePlugins and generatePlugin signatures
adds Entry, removes optional `tags`, curries
* use option parameter syntax for generateRequestValidatorPlugin
also, many errors were occurring for OA3Operation.responses not being passed over and over again, leading me to believe it's valid to do so.
* ensures `generateOperationPlugins` has tags, uses option parameter
* removes flowtype comments
* updates readme examples along with readme function signatures
parseSpec and generate were `async` but never awaited
Co-authored-by: Opender Singh <opender.singh@konghq.com>
* readability improvements and reduced indirection
* adds type for handleShowModifyCookieModal
* correctly types wrapperProps property, thereby fixing bug.
if you add `console.log({ previewHidden, propsOne: this.props.wrapperProps.activeWorkspaceMeta });` to the third line of `_renderPreview()` you'll see that `activeWorkspaceMeta` is indeed, sometimes, `undefined.
Also, there's no reason to use `await` on `this.setState`. I didn't find any more of these in the codebase, I just found this one.
* adds type for swaggerUiSpec
* undoes lifting props to state
almost always, this is done for performance reasons, but I removed it the app is working pretty quick-and-snappy for me without needing to introduced duplicated application state and keep track of it.
I went ahead and measured it before and after this commit (using performance.now):
before = [
1.93500000750646,
1.149999996414408,
0.9499999869149178,
0.9950000094249845,
0.8650000090710819,
1.560000004246831,
1.5699999930802733,
0.8450000023003668,
1.4550000196322799,
1.3299999991431832,
1.3050000125076622,
1.4099999971222132,
1.3099999923724681,
1.3100000214762986,
1.1999999987892807,
1.0099999781232327,
0.830000004498288,
1.2449999921955168,
1.2500000011641532,
1.4349999837577343,
]
after = [
2.9400000057648867,
2.449999999953434,
2.33499999740161,
2.2849999950267375,
1.7700000025797635,
1.8149999959859997,
2.1249999990686774,
1.9150000007357448,
2.074999996693805,
1.9899999897461385,
2.0200000144541264,
2.869999996619299,
2.1450000058393925,
2.33499999740161,
2.130000008037314,
2.119999990100041,
2.144999976735562,
2.130000008037314,
2.380000009201467,
2.8999999922234565,
]
> R.mean(before)
> 1.2480000004870817
> R.mean(after)
> 2.243749999080319
> R.median(before)
> 1.2775000068359077
> R.median(after)
> 2.137499992386438
So basically, considering a 16ms render rate (i.e. 60hz), 1ms saved by lifting props to state makes no difference in application performance.
This is committed separately so that if there's any reason we want to keep the prior implementation, we can just still do so.
* updates Kubernetes types to actually match Kuberenetes Ingress/v1beta1 API
* checks type of result in tests
among other cosmetic changes
* enables strict mode in o2k (but leaves bug it uncovered that this PR fixes)
I really do need this to complete the task at hand. For example, there was an existing error in `ingressDocWithOverride`:
```
Type 'string | null | undefined' is not assignable to type 'string | undefined'.
Type 'null' is not assignable to type 'string | undefined'.ts(2322)
kubernetes-config.ts(36, 3): The expected type comes from property 'path' which is declared here on type 'K8sHTTPIngressPath'
```
That is caught only by strict mode. This is literally what I am fixing in this PR, so it seems like as good a time as any. Thankfully, only took me ~30 minutes to do because it was already super close.
* fixtures for `kong-for-kubernetes`
* index exporters for actual exports
when I made these files, I didn't understand that the lower-level helpers are not actually exported by the library, therefore there's no reason to have these index.ts files.
Furthermore, the types file could use it's own for the same reason, because those types _are_ actually exported.
* fixes bug: TLS is now an array and a child of K8sIngress.spec
* updates 'yaml'
for some reason I cannot explain, suddenly the CI is failing constantly because of this package. https://github.com/Kong/insomnia/runs/2639615988
The only `yaml` exports we use in`o2k` are `parse` and `stringify` and we don't re-export it in any way. Therefore, we should be safe to update it (many other projects in the monorepo are on different versions anyway). This recent version is written purely in TypeScript, so we don't need the types packages anymore.
* adds a few more docs
* makes this `yaml` import match all others
for better or for worse, until we upgrade `YAML` (it's now written in TypeScript) we should probably aim for consistency.
* adds overloads so that types of package exports
it would be FAR preferable to use an object with the arguments instead because then we don't have to fall into all the traps that come with overloads, but I am avoiding changing the actual call signature of these function.
* fixes and updates types
* corrects mispelling
* removes shim types and exports actual types from openapi-2-kong
we had everything in place for the rest of the build pipeline to consume these types, but were missing the main exports at the root index.ts file
* use actual openapi-2-kong types now that they're available
* use existing variable for filePath
* extracts o2k-specific helper data to live in o2k
evidently, this data is useful for the usage of o2k, therefore o2k should be the thing exporting it.
* use KubernetesManifest for name of kubernetes manifest union
when first naming this, I didn't have much more context than the property name (documents), so after taking a look, it's clear that these are kubernetes manifests
* removes attempt at correctly typing overloads
I will return to this, and so I'm leaving it here in a commit rather than squashing it out, but I can't see a way to get it to work without changing the signature in a big way.
* fixes error (now that there are yaml types)
* makes `K8s` vs `Kubernetes` type terminology consistent
part of the motivation for this is that there are significant things in common between the two kinds of configs, making them closer in form is therefore ideal.
* updates mistake in name per review feedback
* removes (unused and unwanted) husky scripts
might as well, it's only taking up space for nothing in our node_modules
* adds `lerna run clean` to main clean script
we didn't have `clean` scripts in the packages before, but now that we do, it makes sense to.... hahah... _use them_.
Note that it's important that we run the package scripts first, because otherwise after the rimraf (which is now at the end) there's no `lerna` left to call.
* adds missing clean script to insomnia-components
although it looks like there are other changes at first glance, there shouldn't be any behavioral differences now except the fact that build will always generate SVGs (which, was an oversight/bug that it wasn't before). We need this to occur so that when we clean it removes the things that were built, and when we build it replaces those same things.
* adds a postclean script to insomnia-app like every other package
I'll be honest, I'm not entirely sure what the reason is for having `postclean` scripts in every package with (mostly) `rimraf dist` (i.e. instead of just including that in the main clean script at the end), but that's clearly the convention - so for now I'm just following it
* removes references to old build artifact location
well, except for the .gitignore. I guess I could remove it from the .gitignore, commit it, commit deleting it, which would clear it from everyone's projects... but I'll just leave it there for a bit in the .gitignore. hopefully people either start fresh or run `clean` from the root every once in a while, which will clean this up.
After a few weeks or months we can remove these two references (in the package.json.clean and .gitignore) altogether if we feel like it.
* removes unused reference in config to build artifact
I searched high and low for every place I could find that consumes this file and none of them seem to use this field anyway. And even if they did, it's wrong. In fact, it's been wrong for a while I'd guess because (relative to the root, if that's what it was intended to mean).
As far as I can tell this was added c6a7c4d682 (diff-6918d2464ad7fb0f3e985d8587ce0c4218eeba6c6dea60c58642251f4db99ecb)
So I even checked out that commit and looked at all usages of that file at that time and it was, there too, unused (so far as I can tell). Appears to be a case of wishful thinking that it'd be useful for something, not sure.
* fix ts-expect-error
* removes useless await
see https://github.com/typescript-eslint/typescript-eslint/blob/master/packages/eslint-plugin/docs/rules/await-thenable.md
We're not quite ready to have this rule on everywhere, but in this case I can see that it's correct to follow.
* add comment about magic number
and moves the assignment to the one place it's used
I opted not to make a ticket because we are recently running out of tickets and this seems to be a relatively small thing @reynolek please confirm this is the correct course of action.
* initialize ref to reflect reality (and include actual type)
* fixes root cause of error, inlines one-liners
the error with the type of `_handleInputColorChange` was due to `onChange` being the wrong prop to use (where `onChange` is the one we want).
* use onChange instead of onInput to access correct types
ultimately, since react's behavior diverged from the DOM behavior to match onInput, this should have no effect on any functionality since react assigns this event to `onChange` anyway. see https://github.com/facebook/react/blob/master/fixtures/attribute-behavior/src/attributes.js#L2089
* clears remaining ts-expect-errors in file
* updates fallback call per review feedback
* no default export (prepping for hooks)
* makes logic match other implementation
note that above in `componentDidUpdate` it uses `<= 0`, whereas here it uses `> 0` but then only checks for false.
Also, logically, there's no way to ever get `aria-hidden="true"` since it returns early so that entire attribute can just be removed.
* removes fake private class member syntax
this is moving to hooks anyway, but in the meantime...
* undoes calling identical code twice in a row...
* condenses class methods to prepare for hooks
* hooks refactor
fairly faithful to the original, this attempts to just refactor to hooks. this exposes, again, the fact that we're setting state within useEffect.
* removes 200 ms offset for response time
so that, now, you know, the time reported is the actual time.
* adds logging for response timer lage
* removes timer logging and `responseTime` prop after PR discussion
it's definitely fruitful, but the fix for the callstack exceeded is what needs to be the focus.
* removes shadowed variable per PR feedback
* reinstates and documents 200ms compensation
* add delay endpoint to example server
* Update packages/insomnia-app/app/ui/components/response-timer.tsx
Co-authored-by: Opender Singh <opender.singh@konghq.com>
* use jest-preset for all but app
* separate properties that are the same as the preset
for some reason, it doesn't work. you get:
```
Preset ../../jest-preset.js not found.
```
This needs to be investigated.
* removes unused/unneeded npm script in `app`, `test:jest`
* sanitize all electron.shell.openExternal calls
* adds lint rule to disallow future usage of `openExternal`
* updates to use URL constructor per review feedback
* split url into components on a `service`
also fixes a bug to use the upstream name in a service instead
of an actual hostname from the 'servers' block
* fix parseUrl to not return 'null:null'
* do not add targets if there is no hostname
previously a server with just a path; '/some/path' would generate
a target 'null:null'.
* Update packages/openapi-2-kong/src/declarative-config/services.js
* Update packages/openapi-2-kong/src/declarative-config/services.js
Co-authored-by: Opender Singh <opender.singh@konghq.com>
existing regex '\S+' is equivalent to '[^\s]+' by adding the
'/' character as not allowed, we limit the regex to match only 1 path
segment
This path: "/tracks/{hello}/world/{there}”
Would create: “/tracks/(?<hello>\S+)/world/(?<there>\S+)$”
This path works as expected:
/tracks/xxx/world/yyy
With captures:
hello: xxx
there: yyy
This path also works, unexpected:
/tracks/xxx/zzz/world/yyy/andthensome
With captures:
hello: xxx/zzz
there: yyy/andthensome
The last one should have matched only a single path segment, but
actually matches multiple.
* Prompt existing users about analytics
* Fix the tests
* Set hasPromptedAnalytics to true when going through the onboarding flow
* Add comments
* Show the analytics prompt after migrating if needed as well
* test: add a few more tests for analytics activity
Co-authored-by: Opender Singh <opender.singh@konghq.com>
* fix(tracking data) - Honor data sharing
* Utilizes the Data Sharing preference to determine what data is
sent to the notification endpoint
* fix(tracking data) - Move 2 variables that fall under Service Data
* Stop sending aggregated metrics to the notification endpoint
* Disable sending of segment events when analytics are disabled
Co-authored-by: Eric Reynolds <eric.reynolds@konghq.com>
Co-authored-by: David Marby <david@dmarby.se>
* Add settings for color scheme detection and themes
Default light and dark themes can still be changed.
For now its studio-light and default for core, and studio-dark and studio-light for designer.
* Add color scheme type and supporting methods
The detection of dark scheme is based on the background color at the moment.
This seems to work pretty well, but is not an ideal solution.
I think themes should at least get to override this.
* Add support for choosing light and dark theme to settings
This adds a checkbox to the theme settings that determines whether we use the OS color scheme.
If we don't (default) everything stays the same as before.
If we do, themes are rendered in two groups. One for the light themes and one for the dark themes. They can be chosen independently. None of this overrides the default theme choice.
* Add padding to the theme settings tab
Themes are still aligned by adding negative margin.
A bit of a hack, open for suggestions.
* Update theme on OS color scheme change
* Replace usages of setTheme with applyColorScheme
This makes sure that we don't override the user's choice.
* Update packages/insomnia-app/app/plugins/misc.js
Co-authored-by: Opender Singh <opender94@gmail.com>
* Remove dark mode heuristic
* Remove unused button value
* Update theme settings design
* Update packages/insomnia-app/app/ui/components/settings/theme.js
Co-authored-by: Opender Singh <opender94@gmail.com>
* Update packages/insomnia-app/app/ui/components/settings/theme.js
Co-authored-by: Opender Singh <opender94@gmail.com>
* Replace object literal lookups
Do not use object literal lookups to make code more readable
* Remove unused parameter
* Disable default theme select when auto detection is enabled
* Fix imports after rebase
* Update packages/insomnia-app/app/ui/components/modals/settings-modal.js
Co-authored-by: Opender Singh <opender94@gmail.com>
* Update packages/insomnia-app/app/ui/components/modals/settings-modal.js
Co-authored-by: Opender Singh <opender94@gmail.com>
* Remove theme header
* Disable hover animation and border on disabled theme buttons
* Clean up double negation in css
Replace :not(:disabled) with :enabled. Not sure what I was thinking there.
* Update index.js
Co-authored-by: Opender Singh <opender94@gmail.com>
Co-authored-by: Opender Singh <opender.singh@konghq.com>
* chore: refactor
* chore: fix one test
* chore: fix all tests
* chore: fix all existing tests
* chore: add prompting tests
* chore: ignore flaky test for now
* fix(import) do differential patching for design activity imports
This patch adds differential patching for imports that occur during the switching between
design and debug tabs inside of Designer. As reported through #2971, and others, this patch
favors existing data over imported data, values that exist already on the document will remain
unchanged, only new values (including array based values) will be added / removed.
This also includes a bypass feature for urls, currently these options are not exposed through
the interface but could be. This feature is an object to allow for future properties for
preference-based patching.
- Adds `options.enableDiffBasedPatching` and `options.enableDiffDeep` to `importRaw` for backwards compat.
- Adds `options.bypassDiffProps.url` for url bypassing and use an object for future items.
- Adds `diffPatchObj` based on differential patching for objects (works with arrays as well).
Future ideas:
- `hasBeenModifiedByUser` property map object to allow changing properties that haven't been touched by the user with options.
fixes: #2971, #2882, #3038, #2442
* adds some basic tests
- also adds jest (which was (mistakenly) not there before)
- does not call `.hasOwnProperty` directly, per https://eslint.org/docs/rules/no-prototype-builtins (which, we will add more formally at a later date)
* don't special-case workspaces
this ensures the behavior of the initial PR is more preserved
Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com>
* feat: add prompt and update import logic
* feat: update usages and plugin api
* chore: WIP
* chore: convert to options
* chore: don't create workspace model until needed
* chore: add OR condition
* chore: add workspace name and don't change scope
* feat: prompt with appropriate name
* chore: rename
* chore: rename type
* chore: update signature
* chore: properly type the import functions
* feat: don't activate the workspace after importing
* chore: show loading on homepage
* fix: typo
* chore: fix tests and rename
* Update packages/insomnia-app/app/common/__tests__/import.test.js
Co-authored-by: David Marby <david@dmarby.se>
Co-authored-by: David Marby <david@dmarby.se>
* chore: smoke testing documentation
* chore: unit testing documentation
* chore: address comments and add a section on element selection
* chore: replace screenshot with code block
* fix: tooltip with an initial empty message causes issues
* test: add failing test
* fix: breaking test is fixed with the fix
* test: expand on tests
* chore: rename test
* test: add checks for the child element
* test: add comments
* chore: spacing
* fix: oopsie
* Add test
* WIP
* Passes
* Update
* Done
* Update
* Fix
* Remove id
* Works
* Run more tests
* Hmm
* await
* mostly works
* i sure hope this works in CI because it worked 40 times on my computer...
* add comments
* feat: replace tinyhttp with express and add basic auth route
* fix: response content-type header
* feat: works
* feat: this should work
* fix: slow down all requests
* fix: force refresh
* test: wait for timeline viewer to contain text after clicking it
* remove: delete oas3.yaml spec as it is redundant for now
* Hide the active workspace when moving a folder (#2849)
* Change workspace to activeWorkspace for clarity
* Use map instead of flatMap for consistency
* feat(insomnia-components): add async-button
* feat: show error if parsing protofile fails during upload/add
* chore: flow is poop
* feat: use try-finally
The issue was located in the `exportHar` function. It was not handled `file` param correctly.
For this type of file, the `value` attribute is empty, therefore we should take instead the `fileName`
Closes#2282