Port config forms JS codebase to TypeScript/spina.

Review Request #13140 — Created July 13, 2023 and submitted

Information

Djblets
release-4.x

Reviewers

This change ports the JavaScript side of the config forms app to use
TypeScript and spina.

For the most part this is a very straightforward port. The only annoying
thing was I discovered that the ListItem implementation allowed
passing in an actions parameter which was treated as an option arg,
but was actually being passed in as part of the attributes (despite not
being an attribute on the model). This was only used inside of our unit
tests (which have themselves been updated to use setActions), but I've
added some compatibility code to emit a deprecation warning just in the
very unlikely case that someone was using this.

Ran js-tests.

Summary ID
Port config forms JS codebase to TypeScript/spina.
This change ports the JavaScript side of the config forms app to use TypeScript and spina. For the most part this is a very straightforward port. The only annoying thing was I discovered that the `ListItem` implementation allowed passing in an `actions` parameter which was treated as an option arg, but was actually being passed in as part of the attributes (despite not being an attribute on the model). This was only used inside of our unit tests (which have themselves been updated to use `setActions`), but I've added some compatibility code to emit a deprecation warning just in the very unlikely case that someone was using this. Testing Done: Ran js-tests.
67d63b3d82d46d0d02a1a17da7d20ed28ba7d5e1
Description From Last Updated

I think this should say "This operates just like a..."?

maubinmaubin

Should say "stores" instead of "stored".

maubinmaubin

4.0? Same below.

chipx86chipx86

suite actually comes from us.

chipx86chipx86

Should use double ticks around "template"

maubinmaubin

I think we need to map this to an explicit type mapping strings -> strings for subclasses to extend, otherwise …

chipx86chipx86

Should document this and any other instance variables.

maubinmaubin

Can we add docs to these? The public ones at least.

chipx86chipx86

It'd be nice to have a type for this that can be imported.

chipx86chipx86

Since this is for returning any arbitrary mapping of data for use during render, I don't think we want unknown. …

chipx86chipx86

This should end with ,, and ) { on the next line.

chipx86chipx86

Missing docs.

chipx86chipx86

Can we add docs for these?

chipx86chipx86

Can we add docs for at least public variables?

chipx86chipx86

Let's follow the pattern in Review Board and have a tests/index.ts in each {models,views}/tests/ directory, and just import that directory. …

chipx86chipx86

Can you decorate Backbone.Collection with :js:class?

chipx86chipx86

I think these have to use 1. and 2. to format correctly in ReStructuredText.

chipx86chipx86

Can you decorate fetch with :js:meth?

chipx86chipx86
maubin
  1. 
      
  2. Show all issues

    I think this should say "This operates just like a..."?

  3. Show all issues

    Should say "stores" instead of "stored".

  4. Show all issues

    Should use double ticks around "template"

  5. Show all issues

    Should document this and any other instance variables.

  6. 
      
chipx86
  1. 
      
  2. Show all issues

    4.0?

    Same below.

  3. Show all issues

    suite actually comes from us.

    1. Just going to remove this for now until I come up with a solution.

  4. Show all issues

    I think we need to map this to an explicit type mapping strings -> strings for subclasses to extend, otherwise it'll be limited to these values.

  5. Show all issues

    Can we add docs to these? The public ones at least.

  6. Show all issues

    Since this is for returning any arbitrary mapping of data for use during render, I don't think we want unknown. I think we want an interface that maps any string key to any value.

  7. Show all issues

    This should end with ,, and ) { on the next line.

  8. Show all issues

    Missing docs.

  9. Show all issues

    Can we add docs for these?

  10. Show all issues

    Can we add docs for at least public variables?

  11. djblets/static/djblets/js/tests/index.ts (Diff revision 1)
     
     
     
     
     
     
    Show all issues

    Let's follow the pattern in Review Board and have a tests/index.ts in each {models,views}/tests/ directory, and just import that directory.

    For example, Review Board's js/tests/index.ts has:

    import '../common/models/tests';
    import '../common/resources/collections/tests';
    import '../common/resources/models/tests';
    import '../common/views/tests';
    import '../reviews/models/tests';
    import '../reviews/views/tests';
    import '../ui/views/tests';
    
  12. 
      
david
chipx86
  1. 
      
  2. Show all issues

    It'd be nice to have a type for this that can be imported.

  3. Show all issues

    Can you decorate Backbone.Collection with :js:class?

  4. Show all issues

    I think these have to use 1. and 2. to format correctly in ReStructuredText.

  5. Show all issues

    Can you decorate fetch with :js:meth?

  6. 
      
david
maubin
  1. Ship It!
  2. 
      
david
Review request changed
Status:
Completed
Change Summary:
Pushed to release-4.x (938d76c)