Giter Club home page Giter Club logo

aurelia-components's People

Contributors

andreasgeyertud avatar conradstrassburger avatar martingrossmann avatar mreiche avatar pietyorke avatar reins-ch avatar renovate-bot avatar renovate[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

aurelia-components's Issues

Decide on renovate bot

@mreiche : You probably noticed the renovate bot PR. I am highly inclined to decline this, because I have no clue where it came from and uninvited guests are unwelcome to me.

I'd take it though, if...

  • You ordered it because you want it.
  • You have previous experience with it and can recommend it.

So... opinions?

Transition to SemVer

Description

This Repository was started at a time when it was only used by a single project. By now, however, via @mreiche we are involved in two different projects with different development speeds and requirements. Of course, we'd welcome further client projects and the prospective code donors they may bring.

We should now follow the npm Good Practice to SemVer our releases by the following pattern:
MAJOR.MINOR.PATCH
with the following contract:

  • MAJOR : does contain breaking changes, may be arbitrarily hard on clients to migrate
  • MINOR: contains additions, may break client code if it conflicts with additions (e.g. naming conflicht, shared dependency version conflict)
  • PATCH: should not contain breaking changes

We should be ready to treat defect reports re. accidental breakage as bugs with high priority and typically react by

  • retraction of release on npmjs
  • hotfix release

We should treat dependency updates as follows:

  • non-optional dependencies: pass-through their version change
    (e.g. if any MAJOR dependency update is contained, treat the next release as MAJOR)
  • devDependencies: don't care
  • optional (peer) dependencies: only consider resulting usage changes e.g. in jest tests, readme examples or our own, known user code for the purpose of choosing the version
    (e.g. if a MAJOR optional peer dependency update happens, but all our code stays the same, treat the next release as FIX)

Bootstrap 5 popover support

Bootstrap 5 considerably changed their popover implementation compared to 4 and there is no easy or legible way to keep the PopoverCustomAttribute compatible with both. I'd like to have Bootstrap 5 support (and no longer care about 4), so I am inclined to simply replace the implementation.

... @mreiche : Would you rather keep Bootstrap 4 as an option? In that case we'd probably have to change naming convention to include the bootstrap version number in our custom attributes, e.g. I'd commit a Popover5CustomAttribute in addition to the current one.

Added a draft:

  • First commit is the minimal change,
  • second commit contains an additional safeguard that would have saved a lot of time figuring out why the popovers were broken in the first place,
  • third commit contains an opt-out for the second commit (which I'd like to drop but included for completeness).

optionalPeerDependencies do not exist

I stumbled across this again while developing a PR.
In package.json "optionalPeerDependencies" are defined. According to the npm docs, there is no such thing. When running npm install in any configuration, these dependencies aren't installed.

peerDependencies and optionalDependencies exist on their own.

I'd argue that for here, peerDependencies would be just fine.
If truly optional peer dependencies are what is wanted, one needs to use peerDependenciesMeta.

Strengthen TypeScript transpiler options

We currently use very lax settings for the Typescript transpiler, resulting in a lot of errors being silent, when instead I'd expect the compiler to catch them on-build.

Here is a list of things I'd like to activate at least:

  • alwaysStrict (even without TypeScript a good idea)
  • noImplicitAny (quite possibly the single most important setting, because implicit any effectively disables type checking completely - and completely undetected - whenever it happens)
  • noImplicitOverride
  • noImplicitThis
  • noPropertyAccessFromIndexSignature
  • noUncheckedIndexedAccess
  • noUnusedLocals
  • noUnusedParameters
  • strictBindCallApply
  • strictFunctionTypes
  • useUnknownInCatchVariables

For reference, here is the complete list of possible options.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Pending Approval

These branches will be created by Renovate only once you click their checkbox below.

  • Update major (major) (@types/jest, aurelia-webpack-plugin, jest, ts-jest, typescript, webpack-cli)

Pending Status Checks

These updates await pending status checks. To force their creation now, click the checkbox below.

  • Update dependency webpack to v5.92.0

Detected dependencies

npm
package.json
  • @types/bootstrap ^5.1.12
  • @types/jest ^27.4.1
  • @types/sanitize-html ^2.6.2
  • aurelia-binding ^2.5.4
  • aurelia-bootstrapper ^2.3.3
  • aurelia-dependency-injection ^1.5.2
  • aurelia-event-aggregator ^1.0.3
  • aurelia-loader-webpack ^2.2.1
  • aurelia-polyfills ^1.3.4
  • aurelia-webpack-plugin ^4.0.0
  • jest ^27.5.1
  • jest-html-reporters ^3.1.4
  • ts-jest ^27.1.4
  • ts-node ^10.7.0
  • typescript ^4.6.4
  • webpack ^5.70.0
  • webpack-cli ^4.9.2
  • apexcharts ^3.35.0
  • aurelia-templating ^1.11.1
  • aurelia-validation ^2.0.0-rc2
  • bootstrap ^5.1.3
  • echarts ^5.3.2
  • moment ^2.29.1
  • moment-duration-format ^2.3.2
  • sanitize-html ^2.7.0
  • ts-md5 ^1.2.7

  • Check this box to trigger a request for Renovate to run again on this repository

CacheService may try to write value for deleted key

Currently the "CacheService" does not perform the service of dropping outdated keys. Instead this must happen from the outside via invalidate. This means that keys may spontaneously be deleted silently and at any time.

return this._cacheContainer[key][1] = Promise.resolve(object); then fails because this._cacheContainer[key] is undefined.

Workaround: Always optional-chain.

Proper solution: Let the CacheService do the dropping, such that it may handle pending replies to dropped keys appropriately.

Design issue: How do we handle responses which only arrive after their key has already timed out. Either/or:

  1. What we actually want to cache is values, not keys. We should TTL the values, not the keys. Only when the key is written to should TTL start counting down for it.
  2. When a key times out before the value is written, discard the write (and emit a warning, I guess): This cache is not properly configured to handle the response times encountered, so they will never be cached.

... I prefer 1). @mreiche : Opinions?

Zombie key may replace living key in CacheService

Steps to reproduce:

  1. make a call 0 that takes longer to resolve than TTL
  2. make a call 1 after TTL of call 0 that resolves within 1 + <now of call 1> - <now of call 0>
  3. make a call 2 after call 0 and 1 have both resolved

Expected: Receive result of call 1, call 2 is not executed.
Observed: Call 2 finds validUntil of call 0 and is executed; receive result of call 2.

Test case here

Name of PopoverCustomAttribute clashes with upcoming native HTML popover attribute

When the custom attribute "popover" is used on a webpage, Chrome shows the following warning:
grafik

Links:
https://html.spec.whatwg.org/multipage/dom.html#custom-data-attribute [1]
https://chromestatus.com/feature/5463833265045504 [2]
https://html.spec.whatwg.org/multipage/popover.html [3]

Once browsers start supporting the API, we'll face a namespace conflict.

@martingrossmann and I suggest:
Renaming the attribute to "data-popover" or "data-ac-popover" (ac for aurelia-components) in accordance with [1].
This is a breaking API change on our side, so the old attribute should stay available, although deprecated.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.