mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ea5d2be502 | |||
| 4a761a7403 | |||
| 8702db03fb | |||
| b2685b6709 |
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@odoo/owl",
|
"name": "@odoo/owl",
|
||||||
"version": "2.0.4",
|
"version": "2.0.5",
|
||||||
"description": "Odoo Web Library (OWL)",
|
"description": "Odoo Web Library (OWL)",
|
||||||
"main": "dist/owl.cjs.js",
|
"main": "dist/owl.cjs.js",
|
||||||
"module": "dist/owl.es.js",
|
"module": "dist/owl.es.js",
|
||||||
|
|||||||
@@ -1,8 +1,13 @@
|
|||||||
import { Callback } from "./utils";
|
import type { Callback } from "./utils";
|
||||||
import { OwlError } from "./error_handling";
|
import { OwlError } from "./error_handling";
|
||||||
|
|
||||||
// Special key to subscribe to, to be notified of key creation/deletion
|
// Special key to subscribe to, to be notified of key creation/deletion
|
||||||
const KEYCHANGES = Symbol("Key changes");
|
const KEYCHANGES = Symbol("Key changes");
|
||||||
|
// Used to specify the absence of a callback, can be used as WeakMap key but
|
||||||
|
// should only be used as a sentinel value and never called.
|
||||||
|
const NO_CALLBACK = () => {
|
||||||
|
throw new Error("Called NO_CALLBACK. Owl is broken, please report this to the maintainers.");
|
||||||
|
};
|
||||||
|
|
||||||
// The following types only exist to signify places where objects are expected
|
// The following types only exist to signify places where objects are expected
|
||||||
// to be reactive or not, they provide no type checking benefit over "object"
|
// to be reactive or not, they provide no type checking benefit over "object"
|
||||||
@@ -86,6 +91,9 @@ const targetToKeysToCallbacks = new WeakMap<Target, Map<PropertyKey, Set<Callbac
|
|||||||
* @param callback the function to call when the key changes
|
* @param callback the function to call when the key changes
|
||||||
*/
|
*/
|
||||||
function observeTargetKey(target: Target, key: PropertyKey, callback: Callback): void {
|
function observeTargetKey(target: Target, key: PropertyKey, callback: Callback): void {
|
||||||
|
if (callback === NO_CALLBACK) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (!targetToKeysToCallbacks.get(target)) {
|
if (!targetToKeysToCallbacks.get(target)) {
|
||||||
targetToKeysToCallbacks.set(target, new Map());
|
targetToKeysToCallbacks.set(target, new Map());
|
||||||
}
|
}
|
||||||
@@ -140,8 +148,11 @@ export function clearReactivesForCallback(callback: Callback): void {
|
|||||||
if (!observedKeys) {
|
if (!observedKeys) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
for (const callbacks of observedKeys.values()) {
|
for (const [key, callbacks] of observedKeys.entries()) {
|
||||||
callbacks.delete(callback);
|
callbacks.delete(callback);
|
||||||
|
if (!callbacks.size) {
|
||||||
|
observedKeys.delete(key);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
targetsToClear.clear();
|
targetsToClear.clear();
|
||||||
@@ -187,7 +198,7 @@ const reactiveCache = new WeakMap<Target, WeakMap<Callback, Reactive<Target>>>()
|
|||||||
* reactive has changed
|
* reactive has changed
|
||||||
* @returns a proxy that tracks changes to it
|
* @returns a proxy that tracks changes to it
|
||||||
*/
|
*/
|
||||||
export function reactive<T extends Target>(target: T, callback: Callback = () => {}): T {
|
export function reactive<T extends Target>(target: T, callback: Callback = NO_CALLBACK): T {
|
||||||
if (!canBeMadeReactive(target)) {
|
if (!canBeMadeReactive(target)) {
|
||||||
throw new OwlError(`Cannot make the given value reactive`);
|
throw new OwlError(`Cannot make the given value reactive`);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ function writeToFile(filepath, data) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// adapted from https://medium.com/@mhagemann/the-ultimate-way-to-slugify-a-url-string-in-javascript-b8e4a0d849e1
|
// adapted from https://medium.com/@mhagemann/the-ultimate-way-to-slugify-a-url-string-in-javascript-b8e4a0d849e1
|
||||||
const a = "·_,:;";
|
const a = "·-_,:;";
|
||||||
const p = new RegExp(a.split("").join("|"), "g");
|
const p = new RegExp(a.split("").join("|"), "g");
|
||||||
|
|
||||||
function slugify(str) {
|
function slugify(str) {
|
||||||
|
|||||||
+6
-5
@@ -132,7 +132,7 @@ async function startRelease() {
|
|||||||
if (shouldUploadPlayground) {
|
if (shouldUploadPlayground) {
|
||||||
log(`Bonus step: publishing new release on playground...`);
|
log(`Bonus step: publishing new release on playground...`);
|
||||||
let owl_code = null;
|
let owl_code = null;
|
||||||
status = 0
|
let status = 0
|
||||||
|
|
||||||
try {
|
try {
|
||||||
owl_code = await readFile("dist/owl.iife.js");
|
owl_code = await readFile("dist/owl.iife.js");
|
||||||
@@ -142,7 +142,8 @@ async function startRelease() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
status += await execCommand("git checkout gh-pages");
|
status |= await execCommand("git checkout gh-pages");
|
||||||
|
status |= await execCommand("git pull --rebase");
|
||||||
|
|
||||||
if (status !== 0) {
|
if (status !== 0) {
|
||||||
logError("Couldn't switch to gh-pages branch")
|
logError("Couldn't switch to gh-pages branch")
|
||||||
@@ -156,9 +157,9 @@ async function startRelease() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
status += await execCommand(`git commit -am "[IMP] update owl to v${next}"`);
|
status |= await execCommand(`git commit -am "[IMP] update owl to v${next}"`);
|
||||||
status += await execCommand(`git push origin gh-pages`);
|
status |= await execCommand(`git push origin gh-pages`);
|
||||||
status += await execCommand("git checkout -");
|
status |= await execCommand("git checkout -");
|
||||||
if (status !== 0) {
|
if (status !== 0) {
|
||||||
logError("Something went wrong for the playground update.")
|
logError("Something went wrong for the playground update.")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user