The Pinia plugin to enable Object-Relational Mapping access to the Pinia Store.

Overview

Pinia ORM logo

pinia-orm

npm version npm downloads Github Actions CI License

Intuitive, type safe and flexible ORM for Pinia based on Vuex ORM Next

Help me keep working on this project ๐Ÿ’š

Platinum Sponsors

Gold Sponsors

Silver Sponsors

Bronze Sponsors

Sven Hue


FAQ

A few notes about the project and possible questions:

Q: Does it work with the same models as vuex-orm?

A: Yes, this code is based on their work

Roadmap

to v 1.0.0

  • Get it work with minimal breaking changes
  • Code clean up
  • Documentation
  • Tests

Special thanks

I wan to thank Kia King Ishii and their contributors for all their awesome work with vuex-orm

License

MIT

Comments
  • Relationships do not update on save

    Relationships do not update on save

    If relationship fields sent from a backend are null - or in the case of a many to many relationship - the contents of an array have changed, pinia-orm does not appear to keep track of these changes by updating the id fields and/or pivot tables.

    Please see https://github.com/salcedo/pinia-orm-relationship-unlinking for reproduction of this issue.

    question has workaround 
    opened by salcedo 14
  • Property 'belongsToMany' does not exist on type 'typeof  ...

    Property 'belongsToMany' does not exist on type 'typeof ...

    Thank you for creating this package!

    Reproduction

    I created a simple model but the .belongsToMany gives me the error Property 'belongsToMany' does not exist on type 'typeof ...

    Steps to reproduce the behavior

    1. Install piniaorm
    2. Create a model (group.ts)
    import { Model } from "pinia-orm";
    
    import GroupMember from "./GroupMember";
    import Member from "./Member";
    
    export default class Group extends Model {
      static entity = "Group";
    
      static fields() {
        return {
          id: this.uid(),
          title: this.string(""),
          description: this.string(""),
          members: this.belongsToMany(Member, GroupMember, "group_id", "member_id"),
        };
      }
    }
    
    1. See that your editor (Webstorm in my case) says that belongsToMany does not exist.

    Expected behavior

    I would expect this.belongsToMany to exist and behave just like the original docs described it. https://vuex-orm.org/guide/model/relationships.html#many-to-many

    Actual behavior

    It says belongsToMany does not exist.

    Additional information

    If you didn't implement belongsToMany it might be good to put this in the README.md

    good first issue question 
    opened by tintin10q 14
  • Keeping reactivity intact

    Keeping reactivity intact

    Describe the feature

    Keeping reactivity is incredible important to keep applications performant. However Pinia-ORM (& Vuex-ORM) generate a completely new javascript object for every single model in a collection everytime a mutation is triggered for something in that collection.

    This has meant weโ€™ve been forced to move away from Vuex-ORM for our app.

    Itโ€™s great to see the progress on Pinia-ORM! Maybe this something Pinia-ORM could fix?

    more info; https://github.com/vuex-orm/vuex-orm/issues/746

    Additional information

    • [x] Would you be willing to help implement this feature?
    • [ ] Could this feature be implemented as a module?

    Final checks

    enhancement 
    opened by Juice10 9
  • hasManyBy for Many To Many?

    hasManyBy for Many To Many?

    Describe the feature

    I have a backend with contact and contact emails that get serialized out like this:

    a contact:

    {
      "id": 1,
      "name": "Wanda",
      "emails": [
        {
          "id": 10,
          "contact_ids": [1],
          "email_address": "[email protected]"
        }
      ]
    }
    

    On the backend, these models are related many-to-many. There should be a way for pinia-orm to be able to save either a contact or contact email and have the relationships work even when the backend data coming in is an array of ids instead of a serialized object, similar to hasManyBy but works with a pivot table.

    Additional information

    • [ ] Would you be willing to help implement this feature?
    • [ ] Could this feature be implemented as a module?

    Final checks

    question 
    opened by salcedo 8
  • TypeScript definitions for models cause null values.

    TypeScript definitions for models cause null values.

    Thanks you for solving the flush thing! This is a very nice thing to have.

    Now I have this other problem. I would love to add types to my models to get editor suggestions and the general benefits of Typescript. I tried to add the type definitions as outlined here: https://next.vuex-orm.org/guide/model/decorators.html. When I did this I did get the type information and nice type suggestions in my ide so that works.

    But as soon as I defined a type for a field (either with or without a decorator) the field becomes null when queried.

    Maybe I am missing something?

    Reproduction

    Use this simple model:

    import { Model, Uid, Str } from "pinia-orm";
    
    export default class Todo extends Model {
      static entity = "Todo";
    
      // static fields() {
      //   return {
      //     id: this.uid(),
      //     text: this.string(""),
      //     name: this.string(""),
      //   };
      // }
      //
      // id!: string;
      // text!: number;
      // name!: number;
    
      @Uid()
      id!: string;
    
      @Str("Todo Text")
      text!: string;
    
      @Str("Todo Name")
      name!: string;
    }
    
    

    You can try defining with the decorators or using the commented out fields static method and the type definitions.

    Now have a component like this:

    <template>
      <button @click="todo.save({text:"Fix TS support", name:"TS Todo"})">Add todo</button> 
      <button @click="todo.flush()">Clear Todos</button>
      <span>{{all_todo_text}}</span>
    <template>
    
    <script setup lang="ts">
    import { computed } from "vue";
    import Todo from "@/Todo";
    
    const todo = useRepo(Todo);
    const all_todo_text = computed(() => todo.all().map((t) => t.text));
    </script>
    

    Steps to reproduce the behavior

    1. Build the above code
    2. Click the add todo button
    3. Notice that the todo texts are null
    4. Comment out the decorators and comment in the static field method
    5. Notice that the todos are now the default given in the decorator (Even though I did give a value in save)
    6. Add another todo and notice that the new todos do have the value given in the .save
    7. Now if you comment in the type definitions below the field method everything goes to null again.

    Expected behavior

    I would expect the values of the model to not be affect (turn to null) by the type definitions.

    Actual behavior

    When adding type definitions to models the values of the fields turn to null and in the case of decorators the values given in .save are ignored. With this the type definitions are not useable.

    question 
    opened by tintin10q 8
  • Flush does not work

    Flush does not work

    Flush does not work. It could be because this model has a list as a primary key?

    import { Model } from "pinia-orm";
    
    export default class HumanSavedShow extends Model {
      static entity = "HumanSavedShow";
      static primaryKey = ["human_id", "show_id"];
    
      static fields() {
        return {
          human_id: this.uid(),
          show_id: this.uid(),
          added_at: this.number(0)
        };
      }
    }
    
    <template>
      <button @click="testFlush">Flush does not work</click>
    </template>
    
    
    <script setup lang="ts">
    import { useRepo } from "pinia-orm";
    import HumanSavedShow from "@/models/HumanSavedShow";
    
    const SAVEDSHOWS = useRepo(Spotify_HumanSavedShow)
    
    function testFlush() {
      console.log('There are ', SAVEDSHOWS.all().length, 'Shows');
      useRepo(Spotify_HumanSavedShow).flush();
      SAVEDSHOWS.flush();
      console.log('There are ', SAVEDSHOWS.all().length, 'Shows');
      SAVEDSHOWS.new()
      console.log('There are ', SAVEDSHOWS.all().length, 'Shows');
    }
    </script>
    
    <script lang="ts">
    import { defineComponent } from "vue";
    
    export default defineComponent({
      name: "App",
    });
    </script>
    

    I would expect flush to delete all the records stored. https://next.vuex-orm.org/guide/repository/deleting-data.html#deleting-data

    But it doesn't delete anything.

    bug 
    opened by tintin10q 8
  • multiple belongsTo relationships between 2 entities lead to unintended outcome

    multiple belongsTo relationships between 2 entities lead to unintended outcome

    Environment

    {
      "name": "test1",
      "version": "0.0.1",
      "private": true,
      "scripts": {
        "serve": "vue-cli-service serve",
        "build": "vue-cli-service build",
        "test:unit": "vue-cli-service test:unit",
        "test:e2e": "vue-cli-service test:e2e",
        "lint": "vue-cli-service lint"
      },
      "dependencies": {
        "@capacitor/app": "1.1.1",
        "@capacitor/core": "3.5.1",
        "@capacitor/haptics": "1.1.4",
        "@capacitor/keyboard": "1.2.2",
        "@capacitor/status-bar": "1.0.8",
        "@ionic/vue": "^6.0.0",
        "@ionic/vue-router": "^6.0.0",
        "axios": "^0.27.2",
        "core-js": "^3.6.5",
        "date-fns": "^2.28.0",
        "dayjs": "^1.11.5",
        "eslint-config-typescript": "^3.0.0",
        "install": "^0.13.0",
        "ionic-logging-service": "^14.0.0",
        "lodash": "^4.17.21",
        "npm": "^8.13.1",
        "pinia": "^2.0.14",
        "pinia-orm": "^1.0.0",
        "swiper": "^8.3.2",
        "tslint": "^6.1.3",
        "vue": "^3.2.21",
        "vue-promised": "^2.2.0",
        "vue-router": "^4.0.12"
      },
      "devDependencies": {
        "@capacitor/cli": "3.5.1",
        "@ionic/cli": "6.19.1",
        "@types/jest": "^27.0.2",
        "@types/lodash": "^4.14.182",
        "@typescript-eslint/eslint-plugin": "^5.26.0",
        "@typescript-eslint/parser": "^5.26.0",
        "@vue/cli-plugin-babel": "~5.0.0-rc.1",
        "@vue/cli-plugin-e2e-cypress": "~5.0.0-rc.1",
        "@vue/cli-plugin-eslint": "~5.0.0-rc.1",
        "@vue/cli-plugin-router": "~5.0.0-rc.1",
        "@vue/cli-plugin-typescript": "~5.0.0-rc.1",
        "@vue/cli-plugin-unit-jest": "~5.0.0-rc.1",
        "@vue/cli-service": "~5.0.0-rc.1",
        "@vue/test-utils": "^2.0.0-rc.16",
        "@vue/vue3-jest": "^27.0.0-alpha.3",
        "babel-jest": "^27.3.1",
        "cypress": "^8.7.0",
        "eslint": "^8.17.0",
        "eslint-config-airbnb-base": "^15.0.0",
        "eslint-plugin-import": "^2.26.0",
        "eslint-plugin-vue": "^9.4.0",
        "jest": "^27.3.1",
        "ts-jest": "^27.0.7",
        "typescript": "^4.3.5"
      },
      "description": "An Ionic project",
      "prettier": {
        "singleQuote": true,
        "printWidth": 120
      }
    }
    
    

    Reproduction

    
    class EventItem extends Model {
      static entity = 'eventitem';
      static primaryKey = ['id'];
    
      static fields() {
        return {
          id: this.uid(),
          name: this.string(''),
    
          participants: this.belongsToMany(People, EventItemPeople, 'eventitem_id', 'people_id', 'id', 'id'),
          // providers relationship seems to overwrite participants relationship
          providers: this.belongsToMany(People, EventItemPeople2, 'eventitem_id2', 'people_id2', 'id', 'id'),
          animals: this.belongsToMany(Animal, EventItemAnimal, 'eventitem_id', 'animal_id', 'id', 'id'),
        };
      }
    }
    
    class EventItemPeople extends Model {
      static entity = 'eventitempeople';
    
      static primaryKey = ['eventitem_id', 'people_id'];
      //   static primaryKey = ['id'];
    
      static fields() {
        return {
          id: this.uid(),
          eventitem_id: this.uid(),
          people_id: this.uid(),
        };
      }
    }
    
    class EventItemPeople2 extends Model {
      static entity = 'eventitempeople2';
    
      //   static primaryKey = ['eventitem_id1', 'people_id1'];
      static primaryKey = ['id'];
    
      static fields() {
        return {
          id: this.uid(),
          eventitem_id2: this.uid(),
          people_id2: this.uid(),
        };
      }
    }
    
    class People extends Model {
      static entity = 'people';
    
      static primaryKey = ['id'];
    
      static fields() {
        return {
          id: this.uid(),
          name: this.string(''),
        };
      }
    }
    
    class Animal extends Model {
      static entity = 'animals';
    
      static primaryKey = ['id'];
    
      static fields() {
        return {
          id: this.uid(),
          name: this.string(''),
        };
      }
    }
    
    class EventItemAnimal extends Model {
      static entity = 'eventitemanimal';
    
      //   static primaryKey = ['eventitem_id1', 'people_id1'];
      static primaryKey = ['id'];
    
      static fields() {
        return {
          id: this.uid(),
          eventitem_id: this.uid(),
          animal_id: this.uid(),
        };
      }
    }
    
    export { EventItem, People };
    
    
        useRepo(EventItem).save([
          {
            id: -1,
            name: 'item 1',
            participants: [{ id: -1000, name: 'Carsten' }],
            providers: [{ id: -1001, name: 'Peter' }],
            animals: [{ id: -2000, name: 'dog 1' }],
          },
        ]);
    

    Screenshot 2022-09-19 at 18 00 53

    Describe the bug

    First of all: thanks for the great work on this!

    I ran across a problem with multiple n-m relationships between two entities EventItem and People. People can be participants of EventItems and they can also be providers to EventItems.

    It seems to me that the relationship that is declared last actually wins. So in the example above, there will be only the eventitempeople2 relationship. According to the vue dev-tools, the participant "Carsten" with id -1000 is inserted into the eventitempeople2 relationship. Switching the participant and provider relationships, creates exactly the opposite effect.

    I added the Animals relationship just to check whether a different m - n relationship to another entity does work - and it does. This is a reduced example of the data model I actually used. In that model the second relationship to People ran via another entity in-between EventItem and Participant. But this caused the same issue.

    Any ideas?

    Additional context

    No response

    Logs

    No response

    bug 
    opened by CarstenRuetz 5
  • Pass pinia options in model

    Pass pinia options in model

    Hi!

    I'm currently working on a project in which I have to migrate from Vue2 with Vuex-ORM into Vue3 with Pinia-ORM. One of the requirements of the project is to persist the store during page reloads (which I try to accomplish with the pinia-plugin-persistedstate plugin). To configure this plugin I have to add an option to my store description.

    The issue I'm facing is that I can't figure out how to access this store description inside of a Model. I can imagine that other plugins will work the same way (options in the store description), so it might be an interesting addition to the package!

    My proposed solution is to add a static field to the Model in which you could add options that are inserted (with a spread operator) into the store description. Maybe something like static piniaOptions = {}?

    enhancement 
    opened by JochemVanIterson 5
  • v1.4.0

    v1.4.0

    v1.4.0 - ๐ŸŽ„

    ๐ŸŽ Enhancements

    • pinia-orm: add hasManyThrough relation (#678)
    • pinia-orm: Add the possibility to rollback changed models. Adding $isDirty(), $getOriginal() and $refresh. (#757)

    ๐Ÿ•ฏ๏ธ Fixes

    • pinis-orm: Update hook not triggered with update method (fb1694f5af09557040823fe46e0d7a50468250d3)
    • pinis-orm: @OnDelete on same model attrs leads to undefined error (#754)
    • pinia-orm: Don't delete relations bind with onDelete if hook returns false (3531a06a68a1018927a2451d1a4e05ca40d8e2a6)

    ๐Ÿคถ Performance

    • pinia-orm: Improve hydrating check (#679)
    • pinia-orm: Remove JSON.stringfy() for comparing objects (300482d55e25fe974699b464ab02acd45afe991d)

    โ˜ƒ๏ธ Refactors

    • pinia-orm: Improve typescript handling with piniaStore() (a8628c8cf81728c549d07f14506aa435a6d8958e)

    ๐ŸŽ… Documentation

    • Add some missing model functions to api (ce54b2384c7efc1b594d2f0b819c9ee9cf4e5ccc)

    โค๏ธ Contributors

    • Gregor Becker
    • Santa Clause
    opened by CodeDredd 4
  • Build error: `Can't resolve '#build/orm-options'` on Nuxt 2 without Nuxt-Bridge

    Build error: `Can't resolve '#build/orm-options'` on Nuxt 2 without Nuxt-Bridge

    Environment

    Versions:

    Reproduction

    Eeeer, sorry I've tried but I'm not fluent enough for that. ๐Ÿ˜… I'm happy to add you as a contributor to my (private) project if that helps.

    Describe the bug

    nuxt dev failed to build. The file @pinia-orm/nuxt/dist/runtime/nuxt2-plugin.mjs is looking for the package #build/orm-options which does not exists.

    I really don't know how to help more, sorry. :/

    In the browser: CleanShot 2022-11-25 at 15 06 21@2x

    Additional context

    Logs

    โœ– Client
      Compiled with some errors in 153.82ms
    
    
     ERROR  Failed to compile with 1 errors                                    friendly-errors 14:42:55
    
    This dependency was not found:                                             friendly-errors 14:42:55
                                                                               friendly-errors 14:42:55
    * #build/orm-options in ./node_modules/@pinia-orm/nuxt/dist/runtime/nuxt2-plugin.mjs
                                                                               friendly-errors 14:42:55
    To install it, you can run: npm install --save #build/orm-options          friendly-errors 14:42:55
    
    documentation question 
    opened by mackwic 4
  • Can't make it work with Nuxt2.15.8

    Can't make it work with Nuxt2.15.8

    Reproduction

    I'm currently trying to migrate our vuex-orm project to use pinia + pinia-orm. Sadly though, I haven't been able to install pinia(-orm) without getting errors.

    I already tried the steps mentioned in the docs about Nuxt2, making my package.json look like:

    {
      // general package.json stuff,
      "resolutions": {
        "nanoid": "3.3.4"
      },
      "dependencies": {
        "@dansmaculotte/nuxt-zendesk": "0.4.1",
        "@nuxt/types": "^2.15.8",
        "@nuxt/typescript-build": "^2.1.0",
        "@nuxtjs/auth": "^4.9.1",
        "@nuxtjs/axios": "^5.13.1",
        "@nuxtjs/composition-api": "^0.32.*",
        "@nuxtjs/style-resources": "^1.0.0",
        "@pinia-orm/nuxt": "^1.0.18",
        "@pinia/nuxt": "0.2.1",
        "@tinymce/tinymce-vue": "^2.1.0",
        "@toast-ui/vue-image-editor": "^3.14.0",
        "@tobjoern/vue-color-gradient-picker": "git+https://github.com/Tobjoern/vue-color-gradient-picker.git",
        "@vuex-orm/core": "0.31.13",
        "core-js": "^3.8.3",
        "cross-env": "^5.2.0",
        "element-ui": "^2.13.0",
        "lodash": "^4.17.20",
        "lodash.throttle": "^4.1.1",
        "messagebird": "^3.6.2",
        "nanoid": "3.3.4",
        "nuxt": "^2.15.8",
        "nuxt-dropzone": "^1.0.4",
        "nuxt-gmaps": "^1.2.10",
        "nuxt-intercom": "^1.0.8",
        "nuxt-jsonld": "^1.5.0",
        "nuxt-property-decorator": "^2.9.1",
        "nuxt-purgecss": "^1.0.0",
        "nuxt-user-agent": "^1.2.2",
        "pinia": "^2.0.18",
        "pinia-orm": "^1.0.0-rc.5",
        "tinymce": "^5.5.1",
        "vue-agile": "^1.1.3",
        "vue-cool-lightbox": "^2.6.3",
        "vue-echo": "^1.0.2",
        "vue-i18n": "^8.21.1",
        "vuex": "^3.5.1"
      },
      "devDependencies": {
        "@babel/core": "^7.18.10",
        "@babel/eslint-parser": "^7.13.10",
        "@babel/preset-env": "^7.18.10",
        "@fortawesome/fontawesome-pro": "^5.15.0",
        "@nuxtjs/eslint-config": "^5.0.0",
        "@nuxtjs/eslint-module": "^3.0.2",
        "@nuxtjs/laravel-echo": "^1.0.3",
        "@nuxtjs/tailwindcss": "^3.4.2",
        "@types/jest": "^28.1.6",
        "@vue/test-utils": "^1.0",
        "@vue/vue2-jest": "^28.0.1",
        "babel-core": "^7.0.0-bridge.0",
        "babel-eslint": "^10.1.0",
        "babel-jest": "^28.1.3",
        "babel-plugin-component": "^1.1.1",
        "eslint": "^7.18.0",
        "eslint-config-prettier": "^7.2.0",
        "eslint-plugin-nuxt": "^2.0.0",
        "eslint-plugin-prettier": "^3.3.1",
        "eslint-plugin-vue": "^7.5.0",
        "jest": "^28.1.3",
        "jest-environment-jsdom": "^28.1.3",
        "jest-serializer-vue": "^2.0.2",
        "nodemon": "^1.18.10",
        "prettier": "^2.2.1",
        "pusher-js": "^5.1.1",
        "ts-jest": "^28.0.7",
        "typescript": "^4.7.4",
        "vue": "2.6.14",
        "vue-jest": "^3.0.7",
        "vue-server-renderer": "2.6.14",
        "vue-template-compiler": "2.6.14"
      }
    }
    

    I still get the errors from Nuxt stating:

    Module parse failed: Unexpected token (287:39) You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders | const type = model[this.morphType]; | const id = model[this.morphId]; > const related = dictionary[type]?.[id] ?? null; | model.$setRelation(relation, related); | });
    

    Making me think the ?? operator is not supported. My nuxt.config.js is as follows as well:

    import webpack from 'webpack'
    
    export default {
      mode: 'universal',
      // Disable annoying notice if we want to send anonymous data.
      telemetry: false,
      /*
       ** Headers of the page
       */
      head: {
        meta: [
          { charset: 'utf-8' },
          { name: 'viewport', content: 'width=device-width, initial-scale=1' },
        ],
      },
      router: {
        prefetchLinks: false,
        middleware: ['Server/userAgent'],
      },
    
      /*
       ** Customize the progress-bar color
       */
      loading: { color: '#f00', height: '4px' },
    
      /*
       ** Global CSS
       */
      css: [
        { src: '@fortawesome/fontawesome-pro/css/all.min.css', lang: 'css' },
        '@/assets/css/tailwind.css',
      ],
    
      /*
       ** Plugins to load before mounting the App
       */
      plugins: [
        '@/plugins/ui-store',
        '@/plugins/axios',
        '@/plugins/graphql/plugin',
        '@/plugins/vue-agile',
        '@/plugins/path-handler.js',
        '@/plugins/storage.js',
        '@/plugins/jsonld',
      ],
    
      /*
       ** Server middleware
       */
      serverMiddleware: ['@/middleware/Server/noSsr'],
    
      /*
       ** Nuxt.js modules
       */
      modules: [
        '@nuxtjs/axios',
        '@nuxtjs/auth',
        'nuxt-user-agent',
        '@pinia-orm/nuxt',
        // '~/modules/caching/caching'
      ],
      /*
      cache: {
    
        key(route, context) {
          if (context.req.originalUrl.startsWith('/cms')) {
            return false
          }
    
          return true
        },
    
        store: {
          type: 'filesystem',
          max: 100,
          ttl: 60
        }
      },
    
      auth: {
        debug: false,
        cookie: {
          options: {
            sameSite: 'strict',
          },
        },
        rewriteRedirects: true,
        redirect: {
          login: '/login',
          logout: '/login',
          callback: false,
          home: false,
        },
        strategies: {
          local: {
            endpoints: {
              login: {
                url: '/auth/login',
                method: 'post',
                propertyName: 'token',
              },
              logout: { url: '/auth/logout', method: 'post' },
              user: { url: '/auth/user', method: 'get', propertyName: 'user' },
            },
            // tokenRequired: true,
            // tokenType: 'bearer',
          },
        },
        plugins: [
          { src: '@/plugins/i18n', mode: 'client' },
          { src: '~/plugins/echo.js', mode: 'client' },
          '@/plugins/permissions',
        ],
      },
      buildModules: [
        '@nuxtjs/tailwindcss',
        'nuxt-purgecss',
        '@nuxt/typescript-build',
        '@nuxtjs/composition-api/module',
        ['@pinia/nuxt', { disableVuex: false }],
      ],
    
      /*
       ** PurgeCSS
       ** https://github.com/Developmint/nuxt-purgecss
       */
      purgeCSS: {
        // enabled: process.env.NODE_ENV === 'production', // or `false` when in dev/debug mode
        enabled: false, // TEMP SET ON FALSE TO REMOVE CSS BUGS FOR NOW
        whitelist: [
          'static/css/element-ui/theme-modual/index.css',
          'vue-color-gradient-picker/dist/index.css',
          'assets/css/main.css',
          'body',
          'html',
          'nuxt-progress',
        ],
        whitelistPatternsChildren: [/^el-/, /^fa-/, /^v-modal/],
      },
      buildDir: '.nuxt/build',
      build: {
        splitChunks: {
          layout: true,
          pages: true,
        },
        optimization: {
          splitChunks: {
            // Force Webpack to split some vendor packages
            cacheGroups: {
              // https://stackoverflow.com/questions/48985780/webpack-4-create-vendor-chunk
              tinyMceVendor: {
                test: /[\\/]node_modules[\\/](tinymce)[\\/]/,
                name: 'tinymcevendor',
              },
              lodashVendor: {
                test: /[\\/]node_modules[\\/](lodash)[\\/]/,
                name: 'lodashvendor',
              },
              elementUiVendor: {
                test: /[\\/]node_modules[\\/](element-ui)[\\/]/,
                name: 'elementuivendor',
              },
              vendor: {
                test: /[\\/]node_modules[\\/](!tinymce)(!lodash)(!element-ui)[\\/]/,
                name: 'vendor',
              },
            },
          },
        },
        transpile: ['vue-agile', 'pinia-orm'],
        /*
         ** PostCSS setup
         */
        babel: {
          plugins: [
            ['@babel/plugin-proposal-private-methods', { loose: true }],
            ['@babel/plugin-proposal-private-property-in-object', { loose: true }],
            [
              'component',
              {
                libraryName: 'element-ui',
                styleLibraryName: '~static/css/element-ui/theme-modual/',
              },
            ],
          ],
        },
        postcss: {
          // Add plugin names as key and arguments as value
          // Disable a plugin by passing false as value
          plugins: {
            'postcss-url': {},
            cssnano: {
              preset: 'default',
              discardComments: { removeAll: true },
              zIndex: false,
            },
          },
          // Change the postcss-preset-env settings
          preset: {
            stage: 0,
            autoprefixer: {
              cascade: false,
              grid: false,
            },
          },
        },
        extractCSS: { ignoreOrder: true },
        plugins: [
          new webpack.ProvidePlugin({
            mapboxgl: 'mapbox-gl',
          }),
          new webpack.NormalModuleReplacementPlugin(
            /element-ui[\/\\]lib[\/\\]locale[\/\\]lang[\/\\]zh-CN/,
            'element-ui/lib/locale/lang/en'
          ),
        ],
      },
    }
    
    

    Steps to reproduce the behavior

    • I've tried installing all the latest versions of vue and such
    • I've tried installing specific older versions without any luck

    Expected behavior

    A working Nuxt2 installation.

    Actual behavior

    The error mentioned above.

    bug has workaround 
    opened by marco-varias 4
  • fix(pinia-orm): `new` doesnt fire creating or created hook

    fix(pinia-orm): `new` doesnt fire creating or created hook

    ๐Ÿ”— Linked issue

    closes #801

    โ“ Type of change

    • [x] ๐Ÿ“– Documentation (updates to the documentation or readme)
    • [x] ๐Ÿž Bug fix (a non-breaking change that fixes an issue)
    • [ ] ๐Ÿ‘Œ Enhancement (improving an existing functionality like performance)
    • [ ] โœจ New feature (a non-breaking change that adds functionality)
    • [ ] โš ๏ธ Breaking change (fix or feature that would cause existing functionality to change)

    ๐Ÿ“š Description

    ๐Ÿ“ Checklist

    • [ ] I have linked an issue or discussion.
    • [ ] I have updated the documentation accordingly.
    bug 
    opened by CodeDredd 1
  • "new" doesnt fire creating or created hook

    Environment

      "dependencies": {
        "pinia": "2.0.28",
        "pinia-orm": "1.4.0",
        "vue": "3.2.45"
      },
      "devDependencies": {
        "@vue/cli-plugin-babel": "~4.5.0",
        "@vue/cli-plugin-eslint": "~4.5.0",
        "@vue/cli-service": "~4.5.0",
        "@vue/compiler-sfc": "^3.0.0-0",
        "babel-eslint": "^10.1.0",
        "eslint": "^6.7.2",
        "eslint-plugin-vue": "^7.0.0-0"
      },
    

    Reproduction

    https://codesandbox.io/s/young-cloud-odi2kr?file=/src/App.vue

    Describe the bug

    if calling new from repository the hooks for creatingand created not getting called.

    Click on "console" and afterwards on the buttons. you will see, that "new" wouldnt trigger these hooks

    Additional context

    No response

    Logs

    No response

    bug 
    opened by Maqsyo 0
  • refactor(pinia-orm): Bring more consistence into saving functions

    refactor(pinia-orm): Bring more consistence into saving functions

    ๐Ÿ”— Linked issue

    related to #774

    โ“ Type of change

    • [x] ๐Ÿ“– Documentation (updates to the documentation or readme)
    • [ ] ๐Ÿž Bug fix (a non-breaking change that fixes an issue)
    • [x] ๐Ÿ‘Œ Enhancement (improving an existing functionality like performance)
    • [ ] โœจ New feature (a non-breaking change that adds functionality)
    • [ ] โš ๏ธ Breaking change (fix or feature that would cause existing functionality to change)

    ๐Ÿ“š Description

    This refactoring brings more consistency to the insert, save & update functions. It also adds the missing update function on repository level.

    ๐Ÿ“ Checklist

    • [ ] I have linked an issue or discussion.
    • [ ] I have updated the documentation accordingly.
    opened by CodeDredd 0
  • chore(deps): update devdependency @nuxtjs/eslint-config-typescript to v12

    chore(deps): update devdependency @nuxtjs/eslint-config-typescript to v12

    Mend Renovate

    This PR contains the following updates:

    | Package | Change | Age | Adoption | Passing | Confidence | |---|---|---|---|---|---| | @nuxtjs/eslint-config-typescript | ^10.0.0 -> ^12.0.0 | age | adoption | passing | confidence |


    Release Notes

    nuxt/eslint-config

    v12.0.0

    Compare Source

    Features

    v11.0.0

    Compare Source

    Bug Fixes

    Configuration

    ๐Ÿ“… Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

    ๐Ÿšฆ Automerge: Enabled.

    โ™ป Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

    ๐Ÿ”• Ignore: Close this PR and you won't be reminded about this update again.


    • [ ] If you want to rebase/retry this PR, check this box

    This PR has been generated by Mend Renovate. View repository job log here.

    opened by renovate[bot] 2
  • Dependency Dashboard

    Dependency Dashboard

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

    Open

    These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

    Detected dependencies

    github-actions
    .github/workflows/algolia.yml
    • actions/checkout v3
    .github/workflows/ci.yml
    • actions/checkout v3
    • pnpm/action-setup v2
    • actions/setup-node v3
    • actions/checkout v3
    • pnpm/action-setup v2
    • actions/setup-node v3
    • codecov/codecov-action v3
    • actions/checkout v3
    • pnpm/action-setup v2
    • actions/setup-node v3
    • actions/checkout v3
    • pnpm/action-setup v2
    • actions/setup-node v3
    .github/workflows/release-tag.yml
    npm
    docs-playground/package.json
    • @antfu/utils ^0.7.2
    • @headlessui/vue ^1.7.7
    • @types/splitpanes ^2.2.1
    • @vue/runtime-core ^3.2.45
    • @vue/runtime-dom ^3.2.45
    • @vue/shared ^3.2.45
    • @vueuse/core 9.10.0
    • @vueuse/integrations ^9.10.0
    • @vueuse/shared 9.10.0
    • file-saver ^2.0.5
    • jszip ^3.10.1
    • lz-string ^1.4.4
    • monaco-editor 0.34.1
    • monaco-editor-core ^0.34.1
    • pinia ^2.0.28
    • pinia-orm ^1.4.0
    • splitpanes ^3.1.5
    • theme-vitesse ^0.6.0
    • vscode-html-languageservice ^5.0.3
    • vue ^3.2.45
    • @antfu/eslint-config ^0.34.1
    • @iconify/json ^2.2.4
    • @types/file-saver ^2.0.5
    • @types/node ^18.11.18
    • @vitejs/plugin-vue ^4.0.0
    • @vue/compiler-sfc ^3.2.45
    • eslint ^8.31.0
    • typescript ^4.9.4
    • vite ^4.0.4
    • unplugin-vue-components ^0.22.12
    • unplugin-icons ^0.15.1
    • vite-plugin-pwa ^0.14.1
    • vite-plugin-windicss ^1.8.10
    • vue-tsc ^1.0.24
    • windicss ^3.5.6
    docs/package.json
    • @nuxthq/studio ^0.5.1
    • jiti ^1.16.1
    • pathe ^1.0.0
    • scule ^1.0.0
    • untyped ^1.2.1
    • vue-plausible ^1.3.2
    • yarn 3.3.1
    package.json
    • @lerna-lite/cli ^1.13.0
    • @lerna-lite/run ^1.13.0
    • @types/lodash.kebabcase ^4.1.7
    • @types/node ^18.11.18
    • conventional-changelog-cli ^2.2.2
    • enquirer ^2.3.6
    • execa ^6.1.0
    • expect ^29.3.1
    • globby ^13.1.3
    • lint-staged ^13.1.0
    • lodash.kebabcase ^4.1.1
    • minimist ^1.2.7
    • p-series ^3.0.0
    • pascalcase ^2.0.0
    • prettier ^2.8.2
    • rimraf ^3.0.2
    • semver ^7.3.8
    • typescript ^4.9.4
    • yorkie ^2.0.0
    • pnpm 7.23.0
    packages/normalizr/package.json
    • @nuxtjs/eslint-config-typescript ^10.0.0
    • @size-limit/preset-small-lib ^8.1.0
    • eslint ^8.31.0
    • immutable ^4.2.2
    • size-limit ^8.1.0
    • typescript ^4.9.4
    • unbuild ^1.0.2
    packages/nuxt/package.json
    • @nuxt/kit ^3.0.0
    • @nuxt/schema ^3.0.0
    • @pinia/nuxt ^0.4.6
    • @types/prettier ^2
    • eslint ^8.31.0
    • pinia ^2.0.28
    • prettier ^2.8.2
    • std-env ^3.3.1
    • typescript ^4.9.4
    • vue ^3.2.45
    • @pinia/nuxt ^0.4.6
    packages/nuxt/playground/package.json
    packages/pinia-orm/package.json
    • @antfu/eslint-config ^0.34.1
    • @pinia/testing ^0.0.14
    • @size-limit/preset-small-lib ^8.1.0
    • @types/prettier ^2
    • @types/uuid ^9.0.0
    • @vitest/coverage-c8 ^0.27.0
    • @vitest/ui ^0.27.0
    • @vue/composition-api ^1.7.1
    • @vue/test-utils ^2.2.7
    • c8 ^7.12.0
    • core-js ^3.27.1
    • eslint ^8.31.0
    • happy-dom ^8.1.3
    • mkdist ^1.0.0
    • nanoid ^4.0.0
    • pinia ^2.0.28
    • prettier ^2.8.2
    • size-limit ^8.1.0
    • std-env ^3.3.1
    • tsup ^6.5.0
    • typescript ^4.9.4
    • unbuild ^1.0.2
    • uuid ^9.0.0
    • vite ^4.0.4
    • vitest ^0.27.0
    • vue ^3.2.45
    • vue-demi ^0.13.11
    • pinia ^2.0.28
    • node 18.13.0

    • [ ] Check this box to trigger a request for Renovate to run again on this repository
    opened by renovate[bot] 0
  • [email protected](Dec 22, 2022)

    v1.4.0 -๐ŸŽ„- Merry Christmas

    ๐ŸŽ Enhancements

    • pinia-orm: add hasManyThrough relation (#678)
    • pinia-orm: Add the possibility to rollback changed models. Adding $isDirty(), $getOriginal() and $refresh. (#757)

    ๐Ÿ•ฏ๏ธ Fixes

    • pinis-orm: Update hook not triggered with update method (fb1694f5af09557040823fe46e0d7a50468250d3)
    • pinis-orm: @OnDelete on same model attrs leads to undefined error (#754)
    • pinia-orm: Don't delete relations bind with onDelete if hook returns false (3531a06a68a1018927a2451d1a4e05ca40d8e2a6)

    ๐Ÿคถ Performance

    • pinia-orm: Improve hydrating check (#679)
    • pinia-orm: Remove JSON.stringfy() for comparing objects (300482d55e25fe974699b464ab02acd45afe991d)

    โ˜ƒ๏ธ Refactors

    • pinia-orm: Improve typescript handling with piniaStore() (a8628c8cf81728c549d07f14506aa435a6d8958e)

    ๐ŸŽ… Documentation

    • Add some missing model functions to api (ce54b2384c7efc1b594d2f0b819c9ee9cf4e5ccc)

    โค๏ธ Contributors

    • Gregor Becker
    • Santa Clause
    Source code(tar.gz)
    Source code(zip)
  • [email protected](Dec 6, 2022)

    v1.3.0 - ๐Ÿฒ

    ๐Ÿš€ Enhancements

    • pinia-orm: Add the option to sort case insensitive with sortBy (#636)

    ๐Ÿฉน Fixes

    • pinia-orm: Query constraints with nested relations in m:m relations broken (#625)

    ๐Ÿ’… Refactors

    • normalizr: Reduce code used by orm (#641)

    ๐Ÿ”ฅ Performance

    • pinia-orm: Save hydrated models if not updated (#671)

    ๐Ÿ“– Documentation

    • Add requirements info for nuxt 2 users (#638)
    • Typo in example of quick-start.md (#652)

    โค๏ธ Contributors

    • Gregor Becker
    • yyydevf
    Source code(tar.gz)
    Source code(zip)
  • [email protected](Nov 14, 2022)

    v1.2.2

    ๐Ÿฉน Fixes

    • pinia-orm: null is casted in DateCast (#565)

    ๐Ÿ“– Documentation

    • Update readme sizes (8beaedabf3b47af176c638f50bf02e28506632b4)
    • Fix algolia crawling (db2f5ec2a461bf150e7967be7a61256469ad3daf)

    โœ… Tests

    • pinia-orm: Fix number cast test for notNullable (#564)

    โค๏ธ Contributors

    • Gregor Becker
    • Thomas Klaas
    Source code(tar.gz)
    Source code(zip)
  • [email protected](Nov 10, 2022)

    v1.2.1

    ๐Ÿฉน Fixes

    • pinia-orm: Delete on cascade doesn't work with n:m relations (#562)

    ๐Ÿ“– Documentation

    • Fix typos + minor tweaks (#558)

    ๐Ÿ“ฆ Build

    • Trigger only ci in packages directory (59d55c4cf3d60d631e24ff8f9469042d10f50f14)

    โค๏ธ Contributors

    • Gregor Becker
    • Paolo Dina
    Source code(tar.gz)
    Source code(zip)
  • [email protected](Nov 9, 2022)

    v1.2.0 - ๐Ÿ‰

    ๐Ÿš€ Enhancements

    • pinia-orm: Add the possibility to delete by cascade (#529)
    • pinia-orm: Enhance whereIn to support Set as values (#537)
    • pinia-orm: Attributes can now accept closures for default value (#544)
    • pinia-orm: Add simple DateCast (#546)

    ๐Ÿฉน Fixes

    • docs: Docs broken with nuxt3.0.0-rc.13 (#543)
    • pinia-orm: Using childRepo (STI) for saving without type defined (#555)

    ๐Ÿ’… Refactors

    • pinia-orm: Remove unnecessary fallback since config is always set (#555)

    ๐Ÿ“– Documentation

    • Fixed some broken links (#529)
    • Added missing delete and destroy methods to api (#529)
    • Added decorator example for STI (#555)
    • Fix broken cards on index (bb99b49ed1d3fc4a5cbdbead4558968519f3048d)

    โœ… Tests

    • pinia-orm: Add a missing test for throwError (#529)

    โค๏ธ Contributors

    • Gregor Becker
    Source code(tar.gz)
    Source code(zip)
  • [email protected](Oct 27, 2022)

    v1.1.0 - ๐Ÿฆ

    ๐Ÿš€ Enhancements

    • pinia-orm: Add record field to saving hooks (#491)

    ๐Ÿ’… Refactors

    • pinia-orm: Made all relation class properties public so they can be accessed (#491)

    ๐Ÿ“– Documentation

    • Updated to current docus version & using new nuxt static generate (#473)
    • Wrong chaining example with groupBy (#482)
    • Correct STI example for simple inhertance (09b9dcf9ecb1fccf4703dff1b71cb5fbbac5d2de)

    ๐Ÿ“ฆ Build

    • Removed Algolia CI Crawler since pages are crawled by generate now. (82b9cc46fd695d8634dc9a9c2ed40caaf2dc4bd5)

    โœ… Tests

    • pinia-orm: Finish skipped test for error handling (40cf18290a741b897e1e91bf7d0a7b24f805967e)

    โค๏ธ Contributors

    • Gregor Becker
    • Thomas Klaas
    Source code(tar.gz)
    Source code(zip)
  • [email protected](Oct 17, 2022)

    ๐Ÿฉน Fixes

    • pinia-orm: pivot are not correctly loaded (#438)

    ๐Ÿก Chore

    • nuxt: Updated files to new package versions (#438)

    โค๏ธ Contributors

    • Gregor Becker
    • Carsten Ruetz
    Source code(tar.gz)
    Source code(zip)
  • [email protected](Sep 20, 2022)

  • [email protected](Sep 20, 2022)

    ๐Ÿฉน Fixes

    • pinia-orm: Multiple belongsTo relationships between 2 entities lead to unintended outcome (#369)

    โค๏ธ Contributors

    • Gregor Becker
    Source code(tar.gz)
    Source code(zip)
  • [email protected](Sep 19, 2022)

  • [email protected](Sep 15, 2022)

    v1.0.0 - ๐Ÿ’ฏ

    Enjoy a stable and feature rich orm for pinia ! ๐Ÿ

    ๐Ÿš€ Enhancements

    • pinia-orm: Add an option to make fields hidden (#240)
    • pinia-orm: Add _meta field for models containing metadata (#240)
    • pinia-orm: Add global configuration options (#240)
    • nuxt: Add global configuration options (#240)
    • pinia-orm: Add helper composables for collection (#259)

    ๐Ÿฉน Fixes

    • pinia-orm: (where)has queries are not working with 1:1 relations (#342)
    • playground: Remove vue-hako since it breaks with new vueuse version (#343)

    ๐Ÿ’… Refactors

    • pinia-orm: Renamed internally ModelOption field from mutator to operation (#240)

    ๐Ÿ“– Documentation

    • Add configuration options to api (#266)
    • Add missing icons (#266)
    • Update readme comparison (#266)
    • Collapse side nav items (#266)

    ๐Ÿ”ฅ Performance

    • pinia-orm: Add optional caching for same get requests (#272)

    โœ… Tests

    • pinia-orm: Add missing tests for better coverage (#257)

    โค๏ธ Contributors

    • Gregor Becker
    Source code(tar.gz)
    Source code(zip)
  • [email protected](Aug 20, 2022)

    Warning There are slight API changes with this release candidate.

    ๐Ÿš€ Enhancements

    • pinia-orm: Add groupBy method to query (#213)
    • pinia-orm: Added bundles for uid libs nanoid & uuid (#215)
    • pinia-orm: Add the possibility to use useRepo outside of setup() (#228)

    ๐Ÿฉน Fixes

    • pinia-orm: The set method of casts is not called (#215)
    • pinia-orm: Nuxt 2 has problems with nullish coalescing operator (#228)

    ๐Ÿ’… Refactors

    • pinia-orm: โš ๏ธ Moved decorators to pinia-orm/dist/decorators (#185)
    • pinia-orm: โš ๏ธ Moved casts to pinia-orm/dist/casts (#215)
    • pinia-orm: โš ๏ธ Removed "string casting" with string, array, number and boolean (#215)
    • pinia-orm: โš ๏ธ Make field per default nullable(#229)

    ๐Ÿ“– Documentation

    • Add playground (#157)
    • Add missing load to api (#153)
    • Fix small typo (6f26c40d203dacc265ac95ab79f2ffdb468e9c2f)

    ๐Ÿ”ฅ Performance

    ๐Ÿก Chore

    • pinia-orm: Update package.json for better file imports (ac4dd70df0fd3f7280606ddca7d464df86c424b2)
    • pinia-orm: Improve typings for piniaOptions, useDataStore, useStoreActions and piniaStore (#204)
    • Switch from lerna to lerna-lite for workspace support
    • nuxt: Dependencies updates
    • pinia-orm: Dependencies updates

    ๐Ÿ“ฆ Build

    • normalizr: Added own normalizr package (#191 )
    • pinia-orm: move from normalizr to @pinia-orm/normalizr (#192)

    โœ… Tests

    โค๏ธ Contributors

    • Gregor Becker
    Source code(tar.gz)
    Source code(zip)
  • @pinia-orm/[email protected](Aug 10, 2022)

  • [email protected](Aug 10, 2022)

    Warning There are slight API changes with this release candidate.

    ๐Ÿš€ Enhancements

    • pinia-orm: make in repositories can create now multiple records (#133)
    • pinia-orm: Add retrieved life cycle hook (#145)

    ๐Ÿฉน Fixes

    • nuxt: Adept changes from @pinia/nuxt (#150)
    • docs: Invalid layout fluid selected in docs

    ๐Ÿ’… Refactors

    • pinia-orm: โš ๏ธ Change PiniaORM.install() to createORM() (902f4c2e2e3331ed50427f8ef9c4570ad39387d5)
    • pinia-orm: โš ๏ธ Remove findIn since find does the same (#144)

    ๐Ÿ“– Documentation

    • Update documentation for nuxt2 (#137)
    • Adding algolia search (#139)

    ๐Ÿ”ฅ Performance

    ๐Ÿก Chore

    • Update release script (0b71a7d74745898cf6317f8aa974d77fda89d5cb)
    • Remove default export in indexes and create build config for cjs (#142)

    ๐Ÿ“ฆ Build

    • Move to unbuild (#142)

    โœ… Tests

    โค๏ธ Contributors

    • Gregor Becker

    Please refer to CHANGELOG.md for details.

    Source code(tar.gz)
    Source code(zip)
  • [email protected](Jul 31, 2022)

  • [email protected](Jul 28, 2022)

  • @pinia-orm/[email protected](Jul 27, 2022)

  • [email protected](Jul 27, 2022)

  • [email protected](Jul 23, 2022)

  • [email protected](Jul 21, 2022)

  • @pinia-orm/[email protected](Jul 20, 2022)

  • [email protected](Jul 20, 2022)

  • [email protected](Jul 18, 2022)

  • @pinia-orm/[email protected](Jul 18, 2022)

  • [email protected](Jul 13, 2022)

  • @pinia-orm/[email protected](Jul 13, 2022)

  • [email protected](Jul 12, 2022)

  • [email protected](Jul 11, 2022)

  • [email protected](Jul 11, 2022)

  • @pinia-orm/[email protected](Jul 11, 2022)

Veloce: Starter template that uses Vue 3, Vite, TypeScript, SSR, Pinia, Vue Router, Express and Docker

Veloce Lightning-fast cold server start Instant hot module replacement (HMR) and dev SSR True on-demand compilation Tech Stack Vue 3: UI Rendering lib

Alan Morel 10 Oct 7, 2022
Make pinia easy to use and has intelisense.

pinia-auto-refs Pinia Auto Refs on-demand for Vite. With TypeScript support. Powered by unplugin-auto-import.Inspiration by vieruuuu in pinia/issues#7

allen 6 Dec 26, 2022
Easily remove all refs from an object using the `deepUnref`-composable.

Vue - Deep Unrefs Similar to unref(), easily remove all refs recursively from an object using the deepUnref-composable. ?? Get Started Luckily, it's i

Open Web 4 May 19, 2022
Easily remove all refs from an object using the `deepUnref`-composable.

Vue - Deep Unrefs Similar to unref(), easily remove all refs recursively from an object using the deepUnref-composable. ?? Get Started Luckily, it's i

Open Web Foundation 4 May 19, 2022
NativeScript empowers you to access native api's from JavaScript directly. Angular, Vue, Svelte, React and you name it compatible.

NativeScript empowers you to access native APIs from JavaScript directly. The framework currently provides iOS and Android runtimes for rich mobile de

NativeScript 22k Jan 4, 2023
Vite-plugin-web-extension - A vite plugin for generating cross browser platform, ES module based web extensions.

vite-plugin-web-extension A vite plugin for generating cross browser platform, ES module based web extensions. Features Manifest V2 & V3 Support Compl

Ruben Medina 81 Dec 31, 2022
:globe_with_meridians: Internationalization plugin for Vue.js

vue-i18n Internationalization plugin for Vue.js ?? Gold Sponsors ?? Silver Sponsors ?? Bronze Sponsors โš ๏ธ NOTICE This repository is for Vue I18n v8.x.

kazuya kawaguchi 6.9k Jan 8, 2023
An infinite scroll plugin for Vue.js.

Intro An infinite scroll plugin for Vue.js, to help you implement an infinite scroll list more easily. Features Mobile friendly Internal spinners 2-di

Peach 2.6k Jan 4, 2023
A Marko plugin for Vite

@marko/vite A Marko plugin for Vite. Installation npm install @marko/vite Example config import { defineConfig } from "vite"; import marko from "@mark

Marko 49 Nov 26, 2022
An Xray Panel (Trojan, Shadowsocks, Shadowsocks-Plugin,Vmess,Vless)

็‰นๅพ ๅฎ‰่ฃ…Ioncube Loader Google Analytic Google Console Twilio AmazonSNS Alphadvantage (Exchange rate key) Paypal Tawk TelegramBot Mailgun Twilio-Sendgrid

null 9 Aug 4, 2021
A powercord plugin to create pet gifs

petpet A powercord plugin to create pet gifs Inspired by https://benisland.neocities.org/petpet/ Example Input Output Usage [p] is your powercord comm

Vens Powercord Plugins 20 Oct 13, 2022
Obsidian plugin to add keyboard shortcuts commonly found in code editors such as Visual Studio Code or Sublime Text

Code Editor Shortcuts This Obsidian plugin adds keyboard shortcuts (hotkeys) commonly found in code editors such as Visual Studio Code or Sublime Text

Tim Hor 143 Dec 30, 2022
A Figma plugin for generating skeleton UI placeholders, specific to Discord's usecases.

Project Scaffold Generator Why? This is an internal tool we use at Discord to generate Discord specific "skeleton/placeholders" for help in designing

Bryan Berger 17 Nov 22, 2022
A plugin that can help you create project friendly with Vue for @vue/cli 4.5

vue-cli-plugin-patch A plugin that can help you create project friendly with Vue for @vue/cli 4.5. Install First you need to install @vue/cli globally

null 2 Jan 6, 2022
Vue2.x plugin to create scoped or global shortcuts. No need to import a vue component into the template.

vue2-shortcut Vue2.x plugin to create scoped or global shortcuts. No need to import a vue component into the template. Install $ npm install --save vu

Graxi 37 Aug 14, 2022
Vue 3 + Vite + SSR template based on Vite Plugin SSR and inspired by Vitesse

Vite Vue SSR Starter Vue 3 + Vite + SSR template based on Vite Plugin SSR and inspired by Vitesse Features โšก๏ธ Vue 3, Vite 2, TypeScript ?? Domain-Driv

Oleg Koval 10 Aug 2, 2022
๐ŸŒ Lightweight internationalization plugin for Vue 3

??๏ธ vue-next-i18n Lightweight internationalization plugin for Vue 3 ?? Getting started To begin, you'll need to install vue-next-i18n use npm npm inst

Aaron Lam 12 Nov 21, 2022
Vite Svelte plugin to remove console logs in prod.

vite-plugin-svelte-console-remover A Vite plugin that removes all console statements (log, group, dir, error, etc) from Svelte, JS, and TS files durin

Josh Hubbard 29 Oct 13, 2022
A vite plugin that deletes console.log in the production environment

vite-plugin-remove-console A vite plugin that deletes console.log in the production environment English | ไธญๆ–‡ Install npm install vite-plugin-remove-co

ๅ•่ฃณ 49 Dec 22, 2022