Skip to content
This repository was archived by the owner on Oct 1, 2022. It is now read-only.

Commit 35c6976

Browse files
authored
Release version 3.0 via #103 from pulse-framework/3.0
3.0 is here baby!
2 parents 0c898df + 00ec575 commit 35c6976

File tree

116 files changed

+53564
-7789
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

116 files changed

+53564
-7789
lines changed

.babelrc

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
{
2-
"presets": ["@babel/preset-env"],
3-
"plugins": [["@babel/plugin-transform-runtime"]]
2+
"presets": [
3+
"@babel/preset-env"
4+
],
5+
"plugins": [
6+
["@babel/plugin-transform-runtime"]
7+
]
48
}

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
.DS_Store
2-
node_modules
2+
node_modules/
33
out
44
dist
55

@@ -24,3 +24,7 @@ sync.js
2424

2525
# Generated docs assets
2626
docs/dist/
27+
28+
# Generated files from build
29+
lib/*.js
30+
lib/*.js.map

.npmignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
examples
2+
test

.prettierrc

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
11
{
2-
"useTabs": false,
3-
"printWidth": 80,
4-
"tabWidth": 2,
2+
"useTabs": false,
3+
"printWidth": 150,
4+
"tabWidth": 2,
55
"singleQuote": true,
66
"trailingComma": "none",
77
"jsxBracketSameLine": false,
88
"noSemi": false,
9-
"rcVerbose": true
10-
}
9+
"rcVerbose": true,
10+
"ignoreChainWithDepth": 10,
11+
"arrowParens": "avoid",
12+
"semi": true
13+
}

.reposyncignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
examples/react-typescript/node_modules

README.md

Lines changed: 25 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,32 @@
1-
# Pulse Framework
2-
3-
Pulse is a global state and logic framework for reactive Javascript applications. Supporting frameworks like VueJS, React and React Native. Lightweight, modular and powerful, but most importantly friendly to beginners.
4-
5-
Pulse replaces global state management solutions such as Redux, VueX and MobX, including HTTP libraries such as Axios, Fetch or Request.js. It makes your application more modular, ensuring you follow the best practices while writing significantly less code. Your Pulse code can be used in many different applications, such as a webapp in Vue and a mobile app in React native; if it uses Javascript, it can use Pulse.
6-
7-
## Features
8-
9-
- :gear: Modular structure ([Modules](https://pulsejs.org/v2/docs/modules.html))
10-
- :zap: Reactive data ([Reactivity](https://pulsejs.org/v2/docs/concepts.html#reactivity)) `pulse.something = somethingElse`
11-
- :robot: Computed data with automatic dependency tracking ([Computed](https://pulsejs.org/v2/docs/computed.html))
12-
- :first_quarter_moon: Lifecycle hooks [`watch()`]() / `onReady()` / `nextPulse()`
13-
- :gem: SSOT architecture (single source of truth)
14-
- :nerd_face: DB/ORM-like structure with [Collections](https://pulsejs.org/v2/docs/collections.html#collection-basics)
15-
- :sparkles: Automatic data normalization using [Collect](https://pulsejs.org/v2/docs/collections.html#what-is-data-normalization) `collection.collect()`
16-
- :lock: Model based [data validation](https://pulsejs.org/v2/docs/collections.html#models) with Collections
17-
- :timer_clock: Mutation history tracking with [smart undo]() `collection.undo()`
18-
- :crystal_ball: Dynamic relations between collections using [Populate]() `populate()`
19-
- :wrench: Wrappers for utils and services
20-
- :construction: Task queuing for race condition prevention
21-
- :telephone_receiver: Promise based HTTP requests and websocket connections (web sockets coming soon)
22-
- :hourglass_flowing_sand: Timed interval task handler using [Jobs]()
23-
- :bus: Event bus `pulse.on() / pulse.emit()`
24-
- :floppy_disk: Persisted data API for localStorage and async storage
25-
- :closed_book: Error logging & snapshot bug reporting (WIP)
26-
- :leaves: Lightweight (only 100KB) with 0 dependencies
27-
- :fire: Supports Vue, React and React Native
28-
- :yellow_heart: Well documented (I'm getting there...)
1+
# Pulse Framework `3.0`
292

30-
## Why Pulse?
31-
32-
After exploring the many options for Javascript state libraries, including the popular VueX and Redux, I felt like I needed a simpler solution. I wanted to get more out of a library than just state management― something that could provide solid structure for the **entire** application. It needed to be structured and simple, but also scalable. This framework provides everything needed to get a reactive javascript front-end application working fast, taking care to follow best practices and to employ simple terminology that makes sense even to beginners.
3+
_Pulse is a global state and logic framework for reactive Typescript & Javascript applications. Supporting frameworks like VueJS, React and React Native._
334

34-
I built Pulse reflective of the architecture in which we use at Notify.me, and as a replacement for VueX at Notify also, making sure it is also compatible with React and vanilla environments. The team at Notify love it and I think you will too.
5+
Lightweight, modular and powerful. An alternative to `Redux`/`VueX`/`MobX` and request libraries such as `Axios`/`Request.js`. Use Pulse to creare a **_core_** state & logic library for your application; plug and play directly into any UI Framework.
356

36-
## Get involved
7+
Created by [@jamiepine]() | Sponsored and maintained by the [Notify Team]()
378

38-
If you wish contribute, that is very much welcome! But please reach out first so we don't work on the same thing at the same time, twitter dm @jamiepine or Discord jam#0001
39-
[Join Community Discord](https://discord.gg/RjG8ShB)
9+
### Official website: [pulsejs.org](https://pulsejs.org/v3/introduction/what-is-pulse.html)
4010

41-
FULL DOCUMENTATION HERE: [pulsejs.org](https://pulsejs.org)
42-
43-
<p align="center">
44-
<a href="https://patreon.com/jamiepine"><img src="https://img.shields.io/badge/donate-patreon-F96854.svg" alt="Donate on patreon"></a>
45-
<a href="https://twitter.com/jamiepine"><img src="https://img.shields.io/twitter/follow/jamiepine.svg?label=Follow" alt="Follow on twitter"></a>
46-
<a href="https://twitter.com/pulseframework"><img src="https://img.shields.io/twitter/follow/pulseframework.svg?label=Pulse+Twitter" alt="Follow Pulse on twitter"></a>
11+
<p align="left">
4712
<a href="https://discord.gg/RjG8ShB"><img src="https://discordapp.com/api/guilds/658189217746255881/embed.png" alt="Join Discord"></a>
48-
<a href="https://npmjs.com/pulse-framework"><img src="https://img.shields.io/npm/v/pulse-framework.svg" alt="NPM Package Version"></a>
49-
<a href="https://npmjs.com/pulse-framework"><img src="https://img.shields.io/npm/dm/pulse-framework.svg" alt="NPM Monthly Downloads"></a>
50-
<a href="https://npmjs.com/pulse-framework"><img src="https://img.shields.io/npm/dw/pulse-framework.svg" alt="NPM Weekly Downloads"></a>
51-
<a href="https://npmjs.com/pulse-framework"><img src="https://img.shields.io/npm/dt/pulse-framework.svg" alt="NPM Total Downloads"></a>
52-
<a href="https://npmjs.com/pulse-framework"><img src="https://img.shields.io/bundlephobia/min/pulse-framework.svg" alt="NPM Bundle MIN Size"></a>
53-
<a href="https://github.com/jamiepine/pulse"><img src="https://img.shields.io/github/license/jamiepine/pulse.svg" alt="GitHub License"></a>
54-
<a href="https://github.com/jamiepine/pulse"><img src="https://img.shields.io/github/languages/code-size/jamiepine/pulse.svg" alt="GitHub Code Size"></a>
55-
<a href="https://github.com/jamiepine/pulse"><img src="https://img.shields.io/github/repo-size/jamiepine/pulse.svg" alt="GitHub Repo Size"></a>
13+
<a href="https://patreon.com/jamiepine"><img src="https://img.shields.io/badge/donate-patreon-F96854.svg" alt="Donate on patreon"></a>
14+
<a href="https://twitter.com/jamiepine"><img src="https://img.shields.io/twitter/follow/jamiepine.svg?label=Jamie's Twitter" alt="Follow on twitter"></a>
15+
<a href="https://twitter.com/pulseframework"><img src="https://img.shields.io/twitter/follow/pulseframework.svg?label=Pulse+Twitter" alt="Follow Pulse on twitter"></a>
5616
</p>
17+
18+
```ts
19+
const App = new Pulse();
20+
21+
const Hello = App.State<string>('the sound of music');
22+
```
23+
24+
## Why Pulse?
25+
26+
Pulse provides a clean-cut toolset to build a Javascript application quickly and efficiently. It encourges developers to construct a core library that can be dropped into any UI framework. Your `core` is the brain of your application, it will handle everything from state management, API requests to all logic and calculations. Pulse will supply pre-computed data to your UI components, in the framework of your choice with complete reactivity.
27+
28+
### Typescript
29+
30+
Pulse is written in Typescript and is designed to support it heavily. Everything is type safe out of the box and encourages you to write clean typed code.
31+
32+
Read the [documentation](https://pulsejs.org/v3/introduction/what-is-pulse.html) to learn more!

__mocks__/localStorage.js

Lines changed: 0 additions & 17 deletions
This file was deleted.

__mocks__/window.js

Lines changed: 0 additions & 7 deletions
This file was deleted.

build/rollup.dev.config.js

Lines changed: 0 additions & 49 deletions
This file was deleted.

build/rollup.prod.config.js

Lines changed: 0 additions & 54 deletions
This file was deleted.

docs/.vuepress/config.js

Lines changed: 71 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
module.exports = {
2-
title: 'PulseJS',
3-
description:
4-
'A global state and logic framework for reactive Javascript applications.',
2+
title: 'Pulse Framework',
3+
description: 'A global state and logic framework for reactive Javascript applications.',
54
dest: 'dist',
65
serviceWorker: true,
76
base: '/',
@@ -10,8 +9,8 @@ module.exports = {
109
logo: '/logo.svg',
1110
nav: [
1211
{ text: 'Home', link: '/' },
13-
{ text: 'Documentation', link: '/v2/' },
14-
{ text: 'Changelog', link: '/v2/introduction/changelog' }
12+
{ text: 'Documentation', link: '/v3/introduction/what-is-pulse' },
13+
{ text: 'Changelog', link: '/v3/introduction/changelog' }
1514
],
1615
lastUpdated: 'Last Updated',
1716
// Assumes GitHub. Can also be a full GitLab url.
@@ -83,10 +82,7 @@ module.exports = {
8382
{
8483
title: 'Quick Start',
8584
collapsable: false,
86-
children: [
87-
'getting-started/setup-with-react',
88-
'getting-started/setup-with-vue'
89-
]
85+
children: ['getting-started/setup-with-react', 'getting-started/setup-with-vue']
9086
},
9187
{
9288
title: 'Documentation',
@@ -115,7 +111,72 @@ module.exports = {
115111
collapsable: false,
116112
children: ['under-the-hood/runtime']
117113
}
114+
],
115+
'/v3/': [
116+
{
117+
title: 'Introduction',
118+
collapsable: false,
119+
children: ['introduction/what-is-pulse', 'introduction/changelog']
120+
},
121+
{
122+
title: 'Getting Started',
123+
collapsable: false,
124+
children: ['getting-started/setup-with-react', 'getting-started/concepts']
125+
},
126+
{
127+
title: 'Documentation',
128+
collapsable: false,
129+
children: [
130+
'docs/pulse-instance',
131+
'docs/state',
132+
'docs/computed',
133+
'docs/collections',
134+
'docs/actions',
135+
'docs/controllers',
136+
'docs/core',
137+
'docs/api'
138+
]
139+
},
140+
{
141+
title: 'Resources',
142+
collapsable: false,
143+
children: ['resources/snippets', 'getting-started/style-guide', 'resources/ideas']
144+
}
118145
]
119146
}
120-
}
147+
},
148+
plugins: [
149+
['@vuepress/back-to-top', true],
150+
[
151+
'@vuepress/pwa',
152+
{
153+
serviceWorker: true,
154+
updatePopup: true
155+
}
156+
],
157+
['@vuepress/medium-zoom', true],
158+
[
159+
'@vuepress/google-analytics',
160+
{
161+
ga: 'UA-128189152-1'
162+
}
163+
],
164+
[
165+
'container',
166+
{
167+
type: 'vue',
168+
before: '<pre class="vue-container"><code>',
169+
after: '</code></pre>'
170+
}
171+
],
172+
[
173+
'container',
174+
{
175+
type: 'upgrade',
176+
before: (info) => `<UpgradePath title="${info}">`,
177+
after: '</UpgradePath>'
178+
}
179+
],
180+
['flowchart']
181+
]
121182
};
65.3 KB
Binary file not shown.

0 commit comments

Comments
 (0)